... ... (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

The Celtic Tarot is a beautifully crafted deck that draws upon the rich mythology and legends of Celtic culture. Each card is adorned with stunning artwork from Gaudenzi and Tenuta, which captures the essence of the Celtic spirit. This deck is perfect for those who seek to deepen their understanding of Celtic lore and the Tarot. With its powerful symbolism and intuitive guidance, the Celtic Tarot offers a unique and transformative experience for all who use it. Invest in this deck today and unlock the secrets of the Celtic Tarot

Celtic Tarot

$23.95Price
Quantity
  • Pub Date:    September 2000
    Product Type:    Boxed Deck
    Size:    3 x 5 x 1 IN

Related Products

Subscribe to my Newsletter

You'll get updates on blog posts, discounts, and events. No Spam - promise.

Thanks for subscribing!

Subscribe to my Newsletter

You'll get updates on blog posts, discounts, and events. No Spam - promise.

Thanks for subscribing!

  • Instagram
  • Facebook
  • Twitter
  • LinkedIn

©2022-2025 by Darryl Sanford - Policies

bottom of page