{"version":3,"file":"chunks-75330cbe70226a2a/apps_common_cookie-utils_index_js-apps_common_store-utils_index_js.9aec3eaecf31d736.js?t=1741497828074","mappings":"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","sources":["webpack://assemble/./apps/common/constants/index.js","webpack://assemble/./apps/common/cookie-utils/Utils.js","webpack://assemble/./apps/common/cookie-utils/Shopware.js","webpack://assemble/./apps/common/cookie-utils/index.js","webpack://assemble/./apps/common/store-utils/index.js","webpack://assemble/./apps/common/utils/index.js"],"sourcesContent":["\nexport const API_VERSION = \"v2\";\nexport const ICON_SET_BOX= \"box\";\nexport const ICON_SET_BLUEPRINT = \"bp\";\nexport const ICON_SET_FONTAWESOME = \"fa\";\n\nexport const DESERIALIZE_TYPE_OBJECT = \"OBJECT\";\nexport const DESERIALIZE_TYPE_ARRAY_OBJECTS = \"ARRAY_OBJECTS\";\nexport const DESERIALIZE_TYPE_CUSTOM = \"CUSTOM\";\n\nexport const COOKIE_EXPIRES_DAYS = 365;\n\nexport const COOKIE_ID = \"ov_cookie_id\";\nexport const COOKIE_CONTACT_ID = \"ov_contact_id\";\n\nexport const COOKIE_REVIEWS_UPVOTED = \"ov_reviews_upvoted\";\nexport const COOKIE_BACKINSTOCK_VISITOR_ID = \"ov_backinstock_visitor_id\";\n\nexport const COOKIE_PROMPT_SESSION_NUM_VIEWED_PAGES = \"ov_prompt_session_num_viewed_pages\";\nexport const COOKIE_PROMPT_SESSION_VISITOR_TYPE = \"ov_prompt_session_visitor_type\";\nexport const COOKIE_PROMPT_SESSION_FIRST_SEEN = \"ov_prompt_session_first_seen\";\nexport const COOKIE_PROMPT_VISITOR_ID = \"ov_prompt_visitor_id\";\nexport const COOKIE_PROMPT_LAST_SEEN = \"ov_prompt_last_seen\";\n\n\n\n","import Cookies from 'js-cookie';\nimport * as comUtils from \"common/utils\";\nexport * from \"common/utils\";\nimport * as constants from 'common/constants';\n\n\nexport function getCookie(name, attributes={}) {\n return Cookies.get(name, attributes);\n}\n","import * as utils from './Utils';\n\nexport function requireCookieConsent() {\n if (!window.OnVoardData.use_cookie_consent) return false;\n if (!document.querySelector(\".cookie-permission-container\")) return false;\n return true;\n}\n\nexport function allowCookieId() {\n if (!requireCookieConsent()) return true;\n\n let allow = utils.getCookie('ov_allow_cookie_id');\n if (allow) return true;\n return false;\n}\n\nexport function allowContactIdCookie() {\n if (!requireCookieConsent()) return true;\n\n let allow = utils.getCookie('ov_allow_contact_id');\n if (allow) return true;\n return false;\n}\n\nexport function allowBackInStockVisitorIdCookie() {\n return true;\n}\n\nexport function allowReviewsUpvotedCookie() {\n return true;\n}\n\nexport function allowPromptSessionCookies() {\n return true;\n}\n\nexport function allowPromptVisitorIdCookie() {\n return true;\n}\n\nexport function allowPromptLastSeenCookie() {\n if (!requireCookieConsent()) return true;\n\n let allow = utils.getCookie('ov_allow_prompt_last_seen');\n if (allow) return true;\n return false;\n}\n","import Cookies from 'js-cookie';\nimport * as utils from './Utils';\nimport * as shopwareUtils from './Shopware';\nimport * as constants from 'common/constants';\n\n\nexport function allowCookieId() {\n let platform = utils.getEcommercePlatform();\n if (platform === 'shopware') return shopwareUtils.allowCookieId();\n return true;\n}\n\nexport function allowContactIdCookie() {\n let platform = utils.getEcommercePlatform();\n if (platform === 'shopware') return shopwareUtils.allowContactIdCookie();\n return true;\n}\n\nexport function allowBackInStockVisitorIdCookie() {\n let platform = utils.getEcommercePlatform();\n if (platform === 'shopware') return shopwareUtils.allowBackInStockVisitorIdCookie();\n return true;\n}\n\nexport function allowReviewsUpvotedCookie() {\n let platform = utils.getEcommercePlatform();\n if (platform === 'shopware') return shopwareUtils.allowReviewsUpvotedCookie();\n return true;\n}\n\nexport function allowPromptSessionCookies() {\n let platform = utils.getEcommercePlatform();\n if (platform === 'shopware') return shopwareUtils.allowPromptSessionCookies();\n return true;\n}\n\nexport function allowPromptVisitorIdCookie() {\n let platform = utils.getEcommercePlatform();\n if (platform === 'shopware') return shopwareUtils.allowPromptVisitorIdCookie();\n return true;\n}\n\nexport function allowPromptLastSeenCookie() {\n let platform = utils.getEcommercePlatform();\n if (platform === 'shopware') return shopwareUtils.allowPromptLastSeenCookie();\n return true;\n}\n\n//======================================\n// Core Functions\n//======================================\nexport function canSetCookie(name) {\n if (name === constants.COOKIE_ID) return allowCookieId();\n if (name === constants.COOKIE_CONTACT_ID) return allowContactIdCookie();\n if (name === constants.COOKIE_REVIEWS_UPVOTED) return allowReviewsUpvotedCookie();\n if (name === constants.COOKIE_BACKINSTOCK_VISITOR_ID) return allowBackInStockVisitorIdCookie();\n\n if (name.startsWith(\"ov_prompt_session\")) return allowPromptSessionCookies();\n if (name === constants.COOKIE_PROMPT_VISITOR_ID) return allowPromptVisitorIdCookie();\n if (name === constants.COOKIE_PROMPT_LAST_SEEN) return allowPromptLastSeenCookie();\n return true;\n}\n\nexport function getCookie(...args) {\n return utils.getCookie(...args);\n}\n\nexport function setCookie(name, value, attributes={}) {\n if (!canSetCookie(name)) return;\n\n if (!('expires' in attributes)) {\n attributes['expires'] = constants.COOKIE_EXPIRES_DAYS;\n }\n\n Cookies.set(name, value, attributes);\n return Cookies.get(name, attributes);\n}\n\nexport function setSessionCookie(name, value, attributes={}) {\n if (!canSetCookie(name)) return;\n Cookies.set(name, value, attributes);\n return Cookies.get(name, attributes);\n}\n\nexport function getOrSetCookie(name, value, attributes={}) {\n const cookie = getCookie(name, attributes) || null;\n if (cookie) return cookie;\n if (!canSetCookie(name)) return;\n\n if (!('expires' in attributes)) {\n attributes['expires'] = constants.COOKIE_EXPIRES_DAYS;\n }\n\n setCookie(name, value, attributes);\n return getCookie(name, attributes);\n}\n\nexport function removeCookie(name, attributes={}) {\n Cookies.remove(name, attributes);\n}\n\nexport function getCookieInt(cookieName) {\n let value = 0;\n\n try {\n value = parseInt(getCookie(cookieName)) || 0;\n } catch(e) {\n value = 0;\n }\n\n return value;\n}\n\nexport function parseCookieJson(rawValue, defaultValue) {\n let value = defaultValue;\n if (rawValue) {\n try {\n value = JSON.parse(rawValue);\n } catch(e) {\n value = defaultValue;\n }\n }\n\n if (!rawValue) value = defaultValue;\n return value;\n}\n\n//======================================\n// Get Cookies\n//======================================\nexport function getCookieId() {\n const cookieName = constants.COOKIE_ID;\n let cookieValue = getCookie(cookieName);\n return cookieValue;\n}\n\nexport function getOrCreateCookieId() {\n let cookieValue = getCookieId();\n if (cookieValue) return cookieValue;\n\n const cookieName = constants.COOKIE_ID;\n if (!canSetCookie(cookieName)) return;\n\n cookieValue = utils.uniqueId();\n setCookie(cookieName, cookieValue);\n return cookieValue;\n}\n\nexport function getContactId() {\n const cookieName = constants.COOKIE_CONTACT_ID;\n let cookieValue = getCookie(cookieName);\n return cookieValue;\n}\n","import get from 'lodash/get';\nimport * as constants from 'common/constants';\n\n\n// Used for resetting `Store`\nexport function setFieldValues(self, defaults) {\n for (var fieldName in defaults) {\n let defaultValue = defaults[fieldName];\n self[fieldName] = defaultValue;\n }\n};\n\n\n// Ensure no duplicate fields for mappers\nexport function concatDeserializeMappers(firstMappers, secondMappers) {\n let fields = secondMappers.map((mapper) => mapper.field);\n firstMappers = firstMappers.filter((mapper) => !fields.includes(mapper.field));\n return [].concat(firstMappers, secondMappers);\n};\n\n\n\n// Mapper must have \"cls\" field returning object's class\nexport async function deserializeObject(mapper, value) {\n const instance = new mapper.cls();\n if (value) await instance.deserialize(value);\n return instance;\n};\n\n\n// Mapper must have \"cls\" field returning object's class. Value must be an array.\nexport async function deserializeArrayObjects(mapper, data, accessor, value) {\n if (!Array.isArray(value)) {\n throw new Error(`Expecting array object for accessor (${accessor}) with ${JSON.stringify(value)}`);\n };\n\n const instanceList = [];\n for (const rowData of value) {\n const instance = new mapper.cls();\n await instance.deserialize(rowData);\n instanceList.push(instance);\n }\n\n return instanceList;\n};\n\n\nexport async function deserializeDate(mapper, data, accessor, dateValue) {\n return dateValue ? new Date(dateValue) : null;\n};\n\n\nexport async function deserializeTimestamp(mapper, data, accessor, timestampValue) {\n return timestampValue ? new Date(timestampValue*1000) : null;\n};\n\n\nexport async function deserializeWithMappers(self, mappers, data) {\n for (var mapper of mappers) {\n\n // By default, use `field` as accessor\n let accessor = 'accessor' in mapper ? mapper.accessor : mapper.field;\n\n // If can't find value from data with accessor, skip.\n let value = get(data, accessor, null);\n if (value === null) continue;\n\n // What it actually does:\n // this.id = data.id;\n if (!('type' in mapper)) {\n self[mapper.field] = value;\n }\n\n // What it actually does:\n // let account = new AccountStore();\n // if (data.account) account.deserialize(data.account);\n if (mapper.type === constants.DESERIALIZE_TYPE_OBJECT) {\n self[mapper.field] = await deserializeObject(mapper, value);\n };\n\n // What it actually does:\n // let accounts = [];\n // data.accounts.forEach(function(rowData){\n // let account = new AccountStore();\n // account.deserialize(rowData);\n // accounts.push(account);\n // });\n if (mapper.type === constants.DESERIALIZE_TYPE_ARRAY_OBJECTS) {\n self[mapper.field] = await deserializeArrayObjects(mapper, data, accessor, value);\n };\n\n // Custom extract function to retrieve deserialized value\n if (mapper.type === constants.DESERIALIZE_TYPE_CUSTOM) {\n self[mapper.field] = await mapper.extract(mapper, data, accessor, value);\n };\n }\n};\n\n\n\n\n","import axios from 'axios';\nimport get from 'lodash/get';\nimport ldIsEmpty from 'lodash/isEmpty';\nimport queryString from 'query-string';\nimport { customAlphabet } from 'nanoid';\nimport dictionary from 'nanoid-dictionary';\nimport * as constants from 'common/constants';\n\n\nexport function isProduction() {\n if (process.env.NODE_ENV === 'production') {\n return true;\n } else {\n return false;\n }\n}\n\nexport function isPreview() {\n if (typeof IS_PREVIEW !== 'undefined' && IS_PREVIEW) return true;\n return false;\n}\n\nexport function isClientProduction() {\n if (isProduction() && !isPreview()) return true;\n return false;\n}\n\nexport function getEcommercePlatform() {\n let ovData = window.OnVoardData;\n if (!ovData) return;\n return ovData.ecommerce_platform;\n}\n\nexport function getPlatformIdentifierForEngagement() {\n let platform = getEcommercePlatform();\n if (platform === 'bigcommerce') return window.OnVoardData.store_hash;\n if (platform === 'easystore') return window.OnVoardData.shop.domain;\n if (platform === 'shopify' && window.OnVoardData) return window.OnVoardData.shop.myshopify_domain;\n if (platform === 'shopline') return window.Shopline.storeId;\n if (platform === 'shopware') return window.OnVoardData.app_shop_id;\n if (platform === 'wix') return window.OnVoardData.account_id;\n if (platform === 'woocommerce') return window.location.hostname;\n return;\n}\n\nexport function isBrowser() {\n return typeof window !== 'undefined';\n}\n\n// https://stackoverflow.com/a/26824304/1446284\nexport function isInt(val) {\n var expression = /^[0-9]+$/;\n return expression.test(val);\n}\n\n// https://stackoverflow.com/a/9716488/1446284\nexport function isNumeric(val) {\n return !isNaN(parseFloat(val)) && isFinite(val);\n}\n\nexport function isBoolean(value) {\n return typeof value === 'boolean';\n}\n\nexport function isString(val) {\n return typeof val === 'string';\n}\n\nexport function isFunction(val) {\n return typeof val === 'function';\n}\n\nexport function isArray(val) {\n return Array.isArray(val);\n}\n\nexport function isObject(val) {\n return (!!val) && (val.constructor === Object);\n}\n\nexport function isEmpty(val) {\n return ldIsEmpty(val);\n}\n\nexport function stringContains(string, subString) {\n return string.indexOf(subString) !== -1;\n}\n\n// Use jquery's `inArray` to check if value is in array.\n// Will return boolean instead of value index\nexport function inArray(item, arrayList) {\n if ($.inArray(item, arrayList) !== -1) return true;\n return false;\n}\n\nexport function loopObject(object, callback) {\n for (var k in object) {\n let v = object[k];\n callback(k, v);\n }\n}\n\nexport function getRandomInt(max) {\n return Math.floor(Math.random() * Math.floor(max));\n}\n\nexport function generateHash(length=16) {\n return [...Array(length)].map(() => Math.random().toString(36)[2]).join('');\n}\n\nexport function formatAmount(amount) {\n amount = amount.toString();\n amount = amount.replace(/[^0-9.-]/g, '');\n amount = parseFloat(amount);\n return amount;\n}\n\nexport function isMobileScreen() {\n if (!isBrowser()) return;\n var screenWidth = window.screen.width;\n var screenHeight = window.screen.height;\n return screenWidth >= 768 ? false : true;\n}\n\n// In seconds precision\nexport function getCurrentTimestamp() {\n return Math.floor(Date.now() / 1000);\n}\n\nexport function currentURL() {\n if (!isBrowser()) return;\n return window.location.href;\n}\n\nexport function currentURLWithoutParams() {\n if (!isBrowser()) return;\n return window.location.protocol + '//' + window.location.host + window.location.pathname;\n}\n\nexport function currentDomain() {\n if (!isBrowser()) return;\n return window.location.hostname;\n}\n\nexport function currentURLPath() {\n if (!isBrowser()) return;\n return window.location.pathname;\n}\n\nexport function getScrollPercent() {\n if (!isBrowser()) return;\n const h = document.documentElement;\n const b = document.body;\n const st = 'scrollTop';\n const sh = 'scrollHeight';\n return (h[st]||b[st]) / ((h[sh]||b[sh]) - h.clientHeight) * 100;\n}\n\n\nexport function appendQueryString(url, qs) {\n const parsed = queryString.parseUrl(url);\n qs = {...parsed.query, ...qs};\n\n Object.keys(qs).forEach((key) => (qs[key] === null || qs[key] === \"\") && delete qs[key]);\n let stringified = queryString.stringify(qs);\n if (!stringified) {\n return url;\n } else {\n return url + \"?\" + stringified;\n }\n}\n\n// {url: 'https://foo.bar', query: {foo: 'bar'}}\nexport function parseUrl(url) {\n return queryString.parseUrl(url);\n}\n\n// {foo: 'bar'}\nexport function parseQueryString(val) {\n return queryString.parse(val);\n}\n\nexport function removeQueryString(url) {\n return url.split(\"?\")[0];\n}\n\n// Scroll to top of element. Useful when you are using scrollable elements\nexport function scrollElementTop(el) {\n el.scrollTop = el.scrollHeight;\n\n setTimeout(() => {\n el.scrollTop = 0;\n }, 100);\n}\n\nexport function getCssValueForSelector(selector, propKey) {\n if (!isBrowser()) return;\n const el = document.querySelector(selector);\n if (!el) return;\n\n style = window.getComputedStyle(el);\n return style.getPropertyValue(propKey);\n}\n\nexport function attachUrlChangeEvent() {\n if (window.OV_ATTACHED_URL_CHANGE_EVENT) return null;\n\n let platform = getEcommercePlatform();\n\n // shopline need this to detect\n // https://phpcoder.tech/detect-url-change-in-javascript-without-refresh/\n if (platform === 'shopline') {\n let lastUrl = location.href;\n new MutationObserver(() => {\n const url = location.href;\n if (url !== lastUrl) {\n lastUrl = url;\n window.dispatchEvent(new Event('ovurlchange'));\n }\n }).observe(document, {subtree: true, childList: true});\n\n window.OV_ATTACHED_URL_CHANGE_EVENT = 1;\n return;\n }\n\n // See https://stackoverflow.com/a/52809105/1446284\n history.pushState = (f => function pushState(){\n var ret = f.apply(this, arguments);\n window.dispatchEvent(new Event('pushstate'));\n window.dispatchEvent(new Event('ovurlchange'));\n return ret;\n })(history.pushState);\n\n history.replaceState = (f => function replaceState(){\n var ret = f.apply(this, arguments);\n window.dispatchEvent(new Event('replacestate'));\n window.dispatchEvent(new Event('ovurlchange'));\n return ret;\n })(history.replaceState);\n\n window.addEventListener('popstate', () => {\n window.dispatchEvent(new Event('ovurlchange'))\n });\n\n window.OV_ATTACHED_URL_CHANGE_EVENT = 1;\n}\n\nexport function attachHashChangeEvent() {\n if (window.OV_ATTACHED_HASH_CHANGE_EVENT) return null;\n\n window.addEventListener('hashchange', () => {\n window.dispatchEvent(new Event('ovhashchange'))\n });\n\n window.OV_ATTACHED_HASH_CHANGE_EVENT = 1;\n}\n\n// See https://stackoverflow.com/a/43467144/1446284\nexport function isValidUrl(value) {\n if (!value) return false;\n if (value.startsWith(\"//\")) value = value.replace(\"//\", \"https://\");\n if (!value.startsWith(\"http://\") && !value.startsWith(\"https://\")) {\n value = `http://${value}`\n }\n\n let url;\n try {\n url = new URL(value);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n\n// https://gist.github.com/ManUtopiK/469aec75b655d6a4d912aeb3b75af3c9\nexport function cleanGraphQLResponse(input) {\n if (!input) return null\n const output = {}\n const isObject = obj => {\n return obj !== null && typeof obj === 'object' && !Array.isArray(obj)\n }\n\n Object.keys(input).forEach(key => {\n if (input[key] && input[key].edges) {\n output[key] = input[key].edges.map(edge =>\n cleanGraphQLResponse(edge.node)\n )\n } else if (isObject(input[key])) {\n output[key] = cleanGraphQLResponse(input[key])\n } else if (key !== '__typename') {\n output[key] = input[key]\n }\n })\n\n return output\n}\n\n\nconst requestAnimFrame = (function() {\n if (window.requestAnimationFrame) return window.requestAnimationFrame;\n return (callback, element) => window.setTimeout(callback, 1000 / 60);\n})();\n\n// See https://gist.github.com/joelambert/1002116\nexport function requestInterval(fn, delay) {\n if(!window.requestAnimationFrame) return window.setInterval(fn, delay);\n\n let start = new Date().getTime();\n let handle = new Object();\n\n function loop() {\n var current = new Date().getTime(),\n delta = current - start;\n\n if(delta >= delay) {\n fn.call();\n start = new Date().getTime();\n }\n\n handle.value = requestAnimFrame(loop);\n };\n\n handle.value = requestAnimFrame(loop);\n return handle;\n}\n\n\n// See https://gist.github.com/joelambert/1002116\nexport function clearRequestInterval(handle) {\n if (window.cancelAnimationFrame) window.cancelAnimationFrame(handle.value);\n clearInterval(handle);\n}\n\nexport function stringifyError(error) {\n try {\n error = JSON.stringify(error);\n } catch {}\n return error;\n}\n\nexport function printErrors(errors) {\n if (isArray(errors)) {\n errors.forEach((error) => {\n console.log(error);\n });\n\n return;\n }\n\n if (isObject(errors)) {\n for (let [key, value] of Object.entries(errors)) {\n console.log(`${key}: ${value}`);\n }\n\n return;\n }\n\n console.log(errors);\n}\n\n\n//===================================================\n// interceptRequests\n//===================================================\n// https://gist.github.com/sergeimuller/a609a9df7d30e2625a177123797471e2\nfunction replaceXHROpen(interceptPaths, callback) {\n let oldXHROpen = window.XMLHttpRequest.prototype.open;\n window.XMLHttpRequest.prototype.open = function(method, url, async, user, password) {\n this.addEventListener('load', function() {\n if (!interceptPaths.some((path) => url.includes(path))) return;\n\n // Can't guarantee response is always json\n callback(this.response, url);\n });\n\n oldXHROpen.apply(this, arguments);\n }\n\n // required because some apps or themes mess jQuery up and causing unexpected issues\n try {\n if (window.jQuery) {\n jQuery(document).ajaxSuccess(function(event, xhr, settings) {\n if (!interceptPaths.some((path) => settings.url.includes(path))) return;\n\n // Can't guarantee response is always json\n callback(xhr.responseText, settings.url);\n });\n }\n } catch(e) {}\n}\n\n// https://stackoverflow.com/a/64961272/1446284\nfunction replaceFetch(interceptPaths, callback) {\n let oldFetch = window.fetch;\n window.fetch = async (...args) => {\n const reqUrl = args[0];\n const response = await oldFetch(...args);\n if (!reqUrl || !interceptPaths.some((path) => reqUrl.includes(path))) return response;\n\n // Can't guarantee response is always json\n response\n .clone()\n .text()\n .then((textResponse) => {\n callback(textResponse, reqUrl);\n })\n .catch((err) => {\n console.error(err);\n })\n\n return response;\n }\n}\n\n\nexport function interceptRequests(interceptPaths, callback) {\n if (getEcommercePlatform() === 'shopline' && window.__AJAX_INTERCEPTOR__) {\n window.__AJAX_INTERCEPTOR__((data) => {\n if (data.method !== 'GET') return;\n if (!interceptPaths.some((path) => data.url.includes(path))) return;\n\n // Can't guarantee response is always json\n callback(data.xhr.responseText, data.url);\n });\n }\n\n replaceXHROpen(interceptPaths, callback);\n replaceFetch(interceptPaths, callback);\n}\n\n\n//===================================================\n// API Utils\n//===================================================\nexport function handleErrorCallback(error, errorCallback) {\n if (error.response) {\n if (error.response.status === 500) {\n errorCallback(\"Server error 500. This error indicates that there are some issues on our end.\");\n return;\n }\n\n if (error.response.data) {\n if (error.response.data.errors && Array.isArray(error.response.data.errors)) {\n errorCallback(error.response.data.errors.join(\"\\n\"));\n return;\n }\n\n errorCallback(error.response.data);\n return;\n }\n }\n\n errorCallback(error.message);\n}\n\nexport function handleRqSuccess(response, successCallback) {\n successCallback(response.data);\n};\n\n\nexport function handleRqError(error, errorCallback) {\n handleErrorCallback(error, errorCallback);\n};\n\n\nexport function getRq(kwargs) {\n const config = {};\n config['method'] = 'get';\n config['url'] = kwargs.url;\n if (kwargs.headers) config['headers'] = kwargs.headers;\n\n axios(config)\n .then((response) => handleRqSuccess(response, kwargs.successCallback))\n .catch((error) => handleRqError(error, kwargs.errorCallback));\n};\n\nexport function postRq(kwargs) {\n const config = {};\n config['method'] = 'post';\n config['url'] = kwargs.url;\n config['data'] = kwargs.data || \"{}\";\n if (kwargs.headers) config['headers'] = kwargs.headers;\n\n axios(config)\n .then((response) => handleRqSuccess(response, kwargs.successCallback))\n .catch((error) => handleRqError(error, kwargs.errorCallback));\n};\n\nexport function buildUrl(path, qs={}) {\n return appendQueryString(`${BASE_API_URL}/${constants.API_VERSION}/${path}`, qs);\n}\n\nexport function uniqueId(prefix='', length=16) {\n const generator = customAlphabet(dictionary.alphanumeric, length);\n let id = generator();\n if (prefix) id = `${prefix}${id}`;\n return id;\n}\n\n// https://github.com/scopsy/await-to-js\nexport function to(promise) {\n return promise.then(data => {\n return [null, data];\n })\n .catch(err => [err]);\n}\n"],"names":["API_VERSION","ICON_SET_BOX","ICON_SET_BLUEPRINT","ICON_SET_FONTAWESOME","DESERIALIZE_TYPE_OBJECT","DESERIALIZE_TYPE_ARRAY_OBJECTS","DESERIALIZE_TYPE_CUSTOM","COOKIE_EXPIRES_DAYS","COOKIE_ID","COOKIE_CONTACT_ID","COOKIE_REVIEWS_UPVOTED","COOKIE_BACKINSTOCK_VISITOR_ID","COOKIE_PROMPT_SESSION_NUM_VIEWED_PAGES","COOKIE_PROMPT_SESSION_VISITOR_TYPE","COOKIE_PROMPT_SESSION_FIRST_SEEN","COOKIE_PROMPT_VISITOR_ID","COOKIE_PROMPT_LAST_SEEN","getCookie","name","attributes","arguments","length","undefined","Cookies","requireCookieConsent","window","OnVoardData","use_cookie_consent","document","querySelector","allowCookieId","utils","allowContactIdCookie","allowPromptLastSeenCookie","canSetCookie","constants","startsWith","apply","setCookie","value","setSessionCookie","removeCookie","parseCookieJson","rawValue","defaultValue","JSON","parse","e","getCookieId","getOrCreateCookieId","cookieValue","cookieName","getContactId","setFieldValues","self","defaults","fieldName","concatDeserializeMappers","firstMappers","secondMappers","fields","map","mapper","field","filter","includes","concat","deserializeObject","_x","_x2","_deserializeObject","_asyncToGenerator","_regeneratorRuntime","_callee","instance","_context","prev","next","cls","deserialize","abrupt","stop","deserializeArrayObjects","_x3","_x4","_x5","_x6","_deserializeArrayObjects","_callee2","data","accessor","instanceList","_iterator","_step","rowData","_context2","Array","isArray","Error","stringify","_createForOfIteratorHelper","s","n","done","push","t0","f","finish","deserializeDate","_x7","_x8","_x9","_x10","_deserializeDate","_callee3","dateValue","_context3","Date","deserializeTimestamp","_x11","_x12","_x13","_x14","_deserializeTimestamp","_callee4","timestampValue","_context4","deserializeWithMappers","_x15","_x16","_x17","_deserializeWithMappers","_callee5","mappers","_iterator2","_step2","_context5","get","type","sent","extract","isProduction","isPreview","IS_PREVIEW","isClientProduction","getEcommercePlatform","ovData","ecommerce_platform","getPlatformIdentifierForEngagement","platform","store_hash","shop","domain","myshopify_domain","Shopline","storeId","app_shop_id","account_id","location","hostname","isBrowser","isInt","val","test","isNumeric","isNaN","parseFloat","isFinite","isBoolean","isString","isFunction","isObject","constructor","Object","isEmpty","ldIsEmpty","stringContains","string","subString","indexOf","inArray","item","arrayList","$","loopObject","object","callback","k","getRandomInt","max","Math","floor","random","generateHash","_toConsumableArray","toString","join","formatAmount","amount","replace","isMobileScreen","screenWidth","screen","width","height","getCurrentTimestamp","now","currentURL","href","currentURLWithoutParams","protocol","host","pathname","currentDomain","currentURLPath","getScrollPercent","h","documentElement","b","body","st","sh","clientHeight","appendQueryString","url","qs","parsed","queryString","_objectSpread","query","keys","forEach","key","stringified","parseUrl","parseQueryString","removeQueryString","split","scrollElementTop","el","scrollTop","scrollHeight","setTimeout","getCssValueForSelector","selector","propKey","style","getComputedStyle","getPropertyValue","attachUrlChangeEvent","OV_ATTACHED_URL_CHANGE_EVENT","lastUrl","MutationObserver","dispatchEvent","Event","observe","subtree","childList","history","pushState","ret","this","replaceState","addEventListener","attachHashChangeEvent","OV_ATTACHED_HASH_CHANGE_EVENT","isValidUrl","URL","_","cleanGraphQLResponse","input","output","obj","edges","edge","node","_typeof","requestAnimFrame","requestAnimationFrame","element","requestInterval","fn","delay","setInterval","start","getTime","handle","loop","call","clearRequestInterval","cancelAnimationFrame","clearInterval","stringifyError","error","_unused","printErrors","errors","console","log","_i","_Object$entries","entries","_Object$entries$_i","_slicedToArray","interceptRequests","interceptPaths","__AJAX_INTERCEPTOR__","method","some","path","xhr","responseText","oldXHROpen","XMLHttpRequest","prototype","open","async","user","password","response","jQuery","ajaxSuccess","event","settings","replaceXHROpen","oldFetch","fetch","reqUrl","_args","clone","text","then","textResponse","err","replaceFetch","handleErrorCallback","errorCallback","status","message","handleRqSuccess","successCallback","handleRqError","getRq","kwargs","config","headers","axios","postRq","buildUrl","BASE_API_URL","uniqueId","prefix","id","customAlphabet","dictionary","generator","to","promise"],"sourceRoot":""}