{"version":3,"file":"js/user_framework-54f9e8603310c5426a57.js","mappings":"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","sources":["webpack://booqable/./webpack/shared/user_framework.js"],"sourcesContent":["/* eslint-disable */\n\n// WARNING: This file needs to be written in Vanilla JS\n\nvar Booqable = {\n get location() {\n return window.location.pathname;\n },\n set origin(value) {\n localStorage.setItem('origin', value);\n },\n get origin() {\n return localStorage.getItem('origin');\n }\n}\n\nif (window.Booqable === undefined) {\n window.Booqable = Booqable;\n\n /////////////////////////////////////////////////\n // Delegate initializer\n /////////////////////////////////////////////////\n\n Booqable.init = function () {\n initBooqableComponents();\n };\n\n /////////////////////////////////////////////////\n // Set cart data\n /////////////////////////////////////////////////\n\n Booqable.setCartData = function (data) {\n Booqable.cartData = data;\n };\n\n /////////////////////////////////////////////////\n // Events\n /////////////////////////////////////////////////\n\n Booqable._events = {};\n\n Booqable.on = function (event, callback, context) {\n if (!Booqable._events.hasOwnProperty(event)) {\n Booqable._events[event] = [];\n }\n\n Booqable._events[event].push([callback, context]);\n };\n\n Booqable._trigger = function (event) {\n var args = Array.prototype.slice.call(arguments, 1);\n var callbacks = Booqable._events[event] || [];\n\n for (var i = 0; i < callbacks.length; i++) {\n var callback = callbacks[i][0];\n var context = callbacks[i][1] || Booqable;\n callback.apply(context, args);\n }\n };\n\n // Removes an event listener by filtering out the specified callback from the event's array.\n window.Booqable.off = function (event, callback) {\n if (!Booqable._events.hasOwnProperty(event)) {\n return;\n }\n\n Booqable._events[event] = Booqable._events[event].filter(function (listener) {\n return listener[0] !== callback;\n });\n };\n\n /////////////////////////////////////////////////\n // Script, tag & asset loading\n /////////////////////////////////////////////////\n\n Booqable.loadScript = function (src) {\n if (Booqable._isScriptLoaded(src)) { return; }\n\n var tag = document.createElement('script');\n tag.async = false;\n tag.src = src;\n\n document.getElementsByTagName('head')[0].appendChild(tag);\n };\n\n Booqable.unloadScript = function (src) {\n if (!Booqable._isScriptLoaded(src)) { return; }\n\n var tag = Booqable._findScript(src);\n\n document.getElementsByTagName('head')[0].removeChild(tag);\n };\n\n /////////////////////////////////////////////////\n // jQuery\n /////////////////////////////////////////////////\n Booqable.jQuery = function (callback) {\n Booqable.loadScript('https://code.jquery.com/jquery-3.3.1.min.js');\n\n Booqable._defer(function () { return window.$; }, callback);\n };\n\n /////////////////////////////////////////////////\n // Utilities\n /////////////////////////////////////////////////\n\n Booqable._isScriptLoaded = function (src) {\n return Booqable._findScript(src) ? true : false;\n };\n\n Booqable._findScript = function (src) {\n return document.querySelector('script[src=\"' + src + '\"]');\n }\n\n Booqable._once = function (func) {\n let didRun = false;\n\n if (typeof func != 'function') {\n throw new TypeError('Expected a function');\n }\n\n return function() {\n if (!didRun) {\n didRun = true;\n return func.apply(this, arguments);\n } else {\n func = undefined;\n }\n };\n };\n\n Booqable._defer = function (condition, method, attempt) {\n if (!attempt) {\n attempt = 1;\n }\n\n if (attempt === 200) {\n return;\n }\n\n if (condition()) {\n method();\n } else {\n setTimeout(function () { Booqable._defer(condition, method, attempt + 1) }, 50);\n }\n };\n\n Booqable._prependChild = function (parentElement, element) {\n parentElement.insertBefore(element, parentElement.firstChild);\n };\n\n /////////////////////////////////////////////////\n // App support\n /////////////////////////////////////////////////\n Booqable._apps = {\n marketing: [],\n essential: [],\n };\n\n Booqable._initApps = Booqable._once(function () {\n Object.entries(Booqable._apps).forEach(([_, apps]) => {\n apps.forEach((app) => {\n app.init()\n })\n })\n })\n\n Booqable._consentToAllApps = Booqable._once(function () {\n Object.entries(Booqable._apps).forEach(([_, apps]) => {\n apps.forEach((app) => {\n app.onConsent()\n })\n })\n })\n\n // Add app to a category.\n Booqable.registerApp = function (category, appConfig) {\n if (!Booqable._apps.hasOwnProperty(category)) {\n throw new Error('Invalid app category \\'' + category + \"'\");\n }\n\n // We expect apps to define their callbacks, but none\n // are required.\n // name -> name of the app (shown on the cookie notice preferences)\n // init() -> called on window load event\n // onConsent() -> called on window load and when user consents to cookies\n // onDeny() -> called when user denies cookies\n var defaultConfig = {\n name: null,\n init: function () {},\n onConsent: function () {},\n onDeny: function () {}\n }\n\n Booqable._apps[category].push(Object.assign({}, defaultConfig, appConfig));\n }\n\n /////////////////////////////////////////////////\n // Google Analytics\n /////////////////////////////////////////////////\n\n Booqable._gtag = function (type, event, data) {\n if (typeof window.gtag === 'function') {\n window.gtag(type, event, data);\n }\n }\n\n Booqable._prepare_gtag_event_data = function (data) {\n if (!data.value || !data.currency || !data.items || data.items.length == 0) {\n return null\n }\n\n return {\n value: data.value,\n currency: data.currency,\n items: data.items.map((item) => ({\n item_id: item.item_id,\n item_name: item.item_name,\n ...(item.quantity && { quantity: item.quantity }),\n price: item.price\n }))\n }\n }\n\n setupGoogleAnalytics = function (trackingId, defaultPageTracking = true, defaultEvents = false, options = {}) {\n if (!trackingId || trackingId == '') {\n return\n }\n\n if (typeof options !== 'object') {\n options = {}\n }\n\n options.linker = { accept_incoming: true }\n\n Booqable.loadScript('https://www.googletagmanager.com/gtag/js?id=' + trackingId);\n\n window.dataLayer = window.dataLayer || [];\n window.gtag = function () { dataLayer.push(arguments); }\n window.gtag('js', new Date());\n window.gtag('config', trackingId, options);\n\n if (defaultPageTracking) {\n Booqable._setupGoogleAnalyticsDefaultPageTracking(trackingId);\n }\n\n if (defaultEvents) {\n Booqable._setupGoogleAnalyticsDefaultEvents();\n }\n };\n\n Booqable.setupGoogleAnalytics = Booqable._once(setupGoogleAnalytics)\n\n _setupGoogleAnalyticsDefaultPageTracking = function (trackingId) {\n Booqable.on('viewCart', function () {\n Booqable._gtag('event', 'page_view', {\n page_title: 'Cart',\n send_to: trackingId\n });\n\n Booqable._gtag('event', 'view_cart', {\n 'currency': Booqable.cartData.currency,\n 'value': Booqable.cartData.grandTotalWithTax,\n 'items': Booqable.cartData.items\n });\n });\n\n Booqable.on('information', function () {\n Booqable._gtag('event', 'page_view', {\n page_title: 'Checkout Information',\n send_to: trackingId\n });\n });\n\n Booqable.on('payment', function () {\n Booqable._gtag('event', 'page_view', {\n page_title: 'Checkout Payment',\n send_to: trackingId\n });\n });\n\n Booqable.on('completed', function () {\n Booqable._gtag('event', 'page_view', {\n page_title: 'Checkout Completed',\n send_to: trackingId\n });\n });\n };\n\n Booqable._setupGoogleAnalyticsDefaultPageTracking = Booqable._once(_setupGoogleAnalyticsDefaultPageTracking)\n\n _setupGoogleAnalyticsDefaultEvents = function () {\n // Shop Events\n Booqable.on('viewProduct', function (data) {\n const event_data = Booqable._prepare_gtag_event_data(data)\n\n Booqable._gtag('event', 'view_item', event_data);\n });\n\n Booqable.on('addToCart', function (data) {\n const event_data = Booqable._prepare_gtag_event_data(data)\n\n Booqable._gtag('event', 'add_to_cart', event_data);\n });\n\n Booqable.on('removeFromCart', function (data) {\n const event_data = Booqable._prepare_gtag_event_data(data)\n\n Booqable._gtag('event', 'remove_from_cart', event_data);\n });\n\n // Checkout events\n Booqable.on('information', function () {\n // Regular event\n Booqable._gtag('event', 'Checkout', {\n 'event_category': 'Information',\n 'event_label': 'Information'\n });\n\n // Ecommerce event\n Booqable._gtag('event', 'begin_checkout', {\n 'currency': Booqable.cartData.currency,\n 'value': Booqable.cartData.grandTotalWithTax,\n 'coupon': Booqable.cartData.coupon,\n 'items': Booqable.cartData.items\n });\n });\n\n Booqable.on('payment', function () {\n // Regular event\n Booqable._gtag('event', 'Checkout', {\n 'event_category': 'Payment',\n 'event_label': 'Payment'\n });\n });\n\n Booqable.on('completed', function () {\n // Regular event\n Booqable._gtag('event', 'Checkout', {\n 'event_category': 'Completed',\n 'event_label': 'Completed'\n });\n\n // Ecommerce event\n Booqable._gtag('event', 'purchase', {\n \"transaction_id\": Booqable.cartData.cartId,\n \"value\": Booqable.cartData.grandTotalWithTax,\n \"currency\": Booqable.cartData.currency,\n \"tax\": Booqable.cartData.tax,\n \"items\": Booqable.cartData.items,\n \"coupon\": Booqable.cartData.coupon\n });\n });\n }\n\n Booqable._setupGoogleAnalyticsDefaultEvents = Booqable._once(_setupGoogleAnalyticsDefaultEvents)\n\n /////////////////////////////////////////////////\n // Facebook\n /////////////////////////////////////////////////\n\n Booqable._fbq = function (type, event, data) {\n if (typeof window.fbq === 'function') {\n window.fbq(type, event, data);\n }\n }\n\n Booqable._prepare_fbq_event_data = function (data) {\n const item = data.items[0]\n\n if (!data.currency || !item) {\n return null\n }\n\n return {\n contents: [{\n id: item.item_id,\n quantity: item.quantity\n }],\n content_name: item.item_name,\n currency: data.currency,\n value: item.price\n }\n }\n\n setupFacebook = function (fbId, defaultEvents = true) {\n if (!fbId || fbId == '') { return ; }\n\n (function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;\n n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;\n t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,\n document,'script','https://connect.facebook.net/en_US/fbevents.js'));\n\n fbq('init', fbId);\n\n if (defaultEvents) {\n Booqable._setupFacebookDefaultEvents();\n }\n };\n\n Booqable.setupFacebook = Booqable._once(setupFacebook)\n\n _setupFacebookDefaultEvents = function () {\n Booqable.on('information', function () {\n Booqable._fbq('track', 'InitiateCheckout', {\n value: Booqable.cartData.grandTotalWithTax,\n currency: Booqable.cartData.currency\n });\n });\n\n Booqable.on('payment', function () {\n Booqable._fbq('track', 'AddPaymentInfo');\n });\n\n Booqable.on('completed', function () {\n Booqable._fbq('track', 'Purchase', {\n value: Booqable.cartData.grandTotalWithTax,\n currency: Booqable.cartData.currency\n });\n });\n\n Booqable.on('page-change', function () {\n Booqable._fbq('track', 'PageView')\n });\n\n Booqable.on('viewProduct', function (data) {\n const event_data = Booqable._prepare_fbq_event_data(data)\n\n Booqable._fbq('track', 'ViewContent', event_data);\n });\n\n Booqable.on('addToCart', function (data) {\n const event_data = Booqable._prepare_fbq_event_data(data)\n\n Booqable._fbq('track', 'AddToCart', event_data);\n });\n\n Booqable.on('removeFromCart', function (data) {\n const event_data = Booqable._prepare_fbq_event_data(data)\n\n Booqable._fbq('trackCustom', 'RemoveFromCart', event_data);\n });\n };\n\n Booqable._setupFacebookDefaultEvents = Booqable._once(_setupFacebookDefaultEvents)\n\n /////////////////////////////////////////////////\n // Intercom\n /////////////////////////////////////////////////\n\n Booqable.setupIntercom = function (appId) {\n window.intercomSettings = {\n app_id: appId\n };\n\n (function(){var w=window;var ic=w.Intercom;if(typeof ic===\"function\"){ic('reattach_activator');\n ic('update',intercomSettings);}else{var d=document;var i=function(){i.c(arguments)};i.q=[];\n i.c=function(args){i.q.push(args)};w.Intercom=i;function l(){var s=d.createElement('script');\n s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/frrez76q';\n var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);}\n if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}\n Booqable._loadIntercom=l;}})()\n\n Booqable._once(Booqable._loadIntercom)();\n };\n\n /////////////////////////////////////////////////\n // Properties & Property updaters\n /////////////////////////////////////////////////\n\n Booqable.decorateLinkForTracking = function (link) {\n // https://developers.google.com/analytics/devguides/collection/gtagjs/cross-domain\n if (window.ga) {\n var trackers = window.ga.getAll && window.ga.getAll()\n var tracker = trackers && trackers[0]\n\n if (tracker && window.gaplugins && window.gaplugins.Linker) {\n var linker = new window.gaplugins.Linker(tracker)\n\n link = linker.decorate(link)\n }\n }\n\n return link\n }\n\n /////////////////////////////////////////////////\n // Button utilities\n /////////////////////////////////////////////////\n\n document.querySelectorAll('form').forEach((form) => {\n form.addEventListener('submit', function (e) {\n const button = e.submitter\n if (button?.classList.contains('button--with-loading') || button?.classList.contains('button--disable-on-submit')) {\n button.setAttribute('disabled', 'disabled')\n }\n })\n })\n}\n"],"names":["Booqable","location","window","pathname","origin","value","localStorage","setItem","getItem","undefined","init","initBooqableComponents","setCartData","data","cartData","_events","on","event","callback","context","hasOwnProperty","push","_trigger","args","Array","prototype","slice","call","arguments","callbacks","i","length","apply","off","filter","listener","loadScript","src","_isScriptLoaded","tag","document","createElement","async","getElementsByTagName","appendChild","unloadScript","_findScript","removeChild","jQuery","_defer","$","querySelector","_once","func","didRun","TypeError","this","condition","method","attempt","setTimeout","_prependChild","parentElement","element","insertBefore","firstChild","_apps","marketing","essential","_initApps","Object","entries","forEach","_","apps","app","_consentToAllApps","onConsent","registerApp","category","appConfig","Error","assign","name","onDeny","_gtag","type","gtag","_prepare_gtag_event_data","currency","items","map","item","item_id","item_name","quantity","price","setupGoogleAnalytics","trackingId","defaultPageTracking","defaultEvents","options","linker","accept_incoming","dataLayer","Date","_setupGoogleAnalyticsDefaultPageTracking","_setupGoogleAnalyticsDefaultEvents","page_title","send_to","grandTotalWithTax","event_data","coupon","cartId","tax","_fbq","fbq","_prepare_fbq_event_data","contents","id","content_name","setupFacebook","fbId","f","b","e","n","t","s","callMethod","queue","loaded","version","parentNode","_setupFacebookDefaultEvents","setupIntercom","appId","intercomSettings","app_id","w","ic","Intercom","d","c","l","x","q","attachEvent","addEventListener","_loadIntercom","decorateLinkForTracking","link","ga","trackers","getAll","tracker","gaplugins","Linker","decorate","querySelectorAll","form","button","submitter","classList","contains","setAttribute"],"sourceRoot":""}