ahdjs 0.0.136 → 0.0.138

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","mappings":"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","sources":["webpack://AHDjs/webpack/universalModuleDefinition","webpack://AHDjs/./src/lib/plugins/beacons/Beacons.js","webpack://AHDjs/./src/lib/utils/constants.js","webpack://AHDjs/./src/lib/utils/isSvgElement.js","webpack://AHDjs/./src/lib/utils/isNodeList.js","webpack://AHDjs/./src/lib/utils/domTemplate.js","webpack://AHDjs/./src/lib/utils/isHtmlElement.js","webpack://AHDjs/./src/lib/plugins/beacons/templates/beacon.html","webpack://AHDjs/./src/lib/plugins/beacons/templates/beaconWithLabel.html","webpack://AHDjs/./node_modules/lodash/_Symbol.js","webpack://AHDjs/./node_modules/lodash/_arrayMap.js","webpack://AHDjs/./node_modules/lodash/_baseGetTag.js","webpack://AHDjs/./node_modules/lodash/_baseToString.js","webpack://AHDjs/./node_modules/lodash/_freeGlobal.js","webpack://AHDjs/./node_modules/lodash/_getRawTag.js","webpack://AHDjs/./node_modules/lodash/_objectToString.js","webpack://AHDjs/./node_modules/lodash/_root.js","webpack://AHDjs/./node_modules/lodash/isArray.js","webpack://AHDjs/./node_modules/lodash/isNull.js","webpack://AHDjs/./node_modules/lodash/isObjectLike.js","webpack://AHDjs/./node_modules/lodash/isSymbol.js","webpack://AHDjs/./node_modules/lodash/isUndefined.js","webpack://AHDjs/./node_modules/lodash/toString.js","webpack://AHDjs/./node_modules/lodash/uniqueId.js","webpack://AHDjs/./node_modules/path-to-regexp/dist.es2015/index.js","webpack://AHDjs/webpack/bootstrap","webpack://AHDjs/webpack/runtime/compat get default export","webpack://AHDjs/webpack/runtime/define property getters","webpack://AHDjs/webpack/runtime/global","webpack://AHDjs/webpack/runtime/hasOwnProperty shorthand","webpack://AHDjs/webpack/runtime/make namespace object","webpack://AHDjs/./src/lib/GuideChimp.js","webpack://AHDjs/./node_modules/ttl-localstorage/dist/components/memorystorage.js","webpack://AHDjs/./src/lib/templates/fake-step.html","webpack://AHDjs/./src/lib/templates/preloader.html","webpack://AHDjs/./src/lib/templates/overlay.html","webpack://AHDjs/./src/lib/templates/interaction.html","webpack://AHDjs/./src/lib/templates/control.html","webpack://AHDjs/./src/lib/templates/tooltip.html","webpack://AHDjs/./src/lib/templates/close.html","webpack://AHDjs/./src/lib/templates/progressbar.html","webpack://AHDjs/./src/lib/templates/title.html","webpack://AHDjs/./src/lib/templates/description.html","webpack://AHDjs/./src/lib/templates/custom-buttons.html","webpack://AHDjs/./src/lib/templates/pagination.html","webpack://AHDjs/./src/lib/templates/previous.html","webpack://AHDjs/./src/lib/templates/next.html","webpack://AHDjs/./src/lib/templates/copyright.html","webpack://AHDjs/./src/lib/templates/notification.html","webpack://AHDjs/./node_modules/ttl-localstorage/dist/common/base-api.js","webpack://AHDjs/./node_modules/ttl-localstorage/dist/components/localstorage.js","webpack://AHDjs/./src/lib/plugins/beacons/index.js","webpack://AHDjs/./src/lib/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"AHDjs\"] = factory();\n\telse\n\t\troot[\"AHDjs\"] = factory();\n})(self, () => {\nreturn ","/* eslint-disable class-methods-use-this */\r\n/**\r\n * Copyright (C) 2020 Labs64 GmbH\r\n *\r\n * This source code is licensed under the European Union Public License, version 1.2\r\n * located in the LICENSE file\r\n */\r\n// utils\r\nimport domTemplate from \"../../utils/domTemplate\";\r\n\r\n// templates\r\nimport beaconTpl from \"./templates/beacon.html\";\r\nimport beaconWithLabel from \"./templates/beaconWithLabel.html\";\r\nimport infoIcon from \"./assets/icons/info.svg\";\r\nimport helpIcon from \"./assets/icons/helpIcon.svg\";\r\nimport warningIcon from \"./assets/icons/warning.svg\";\r\nimport beacon from \"./assets/icons/beacon.svg\";\r\nimport { TRIGGER_MODE } from \"../../utils/constants\";\r\n\r\nexport default class Beacons {\r\n constructor(beacons, options = {}) {\r\n this.beacons = [];\r\n\r\n this.options = {};\r\n\r\n // observers\r\n this.observers = {};\r\n\r\n if (typeof ResizeObserver !== \"undefined\") {\r\n this.observers.elementResizeObserver = new ResizeObserver(() =>\r\n this.refresh()\r\n );\r\n }\r\n\r\n this.cache = new Map();\r\n this.elements = new Map();\r\n\r\n this.setOptions(options);\r\n this.setBeacons(beacons);\r\n\r\n this.init();\r\n }\r\n\r\n /**\r\n * Called after construction, this hook allows you to add some extra setup\r\n * logic without having to override the constructor.\r\n */\r\n init() {}\r\n\r\n /**\r\n * Default options\r\n * @return {Object}\r\n */\r\n static getDefaultOptions() {\r\n return {\r\n position: \"center\",\r\n boundary: \"inner\",\r\n };\r\n }\r\n\r\n static getFixedClass() {\r\n return \"gc-beacon-fixed\";\r\n }\r\n\r\n static getBeaconDataPrefix() {\r\n return \"data-beacon\";\r\n }\r\n\r\n /**\r\n * Check if el or his parent has fixed position\r\n * @param el\r\n * @return {boolean}\r\n */\r\n static isFixed(el) {\r\n const { parentNode } = el;\r\n\r\n if (!parentNode || parentNode.nodeName === \"HTML\") {\r\n return false;\r\n }\r\n\r\n const elStyle = getComputedStyle(el);\r\n\r\n if (elStyle.getPropertyValue(\"position\") === \"fixed\") {\r\n return true;\r\n }\r\n\r\n return this.isFixed(parentNode);\r\n }\r\n\r\n /**\r\n * Set beacons options\r\n * @param options\r\n * @return {this}\r\n */\r\n setOptions(options) {\r\n this.options = { ...this.constructor.getDefaultOptions(), ...options };\r\n return this;\r\n }\r\n\r\n setBeacons(beacons) {\r\n // cleanup for previous beacons\r\n this.removeAll();\r\n\r\n this.beacons =\r\n !beacons ||\r\n typeof beacons === \"string\" ||\r\n (Array.isArray(beacons) && beacons.every((v) => typeof v === \"string\"))\r\n ? this.getDataBeacons(beacons)\r\n : this.getJsBeacons(beacons);\r\n\r\n if (this.beacons.length) {\r\n this.beacons.forEach((beacon) => {\r\n const { element } = beacon;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n const el = this.getEl(element);\r\n\r\n if (!el) {\r\n return;\r\n }\r\n\r\n const beaconEl = this.createBeaconEl(beacon);\r\n beaconEl.hidden = true;\r\n if (this.constructor.isFixed(el)) {\r\n beaconEl.classList.add(this.constructor.getFixedClass());\r\n }\r\n if (beacon.class === \"info-tooltip\") {\r\n beaconEl.classList.remove(\"gc-beacon\");\r\n }\r\n if (beacon.class === \"help-tooltip\") {\r\n beaconEl.classList.remove(\"gc-beacon\");\r\n }\r\n\r\n const parentEl =\r\n !el.parentElement || el.parentElement === document.body\r\n ? document.body\r\n : el.parentElement;\r\n\r\n parentEl.append(beaconEl);\r\n this.elements.set(beacon, beaconEl);\r\n this.setBeaconPosition(el, beaconEl, beacon);\r\n\r\n // fire observers\r\n this.observeResizing(el);\r\n });\r\n\r\n this.addOnWindowResizeListener();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n getBeacons() {\r\n return this.beacons;\r\n }\r\n\r\n getBeacon(id, def) {\r\n const [beacon] =\r\n id && typeof id === \"object\"\r\n ? [id]\r\n : this.beacons.filter((v) => v.id === id);\r\n return beacon || def;\r\n }\r\n\r\n getDataBeacons(ids) {\r\n const beaconsIds =\r\n typeof ids === \"string\" ? ids.split(\",\").map((v) => v.trim()) : ids;\r\n\r\n let beaconsSelector = [`[${this.constructor.getBeaconDataPrefix()}]`];\r\n\r\n if (beaconsIds) {\r\n beaconsSelector = [];\r\n\r\n beaconsIds.forEach((id) => {\r\n beaconsSelector.push(\r\n `[${this.constructor.getBeaconDataPrefix()}*='${id}']`\r\n );\r\n });\r\n }\r\n\r\n const beaconsEl = Array.from(\r\n document.querySelectorAll(beaconsSelector.join(\",\"))\r\n );\r\n const dataGlobalRegExp = new RegExp(\r\n `^${this.constructor.getBeaconDataPrefix()}-([^-]+)$`\r\n );\r\n\r\n const beacons = [];\r\n\r\n beaconsEl.forEach((el) => {\r\n const { value: beaconsIdsAttrValue } =\r\n el.attributes[this.constructor.getBeaconDataPrefix()];\r\n\r\n if (!beaconsIdsAttrValue) {\r\n return;\r\n }\r\n\r\n const elBeaconsIds = beaconsIdsAttrValue.split(\",\");\r\n\r\n elBeaconsIds.forEach((id) => {\r\n if (beaconsIds && !beaconsIds.includes(id)) {\r\n return;\r\n }\r\n\r\n const globalBeaconAttrs = {};\r\n const beaconAttrs = {};\r\n\r\n const dataBeaconRegExp = new RegExp(\r\n `^${this.constructor.getBeaconDataPrefix()}-${id}-([^-]+)$`\r\n );\r\n\r\n // parse attributes\r\n for (let j = 0; j < el.attributes.length; j++) {\r\n const { name: attrName, value: attrValue } = el.attributes[j];\r\n\r\n const isGlobalAttr = dataGlobalRegExp.test(attrName);\r\n const isBeaconAttr = dataBeaconRegExp.test(attrName);\r\n\r\n if (isGlobalAttr) {\r\n const [, shortAttrName] = attrName.match(dataGlobalRegExp);\r\n\r\n globalBeaconAttrs[shortAttrName] = attrValue;\r\n } else if (isBeaconAttr) {\r\n const [, shortAttrName] = attrName.match(dataBeaconRegExp);\r\n\r\n beaconAttrs[shortAttrName] = attrValue;\r\n }\r\n }\r\n\r\n const beacon = {\r\n id,\r\n position: this.options.position,\r\n ...globalBeaconAttrs,\r\n ...beaconAttrs,\r\n element: el,\r\n };\r\n\r\n // change onclick event\r\n const onClick = beacon.onclick || beacon.onClick;\r\n\r\n if (onClick) {\r\n delete beacon.onclick;\r\n\r\n beacon.onClick = (e) => {\r\n // eslint-disable-next-line no-eval\r\n const onClickCode = eval(onClick);\r\n\r\n if (typeof onClickCode === \"function\") {\r\n onClickCode.call(e, beacon);\r\n }\r\n };\r\n }\r\n\r\n beacons.push(beacon);\r\n });\r\n });\r\n\r\n return beacons;\r\n }\r\n\r\n getJsBeacons(beacons) {\r\n // cast to array\r\n const array = !Array.isArray(beacons) ? [beacons] : beacons;\r\n\r\n return array.map((v, i) => ({ ...v, id: v.id || i }));\r\n }\r\n\r\n getBeaconTpl(data) {\r\n if (data?.triggerMode === TRIGGER_MODE.label || data?.triggerMode === TRIGGER_MODE.noIcon) {\r\n return beaconWithLabel;\r\n }\r\n return beaconTpl;\r\n }\r\n\r\n createBeaconEl(beacon) {\r\n const data = { ...beacon };\r\n data.onClick = (e) => {\r\n e.stopPropagation();\r\n if (beacon.onClick) {\r\n beacon.onClick.call(this, e, beacon);\r\n }\r\n };\r\n\r\n return domTemplate(this.getBeaconTpl(data), { beacon: data });\r\n }\r\n\r\n getEl(selector) {\r\n return selector instanceof HTMLElement\r\n ? selector\r\n : document.querySelector(selector);\r\n }\r\n\r\n iconType(type) {\r\n switch (type) {\r\n case \"help\":\r\n return `url(https://i.ibb.co/1tTctTQP/helpIcon.png)`;\r\n case \"info\":\r\n return `url(https://i.ibb.co/g20HNY0/infoIcon.png)`;\r\n case \"warning\":\r\n return `url(https://i.ibb.co/XrbmwHFp/warning-Icon.png)`;\r\n default:\r\n return `url(https://i.ibb.co/ccYMGHZR/beacon-Icon.png)`;\r\n }\r\n }\r\n\r\n setBeaconPosition(el, beaconEl, options = {}) {\r\n let { position, boundary } = options;\r\n const { triggerIcon, triggerLabel, triggerMode } = options;\r\n position = position || this.options.position;\r\n boundary = boundary || this.options.boundary;\r\n boundary = boundary === \"inner\" ? \"inner\" : \"outer\";\r\n\r\n const elRect = el.getBoundingClientRect();\r\n const isFixed = beaconEl.classList.contains(this.constructor.getFixedClass());\r\n \r\n let elLeft, elTop;\r\n if (isFixed) {\r\n elLeft = elRect.left;\r\n elTop = elRect.top;\r\n } else {\r\n const parentRect = beaconEl.parentElement.getBoundingClientRect();\r\n elLeft = elRect.left - parentRect.left;\r\n elTop = elRect.top - parentRect.top;\r\n }\r\n \r\n const elWidth = elRect.width;\r\n const elHeight = elRect.height;\r\n \r\n const { style: beaconStyle } = beaconEl;\r\n let { width: beaconWidth, height: beaconHeight } =\r\n getComputedStyle(beaconEl);\r\n\r\n beaconWidth = parseInt(beaconWidth, 10);\r\n beaconHeight = parseInt(beaconHeight, 10);\r\n\r\n beaconEl.removeAttribute(\"data-beacon-position\");\r\n beaconEl.removeAttribute(\"data-beacon-boundary\");\r\n\r\n beaconEl.setAttribute(\"data-beacon-position\", position);\r\n beaconEl.setAttribute(\"data-beacon-boundary\", boundary);\r\n\r\n if(triggerMode === TRIGGER_MODE.icon) {\r\n beaconStyle.backgroundImage = this.iconType(triggerIcon?.type);\r\n beaconStyle.opacity = triggerIcon?.opacity ?? 1;\r\n beaconStyle.backgroundColor = triggerIcon?.color ?? \"white\";\r\n if (!triggerIcon?.isAnimated) {\r\n beaconEl.classList.add(\"gc-beacon-no-anim\");\r\n }\r\n }\r\n\r\n if(triggerMode === TRIGGER_MODE.label || triggerMode === TRIGGER_MODE.noIcon) {\r\n beaconStyle.opacity = triggerLabel?.opacity ?? 1;\r\n beaconStyle.backgroundColor = triggerLabel?.background ?? \"#fff\";\r\n beaconStyle.color = triggerLabel?.color ?? \"#000\";\r\n const text = triggerMode === TRIGGER_MODE.label ? triggerLabel?.text ?? \"\" : \"\";\r\n beaconEl.setAttribute(\"data-beacon-label\", text);\r\n }\r\n\r\n switch (position) {\r\n case \"top-left\": {\r\n if (boundary === \"inner\") {\r\n beaconStyle.left = `${elLeft}px`;\r\n beaconStyle.top = `${elTop}px`;\r\n } else {\r\n beaconStyle.left = `${elLeft - beaconWidth}px`;\r\n beaconStyle.top = `${elTop - beaconHeight}px`;\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"top\": {\r\n beaconStyle.left = `${elLeft + (elWidth - beaconWidth) / 2}px`;\r\n beaconStyle.top =\r\n boundary === \"inner\" ? `${elTop}px` : `${elTop - beaconHeight}px`;\r\n\r\n break;\r\n }\r\n\r\n case \"top-right\": {\r\n if (boundary === \"inner\") {\r\n beaconStyle.left = `${elWidth + elLeft - beaconWidth}px`;\r\n beaconStyle.top = `${elTop}px`;\r\n } else {\r\n beaconStyle.left = `${elWidth + elLeft}px`;\r\n beaconStyle.top = `${elTop - beaconHeight}px`;\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"left\": {\r\n beaconStyle.left =\r\n boundary === \"inner\" ? `${elLeft}px` : `${elLeft - beaconWidth}px`;\r\n beaconStyle.top = `${elTop + (elHeight - beaconHeight) / 2}px`;\r\n\r\n break;\r\n }\r\n\r\n case \"right\": {\r\n beaconStyle.left =\r\n boundary === \"inner\"\r\n ? `${elLeft + elWidth - beaconWidth}px`\r\n : `${elLeft + elWidth}px`;\r\n beaconStyle.top = `${elTop + (elHeight - beaconHeight) / 2}px`;\r\n\r\n break;\r\n }\r\n\r\n case \"bottom-left\": {\r\n if (boundary === \"inner\") {\r\n beaconStyle.left = `${elLeft}px`;\r\n beaconStyle.top = `${elTop + elHeight - beaconHeight}px`;\r\n } else {\r\n beaconStyle.left = `${elLeft - beaconWidth}px`;\r\n beaconStyle.top = `${elTop + elHeight}px`;\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"bottom\": {\r\n beaconStyle.left = `${elLeft + (elWidth - beaconWidth) / 2}px`;\r\n beaconStyle.top =\r\n boundary === \"inner\"\r\n ? `${elTop + elHeight - beaconHeight}px`\r\n : `${elTop + elHeight}px`;\r\n\r\n break;\r\n }\r\n\r\n case \"bottom-right\": {\r\n if (boundary === \"inner\") {\r\n beaconStyle.left = `${elWidth + elLeft - beaconWidth}px`;\r\n beaconStyle.top = `${elTop + elHeight - beaconHeight}px`;\r\n } else {\r\n beaconStyle.left = `${elWidth + elLeft}px`;\r\n beaconStyle.top = `${elTop + elHeight}px`;\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"center\":\r\n default: {\r\n beaconEl.setAttribute(\"data-beacon-position\", \"center\");\r\n beaconStyle.left = `${elLeft + (elWidth - beaconWidth) / 2}px`;\r\n beaconStyle.top = `${elTop + (elHeight - beaconHeight) / 2}px`;\r\n\r\n break;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n isCanShowBeacon({ canShow }) {\r\n if (canShow !== undefined) {\r\n if (!canShow || (typeof canShow === \"function\" && canShow() === false)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n showAll(force = false) {\r\n this.beacons.forEach((beacon) => {\r\n this.show(beacon, force);\r\n });\r\n\r\n return this;\r\n }\r\n\r\n show(id, force = false) {\r\n const beacon = this.getBeacon(id);\r\n\r\n if (beacon) {\r\n const beaconEl = this.elements.get(beacon);\r\n\r\n if (beaconEl) {\r\n if (force || this.isCanShowBeacon(beacon)) {\r\n beaconEl.hidden = false;\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n hideAll() {\r\n this.beacons.forEach((beacon) => {\r\n this.hide(beacon);\r\n });\r\n\r\n return this;\r\n }\r\n\r\n hide(id) {\r\n const beacon = this.getBeacon(id);\r\n\r\n if (beacon) {\r\n const el = this.elements.get(beacon);\r\n\r\n if (el) {\r\n el.hidden = true;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n removeAll() {\r\n this.beacons.forEach((beacon) => {\r\n this.remove(beacon);\r\n });\r\n\r\n this.beacons = [];\r\n this.unobserveResizeAllElements();\r\n this.removeOnWindowResizeListener();\r\n\r\n return this;\r\n }\r\n\r\n remove(id) {\r\n const beacon = this.getBeacon(id);\r\n\r\n const beaconEl = this.elements.get(beacon);\r\n\r\n if (beaconEl) {\r\n beaconEl.parentNode.removeChild(beaconEl);\r\n const beaconIndex = this.beacons.indexOf(beacon);\r\n\r\n if (beaconIndex !== -1) {\r\n this.beacons.splice(this.beacons.indexOf(beacon), 1);\r\n }\r\n\r\n this.elements.delete(beacon);\r\n\r\n const el = this.getEl(beacon.element);\r\n\r\n if (el) {\r\n this.unobserveResizing(el);\r\n }\r\n }\r\n\r\n if (!this.beacons.length) {\r\n this.removeOnWindowResizeListener();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n refresh() {\r\n this.beacons.forEach((beacon) => {\r\n const { element } = beacon;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n const el = this.getEl(element);\r\n const beaconEl = this.elements.get(beacon);\r\n\r\n if (el && beaconEl) {\r\n this.setBeaconPosition(el, beaconEl, beacon);\r\n }\r\n });\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Add window resize event listener\r\n * @return {this}\r\n */\r\n addOnWindowResizeListener() {\r\n this.cache.set(\"onWindowResizeListener\", this.getOnWindowResizeListener());\r\n window.addEventListener(\r\n \"resize\",\r\n this.cache.get(\"onWindowResizeListener\"),\r\n true\r\n );\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Return on window resize event listener function\r\n * @returns {function}\r\n */\r\n getOnWindowResizeListener() {\r\n return () => this.refresh();\r\n }\r\n\r\n /**\r\n * Remove window resize event listener\r\n * @return {this}\r\n */\r\n removeOnWindowResizeListener() {\r\n if (this.cache.has(\"onWindowResizeListener\")) {\r\n window.removeEventListener(\r\n \"resize\",\r\n this.cache.get(\"onWindowResizeListener\"),\r\n true\r\n );\r\n this.cache.delete(\"onWindowResizeListener\");\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Observe resize step element\r\n * @return {this}\r\n */\r\n observeResizing(el, options = { box: \"border-box\" }) {\r\n const { elementResizeObserver: observer } = this.observers;\r\n\r\n if (observer) {\r\n observer.observe(el, options);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Unobserve resize step element\r\n * @param el\r\n * @return {this}\r\n */\r\n unobserveResizing(el) {\r\n const { elementResizeObserver: observer } = this.observers;\r\n\r\n if (observer) {\r\n observer.unobserve(el);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Unobserve all resize steps elements\r\n * @return {this}\r\n */\r\n unobserveResizeAllElements() {\r\n const { elementResizeObserver: observer } = this.observers;\r\n\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n\r\n return this;\r\n }\r\n}\r\n","export const TRIGGER_EVENTS = {\n onClick: \"onClick\",\n onHover: \"onHover\",\n onPageLoad: \"onPageLoad\",\n onLongPress: \"onLongPress\",\n};\n\nexport const ANIMATION_TYPES = {\n instant: \"instant\",\n fadeIn: \"fadeIn\",\n slide: \"slide\",\n};\n\n\nexport const DISMISSAL_SETTINGS = {\n onOutsideClick: \"onOutsideClick\",\n dismissButtonClickOnly: \"dismissButtonClickOnly\",\n buttonClickOnly: \"buttonClickOnly\",\n};\n\n\nexport const POSITION = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n};\n\n\nexport const ICON_TYPE = {\n help: \"help\",\n info: \"info\",\n warning: \"warning\",\n beacon: \"beacon\",\n};\n\n\nexport const animationMode = (type) => {\n switch (type) {\n case ANIMATION_TYPES.instant:\n return \"none\";\n case ANIMATION_TYPES.fadeIn:\n return \"fadeIn 1s ease-in\";\n case ANIMATION_TYPES.slide:\n return \"slideUp 1s forwards\";\n default:\n return \"none\";\n }\n};\n\nexport const TRIGGER_MODE = {\n icon: \"icon\",\n noIcon: \"noIcon\",\n label: \"label\",\n};\n\n","export default (el) => (el instanceof SVGElement || /^\\[object SVG(.+)Element\\]$/.test(`${el}`));\r\n","export default (el) => /^[object NodeList]$/.test(`${el}`);\n","/**\r\n * Lodash\r\n * @see https://lodash.com/docs\r\n */\r\nimport _isUndefined from 'lodash/isUndefined';\r\nimport _isNull from 'lodash/isNull';\r\n\r\n// utils\r\nimport isHtmlElement from './isHtmlElement';\r\nimport isSvgElement from './isSvgElement';\r\nimport isNodeList from './isNodeList';\r\n\r\nexport default (tpl, data = {}) => {\r\n const parser = new DOMParser();\r\n\r\n let template = tpl.replace(/<template/g, '<gc-template');\r\n template = template.replace(/<\\/template/g, '</gc-template');\r\n\r\n const sourceDoc = parser.parseFromString(template, 'text/html');\r\n const renderedDoc = document.implementation.createHTMLDocument();\r\n\r\n const pattern = /{{([^}}]+)?}}/gm;\r\n const eventPattern = /^@(.+)$/;\r\n\r\n const ifEnded = new Map();\r\n\r\n const render = (node, replacements = {}, parent = renderedDoc.body) => {\r\n let handler = parent;\r\n\r\n const keys = Object.keys(replacements);\r\n const values = Object.values(replacements);\r\n\r\n // eslint-disable-next-line no-new-func\r\n const getValue = (key) => (new Function(...keys, `return ${key};`))(...values);\r\n\r\n if (node) {\r\n if (node.nodeType === Node.ELEMENT_NODE) {\r\n if (node.hasAttribute('if')) {\r\n ifEnded.set(node.parentNode, false);\r\n\r\n if (!getValue(node.getAttribute('if'))) {\r\n return;\r\n }\r\n\r\n ifEnded.set(node.parentNode, true);\r\n }\r\n\r\n if (node.hasAttribute('elseif')) {\r\n if (ifEnded.get(node.parentNode) || !getValue(node.getAttribute('elseif'))) {\r\n return;\r\n }\r\n\r\n ifEnded.set(node.parentNode, true);\r\n }\r\n\r\n if (node.hasAttribute('else')) {\r\n if (ifEnded.get(node.parentNode)) {\r\n return;\r\n }\r\n\r\n ifEnded.set(node.parentNode, true);\r\n }\r\n\r\n if (node.hasAttribute('for')) {\r\n const forPieces = node.getAttribute('for').split(' in ');\r\n const [firstPiece, secondPiece] = forPieces;\r\n\r\n node.removeAttribute('for');\r\n\r\n let [param, index] = firstPiece.replace(/\\(|\\)/g, '').split(',');\r\n param = param.trim();\r\n index = (index) ? index.trim() : '';\r\n\r\n const source = getValue(secondPiece.trim());\r\n\r\n const isSourceArray = Array.isArray(source);\r\n\r\n Object.keys(source).forEach((k) => {\r\n const r = { ...replacements, [param]: source[k] };\r\n\r\n if (index) {\r\n r[index] = (isSourceArray) ? parseInt(k, 10) : k;\r\n }\r\n\r\n render(node, r, handler);\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (node !== node.ownerDocument.body && node.tagName !== 'GC-TEMPLATE') {\r\n handler = node.cloneNode();\r\n parent.append(handler);\r\n }\r\n\r\n [...node.attributes].forEach((attr) => {\r\n const { name, value } = attr;\r\n\r\n const eventMatch = eventPattern.exec(name);\r\n\r\n if (eventMatch) {\r\n const [, eventName] = eventMatch;\r\n\r\n // eslint-disable-next-line no-new-func\r\n handler.addEventListener(eventName, (e) => new Function(\r\n ...[...keys, '$event'],\r\n `return ${value}${(/\\(.+\\)/.test(value)) ? '' : '()'};`,\r\n )(...[...values, e]));\r\n\r\n handler.removeAttribute(name);\r\n\r\n return;\r\n }\r\n\r\n let match = pattern.exec(value);\r\n let index = 0;\r\n let rValue = '';\r\n\r\n while (match) {\r\n rValue += value.slice(index, match.index);\r\n\r\n let [replacement, key] = match;\r\n key = key.trim();\r\n\r\n try {\r\n replacement = getValue(key);\r\n\r\n if (_isUndefined(replacement) || _isNull(replacement)) {\r\n replacement = '';\r\n }\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error(e);\r\n }\r\n\r\n rValue += replacement;\r\n\r\n index = match.index + match[0].length;\r\n match = pattern.exec(value);\r\n }\r\n\r\n rValue += value.substr(index, value.length - index);\r\n\r\n if (name === 'html') {\r\n handler.innerHTML = rValue;\r\n handler.removeAttribute(name);\r\n } else if (['if', 'else', 'elseif'].includes(name)) {\r\n handler.removeAttribute(name);\r\n } else {\r\n handler.setAttribute(name, rValue);\r\n }\r\n });\r\n } else if (node.nodeType === Node.TEXT_NODE) {\r\n let match = pattern.exec(node.nodeValue);\r\n\r\n if (match) {\r\n let index = 0;\r\n while (match) {\r\n handler.append(document.createTextNode(node.nodeValue.slice(index, match.index)));\r\n\r\n let [replacement, key] = match;\r\n key = key.trim();\r\n\r\n try {\r\n replacement = getValue(key);\r\n\r\n if (_isUndefined(replacement) || _isNull(replacement)) {\r\n replacement = '';\r\n }\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error(e);\r\n }\r\n\r\n if (isHtmlElement(replacement) || isSvgElement(replacement)) {\r\n handler.append(replacement);\r\n } else if (isNodeList(replacement)) {\r\n replacement.forEach((v) => {\r\n handler.append(v);\r\n });\r\n } else {\r\n handler.append(document.createTextNode(replacement));\r\n }\r\n\r\n index = match.index + match[0].length;\r\n match = pattern.exec(node.nodeValue);\r\n }\r\n\r\n handler.append(document.createTextNode(node.nodeValue.slice(index, node.nodeValue.length)));\r\n } else {\r\n handler.append(node.cloneNode());\r\n }\r\n }\r\n\r\n const { childNodes = [] } = node;\r\n\r\n if (childNodes.length) {\r\n childNodes.forEach((v) => {\r\n render(v, replacements, handler);\r\n });\r\n }\r\n }\r\n };\r\n\r\n render(sourceDoc.body, data, renderedDoc.body);\r\n\r\n return renderedDoc.body.firstElementChild;\r\n};\r\n","export default (el) => (el instanceof HTMLElement || /^\\[object HTML(.+)Element\\]$/.test(`${el}`));\r\n","// Module\nvar code = \"<div class=\\\"gc-beacon {{ beacon.class }}\\\" @click=\\\"beacon.onClick($event)\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-beacon--label {{ beacon.class }}\\\" @click=\\\"beacon.onClick($event)\\\"></div>\";\n// Exports\nexport default code;","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n return value === null;\n}\n\nmodule.exports = isNull;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n while (i < str.length) {\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while (j < str.length) {\n var code = str.charCodeAt(j);\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name)\n throw new TypeError(\"Missing parameter name at \".concat(i));\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \".concat(j));\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \".concat(j));\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \".concat(i));\n if (!pattern)\n throw new TypeError(\"Missing pattern at \".concat(i));\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\".concat(escapeString(options.delimiter || \"/#?\"), \"]+?\");\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \".concat(nextType, \" at \").concat(index, \", expected \").concat(type));\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\".concat(token.pattern, \")$\"), reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not repeat, but got an array\"));\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not be empty\"));\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to be \").concat(typeOfMessage));\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\",\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\".concat(parts.join(\"|\"), \")\"), flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? \"/#?\" : _e, _f = options.endsWith, endsWith = _f === void 0 ? \"\" : _f;\n var endsWithRe = \"[\".concat(escapeString(endsWith), \"]|$\");\n var delimiterRe = \"[\".concat(escapeString(delimiter), \"]\");\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\".concat(prefix, \"((?:\").concat(token.pattern, \")(?:\").concat(suffix).concat(prefix, \"(?:\").concat(token.pattern, \"))*)\").concat(suffix, \")\").concat(mod);\n }\n else {\n route += \"(?:\".concat(prefix, \"(\").concat(token.pattern, \")\").concat(suffix, \")\").concat(token.modifier);\n }\n }\n else {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n route += \"((?:\".concat(token.pattern, \")\").concat(token.modifier, \")\");\n }\n else {\n route += \"(\".concat(token.pattern, \")\").concat(token.modifier);\n }\n }\n }\n else {\n route += \"(?:\".concat(prefix).concat(suffix, \")\").concat(token.modifier);\n }\n }\n }\n if (end) {\n if (!strict)\n route += \"\".concat(delimiterRe, \"?\");\n route += !options.endsWith ? \"$\" : \"(?=\".concat(endsWithRe, \")\");\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n : endToken === undefined;\n if (!strict) {\n route += \"(?:\".concat(delimiterRe, \"(?=\").concat(endsWithRe, \"))?\");\n }\n if (!isEndDelimited) {\n route += \"(?=\".concat(delimiterRe, \"|\").concat(endsWithRe, \")\");\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* eslint-disable class-methods-use-this */\n/**\n * Copyright (C) 2020 Labs64 GmbH\n *\n * This source code is licensed under the European Union Public License, version 1.2\n * located in the LICENSE file\n */\n\n/**\n * Lodash functions\n * @see https://lodash.com/docs\n */\nimport _uniqueId from 'lodash/uniqueId';\n\n// utils\nimport domTemplate from './utils/domTemplate';\nimport isHtmlElement from './utils/isHtmlElement';\n\n// templates\nimport overlayTmpl from './templates/overlay.html';\nimport preloaderTmpl from './templates/preloader.html';\nimport interactionTmpl from './templates/interaction.html';\nimport controlTmpl from './templates/control.html';\nimport tooltipTmpl from './templates/tooltip.html';\nimport progressbarTmpl from './templates/progressbar.html';\nimport titleTmpl from './templates/title.html';\nimport descriptionTmpl from './templates/description.html';\nimport customButtonsTmpl from './templates/custom-buttons.html';\nimport previousTmpl from './templates/previous.html';\nimport paginationTmpl from './templates/pagination.html';\nimport nextTmpl from './templates/next.html';\nimport closeTmpl from './templates/close.html';\nimport copyrightTmpl from './templates/copyright.html';\nimport notificationTmpl from './templates/notification.html';\nimport fakeStepTmpl from './templates/fake-step.html';\nimport { animationMode, DISMISSAL_SETTINGS } from './utils/constants';\n\nexport default class GuideChimp {\n /**\n * GuideChimp constructor\n * @param tour\n * @param options\n */\n constructor(tour, options = {}) {\n Object.defineProperty(this, 'uid', {\n value: _uniqueId(),\n enumerable: false,\n configurable: false,\n writable: false,\n });\n\n this.setDefaults();\n\n this.cache = new Map();\n\n this.listeners = {};\n\n this.observers = {};\n\n this.options = {};\n this.setOptions(options);\n\n this.tour = null;\n this.setTour(tour);\n\n this.notifications = [];\n\n this.elements = new Map();\n\n this.init();\n\n this.actions = {\n onNextStep: this.onNextStep.bind(this),\n onPrevStep: this.onPrevStep.bind(this),\n onCloseStep: this.onCloseStep.bind(this),\n onGotoStep: this.onGotoStep.bind(this),\n };\n\n\n if (document) {\n document.addEventListener(\"click\", (e) => this.handleClick(e));\n }\n\n\n }\n\n /**\n * Called after construction, this hook allows you to add some extra setup\n * logic without having to override the constructor.\n */\n init() {\n\n }\n\n\n handleClick(e) {\n\n const action = e.target.getAttribute(\"data-action\");\n if (action && this.actions[action]) {\n this.actions[action]();\n }\n }\n\n onNextStep() {\n this.next({ event: \"change\" })\n }\n\n onPrevStep() {\n this.previous({ event: \"change\" })\n }\n\n onCloseStep() {\n this.stop({ event: \"change\" })\n }\n onGotoStep(index) {\n this.unobserveStep();\n this.unmountStep();\n this.go(index, true, { event: \"change\" })\n }\n\n\n // options -------------------------\n /**\n * Default options\n * @return {Object}\n */\n static getDefaultOptions() {\n return {\n position: 'bottom',\n useKeyboard: true,\n exitEscape: true,\n exitOverlay: false,\n showPagination: true,\n showNavigation: true,\n showProgressbar: true,\n paginationTheme: 'numbers', // if=\"paginationTheme === 'numbers' || steps.length >= paginationCirclesMaxItems\"\n paginationCirclesMaxItems: 10,\n interaction: true,\n padding: 8,\n scrollPadding: 10,\n scrollBehavior: 'auto',\n apiHost: 'https://ahd-be-jggub5n6qq-em.a.run.app',\n toursRefetchIntervalInSec: 86400,\n helpRefetchIntervalInSec: 86400,\n statsCacheIntervalInSec: 86400,\n };\n }\n\n static getDefaultKeyboardCodes() {\n const escCode = 27;\n const arrowLeftCode = 37;\n const arrowRightCode = 39;\n const enterCode = 13;\n const spaceCode = 32;\n\n return {\n previous: [arrowLeftCode],\n next: [arrowRightCode, enterCode, spaceCode],\n stop: [escCode],\n };\n }\n\n static getEventListenersPriorities() {\n return ['low', 'medium', 'high', 'critical'];\n }\n\n static getBodyClass() {\n return 'gc';\n }\n\n static getLoadingClass() {\n return 'gc-loading';\n }\n\n static getHighlightClass() {\n return 'gc-highlight';\n }\n\n static getFixedClass() {\n return 'gc-fixed';\n }\n\n static getRelativePositionClass() {\n return 'gc-relative';\n }\n\n /**\n * Get element offset\n * @param el\n * @return {{top: number, left: number, width: number, height: number}}\n */\n static getOffset(el) {\n const { body, documentElement, defaultView: view } = el.ownerDocument;\n const scrollTop = view.pageYOffset || documentElement.scrollTop || body.scrollTop;\n const scrollLeft = view.pageXOffset || documentElement.scrollLeft || body.scrollLeft;\n const { top, right, bottom, left, width, height, x, y } = el.getBoundingClientRect();\n return { right, bottom, width, height, x, y, top: top + scrollTop, left: left + scrollLeft };\n }\n\n /**\n * Check if el or his parent has fixed position\n * @param el\n * @return {boolean}\n */\n static isFixed(el) {\n const { parentNode } = el;\n\n if (!parentNode || parentNode.nodeName === 'HTML') {\n return false;\n }\n\n const elStyle = getComputedStyle(el);\n\n if (elStyle.getPropertyValue('position') === 'fixed') {\n return true;\n }\n\n return this.isFixed(parentNode);\n }\n\n setDefaults() {\n this.previousStep = null;\n this.currentStep = null;\n this.nextStep = null;\n this.fromStep = null;\n this.toStep = null;\n\n this.previousStepIndex = -1;\n this.currentStepIndex = -1;\n this.nextStepIndex = -1;\n this.fromStepIndex = -1;\n this.toStepIndex = -1;\n\n this.steps = [];\n\n this.isDisplayed = false;\n\n return this;\n }\n\n /**\n * Set tour name or steps\n * @param tour\n * @return {this}\n */\n setTour(tour, options = {}) {\n this.tour = tour;\n // this.setOptions(options)\n return this;\n }\n\n /**\n * Get tour name or steps\n */\n getTour() {\n return this.tour;\n }\n\n /**\n * Set tour options\n * @param options\n * @return {this}\n */\n setOptions(options) {\n if (!this.options || Object.keys(this.options).length === 0) {\n this.options = { ...this.constructor.getDefaultOptions(), ...options };\n } else {\n this.options = { ...this.options, ...options };\n }\n return this;\n }\n\n /**\n * Get tour options\n */\n getOptions() {\n return this.options;\n }\n\n /**\n * Start tour\n * @param number step number or it index\n * @param useIndex whether to use step number or index\n * @return {Promise<boolean>}\n */\n async start(number = 0, useIndex = true, ...args) {\n this.isDisplayed = true;\n\n this.mountOverlayEl();\n\n this.startPreloader();\n\n // emit start event\n await this.emit('onStart', ...args);\n\n this.stopPreloader();\n\n if (!this.tour || !this.tour.length) {\n this.removeOverlayEl();\n this.isDisplayed = false;\n return false;\n }\n\n this.steps = this.sortSteps(this.getSteps(this.tour));\n\n if (!this.steps.length) {\n this.removeOverlayEl();\n this.isDisplayed = false;\n return false;\n }\n\n // add a class that increase the specificity of the classes\n document.body.classList.add(this.constructor.getBodyClass());\n\n const isStarted = await this.go(number, useIndex, ...args);\n\n this.isDisplayed = isStarted;\n\n document.body.classList.toggle(this.constructor.getBodyClass(), isStarted);\n\n if (isStarted) {\n // turn on keyboard navigation\n if (this.options.useKeyboard) {\n this.addOnKeydownListener();\n }\n\n // on window resize\n this.addOnWindowResizeListener();\n\n // on window scroll\n this.addOnWindowScrollListener();\n }\n\n return isStarted;\n }\n\n /**\n * Go to step\n * @param number step number or it index\n * @param useIndex whether to use step number or index\n * @param args\n * @return {Promise<boolean>}\n */\n async go(number, useIndex = true, ...args) {\n if (!this.isDisplayed || !this.steps.length) {\n return false;\n }\n\n const stepNumber = (useIndex) ? parseInt(number, 10) : number;\n\n if (this.currentStep) {\n // skip if this step is already displayed\n const isSameStep = (useIndex)\n ? (this.currentStepIndex === stepNumber)\n : (this.currentStep.step === stepNumber);\n\n if (isSameStep) {\n return false;\n }\n }\n\n const fromStep = this.currentStep;\n const fromStepIndex = this.currentStepIndex;\n\n const currentStep = (useIndex)\n ? this.steps[stepNumber]\n : this.steps.filter(({ step }) => step === stepNumber)[0];\n\n if (!currentStep) {\n return false;\n }\n\n const currentStepIndex = this.steps.indexOf(currentStep);\n\n const toStep = currentStep;\n const toStepIndex = currentStepIndex;\n\n const { onBeforeChange, onAfterChange } = toStep;\n\n this.startPreloader();\n\n let abort = false;\n\n if (onBeforeChange) {\n if (await Promise.resolve().then(() => onBeforeChange.call(this, toStep, fromStep, ...args)) === false) {\n abort = true;\n }\n }\n\n if ((await this.emit('onBeforeChange', toStep, fromStep, ...args)).some((r) => r === false)) {\n abort = true;\n }\n\n this.stopPreloader();\n\n if (abort) {\n return false;\n }\n if (fromStep) {\n this.unmountStep();\n this.unobserveStep();\n }\n this.beforeChangeStep({ toStep, toStepIndex, currentStep, currentStepIndex, fromStep, fromStepIndex });\n\n this.toStep = toStep;\n this.toStepIndex = toStepIndex;\n\n this.currentStep = currentStep;\n this.currentStepIndex = currentStepIndex;\n\n this.fromStep = fromStep;\n this.fromStepIndex = fromStepIndex;\n\n this.previousStep = this.steps[this.currentStepIndex - 1] || null;\n this.previousStepIndex = (this.previousStep) ? this.currentStepIndex - 1 : -1;\n\n this.nextStep = this.steps[this.currentStepIndex + 1] || null;\n this.nextStepIndex = (this.nextStep) ? this.currentStepIndex + 1 : -1;\n\n const { scrollBehavior } = this.options;\n const { scrollPadding = this.options.scrollPadding } = this.currentStep;\n\n // scroll to element\n this.scrollParentsToStepEl();\n this.scrollTo(this.getStepEl(this.currentStep, true), scrollBehavior, scrollPadding);\n\n this.mountStep();\n\n setTimeout(() => {\n if (this.getEl('tooltip')) {\n this.scrollTo(this.getEl('tooltip'), scrollBehavior, scrollPadding);\n }\n }, 300);\n\n if (onAfterChange) {\n onAfterChange.call(this, this.toStep, this.fromStep, ...args);\n }\n\n this.emit('onAfterChange', this.toStep, this.fromStep, ...args);\n\n return true;\n }\n\n async previous(...args) {\n if (!this.isDisplayed || !this.currentStep || !this.previousStep) {\n return false;\n }\n\n const { onPrevious } = this.currentStep;\n\n this.startPreloader();\n\n if (onPrevious) {\n if (await Promise.resolve()\n .then(() => onPrevious.call(this, this.previousStep, this.currentStep, ...args)) === false) {\n this.stopPreloader();\n return false;\n }\n }\n\n if ((await this.emit('onPrevious', this.previousStep, this.currentStep, ...args)).some((r) => r === false)) {\n this.stopPreloader();\n return false;\n }\n\n this.stopPreloader();\n\n return this.go(this.previousStepIndex, true, ...args);\n }\n\n async next(...args) {\n if (!this.isDisplayed || !this.currentStep || !this.nextStep) {\n return false;\n }\n\n const { type, id, onNext, stepId } = this.currentStep;\n\n this.startPreloader();\n\n if (onNext) {\n if (await Promise.resolve()\n .then(() => onNext.call(this, this.nextStep, this.currentStep, ...args)) === false) {\n this.stopPreloader();\n return false;\n }\n }\n\n if ((await this.emit('onNext', this.nextStep, this.currentStep, ...args)).some((r) => r === false)) {\n this.stopPreloader();\n return false;\n }\n\n this.stopPreloader();\n this.acknowledgeStep(type, id, stepId)\n return this.go(this.nextStepIndex, true, ...args);\n }\n\n async stop(...args) {\n if (!this.isDisplayed) {\n return this;\n }\n const { type, id, stepId } = this.currentStep;\n if (this.currentStepIndex === this.steps.length - 1) {\n this.startPreloader();\n await this.emit('onComplete', ...args);\n this.stopPreloader();\n }\n\n this.startPreloader();\n\n // emit stop event\n await this.emit('onStop', ...args);\n\n this.stopPreloader();\n\n // remove the class that increase the specificity of the classes\n document.body.classList.remove(this.constructor.getBodyClass());\n\n // remove events listeners\n this.removeListeners();\n\n // disconnect observers\n this.unobserveStep();\n\n // remove all layers and keys\n this.unmountStep();\n\n this.removeOverlayEl();\n\n this.cache.clear();\n this.elements.clear();\n\n\n this.setDefaults();\n this.acknowledgeStep(type, id, stepId)\n return this;\n }\n\n getSteps(tour) {\n if (!tour || !tour.length) {\n return [];\n }\n\n return (typeof tour === 'string')\n ? this.getDataSteps(tour)\n : this.getJsSteps(tour);\n }\n\n getDataSteps(tour) {\n const dataPrefix = 'data-guidechimp';\n let tourStepsEl = Array.from(document.querySelectorAll(`[${dataPrefix}-tour*='${tour}']`));\n tourStepsEl = tourStepsEl.filter((v) => {\n const tours = v.getAttribute(`${dataPrefix}-tour`).split(',');\n return tours.includes(this.tour);\n });\n\n const dataTourRegExp = new RegExp(`^${dataPrefix}-${tour}-[^-]+$`);\n const dataGlobalRegExp = new RegExp(`^${dataPrefix}-[^-]+$`);\n\n return tourStepsEl.map((el, i) => {\n const stepAttrs = {};\n\n for (let j = 0; j < el.attributes.length; j++) {\n const { name: attrName, value: attrValue } = el.attributes[j];\n\n const isTourAttr = dataTourRegExp.test(attrName);\n const isGlobalAttr = (isTourAttr) ? false : dataGlobalRegExp.test(attrName);\n\n if (isTourAttr || isGlobalAttr) {\n const attrShortName = (isTourAttr)\n ? attrName.replace(`${dataPrefix}-${tour}-`, '')\n : attrName.replace(`${dataPrefix}-`, '');\n\n if (attrShortName !== 'tour') {\n if (isTourAttr || (isGlobalAttr && !stepAttrs[attrShortName])) {\n stepAttrs[attrShortName] = attrValue;\n }\n }\n }\n }\n\n return {\n step: i,\n title: '',\n description: '',\n position: this.options.position,\n interaction: this.options.interaction,\n ...stepAttrs,\n element: el,\n };\n });\n }\n\n getJsSteps(tour) {\n return tour.map((v, i) => ({ ...v, step: v.step || i }));\n }\n\n sortSteps(steps) {\n const copy = [...steps];\n\n return copy.sort((a, b) => {\n if (a.step < b.step) {\n return -1;\n }\n if (a.step > b.step) {\n return 1;\n }\n return 0;\n });\n }\n\n getStepEl(step) {\n const { element, top, left, width, height, canvasWidth, canvasHeight } = step || {};\n\n if (element) {\n const getEl = (selector, def = null) => {\n try {\n const el = (typeof selector === 'string')\n ? document.querySelector(selector)\n : selector;\n return el || def;\n } catch (error) {\n return def;\n }\n };\n\n let el = getEl(element);\n\n if (!el ||\n el.style.display === 'none' ||\n el.style.visibility === 'hidden' ||\n (el.offsetWidth === 0 && el.offsetHeight === 0)) {\n el = this.getEl('fakeStep') ? this.getEl('fakeStep') : this.mountFakeStepEl();\n }\n\n return el;\n }\n\n if (top !== undefined && left !== undefined && width && height) {\n return this.mountOffsetFakeStepEl({ top, left, width, height, canvasWidth, canvasHeight });\n }\n return this.mountFakeStepEl();\n }\n\n scrollParentsToStepEl() {\n const { scrollPadding = this.options.scrollPadding } = this.currentStep;\n return this.scrollParentsToEl(this.getStepEl(this.currentStep), scrollPadding);\n }\n\n getScrollableParentsEls(el) {\n const parents = [];\n let htmlEl = el;\n\n while (htmlEl && htmlEl !== htmlEl.ownerDocument.body) {\n htmlEl = this.getScrollableParentEl(htmlEl);\n parents.push(htmlEl);\n }\n\n return parents;\n }\n\n getScrollableParentEl(el) {\n const regex = /(auto|scroll)/;\n const elStyle = getComputedStyle(el);\n const elDocument = el.ownerDocument;\n\n const getClosestScrollableParent = (parent) => {\n if (!parent || parent === elDocument.body) {\n return elDocument.body;\n }\n\n const parentStyle = getComputedStyle(parent);\n\n if (elStyle.getPropertyValue('position') === 'fixed'\n && parentStyle.getPropertyValue('position') === 'static') {\n return getClosestScrollableParent(parent.parentElement);\n }\n\n const overflowX = parentStyle.getPropertyValue('overflow-x');\n const overflowY = parentStyle.getPropertyValue('overflow-y');\n\n if (regex.test(overflowX) || regex.test(overflowY)) {\n return parent;\n }\n\n return getClosestScrollableParent(parent.parentElement);\n };\n\n return (elStyle.getPropertyValue('position') === 'fixed')\n ? elDocument.body\n : getClosestScrollableParent(el.parentElement);\n }\n\n scrollParentsToEl(el, scrollPadding = 0) {\n const parents = this.getScrollableParentsEls(el);\n\n parents.forEach((parent) => {\n if (parent !== document.body) {\n // eslint-disable-next-line no-param-reassign\n parent.scrollTop = el.offsetTop - parent.offsetTop - scrollPadding;\n // eslint-disable-next-line no-param-reassign\n parent.scrollLeft = el.offsetLeft - parent.offsetLeft - scrollPadding;\n }\n });\n\n return this;\n }\n\n scrollTo(el, behavior = 'auto', scrollPadding = 0) {\n const { top, bottom, left, right } = el.getBoundingClientRect();\n const { innerWidth, innerHeight } = window;\n\n if (!(left >= 0 && right <= innerWidth)) {\n window.scrollBy({ behavior, left: left - scrollPadding });\n }\n\n if (!(top >= 0 && bottom <= innerHeight)) {\n window.scrollBy({ behavior, top: top - scrollPadding });\n }\n\n return this;\n }\n\n highlightStepEl(animation = false) {\n const el = this.getStepEl(this.currentStep);\n\n const overlay = this.getEl('overlay');\n\n if (overlay) {\n const path = overlay.querySelector('path');\n const animate = path.querySelector('animate');\n\n const hasElement = this.currentStep?.element;\n const hasTop = this.currentStep?.top !== undefined;\n const hasLeft = this.currentStep?.left !== undefined;\n const hasWidth = this.currentStep?.width;\n const hasHeight = this.currentStep?.height;\n\n const isCurrentElFake = this.isEl(el, 'fakeStep');\n const isTopLeftWithDimensions = !hasElement && hasTop && hasLeft && hasWidth && hasHeight;\n\n const to = (isCurrentElFake && !isTopLeftWithDimensions)\n ? this.getOverlayDocumentPath()\n : this.getOverlayStepPath(this.currentStep);\n\n path.setAttribute('d', to);\n\n if (animate) {\n const lock = animate.getAttribute('lock');\n\n if (!lock) {\n animate.setAttribute('from', to);\n animate.setAttribute('to', to);\n }\n\n if (animation) {\n const isFromElFake = this.isEl(this.getStepEl(this.fromStep), 'fakeStep');\n\n const from = (this.fromStep && !isFromElFake && !isCurrentElFake)\n ? this.getOverlayStepPath(this.fromStep)\n : null;\n\n if (from) {\n animate.setAttribute('from', from);\n animate.setAttribute('to', to);\n }\n\n animate.setAttribute('lock', 'true');\n }\n\n animate.onend = () => {\n animate.removeAttribute('lock');\n };\n\n animate.beginElement();\n }\n }\n\n const hasElement = this.currentStep?.element;\n const hasCoordinates = !hasElement &&\n this.currentStep?.top !== undefined &&\n this.currentStep?.left !== undefined &&\n this.currentStep?.width &&\n this.currentStep?.height;\n\n if (!hasCoordinates) {\n const elStyle = getComputedStyle(el);\n\n if (!['absolute', 'relative', 'fixed'].includes(elStyle.getPropertyValue('position'))) {\n el.classList.add(this.constructor.getRelativePositionClass());\n }\n\n el.classList.add(this.constructor.getHighlightClass());\n }\n\n el.setAttribute(`data-guidechimp-${this.uid}`, 'highlight');\n this.elements.set('highlight', el);\n\n return this;\n }\n\n resetHighlightStepEl() {\n const overlay = this.getEl('overlay');\n\n if (overlay) {\n const path = overlay.querySelector('path');\n const animate = overlay.querySelector('animate');\n\n path.setAttribute('d', this.getOverlayDocumentPath());\n\n if (animate) {\n animate.removeAttribute('from');\n animate.removeAttribute('to');\n }\n }\n\n const el = this.getStepEl(this.currentStep);\n\n const hasElement = this.currentStep?.element;\n const hasCoordinates = !hasElement &&\n this.currentStep?.top !== undefined &&\n this.currentStep?.left !== undefined &&\n this.currentStep?.width &&\n this.currentStep?.height;\n\n if (!hasCoordinates) {\n el.classList.remove(this.constructor.getRelativePositionClass());\n el.classList.remove(this.constructor.getHighlightClass());\n }\n\n el.removeAttribute(`data-guidechimp-${this.uid}`);\n this.elements.delete('highlight');\n\n return this;\n }\n\n setInteractionPosition(interactionEl) {\n const hasElement = this.currentStep?.element;\n const hasTop = this.currentStep?.top !== undefined;\n const hasLeft = this.currentStep?.left !== undefined;\n const hasWidth = this.currentStep?.width;\n const hasHeight = this.currentStep?.height;\n\n if (!hasElement && hasTop && hasLeft && hasWidth && hasHeight) {\n if (!interactionEl) {\n return this;\n }\n\n let { padding } = this.options;\n\n const convertToPx = (value, axis) => {\n if (typeof value === 'string' && value.trim().endsWith('%')) {\n const percentage = parseFloat(value) || 0;\n return (axis === 'x')\n ? (percentage / 100) * window.innerWidth\n : (percentage / 100) * window.innerHeight;\n }\n return typeof value === 'number' ? value : parseFloat(value) || 0;\n };\n\n const top = convertToPx(this.currentStep.top, 'y');\n const left = convertToPx(this.currentStep.left, 'x');\n const width = convertToPx(this.currentStep.width, 'x');\n const height = convertToPx(this.currentStep.height, 'y');\n\n const { style } = interactionEl;\n\n style.cssText = `position: fixed;\n width: ${width + padding}px;\n height: ${height + padding}px;\n top: ${top - (padding / 2)}px;\n left: ${left - (padding / 2)}px;\n z-index: 6403;`;\n\n return this;\n }\n\n const el = this.getStepEl(this.currentStep);\n\n if (!interactionEl || !el) {\n return this;\n }\n\n let { padding } = this.options;\n\n const elStyle = getComputedStyle(el);\n\n if (elStyle.getPropertyValue('position') === 'floating') {\n padding = 0;\n }\n\n const { width, height, top, left } = this.constructor.getOffset(el);\n\n interactionEl.classList.toggle(this.constructor.getFixedClass(), this.constructor.isFixed(el));\n\n const { style } = interactionEl;\n\n style.cssText = `width: ${width + padding}px;\n height: ${height + padding}px;\n top: ${top - (padding / 2)}px;\n left: ${left - (padding / 2)}px;`;\n\n return this;\n }\n\n setControlPosition(controlEl) {\n const hasElement = this.currentStep?.element;\n const hasTop = this.currentStep?.top !== undefined;\n const hasLeft = this.currentStep?.left !== undefined;\n const hasWidth = this.currentStep?.width;\n const hasHeight = this.currentStep?.height;\n\n if (!hasElement && hasTop && hasLeft && hasWidth && hasHeight) {\n if (!controlEl) {\n return this;\n }\n\n const { style } = controlEl;\n style.position = 'fixed';\n style.width = 'auto';\n style.height = 'auto';\n style.top = '0';\n style.left = '0';\n style.right = '0';\n style.bottom = '0';\n style.pointerEvents = 'auto';\n style.visibility = 'visible';\n\n return this;\n }\n\n const el = this.getStepEl(this.currentStep);\n if (this.options.type === \"snackbar\") {\n switch (this.currentStep.position) {\n case \"top\": {\n el.style.top = 0;\n break;\n }\n case \"topRight\": {\n el.style.top = \"100px\";\n el.style.left = \"400px\";\n\n controlEl.style.top = \"100px\";\n controlEl.style.left = \"400px\";\n\n }\n }\n }\n if (!controlEl || !el) {\n return this;\n }\n\n let { padding } = this.options;\n\n const elStyle = getComputedStyle(el);\n\n if (elStyle.getPropertyValue('position') === 'floating') {\n padding = 0;\n }\n\n const { pageXOffset } = el.ownerDocument.defaultView;\n const { width: docElWidth } = el.ownerDocument.documentElement.getBoundingClientRect();\n const { height: elHeight, top: elTop, left: elLeft, right: elRight } = this.constructor.getOffset(el);\n\n const height = elHeight + padding;\n const top = elTop - (padding / 2);\n const left = (pageXOffset < pageXOffset + (elLeft - (padding / 2))) ? pageXOffset : (elLeft - (padding / 2));\n const width = (pageXOffset + docElWidth > pageXOffset + (elRight + (padding / 2)))\n ? docElWidth\n : (elRight + (padding / 2));\n\n controlEl.classList.toggle(this.constructor.getFixedClass(), this.constructor.isFixed(el));\n const { style } = controlEl;\n style.cssText = `width: ${width}px;\n height: ${height}px;\n top: ${top}px;\n left: ${left}px;`;\n\n return this;\n }\n\n setTooltipPosition(tooltipEl, options = {}) {\n if (!this.currentStep) {\n return this;\n }\n\n if (!tooltipEl) {\n return this;\n }\n\n const clampToViewport = (el, pad = 12, depth = 0) => {\n if (!el) return;\n try {\n const elStyleCheck = el.style || {};\n if (elStyleCheck.transform && elStyleCheck.transform.indexOf('translate(-50%') !== -1) {\n return;\n }\n } catch (err) {\n console.log(err)\n }\n const gutter = Math.max(pad, 12);\n const { innerWidth, innerHeight } = window;\n const { width, height, left, top } = el.getBoundingClientRect();\n\n let newLeft = left;\n let newTop = top;\n let changed = false;\n\n if (left < gutter) {\n newLeft = gutter;\n changed = true;\n } else if (left + width > innerWidth - gutter) {\n newLeft = Math.max(gutter, innerWidth - gutter - width);\n changed = true;\n }\n\n if (top < gutter) {\n newTop = gutter;\n changed = true;\n } else if (top + height > innerHeight - gutter) {\n newTop = Math.max(gutter, innerHeight - gutter - height);\n changed = true;\n }\n\n const s = el.style;\n if (!s.top || s.top === 'auto') {\n s.top = `${top}px`;\n changed = true;\n }\n if (!s.left || s.left === 'auto') {\n s.left = `${left}px`;\n changed = true;\n }\n\n if (changed) {\n s.right = 'auto';\n s.bottom = 'auto';\n s.transform = 'none';\n s.left = `${newLeft}px`;\n s.top = `${newTop}px`;\n }\n\n if (depth < 2) {\n requestAnimationFrame(() => {\n const { width: w2, height: h2, left: l2, top: t2 } = el.getBoundingClientRect();\n if (\n l2 < gutter ||\n l2 + w2 > innerWidth - gutter ||\n t2 < gutter ||\n t2 + h2 > innerHeight - gutter\n ) {\n clampToViewport(el, gutter, depth + 1);\n }\n });\n setTimeout(() => clampToViewport(el, gutter, depth + 1), 50);\n }\n };\n\n let { boundary, position: pos } = options;\n let { padding } = this.options;\n\n boundary = boundary || window;\n\n pos = pos || this.currentStep.position;\n pos = pos || this.options.position;\n\n let [position, alignment] = pos.split('-');\n\n const { style: tooltipStyle } = tooltipEl;\n\n tooltipStyle.top = null;\n tooltipStyle.right = null;\n tooltipStyle.bottom = null;\n tooltipStyle.left = null;\n tooltipStyle.transform = null;\n tooltipStyle.animation = null;\n tooltipStyle.position = null;\n tooltipStyle.visibility = \"hidden\";\n setTimeout(() => {\n tooltipStyle.visibility = \"visible\";\n }, this.currentStep.delay || 1000);\n\n\n const overlayEls = document.getElementsByClassName(\"gc-overlay\");\n\n if (overlayEls.length > 0) {\n const overlayEl = overlayEls[0];\n if (this.currentStep && !this.currentStep.isBackdrop) {\n overlayEl.classList.remove(\"gc-overlay-hidden\");\n } else {\n overlayEl.classList.add(\"gc-overlay-hidden\");\n }\n }\n\n if (this.currentStep?.dismissalSetting === DISMISSAL_SETTINGS.dismissButtonClickOnly\n || this.currentStep?.dismissalSetting === DISMISSAL_SETTINGS.buttonClickOnly\n ) {\n this.setOptions({\n exitOverlay: false,\n })\n } else {\n this.setOptions({\n exitOverlay: true,\n })\n }\n\n if (this.currentStep?.dismissalSetting === DISMISSAL_SETTINGS.onOutsideClick) {\n this.setOptions({\n exitOverlay: true,\n })\n }\n\n const hasElement = this.currentStep.element;\n const hasTop = this.currentStep?.top !== undefined;\n const hasLeft = this.currentStep?.left !== undefined;\n const hasWidth = this.currentStep?.width;\n const hasHeight = this.currentStep?.height;\n\n if (!hasElement && hasTop && hasLeft && hasWidth && hasHeight) {\n tooltipEl.setAttribute('data-guidechimp-position', 'top-left');\n tooltipStyle.position = 'fixed';\n tooltipStyle.zIndex = '10000';\n tooltipStyle.visibility = 'visible';\n tooltipStyle.pointerEvents = 'auto';\n const parsePct = (v, axis) => {\n if (typeof v === 'string' && v.trim().endsWith('%')) {\n const pct = parseFloat(v) || 0;\n const px = (axis === 'x') ? (pct / 100) * window.innerWidth : (pct / 100) * window.innerHeight;\n return { isPct: true, pct, px, raw: v.trim() };\n }\n const px = (typeof v === 'number') ? v : parseFloat(v) || 0;\n return { isPct: false, px, raw: `${px}px` };\n };\n\n const topInfo = parsePct(this.currentStep.top, 'y');\n const leftInfo = parsePct(this.currentStep.left, 'x');\n const widthInfo = parsePct(this.currentStep.width, 'x');\n const heightInfo = parsePct(this.currentStep.height, 'y');\n const widthPx = widthInfo.px;\n const heightPx = heightInfo.px;\n\n const { padding } = this.options;\n const { height: tooltipHeight, width: tooltipWidth } = tooltipEl.getBoundingClientRect();\n\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n const spaceRight = viewportWidth - (leftInfo.px + widthPx);\n const spaceLeft = leftInfo.px;\n const spaceBottom = viewportHeight - (topInfo.px + heightPx);\n const spaceTop = topInfo.px;\n\n\n tooltipStyle.top = 'auto';\n tooltipStyle.left = 'auto';\n tooltipStyle.right = 'auto';\n tooltipStyle.bottom = 'auto';\n tooltipStyle.transform = 'none';\n\n\n let configuredPosition = this.currentStep.position || pos || 'right';\n\n const canFitTop = spaceTop >= tooltipHeight + padding;\n const canFitBottom = spaceBottom >= tooltipHeight + padding;\n const canFitLeft = spaceLeft >= tooltipWidth + padding;\n const canFitRight = spaceRight >= tooltipWidth + padding;\n\n if (!canFitTop && !canFitBottom && !canFitLeft && !canFitRight) {\n const maxSpace = Math.max(spaceTop, spaceBottom, spaceLeft, spaceRight);\n if (maxSpace === spaceRight) configuredPosition = 'right';\n else if (maxSpace === spaceBottom) configuredPosition = 'bottom';\n else if (maxSpace === spaceLeft) configuredPosition = 'left';\n else configuredPosition = 'top';\n } else {\n switch (configuredPosition) {\n case 'top':\n case 'top-left':\n case 'top-right':\n if (!canFitTop) {\n if (canFitBottom) configuredPosition = 'bottom';\n else if (canFitRight) configuredPosition = 'right';\n else if (canFitLeft) configuredPosition = 'left';\n }\n break;\n case 'bottom':\n case 'bottom-left':\n case 'bottom-right':\n if (!canFitBottom) {\n if (canFitTop) configuredPosition = 'top';\n else if (canFitRight) configuredPosition = 'right';\n else if (canFitLeft) configuredPosition = 'left';\n }\n break;\n case 'left':\n if (!canFitLeft) {\n if (canFitRight) configuredPosition = 'right';\n else if (canFitBottom) configuredPosition = 'bottom';\n else if (canFitTop) configuredPosition = 'top';\n }\n break;\n case 'right':\n if (!canFitRight) {\n if (canFitLeft) configuredPosition = 'left';\n else if (canFitBottom) configuredPosition = 'bottom';\n else if (canFitTop) configuredPosition = 'top';\n }\n break;\n }\n }\n switch (configuredPosition) {\n case 'top':\n position = 'top';\n tooltipStyle.bottom = `${viewportHeight - topInfo.px + padding}px`;\n tooltipStyle.left = `${leftInfo.px + (widthPx / 2) - (tooltipWidth / 2)}px`;\n break;\n case 'top-left':\n position = 'top-left';\n tooltipStyle.top = `${topInfo.px - tooltipHeight - padding}px`;\n tooltipStyle.right = `${viewportWidth - leftInfo.px + padding}px`;\n\n break;\n case 'top-right':\n position = 'top-right';\n tooltipStyle.top = `${topInfo.px - tooltipHeight - padding}px`;\n tooltipStyle.left = `${leftInfo.px + widthPx + padding}px`;\n break;\n case 'bottom':\n position = 'bottom';\n tooltipStyle.top = `${topInfo.px + heightPx + padding}px`;\n tooltipStyle.left = `${leftInfo.px + (widthPx / 2) - (tooltipWidth / 2)}px`;\n break;\n case 'bottom-left':\n position = 'bottom-left';\n \n tooltipStyle.top = `${topInfo.px + heightPx + padding}px`;\n tooltipStyle.right = `${viewportWidth - leftInfo.px + padding}px`;\n break;\n case 'bottom-right':\n position = 'bottom-right';\n tooltipStyle.top = `${topInfo.px + heightPx + padding}px`;\n tooltipStyle.left = `${leftInfo.px + widthPx + padding}px`;\n break;\n case 'left':\n position = 'left';\n tooltipStyle.top = `${topInfo.px + (heightPx / 2) - (tooltipHeight / 2)}px`;\n tooltipStyle.left = `${Math.max(0, leftInfo.px - tooltipWidth - padding)}px`;\n break;\n case 'center':\n position = 'center';\n tooltipStyle.top = `${topInfo.px + (heightPx / 2) - (tooltipHeight / 2)}px`;\n tooltipStyle.left = `${leftInfo.px + (widthPx / 2) - (tooltipWidth / 2)}px`;\n break;\n case 'right':\n default:\n position = 'right';\n tooltipStyle.top = `${topInfo.px + (heightPx / 2) - (tooltipHeight / 2)}px`;\n tooltipStyle.left = `${leftInfo.px + widthPx + padding}px`;\n break;\n }\n\n const clamp = (v, a, b) => Math.max(a, Math.min(v, b));\n\n let computedTop = null;\n if (tooltipStyle.top && tooltipStyle.top !== 'auto') {\n computedTop = parseFloat(tooltipStyle.top) || 0;\n } else if (tooltipStyle.bottom && tooltipStyle.bottom !== 'auto') {\n const bottomPx = parseFloat(tooltipStyle.bottom) || 0;\n computedTop = viewportHeight - bottomPx - tooltipHeight;\n }\n\n let computedLeft = null;\n if (tooltipStyle.left && tooltipStyle.left !== 'auto') {\n computedLeft = parseFloat(tooltipStyle.left) || 0;\n } else if (tooltipStyle.right && tooltipStyle.right !== 'auto') {\n const rightPx = parseFloat(tooltipStyle.right) || 0;\n computedLeft = viewportWidth - rightPx - tooltipWidth;\n }\n\n const pad = Math.max(20, padding || 0);\n if (computedTop !== null) {\n const clampedTop = clamp(computedTop, pad, Math.max(pad, viewportHeight - tooltipHeight - pad));\n tooltipStyle.top = `${clampedTop}px`;\n tooltipStyle.bottom = 'auto';\n }\n if (computedLeft !== null) {\n const clampedLeft = clamp(computedLeft, pad, Math.max(pad, viewportWidth - tooltipWidth - pad));\n tooltipStyle.left = `${clampedLeft}px`;\n tooltipStyle.right = 'auto';\n }\n\n tooltipEl.setAttribute('data-guidechimp-position', `${position}`);\n\n if (overlayEls.length > 0) {\n const overlayEl = overlayEls[0];\n if (this.currentStep && this.currentStep.isBackdrop) {\n overlayEl.classList.remove(\"gc-overlay-hidden\");\n } else {\n overlayEl.classList.add(\"gc-overlay-hidden\");\n }\n }\n\n if (this.currentStep.animationType) {\n tooltipStyle.animation = animationMode(this.currentStep.animationType);\n }\n\n clampToViewport(tooltipEl, padding);\n return this;\n } else if (!hasElement && (hasTop || hasLeft)) {\n tooltipEl.setAttribute('data-guidechimp-position', 'top-left');\n tooltipStyle.position = 'fixed';\n tooltipStyle.zIndex = '10000';\n tooltipStyle.visibility = 'visible';\n\n if (hasTop) {\n const topVal = this.currentStep.top;\n let topPx;\n if (typeof topVal === 'string' && topVal.trim().endsWith('%')) {\n topPx = (parseFloat(topVal) || 0) / 100 * window.innerHeight;\n } else {\n topPx = (typeof topVal === 'number') ? topVal : parseFloat(topVal) || 0;\n }\n tooltipStyle.top = `${topPx}px`;\n }\n if (hasLeft) {\n const leftVal = this.currentStep.left;\n let leftPx;\n if (typeof leftVal === 'string' && leftVal.trim().endsWith('%')) {\n leftPx = (parseFloat(leftVal) || 0) / 100 * window.innerWidth;\n } else {\n leftPx = (typeof leftVal === 'number') ? leftVal : parseFloat(leftVal) || 0;\n }\n tooltipStyle.left = `${leftPx}px`;\n }\n\n if (overlayEls.length > 0) {\n const overlayEl = overlayEls[0];\n if (this.currentStep && this.currentStep.isBackdrop) {\n overlayEl.classList.remove(\"gc-overlay-hidden\");\n } else {\n overlayEl.classList.add(\"gc-overlay-hidden\");\n }\n }\n\n if (this.currentStep.animationType) {\n tooltipStyle.animation = animationMode(this.currentStep.animationType);\n }\n\n clampToViewport(tooltipEl, padding);\n return this;\n } else if (!hasElement && !hasTop && !hasLeft) {\n tooltipEl.setAttribute('data-guidechimp-position', 'floating');\n tooltipStyle.position = 'fixed';\n tooltipStyle.left = '50%';\n tooltipStyle.top = '50%';\n tooltipStyle.transform = 'translate(-50%, -50%)';\n tooltipStyle.zIndex = '10000';\n tooltipStyle.visibility = 'visible';\n\n if (overlayEls.length > 0) {\n const overlayEl = overlayEls[0];\n if (!overlayEl.classList.contains(\"gc-overlay-hidden\")) {\n overlayEl.classList.add(\"gc-overlay-hidden\");\n }\n }\n\n if (this.currentStep.animationType) {\n tooltipStyle.animation = animationMode(this.currentStep.animationType);\n }\n\n clampToViewport(tooltipEl, padding);\n return this;\n } else {\n const el = this.getStepEl(this.currentStep);\n\n if (!el) {\n return this;\n }\n\n const elStyle = getComputedStyle(el);\n\n if (elStyle.getPropertyValue('position') === 'floating') {\n padding = 0;\n }\n\n const isFakeOrNotFound = this.isEl(el, 'fakeStep');\n\n if (isFakeOrNotFound) {\n tooltipEl.setAttribute('data-guidechimp-position', 'floating');\n tooltipStyle.position = 'fixed';\n tooltipStyle.left = '50%';\n tooltipStyle.top = '50%';\n tooltipStyle.transform = 'translate(-50%, -50%)';\n tooltipStyle.zIndex = '10000';\n tooltipStyle.visibility = 'visible';\n\n if (overlayEls.length > 0) {\n const overlayEl = overlayEls[0];\n if (this.currentStep && !this.currentStep.isBackdrop) {\n overlayEl.classList.remove(\"gc-overlay-hidden\");\n } else {\n overlayEl.classList.add(\"gc-overlay-hidden\");\n }\n }\n\n if (this.currentStep.animationType) {\n tooltipStyle.animation = animationMode(this.currentStep.animationType);\n }\n\n clampToViewport(tooltipEl, padding);\n return this;\n }\n\n const {\n top: elTop,\n bottom: elBottom,\n left: elLeft,\n right: elRight,\n width: elWidth,\n height: elHeight,\n } = el.getBoundingClientRect();\n\n const { height: tooltipHeight, width: tooltipWith } = tooltipEl.getBoundingClientRect();\n\n const cloneTooltip = tooltipEl.cloneNode(true);\n cloneTooltip.style.visibility = 'hidden';\n cloneTooltip.innerHTML = '';\n\n tooltipEl.parentElement.appendChild(cloneTooltip);\n\n const { width: minTooltipWidth } = cloneTooltip.getBoundingClientRect();\n\n cloneTooltip.parentElement.removeChild(cloneTooltip);\n\n let boundaryRect = new DOMRect(0, 0, window.innerWidth, window.innerHeight);\n\n if (!(boundary instanceof Window)) {\n const { x, y } = boundary.getBoundingClientRect();\n boundaryRect = new DOMRect(x, y, boundary.scrollWidth, boundary.scrollHeight);\n }\n\n const {\n top: boundaryTop,\n bottom: boundaryBottom,\n left: boundaryLeft,\n right: boundaryRight,\n } = boundaryRect;\n if (this.isEl(el, 'fakeStep')) {\n position = 'floating';\n } else {\n const positions = ['bottom', 'right', 'left', 'top'];\n let {\n marginTop: tooltipMarginTop,\n marginLeft: tooltipMarginLeft,\n marginRight: tooltipMarginRight,\n marginBottom: tooltipMarginBottom,\n } = getComputedStyle(tooltipEl);\n\n tooltipMarginTop = parseInt(tooltipMarginTop, 10);\n tooltipMarginLeft = parseInt(tooltipMarginLeft, 10);\n tooltipMarginRight = parseInt(tooltipMarginRight, 10);\n tooltipMarginBottom = parseInt(tooltipMarginBottom, 10);\n\n if (tooltipHeight + tooltipMarginTop + tooltipMarginBottom > (elTop - boundaryTop)) {\n positions.splice(positions.indexOf('top'), 1);\n }\n\n if (tooltipHeight + tooltipMarginTop + tooltipMarginBottom > boundaryBottom - elBottom) {\n positions.splice(positions.indexOf('bottom'), 1);\n }\n\n if (minTooltipWidth + tooltipMarginLeft + tooltipMarginRight > elLeft - boundaryLeft) {\n positions.splice(positions.indexOf('left'), 1);\n }\n\n if (minTooltipWidth + tooltipMarginLeft + tooltipMarginRight > boundaryRight - elRight) {\n positions.splice(positions.indexOf('right'), 1);\n }\n\n if (positions.length) {\n position = positions.includes(position) ? position : positions[0];\n } else {\n position = 'floating';\n }\n\n if (position === 'top' || position === 'bottom') {\n const alignments = ['left', 'right', 'middle'];\n\n if (boundaryRight - elLeft < minTooltipWidth) {\n alignments.splice(alignments.indexOf('left'), 1);\n }\n\n if (elRight - boundaryLeft < minTooltipWidth) {\n alignments.splice(alignments.indexOf('right'), 1);\n }\n\n if (((elLeft + (elWidth / 2)) - boundaryLeft) < (minTooltipWidth / 2)\n || (boundaryRight - (elRight - (elWidth / 2))) < (minTooltipWidth / 2)) {\n alignments.splice(alignments.indexOf('middle'), 1);\n }\n\n if (alignments.length) {\n alignment = alignments.includes(alignment) ? alignment : alignments[0];\n } else {\n alignment = 'middle';\n }\n }\n }\n\n tooltipEl.setAttribute('data-guidechimp-position', position);\n\n const root = document.documentElement;\n\n if (this.currentStep.animationType) {\n tooltipStyle.animation = animationMode(this.currentStep.animationType);\n }\n\n if (this.options.type === \"snackbar\") {\n switch (this.currentStep.position) {\n case 'top': {\n tooltipStyle.top = `${0 + padding}px`;\n break;\n }\n }\n } else {\n const spaceTop = elTop - boundaryTop;\n const spaceBottom = boundaryBottom - elBottom;\n const requiredSpace = tooltipHeight + tooltipMarginTop + tooltipMarginBottom + padding;\n const canCenterVertically = spaceTop >= requiredSpace && spaceBottom >= requiredSpace;\n\n switch (position) {\n case 'top':\n if (canCenterVertically) {\n tooltipStyle.top = `${elTop + (elHeight / 2) - (tooltipHeight / 2)}px`;\n tooltipStyle.bottom = 'auto';\n } else {\n tooltipStyle.bottom = `${elHeight + padding}px`;\n }\n break;\n case 'right':\n tooltipStyle.left = `${(elRight + (padding / 2)) - root.clientLeft}px`;\n tooltipStyle.top = `${elTop + (elHeight / 2) - (tooltipHeight / 2)}px`;\n tooltipStyle.bottom = 'auto';\n break;\n case 'left':\n tooltipStyle.right = `${root.clientWidth - (elLeft - (padding / 2))}px`;\n tooltipStyle.top = `${elTop + (elHeight / 2) - (tooltipHeight / 2)}px`;\n tooltipStyle.bottom = 'auto';\n break;\n case 'bottom':\n if (canCenterVertically) {\n tooltipStyle.top = `${elTop + (elHeight / 2) - (tooltipHeight / 2)}px`;\n tooltipStyle.bottom = 'auto';\n } else {\n tooltipStyle.top = `${elHeight + padding}px`;\n }\n break;\n default: {\n\n tooltipStyle.left = '50%';\n tooltipStyle.top = '50%';\n tooltipStyle.transform = 'translate(-50%,-50%)';\n\n }\n }\n }\n tooltipEl.removeAttribute('data-guidechimp-alignment');\n\n if (alignment) {\n tooltipEl.setAttribute('data-guidechimp-alignment', alignment);\n switch (alignment) {\n case 'left': {\n tooltipStyle.left = `${elLeft - (padding / 2)}px`;\n break;\n }\n case 'right': {\n tooltipStyle.right = `${root.clientWidth - elRight - (padding / 2)}px`;\n break;\n }\n default: {\n if ((elLeft + (elWidth / 2)) < (tooltipWith / 2)\n || (elLeft + (elWidth / 2) + (tooltipWith / 2)) > root.clientWidth) {\n tooltipStyle.left = `${((root.clientWidth) / 2) - (tooltipWith / 2)}px`;\n } else {\n tooltipStyle.left = `${elLeft + (elWidth / 2) - (tooltipWith / 2)}px`;\n }\n }\n }\n }\n }\n\n clampToViewport(tooltipEl, padding);\n return this;\n }\n\n startPreloader() {\n document.body.classList.add(this.constructor.getLoadingClass());\n\n const overlay = this.getEl('overlay');\n\n if (overlay) {\n const path = overlay.querySelector('path');\n const animate = overlay.querySelector('animate');\n\n const preloaderCache = new Map();\n preloaderCache.set('d', path.getAttribute('d'));\n\n path.setAttribute('d', this.getOverlayDocumentPath());\n\n if (animate) {\n preloaderCache.set('from', animate.getAttribute('from'));\n preloaderCache.set('to', animate.getAttribute('to'));\n\n animate.removeAttribute('from');\n animate.removeAttribute('to');\n }\n\n this.cache.set('preloaderCache', preloaderCache);\n }\n\n const preloader = this.mountPreloaderEl();\n preloader.hidden = true;\n\n setTimeout(() => {\n preloader.hidden = false;\n }, 100);\n\n return this;\n }\n\n stopPreloader() {\n document.body.classList.remove(this.constructor.getLoadingClass());\n\n const overlay = this.getEl('overlay');\n\n if (overlay) {\n const path = overlay.querySelector('path');\n const animate = overlay.querySelector('animate');\n\n const preloaderCache = this.cache.get('preloaderCache') || new Map();\n\n if (preloaderCache.has('d')) {\n path.setAttribute('d', preloaderCache.get('d'));\n }\n\n if (animate) {\n if (preloaderCache.has('from')) {\n animate.setAttribute('from', preloaderCache.get('from'));\n }\n\n if (preloaderCache.has('to')) {\n animate.setAttribute('to', preloaderCache.get('to'));\n }\n }\n\n this.cache.delete('preloaderCache');\n }\n\n this.removePreloaderEl();\n return this;\n }\n\n getDefaultTmplData() {\n return {\n previousStep: this.previousStep,\n currentStep: this.currentStep,\n nextStep: this.nextStep,\n fromStep: this.fromStep,\n toStep: this.toStep,\n\n previousStepIndex: this.previousStepIndex,\n currentStepIndex: this.currentStepIndex,\n nextStepIndex: this.nextStepIndex,\n fromStepIndex: this.fromStepIndex,\n toStepIndex: this.toStepIndex,\n\n steps: this.steps,\n\n go: (...args) => this.go(...args),\n previous: (...args) => this.previous(...args),\n next: (...args) => this.next(...args),\n stop: (...args) => this.stop(...args),\n };\n }\n\n mountStep() {\n const interactionEl = this.mountInteractionEl();\n const controlEl = this.mountControlEl();\n\n this.setInteractionPosition(interactionEl);\n this.setControlPosition(controlEl);\n this.setTooltipPosition(this.getEl('tooltip'));\n\n this.observeStep();\n\n this.highlightStepEl(true);\n\n return this;\n }\n\n unmountStep() {\n this.resetHighlightStepEl();\n\n this.removeInteractionEl();\n this.removeControlEl();\n this.removePreloaderEl();\n this.removeFakeStepEl();\n\n return this;\n }\n\n createEl(name, tmpl, data = {}) {\n const el = domTemplate(tmpl, data);\n\n if (el) {\n el.setAttribute(`data-quidechimp-${this.uid}`, name);\n }\n\n return el;\n }\n\n getEl(key, def = null) {\n let el = this.elements.get(key);\n\n if (!el) {\n el = document.querySelector(`[data-quidechimp-${this.uid}=\"${key}\"]`);\n }\n\n return el || def;\n }\n\n mountEl(el, parent) {\n if (el) {\n const els = el.querySelectorAll(`[data-quidechimp-${this.uid}]`);\n\n [el, ...els].forEach((v) => {\n const key = v.getAttribute(`data-quidechimp-${this.uid}`);\n if (key) {\n this.removeEl(key);\n this.elements.set(key, v);\n }\n });\n\n parent.appendChild(el);\n }\n\n return el;\n }\n\n removeEl(key) {\n const el = this.getEl(key);\n\n if (el) {\n if (el.parentElement && typeof el.parentElement.removeChild === 'function') {\n el.parentElement.removeChild(el);\n } else if (typeof el.remove === 'function') {\n el.remove();\n }\n }\n\n this.elements.delete(key);\n\n return this;\n }\n\n isEl(el, key) {\n return (this.getEl(key))\n ? el === this.getEl(key)\n : el.getAttribute(`data-quidechimp-${this.uid}`) === key;\n }\n\n getFakeStepTmpl() {\n return fakeStepTmpl;\n }\n\n createFakeStepEl(data = {}) {\n return this.createEl('fakeStep', this.getFakeStepTmpl(), { ...this.getDefaultTmplData(), ...data });\n }\n\n mountFakeStepEl(data = {}) {\n return this.mountEl(this.createFakeStepEl(data), document.body);\n }\n\n removeFakeStepEl() {\n return this.removeEl('fakeStep');\n }\n\n mountOffsetFakeStepEl(data = {}) {\n const { top, left, width, height, canvasWidth, canvasHeight } = data;\n\n this.removeFakeStepEl();\n\n const fakeEl = this.createFakeStepEl(data);\n\n if (fakeEl && top !== undefined && left !== undefined && width && height) {\n const refWidth = canvasWidth || window.innerWidth;\n const refHeight = canvasHeight || window.innerHeight;\n\n let topPx;\n let leftPx;\n let widthPx;\n let heightPx;\n\n if (typeof top === 'string' && top.trim().endsWith('%')) {\n topPx = (parseFloat(top) || 0) / 100 * refHeight;\n } else if (typeof top === 'number') {\n topPx = top;\n } else {\n topPx = parseFloat(top) || 0;\n }\n\n if (typeof left === 'string' && left.trim().endsWith('%')) {\n leftPx = (parseFloat(left) || 0) / 100 * refWidth;\n } else if (typeof left === 'number') {\n leftPx = left;\n } else {\n leftPx = parseFloat(left) || 0;\n }\n\n if (typeof width === 'string' && width.trim().endsWith('%')) {\n widthPx = (parseFloat(width) || 0) / 100 * refWidth;\n } else if (typeof width === 'number') {\n widthPx = width;\n } else {\n widthPx = parseFloat(width) || 0;\n }\n\n if (typeof height === 'string' && height.trim().endsWith('%')) {\n heightPx = (parseFloat(height) || 0) / 100 * refHeight;\n } else if (typeof height === 'number') {\n heightPx = height;\n } else {\n heightPx = parseFloat(height) || 0;\n }\n\n fakeEl.style.cssText = `\n position: fixed !important;\n top: ${topPx}px !important;\n left: ${leftPx}px !important;\n width: ${widthPx}px !important;\n height: ${heightPx}px !important;\n visibility: hidden !important;\n pointer-events: none !important;\n z-index: -1 !important;\n `;\n }\n\n return this.mountEl(fakeEl, document.body);\n }\n\n getPreloaderTmpl() {\n return preloaderTmpl;\n }\n\n createPreloaderEl(data = {}) {\n return this.createEl('preloader', this.getPreloaderTmpl(), data);\n }\n\n mountPreloaderEl(data = {}) {\n return this.mountEl(this.createPreloaderEl(data), document.body);\n }\n\n removePreloaderEl() {\n return this.removeEl('preloader');\n }\n\n getOverlayDocumentPath() {\n const { innerWidth, innerHeight } = window;\n const { body: { scrollWidth, scrollHeight } } = document;\n\n const width = (innerWidth > scrollWidth) ? innerWidth : scrollWidth;\n const height = (innerHeight > scrollHeight) ? innerHeight : scrollHeight;\n\n return `M 0 0 H ${width} V ${height} H 0 V 0 Z`;\n }\n\n getOverlayStepPath(step) {\n const hasElement = step && step.element;\n const hasCoordinates = step && step.top !== undefined && step.left !== undefined && step.width && step.height;\n\n if (!hasElement && hasCoordinates) {\n return this.getOverlayOffsetPath(step);\n }\n return this.getOverlayElPath(this.getStepEl(step));\n }\n\n getOverlayOffsetPath(step) {\n let { padding } = this.options;\n padding = (padding) ? padding / 2 : 0;\n\n const { top, left, width, height } = step;\n\n const convertToPx = (value, axis) => {\n if (typeof value === 'string' && value.trim().endsWith('%')) {\n const percentage = parseFloat(value) || 0;\n return (axis === 'x')\n ? (percentage / 100) * window.innerWidth\n : (percentage / 100) * window.innerHeight;\n }\n return typeof value === 'number' ? value : parseFloat(value) || 0;\n };\n\n const topValue = convertToPx(top, 'y');\n const leftValue = convertToPx(left, 'x');\n const widthValue = convertToPx(width, 'x');\n const heightValue = convertToPx(height, 'y');\n\n const r = 4;\n\n let path = this.getOverlayDocumentPath();\n\n path += `M ${leftValue + r} ${topValue}\n a ${r},${r} 0 0 0 -${r},${r}\n V ${heightValue + topValue - r}\n a ${r},${r} 0 0 0 ${r},${r}\n H ${widthValue + leftValue - r}\n a ${r},${r} 0 0 0 ${r},-${r}\n V ${topValue + r}\n a ${r},${r} 0 0 0 -${r},-${r}Z`;\n\n return path;\n }\n\n getOverlayElPath(el) {\n let { padding } = this.options;\n padding = (padding) ? padding / 2 : 0;\n\n const { left, top, width, height } = el.getBoundingClientRect();\n const r = 4;\n\n let path = this.getOverlayDocumentPath();\n\n const x1 = Math.max(0, left - padding + r);\n const x2 = Math.min(window.innerWidth, width + left + padding - r);\n\n path += `M ${x1} ${top}\n a ${r},${r} 0 0 0 -${r},${r}\n V ${height + top - r}\n a ${r},${r} 0 0 0 ${r},${r}\n H ${x2}\n a ${r},${r} 0 0 0 ${r},-${r}\n V ${top + r}\n a ${r},${r} 0 0 0 -${r},-${r} Z`;\n\n return path;\n }\n\n getOverlayTmpl() {\n return overlayTmpl;\n }\n\n createOverlayEl(data = {}) {\n const defaults = {\n stop: async (...args) => {\n if (this.options.exitOverlay) {\n await this.stop(...args);\n }\n },\n path: this.getOverlayDocumentPath(),\n };\n\n return this.createEl('overlay', this.getOverlayTmpl(), { ...defaults, ...data });\n }\n\n mountOverlayEl(data = {}) {\n return this.mountEl(this.createOverlayEl(data), document.body);\n }\n\n removeOverlayEl() {\n return this.removeEl('overlay');\n }\n\n getInteractionTmpl() {\n return interactionTmpl;\n }\n\n createInteractionEl(data = {}) {\n let { interaction } = this.options;\n\n if (typeof this.currentStep.interaction === 'boolean') {\n interaction = this.currentStep.interaction;\n }\n\n const defaults = {\n ...this.getDefaultTmplData(),\n interaction,\n };\n\n return this.createEl('interaction', this.getInteractionTmpl(), { ...defaults, ...data });\n }\n\n mountInteractionEl(data = {}) {\n return this.mountEl(this.createInteractionEl(data), document.body);\n }\n\n removeInteractionEl() {\n return this.removeEl('interaction');\n }\n\n getControlTmpl() {\n return controlTmpl;\n }\n\n createControlEl(data = {}) {\n return this.createEl(\n 'control',\n this.getControlTmpl(),\n { ...this.getDefaultTmplData(), tooltipEl: this.createTooltipEl(data), ...data },\n );\n }\n\n mountControlEl(data = {}) {\n return this.mountEl(this.createControlEl(data), document.body);\n }\n\n removeControlEl() {\n return this.removeEl('control');\n }\n\n getTooltipTmpl() {\n return tooltipTmpl;\n }\n\n createTooltipEl(data = {}) {\n const defaults = {\n ...this.getDefaultTmplData(),\n progressbar: this.createProgressbarEl(data),\n // title: this.createTitleEl(data),\n description: this.createDescriptionEl(data),\n close: this.createCloseEl(data),\n customButtons: this.createCustomButtonsEl(data),\n previous: this.createPreviousEl(data),\n pagination: this.createPaginationEl(data),\n next: this.createNextEl(data),\n copyright: this.createCopyrightEl(data),\n notification: this.createNotificationEl(data),\n isCaret: this.currentStep?.isCaret,\n };\n\n return this.createEl('tooltip', this.getTooltipTmpl(), { ...defaults, ...data });\n }\n\n getCloseTmpl() {\n return closeTmpl;\n }\n\n createCloseEl(data = {}) {\n const step = this.currentStep || {};\n let iconCloseColor = step?.iconCloseColor;\n\n if (typeof iconCloseColor !== 'string' || !iconCloseColor.trim()) {\n iconCloseColor = '#000000';\n }\n\n return this.createEl('close', this.getCloseTmpl(), {\n ...this.getDefaultTmplData(),\n iconCloseColor,\n ...data,\n });\n }\n\n getProgressbarTmpl() {\n return progressbarTmpl;\n }\n\n createProgressbarEl(data = {}) {\n let { showProgressbar } = this.options;\n\n if (typeof this.currentStep.showProgressbar === 'boolean') {\n showProgressbar = this.currentStep.showProgressbar;\n }\n\n const progressMax = 100;\n const progressMin = 0;\n const progress = ((this.currentStepIndex + 1) / this.steps.length) * 100;\n\n const defaults = {\n ...this.getDefaultTmplData(),\n showProgressbar,\n progressMax,\n progressMin,\n progress,\n };\n\n return this.createEl('progressbar', this.getProgressbarTmpl(), { ...defaults, ...data });\n }\n\n getTitleTmpl() {\n return titleTmpl;\n }\n\n createTitleEl(data = {}) {\n const { title = '' } = this.currentStep;\n return this.createEl('title', this.getTitleTmpl(), { ...this.getDefaultTmplData(), title, ...data });\n }\n\n getDescriptionTmpl() {\n return descriptionTmpl;\n }\n\n createDescriptionEl(data = {}) {\n const { description = '' } = this.currentStep;\n\n return this.createEl(\n 'description',\n this.getDescriptionTmpl(),\n { ...this.getDefaultTmplData(), description, ...data },\n );\n }\n\n getCustomButtonsTmpl() {\n return customButtonsTmpl;\n }\n\n createCustomButtonsEl(data = {}) {\n const buttons = [];\n\n if (this.currentStep.buttons) {\n this.currentStep.buttons.forEach((button) => {\n let buttonEl = button;\n\n if (!isHtmlElement(buttonEl)) {\n const { onClick, tagName = 'button', title = '', class: className } = button;\n\n buttonEl = document.createElement(tagName);\n buttonEl.innerHTML = title;\n\n if (className) {\n buttonEl.className = className;\n }\n\n if (onClick) {\n buttonEl.addEventListener('click', (e) => {\n onClick.call(this, e);\n });\n }\n }\n\n buttons.push(buttonEl);\n });\n }\n\n return this.createEl(\n 'customButtons',\n this.getCustomButtonsTmpl(),\n { ...this.getDefaultTmplData(), buttons, ...data },\n );\n }\n\n getPaginationTmpl() {\n return paginationTmpl;\n }\n\n createPaginationEl(data = {}) {\n const {\n paginationTheme = this.options.paginationTheme,\n paginationCirclesMaxItems = this.options.paginationCirclesMaxItems,\n } = this.currentStep;\n\n let { showPagination } = this.options;\n\n if (typeof this.currentStep.showPagination === 'boolean') {\n showPagination = this.currentStep.showPagination;\n }\n\n return this.createEl(\n 'pagination',\n this.getPaginationTmpl(),\n {\n ...this.getDefaultTmplData(),\n showPagination,\n paginationTheme,\n paginationCirclesMaxItems,\n ...data,\n },\n );\n }\n\n getPreviousTmpl() {\n return previousTmpl;\n }\n\n createPreviousEl(data = {}) {\n let { showNavigation } = this.options;\n\n if (typeof this.currentStep.showNavigation === 'boolean') {\n showNavigation = this.currentStep.showNavigation;\n }\n\n return this.createEl(\n 'previous',\n this.getPreviousTmpl(),\n { ...this.getDefaultTmplData(), showNavigation, ...data },\n );\n }\n\n getNextTmpl() {\n return nextTmpl;\n }\n\n createNextEl(data = {}) {\n let { showNavigation } = this.options;\n\n if (typeof this.currentStep.showNavigation === 'boolean') {\n showNavigation = this.currentStep.showNavigation;\n }\n\n return this.createEl(\n 'next',\n this.getNextTmpl(),\n { ...this.getDefaultTmplData(), showNavigation, ...data },\n );\n }\n\n getCopyrightTmpl() {\n return copyrightTmpl;\n }\n\n createCopyrightEl(data = {}) {\n return this.createEl('copyright', this.getCopyrightTmpl(), { ...this.getDefaultTmplData(), ...data });\n }\n\n getNotificationTmpl() {\n return notificationTmpl;\n }\n\n createNotificationEl(data = {}) {\n return this.createEl(\n 'notification',\n this.getNotificationTmpl(),\n { ...this.getDefaultTmplData(), messages: this.notifications, ...data },\n );\n }\n\n notify(message) {\n this.notifications.push(message);\n\n const notificationEl = this.getEl('notification');\n\n if (notificationEl) {\n this.mountEl(this.createNotificationEl(), notificationEl.parentElement);\n }\n\n return this;\n }\n\n /**\n * Register an event listener for a tour event.\n *\n * Event names can be comma-separated to register multiple events.\n *\n * @param {string} event The name of the event to listen for.\n * @param {function} listener The event listener, accepts context.\n * @param {object} options Listener options\n * @return {this}\n */\n on(event, listener, options = {}) {\n // priorities from low to high\n const priorities = this.constructor.getEventListenersPriorities();\n\n let [priority] = priorities;\n\n if (options.priority && priorities.includes(options.priority)) {\n priority = options.priority;\n }\n\n const e = event.trim();\n\n this.listeners[e] = this.listeners[e] || {};\n this.listeners[e][priority] = this.listeners[e][priority] || [];\n this.listeners[e][priority].push(listener);\n\n return this;\n }\n\n /**\n * Emits an event by name to all registered listeners on that event.\n * Listeners will be called in the order that they were added. If a listener\n * returns `false`, no other listeners will be called.\n *\n * @param {string} event The name of the event to emit.\n * @param args The context args of the event, passed to listeners.\n * @returns {Promise}\n */\n emit(event, ...args) {\n // from high to low\n const priorities = [...this.constructor.getEventListenersPriorities()].reverse();\n\n const e = event.trim();\n\n let result = [];\n let promise = Promise.resolve(result);\n\n if (this.listeners[e]) {\n priorities.forEach((priority) => {\n const { [priority]: listeners } = this.listeners[e];\n\n if (listeners) {\n promise = promise\n .then(() => Promise.all(\n listeners.map((f) => Promise.resolve().then(() => f.apply(this, args))),\n ))\n .then((r) => {\n result = [...result, ...r];\n return result;\n });\n }\n });\n }\n\n return promise;\n }\n\n /**\n * Add keydown event listener\n * @return {this}\n */\n addOnKeydownListener() {\n // turn on keyboard navigation\n this.cache.set('onKeydownListener', this.getOnKeydownListener());\n window.addEventListener('keydown', this.cache.get('onKeydownListener'), true);\n\n return this;\n }\n\n /**\n * Return on key down event listener function\n * @returns {function}\n */\n getOnKeydownListener() {\n return (event) => {\n const { keyCode } = event;\n\n const { previous: previousCodes, next: nextCodes, stop: stopCodes } = {\n ...this.constructor.getDefaultKeyboardCodes(),\n ...this.options.useKeyboard,\n };\n\n // stop tour\n if (stopCodes && stopCodes.includes(keyCode)) {\n this.stop({ event });\n return;\n }\n\n // go to the previous step\n if (previousCodes && previousCodes.includes(keyCode)) {\n this.previous({ event });\n return;\n }\n\n // go to the next step\n if (nextCodes && nextCodes.includes(keyCode)) {\n this.next({ event });\n }\n };\n }\n\n /**\n * Remove keydown event listener\n * @return {this}\n */\n removeOnKeydownListener() {\n if (this.cache.has('onKeydownListener')) {\n window.removeEventListener('keydown', this.cache.get('onKeydownListener'), true);\n this.cache.delete('onKeydownListener');\n }\n\n return this;\n }\n\n /**\n * Add window resize event listener\n * @return {this}\n */\n addOnWindowResizeListener() {\n // turn on keyboard navigation\n this.cache.set('onWindowResizeListener', this.getOnWindowResizeListener());\n window.addEventListener('resize', this.cache.get('onWindowResizeListener'), true);\n\n return this;\n }\n\n /**\n * Return on window resize event listener function\n * @returns {function}\n */\n getOnWindowResizeListener() {\n return () => this.refresh();\n }\n\n /**\n * Remove window resize event listener\n * @return {this}\n */\n removeOnWindowResizeListener() {\n if (this.cache.has('onWindowResizeListener')) {\n window.removeEventListener('resize', this.cache.get('onWindowResizeListener'), true);\n this.cache.delete('onWindowResizeListener');\n }\n\n return this;\n }\n\n /**\n * Add window scroll event listener\n * @returns {GuideChimp}\n */\n addOnWindowScrollListener() {\n this.cache.set('onWindowScrollListener', this.getOnWindowScrollListener());\n window.addEventListener('scroll', this.cache.get('onWindowScrollListener'), true);\n\n return this;\n }\n\n /**\n * Return on window scroll event listener function\n * @returns {function}\n */\n getOnWindowScrollListener() {\n return () => this.refresh();\n }\n\n /**\n * Remove window resize event listener\n * @return {this}\n */\n removeOnWindowScrollListener() {\n if (this.cache.has('onWindowScrollListener')) {\n window.removeEventListener('scroll', this.cache.get('onWindowScrollListener'), true);\n this.cache.delete('onWindowScrollListener');\n }\n\n return this;\n }\n\n removeListeners() {\n this.removeOnKeydownListener();\n this.removeOnWindowResizeListener();\n this.removeOnWindowScrollListener();\n }\n\n observeStep() {\n this.observeResizing();\n this.observeMutation();\n }\n\n observeResizing(options = { box: 'border-box' }) {\n let { resizingObserver: observer } = this.observers;\n\n if (!observer && typeof ResizeObserver !== 'undefined') {\n observer = new ResizeObserver(() => {\n if (!this && !this.currentStep) {\n return;\n }\n this.refresh();\n });\n\n this.observers.resizingObserver = observer;\n }\n\n if (observer) {\n // observe elements\n observer.observe(this.getStepEl(this.currentStep), options);\n return true;\n }\n\n return false;\n }\n\n unobserveResizing() {\n const { resizingObserver: observer } = this.observers;\n\n if (observer) {\n observer.disconnect();\n return true;\n }\n\n return false;\n }\n\n observeMutation() {\n let { mutationObserver: observer } = this.observers;\n\n if (!observer) {\n observer = new MutationObserver((mutations) => {\n if (!this && !this.currentStep) {\n return;\n }\n\n const { element } = this.currentStep;\n\n if (!element) {\n return;\n }\n\n let el = this.getStepEl(this.currentStep);\n\n const isElExists = () => el && !this.isEl(el, 'fakeStep');\n\n mutations.forEach((record) => {\n if (isElExists()) {\n if (record.type === 'childList' && record.removedNodes.length) {\n record.removedNodes.forEach((node) => {\n if (node === el || node.contains(el)) {\n el = this.getStepEl(this.currentStep);\n this.scrollParentsToStepEl();\n this.refresh();\n }\n });\n }\n } else if (record.type === 'childList' && record.addedNodes.length) {\n el = this.getStepEl(this.currentStep);\n\n if (isElExists()) {\n this.scrollParentsToStepEl();\n this.refresh();\n }\n }\n });\n });\n\n this.observers.mutationObserver = observer;\n }\n\n observer.observe(this.getStepEl(this.currentStep).ownerDocument.body, {\n childList: true,\n subtree: true,\n });\n\n return true;\n }\n\n unobserveMutation() {\n const { mutationObserver: observer } = this.observers;\n\n if (observer) {\n observer.disconnect();\n return true;\n }\n\n return false;\n }\n\n unobserveStep() {\n this.unobserveResizing();\n this.unobserveMutation();\n }\n\n beforeChangeStep() {\n const currentStep = this.currentStep;\n this.unmountStep();\n this.unobserveStep();\n }\n\n /**\n * Refresh layers position\n * @returns {this}\n */\n refresh() {\n if (!this.currentStep) {\n return this;\n }\n\n this.highlightStepEl();\n\n this.setControlPosition(this.getEl('control'));\n this.setInteractionPosition(this.getEl('interaction'));\n this.setTooltipPosition(this.getEl('tooltip'));\n\n return this;\n }\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseStorageApi } from '../common/base-api';\nvar IS_PERSISENT = false;\nvar MemoryStorage = /** @class */ (function (_super) {\n __extends(MemoryStorage, _super);\n function MemoryStorage() {\n return _super.call(this, IS_PERSISENT) || this;\n }\n return MemoryStorage;\n}(BaseStorageApi));\nvar ms = new MemoryStorage();\nexport { ms as MemoryStorage };\n","// Module\nvar code = \"<div class=\\\"gc-fake-step\\\">Ishaan</div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-preloader\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-overlay\\\" @click=\\\"stop({ event: $event })\\\"> <svg class=\\\"svg-overlay\\\"> <path d=\\\"{{path}}\\\"> <animate attributeName=\\\"d\\\" dur=\\\"200ms\\\"/> </path> </svg> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div if=\\\"!interaction\\\" class=\\\"gc-interaction gc-disable\\\"> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-control\\\"> {{ tooltipEl }} </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-tooltip\\\"> {{ progressbar }} {{ description }} {{ close }} {{ customButtons }} {{ notification }} </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-close\\\" style=\\\"--gc-close-foreground: {{iconCloseColor}};\\\" @click=\\\"stop({ event: $event })\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div if=\\\"showProgressbar\\\" class=\\\"gc-progressbar\\\" role=\\\"progressbar\\\" aria-valuemin=\\\"{{ progressMin }}\\\" aria-valuemax=\\\"{{ progressMax }}\\\" aria-valuenow=\\\"{{ progress }}\\\" style=\\\"width:{{ progress }}%;\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div if=\\\"title\\\" html=\\\"{{ title }}\\\" class=\\\"gc-title\\\"> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div if=\\\"description\\\" html=\\\"{{ description }}\\\" class=\\\"gc-description\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div if=\\\"buttons.length\\\" class=\\\"gc-custom-buttons\\\"> <template for=\\\"button in buttons\\\"> {{ button }} </template> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div if=\\\"showPagination && steps.length > 1\\\" class=\\\"gc-pagination\\\"> <template if=\\\"paginationTheme === 'numbers' || steps.length >= paginationCirclesMaxItems\\\"> <ul class=\\\"gc-pagination-theme-numbers\\\"> <template for=\\\"(step, index) in steps\\\"> <template if=\\\"index === 0\\\"> <li if=\\\"index === currentStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-current gc-pagination-active\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === previousStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-previous\\\" @click=\\\"previous({ event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === nextStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-next\\\" @click=\\\"next({ event: $event })\\\"> {{ index + 1 }} </li> <li else class=\\\"gc-pagination-item\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> </template> <template if=\\\"currentStepIndex < 3\\\"> <template if=\\\"index > 0 && index < 5\\\"> <li if=\\\"index === currentStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-current gc-pagination-active\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === previousStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-previous\\\" @click=\\\"previous({ event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === nextStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-next\\\" @click=\\\"next({ event: $event })\\\"> {{ index + 1 }} </li> <li else class=\\\"gc-pagination-item\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> </template> <li elseif=\\\"index === 5 && index !== steps.length - 1\\\" class=\\\"gc-pagination-dots\\\"> ... </li> </template> <template elseif=\\\"steps.length - currentStepIndex < 5\\\"> <template if=\\\"steps.length - index < 6 && steps.length - 1 !== index\\\"> <li if=\\\"index === currentStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-current gc-pagination-active\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === previousStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-previous\\\" @click=\\\"previous({ event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === nextStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-next\\\" @click=\\\"next({ event: $event })\\\"> {{ index + 1 }} </li> <li else class=\\\"gc-pagination-item\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> </template> <li elseif=\\\"steps.length - index === 6 && index !== 0\\\" class=\\\"gc-pagination-dots\\\"> ... </li> </template> <template else> <li if=\\\"currentStepIndex - index === 3 && index !== 0\\\" class=\\\"gc-pagination-dots\\\"> ... </li> <template elseif=\\\"(currentStepIndex - index >= 0 && currentStepIndex - index < 3)\\n || ( index - currentStepIndex >= 0 && index - currentStepIndex < 3)\\\"> <li if=\\\"index === currentStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-current gc-pagination-active\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === previousStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-previous\\\" @click=\\\"previous({ event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === nextStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-next\\\" @click=\\\"next({ event: $event })\\\"> {{ index + 1 }} </li> <li else class=\\\"gc-pagination-item\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> </template> <li elseif=\\\"index - currentStepIndex === 3 && steps.length -1 !== index\\\" class=\\\"gc-pagination-dots\\\"> ... </li> </template> <template if=\\\"index + 1 === steps.length\\\"> <li if=\\\"index === currentStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-current gc-pagination-active\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === previousStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-previous\\\" @click=\\\"previous({ event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === nextStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-next\\\" @click=\\\"next({ event: $event })\\\"> {{ index + 1 }} </li> <li else class=\\\"gc-pagination-item\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> </template> </template> </ul> </template> <template else> <div class=\\\"gc-pagination-theme-circles\\\"> <template for=\\\"(step, index) in steps\\\"> <div if=\\\"index === currentStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-current gc-pagination-active\\\"></div> <div elseif=\\\"index === previousStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-previous\\\" @click=\\\"previous({ event: $event })\\\"></div> <div elseif=\\\"index === nextStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-next\\\" @click=\\\"next({ event: $event })\\\"></div> <div else class=\\\"gc-pagination-item\\\" @click=\\\"go(index, true, { event: $event })\\\"></div> </template> </div> </template> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-navigation-prev {{ (!previousStep || !showNavigation) ? 'gc-hidden': '' }}\\\" @click=\\\"previous({ event: $event })\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-navigation-next {{ (!nextStep || !showNavigation) ? 'gc-hidden': '' }}\\\" @click=\\\"next({ event: $event })\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-copyright\\\">Made with pagepilot.fabbuilder.com</div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div html=\\\"{{ messages[0] }}\\\" class=\\\"gc-notification\\\"></div>\";\n// Exports\nexport default code;","var BaseStorageApi = /** @class */ (function () {\n function BaseStorageApi(persistent) {\n this.persistent = persistent;\n this._lootBag = {};\n // By default no TTL is set\n this._ttl = null;\n }\n Object.defineProperty(BaseStorageApi.prototype, \"timeoutInSeconds\", {\n /**\n * @public\n * @returns ttl in seconds which applies to all keys that don't\n * have a key-level ttl set.\n */\n get: function () {\n return this._ttl;\n },\n /**\n * @public\n * @param ttlValue - number of seconds to set. applies to all\n * keys that don't have a key-leve ttl set.\n */\n set: function (ttlValue) {\n // Allow null to be set to disable a numeric top-level ttl\n if (ttlValue === null || BaseStorageApi.isPositiveInteger(ttlValue)) {\n this._ttl = ttlValue;\n }\n else {\n throw new Error(\"'\".concat(ttlValue, \"' is not a positive integer required when setting the top-level TTL\"));\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @public\n * @param key - name of key\n * @param val - data to be stored\n * @param keyTimeout - optional key-level ttl in seconds. The key level\n * ttl overrides the global ttl if it had been set.\n */\n BaseStorageApi.prototype.put = function (key, val, keyTimeout) {\n if (keyTimeout === void 0) { keyTimeout = null; }\n if (keyTimeout !== null && !BaseStorageApi.isPositiveInteger(keyTimeout)) {\n throw new Error(\"'\".concat(keyTimeout, \"' is not a positive integer required when setting a key-level TTL\"));\n }\n var item = { v: val, t: this._getNow(), kt: keyTimeout };\n if (this.persistent) {\n localStorage.setItem(key, JSON.stringify(item));\n }\n else {\n this._lootBag[key] = item;\n }\n };\n /**\n * @public\n * @param key - key to access stored data\n * @param defaultValue - optional data if key does not exist.\n * @returns any or null\n */\n BaseStorageApi.prototype.get = function (key, defaultValue) {\n if (defaultValue === void 0) { defaultValue = null; }\n if (this.persistent) { // local storage\n if (key in localStorage) {\n var val = localStorage.getItem(key);\n try {\n var obj = JSON.parse(val);\n if (this._ttl === null && obj.kt === null) {\n return obj.v;\n }\n else {\n if (this._isCacheStale(obj)) {\n this.removeKey(key);\n return defaultValue;\n }\n else {\n return obj.v;\n }\n }\n }\n catch (e) {\n // Invalid JSON format retrieved from localStorage. Per developers'\n // concensus, it was considered better to not throw in this case and\n // instead return either whatever was found in localStorage or the\n // default value.\n return defaultValue === null ? val : defaultValue;\n }\n }\n else {\n return defaultValue;\n }\n }\n else { // in memory\n if (key in this._lootBag) {\n var obj = this._lootBag[key];\n if (this._ttl === null && obj.kt === null) {\n return obj.v;\n }\n else {\n if (this._isCacheStale(obj)) {\n this.removeKey(key);\n return defaultValue;\n }\n else {\n return obj.v;\n }\n }\n }\n else {\n return defaultValue;\n }\n }\n };\n /**\n * @public\n * @param key\n */\n BaseStorageApi.prototype.removeKey = function (key) {\n if (this.persistent) {\n if (key in localStorage) {\n localStorage.removeItem(key);\n }\n }\n else {\n if (key in this._lootBag) {\n delete this._lootBag[key];\n }\n }\n };\n /**\n * @public\n * @param key - key used to store data\n * @returns true if key exists and not stale, false otherwise\n */\n BaseStorageApi.prototype.keyExists = function (key) {\n if (this.persistent) { // local storage\n if (key in localStorage) {\n var val = localStorage.getItem(key);\n try {\n var obj = JSON.parse(val);\n if (this._ttl === null && obj.kt === null) {\n return true;\n }\n else {\n if (this._isCacheStale(obj)) {\n this.removeKey(key);\n return false;\n }\n else {\n return true;\n }\n }\n }\n catch (e) {\n return true;\n }\n }\n else {\n return false;\n }\n }\n else { // in memory\n if (key in this._lootBag) {\n var obj = this._lootBag[key];\n if (this._ttl === null && obj.kt === null) {\n return true;\n }\n else {\n if (this._isCacheStale(obj)) {\n this.removeKey(key);\n return false;\n }\n else {\n return true;\n }\n }\n }\n else {\n return false;\n }\n }\n };\n /**\n * Remove all keys in storage\n * @public\n */\n BaseStorageApi.prototype.clear = function () {\n if (this.persistent) {\n localStorage.clear();\n }\n else {\n this._lootBag = {};\n }\n };\n /**\n * @public\n * @returns list of keys\n */\n BaseStorageApi.prototype.keys = function () {\n return this.persistent ? Object.keys(localStorage) : Object.keys(this._lootBag);\n };\n /**\n * Remove keys that are detected to be stale. Leave other keys intact. This\n * method is executed only if invoked by an explicit call by the developer who\n * uses this library; it is not an automatic garbage collector mechanism.\n * @public\n * @returns list of keys that were deleted\n */\n BaseStorageApi.prototype.runGarbageCollector = function () {\n var garbageKeys = [];\n if (this.persistent) {\n for (var _i = 0, _a = Object.keys(localStorage); _i < _a.length; _i++) {\n var key = _a[_i];\n var val = localStorage.getItem(key);\n try {\n var obj = JSON.parse(val);\n if (!('v' in obj && 't' in obj && 'kt' in obj)) {\n // This object not stored via this module. leave it alone.\n continue;\n }\n if (!(this._ttl === null && obj.kt === null)) {\n if (this._isCacheStale(obj)) {\n localStorage.removeItem(key);\n garbageKeys.push(key);\n }\n }\n }\n catch (e) {\n // skip this item\n }\n }\n }\n else {\n for (var _b = 0, _c = Object.keys(this._lootBag); _b < _c.length; _b++) {\n var key = _c[_b];\n if (!(this._ttl === null && this._lootBag[key].kt === null)) {\n if (this._isCacheStale(this._lootBag[key])) {\n delete this._lootBag[key];\n garbageKeys.push(key);\n }\n }\n }\n }\n return garbageKeys;\n };\n /**\n * @public\n * @returns true if browser's localStorage is available, false otherwise\n */\n BaseStorageApi.prototype.isLocalStorageAvailable = function () {\n var key = new Date().getTime().toString();\n var val = key;\n try {\n localStorage.setItem(key, val);\n localStorage.removeItem(key);\n return true;\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * @private\n * @returns unix time\n */\n BaseStorageApi.prototype._getNow = function () {\n return Math.floor(Date.now() / 1000);\n };\n /**\n * This method is called only when at least one of the timeouts has been set.\n * key timeout has priority. global this._ttl is used only if a key-level\n * timeout hasn't been set.\n *\n * @private\n * @param obj - retrieved data from storage\n * @returns true if key is stale, false otherwise\n */\n BaseStorageApi.prototype._isCacheStale = function (obj) {\n var timestamp = obj.t;\n var timeout = obj.kt === null ? this._ttl : obj.kt;\n return (this._getNow() - timestamp) > timeout;\n };\n /**\n * @private\n * @param n - ostensibly a positive integer\n * @returns true if a positive integer, false otherwise\n */\n BaseStorageApi.isPositiveInteger = function (n) {\n return typeof n === 'number'\n && isFinite(n)\n && Math.floor(n) === n\n && n > 0;\n };\n return BaseStorageApi;\n}());\nexport { BaseStorageApi };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseStorageApi } from '../common/base-api';\nvar IS_PERSISENT = true;\nvar LocalStorage = /** @class */ (function (_super) {\n __extends(LocalStorage, _super);\n function LocalStorage() {\n return _super.call(this, IS_PERSISENT) || this;\n }\n return LocalStorage;\n}(BaseStorageApi));\nvar ls = new LocalStorage();\nexport { ls as LocalStorage };\n","/**\n * Copyright (C) 2020 Labs64 GmbH\n *\n * This source code is licensed under the European Union Public License, version 1.2\n * located in the LICENSE file\n */\nimport Beacons from \"./Beacons\";\nimport \"./assets/style.scss\";\nimport { TRIGGER_EVENTS } from \"../../utils/constants\";\n\nexport default (Class, factory) => {\n // eslint-disable-next-line no-param-reassign\n factory.beacons = (beacons, options = {}) =>\n new (class extends Beacons {\n getDataBeacons(ids) {\n const data = super.getDataBeacons(ids);\n\n data.forEach((beacon) => {\n const { id, element: el } = beacon;\n\n let tour = \"\";\n\n const dataGlobalTourAttrName = `${this.constructor.getBeaconDataPrefix()}-tour`;\n const dataBeaconTourAttrName = `${this.constructor.getBeaconDataPrefix()}-${id}-tour`;\n\n if (el.attributes[dataGlobalTourAttrName]) {\n const { value } = el.attributes[dataGlobalTourAttrName];\n tour = value;\n }\n\n if (el.attributes[dataBeaconTourAttrName]) {\n const { value } = el.attributes[dataBeaconTourAttrName];\n tour = value;\n }\n\n if (tour) {\n // eslint-disable-next-line no-param-reassign\n beacon.tour = tour;\n }\n });\n\n return data;\n }\n\n createGuideInstance(beacon, Class) {\n if (!beacon?.tour) return null;\n\n if (typeof beacon.tour === \"string\" || Array.isArray(beacon.tour)) {\n return new Class(beacon.tour);\n }\n\n if (beacon.tour instanceof Class) {\n return beacon.tour;\n }\n\n if (typeof beacon.tour === \"object\") {\n const { steps, options: tourOptions } = beacon.tour;\n return new Class(steps, tourOptions);\n }\n\n return null;\n }\n\n // Start guide if instance can be created\n runGuide(beacon, GuideClass) {\n const guide = this.createGuideInstance(beacon, GuideClass);\n const hasTooltip = document.querySelector(\".gc-tooltip\") !== null;\n\n if (guide && !hasTooltip) {\n guide.start();\n }\n }\n\n // Attach event listener dynamically based on beacon.trigger\n attachGuideEvent(el, beacon, Class) {\n const trigger = beacon?.trigger;\n const handler = () => this.runGuide(beacon, Class);\n\n switch (trigger) {\n case TRIGGER_EVENTS.onClick:\n el.addEventListener(\"click\", handler);\n break;\n\n case TRIGGER_EVENTS.onHover:\n el.addEventListener(\"mouseenter\", handler);\n break;\n\n case TRIGGER_EVENTS.onLongPress: {\n let pressTimer;\n const startPress = () => (pressTimer = setTimeout(handler, 600));\n const clearPress = () => clearTimeout(pressTimer);\n\n el.addEventListener(\"mousedown\", startPress);\n el.addEventListener(\"mouseup\", clearPress);\n el.addEventListener(\"mouseleave\", clearPress);\n el.addEventListener(\"touchstart\", startPress);\n el.addEventListener(\"touchend\", clearPress);\n break;\n }\n\n case TRIGGER_EVENTS.onPageLoad:\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", handler);\n } else {\n handler();\n }\n break;\n\n default:\n console.warn(`Unsupported trigger: ${trigger}`);\n }\n }\n\n // Creates beacon element and attaches events\n createBeaconEl(beacon) {\n const el = super.createBeaconEl(beacon);\n this.attachGuideEvent(el, beacon, Class);\n return el;\n }\n })(beacons, options);\n};\n","//@ts-nocheck\n// import GuideChimp from \"./GuideChimp\";\n// //import Beacons from \"./plugins/beacons\";\n// import \"./index.scss\";\n// // import Information from \"./plugins/information\";\n// // import Beacons from \"./plugins/beacons\";\n// // class AHDjs {\n// // private guideChimp: any;\n// // private appId: string;\n// // private contextToursMapData: any;\n// // constructor(applicationId: any, tour: any, options: any) {\n// // this.appId = applicationId;\n// // //@ts-ignore\n// // this.guideChimp = new GuideChimp(tour, options);\n\n// // this.guideChimp.prototype = GuideChimp.prototype;\n// // this.guideChimp.plugins = new Set();\n\n// // //@ts-ignore\n// // // this.guideChimp.extend = (plugin, ...args) => {\n// // // if (!this.guideChimp.plugins.has(plugin)) {\n// // // this.guideChimp.plugins.add(plugin);\n// // // plugin(GuideChimp, this.guideChimp, ...args);\n// // // }\n// // // return this.guideChimp;\n// // // };\n\n// // // test beacon extension\n// // // @ts-ignore\n// // const pluginsToLoad = [Beacons, Information];\n// // pluginsToLoad.forEach((pluginClass) => {\n// // const plugin = pluginClass;\n// // if (!this.guideChimp.plugins.has(plugin)) {\n// // this.guideChimp.plugins.add(plugin);\n// // // @ts-ignore\n// // plugin(GuideChimp, this.guideChimp, tour, options);\n// // }\n// // });\n// // }\n\n// // updatePageUrl = async (url: string, refetch: boolean) => {\n// // await this.stop();\n// // // todo: local caching and use https://github.com/pillarjs/path-to-regexp to find exact match\n// // const respons: any = await fetch(\n// // `https://ahd-be-jggub5n6qq-em.a.run.app/api/tenant/${this.appId}/contexttour?filter[isActive]=true`\n// // ).then((res) => res.json());\n\n// // this.contextToursMapData = respons.rows;\n// // //if there is anything to open onload\n// // const onboardTour = respons.rows\n// // .filter((row: any) => !!row.content)\n// // .map((row: any) => {\n// // return {\n// // element: row.selector,\n// // title: row.content.title,\n// // description: row.content.content,\n// // tour: [\n// // {\n// // title: \"Multi Feature\",\n// // description: \"Multi Feature beacon clicked.\",\n// // },\n// // ],\n// // };\n// // });\n// // this.setTour(onboardTour);\n// // this.start();\n// // };\n\n// // setTour = (tour: any) => {\n// // this.guideChimp.setTour(tour);\n// // };\n// // beacons = (...args: any) => {\n// // // @ts-ignore\n// // // this.guideChimp.beacon = new Beacons(...args);\n\n// // const tourBeacons = this.contextToursMapData\n// // .filter((row: any) => !!row.content)\n// // .map((row: any) => {\n// // return {\n// // element: row.selector,\n// // title: row.content.title,\n// // description: row.content.content,\n// // tour: [\n// // {\n// // title: \"BC Multi Feature\",\n// // description: \"BC Multi Feature beacon clicked.\",\n// // },\n// // {\n// // title: \"B2C Multi Feature\",\n// // description: \"B2C Multi Feature beacon clicked.\",\n// // },\n// // ],\n// // };\n// // });\n\n// // const b = this.guideChimp.beacons(tourBeacons);\n// // setTimeout(() => {\n// // b.showAll();\n// // }, 1000);\n// // };\n// // start = (...args: any) => {\n// // this.guideChimp.start(...args);\n// // };\n// // stop = async (...args: any) => {\n// // await this.guideChimp.stop(...args);\n// // };\n// // showInformation = (...args: any) => {\n// // // @ts-ignore\n// // // this.guideChimp.beacon = new Beacons(...args);\n// // const b = this.guideChimp.information(...args);\n// // setTimeout(() => {\n// // b.showAll();\n// // }, 1000);\n// // };\n// // // guideChimp.prototype = GuideChimp.prototype;\n// // // guideChimp.plugins = new Set();\n\n// // // guideChimp.extend = (plugin, ...args) => {\n// // // if (!guideChimp.plugins.has(plugin)) {\n// // // guideChimp.plugins.add(plugin);\n// // // plugin(GuideChimp, guideChimp, ...args);\n// // // }\n// // // return guideChimp;\n// // // };\n\n// // // module.exports = guideChimp;\n// // }\n\n// class AHDjs {\n// private guideChimp;\n// constructor(...args: any) {\n// // @ts-ignore\n// this.guideChimp = new GuideChimp(...args);\n// }\n// public start(...args: any) {\n// this.guideChimp.start(...args);\n// }\n// }\n// export default AHDjs;\n\n/**\n * Copyright (C) 2020 Labs64 GmbH\n *\n * This source code is licensed under the European Union Public License, version 1.2\n * located in the LICENSE file\n */\n\nimport GuideChimp from \"./GuideChimp\";\nimport { LocalStorage } from \"ttl-localstorage\";\nimport Beacons from \"./plugins/beacons\";\n/* ============\n * Styling\n * ============\n *\n * Import the library styling.\n */\nimport \"./index.scss\";\n\nconst { match } = require(\"path-to-regexp\");\n\nconst HELP_DATA_STORAGE_KEY = \"AHD_HELP_DATA\";\nconst TOUR_DATA_STORAGE_KEY = \"AHD_TOUR_DATA\";\nconst APP_BANNER_DATA_STORAGE_KEY = \"APP_BANNER_DATA\";\nconst HIGHLIGHTS_DATA_STORAGE_KEY = \"AHD_HIGHLIGHTS_DATA\";\nconst AHD_VISITOR_STATS_STORAGE_KEY = \"AHD_VISITOR_STATS\";\n\nclass AHD extends GuideChimp {\n constructor(tour, options = {}) {\n\n if (options.userId && !options.visitorId) {\n options.visitorId = options.userId;\n }\n super(tour, options);\n this.attachPlugins();\n }\n\n attachPlugins() {\n const pluginsToLoad = [Beacons];\n pluginsToLoad.forEach((pluginClass) => {\n AHDjs.extend(pluginClass);\n });\n }\n\n async initializeSiteMap(refetch: boolean) {\n let highlightsData = LocalStorage.get(HIGHLIGHTS_DATA_STORAGE_KEY);\n if (!highlightsData || refetch) {\n // highlightsData = await this.fetchAndCacheHighlightsData(highlightsData);\n }\n let toursData = LocalStorage.get(TOUR_DATA_STORAGE_KEY);\n if (!toursData || refetch) {\n toursData = await this.fetchAndCacheTourData(toursData);\n }\n // let helpData = LocalStorage.get(HELP_DATA_STORAGE_KEY);\n // if (!helpData || refetch) {\n // helpData = await this.fetchAndCacheHelpData(helpData);\n // }\n let stats = LocalStorage.get(AHD_VISITOR_STATS_STORAGE_KEY);\n if (!stats || refetch) {\n stats = await this.fetchAndCachePageVisitsData(stats);\n }\n }\n\n async getHelpContent(url: string, refetch: boolean) {\n let helpData = LocalStorage.get(TOUR_DATA_STORAGE_KEY);\n\n if (!helpData || refetch) {\n helpData = await this.fetchAndCacheTourData(helpData);\n }\n\n const applicableHelp = this.getApplicabeDataForUrl(\n helpData,\n url,\n \"help\",\n true\n );\n return applicableHelp;\n }\n\n private normalizeDimension(val: any): string | number | undefined {\n if (val === undefined || val === null) return undefined;\n if (typeof val === 'string') {\n const trimmed = val.trim();\n return trimmed.endsWith('%') ? trimmed : trimmed;\n }\n return typeof val === 'number' ? val : parseInt(val);\n }\n\n async showPageTour(url: string,) {\n await this.stop();\n let toursData = LocalStorage.get(TOUR_DATA_STORAGE_KEY);\n\n const applicableTours = this.getApplicabeDataForUrl(\n toursData.tours,\n url,\n false\n );\n\n if (applicableTours?.length > 0) {\n const stats = LocalStorage.get(AHD_VISITOR_STATS_STORAGE_KEY) || {};\n const visited = stats?.visited || [];\n const nVisited = new Set(visited);\n\n applicableTours.forEach((tour: any) => {\n if (!nVisited.has(tour.slug)) {\n nVisited.add(tour.slug);\n const entityId = tour.id || tour._id;\n this.markPageVisited(tour.slug, \"tour\", entityId);\n }\n });\n\n LocalStorage.put(\n AHD_VISITOR_STATS_STORAGE_KEY,\n { ...stats, visited: [...nVisited] },\n 86400\n );\n\n const onboardTour = applicableTours.flatMap((row: any) =>\n Array.isArray(row.steps)\n ? row.steps\n .filter((step: any) => !!step.content)\n .map((step: any) => ({\n element: step.selector,\n description: step.content,\n position: step.position,\n animationType: step.animationType,\n delay: step.delay,\n isBackdrop: step.isBackdrop,\n isCaret: step.isCaret,\n dismissalSetting: step.dismissalSetting,\n showProgressbar: this.options.showProgressbar,\n width: this.normalizeDimension(step.canvasWidth || step.styles?.width),\n height: this.normalizeDimension(step.canvasHeight || step.styles?.height),\n top: this.normalizeDimension(step.styles?.top || step.top),\n left: this.normalizeDimension(step.styles?.left || step.left),\n stepId: step.id,\n id: row.id,\n type: \"tour\",\n iconCloseColor: step.style?.iconCloseColor ?? step.behaviour?.iconCloseColor,\n }))\n : []\n );\n console.log('Tour', onboardTour);\n this.setTour(onboardTour);\n this.start();\n }\n }\n\n async showAppBanner(url: string, refetch: boolean) {\n let appBannerData = LocalStorage.get(APP_BANNER_DATA_STORAGE_KEY);\n\n if (!appBannerData || refetch) {\n appBannerData = await this.fetchAndCacheBannerData(appBannerData);\n }\n\n return appBannerData;\n }\n\n async fetchFaqs(slug) {\n const response: any = await fetch(\n `${this.options.apiHost}/api/tenant/${this.options.applicationId}/faq-group-list?filter[slug]=${slug}&filter[status]=published&limit=10&orderBy=order_ASC`\n ).then((res) => res.json());\n\n return response;\n }\n\n async showPageBeacons(url: string) {\n await this.stop();\n let toursData = LocalStorage.get(TOUR_DATA_STORAGE_KEY);\n const applicableTours = this.getApplicabeDataForUrl(\n toursData.tooltips,\n url,\n true\n );\n if (applicableTours.length > 0) {\n const stats = LocalStorage.get(AHD_VISITOR_STATS_STORAGE_KEY) || {};\n const visited = stats?.visited || [];\n const nVisited = new Set(visited);\n applicableTours.forEach((tour: any) => {\n if (!nVisited.has(tour.slug)) {\n nVisited.add(tour.slug);\n const entityId = applicableTours[0].id || applicableTours[0]._id;\n this.markPageVisited(tour.slug, \"tooltip\", entityId);\n }\n });\n\n LocalStorage.put(\n AHD_VISITOR_STATS_STORAGE_KEY,\n { ...stats, visited: [...nVisited] },\n 86400\n );\n const beacons = applicableTours.flatMap((tour: any) => {\n const stepsArray = Array.isArray(tour.step) ? tour.step : tour.step ? [tour.step] : [];\n\n return stepsArray\n .filter((step: any) => !!step.content)\n .map((step: any) => {\n const behavior = step.contentMetadata?.document?.root?.data?.behaviour || {};\n\n const tourSteps = [\n {\n element: step.selector,\n title: step.title,\n description: step.content,\n animationType: step.animationType || behavior.animationType || \"fadeIn\",\n delay: step.delay || behavior.delay || 0,\n isBackdrop:\n step.isBackdrop !== undefined\n ? step.isBackdrop\n : behavior.isBackdrop !== undefined\n ? behavior.isBackdrop\n : true,\n isCaret:\n step.isCaret !== undefined\n ? step.isCaret\n : behavior.isCaret !== undefined\n ? behavior.isCaret\n : true,\n position: step.position || behavior.position,\n stepId: step.id,\n id: tour.id,\n type: \"tooltip\",\n },\n ];\n\n const beacon: any = {\n element: step.selector || behavior.selector,\n position: step.position || behavior.position || \"right\",\n boundary: \"outer\",\n class: \"beacon-labs64\",\n triggerMode: step.triggerMode || behavior.triggerMode,\n trigger: step.triggerBehaviour || behavior.triggerBehaviour || \"onClick\",\n tour: tourSteps,\n };\n\n const triggerIconData = step.triggerIcon || behavior.triggerIcon;\n const triggerLabelData = step.triggerLabel || behavior.triggerLabel;\n\n if (beacon.triggerMode === \"icon\" && triggerIconData) {\n let iconType = \"beacon\";\n if (triggerIconData.type === \"info\") iconType = \"info\";\n if (triggerIconData.type === \"success\") iconType = \"success\";\n if (triggerIconData.type === \"warning\") iconType = \"warning\";\n if (triggerIconData.type === \"helpIcon\") iconType = \"helpIcon\";\n\n beacon.triggerIcon = {\n type: iconType,\n color: triggerIconData.color || \"#000000\",\n opacity: triggerIconData.opacity ? triggerIconData.opacity / 100 : 1,\n isAnimated: triggerIconData.isAnimated || false,\n };\n } else if (beacon.triggerMode === \"label\" && triggerLabelData) {\n beacon.triggerLabel = {\n text: triggerLabelData.text,\n color: triggerLabelData.color || \"#000000\",\n background: triggerLabelData.backgroundColor || \"#ffffff\",\n };\n }\n\n return beacon;\n });\n });\n console.log('beacons', beacons);\n\n AHDjs.beacons(beacons, {\n boundary: \"outer\",\n }).showAll();\n }\n }\n async setBeacons(beacons) {\n\n AHDjs.beacons(beacons, {\n boundary: \"outer\",\n }).showAll();\n }\n\n async showHighlights(url: string, refetch: boolean) {\n await this.stop();\n let toursData = LocalStorage.get(TOUR_DATA_STORAGE_KEY);\n if (!toursData || refetch) {\n toursData = await this.fetchAndCacheTourData(toursData, url);\n }\n if (toursData.tours?.length > 0) {\n this.showPageTour(url);\n }\n if (toursData.tooltips?.length > 0) {\n this.showPageBeacons(url);\n }\n }\n\n async showPageHighlights(url: string, refetch: boolean, force = false) {\n await this.stop();\n let highlightsData = LocalStorage.get(HIGHLIGHTS_DATA_STORAGE_KEY);\n\n if (!highlightsData || refetch) {\n // highlightsData = await this.fetchAndCacheHighlightsData(highlightsData);\n }\n const applicableHighlights = this.getUnAcknowledgedHightlightsForUrl(\n highlightsData,\n url,\n \"highlight\",\n force\n );\n\n //if there is anything to open\n const beacons = applicableHighlights.map((row: any) => {\n return {\n element: row.selector,\n position: row.position,\n onClick: async () => {\n this.acknowledgeHighlight(row.id);\n },\n tour: [\n {\n element: row.selector,\n position: row.position,\n title: row.content.title,\n description: this.generateDescription(row.content),\n },\n ],\n };\n });\n\n AHDjs.beacons(beacons, {\n boundary: \"outer\",\n }).showAll();\n }\n\n async clearCachedData() {\n LocalStorage.removeKey(HIGHLIGHTS_DATA_STORAGE_KEY);\n LocalStorage.removeKey(HELP_DATA_STORAGE_KEY);\n LocalStorage.removeKey(TOUR_DATA_STORAGE_KEY);\n LocalStorage.removeKey(AHD_VISITOR_STATS_STORAGE_KEY);\n }\n\n async acknowledgeHighlight(id: string) {\n const stats = LocalStorage.get(AHD_VISITOR_STATS_STORAGE_KEY) || {};\n const acknowledged = stats?.ack || [];\n const nAckonowledged = new Set(acknowledged);\n if (!nAckonowledged.has(id)) {\n nAckonowledged.add(id);\n }\n LocalStorage.put(\n AHD_VISITOR_STATS_STORAGE_KEY,\n { ...stats, ack: [...nAckonowledged] },\n 86400\n );\n this.updateVisitorStats({ ack: [id] }, \"highlight\");\n }\n\n private generateDescription(content: any) {\n let description = content.content || \"\";\n // debugger;\n // if (content.video) {\n // content.video.forEach((vid) => {\n // description += `<br/><video width=\"320\" height=\"240\" controls><source src=\"${vid.downloadUrl}\" type=\"video/mp4\"></video>`;\n // });\n // }\n // if (content.image) {\n // content.image.forEach((img) => {\n // description += `<br/><img width=\"320\" height=\"240\" src=\"${img.downloadUrl}\" />`;\n // });\n // }\n return description;\n }\n\n private getUnAcknowledgedHightlightsForUrl(\n highlightsData: any,\n url: string,\n type: string,\n forceShow = false\n ) {\n // exlude visitied\n const stats = LocalStorage.get(AHD_VISITOR_STATS_STORAGE_KEY) || {};\n const acknowledged = stats?.ack || [];\n return highlightsData.filter((td) => {\n if (forceShow || !acknowledged || !acknowledged.includes(td.id)) {\n const matcher = match(td.slug, { decode: decodeURIComponent });\n const highlightound = matcher(url);\n\n return highlightound;\n }\n return false;\n });\n }\n\n private getApplicabeDataForUrl(\n toursData: any,\n url: string,\n forceShow = false\n ) {\n const stats = LocalStorage.get(AHD_VISITOR_STATS_STORAGE_KEY) || {};\n const visited = stats?.visited || [];\n\n return toursData.filter((td) => {\n const matcher = match(td.slug, { decode: decodeURIComponent });\n const tourFound = matcher(url);\n\n if (!tourFound) {\n return false;\n }\n if (forceShow) {\n return true;\n }\n else {\n return true;\n }\n });\n }\n private async fetchAndCacheHighlightsData(highlightsData: any) {\n const respons: any = await fetch(\n `${this.options.apiHost}/api/tenant/${this.options.applicationId}/client/highlights?filter[isActive]=true`\n ).then((res) => res.json());\n if (respons.rows) {\n highlightsData = respons.rows.filter((row: any) => !!row.content);\n LocalStorage.put(\n HIGHLIGHTS_DATA_STORAGE_KEY,\n highlightsData,\n this.options.highlightRefetchIntervalInSec\n );\n }\n return highlightsData;\n }\n\n private async fetchAndCacheTourData(toursData: any, slug: string) {\n const url = `${this.options.apiHost}/api/tenant/${this.options.applicationId}/client/unacknowledged?filter[slug]=${slug}&filter[userId]=${this.options.visitorId}&filter[device]=desktop`;\n const response: any = await fetch(url).then((res) => res.json());\n if (response) {\n toursData = response;\n LocalStorage.put(\n TOUR_DATA_STORAGE_KEY,\n toursData,\n this.options.toursRefetchIntervalInSec\n );\n\n }\n return toursData;\n }\n\n\n private async fetchAndCacheBannerData(appBannerData: any) {\n const respons: any = await fetch(\n `${this.options.apiHost}/api/tenant/${this.options.applicationId}/client/app-banners?filter[isActive]=true`\n ).then((res) => res.json());\n if (respons.rows) {\n appBannerData = respons.rows.filter((row: any) => !!row.content);\n LocalStorage.put(\n APP_BANNER_DATA_STORAGE_KEY,\n appBannerData,\n this.options.appBannerRefetchIntervalInSec\n );\n }\n return appBannerData;\n }\n\n // private async fetchAndCacheHelpData(helpData: any) {\n // const respons: any = await fetch(\n // `${this.options.apiHost}/api/tenant/${this.options.applicationId}/context-help?filter[isActive]=true`\n // ).then((res) => res.json());\n // if (respons.rows) {\n // helpData = respons.rows.filter((row: any) => !!row.content);\n // LocalStorage.put(\n // HELP_DATA_STORAGE_KEY,\n // helpData,\n // this.options.helpRefetchIntervalInSec\n // );\n // }\n // return helpData;\n // }\n\n private async fetchAndCachePageVisitsData(visits: any) {\n const respons: any = await fetch(\n `${this.options.apiHost}/api/tenant/${this.options.applicationId}/client/stats/${this.options.visitorId}?filter[device]=web`\n ).then((res) => res.json());\n if (respons) {\n LocalStorage.put(\n AHD_VISITOR_STATS_STORAGE_KEY,\n respons,\n this.options.statsCacheIntervalInSec\n );\n }\n return visits;\n }\n\n private async updateVisitorStats(dataToPatch: any, type: string) {\n let visits;\n const respons: any = await fetch(\n `${this.options.apiHost}/api/tenant/${this.options.applicationId}/client/visitor-stats`,\n {\n method: \"POST\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, *cors, same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Content-Type\": \"application/json\",\n // 'Content-Type': 'application/x-www-form-urlencoded',\n },\n redirect: \"follow\", // manual, *follow, error\n referrerPolicy: \"no-referrer\", // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url\n body: JSON.stringify({\n data: {\n dataToPatch,\n visitorId: this.options.visitorId,\n channel: \"web\",\n type,\n },\n }), // body data type must match \"Content-Type\" header\n }\n ).then((res) => res.json());\n if (respons) {\n LocalStorage.put(\n AHD_VISITOR_STATS_STORAGE_KEY,\n respons,\n this.options.visitsCacheIntervalInSec\n );\n }\n return visits;\n }\n\n private async acknowledgeStep(type: string, id: string, stepId: string) {\n // console.log('acknowledgeStep', type, id);\n const requestOptions = {\n method: \"GET\",\n redirect: \"follow\",\n };\n const respons: any = await fetch(\n `${this.options.apiHost}/api/tenant/${this.options.applicationId}/client/acknowledge?userId=${this.options.visitorId}&id=${id}&type=${type}&stepId=${stepId}&device=desktop`,\n requestOptions\n ).then((res) => res.json());\n\n }\n\n private async markPageVisited(slug: string, type: string, entityId: string) {\n let visits;\n const respons: any = await fetch(\n `${this.options.apiHost}/api/tenant/${this.options.applicationId}/visitor-stats`,\n {\n method: \"POST\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, *cors, same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Content-Type\": \"application/json\",\n // 'Content-Type': 'application/x-www-form-urlencoded',\n },\n redirect: \"follow\", // manual, *follow, error\n referrerPolicy: \"no-referrer\", // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url\n body: JSON.stringify({\n data: {\n slug,\n visitorId: this.options.visitorId,\n entityId: entityId,\n channel: \"web\",\n type,\n },\n }), // body data type must match \"Content-Type\" header\n }\n ).then((res) => res.json());\n if (respons) {\n LocalStorage.put(\n AHD_VISITOR_STATS_STORAGE_KEY,\n respons,\n this.options.visitsCacheIntervalInSec\n );\n }\n return visits;\n }\n}\n\nconst AHDjs = (...args) => new AHD(...args);\n\nAHDjs.prototype = AHD.prototype;\nAHDjs.plugins = new Set();\n\nAHDjs.extend = (plugin, ...args) => {\n if (!AHDjs.plugins.has(plugin)) {\n AHDjs.plugins.add(plugin);\n plugin(AHD, AHDjs, ...args);\n }\n return AHDjs;\n};\n\nconst BASE_WIDTH = 1280;\n\nfunction applyGuideChimpScaling() {\n const scale = Math.min(window.innerWidth / BASE_WIDTH, 1);\n\n const originMap: { [key: string]: string } = {\n 'top': 'bottom center',\n 'top-left': 'bottom left',\n 'top-right': 'bottom right',\n 'bottom': 'top center',\n 'bottom-left': 'top left',\n 'bottom-right': 'top right',\n 'left': 'center right',\n 'right': 'center left',\n 'floating': 'center',\n };\n\n document.querySelectorAll('[data-guidechimp-position]').forEach((el) => {\n const position = (el as Element).getAttribute('data-guidechimp-position') || '';\n\n (el as HTMLElement).style.transformOrigin = originMap[position] || 'top left';\n (el as HTMLElement).style.transform = `scale(${scale})`;\n });\n}\n\napplyGuideChimpScaling();\nwindow.addEventListener('resize', applyGuideChimpScaling);\nwindow.addEventListener('load', applyGuideChimpScaling);\n\nexport default AHDjs;\n"],"names":["root","factory","exports","module","define","amd","self","Beacons","beacons","options","this","observers","ResizeObserver","elementResizeObserver","refresh","cache","Map","elements","setOptions","setBeacons","init","constructor","getDefaultOptions","removeAll","Array","isArray","every","v","getDataBeacons","getJsBeacons","length","forEach","beacon","element","el","getEl","beaconEl","createBeaconEl","hidden","isFixed","classList","add","getFixedClass","remove","parentElement","document","body","append","set","setBeaconPosition","observeResizing","addOnWindowResizeListener","id","def","filter","ids","beaconsIds","split","map","trim","beaconsSelector","getBeaconDataPrefix","push","beaconsEl","from","querySelectorAll","join","dataGlobalRegExp","RegExp","beaconsIdsAttrValue","attributes","value","elBeaconsIds","includes","globalBeaconAttrs","beaconAttrs","dataBeaconRegExp","j","attrName","name","attrValue","isGlobalAttr","test","isBeaconAttr","match","shortAttrName","position","onClick","onclick","e","onClickCode","eval","call","i","data","triggerMode","TRIGGER_MODE","beaconWithLabel","beaconTpl","stopPropagation","domTemplate","getBeaconTpl","selector","HTMLElement","querySelector","type","boundary","triggerIcon","triggerLabel","elLeft","elTop","elRect","getBoundingClientRect","contains","left","top","parentRect","elWidth","width","elHeight","height","beaconStyle","style","getComputedStyle","beaconWidth","beaconHeight","parseInt","removeAttribute","setAttribute","backgroundImage","iconType","opacity","backgroundColor","color","isAnimated","background","text","canShow","undefined","force","show","getBeacon","get","isCanShowBeacon","hide","unobserveResizeAllElements","removeOnWindowResizeListener","parentNode","removeChild","indexOf","splice","unobserveResizing","getOnWindowResizeListener","window","addEventListener","has","removeEventListener","box","observer","observe","unobserve","disconnect","nodeName","getPropertyValue","TRIGGER_EVENTS","onHover","onPageLoad","onLongPress","ANIMATION_TYPES","DISMISSAL_SETTINGS","onOutsideClick","dismissButtonClickOnly","buttonClickOnly","animationMode","icon","noIcon","label","SVGElement","tpl","parser","DOMParser","template","replace","sourceDoc","parseFromString","renderedDoc","implementation","createHTMLDocument","pattern","eventPattern","ifEnded","render","node","replacements","parent","handler","keys","Object","values","getValue","key","Function","nodeType","Node","ELEMENT_NODE","hasAttribute","getAttribute","forPieces","firstPiece","secondPiece","param","index","source","isSourceArray","k","r","ownerDocument","tagName","cloneNode","attr","eventMatch","exec","eventName","rValue","slice","replacement","_isUndefined","_isNull","console","error","substr","innerHTML","TEXT_NODE","nodeValue","createTextNode","isHtmlElement","isSvgElement","isNodeList","childNodes","firstElementChild","Symbol","array","iteratee","result","getRawTag","objectToString","symToStringTag","toStringTag","arrayMap","isSymbol","symbolProto","prototype","symbolToString","toString","baseToString","freeGlobal","g","objectProto","hasOwnProperty","nativeObjectToString","isOwn","tag","unmasked","freeSelf","baseGetTag","isObjectLike","idCounter","prefix","parse","str","tokens","char","count","TypeError","concat","code","charCodeAt","lexer","_a","prefixes","defaultPattern","escapeString","delimiter","path","tryConsume","mustConsume","nextType","consumeText","suffix","modifier","name_1","pattern_1","compile","tokensToFunction","reFlags","flags","encode","x","_b","validate","matches","token","optional","repeat","segment","typeOfMessage","String","regexpToFunction","pathToRegexp","re","decode","pathname","m","params","create","_loop_1","sensitive","tokensToRegexp","strict","start","_c","end","_d","_e","_f","endsWith","endsWithRe","delimiterRe","route","_i","tokens_1","mod","endToken","isEndDelimited","groupsRegex","execResult","regexpToRegexp","paths","parts","arrayToRegexp","stringToRegexp","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","globalThis","obj","prop","extendStatics","GuideChimp","tour","_uniqueId","configurable","writable","setDefaults","listeners","setTour","notifications","actions","onNextStep","bind","onPrevStep","onCloseStep","onGotoStep","handleClick","action","target","next","event","previous","stop","unobserveStep","unmountStep","go","previousStep","currentStep","nextStep","fromStep","toStep","previousStepIndex","currentStepIndex","nextStepIndex","fromStepIndex","toStepIndex","steps","isDisplayed","number","useIndex","mountOverlayEl","startPreloader","args","emit","stopPreloader","removeOverlayEl","sortSteps","getSteps","getBodyClass","isStarted","toggle","useKeyboard","addOnKeydownListener","addOnWindowScrollListener","stepNumber","step","onBeforeChange","onAfterChange","abort","Promise","resolve","then","some","beforeChangeStep","scrollBehavior","scrollPadding","scrollParentsToStepEl","scrollTo","getStepEl","mountStep","setTimeout","onPrevious","onNext","stepId","acknowledgeStep","removeListeners","clear","getDataSteps","getJsSteps","dataPrefix","tourStepsEl","dataTourRegExp","stepAttrs","isTourAttr","attrShortName","title","description","interaction","sort","b","canvasWidth","canvasHeight","display","visibility","offsetWidth","offsetHeight","mountFakeStepEl","mountOffsetFakeStepEl","scrollParentsToEl","parents","htmlEl","getScrollableParentEl","regex","elStyle","elDocument","getClosestScrollableParent","parentStyle","overflowX","overflowY","getScrollableParentsEls","scrollTop","offsetTop","scrollLeft","offsetLeft","behavior","bottom","right","innerWidth","innerHeight","scrollBy","animation","overlay","animate","hasElement","hasTop","hasLeft","hasWidth","hasHeight","isCurrentElFake","isEl","isTopLeftWithDimensions","to","getOverlayDocumentPath","getOverlayStepPath","lock","isFromElFake","onend","beginElement","hasCoordinates","getRelativePositionClass","getHighlightClass","uid","interactionEl","padding","convertToPx","axis","percentage","parseFloat","cssText","getOffset","controlEl","pointerEvents","pageXOffset","defaultView","docElWidth","documentElement","elRight","tooltipEl","clampToViewport","pad","depth","elStyleCheck","transform","err","log","gutter","Math","max","newLeft","newTop","changed","s","requestAnimationFrame","w2","h2","l2","t2","pos","alignment","tooltipStyle","delay","overlayEls","getElementsByClassName","overlayEl","isBackdrop","dismissalSetting","exitOverlay","zIndex","parsePct","pct","isPct","px","raw","topInfo","leftInfo","widthInfo","heightInfo","widthPx","heightPx","tooltipHeight","tooltipWidth","viewportWidth","viewportHeight","spaceRight","spaceLeft","spaceBottom","spaceTop","configuredPosition","canFitTop","canFitBottom","canFitLeft","canFitRight","maxSpace","clamp","min","computedTop","bottomPx","computedLeft","rightPx","clampedTop","clampedLeft","animationType","topPx","topVal","leftPx","leftVal","isFakeOrNotFound","elBottom","tooltipWith","cloneTooltip","appendChild","minTooltipWidth","boundaryRect","DOMRect","Window","y","scrollWidth","scrollHeight","boundaryTop","boundaryBottom","boundaryLeft","boundaryRight","positions","tooltipMarginTop","marginTop","tooltipMarginLeft","marginLeft","tooltipMarginRight","marginRight","tooltipMarginBottom","marginBottom","alignments","requiredSpace","canCenterVertically","clientLeft","clientWidth","getLoadingClass","preloaderCache","preloader","mountPreloaderEl","removePreloaderEl","mountInteractionEl","mountControlEl","setInteractionPosition","setControlPosition","setTooltipPosition","observeStep","highlightStepEl","resetHighlightStepEl","removeInteractionEl","removeControlEl","removeFakeStepEl","tmpl","els","removeEl","createEl","getFakeStepTmpl","getDefaultTmplData","mountEl","createFakeStepEl","fakeEl","refWidth","refHeight","getPreloaderTmpl","createPreloaderEl","getOverlayOffsetPath","getOverlayElPath","topValue","leftValue","widthValue","heightValue","x1","x2","defaults","getOverlayTmpl","createOverlayEl","getInteractionTmpl","createInteractionEl","getControlTmpl","createTooltipEl","createControlEl","progressbar","createProgressbarEl","createDescriptionEl","close","createCloseEl","customButtons","createCustomButtonsEl","createPreviousEl","pagination","createPaginationEl","createNextEl","copyright","createCopyrightEl","notification","createNotificationEl","isCaret","getTooltipTmpl","iconCloseColor","getCloseTmpl","showProgressbar","progressMax","progressMin","progress","getProgressbarTmpl","getTitleTmpl","getDescriptionTmpl","buttons","button","buttonEl","className","createElement","getCustomButtonsTmpl","paginationTheme","paginationCirclesMaxItems","showPagination","getPaginationTmpl","showNavigation","getPreviousTmpl","getNextTmpl","getCopyrightTmpl","getNotificationTmpl","messages","message","notificationEl","listener","priorities","getEventListenersPriorities","priority","reverse","promise","all","f","apply","getOnKeydownListener","keyCode","getDefaultKeyboardCodes","previousCodes","nextCodes","stopCodes","getOnWindowScrollListener","removeOnKeydownListener","removeOnWindowScrollListener","observeMutation","resizingObserver","mutationObserver","MutationObserver","mutations","isElExists","record","removedNodes","addedNodes","childList","subtree","unobserveMutation","exitEscape","apiHost","toursRefetchIntervalInSec","helpRefetchIntervalInSec","statsCacheIntervalInSec","view","pageYOffset","BaseStorageApi","persistent","_lootBag","_ttl","ttlValue","isPositiveInteger","Error","put","val","keyTimeout","item","t","_getNow","kt","localStorage","setItem","JSON","stringify","defaultValue","_isCacheStale","removeKey","getItem","removeItem","keyExists","runGarbageCollector","garbageKeys","isLocalStorageAvailable","Date","getTime","ex","floor","now","timestamp","timeout","isFinite","__extends","setPrototypeOf","__proto__","p","__","_super","MemoryStorage","ls","LocalStorage","Class","dataGlobalTourAttrName","dataBeaconTourAttrName","GuideClass","guide","createGuideInstance","hasTooltip","trigger","runGuide","pressTimer","startPress","clearPress","clearTimeout","readyState","warn","attachGuideEvent","require","TOUR_DATA_STORAGE_KEY","APP_BANNER_DATA_STORAGE_KEY","HIGHLIGHTS_DATA_STORAGE_KEY","AHD_VISITOR_STATS_STORAGE_KEY","AHD","userId","visitorId","attachPlugins","pluginClass","AHDjs","extend","refetch","toursData","fetchAndCacheTourData","stats","fetchAndCachePageVisitsData","url","helpData","applicableHelp","getApplicabeDataForUrl","trimmed","applicableTours","tours","visited","nVisited","Set","slug","entityId","_id","markPageVisited","onboardTour","flatMap","row","content","normalizeDimension","styles","behaviour","appBannerData","fetchAndCacheBannerData","fetch","applicationId","res","json","response","tooltips","contentMetadata","tourSteps","class","triggerBehaviour","triggerIconData","triggerLabelData","showAll","showPageTour","showPageBeacons","highlightsData","applicableHighlights","getUnAcknowledgedHightlightsForUrl","acknowledgeHighlight","generateDescription","acknowledged","ack","nAckonowledged","updateVisitorStats","forceShow","td","decodeURIComponent","matcher","respons","rows","highlightRefetchIntervalInSec","appBannerRefetchIntervalInSec","visits","dataToPatch","method","mode","credentials","headers","redirect","referrerPolicy","channel","visitsCacheIntervalInSec","requestOptions","plugins","plugin","applyGuideChimpScaling","scale","originMap","transformOrigin"],"sourceRoot":""}
1
+ {"version":3,"file":"index.js","mappings":"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","sources":["webpack://AHDjs/webpack/universalModuleDefinition","webpack://AHDjs/./src/lib/plugins/beacons/Beacons.js","webpack://AHDjs/./src/lib/utils/constants.js","webpack://AHDjs/./src/lib/utils/isSvgElement.js","webpack://AHDjs/./src/lib/utils/isNodeList.js","webpack://AHDjs/./src/lib/utils/domTemplate.js","webpack://AHDjs/./src/lib/utils/isHtmlElement.js","webpack://AHDjs/./src/lib/plugins/beacons/templates/beacon.html","webpack://AHDjs/./src/lib/plugins/beacons/templates/beaconWithLabel.html","webpack://AHDjs/./node_modules/lodash/_Symbol.js","webpack://AHDjs/./node_modules/lodash/_arrayMap.js","webpack://AHDjs/./node_modules/lodash/_baseGetTag.js","webpack://AHDjs/./node_modules/lodash/_baseToString.js","webpack://AHDjs/./node_modules/lodash/_freeGlobal.js","webpack://AHDjs/./node_modules/lodash/_getRawTag.js","webpack://AHDjs/./node_modules/lodash/_objectToString.js","webpack://AHDjs/./node_modules/lodash/_root.js","webpack://AHDjs/./node_modules/lodash/isArray.js","webpack://AHDjs/./node_modules/lodash/isNull.js","webpack://AHDjs/./node_modules/lodash/isObjectLike.js","webpack://AHDjs/./node_modules/lodash/isSymbol.js","webpack://AHDjs/./node_modules/lodash/isUndefined.js","webpack://AHDjs/./node_modules/lodash/toString.js","webpack://AHDjs/./node_modules/lodash/uniqueId.js","webpack://AHDjs/./node_modules/path-to-regexp/dist.es2015/index.js","webpack://AHDjs/webpack/bootstrap","webpack://AHDjs/webpack/runtime/compat get default export","webpack://AHDjs/webpack/runtime/define property getters","webpack://AHDjs/webpack/runtime/global","webpack://AHDjs/webpack/runtime/hasOwnProperty shorthand","webpack://AHDjs/webpack/runtime/make namespace object","webpack://AHDjs/./src/lib/GuideChimp.js","webpack://AHDjs/./node_modules/ttl-localstorage/dist/components/memorystorage.js","webpack://AHDjs/./src/lib/templates/fake-step.html","webpack://AHDjs/./src/lib/templates/preloader.html","webpack://AHDjs/./src/lib/templates/overlay.html","webpack://AHDjs/./src/lib/templates/interaction.html","webpack://AHDjs/./src/lib/templates/control.html","webpack://AHDjs/./src/lib/templates/tooltip.html","webpack://AHDjs/./src/lib/templates/close.html","webpack://AHDjs/./src/lib/templates/progressbar.html","webpack://AHDjs/./src/lib/templates/title.html","webpack://AHDjs/./src/lib/templates/description.html","webpack://AHDjs/./src/lib/templates/custom-buttons.html","webpack://AHDjs/./src/lib/templates/pagination.html","webpack://AHDjs/./src/lib/templates/previous.html","webpack://AHDjs/./src/lib/templates/next.html","webpack://AHDjs/./src/lib/templates/copyright.html","webpack://AHDjs/./src/lib/templates/notification.html","webpack://AHDjs/./node_modules/ttl-localstorage/dist/common/base-api.js","webpack://AHDjs/./node_modules/ttl-localstorage/dist/components/localstorage.js","webpack://AHDjs/./src/lib/plugins/beacons/index.js","webpack://AHDjs/./src/lib/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"AHDjs\"] = factory();\n\telse\n\t\troot[\"AHDjs\"] = factory();\n})(self, () => {\nreturn ","/* eslint-disable class-methods-use-this */\r\n/**\r\n * Copyright (C) 2020 Labs64 GmbH\r\n *\r\n * This source code is licensed under the European Union Public License, version 1.2\r\n * located in the LICENSE file\r\n */\r\n// utils\r\nimport domTemplate from \"../../utils/domTemplate\";\r\n\r\n// templates\r\nimport beaconTpl from \"./templates/beacon.html\";\r\nimport beaconWithLabel from \"./templates/beaconWithLabel.html\";\r\nimport infoIcon from \"./assets/icons/info.svg\";\r\nimport helpIcon from \"./assets/icons/helpIcon.svg\";\r\nimport warningIcon from \"./assets/icons/warning.svg\";\r\nimport beacon from \"./assets/icons/beacon.svg\";\r\nimport { TRIGGER_MODE } from \"../../utils/constants\";\r\n\r\nexport default class Beacons {\r\n constructor(beacons, options = {}) {\r\n this.beacons = [];\r\n\r\n this.options = {};\r\n\r\n // observers\r\n this.observers = {};\r\n\r\n if (typeof ResizeObserver !== \"undefined\") {\r\n this.observers.elementResizeObserver = new ResizeObserver(() =>\r\n this.refresh()\r\n );\r\n }\r\n\r\n this.cache = new Map();\r\n this.elements = new Map();\r\n\r\n this.setOptions(options);\r\n this.setBeacons(beacons);\r\n\r\n this.init();\r\n }\r\n\r\n /**\r\n * Called after construction, this hook allows you to add some extra setup\r\n * logic without having to override the constructor.\r\n */\r\n init() {}\r\n\r\n /**\r\n * Default options\r\n * @return {Object}\r\n */\r\n static getDefaultOptions() {\r\n return {\r\n position: \"center\",\r\n boundary: \"inner\",\r\n };\r\n }\r\n\r\n static getFixedClass() {\r\n return \"gc-beacon-fixed\";\r\n }\r\n\r\n static getBeaconDataPrefix() {\r\n return \"data-beacon\";\r\n }\r\n\r\n /**\r\n * Check if el or his parent has fixed position\r\n * @param el\r\n * @return {boolean}\r\n */\r\n static isFixed(el) {\r\n const { parentNode } = el;\r\n\r\n if (!parentNode || parentNode.nodeName === \"HTML\") {\r\n return false;\r\n }\r\n\r\n const elStyle = getComputedStyle(el);\r\n\r\n if (elStyle.getPropertyValue(\"position\") === \"fixed\") {\r\n return true;\r\n }\r\n\r\n return this.isFixed(parentNode);\r\n }\r\n\r\n /**\r\n * Set beacons options\r\n * @param options\r\n * @return {this}\r\n */\r\n setOptions(options) {\r\n this.options = { ...this.constructor.getDefaultOptions(), ...options };\r\n return this;\r\n }\r\n\r\n setBeacons(beacons) {\r\n // cleanup for previous beacons\r\n this.removeAll();\r\n\r\n this.beacons =\r\n !beacons ||\r\n typeof beacons === \"string\" ||\r\n (Array.isArray(beacons) && beacons.every((v) => typeof v === \"string\"))\r\n ? this.getDataBeacons(beacons)\r\n : this.getJsBeacons(beacons);\r\n\r\n if (this.beacons.length) {\r\n this.beacons.forEach((beacon) => {\r\n const { element } = beacon;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n const el = this.getEl(element);\r\n\r\n if (!el) {\r\n return;\r\n }\r\n\r\n const beaconEl = this.createBeaconEl(beacon);\r\n beaconEl.hidden = true;\r\n if (this.constructor.isFixed(el)) {\r\n beaconEl.classList.add(this.constructor.getFixedClass());\r\n }\r\n if (beacon.class === \"info-tooltip\") {\r\n beaconEl.classList.remove(\"gc-beacon\");\r\n }\r\n if (beacon.class === \"help-tooltip\") {\r\n beaconEl.classList.remove(\"gc-beacon\");\r\n }\r\n\r\n const parentEl =\r\n !el.parentElement || el.parentElement === document.body\r\n ? document.body\r\n : el.parentElement;\r\n\r\n parentEl.append(beaconEl);\r\n this.elements.set(beacon, beaconEl);\r\n this.setBeaconPosition(el, beaconEl, beacon);\r\n\r\n // fire observers\r\n this.observeResizing(el);\r\n });\r\n\r\n this.addOnWindowResizeListener();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n getBeacons() {\r\n return this.beacons;\r\n }\r\n\r\n getBeacon(id, def) {\r\n const [beacon] =\r\n id && typeof id === \"object\"\r\n ? [id]\r\n : this.beacons.filter((v) => v.id === id);\r\n return beacon || def;\r\n }\r\n\r\n getDataBeacons(ids) {\r\n const beaconsIds =\r\n typeof ids === \"string\" ? ids.split(\",\").map((v) => v.trim()) : ids;\r\n\r\n let beaconsSelector = [`[${this.constructor.getBeaconDataPrefix()}]`];\r\n\r\n if (beaconsIds) {\r\n beaconsSelector = [];\r\n\r\n beaconsIds.forEach((id) => {\r\n beaconsSelector.push(\r\n `[${this.constructor.getBeaconDataPrefix()}*='${id}']`\r\n );\r\n });\r\n }\r\n\r\n const beaconsEl = Array.from(\r\n document.querySelectorAll(beaconsSelector.join(\",\"))\r\n );\r\n const dataGlobalRegExp = new RegExp(\r\n `^${this.constructor.getBeaconDataPrefix()}-([^-]+)$`\r\n );\r\n\r\n const beacons = [];\r\n\r\n beaconsEl.forEach((el) => {\r\n const { value: beaconsIdsAttrValue } =\r\n el.attributes[this.constructor.getBeaconDataPrefix()];\r\n\r\n if (!beaconsIdsAttrValue) {\r\n return;\r\n }\r\n\r\n const elBeaconsIds = beaconsIdsAttrValue.split(\",\");\r\n\r\n elBeaconsIds.forEach((id) => {\r\n if (beaconsIds && !beaconsIds.includes(id)) {\r\n return;\r\n }\r\n\r\n const globalBeaconAttrs = {};\r\n const beaconAttrs = {};\r\n\r\n const dataBeaconRegExp = new RegExp(\r\n `^${this.constructor.getBeaconDataPrefix()}-${id}-([^-]+)$`\r\n );\r\n\r\n // parse attributes\r\n for (let j = 0; j < el.attributes.length; j++) {\r\n const { name: attrName, value: attrValue } = el.attributes[j];\r\n\r\n const isGlobalAttr = dataGlobalRegExp.test(attrName);\r\n const isBeaconAttr = dataBeaconRegExp.test(attrName);\r\n\r\n if (isGlobalAttr) {\r\n const [, shortAttrName] = attrName.match(dataGlobalRegExp);\r\n\r\n globalBeaconAttrs[shortAttrName] = attrValue;\r\n } else if (isBeaconAttr) {\r\n const [, shortAttrName] = attrName.match(dataBeaconRegExp);\r\n\r\n beaconAttrs[shortAttrName] = attrValue;\r\n }\r\n }\r\n\r\n const beacon = {\r\n id,\r\n position: this.options.position,\r\n ...globalBeaconAttrs,\r\n ...beaconAttrs,\r\n element: el,\r\n };\r\n\r\n // change onclick event\r\n const onClick = beacon.onclick || beacon.onClick;\r\n\r\n if (onClick) {\r\n delete beacon.onclick;\r\n\r\n beacon.onClick = (e) => {\r\n // eslint-disable-next-line no-eval\r\n const onClickCode = eval(onClick);\r\n\r\n if (typeof onClickCode === \"function\") {\r\n onClickCode.call(e, beacon);\r\n }\r\n };\r\n }\r\n\r\n beacons.push(beacon);\r\n });\r\n });\r\n\r\n return beacons;\r\n }\r\n\r\n getJsBeacons(beacons) {\r\n // cast to array\r\n const array = !Array.isArray(beacons) ? [beacons] : beacons;\r\n\r\n return array.map((v, i) => ({ ...v, id: v.id || i }));\r\n }\r\n\r\n getBeaconTpl(data) {\r\n if (data?.triggerMode === TRIGGER_MODE.label || data?.triggerMode === TRIGGER_MODE.noIcon) {\r\n return beaconWithLabel;\r\n }\r\n return beaconTpl;\r\n }\r\n\r\n createBeaconEl(beacon) {\r\n const data = { ...beacon };\r\n data.onClick = (e) => {\r\n e.stopPropagation();\r\n if (beacon.onClick) {\r\n beacon.onClick.call(this, e, beacon);\r\n }\r\n };\r\n\r\n return domTemplate(this.getBeaconTpl(data), { beacon: data });\r\n }\r\n\r\n getEl(selector) {\r\n return selector instanceof HTMLElement\r\n ? selector\r\n : document.querySelector(selector);\r\n }\r\n\r\n iconType(type) {\r\n switch (type) {\r\n case \"help\":\r\n return `url(https://i.ibb.co/1tTctTQP/helpIcon.png)`;\r\n case \"info\":\r\n return `url(https://i.ibb.co/g20HNY0/infoIcon.png)`;\r\n case \"warning\":\r\n return `url(https://i.ibb.co/XrbmwHFp/warning-Icon.png)`;\r\n default:\r\n return `url(https://i.ibb.co/ccYMGHZR/beacon-Icon.png)`;\r\n }\r\n }\r\n\r\n setBeaconPosition(el, beaconEl, options = {}) {\r\n let { position, boundary } = options;\r\n const { triggerIcon, triggerLabel, triggerMode } = options;\r\n position = position || this.options.position;\r\n boundary = boundary || this.options.boundary;\r\n boundary = boundary === \"inner\" ? \"inner\" : \"outer\";\r\n\r\n const elRect = el.getBoundingClientRect();\r\n const isFixed = beaconEl.classList.contains(this.constructor.getFixedClass());\r\n \r\n let elLeft, elTop;\r\n if (isFixed) {\r\n elLeft = elRect.left;\r\n elTop = elRect.top;\r\n } else {\r\n const parentRect = beaconEl.parentElement.getBoundingClientRect();\r\n elLeft = elRect.left - parentRect.left;\r\n elTop = elRect.top - parentRect.top;\r\n }\r\n \r\n const elWidth = elRect.width;\r\n const elHeight = elRect.height;\r\n \r\n const { style: beaconStyle } = beaconEl;\r\n let { width: beaconWidth, height: beaconHeight } =\r\n getComputedStyle(beaconEl);\r\n\r\n beaconWidth = parseInt(beaconWidth, 10);\r\n beaconHeight = parseInt(beaconHeight, 10);\r\n\r\n beaconEl.removeAttribute(\"data-beacon-position\");\r\n beaconEl.removeAttribute(\"data-beacon-boundary\");\r\n\r\n beaconEl.setAttribute(\"data-beacon-position\", position);\r\n beaconEl.setAttribute(\"data-beacon-boundary\", boundary);\r\n\r\n if(triggerMode === TRIGGER_MODE.icon) {\r\n beaconStyle.backgroundImage = this.iconType(triggerIcon?.type);\r\n beaconStyle.opacity = triggerIcon?.opacity ?? 1;\r\n beaconStyle.backgroundColor = triggerIcon?.color ?? \"white\";\r\n if (!triggerIcon?.isAnimated) {\r\n beaconEl.classList.add(\"gc-beacon-no-anim\");\r\n }\r\n }\r\n\r\n if(triggerMode === TRIGGER_MODE.label || triggerMode === TRIGGER_MODE.noIcon) {\r\n beaconStyle.opacity = triggerLabel?.opacity ?? 1;\r\n beaconStyle.backgroundColor = triggerLabel?.background ?? \"#fff\";\r\n beaconStyle.color = triggerLabel?.color ?? \"#000\";\r\n const text = triggerMode === TRIGGER_MODE.label ? triggerLabel?.text ?? \"\" : \"\";\r\n beaconEl.setAttribute(\"data-beacon-label\", text);\r\n }\r\n\r\n switch (position) {\r\n case \"top-left\": {\r\n if (boundary === \"inner\") {\r\n beaconStyle.left = `${elLeft}px`;\r\n beaconStyle.top = `${elTop}px`;\r\n } else {\r\n beaconStyle.left = `${elLeft - beaconWidth}px`;\r\n beaconStyle.top = `${elTop - beaconHeight}px`;\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"top\": {\r\n beaconStyle.left = `${elLeft + (elWidth - beaconWidth) / 2}px`;\r\n beaconStyle.top =\r\n boundary === \"inner\" ? `${elTop}px` : `${elTop - beaconHeight}px`;\r\n\r\n break;\r\n }\r\n\r\n case \"top-right\": {\r\n if (boundary === \"inner\") {\r\n beaconStyle.left = `${elWidth + elLeft - beaconWidth}px`;\r\n beaconStyle.top = `${elTop}px`;\r\n } else {\r\n beaconStyle.left = `${elWidth + elLeft}px`;\r\n beaconStyle.top = `${elTop - beaconHeight}px`;\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"left\": {\r\n beaconStyle.left =\r\n boundary === \"inner\" ? `${elLeft}px` : `${elLeft - beaconWidth}px`;\r\n beaconStyle.top = `${elTop + (elHeight - beaconHeight) / 2}px`;\r\n\r\n break;\r\n }\r\n\r\n case \"right\": {\r\n beaconStyle.left =\r\n boundary === \"inner\"\r\n ? `${elLeft + elWidth - beaconWidth}px`\r\n : `${elLeft + elWidth}px`;\r\n beaconStyle.top = `${elTop + (elHeight - beaconHeight) / 2}px`;\r\n\r\n break;\r\n }\r\n\r\n case \"bottom-left\": {\r\n if (boundary === \"inner\") {\r\n beaconStyle.left = `${elLeft}px`;\r\n beaconStyle.top = `${elTop + elHeight - beaconHeight}px`;\r\n } else {\r\n beaconStyle.left = `${elLeft - beaconWidth}px`;\r\n beaconStyle.top = `${elTop + elHeight}px`;\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"bottom\": {\r\n beaconStyle.left = `${elLeft + (elWidth - beaconWidth) / 2}px`;\r\n beaconStyle.top =\r\n boundary === \"inner\"\r\n ? `${elTop + elHeight - beaconHeight}px`\r\n : `${elTop + elHeight}px`;\r\n\r\n break;\r\n }\r\n\r\n case \"bottom-right\": {\r\n if (boundary === \"inner\") {\r\n beaconStyle.left = `${elWidth + elLeft - beaconWidth}px`;\r\n beaconStyle.top = `${elTop + elHeight - beaconHeight}px`;\r\n } else {\r\n beaconStyle.left = `${elWidth + elLeft}px`;\r\n beaconStyle.top = `${elTop + elHeight}px`;\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"center\":\r\n default: {\r\n beaconEl.setAttribute(\"data-beacon-position\", \"center\");\r\n beaconStyle.left = `${elLeft + (elWidth - beaconWidth) / 2}px`;\r\n beaconStyle.top = `${elTop + (elHeight - beaconHeight) / 2}px`;\r\n\r\n break;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n isCanShowBeacon({ canShow }) {\r\n if (canShow !== undefined) {\r\n if (!canShow || (typeof canShow === \"function\" && canShow() === false)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n showAll(force = false) {\r\n this.beacons.forEach((beacon) => {\r\n this.show(beacon, force);\r\n });\r\n\r\n return this;\r\n }\r\n\r\n show(id, force = false) {\r\n const beacon = this.getBeacon(id);\r\n\r\n if (beacon) {\r\n const beaconEl = this.elements.get(beacon);\r\n\r\n if (beaconEl) {\r\n if (force || this.isCanShowBeacon(beacon)) {\r\n beaconEl.hidden = false;\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n hideAll() {\r\n this.beacons.forEach((beacon) => {\r\n this.hide(beacon);\r\n });\r\n\r\n return this;\r\n }\r\n\r\n hide(id) {\r\n const beacon = this.getBeacon(id);\r\n\r\n if (beacon) {\r\n const el = this.elements.get(beacon);\r\n\r\n if (el) {\r\n el.hidden = true;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n removeAll() {\r\n this.beacons.forEach((beacon) => {\r\n this.remove(beacon);\r\n });\r\n\r\n this.beacons = [];\r\n this.unobserveResizeAllElements();\r\n this.removeOnWindowResizeListener();\r\n\r\n return this;\r\n }\r\n\r\n remove(id) {\r\n const beacon = this.getBeacon(id);\r\n\r\n const beaconEl = this.elements.get(beacon);\r\n\r\n if (beaconEl) {\r\n beaconEl.parentNode.removeChild(beaconEl);\r\n const beaconIndex = this.beacons.indexOf(beacon);\r\n\r\n if (beaconIndex !== -1) {\r\n this.beacons.splice(this.beacons.indexOf(beacon), 1);\r\n }\r\n\r\n this.elements.delete(beacon);\r\n\r\n const el = this.getEl(beacon.element);\r\n\r\n if (el) {\r\n this.unobserveResizing(el);\r\n }\r\n }\r\n\r\n if (!this.beacons.length) {\r\n this.removeOnWindowResizeListener();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n refresh() {\r\n this.beacons.forEach((beacon) => {\r\n const { element } = beacon;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n const el = this.getEl(element);\r\n const beaconEl = this.elements.get(beacon);\r\n\r\n if (el && beaconEl) {\r\n this.setBeaconPosition(el, beaconEl, beacon);\r\n }\r\n });\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Add window resize event listener\r\n * @return {this}\r\n */\r\n addOnWindowResizeListener() {\r\n this.cache.set(\"onWindowResizeListener\", this.getOnWindowResizeListener());\r\n window.addEventListener(\r\n \"resize\",\r\n this.cache.get(\"onWindowResizeListener\"),\r\n true\r\n );\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Return on window resize event listener function\r\n * @returns {function}\r\n */\r\n getOnWindowResizeListener() {\r\n return () => this.refresh();\r\n }\r\n\r\n /**\r\n * Remove window resize event listener\r\n * @return {this}\r\n */\r\n removeOnWindowResizeListener() {\r\n if (this.cache.has(\"onWindowResizeListener\")) {\r\n window.removeEventListener(\r\n \"resize\",\r\n this.cache.get(\"onWindowResizeListener\"),\r\n true\r\n );\r\n this.cache.delete(\"onWindowResizeListener\");\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Observe resize step element\r\n * @return {this}\r\n */\r\n observeResizing(el, options = { box: \"border-box\" }) {\r\n const { elementResizeObserver: observer } = this.observers;\r\n\r\n if (observer) {\r\n observer.observe(el, options);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Unobserve resize step element\r\n * @param el\r\n * @return {this}\r\n */\r\n unobserveResizing(el) {\r\n const { elementResizeObserver: observer } = this.observers;\r\n\r\n if (observer) {\r\n observer.unobserve(el);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Unobserve all resize steps elements\r\n * @return {this}\r\n */\r\n unobserveResizeAllElements() {\r\n const { elementResizeObserver: observer } = this.observers;\r\n\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n\r\n return this;\r\n }\r\n}\r\n","export const TRIGGER_EVENTS = {\n onClick: \"onClick\",\n onHover: \"onHover\",\n onPageLoad: \"onPageLoad\",\n onLongPress: \"onLongPress\",\n};\n\nexport const ANIMATION_TYPES = {\n instant: \"instant\",\n fadeIn: \"fadeIn\",\n slide: \"slide\",\n};\n\n\nexport const DISMISSAL_SETTINGS = {\n onOutsideClick: \"onOutsideClick\",\n dismissButtonClickOnly: \"dismissButtonClickOnly\",\n buttonClickOnly: \"buttonClickOnly\",\n};\n\n\nexport const POSITION = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n};\n\n\nexport const ICON_TYPE = {\n help: \"help\",\n info: \"info\",\n warning: \"warning\",\n beacon: \"beacon\",\n};\n\n\nexport const animationMode = (type) => {\n switch (type) {\n case ANIMATION_TYPES.instant:\n return \"none\";\n case ANIMATION_TYPES.fadeIn:\n return \"fadeIn 1s ease-in\";\n case ANIMATION_TYPES.slide:\n return \"slideUp 1s forwards\";\n default:\n return \"none\";\n }\n};\n\nexport const TRIGGER_MODE = {\n icon: \"icon\",\n noIcon: \"noIcon\",\n label: \"label\",\n};\n\n","export default (el) => (el instanceof SVGElement || /^\\[object SVG(.+)Element\\]$/.test(`${el}`));\r\n","export default (el) => /^[object NodeList]$/.test(`${el}`);\n","/**\r\n * Lodash\r\n * @see https://lodash.com/docs\r\n */\r\nimport _isUndefined from 'lodash/isUndefined';\r\nimport _isNull from 'lodash/isNull';\r\n\r\n// utils\r\nimport isHtmlElement from './isHtmlElement';\r\nimport isSvgElement from './isSvgElement';\r\nimport isNodeList from './isNodeList';\r\n\r\nexport default (tpl, data = {}) => {\r\n const parser = new DOMParser();\r\n\r\n let template = tpl.replace(/<template/g, '<gc-template');\r\n template = template.replace(/<\\/template/g, '</gc-template');\r\n\r\n const sourceDoc = parser.parseFromString(template, 'text/html');\r\n const renderedDoc = document.implementation.createHTMLDocument();\r\n\r\n const pattern = /{{([^}}]+)?}}/gm;\r\n const eventPattern = /^@(.+)$/;\r\n\r\n const ifEnded = new Map();\r\n\r\n const render = (node, replacements = {}, parent = renderedDoc.body) => {\r\n let handler = parent;\r\n\r\n const keys = Object.keys(replacements);\r\n const values = Object.values(replacements);\r\n\r\n // eslint-disable-next-line no-new-func\r\n const getValue = (key) => (new Function(...keys, `return ${key};`))(...values);\r\n\r\n if (node) {\r\n if (node.nodeType === Node.ELEMENT_NODE) {\r\n if (node.hasAttribute('if')) {\r\n ifEnded.set(node.parentNode, false);\r\n\r\n if (!getValue(node.getAttribute('if'))) {\r\n return;\r\n }\r\n\r\n ifEnded.set(node.parentNode, true);\r\n }\r\n\r\n if (node.hasAttribute('elseif')) {\r\n if (ifEnded.get(node.parentNode) || !getValue(node.getAttribute('elseif'))) {\r\n return;\r\n }\r\n\r\n ifEnded.set(node.parentNode, true);\r\n }\r\n\r\n if (node.hasAttribute('else')) {\r\n if (ifEnded.get(node.parentNode)) {\r\n return;\r\n }\r\n\r\n ifEnded.set(node.parentNode, true);\r\n }\r\n\r\n if (node.hasAttribute('for')) {\r\n const forPieces = node.getAttribute('for').split(' in ');\r\n const [firstPiece, secondPiece] = forPieces;\r\n\r\n node.removeAttribute('for');\r\n\r\n let [param, index] = firstPiece.replace(/\\(|\\)/g, '').split(',');\r\n param = param.trim();\r\n index = (index) ? index.trim() : '';\r\n\r\n const source = getValue(secondPiece.trim());\r\n\r\n const isSourceArray = Array.isArray(source);\r\n\r\n Object.keys(source).forEach((k) => {\r\n const r = { ...replacements, [param]: source[k] };\r\n\r\n if (index) {\r\n r[index] = (isSourceArray) ? parseInt(k, 10) : k;\r\n }\r\n\r\n render(node, r, handler);\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (node !== node.ownerDocument.body && node.tagName !== 'GC-TEMPLATE') {\r\n handler = node.cloneNode();\r\n parent.append(handler);\r\n }\r\n\r\n [...node.attributes].forEach((attr) => {\r\n const { name, value } = attr;\r\n\r\n const eventMatch = eventPattern.exec(name);\r\n\r\n if (eventMatch) {\r\n const [, eventName] = eventMatch;\r\n\r\n // eslint-disable-next-line no-new-func\r\n handler.addEventListener(eventName, (e) => new Function(\r\n ...[...keys, '$event'],\r\n `return ${value}${(/\\(.+\\)/.test(value)) ? '' : '()'};`,\r\n )(...[...values, e]));\r\n\r\n handler.removeAttribute(name);\r\n\r\n return;\r\n }\r\n\r\n let match = pattern.exec(value);\r\n let index = 0;\r\n let rValue = '';\r\n\r\n while (match) {\r\n rValue += value.slice(index, match.index);\r\n\r\n let [replacement, key] = match;\r\n key = key.trim();\r\n\r\n try {\r\n replacement = getValue(key);\r\n\r\n if (_isUndefined(replacement) || _isNull(replacement)) {\r\n replacement = '';\r\n }\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error(e);\r\n }\r\n\r\n rValue += replacement;\r\n\r\n index = match.index + match[0].length;\r\n match = pattern.exec(value);\r\n }\r\n\r\n rValue += value.substr(index, value.length - index);\r\n\r\n if (name === 'html') {\r\n handler.innerHTML = rValue;\r\n handler.removeAttribute(name);\r\n } else if (['if', 'else', 'elseif'].includes(name)) {\r\n handler.removeAttribute(name);\r\n } else {\r\n handler.setAttribute(name, rValue);\r\n }\r\n });\r\n } else if (node.nodeType === Node.TEXT_NODE) {\r\n let match = pattern.exec(node.nodeValue);\r\n\r\n if (match) {\r\n let index = 0;\r\n while (match) {\r\n handler.append(document.createTextNode(node.nodeValue.slice(index, match.index)));\r\n\r\n let [replacement, key] = match;\r\n key = key.trim();\r\n\r\n try {\r\n replacement = getValue(key);\r\n\r\n if (_isUndefined(replacement) || _isNull(replacement)) {\r\n replacement = '';\r\n }\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error(e);\r\n }\r\n\r\n if (isHtmlElement(replacement) || isSvgElement(replacement)) {\r\n handler.append(replacement);\r\n } else if (isNodeList(replacement)) {\r\n replacement.forEach((v) => {\r\n handler.append(v);\r\n });\r\n } else {\r\n handler.append(document.createTextNode(replacement));\r\n }\r\n\r\n index = match.index + match[0].length;\r\n match = pattern.exec(node.nodeValue);\r\n }\r\n\r\n handler.append(document.createTextNode(node.nodeValue.slice(index, node.nodeValue.length)));\r\n } else {\r\n handler.append(node.cloneNode());\r\n }\r\n }\r\n\r\n const { childNodes = [] } = node;\r\n\r\n if (childNodes.length) {\r\n childNodes.forEach((v) => {\r\n render(v, replacements, handler);\r\n });\r\n }\r\n }\r\n };\r\n\r\n render(sourceDoc.body, data, renderedDoc.body);\r\n\r\n return renderedDoc.body.firstElementChild;\r\n};\r\n","export default (el) => (el instanceof HTMLElement || /^\\[object HTML(.+)Element\\]$/.test(`${el}`));\r\n","// Module\nvar code = \"<div class=\\\"gc-beacon {{ beacon.class }}\\\" @click=\\\"beacon.onClick($event)\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-beacon--label {{ beacon.class }}\\\" @click=\\\"beacon.onClick($event)\\\"></div>\";\n// Exports\nexport default code;","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n return value === null;\n}\n\nmodule.exports = isNull;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n while (i < str.length) {\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while (j < str.length) {\n var code = str.charCodeAt(j);\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name)\n throw new TypeError(\"Missing parameter name at \".concat(i));\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \".concat(j));\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \".concat(j));\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \".concat(i));\n if (!pattern)\n throw new TypeError(\"Missing pattern at \".concat(i));\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\".concat(escapeString(options.delimiter || \"/#?\"), \"]+?\");\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \".concat(nextType, \" at \").concat(index, \", expected \").concat(type));\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\".concat(token.pattern, \")$\"), reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not repeat, but got an array\"));\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not be empty\"));\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to be \").concat(typeOfMessage));\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\",\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\".concat(parts.join(\"|\"), \")\"), flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? \"/#?\" : _e, _f = options.endsWith, endsWith = _f === void 0 ? \"\" : _f;\n var endsWithRe = \"[\".concat(escapeString(endsWith), \"]|$\");\n var delimiterRe = \"[\".concat(escapeString(delimiter), \"]\");\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\".concat(prefix, \"((?:\").concat(token.pattern, \")(?:\").concat(suffix).concat(prefix, \"(?:\").concat(token.pattern, \"))*)\").concat(suffix, \")\").concat(mod);\n }\n else {\n route += \"(?:\".concat(prefix, \"(\").concat(token.pattern, \")\").concat(suffix, \")\").concat(token.modifier);\n }\n }\n else {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n route += \"((?:\".concat(token.pattern, \")\").concat(token.modifier, \")\");\n }\n else {\n route += \"(\".concat(token.pattern, \")\").concat(token.modifier);\n }\n }\n }\n else {\n route += \"(?:\".concat(prefix).concat(suffix, \")\").concat(token.modifier);\n }\n }\n }\n if (end) {\n if (!strict)\n route += \"\".concat(delimiterRe, \"?\");\n route += !options.endsWith ? \"$\" : \"(?=\".concat(endsWithRe, \")\");\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n : endToken === undefined;\n if (!strict) {\n route += \"(?:\".concat(delimiterRe, \"(?=\").concat(endsWithRe, \"))?\");\n }\n if (!isEndDelimited) {\n route += \"(?=\".concat(delimiterRe, \"|\").concat(endsWithRe, \")\");\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* eslint-disable class-methods-use-this */\n/**\n * Copyright (C) 2020 Labs64 GmbH\n *\n * This source code is licensed under the European Union Public License, version 1.2\n * located in the LICENSE file\n */\n\n/**\n * Lodash functions\n * @see https://lodash.com/docs\n */\nimport _uniqueId from 'lodash/uniqueId';\n\n// utils\nimport domTemplate from './utils/domTemplate';\nimport isHtmlElement from './utils/isHtmlElement';\n\n// templates\nimport overlayTmpl from './templates/overlay.html';\nimport preloaderTmpl from './templates/preloader.html';\nimport interactionTmpl from './templates/interaction.html';\nimport controlTmpl from './templates/control.html';\nimport tooltipTmpl from './templates/tooltip.html';\nimport progressbarTmpl from './templates/progressbar.html';\nimport titleTmpl from './templates/title.html';\nimport descriptionTmpl from './templates/description.html';\nimport customButtonsTmpl from './templates/custom-buttons.html';\nimport previousTmpl from './templates/previous.html';\nimport paginationTmpl from './templates/pagination.html';\nimport nextTmpl from './templates/next.html';\nimport closeTmpl from './templates/close.html';\nimport copyrightTmpl from './templates/copyright.html';\nimport notificationTmpl from './templates/notification.html';\nimport fakeStepTmpl from './templates/fake-step.html';\nimport { animationMode, DISMISSAL_SETTINGS } from './utils/constants';\n\nexport default class GuideChimp {\n /**\n * GuideChimp constructor\n * @param tour\n * @param options\n */\n constructor(tour, options = {}) {\n Object.defineProperty(this, 'uid', {\n value: _uniqueId(),\n enumerable: false,\n configurable: false,\n writable: false,\n });\n\n this.setDefaults();\n\n this.cache = new Map();\n\n this.listeners = {};\n\n this.observers = {};\n\n this.options = {};\n this.setOptions(options);\n\n this.tour = null;\n this.setTour(tour);\n\n this.notifications = [];\n\n this.elements = new Map();\n\n this.init();\n\n this.actions = {\n onNextStep: this.onNextStep.bind(this),\n onPrevStep: this.onPrevStep.bind(this),\n onCloseStep: this.onCloseStep.bind(this),\n onGotoStep: this.onGotoStep.bind(this),\n };\n\n\n if (document) {\n document.addEventListener(\"click\", (e) => this.handleClick(e));\n }\n\n\n }\n\n /**\n * Called after construction, this hook allows you to add some extra setup\n * logic without having to override the constructor.\n */\n init() {\n\n }\n\n\n handleClick(e) {\n\n const action = e.target.getAttribute(\"data-action\");\n if (action && this.actions[action]) {\n this.actions[action]();\n }\n }\n\n onNextStep() {\n this.next({ event: \"change\" })\n }\n\n onPrevStep() {\n this.previous({ event: \"change\" })\n }\n\n onCloseStep() {\n this.stop({ event: \"change\" })\n }\n onGotoStep(index) {\n this.unobserveStep();\n this.unmountStep();\n this.go(index, true, { event: \"change\" })\n }\n\n\n // options -------------------------\n /**\n * Default options\n * @return {Object}\n */\n static getDefaultOptions() {\n return {\n position: 'bottom',\n useKeyboard: true,\n exitEscape: true,\n exitOverlay: false,\n showPagination: true,\n showNavigation: true,\n showProgressbar: true,\n paginationTheme: 'numbers', // if=\"paginationTheme === 'numbers' || steps.length >= paginationCirclesMaxItems\"\n paginationCirclesMaxItems: 10,\n interaction: true,\n padding: 4,\n scrollPadding: 10,\n scrollBehavior: 'auto',\n apiHost: 'https://ahd-be-jggub5n6qq-em.a.run.app',\n toursRefetchIntervalInSec: 86400,\n helpRefetchIntervalInSec: 86400,\n statsCacheIntervalInSec: 86400,\n };\n }\n\n static getDefaultKeyboardCodes() {\n const escCode = 27;\n const arrowLeftCode = 37;\n const arrowRightCode = 39;\n const enterCode = 13;\n const spaceCode = 32;\n\n return {\n previous: [arrowLeftCode],\n next: [arrowRightCode, enterCode, spaceCode],\n stop: [escCode],\n };\n }\n\n static getEventListenersPriorities() {\n return ['low', 'medium', 'high', 'critical'];\n }\n\n static getBodyClass() {\n return 'gc';\n }\n\n static getLoadingClass() {\n return 'gc-loading';\n }\n\n static getHighlightClass() {\n return 'gc-highlight';\n }\n\n static getFixedClass() {\n return 'gc-fixed';\n }\n\n static getRelativePositionClass() {\n return 'gc-relative';\n }\n\n /**\n * Get element offset\n * @param el\n * @return {{top: number, left: number, width: number, height: number}}\n */\n static getOffset(el) {\n const { body, documentElement, defaultView: view } = el.ownerDocument;\n const scrollTop = view.pageYOffset || documentElement.scrollTop || body.scrollTop;\n const scrollLeft = view.pageXOffset || documentElement.scrollLeft || body.scrollLeft;\n const { top, right, bottom, left, width, height, x, y } = el.getBoundingClientRect();\n return { right, bottom, width, height, x, y, top: top + scrollTop, left: left + scrollLeft };\n }\n\n /**\n * Check if el or his parent has fixed position\n * @param el\n * @return {boolean}\n */\n static isFixed(el) {\n const { parentNode } = el;\n\n if (!parentNode || parentNode.nodeName === 'HTML') {\n return false;\n }\n\n const elStyle = getComputedStyle(el);\n\n if (elStyle.getPropertyValue('position') === 'fixed') {\n return true;\n }\n\n return this.isFixed(parentNode);\n }\n\n setDefaults() {\n this.previousStep = null;\n this.currentStep = null;\n this.nextStep = null;\n this.fromStep = null;\n this.toStep = null;\n\n this.previousStepIndex = -1;\n this.currentStepIndex = -1;\n this.nextStepIndex = -1;\n this.fromStepIndex = -1;\n this.toStepIndex = -1;\n\n this.steps = [];\n\n this.isDisplayed = false;\n\n return this;\n }\n\n /**\n * Set tour name or steps\n * @param tour\n * @return {this}\n */\n setTour(tour, options = {}) {\n this.tour = tour;\n // this.setOptions(options)\n return this;\n }\n\n /**\n * Get tour name or steps\n */\n getTour() {\n return this.tour;\n }\n\n /**\n * Set tour options\n * @param options\n * @return {this}\n */\n setOptions(options) {\n if (!this.options || Object.keys(this.options).length === 0) {\n this.options = { ...this.constructor.getDefaultOptions(), ...options };\n } else {\n this.options = { ...this.options, ...options };\n }\n return this;\n }\n\n /**\n * Get tour options\n */\n getOptions() {\n return this.options;\n }\n\n /**\n * Start tour\n * @param number step number or it index\n * @param useIndex whether to use step number or index\n * @return {Promise<boolean>}\n */\n async start(number = 0, useIndex = true, ...args) {\n this.isDisplayed = true;\n\n this.mountOverlayEl();\n\n this.startPreloader();\n\n // emit start event\n await this.emit('onStart', ...args);\n\n this.stopPreloader();\n\n if (!this.tour || !this.tour.length) {\n this.removeOverlayEl();\n this.isDisplayed = false;\n return false;\n }\n\n this.steps = this.sortSteps(this.getSteps(this.tour));\n\n if (!this.steps.length) {\n this.removeOverlayEl();\n this.isDisplayed = false;\n return false;\n }\n\n // add a class that increase the specificity of the classes\n document.body.classList.add(this.constructor.getBodyClass());\n\n const isStarted = await this.go(number, useIndex, ...args);\n\n this.isDisplayed = isStarted;\n\n document.body.classList.toggle(this.constructor.getBodyClass(), isStarted);\n\n if (isStarted) {\n // turn on keyboard navigation\n if (this.options.useKeyboard) {\n this.addOnKeydownListener();\n }\n\n // on window resize\n this.addOnWindowResizeListener();\n\n // on window scroll\n this.addOnWindowScrollListener();\n }\n\n return isStarted;\n }\n\n /**\n * Go to step\n * @param number step number or it index\n * @param useIndex whether to use step number or index\n * @param args\n * @return {Promise<boolean>}\n */\n async go(number, useIndex = true, ...args) {\n if (!this.isDisplayed || !this.steps.length) {\n return false;\n }\n\n const stepNumber = (useIndex) ? parseInt(number, 10) : number;\n\n if (this.currentStep) {\n // skip if this step is already displayed\n const isSameStep = (useIndex)\n ? (this.currentStepIndex === stepNumber)\n : (this.currentStep.step === stepNumber);\n\n if (isSameStep) {\n return false;\n }\n }\n\n const fromStep = this.currentStep;\n const fromStepIndex = this.currentStepIndex;\n\n const currentStep = (useIndex)\n ? this.steps[stepNumber]\n : this.steps.filter(({ step }) => step === stepNumber)[0];\n\n if (!currentStep) {\n return false;\n }\n\n const currentStepIndex = this.steps.indexOf(currentStep);\n\n const toStep = currentStep;\n const toStepIndex = currentStepIndex;\n\n const { onBeforeChange, onAfterChange } = toStep;\n\n this.startPreloader();\n\n let abort = false;\n\n if (onBeforeChange) {\n if (await Promise.resolve().then(() => onBeforeChange.call(this, toStep, fromStep, ...args)) === false) {\n abort = true;\n }\n }\n\n if ((await this.emit('onBeforeChange', toStep, fromStep, ...args)).some((r) => r === false)) {\n abort = true;\n }\n\n this.stopPreloader();\n\n if (abort) {\n return false;\n }\n if (fromStep) {\n this.unmountStep();\n this.unobserveStep();\n }\n this.beforeChangeStep({ toStep, toStepIndex, currentStep, currentStepIndex, fromStep, fromStepIndex });\n\n this.toStep = toStep;\n this.toStepIndex = toStepIndex;\n\n this.currentStep = currentStep;\n this.currentStepIndex = currentStepIndex;\n\n this.fromStep = fromStep;\n this.fromStepIndex = fromStepIndex;\n\n this.previousStep = this.steps[this.currentStepIndex - 1] || null;\n this.previousStepIndex = (this.previousStep) ? this.currentStepIndex - 1 : -1;\n\n this.nextStep = this.steps[this.currentStepIndex + 1] || null;\n this.nextStepIndex = (this.nextStep) ? this.currentStepIndex + 1 : -1;\n\n const { scrollBehavior } = this.options;\n const { scrollPadding = this.options.scrollPadding } = this.currentStep;\n\n // scroll to element\n this.scrollParentsToStepEl();\n this.scrollTo(this.getStepEl(this.currentStep, true), scrollBehavior, scrollPadding);\n\n this.mountStep();\n\n setTimeout(() => {\n if (this.getEl('tooltip')) {\n this.scrollTo(this.getEl('tooltip'), scrollBehavior, scrollPadding);\n }\n }, 300);\n\n if (onAfterChange) {\n onAfterChange.call(this, this.toStep, this.fromStep, ...args);\n }\n\n this.emit('onAfterChange', this.toStep, this.fromStep, ...args);\n\n return true;\n }\n\n async previous(...args) {\n if (!this.isDisplayed || !this.currentStep || !this.previousStep) {\n return false;\n }\n\n const { onPrevious } = this.currentStep;\n\n this.startPreloader();\n\n if (onPrevious) {\n if (await Promise.resolve()\n .then(() => onPrevious.call(this, this.previousStep, this.currentStep, ...args)) === false) {\n this.stopPreloader();\n return false;\n }\n }\n\n if ((await this.emit('onPrevious', this.previousStep, this.currentStep, ...args)).some((r) => r === false)) {\n this.stopPreloader();\n return false;\n }\n\n this.stopPreloader();\n\n return this.go(this.previousStepIndex, true, ...args);\n }\n\n async next(...args) {\n if (!this.isDisplayed || !this.currentStep || !this.nextStep) {\n return false;\n }\n\n const { type, id, onNext, stepId } = this.currentStep;\n\n this.startPreloader();\n\n if (onNext) {\n if (await Promise.resolve()\n .then(() => onNext.call(this, this.nextStep, this.currentStep, ...args)) === false) {\n this.stopPreloader();\n return false;\n }\n }\n\n if ((await this.emit('onNext', this.nextStep, this.currentStep, ...args)).some((r) => r === false)) {\n this.stopPreloader();\n return false;\n }\n\n this.stopPreloader();\n this.acknowledgeStep(type, id, stepId)\n return this.go(this.nextStepIndex, true, ...args);\n }\n\n async stop(...args) {\n if (!this.isDisplayed) {\n return this;\n }\n const { type, id, stepId } = this.currentStep;\n if (this.currentStepIndex === this.steps.length - 1) {\n this.startPreloader();\n await this.emit('onComplete', ...args);\n this.stopPreloader();\n }\n\n this.startPreloader();\n\n // emit stop event\n await this.emit('onStop', ...args);\n\n this.stopPreloader();\n\n // remove the class that increase the specificity of the classes\n document.body.classList.remove(this.constructor.getBodyClass());\n\n // remove events listeners\n this.removeListeners();\n\n // disconnect observers\n this.unobserveStep();\n\n // remove all layers and keys\n this.unmountStep();\n\n this.removeOverlayEl();\n\n this.cache.clear();\n this.elements.clear();\n\n\n this.setDefaults();\n this.acknowledgeStep(type, id, stepId)\n return this;\n }\n\n getSteps(tour) {\n if (!tour || !tour.length) {\n return [];\n }\n\n return (typeof tour === 'string')\n ? this.getDataSteps(tour)\n : this.getJsSteps(tour);\n }\n\n getDataSteps(tour) {\n const dataPrefix = 'data-guidechimp';\n let tourStepsEl = Array.from(document.querySelectorAll(`[${dataPrefix}-tour*='${tour}']`));\n tourStepsEl = tourStepsEl.filter((v) => {\n const tours = v.getAttribute(`${dataPrefix}-tour`).split(',');\n return tours.includes(this.tour);\n });\n\n const dataTourRegExp = new RegExp(`^${dataPrefix}-${tour}-[^-]+$`);\n const dataGlobalRegExp = new RegExp(`^${dataPrefix}-[^-]+$`);\n\n return tourStepsEl.map((el, i) => {\n const stepAttrs = {};\n\n for (let j = 0; j < el.attributes.length; j++) {\n const { name: attrName, value: attrValue } = el.attributes[j];\n\n const isTourAttr = dataTourRegExp.test(attrName);\n const isGlobalAttr = (isTourAttr) ? false : dataGlobalRegExp.test(attrName);\n\n if (isTourAttr || isGlobalAttr) {\n const attrShortName = (isTourAttr)\n ? attrName.replace(`${dataPrefix}-${tour}-`, '')\n : attrName.replace(`${dataPrefix}-`, '');\n\n if (attrShortName !== 'tour') {\n if (isTourAttr || (isGlobalAttr && !stepAttrs[attrShortName])) {\n stepAttrs[attrShortName] = attrValue;\n }\n }\n }\n }\n\n return {\n step: i,\n title: '',\n description: '',\n position: this.options.position,\n interaction: this.options.interaction,\n ...stepAttrs,\n element: el,\n };\n });\n }\n\n getJsSteps(tour) {\n return tour.map((v, i) => ({ ...v, step: v.step || i }));\n }\n\n sortSteps(steps) {\n const copy = [...steps];\n\n return copy.sort((a, b) => {\n if (a.step < b.step) {\n return -1;\n }\n if (a.step > b.step) {\n return 1;\n }\n return 0;\n });\n }\n\n getStepEl(step) {\n const { element, top, left, width, height, canvasWidth, canvasHeight } = step || {};\n\n if (element) {\n const getEl = (selector, def = null) => {\n try {\n const el = (typeof selector === 'string')\n ? document.querySelector(selector)\n : selector;\n return el || def;\n } catch (error) {\n return def;\n }\n };\n\n let el = getEl(element);\n\n if (!el ||\n el.style.display === 'none' ||\n el.style.visibility === 'hidden' ||\n (el.offsetWidth === 0 && el.offsetHeight === 0)) {\n el = this.getEl('fakeStep') ? this.getEl('fakeStep') : this.mountFakeStepEl();\n }\n\n return el;\n }\n\n if (top !== undefined && left !== undefined && width && height) {\n return this.mountOffsetFakeStepEl({ top, left, width, height, canvasWidth, canvasHeight });\n }\n return this.mountFakeStepEl();\n }\n\n scrollParentsToStepEl() {\n const { scrollPadding = this.options.scrollPadding } = this.currentStep;\n return this.scrollParentsToEl(this.getStepEl(this.currentStep), scrollPadding);\n }\n\n getScrollableParentsEls(el) {\n const parents = [];\n let htmlEl = el;\n\n while (htmlEl && htmlEl !== htmlEl.ownerDocument.body) {\n htmlEl = this.getScrollableParentEl(htmlEl);\n parents.push(htmlEl);\n }\n\n return parents;\n }\n\n getScrollableParentEl(el) {\n const regex = /(auto|scroll)/;\n const elStyle = getComputedStyle(el);\n const elDocument = el.ownerDocument;\n\n const getClosestScrollableParent = (parent) => {\n if (!parent || parent === elDocument.body) {\n return elDocument.body;\n }\n\n const parentStyle = getComputedStyle(parent);\n\n if (elStyle.getPropertyValue('position') === 'fixed'\n && parentStyle.getPropertyValue('position') === 'static') {\n return getClosestScrollableParent(parent.parentElement);\n }\n\n const overflowX = parentStyle.getPropertyValue('overflow-x');\n const overflowY = parentStyle.getPropertyValue('overflow-y');\n\n if (regex.test(overflowX) || regex.test(overflowY)) {\n return parent;\n }\n\n return getClosestScrollableParent(parent.parentElement);\n };\n\n return (elStyle.getPropertyValue('position') === 'fixed')\n ? elDocument.body\n : getClosestScrollableParent(el.parentElement);\n }\n\n scrollParentsToEl(el, scrollPadding = 0) {\n const parents = this.getScrollableParentsEls(el);\n\n parents.forEach((parent) => {\n if (parent !== document.body) {\n // eslint-disable-next-line no-param-reassign\n parent.scrollTop = el.offsetTop - parent.offsetTop - scrollPadding;\n // eslint-disable-next-line no-param-reassign\n parent.scrollLeft = el.offsetLeft - parent.offsetLeft - scrollPadding;\n }\n });\n\n return this;\n }\n\n scrollTo(el, behavior = 'auto', scrollPadding = 0) {\n const { top, bottom, left, right } = el.getBoundingClientRect();\n const { innerWidth, innerHeight } = window;\n\n if (!(left >= 0 && right <= innerWidth)) {\n window.scrollBy({ behavior, left: left - scrollPadding });\n }\n\n if (!(top >= 0 && bottom <= innerHeight)) {\n window.scrollBy({ behavior, top: top - scrollPadding });\n }\n\n return this;\n }\n\n highlightStepEl(animation = false) {\n const el = this.getStepEl(this.currentStep);\n\n const overlay = this.getEl('overlay');\n\n if (overlay) {\n const path = overlay.querySelector('path');\n const animate = path.querySelector('animate');\n\n const hasElement = this.currentStep?.element;\n const hasTop = this.currentStep?.top !== undefined;\n const hasLeft = this.currentStep?.left !== undefined;\n const hasWidth = this.currentStep?.width;\n const hasHeight = this.currentStep?.height;\n\n const isCurrentElFake = this.isEl(el, 'fakeStep');\n const isTopLeftWithDimensions = !hasElement && hasTop && hasLeft && hasWidth && hasHeight;\n\n const to = (isCurrentElFake && !isTopLeftWithDimensions)\n ? this.getOverlayDocumentPath()\n : this.getOverlayStepPath(this.currentStep);\n\n path.setAttribute('d', to);\n\n if (animate) {\n const lock = animate.getAttribute('lock');\n\n if (!lock) {\n animate.setAttribute('from', to);\n animate.setAttribute('to', to);\n }\n\n if (animation) {\n const isFromElFake = this.isEl(this.getStepEl(this.fromStep), 'fakeStep');\n\n const from = (this.fromStep && !isFromElFake && !isCurrentElFake)\n ? this.getOverlayStepPath(this.fromStep)\n : null;\n\n if (from) {\n animate.setAttribute('from', from);\n animate.setAttribute('to', to);\n }\n\n animate.setAttribute('lock', 'true');\n }\n\n animate.onend = () => {\n animate.removeAttribute('lock');\n };\n\n animate.beginElement();\n }\n }\n\n const hasElement = this.currentStep?.element;\n const hasCoordinates = !hasElement &&\n this.currentStep?.top !== undefined &&\n this.currentStep?.left !== undefined &&\n this.currentStep?.width &&\n this.currentStep?.height;\n\n if (!hasCoordinates) {\n const elStyle = getComputedStyle(el);\n\n if (!['absolute', 'relative', 'fixed'].includes(elStyle.getPropertyValue('position'))) {\n el.classList.add(this.constructor.getRelativePositionClass());\n }\n\n el.classList.add(this.constructor.getHighlightClass());\n }\n\n el.setAttribute(`data-guidechimp-${this.uid}`, 'highlight');\n this.elements.set('highlight', el);\n\n return this;\n }\n\n resetHighlightStepEl() {\n const overlay = this.getEl('overlay');\n\n if (overlay) {\n const path = overlay.querySelector('path');\n const animate = overlay.querySelector('animate');\n\n path.setAttribute('d', this.getOverlayDocumentPath());\n\n if (animate) {\n animate.removeAttribute('from');\n animate.removeAttribute('to');\n }\n }\n\n const el = this.getStepEl(this.currentStep);\n\n const hasElement = this.currentStep?.element;\n const hasCoordinates = !hasElement &&\n this.currentStep?.top !== undefined &&\n this.currentStep?.left !== undefined &&\n this.currentStep?.width &&\n this.currentStep?.height;\n\n if (!hasCoordinates) {\n el.classList.remove(this.constructor.getRelativePositionClass());\n el.classList.remove(this.constructor.getHighlightClass());\n }\n\n el.removeAttribute(`data-guidechimp-${this.uid}`);\n this.elements.delete('highlight');\n\n return this;\n }\n\n setInteractionPosition(interactionEl) {\n const hasElement = this.currentStep?.element;\n const hasTop = this.currentStep?.top !== undefined;\n const hasLeft = this.currentStep?.left !== undefined;\n const hasWidth = this.currentStep?.width;\n const hasHeight = this.currentStep?.height;\n\n if (!hasElement && hasTop && hasLeft && hasWidth && hasHeight) {\n if (!interactionEl) {\n return this;\n }\n\n let { padding } = this.options;\n\n const convertToPx = (value, axis) => {\n if (typeof value === 'string' && value.trim().endsWith('%')) {\n const percentage = parseFloat(value) || 0;\n return (axis === 'x')\n ? (percentage / 100) * window.innerWidth\n : (percentage / 100) * window.innerHeight;\n }\n return typeof value === 'number' ? value : parseFloat(value) || 0;\n };\n\n const top = convertToPx(this.currentStep.top, 'y');\n const left = convertToPx(this.currentStep.left, 'x');\n const width = convertToPx(this.currentStep.width, 'x');\n const height = convertToPx(this.currentStep.height, 'y');\n\n const { style } = interactionEl;\n\n style.cssText = `position: fixed;\n width: ${width + padding}px;\n height: ${height + padding}px;\n top: ${top - (padding / 2)}px;\n left: ${left - (padding / 2)}px;\n z-index: 6403;`;\n\n return this;\n }\n\n const el = this.getStepEl(this.currentStep);\n\n if (!interactionEl || !el) {\n return this;\n }\n\n let { padding } = this.options;\n\n const elStyle = getComputedStyle(el);\n\n if (elStyle.getPropertyValue('position') === 'floating') {\n padding = 0;\n }\n\n const { width, height, top, left } = this.constructor.getOffset(el);\n\n interactionEl.classList.toggle(this.constructor.getFixedClass(), this.constructor.isFixed(el));\n\n const { style } = interactionEl;\n\n style.cssText = `width: ${width + padding}px;\n height: ${height + padding}px;\n top: ${top - (padding / 2)}px;\n left: ${left - (padding / 2)}px;`;\n\n return this;\n }\n\n setControlPosition(controlEl) {\n const hasElement = this.currentStep?.element;\n const hasTop = this.currentStep?.top !== undefined;\n const hasLeft = this.currentStep?.left !== undefined;\n const hasWidth = this.currentStep?.width;\n const hasHeight = this.currentStep?.height;\n\n if (!hasElement && hasTop && hasLeft && hasWidth && hasHeight) {\n if (!controlEl) {\n return this;\n }\n\n const { style } = controlEl;\n style.position = 'fixed';\n style.width = 'auto';\n style.height = 'auto';\n style.top = '0';\n style.left = '0';\n style.right = '0';\n style.bottom = '0';\n style.pointerEvents = 'auto';\n style.visibility = 'visible';\n\n return this;\n }\n\n const el = this.getStepEl(this.currentStep);\n if (this.options.type === \"snackbar\") {\n switch (this.currentStep.position) {\n case \"top\": {\n el.style.top = 0;\n break;\n }\n case \"topRight\": {\n el.style.top = \"100px\";\n el.style.left = \"400px\";\n\n controlEl.style.top = \"100px\";\n controlEl.style.left = \"400px\";\n\n }\n }\n }\n if (!controlEl || !el) {\n return this;\n }\n\n let { padding } = this.options;\n\n const elStyle = getComputedStyle(el);\n\n if (elStyle.getPropertyValue('position') === 'floating') {\n padding = 0;\n }\n\n const { pageXOffset } = el.ownerDocument.defaultView;\n const { width: docElWidth } = el.ownerDocument.documentElement.getBoundingClientRect();\n const { height: elHeight, top: elTop, left: elLeft, right: elRight } = this.constructor.getOffset(el);\n\n const height = elHeight + padding;\n const top = elTop - (padding / 2);\n const left = (pageXOffset < pageXOffset + (elLeft - (padding / 2))) ? pageXOffset : (elLeft - (padding / 2));\n const width = (pageXOffset + docElWidth > pageXOffset + (elRight + (padding / 2)))\n ? docElWidth\n : (elRight + (padding / 2));\n\n controlEl.classList.toggle(this.constructor.getFixedClass(), this.constructor.isFixed(el));\n const { style } = controlEl;\n style.cssText = `width: ${width}px;\n height: ${height}px;\n top: ${top}px;\n left: ${left}px;`;\n\n return this;\n }\n\n setTooltipPosition(tooltipEl, options = {}) {\n if (!this.currentStep) {\n return this;\n }\n\n if (!tooltipEl) {\n return this;\n }\n\n const clampToViewport = (el, pad = 12, depth = 0) => {\n if (!el) return;\n try {\n const elStyleCheck = el.style || {};\n if (elStyleCheck.transform && elStyleCheck.transform.indexOf('translate(-50%') !== -1) {\n return;\n }\n } catch (err) {\n console.log(err)\n }\n const gutter = Math.max(pad, 12);\n const { innerWidth, innerHeight } = window;\n const { width, height, left, top } = el.getBoundingClientRect();\n\n let newLeft = left;\n let newTop = top;\n let changed = false;\n\n if (left < gutter) {\n newLeft = gutter;\n changed = true;\n } else if (left + width > innerWidth - gutter) {\n newLeft = Math.max(gutter, innerWidth - gutter - width);\n changed = true;\n }\n\n if (top < gutter) {\n newTop = gutter;\n changed = true;\n } else if (top + height > innerHeight - gutter) {\n newTop = Math.max(gutter, innerHeight - gutter - height);\n changed = true;\n }\n\n const s = el.style;\n if (!s.top || s.top === 'auto') {\n s.top = `${top}px`;\n changed = true;\n }\n if (!s.left || s.left === 'auto') {\n s.left = `${left}px`;\n changed = true;\n }\n\n if (changed) {\n s.right = 'auto';\n s.bottom = 'auto';\n s.transform = 'none';\n s.left = `${newLeft}px`;\n s.top = `${newTop}px`;\n }\n\n if (depth < 2) {\n requestAnimationFrame(() => {\n const { width: w2, height: h2, left: l2, top: t2 } = el.getBoundingClientRect();\n if (\n l2 < gutter ||\n l2 + w2 > innerWidth - gutter ||\n t2 < gutter ||\n t2 + h2 > innerHeight - gutter\n ) {\n clampToViewport(el, gutter, depth + 1);\n }\n });\n setTimeout(() => clampToViewport(el, gutter, depth + 1), 50);\n }\n };\n\n let { boundary, position: pos } = options;\n let { padding } = this.options;\n\n boundary = boundary || window;\n\n pos = pos || this.currentStep.position;\n pos = pos || this.options.position;\n\n let [position, alignment] = pos.split('-');\n\n const { style: tooltipStyle } = tooltipEl;\n\n tooltipStyle.top = null;\n tooltipStyle.right = null;\n tooltipStyle.bottom = null;\n tooltipStyle.left = null;\n tooltipStyle.transform = null;\n tooltipStyle.animation = null;\n tooltipStyle.position = null;\n tooltipStyle.visibility = \"hidden\";\n setTimeout(() => {\n tooltipStyle.visibility = \"visible\";\n }, this.currentStep.delay || 1000);\n\n\n const overlayEls = document.getElementsByClassName(\"gc-overlay\");\n\n if (overlayEls.length > 0) {\n const overlayEl = overlayEls[0];\n if (this.currentStep && !this.currentStep.isBackdrop) {\n overlayEl.classList.remove(\"gc-overlay-hidden\");\n } else {\n overlayEl.classList.add(\"gc-overlay-hidden\");\n }\n }\n\n if (this.currentStep?.dismissalSetting === DISMISSAL_SETTINGS.dismissButtonClickOnly\n || this.currentStep?.dismissalSetting === DISMISSAL_SETTINGS.buttonClickOnly\n ) {\n this.setOptions({\n exitOverlay: false,\n })\n } else {\n this.setOptions({\n exitOverlay: true,\n })\n }\n\n if (this.currentStep?.dismissalSetting === DISMISSAL_SETTINGS.onOutsideClick) {\n this.setOptions({\n exitOverlay: true,\n })\n }\n\n const hasElement = this.currentStep.element;\n const hasTop = this.currentStep?.top !== undefined;\n const hasLeft = this.currentStep?.left !== undefined;\n const hasWidth = this.currentStep?.width;\n const hasHeight = this.currentStep?.height;\n\n if (!hasElement && hasTop && hasLeft && hasWidth && hasHeight) {\n tooltipEl.setAttribute('data-guidechimp-position', 'top-left');\n tooltipStyle.position = 'fixed';\n tooltipStyle.zIndex = '10000';\n tooltipStyle.visibility = 'visible';\n tooltipStyle.pointerEvents = 'auto';\n const parsePct = (v, axis) => {\n if (typeof v === 'string' && v.trim().endsWith('%')) {\n const pct = parseFloat(v) || 0;\n const px = (axis === 'x') ? (pct / 100) * window.innerWidth : (pct / 100) * window.innerHeight;\n return { isPct: true, pct, px, raw: v.trim() };\n }\n const px = (typeof v === 'number') ? v : parseFloat(v) || 0;\n return { isPct: false, px, raw: `${px}px` };\n };\n\n const topInfo = parsePct(this.currentStep.top, 'y');\n const leftInfo = parsePct(this.currentStep.left, 'x');\n const widthInfo = parsePct(this.currentStep.width, 'x');\n const heightInfo = parsePct(this.currentStep.height, 'y');\n const widthPx = widthInfo.px;\n const heightPx = heightInfo.px;\n\n const { padding } = this.options;\n const { height: tooltipHeight, width: tooltipWidth } = tooltipEl.getBoundingClientRect();\n\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n const spaceRight = viewportWidth - (leftInfo.px + widthPx);\n const spaceLeft = leftInfo.px;\n const spaceBottom = viewportHeight - (topInfo.px + heightPx);\n const spaceTop = topInfo.px;\n\n\n tooltipStyle.top = 'auto';\n tooltipStyle.left = 'auto';\n tooltipStyle.right = 'auto';\n tooltipStyle.bottom = 'auto';\n tooltipStyle.transform = 'none';\n\n\n let configuredPosition = this.currentStep.position || pos || 'right';\n\n const canFitTop = spaceTop >= tooltipHeight + padding;\n const canFitBottom = spaceBottom >= tooltipHeight + padding;\n const canFitLeft = spaceLeft >= tooltipWidth + padding;\n const canFitRight = spaceRight >= tooltipWidth + padding;\n\n if (!canFitTop && !canFitBottom && !canFitLeft && !canFitRight) {\n const maxSpace = Math.max(spaceTop, spaceBottom, spaceLeft, spaceRight);\n if (maxSpace === spaceRight) configuredPosition = 'right';\n else if (maxSpace === spaceBottom) configuredPosition = 'bottom';\n else if (maxSpace === spaceLeft) configuredPosition = 'left';\n else configuredPosition = 'top';\n } else {\n switch (configuredPosition) {\n case 'top':\n case 'top-left':\n case 'top-right':\n if (!canFitTop) {\n if (canFitBottom) configuredPosition = 'bottom';\n else if (canFitRight) configuredPosition = 'right';\n else if (canFitLeft) configuredPosition = 'left';\n }\n break;\n case 'bottom':\n case 'bottom-left':\n case 'bottom-right':\n if (!canFitBottom) {\n if (canFitTop) configuredPosition = 'top';\n else if (canFitRight) configuredPosition = 'right';\n else if (canFitLeft) configuredPosition = 'left';\n }\n break;\n case 'left':\n if (!canFitLeft) {\n if (canFitRight) configuredPosition = 'right';\n else if (canFitBottom) configuredPosition = 'bottom';\n else if (canFitTop) configuredPosition = 'top';\n }\n break;\n case 'right':\n if (!canFitRight) {\n if (canFitLeft) configuredPosition = 'left';\n else if (canFitBottom) configuredPosition = 'bottom';\n else if (canFitTop) configuredPosition = 'top';\n }\n break;\n }\n }\n switch (configuredPosition) {\n case 'top':\n position = 'top';\n tooltipStyle.bottom = `${viewportHeight - topInfo.px + padding}px`;\n tooltipStyle.left = `${leftInfo.px + (widthPx / 2) - (tooltipWidth / 2)}px`;\n break;\n case 'top-left':\n position = 'top-left';\n tooltipStyle.top = `${topInfo.px - tooltipHeight - padding}px`;\n tooltipStyle.right = `${viewportWidth - leftInfo.px + padding}px`;\n\n break;\n case 'top-right':\n position = 'top-right';\n tooltipStyle.top = `${topInfo.px - tooltipHeight - padding}px`;\n tooltipStyle.left = `${leftInfo.px + widthPx + padding}px`;\n break;\n case 'bottom':\n position = 'bottom';\n tooltipStyle.top = `${topInfo.px + heightPx + padding}px`;\n tooltipStyle.left = `${leftInfo.px + (widthPx / 2) - (tooltipWidth / 2)}px`;\n break;\n case 'bottom-left':\n position = 'bottom-left';\n \n tooltipStyle.top = `${topInfo.px + heightPx + padding}px`;\n tooltipStyle.right = `${viewportWidth - leftInfo.px + padding}px`;\n break;\n case 'bottom-right':\n position = 'bottom-right';\n tooltipStyle.top = `${topInfo.px + heightPx + padding}px`;\n tooltipStyle.left = `${leftInfo.px + widthPx + padding}px`;\n break;\n case 'left':\n position = 'left';\n tooltipStyle.top = `${topInfo.px + (heightPx / 2) - (tooltipHeight / 2)}px`;\n tooltipStyle.left = `${Math.max(0, leftInfo.px - tooltipWidth - padding)}px`;\n break;\n case 'center':\n position = 'center';\n tooltipStyle.top = `${topInfo.px + (heightPx / 2) - (tooltipHeight / 2)}px`;\n tooltipStyle.left = `${leftInfo.px + (widthPx / 2) - (tooltipWidth / 2)}px`;\n break;\n case 'right':\n default:\n position = 'right';\n tooltipStyle.top = `${topInfo.px + (heightPx / 2) - (tooltipHeight / 2)}px`;\n tooltipStyle.left = `${leftInfo.px + widthPx + padding}px`;\n break;\n }\n\n const clamp = (v, a, b) => Math.max(a, Math.min(v, b));\n\n let computedTop = null;\n if (tooltipStyle.top && tooltipStyle.top !== 'auto') {\n computedTop = parseFloat(tooltipStyle.top) || 0;\n } else if (tooltipStyle.bottom && tooltipStyle.bottom !== 'auto') {\n const bottomPx = parseFloat(tooltipStyle.bottom) || 0;\n computedTop = viewportHeight - bottomPx - tooltipHeight;\n }\n\n let computedLeft = null;\n if (tooltipStyle.left && tooltipStyle.left !== 'auto') {\n computedLeft = parseFloat(tooltipStyle.left) || 0;\n } else if (tooltipStyle.right && tooltipStyle.right !== 'auto') {\n const rightPx = parseFloat(tooltipStyle.right) || 0;\n computedLeft = viewportWidth - rightPx - tooltipWidth;\n }\n\n const pad = Math.max(20, padding || 0);\n if (computedTop !== null) {\n const clampedTop = clamp(computedTop, pad, Math.max(pad, viewportHeight - tooltipHeight - pad));\n tooltipStyle.top = `${clampedTop}px`;\n tooltipStyle.bottom = 'auto';\n }\n if (computedLeft !== null) {\n const clampedLeft = clamp(computedLeft, pad, Math.max(pad, viewportWidth - tooltipWidth - pad));\n tooltipStyle.left = `${clampedLeft}px`;\n tooltipStyle.right = 'auto';\n }\n\n tooltipEl.setAttribute('data-guidechimp-position', `${position}`);\n\n if (overlayEls.length > 0) {\n const overlayEl = overlayEls[0];\n if (this.currentStep && this.currentStep.isBackdrop) {\n overlayEl.classList.remove(\"gc-overlay-hidden\");\n } else {\n overlayEl.classList.add(\"gc-overlay-hidden\");\n }\n }\n\n if (this.currentStep.animationType) {\n tooltipStyle.animation = animationMode(this.currentStep.animationType);\n }\n\n clampToViewport(tooltipEl, padding);\n return this;\n } else if (!hasElement && (hasTop || hasLeft)) {\n tooltipEl.setAttribute('data-guidechimp-position', 'top-left');\n tooltipStyle.position = 'fixed';\n tooltipStyle.zIndex = '10000';\n tooltipStyle.visibility = 'visible';\n\n if (hasTop) {\n const topVal = this.currentStep.top;\n let topPx;\n if (typeof topVal === 'string' && topVal.trim().endsWith('%')) {\n topPx = (parseFloat(topVal) || 0) / 100 * window.innerHeight;\n } else {\n topPx = (typeof topVal === 'number') ? topVal : parseFloat(topVal) || 0;\n }\n tooltipStyle.top = `${topPx}px`;\n }\n if (hasLeft) {\n const leftVal = this.currentStep.left;\n let leftPx;\n if (typeof leftVal === 'string' && leftVal.trim().endsWith('%')) {\n leftPx = (parseFloat(leftVal) || 0) / 100 * window.innerWidth;\n } else {\n leftPx = (typeof leftVal === 'number') ? leftVal : parseFloat(leftVal) || 0;\n }\n tooltipStyle.left = `${leftPx}px`;\n }\n\n if (overlayEls.length > 0) {\n const overlayEl = overlayEls[0];\n if (this.currentStep && this.currentStep.isBackdrop) {\n overlayEl.classList.remove(\"gc-overlay-hidden\");\n } else {\n overlayEl.classList.add(\"gc-overlay-hidden\");\n }\n }\n\n if (this.currentStep.animationType) {\n tooltipStyle.animation = animationMode(this.currentStep.animationType);\n }\n\n clampToViewport(tooltipEl, padding);\n return this;\n } else if (!hasElement && !hasTop && !hasLeft) {\n tooltipEl.setAttribute('data-guidechimp-position', 'floating');\n tooltipStyle.position = 'fixed';\n tooltipStyle.left = '50%';\n tooltipStyle.top = '50%';\n tooltipStyle.transform = 'translate(-50%, -50%)';\n tooltipStyle.zIndex = '10000';\n tooltipStyle.visibility = 'visible';\n\n if (overlayEls.length > 0) {\n const overlayEl = overlayEls[0];\n if (!overlayEl.classList.contains(\"gc-overlay-hidden\")) {\n overlayEl.classList.add(\"gc-overlay-hidden\");\n }\n }\n\n if (this.currentStep.animationType) {\n tooltipStyle.animation = animationMode(this.currentStep.animationType);\n }\n\n clampToViewport(tooltipEl, padding);\n return this;\n } else {\n const el = this.getStepEl(this.currentStep);\n\n if (!el) {\n return this;\n }\n\n const elStyle = getComputedStyle(el);\n\n if (elStyle.getPropertyValue('position') === 'floating') {\n padding = 0;\n }\n\n const isFakeOrNotFound = this.isEl(el, 'fakeStep');\n\n if (isFakeOrNotFound) {\n tooltipEl.setAttribute('data-guidechimp-position', 'floating');\n tooltipStyle.position = 'fixed';\n tooltipStyle.left = '50%';\n tooltipStyle.top = '50%';\n tooltipStyle.transform = 'translate(-50%, -50%)';\n tooltipStyle.zIndex = '10000';\n tooltipStyle.visibility = 'visible';\n\n if (overlayEls.length > 0) {\n const overlayEl = overlayEls[0];\n if (this.currentStep && !this.currentStep.isBackdrop) {\n overlayEl.classList.remove(\"gc-overlay-hidden\");\n } else {\n overlayEl.classList.add(\"gc-overlay-hidden\");\n }\n }\n\n if (this.currentStep.animationType) {\n tooltipStyle.animation = animationMode(this.currentStep.animationType);\n }\n\n clampToViewport(tooltipEl, padding);\n return this;\n }\n\n const {\n top: elTop,\n bottom: elBottom,\n left: elLeft,\n right: elRight,\n width: elWidth,\n height: elHeight,\n } = el.getBoundingClientRect();\n\n const { height: tooltipHeight, width: tooltipWith } = tooltipEl.getBoundingClientRect();\n\n const cloneTooltip = tooltipEl.cloneNode(true);\n cloneTooltip.style.visibility = 'hidden';\n cloneTooltip.innerHTML = '';\n\n tooltipEl.parentElement.appendChild(cloneTooltip);\n\n const { width: minTooltipWidth } = cloneTooltip.getBoundingClientRect();\n\n cloneTooltip.parentElement.removeChild(cloneTooltip);\n\n let boundaryRect = new DOMRect(0, 0, window.innerWidth, window.innerHeight);\n\n if (!(boundary instanceof Window)) {\n const { x, y } = boundary.getBoundingClientRect();\n boundaryRect = new DOMRect(x, y, boundary.scrollWidth, boundary.scrollHeight);\n }\n\n const {\n top: boundaryTop,\n bottom: boundaryBottom,\n left: boundaryLeft,\n right: boundaryRight,\n } = boundaryRect;\n if (this.isEl(el, 'fakeStep')) {\n position = 'floating';\n } else {\n const positions = ['bottom', 'right', 'left', 'top'];\n let {\n marginTop: tooltipMarginTop,\n marginLeft: tooltipMarginLeft,\n marginRight: tooltipMarginRight,\n marginBottom: tooltipMarginBottom,\n } = getComputedStyle(tooltipEl);\n\n tooltipMarginTop = parseInt(tooltipMarginTop, 10);\n tooltipMarginLeft = parseInt(tooltipMarginLeft, 10);\n tooltipMarginRight = parseInt(tooltipMarginRight, 10);\n tooltipMarginBottom = parseInt(tooltipMarginBottom, 10);\n\n if (tooltipHeight + tooltipMarginTop + tooltipMarginBottom > (elTop - boundaryTop)) {\n positions.splice(positions.indexOf('top'), 1);\n }\n\n if (tooltipHeight + tooltipMarginTop + tooltipMarginBottom > boundaryBottom - elBottom) {\n positions.splice(positions.indexOf('bottom'), 1);\n }\n\n if (minTooltipWidth + tooltipMarginLeft + tooltipMarginRight > elLeft - boundaryLeft) {\n positions.splice(positions.indexOf('left'), 1);\n }\n\n if (minTooltipWidth + tooltipMarginLeft + tooltipMarginRight > boundaryRight - elRight) {\n positions.splice(positions.indexOf('right'), 1);\n }\n\n if (positions.length) {\n position = positions.includes(position) ? position : positions[0];\n } else {\n position = 'floating';\n }\n\n if (position === 'top' || position === 'bottom') {\n const alignments = ['left', 'right', 'middle'];\n\n if (boundaryRight - elLeft < minTooltipWidth) {\n alignments.splice(alignments.indexOf('left'), 1);\n }\n\n if (elRight - boundaryLeft < minTooltipWidth) {\n alignments.splice(alignments.indexOf('right'), 1);\n }\n\n if (((elLeft + (elWidth / 2)) - boundaryLeft) < (minTooltipWidth / 2)\n || (boundaryRight - (elRight - (elWidth / 2))) < (minTooltipWidth / 2)) {\n alignments.splice(alignments.indexOf('middle'), 1);\n }\n\n if (alignments.length) {\n alignment = alignments.includes(alignment) ? alignment : alignments[0];\n } else {\n alignment = 'middle';\n }\n }\n }\n\n tooltipEl.setAttribute('data-guidechimp-position', position);\n\n const root = document.documentElement;\n\n if (this.currentStep.animationType) {\n tooltipStyle.animation = animationMode(this.currentStep.animationType);\n }\n\n if (this.options.type === \"snackbar\") {\n switch (this.currentStep.position) {\n case 'top': {\n tooltipStyle.top = `${0 + padding}px`;\n break;\n }\n }\n } else {\n const spaceTop = elTop - boundaryTop;\n const spaceBottom = boundaryBottom - elBottom;\n const requiredSpace = tooltipHeight + tooltipMarginTop + tooltipMarginBottom + padding;\n const canCenterVertically = spaceTop >= requiredSpace && spaceBottom >= requiredSpace;\n\n switch (position) {\n case 'top':\n if (canCenterVertically) {\n tooltipStyle.top = `${elTop + (elHeight / 2) - (tooltipHeight / 2)}px`;\n tooltipStyle.bottom = 'auto';\n } else {\n tooltipStyle.bottom = `${elHeight + padding}px`;\n }\n break;\n case 'right':\n tooltipStyle.left = `${(elRight + (padding / 2)) - root.clientLeft}px`;\n tooltipStyle.top = `${elTop + (elHeight / 2) - (tooltipHeight / 2)}px`;\n tooltipStyle.bottom = 'auto';\n break;\n case 'left':\n tooltipStyle.right = `${root.clientWidth - (elLeft - (padding / 2))}px`;\n tooltipStyle.top = `${elTop + (elHeight / 2) - (tooltipHeight / 2)}px`;\n tooltipStyle.bottom = 'auto';\n break;\n case 'bottom':\n if (canCenterVertically) {\n tooltipStyle.top = `${elTop + (elHeight / 2) - (tooltipHeight / 2)}px`;\n tooltipStyle.bottom = 'auto';\n } else {\n tooltipStyle.top = `${elHeight + padding}px`;\n }\n break;\n default: {\n\n tooltipStyle.left = '50%';\n tooltipStyle.top = '50%';\n tooltipStyle.transform = 'translate(-50%,-50%)';\n\n }\n }\n }\n tooltipEl.removeAttribute('data-guidechimp-alignment');\n\n if (alignment) {\n tooltipEl.setAttribute('data-guidechimp-alignment', alignment);\n switch (alignment) {\n case 'left': {\n tooltipStyle.left = `${elLeft - (padding / 2)}px`;\n break;\n }\n case 'right': {\n tooltipStyle.right = `${root.clientWidth - elRight - (padding / 2)}px`;\n break;\n }\n default: {\n if ((elLeft + (elWidth / 2)) < (tooltipWith / 2)\n || (elLeft + (elWidth / 2) + (tooltipWith / 2)) > root.clientWidth) {\n tooltipStyle.left = `${((root.clientWidth) / 2) - (tooltipWith / 2)}px`;\n } else {\n tooltipStyle.left = `${elLeft + (elWidth / 2) - (tooltipWith / 2)}px`;\n }\n }\n }\n }\n }\n\n clampToViewport(tooltipEl, padding);\n return this;\n }\n\n startPreloader() {\n document.body.classList.add(this.constructor.getLoadingClass());\n\n const overlay = this.getEl('overlay');\n\n if (overlay) {\n const path = overlay.querySelector('path');\n const animate = overlay.querySelector('animate');\n\n const preloaderCache = new Map();\n preloaderCache.set('d', path.getAttribute('d'));\n\n path.setAttribute('d', this.getOverlayDocumentPath());\n\n if (animate) {\n preloaderCache.set('from', animate.getAttribute('from'));\n preloaderCache.set('to', animate.getAttribute('to'));\n\n animate.removeAttribute('from');\n animate.removeAttribute('to');\n }\n\n this.cache.set('preloaderCache', preloaderCache);\n }\n\n const preloader = this.mountPreloaderEl();\n preloader.hidden = true;\n\n setTimeout(() => {\n preloader.hidden = false;\n }, 100);\n\n return this;\n }\n\n stopPreloader() {\n document.body.classList.remove(this.constructor.getLoadingClass());\n\n const overlay = this.getEl('overlay');\n\n if (overlay) {\n const path = overlay.querySelector('path');\n const animate = overlay.querySelector('animate');\n\n const preloaderCache = this.cache.get('preloaderCache') || new Map();\n\n if (preloaderCache.has('d')) {\n path.setAttribute('d', preloaderCache.get('d'));\n }\n\n if (animate) {\n if (preloaderCache.has('from')) {\n animate.setAttribute('from', preloaderCache.get('from'));\n }\n\n if (preloaderCache.has('to')) {\n animate.setAttribute('to', preloaderCache.get('to'));\n }\n }\n\n this.cache.delete('preloaderCache');\n }\n\n this.removePreloaderEl();\n return this;\n }\n\n getDefaultTmplData() {\n return {\n previousStep: this.previousStep,\n currentStep: this.currentStep,\n nextStep: this.nextStep,\n fromStep: this.fromStep,\n toStep: this.toStep,\n\n previousStepIndex: this.previousStepIndex,\n currentStepIndex: this.currentStepIndex,\n nextStepIndex: this.nextStepIndex,\n fromStepIndex: this.fromStepIndex,\n toStepIndex: this.toStepIndex,\n\n steps: this.steps,\n\n go: (...args) => this.go(...args),\n previous: (...args) => this.previous(...args),\n next: (...args) => this.next(...args),\n stop: (...args) => this.stop(...args),\n };\n }\n\n mountStep() {\n const interactionEl = this.mountInteractionEl();\n const controlEl = this.mountControlEl();\n\n this.setInteractionPosition(interactionEl);\n this.setControlPosition(controlEl);\n this.setTooltipPosition(this.getEl('tooltip'));\n\n this.observeStep();\n\n this.highlightStepEl(true);\n\n return this;\n }\n\n unmountStep() {\n this.resetHighlightStepEl();\n\n this.removeInteractionEl();\n this.removeControlEl();\n this.removePreloaderEl();\n this.removeFakeStepEl();\n\n return this;\n }\n\n createEl(name, tmpl, data = {}) {\n const el = domTemplate(tmpl, data);\n\n if (el) {\n el.setAttribute(`data-quidechimp-${this.uid}`, name);\n }\n\n return el;\n }\n\n getEl(key, def = null) {\n let el = this.elements.get(key);\n\n if (!el) {\n el = document.querySelector(`[data-quidechimp-${this.uid}=\"${key}\"]`);\n }\n\n return el || def;\n }\n\n mountEl(el, parent) {\n if (el) {\n const els = el.querySelectorAll(`[data-quidechimp-${this.uid}]`);\n\n [el, ...els].forEach((v) => {\n const key = v.getAttribute(`data-quidechimp-${this.uid}`);\n if (key) {\n this.removeEl(key);\n this.elements.set(key, v);\n }\n });\n\n parent.appendChild(el);\n }\n\n return el;\n }\n\n removeEl(key) {\n const el = this.getEl(key);\n\n if (el) {\n if (el.parentElement && typeof el.parentElement.removeChild === 'function') {\n el.parentElement.removeChild(el);\n } else if (typeof el.remove === 'function') {\n el.remove();\n }\n }\n\n this.elements.delete(key);\n\n return this;\n }\n\n isEl(el, key) {\n return (this.getEl(key))\n ? el === this.getEl(key)\n : el.getAttribute(`data-quidechimp-${this.uid}`) === key;\n }\n\n getFakeStepTmpl() {\n return fakeStepTmpl;\n }\n\n createFakeStepEl(data = {}) {\n return this.createEl('fakeStep', this.getFakeStepTmpl(), { ...this.getDefaultTmplData(), ...data });\n }\n\n mountFakeStepEl(data = {}) {\n return this.mountEl(this.createFakeStepEl(data), document.body);\n }\n\n removeFakeStepEl() {\n return this.removeEl('fakeStep');\n }\n\n mountOffsetFakeStepEl(data = {}) {\n const { top, left, width, height, canvasWidth, canvasHeight } = data;\n\n this.removeFakeStepEl();\n\n const fakeEl = this.createFakeStepEl(data);\n\n if (fakeEl && top !== undefined && left !== undefined && width && height) {\n const refWidth = canvasWidth || window.innerWidth;\n const refHeight = canvasHeight || window.innerHeight;\n\n let topPx;\n let leftPx;\n let widthPx;\n let heightPx;\n\n if (typeof top === 'string' && top.trim().endsWith('%')) {\n topPx = (parseFloat(top) || 0) / 100 * refHeight;\n } else if (typeof top === 'number') {\n topPx = top;\n } else {\n topPx = parseFloat(top) || 0;\n }\n\n if (typeof left === 'string' && left.trim().endsWith('%')) {\n leftPx = (parseFloat(left) || 0) / 100 * refWidth;\n } else if (typeof left === 'number') {\n leftPx = left;\n } else {\n leftPx = parseFloat(left) || 0;\n }\n\n if (typeof width === 'string' && width.trim().endsWith('%')) {\n widthPx = (parseFloat(width) || 0) / 100 * refWidth;\n } else if (typeof width === 'number') {\n widthPx = width;\n } else {\n widthPx = parseFloat(width) || 0;\n }\n\n if (typeof height === 'string' && height.trim().endsWith('%')) {\n heightPx = (parseFloat(height) || 0) / 100 * refHeight;\n } else if (typeof height === 'number') {\n heightPx = height;\n } else {\n heightPx = parseFloat(height) || 0;\n }\n\n fakeEl.style.cssText = `\n position: fixed !important;\n top: ${topPx}px !important;\n left: ${leftPx}px !important;\n width: ${widthPx}px !important;\n height: ${heightPx}px !important;\n visibility: hidden !important;\n pointer-events: none !important;\n z-index: -1 !important;\n `;\n }\n\n return this.mountEl(fakeEl, document.body);\n }\n\n getPreloaderTmpl() {\n return preloaderTmpl;\n }\n\n createPreloaderEl(data = {}) {\n return this.createEl('preloader', this.getPreloaderTmpl(), data);\n }\n\n mountPreloaderEl(data = {}) {\n return this.mountEl(this.createPreloaderEl(data), document.body);\n }\n\n removePreloaderEl() {\n return this.removeEl('preloader');\n }\n\n getOverlayDocumentPath() {\n const { innerWidth, innerHeight } = window;\n const { body: { scrollWidth, scrollHeight } } = document;\n\n const width = (innerWidth > scrollWidth) ? innerWidth : scrollWidth;\n const height = (innerHeight > scrollHeight) ? innerHeight : scrollHeight;\n\n return `M 0 0 H ${width} V ${height} H 0 V 0 Z`;\n }\n\n getOverlayStepPath(step) {\n const hasElement = step && step.element;\n const hasCoordinates = step && step.top !== undefined && step.left !== undefined && step.width && step.height;\n\n if (!hasElement && hasCoordinates) {\n return this.getOverlayOffsetPath(step);\n }\n return this.getOverlayElPath(this.getStepEl(step));\n }\n\n getOverlayOffsetPath(step) {\n let { padding } = this.options;\n padding = (padding) ? padding / 2 : 0;\n\n const { top, left, width, height } = step;\n\n const convertToPx = (value, axis) => {\n if (typeof value === 'string' && value.trim().endsWith('%')) {\n const percentage = parseFloat(value) || 0;\n return (axis === 'x')\n ? (percentage / 100) * window.innerWidth\n : (percentage / 100) * window.innerHeight;\n }\n return typeof value === 'number' ? value : parseFloat(value) || 0;\n };\n\n const topValue = convertToPx(top, 'y');\n const leftValue = convertToPx(left, 'x');\n const widthValue = convertToPx(width, 'x');\n const heightValue = convertToPx(height, 'y');\n\n const r = 4;\n\n let path = this.getOverlayDocumentPath();\n\n path += `M ${leftValue + r} ${topValue}\n a ${r},${r} 0 0 0 -${r},${r}\n V ${heightValue + topValue - r}\n a ${r},${r} 0 0 0 ${r},${r}\n H ${widthValue + leftValue - r}\n a ${r},${r} 0 0 0 ${r},-${r}\n V ${topValue + r}\n a ${r},${r} 0 0 0 -${r},-${r}Z`;\n\n return path;\n }\n\n getOverlayElPath(el) {\n let { padding } = this.options;\n padding = (padding) ? padding / 2 : 0;\n\n const { left, top, width, height } = el.getBoundingClientRect();\n const r = 4;\n\n let path = this.getOverlayDocumentPath();\n\n const x1 = Math.max(0, left - padding + r);\n const x2 = Math.min(window.innerWidth, width + left + padding - r);\n\n path += `M ${x1} ${top}\n a ${r},${r} 0 0 0 -${r},${r}\n V ${height + top - r}\n a ${r},${r} 0 0 0 ${r},${r}\n H ${x2}\n a ${r},${r} 0 0 0 ${r},-${r}\n V ${top + r}\n a ${r},${r} 0 0 0 -${r},-${r} Z`;\n\n return path;\n }\n\n getOverlayTmpl() {\n return overlayTmpl;\n }\n\n createOverlayEl(data = {}) {\n const defaults = {\n stop: async (...args) => {\n if (this.options.exitOverlay) {\n await this.stop(...args);\n }\n },\n path: this.getOverlayDocumentPath(),\n };\n\n return this.createEl('overlay', this.getOverlayTmpl(), { ...defaults, ...data });\n }\n\n mountOverlayEl(data = {}) {\n return this.mountEl(this.createOverlayEl(data), document.body);\n }\n\n removeOverlayEl() {\n return this.removeEl('overlay');\n }\n\n getInteractionTmpl() {\n return interactionTmpl;\n }\n\n createInteractionEl(data = {}) {\n let { interaction } = this.options;\n\n if (typeof this.currentStep.interaction === 'boolean') {\n interaction = this.currentStep.interaction;\n }\n\n const defaults = {\n ...this.getDefaultTmplData(),\n interaction,\n };\n\n return this.createEl('interaction', this.getInteractionTmpl(), { ...defaults, ...data });\n }\n\n mountInteractionEl(data = {}) {\n return this.mountEl(this.createInteractionEl(data), document.body);\n }\n\n removeInteractionEl() {\n return this.removeEl('interaction');\n }\n\n getControlTmpl() {\n return controlTmpl;\n }\n\n createControlEl(data = {}) {\n return this.createEl(\n 'control',\n this.getControlTmpl(),\n { ...this.getDefaultTmplData(), tooltipEl: this.createTooltipEl(data), ...data },\n );\n }\n\n mountControlEl(data = {}) {\n return this.mountEl(this.createControlEl(data), document.body);\n }\n\n removeControlEl() {\n return this.removeEl('control');\n }\n\n getTooltipTmpl() {\n return tooltipTmpl;\n }\n\n createTooltipEl(data = {}) {\n const defaults = {\n ...this.getDefaultTmplData(),\n progressbar: this.createProgressbarEl(data),\n // title: this.createTitleEl(data),\n description: this.createDescriptionEl(data),\n close: this.createCloseEl(data),\n customButtons: this.createCustomButtonsEl(data),\n previous: this.createPreviousEl(data),\n pagination: this.createPaginationEl(data),\n next: this.createNextEl(data),\n copyright: this.createCopyrightEl(data),\n notification: this.createNotificationEl(data),\n isCaret: this.currentStep?.isCaret,\n };\n\n return this.createEl('tooltip', this.getTooltipTmpl(), { ...defaults, ...data });\n }\n\n getCloseTmpl() {\n return closeTmpl;\n }\n\n createCloseEl(data = {}) {\n const step = this.currentStep || {};\n let iconCloseColor = step?.iconCloseColor;\n\n if (typeof iconCloseColor !== 'string' || !iconCloseColor.trim()) {\n iconCloseColor = '#000000';\n }\n\n return this.createEl('close', this.getCloseTmpl(), {\n ...this.getDefaultTmplData(),\n iconCloseColor,\n ...data,\n });\n }\n\n getProgressbarTmpl() {\n return progressbarTmpl;\n }\n\n createProgressbarEl(data = {}) {\n let { showProgressbar } = this.options;\n\n if (typeof this.currentStep.showProgressbar === 'boolean') {\n showProgressbar = this.currentStep.showProgressbar;\n }\n\n const progressMax = 100;\n const progressMin = 0;\n const progress = ((this.currentStepIndex + 1) / this.steps.length) * 100;\n\n const defaults = {\n ...this.getDefaultTmplData(),\n showProgressbar,\n progressMax,\n progressMin,\n progress,\n };\n\n return this.createEl('progressbar', this.getProgressbarTmpl(), { ...defaults, ...data });\n }\n\n getTitleTmpl() {\n return titleTmpl;\n }\n\n createTitleEl(data = {}) {\n const { title = '' } = this.currentStep;\n return this.createEl('title', this.getTitleTmpl(), { ...this.getDefaultTmplData(), title, ...data });\n }\n\n getDescriptionTmpl() {\n return descriptionTmpl;\n }\n\n createDescriptionEl(data = {}) {\n const { description = '' } = this.currentStep;\n\n return this.createEl(\n 'description',\n this.getDescriptionTmpl(),\n { ...this.getDefaultTmplData(), description, ...data },\n );\n }\n\n getCustomButtonsTmpl() {\n return customButtonsTmpl;\n }\n\n createCustomButtonsEl(data = {}) {\n const buttons = [];\n\n if (this.currentStep.buttons) {\n this.currentStep.buttons.forEach((button) => {\n let buttonEl = button;\n\n if (!isHtmlElement(buttonEl)) {\n const { onClick, tagName = 'button', title = '', class: className } = button;\n\n buttonEl = document.createElement(tagName);\n buttonEl.innerHTML = title;\n\n if (className) {\n buttonEl.className = className;\n }\n\n if (onClick) {\n buttonEl.addEventListener('click', (e) => {\n onClick.call(this, e);\n });\n }\n }\n\n buttons.push(buttonEl);\n });\n }\n\n return this.createEl(\n 'customButtons',\n this.getCustomButtonsTmpl(),\n { ...this.getDefaultTmplData(), buttons, ...data },\n );\n }\n\n getPaginationTmpl() {\n return paginationTmpl;\n }\n\n createPaginationEl(data = {}) {\n const {\n paginationTheme = this.options.paginationTheme,\n paginationCirclesMaxItems = this.options.paginationCirclesMaxItems,\n } = this.currentStep;\n\n let { showPagination } = this.options;\n\n if (typeof this.currentStep.showPagination === 'boolean') {\n showPagination = this.currentStep.showPagination;\n }\n\n return this.createEl(\n 'pagination',\n this.getPaginationTmpl(),\n {\n ...this.getDefaultTmplData(),\n showPagination,\n paginationTheme,\n paginationCirclesMaxItems,\n ...data,\n },\n );\n }\n\n getPreviousTmpl() {\n return previousTmpl;\n }\n\n createPreviousEl(data = {}) {\n let { showNavigation } = this.options;\n\n if (typeof this.currentStep.showNavigation === 'boolean') {\n showNavigation = this.currentStep.showNavigation;\n }\n\n return this.createEl(\n 'previous',\n this.getPreviousTmpl(),\n { ...this.getDefaultTmplData(), showNavigation, ...data },\n );\n }\n\n getNextTmpl() {\n return nextTmpl;\n }\n\n createNextEl(data = {}) {\n let { showNavigation } = this.options;\n\n if (typeof this.currentStep.showNavigation === 'boolean') {\n showNavigation = this.currentStep.showNavigation;\n }\n\n return this.createEl(\n 'next',\n this.getNextTmpl(),\n { ...this.getDefaultTmplData(), showNavigation, ...data },\n );\n }\n\n getCopyrightTmpl() {\n return copyrightTmpl;\n }\n\n createCopyrightEl(data = {}) {\n return this.createEl('copyright', this.getCopyrightTmpl(), { ...this.getDefaultTmplData(), ...data });\n }\n\n getNotificationTmpl() {\n return notificationTmpl;\n }\n\n createNotificationEl(data = {}) {\n return this.createEl(\n 'notification',\n this.getNotificationTmpl(),\n { ...this.getDefaultTmplData(), messages: this.notifications, ...data },\n );\n }\n\n notify(message) {\n this.notifications.push(message);\n\n const notificationEl = this.getEl('notification');\n\n if (notificationEl) {\n this.mountEl(this.createNotificationEl(), notificationEl.parentElement);\n }\n\n return this;\n }\n\n /**\n * Register an event listener for a tour event.\n *\n * Event names can be comma-separated to register multiple events.\n *\n * @param {string} event The name of the event to listen for.\n * @param {function} listener The event listener, accepts context.\n * @param {object} options Listener options\n * @return {this}\n */\n on(event, listener, options = {}) {\n // priorities from low to high\n const priorities = this.constructor.getEventListenersPriorities();\n\n let [priority] = priorities;\n\n if (options.priority && priorities.includes(options.priority)) {\n priority = options.priority;\n }\n\n const e = event.trim();\n\n this.listeners[e] = this.listeners[e] || {};\n this.listeners[e][priority] = this.listeners[e][priority] || [];\n this.listeners[e][priority].push(listener);\n\n return this;\n }\n\n /**\n * Emits an event by name to all registered listeners on that event.\n * Listeners will be called in the order that they were added. If a listener\n * returns `false`, no other listeners will be called.\n *\n * @param {string} event The name of the event to emit.\n * @param args The context args of the event, passed to listeners.\n * @returns {Promise}\n */\n emit(event, ...args) {\n // from high to low\n const priorities = [...this.constructor.getEventListenersPriorities()].reverse();\n\n const e = event.trim();\n\n let result = [];\n let promise = Promise.resolve(result);\n\n if (this.listeners[e]) {\n priorities.forEach((priority) => {\n const { [priority]: listeners } = this.listeners[e];\n\n if (listeners) {\n promise = promise\n .then(() => Promise.all(\n listeners.map((f) => Promise.resolve().then(() => f.apply(this, args))),\n ))\n .then((r) => {\n result = [...result, ...r];\n return result;\n });\n }\n });\n }\n\n return promise;\n }\n\n /**\n * Add keydown event listener\n * @return {this}\n */\n addOnKeydownListener() {\n // turn on keyboard navigation\n this.cache.set('onKeydownListener', this.getOnKeydownListener());\n window.addEventListener('keydown', this.cache.get('onKeydownListener'), true);\n\n return this;\n }\n\n /**\n * Return on key down event listener function\n * @returns {function}\n */\n getOnKeydownListener() {\n return (event) => {\n const { keyCode } = event;\n\n const { previous: previousCodes, next: nextCodes, stop: stopCodes } = {\n ...this.constructor.getDefaultKeyboardCodes(),\n ...this.options.useKeyboard,\n };\n\n // stop tour\n if (stopCodes && stopCodes.includes(keyCode)) {\n this.stop({ event });\n return;\n }\n\n // go to the previous step\n if (previousCodes && previousCodes.includes(keyCode)) {\n this.previous({ event });\n return;\n }\n\n // go to the next step\n if (nextCodes && nextCodes.includes(keyCode)) {\n this.next({ event });\n }\n };\n }\n\n /**\n * Remove keydown event listener\n * @return {this}\n */\n removeOnKeydownListener() {\n if (this.cache.has('onKeydownListener')) {\n window.removeEventListener('keydown', this.cache.get('onKeydownListener'), true);\n this.cache.delete('onKeydownListener');\n }\n\n return this;\n }\n\n /**\n * Add window resize event listener\n * @return {this}\n */\n addOnWindowResizeListener() {\n // turn on keyboard navigation\n this.cache.set('onWindowResizeListener', this.getOnWindowResizeListener());\n window.addEventListener('resize', this.cache.get('onWindowResizeListener'), true);\n\n return this;\n }\n\n /**\n * Return on window resize event listener function\n * @returns {function}\n */\n getOnWindowResizeListener() {\n return () => this.refresh();\n }\n\n /**\n * Remove window resize event listener\n * @return {this}\n */\n removeOnWindowResizeListener() {\n if (this.cache.has('onWindowResizeListener')) {\n window.removeEventListener('resize', this.cache.get('onWindowResizeListener'), true);\n this.cache.delete('onWindowResizeListener');\n }\n\n return this;\n }\n\n /**\n * Add window scroll event listener\n * @returns {GuideChimp}\n */\n addOnWindowScrollListener() {\n this.cache.set('onWindowScrollListener', this.getOnWindowScrollListener());\n window.addEventListener('scroll', this.cache.get('onWindowScrollListener'), true);\n\n return this;\n }\n\n /**\n * Return on window scroll event listener function\n * @returns {function}\n */\n getOnWindowScrollListener() {\n return () => this.refresh();\n }\n\n /**\n * Remove window resize event listener\n * @return {this}\n */\n removeOnWindowScrollListener() {\n if (this.cache.has('onWindowScrollListener')) {\n window.removeEventListener('scroll', this.cache.get('onWindowScrollListener'), true);\n this.cache.delete('onWindowScrollListener');\n }\n\n return this;\n }\n\n removeListeners() {\n this.removeOnKeydownListener();\n this.removeOnWindowResizeListener();\n this.removeOnWindowScrollListener();\n }\n\n observeStep() {\n this.observeResizing();\n this.observeMutation();\n }\n\n observeResizing(options = { box: 'border-box' }) {\n let { resizingObserver: observer } = this.observers;\n\n if (!observer && typeof ResizeObserver !== 'undefined') {\n observer = new ResizeObserver(() => {\n if (!this && !this.currentStep) {\n return;\n }\n this.refresh();\n });\n\n this.observers.resizingObserver = observer;\n }\n\n if (observer) {\n // observe elements\n observer.observe(this.getStepEl(this.currentStep), options);\n return true;\n }\n\n return false;\n }\n\n unobserveResizing() {\n const { resizingObserver: observer } = this.observers;\n\n if (observer) {\n observer.disconnect();\n return true;\n }\n\n return false;\n }\n\n observeMutation() {\n let { mutationObserver: observer } = this.observers;\n\n if (!observer) {\n observer = new MutationObserver((mutations) => {\n if (!this && !this.currentStep) {\n return;\n }\n\n const { element } = this.currentStep;\n\n if (!element) {\n return;\n }\n\n let el = this.getStepEl(this.currentStep);\n\n const isElExists = () => el && !this.isEl(el, 'fakeStep');\n\n mutations.forEach((record) => {\n if (isElExists()) {\n if (record.type === 'childList' && record.removedNodes.length) {\n record.removedNodes.forEach((node) => {\n if (node === el || node.contains(el)) {\n el = this.getStepEl(this.currentStep);\n this.scrollParentsToStepEl();\n this.refresh();\n }\n });\n }\n } else if (record.type === 'childList' && record.addedNodes.length) {\n el = this.getStepEl(this.currentStep);\n\n if (isElExists()) {\n this.scrollParentsToStepEl();\n this.refresh();\n }\n }\n });\n });\n\n this.observers.mutationObserver = observer;\n }\n\n observer.observe(this.getStepEl(this.currentStep).ownerDocument.body, {\n childList: true,\n subtree: true,\n });\n\n return true;\n }\n\n unobserveMutation() {\n const { mutationObserver: observer } = this.observers;\n\n if (observer) {\n observer.disconnect();\n return true;\n }\n\n return false;\n }\n\n unobserveStep() {\n this.unobserveResizing();\n this.unobserveMutation();\n }\n\n beforeChangeStep() {\n const currentStep = this.currentStep;\n this.unmountStep();\n this.unobserveStep();\n }\n\n /**\n * Refresh layers position\n * @returns {this}\n */\n refresh() {\n if (!this.currentStep) {\n return this;\n }\n\n this.highlightStepEl();\n\n this.setControlPosition(this.getEl('control'));\n this.setInteractionPosition(this.getEl('interaction'));\n this.setTooltipPosition(this.getEl('tooltip'));\n\n return this;\n }\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseStorageApi } from '../common/base-api';\nvar IS_PERSISENT = false;\nvar MemoryStorage = /** @class */ (function (_super) {\n __extends(MemoryStorage, _super);\n function MemoryStorage() {\n return _super.call(this, IS_PERSISENT) || this;\n }\n return MemoryStorage;\n}(BaseStorageApi));\nvar ms = new MemoryStorage();\nexport { ms as MemoryStorage };\n","// Module\nvar code = \"<div class=\\\"gc-fake-step\\\">Ishaan</div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-preloader\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-overlay\\\" @click=\\\"stop({ event: $event })\\\"> <svg class=\\\"svg-overlay\\\"> <path d=\\\"{{path}}\\\"> <animate attributeName=\\\"d\\\" dur=\\\"200ms\\\"/> </path> </svg> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div if=\\\"!interaction\\\" class=\\\"gc-interaction gc-disable\\\"> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-control\\\"> {{ tooltipEl }} </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-tooltip\\\"> {{ progressbar }} {{ description }} {{ close }} {{ customButtons }} {{ notification }} </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-close\\\" style=\\\"--gc-close-foreground: {{iconCloseColor}};\\\" @click=\\\"stop({ event: $event })\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div if=\\\"showProgressbar\\\" class=\\\"gc-progressbar\\\" role=\\\"progressbar\\\" aria-valuemin=\\\"{{ progressMin }}\\\" aria-valuemax=\\\"{{ progressMax }}\\\" aria-valuenow=\\\"{{ progress }}\\\" style=\\\"width:{{ progress }}%;\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div if=\\\"title\\\" html=\\\"{{ title }}\\\" class=\\\"gc-title\\\"> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div if=\\\"description\\\" html=\\\"{{ description }}\\\" class=\\\"gc-description\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div if=\\\"buttons.length\\\" class=\\\"gc-custom-buttons\\\"> <template for=\\\"button in buttons\\\"> {{ button }} </template> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div if=\\\"showPagination && steps.length > 1\\\" class=\\\"gc-pagination\\\"> <template if=\\\"paginationTheme === 'numbers' || steps.length >= paginationCirclesMaxItems\\\"> <ul class=\\\"gc-pagination-theme-numbers\\\"> <template for=\\\"(step, index) in steps\\\"> <template if=\\\"index === 0\\\"> <li if=\\\"index === currentStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-current gc-pagination-active\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === previousStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-previous\\\" @click=\\\"previous({ event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === nextStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-next\\\" @click=\\\"next({ event: $event })\\\"> {{ index + 1 }} </li> <li else class=\\\"gc-pagination-item\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> </template> <template if=\\\"currentStepIndex < 3\\\"> <template if=\\\"index > 0 && index < 5\\\"> <li if=\\\"index === currentStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-current gc-pagination-active\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === previousStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-previous\\\" @click=\\\"previous({ event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === nextStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-next\\\" @click=\\\"next({ event: $event })\\\"> {{ index + 1 }} </li> <li else class=\\\"gc-pagination-item\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> </template> <li elseif=\\\"index === 5 && index !== steps.length - 1\\\" class=\\\"gc-pagination-dots\\\"> ... </li> </template> <template elseif=\\\"steps.length - currentStepIndex < 5\\\"> <template if=\\\"steps.length - index < 6 && steps.length - 1 !== index\\\"> <li if=\\\"index === currentStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-current gc-pagination-active\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === previousStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-previous\\\" @click=\\\"previous({ event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === nextStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-next\\\" @click=\\\"next({ event: $event })\\\"> {{ index + 1 }} </li> <li else class=\\\"gc-pagination-item\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> </template> <li elseif=\\\"steps.length - index === 6 && index !== 0\\\" class=\\\"gc-pagination-dots\\\"> ... </li> </template> <template else> <li if=\\\"currentStepIndex - index === 3 && index !== 0\\\" class=\\\"gc-pagination-dots\\\"> ... </li> <template elseif=\\\"(currentStepIndex - index >= 0 && currentStepIndex - index < 3)\\n || ( index - currentStepIndex >= 0 && index - currentStepIndex < 3)\\\"> <li if=\\\"index === currentStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-current gc-pagination-active\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === previousStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-previous\\\" @click=\\\"previous({ event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === nextStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-next\\\" @click=\\\"next({ event: $event })\\\"> {{ index + 1 }} </li> <li else class=\\\"gc-pagination-item\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> </template> <li elseif=\\\"index - currentStepIndex === 3 && steps.length -1 !== index\\\" class=\\\"gc-pagination-dots\\\"> ... </li> </template> <template if=\\\"index + 1 === steps.length\\\"> <li if=\\\"index === currentStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-current gc-pagination-active\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === previousStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-previous\\\" @click=\\\"previous({ event: $event })\\\"> {{ index + 1 }} </li> <li elseif=\\\"index === nextStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-next\\\" @click=\\\"next({ event: $event })\\\"> {{ index + 1 }} </li> <li else class=\\\"gc-pagination-item\\\" @click=\\\"go(index, true, { event: $event })\\\"> {{ index + 1 }} </li> </template> </template> </ul> </template> <template else> <div class=\\\"gc-pagination-theme-circles\\\"> <template for=\\\"(step, index) in steps\\\"> <div if=\\\"index === currentStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-current gc-pagination-active\\\"></div> <div elseif=\\\"index === previousStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-previous\\\" @click=\\\"previous({ event: $event })\\\"></div> <div elseif=\\\"index === nextStepIndex\\\" class=\\\"gc-pagination-item gc-pagination-item-next\\\" @click=\\\"next({ event: $event })\\\"></div> <div else class=\\\"gc-pagination-item\\\" @click=\\\"go(index, true, { event: $event })\\\"></div> </template> </div> </template> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-navigation-prev {{ (!previousStep || !showNavigation) ? 'gc-hidden': '' }}\\\" @click=\\\"previous({ event: $event })\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-navigation-next {{ (!nextStep || !showNavigation) ? 'gc-hidden': '' }}\\\" @click=\\\"next({ event: $event })\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"gc-copyright\\\">Made with pagepilot.fabbuilder.com</div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div html=\\\"{{ messages[0] }}\\\" class=\\\"gc-notification\\\"></div>\";\n// Exports\nexport default code;","var BaseStorageApi = /** @class */ (function () {\n function BaseStorageApi(persistent) {\n this.persistent = persistent;\n this._lootBag = {};\n // By default no TTL is set\n this._ttl = null;\n }\n Object.defineProperty(BaseStorageApi.prototype, \"timeoutInSeconds\", {\n /**\n * @public\n * @returns ttl in seconds which applies to all keys that don't\n * have a key-level ttl set.\n */\n get: function () {\n return this._ttl;\n },\n /**\n * @public\n * @param ttlValue - number of seconds to set. applies to all\n * keys that don't have a key-leve ttl set.\n */\n set: function (ttlValue) {\n // Allow null to be set to disable a numeric top-level ttl\n if (ttlValue === null || BaseStorageApi.isPositiveInteger(ttlValue)) {\n this._ttl = ttlValue;\n }\n else {\n throw new Error(\"'\".concat(ttlValue, \"' is not a positive integer required when setting the top-level TTL\"));\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @public\n * @param key - name of key\n * @param val - data to be stored\n * @param keyTimeout - optional key-level ttl in seconds. The key level\n * ttl overrides the global ttl if it had been set.\n */\n BaseStorageApi.prototype.put = function (key, val, keyTimeout) {\n if (keyTimeout === void 0) { keyTimeout = null; }\n if (keyTimeout !== null && !BaseStorageApi.isPositiveInteger(keyTimeout)) {\n throw new Error(\"'\".concat(keyTimeout, \"' is not a positive integer required when setting a key-level TTL\"));\n }\n var item = { v: val, t: this._getNow(), kt: keyTimeout };\n if (this.persistent) {\n localStorage.setItem(key, JSON.stringify(item));\n }\n else {\n this._lootBag[key] = item;\n }\n };\n /**\n * @public\n * @param key - key to access stored data\n * @param defaultValue - optional data if key does not exist.\n * @returns any or null\n */\n BaseStorageApi.prototype.get = function (key, defaultValue) {\n if (defaultValue === void 0) { defaultValue = null; }\n if (this.persistent) { // local storage\n if (key in localStorage) {\n var val = localStorage.getItem(key);\n try {\n var obj = JSON.parse(val);\n if (this._ttl === null && obj.kt === null) {\n return obj.v;\n }\n else {\n if (this._isCacheStale(obj)) {\n this.removeKey(key);\n return defaultValue;\n }\n else {\n return obj.v;\n }\n }\n }\n catch (e) {\n // Invalid JSON format retrieved from localStorage. Per developers'\n // concensus, it was considered better to not throw in this case and\n // instead return either whatever was found in localStorage or the\n // default value.\n return defaultValue === null ? val : defaultValue;\n }\n }\n else {\n return defaultValue;\n }\n }\n else { // in memory\n if (key in this._lootBag) {\n var obj = this._lootBag[key];\n if (this._ttl === null && obj.kt === null) {\n return obj.v;\n }\n else {\n if (this._isCacheStale(obj)) {\n this.removeKey(key);\n return defaultValue;\n }\n else {\n return obj.v;\n }\n }\n }\n else {\n return defaultValue;\n }\n }\n };\n /**\n * @public\n * @param key\n */\n BaseStorageApi.prototype.removeKey = function (key) {\n if (this.persistent) {\n if (key in localStorage) {\n localStorage.removeItem(key);\n }\n }\n else {\n if (key in this._lootBag) {\n delete this._lootBag[key];\n }\n }\n };\n /**\n * @public\n * @param key - key used to store data\n * @returns true if key exists and not stale, false otherwise\n */\n BaseStorageApi.prototype.keyExists = function (key) {\n if (this.persistent) { // local storage\n if (key in localStorage) {\n var val = localStorage.getItem(key);\n try {\n var obj = JSON.parse(val);\n if (this._ttl === null && obj.kt === null) {\n return true;\n }\n else {\n if (this._isCacheStale(obj)) {\n this.removeKey(key);\n return false;\n }\n else {\n return true;\n }\n }\n }\n catch (e) {\n return true;\n }\n }\n else {\n return false;\n }\n }\n else { // in memory\n if (key in this._lootBag) {\n var obj = this._lootBag[key];\n if (this._ttl === null && obj.kt === null) {\n return true;\n }\n else {\n if (this._isCacheStale(obj)) {\n this.removeKey(key);\n return false;\n }\n else {\n return true;\n }\n }\n }\n else {\n return false;\n }\n }\n };\n /**\n * Remove all keys in storage\n * @public\n */\n BaseStorageApi.prototype.clear = function () {\n if (this.persistent) {\n localStorage.clear();\n }\n else {\n this._lootBag = {};\n }\n };\n /**\n * @public\n * @returns list of keys\n */\n BaseStorageApi.prototype.keys = function () {\n return this.persistent ? Object.keys(localStorage) : Object.keys(this._lootBag);\n };\n /**\n * Remove keys that are detected to be stale. Leave other keys intact. This\n * method is executed only if invoked by an explicit call by the developer who\n * uses this library; it is not an automatic garbage collector mechanism.\n * @public\n * @returns list of keys that were deleted\n */\n BaseStorageApi.prototype.runGarbageCollector = function () {\n var garbageKeys = [];\n if (this.persistent) {\n for (var _i = 0, _a = Object.keys(localStorage); _i < _a.length; _i++) {\n var key = _a[_i];\n var val = localStorage.getItem(key);\n try {\n var obj = JSON.parse(val);\n if (!('v' in obj && 't' in obj && 'kt' in obj)) {\n // This object not stored via this module. leave it alone.\n continue;\n }\n if (!(this._ttl === null && obj.kt === null)) {\n if (this._isCacheStale(obj)) {\n localStorage.removeItem(key);\n garbageKeys.push(key);\n }\n }\n }\n catch (e) {\n // skip this item\n }\n }\n }\n else {\n for (var _b = 0, _c = Object.keys(this._lootBag); _b < _c.length; _b++) {\n var key = _c[_b];\n if (!(this._ttl === null && this._lootBag[key].kt === null)) {\n if (this._isCacheStale(this._lootBag[key])) {\n delete this._lootBag[key];\n garbageKeys.push(key);\n }\n }\n }\n }\n return garbageKeys;\n };\n /**\n * @public\n * @returns true if browser's localStorage is available, false otherwise\n */\n BaseStorageApi.prototype.isLocalStorageAvailable = function () {\n var key = new Date().getTime().toString();\n var val = key;\n try {\n localStorage.setItem(key, val);\n localStorage.removeItem(key);\n return true;\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * @private\n * @returns unix time\n */\n BaseStorageApi.prototype._getNow = function () {\n return Math.floor(Date.now() / 1000);\n };\n /**\n * This method is called only when at least one of the timeouts has been set.\n * key timeout has priority. global this._ttl is used only if a key-level\n * timeout hasn't been set.\n *\n * @private\n * @param obj - retrieved data from storage\n * @returns true if key is stale, false otherwise\n */\n BaseStorageApi.prototype._isCacheStale = function (obj) {\n var timestamp = obj.t;\n var timeout = obj.kt === null ? this._ttl : obj.kt;\n return (this._getNow() - timestamp) > timeout;\n };\n /**\n * @private\n * @param n - ostensibly a positive integer\n * @returns true if a positive integer, false otherwise\n */\n BaseStorageApi.isPositiveInteger = function (n) {\n return typeof n === 'number'\n && isFinite(n)\n && Math.floor(n) === n\n && n > 0;\n };\n return BaseStorageApi;\n}());\nexport { BaseStorageApi };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseStorageApi } from '../common/base-api';\nvar IS_PERSISENT = true;\nvar LocalStorage = /** @class */ (function (_super) {\n __extends(LocalStorage, _super);\n function LocalStorage() {\n return _super.call(this, IS_PERSISENT) || this;\n }\n return LocalStorage;\n}(BaseStorageApi));\nvar ls = new LocalStorage();\nexport { ls as LocalStorage };\n","/**\n * Copyright (C) 2020 Labs64 GmbH\n *\n * This source code is licensed under the European Union Public License, version 1.2\n * located in the LICENSE file\n */\nimport Beacons from \"./Beacons\";\nimport \"./assets/style.scss\";\nimport { TRIGGER_EVENTS } from \"../../utils/constants\";\n\nexport default (Class, factory) => {\n // eslint-disable-next-line no-param-reassign\n factory.beacons = (beacons, options = {}) =>\n new (class extends Beacons {\n getDataBeacons(ids) {\n const data = super.getDataBeacons(ids);\n\n data.forEach((beacon) => {\n const { id, element: el } = beacon;\n\n let tour = \"\";\n\n const dataGlobalTourAttrName = `${this.constructor.getBeaconDataPrefix()}-tour`;\n const dataBeaconTourAttrName = `${this.constructor.getBeaconDataPrefix()}-${id}-tour`;\n\n if (el.attributes[dataGlobalTourAttrName]) {\n const { value } = el.attributes[dataGlobalTourAttrName];\n tour = value;\n }\n\n if (el.attributes[dataBeaconTourAttrName]) {\n const { value } = el.attributes[dataBeaconTourAttrName];\n tour = value;\n }\n\n if (tour) {\n // eslint-disable-next-line no-param-reassign\n beacon.tour = tour;\n }\n });\n\n return data;\n }\n\n createGuideInstance(beacon, Class) {\n if (!beacon?.tour) return null;\n\n if (typeof beacon.tour === \"string\" || Array.isArray(beacon.tour)) {\n return new Class(beacon.tour);\n }\n\n if (beacon.tour instanceof Class) {\n return beacon.tour;\n }\n\n if (typeof beacon.tour === \"object\") {\n const { steps, options: tourOptions } = beacon.tour;\n return new Class(steps, tourOptions);\n }\n\n return null;\n }\n\n // Start guide if instance can be created\n runGuide(beacon, GuideClass) {\n const guide = this.createGuideInstance(beacon, GuideClass);\n const hasTooltip = document.querySelector(\".gc-tooltip\") !== null;\n\n if (guide && !hasTooltip) {\n guide.start();\n }\n }\n\n // Attach event listener dynamically based on beacon.trigger\n attachGuideEvent(el, beacon, Class) {\n const trigger = beacon?.trigger;\n const handler = () => this.runGuide(beacon, Class);\n\n switch (trigger) {\n case TRIGGER_EVENTS.onClick:\n el.addEventListener(\"click\", handler);\n break;\n\n case TRIGGER_EVENTS.onHover:\n el.addEventListener(\"mouseenter\", handler);\n break;\n\n case TRIGGER_EVENTS.onLongPress: {\n let pressTimer;\n const startPress = () => (pressTimer = setTimeout(handler, 600));\n const clearPress = () => clearTimeout(pressTimer);\n\n el.addEventListener(\"mousedown\", startPress);\n el.addEventListener(\"mouseup\", clearPress);\n el.addEventListener(\"mouseleave\", clearPress);\n el.addEventListener(\"touchstart\", startPress);\n el.addEventListener(\"touchend\", clearPress);\n break;\n }\n\n case TRIGGER_EVENTS.onPageLoad:\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", handler);\n } else {\n handler();\n }\n break;\n\n default:\n console.warn(`Unsupported trigger: ${trigger}`);\n }\n }\n\n // Creates beacon element and attaches events\n createBeaconEl(beacon) {\n const el = super.createBeaconEl(beacon);\n this.attachGuideEvent(el, beacon, Class);\n return el;\n }\n })(beacons, options);\n};\n","//@ts-nocheck\n// import GuideChimp from \"./GuideChimp\";\n// //import Beacons from \"./plugins/beacons\";\n// import \"./index.scss\";\n// // import Information from \"./plugins/information\";\n// // import Beacons from \"./plugins/beacons\";\n// // class AHDjs {\n// // private guideChimp: any;\n// // private appId: string;\n// // private contextToursMapData: any;\n// // constructor(applicationId: any, tour: any, options: any) {\n// // this.appId = applicationId;\n// // //@ts-ignore\n// // this.guideChimp = new GuideChimp(tour, options);\n\n// // this.guideChimp.prototype = GuideChimp.prototype;\n// // this.guideChimp.plugins = new Set();\n\n// // //@ts-ignore\n// // // this.guideChimp.extend = (plugin, ...args) => {\n// // // if (!this.guideChimp.plugins.has(plugin)) {\n// // // this.guideChimp.plugins.add(plugin);\n// // // plugin(GuideChimp, this.guideChimp, ...args);\n// // // }\n// // // return this.guideChimp;\n// // // };\n\n// // // test beacon extension\n// // // @ts-ignore\n// // const pluginsToLoad = [Beacons, Information];\n// // pluginsToLoad.forEach((pluginClass) => {\n// // const plugin = pluginClass;\n// // if (!this.guideChimp.plugins.has(plugin)) {\n// // this.guideChimp.plugins.add(plugin);\n// // // @ts-ignore\n// // plugin(GuideChimp, this.guideChimp, tour, options);\n// // }\n// // });\n// // }\n\n// // updatePageUrl = async (url: string, refetch: boolean) => {\n// // await this.stop();\n// // // todo: local caching and use https://github.com/pillarjs/path-to-regexp to find exact match\n// // const respons: any = await fetch(\n// // `https://ahd-be-jggub5n6qq-em.a.run.app/api/tenant/${this.appId}/contexttour?filter[isActive]=true`\n// // ).then((res) => res.json());\n\n// // this.contextToursMapData = respons.rows;\n// // //if there is anything to open onload\n// // const onboardTour = respons.rows\n// // .filter((row: any) => !!row.content)\n// // .map((row: any) => {\n// // return {\n// // element: row.selector,\n// // title: row.content.title,\n// // description: row.content.content,\n// // tour: [\n// // {\n// // title: \"Multi Feature\",\n// // description: \"Multi Feature beacon clicked.\",\n// // },\n// // ],\n// // };\n// // });\n// // this.setTour(onboardTour);\n// // this.start();\n// // };\n\n// // setTour = (tour: any) => {\n// // this.guideChimp.setTour(tour);\n// // };\n// // beacons = (...args: any) => {\n// // // @ts-ignore\n// // // this.guideChimp.beacon = new Beacons(...args);\n\n// // const tourBeacons = this.contextToursMapData\n// // .filter((row: any) => !!row.content)\n// // .map((row: any) => {\n// // return {\n// // element: row.selector,\n// // title: row.content.title,\n// // description: row.content.content,\n// // tour: [\n// // {\n// // title: \"BC Multi Feature\",\n// // description: \"BC Multi Feature beacon clicked.\",\n// // },\n// // {\n// // title: \"B2C Multi Feature\",\n// // description: \"B2C Multi Feature beacon clicked.\",\n// // },\n// // ],\n// // };\n// // });\n\n// // const b = this.guideChimp.beacons(tourBeacons);\n// // setTimeout(() => {\n// // b.showAll();\n// // }, 1000);\n// // };\n// // start = (...args: any) => {\n// // this.guideChimp.start(...args);\n// // };\n// // stop = async (...args: any) => {\n// // await this.guideChimp.stop(...args);\n// // };\n// // showInformation = (...args: any) => {\n// // // @ts-ignore\n// // // this.guideChimp.beacon = new Beacons(...args);\n// // const b = this.guideChimp.information(...args);\n// // setTimeout(() => {\n// // b.showAll();\n// // }, 1000);\n// // };\n// // // guideChimp.prototype = GuideChimp.prototype;\n// // // guideChimp.plugins = new Set();\n\n// // // guideChimp.extend = (plugin, ...args) => {\n// // // if (!guideChimp.plugins.has(plugin)) {\n// // // guideChimp.plugins.add(plugin);\n// // // plugin(GuideChimp, guideChimp, ...args);\n// // // }\n// // // return guideChimp;\n// // // };\n\n// // // module.exports = guideChimp;\n// // }\n\n// class AHDjs {\n// private guideChimp;\n// constructor(...args: any) {\n// // @ts-ignore\n// this.guideChimp = new GuideChimp(...args);\n// }\n// public start(...args: any) {\n// this.guideChimp.start(...args);\n// }\n// }\n// export default AHDjs;\n\n/**\n * Copyright (C) 2020 Labs64 GmbH\n *\n * This source code is licensed under the European Union Public License, version 1.2\n * located in the LICENSE file\n */\n\nimport GuideChimp from \"./GuideChimp\";\nimport { LocalStorage } from \"ttl-localstorage\";\nimport Beacons from \"./plugins/beacons\";\n/* ============\n * Styling\n * ============\n *\n * Import the library styling.\n */\nimport \"./index.scss\";\n\nconst { match } = require(\"path-to-regexp\");\n\nconst HELP_DATA_STORAGE_KEY = \"AHD_HELP_DATA\";\nconst TOUR_DATA_STORAGE_KEY = \"AHD_TOUR_DATA\";\nconst APP_BANNER_DATA_STORAGE_KEY = \"APP_BANNER_DATA\";\nconst HIGHLIGHTS_DATA_STORAGE_KEY = \"AHD_HIGHLIGHTS_DATA\";\nconst AHD_VISITOR_STATS_STORAGE_KEY = \"AHD_VISITOR_STATS\";\n\nclass AHD extends GuideChimp {\n constructor(tour, options = {}) {\n\n if (options.userId && !options.visitorId) {\n options.visitorId = options.userId;\n }\n super(tour, options);\n this.attachPlugins();\n }\n\n attachPlugins() {\n const pluginsToLoad = [Beacons];\n pluginsToLoad.forEach((pluginClass) => {\n AHDjs.extend(pluginClass);\n });\n }\n\n async initializeSiteMap(refetch: boolean) {\n let highlightsData = LocalStorage.get(HIGHLIGHTS_DATA_STORAGE_KEY);\n if (!highlightsData || refetch) {\n // highlightsData = await this.fetchAndCacheHighlightsData(highlightsData);\n }\n let toursData = LocalStorage.get(TOUR_DATA_STORAGE_KEY);\n if (!toursData || refetch) {\n toursData = await this.fetchAndCacheTourData(toursData);\n }\n // let helpData = LocalStorage.get(HELP_DATA_STORAGE_KEY);\n // if (!helpData || refetch) {\n // helpData = await this.fetchAndCacheHelpData(helpData);\n // }\n let stats = LocalStorage.get(AHD_VISITOR_STATS_STORAGE_KEY);\n if (!stats || refetch) {\n stats = await this.fetchAndCachePageVisitsData(stats);\n }\n }\n\n async getHelpContent(url: string, refetch: boolean) {\n let helpData = LocalStorage.get(TOUR_DATA_STORAGE_KEY);\n\n if (!helpData || refetch) {\n helpData = await this.fetchAndCacheTourData(helpData);\n }\n\n const applicableHelp = this.getApplicabeDataForUrl(\n helpData,\n url,\n \"help\",\n true\n );\n return applicableHelp;\n }\n\n private normalizeDimension(val: any): string | number | undefined {\n if (val === undefined || val === null) return undefined;\n if (typeof val === 'string') {\n const trimmed = val.trim();\n return trimmed.endsWith('%') ? trimmed : trimmed;\n }\n return typeof val === 'number' ? val : parseInt(val);\n }\n\n async showPageTour(url: string,) {\n await this.stop();\n let toursData = LocalStorage.get(TOUR_DATA_STORAGE_KEY);\n\n const applicableTours = this.getApplicabeDataForUrl(\n toursData.tours,\n url,\n false\n );\n\n if (applicableTours?.length > 0) {\n const stats = LocalStorage.get(AHD_VISITOR_STATS_STORAGE_KEY) || {};\n const visited = stats?.visited || [];\n const nVisited = new Set(visited);\n\n applicableTours.forEach((tour: any) => {\n if (!nVisited.has(tour.slug)) {\n nVisited.add(tour.slug);\n const entityId = tour.id || tour._id;\n this.markPageVisited(tour.slug, \"tour\", entityId);\n }\n });\n\n LocalStorage.put(\n AHD_VISITOR_STATS_STORAGE_KEY,\n { ...stats, visited: [...nVisited] },\n 86400\n );\n\n const onboardTour = applicableTours.flatMap((row: any) =>\n Array.isArray(row.steps)\n ? row.steps\n .filter((step: any) => !!step.content)\n .map((step: any) => ({\n element: step.selector,\n description: step.content,\n position: step.position,\n animationType: step.animationType,\n delay: step.delay,\n isBackdrop: step.isBackdrop,\n isCaret: step.isCaret,\n dismissalSetting: step.dismissalSetting,\n showProgressbar: this.options.showProgressbar,\n width: this.normalizeDimension(step.canvasWidth || step.styles?.width),\n height: this.normalizeDimension(step.canvasHeight || step.styles?.height),\n top: this.normalizeDimension(step.styles?.top || step.top),\n left: this.normalizeDimension(step.styles?.left || step.left),\n stepId: step.id,\n id: row.id,\n type: \"tour\",\n iconCloseColor: step.style?.iconCloseColor ?? step.behaviour?.iconCloseColor,\n }))\n : []\n );\n console.log('Tour', onboardTour);\n this.setTour(onboardTour);\n this.start();\n }\n }\n\n async showAppBanner(url: string, refetch: boolean) {\n let appBannerData = LocalStorage.get(APP_BANNER_DATA_STORAGE_KEY);\n\n if (!appBannerData || refetch) {\n appBannerData = await this.fetchAndCacheBannerData(appBannerData);\n }\n\n return appBannerData;\n }\n\n async fetchFaqs(slug) {\n const response: any = await fetch(\n `${this.options.apiHost}/api/tenant/${this.options.applicationId}/faq-group-list?filter[slug]=${slug}&filter[status]=published&limit=10&orderBy=order_ASC`\n ).then((res) => res.json());\n\n return response;\n }\n\n async showPageBeacons(url: string) {\n await this.stop();\n let toursData = LocalStorage.get(TOUR_DATA_STORAGE_KEY);\n const applicableTours = this.getApplicabeDataForUrl(\n toursData.tooltips,\n url,\n true\n );\n if (applicableTours.length > 0) {\n const stats = LocalStorage.get(AHD_VISITOR_STATS_STORAGE_KEY) || {};\n const visited = stats?.visited || [];\n const nVisited = new Set(visited);\n applicableTours.forEach((tour: any) => {\n if (!nVisited.has(tour.slug)) {\n nVisited.add(tour.slug);\n const entityId = applicableTours[0].id || applicableTours[0]._id;\n this.markPageVisited(tour.slug, \"tooltip\", entityId);\n }\n });\n\n LocalStorage.put(\n AHD_VISITOR_STATS_STORAGE_KEY,\n { ...stats, visited: [...nVisited] },\n 86400\n );\n const beacons = applicableTours.flatMap((tour: any) => {\n const stepsArray = Array.isArray(tour.step) ? tour.step : tour.step ? [tour.step] : [];\n\n return stepsArray\n .filter((step: any) => !!step.content)\n .map((step: any) => {\n const behavior = step.contentMetadata?.document?.root?.data?.behaviour || {};\n\n const tourSteps = [\n {\n element: step.selector,\n title: step.title,\n description: step.content,\n animationType: step.animationType || behavior.animationType || \"fadeIn\",\n delay: step.delay || behavior.delay || 0,\n isBackdrop:\n step.isBackdrop !== undefined\n ? step.isBackdrop\n : behavior.isBackdrop !== undefined\n ? behavior.isBackdrop\n : true,\n isCaret:\n step.isCaret !== undefined\n ? step.isCaret\n : behavior.isCaret !== undefined\n ? behavior.isCaret\n : true,\n position: step.position || behavior.position,\n stepId: step.id,\n id: tour.id,\n type: \"tooltip\",\n },\n ];\n\n const beacon: any = {\n element: step.selector || behavior.selector,\n position: step.position || behavior.position || \"right\",\n boundary: \"outer\",\n class: \"beacon-labs64\",\n triggerMode: step.triggerMode || behavior.triggerMode,\n trigger: step.triggerBehaviour || behavior.triggerBehaviour || \"onClick\",\n tour: tourSteps,\n };\n\n const triggerIconData = step.triggerIcon || behavior.triggerIcon;\n const triggerLabelData = step.triggerLabel || behavior.triggerLabel;\n\n if (beacon.triggerMode === \"icon\" && triggerIconData) {\n let iconType = \"beacon\";\n if (triggerIconData.type === \"info\") iconType = \"info\";\n if (triggerIconData.type === \"success\") iconType = \"success\";\n if (triggerIconData.type === \"warning\") iconType = \"warning\";\n if (triggerIconData.type === \"helpIcon\") iconType = \"helpIcon\";\n\n beacon.triggerIcon = {\n type: iconType,\n color: triggerIconData.color || \"#000000\",\n opacity: triggerIconData.opacity ? triggerIconData.opacity / 100 : 1,\n isAnimated: triggerIconData.isAnimated || false,\n };\n } else if (beacon.triggerMode === \"label\" && triggerLabelData) {\n beacon.triggerLabel = {\n text: triggerLabelData.text,\n color: triggerLabelData.color || \"#000000\",\n background: triggerLabelData.backgroundColor || \"#ffffff\",\n };\n }\n\n return beacon;\n });\n });\n console.log('beacons', beacons);\n\n AHDjs.beacons(beacons, {\n boundary: \"outer\",\n }).showAll();\n }\n }\n async setBeacons(beacons) {\n\n AHDjs.beacons(beacons, {\n boundary: \"outer\",\n }).showAll();\n }\n\n async showHighlights(url: string, refetch: boolean) {\n await this.stop();\n let toursData = LocalStorage.get(TOUR_DATA_STORAGE_KEY);\n if (!toursData || refetch) {\n toursData = await this.fetchAndCacheTourData(toursData, url);\n }\n if (toursData.tours?.length > 0) {\n this.showPageTour(url);\n }\n if (toursData.tooltips?.length > 0) {\n this.showPageBeacons(url);\n }\n }\n\n async showPageHighlights(url: string, refetch: boolean, force = false) {\n await this.stop();\n let highlightsData = LocalStorage.get(HIGHLIGHTS_DATA_STORAGE_KEY);\n\n if (!highlightsData || refetch) {\n // highlightsData = await this.fetchAndCacheHighlightsData(highlightsData);\n }\n const applicableHighlights = this.getUnAcknowledgedHightlightsForUrl(\n highlightsData,\n url,\n \"highlight\",\n force\n );\n\n //if there is anything to open\n const beacons = applicableHighlights.map((row: any) => {\n return {\n element: row.selector,\n position: row.position,\n onClick: async () => {\n this.acknowledgeHighlight(row.id);\n },\n tour: [\n {\n element: row.selector,\n position: row.position,\n title: row.content.title,\n description: this.generateDescription(row.content),\n },\n ],\n };\n });\n\n AHDjs.beacons(beacons, {\n boundary: \"outer\",\n }).showAll();\n }\n\n async clearCachedData() {\n LocalStorage.removeKey(HIGHLIGHTS_DATA_STORAGE_KEY);\n LocalStorage.removeKey(HELP_DATA_STORAGE_KEY);\n LocalStorage.removeKey(TOUR_DATA_STORAGE_KEY);\n LocalStorage.removeKey(AHD_VISITOR_STATS_STORAGE_KEY);\n }\n\n async acknowledgeHighlight(id: string) {\n const stats = LocalStorage.get(AHD_VISITOR_STATS_STORAGE_KEY) || {};\n const acknowledged = stats?.ack || [];\n const nAckonowledged = new Set(acknowledged);\n if (!nAckonowledged.has(id)) {\n nAckonowledged.add(id);\n }\n LocalStorage.put(\n AHD_VISITOR_STATS_STORAGE_KEY,\n { ...stats, ack: [...nAckonowledged] },\n 86400\n );\n this.updateVisitorStats({ ack: [id] }, \"highlight\");\n }\n\n private generateDescription(content: any) {\n let description = content.content || \"\";\n // debugger;\n // if (content.video) {\n // content.video.forEach((vid) => {\n // description += `<br/><video width=\"320\" height=\"240\" controls><source src=\"${vid.downloadUrl}\" type=\"video/mp4\"></video>`;\n // });\n // }\n // if (content.image) {\n // content.image.forEach((img) => {\n // description += `<br/><img width=\"320\" height=\"240\" src=\"${img.downloadUrl}\" />`;\n // });\n // }\n return description;\n }\n\n private getUnAcknowledgedHightlightsForUrl(\n highlightsData: any,\n url: string,\n type: string,\n forceShow = false\n ) {\n // exlude visitied\n const stats = LocalStorage.get(AHD_VISITOR_STATS_STORAGE_KEY) || {};\n const acknowledged = stats?.ack || [];\n return highlightsData.filter((td) => {\n if (forceShow || !acknowledged || !acknowledged.includes(td.id)) {\n const matcher = match(td.slug, { decode: decodeURIComponent });\n const highlightound = matcher(url);\n\n return highlightound;\n }\n return false;\n });\n }\n\n private getApplicabeDataForUrl(\n toursData: any,\n url: string,\n forceShow = false\n ) {\n const stats = LocalStorage.get(AHD_VISITOR_STATS_STORAGE_KEY) || {};\n const visited = stats?.visited || [];\n\n return toursData.filter((td) => {\n const matcher = match(td.slug, { decode: decodeURIComponent });\n const tourFound = matcher(url);\n\n if (!tourFound) {\n return false;\n }\n if (forceShow) {\n return true;\n }\n else {\n return true;\n }\n });\n }\n private async fetchAndCacheHighlightsData(highlightsData: any) {\n const respons: any = await fetch(\n `${this.options.apiHost}/api/tenant/${this.options.applicationId}/client/highlights?filter[isActive]=true`\n ).then((res) => res.json());\n if (respons.rows) {\n highlightsData = respons.rows.filter((row: any) => !!row.content);\n LocalStorage.put(\n HIGHLIGHTS_DATA_STORAGE_KEY,\n highlightsData,\n this.options.highlightRefetchIntervalInSec\n );\n }\n return highlightsData;\n }\n\n private async fetchAndCacheTourData(toursData: any, slug: string) {\n const url = `${this.options.apiHost}/api/tenant/${this.options.applicationId}/client/unacknowledged?filter[slug]=${slug}&filter[userId]=${this.options.visitorId}&filter[device]=desktop`;\n const response: any = await fetch(url).then((res) => res.json());\n if (response) {\n toursData = response;\n LocalStorage.put(\n TOUR_DATA_STORAGE_KEY,\n toursData,\n this.options.toursRefetchIntervalInSec\n );\n\n }\n return toursData;\n }\n\n\n private async fetchAndCacheBannerData(appBannerData: any) {\n const respons: any = await fetch(\n `${this.options.apiHost}/api/tenant/${this.options.applicationId}/client/app-banners?filter[isActive]=true`\n ).then((res) => res.json());\n if (respons.rows) {\n appBannerData = respons.rows.filter((row: any) => !!row.content);\n LocalStorage.put(\n APP_BANNER_DATA_STORAGE_KEY,\n appBannerData,\n this.options.appBannerRefetchIntervalInSec\n );\n }\n return appBannerData;\n }\n\n // private async fetchAndCacheHelpData(helpData: any) {\n // const respons: any = await fetch(\n // `${this.options.apiHost}/api/tenant/${this.options.applicationId}/context-help?filter[isActive]=true`\n // ).then((res) => res.json());\n // if (respons.rows) {\n // helpData = respons.rows.filter((row: any) => !!row.content);\n // LocalStorage.put(\n // HELP_DATA_STORAGE_KEY,\n // helpData,\n // this.options.helpRefetchIntervalInSec\n // );\n // }\n // return helpData;\n // }\n\n private async fetchAndCachePageVisitsData(visits: any) {\n const respons: any = await fetch(\n `${this.options.apiHost}/api/tenant/${this.options.applicationId}/client/stats/${this.options.visitorId}?filter[device]=web`\n ).then((res) => res.json());\n if (respons) {\n LocalStorage.put(\n AHD_VISITOR_STATS_STORAGE_KEY,\n respons,\n this.options.statsCacheIntervalInSec\n );\n }\n return visits;\n }\n\n private async updateVisitorStats(dataToPatch: any, type: string) {\n let visits;\n const respons: any = await fetch(\n `${this.options.apiHost}/api/tenant/${this.options.applicationId}/client/visitor-stats`,\n {\n method: \"POST\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, *cors, same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Content-Type\": \"application/json\",\n // 'Content-Type': 'application/x-www-form-urlencoded',\n },\n redirect: \"follow\", // manual, *follow, error\n referrerPolicy: \"no-referrer\", // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url\n body: JSON.stringify({\n data: {\n dataToPatch,\n visitorId: this.options.visitorId,\n channel: \"web\",\n type,\n },\n }), // body data type must match \"Content-Type\" header\n }\n ).then((res) => res.json());\n if (respons) {\n LocalStorage.put(\n AHD_VISITOR_STATS_STORAGE_KEY,\n respons,\n this.options.visitsCacheIntervalInSec\n );\n }\n return visits;\n }\n\n private async acknowledgeStep(type: string, id: string, stepId: string) {\n // console.log('acknowledgeStep', type, id);\n const requestOptions = {\n method: \"GET\",\n redirect: \"follow\",\n };\n const respons: any = await fetch(\n `${this.options.apiHost}/api/tenant/${this.options.applicationId}/client/acknowledge?userId=${this.options.visitorId}&id=${id}&type=${type}&stepId=${stepId}&device=desktop`,\n requestOptions\n ).then((res) => res.json());\n\n }\n\n private async markPageVisited(slug: string, type: string, entityId: string) {\n let visits;\n const respons: any = await fetch(\n `${this.options.apiHost}/api/tenant/${this.options.applicationId}/visitor-stats`,\n {\n method: \"POST\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, *cors, same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Content-Type\": \"application/json\",\n // 'Content-Type': 'application/x-www-form-urlencoded',\n },\n redirect: \"follow\", // manual, *follow, error\n referrerPolicy: \"no-referrer\", // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url\n body: JSON.stringify({\n data: {\n slug,\n visitorId: this.options.visitorId,\n entityId: entityId,\n channel: \"web\",\n type,\n },\n }), // body data type must match \"Content-Type\" header\n }\n ).then((res) => res.json());\n if (respons) {\n LocalStorage.put(\n AHD_VISITOR_STATS_STORAGE_KEY,\n respons,\n this.options.visitsCacheIntervalInSec\n );\n }\n return visits;\n }\n}\n\nconst AHDjs = (...args) => new AHD(...args);\n\nAHDjs.prototype = AHD.prototype;\nAHDjs.plugins = new Set();\n\nAHDjs.extend = (plugin, ...args) => {\n if (!AHDjs.plugins.has(plugin)) {\n AHDjs.plugins.add(plugin);\n plugin(AHD, AHDjs, ...args);\n }\n return AHDjs;\n};\n\nconst BASE_WIDTH = 1280;\n\nfunction applyGuideChimpScaling() {\n const scale = Math.min(window.innerWidth / BASE_WIDTH, 1);\n\n const originMap: { [key: string]: string } = {\n 'top': 'bottom center',\n 'top-left': 'bottom left',\n 'top-right': 'bottom right',\n 'bottom': 'top center',\n 'bottom-left': 'top left',\n 'bottom-right': 'top right',\n 'left': 'center right',\n 'right': 'center left',\n 'floating': 'center',\n };\n\n document.querySelectorAll('[data-guidechimp-position]').forEach((el) => {\n const position = (el as Element).getAttribute('data-guidechimp-position') || '';\n\n (el as HTMLElement).style.transformOrigin = originMap[position] || 'top left';\n (el as HTMLElement).style.transform = `scale(${scale})`;\n });\n}\n\napplyGuideChimpScaling();\nwindow.addEventListener('resize', applyGuideChimpScaling);\nwindow.addEventListener('load', applyGuideChimpScaling);\n\nexport default AHDjs;\n"],"names":["root","factory","exports","module","define","amd","self","Beacons","beacons","options","this","observers","ResizeObserver","elementResizeObserver","refresh","cache","Map","elements","setOptions","setBeacons","init","constructor","getDefaultOptions","removeAll","Array","isArray","every","v","getDataBeacons","getJsBeacons","length","forEach","beacon","element","el","getEl","beaconEl","createBeaconEl","hidden","isFixed","classList","add","getFixedClass","remove","parentElement","document","body","append","set","setBeaconPosition","observeResizing","addOnWindowResizeListener","id","def","filter","ids","beaconsIds","split","map","trim","beaconsSelector","getBeaconDataPrefix","push","beaconsEl","from","querySelectorAll","join","dataGlobalRegExp","RegExp","beaconsIdsAttrValue","attributes","value","elBeaconsIds","includes","globalBeaconAttrs","beaconAttrs","dataBeaconRegExp","j","attrName","name","attrValue","isGlobalAttr","test","isBeaconAttr","match","shortAttrName","position","onClick","onclick","e","onClickCode","eval","call","i","data","triggerMode","TRIGGER_MODE","beaconWithLabel","beaconTpl","stopPropagation","domTemplate","getBeaconTpl","selector","HTMLElement","querySelector","type","boundary","triggerIcon","triggerLabel","elLeft","elTop","elRect","getBoundingClientRect","contains","left","top","parentRect","elWidth","width","elHeight","height","beaconStyle","style","getComputedStyle","beaconWidth","beaconHeight","parseInt","removeAttribute","setAttribute","backgroundImage","iconType","opacity","backgroundColor","color","isAnimated","background","text","canShow","undefined","force","show","getBeacon","get","isCanShowBeacon","hide","unobserveResizeAllElements","removeOnWindowResizeListener","parentNode","removeChild","indexOf","splice","unobserveResizing","getOnWindowResizeListener","window","addEventListener","has","removeEventListener","box","observer","observe","unobserve","disconnect","nodeName","getPropertyValue","TRIGGER_EVENTS","onHover","onPageLoad","onLongPress","ANIMATION_TYPES","DISMISSAL_SETTINGS","onOutsideClick","dismissButtonClickOnly","buttonClickOnly","animationMode","icon","noIcon","label","SVGElement","tpl","parser","DOMParser","template","replace","sourceDoc","parseFromString","renderedDoc","implementation","createHTMLDocument","pattern","eventPattern","ifEnded","render","node","replacements","parent","handler","keys","Object","values","getValue","key","Function","nodeType","Node","ELEMENT_NODE","hasAttribute","getAttribute","forPieces","firstPiece","secondPiece","param","index","source","isSourceArray","k","r","ownerDocument","tagName","cloneNode","attr","eventMatch","exec","eventName","rValue","slice","replacement","_isUndefined","_isNull","console","error","substr","innerHTML","TEXT_NODE","nodeValue","createTextNode","isHtmlElement","isSvgElement","isNodeList","childNodes","firstElementChild","Symbol","array","iteratee","result","getRawTag","objectToString","symToStringTag","toStringTag","arrayMap","isSymbol","symbolProto","prototype","symbolToString","toString","baseToString","freeGlobal","g","objectProto","hasOwnProperty","nativeObjectToString","isOwn","tag","unmasked","freeSelf","baseGetTag","isObjectLike","idCounter","prefix","parse","str","tokens","char","count","TypeError","concat","code","charCodeAt","lexer","_a","prefixes","defaultPattern","escapeString","delimiter","path","tryConsume","mustConsume","nextType","consumeText","suffix","modifier","name_1","pattern_1","compile","tokensToFunction","reFlags","flags","encode","x","_b","validate","matches","token","optional","repeat","segment","typeOfMessage","String","regexpToFunction","pathToRegexp","re","decode","pathname","m","params","create","_loop_1","sensitive","tokensToRegexp","strict","start","_c","end","_d","_e","_f","endsWith","endsWithRe","delimiterRe","route","_i","tokens_1","mod","endToken","isEndDelimited","groupsRegex","execResult","regexpToRegexp","paths","parts","arrayToRegexp","stringToRegexp","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","globalThis","obj","prop","extendStatics","GuideChimp","tour","_uniqueId","configurable","writable","setDefaults","listeners","setTour","notifications","actions","onNextStep","bind","onPrevStep","onCloseStep","onGotoStep","handleClick","action","target","next","event","previous","stop","unobserveStep","unmountStep","go","previousStep","currentStep","nextStep","fromStep","toStep","previousStepIndex","currentStepIndex","nextStepIndex","fromStepIndex","toStepIndex","steps","isDisplayed","number","useIndex","mountOverlayEl","startPreloader","args","emit","stopPreloader","removeOverlayEl","sortSteps","getSteps","getBodyClass","isStarted","toggle","useKeyboard","addOnKeydownListener","addOnWindowScrollListener","stepNumber","step","onBeforeChange","onAfterChange","abort","Promise","resolve","then","some","beforeChangeStep","scrollBehavior","scrollPadding","scrollParentsToStepEl","scrollTo","getStepEl","mountStep","setTimeout","onPrevious","onNext","stepId","acknowledgeStep","removeListeners","clear","getDataSteps","getJsSteps","dataPrefix","tourStepsEl","dataTourRegExp","stepAttrs","isTourAttr","attrShortName","title","description","interaction","sort","b","canvasWidth","canvasHeight","display","visibility","offsetWidth","offsetHeight","mountFakeStepEl","mountOffsetFakeStepEl","scrollParentsToEl","parents","htmlEl","getScrollableParentEl","regex","elStyle","elDocument","getClosestScrollableParent","parentStyle","overflowX","overflowY","getScrollableParentsEls","scrollTop","offsetTop","scrollLeft","offsetLeft","behavior","bottom","right","innerWidth","innerHeight","scrollBy","animation","overlay","animate","hasElement","hasTop","hasLeft","hasWidth","hasHeight","isCurrentElFake","isEl","isTopLeftWithDimensions","to","getOverlayDocumentPath","getOverlayStepPath","lock","isFromElFake","onend","beginElement","hasCoordinates","getRelativePositionClass","getHighlightClass","uid","interactionEl","padding","convertToPx","axis","percentage","parseFloat","cssText","getOffset","controlEl","pointerEvents","pageXOffset","defaultView","docElWidth","documentElement","elRight","tooltipEl","clampToViewport","pad","depth","elStyleCheck","transform","err","log","gutter","Math","max","newLeft","newTop","changed","s","requestAnimationFrame","w2","h2","l2","t2","pos","alignment","tooltipStyle","delay","overlayEls","getElementsByClassName","overlayEl","isBackdrop","dismissalSetting","exitOverlay","zIndex","parsePct","pct","isPct","px","raw","topInfo","leftInfo","widthInfo","heightInfo","widthPx","heightPx","tooltipHeight","tooltipWidth","viewportWidth","viewportHeight","spaceRight","spaceLeft","spaceBottom","spaceTop","configuredPosition","canFitTop","canFitBottom","canFitLeft","canFitRight","maxSpace","clamp","min","computedTop","bottomPx","computedLeft","rightPx","clampedTop","clampedLeft","animationType","topPx","topVal","leftPx","leftVal","isFakeOrNotFound","elBottom","tooltipWith","cloneTooltip","appendChild","minTooltipWidth","boundaryRect","DOMRect","Window","y","scrollWidth","scrollHeight","boundaryTop","boundaryBottom","boundaryLeft","boundaryRight","positions","tooltipMarginTop","marginTop","tooltipMarginLeft","marginLeft","tooltipMarginRight","marginRight","tooltipMarginBottom","marginBottom","alignments","requiredSpace","canCenterVertically","clientLeft","clientWidth","getLoadingClass","preloaderCache","preloader","mountPreloaderEl","removePreloaderEl","mountInteractionEl","mountControlEl","setInteractionPosition","setControlPosition","setTooltipPosition","observeStep","highlightStepEl","resetHighlightStepEl","removeInteractionEl","removeControlEl","removeFakeStepEl","tmpl","els","removeEl","createEl","getFakeStepTmpl","getDefaultTmplData","mountEl","createFakeStepEl","fakeEl","refWidth","refHeight","getPreloaderTmpl","createPreloaderEl","getOverlayOffsetPath","getOverlayElPath","topValue","leftValue","widthValue","heightValue","x1","x2","defaults","getOverlayTmpl","createOverlayEl","getInteractionTmpl","createInteractionEl","getControlTmpl","createTooltipEl","createControlEl","progressbar","createProgressbarEl","createDescriptionEl","close","createCloseEl","customButtons","createCustomButtonsEl","createPreviousEl","pagination","createPaginationEl","createNextEl","copyright","createCopyrightEl","notification","createNotificationEl","isCaret","getTooltipTmpl","iconCloseColor","getCloseTmpl","showProgressbar","progressMax","progressMin","progress","getProgressbarTmpl","getTitleTmpl","getDescriptionTmpl","buttons","button","buttonEl","className","createElement","getCustomButtonsTmpl","paginationTheme","paginationCirclesMaxItems","showPagination","getPaginationTmpl","showNavigation","getPreviousTmpl","getNextTmpl","getCopyrightTmpl","getNotificationTmpl","messages","message","notificationEl","listener","priorities","getEventListenersPriorities","priority","reverse","promise","all","f","apply","getOnKeydownListener","keyCode","getDefaultKeyboardCodes","previousCodes","nextCodes","stopCodes","getOnWindowScrollListener","removeOnKeydownListener","removeOnWindowScrollListener","observeMutation","resizingObserver","mutationObserver","MutationObserver","mutations","isElExists","record","removedNodes","addedNodes","childList","subtree","unobserveMutation","exitEscape","apiHost","toursRefetchIntervalInSec","helpRefetchIntervalInSec","statsCacheIntervalInSec","view","pageYOffset","BaseStorageApi","persistent","_lootBag","_ttl","ttlValue","isPositiveInteger","Error","put","val","keyTimeout","item","t","_getNow","kt","localStorage","setItem","JSON","stringify","defaultValue","_isCacheStale","removeKey","getItem","removeItem","keyExists","runGarbageCollector","garbageKeys","isLocalStorageAvailable","Date","getTime","ex","floor","now","timestamp","timeout","isFinite","__extends","setPrototypeOf","__proto__","p","__","_super","MemoryStorage","ls","LocalStorage","Class","dataGlobalTourAttrName","dataBeaconTourAttrName","GuideClass","guide","createGuideInstance","hasTooltip","trigger","runGuide","pressTimer","startPress","clearPress","clearTimeout","readyState","warn","attachGuideEvent","require","TOUR_DATA_STORAGE_KEY","APP_BANNER_DATA_STORAGE_KEY","HIGHLIGHTS_DATA_STORAGE_KEY","AHD_VISITOR_STATS_STORAGE_KEY","AHD","userId","visitorId","attachPlugins","pluginClass","AHDjs","extend","refetch","toursData","fetchAndCacheTourData","stats","fetchAndCachePageVisitsData","url","helpData","applicableHelp","getApplicabeDataForUrl","trimmed","applicableTours","tours","visited","nVisited","Set","slug","entityId","_id","markPageVisited","onboardTour","flatMap","row","content","normalizeDimension","styles","behaviour","appBannerData","fetchAndCacheBannerData","fetch","applicationId","res","json","response","tooltips","contentMetadata","tourSteps","class","triggerBehaviour","triggerIconData","triggerLabelData","showAll","showPageTour","showPageBeacons","highlightsData","applicableHighlights","getUnAcknowledgedHightlightsForUrl","acknowledgeHighlight","generateDescription","acknowledged","ack","nAckonowledged","updateVisitorStats","forceShow","td","decodeURIComponent","matcher","respons","rows","highlightRefetchIntervalInSec","appBannerRefetchIntervalInSec","visits","dataToPatch","method","mode","credentials","headers","redirect","referrerPolicy","channel","visitsCacheIntervalInSec","requestOptions","plugins","plugin","applyGuideChimpScaling","scale","originMap","transformOrigin"],"sourceRoot":""}