...
...
(function () {
const METASITE_APP_DEF_ID = '22bef345-3c5b-4c18-b782-74d4085112ff';
const getXSRFTokenFromCookie = () => {
const match = new RegExp('XSRF-TOKEN=(.+?);').exec(document.cookie);
return match ? match[1] : '';
};
const eventNames = {
Purchase: 'Purchase',
Lead: 'Lead',
};
const eventNameToConversionActionCategory = {
[eventNames.Purchase]: 'PURCHASE',
[eventNames.Lead]: 'SUBMIT_LEAD_FORM',
};
const channelParams = {
price: 'price',
id: 'id',
currency: 'currency',
name: 'name',
category: 'category',
brand: 'brand',
variant: 'variant',
list: 'list_name',
quantity: 'quantity',
step: 'checkout_step',
option: 'checkout_option',
position: 'list_position',
coupon: 'coupon',
affiliation: 'affiliation',
revenue: 'value',
tax: 'tax',
sku: 'sku',
shipping: 'shipping',
};
const mapContents = ({ contents = [] }) =>
contents.map(({ currency, ...product }) =>
paramsMapper(product, channelParams),
);
const paramsMapper = (params, mapper) => {
const mappedParams = Object.keys(params);
if (mappedParams.length === 0) {
return params;
}
return mappedParams.reduce((mappedObject, currentKey) => {
const newKey = mapper[currentKey];
if (newKey && (params[currentKey] || params[currentKey] === 0)) {
mappedObject[newKey] = params[currentKey];
}
return mappedObject;
}, {});
};
const loadGtag = () => {
const gtagInitScript = document.createElement('script');
gtagInitScript.type = 'text/javascript';
gtagInitScript.innerHTML = `
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date())
`;
document.head.appendChild(gtagInitScript);
const gtagScript = document.createElement('script');
gtagScript.type = 'text/javascript';
gtagScript.setAttribute('async', 'true');
gtagScript.setAttribute('src', 'https://www.googletagmanager.com/gtag/js');
document.head.appendChild(gtagScript);
};
const handleGoogleConsent = () => {
window.dataLayer = window.dataLayer || [];
if (window.consentPolicyManager && window.consentPolicyManager.initRan) {
const { policy, defaultPolicy } =
window.consentPolicyManager.getCurrentConsentPolicy();
setConsent('default', evaluateConsentPolicy(policy, defaultPolicy));
} else {
setConsent('default', {
advertising: false,
analytics: false,
functional: false,
waitForUpdate: 500,
});
}
window.document.addEventListener('consentPolicyInitialized', ({ detail }) => {
setConsent(
'update',
evaluateConsentPolicy(detail.policy, detail.defaultPolicy),
);
});
window.document.addEventListener('consentPolicyChanged', ({ detail }) => {
setConsent('update', detail.policy);
});
function evaluateConsentPolicy(policy, defaultPolicy) {
const { gdprEnforcedGeo } = window.wixTagManager.getConfig();
return defaultPolicy && gdprEnforcedGeo
? { ...policy, advertising: false, analytics: false }
: policy;
}
function setConsent(
action,
{ advertising, analytics, functional, waitForUpdate },
) {
(function () {
window.dataLayer.push(arguments);
})('consent', action, {
ad_storage: advertising ? 'granted' : 'denied',
ad_user_data: advertising ? 'granted' : 'denied',
ad_personalization: advertising ? 'granted' : 'denied',
analytics_storage: analytics ? 'granted' : 'denied',
functionality_storage: functional ? 'granted' : 'denied',
personalization_storage: 'granted',
security_storage: 'granted',
...(waitForUpdate ? { wait_for_update: waitForUpdate } : {}),
});
}
};
let conversionActions;
const loadConversionActions = () => {
const XSRFToken = getXSRFTokenFromCookie();
const headers = {
'Content-Type': 'application/json',
'X-XSRF-TOKEN': XSRFToken,
};
const getAppToken = window.wixEmbedsAPI?.getAppToken;
if (getAppToken) {
headers.authorization = getAppToken(METASITE_APP_DEF_ID);
}
const metaSiteId = window.wixEmbedsAPI?.getMetaSiteId();
return fetch(
`${window.location.origin}/_serverless/pa-google/v1/accounts/current-site/conversion-actions?metaSiteId=${metaSiteId}`,
{
method: 'GET',
headers,
},
)
.then((response) => response.json())
.then((data) => {
conversionActions = data.conversionActions;
gtag('config', conversionActions[0].conversionId);
});
};
const reportEvent = (eventName, eventParams) => {
const category = eventNameToConversionActionCategory[eventName];
const conversionAction = conversionActions.find(
(currentConversionAction) =>
currentConversionAction.category.category === category,
);
if (conversionAction) {
let conversionData = {
send_to: `${conversionAction.conversionId}/${conversionAction.conversionLabel}`,
};
switch (category) {
case 'PURCHASE': {
const { revenue, id, currency, coupon, ...params } = eventParams;
conversionData = {
...conversionData,
...paramsMapper({ revenue, id, currency, coupon }, channelParams),
transactionId: eventParams.id,
items: mapContents(params),
};
break;
}
default:
break;
}
gtag('event', 'conversion', conversionData);
}
};
let isBootstrapped = false;
const bootstrap = () => {
handleGoogleConsent();
loadGtag();
return loadConversionActions().then(() => {
isBootstrapped = true;
});
};
const bootstrapPromise = bootstrap();
const registerListener = () => {
window.wixDevelopersAnalytics.register(
'd6708a0e-5b2a-458e-8cfe-bdca240aa2ce',
(eventName, eventParams) => {
if (isBootstrapped) {
reportEvent(eventName, eventParams);
} else {
bootstrapPromise.then(() => {
reportEvent(eventName, eventParams);
});
}
},
);
};
window.wixDevelopersAnalytics
? registerListener()
: window.addEventListener('wixDevelopersAnalyticsReady', registerListener);
})();
top of page
Discover a new world of divination with Tarot in Wonderland, a deck that combines the whimsical world of Alice in Wonderland with the traditional Rider-Waite-Smith tarot. This deck offers a unique interpretation of the tarot that is both playful and profound, inviting you to explore the mysteries of the universe through the eyes of your favorite Wonderland characters. Each card features stunning illustrations that capture the essence of the story, while providing insight and guidance for your spiritual journey. Whether you're a tarot enthusiast or a curious beginner, Tarot in Wonderland is a deck that will delight and enchant you with its curious delights.
Includes a 78-card deck and a full-color guidebook
Praise:
"Tarot in Wonderland by Barbara Moore and Eugene Smith is a delightful deck that celebrates your curiosity. The wisdom and the magic brought together by Lewis Carroll's beloved story, the luminosity of Barbara Moore, and Eugene Smith's artistic finesse have conjured a treasure set that every tarot reader, from novice to master, prepubescent to senior, is going to cherish."—Benebell Wen
Tarot in Wonderland PRODUCT INFO APRIL 2018 BY BARBARA MOORE, EUGENE SMITH
Product Type:
Boxed Kit
Page Count:
360 pages
Size:
6 x 8 x 2 IN
bottom of page