{"version":3,"file":"layout.a4e5059946fecafd3068.js","mappings":"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","sources":["webpack:///./Onlia/Scripts/onlia/blog/index.js","webpack:///./Onlia/Scripts/onlia/faq/index.js","webpack:///./Onlia/Scripts/onlia/one-onlia/directives/replace-inner-html.js","webpack:///./Onlia/Scripts/onlia/one-onlia/index.js","webpack:///./Onlia/Scripts/onlia/shared/components/button-loader-svg.js","webpack:///./Onlia/Scripts/onlia/shared/components/content-toggle-with-fields.js","webpack:///./Onlia/Scripts/onlia/shared/components/content-toggle-with-header.js","webpack:///./Onlia/Scripts/onlia/shared/components/content-toggle.js","webpack:///./Onlia/Scripts/onlia/shared/components/cookie-consent-banner.js","webpack:///./Onlia/Scripts/onlia/shared/components/cookie-personalization-banner.js","webpack:///./Onlia/Scripts/onlia/shared/components/cynolytics-script.js","webpack:///./Onlia/Scripts/onlia/shared/components/drop-down-chevron.js","webpack:///./Onlia/Scripts/onlia/shared/components/dynamic-modal.js","webpack:///./Onlia/Scripts/onlia/shared/components/error-modal.js","webpack:///./Onlia/Scripts/onlia/shared/components/expandable-link.js","webpack:///./Onlia/Scripts/onlia/shared/components/faq-activation.js","webpack:///./Onlia/Scripts/onlia/shared/components/faq-only-one-category.js","webpack:///./Onlia/Scripts/onlia/shared/components/footer-nav.js","webpack:///./Onlia/Scripts/onlia/shared/components/global-banner.js","webpack:///./Onlia/Scripts/onlia/shared/components/global-loader.js","webpack:///./Onlia/Scripts/onlia/shared/components/global-modal.js","webpack:///./Onlia/Scripts/onlia/shared/components/hamburger-drop-down.js","webpack:///./Onlia/Scripts/onlia/shared/components/hamburger-menu.js","webpack:///./Onlia/Scripts/onlia/shared/components/header-nav.js","webpack:///./Onlia/Scripts/onlia/shared/components/image-loader.js","webpack:///./Onlia/Scripts/onlia/shared/components/main-nav-drop-down.js","webpack:///./Onlia/Scripts/onlia/shared/components/menu-nav.js","webpack:///./Onlia/Scripts/onlia/shared/components/nav-drop-down.js","webpack:///./Onlia/Scripts/onlia/shared/components/onlia-button.js","webpack:///./Onlia/Scripts/onlia/shared/components/onlia-tooltip.js","webpack:///./Onlia/Scripts/onlia/shared/components/product-icon.js","webpack:///./Onlia/Scripts/onlia/shared/components/product-page-nav-link.js","webpack:///./Onlia/Scripts/onlia/shared/components/quick-navigation.js","webpack:///./Onlia/Scripts/onlia/shared/components/script-loader.js","webpack:///./Onlia/Scripts/onlia/shared/components/session-expired.js","webpack:///./Onlia/Scripts/onlia/shared/components/session-props-provider.js","webpack:///./Onlia/Scripts/onlia/shared/components/shopping-basket-count.js","webpack:///./Onlia/Scripts/onlia/shared/components/surfly-widget.js","webpack:///./Onlia/Scripts/onlia/shared/components/template-parser.js","webpack:///./Onlia/Scripts/onlia/shared/utils/TooltipUtil.js","webpack:///./Onlia/Scripts/onlia/shared/components/tooltip-button.js","webpack:///./Onlia/Scripts/onlia/shared/components/unsaved-changes-popup-component.js","webpack:///./Onlia/Scripts/onlia/shared/directives/add-ancestor-class.js","webpack:///./Onlia/Scripts/onlia/shared/directives/gtm-button.js","webpack:///./Onlia/Scripts/onlia/shared/directives/handle-active-link.js","webpack:///./Onlia/Scripts/onlia/shared/directives/layout-shift-util-clear-styles.js","webpack:///./Onlia/Scripts/onlia/shared/directives/outside-click.js","webpack:///./Onlia/Scripts/onlia/shared/directives/parallax.js","webpack:///./Onlia/Scripts/onlia/shared/directives/toggle-content.js","webpack:///./Onlia/Scripts/onlia/shared/directives/track-mobile-nav.js","webpack:///./Onlia/Scripts/onlia/shared/index.js","webpack:///./Onlia/Scripts/onlia/shared/mixins/api.js","webpack:///./Onlia/Scripts/onlia/shared/mixins/content-toggle.js","webpack:///./Onlia/Scripts/onlia/shared/mixins/drop-down.js","webpack:///./Onlia/Scripts/onlia/shared/mixins/expand-and-collapse.js","webpack:///./Onlia/Scripts/onlia/shared/mixins/focus-trap.js","webpack:///./Onlia/Scripts/onlia/shared/mixins/resize-observer.js","webpack:///./Onlia/Scripts/onlia/shared/mixins/shared-utils.js","webpack:///./Onlia/Scripts/onlia/shared/mixins/slot-utils.js","webpack:///./Onlia/Scripts/onlia/shared/mixins/total-premium.js","webpack:///./Onlia/Scripts/onlia/shared/mixins/window-size.js","webpack:///./Onlia/Scripts/onlia/shared/plugins/global-modal.js","webpack:///./Onlia/Scripts/onlia/shared/settings.js","webpack:///./Onlia/Scripts/onlia/shared/utils/EventEmitter.js","webpack:///./Onlia/Scripts/onlia/shared/utils/GoogleAnalytics.js","webpack:///./Onlia/Scripts/onlia/shared/utils/ScrollUtil.js","webpack:///./Onlia/Scripts/onlia/shared/utils/UnsavedChangesPopup.js","webpack:///./Onlia/Scripts/onlia/shared/utils/basic-functions.js","webpack:///./Onlia/Scripts/onlia/shared/utils/browser-detect.js","webpack:///./Onlia/Scripts/onlia/shared/utils/call-vue-instance-method.js","webpack:///./Onlia/Scripts/onlia/shared/utils/clear-my-account-classes.js","webpack:///./Onlia/Scripts/onlia/shared/utils/dom-utils.js","webpack:///./Onlia/Scripts/onlia/shared/utils/event-bus.js","webpack:///./Onlia/Scripts/onlia/shared/utils/get-element-top.js","webpack:///./Onlia/Scripts/onlia/shared/utils/gsap-utils.js","webpack:///./Onlia/Scripts/onlia/shared/utils/is-touch-device.js","webpack:///./Onlia/Scripts/onlia/shared/utils/load-script.js","webpack:///./Onlia/Scripts/onlia/shared/utils/require-all.js","webpack:///./Onlia/Scripts/onlia/shared/utils/scroll-page.js","webpack:///./Onlia/Scripts/onlia/shared/utils/user-agent/bot-list.js","webpack:///./Onlia/Scripts/onlia/shared/utils/user-agent/UserAgentParser.js","webpack:///./Onlia/Scripts/onlia/shared/utils/vue-component-helpers.js"],"sourcesContent":["import Vue from 'vue';\r\n\r\nVue.component('article-list', () => import(/* webpackChunkName: 'components.blog' */ './components/article-list'));\r\n\r\nVue.component('latest-category-articles', () => import(/* webpackChunkName: 'components.blog' */ './components/latest-category-articles'));\r\n\r\nVue.component('magazine-article-list', () => import(/* webpackChunkName: 'components.blog' */ './components/magazine-article-list'));\r\n\r\nVue.component('subscription-card', () => import(/* webpackChunkName: 'components.blog' */ './components/subscription-card'));\r\n\r\nVue.component('article-template-dropdown', () => import(/* webpackChunkName: 'components.blog' */ './components/article-template-dropdown'));\r\n\r\n","import Vue from 'vue';\r\n\r\nVue.component('faq-search', () => import(/* webpackChunkName: 'components.faq-search' */ './components/faq-search'));\r\n\r\nVue.component('faq-top-questions-list', () => import(/* webpackChunkName: 'components.faq-top-questions-list' */ './components/faq-top-questions-list'));\r\n\r\nVue.component('all-faqs', () => import(/* webpackChunkName: 'components.all-faqs' */ './components/all-faqs'));\r\n","import Vue from 'vue';\r\nimport EventBus from '@Shared/utils/event-bus';\r\nimport { wait } from '@Shared/utils/basic-functions';\r\n\r\nVue.directive('replace-inner-html', {\r\n bind(el, binding) {\r\n EventBus.$on('replace-inner-html', async ({ id, content }) => {\r\n if (binding.value.id === id) {\r\n // Cubic-beziers have been taken from AchmeaDI.Web\\Onlia\\Content\\ir_theme\\scss\\abstracts\\variables\\_eases.scss\r\n el.setAttribute('style', 'opacity:0;transition: opacity 0.3s cubic-bezier(0.47, 0, 0.745, 0.715)');\r\n \r\n await wait(300);\r\n \r\n el.innerHTML = content;\r\n \r\n el.setAttribute('style', 'opacity:1;transition: opacity 0.5s cubic-bezier(0.39, 0.575, 0.565, 1)');\r\n }\r\n });\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport requireAll from '@Shared/utils/require-all';\r\n\r\nrequireAll(require.context('./directives/', true, /\\.js$/));\r\n\r\nVue.component('comparison-table', () => import(/* webpackChunkName: 'components.comparison-table' */ './components/comparison-table'));\r\n\r\nVue.component('slide-show', () => import(/* webpackChunkName: 'components.slide-show' */ './components/slide-show'));\r\n\r\nVue.component('page-legal', () => import(/* webpackChunkName: 'components.page-legal' */'./components/page-legal'));\r\n\r\nVue.component('featured-in-highlight', () => import(/* webpackChunkName: 'components.featured-in-highlight' */'./components/featured-in-highlight'));\r\n\r\nVue.component('trust-pilot', () => import(/* webpackChunkName: 'components.trust-pilot' */'./components/trust-pilot'));\r\n\r\nVue.component('trust-pilot-widget', () => import(/* webpackChunkName: 'components.trust-pilot-widget' */'./components/trust-pilot-widget'));\r\n\r\nVue.component('basic-carousel', () => import(/* webpackChunkName: 'components.basic-carousel' */'./components/basic-carousel'));\r\n\r\nVue.component('main-carousel', () => import(/* webpackChunkName: 'components.main-carousel' */'./components/main-carousel'));\r\n\r\nVue.component('carousel-pagination', () => import(/* webpackChunkName: 'components.carousel-pagination' */'./components/carousel-pagination'));\r\n\r\nVue.component('coverages-carousel', () => import(/* webpackChunkName: 'components.coverages-carousel' */'./components/coverages-carousel'));\r\n\r\nVue.component('accordion-item', () => import(/* webpackChunkName: 'components.accordion-item' */'./components/accordion-item'));\r\n\r\nVue.component('video-player', () => import(/* webpackChunkName: 'components.video-player' */'./components/video-player'));\r\n\r\nVue.component('content-search', () => import(/* webpackChunkName: 'components.content-search' */'./components/content-search'));\r\n\r\n// Vue.component('search-field', () => import(/* webpackChunkName: 'components.search-field' */'./components/search-field'));\r\n\r\nVue.component('group-page-list', () => import(/* webpackChunkName: 'components.group-page-list' */'./components/group-page-list'));\r\n\r\nVue.component('group-sign-up-form', () => import(/* webpackChunkName: 'components.group-sign-up-form' */'./components/group-sign-up-form'));\r\n\r\nVue.component('content-lazy-loader', () => import(/* webpackChunkName: 'components.content-lazy-loader' */'./components/content-lazy-loader'));\r\n\r\nVue.component('three-column-list-filter', () => import(/* webpackChunkName: 'components.three-column-list-filter' */'./components/three-column-list-filter'));\r\n","import Vue from 'vue';\r\n\r\nVue.component('button-loader-svg', {\r\n functional: true,\r\n props: {\r\n color: {\r\n type: String,\r\n default: 'white',\r\n validator(color) {\r\n return /^(white|black|magenta)$/.test(color);\r\n }\r\n }\r\n },\r\n render(createElement, context) {\r\n const {\r\n data: {\r\n class: classes = {},\r\n staticClass = '',\r\n attrs,\r\n ...rest\r\n },\r\n props\r\n } = context;\r\n\r\n const circleEl = createElement('path', {\r\n class: 'a-buttonLoaderSVG__circle',\r\n attrs: {\r\n d: 'M50 15A35 35 0 1 0 74.74873734152916 25.251262658470843',\r\n fill: 'none',\r\n stroke: '#930093',\r\n 'stroke-width': '12'\r\n }\r\n });\r\n\r\n const arrowEl = createElement('path', {\r\n class: 'a-buttonLoaderSVG__arrow',\r\n attrs: {\r\n d: 'M49 3L49 27L61 15L49 3',\r\n fill: '#930093'\r\n }\r\n });\r\n\r\n const groupEl = createElement('g', null, [ circleEl, arrowEl ]);\r\n\r\n return createElement('svg', {\r\n ...rest,\r\n class: [\r\n 'a-buttonLoaderSVG',\r\n `-${props.color}`,\r\n staticClass,\r\n ...(Array.isArray(classes) ? classes : [ classes ])\r\n ],\r\n attrs: {\r\n ...(attrs && attrs),\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n 'xmlns:xlink': 'http://www.w3.org/1999/xlink',\r\n preserveAspectRatio: 'xMidYMid meet',\r\n viewBox: '0 0 100 100'\r\n }\r\n }, [ groupEl ]);\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport expandAndCollapse from '@Shared/mixins/expand-and-collapse';\r\nimport contentToggle from '@Shared/mixins/content-toggle';\r\n// import { loadGSAP } from '@Shared/utils/gsap-utils';\r\n\r\nVue.component('content-toggle-with-fields', {\r\n mixins: [expandAndCollapse, contentToggle],\r\n inject: [\"$validator\"],\r\n // props are defined in contentToggle mixin\r\n props: {\r\n /**\r\n * Use v-if for removing fields from DOM.\r\n * This will broke the animation. \r\n * Will be used only for emergency fix of issue with form prefilling.\r\n */\r\n useIf: {\r\n type: Boolean,\r\n default: false\r\n },\r\n },\r\n data() {\r\n return {\r\n containerId: 'contentToggle' + this._uid,\r\n isContainerOpen: this.value,\r\n isWrapperRelative: (this.isOpenInitially && !this.appear),\r\n showForm: false\r\n };\r\n },\r\n computed: {\r\n sectionFields() {\r\n let arr = [];\r\n let el = null;\r\n return this.$validator.fields.items.filter((field) => {\r\n el = document.getElementsByName(field.name)[0] || document.getElementById(field.name);\r\n return (el && el.closest(\"#\" + this.containerId)) // Check if field is inside section \r\n });\r\n },\r\n },\r\n watch: {\r\n isContainerOpen: {\r\n immediate: true,\r\n handler(isOpen) {\r\n this.$eventBus.$emit('contentToggle:stateChanged', {\r\n isOpen,\r\n id: this.id\r\n });\r\n this.$emit('input', isOpen);\r\n }\r\n },\r\n value: 'handleValueChange'\r\n },\r\n created() {\r\n this.$eventBus.$on('contentToggle:toggle', this.toggleContent);\r\n this.$eventBus.$on('contentToggle:getState', this.getOpenState);\r\n this._animateOnResize = this.animateOnResize;\r\n },\r\n beforeDestroy() {\r\n this.$eventBus.$off('contentToggle:toggle', this.toggleContent);\r\n this.$eventBus.$off('contentToggle:getState', this.getOpenState);\r\n },\r\n async mounted() {\r\n if (this.isOpenInitially) {\r\n // await this.$nextTick();\r\n await (this.appear ? this.openContainer : this.openImmediately)();\r\n }\r\n },\r\n methods: {\r\n // Reset and/or validate ONLY homeowners fields\r\n async resetOrValidateFields(validate = true) {\r\n // Form fields validation\r\n let areValid = true;\r\n if (this.sectionFields.length > 0) {\r\n let arr = [];\r\n this.sectionFields.forEach((field) => {\r\n field.reset();\r\n if (validate) {\r\n arr.push(\r\n this.$validator.validate(field.name)\r\n );\r\n }\r\n });\r\n if (validate) {\r\n const results = Promise.all(arr);\r\n areValid = (await results).every(isValid => isValid);\r\n }\r\n }\r\n return areValid;\r\n },\r\n async toggleContent(id, callback, willAnimate = true) {\r\n if (id === this.id) {\r\n if (this.useIf) {\r\n this.showForm = !this.showForm;\r\n await this.$nextTick();\r\n await this.toggle(callback, willAnimate);\r\n return;\r\n }\r\n\r\n await this.toggle(callback, willAnimate);\r\n }\r\n },\r\n async toggle(callback, willAnimate) {\r\n let areValid = true;\r\n if (this.isContainerOpen) {\r\n areValid = await this.resetOrValidateFields();\r\n }\r\n if (areValid) {\r\n const callbackFn = typeof callback === 'function' ? () => callback(this.isContainerOpen) : null;\r\n await this.toggleContainerHeight(callbackFn, willAnimate ? 0.3 : 0);\r\n } else {\r\n Vue.prototype.handleInvalidForm(this);\r\n }\r\n }\r\n },\r\n render(createElement) {\r\n if (this.useIf) {\r\n if (this.showForm) {\r\n return createElement('div', {\r\n class: 'm-contentToggle',\r\n attrs: {\r\n id: this.id\r\n }\r\n }, [this.createContentContainer(createElement)]);\r\n }\r\n } else {\r\n return createElement('div', {\r\n class: 'm-contentToggle',\r\n attrs: {\r\n id: this.id\r\n }\r\n }, [this.createContentContainer(createElement)]);\r\n }\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport slotUtils from '@Shared/mixins/slot-utils';\r\n\r\nVue.component('content-toggle-with-header', {\r\n mixins: [ slotUtils ],\r\n props: {\r\n heading: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n data() {\r\n return {\r\n isOpen: false\r\n };\r\n },\r\n methods: {\r\n toggleContent() {\r\n this.isOpen = !this.isOpen;\r\n },\r\n renderDropDownHeader(createElement) {\r\n const iconEl = createElement('div', {\r\n class: 'm-contentToggleWithHeader__iconContainer'\r\n }, this.getSlot('icon'));\r\n\r\n const headingEl = createElement('h3', {\r\n class: 'm-contentToggleWithHeader__heading'\r\n }, this.heading);\r\n\r\n const chevronEl = createElement('drop-down-chevron', {\r\n props: {\r\n isOpen: this.isOpen, \r\n iconType: \"myAccount\"\r\n },\r\n class: 'm-contentToggleWithHeader__chevron'\r\n });\r\n\r\n const buttonEl = createElement('onlia-button', {\r\n class: 'm-contentToggleWithHeader__button',\r\n props: {\r\n tag: 'button',\r\n variant: 'none'\r\n },\r\n on: {\r\n click: this.toggleContent\r\n }\r\n });\r\n\r\n return createElement('div', {\r\n class: 'm-contentToggleWithHeader__header'\r\n }, [ iconEl, headingEl, chevronEl, buttonEl ]);\r\n },\r\n renderDropDownContent(createElement) {\r\n return createElement('content-toggle', {\r\n props: {\r\n value: this.isOpen,\r\n contentClasses: 'm-contentToggleWithHeader__contentContainer',\r\n id: `${this._uid}`\r\n }\r\n }, this.getSlot('content'));\r\n }\r\n },\r\n render(createElement) {\r\n return createElement('section', {\r\n class: 'm-contentToggleWithHeader'\r\n }, [\r\n this.renderDropDownHeader(createElement),\r\n this.renderDropDownContent(createElement)\r\n ]);\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport expandAndCollapse from '@Shared/mixins/expand-and-collapse';\r\nimport contentToggle from '@Shared/mixins/content-toggle';\r\n\r\nVue.component('content-toggle', {\r\n mixins: [ expandAndCollapse, contentToggle ],\r\n // props are defined in contentToggle mixin\r\n data() {\r\n return {\r\n isContainerOpen: this.value,\r\n isWrapperRelative: (this.isOpenInitially && !this.appear)\r\n };\r\n },\r\n watch: {\r\n isContainerOpen: {\r\n immediate: true,\r\n handler(isOpen) {\r\n this.$eventBus.$emit('contentToggle:stateChanged', {\r\n isOpen,\r\n id: this.id\r\n });\r\n this.$emit('input', isOpen);\r\n }\r\n },\r\n value: 'handleValueChange'\r\n },\r\n created() {\r\n this.$eventBus.$on('contentToggle:toggle', this.toggleContent);\r\n this.$eventBus.$on('contentToggle:getState', this.getOpenState);\r\n this._animateOnResize = this.animateOnResize;\r\n },\r\n beforeDestroy() {\r\n this.$eventBus.$off('contentToggle:toggle', this.toggleContent);\r\n this.$eventBus.$off('contentToggle:getState', this.getOpenState);\r\n },\r\n async mounted() {\r\n if (this.isOpenInitially) {\r\n // await this.$nextTick();\r\n await (this.appear ? this.openContainer : this.openImmediately)();\r\n }\r\n },\r\n methods: {\r\n async toggleContent(id, callback, willAnimate = true) {\r\n if (id === this.id) {\r\n const callbackFn = typeof callback === 'function' ? () => callback(this.isContainerOpen) : null;\r\n await this.toggleContainerHeight(callbackFn, willAnimate ? 0.3 : 0);\r\n }\r\n },\r\n },\r\n render(createElement) {\r\n return createElement('div', {\r\n class: 'm-contentToggle',\r\n attrs: {\r\n id: this.id\r\n }\r\n }, [ this.createContentContainer(createElement) ]);\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport axios from 'axios';\r\nimport api from '../mixins/api';\r\nimport EventBus from '@Shared/utils/event-bus';\r\n\r\nVue.component('cookie-consent-banner', {\r\n mixins: [api],\r\n\r\n data() {\r\n return {\r\n consentMode: {}\r\n }\r\n },\r\n mounted() {\r\n //Check if the user has given consent. If not then show the banner\r\n if (document.cookie.split(\";\").some((item) => item.trim().startsWith(\"CookiesConsent=\"))) {\r\n return;\r\n } else {\r\n this.$refs['cookie-consent-modal'].show();\r\n }\r\n \r\n // Hide the banner if cookies are not enabled\r\n if (!navigator.cookieEnabled) {\r\n this.$refs['cookie-consent-modal'].hide();\r\n }\r\n this.acceptCookiesOnClose();\r\n }, \r\n methods: {\r\n openPersonalizePopup() {\r\n this.$refs['cookie-consent-modal'].hide();\r\n this.$root.$emit(\"cookie-personalization-modal\");\r\n\r\n this.$nextTick(() => {\r\n //pre-selecting all checkboxes\r\n const checkboxes = document.querySelectorAll('input[type=\"checkbox\"]');\r\n checkboxes.forEach((checkbox) => {\r\n if (!checkbox.checked) {\r\n checkbox.checked = true;\r\n }\r\n\r\n });\r\n //attaching acceptAllCookies method to close icon of personalized banner\r\n const closeIcon = document.querySelector(\"#cookie-personalization-modal .o-globalModal__closeButton\");\r\n if (closeIcon) {\r\n closeIcon.addEventListener('click', this.acceptAllCookies);\r\n }\r\n });\r\n },\r\n\r\n pushToDataLayer() {\r\n const dataLayer = window.dataLayer || [];\r\n let consent = dataLayer.find(item => item.CookiesConsent)\r\n !consent && dataLayer.push({'CookiesConsent': this.consentMode});\r\n },\r\n\r\n setConsent(consent) {\r\n const categoryMappings = {\r\n Advertising: 'ad_storage',\r\n Performance: 'analytics_storage',\r\n Personalization: 'personalization_storage'\r\n };\r\n\r\n for (const [key, value] of Object.entries(consent)) {\r\n if (categoryMappings[key]) {\r\n const mappedKey = categoryMappings[key];\r\n this.consentMode[mappedKey] = value ? 'granted' : 'denied';\r\n }\r\n }\r\n },\r\n acceptAllCookies() {\r\n const consent = {\r\n Advertising: true,\r\n Performance: true,\r\n Personalization: true\r\n };\r\n\r\n this.setConsent(consent);\r\n\r\n axios.post(this.api.setCookieConsent, this.consentMode)\r\n .then(response => {\r\n // Handle the response from the API if necessary \r\n })\r\n .catch(error => {\r\n console.error('Error sending data to backend:', error);\r\n });\r\n\r\n this.pushToDataLayer();\r\n EventBus.$emit('cookieConsentGiven');\r\n this.$refs['cookie-consent-modal'].hide();\r\n },\r\n acceptCookiesOnClose() {\r\n this.$nextTick(() => {\r\n const closeIcon = document.querySelector('.o-globalModal__closeIcon');\r\n if (closeIcon) {\r\n closeIcon.addEventListener('click', this.acceptAllCookies);\r\n }\r\n });\r\n },\r\n }\r\n});","import Vue from 'vue';\r\nimport axios from 'axios';\r\nimport api from '../mixins/api';\r\nimport EventBus from '@Shared/utils/event-bus';\r\n\r\nVue.component('cookie-personalization-banner', {\r\n mixins: [api],\r\n\r\n props: {\r\n categoryList: {\r\n type: String\r\n }\r\n },\r\n data() {\r\n return {\r\n consentMode: {},\r\n categoryMappings: {\r\n Advertising: 'ad_storage',\r\n Performance: 'analytics_storage',\r\n Personalization: 'personalization_storage'\r\n }\r\n }\r\n },\r\n created() {\r\n this.setInitialConsent();\r\n },\r\n mounted() {\r\n this.$root.$on(\"cookie-personalization-modal\", this.showPersonalizePopup);\r\n },\r\n beforeDestroy() {\r\n this.$root.$off(\"cookie-personalization-modal\", this.showPersonalizePopup);\r\n },\r\n methods: {\r\n\r\n showPersonalizePopup() {\r\n this.$refs['cookie-personalization-modal'].show();\r\n },\r\n setInitialConsent() {\r\n this.categoryList.split(',').forEach(category => {\r\n const mappedKey = this.categoryMappings[category.trim()];\r\n if (mappedKey) this.$set(this.consentMode, mappedKey, 'granted');\r\n });\r\n },\r\n handleCheckboxChange(event) {\r\n const { value, checked } = event.target;\r\n const mappedKey = this.categoryMappings[value];\r\n this.$set(this.consentMode, mappedKey, checked ? 'granted' : 'denied');\r\n },\r\n pushToDataLayer() {\r\n const dataLayer = window.dataLayer || [];\r\n let consent = dataLayer.find(item => item.CookiesConsent)\r\n !consent && dataLayer.push({'CookiesConsent': this.consentMode});\r\n },\r\n acceptCookiesApi() {\r\n axios.post(this.api.setCookieConsent, this.consentMode)\r\n .then(response => {\r\n // Handle the response from the API if necessary\r\n })\r\n .catch(error => {\r\n console.error('Error sending data to backend:', error);\r\n });\r\n this.pushToDataLayer();\r\n EventBus.$emit('cookieConsentGiven');\r\n this.$refs['cookie-personalization-modal'].hide();\r\n },\r\n acceptSelectedCookies() {\r\n this.acceptCookiesApi();\r\n },\r\n rejectAllCookies() {\r\n for (const key in this.categoryMappings) {\r\n if (Object.prototype.hasOwnProperty.call(this.categoryMappings, key)) {\r\n this.$set(this.consentMode, this.categoryMappings[key], 'denied');\r\n }\r\n }\r\n this.acceptCookiesApi();\r\n },\r\n \r\n }\r\n});","import Vue from 'vue';\r\nimport { loadScript } from '@Shared/utils/load-script';\r\n\r\nconst CYNO_SCRIPT_URL = '/onlia/vendor/cynolytics/cynolytics.js';\r\nconst CYNO_SCRIPT_ID = 'cynolytics';\r\nconst CYNO_PARTNER_ID = '00001';\r\n\r\nVue.component('cynolytics-script', {\r\n props: {\r\n cynolyticsUrl: String\r\n },\r\n\r\n async mounted() {\r\n await this.loadScript();\r\n },\r\n\r\n methods: {\r\n async loadScript() {\r\n if (this.cynolyticsUrl) {\r\n window._cs = window._cs || {\r\n cynolytics_url: this.cynolyticsUrl,\r\n cynolytics_partner_id: CYNO_PARTNER_ID\r\n };\r\n\r\n window.addEventListener('load', () => {\r\n loadScript({\r\n url: CYNO_SCRIPT_URL,\r\n id: CYNO_SCRIPT_ID,\r\n scriptAttributes: {\r\n async: ''\r\n }\r\n });\r\n });\r\n }\r\n }\r\n },\r\n\r\n render() {\r\n return '';\r\n }\r\n});","import Vue from 'vue';\r\n\r\nconst ICONS = {\r\n downBold: 'icon-down-bold',\r\n myAccount: 'icon-my-account-dropdown'\r\n};\r\n\r\nVue.component('drop-down-chevron', {\r\n functional: true,\r\n props: {\r\n isOpen: {\r\n type: Boolean,\r\n required: true\r\n },\r\n variant: {\r\n type: String,\r\n default: 'magenta',\r\n validator(variant) {\r\n return /^(magenta|white|black)$/.test(variant);\r\n }\r\n },\r\n iconType: {\r\n type: String,\r\n default: 'downBold',\r\n validator(iconType) {\r\n return Object.keys(ICONS).includes(iconType);\r\n }\r\n }\r\n },\r\n render(createElement, context) {\r\n const {\r\n data: { class: classes, attrs = {} },\r\n props: { isOpen, variant, iconType }\r\n } = context;\r\n\r\n const icon = createElement('span', {\r\n class: [\r\n 'DropDownChevron__icon',\r\n (ICONS[iconType] || ICONS.downBold)\r\n ]\r\n });\r\n\r\n const data = {\r\n ...context.data,\r\n attrs,\r\n class: [\r\n 'DropDownChevron',\r\n `DropDownChevron--${variant}`,\r\n {\r\n 'DropDownChevron--up': isOpen\r\n },\r\n ...(Array.isArray(classes) ?\r\n classes :\r\n [ classes ]\r\n )\r\n ]\r\n };\r\n\r\n return createElement('span', data, [ icon ]);\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport axios from 'axios';\r\nimport { IS_DEV } from '@Shared/settings';\r\n\r\nconst MODAL_SERVER_ID = 'lightboxName';\r\n\r\nVue.component('dynamic-modal', {\r\n props: {\r\n showModal: Boolean,\r\n modalId: String,\r\n modalUrl: String,\r\n storeName: String\r\n },\r\n data() {\r\n return {\r\n modalContent: '',\r\n isOpen: false,\r\n internalModalId: this.modalId\r\n };\r\n },\r\n computed: {\r\n Model: function () {\r\n return (this.storeName) ? this.$store.state[this.storeName].model : null;\r\n }\r\n },\r\n watch: {\r\n showModal: function (val) {\r\n if (val) {\r\n this.openModal();\r\n }\r\n }\r\n },\r\n created() {\r\n if (!this.internalModalId) {\r\n this.internalModalId = this.generateModalId();\r\n }\r\n },\r\n mounted() {\r\n const vm = this;\r\n vm.$root.$on('dynamic::modal::show', (modalId) => {\r\n if (vm.internalModalId === modalId) {\r\n vm.openModal();\r\n }\r\n });\r\n\r\n this.$eventBus.$on(this.$globalModal.events.hide, ({ id }) => {\r\n if (this.internalModalId === id) {\r\n this.isOpen = false;\r\n }\r\n });\r\n },\r\n methods: {\r\n openModal() {\r\n const vm = this;\r\n if (vm.modalContent) {\r\n vm.isOpen = true;\r\n this.$eventBus.$emit(this.$globalModal.events.showModal, this.internalModalId);\r\n }\r\n else {\r\n vm.fetchModal();\r\n }\r\n },\r\n async fetchModal() {\r\n try {\r\n const { data } = await axios.request({\r\n url: this.modalUrl,\r\n method: 'GET',\r\n headers: { 'Content-Type': 'application/json', skipLoading: 'true' }\r\n });\r\n\r\n this.modalContent = this.setModalId(data, MODAL_SERVER_ID, this.internalModalId);\r\n\r\n await this.$nextTick();\r\n\r\n this.openModal();\r\n }\r\n catch (error) {\r\n (IS_DEV && console.error('fetchModal error:', error));\r\n }\r\n },\r\n setModalId(content, oldId, newId) {\r\n if (content) {\r\n const regex = new RegExp(oldId, 'gi');\r\n return content.replace(regex, str => newId);\r\n }\r\n else {\r\n return '';\r\n }\r\n },\r\n generateModalId() {\r\n return 'dM' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 8);\r\n }\r\n },\r\n render(h) {\r\n if (!this.modalContent) return null;\r\n\r\n return h(Vue.compile(this.modalContent));\r\n }\r\n});\r\n","import Vue from 'vue';\r\n\r\nVue.component('error-modal', {\r\n props: {\r\n modalType: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n data: function () {\r\n return {\r\n ErrorMsg: null,\r\n ErrorCode: '',\r\n closeCallback: Function\r\n };\r\n },\r\n computed: {\r\n globalModalID() {\r\n return `${this.modalType}-modal-${this._uid}`;\r\n },\r\n hideFirstPhrase() {\r\n //multi home seasonal specific error\r\n return this.ErrorCode.includes(\"14076-80\");\r\n }\r\n },\r\n\r\n mounted() {\r\n this.$root.$on(`${this.modalType}-modal-open`, this.open);\r\n\r\n //Set callback when close Error modal\r\n this.$root.$on(`${this.modalType}-modal-close`, (callback) => {\r\n this.closeCallback = callback;\r\n });\r\n\r\n this.$eventBus.$on(this.$globalModal.events.hide, this.handleModalClose);\r\n },\r\n\r\n methods: {\r\n handleModalClose({ id }) {\r\n if (id === this.globalModalID) {\r\n this.close();\r\n }\r\n },\r\n close() {\r\n if (this.closeCallback) {\r\n this.closeCallback();\r\n }\r\n this.$refs['error-modal'].hide();\r\n },\r\n\r\n open(errorMsg, httpStatusCode, serviceErrorCode) {\r\n this.ErrorMsg = errorMsg;\r\n this.ErrorCode = serviceErrorCode ? serviceErrorCode : '';\r\n this.$refs['error-modal'].show();\r\n\r\n this.trackAppError(errorMsg, httpStatusCode, serviceErrorCode);\r\n },\r\n\r\n trackAppError(errorMsg, httpStatusCode, serviceErrorCode) {\r\n if (errorMsg && window.ir.vpUrl) {\r\n const logMessage = (serviceErrorCode ? serviceErrorCode + ' - ' + errorMsg : errorMsg).replace(\r\n /(<([^>]+)>)/gi,\r\n ''\r\n );\r\n //console.log(logMessage);\r\n\r\n const dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n event: 'Error',\r\n category: (httpStatusCode == 200) ? 'Functional Error' : 'Application Error',\r\n action: window.ir.vpUrl,\r\n label: logMessage\r\n });\r\n }\r\n }\r\n }\r\n});\r\n","import vue from \"vue\";\r\n\r\nvue.component(\"expandable-link\", {\r\n data() {\r\n return {\r\n visible: false\r\n };\r\n },\r\n methods: {\r\n hideExpandableLink() {\r\n this.visible = false;\r\n }\r\n }\r\n});\r\n","import Vue from 'vue';\r\n\r\nVue.component('faq-activation', {\r\n props: {\r\n groupName: String,\r\n categoryName: String,\r\n questionId: String\r\n },\r\n\r\n async mounted() {\r\n const eventName = 'Broadcast::FAQItem';\r\n const payload = {\r\n GroupName: this.groupName,\r\n CategoryName: this.categoryName,\r\n QuestionId: this.questionId\r\n };\r\n const eventID = this._uid;\r\n\r\n const onEventCompleteCallBack = () => {\r\n this.$eventBus.removeFromQueue(eventName, eventID);\r\n };\r\n\r\n this.$eventBus.addToQueue({ payload, eventName, id: eventID });\r\n\r\n this.$eventBus.$emit(eventName, payload, onEventCompleteCallBack);\r\n }\r\n});\r\n","import Vue from 'vue';\r\n\r\nVue.component('faq-only-one-category', {\r\n props: {\r\n limit: Number,\r\n questionsCount: Number\r\n },\r\n\r\n data() {\r\n return {\r\n isListExpanded: false,\r\n questionState: []\r\n };\r\n },\r\n\r\n created() {\r\n for (let i = 0; i < this.questionsCount; i++) {\r\n this.questionState.push({ Active: false });\r\n }\r\n\r\n this.isListExpanded = this.questionsCount <= this.limit;\r\n },\r\n\r\n methods: {\r\n toggleAnswer(index) {\r\n if (index >= 0) {\r\n this.questionState[index].Active = !this.questionState[index].Active;\r\n }\r\n },\r\n\r\n toggleAll() {\r\n this.isListExpanded = !this.isListExpanded;\r\n }\r\n }\r\n});\r\n\r\n","import Vue from 'vue';\r\nimport windowSize from '@Shared/mixins/window-size';\r\n\r\nVue.component('footer-nav', {\r\n mixins: [windowSize],\r\n props: {\r\n isDark: {\r\n type: Boolean,\r\n default: false,\r\n }\r\n },\r\n\r\n data() {\r\n return {\r\n isLegalOpen: false,\r\n isProductOpen: false,\r\n isWidgetOpen: false,\r\n isLegalAccessibilityOpen: false,\r\n isLeftColumnOpen: false\r\n };\r\n },\r\n computed: {\r\n darkClassName() {\r\n return this.isDark ? \"-dark\" : \"\"; \r\n }\r\n },\r\n methods: {\r\n toggleLegal() {\r\n this.isLegalOpen = !this.isLegalOpen;\r\n },\r\n toggleProduct() {\r\n this.isProductOpen = !this.isProductOpen;\r\n },\r\n toggleWidget() {\r\n this.isWidgetOpen = !this.isWidgetOpen;\r\n },\r\n toggleLegalAccessibility() {\r\n this.isLegalAccessibilityOpen = !this.isLegalAccessibilityOpen;\r\n },\r\n toggleLeftColumn() {\r\n this.isLeftColumnOpen = !this.isLeftColumnOpen;\r\n }\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport windowSize from '../mixins/window-size';\r\nimport { GLOBAL_BANNER_SESSION_STORAGE_KEY, GLOBAL_BANNER_TOP_OFFSETS } from '@Shared/settings';\r\nimport { loadGSAP } from '@Shared/utils/gsap-utils';\r\n\r\nconst {\r\n navBarCollapsed,\r\n navBarVisible,\r\n mobile,\r\n funnel,\r\n funnelMobile,\r\n funnelNavBarCollapsed\r\n} = GLOBAL_BANNER_TOP_OFFSETS;\r\n\r\nVue.component('global-banner', {\r\n mixins: [windowSize],\r\n props: {\r\n variant: {\r\n type: String,\r\n default: 'information',\r\n validator(type) {\r\n return /^(information|success|danger|warning)$/.test(type);\r\n }\r\n },\r\n isFunnelPage: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data() {\r\n return {\r\n isActive: !this.checkSessionStorage()\r\n };\r\n },\r\n computed: {\r\n rootElClasses() {\r\n return ['m-globalBanner', `-${this.variant}`, 'container'];\r\n },\r\n rootElStyles() {\r\n if (this.isMobile) {\r\n return { top: this.isFunnelPage ? funnelMobile : mobile };\r\n }\r\n\r\n if (this.isFunnelPage) {\r\n return { top: this.isNavBarCollapsed ? funnelNavBarCollapsed : funnel };\r\n }\r\n\r\n return { top: this.isNavBarCollapsed ? navBarCollapsed : navBarVisible };\r\n },\r\n isNavBarCollapsed() {\r\n return this.$store.state.globalNav.isHidden;\r\n }\r\n },\r\n created() {\r\n this._timeline = null;\r\n },\r\n async mounted() {\r\n if (this.isActive) {\r\n this.animateIn();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.destroyTimeline();\r\n },\r\n methods: {\r\n async animateIn() {\r\n const { icon, text, button } = this.$refs;\r\n\r\n const secondaryItems = [\r\n ...(icon ? [ icon ] : []),\r\n ...(button ? [ button ] : [])\r\n ];\r\n\r\n (!window.gsap && await loadGSAP());\r\n\r\n this._timeline = gsap.timeline({\r\n delay: 1,\r\n onComplete: this.destroyTimeline\r\n });\r\n\r\n this._timeline\r\n .fromTo(this.$el, { y: '-250%' }, {\r\n y: 0,\r\n duration: 1,\r\n ease: 'expo.out'\r\n })\r\n .fromTo(text, { autoAlpha: 0 }, {\r\n autoAlpha: 1,\r\n duration: 0.3,\r\n ease: 'sine.out'\r\n }, '-=0.2');\r\n\r\n if (secondaryItems.length) {\r\n this._timeline.fromTo(secondaryItems, { scale: 0 }, {\r\n scale: 1,\r\n duration: 0.7,\r\n ease: 'expo.out',\r\n stagger: 0.2\r\n }, '-=0.1');\r\n }\r\n },\r\n destroyTimeline() {\r\n if (this._timeline) {\r\n this._timeline.kill();\r\n this._timeline = null;\r\n }\r\n },\r\n checkSessionStorage() {\r\n return Boolean(sessionStorage.getItem(GLOBAL_BANNER_SESSION_STORAGE_KEY));\r\n },\r\n setSessionStorage() {\r\n sessionStorage.setItem(GLOBAL_BANNER_SESSION_STORAGE_KEY, 'yes');\r\n },\r\n async closeBanner() {\r\n await (!window.gsap && await loadGSAP());\r\n\r\n gsap.to(this.$el, {\r\n y: '-250%',\r\n duration: 1,\r\n ease: 'expo.out',\r\n onComplete: () => {\r\n this.isActive = false;\r\n }\r\n });\r\n this.setSessionStorage();\r\n }\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport { APP_EL_ID, IS_DEV } from '@Shared/settings';\r\n\r\nVue.component('global-loader', {\r\n created() {\r\n this._app = null;\r\n },\r\n async mounted() {\r\n this.attachToApp();\r\n },\r\n beforeDestroy() {\r\n this.detachFromApp();\r\n },\r\n methods: {\r\n attachToApp() {\r\n try {\r\n this._app = document.getElementById(APP_EL_ID);\r\n this._app.appendChild(this.$el);\r\n }\r\n catch (error) {\r\n (IS_DEV && console.error('Loader attachToApp:', error));\r\n }\r\n },\r\n detachFromApp() {\r\n try {\r\n this._app.removeChild(this.$el);\r\n }\r\n catch (error) {\r\n (IS_DEV && console.error('Loader detachToApp:', error));\r\n }\r\n }\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport { mapMutations, mapState } from 'vuex';\r\nimport slotUtils from '@Shared/mixins/slot-utils';\r\nimport focusTrap from '@Shared/mixins/focus-trap';\r\n\r\nconst MODAL_EVENTS = {\r\n /* Events emitted by the modal ($eventBus.$emit) */\r\n // Events from button presses\r\n close: 'globalModal:close',\r\n cancel: 'globalModal:cancel',\r\n ok: 'globalModal:ok',\r\n\r\n // Events from modal state changing\r\n show: 'globalModal:show',\r\n hide: 'globalModal:hide',\r\n\r\n /* Events listened for ($eventBus.$on). Show/hide on modal can by called from anywhere. */\r\n showModal: 'show:globalModal',\r\n hideModal: 'hide:globalModal'\r\n};\r\n\r\nexport { MODAL_EVENTS as modalEvents };\r\n\r\n/**\r\n * @typedef eventPayload\r\n * @type {object}\r\n * @property {string} id - the id of the modal emitting the event\r\n * @property {('ok'|'close'|'cancel'|'eventBus'|'esc'|'backdropClick')} trigger - What triggered the event\r\n */\r\n\r\n/**\r\n *\r\n *\r\n * Slots\r\n * - heading (optional)\r\n * - body (required)\r\n * - primaryButton (optional)\r\n * - secondaryButton (optional)\r\n * - textButton (optional)\r\n */\r\nVue.component('global-modal', {\r\n mixins: [ slotUtils, focusTrap ],\r\n props: {\r\n /**\r\n * Optional id for modal. If no value is provided, the component will use it's internal Vue instance id ex. modal-24\r\n */\r\n id: {\r\n type: String,\r\n default() {\r\n return `modal-${this._uid}`;\r\n }\r\n },\r\n\r\n /**\r\n * Optional string for title used in header. It can also be provided through slot, name \"heading\".\r\n * Example:\r\n * \r\n */\r\n title: {\r\n type: String,\r\n default: ''\r\n },\r\n\r\n /**\r\n * Optional CSS classes for heading, body, and footer respectively.\r\n */\r\n headingClass: {\r\n type: String,\r\n default: null\r\n },\r\n bodyClass: {\r\n type: String,\r\n default: null\r\n },\r\n footerClass: {\r\n type: String,\r\n default: null\r\n },\r\n\r\n /**\r\n * Default Buttons - oky, cancel.\r\n */\r\n\r\n /**\r\n * When true, the primary button will render as the default button. Primary-button slot, and primaryButton props\r\n * will be ignored.\r\n */\r\n useDefaultOk: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * When true, the secondary button will render as the default button. Secondary-button slot, and secondaryButton\r\n * props will be ignored.\r\n */\r\n useDefaultCancel: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * Optional props for buttons. As buttons will be rendered by onlia-button Vue component, object properties and\r\n * values should match onlia-button's props.\r\n */\r\n primaryButton: {\r\n type: Object,\r\n default: null\r\n },\r\n secondaryButton: {\r\n type: Object,\r\n default: null\r\n },\r\n textButton: {\r\n type: Object,\r\n default: null\r\n },\r\n\r\n /**\r\n * Close behaviour options\r\n */\r\n\r\n /**\r\n * Dont' close the modal when user clicks outside of it.\r\n */\r\n noCloseOnBackdrop: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * Don't close modal when the escape key is pressed\r\n */\r\n noCloseOnEsc: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * Prevent rendering of close button ('x') in the top right corner of the modal.\r\n */\r\n noCloseButton: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * Optional attributes to bind to close button\r\n */\r\n closeButtonAttributes: {\r\n type: Object,\r\n default: () => ({})\r\n }\r\n },\r\n data() {\r\n return {\r\n isGradientActive: false\r\n };\r\n },\r\n computed: {\r\n ...mapState({\r\n activeModalID: state => state.modal.activeModalID,\r\n isOpen: state => state.modal.isOpen\r\n }),\r\n isActive() {\r\n return this.id === this.activeModalID;\r\n },\r\n buttonBaseClass() {\r\n return 'o-globalModal__button';\r\n },\r\n defaultOkButton() {\r\n return {\r\n label: 'ok',\r\n variant: 'primary',\r\n tag: 'button'\r\n };\r\n },\r\n defaultCancelButton() {\r\n return {\r\n label: 'cancel',\r\n variant: 'secondary',\r\n tag: 'button'\r\n };\r\n },\r\n primaryButtonProps() {\r\n if (!this.primaryButton) return null;\r\n\r\n return {\r\n ...this.primaryButton,\r\n variant: 'primary'\r\n };\r\n },\r\n secondaryButtonProps() {\r\n if (!this.secondaryButton) return null;\r\n\r\n return {\r\n ...this.secondaryButton,\r\n variant: 'secondary'\r\n };\r\n },\r\n textButtonProps() {\r\n if (!this.textButton) return null;\r\n\r\n return {\r\n ...this.textButton,\r\n variant: 'hyperlink'\r\n };\r\n },\r\n\r\n /**\r\n * Passed to all button slots (primary-button, secondary-button, and text-button)\r\n *\r\n * Properties can be accessed using destructuring like this:\r\n * \r\n *\r\n * Or like this:\r\n * \r\n */\r\n slotProps() {\r\n return {\r\n // Private methods are exposed through slot props\r\n close: this.$_globalModal_handleClose,\r\n ok: this.$_globalModal_handleOk,\r\n cancel: this.$_globalModal_handleCancel,\r\n\r\n // This should be added to all buttons to keep styling consistent\r\n buttonClass: this.buttonBaseClass,\r\n\r\n // Useful when a button has to be disabled until the user scrolls content to the end.\r\n isScrolledToEnd: !this.isGradientActive,\r\n\r\n // In case a slot needs access to the model, and the direct parent does not have it.\r\n // Property key casing does not match front-end. This was intentional, so that usage of Model is consistent.\r\n Model: this.Model\r\n };\r\n },\r\n\r\n /**\r\n * Buttons are mapped and elements are created, based on a specific order for desktop + tablet, and phone\r\n */\r\n buttons() {\r\n return this.$store.getters.breakpointPhone ?\r\n [ 'primary', 'secondary', 'text' ] :\r\n [ 'secondary', 'primary', 'text' ];\r\n },\r\n\r\n /**\r\n * There are some instances where the modal slots require access to the 'model' in Vuex. As we are dynamically\r\n * creating Vuex modules, this computed will iterate over all modules and return the first model instance it can\r\n * find.\r\n */\r\n Model() {\r\n let model = {};\r\n\r\n for (const moduleName in this.$store.state) {\r\n const state = this.$store.state[moduleName];\r\n\r\n if (state.model) {\r\n model = state.model;\r\n break;\r\n }\r\n }\r\n\r\n return model;\r\n }\r\n },\r\n created() {\r\n this._isAttachedToContainer = false;\r\n this._resizeObserver = null;\r\n this._windowUnWatcher = null;\r\n this._hasSlotContent = false;\r\n },\r\n mounted() {\r\n this.$_globalModal_attachToContainer();\r\n this.$_globalModal_addEventBusListeners();\r\n\r\n if (this.isOpen && this.isActive) {\r\n this.$_globalModal_createResizeObserver();\r\n }\r\n },\r\n beforeUpdate() {\r\n if (this.$el.parentElement !== document.body) {\r\n document.body.append(this.$el);\r\n }\r\n\r\n if ((!this.isOpen || !this.isActive)) {\r\n this.$_globalModal_destroyResizeObserver();\r\n }\r\n },\r\n updated() {\r\n if (this.isOpen && this.isActive) {\r\n this.$_globalModal_createResizeObserver();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.$_globalModal_detachFromContainer();\r\n this.$_globalModal_removeEventListeners();\r\n this.$_globalModal_destroyResizeObserver();\r\n },\r\n methods: {\r\n ...mapMutations([\r\n 'setModalIsClosed',\r\n 'setModalIsOpen',\r\n 'setActiveModalID'\r\n ]),\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_handleShowEvent(modalID) {\r\n if (this.id !== modalID) return;\r\n\r\n this.showModal(this.$_globalModal_createEventPayload('eventBus'));\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_handleHideEvent(modalID) {\r\n if (this.id !== modalID) return;\r\n\r\n this.hideModal(this.$_globalModal_createEventPayload('eventBus'));\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_addEventBusListeners() {\r\n this.$eventBus.$on(MODAL_EVENTS.showModal, this.$_globalModal_handleShowEvent);\r\n this.$eventBus.$on(MODAL_EVENTS.hideModal, this.$_globalModal_handleHideEvent);\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_removeEventListeners() {\r\n this.$eventBus.$off(MODAL_EVENTS.showModal, this.$_globalModal_handleShowEvent);\r\n this.$eventBus.$off(MODAL_EVENTS.hideModal, this.$_globalModal_handleHideEvent);\r\n },\r\n\r\n /**\r\n * @private\r\n *\r\n * @return {eventPayload} payload - The event payload\r\n */\r\n $_globalModal_createEventPayload(trigger) {\r\n return {\r\n trigger,\r\n id: this.id\r\n };\r\n },\r\n\r\n /**\r\n * Parent component can access this method through refs.\r\n * @public\r\n */\r\n hideModal(eventPayload = {}) {\r\n this.$_globalModal_removeEscKeyEventListener();\r\n\r\n this.setModalIsClosed();\r\n\r\n this.$eventBus.$emit(MODAL_EVENTS.hide, eventPayload);\r\n },\r\n\r\n /**\r\n * Method added to support bvModal implementation.\r\n * @public\r\n */\r\n hide() { this.hideModal() },\r\n\r\n /**\r\n * Parent component can access this method through refs.\r\n * @public\r\n */\r\n showModal(eventPayload = {}) {\r\n this.$_globalModal_addEscKeyEventListener();\r\n\r\n this.setModalIsOpen();\r\n this.setActiveModalID(this.id);\r\n\r\n this.$eventBus.$emit(MODAL_EVENTS.show, eventPayload);\r\n },\r\n\r\n /**\r\n * Method added to support bvModal implementation.\r\n * @public\r\n */\r\n show() { this.showModal() },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_handleKeyDown(event) {\r\n if (/(Esc|Escape)/.test(event.key)) {\r\n this.hideModal(this.$_globalModal_createEventPayload('esc'));\r\n }\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_addEscKeyEventListener() {\r\n if (this.noCloseOnEsc) return;\r\n document.addEventListener('keydown', this.$_globalModal_handleKeyDown);\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_removeEscKeyEventListener() {\r\n if (this.noCloseOnEsc) return;\r\n document.removeEventListener('keydown', this.$_globalModal_handleKeyDown);\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_handleBackdropClick() {\r\n this.hideModal(this.$_globalModal_createEventPayload('backdropClick'));\r\n },\r\n\r\n /**\r\n * @function handleButtonClick.\r\n * @param {('close'|'ok'|cancel')} buttonType - Type of button clicked.\r\n * @private\r\n */\r\n $_globalModal_handleButtonClick(buttonType) {\r\n const payload = this.$_globalModal_createEventPayload(buttonType);\r\n\r\n this.$eventBus.$emit(MODAL_EVENTS[buttonType], payload);\r\n\r\n this.hideModal(payload);\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_handleClose() {\r\n this.$_globalModal_handleButtonClick('close');\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_handleCancel() {\r\n this.$_globalModal_handleButtonClick('cancel');\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_handleOk() {\r\n this.$_globalModal_handleButtonClick('ok');\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_attachToContainer() {\r\n if (this._isAttachedToContainer) return;\r\n\r\n document.body.append(this.$el);\r\n\r\n this._isAttachedToContainer = true;\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_detachFromContainer() {\r\n if (!this._isAttachedToContainer) return;\r\n\r\n document.body.removeChild(this.$el);\r\n\r\n this._isAttachedToContainer = false;\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_createResizeObserver() {\r\n const { body } = this.$refs;\r\n\r\n this.$_globalModal_destroyResizeObserver();\r\n\r\n // Resize observer will always fire when the modal opens, so $_globalModal_checkScrollContent will be called.\r\n // When the fallback window watcher is used, $_globalModal_checkScrollContent has to be called the first time.\r\n if ('ResizeObserver' in window) {\r\n this._resizeObserver = new ResizeObserver(this.$_globalModal_checkScrollContent);\r\n this._resizeObserver.observe(body);\r\n }\r\n else {\r\n this._windowUnWatcher = this.$watch('$store.state.windowSize.width', this.$_globalModal_checkScrollContent);\r\n\r\n this.$_globalModal_checkScrollContent();\r\n }\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_destroyResizeObserver() {\r\n if (this._resizeObserver) {\r\n this._resizeObserver.disconnect();\r\n this._resizeObserver = null;\r\n }\r\n if (this._windowUnWatcher) {\r\n this._windowUnWatcher();\r\n }\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_checkScrollContent() {\r\n const { body } = this.$refs;\r\n\r\n if (!body || !this.isOpen) return;\r\n\r\n const { offsetHeight, scrollHeight, scrollTop } = body;\r\n const isScrollable = scrollHeight > offsetHeight;\r\n\r\n if (isScrollable) {\r\n const isScrolledToBottom = (offsetHeight + scrollTop) >= scrollHeight - 50;\r\n this.isGradientActive = !isScrolledToBottom;\r\n }\r\n else {\r\n this.isGradientActive = false;\r\n }\r\n },\r\n\r\n /**\r\n * 'X' button in top right of modal\r\n * @private\r\n */\r\n $_globalModal_createCloseButton(createElement) {\r\n if (this.noCloseButton) return null;\r\n\r\n const iconEl = createElement('span', {\r\n class: 'o-globalModal__closeIcon icon-close'\r\n });\r\n\r\n return createElement('onlia-button', {\r\n class: 'o-globalModal__closeButton',\r\n attrs: {\r\n ...this.closeButtonAttributes,\r\n tabindex: 0\r\n },\r\n props: {\r\n tag: 'button',\r\n variant: 'none'\r\n },\r\n on: {\r\n click: this.$_globalModal_handleClose\r\n }\r\n }, [ iconEl ]);\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_createHeading(createElement) {\r\n const headingSlotContent = this.getSlot('heading');\r\n\r\n if (!headingSlotContent && !this.title) return null;\r\n\r\n const headingEl = createElement('h3', {\r\n class: [ 'o-globalModal__heading', this.headingClass ],\r\n domProps: {\r\n ...(this.title && {\r\n innerHTML: this.title\r\n })\r\n }\r\n }, headingSlotContent);\r\n\r\n return createElement('header', {\r\n class: 'o-globalModal__headingContainer'\r\n }, [ headingEl ]);\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_createBody(createElement) {\r\n const slotContent = this.getSlot('body', this.slotProps) || this.getSlot('default', this.slotProps);\r\n\r\n if (!slotContent) return null;\r\n\r\n const gradientEl = createElement('div', {\r\n class: [ 'o-globalModal__gradient', { '-visible': this.isGradientActive } ]\r\n });\r\n\r\n const bodyEl = createElement('div', {\r\n class: [ 'o-globalModal__body', this.bodyClass ],\r\n ref: 'body',\r\n on: {\r\n scroll: this.$_globalModal_checkScrollContent\r\n }\r\n }, slotContent);\r\n\r\n return createElement('div', {\r\n class: [ 'o-globalModal__bodyContainer' ]\r\n }, [ bodyEl, gradientEl ]);\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_createDefaultButton(createElement, variant) {\r\n return createElement('onlia-button', {\r\n class: this.buttonBaseClass,\r\n props: {\r\n variant,\r\n tag: 'button',\r\n label: variant === 'primary' ? 'ok' : 'cancel'\r\n },\r\n on: {\r\n click: variant === 'primary' ? this.$_globalModal_handleOk : this.$_globalModal_handleCancel\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_createButton(createElement, variant) {\r\n // Default buttons\r\n const useDefault = (\r\n (variant === 'primary' && this.useDefaultOk) ||\r\n (variant === 'secondary' && this.useDefaultCancel)\r\n );\r\n\r\n if (useDefault) {\r\n return this.$_globalModal_createDefaultButton(createElement, variant);\r\n }\r\n\r\n // Buttons create through props or slots\r\n const slotKey = `${variant}-button`;\r\n const propsKey = `${variant}ButtonProps`;\r\n\r\n const buttonSlotEl = this.getSlot(slotKey, this.slotProps);\r\n const props = this[propsKey];\r\n\r\n if (props) {\r\n const config = {\r\n props: {...props},\r\n class: [ this.buttonBaseClass, `-${variant}` ],\r\n attrs: {\r\n tabindex: 0\r\n }\r\n }\r\n\r\n if (config.props.click) {\r\n config.on = { click: config.props.click };\r\n delete config.props.click;\r\n }\r\n\r\n return createElement('onlia-button', config);\r\n }\r\n\r\n if (buttonSlotEl) this._hasSlotContent = true;\r\n\r\n return buttonSlotEl;\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_createButtons(createElement) {\r\n const buttons = this.buttons\r\n .map(buttonType => this.$_globalModal_createButton(createElement, buttonType))\r\n .filter(Boolean);\r\n\r\n if (!buttons.length) return null;\r\n\r\n return createElement('footer', {\r\n class: [\r\n 'o-globalModal__buttonsContainer',\r\n this.footerClass,\r\n `-buttonLayout${buttons.length}`\r\n ]\r\n }, buttons);\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_globalModal_createContent(createElement) {\r\n const buttonsContainEl = this.$_globalModal_createButtons(createElement);\r\n\r\n return createElement('section', {\r\n class: [ 'o-globalModal__contentContainer', { '-noButtons': !buttonsContainEl } ],\r\n on: {\r\n click: (event) => {\r\n event.stopPropagation();\r\n }\r\n }\r\n }, [\r\n this.$_globalModal_createCloseButton(createElement),\r\n this.$_globalModal_createHeading(createElement),\r\n this.$_globalModal_createBody(createElement),\r\n buttonsContainEl\r\n ]);\r\n },\r\n\r\n $_globalModal_setFocus() {\r\n // NOTE 2022-02-28 AndrewKim: Blurring and refocusing of activeElement is handled by Vue root (i.e. app.js)\r\n\r\n // Set tabindex on slot content\r\n if (this._hasSlotContent) {\r\n const slotButtons = [\r\n ...this.$el.getElementsByTagName('a'),\r\n ...this.$el.getElementsByTagName('button')\r\n ];\r\n slotButtons.map((el) => {\r\n if (!el.getAttribute('tabindex')) {\r\n el.setAttribute('tabindex', '0');\r\n }\r\n });\r\n }\r\n\r\n this.$el.focus();\r\n\r\n this.$_focusTrap_getFocusableElements();\r\n }\r\n },\r\n render(createElement) {\r\n if (this.isOpen && this.isActive) {\r\n const rootEl = createElement('div', {\r\n class: 'o-globalModal',\r\n attrs: {\r\n id: this.id,\r\n tabindex: 0\r\n },\r\n on: {\r\n ...(!this.noCloseOnBackdrop && {\r\n click: this.$_globalModal_handleBackdropClick\r\n }),\r\n keydown: this.$_focusTrap_trapFocus\r\n }\r\n }, [ this.$_globalModal_createContent(createElement) ]);\r\n\r\n return createElement('transition', {\r\n attrs: {\r\n name: 'modal',\r\n appear: true,\r\n mode: 'out-in',\r\n duration: {\r\n enter: 600,\r\n leave: 500\r\n }\r\n },\r\n on: {\r\n afterEnter: this.$_globalModal_setFocus\r\n }\r\n }, [ rootEl ]);\r\n }\r\n\r\n return null;\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport dropDown from '@Shared/mixins/drop-down';\r\n\r\nVue.component('hamburger-drop-down', {\r\n mixins: [ dropDown ],\r\n props: {\r\n variant: {\r\n type: String,\r\n default: 'primary',\r\n validator(variant) {\r\n return /^(primary|secondary)$/.test(variant);\r\n }\r\n }\r\n },\r\n computed: {\r\n rootElClasses() {\r\n return [ 'HamburgerDropDown', `HamburgerDropDown--${this.variant}`];\r\n },\r\n buttonClasses() {\r\n return ['HamburgerDropDown__heading', 'FocusableElement', {\r\n 'HamburgerDropDown__heading--open': this.isOpen\r\n }];\r\n }\r\n },\r\n template: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
    \r\n \r\n
\r\n
\r\n \r\n \r\n `\r\n});\r\n","import Vue from 'vue';\r\nimport windowSize from '@Shared/mixins/window-size';\r\nimport { loadGSAP } from '@Shared/utils/gsap-utils';\r\nimport { HEADER_NAV } from '@Shared/settings';\r\nconst { bottomNavHeightMobile } = HEADER_NAV;\r\nimport GoogleAnalytics from '@Shared/utils/GoogleAnalytics';\r\n// import { gsap } from 'gsap';\r\n\r\nVue.component('hamburger-menu', {\r\n mixins: [ windowSize ],\r\n props: {\r\n buttonAriaLabel: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n data() {\r\n return {\r\n isOpen: false\r\n };\r\n },\r\n computed: {\r\n rootElClasses() {\r\n return ['HamburgerMenu', { 'HamburgerMenu--open': this.isOpen }];\r\n },\r\n lines() {\r\n return [\r\n 'HamburgerMenu__line HamburgerMenu__line--top',\r\n 'HamburgerMenu__line HamburgerMenu__line--middle',\r\n 'HamburgerMenu__line HamburgerMenu__line--middle',\r\n 'HamburgerMenu__line HamburgerMenu__line--bottom'\r\n ];\r\n },\r\n ariaHidden() {\r\n return (!this.isOpen).toString();\r\n },\r\n listWrapperStyles() {\r\n return this.isPhone ?\r\n {\r\n width: `${this.windowWidth}px`,\r\n height: `${this.windowHeight - bottomNavHeightMobile}px`\r\n } :\r\n {};\r\n }\r\n },\r\n methods: {\r\n handleClick() {\r\n GoogleAnalytics.push({\r\n event: 'Navigation',\r\n navigationItem: 'Menu',\r\n navigation_click: this.isOpen ? 'close' : 'open'\r\n });\r\n this.isOpen = !this.isOpen;\r\n },\r\n createTimeline({ wrapper, button, done }) {\r\n return gsap.timeline({\r\n onStart: () => {\r\n // Lock body scroll\r\n if (!this.isOpen) {\r\n this.$eventBus.$emit('hamburgerMenu:willClose');\r\n }\r\n else {\r\n this.$eventBus.$emit('hamburgerMenu:willOpen');\r\n }\r\n },\r\n onComplete: () => {\r\n done();\r\n gsap.set([wrapper, button], { clearProps: 'transform,opacity,visibility' });\r\n\r\n // Enable body scroll\r\n if (this.isOpen) {\r\n this.$eventBus.$emit('hamburgerMenu:open');\r\n }\r\n else {\r\n this.$eventBus.$emit('hamburgerMenu:closed');\r\n }\r\n }\r\n });\r\n },\r\n async animateIn(el, done) {\r\n const { wrapper, button } = this.$refs;\r\n\r\n (!window.gsap && await loadGSAP());\r\n\r\n const timeline = this.createTimeline({ wrapper, button, done });\r\n\r\n if (this.isMobile) {\r\n timeline.fromTo(wrapper, { xPercent: 100 }, { xPercent: 0, duration: 0.5, ease: 'quad.out' });\r\n }\r\n else {\r\n timeline.fromTo(wrapper, { autoAlpha: 0 }, { autoAlpha: 1, duration: 0.3, ease: 'sine.out' });\r\n }\r\n },\r\n async animateOut(el, done) {\r\n const { wrapper, button } = this.$refs;\r\n\r\n (!window.gsap && await loadGSAP());\r\n\r\n const timeline = this.createTimeline({ wrapper, button, done });\r\n\r\n if (this.isMobile) {\r\n timeline.fromTo(wrapper, { xPercent: 0 }, { xPercent: 100, duration: 0.4, ease: 'quad.in' });\r\n }\r\n else {\r\n timeline.fromTo(wrapper, { autoAlpha: 1 }, { autoAlpha: 0, duration: 0.25, ease: 'sine.in' });\r\n }\r\n }\r\n },\r\n template: `\r\n \r\n `\r\n});\r\n","import Vue from 'vue';\r\nimport windowSize from '@Shared/mixins/window-size';\r\nimport _get from 'lodash/get';\r\n\r\nVue.component('header-nav', {\r\n mixins: [ windowSize ],\r\n\r\n props: {\r\n shoppingBasketBadge: Number\r\n },\r\n\r\n data() {\r\n return {\r\n isMenuCollapsed: true,\r\n shoppingBasketCount: 0,\r\n scrollDirection: '',\r\n isFocused: false,\r\n };\r\n },\r\n computed: {\r\n isTopNavHidden() {\r\n return this.scrollDirection === 'down' && !this.isFocused && !this.isMobile;\r\n }\r\n },\r\n\r\n watch: {\r\n isTopNavHidden(isHidden) {\r\n this.$store.commit('setNavState', { key: 'isHidden', value: isHidden });\r\n }\r\n },\r\n\r\n created() {\r\n // Initial value will be set to null, so that if the user reloads the page while they have already scrolled\r\n // down, the top nav will not hide on page load.\r\n this._previousScrollTop = null;\r\n },\r\n mounted() {\r\n this.shoppingBasketCount = this.shoppingBasketBadge;\r\n this.registerUpdateBasketCount();\r\n\r\n window.addEventListener('scroll', this.handleScroll, { passive: true });\r\n\r\n // toggle dropdown in the header nav bar on nav bar button in desktop view\r\n document.addEventListener(\"click\", (e) => {\r\n const isDropdownButton = e.target.matches(\"[data-dropdown-button]\");\r\n if (!isDropdownButton && e.target.closest(\"[data-dropdown]\") != null)\r\n return;\r\n let curentDropdown;\r\n if (isDropdownButton) {\r\n curentDropdown = e.target.closest(\"[data-dropdown]\");\r\n if (curentDropdown) curentDropdown.classList.toggle(\"active\");\r\n }\r\n document\r\n .querySelectorAll(\"[data-dropdown].active\")\r\n .forEach((dropdown) => {\r\n if (dropdown === curentDropdown || !dropdown) return;\r\n if(dropdown) dropdown.classList.remove(\"active\");\r\n });\r\n });\r\n\r\n const myAccountModalContainer = document.querySelector(\".HeaderNav__my-account-modal-container\");\r\n const myAccountModalCloseButton = document.querySelector(\".HeaderNav__my-account-modal-close-btn\");\r\n const myAccountModalContent = document.querySelector(\".HeaderNav__my-account-modal-content\");\r\n const myAccountNavButton = document.querySelector(\".HamburgerMenu__my-account-button\");\r\n\r\n // toggle the mobile my account header nav modal on click of the \"my account\" button\r\n if (myAccountNavButton) {\r\n myAccountNavButton.addEventListener(\"click\", () => {\r\n myAccountModalContainer.classList.toggle(\"showMyAccountModal\");\r\n });\r\n }\r\n\r\n // toggle the mobile my account header nav modal on click of the \"close\" button in the modal\r\n myAccountModalCloseButton.addEventListener(\"click\", () => {\r\n myAccountModalContainer.classList.toggle(\"showMyAccountModal\");\r\n });\r\n\r\n // toggle the mobile my account header nav modal on click of the modal back drop\r\n myAccountModalContainer.addEventListener(\"click\", () => {\r\n myAccountModalContainer.classList.toggle(\"showMyAccountModal\");\r\n });\r\n myAccountModalContent.addEventListener(\"click\", (event) => {\r\n event.stopPropagation();\r\n });\r\n\r\n // toggle dropdown in the header nav bar on nav bar button click for mobile view\r\n document.addEventListener(\"click\", (e) => {\r\n const isDropdownButton = e.target.matches(\r\n \"[data-dropdown-button-mobile]\"\r\n );\r\n if (\r\n !isDropdownButton &&\r\n e.target.closest(\"[data-dropdown-mobile]\") != null\r\n )\r\n return;\r\n\r\n let curentDropdown;\r\n if (isDropdownButton) {\r\n curentDropdown = e.target.closest(\"[data-dropdown-mobile]\");\r\n if (curentDropdown) curentDropdown.classList.toggle(\"active\");\r\n }\r\n document\r\n .querySelectorAll(\"[data-dropdown-mobile].active\")\r\n .forEach((dropdown) => {\r\n if (dropdown === curentDropdown || !dropdown) return;\r\n dropdown.classList.remove(\"active\");\r\n });\r\n });\r\n\r\n this.scrollToLocationOnPage(); \r\n\r\n\r\n \r\n\r\n // if hamburger menu is open then hide the get quote button \r\n let hamburgerMenu = document.querySelector(\".HamburgerMenu \");\r\n hamburgerMenu.addEventListener('click', function() {\r\n let getQuoteLinks = document.querySelectorAll(\".quick-feature--item\");\r\n getQuoteLinks.forEach(link => {\r\n if (link){\r\n link.classList.toggle(\"HamburgerMenu__hidden\");\r\n }\r\n });\r\n });\r\n\r\n // if the current focused element is the skipToMain link then when the user presses the tab key take them to the first or \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
    \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n `\r\n});\r\n","import Vue from 'vue';\r\nimport windowSize from '@Shared/mixins/window-size';\r\n\r\nVue.component('menu-nav', {\r\n mixins: [ windowSize ],\r\n props: {\r\n isCollapsed: Boolean,\r\n shoppingBasketCount: Number,\r\n itemsCount: Number\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport dropDown from '@Shared/mixins/drop-down';\r\nimport { loadGSAP } from '@Shared/utils/gsap-utils';\r\n// import { gsap } from 'gsap';\r\n\r\nVue.component('nav-drop-down', {\r\n mixins: [ dropDown ],\r\n props: {\r\n menuAlignment: {\r\n type: String,\r\n default: 'left',\r\n validator(alignment) {\r\n return /^(left|right)$/.test(alignment);\r\n }\r\n }\r\n },\r\n computed: {\r\n wrapperClasses() {\r\n return [\r\n 'NavDropDown__items-wrapper',\r\n `NavDropDown__items-wrapper--${this.menuAlignment}`\r\n ];\r\n }\r\n },\r\n async mounted() {\r\n (!window.gsap && await loadGSAP());\r\n\r\n this.setWrapperWidth();\r\n },\r\n methods: {\r\n getDropDownSize() {\r\n if (!this._dropDownHeight) {\r\n const topOffset = 10;\r\n const boxShadowOffset = 3;\r\n\r\n const { container } = this.$refs;\r\n const { height, width } = container.getBoundingClientRect();\r\n\r\n this._dropDownHeight = height + boxShadowOffset + topOffset;\r\n this._dropDownWidth = width;\r\n }\r\n\r\n return {\r\n width: this._dropDownWidth,\r\n height: this._dropDownHeight\r\n };\r\n },\r\n setWrapperWidth() {\r\n const boxShadowOffset = 10;\r\n const { wrapper } = this.$refs;\r\n gsap.set(wrapper, { width: this.getDropDownSize().width + boxShadowOffset });\r\n }\r\n },\r\n template: `\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
\r\n \r\n \r\n `\r\n});\r\n","import Vue from 'vue';\r\nimport { BUTTON_GTM_CONFIGS } from '@Shared/settings';\r\nimport { loadGSAP } from '@Shared/utils/gsap-utils';\r\nimport { mergeClasses } from '@Shared/utils/vue-component-helpers';\r\n// import { gsap } from 'gsap';\r\n\r\nconst backgroundClass = 'OnliaButton__background';\r\nconst backgroundInnerClass = 'OnliaButton__background-inner';\r\n\r\n// This regex looks for <, an optional slash /, one or more characters that are not >, then either > or $ (the end of the line)\r\nconst sanitizeHTML = htmlString => htmlString.replace(/<\\/?[^>]+(>|$)/g, '');\r\n\r\nconst createOutline = createElement => (\r\n createElement('span', {\r\n class: 'OnliaButton__outline',\r\n attrs: { tabindex: -1 }\r\n })\r\n);\r\n\r\nconst createLabel = (createElement, context) => {\r\n const { props: { label, sanitizeLabel, labelWrap, white } } = context;\r\n return createElement('span', {\r\n class: ['OnliaButton__label', { '-textWrap': labelWrap, '-white': white } ],\r\n attrs: { tabindex: -1 },\r\n domProps: {\r\n ...(label && { innerHTML: sanitizeLabel ? sanitizeHTML(label) : label })\r\n }\r\n }, (context.children || []));\r\n};\r\n\r\nconst createBackground = (createElement) => {\r\n const backgroundInnerEl = createElement('span', { class: backgroundInnerClass });\r\n\r\n return createElement('span', {\r\n class: backgroundClass,\r\n attrs: {\r\n tabindex: -1\r\n }\r\n }, [ backgroundInnerEl ]);\r\n};\r\n\r\nconst joinVNodeText = (merged, vNode) => {\r\n const { children } = vNode;\r\n\r\n const text = (\r\n Array.isArray(children) ?\r\n joinChildrenText(children) :\r\n (vNode.text || '')\r\n ).trim();\r\n\r\n return merged ? `${merged} ${text}` : text;\r\n};\r\n\r\nconst joinChildrenText = children => children.reduce(joinVNodeText, '');\r\n\r\nconst createGTMAttributes = (label, { children, props, parent }) => {\r\n const { gtmLabelComponentName, variant, gtmTrackVirtualPage } = props;\r\n const isLabelUpperCased = /^(primary|secondary)$/.test(variant);\r\n\r\n let gtmLabel = `${(label || children && joinChildrenText(children) || '')}`;\r\n\r\n // If CSS text transform uppercase is added to the label, gtm label value should match casing\r\n if (isLabelUpperCased) {\r\n gtmLabel = gtmLabel.toUpperCase();\r\n }\r\n\r\n if (gtmLabelComponentName) {\r\n gtmLabel += ` - ${gtmLabelComponentName}`;\r\n }\r\n\r\n if (gtmTrackVirtualPage) {\r\n const { analytics: { virtualPageURL } } = parent.$store.state;\r\n gtmLabel += ` - ${virtualPageURL}`;\r\n }\r\n\r\n const gtmAttributes = BUTTON_GTM_CONFIGS[variant] || {};\r\n\r\n return {\r\n ...gtmAttributes,\r\n 'data-gtm-label': gtmLabel,\r\n 'data-gtm-event': 'gtm.click'\r\n };\r\n};\r\n\r\nVue.component('onlia-button', {\r\n functional: true,\r\n props: {\r\n /**\r\n * Root element HTML tag. Default is 'a'.\r\n */\r\n tag: {\r\n type: String,\r\n validator(tag) {\r\n return /^(a|button)$/.test(tag);\r\n },\r\n default: 'a'\r\n },\r\n\r\n /**\r\n * These are the main style variations of buttons defined in One Onlia Style Library\r\n */\r\n variant: {\r\n type: String,\r\n validator(variant) {\r\n return /^(primary|secondary|hyperlink|none)$/.test(variant);\r\n },\r\n default: 'primary'\r\n },\r\n\r\n /**\r\n * Button label. Slots can be used instead of passing in a value.\r\n */\r\n label: {\r\n type: [ String, Number ],\r\n default: ''\r\n },\r\n\r\n /**\r\n * Button label wrap.\r\n */\r\n labelWrap: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * Button disabled state.\r\n */\r\n disabled: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * Button size variation. This is mainly for the global-nav/header. The button is slightly smaller then normal.\r\n */\r\n header: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * Button size variation. This will fill the width of parent or closest ancestor that doesn't have position static.\r\n */\r\n fullWidth: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * When true, the component will call a function to sanitize the label by removing html tags.\r\n */\r\n sanitizeLabel: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * When true, gtm attributes will be added, based on button variant. Static values for gtm attributes are defined in\r\n * settings and exported/imported as 'BUTTON_GTM_CONFIGS'.\r\n */\r\n addGTM: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * When a value is passed in, it will be appended to the attribute value for 'data-gtm-label'\r\n */\r\n gtmLabelComponentName: {\r\n type: String,\r\n default: null\r\n },\r\n\r\n /**\r\n * This value should be coming from Vuex analytics module ex. $store.state.analytics.isVirtualPage\r\n * When this value is true, the component will get the virtualPageURL value from analytics, and append it to the\r\n * attribute value for 'data-gtm-label'\r\n */\r\n gtmTrackVirtualPage: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * When true, will render with \"white\" background. This variant is a requirement from marketing, and not part of our design system.\r\n */\r\n white: {\r\n type: Boolean,\r\n default: false\r\n },\r\n \r\n /**\r\n * When true, will render with \"blue\" background. This variant is a requirement from marketing, and not part of our design system.\r\n */\r\n blue: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n render(createElement, context) {\r\n const {\r\n data: {\r\n attrs,\r\n ...rest\r\n },\r\n listeners: { click: onClick },\r\n props: {\r\n tag,\r\n variant,\r\n header,\r\n disabled,\r\n fullWidth,\r\n addGTM,\r\n label,\r\n white,\r\n blue\r\n }\r\n } = context;\r\n const isPillButton = /^(primary|secondary)$/.test(variant);\r\n\r\n const childElements = [\r\n createOutline(createElement),\r\n createLabel(createElement, context),\r\n ...(isPillButton ?\r\n [ createBackground(createElement) ] :\r\n []\r\n )\r\n ];\r\n\r\n const data = {\r\n ...rest,\r\n attrs: {\r\n ...(attrs && attrs),\r\n ...(addGTM && createGTMAttributes(label, context)),\r\n\r\n // Default type button, when the element is a button without a type specified.\r\n ...((!attrs || !attrs.type) && tag === 'button' && { type: 'button' }),\r\n\r\n // Disabled attribute will cause screen readers to miss the button. 'aria-disabled' is the more appropriate attribute.\r\n ...(disabled && {\r\n 'aria-disabled': 'true',\r\n tabindex: -1 // When the button is disabled, we should prevent tab navigation to the element\r\n })\r\n },\r\n class: [\r\n 'OnliaButton',\r\n `OnliaButton--${variant}`,\r\n {\r\n 'OnliaButton--header': header,\r\n 'OnliaButton--disabled': disabled,\r\n 'OnliaButton--full-width': fullWidth,\r\n \r\n // Variants required by Marketing\r\n '-white': white,\r\n '-blue': blue\r\n },\r\n // Make sure class overrides come after component's\r\n ...mergeClasses(context)\r\n ],\r\n // NOTE 2022-04-04 AndrewKim: empty property value will override staticClass from data spread.\r\n // This will prevent duplication of class names above.\r\n staticClass: '',\r\n on: {\r\n ...context.data.on,\r\n ...(isPillButton && {\r\n click: async (event) => {\r\n const { currentTarget } = event;\r\n const background = currentTarget.getElementsByClassName(backgroundClass);\r\n const backgroundInner = currentTarget.getElementsByClassName(backgroundInnerClass);\r\n\r\n if (onClick) onClick(event);\r\n\r\n (!window.gsap && await loadGSAP());\r\n\r\n gsap.fromTo(backgroundInner, { scale: 0 }, {\r\n scale: 1.3,\r\n ease: 'power2.out',\r\n duration: 0.7,\r\n clearProps: true,\r\n onStart: () => {\r\n gsap.set(background, { background: 'linear-gradient(68deg, #930093 0%, #5b0048)' });\r\n },\r\n onComplete: () => {\r\n gsap.set(background, { clearProps: 'all' });\r\n }\r\n });\r\n }\r\n })\r\n }\r\n };\r\n\r\n return createElement(tag, data, childElements);\r\n }\r\n});\r\n","import Vue from 'vue';\r\n\r\nVue.component('onlia-tooltip', {\r\n props: {\r\n classes: {\r\n type: String,\r\n default: 'btn-link icon-tooltip-question',\r\n },\r\n ariaLabel: {\r\n type: String,\r\n },\r\n tooltipBody: {\r\n type: String\r\n }\r\n },\r\n components: {\r\n tooltipButton: () => import('./tooltip-button')\r\n },\r\n template: `\r\n \r\n \r\n \r\n `,\r\n})","import Vue from 'vue';\r\n\r\nconst icons = [\r\n {\r\n regex: /(^|\\s)(icon-car)(\\s|$)/,\r\n className: '-auto'\r\n },\r\n {\r\n regex: /(^|\\s)(icon-home)(\\s|$)/,\r\n className: '-home'\r\n },\r\n {\r\n regex: /(^|\\s)(icon-car-coverage)(\\s|$)/,\r\n className: '-essentialCoverage'\r\n },\r\n {\r\n regex: /(^|\\s)(icon-fair-and-simple-terms|icon-onlia)(\\s|$)/,\r\n className: '-moreProtection'\r\n },\r\n {\r\n regex: /(^|\\s)(icon-loss-or-damage)(\\s|$)/,\r\n className: '-physicalDamage'\r\n },\r\n {\r\n regex: /(^|\\s)(icon-coverage-upgrade)(\\s|$)/,\r\n className: '-enhancedCoverage'\r\n },\r\n {\r\n regex: /(^|\\s)(icon-optional-accident-benefits)(\\s|$)/,\r\n className: '-optionalAccidentBenefits'\r\n },\r\n {\r\n regex: /(^|\\s)(icon-endorsements)(\\s|$)/,\r\n className: '-endorsements'\r\n },\r\n {\r\n regex: /(^|\\s)(icon-task-list-cash)(\\s|$)/,\r\n className: '-deductible'\r\n },\r\n {\r\n regex: /(^|\\s)(icon-change-policy)(\\s|$)/,\r\n className: '-changePolicy'\r\n },\r\n {\r\n regex: /(^|\\s)(icon-cancel-policy)(\\s|$)/,\r\n className: '-cancelPolicy'\r\n }\r\n];\r\n\r\nconst productIconClasses = icons.map(icon => icon.className).join('|');\r\nconst productIconRegex = new RegExp(`(^|\\\\s)(${productIconClasses})(\\\\s|$)`);\r\n\r\nconst getIconName = (iconClassName) => {\r\n if (!iconClassName || typeof iconClassName !== 'string') return '';\r\n\r\n const hasIconClass = productIconRegex.test(iconClassName);\r\n const matchedClass = iconClassName.match(productIconRegex);\r\n\r\n if (hasIconClass && Array.isArray(matchedClass)) {\r\n return matchedClass[0];\r\n }\r\n\r\n for (const { regex, className } of icons) {\r\n if (regex.test(iconClassName)) {\r\n return className;\r\n }\r\n }\r\n\r\n return iconClassName;\r\n};\r\n\r\nVue.component('product-icon', {\r\n functional: true,\r\n props: {\r\n tag: {\r\n type: String,\r\n default: 'span'\r\n },\r\n iconClassName: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n render(createElement, context) {\r\n const {\r\n data: {\r\n class: classes = {},\r\n staticClass = '',\r\n ...rest\r\n },\r\n props: {\r\n tag,\r\n iconClassName\r\n },\r\n children = []\r\n } = context;\r\n\r\n const data = {\r\n ...rest,\r\n class: [\r\n 'a-productIcon',\r\n getIconName(iconClassName),\r\n staticClass,\r\n ...(Array.isArray(classes) ?\r\n classes :\r\n [ classes ]\r\n )\r\n ]\r\n };\r\n\r\n return createElement(tag, data, children);\r\n }\r\n});\r\n","import Vue from 'vue';\r\n\r\nVue.component('product-page-nav-link', {\r\n props: {\r\n link: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n computed: {\r\n isActive() {\r\n return this.link === window.location.pathname;\r\n },\r\n ariaAttributes() {\r\n return this.isActive ? { 'aria-current': 'page' } : {};\r\n }\r\n },\r\n methods: {\r\n onClick(event) {\r\n if (this.isActive) {\r\n event.preventDefault();\r\n }\r\n }\r\n },\r\n template: `\r\n
  • \r\n \r\n
  • \r\n `\r\n});\r\n","import Vue from 'vue';\r\nimport api from '../mixins/api';\r\n\r\nVue.component('quick-navigation', {\r\n mixins: [ api ],\r\n\r\n props: {\r\n links: {\r\n type: Array,\r\n default: () => []\r\n }\r\n },\r\n\r\n data() {\r\n return {\r\n Model: {},\r\n quickLinksOpened: false\r\n };\r\n },\r\n\r\n computed: {\r\n activeLinkTitle() {\r\n const currentURLPath = decodeURI(window.location.pathname);\r\n const [ activeLink ] = this.links.filter(link => link.url === currentURLPath);\r\n\r\n return activeLink ? activeLink.title : '';\r\n },\r\n isMobile() {\r\n return this.$store.getters.breakpointMobile;\r\n },\r\n ariaExpanded() {\r\n return this.quickLinksOpened ? 'true' : 'false';\r\n }\r\n },\r\n\r\n created() {\r\n this._focusOutTimeout = null;\r\n },\r\n beforeDestroy() {\r\n this.clearTimeout();\r\n },\r\n\r\n methods: {\r\n openModal(event, modalid) {\r\n event.preventDefault();\r\n this.$root.$emit('dynamic::modal::show', modalid);\r\n },\r\n handleFocus() {\r\n this.clearTimeout();\r\n this.quickLinksOpened = true;\r\n },\r\n async handleBlur() {\r\n // NOTE 2022-03-09 AndrewKim: focusin and focusout will fire concurrently as you tab through the links.\r\n // We need to delay the close, or else it will look buggy.\r\n this.clearTimeout();\r\n this._focusOutTimeout = setTimeout(this.closeLinks, 50);\r\n },\r\n closeLinks() {\r\n this.quickLinksOpened = false;\r\n },\r\n clearTimeout() {\r\n (this._focusOutTimeout && clearTimeout(this._focusOutTimeout));\r\n this._focusOutTimeout = null;\r\n },\r\n toggleDropDown() {\r\n this.quickLinksOpened = !this.quickLinksOpened;\r\n }\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport { SCRIPT_LOADER } from '@Shared/settings';\r\n\r\nVue.component('script-loader', {\r\n props : {\r\n scriptId : String,\r\n scriptUrl : String\r\n },\r\n\r\n mounted() {\r\n this.loadScript();\r\n },\r\n\r\n methods : {\r\n handleError(event) {\r\n event.target.setAttribute(SCRIPT_LOADER.readyStateDataAttribute, SCRIPT_LOADER.readyStates.error);\r\n this.$emit('error');\r\n },\r\n handleLoad(event) {\r\n event.target.setAttribute(SCRIPT_LOADER.readyStateDataAttribute, SCRIPT_LOADER.readyStates.loaded);\r\n this.$emit('load');\r\n },\r\n addEventListeners(element) {\r\n element.addEventListener('error', this.handleError);\r\n element.addEventListener('load', this.handleLoad);\r\n },\r\n loadScript() {\r\n const scriptEl = document.getElementById(this.scriptId);\r\n\r\n if (scriptEl) {\r\n const readyState = scriptEl.dataset[SCRIPT_LOADER.readyStateDataSetKey];\r\n\r\n if (!readyState) {\r\n this.addEventListeners(scriptEl);\r\n return;\r\n }\r\n\r\n if (readyState === SCRIPT_LOADER.readyStates.error) this.$emit('error');\r\n\r\n return;\r\n }\r\n\r\n if (this.scriptUrl) {\r\n const extScript = document.createElement('script');\r\n\r\n this.addEventListeners(extScript);\r\n\r\n extScript.setAttribute('id', this.scriptId);\r\n extScript.setAttribute('async', 'true');\r\n extScript.setAttribute('src', this.scriptUrl);\r\n\r\n document.head.appendChild(extScript);\r\n }\r\n }\r\n },\r\n\r\n render() {\r\n return '';\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport axios from 'axios';\r\nimport api from '../mixins/api';\r\nimport { getCookieValue } from '@Shared/utils/basic-functions';\r\n\r\nVue.component('session-expired', {\r\n mixins: [api],\r\n props: {\r\n sessionOutPublicRedirect: String,\r\n sessionOutPrivateRedirect: String,\r\n sessionEnabled: Boolean,\r\n pageEditor: Boolean,\r\n funnelInProgress: Boolean,\r\n sessionWaitingBuffer: Number,\r\n isAuthenticated: Boolean\r\n },\r\n\r\n data: function () {\r\n return {\r\n remaining: '',\r\n redirection: null,\r\n intervalId: {},\r\n beforeSessionExpirationWarning: {},\r\n sessionId: {},\r\n popupDuration: {},\r\n initTime: new Date(),\r\n isSessionExpired: false\r\n };\r\n },\r\n\r\n computed: {\r\n Model: function () {\r\n return this.$store.state[this.storeName].model;\r\n }\r\n },\r\n\r\n created() {\r\n this.sessionData = {};\r\n this.refreshOperationRunning = false;\r\n this.minTimerDelay = 10000;\r\n },\r\n\r\n mounted() {\r\n if (this.isSessionExpirationCheckEnabled()) {\r\n this.initSession();\r\n this.registerResetSessionEvent();\r\n this.handleVisibilityChangeEvent();\r\n }\r\n },\r\n\r\n methods: {\r\n getCookieSessionInfo() {\r\n const sessionCookieVal = getCookieValue('TrxStsTrack').split(',');\r\n return {\r\n sessionId: sessionCookieVal[0],\r\n sessionExpirationDate: sessionCookieVal[1],\r\n sessionWarningDate: sessionCookieVal[2],\r\n dummyDate: sessionCookieVal[3],\r\n serverCurrentDate: sessionCookieVal[4]\r\n };\r\n },\r\n\r\n initSession() {\r\n const sessionData = this.sessionData = this.getCookieSessionInfo();\r\n this.sessionId = sessionData.sessionId;\r\n this.beforeSessionExpirationWarning = (Number(sessionData.sessionWarningDate) - this.initTime);\r\n this.popupDuration = (Number(sessionData.sessionExpirationDate) - Number(sessionData.sessionWarningDate)) / 1000 - this.sessionWaitingBuffer;\r\n\r\n if (this.beforeSessionExpirationWarning > 0) { //old session cookie\r\n this.startSessionTimer();\r\n }\r\n else {\r\n //this.$root.$emit('error-modal-open', \"It looks like server ended your session due to inactivity. Please, restart the process!\");\r\n }\r\n },\r\n\r\n startSessionTimer() {\r\n const vm = this;\r\n\r\n this.initTime = new Date();\r\n\r\n let sessionTimerDelay = this.calculateSessionTimerDelay(this.beforeSessionExpirationWarning);\r\n\r\n //console.log('cookie id: ' + vm.sessionData.sessionId);\r\n //console.log('diff: ' + (vm.sessionData.sessionWarningDate - this.initTime));\r\n\r\n let sessionTimerId = setTimeout(function checkSessionTimeout() {\r\n //console.log('time left: ' + (Number(vm.sessionData.sessionWarningDate) - new Date()));\r\n\r\n if ((Number(vm.sessionData.sessionWarningDate) - new Date()) <= 0) {\r\n vm.activateCountDown(vm.popupDuration);\r\n vm.$refs['session-modal'].show();\r\n }\r\n else {\r\n sessionTimerDelay = vm.calculateSessionTimerDelay(sessionTimerDelay);\r\n\r\n //console.log(\"sessionTimerDelay: \" + sessionTimerDelay);\r\n\r\n sessionTimerId = setTimeout(checkSessionTimeout, sessionTimerDelay);\r\n }\r\n }, this.sessionTimerDelay);\r\n },\r\n\r\n calculateSessionTimerDelay(initialDelay) {\r\n const sessionTimerDelay = Math.floor(initialDelay / 2);\r\n\r\n return (sessionTimerDelay > this.minTimerDelay) ? sessionTimerDelay : this.minTimerDelay;\r\n },\r\n\r\n activateCountDown(countDown) {\r\n this.remaining = countDown ? countDown : this.remaining;\r\n const tic = 1000;\r\n this.redirection = this.sessionWaitingBuffer;\r\n this.intervalId = setInterval(() => {\r\n if (this.remaining <= 0) {\r\n this.redirection--;\r\n this.isSessionExpired = true;\r\n }\r\n else {\r\n this.remaining--;\r\n }\r\n\r\n if ((this.remaining + this.redirection) <= 0) {\r\n this.expireSession();\r\n }\r\n }, tic);\r\n },\r\n\r\n retainSession() {\r\n const vm = this;\r\n clearInterval(this.intervalId);\r\n if (!this.refreshOperationRunning) {\r\n this.refreshOperationRunning = true;\r\n\r\n axios.post(this.api.refreshSession, {}, {\r\n headers: {\r\n skipLoading: true\r\n }\r\n })\r\n .then(() => {\r\n vm.$refs['session-modal'].hide();\r\n vm.refreshOperationRunning = false;\r\n vm.updateSessionTimer();\r\n vm.startSessionTimer();\r\n //vm.initSession();\r\n }).catch(() => {\r\n vm.expireSession();\r\n });\r\n }\r\n },\r\n\r\n expireSession() {\r\n clearInterval(this.intervalId);\r\n axios.post(this.api.logout)\r\n .then(() => {\r\n const redirectPage = this.isAuthenticated ? this.sessionOutPrivateRedirect : this.sessionOutPublicRedirect;\r\n window.location = redirectPage;\r\n if (sessionStorage.getItem('UNSAVED_MODAL_OPENED')) {\r\n sessionStorage.removeItem('UNSAVED_MODAL_OPENED');\r\n }\r\n //this.initSession();\r\n });\r\n },\r\n\r\n updateSessionTimer() {\r\n this.sessionData.sessionWarningDate = Number(new Date()) + this.beforeSessionExpirationWarning;\r\n },\r\n\r\n handleVisibilityChangeEvent() {\r\n const vm = this;\r\n document.addEventListener('visibilitychange', () => {\r\n if (vm.isSessionExpirationCheckEnabled() && document.visibilityState == 'visible') {\r\n //console.log('doc visibilityState: ' + document.visibilityState);\r\n //console.log('time check: ' + (Number(vm.sessionData.sessionWarningDate) - new Date()));\r\n if ((Number(vm.sessionData.sessionWarningDate) - new Date()) < 0) { //session expired\r\n vm.$refs['session-modal'].hide();\r\n vm.expireSession();\r\n }\r\n }\r\n }, false);\r\n },\r\n\r\n registerResetSessionEvent() {\r\n const vm = this;\r\n this.$root.$on('reset-session-timer', () => {\r\n if (new Date() - vm.initTime > 2000) { //do not reset more frequently than 2 seconds.\r\n vm.updateSessionTimer();\r\n //console.log('new warning date: ' + vm.sessionData.sessionWarningDate);\r\n }\r\n });\r\n },\r\n\r\n isSessionExpirationCheckEnabled() {\r\n return (!this.pageEditor && this.sessionEnabled && (this.isAuthenticated || this.funnelInProgress));\r\n }\r\n }\r\n});\r\n","import Vue from \"vue\";\r\n\r\nVue.component(\"session-props-provider\", {\r\n data() {\r\n return {\r\n sessionOutPublicRedirect: ir.sessionExpirationUrl,\r\n sessionOutPrivateRedirect: ir.loginUrl,\r\n sessionEnabled: ir.sessionPopupEnabled,\r\n sessionWaitingBuffer: 10,\r\n isAuthenticated: ir.authenticated,\r\n pageEditor: ir.pageEditor,\r\n funnelInProgress: ir.funnelInProgress,\r\n }\r\n }\r\n})","import Vue from \"vue\";\r\n\r\nVue.component('shopping-basket-count', {\r\n props: {\r\n basketCount: Number\r\n },\r\n mounted() {\r\n this.$root.$emit(\"Broadcast::UpdateShoppingBasketCount\", this.basketCount);\r\n }\r\n})","/* eslint no-console: off */\r\nimport Vue from 'vue';\r\nimport { loadScript } from '@Shared/utils/load-script';\r\nimport { IS_DEV } from '@Shared/settings';\r\n\r\n/**\r\n * Documentation on Surfly options can be found here:\r\n * {@link https://docs.surfly.com/surfly-options.html| Surfly Options}\r\n */\r\nconst SETTINGS = {\r\n // Surfly session options can be set here, or at the Company/Plan levels.\r\n private_session: true, // to make sure only logged in agents can join the call\r\n password_required: false,\r\n\r\n // Enterprise options\r\n // Restrict access to the specific resources\r\n // NOTE 2022-03-24 AndrewKim: documentation references both 'blocklist' and 'blacklist'. Inspecting session settings\r\n // proxy object, shows both properties are used.\r\n // blocklist: JSON.stringify([\r\n // { pattern: '.*\\\\/insurance\\\\/.*' },\r\n // { pattern: '^https?://[\\\\w\\\\.]*(dev\\\\.onlia\\\\.ca)' }\r\n // ]),\r\n // blacklist: JSON.stringify([\r\n // { pattern: '.*\\\\/insurance\\\\/.*' },\r\n // { pattern: '^https?://[\\\\w\\\\.]*(dev\\\\.onlia\\\\.ca)' }\r\n // ]),\r\n\r\n // If enabled, users starting a session from the widget will see a message asking for consent to start co-browsing\r\n // with an agent from your company\r\n session_start_confirmation: true,\r\n\r\n agent_can_request_control: true,\r\n agent_can_take_control: true,\r\n anyone_can_deactivate_space: true,\r\n\r\n hide_cursors: true,\r\n\r\n region: 'ca',\r\n\r\n // Cookie options do not work in regards to transferring the funnel session.\r\n // httponly cookies will require an endpoint for Surfly to request all cookies.\r\n cookie_transfer_enabled: true,\r\n cookie_transfer_proxying: true,\r\n cookie_transfer_urls: [\r\n 'https://dev.onlia.ca/surfly_cookie_transfer/',\r\n 'https://meet.onliasense.ca/surfly_cookie_transfer/'\r\n ],\r\n\r\n // NOTE 2022-04-14 AndrewKim: Array items must be JSON objects\r\n /* eslint-disable quotes, quote-props */\r\n cookie_transfer_scopes: [\r\n { \"name\": \"ASP.NET_SessionId\", \"httponly\": true, \"path\": \"/\", \"domain\": \"dev.onlia.ca\" },\r\n { \"name\": \"SC_ANALYTICS_GLOBAL_COOKIE\", \"httponly\": true, \"path\": \"/\", \"domain\": \"dev.onlia.ca\" },\r\n { \"name\": \".ACHMEADIAUTH\", \"httponly\": true, \"path\": \"/\", \"domain\": \"dev.onlia.ca\" },\r\n { \"name\": \"__RequestVerificationToken\", \"httponly\": true, \"path\": \"/\", \"domain\": \"dev.onlia.ca\" },\r\n\r\n // Azure firewall cookies\r\n { \"name\": \"ARRAffinity\", \"httponly\": true, \"path\": \"/\", \"domain\": \".dev.onlia.ca\" },\r\n { \"name\": \"ARRAffinitySameSite\", \"httponly\": true, \"path\": \"/\", \"domain\": \".dev.onlia.ca\" }\r\n ],\r\n /* eslint-enable quotes, quote-props */\r\n\r\n verbose_console: !(/^w*\\.?onlia\\.ca$/.test(window.location.host)) || IS_DEV\r\n\r\n // S3 bucket is required to enable storing session logs\r\n // store_session_logs: true\r\n};\r\n\r\nconst SESSION_STORAGE_KEY = 'SURFLY_SESSION_ACTIVE';\r\n\r\n// Block my account and sign-in page from Surfly.\r\n// const PROTECTED_PAGES_REGEX = /insurance\\/(sign-in|myaccount)/i;\r\n// const IS_PROTECTED_PAGE = PROTECTED_PAGES_REGEX.test(location.pathname);\r\n\r\nVue.component('surfly-widget', {\r\n props: {\r\n widgetKey: {\r\n type: String,\r\n required: true\r\n },\r\n widgetUrl: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n data() {\r\n return {\r\n isSessionActive: false\r\n };\r\n },\r\n created() {\r\n this._hasPreviousSession = false;\r\n this.checkSession();\r\n },\r\n methods: {\r\n async loadScript() {\r\n try {\r\n // Initialize Surfly\r\n const f = 'Surfly';\r\n const s = window;\r\n s[f] = s[f] || { init: function () {s[f].q = arguments} };\r\n\r\n await loadScript({\r\n id: 'Surfly',\r\n url: this.widgetUrl,\r\n // onLoad: this.init,\r\n scriptAttributes: {\r\n async: ''\r\n }\r\n });\r\n\r\n if (!Surfly) {\r\n (IS_DEV && console.error('Surfly load error.'));\r\n return;\r\n }\r\n\r\n const mergedSettings = {\r\n ...SETTINGS,\r\n widget_key: this.widgetKey,\r\n ...(window.SURFLY_SETTINGS_OVERRIDE && window.SURFLY_SETTINGS_OVERRIDE)\r\n };\r\n\r\n Surfly.init(mergedSettings, this.init);\r\n }\r\n catch (error) {\r\n (IS_DEV && console.error('SurflyWidget loadScript error:', error));\r\n }\r\n },\r\n checkSession() {\r\n this._hasPreviousSession = sessionStorage.getItem(SESSION_STORAGE_KEY);\r\n if (this._hasPreviousSession) {\r\n this.loadScript();\r\n }\r\n },\r\n handleSessionStart(session) {\r\n console.log('%c HANDLE_SESSION_START:', 'color:#40c4ff;font-weight:bold;', session);\r\n this.isSessionActive = true;\r\n sessionStorage.setItem(SESSION_STORAGE_KEY, 'true');\r\n },\r\n handleSessionEnd(session) {\r\n console.log('%c HANDLE_SESSION_END:', 'color:#40c4ff;font-weight:bold;', session);\r\n this.isSessionActive = false;\r\n sessionStorage.removeItem(SESSION_STORAGE_KEY);\r\n },\r\n handleLocationChangeStart(session, event) {\r\n // const isProtectedPage = PROTECTED_PAGES_REGEX.test(event.url);\r\n // console.log('%c IS_PROTECTED_PAGE:', 'color:#40c4ff;font-weight:bold;', isProtectedPage);\r\n //\r\n // if (isProtectedPage) {\r\n // console.log('%c Surfly navigating to protected page. Cancelling navigation.', 'color:#40ffdb;font-weight:bold;');\r\n // session.end(`https://${window.location.host}/support`);\r\n // }\r\n },\r\n init(initResult) {\r\n try {\r\n if (!initResult.success) {\r\n // console.error('Surfly was unable to initialize properly.');\r\n return;\r\n }\r\n\r\n // console.log('%c Surfly init success', 'color:#40ffdb;font-weight:bold;');\r\n\r\n // if (!Surfly.isInsideSession && IS_PROTECTED_PAGE) {\r\n // const session = Surfly.currentSession || Surfly.sesssion || Surfly.listSessions[0];\r\n // if (session) {\r\n // session.end(`https://${window.location.host}/support`);\r\n // }\r\n // return;\r\n // }\r\n\r\n if (!Surfly.isInsideSession && !this._hasPreviousSession) {\r\n Surfly\r\n .session()\r\n .on('session_started', this.handleSessionStart)\r\n .on('session_ended', this.handleSessionEnd)\r\n .startLeader();\r\n }\r\n }\r\n catch (error) {\r\n (IS_DEV && console.error('SurflyWidget init error:', error));\r\n }\r\n }\r\n },\r\n render(createElement) {\r\n return createElement('onlia-button', {\r\n class: 'a-surflyWidget',\r\n props: {\r\n tag: 'button',\r\n variant: 'none',\r\n label: 'Surfly'\r\n },\r\n attrs: {\r\n /* aria-description will be in the future specifications of WAI-ARIA standard \r\n modern browsers are fully aware of it, but if you don’t want to see this reported in lighthouse-like tools should be aria-label */\r\n // 'aria-description': 'Start a screen sharing session',\r\n 'aria-label': 'Surfly start a screen sharing session'\r\n },\r\n on: {\r\n click: this.loadScript\r\n }\r\n });\r\n }\r\n});\r\n","import Vue from \"vue\";\r\n\r\n// Use this component to render Vue template\r\nVue.component('template-parser', {\r\n props: {\r\n rawTemplate: String,\r\n changeStateHandler: Function,\r\n onBackHandler: Function\r\n },\r\n render(h) {\r\n return h(Vue.compile(this.rawTemplate))\r\n }\r\n})","import EventEmitter from './EventEmitter';\r\nimport ScrollUtil from './ScrollUtil'\r\nimport store from '../../../store/store';\r\n\r\nconst events = [\r\n 'position:change'\r\n];\r\n\r\nexport const positions = Object.freeze({\r\n TOP: Symbol(0),\r\n BOTTOM: Symbol(1)\r\n})\r\n\r\nexport default class TooltipUtil extends EventEmitter {\r\n\r\n constructor(trigger, tooltip) {\r\n super({ events });\r\n\r\n this.triggerBoundingClientRect = trigger.getBoundingClientRect();\r\n this.tooltipBoundingClientRect = tooltip.getBoundingClientRect();\r\n this.position = null;\r\n this.resizeObserver = null;\r\n this.tooltipWidth = 300;\r\n this.tooltipLeftMargin = 20;\r\n\r\n this.events = {\r\n positionChange: events[0],\r\n };\r\n\r\n ScrollUtil.addScrollEventListener();\r\n this.createResizeObserver(trigger);\r\n\r\n ScrollUtil.on(ScrollUtil.events.scroll, () => this.handlePositionChange(trigger, false));\r\n }\r\n\r\n checkForPosition() {\r\n let position = positions.BOTTOM;\r\n\r\n const { bottom: triggerBottom } = this.triggerBoundingClientRect;\r\n const { height: tooltipHeight } = this.tooltipBoundingClientRect;\r\n const bottomSpace = store.state.windowSize.height - triggerBottom - 30;\r\n\r\n if (tooltipHeight > bottomSpace) {\r\n return position = positions.TOP;\r\n }\r\n\r\n return position;\r\n }\r\n\r\n createResizeObserver(trigger) {\r\n if ('ResizeObserver' in window) {\r\n this.resizeObserver = new ResizeObserver(() => this.handlePositionChange(trigger, true));\r\n this.resizeObserver.observe(document.body);\r\n }\r\n }\r\n\r\n getSpecificPosition(position) {\r\n return position === positions.TOP ? this.positionTop() : this.positionBottom();\r\n }\r\n\r\n positionTop() {\r\n const scrollTop = window.pageYOffset;\r\n const { top: triggerTop, left: triggerLeft, height: triggerHeight } = this.triggerBoundingClientRect;\r\n const { height: tooltipHeight } = this.tooltipBoundingClientRect;\r\n\r\n this.position = positions.TOP;\r\n\r\n return { position: this.position, top: Math.round(triggerTop + scrollTop - tooltipHeight - triggerHeight), ...this.getPositonLeft(triggerLeft) };\r\n }\r\n\r\n positionBottom() {\r\n const scrollTop = window.pageYOffset;\r\n const { top: triggerTop, left: triggerLeft, height: triggerHeight } = this.triggerBoundingClientRect;\r\n\r\n this.position = positions.BOTTOM;\r\n\r\n return { position: this.position, top: Math.round(triggerTop + scrollTop + triggerHeight), ...this.getPositonLeft(triggerLeft) };\r\n }\r\n\r\n getTooltipPosition() {\r\n const position = this.checkForPosition();\r\n\r\n return this.getSpecificPosition(position);\r\n }\r\n\r\n handlePositionChange(trigger, onResize) {\r\n this.triggerBoundingClientRect = trigger.getBoundingClientRect();\r\n const position = this.checkForPosition();\r\n\r\n if (position !== this.position || onResize) {\r\n this.position = position;\r\n this.emit(this.events.positionChange, this.getSpecificPosition(position));\r\n }\r\n }\r\n\r\n destroyResizeObserver() {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n this.resizeObserver = null;\r\n }\r\n }\r\n\r\n getPositonLeft(triggerLeft) {\r\n const minSpaceRight = 50;\r\n const minSpaceLeft = 20;\r\n\r\n let left = triggerLeft - this.tooltipLeftMargin;\r\n let arrowPosition = this.tooltipLeftMargin + 1;\r\n const tooltipEnd = left + this.tooltipWidth;\r\n const spaceRight = store.state.windowSize.width - tooltipEnd;\r\n\r\n if (spaceRight < minSpaceRight) {\r\n left = left - Math.abs(spaceRight) - minSpaceRight;\r\n arrowPosition = arrowPosition + Math.abs(spaceRight) + minSpaceRight;\r\n }\r\n\r\n if (left < minSpaceLeft) {\r\n arrowPosition = arrowPosition - Math.abs(left) - minSpaceLeft;\r\n left = minSpaceLeft;\r\n }\r\n\r\n return { left, arrowPosition };\r\n }\r\n\r\n destroy() {\r\n ScrollUtil.destroy();\r\n this.destroyResizeObserver();\r\n this.removeAllListeners();\r\n }\r\n}","import Vue from 'vue';\r\nimport TooltipUtil, { positions } from '@Shared/utils/TooltipUtil';\r\nimport { IS_DEV, IS_FUNNEL } from '@Shared/settings';\r\nimport GoogleAnalytics from '@Shared/utils/GoogleAnalytics';\r\n\r\nexport default {\r\n props: {\r\n classes: {\r\n type: String,\r\n default: 'btn-link icon-tooltip-question'\r\n },\r\n ariaLabel: {\r\n type: String\r\n },\r\n tooltipBody: {\r\n type: String\r\n }\r\n },\r\n created() {\r\n this._tooltipRef = null;\r\n this._tooltipUtil = null;\r\n this._isOpen = false;\r\n this._label = '';\r\n this.$eventBus.$on('funnel:focusOnInput', this.handleInputFocus);\r\n },\r\n \r\n template: `\r\n \r\n \r\n \r\n `,\r\n methods: {\r\n createTooltip() {\r\n const tooltipInstance = Vue.extend({\r\n props: {\r\n body: String\r\n },\r\n template: `\r\n
    \r\n
    \r\n
    \r\n
    \r\n `\r\n });\r\n\r\n const mountedInstance = new tooltipInstance({\r\n propsData: {\r\n body: this.tooltipBody\r\n }\r\n }).$mount();\r\n\r\n return mountedInstance.$el;\r\n },\r\n\r\n handleClickOutside(event) {\r\n if (!this._tooltipRef.contains(event.target)) {\r\n this.hideTooltip();\r\n }\r\n },\r\n\r\n handleFocusChange() {\r\n if (document.activeElement !== this.$el) {\r\n this.hideTooltip();\r\n }\r\n },\r\n \r\n handleInputFocus(event) {\r\n const clickedElement = event.target;\r\n const isLabel = clickedElement.classList.contains('a-formGroup__label');\r\n const inputEl = clickedElement.closest('.a-formGroup').querySelector('.form-control');\r\n const sliderEl = clickedElement.closest('.a-formGroup').querySelector('.vue-slider-dot');\r\n const radioButtonEl = clickedElement.closest('.a-formGroup').querySelector('.RadioButtonList__input');\r\n if (isLabel) {\r\n inputEl && inputEl.focus();\r\n sliderEl && sliderEl.focus();\r\n radioButtonEl && radioButtonEl.focus();\r\n }\r\n },\r\n\r\n getLabel() {\r\n if (this._label) return this._label;\r\n\r\n try {\r\n const labelEl = this.$el.closest('.a-formGroup').querySelector('.a-formGroup__label');\r\n if (labelEl) {\r\n this._label = `Icon - ${labelEl.innerText}`;\r\n }\r\n }\r\n catch (error) {\r\n (IS_DEV && console.error('sendAnalytics find label error:', error));\r\n }\r\n\r\n return this._label;\r\n },\r\n sendAnalytics() {\r\n if (!IS_FUNNEL) return;\r\n\r\n const label = this.getLabel();\r\n\r\n GoogleAnalytics.push({\r\n label,\r\n event: 'gtm.click',\r\n category: 'User Interaction',\r\n action: 'Component Button Other'\r\n });\r\n },\r\n\r\n openTooltip() {\r\n\r\n if (!this._isOpen) {\r\n this.sendAnalytics();\r\n\r\n this._isOpen = true;\r\n this._tooltipRef = this.createTooltip();\r\n document.body.appendChild(this._tooltipRef);\r\n this._tooltipUtil = new TooltipUtil(this.$el, this._tooltipRef);\r\n\r\n this.tooltipPositioning(this._tooltipUtil.getTooltipPosition());\r\n\r\n this._tooltipUtil.on(this._tooltipUtil.events.positionChange, (event) => {\r\n this.tooltipPositioning(event);\r\n });\r\n\r\n this.attachEvents();\r\n }\r\n },\r\n\r\n hideTooltip() {\r\n if (this._isOpen) {\r\n this._isOpen = false;\r\n this._tooltipUtil.destroy();\r\n document.body.removeChild(this._tooltipRef);\r\n\r\n this.removeEvents();\r\n }\r\n },\r\n\r\n tooltipPositioning(coordinates) {\r\n const { top, left, position, arrowPosition } = coordinates;\r\n const isLargeScreen = window.innerWidth > 768;\r\n this.arrowPosition = arrowPosition;\r\n\r\n if (isLargeScreen) {\r\n if (position === positions.TOP) {\r\n this._tooltipRef.style.transform = `translate3d(${left - 240}px, ${top + 5}px, 0)`;\r\n this._tooltipRef.classList.remove('-bottom');\r\n this._tooltipRef.classList.add('-top');\r\n } else {\r\n this._tooltipRef.style.transform = `translate3d(${left - 240}px, ${top + 7}px, 0)`;\r\n this._tooltipRef.classList.remove('-top');\r\n this._tooltipRef.classList.add('-bottom');\r\n }\r\n\r\n this._tooltipRef.querySelector('.a-onliaTooltip__arrow').style.right = `${arrowPosition + 20}px`;\r\n } else {\r\n // Original positioning for smaller screens\r\n this._tooltipRef.style.transform = `translate3d(${left}px, ${top + 15}px, 0)`;\r\n this._tooltipRef.classList.remove('-top');\r\n this._tooltipRef.classList.add('-bottom');\r\n this._tooltipRef.querySelector('.a-onliaTooltip__arrow').style.left = `${arrowPosition}px`;\r\n }\r\n \r\n },\r\n\r\n attachEvents() {\r\n document.addEventListener('mousedown', this.handleClickOutside);\r\n document.addEventListener('focus', this.handleFocusChange, true);\r\n },\r\n\r\n removeEvents() {\r\n document.removeEventListener('mousedown', this.handleClickOutside);\r\n document.removeEventListener('focus', this.handleFocusChange, true);\r\n }\r\n }\r\n};\r\n","import Vue from 'vue';\r\nimport { UnsavedChangesPopup } from \"@Shared/utils/UnsavedChangesPopup\";\r\n\r\nVue.component('unsaved-changes-popup-component', {\r\n template: `
    `,\r\n\r\n props: {\r\n shoppingBasketBadge: Number,\r\n isAuthenticated: Boolean,\r\n unsavedChangesPopupId: String\r\n },\r\n\r\n data() {\r\n return {\r\n shoppingBasketCount: 0,\r\n step: 0\r\n }\r\n },\r\n\r\n computed: {\r\n popupId() {\r\n return this.unsavedChangesPopupId;\r\n },\r\n },\r\n created() {\r\n this.$eventBus.$on('step:activeStep', this.setActiveStep);\r\n },\r\n mounted() {\r\n this.shoppingBasketCount = this.shoppingBasketBadge;\r\n\r\n this.registerUpdateBasketCount();\r\n },\r\n beforeDestroy() {\r\n this.$eventBus.$off('step:activeStep', this.setActiveStep);\r\n },\r\n\r\n methods: {\r\n registerUpdateBasketCount() {\r\n this.$root.$on('Broadcast::UpdateShoppingBasketCount', (data) => {\r\n this.shoppingBasketCount = data;\r\n \r\n this.initPopup(this.popupId);\r\n });\r\n },\r\n setActiveStep(activeStep) {\r\n this.step = activeStep;\r\n },\r\n initPopup(id) {\r\n if (this.shoppingBasketCount > 0 && this.isAuthenticated) {\r\n UnsavedChangesPopup.init(id);\r\n }\r\n else {\r\n UnsavedChangesPopup.stop();\r\n }\r\n }\r\n }\r\n})","import Vue from 'vue';\r\n\r\n/**\r\n * @description Directive to add css classes to any element. It is expected that the value passed to the directive,\r\n * will be an object with keys: target, and className.\r\n */\r\nVue.directive('add-ancestor-class', (el, binding) => {\r\n const {\r\n value: {\r\n target, // string - any selector, it doesn't have to be a class\r\n className // string - css class or classes\r\n }\r\n } = binding;\r\n\r\n const ancestorEl = el.closest(target);\r\n\r\n if (ancestorEl) {\r\n ancestorEl.classList.add(className);\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport { BUTTON_GTM_CONFIGS } from '@Shared/settings';\r\n\r\n/**\r\n * gtm-button custom Vue directive\r\n * @description Helper for adding gtm attributes to buttons/elements that aren't OnliaButton Vue component.\r\n *\r\n * Modifiers can be one of: primary | secondary| hyperlink | back | tile.\r\n * Additional modifier of 'popup' is used at append 'Component Pop-up' to the label.\r\n *\r\n * When modifiers of: back | tile | popup are used and the current page is a virtual page, the virtual page url will\r\n * be appended to the label.\r\n *\r\n * When a value is set for the directive, it is expecting an Object with a property name of label. If there\r\n * is no label, the directive will use the element's innterText value instead.\r\n *\r\n *\r\n * Usage Examples - These will all have the same result\r\n *\r\n * (the colon can be used for more clarity. It has no affect on the directive itself)\r\n * \r\n *\r\n * \r\n *\r\n * \r\n *\r\n * \r\n *\r\n */\r\n\r\nconst setAttributes = (el, type) => {\r\n const attributes = BUTTON_GTM_CONFIGS[type];\r\n for (const attributesKey in attributes) {\r\n el.setAttribute(attributesKey, attributes[attributesKey]);\r\n }\r\n};\r\n\r\nconst types = {\r\n tile: 'tile',\r\n back: 'back',\r\n text: 'hyperlink',\r\n primary: 'primary',\r\n secondary: 'secondary'\r\n};\r\n\r\nconst getButtonType = (modifiers) => {\r\n let buttonType = '';\r\n\r\n for (const modifierKey in modifiers) {\r\n buttonType = types[modifierKey];\r\n if (buttonType) break;\r\n }\r\n\r\n return buttonType;\r\n};\r\n\r\nconst GTM_LABEL_ATTRIBUTE = 'data-gtm-label';\r\n\r\nVue.directive('gtm-button', {\r\n bind(el, { modifiers, value }) {\r\n const buttonType = getButtonType(modifiers);\r\n\r\n if (!buttonType) return;\r\n\r\n let label = ((value && value.label) || el.innerText).trim();\r\n\r\n if (modifiers.popup) {\r\n label += ' - Component Pop-up';\r\n }\r\n\r\n el.setAttribute(GTM_LABEL_ATTRIBUTE, label);\r\n\r\n setAttributes(el, buttonType);\r\n },\r\n inserted(el, { modifiers: { tile, back, popup } }, vNode) {\r\n const { isVirtualPage, virtualPageURL } = vNode.context.$store.state.analytics;\r\n\r\n if (isVirtualPage && (back || tile || popup)) {\r\n const label = `${el.getAttribute(GTM_LABEL_ATTRIBUTE) || ''} - ${virtualPageURL}`;\r\n el.setAttribute(GTM_LABEL_ATTRIBUTE, label);\r\n }\r\n },\r\n // Vue directive move-submit-button is setting innerHTML on bind, which results in no label value on bind or\r\n // inserted. This hook is to fix this problem.\r\n componentUpdated(el) {\r\n const label = el.getAttribute(GTM_LABEL_ATTRIBUTE);\r\n\r\n if (label) return;\r\n\r\n if (el.hasAttribute(GTM_LABEL_ATTRIBUTE)) {\r\n const updatedLabel = el.innerText;\r\n (updatedLabel && el.setAttribute(GTM_LABEL_ATTRIBUTE, updatedLabel.trim()));\r\n }\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport { preventEvent } from '@Shared/utils/basic-functions';\r\n\r\nconst currentURLPath = decodeURI(window.location.pathname);\r\nconst absoluteURLRegex = new RegExp('^(?:[a-z]+:)?//', 'i');\r\n\r\nVue.directive('handle-active-link', {\r\n bind(el, binding) {\r\n const { value: activeClassName = '-active' } = binding;\r\n const targetEl = el.nodeName !== 'A' ?\r\n el.querySelector('a') :\r\n el;\r\n\r\n if (!targetEl) return;\r\n\r\n let href = decodeURI(targetEl.getAttribute('href'));\r\n\r\n if (absoluteURLRegex.test(href)) {\r\n href = (new URL(href)).pathname;\r\n }\r\n\r\n if (currentURLPath === href) {\r\n targetEl.classList.add(activeClassName);\r\n targetEl.addEventListener('click', preventEvent);\r\n }\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport { wait } from '@Shared/utils/basic-functions';\r\n\r\n/**\r\n * To reduce Cumulative Layout Shift (CLS), we will add an explicit height to HTML tags.\r\n * This directive will then remove the style once the element is inserted.\r\n * An optional modifier 'wait' can be specified to delay removal of the style.\r\n * The duration of the wait can be optionally specified as the value of the directive.\r\n * The default duration is 500ms.\r\n */\r\nVue.directive('layout-shift-util-clear-styles', {\r\n async inserted(el, binding) {\r\n if (binding.modifiers.wait) {\r\n const { value = 500 } = binding;\r\n\r\n // const start = performance.now();\r\n\r\n await wait(value);\r\n\r\n // const end = performance.now();\r\n\r\n // console.log(\r\n // `%c Directive: layout-shift-util-clear-styles, waited ${end - start} milliseconds.`,\r\n // 'background:#6fc;color:#000;padding:10px;font-weight: bold;border-radius: 15px;'\r\n // );\r\n }\r\n\r\n el.removeAttribute('style');\r\n }\r\n});\r\n","import Vue from \"vue\";\r\n\r\nVue.directive(\"outside-click\", {\r\n bind: function (el, binding, vnode) {\r\n el.clickOutsideEvent = function (event) {\r\n if (!(el == event.target || el.contains(event.target))) {\r\n vnode.context[binding.expression](event);\r\n }\r\n };\r\n document.body.addEventListener(\"click\", el.clickOutsideEvent)\r\n },\r\n unbind: function (el) {\r\n document.body.removeEventListener(\"click\", el.clickOutsideEvent)\r\n }\r\n});","import Vue from 'vue';\r\n// import { gsap } from 'gsap';\r\n// import { ScrollTrigger } from 'gsap/ScrollTrigger';\r\nimport { getElementTop } from '@Shared/utils/get-element-top';\r\n// import { wait } from '@Shared/utils/basic-functions';\r\nimport { loadGSAP } from '@Shared/utils/gsap-utils';\r\n\r\n// gsap.registerPlugin(ScrollTrigger);\r\n\r\nVue.directive('parallax', {\r\n inserted: async (el, binding) => {\r\n (!window.gsap && await loadGSAP());\r\n\r\n // Load ScrollTrigger plugin\r\n if (!window.ScrollTrigger) {\r\n const { ScrollTrigger } = await import('gsap/ScrollTrigger');\r\n window.ScrollTrigger = ScrollTrigger;\r\n }\r\n\r\n window.gsap.registerPlugin(window.ScrollTrigger);\r\n\r\n const { value: { type } } = binding;\r\n let animation = {};\r\n\r\n switch (type) {\r\n case 'hero':\r\n default:\r\n animation = {\r\n // yPercent: ScrollTrigger.maxScroll(window) * 0.01\r\n yPercent: 25\r\n };\r\n break;\r\n }\r\n\r\n const top = getElementTop(el);\r\n\r\n gsap.to(el, {\r\n ...animation,\r\n scrollTrigger: {\r\n scrub: true,\r\n trigger: el,\r\n // markers: true,\r\n\r\n // Start position of the trigger is when the element top, is n (top) pixels below the scroller (viewport by default)\r\n start: `top ${top}px`,\r\n\r\n // The trigger will end when the element bottom hits the top of the scroller\r\n end: 'bottom top'\r\n }\r\n });\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport eventBus from '../utils/event-bus';\r\n\r\nVue.directive('toggle-content', {\r\n bind(el, binding) {\r\n const { value } = binding;\r\n\r\n const handleStateChange = (isOpen) => {\r\n if (isOpen) {\r\n el.classList.remove('collapsed'); // required by icons used in b-collapse\r\n }\r\n else {\r\n el.classList.add('collapsed'); // required by icons used in b-collapse\r\n }\r\n };\r\n\r\n const handleClick = () => {\r\n eventBus.$emit('contentToggle:toggle', value, handleStateChange);\r\n };\r\n\r\n eventBus.$on('contentToggle:stateChanged', ({ isOpen, id }) => {\r\n if (id === value) {\r\n handleStateChange(isOpen);\r\n }\r\n });\r\n\r\n el.addEventListener('click', handleClick);\r\n }\r\n});\r\n","import Vue from \"vue\";\r\nimport GoogleAnalytics from '@Shared/utils/GoogleAnalytics';\r\n\r\nVue.directive('track-mobile-navigation', {\r\n bind: (el, binding) => {\r\n const { value } = binding;\r\n const onClick = () => {\r\n GoogleAnalytics.push({\r\n event: \"Navigation\",\r\n navigationItem: \"Menu\",\r\n navigation_click: value\r\n })\r\n }\r\n el.addEventListener('click', onClick);\r\n }\r\n});","import requireAll from '@Shared/utils/require-all';\r\n\r\nrequireAll(require.context('./components/', true, /\\.js$/));\r\nrequireAll(require.context('./directives/', true, /\\.js$/));\r\n","import { shared } from '@Apis';\r\n\r\nexport default {\r\n computed: {\r\n api() {\r\n return shared;\r\n }\r\n }\r\n};\r\n","import _debounce from 'lodash/debounce';\r\nimport { loadGSAP } from '@Shared/utils/gsap-utils';\r\n\r\n/**\r\n * This is the base mixin that does not get exported. Please see further down for the exported Vue mixins.\r\n * @mixin ExpandAndCollapseBase\r\n * @mixes windowSize\r\n */\r\nconst ContentToggleBase = {\r\n props: {\r\n id: {\r\n type: [ String, Number ],\r\n default: ''\r\n },\r\n\r\n /**\r\n * Optional v-model support\r\n */\r\n value: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * When true, the content will start in opened state. Default behaviour is to start closed.\r\n * Setting this to true will supersede all other props (i.e. value) and data (isContainerOpen)\r\n */\r\n isOpenInitially: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * When true, and isOpenInitially is true, the container will animate to open state on mounted\r\n */\r\n appear: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n /**\r\n * As the structure of this component is different than Bootstrap Vue's b-collapse, the content container classes\r\n * have to be set on the wrapper. Properties like padding will cause issue when set on the root or\r\n * container elements.\r\n */\r\n contentClasses: {\r\n type: String,\r\n default: ''\r\n },\r\n\r\n /**\r\n * When true, the container will animate on resize\r\n */\r\n animateOnResize: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data() {\r\n return {\r\n isContainerOpen: false\r\n };\r\n },\r\n methods: {\r\n createContentWrapper(createElement) {\r\n return createElement('div', {\r\n class: [\r\n 'm-contentToggle__contentWrapper',\r\n this.contentClasses,\r\n { '-relative': this.isWrapperRelative || this.useIf }\r\n ],\r\n ref: 'wrapper',\r\n attrs: {\r\n id: this.containerId\r\n }\r\n }, this.$scopedSlots.default());\r\n },\r\n createContentContainer(createElement) {\r\n return createElement('div', {\r\n class: [\r\n 'm-contentToggle__contentContainer',\r\n { '-autoHeight': this.isWrapperRelative },\r\n { '-autoHeightImportant': this.useIf }\r\n \r\n /*this.containerClasses*/\r\n ],\r\n ref: 'container'\r\n }, [ this.createContentWrapper(createElement) ]);\r\n },\r\n async openImmediately() {\r\n const container = this.$refs[this.containerName];\r\n\r\n this.isContainerOpen = true;\r\n\r\n (!window.gsap && await loadGSAP());\r\n\r\n this._tween = gsap.set(container, {\r\n height: (this._wrapperHeight || await this.$_expandCollapse_getWrapperHeight())\r\n });\r\n\r\n await this.$nextTick();\r\n this.isWrapperRelative = false;\r\n },\r\n getOpenState(id, callback) {\r\n if (id === this.id) {\r\n callback(this.isContainerOpen);\r\n }\r\n },\r\n async handleValueChange(isOpen, oldVal) {\r\n if (typeof isOpen === 'boolean') {\r\n await (isOpen ? this.openContainer : this.closeContainer)();\r\n }\r\n else if (typeof oldVal === 'boolean') {\r\n await this.closeContainer();\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * This is the default export mixin. Logic will run for all devices.\r\n *\r\n * @export\r\n * @mixes ExpandAndCollapseBase\r\n */\r\nconst contentToggle = {\r\n mixins: [ ContentToggleBase ],\r\n // mounted() {\r\n // this.$_expandCollapse_createResizeObserver();\r\n // }\r\n};\r\nexport default contentToggle;\r\n","import { HEADER_NAV } from '@Shared/settings';\r\nimport { loadGSAP } from '@Shared/utils/gsap-utils';\r\n// import { gsap } from 'gsap';\r\n\r\nconst { mouseEnterDelay } = HEADER_NAV;\r\n\r\nconst dropDown = {\r\n data() {\r\n return {\r\n isOpen: false\r\n };\r\n },\r\n computed: {\r\n rootElEvents() {\r\n return {\r\n mouseenter: this.handleMouseEnter,\r\n mouseleave: this.handleMouseLeave,\r\n focusin: this.handleFocusIn,\r\n focusout: this.handleFocusOut\r\n };\r\n },\r\n buttonEvents() {\r\n return {\r\n click: this.handleButtonClick\r\n };\r\n },\r\n ariaExpanded() {\r\n return this.isOpen.toString();\r\n }\r\n },\r\n async created() {\r\n this._dropDownHeight = null;\r\n this._dropDownWidth = null;\r\n this._isAnimating = false;\r\n (!window.gsap && await loadGSAP());\r\n },\r\n beforeDestroy() {\r\n this.clearFocusOutTimeout();\r\n this.clearMouseEnterTimeout();\r\n },\r\n methods: {\r\n getDropDownSize() {\r\n if (!this._dropDownHeight) {\r\n const { container } = this.$refs;\r\n const { height, width } = container.getBoundingClientRect();\r\n\r\n this._dropDownHeight = height;\r\n this._dropDownWidth = width;\r\n }\r\n\r\n return {\r\n width: this._dropDownWidth,\r\n height: this._dropDownHeight\r\n };\r\n },\r\n handleButtonClick() {\r\n this.clearMouseEnterTimeout();\r\n this.toggleDropdown(!this.isOpen);\r\n },\r\n handleMouseLeave() {\r\n this.clearMouseEnterTimeout();\r\n this.closeDropDown();\r\n },\r\n async handleMouseEnter() {\r\n this.clearMouseEnterTimeout();\r\n this._mouseEnterTimeout = setTimeout(this.openDropDown, mouseEnterDelay);\r\n },\r\n clearMouseEnterTimeout() {\r\n (this._mouseEnterTimeout && clearTimeout(this._mouseEnterTimeout));\r\n },\r\n openDropDown() {\r\n this.toggleDropdown(true);\r\n },\r\n closeDropDown() {\r\n this.toggleDropdown(false);\r\n },\r\n async toggleDropdown(isOpen) {\r\n if (isOpen === this.isOpen || this._isAnimating) return;\r\n\r\n (!window.gsap && await loadGSAP());\r\n\r\n const height = isOpen ? this.getDropDownSize().height : 0;\r\n const { wrapper } = this.$refs;\r\n\r\n gsap.to(wrapper, {\r\n height,\r\n ease: 'power1.out',\r\n duration: 0.3,\r\n onStart: () => {\r\n this._isAnimating = true;\r\n\r\n if (isOpen) {\r\n this.isOpen = isOpen;\r\n }\r\n },\r\n onComplete: () => {\r\n this._isAnimating = false;\r\n\r\n if (!isOpen) {\r\n this.isOpen = isOpen;\r\n }\r\n }\r\n });\r\n },\r\n\r\n clearFocusOutTimeout() {\r\n (this.focusOutTimeout && clearTimeout(this.focusOutTimeout));\r\n },\r\n handleFocusIn() {\r\n this.clearFocusOutTimeout();\r\n this.clearMouseEnterTimeout();\r\n this.openDropDown();\r\n this.$emit('focusin');\r\n },\r\n handleFocusOut() {\r\n this.clearFocusOutTimeout();\r\n this.clearMouseEnterTimeout();\r\n this.focusOutTimeout = setTimeout(this.closeDropDown, 100);\r\n this.$emit('focusout');\r\n }\r\n }\r\n};\r\n\r\nexport default dropDown;\r\n","import windowSize from '@Shared/mixins/window-size';\r\nimport { IS_DEV } from '@Shared/settings';\r\nimport _debounce from 'lodash/debounce';\r\nimport { loadGSAP } from '@Shared/utils/gsap-utils';\r\n// import { gsap } from 'gsap';\r\n\r\nconst DEFAULT_ANIMATION_CONFIG = {\r\n ease: 'power1.out',\r\n duration: 0.3\r\n};\r\n\r\n/**\r\n * This is the base mixin that does not get exported. Please see further down for the exported Vue mixins.\r\n * @mixin ExpandAndCollapseBase\r\n * @mixes windowSize\r\n */\r\nconst ExpandAndCollapseBase = {\r\n mixins: [ windowSize ],\r\n props: {\r\n /**\r\n * Ref name of element to toggle height. This is the parent of expandable content.\r\n */\r\n containerName: {\r\n type: String,\r\n default: 'container'\r\n },\r\n\r\n /**\r\n * Ref name of element that contains content.\r\n */\r\n wrapperName: {\r\n type: String,\r\n default: 'wrapper'\r\n },\r\n\r\n /**\r\n * Debounce duration for resize observer. Lower number will result in smoother visuals, but less performant.\r\n * Passing a number of 0, or a boolean false will remove debounce.\r\n */\r\n debounceDuration: {\r\n type: [ Number, Boolean ],\r\n default: 150\r\n }\r\n },\r\n data() {\r\n return {\r\n isContainerOpen: false\r\n };\r\n },\r\n computed: {\r\n ariaExpanded() {\r\n return this.isContainerOpen.toString();\r\n },\r\n containerState() {\r\n return this.isContainerOpen ? 'expanded' : 'collapsed';\r\n }\r\n },\r\n created() {\r\n this._isAnimating = false;\r\n this._wrapperHeight = null;\r\n this._resizeObserver = null;\r\n this._windowUnWatcher = null;\r\n this._unWatchers = [];\r\n this._animateOnResize = false;\r\n this._gsapOnStartCallback = null;\r\n },\r\n beforeDestroy() {\r\n this.$_expandCollapse_destroy();\r\n this._unWatchers.map(unWatcher => unWatcher());\r\n this._unWatchers = null;\r\n },\r\n methods: {\r\n /**\r\n * @private\r\n */\r\n async $_expandCollapse_getWrapperHeight() {\r\n const wrapper = this.$refs[this.wrapperName];\r\n\r\n if (!wrapper) return;\r\n\r\n wrapper.setAttribute('style', 'position:relative;');\r\n\r\n await this.$nextTick();\r\n\r\n this._wrapperHeight = wrapper.getBoundingClientRect().height;\r\n\r\n wrapper.removeAttribute('style');\r\n\r\n return this._wrapperHeight;\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n async $_expandCollapse_handleResize() {\r\n if (this.isContainerOpen) {\r\n const height = await this.$_expandCollapse_getWrapperHeight();\r\n\r\n const container = this.$refs[this.containerName];\r\n\r\n (!window.gsap && await loadGSAP());\r\n\r\n if (this._tween && this._tween.isActive()) {\r\n await this._tween.then();\r\n // this._tween.seek(0, false);\r\n // this._tween.pause();\r\n\r\n gsap.to(container, {\r\n height,\r\n duration: 0.1,\r\n ease: 'sine.out',\r\n onComplete: () => {\r\n this._isAnimating = false;\r\n }\r\n });\r\n }\r\n else if (this._animateOnResize) {\r\n gsap.to(container, {\r\n height,\r\n ...DEFAULT_ANIMATION_CONFIG,\r\n onComplete: () => {\r\n this._isAnimating = false;\r\n }\r\n });\r\n }\r\n else {\r\n gsap.set(container, { height });\r\n }\r\n }\r\n else {\r\n // Skip calculating height if the container is closed. It will get calculated the next time it opens.\r\n this._wrapperHeight = null;\r\n }\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_expandCollapse_createResizeObserver() {\r\n if ('ResizeObserver' in window) {\r\n try {\r\n const wrapper = this.$refs[this.wrapperName];\r\n\r\n if (!wrapper) return;\r\n\r\n const resizeHandler = !this.debounceDuration ?\r\n this.$_expandCollapse_handleResize :\r\n _debounce(this.$_expandCollapse_handleResize, this.debounceDuration);\r\n\r\n this._resizeObserver = new ResizeObserver(resizeHandler);\r\n this._resizeObserver.observe(wrapper);\r\n }\r\n catch (error) {\r\n (IS_DEV && console.error('$_expandCollapse_createResizeObserver error:', error));\r\n }\r\n }\r\n else {\r\n this._windowUnWatcher = this.$watch('windowWidth', this.$_expandCollapse_handleResize);\r\n }\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_expandCollapse_destroyResizeObserver() {\r\n if (this._resizeObserver) {\r\n this._resizeObserver.disconnect();\r\n this._resizeObserver = null;\r\n }\r\n if (this._windowUnWatcher) {\r\n this._windowUnWatcher();\r\n }\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n $_expandCollapse_destroy() {\r\n if (this._resizeObserver) {\r\n this._resizeObserver.disconnect();\r\n this._resizeObserver = null;\r\n }\r\n if (this._windowUnWatcher) {\r\n this._windowUnWatcher();\r\n }\r\n\r\n const container = this.$refs[this.containerName];\r\n if (container) {\r\n container.removeAttribute('style');\r\n }\r\n },\r\n\r\n async toggleContainerHeight(callBack, duration = 0.3) {\r\n const container = this.$refs[this.containerName];\r\n\r\n if (this._isAnimating) return;\r\n\r\n (!window.gsap && await loadGSAP());\r\n\r\n this._tween = gsap.to(container, {\r\n duration,\r\n height: (this.isContainerOpen ?\r\n 0 :\r\n (this._wrapperHeight || await this.$_expandCollapse_getWrapperHeight())\r\n ),\r\n ease: 'power1.out',\r\n onStart: () => {\r\n this._isAnimating = true;\r\n\r\n this.isContainerOpen = !this.isContainerOpen;\r\n\r\n if (this.isContainerOpen) gsap.set(container, { visibility: 'visible' });\r\n\r\n (typeof this._gsapOnStartCallback === 'function' && this._gsapOnStartCallback());\r\n },\r\n onComplete: () => {\r\n if (typeof callBack === 'function') {\r\n callBack();\r\n }\r\n // (callBack && callBack());\r\n this._isAnimating = false;\r\n\r\n if (!this.isContainerOpen) gsap.set(container, { visibility: 'hidden' });\r\n }\r\n });\r\n },\r\n\r\n async openContainer() {\r\n const container = this.$refs[this.containerName];\r\n\r\n (!window.gsap && await loadGSAP());\r\n\r\n this._tween = gsap.to(container, {\r\n ...DEFAULT_ANIMATION_CONFIG,\r\n height: (this._wrapperHeight || await this.$_expandCollapse_getWrapperHeight()),\r\n onStart: () => {\r\n gsap.set(container, { visibility: 'visible' });\r\n this._isAnimating = true;\r\n this.isContainerOpen = true;\r\n (typeof this._gsapOnStartCallback === 'function' && this._gsapOnStartCallback());\r\n },\r\n onComplete: () => {\r\n this._isAnimating = false;\r\n }\r\n });\r\n },\r\n async closeContainer() {\r\n const container = this.$refs[this.containerName];\r\n\r\n (!window.gsap && await loadGSAP());\r\n\r\n this._tween = gsap.to(container, {\r\n ...DEFAULT_ANIMATION_CONFIG,\r\n height: 0,\r\n onStart: () => {\r\n this._isAnimating = true;\r\n this.isContainerOpen = false;\r\n (typeof this._gsapOnStartCallback === 'function' && this._gsapOnStartCallback());\r\n },\r\n onComplete: () => {\r\n this._isAnimating = false;\r\n gsap.set(container, { visibility: 'hidden' });\r\n }\r\n });\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * This is the default export mixin. Logic will run for all devices.\r\n *\r\n * @export\r\n * @mixes ExpandAndCollapseBase\r\n */\r\nconst expandAndCollapse = {\r\n mixins: [ ExpandAndCollapseBase ],\r\n mounted() {\r\n this.$_expandCollapse_createResizeObserver();\r\n }\r\n};\r\nexport default expandAndCollapse;\r\n\r\n/**\r\n * There are cases where we only want this mixin enabled for phone or mobile.\r\n *\r\n * @export\r\n * @mixes ExpandAndCollapseBase\r\n *\r\n * @function expandAndCollapseResponsive\r\n * @param {Object} params - Function parameters objects\r\n * @param {boolean} [params.phoneOnly = undefined] - If true, prevent resize logic from running when device is not phone\r\n * @param {boolean} [params.mobileOnly = undefined] - If true, prevent resize logic from running on desktop\r\n * @return {Object} - Vue mixin\r\n */\r\nexport const expandAndCollapseResponsive = ({ mobileOnly, phoneOnly } = {}) => ({\r\n mixins: [ ExpandAndCollapseBase ],\r\n mounted() {\r\n if (mobileOnly) {\r\n const mobileUnWatcher = this.$watch('isMobile', this.$_expandCollapse_handleDeviceChange);\r\n this._unWatchers.push(mobileUnWatcher);\r\n (this.isMobile && this.$_expandCollapse_createResizeObserver());\r\n }\r\n else if (phoneOnly) {\r\n const phoneUnWatcher = this.$watch('isPhone', this.$_expandCollapse_handleDeviceChange);\r\n this._unWatchers.push(phoneUnWatcher);\r\n (this.isPhone && this.$_expandCollapse_createResizeObserver());\r\n }\r\n else {\r\n this.$_expandCollapse_createResizeObserver();\r\n }\r\n },\r\n methods: {\r\n /**\r\n * @private\r\n */\r\n $_expandCollapse_handleDeviceChange() {\r\n const willEnableForMobile = (mobileOnly && this.isMobile);\r\n const willEnableForPhone = (phoneOnly && this.isPhone);\r\n\r\n if (willEnableForMobile || willEnableForPhone) {\r\n this.$_expandCollapse_createResizeObserver();\r\n }\r\n else {\r\n this.$_expandCollapse_destroy();\r\n this.isContainerOpen = false;\r\n }\r\n }\r\n }\r\n});\r\n","/**\r\n * @export\r\n * @module\r\n * @description Traps focus within root element. For example, when the global modal is open, we need to \"trap focus\"\r\n * within the modal. Pressing tab should only select elements within the modal.\r\n */\r\n\r\nconst TAB_KEYCODE = 9;\r\nexport const FOCUSABLE_ELEMENTS = [\r\n 'a[href]:not([disabled])',\r\n 'button:not([disabled])',\r\n 'textarea:not([disabled])',\r\n 'input[type=\"text\"]:not([disabled])',\r\n 'input[type=\"radio\"]:not([disabled])',\r\n 'input[type=\"checkbox\"]:not([disabled])',\r\n 'select:not([disabled])'\r\n].join(',');\r\n\r\nconst focusTrap = {\r\n created() {\r\n this._firstFocusableEl = null;\r\n this._lastFocusableEl = null;\r\n },\r\n beforeDestroy() {\r\n this._firstFocusableEl = null;\r\n this._lastFocusableEl = null;\r\n },\r\n methods: {\r\n $_focusTrap_getFocusableElements() {\r\n const focusableEls = this.$el.querySelectorAll(FOCUSABLE_ELEMENTS);\r\n const totalFocusableEls = focusableEls.length;\r\n\r\n if (!totalFocusableEls) return;\r\n\r\n this._firstFocusableEl = focusableEls[0];\r\n this._lastFocusableEl = focusableEls[totalFocusableEls - 1];\r\n },\r\n\r\n $_focusTrap_trapFocus(event) {\r\n const isTabPressed = (event.key === 'Tab' || event.keyCode === TAB_KEYCODE);\r\n\r\n if (!isTabPressed) return;\r\n\r\n if (!this._firstFocusableEl || !this._lastFocusableEl) this.$_focusTrap_getFocusableElements();\r\n\r\n // Shift + tab\r\n if (event.shiftKey) {\r\n if (document.activeElement === this._firstFocusableEl) {\r\n this._lastFocusableEl.focus();\r\n event.preventDefault();\r\n }\r\n }\r\n // Tab\r\n else {\r\n if (document.activeElement === this._lastFocusableEl) {\r\n this._firstFocusableEl.focus();\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default focusTrap;\r\n","import _debounce from 'lodash/debounce';\r\nimport { RESIZE_OBSERVER } from '@Shared/settings';\r\n\r\nconst { debounceDuration } = RESIZE_OBSERVER;\r\n\r\nconst resizeObserver = {\r\n created() {\r\n this._resizeObserver = null;\r\n this._windowUnWatcher = null;\r\n },\r\n beforeDestroy() {\r\n this.destroyResizeObserver();\r\n },\r\n methods: {\r\n /**\r\n * @method createResizeObserver\r\n *\r\n * @description method to create a ResizeObserver instance. If ResizeObserver is not supported, a watcher on\r\n * window width value from Vuex will be created instead,\r\n *\r\n * @param {Object} methodParams - The method parameters object\r\n * @param {HTMLElement|HTMLElement[]} methodParams.element - The element to observe or an array of elements to observe.\r\n * @param {Function} methodParams.resizeHandler - Callback function on resize.\r\n * @param {(number|boolean)} [methodParams.debounce=150] - Optionally for setting debounce duration on resize handler,\r\n * or pass boolean false to disable it completely.\r\n */\r\n createResizeObserver({ element, resizeHandler, debounce = debounceDuration }) {\r\n if ('ResizeObserver' in window) {\r\n const handler = (typeof debounce === 'boolean' && !debounce) ?\r\n resizeHandler :\r\n _debounce(resizeHandler, debounce);\r\n\r\n this._resizeObserver = new ResizeObserver(handler);\r\n\r\n Array.isArray(element) ?\r\n element.map(el => this._resizeObserver.observe(el)) :\r\n this._resizeObserver.observe(element);\r\n }\r\n else {\r\n this._windowUnWatcher = this.$watch('$store.state.windowSize.width', resizeHandler);\r\n }\r\n },\r\n destroyResizeObserver() {\r\n if (this._resizeObserver) {\r\n this._resizeObserver.disconnect();\r\n this._resizeObserver = null;\r\n }\r\n if (this._windowUnWatcher) {\r\n this._windowUnWatcher();\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default resizeObserver;\r\n","export default {\r\n methods: {\r\n formatCurrency: function (currencyValue, currencyStyle) {\r\n const isInteger = (currencyValue - Math.floor(currencyValue) === 0);\r\n let fractionDigits = 2;\r\n\r\n if (isInteger) {\r\n fractionDigits = 0;\r\n }\r\n const currencyOptions = {\r\n style: currencyStyle,\r\n minimumFractionDigits: fractionDigits,\r\n currency: window.__currency__\r\n }\r\n\r\n if (!currencyValue) {\r\n currencyValue = 0;\r\n }\r\n return currencyValue.toLocaleString(window.__currencyLocal__, currencyOptions);\r\n },\r\n decodeHTML(str) {\r\n if (str) {\r\n let taDecodeHTML = document.getElementById('taDecodeHTML');\r\n if (!taDecodeHTML) {\r\n taDecodeHTML = document.createElement('textarea');\r\n taDecodeHTML.id = \"taDecodeHTML\";\r\n }\r\n taDecodeHTML.innerHTML = str;\r\n return taDecodeHTML.value;\r\n }\r\n return str;\r\n },\r\n toBase64Input(input) {\r\n if (input && window.btoa && window.encodeURIComponent) {\r\n return window.btoa(window.encodeURIComponent(input))\r\n }\r\n else {\r\n return input;\r\n }\r\n }\r\n }\r\n};\r\n","const slotUtils = {\r\n methods: {\r\n /**\r\n * @param name {string} - the name of the slot\r\n * @param [slotProps = {}] {Object} - Optional slot props.\r\n */\r\n getSlot(name, slotProps = {}) {\r\n const slot = this.$scopedSlots[name];\r\n return slot ? slot(slotProps) : null;\r\n }\r\n }\r\n};\r\n\r\nexport default slotUtils;\r\n\r\nexport const getSlotFunctional = (context, name, slotProps) => {\r\n const slot = context.scopedSlots[name];\r\n return slot ? slot(slotProps) : null;\r\n};\r\n","import ScrollUtil from '@Shared/utils/ScrollUtil';\r\nimport { loadGSAP } from '@Shared/utils/gsap-utils';\r\nimport resizeObserver from '@Shared/mixins/resize-observer';\r\n\r\n/**\r\n * This is the base mixin that does not get exported. Please see further down for the exported Vue mixins.\r\n * @mixin TotalPremium\r\n */\r\nconst TotalPremium = {\r\n mixins: [ resizeObserver ],\r\n props: {\r\n isCondensed: {\r\n type: Boolean,\r\n required: true\r\n },\r\n storeName: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n data() {\r\n return {\r\n textBackButton: '',\r\n showBackButton: false\r\n };\r\n },\r\n computed: {\r\n topNavHeight() {\r\n return this.$store.getters['topNavHeight'];\r\n },\r\n navHeaderHeight() {\r\n return this.$store.getters['currentHeaderHeight'];\r\n },\r\n activeStep() {\r\n return this.$store.state[this.storeName].model.ActiveStep.toString();\r\n }\r\n },\r\n created() {\r\n this._timeline = null;\r\n this._isCondensedUnWatcher = null;\r\n },\r\n mounted() {\r\n const stepHeaderBackButton = document.getElementById('stepHeaderBackButton');\r\n if (stepHeaderBackButton) {\r\n this.$eventBus.$emit('step:total-premium-mounted');\r\n this.textBackButton = stepHeaderBackButton.innerText;\r\n this.showBackButton = true;\r\n }\r\n\r\n ScrollUtil.addScrollEventListener();\r\n\r\n this.initResizeObserver();\r\n },\r\n beforeDestroy() {\r\n ScrollUtil.removeScrollEventListener();\r\n },\r\n methods: {\r\n navigateToPreviousStep() {\r\n this.$eventBus.$emit('step:back-previous-step', { activeStep: this.activeStep });\r\n },\r\n\r\n watchIsCondensed() {\r\n this._isCondensedUnWatcher = this.$watch('isCondensed', this.toggleTotalPremiums);\r\n },\r\n unWatchIsCondensed() {\r\n (this._isCondensedUnWatcher && this._isCondensedUnWatcher());\r\n },\r\n\r\n /**\r\n * As the totalPremiumCondensed is positioned absolutely, when the content container height is set to the condensed\r\n * state, we need to set the height on resize.\r\n */\r\n initResizeObserver() {\r\n const { totalPremiumCondensed } = this.$refs;\r\n\r\n if (totalPremiumCondensed) {\r\n this.createResizeObserver({\r\n element: totalPremiumCondensed,\r\n resizeHandler: this.setContainerHeight,\r\n debounce: 100\r\n });\r\n this.watchIsCondensed();\r\n }\r\n },\r\n async setContainerHeight() {\r\n const { totalPremiumCondensed, contentContainer } = this.$refs;\r\n\r\n if (this.isCondensed) {\r\n (!window.gsap && await loadGSAP());\r\n\r\n gsap.set(contentContainer, {\r\n height: totalPremiumCondensed.offsetHeight\r\n });\r\n }\r\n },\r\n async toggleTotalPremiums(isCondensed) {\r\n const { totalPremium, totalPremiumCondensed, contentContainer } = this.$refs;\r\n\r\n (!window.gsap && await loadGSAP());\r\n\r\n (this._timeline && this._timeline.kill());\r\n\r\n this._timeline = gsap.timeline({});\r\n\r\n if (isCondensed) {\r\n this._timeline\r\n .to(contentContainer, {\r\n height: totalPremiumCondensed.offsetHeight,\r\n duration: 0.3,\r\n ease: 'power2.out'\r\n })\r\n .to(totalPremium, {\r\n autoAlpha: 0,\r\n duration: 0.3,\r\n ease: 'sine.in'\r\n }, 0)\r\n .fromTo(totalPremiumCondensed, { autoAlpha: 0 }, {\r\n autoAlpha: 1,\r\n duration: 0.4,\r\n ease: 'sine.out'\r\n }, '-=0.1');\r\n }\r\n else {\r\n this._timeline\r\n .to(contentContainer, {\r\n height: totalPremium.offsetHeight,\r\n duration: 0.35,\r\n ease: 'power2.out',\r\n clearProps: 'height'\r\n })\r\n .to(totalPremiumCondensed, {\r\n autoAlpha: 0,\r\n duration: 0.2,\r\n ease: 'sine.in'\r\n }, 0)\r\n .to(totalPremium, {\r\n autoAlpha: 1,\r\n duration: 0.35,\r\n ease: 'sine.out'\r\n }, 0);\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default TotalPremium;\r\n","import { mapGetters, mapState } from 'vuex';\r\n\r\nconst windowSize = {\r\n computed: {\r\n ...mapState({\r\n windowWidth: state => state.windowSize.width,\r\n windowHeight: state => state.windowSize.height\r\n }),\r\n ...mapGetters({\r\n isPhone: 'breakpointPhone',\r\n isTablet: 'breakpointTablet',\r\n isMobile: 'breakpointMobile'\r\n })\r\n }\r\n};\r\n\r\nexport default windowSize;\r\n","import eventBus from '../utils/event-bus';\r\nimport { modalEvents } from '../components/global-modal';\r\n\r\nconst modal = {\r\n events: modalEvents,\r\n show(modalID) {\r\n eventBus.$emit(modalEvents.showModal, modalID);\r\n },\r\n hide(modalID) {\r\n eventBus.$emit(modalEvents.hideModal, modalID);\r\n }\r\n};\r\n\r\nconst globalModalPlugin = {\r\n install(Vue) {\r\n\r\n /**\r\n * @description Plugin to show/hide any globalModal instance.\r\n */\r\n Vue.prototype.$globalModal = modal;\r\n }\r\n};\r\n\r\nexport default globalModalPlugin;\r\n","export const BREAKPOINTS = {\r\n phone: {\r\n min: 576,\r\n max: 767\r\n },\r\n tablet: {\r\n min: 768,\r\n max: 991\r\n },\r\n desktop: {\r\n min: 992,\r\n max: 1199\r\n },\r\n desktopLarge: {\r\n min: 1200\r\n }\r\n};\r\n\r\nexport const MAIN_CAROUSEL = {\r\n defaults: {\r\n pauseDuration: 10 * 1000, // units have to be milliseconds\r\n slideChangeInterval: 5 // units have to be seconds\r\n }\r\n};\r\n\r\nexport const RESIZE_OBSERVER = {\r\n debounceDuration: 150\r\n};\r\n\r\nexport const WINDOW_RESIZE = {\r\n throttleDuration: 150\r\n};\r\n\r\nexport const PAGE_LOAD_TIMEOUT = 5000;\r\nexport const FUNNEL_FOOTER_TIMEOUT = 400;\r\n\r\nexport const GLOBAL_BANNER_TOP_OFFSETS = {\r\n navBarVisible: '125px',\r\n navBarCollapsed: '100px',\r\n mobile: '70px',\r\n funnel: '175px',\r\n funnelNavBarCollapsed: '95px',\r\n funnelMobile: '120px'\r\n};\r\n\r\nexport const GLOBAL_BANNER_SESSION_STORAGE_KEY = 'global_banner_acknowledged';\r\n\r\nexport const IS_DEV = process.env.NODE_ENV !== 'production';\r\nexport const IS_STAGING = process.env.NODE_ENV !== 'development';\r\n\r\nexport const IS_FUNNEL = document.body.classList.contains('funnel');\r\n\r\nexport const CHAT_BOT_CONFIG = {\r\n id: 'chatbot-button',\r\n sessionStorageKey: 'chat_bot_activated'\r\n};\r\n\r\nexport const ZENDESK_CONFIG = {\r\n scriptId: 'ze-snippet',\r\n productId: 'web_widget',\r\n sessionStorageActiveKey: 'zendesk_activated',\r\n sessionStorageOpenKey: 'zendesk_open'\r\n};\r\n\r\nexport const TRUST_PILOT = {\r\n scriptId: 'trust-pilot',\r\n scriptUrl: '//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js'\r\n};\r\n\r\nexport const SCRIPT_LOADER = {\r\n readyStateDataAttribute: 'data-ready-state',\r\n readyStateDataSetKey: 'readyState',\r\n readyStates: {\r\n error: 'errored',\r\n loaded: 'loaded'\r\n }\r\n};\r\n\r\n/*\r\n ID for form submit button that's toggled on and off.\r\n\r\n This is the button the document is querying for in custom Vue directive:\r\n Source/AchmeaDI.Web/Onlia/Scripts/onlia/products/shared/directives/move-submit-button.js\r\n\r\n Views that use this id:\r\n - Source/AchmeaDI.Web/InsuranceRight/Views/Funnel/StepPartial.cshtml\r\n - Source/AchmeaDI.Web/InsuranceRight/Views/Funnel/Step.cshtml\r\n\r\n OnliaButton Vue component will add this id as a custom directive < v-submit-button-id >\r\n*/\r\nexport const SUBMIT_BUTTON_ID = 'main-form-submit-button';\r\n\r\n/**\r\n * @namespace HEADER_NAV\r\n * @property {Number} topNavHeight- The height of the top nav element in the header\r\n * @property {Number} bottomNavHeight - The height of the bottom nav element in the header\r\n * @property {Number} bottomNavHeightMobile - The height of the bottom nav element in the header for mobile (tablet\r\n * and phone)\r\n * @property {Number} mouseEnterDelay - Time, in milliseconds, to wait for the cursor hover on the dropdown before\r\n * it opens.\r\n * - Jakub Nielsen has a great book, Usability Engineering, that outlines time limits (according to user\r\n * perception) on optimizing web and application performance. 100ms to 1000ms (exclusive) is the maximum\r\n * range we should use.\r\n * - The Doherty Threshold outlines a threshold of 400ms for computer response time.\r\n */\r\nexport const HEADER_NAV = {\r\n topNavHeight: 28,\r\n bottomNavHeight: 87,\r\n bottomNavHeightMobile: 60,\r\n mouseEnterDelay: 250\r\n};\r\n\r\nexport const APP_EL_ID = 'ir';\r\n\r\nexport const COVERAGES_CAROUSEL = {\r\n defaults: {\r\n pauseDuration: 10 * 1000, // units have to be milliseconds\r\n slideChangeInterval: 5 // units have to be seconds\r\n }\r\n};\r\n\r\nexport const BUTTON_GTM_CONFIGS = {\r\n primary: {\r\n 'data-gtm-category': 'User Interaction',\r\n 'data-gtm-action': 'Component Button Primary'\r\n },\r\n\r\n secondary: {\r\n 'data-gtm-category': 'User Interaction',\r\n 'data-gtm-action': 'Component Button Secondary'\r\n },\r\n\r\n // Defined as text in Confluence\r\n hyperlink: {\r\n 'data-gtm-category': 'User Interaction',\r\n 'data-gtm-action': 'Component Button Textlink'\r\n },\r\n\r\n // Funnel back button\r\n back: {\r\n 'data-gtm-category': 'User Interaction',\r\n 'data-gtm-action': 'Component Button Other'\r\n },\r\n\r\n // Select drivers in funnel square button\r\n tile: {\r\n 'data-gtm-category': 'User Interaction',\r\n 'data-gtm-action': 'Component Button Tile'\r\n }\r\n};\r\n\r\nexport const FEEDBACK_CONFIRMATION_TIMEOUT = 5000;\r\n\r\nexport const STEP_BAR_HEIGHT = 50;\r\n","import { IS_DEV } from '@Shared/settings';\r\n\r\nexport default class EventEmitter {\r\n constructor({ events = [] }) {\r\n this._events = events.reduce((events, name) => ({\r\n ...events,\r\n [ name ]: []\r\n }), {});\r\n }\r\n\r\n on(name, listener) {\r\n if (!this._events[name]) {\r\n this._events[name] = [];\r\n }\r\n\r\n this._events[name].push(listener);\r\n }\r\n\r\n emit(name, data) {\r\n if (!this._events[name]) {\r\n (IS_DEV && console.warn(`EventBus: Event: ${name} doesn't exist.`));\r\n return;\r\n }\r\n\r\n this._events[name].map((callBack) => {\r\n // callBack(data);\r\n (typeof callBack === 'function' && callBack(data));\r\n });\r\n }\r\n\r\n off(name) {\r\n if (this._events[name]) {\r\n delete this._events[name];\r\n }\r\n }\r\n\r\n removeListener(name, listenerToRemove) {\r\n if (!this._events[name]) return;\r\n\r\n this._events[name] = this._events[name].filter(listener => listener !== listenerToRemove);\r\n }\r\n\r\n removeAllListeners() {\r\n this._events = {};\r\n }\r\n}\r\n","/**\r\n * Google analytics tracking utility class.\r\n */\r\nclass GoogleAnalytics {\r\n constructor() {\r\n this.dataLayer = window.dataLayer || [];\r\n }\r\n\r\n push(payload) {\r\n this.dataLayer.push(payload);\r\n }\r\n}\r\n\r\nexport default new GoogleAnalytics();\r\n","import store from '../../../store/store';\r\nimport EventEmitter from '@Shared/utils/EventEmitter';\r\nimport _get from 'lodash/get';\r\n\r\nconst events = [\r\n 'scrollbar:resize',\r\n 'scroll'\r\n];\r\n\r\nclass ScrollUtil extends EventEmitter {\r\n constructor(options) {\r\n super(options);\r\n\r\n this._resizeObserver = null;\r\n this._previousScrollTop = 0;\r\n this._hasAddedScrollListener = false;\r\n\r\n this.verticalScrollbarWidth = 0;\r\n this.scrollDirection = '';\r\n this.scrollTop = document.scrollingElement.scrollTop;\r\n\r\n this.events = {\r\n scrollbarChange: events[0],\r\n scroll: events[1]\r\n };\r\n\r\n this.calculateScrollBarWidth = this.calculateScrollBarWidth.bind(this);\r\n this.handleScroll = this.handleScroll.bind(this);\r\n }\r\n\r\n init() {\r\n this.createResizeObserver();\r\n }\r\n\r\n addScrollEventListener() {\r\n if (!this._hasAddedScrollListener) {\r\n window.addEventListener('scroll', this.handleScroll, { passive: true });\r\n this._hasAddedScrollListener = true;\r\n }\r\n }\r\n\r\n removeScrollEventListener() {\r\n if (this._hasAddedScrollListener) {\r\n window.removeEventListener('scroll', this.handleScroll);\r\n this._hasAddedScrollListener = false;\r\n }\r\n }\r\n\r\n getScrollTop(event) {\r\n let scrollTop = '';\r\n\r\n try {\r\n scrollTop = document.scrollingElement.scrollTop;\r\n }\r\n // eslint-disable-next-line no-unused-vars\r\n catch (error) {\r\n // console.error('getScrollTop', error);\r\n scrollTop = (\r\n _get(event, 'target.scrollingElement.scrollTop') ||\r\n _get(event, 'target.scrollTop') ||\r\n _get(event, 'offset.y') ||\r\n 0\r\n );\r\n }\r\n\r\n this.scrollTop = Math.max(scrollTop, 0);\r\n\r\n return Math.max(scrollTop, 0);\r\n }\r\n\r\n handleScroll(event) {\r\n const scrollTop = this.getScrollTop(event);\r\n\r\n if (scrollTop < 0) {\r\n return;\r\n }\r\n\r\n if (scrollTop === 0) {\r\n this.scrollDirection = '';\r\n }\r\n else if (typeof this._previousScrollTop === 'number') {\r\n this.scrollDirection = scrollTop > this._previousScrollTop ? 'down' : 'up';\r\n }\r\n\r\n this._previousScrollTop = scrollTop;\r\n\r\n this.emit(this.events.scroll, {\r\n direction: this.scrollDirection,\r\n scrollTop: scrollTop\r\n });\r\n }\r\n\r\n createResizeObserver() {\r\n if ('ResizeObserver' in window) {\r\n this._resizeObserver = new ResizeObserver(this.calculateScrollBarWidth);\r\n this._resizeObserver.observe(document.body);\r\n }\r\n }\r\n\r\n destroyResizeObserver() {\r\n if (this._resizeObserver) {\r\n this._resizeObserver.disconnect();\r\n this._resizeObserver = null;\r\n }\r\n }\r\n\r\n calculateScrollBarWidth() {\r\n this.verticalScrollbarWidth = store.state.windowSize.width - document.body.offsetWidth;\r\n this.emit(this.events.scrollbarChange, this.verticalScrollbarWidth);\r\n }\r\n\r\n destroy() {\r\n this.destroyResizeObserver();\r\n this.removeScrollEventListener();\r\n this.removeAllListeners();\r\n }\r\n}\r\n\r\nexport default new ScrollUtil({ events });\r\n","import Vue from 'vue';\r\nimport store from '../../../store/store';\r\nimport axios from 'axios';\r\nimport api from '@Shared/mixins/api';\r\nimport { IS_DEV } from '@Shared/settings';\r\n\r\nlet mountedInstance;\r\nlet showPopup;\r\nlet setPopupContent;\r\nlet componentIsCreated = false;\r\nconst UNSAVED_MODAL_OPENED_KEY = 'UNSAVED_MODAL_OPENED';\r\n\r\nconst component = {\r\n store,\r\n mixins: [api],\r\n data() {\r\n return {\r\n title: '',\r\n content: '',\r\n submitButton: '',\r\n currentPopupId: '',\r\n };\r\n },\r\n async created() {\r\n this._linksLength = 0;\r\n this._preventBeforeUnload = false;\r\n this._interval;\r\n this._clickEvent = (event) => this.onClickLink(event);\r\n this._idleEvent = () => this.setIdleTimeout();\r\n setPopupContent = (id) => this.setPopupContent(id);\r\n showPopup = (url) => this.showPopup(url);\r\n\r\n },\r\n mounted() {\r\n addEventListener(\"beforeunload\", this.beforeUnloadHandler);\r\n this._interval = setInterval(() => {\r\n this.attachAllPageLinksHandler();\r\n }, 1000);\r\n },\r\n beforeDestroy() {\r\n removeEventListener(\"beforeunload\", this.beforeUnloadHandler);\r\n this.removeAllPageLinksHandler();\r\n this.stopIdleDetect();\r\n if (this._interval) {\r\n clearInterval(this._interval);\r\n this._interval = undefined;\r\n }\r\n },\r\n methods: {\r\n async setPopupContent(id) {\r\n this.currentPopupId = id;\r\n try {\r\n const { data } = await axios.post(this.api.getUnsavedChangesPopupContent, this.currentPopupId, \r\n { headers: { \"Content-Type\": \"application/json\" } \r\n });\r\n \r\n this.title = data.Title;\r\n this.content = data.Content;\r\n this.submitButton = data[\"Button_Submit\"];\r\n this._skipUrls = data.SkipUrls;\r\n this._idleTimeout = parseInt(data.IdleTimeout);\r\n this.startIdleDetect();\r\n }\r\n catch (error) {\r\n (IS_DEV && console.error('getUnsavedChangesPopupContent error:', error));\r\n }\r\n },\r\n beforeUnloadHandler(event) {\r\n if (!this._preventBeforeUnload) {\r\n return event.returnValue = \"Open\";\r\n }\r\n },\r\n attachAllPageLinksHandler() {\r\n const links = document.getElementsByTagName(\"a\");\r\n if (this._linksLength !== links.length) {\r\n this._linksLength = links.length;\r\n this.removeLinkEvents(links);\r\n this.addLinkEvents(links);\r\n }\r\n },\r\n removeAllPageLinksHandler() {\r\n const links = document.getElementsByTagName(\"a\");\r\n this.removeLinkEvents(links);\r\n },\r\n onClickLink(event) {\r\n if (this.canShowPopup(event.currentTarget)) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.showPopup(event.currentTarget.href);\r\n }\r\n },\r\n canShowPopup(currentTarget) {\r\n const classNames = ['-clickable'];\r\n let show = currentTarget.href && !currentTarget.href.includes(\"javascript:void\");\r\n\r\n if (classNames.some(className => currentTarget.classList.contains(className))) {\r\n show = false;\r\n }\r\n\r\n if (currentTarget.dataset.logout === 'logout' && currentTarget.attributes.href.value.includes(\"logout\")) {\r\n show = false;\r\n this._preventBeforeUnload = true;\r\n sessionStorage.removeItem(UNSAVED_MODAL_OPENED_KEY);\r\n }\r\n\r\n return show;\r\n },\r\n addLinkEvents(links) {\r\n for (let i = 0; i < links.length; i++) {\r\n links[i].addEventListener(\"mousedown\", this._clickEvent);\r\n }\r\n },\r\n removeLinkEvents(links) {\r\n for (let i = 0; i < links.length; i++) {\r\n links[i].removeEventListener(\"mousedown\", this._clickEvent);\r\n }\r\n },\r\n async primaryButtonHandler() {\r\n if (this._redirectUrl) {\r\n this.redirectToUrl(this._redirectUrl);\r\n }\r\n\r\n this.hidePopup();\r\n },\r\n showPopup(url) {\r\n const nextUrl = new URL(url, window.location.origin);\r\n this.hasUnsavedModalOpened = sessionStorage.getItem(UNSAVED_MODAL_OPENED_KEY) === 'true';\r\n if (this._skipUrls.filter(u => nextUrl.pathname === u).length === 0 && !this.hasUnsavedModalOpened) {\r\n this._redirectUrl = url;\r\n this.$refs.unsavedModal.show();\r\n sessionStorage.setItem(UNSAVED_MODAL_OPENED_KEY, true);\r\n this.stopIdleDetect();\r\n } else {\r\n this.redirectToUrl(url);\r\n }\r\n },\r\n hidePopup() {\r\n this._redirectUrl = undefined;\r\n this.$refs.unsavedModal.hide();\r\n },\r\n redirectToUrl(url) {\r\n this._preventBeforeUnload = true;\r\n window.location.href = url;\r\n },\r\n setIdleTimeout() {\r\n this.hasUnsavedModalOpened = sessionStorage.getItem(UNSAVED_MODAL_OPENED_KEY) === \"true\";\r\n if (this.hasUnsavedModalOpened) {\r\n this.stopIdleDetect();\r\n }\r\n else {\r\n clearTimeout(this._time);\r\n if (this._idleTimeout) {\r\n this._time = setTimeout(() => \r\n { \r\n this.$refs.unsavedModal.show(); \r\n sessionStorage.setItem(UNSAVED_MODAL_OPENED_KEY, true);\r\n }, this._idleTimeout * 1000);\r\n }\r\n }\r\n },\r\n startIdleDetect() {\r\n this.setIdleTimeout();\r\n window.addEventListener('mousemove', this._idleEvent);\r\n window.addEventListener('keydown', this._idleEvent);\r\n window.addEventListener('touchstart', this._idleEvent);\r\n window.addEventListener('click', this._idleEvent);\r\n window.addEventListener('scroll', this._idleEvent, true);\r\n },\r\n stopIdleDetect() {\r\n clearTimeout(this._time);\r\n window.removeEventListener('mousemove', this._idleEvent);\r\n window.removeEventListener('keydown', this._idleEvent);\r\n window.removeEventListener('touchstart', this._idleEvent);\r\n window.removeEventListener('click', this._idleEvent);\r\n window.removeEventListener('scroll', this._idleEvent, true);\r\n }\r\n },\r\n render(createElement) {\r\n return createElement(\"global-modal\", {\r\n props: {\r\n id: \"unsavedChanges\",\r\n title: this.title,\r\n primaryButton: {\r\n label: this.submitButton,\r\n click: this.primaryButtonHandler\r\n }\r\n },\r\n ref: \"unsavedModal\"\r\n }, [\r\n this.content\r\n ])\r\n },\r\n};\r\n\r\nconst addComponent = () => {\r\n const componentInstance = Vue.extend(component);\r\n mountedInstance = new componentInstance().$mount();\r\n document.body.appendChild(mountedInstance.$el);\r\n}\r\n\r\nconst destroyComponent = () => {\r\n if (mountedInstance) {\r\n mountedInstance.$destroy();\r\n }\r\n\r\n showPopup = undefined;\r\n}\r\n\r\nexport class UnsavedChangesPopup {\r\n static init(id) {\r\n if (!componentIsCreated) {\r\n addComponent();\r\n componentIsCreated = true;\r\n if (!sessionStorage.getItem(UNSAVED_MODAL_OPENED_KEY)) {\r\n sessionStorage.setItem(UNSAVED_MODAL_OPENED_KEY, false);\r\n }\r\n }\r\n setPopupContent(id);\r\n }\r\n\r\n static stop() {\r\n if (componentIsCreated) {\r\n destroyComponent();\r\n componentIsCreated = false;\r\n }\r\n if (sessionStorage.getItem(UNSAVED_MODAL_OPENED_KEY)) {\r\n sessionStorage.removeItem(UNSAVED_MODAL_OPENED_KEY);\r\n }\r\n }\r\n\r\n static redirect(url) {\r\n if (showPopup) {\r\n showPopup(url);\r\n return;\r\n }\r\n\r\n window.location.href = url;\r\n }\r\n}","export const noop = () => {};\r\n\r\n/**\r\n * @export\r\n * @function NumberInRange.\r\n * @description Function to determine if a number is between two numbers. It can be inclusive or\r\n * exclusive.\r\n * @param {Object} obj - An object.\r\n * @param {Number} obj.min - The minimum value.\r\n * @param {Number} obj.max - The maximum value.\r\n * @param {Number} obj.number - The value/number to check if it is within the range.\r\n * @param {Boolean} obj.inclusive - If true, the range will include the min and max values.\r\n * Otherwise, min and max won't be included in the range.\r\n * @return {Boolean} True if within the range.\r\n */\r\nexport const numberInRange = ({ min, max, number, inclusive }) => (\r\n inclusive ?\r\n ((number - min) * (number - max) <= 0) :\r\n ((number - min) * (number - max) < 0)\r\n);\r\n\r\n/**\r\n * @export\r\n * @function clamp.\r\n * @description Returns a value that is limited to the range of two values.\r\n * @param {Object} params - Function parameters.\r\n * @param {number} params.min - The minimum value.\r\n * @param {number} params.max - The maximum value.\r\n * @param {number} params.value - The number to clamp.\r\n * @return {number} - The clamped value.\r\n */\r\nexport const clamp = ({ min, max, value }) => Math.min(max, Math.max(min, value));\r\n\r\n/**\r\n * @export\r\n * @function wait\r\n * @description Wait a specific amount of time and resolve a promise.\r\n * @param {Number} [ms=0] - The number of milliseconds to wait before resolving the promise.\r\n * @returns {Promise} Promise that will resolve after n milliseconds\r\n */\r\nexport const wait = (ms = 0) => new Promise(resolve => setTimeout(resolve, ms));\r\n\r\n/**\r\n * @export\r\n * @function toBase64Input\r\n * @description Encodes a string to base64.\r\n * @param {string} input - The string to encode.\r\n * @return {string} - The base64 encoded string.\r\n */\r\nexport const toBase64Input = (input) => {\r\n if (input && window.btoa && window.encodeURIComponent) {\r\n return window.btoa(window.encodeURIComponent(input));\r\n }\r\n else {\r\n return input;\r\n }\r\n};\r\n\r\n/**\r\n * @export\r\n * @function capitalizeString\r\n * @description Capitalizes all words in a string. For example 'hello world' will be returned as 'Hello World'.\r\n * @param {string} str - The string to capitalize.\r\n * @return {string} - The capitalized string\r\n */\r\nexport const capitalizeString = str => str.replace(/\\b[a-z]/gm, match => match.toUpperCase());\r\n\r\n/**\r\n * @export\r\n * @module\r\n * @function preventEvent\r\n * @description Prevents default behaviour for an event.\r\n * @param {Event} event - The event\r\n * @return {undefined}\r\n */\r\nexport const preventEvent = (event) => {\r\n event.preventDefault();\r\n};\r\n\r\n/**\r\n * @export\r\n * @module\r\n * @function getCookieValue.\r\n * @description Gets the value of a cookie.\r\n * @param {string} name - The name of the cookie.\r\n * @return {string|null} - The value of the cookie, or null if no cookie with matching name is found.\r\n */\r\nexport const getCookieValue = (name) => {\r\n const cookie = (document.cookie.match('(^|;)\\\\s*' + name + '\\\\s*=\\\\s*([^;]+)') || []).pop();\r\n return cookie ? decodeURIComponent(cookie) : null;\r\n};\r\n","export const browserDetect = () => {\r\n let browser;\r\n const agent = window.navigator.userAgent.toLowerCase();\r\n\r\n switch (true) {\r\n case agent.indexOf('edge') !== -1:\r\n browser = 'edge';\r\n break;\r\n case agent.indexOf('edg/') !== -1:\r\n browser = 'edge';\r\n break;\r\n default:\r\n browser = '';\r\n break;\r\n } \r\n\r\n return browser;\r\n}","import { IS_DEV } from '@Shared/settings';\r\n\r\n/**\r\n * @function callVueInstanceMethod.\r\n * @description Utility function used in place of 'eval'. Calls method on Vue component instances.\r\n * @param {string} method - Name of the method.\r\n * @param {Object} context - Reference to instance (this).\r\n * @param {...*} [args] - arguments to pass to method.\r\n * @return {undefined}\r\n */\r\nconst callVueInstanceMethod = (method, context, ...args) => {\r\n try {\r\n const instanceMethod = (new Function(`\"use strict\"; return function(Model) { ${method} }`))();\r\n\r\n instanceMethod.bind(context)(...args);\r\n }\r\n catch (error) {\r\n (IS_DEV && console.error(`callVueInstanceMethod error calling: ${method} |\\n`, error));\r\n }\r\n};\r\n\r\nexport default callVueInstanceMethod;\r\n","import { IS_DEV } from '@Shared/settings';\r\n\r\n/**\r\n * To fix styling conflicts from my account redesign 2021, this function will clear classes to revert\r\n * back to legacy styles.\r\n *\r\n * Example Pages\r\n * /insurance/myaccount/your-insurances/auto > cancel insurance\r\n */\r\n\r\nconst clearMyAccountClasses = () => {\r\n try {\r\n const body = document.body || document.getElementsByTagName('body')[0];\r\n if (body.classList.contains('p-myAccount')) {\r\n body.classList.remove('p-myAccount');\r\n }\r\n }\r\n catch (error) {\r\n (IS_DEV && console.error('clearMyAccountClasses error:', error));\r\n }\r\n};\r\n\r\nexport default clearMyAccountClasses;\r\n","/**\r\n * Utility functions for migrating the project away from jQuery.\r\n */\r\n\r\nimport { IS_DEV } from '@Shared/settings';\r\n\r\n/**\r\n * @function getParents.\r\n * @description Gets all ancestors of an element.\r\n * @param {HTMLElement} el - Target DOM element\r\n * @param {string = '*'} selector - Selector string.\r\n *\r\n * @return {HTMLElement[]} - Array of DOM elements. Length can be >= 0;\r\n *\r\n * @author Andrew Kim \r\n */\r\nexport const getParents = (el, selector = '*') => {\r\n const { parentElement } = el;\r\n if (parentElement) {\r\n return [\r\n ...(parentElement.matches(selector) ? [ parentElement ] : []),\r\n ...getParents(parentElement, selector)\r\n ];\r\n }\r\n return [];\r\n};\r\n\r\n/**\r\n * @function showElement.\r\n * @description Shows element by setting CSS display property to 'block'.\r\n * @param {HTMLElement|HTMLElement[]} el - Target DOM element or array of elements\r\n *\r\n * @return {undefined}\r\n *\r\n * @author Andrew Kim \r\n */\r\nexport const showElement = (el) => {\r\n if (!el) {\r\n (IS_DEV && console.error('showElement: no element provided'));\r\n return;\r\n }\r\n\r\n if (Array.isArray(el) || el instanceof HTMLCollection || el instanceof NodeList) {\r\n [...el].map((el) => {\r\n el.style.setProperty('display', '');\r\n });\r\n }\r\n else {\r\n el.style.setProperty('display', '');\r\n }\r\n};\r\n\r\n/**\r\n * @function hideElement.\r\n * @description Hides element by setting CSS display property to 'none'.\r\n * @param {HTMLElement|HTMLElement[]} el - Target DOM element or array of elements\r\n *\r\n * @return {undefined}\r\n *\r\n * @author Andrew Kim \r\n */\r\nexport const hideElement = (el) => {\r\n if (!el) {\r\n (IS_DEV && console.error('hideElement: no element provided'));\r\n return;\r\n }\r\n\r\n if (Array.isArray(el) || el instanceof HTMLCollection || el instanceof NodeList) {\r\n [...el].map((el) => {\r\n el.style.setProperty('display', 'none', 'important');\r\n });\r\n }\r\n else {\r\n el.style.setProperty('display', 'none', 'important');\r\n }\r\n};\r\n\r\n/**\r\n * @export\r\n * @function getVisibleParent.\r\n * @description Gets the closest parent/ancestor that is visible (doesn't have display none set on it).\r\n * @param {HTMLElement} el - The target element.\r\n * @return {HTMLElement} - The visible parent/ancestor or the original element.\r\n */\r\nexport const getVisibleParent = (el) => {\r\n if (el.offsetParent) {\r\n return el.parentElement;\r\n }\r\n else if (el.parentElement) {\r\n return getVisibleParent(el.parentElement);\r\n }\r\n\r\n return el;\r\n};\r\n","import Vue from 'vue';\r\nimport { IS_DEV } from '@Shared/settings';\r\n\r\nconst EventBus = new Vue({\r\n created() {\r\n this._queue = {};\r\n },\r\n methods: {\r\n addToQueue({ id, eventName, payload }) {\r\n if (!this._queue[eventName]) {\r\n this._queue[eventName] = [];\r\n }\r\n\r\n this._queue[eventName].push({\r\n id,\r\n payload\r\n });\r\n },\r\n removeFromQueue(eventName, id) {\r\n const eventQueue = this._queue[eventName];\r\n\r\n if (!eventQueue) {\r\n (IS_DEV && console.error(`EventBus removeFromQueue error. No queue for ${eventName} available.`));\r\n return;\r\n }\r\n\r\n this._queue[eventName] = eventQueue.filter(event => event.id !== id);\r\n },\r\n getEventQueue(eventName) {\r\n const eventQueue = this._queue[eventName];\r\n\r\n if (!eventQueue) {\r\n (IS_DEV && console.error(`EventBus getEventQueue: No queue for ${eventName} available.`));\r\n return;\r\n }\r\n\r\n if (!eventQueue.length) {\r\n (IS_DEV && console.error(`EventBus getEventQueue: ${eventName} queue is empty.`));\r\n return;\r\n }\r\n\r\n return eventQueue[0];\r\n },\r\n triggerEvent({ id, eventName, payload }) {\r\n const onEventCompleteCallback = () => {\r\n this.removeFromQueue(eventName, id);\r\n };\r\n\r\n this.$emit(eventName, payload, onEventCompleteCallback);\r\n }\r\n }\r\n});\r\n\r\nexport default EventBus;\r\n","/**\r\n * @export\r\n * @function getElementTop.\r\n * @description Calculates an element's position relative to the document.\r\n * @param {HTMLElement} element - the target html element.\r\n * @return {number} top - The top value of the element.\r\n */\r\nexport const getElementTop = (element) => {\r\n const { top: elementTop } = element.getBoundingClientRect();\r\n const docEl = document.documentElement;\r\n const scrollTop = window.pageYOffset;\r\n const clientTop = docEl.clientTop;\r\n return Math.round(elementTop + scrollTop - clientTop);\r\n};\r\n","import { IS_DEV } from '@Shared/settings';\r\n\r\nexport const loadGSAP = async () => {\r\n try {\r\n if (window.gsap) return window.gsap;\r\n\r\n const { gsap } = await import('gsap');\r\n\r\n window.gsap = gsap;\r\n\r\n return window.gsap;\r\n }\r\n catch (error) {\r\n (IS_DEV && console.error('loadGSAP error:', error));\r\n }\r\n};\r\n","/**\r\n * @export\r\n * @description Checks if a device is a touchscreen or not. This is not the most robust solution\r\n *\r\n * @return {boolean} - True if touch device. Otherwise false.\r\n */\r\nconst isTouchDevice = () => (\r\n ('ontouchstart' in window) ||\r\n (navigator.maxTouchPoints > 0) ||\r\n (navigator.msMaxTouchPoints > 0)\r\n);\r\n\r\nexport default isTouchDevice;\r\n","/**\r\n * Callback for on load event\r\n *\r\n * @callback onLoadCallback\r\n */\r\n\r\n/**\r\n * @export\r\n * @function loadScript.\r\n * @description Given a url for a script, this function will load the script or if a script element with the same id exists,\r\n * it will wait for it to load.\r\n * @param {Object} params - Function parameters\r\n * @param {string} params.id - The script id.\r\n * @param {string} params.url - The script url.\r\n * @param {Object=} params.scriptAttributes - Optional script tag attributes\r\n * @param {onLoadCallback} params.onLoad - Optional on load callback\r\n * @return {Promise} - Promise resolves with no return value.\r\n */\r\nimport { IS_DEV } from '@Shared/settings';\r\n\r\nexport const loadScript = async ({ id, url, scriptAttributes, onLoad }) => {\r\n const existingScriptTag = document.getElementById(id);\r\n\r\n if (!existingScriptTag) {\r\n const scriptTag = document.createElement('script');\r\n\r\n await new Promise((resolve) => {\r\n scriptTag.setAttribute('id', id);\r\n scriptTag.setAttribute('src', url);\r\n\r\n if (scriptAttributes) {\r\n Object.keys(scriptAttributes).map(key => scriptTag.setAttribute(key, scriptAttributes[key]));\r\n }\r\n\r\n scriptTag.addEventListener('load', () => {\r\n scriptTag.dataset.isLoaded = 'true';\r\n\r\n (typeof onLoad === 'function' && onLoad());\r\n\r\n resolve();\r\n });\r\n\r\n // The script will silently error.\r\n scriptTag.addEventListener('error', () => {\r\n (IS_DEV && console.error(`Error loading script src: ${url}`));\r\n resolve();\r\n });\r\n\r\n document.head.appendChild(scriptTag);\r\n });\r\n }\r\n else if (!existingScriptTag.dataset.isLoaded) {\r\n await new Promise((resolve) => {\r\n existingScriptTag.addEventListener('load', () => {\r\n if (!existingScriptTag.dataset.isLoaded) {\r\n existingScriptTag.dataset.isLoaded = 'true';\r\n }\r\n\r\n (typeof onLoad === 'function' && onLoad());\r\n\r\n resolve();\r\n });\r\n\r\n // The script will silently error.\r\n existingScriptTag.addEventListener('error', () => {\r\n (IS_DEV && console.error(`Error loading script src: ${url}`));\r\n resolve();\r\n });\r\n });\r\n }\r\n else {\r\n (typeof onLoad === 'function' && onLoad());\r\n }\r\n};\r\n","/**\r\n * @function requireAll.\r\n * @description Import/require all matching files in a directory.\r\n * @param {Object} requireContext - Target directory; result of calling require.context.\r\n * @return {undefined}\r\n *\r\n * Documentation on Webpack's require.context can be found here\r\n * {@link https://webpack.js.org/guides/dependency-management/#requirecontext|Require Context}\r\n *\r\n * @author Andrew Kim \r\n */\r\n\r\nexport default function requireAll(requireContext) {\r\n requireContext.keys().map(requireContext);\r\n}\r\n","// import { gsap } from 'gsap';\r\n\r\nimport { loadGSAP } from '@Shared/utils/gsap-utils';\r\n\r\n/**\r\n * @export\r\n * @description Scroll page up or down.\r\n * @param {number} top - scroll top value of page\r\n *\r\n * @return {undefined}\r\n */\r\nexport const scrollPage = async (top) => {\r\n // Better logic to prevent overscroll, but the browser will handle this on it's own.\r\n // const maxScrollTop = document.scrollingElement.scrollHeight - window.innerHeight;\r\n // const scrollTop = Math.min(top, maxScrollTop);\r\n\r\n (!window.gsap && await loadGSAP());\r\n\r\n gsap.to(document.scrollingElement, { scrollTop: top, duration: 0.3, ease: 'power1.out' });\r\n};\r\n","export default [\r\n // Generic catch all.\r\n // 'bot',\r\n // 'Bot',\r\n\r\n /* Google Bots */\r\n // Googlebot Image, Googlebot News, Googlebot Video, Googlebot Desktop, Googlebot Smartphone\r\n 'Googlebot',\r\n\r\n // APIs-Google\r\n 'APIs-Google',\r\n\r\n // AdSense\r\n 'Mediapartners-Google',\r\n\r\n // AdsBot Mobile Web Android\r\n // APIs-Google\r\n 'AdsBot-Google-Mobile',\r\n\r\n // AdsBot\r\n 'AdsBot-Google',\r\n\r\n // Googlebot Image\r\n 'Googlebot-Image',\r\n\r\n // Googlebot News\r\n 'Googlebot-News',\r\n\r\n // Googlebot Video\r\n 'Googlebot-Video',\r\n\r\n // Mobile AdSense\r\n 'Mediapartners-Google',\r\n\r\n // Mobile Apps Android\r\n 'AdsBot-Google-Mobile-Apps',\r\n\r\n // Feedfetcher\r\n 'FeedFetcher-Google',\r\n\r\n // Google Read Aloud\r\n 'Google-Read-Aloud',\r\n\r\n // Duplex on the web\r\n 'DuplexWeb-Google',\r\n\r\n // Google Favicon\r\n 'Google Favicon',\r\n\r\n // Web Light\r\n 'googleweblight',\r\n\r\n // Google StoreBot\r\n 'Storebot-Google',\r\n\r\n /* Bing */\r\n 'Bingbot',\r\n\r\n /* Slurp used by Yahoo */\r\n 'Slurp',\r\n\r\n /* DuckDuckBot */\r\n 'DuckDuckBot',\r\n\r\n /* Baidu */\r\n 'Baiduspider',\r\n\r\n /* Yandex */\r\n 'Yandex',\r\n\r\n /* Exabot */\r\n 'Exabot',\r\n\r\n /* Alexa crawler */\r\n 'ia_archiver',\r\n\r\n /* Apple Bot */\r\n 'Applebot',\r\n\r\n /* Facebook */\r\n 'facebot',\r\n 'facebookexternalhit',\r\n\r\n /* W3C Validator */\r\n 'W3C_Validator',\r\n\r\n /* Prerender.io */\r\n 'Prerender '\r\n];\r\n","import botList from './bot-list';\r\n\r\nconst botsRegex = new RegExp(`(${botList.join('|')})`);\r\n\r\nexport default class UserAgentParser {\r\n constructor(userAgent) {\r\n this.ua = userAgent;\r\n this.isBot = botsRegex.test(this.ua);\r\n }\r\n}\r\n\r\nexport const USER_AGENT = new UserAgentParser(window.navigator.userAgent);\r\n","/**\r\n * @function mergeClasses\r\n * @description Handles class bindings for Vue functional components in render functions.\r\n * @param context {Object} - Context object\r\n * @return mergedClasses {Array} - The combined static and bound classes\r\n */\r\nexport const mergeClasses = (context) => {\r\n const {\r\n data: {\r\n class: classes = {},\r\n staticClass = ''\r\n }\r\n } = context;\r\n\r\n return [\r\n staticClass,\r\n ...(Array.isArray(classes) ?\r\n classes :\r\n [ classes ]\r\n )\r\n ];\r\n};\r\n"],"names":["Vue","bind","el","binding","EventBus","$on","async","id","content","_ref","value","setAttribute","wait","innerHTML","requireAll","require","functional","props","color","type","String","default","validator","test","render","createElement","context","data","class","classes","staticClass","attrs","rest","_objectWithoutProperties","_excluded","circleEl","d","fill","stroke","arrowEl","groupEl","_objectSpread","concat","Array","isArray","xmlns","preserveAspectRatio","viewBox","mixins","expandAndCollapse","contentToggle","inject","useIf","Boolean","containerId","this","_uid","isContainerOpen","isWrapperRelative","isOpenInitially","appear","showForm","computed","sectionFields","$validator","fields","items","filter","field","document","getElementsByName","name","getElementById","closest","watch","immediate","handler","isOpen","$eventBus","$emit","created","toggleContent","getOpenState","_animateOnResize","animateOnResize","beforeDestroy","$off","mounted","openContainer","openImmediately","methods","resetOrValidateFields","validate","arguments","length","undefined","areValid","arr","forEach","reset","push","results","Promise","all","every","isValid","callback","willAnimate","$nextTick","toggle","callbackFn","toggleContainerHeight","handleInvalidForm","createContentContainer","slotUtils","heading","required","renderDropDownHeader","iconEl","getSlot","headingEl","chevronEl","iconType","buttonEl","tag","variant","on","click","renderDropDownContent","contentClasses","api","consentMode","cookie","split","some","item","trim","startsWith","$refs","show","navigator","cookieEnabled","hide","acceptCookiesOnClose","openPersonalizePopup","$root","querySelectorAll","checkbox","checked","closeIcon","querySelector","addEventListener","acceptAllCookies","pushToDataLayer","dataLayer","window","find","CookiesConsent","setConsent","consent","categoryMappings","Advertising","Performance","Personalization","key","Object","entries","mappedKey","axios","post","setCookieConsent","then","response","catch","error","categoryList","setInitialConsent","showPersonalizePopup","category","$set","handleCheckboxChange","event","target","acceptCookiesApi","acceptSelectedCookies","rejectAllCookies","prototype","hasOwnProperty","call","cynolyticsUrl","loadScript","_cs","cynolytics_url","cynolytics_partner_id","url","scriptAttributes","ICONS","downBold","myAccount","keys","includes","icon","showModal","modalId","modalUrl","storeName","modalContent","internalModalId","Model","$store","state","model","val","openModal","generateModalId","vm","$globalModal","events","fetchModal","request","method","headers","skipLoading","setModalId","IS_DEV","oldId","newId","regex","RegExp","replace","str","Math","random","toString","substr","h","modalType","ErrorMsg","ErrorCode","closeCallback","Function","globalModalID","hideFirstPhrase","open","handleModalClose","close","errorMsg","httpStatusCode","serviceErrorCode","trackAppError","ir","vpUrl","logMessage","action","label","vue","visible","hideExpandableLink","groupName","categoryName","questionId","eventName","payload","GroupName","CategoryName","QuestionId","eventID","addToQueue","onEventCompleteCallBack","removeFromQueue","limit","Number","questionsCount","isListExpanded","questionState","i","Active","toggleAnswer","index","toggleAll","windowSize","isDark","isLegalOpen","isProductOpen","isWidgetOpen","isLegalAccessibilityOpen","isLeftColumnOpen","darkClassName","toggleLegal","toggleProduct","toggleWidget","toggleLegalAccessibility","toggleLeftColumn","navBarCollapsed","navBarVisible","mobile","funnel","funnelMobile","funnelNavBarCollapsed","GLOBAL_BANNER_TOP_OFFSETS","isFunnelPage","isActive","checkSessionStorage","rootElClasses","rootElStyles","isMobile","top","isNavBarCollapsed","globalNav","isHidden","_timeline","animateIn","destroyTimeline","text","button","secondaryItems","gsap","loadGSAP","timeline","delay","onComplete","fromTo","$el","y","duration","ease","autoAlpha","scale","stagger","kill","sessionStorage","getItem","GLOBAL_BANNER_SESSION_STORAGE_KEY","setSessionStorage","setItem","closeBanner","to","_app","attachToApp","detachFromApp","APP_EL_ID","appendChild","removeChild","MODAL_EVENTS","cancel","ok","hideModal","focusTrap","title","headingClass","bodyClass","footerClass","useDefaultOk","useDefaultCancel","primaryButton","secondaryButton","textButton","noCloseOnBackdrop","noCloseOnEsc","noCloseButton","closeButtonAttributes","isGradientActive","mapState","activeModalID","modal","buttonBaseClass","defaultOkButton","defaultCancelButton","primaryButtonProps","secondaryButtonProps","textButtonProps","slotProps","$_globalModal_handleClose","$_globalModal_handleOk","$_globalModal_handleCancel","buttonClass","isScrolledToEnd","buttons","getters","breakpointPhone","moduleName","_isAttachedToContainer","_resizeObserver","_windowUnWatcher","_hasSlotContent","$_globalModal_attachToContainer","$_globalModal_addEventBusListeners","$_globalModal_createResizeObserver","beforeUpdate","parentElement","body","append","$_globalModal_destroyResizeObserver","updated","$_globalModal_detachFromContainer","$_globalModal_removeEventListeners","mapMutations","$_globalModal_handleShowEvent","modalID","$_globalModal_createEventPayload","$_globalModal_handleHideEvent","trigger","eventPayload","$_globalModal_removeEscKeyEventListener","setModalIsClosed","$_globalModal_addEscKeyEventListener","setModalIsOpen","setActiveModalID","$_globalModal_handleKeyDown","removeEventListener","$_globalModal_handleBackdropClick","$_globalModal_handleButtonClick","buttonType","ResizeObserver","$_globalModal_checkScrollContent","observe","$watch","disconnect","offsetHeight","scrollHeight","scrollTop","isScrolledToBottom","$_globalModal_createCloseButton","tabindex","$_globalModal_createHeading","headingSlotContent","domProps","$_globalModal_createBody","slotContent","gradientEl","bodyEl","ref","scroll","$_globalModal_createDefaultButton","$_globalModal_createButton","slotKey","propsKey","buttonSlotEl","config","$_globalModal_createButtons","map","$_globalModal_createContent","buttonsContainEl","stopPropagation","$_globalModal_setFocus","getElementsByTagName","getAttribute","focus","$_focusTrap_getFocusableElements","rootEl","keydown","$_focusTrap_trapFocus","mode","enter","leave","afterEnter","dropDown","buttonClasses","template","bottomNavHeightMobile","HEADER_NAV","buttonAriaLabel","lines","ariaHidden","listWrapperStyles","isPhone","width","windowWidth","height","windowHeight","handleClick","GoogleAnalytics","navigationItem","navigation_click","createTimeline","wrapper","done","onStart","set","clearProps","xPercent","animateOut","shoppingBasketBadge","isMenuCollapsed","shoppingBasketCount","scrollDirection","isFocused","isTopNavHidden","commit","_previousScrollTop","registerUpdateBasketCount","handleScroll","passive","e","isDropdownButton","matches","curentDropdown","classList","dropdown","remove","myAccountModalContainer","myAccountModalCloseButton","myAccountModalContent","myAccountNavButton","scrollToLocationOnPage","link","activeElement","contains","targetElement","preventDefault","handleFocus","handleBlur","getScrollTop","_get","max","isActiveProductLink","location","pathname","setTimeout","currentUrl","href","keyword","FAQSection","scrollIntoView","scrollBy","src","alt","imageClass","intersectionRootMargin","loadImmediately","objectFit","absolute","transitionName","aspectRatio","isReady","isInView","imageElClasses","imageAttributes","intersectionOptions","threshold","rootMargin","aspectRatioStyles","parseFloat","paddingTop","_intersectionObserver","_userAgent","USER_AGENT","isBot","handleBot","createIntersectionObserver","destroyIntersectionObserver","handleImageReady","handleImageError","handleIntersectionChange","entry","intersectionRatio","isIntersecting","IntersectionObserver","listClasses","$slots","headingID","toggleDropdown","_isAnimating","handleTransitionStart","handleTransitionEnd","isCollapsed","itemsCount","menuAlignment","alignment","wrapperClasses","setWrapperWidth","getDropDownSize","_dropDownHeight","topOffset","boxShadowOffset","container","getBoundingClientRect","_dropDownWidth","backgroundClass","backgroundInnerClass","createOutline","createLabel","sanitizeLabel","labelWrap","white","htmlString","children","createBackground","backgroundInnerEl","joinVNodeText","merged","vNode","joinChildrenText","reduce","createGTMAttributes","parent","gtmLabelComponentName","gtmTrackVirtualPage","isLabelUpperCased","gtmLabel","toUpperCase","analytics","virtualPageURL","BUTTON_GTM_CONFIGS","disabled","header","fullWidth","addGTM","blue","listeners","onClick","isPillButton","childElements","mergeClasses","currentTarget","background","getElementsByClassName","backgroundInner","ariaLabel","tooltipBody","components","tooltipButton","icons","className","productIconClasses","join","productIconRegex","getIconName","iconClassName","hasIconClass","matchedClass","match","ariaAttributes","links","quickLinksOpened","activeLinkTitle","currentURLPath","decodeURI","activeLink","breakpointMobile","ariaExpanded","_focusOutTimeout","clearTimeout","modalid","closeLinks","toggleDropDown","scriptId","scriptUrl","handleError","SCRIPT_LOADER","readyStateDataAttribute","readyStates","handleLoad","loaded","addEventListeners","element","scriptEl","readyState","dataset","readyStateDataSetKey","extScript","head","sessionOutPublicRedirect","sessionOutPrivateRedirect","sessionEnabled","pageEditor","funnelInProgress","sessionWaitingBuffer","isAuthenticated","remaining","redirection","intervalId","beforeSessionExpirationWarning","sessionId","popupDuration","initTime","Date","isSessionExpired","sessionData","refreshOperationRunning","minTimerDelay","isSessionExpirationCheckEnabled","initSession","registerResetSessionEvent","handleVisibilityChangeEvent","getCookieSessionInfo","sessionCookieVal","getCookieValue","sessionExpirationDate","sessionWarningDate","dummyDate","serverCurrentDate","startSessionTimer","sessionTimerDelay","calculateSessionTimerDelay","sessionTimerId","checkSessionTimeout","activateCountDown","initialDelay","floor","countDown","setInterval","expireSession","retainSession","clearInterval","refreshSession","updateSessionTimer","logout","redirectPage","removeItem","visibilityState","sessionExpirationUrl","loginUrl","sessionPopupEnabled","authenticated","basketCount","SETTINGS","private_session","password_required","session_start_confirmation","agent_can_request_control","agent_can_take_control","anyone_can_deactivate_space","hide_cursors","region","cookie_transfer_enabled","cookie_transfer_proxying","cookie_transfer_urls","cookie_transfer_scopes","verbose_console","host","SESSION_STORAGE_KEY","widgetKey","widgetUrl","isSessionActive","_hasPreviousSession","checkSession","f","s","init","q","Surfly","mergedSettings","widget_key","SURFLY_SETTINGS_OVERRIDE","handleSessionStart","session","handleSessionEnd","handleLocationChangeStart","initResult","success","isInsideSession","startLeader","rawTemplate","changeStateHandler","onBackHandler","positions","freeze","TOP","Symbol","BOTTOM","TooltipUtil","EventEmitter","constructor","tooltip","super","triggerBoundingClientRect","tooltipBoundingClientRect","position","resizeObserver","tooltipWidth","tooltipLeftMargin","positionChange","ScrollUtil","addScrollEventListener","createResizeObserver","handlePositionChange","checkForPosition","bottom","triggerBottom","tooltipHeight","store","getSpecificPosition","positionTop","positionBottom","pageYOffset","triggerTop","left","triggerLeft","triggerHeight","round","getPositonLeft","getTooltipPosition","onResize","emit","destroyResizeObserver","arrowPosition","tooltipEnd","spaceRight","abs","destroy","removeAllListeners","_tooltipRef","_tooltipUtil","_isOpen","_label","handleInputFocus","createTooltip","propsData","$mount","handleClickOutside","hideTooltip","handleFocusChange","clickedElement","isLabel","inputEl","sliderEl","radioButtonEl","getLabel","labelEl","innerText","sendAnalytics","IS_FUNNEL","openTooltip","tooltipPositioning","attachEvents","removeEvents","coordinates","isLargeScreen","innerWidth","style","transform","add","right","unsavedChangesPopupId","step","popupId","setActiveStep","initPopup","activeStep","UnsavedChangesPopup","stop","ancestorEl","types","tile","back","primary","secondary","GTM_LABEL_ATTRIBUTE","modifiers","modifierKey","getButtonType","popup","setAttributes","attributes","attributesKey","inserted","_ref2","isVirtualPage","componentUpdated","hasAttribute","updatedLabel","absoluteURLRegex","activeClassName","targetEl","nodeName","URL","preventEvent","removeAttribute","vnode","clickOutsideEvent","expression","unbind","ScrollTrigger","registerPlugin","animation","yPercent","getElementTop","scrollTrigger","scrub","start","end","handleStateChange","eventBus","shared","createContentWrapper","$scopedSlots","containerName","_tween","_wrapperHeight","$_expandCollapse_getWrapperHeight","handleValueChange","oldVal","closeContainer","mouseEnterDelay","rootElEvents","mouseenter","handleMouseEnter","mouseleave","handleMouseLeave","focusin","handleFocusIn","focusout","handleFocusOut","buttonEvents","handleButtonClick","clearFocusOutTimeout","clearMouseEnterTimeout","closeDropDown","_mouseEnterTimeout","openDropDown","focusOutTimeout","DEFAULT_ANIMATION_CONFIG","ExpandAndCollapseBase","wrapperName","debounceDuration","containerState","_unWatchers","_gsapOnStartCallback","$_expandCollapse_destroy","unWatcher","$_expandCollapse_handleResize","$_expandCollapse_createResizeObserver","resizeHandler","_debounce","$_expandCollapse_destroyResizeObserver","callBack","visibility","expandAndCollapseResponsive","mobileOnly","phoneOnly","mobileUnWatcher","$_expandCollapse_handleDeviceChange","phoneUnWatcher","willEnableForMobile","willEnableForPhone","FOCUSABLE_ELEMENTS","_firstFocusableEl","_lastFocusableEl","focusableEls","totalFocusableEls","keyCode","shiftKey","RESIZE_OBSERVER","debounce","formatCurrency","currencyValue","currencyStyle","fractionDigits","currencyOptions","minimumFractionDigits","currency","__currency__","toLocaleString","__currencyLocal__","decodeHTML","taDecodeHTML","toBase64Input","input","btoa","encodeURIComponent","slot","getSlotFunctional","scopedSlots","TotalPremium","isCondensed","textBackButton","showBackButton","topNavHeight","navHeaderHeight","ActiveStep","_isCondensedUnWatcher","stepHeaderBackButton","initResizeObserver","removeScrollEventListener","navigateToPreviousStep","watchIsCondensed","toggleTotalPremiums","unWatchIsCondensed","totalPremiumCondensed","setContainerHeight","contentContainer","totalPremium","mapGetters","isTablet","modalEvents","install","BREAKPOINTS","phone","min","tablet","desktop","desktopLarge","MAIN_CAROUSEL","defaults","pauseDuration","slideChangeInterval","WINDOW_RESIZE","throttleDuration","PAGE_LOAD_TIMEOUT","FUNNEL_FOOTER_TIMEOUT","process","IS_STAGING","ZENDESK_CONFIG","productId","sessionStorageActiveKey","sessionStorageOpenKey","TRUST_PILOT","SUBMIT_BUTTON_ID","bottomNavHeight","COVERAGES_CAROUSEL","hyperlink","FEEDBACK_CONFIRMATION_TIMEOUT","STEP_BAR_HEIGHT","_events","listener","off","removeListener","listenerToRemove","options","_hasAddedScrollListener","verticalScrollbarWidth","scrollingElement","scrollbarChange","calculateScrollBarWidth","direction","offsetWidth","mountedInstance","showPopup","setPopupContent","componentIsCreated","UNSAVED_MODAL_OPENED_KEY","component","submitButton","currentPopupId","_linksLength","_preventBeforeUnload","_interval","_clickEvent","onClickLink","_idleEvent","setIdleTimeout","beforeUnloadHandler","attachAllPageLinksHandler","removeAllPageLinksHandler","stopIdleDetect","getUnsavedChangesPopupContent","Title","Content","_skipUrls","SkipUrls","_idleTimeout","parseInt","IdleTimeout","startIdleDetect","returnValue","removeLinkEvents","addLinkEvents","canShowPopup","primaryButtonHandler","_redirectUrl","redirectToUrl","hidePopup","nextUrl","origin","hasUnsavedModalOpened","u","unsavedModal","_time","addComponent","componentInstance","$destroy","redirect","noop","numberInRange","number","inclusive","clamp","ms","resolve","capitalizeString","pop","decodeURIComponent","browserDetect","browser","agent","userAgent","toLowerCase","indexOf","callVueInstanceMethod","instanceMethod","_len","args","_key","clearMyAccountClasses","getParents","selector","showElement","HTMLCollection","NodeList","setProperty","hideElement","getVisibleParent","offsetParent","_queue","eventQueue","getEventQueue","triggerEvent","onEventCompleteCallback","elementTop","docEl","documentElement","clientTop","isTouchDevice","maxTouchPoints","msMaxTouchPoints","onLoad","existingScriptTag","isLoaded","scriptTag","requireContext","scrollPage","botsRegex","ua"],"sourceRoot":""}