{"version":3,"file":"main.min.js","mappings":"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","sources":["webpack://webpack-starter-basic/./src/app/widgets/offer-carousel/offer-carousel.widget.js","webpack://webpack-starter-basic/./src/app/widgets/product-carousel/product-carousel.widget.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/fields/plain-button.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/fields/plain-checkbox-list.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/fields/plain-checkbox.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/fields/plain-date.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/fields/plain-extended-radio-button-list.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/fields/plain-header.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/fields/plain-hidden.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/fields/plain-radio-button-list.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/fields/plain-recaptcha.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/fields/plain-rich-text.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/fields/plain-select.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/fields/plain-text.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/fields/plain-textarea.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/fields/plain-upload.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/plain-index.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/polyfills/promise.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/steps/get-field-renderers.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/steps/get-field-validators.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/steps/get-form-data.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/steps/render-cell.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/steps/render-field.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/steps/render-form.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/steps/render-forms.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/steps/render-row.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/utils/add-classes.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/utils/ajax.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/utils/events.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/utils/field.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/utils/map-fields-by-id.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/utils/validation.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/validators/regex.js","webpack://webpack-starter-basic/./src/responsive.plain-javascript/validators/required.js","webpack://webpack-starter-basic/./node_modules/hammerjs/hammer.js","webpack://webpack-starter-basic/./node_modules/lodash/_SetCache.js","webpack://webpack-starter-basic/./node_modules/lodash/_Stack.js","webpack://webpack-starter-basic/./node_modules/lodash/_arrayIncludes.js","webpack://webpack-starter-basic/./node_modules/lodash/_arrayIncludesWith.js","webpack://webpack-starter-basic/./node_modules/lodash/_arraySome.js","webpack://webpack-starter-basic/./node_modules/lodash/_assocIndexOf.js","webpack://webpack-starter-basic/./node_modules/lodash/_baseIndexOf.js","webpack://webpack-starter-basic/./node_modules/lodash/_baseIsEqual.js","webpack://webpack-starter-basic/./node_modules/lodash/_baseIsEqualDeep.js","webpack://webpack-starter-basic/./node_modules/lodash/_baseIteratee.js","webpack://webpack-starter-basic/./node_modules/lodash/_baseUniq.js","webpack://webpack-starter-basic/./node_modules/lodash/_cacheHas.js","webpack://webpack-starter-basic/./node_modules/lodash/_createSet.js","webpack://webpack-starter-basic/./node_modules/lodash/_equalArrays.js","webpack://webpack-starter-basic/./node_modules/lodash/_equalByTag.js","webpack://webpack-starter-basic/./node_modules/lodash/_equalObjects.js","webpack://webpack-starter-basic/./node_modules/lodash/_getAllKeys.js","webpack://webpack-starter-basic/./node_modules/lodash/_getTag.js","webpack://webpack-starter-basic/./node_modules/lodash/_listCacheClear.js","webpack://webpack-starter-basic/./node_modules/lodash/_listCacheDelete.js","webpack://webpack-starter-basic/./node_modules/lodash/_listCacheGet.js","webpack://webpack-starter-basic/./node_modules/lodash/_listCacheHas.js","webpack://webpack-starter-basic/./node_modules/lodash/_listCacheSet.js","webpack://webpack-starter-basic/./node_modules/lodash/_overArg.js","webpack://webpack-starter-basic/./node_modules/lodash/_setToArray.js","webpack://webpack-starter-basic/./node_modules/lodash/eq.js","webpack://webpack-starter-basic/./node_modules/lodash/isArray.js","webpack://webpack-starter-basic/./node_modules/lodash/isBuffer.js","webpack://webpack-starter-basic/./node_modules/lodash/isEqual.js","webpack://webpack-starter-basic/./node_modules/lodash/isObjectLike.js","webpack://webpack-starter-basic/./node_modules/lodash/isTypedArray.js","webpack://webpack-starter-basic/./node_modules/lodash/uniqBy.js","webpack://webpack-starter-basic/./node_modules/lodash/uniqWith.js","webpack://webpack-starter-basic/./node_modules/promiscuous/dist/promiscuous-browser-shim-full.js","webpack://webpack-starter-basic/./src/app/components/improv-movie/back-to-top.pug","webpack://webpack-starter-basic/./src/app/components/search/search-results.template.pug","webpack://webpack-starter-basic/./src/app/widgets/movies/error-template.pug","webpack://webpack-starter-basic/./src/app/widgets/movies/improv.widget.pug","webpack://webpack-starter-basic/./src/app/widgets/movies/movies-coming-soon.widget.pug","webpack://webpack-starter-basic/./src/app/widgets/movies/movies-details-page.widget.pug","webpack://webpack-starter-basic/./src/app/widgets/movies/movies-now-playing.widget.pug","webpack://webpack-starter-basic/./node_modules/pug-runtime/index.js","webpack://webpack-starter-basic/./node_modules/scrolling-element/scrolling-element.js","webpack://webpack-starter-basic/webpack/bootstrap","webpack://webpack-starter-basic/webpack/runtime/compat get default export","webpack://webpack-starter-basic/webpack/runtime/define property getters","webpack://webpack-starter-basic/webpack/runtime/hasOwnProperty shorthand","webpack://webpack-starter-basic/./src/app/lib/ajax.js","webpack://webpack-starter-basic/./src/app/components/formulate/brite-verify-validation.js","webpack://webpack-starter-basic/./src/app/lib/polyfills.js","webpack://webpack-starter-basic/./src/app/lib/const.js","webpack://webpack-starter-basic/./src/app/lib/util.js","webpack://webpack-starter-basic/./src/app/services/body.js","webpack://webpack-starter-basic/./src/app/lib/domComponent.js","webpack://webpack-starter-basic/./src/app/components/search/search.js","webpack://webpack-starter-basic/./src/app/services/color-bars.js","webpack://webpack-starter-basic/./src/app/header/header.js","webpack://webpack-starter-basic/./src/app/footer/footer.js","webpack://webpack-starter-basic/./src/app/widgets/widget.base.js","webpack://webpack-starter-basic/./src/app/lib/featureDetection.js","webpack://webpack-starter-basic/./src/app/widgets/graphical-callout-carousel/graphical-callout-carousel.widget.js","webpack://webpack-starter-basic/./src/app/widgets/graphical-callout-grid/graphical-callout-grid.widget.js","webpack://webpack-starter-basic/./src/app/lib/dom.js","webpack://webpack-starter-basic/./src/app/components/accordion.js","webpack://webpack-starter-basic/./src/app/components/modal/modal.js","webpack://webpack-starter-basic/./src/app/services/carousel.js","webpack://webpack-starter-basic/./src/app/widgets/attraction-details/attraction-details.widget.js","webpack://webpack-starter-basic/./src/app/widgets/attraction-gallery/attraction-gallery.widget.js","webpack://webpack-starter-basic/./src/app/widgets/compound-callout-list/compound-callout-list.widget.js","webpack://webpack-starter-basic/./src/app/components/chat/chat.js","webpack://webpack-starter-basic/./src/app/services/back-to-top.js","webpack://webpack-starter-basic/./src/app/widgets/directory/directory.widget.js","webpack://webpack-starter-basic/./src/app/widgets/store-details/store-details.widget.js","webpack://webpack-starter-basic/./src/app/components/bg-img/bg-img.js","webpack://webpack-starter-basic/./src/app/forms/validation.js","webpack://webpack-starter-basic/./node_modules/animejs/lib/anime.es.js","webpack://webpack-starter-basic/./src/app/components/hero-color-bars.js","webpack://webpack-starter-basic/./src/app/widgets/hero/hero.widget.js","webpack://webpack-starter-basic/./src/app/widgets/graphical-banner/graphical-banner.widget.js","webpack://webpack-starter-basic/./src/app/widgets/featured-cards-callout-carousel/featured-cards-callout-carousel.widget.js","webpack://webpack-starter-basic/./src/app/widgets/news-carousel/news-carousel.widget.js","webpack://webpack-starter-basic/./src/app/services/animations.js","webpack://webpack-starter-basic/./src/app/services/movies.js","webpack://webpack-starter-basic/./src/app/widgets/movies/movies-now-playing.widget.js","webpack://webpack-starter-basic/./src/app/widgets/movies/movies-coming-soon.widget.js","webpack://webpack-starter-basic/./src/app/widgets/movies/movies-details-page.widget.js","webpack://webpack-starter-basic/./src/app/widgets/movies/improv.widget.js","webpack://webpack-starter-basic/./src/app/widgets/movies/movies-theater-features.widget.js","webpack://webpack-starter-basic/./src/app/components/emergency-alert/emergency-alert.js","webpack://webpack-starter-basic/./src/app/widgets/form/fields/_FormFieldComponent.js","webpack://webpack-starter-basic/./src/app/widgets/form/fields/ShortAnswerFormFieldComponent.js","webpack://webpack-starter-basic/./src/app/widgets/form/fields/LongAnswerFormFieldComponent.js","webpack://webpack-starter-basic/./src/app/widgets/form/fields/DateFormFieldComponent.js","webpack://webpack-starter-basic/./src/app/widgets/form/fields/DataConsentFormFieldComponent.js","webpack://webpack-starter-basic/./src/app/widgets/form/validators/_FieldValidator.js","webpack://webpack-starter-basic/./src/app/widgets/form/validators/ReCaptchaFieldValidator.js","webpack://webpack-starter-basic/./src/app/widgets/form/fields/ReCaptcha2FormFieldComponent.js","webpack://webpack-starter-basic/./src/app/widgets/form/fields/DropdownFormFieldComponent.js","webpack://webpack-starter-basic/./src/app/widgets/form/fields/SingleChoiceFormFieldComponent.js","webpack://webpack-starter-basic/./src/app/widgets/form/fields/MultipleChoiceFormFieldComponent.js","webpack://webpack-starter-basic/./src/app/widgets/form/fields/ChildInformationFormFieldComponent.js","webpack://webpack-starter-basic/./src/app/widgets/form/validators/RequiredFieldValidator.js","webpack://webpack-starter-basic/./src/app/widgets/form/validators/RegexFieldValidator.js","webpack://webpack-starter-basic/./src/app/widgets/form/validators/BriteVerifyFieldValidator.js","webpack://webpack-starter-basic/./src/app/widgets/form/validators/ChildInformationFieldValidator.js","webpack://webpack-starter-basic/./src/app/widgets/form/FormFieldHelper.js","webpack://webpack-starter-basic/./src/app/widgets/form/form.widget.js","webpack://webpack-starter-basic/./src/app/forms/forms.js","webpack://webpack-starter-basic/./src/app/curbside-to-go/curbside-to-go.js","webpack://webpack-starter-basic/./src/app/widgets/kids-birthday-club-form/kids-birthday-club-form.widget.js","webpack://webpack-starter-basic/./src/app/widgets/augmented-reality-experience/augmented-reality-experience.widget.js","webpack://webpack-starter-basic/./src/app/widgets/events-carousel/events-carousel.widget.js","webpack://webpack-starter-basic/./src/app/widgets/simple-graphical-callout-grid/simple-graphical-callout-grid.js","webpack://webpack-starter-basic/./src/app/components/tracking-events/tracking-events.js","webpack://webpack-starter-basic/./src/app/widgets/events-promotions-details/events-promotions-details.widget.js","webpack://webpack-starter-basic/./src/app/index.js"],"sourcesContent":["/**\r\n * Adds the dynamic behavior to the carousel (e.g., scrolling on click).\r\n */\r\nclass OfferCarouselSlider extends HTMLElement {\r\n activeClass = 'ww-offer-carousel__dot--active';\r\n instantScrollClass = 'ww-offer-carousel__slides--instant-scroll';\r\n slides;\r\n allSlides;\r\n slidesContainer;\r\n prev;\r\n next;\r\n dots;\r\n scrollTimeout;\r\n intersectionObserver;\r\n visibility = {\r\n before: {},\r\n original: {},\r\n after: {},\r\n };\r\n slideTypes = Object.keys(this.visibility);\r\n\r\n /**\r\n * This is called once the element has been connected to the DOM tree.\r\n * This is treated as an initialization function here.\r\n */\r\n connectedCallback() {\r\n this.storeElements();\r\n this.cloneSlides();\r\n this.observeSlides();\r\n this.configurePagers();\r\n this.setInitialPosition();\r\n this.listenForScrollCompletion();\r\n }\r\n\r\n /**\r\n * Ensures the original slides are the ones initially shown (rather than\r\n * the \"before\" slides).\r\n */\r\n setInitialPosition() {\r\n const firstOriginalSlide = this.slidesContainer.querySelector('[data-original=\"0\"]');\r\n this.scrollToSlide(firstOriginalSlide, true);\r\n }\r\n\r\n /**\r\n * Scrolls the carousel such that the specified slide will be the leftmost\r\n * visible slide.\r\n * @param slide The slide to scroll to.\r\n * @param instantly Should this be an instant or a smooth scroll?\r\n */\r\n scrollToSlide(slide, instantly) {\r\n if (slide) {\r\n // Temporarily disable smooth scrolling?\r\n if (instantly) {\r\n this.slidesContainer.classList.add(this.instantScrollClass);\r\n }\r\n\r\n // Scroll to the slide.\r\n this.slidesContainer.scrollLeft = slide.offsetLeft;\r\n\r\n // Re-enable smooth scrolling after the initial scroll?\r\n if (instantly) {\r\n setTimeout(() => {\r\n this.slidesContainer.classList.remove(this.instantScrollClass);\r\n }, 10);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Configure the event listeners for the pagers.\r\n */\r\n configurePagers() {\r\n this.next.addEventListener('click', this.handleNextClick.bind(this));\r\n this.prev.addEventListener('click', this.handlePrevClick.bind(this));\r\n }\r\n\r\n /**\r\n * Handle clicks of the \"Next\" pager.\r\n */\r\n handleNextClick() {\r\n const slide = this.getCurrentlyVisibleSlide().nextElementSibling;\r\n this.scrollToSlide(slide, false);\r\n }\r\n\r\n /**\r\n * Handle clicks of the \"Previous\" pager.\r\n */\r\n handlePrevClick() {\r\n const slide = this.getCurrentlyVisibleSlide().previousElementSibling;\r\n this.scrollToSlide(slide, false);\r\n }\r\n\r\n /**\r\n * Returns the currently visible slide (the one shown on the left of\r\n * the carousel).\r\n * @returns {Element} The slide.\r\n */\r\n getCurrentlyVisibleSlide() {\r\n for (const slideType of this.slideTypes) {\r\n for (const key in this.visibility[slideType]) {\r\n if (this.visibility[slideType][key]) {\r\n const selector = `[data-${slideType}=\"${key}\"]`;\r\n return this.querySelector(selector);\r\n }\r\n }\r\n }\r\n return this.querySelector('[data-original=\"0\"]');\r\n }\r\n\r\n /**\r\n * Does housekeeping in the idle periods between scrolling (e.g.,\r\n * resets the original slides when scrolled too far).\r\n */\r\n listenForScrollCompletion() {\r\n const onScroll = () => {\r\n if (this.scrollTimeout) {\r\n clearTimeout(this.scrollTimeout);\r\n }\r\n\r\n this.scrollTimeout = setTimeout(() => {\r\n requestAnimationFrame(() => {\r\n this.resetToOriginalSlides();\r\n });\r\n }, 100);\r\n };\r\n\r\n this.slidesContainer.addEventListener('scroll', onScroll);\r\n }\r\n\r\n /**\r\n * When the user has scrolled too far, reset the carousel so one of the original\r\n * slides is in the leftmost position.\r\n */\r\n resetToOriginalSlides() {\r\n const slide = this.getCurrentlyVisibleSlide();\r\n const slideType = this.getSlideType(slide);\r\n const slideIndex = parseInt(slide.dataset[slideType], 10);\r\n if (slideType !== 'original') {\r\n const selector = `[data-original=\"${slideIndex}\"]`;\r\n const originalSlide = this.querySelector(selector);\r\n this.scrollToSlide(originalSlide, true);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the type of the specified slide (i.e., before, original, after).\r\n * @param slide The slide.\r\n * @returns {string} The slide type.\r\n */\r\n getSlideType(slide) {\r\n let type;\r\n this.slideTypes.forEach(x => {\r\n if (slide.dataset.hasOwnProperty(x)) {\r\n type = x;\r\n }\r\n });\r\n return type || 'original';\r\n }\r\n\r\n /**\r\n * Observes when the slides become visible/invisible so the dots can be updated\r\n * to represent that visibility.\r\n */\r\n observeSlides() {\r\n // Create intersection observer.\r\n this.intersectionObserver = new IntersectionObserver((entries) => {\r\n\r\n // Store the changes in visibility to a single object that is aware of\r\n // the current visibility of each slide.\r\n entries.forEach((entry) => {\r\n const target = entry.target;\r\n const dataset = target.dataset;\r\n const index = dataset.before || dataset.original || dataset.after;\r\n const type = this.getSlideType(target);\r\n this.visibility[type][index] = entry.isIntersecting;\r\n });\r\n\r\n // Mark every dot as not active by default.\r\n this.dots.forEach(x => x.classList.remove(this.activeClass));\r\n\r\n // Mark dots as active if any of the slides corresponding to them are visible.\r\n this.slideTypes.forEach(type => {\r\n Object.keys(this.visibility[type]).forEach(x => {\r\n const selector = `[data-dot=\"${x}\"]`;\r\n const classList = this.querySelector(selector).classList;\r\n if (this.visibility[type][x]) {\r\n classList.add(this.activeClass);\r\n }\r\n });\r\n });\r\n }, {\r\n // Slides must be 90% visible to be considered visible. Edge\r\n // doesn't like when 100% is used.\r\n threshold: 0.9,\r\n // Set visibility with respect to the widget itself (otherwise,\r\n // scrolling the page could cause visibility to change).\r\n root: this,\r\n });\r\n\r\n // Observe changes to any of the slides (whether they are original slides\r\n // or cloned slides).\r\n this.allSlides.forEach((slide) => {\r\n this.intersectionObserver.observe(slide);\r\n });\r\n }\r\n\r\n /**\r\n * Clones the slides to facilitate the circular nature of the carousel.\r\n */\r\n cloneSlides() {\r\n const firstSlide = this.slides[0];\r\n\r\n // Clone and insert the \"before\" slides.\r\n this.slides.forEach((slide, index) => {\r\n const prevClone = slide.cloneNode(true);\r\n prevClone.setAttribute('data-before', index);\r\n // Disable tabbing to the cloned slides.\r\n prevClone.setAttribute('tabindex', '-1');\r\n this.slidesContainer.insertBefore(prevClone, firstSlide);\r\n });\r\n\r\n // Clone and insert the \"after\" slides, and set the \"original\" attribute.\r\n this.slides.forEach((slide, index) => {\r\n const nextClone = slide.cloneNode(true);\r\n nextClone.setAttribute('data-after', index);\r\n // Disable tabbing to the cloned slides.\r\n nextClone.setAttribute('tabindex', '-1');\r\n this.slidesContainer.appendChild(nextClone);\r\n slide.setAttribute('data-original', index);\r\n });\r\n\r\n // Store all slides (including the clones).\r\n this.allSlides = this.querySelectorAll('[data-slide]');\r\n }\r\n\r\n /**\r\n * Query the carousel for the elements within it that will need to be\r\n * referred to within the JavaScript.\r\n */\r\n storeElements() {\r\n this.slides = this.querySelectorAll('[data-slide]');\r\n this.slidesContainer = this.querySelector('[data-slides-container]');\r\n this.prev = this.querySelector('[data-pager-prev]');\r\n this.next = this.querySelector('[data-pager-next]');\r\n this.dots = this.querySelectorAll('[data-dot]');\r\n }\r\n}\r\n\r\n// Define the custom element for the carousel.\r\nwindow.customElements.define('offer-carousel-slider', OfferCarouselSlider);","/**\r\n * Adds the dynamic behavior to the carousel (e.g., scrolling on click).\r\n */\r\nclass ProductCarouselSlider extends HTMLElement {\r\n instantScrollClass = 'ww-product-carousel__slides--instant-scroll';\r\n slides;\r\n allSlides;\r\n slidesContainer;\r\n prev;\r\n next;\r\n scrollTimeout;\r\n intersectionObserver;\r\n visibility = {\r\n before: {},\r\n original: {},\r\n after: {},\r\n };\r\n slideTypes = Object.keys(this.visibility);\r\n\r\n /**\r\n * This is called once the element has been connected to the DOM tree.\r\n * This is treated as an initialization function here.\r\n */\r\n connectedCallback() {\r\n this.storeElements();\r\n this.cloneSlides();\r\n this.observeSlides();\r\n this.configurePagers();\r\n this.setInitialPosition();\r\n this.listenForScrollCompletion();\r\n }\r\n\r\n /**\r\n * Ensures the original slides are the ones initially shown (rather than\r\n * the \"before\" slides).\r\n */\r\n setInitialPosition() {\r\n const firstOriginalSlide = this.slidesContainer.querySelector('[data-original=\"0\"]');\r\n this.scrollToSlide(firstOriginalSlide, true);\r\n }\r\n\r\n /**\r\n * Scrolls the carousel such that the specified slide will be the leftmost\r\n * visible slide.\r\n * @param slide The slide to scroll to.\r\n * @param instantly Should this be an instant or a smooth scroll?\r\n */\r\n scrollToSlide(slide, instantly) {\r\n if (slide) {\r\n // Temporarily disable smooth scrolling?\r\n if (instantly) {\r\n this.slidesContainer.classList.add(this.instantScrollClass);\r\n }\r\n\r\n // Scroll to the slide.\r\n this.slidesContainer.scrollLeft = slide.offsetLeft;\r\n\r\n // Re-enable smooth scrolling after the initial scroll?\r\n if (instantly) {\r\n setTimeout(() => {\r\n this.slidesContainer.classList.remove(this.instantScrollClass);\r\n }, 10);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Configure the event listeners for the pagers.\r\n */\r\n configurePagers() {\r\n this.next.addEventListener('click', this.handleNextClick.bind(this));\r\n this.prev.addEventListener('click', this.handlePrevClick.bind(this));\r\n }\r\n\r\n /**\r\n * Handle clicks of the \"Next\" pager.\r\n */\r\n handleNextClick() {\r\n const slide = this.getCurrentlyVisibleSlide().nextElementSibling;\r\n this.scrollToSlide(slide, false);\r\n }\r\n\r\n /**\r\n * Handle clicks of the \"Previous\" pager.\r\n */\r\n handlePrevClick() {\r\n const slide = this.getCurrentlyVisibleSlide().previousElementSibling;\r\n this.scrollToSlide(slide, false);\r\n }\r\n\r\n /**\r\n * Returns the currently visible slide (the one shown on the left of\r\n * the carousel).\r\n * @returns {Element} The slide.\r\n */\r\n getCurrentlyVisibleSlide() {\r\n let foundSlide;\r\n for (const slideType of this.slideTypes) {\r\n for (const key in this.visibility[slideType]) {\r\n if (this.visibility[slideType][key]) {\r\n const selector = `[data-${slideType}=\"${key}\"]`;\r\n return this.querySelector(selector);\r\n }\r\n }\r\n }\r\n return this.querySelector('[data-original=\"0\"]');\r\n }\r\n\r\n /**\r\n * Does housekeeping in the idle periods between scrolling (e.g.,\r\n * resets the original slides when scrolled too far).\r\n */\r\n listenForScrollCompletion() {\r\n const onScroll = () => {\r\n if (this.scrollTimeout) {\r\n clearTimeout(this.scrollTimeout);\r\n }\r\n\r\n this.scrollTimeout = setTimeout(() => {\r\n requestAnimationFrame(() => {\r\n this.resetToOriginalSlides();\r\n });\r\n }, 100);\r\n };\r\n\r\n this.slidesContainer.addEventListener('scroll', onScroll);\r\n }\r\n\r\n /**\r\n * When the user has scrolled too far, reset the carousel so one of the original\r\n * slides is in the leftmost position.\r\n */\r\n resetToOriginalSlides() {\r\n const slide = this.getCurrentlyVisibleSlide();\r\n const slideType = this.getSlideType(slide);\r\n const slideIndex = parseInt(slide.dataset[slideType], 10);\r\n if (slideType !== 'original') {\r\n const selector = `[data-original=\"${slideIndex}\"]`;\r\n const originalSlide = this.querySelector(selector);\r\n this.scrollToSlide(originalSlide, true);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the type of the specified slide (i.e., before, original, after).\r\n * @param slide The slide.\r\n * @returns {string} The slide type.\r\n */\r\n getSlideType(slide) {\r\n let type;\r\n this.slideTypes.forEach(x => {\r\n if (slide.dataset.hasOwnProperty(x)) {\r\n type = x;\r\n }\r\n });\r\n return type || 'original';\r\n }\r\n\r\n /**\r\n * Observes when the slides become visible/invisible.\r\n */\r\n observeSlides() {\r\n // Create intersection observer.\r\n this.intersectionObserver = new IntersectionObserver((entries) => {\r\n\r\n // Store the changes in visibility to a single object that is aware of\r\n // the current visibility of each slide.\r\n entries.forEach((entry) => {\r\n const target = entry.target;\r\n const dataset = target.dataset;\r\n const index = dataset.before || dataset.original || dataset.after;\r\n const type = this.getSlideType(target);\r\n this.visibility[type][index] = entry.isIntersecting;\r\n });\r\n }, {\r\n // Slides must be 90% visible to be considered visible. Edge\r\n // doesn't like when 100% is used.\r\n threshold: 0.9,\r\n // Set visibility with respect to the widget itself (otherwise,\r\n // scrolling the page could cause visibility to change).\r\n root: this,\r\n });\r\n\r\n // Observe changes to any of the slides (whether they are original slides\r\n // or cloned slides).\r\n this.allSlides.forEach((slide) => {\r\n this.intersectionObserver.observe(slide);\r\n });\r\n }\r\n\r\n /**\r\n * Clones the slides to facilitate the circular nature of the carousel.\r\n */\r\n cloneSlides() {\r\n const firstSlide = this.slides[0];\r\n\r\n // Clone and insert the \"before\" slides.\r\n this.slides.forEach((slide, index) => {\r\n const prevClone = slide.cloneNode(true);\r\n prevClone.setAttribute('data-before', index);\r\n // Disable tabbing to the cloned slides.\r\n prevClone.setAttribute('tabindex', '-1');\r\n this.slidesContainer.insertBefore(prevClone, firstSlide);\r\n });\r\n\r\n // Clone and insert the \"after\" slides, and set the \"original\" attribute.\r\n this.slides.forEach((slide, index) => {\r\n const nextClone = slide.cloneNode(true);\r\n nextClone.setAttribute('data-after', index);\r\n // Disable tabbing to the cloned slides.\r\n nextClone.setAttribute('tabindex', '-1');\r\n this.slidesContainer.appendChild(nextClone);\r\n slide.setAttribute('data-original', index);\r\n });\r\n\r\n // Store all slides (including the clones).\r\n this.allSlides = this.querySelectorAll('[data-slide]');\r\n }\r\n\r\n /**\r\n * Query the carousel for the elements within it that will need to be\r\n * referred to within the JavaScript.\r\n */\r\n storeElements() {\r\n this.slides = this.querySelectorAll('[data-slide]');\r\n this.slidesContainer = this.querySelector('[data-slides-container]');\r\n this.prev = this.querySelector('[data-pager-prev]');\r\n this.next = this.querySelector('[data-pager-next]');\r\n }\r\n}\r\n\r\n// Define the custom element for the carousel.\r\nwindow.customElements.define('product-carousel-slider', ProductCarouselSlider);","// Dependencies.\r\nlet FieldUtility = require(\"../utils/field\");\r\n\r\n/**\r\n * Renders a submit button.\r\n * @param fieldData The field data that should be used to render the button.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param cssClasses The CSS classes to attach to the element.\r\n * @param extraOptions Additional options that are less commonly used.\r\n * @constructor\r\n */\r\nfunction RenderButton(fieldData, fieldValidators, cssClasses, extraOptions) {\r\n\r\n // Initialize field.\r\n FieldUtility.initializeField(this, fieldData, fieldValidators, {\r\n nodeName: \"button\",\r\n type: \"submit\",\r\n cssClasses: cssClasses,\r\n usePlaceholder: false,\r\n useLabel: false\r\n });\r\n\r\n // Add text to button.\r\n this.element.appendChild(document.createTextNode(fieldData.label));\r\n\r\n // Store instance variables.\r\n this.formElement = extraOptions.formElement;\r\n this.buttonKind = fieldData.configuration.buttonKind;\r\n\r\n // Listen for form events.\r\n this.listenForSubmit();\r\n this.listenForFailureEvents();\r\n\r\n}\r\n\r\n/**\r\n * Listens for failure events on the form (in which case the button should be enabled again).\r\n */\r\nRenderButton.prototype.listenForFailureEvents = function () {\r\n let formElement = this.formElement,\r\n element = this.element,\r\n handleError = function () {\r\n element.disabled = false;\r\n };\r\n formElement.addEventListener(\"formulate: submit: validation errors\", handleError, true);\r\n formElement.addEventListener(\"formulate form: submit: failure\", handleError, true);\r\n formElement.addEventListener(\"formulate: submit: cancelled\", handleError, true);\r\n};\r\n\r\n/**\r\n * Listens for submit events on the form (in which case the button should be disabled).\r\n */\r\nRenderButton.prototype.listenForSubmit = function () {\r\n let self = this;\r\n self.formElement.addEventListener(\"formulate: submit: started\", function () {\r\n self.element.disabled = true;\r\n }, true);\r\n};\r\n\r\n/**\r\n * Returns the DOM element for the button.\r\n * @returns {HTMLDivElement} The DOM element for the button.\r\n */\r\nRenderButton.prototype.getElement = function () {\r\n return this.wrapper;\r\n};\r\n\r\n/**\r\n * Returns the kind of button.\r\n * @returns {string} The kind of button, or null.\r\n */\r\nRenderButton.prototype.getButtonKind = function () {\r\n return this.buttonKind;\r\n};\r\n\r\n/**\r\n * Ensure the prototype has the necessary functions.\r\n */\r\nFieldUtility.initializeFieldPrototype(RenderButton.prototype);\r\n\r\n// Export the field renderer configuration.\r\nmodule.exports = {\r\n key: \"button\",\r\n renderer: RenderButton\r\n};","// Dependencies.\r\nlet FieldUtility = require(\"../utils/field\");\r\n\r\n/**\r\n * Renders a checkbox list field.\r\n * @param fieldData The field data that should be used to render the checkbox list field.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param cssClasses The CSS classes to attach to the element.\r\n * @constructor\r\n */\r\nfunction RenderCheckboxList(fieldData, fieldValidators, cssClasses) {\r\n\r\n // Variables.\r\n let items = fieldData.configuration.items, i, item, label, value, wrapperElement, elements = [],\r\n labelElement;\r\n\r\n // Add each checkbox.\r\n for (i = 0; i < items.length; i++) {\r\n\r\n // Variables.\r\n item = items[i];\r\n value = item.value;\r\n label = item.label;\r\n\r\n // Add checkbox.\r\n FieldUtility.initializeField(this, fieldData, fieldValidators, {\r\n type: \"checkbox\",\r\n cssClasses: cssClasses,\r\n usePlaceholder: false,\r\n wrapperElement: wrapperElement,\r\n nestFieldInLabel: true,\r\n value: value,\r\n label: label,\r\n wrapLabelText: true,\r\n fieldBeforeLabelText: true\r\n });\r\n\r\n // Remember wrapper element for next iteration.\r\n wrapperElement = this.wrapper;\r\n\r\n // Remember the checkbox input element.\r\n elements.push(this.element);\r\n\r\n // Add a label if it hasn't been added yet.\r\n if (!labelElement) {\r\n labelElement = document.createElement(\"label\");\r\n labelElement.classList.add(\"formulate__field__label\");\r\n labelElement.classList.add(\"formulate__field__label--group\");\r\n labelElement.appendChild(document.createTextNode(fieldData.label));\r\n wrapperElement.insertBefore(labelElement, this.element.parentNode);\r\n }\r\n\r\n }\r\n\r\n // Set instance variables.\r\n this.elements = elements;\r\n\r\n}\r\n\r\n/**\r\n * Returns the DOM element that wraps the checkboxes.\r\n * @returns {HTMLDivElement} The DOM element that wraps the checkboxes.\r\n */\r\nRenderCheckboxList.prototype.getElement = function () {\r\n return this.wrapper;\r\n};\r\n\r\n/**\r\n * Adds the data for this field on the specified FormData instance.\r\n * @param data {FormData} The FormData instance to set the field data on.\r\n * @param options {{rawDataByAlias: boolean}} Optional. The options for setting the data.\r\n */\r\nRenderCheckboxList.prototype.setData = function (data, options) {\r\n let i, element;\r\n for (i = 0; i < this.elements.length; i++) {\r\n element = this.elements[i];\r\n if (element.checked) {\r\n FieldUtility.setData(data, element.value, options, this.alias, this.id);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Checks the validity of the value in this field (adding inline validation messages if necessary).\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nRenderCheckboxList.prototype.checkValidity = function () {\r\n let values = this.elements\r\n .filter(function (element) {\r\n return element.checked;\r\n })\r\n .map(function (element) {\r\n return element.checked\r\n ? element.value\r\n : null;\r\n });\r\n return require(\"../utils/validation\")\r\n .checkTextArrayValidity(this, this.validators, values, this.wrapper);\r\n};\r\n\r\n/**\r\n * Ensure the prototype has the necessary functions.\r\n */\r\nFieldUtility.initializeFieldPrototype(RenderCheckboxList.prototype);\r\n\r\n// Export the field renderer configuration.\r\nmodule.exports = {\r\n key: \"checkbox-list\",\r\n renderer: RenderCheckboxList\r\n};","// Dependencies.\r\nlet FieldUtility = require(\"../utils/field\");\r\n\r\n/**\r\n * Renders a checkbox field.\r\n * @param fieldData The field data that should be used to render the checkbox field.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param cssClasses The CSS classes to attach to the element.\r\n * @constructor\r\n */\r\nfunction RenderCheckbox(fieldData, fieldValidators, cssClasses) {\r\n FieldUtility.initializeField(this, fieldData, fieldValidators, {\r\n type: \"checkbox\",\r\n cssClasses: cssClasses,\r\n usePlaceholder: false\r\n });\r\n}\r\n\r\n/**\r\n * Returns the DOM element for the checkbox field.\r\n * @returns {HTMLDivElement} The DOM element for the checkbox field.\r\n */\r\nRenderCheckbox.prototype.getElement = function () {\r\n return this.wrapper;\r\n};\r\n\r\n/**\r\n * Adds the data for this field on the specified FormData instance.\r\n * @param data {FormData} The FormData instance to set the field data on.\r\n * @param options {{rawDataByAlias: boolean}} Optional. The options for setting the data.\r\n */\r\nRenderCheckbox.prototype.setData = function (data, options) {\r\n FieldUtility.setData(data, this.element.checked, options, this.alias, this.id);\r\n};\r\n\r\n/**\r\n * Checks the validity of the value in this field (adding inline validation messages if necessary).\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nRenderCheckbox.prototype.checkValidity = function () {\r\n return require(\"../utils/validation\")\r\n .checkBoolValidity(this, this.validators, this.element.checked, this.wrapper);\r\n};\r\n\r\n/**\r\n * Ensure the prototype has the necessary functions.\r\n */\r\nFieldUtility.initializeFieldPrototype(RenderCheckbox.prototype);\r\n\r\n// Export the field renderer configuration.\r\nmodule.exports = {\r\n key: \"checkbox\",\r\n renderer: RenderCheckbox\r\n};","// Dependencies.\r\nlet FieldUtility = require(\"../utils/field\");\r\n\r\n/**\r\n * Renders a date field.\r\n * @param fieldData The field data that should be used to render the date field.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param cssClasses The CSS classes to attach to the element.\r\n * @constructor\r\n */\r\nfunction RenderDate(fieldData, fieldValidators, cssClasses) {\r\n FieldUtility.initializeField(this, fieldData, fieldValidators, {\r\n type: \"date\",\r\n cssClasses: cssClasses\r\n });\r\n}\r\n\r\n/**\r\n * Returns the DOM element for the date field.\r\n * @returns {HTMLDivElement} The DOM element for the date field.\r\n */\r\nRenderDate.prototype.getElement = function () {\r\n return this.wrapper;\r\n};\r\n\r\n/**\r\n * Adds the data for this field on the specified FormData instance.\r\n * @param data {FormData} The FormData instance to set the field data on.\r\n * @param options {{rawDataByAlias: boolean}} Optional. The options for setting the data.\r\n */\r\nRenderDate.prototype.setData = function (data, options) {\r\n FieldUtility.setData(data, this.element.value, options, this.alias, this.id);\r\n};\r\n\r\n/**\r\n * Checks the validity of the value in this field (adding inline validation messages if necessary).\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nRenderDate.prototype.checkValidity = function () {\r\n return require(\"../utils/validation\")\r\n .checkTextValidity(this, this.validators, this.element.value, this.wrapper);\r\n};\r\n\r\n/**\r\n * Ensure the prototype has the necessary functions.\r\n */\r\nFieldUtility.initializeFieldPrototype(RenderDate.prototype);\r\n\r\n// Export the field renderer configuration.\r\nmodule.exports = {\r\n key: \"date\",\r\n renderer: RenderDate\r\n};","// Dependencies.\r\nlet FieldUtility = require(\"../utils/field\");\r\n\r\n/**\r\n * Renders an extended radio button list field.\r\n * @param fieldData The field data that should be used to render the radio button list field.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param cssClasses The CSS classes to attach to the element.\r\n * @constructor\r\n */\r\nfunction RenderRadioList(fieldData, fieldValidators, cssClasses) {\r\n\r\n // Variables.\r\n let i, item, primary, secondary, wrapperElement, labelElement,\r\n elements = [],\r\n items = fieldData.configuration.items,\r\n name = FieldUtility.generateId(\"radio-button-list-\");\r\n\r\n // Add each radio button.\r\n for (i = 0; i < items.length; i++) {\r\n\r\n // Variables.\r\n item = items[i];\r\n primary = item.primary;\r\n secondary = item.secondary;\r\n\r\n // Add radio button.\r\n FieldUtility.initializeField(this, fieldData, fieldValidators, {\r\n type: \"radio\",\r\n cssClasses: cssClasses,\r\n usePlaceholder: false,\r\n wrapperElement: wrapperElement,\r\n nestFieldInLabel: true,\r\n value: primary,\r\n label: primary,\r\n label2: secondary,\r\n wrapLabelText: true,\r\n fieldBeforeLabelText: true,\r\n name: name\r\n });\r\n\r\n // Remember wrapper element for next iteration.\r\n wrapperElement = this.wrapper;\r\n\r\n // Remember the radio button input element.\r\n elements.push(this.element);\r\n\r\n // Add a label if it hasn't been added yet.\r\n if (!labelElement) {\r\n labelElement = document.createElement(\"label\");\r\n labelElement.classList.add(\"formulate__field__label\");\r\n labelElement.classList.add(\"formulate__field__label--group\");\r\n labelElement.appendChild(document.createTextNode(fieldData.label));\r\n wrapperElement.insertBefore(labelElement, this.element.parentNode);\r\n }\r\n\r\n }\r\n\r\n // Set instance variables.\r\n this.elements = elements;\r\n\r\n}\r\n\r\n/**\r\n * Returns the DOM element that wraps the radio buttons.\r\n * @returns {HTMLDivElement} The DOM element that wraps the radio buttons.\r\n */\r\nRenderRadioList.prototype.getElement = function () {\r\n return this.wrapper;\r\n};\r\n\r\n/**\r\n * Adds the data for this field on the specified FormData instance.\r\n * @param data {FormData} The FormData instance to set the field data on.\r\n * @param options {{rawDataByAlias: boolean}} Optional. The options for setting the data.\r\n */\r\nRenderRadioList.prototype.setData = function (data, options) {\r\n let i, element;\r\n for (i = 0; i < this.elements.length; i++) {\r\n element = this.elements[i];\r\n if (element.checked) {\r\n FieldUtility.setData(data, element.value, options, this.alias, this.id);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Checks the validity of the value in this field (adding inline validation messages if necessary).\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nRenderRadioList.prototype.checkValidity = function () {\r\n let value,\r\n values = this.elements\r\n .filter(function (element) {\r\n return element.checked;\r\n })\r\n .map(function (element) {\r\n return element.checked\r\n ? element.value\r\n : null;\r\n });\r\n if (values.length) {\r\n value = values[0];\r\n } else {\r\n value = null;\r\n }\r\n return require(\"../utils/validation\")\r\n .checkTextValidity(this, this.validators, value, this.wrapper);\r\n};\r\n\r\n/**\r\n * Ensure the prototype has the necessary functions.\r\n */\r\nFieldUtility.initializeFieldPrototype(RenderRadioList.prototype);\r\n\r\n// Export the field renderer configuration.\r\nmodule.exports = {\r\n key: \"extended-radio-list\",\r\n renderer: RenderRadioList\r\n};","// Dependencies.\r\nlet FieldUtility = require(\"../utils/field\");\r\n\r\n/**\r\n * Renders a header.\r\n * @param fieldData The field data that should be used to render the header.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param cssClasses The CSS classes to attach to the element.\r\n * @constructor\r\n */\r\nfunction RenderHeader(fieldData, fieldValidators, cssClasses) {\r\n\r\n // Initialize field.\r\n FieldUtility.initializeField(this, fieldData, fieldValidators, {\r\n nodeName: \"h2\",\r\n cssClasses: cssClasses,\r\n usePlaceholder: false,\r\n useLabel: false,\r\n useWrapper: false\r\n });\r\n\r\n // Add text to element.\r\n this.element.appendChild(document.createTextNode(fieldData.configuration.text));\r\n\r\n}\r\n\r\n/**\r\n * Returns the DOM element for the header.\r\n * @returns {HTMLButtonElement} The DOM element for the header.\r\n */\r\nRenderHeader.prototype.getElement = function () {\r\n return this.element;\r\n};\r\n\r\n/**\r\n * Ensure the prototype has the necessary functions.\r\n */\r\nFieldUtility.initializeFieldPrototype(RenderHeader.prototype);\r\n\r\n// Export the field renderer configuration.\r\nmodule.exports = {\r\n key: \"header\",\r\n renderer: RenderHeader\r\n};","// Dependencies.\r\nlet FieldUtility = require(\"../utils/field\");\r\n\r\n/**\r\n * Renders a hidden field.\r\n * @param fieldData The field data that should be used to render the hidden field.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param cssClasses The CSS classes to attach to the element.\r\n * @constructor\r\n */\r\nfunction RenderHidden(fieldData, fieldValidators, cssClasses) {\r\n FieldUtility.initializeField(this, fieldData, fieldValidators, {\r\n type: \"hidden\",\r\n cssClasses: cssClasses,\r\n useLabel: false\r\n });\r\n}\r\n\r\n/**\r\n * Returns the DOM element for the hidden field.\r\n * @returns {HTMLDivElement} The DOM element for the hidden field.\r\n */\r\nRenderHidden.prototype.getElement = function () {\r\n return this.wrapper;\r\n};\r\n\r\n/**\r\n * Adds the data for this field on the specified FormData instance.\r\n * @param data {FormData} The FormData instance to set the field data on.\r\n * @param options {{rawDataByAlias: boolean}} Optional. The options for setting the data.\r\n */\r\nRenderHidden.prototype.setData = function (data, options) {\r\n FieldUtility.setData(data, this.element.value, options, this.alias, this.id);\r\n};\r\n\r\n/**\r\n * Checks the validity of the value in this field (adding inline validation messages if necessary).\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nRenderHidden.prototype.checkValidity = function () {\r\n return require(\"../utils/validation\")\r\n .checkTextValidity(this, this.validators, this.element.value, this.wrapper);\r\n};\r\n\r\n/**\r\n * Ensure the prototype has the necessary functions.\r\n */\r\nFieldUtility.initializeFieldPrototype(RenderHidden.prototype);\r\n\r\n// Export the field renderer configuration.\r\nmodule.exports = {\r\n key: \"hidden\",\r\n renderer: RenderHidden\r\n};","// Dependencies.\r\nlet FieldUtility = require(\"../utils/field\");\r\n\r\n/**\r\n * Renders a radio button list field.\r\n * @param fieldData The field data that should be used to render the radio button list field.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param cssClasses The CSS classes to attach to the element.\r\n * @constructor\r\n */\r\nfunction RenderRadioList(fieldData, fieldValidators, cssClasses) {\r\n\r\n // Variables.\r\n let i, item, label, value, wrapperElement, labelElement,\r\n elements = [],\r\n items = fieldData.configuration.items,\r\n name = FieldUtility.generateId(\"radio-button-list-\");\r\n\r\n // Add each radio button.\r\n for (i = 0; i < items.length; i++) {\r\n\r\n // Variables.\r\n item = items[i];\r\n value = item.value;\r\n label = item.label;\r\n\r\n // Add radio button.\r\n FieldUtility.initializeField(this, fieldData, fieldValidators, {\r\n type: \"radio\",\r\n cssClasses: cssClasses,\r\n usePlaceholder: false,\r\n wrapperElement: wrapperElement,\r\n nestFieldInLabel: true,\r\n value: value,\r\n label: label,\r\n wrapLabelText: true,\r\n fieldBeforeLabelText: true,\r\n name: name\r\n });\r\n\r\n // Remember wrapper element for next iteration.\r\n wrapperElement = this.wrapper;\r\n\r\n // Remember the radio button input element.\r\n elements.push(this.element);\r\n\r\n // Add a label if it hasn't been added yet.\r\n if (!labelElement) {\r\n labelElement = document.createElement(\"label\");\r\n labelElement.classList.add(\"formulate__field__label\");\r\n labelElement.classList.add(\"formulate__field__label--group\");\r\n labelElement.appendChild(document.createTextNode(fieldData.label));\r\n wrapperElement.insertBefore(labelElement, this.element.parentNode);\r\n }\r\n\r\n }\r\n\r\n // Set instance variables.\r\n this.elements = elements;\r\n\r\n}\r\n\r\n/**\r\n * Returns the DOM element that wraps the radio buttons.\r\n * @returns {HTMLDivElement} The DOM element that wraps the radio buttons.\r\n */\r\nRenderRadioList.prototype.getElement = function () {\r\n return this.wrapper;\r\n};\r\n\r\n/**\r\n * Adds the data for this field on the specified FormData instance.\r\n * @param data {FormData} The FormData instance to set the field data on.\r\n * @param options {{rawDataByAlias: boolean}} Optional. The options for setting the data.\r\n */\r\nRenderRadioList.prototype.setData = function (data, options) {\r\n let i, element;\r\n for (i = 0; i < this.elements.length; i++) {\r\n element = this.elements[i];\r\n if (element.checked) {\r\n FieldUtility.setData(data, element.value, options, this.alias, this.id);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Checks the validity of the value in this field (adding inline validation messages if necessary).\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nRenderRadioList.prototype.checkValidity = function () {\r\n let value,\r\n values = this.elements\r\n .filter(function (element) {\r\n return element.checked;\r\n })\r\n .map(function (element) {\r\n return element.checked\r\n ? element.value\r\n : null;\r\n });\r\n if (values.length) {\r\n value = values[0];\r\n } else {\r\n value = null;\r\n }\r\n return require(\"../utils/validation\")\r\n .checkTextValidity(this, this.validators, value, this.wrapper);\r\n};\r\n\r\n/**\r\n * Ensure the prototype has the necessary functions.\r\n */\r\nFieldUtility.initializeFieldPrototype(RenderRadioList.prototype);\r\n\r\n// Export the field renderer configuration.\r\nmodule.exports = {\r\n key: \"radio-list\",\r\n renderer: RenderRadioList\r\n};","// Dependencies.\r\nlet FieldUtility = require(\"../utils/field\"),\r\n AddClasses = require(\"../utils/add-classes\"),\r\n Validation = require(\"../utils/validation\");\r\n\r\n// Variables.\r\nlet scriptInjected = false;\r\n\r\n/**\r\n * Renders a recaptcha field.\r\n * @param fieldData The field data that should be used to render the recaptcha field.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param cssClasses The CSS classes to attach to the element.\r\n * @constructor\r\n */\r\nfunction RenderRecaptcha(fieldData, fieldValidators, cssClasses) {\r\n\r\n // Notify the developer if they haven't configured recaptcha in the web.config yet.\r\n if (!fieldData.configuration.key) {\r\n\r\n // Using eval so build tools are less likely to remove this line.\r\n eval(\"alert('The reCAPTCHA keys need to be configured in the web.config. They should already be there; you just need to fill in the values.');\");\r\n\r\n }\r\n\r\n // Create field and attach classes/attributes.\r\n let el = document.createElement(\"div\");\r\n el.classList.add(\"g-recaptcha\");\r\n el.setAttribute(\"data-sitekey\", fieldData.configuration.key);\r\n if (cssClasses) {\r\n AddClasses(el, cssClasses);\r\n }\r\n\r\n // Retain field and ID for later reference.\r\n this.wrapper = el;\r\n this.id = fieldData.id;\r\n\r\n // Ensure there is at least one validator (to ensure the recaptcha is solved).\r\n let fieldValidations = this.ensureValidator(fieldData.validations);\r\n\r\n // Prepare the validators and retain them for later use.\r\n this.validators = Validation.prepareValidators(fieldValidations, fieldValidators);\r\n\r\n // Inject the Google Recaptcha JavaScript if it hasn't been added to the page yet.\r\n this.ensureGoogleScript();\r\n\r\n}\r\n\r\n/**\r\n * Ensures that there is at least one validator for the recaptcha.\r\n * @param validations {Array<{}>} The validations that have been specified on the field already.\r\n * @returns {Array<{}>} The specified validations, or an array containing a single newly created validation.\r\n */\r\nRenderRecaptcha.prototype.ensureValidator = function (validations) {\r\n if (!validations.length) {\r\n return [{\r\n alias: \"recaptchaRequired\",\r\n configuration: {\r\n message: \"Please solve the recaptcha.\"\r\n },\r\n validationType: \"required\"\r\n }];\r\n } else {\r\n return validations;\r\n }\r\n};\r\n\r\n/**\r\n * Ensures the Google Recaptcha script is injected.\r\n */\r\nRenderRecaptcha.prototype.ensureGoogleScript = function () {\r\n\r\n // If the script was already injected, exit early.\r\n if (scriptInjected || typeof(grecaptcha) !== \"undefined\") {\r\n scriptInjected = true;\r\n return;\r\n }\r\n\r\n\r\n // Inject the script.\r\n let script = document.createElement(\"script\");\r\n script.src = \"https://www.google.com/recaptcha/api.js\";\r\n script.async = true;\r\n document.head.appendChild(script);\r\n scriptInjected = true;\r\n\r\n};\r\n\r\n/**\r\n * Returns the DOM element for the recaptcha field.\r\n * @returns {HTMLDivElement} The DOM element for the recaptcha field.\r\n */\r\nRenderRecaptcha.prototype.getElement = function () {\r\n return this.wrapper;\r\n};\r\n\r\n/**\r\n * Returns the DOM element for the recaptcha field.\r\n * @returns {HTMLDivElement} The DOM element that wraps the recaptcha field.\r\n */\r\nRenderRecaptcha.prototype.getHiddenElement = function () {\r\n return this.wrapper.querySelector(\"[name='g-recaptcha-response']\");\r\n};\r\n\r\n/**\r\n * Adds the data for this field on the specified FormData instance.\r\n * @param data {FormData} The FormData instance to set the field data on.\r\n * @param options {{rawDataByAlias: boolean}} Optional. The options for setting the data.\r\n */\r\nRenderRecaptcha.prototype.setData = function (data, options) {\r\n let element = this.getHiddenElement(),\r\n value = element\r\n ? element.value\r\n : null;\r\n FieldUtility.setData(data, value, options, this.alias, this.id);\r\n};\r\n\r\n/**\r\n * Checks the validity of the value in this field (adding inline validation messages if necessary).\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nRenderRecaptcha.prototype.checkValidity = function () {\r\n let element = this.getHiddenElement(),\r\n value = element\r\n ? element.value\r\n : null;\r\n return require(\"../utils/validation\")\r\n .checkTextValidity(this, this.validators, value, this.wrapper);\r\n};\r\n\r\n/**\r\n * Ensure the prototype has the necessary functions.\r\n */\r\nFieldUtility.initializeFieldPrototype(RenderRecaptcha.prototype);\r\n\r\n// Export the field renderer configuration.\r\nmodule.exports = {\r\n key: \"recaptcha\",\r\n renderer: RenderRecaptcha\r\n};","// Dependencies.\r\nlet FieldUtility = require(\"../utils/field\");\r\n\r\n/**\r\n * Renders rich text.\r\n * @param fieldData The field data that should be used to render the rich text.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param cssClasses The CSS classes to attach to the element.\r\n * @constructor\r\n */\r\nfunction RichText(fieldData, fieldValidators, cssClasses) {\r\n\r\n // Initialize field.\r\n FieldUtility.initializeField(this, fieldData, fieldValidators, {\r\n nodeName: \"div\",\r\n cssClasses: cssClasses,\r\n usePlaceholder: false,\r\n useLabel: false,\r\n useWrapper: false\r\n });\r\n\r\n // Add text to element.\r\n this.element.innerHTML = fieldData.configuration.text;\r\n\r\n}\r\n\r\n/**\r\n * Returns the DOM element for the rich text.\r\n * @returns {HTMLButtonElement} The DOM element for the rich text.\r\n */\r\nRichText.prototype.getElement = function () {\r\n return this.element;\r\n};\r\n\r\n/**\r\n * Ensure the prototype has the necessary functions.\r\n */\r\nFieldUtility.initializeFieldPrototype(RichText.prototype);\r\n\r\n// Export the field renderer configuration.\r\nmodule.exports = {\r\n key: \"rich-text\",\r\n renderer: RichText\r\n};","// Dependencies.\r\nlet FieldUtility = require(\"../utils/field\"),\r\n dispatchEvent = require(\"../utils/events\");\r\n\r\n/**\r\n * Renders a drop down field.\r\n * @param fieldData The field data that should be used to render the drop down field.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param cssClasses The CSS classes to attach to the element.\r\n * @constructor\r\n */\r\nfunction RenderSelect(fieldData, fieldValidators, cssClasses) {\r\n\r\n // Initialize field.\r\n FieldUtility.initializeField(this, fieldData, fieldValidators, {\r\n nodeName: \"select\",\r\n cssClasses: cssClasses\r\n });\r\n this.addOptions(fieldData);\r\n\r\n // Listen for events.\r\n this.addChangeEvent(fieldData);\r\n\r\n}\r\n\r\n/**\r\n * Add event listener for the change event\r\n * @param fieldData The field data that should be used to render the drop down field.\r\n */\r\nRenderSelect.prototype.addChangeEvent = function(fieldData) {\r\n\r\n // Variables.\r\n let category = fieldData.category,\r\n element = this.element;\r\n\r\n // Add change event listener.\r\n element.addEventListener('change', function() {\r\n\r\n // Dispatch event indicating the drop down value changed.\r\n dispatchEvent(element, \"formulate form: select changed\", {\r\n category: category,\r\n element: element\r\n });\r\n\r\n });\r\n\r\n};\r\n\r\n/**\r\n * Adds the options to the select.\r\n * @param fieldData The field data that should be used to render the drop down field.\r\n */\r\nRenderSelect.prototype.addOptions = function (fieldData) {\r\n\r\n // Variables.\r\n let i, item, option, fragment = document.createDocumentFragment(),\r\n items = fieldData.configuration.items || [];\r\n\r\n // Are there any options to add?\r\n if (items.length === 0) {\r\n return;\r\n }\r\n\r\n // Add the initial option.\r\n option = RenderSelect.createOption({\r\n value: \"\",\r\n label: fieldData.label\r\n }, true);\r\n fragment.appendChild(option);\r\n\r\n // Add the options.\r\n for (i = 0; i < items.length; i++) {\r\n item = items[i];\r\n option = RenderSelect.createOption(item, false);\r\n fragment.appendChild(option);\r\n }\r\n\r\n // Append the options to the select.\r\n this.element.appendChild(fragment);\r\n\r\n};\r\n\r\n/**\r\n * Creates an HTML option element.\r\n * @param item The item to create the option for.\r\n * @param isInitial {boolean} Is this the initial option in a list of options?\r\n * @returns {HTMLElement} The option element.\r\n */\r\nRenderSelect.createOption = function (item, isInitial) {\r\n\r\n // Variables.\r\n let option = document.createElement(\"option\"),\r\n cssClass = \"formulate__field__select__option\";\r\n\r\n // Set attributes, label, and classes.\r\n option.value = item.value;\r\n option.appendChild(document.createTextNode(item.label));\r\n option.classList.add(cssClass);\r\n if (isInitial) {\r\n option.classList.add(cssClass + \"--initial\");\r\n }\r\n\r\n // Return option element.\r\n return option;\r\n\r\n};\r\n\r\n/**\r\n * Returns the DOM element for the drop down field.\r\n * @returns {HTMLDivElement} The DOM element for the drop down field.\r\n */\r\nRenderSelect.prototype.getElement = function () {\r\n return this.wrapper;\r\n};\r\n\r\n/**\r\n * Adds the data for this field on the specified FormData instance.\r\n * @param data {FormData} The FormData instance to set the field data on.\r\n * @param options {{rawDataByAlias: boolean}} Optional. The options for setting the data.\r\n */\r\nRenderSelect.prototype.setData = function (data, options) {\r\n FieldUtility.setData(data, this.element.value, options, this.alias, this.id);\r\n};\r\n\r\n/**\r\n * Checks the validity of the value in this field (adding inline validation messages if necessary).\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nRenderSelect.prototype.checkValidity = function () {\r\n return require(\"../utils/validation\")\r\n .checkTextValidity(this, this.validators, this.element.value, this.wrapper);\r\n};\r\n\r\n/**\r\n * Ensure the prototype has the necessary functions.\r\n */\r\nFieldUtility.initializeFieldPrototype(RenderSelect.prototype);\r\n\r\n// Export the field renderer configuration.\r\nmodule.exports = {\r\n key: \"select\",\r\n renderer: RenderSelect\r\n};","// Dependencies.\r\nlet FieldUtility = require(\"../utils/field\");\r\n\r\n/**\r\n * Renders a text field.\r\n * @param fieldData The field data that should be used to render the text field.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param cssClasses The CSS classes to attach to the element.\r\n * @constructor\r\n */\r\nfunction RenderText(fieldData, fieldValidators, cssClasses) {\r\n FieldUtility.initializeField(this, fieldData, fieldValidators, {\r\n type: \"text\",\r\n cssClasses: cssClasses\r\n });\r\n}\r\n\r\n/**\r\n * Returns the DOM element for the text field.\r\n * @returns {HTMLDivElement} The DOM element for the text field.\r\n */\r\nRenderText.prototype.getElement = function () {\r\n return this.wrapper;\r\n};\r\n\r\n/**\r\n * Adds the data for this field on the specified FormData instance.\r\n * @param data {FormData} The FormData instance to set the field data on.\r\n * @param options {{rawDataByAlias: boolean}} Optional. The options for setting the data.\r\n */\r\nRenderText.prototype.setData = function (data, options) {\r\n FieldUtility.setData(data, this.element.value, options, this.alias, this.id);\r\n};\r\n\r\n/**\r\n * Checks the validity of the value in this field (adding inline validation messages if necessary).\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nRenderText.prototype.checkValidity = function () {\r\n return require(\"../utils/validation\")\r\n .checkTextValidity(this, this.validators, this.element.value, this.wrapper);\r\n};\r\n\r\n/**\r\n * Ensure the prototype has the necessary functions.\r\n */\r\nFieldUtility.initializeFieldPrototype(RenderText.prototype);\r\n\r\n// Export the field renderer configuration.\r\nmodule.exports = {\r\n key: \"text\",\r\n renderer: RenderText\r\n};","// Dependencies.\r\nlet FieldUtility = require(\"../utils/field\");\r\n\r\n/**\r\n * Renders a textarea field.\r\n * @param fieldData The field data that should be used to render the textarea field.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param cssClasses The CSS classes to attach to the element.\r\n * @constructor\r\n */\r\nfunction RenderText(fieldData, fieldValidators, cssClasses) {\r\n FieldUtility.initializeField(this, fieldData, fieldValidators, {\r\n nodeName: \"textarea\",\r\n cssClasses: cssClasses\r\n });\r\n}\r\n\r\n/**\r\n * Returns the DOM element for the textarea field.\r\n * @returns {HTMLDivElement} The DOM element for the textarea field.\r\n */\r\nRenderText.prototype.getElement = function () {\r\n return this.wrapper;\r\n};\r\n\r\n/**\r\n * Adds the data for this field on the specified FormData instance.\r\n * @param data {FormData} The FormData instance to set the field data on.\r\n * @param options {{rawDataByAlias: boolean}} Optional. The options for setting the data.\r\n */\r\nRenderText.prototype.setData = function (data, options) {\r\n FieldUtility.setData(data, this.element.value, options, this.alias, this.id);\r\n};\r\n\r\n/**\r\n * Checks the validity of the value in this field (adding inline validation messages if necessary).\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nRenderText.prototype.checkValidity = function () {\r\n return require(\"../utils/validation\")\r\n .checkTextValidity(this, this.validators, this.element.value, this.wrapper);\r\n};\r\n\r\n/**\r\n * Ensure the prototype has the necessary functions.\r\n */\r\nFieldUtility.initializeFieldPrototype(RenderText.prototype);\r\n\r\n// Export the field renderer configuration.\r\nmodule.exports = {\r\n key: \"textarea\",\r\n renderer: RenderText\r\n};","// Dependencies.\r\nlet FieldUtility = require(\"../utils/field\");\r\n\r\n/**\r\n * Renders an upload field.\r\n * @param fieldData The field data that should be used to render the text field.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param cssClasses The CSS classes to attach to the element.\r\n * @constructor\r\n */\r\nfunction RenderUpload(fieldData, fieldValidators, cssClasses) {\r\n FieldUtility.initializeField(this, fieldData, fieldValidators, {\r\n type: \"file\",\r\n cssClasses: cssClasses,\r\n nestFieldInLabel: true\r\n });\r\n this.listenForChanges();\r\n}\r\n\r\n/**\r\n * Listens for changes to the selected file.\r\n */\r\nRenderUpload.prototype.listenForChanges = function () {\r\n let self = this;\r\n this.element.addEventListener(\"change\", function () {\r\n\r\n // Variables.\r\n let file = self.getFile(),\r\n hasFile = file !== null,\r\n name = hasFile\r\n ? file.name\r\n : null;\r\n\r\n // Was a file selected (or deselected)?\r\n if (hasFile) {\r\n\r\n // Change the filename and add the deselect button.\r\n self.addFilename(name);\r\n self.addDeselectButton();\r\n\r\n } else {\r\n\r\n // Some browsers (e.g., IE11) will get here if the file is deselected.\r\n // Remove the filename and the deselect button.\r\n self.removeFilename();\r\n self.removeDeselectButton();\r\n\r\n }\r\n\r\n });\r\n};\r\n\r\n/**\r\n * Removes the \"Deselect File\" button.\r\n */\r\nRenderUpload.prototype.removeDeselectButton = function () {\r\n if (this.deselectElement) {\r\n this.deselectElement.parentNode.removeChild(this.deselectElement);\r\n this.deselectElement = null;\r\n }\r\n};\r\n\r\n/**\r\n * Removes the filename element.\r\n */\r\nRenderUpload.prototype.removeFilename = function () {\r\n if (this.filenameElement) {\r\n this.filenameElement.parentNode.removeChild(this.filenameElement);\r\n this.filenameElement = null;\r\n }\r\n};\r\n\r\n/**\r\n * Adds the filename element.\r\n * @param name The name of the file.\r\n */\r\nRenderUpload.prototype.addFilename = function (name) {\r\n let filenameElement = document.createElement(\"div\");\r\n this.removeFilename();\r\n this.filenameElement = filenameElement;\r\n filenameElement.appendChild(document.createTextNode(name));\r\n filenameElement.classList.add(\"formulate__field--upload__filename\");\r\n this.wrapper.insertBefore(filenameElement, this.label.nextSibling);\r\n};\r\n\r\n/**\r\n * Adds the \"Deselect File\" button.\r\n */\r\nRenderUpload.prototype.addDeselectButton = function () {\r\n\r\n // Variables.\r\n let deselectElement = document.createElement(\"button\"), previousSibling;\r\n\r\n // Remove existing button.\r\n this.removeDeselectButton();\r\n\r\n /// Create new button.\r\n this.deselectElement = deselectElement;\r\n deselectElement.appendChild(document.createTextNode(\"Deselect File\"));\r\n deselectElement.classList.add(\"formulate__field--upload__deselect\");\r\n deselectElement.type = \"button\";\r\n\r\n // Add after the filename (if it exists) or the label.\r\n previousSibling = this.filenameElement || this.label;\r\n this.wrapper.insertBefore(deselectElement, previousSibling.nextSibling);\r\n\r\n // Listen for clicks of the \"Deselect File\" button.\r\n this.listenForDeselect();\r\n\r\n};\r\n\r\n/**\r\n * Sets up the event handler that deselects the currently selected file.\r\n */\r\nRenderUpload.prototype.listenForDeselect = function () {\r\n let self = this;\r\n this.deselectElement.addEventListener(\"click\", function () {\r\n self.element.value = \"\";\r\n self.removeDeselectButton();\r\n self.removeFilename();\r\n });\r\n};\r\n\r\n/**\r\n * Returns the DOM element for the upload field.\r\n * @returns {HTMLDivElement} The DOM element for the upload field.\r\n */\r\nRenderUpload.prototype.getElement = function () {\r\n return this.wrapper;\r\n};\r\n\r\n/**\r\n * Adds the data for this field on the specified FormData instance.\r\n * @param data {FormData} The FormData instance to set the field data on.\r\n * @param options {{rawDataByAlias: boolean}} Optional. The options for setting the data.\r\n */\r\nRenderUpload.prototype.setData = function (data, options) {\r\n FieldUtility.setData(data, this.getFile(), options, this.alias, this.id);\r\n};\r\n\r\n/**\r\n * Gets the currently selected file.\r\n * @returns {*} The file, or null.\r\n */\r\nRenderUpload.prototype.getFile = function () {\r\n let files = this.element.files,\r\n hasFile = files.length > 0,\r\n file = hasFile\r\n ? files[0]\r\n : null;\r\n return file;\r\n};\r\n\r\n/**\r\n * Checks the validity of the value in this field (adding inline validation messages if necessary).\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nRenderUpload.prototype.checkValidity = function () {\r\n return require(\"../utils/validation\")\r\n .checkFileValidity(this, this.validators, this.getFile(), this.wrapper);\r\n};\r\n\r\n/**\r\n * Ensure the prototype has the necessary functions.\r\n */\r\nFieldUtility.initializeFieldPrototype(RenderUpload.prototype);\r\n\r\n// Export the field renderer configuration.\r\nmodule.exports = {\r\n key: \"upload\",\r\n renderer: RenderUpload\r\n};","// Variables.\r\nlet forms, renderers, validators;\r\n\r\n// Get field renderers.\r\nrenderers = require(\"./steps/get-field-renderers\")();\r\n\r\n// Get field validators.\r\nvalidators = require(\"./steps/get-field-validators\")();\r\n\r\n// Get form data.\r\nforms = require(\"./steps/get-form-data\")();\r\n\r\n// Render the forms.\r\nrequire(\"./steps/render-forms\")(forms, renderers, validators);","// Variables.\r\nlet FormulatePromise;\r\n\r\n// Get either the promise polyfill or the native promise.\r\nif (typeof Promise === \"undefined\") {\r\n FormulatePromise = require(\"promiscuous/dist/promiscuous-browser-shim-full\");\r\n} else {\r\n FormulatePromise = Promise;\r\n}\r\n\r\n// Export the promise function (either native or the polyfill).\r\nmodule.exports = FormulatePromise;","/**\r\n * Returns the field renderers in an associative array with the keys being the\r\n * type of field renderer (e.g., \"text\" or \"button\") and the value being the\r\n * function that renders the field.\r\n * @returns {{}} The associative array of field renderers.\r\n */\r\nfunction getFieldRenderers() {\r\n\r\n // Variables.\r\n let i, fields, extraFields, field, fieldKey, fieldMap;\r\n\r\n // Get the field renderers.\r\n fields = [\r\n require(\"../fields/plain-text\"),\r\n require(\"../fields/plain-button\"),\r\n require(\"../fields/plain-rich-text\"),\r\n require(\"../fields/plain-checkbox\"),\r\n require(\"../fields/plain-textarea\"),\r\n require(\"../fields/plain-hidden\"),\r\n require(\"../fields/plain-select\"),\r\n require(\"../fields/plain-header\"),\r\n require(\"../fields/plain-upload\"),\r\n require(\"../fields/plain-checkbox-list\"),\r\n require(\"../fields/plain-date\"),\r\n require(\"../fields/plain-radio-button-list\"),\r\n require(\"../fields/plain-extended-radio-button-list\"),\r\n require(\"../fields/plain-recaptcha\")\r\n ];\r\n extraFields = window[\"formulate-plain-js-fields\"] || [];\r\n fields = fields.concat(extraFields);\r\n\r\n // Store the field renderers to an associative array.\r\n fieldMap = {};\r\n for (i = 0; i < fields.length; i++) {\r\n field = fields[i];\r\n fieldKey = field.key;\r\n fieldMap[fieldKey] = field.renderer;\r\n }\r\n\r\n // Return the associative array of field renderers.\r\n return fieldMap;\r\n\r\n}\r\n\r\n// Export the function that gets the field renderers.\r\nmodule.exports = getFieldRenderers;","/**\r\n * Returns the field validators in an associative array with the keys being the\r\n * type of field validator (e.g., \"regex\" or \"required\") and the value being the\r\n * function that validates the field.\r\n * @returns {{}} The associative array of field validators.\r\n */\r\nfunction getFieldValidators() {\r\n\r\n // Variables.\r\n let i, validators, extraValidators, field, fieldKey, validatorMap;\r\n\r\n // Get the field validators.\r\n validators = [\r\n require(\"../validators/regex\"),\r\n require(\"../validators/required\")\r\n ];\r\n extraValidators = window[\"formulate-plain-js-validators\"] || [];\r\n validators = validators.concat(extraValidators);\r\n\r\n // Store the field validators to an associative array.\r\n validatorMap = {};\r\n for (i = 0; i < validators.length; i++) {\r\n field = validators[i];\r\n fieldKey = field.key;\r\n validatorMap[fieldKey] = field.validator;\r\n }\r\n\r\n // Return the associative array of field validators.\r\n return validatorMap;\r\n\r\n}\r\n\r\n// Export the function that gets the field validators.\r\nmodule.exports = getFieldValidators;","/**\r\n * Returns the data for all Formulate forms from the window object.\r\n * @returns {Array} The forms.\r\n */\r\nfunction getFormData() {\r\n\r\n // Variables.\r\n let key, forms;\r\n\r\n // Get the forms from the window object.\r\n key = \"formulate-plain-js-forms\";\r\n forms = window[key] || [];\r\n\r\n // Reset the windows object in case subsequent forms are added later.\r\n window[key] = [];\r\n\r\n // Return the data for the forms.\r\n return forms;\r\n\r\n}\r\n\r\n// Export the function that gets the form data.\r\nmodule.exports = getFormData;","/**\r\n * Renders a cell within a row of a Formulate form.\r\n * @param columnCount The number of columns this cell spans.\r\n * @returns {HTMLDivElement} The DOM element for the cell.\r\n */\r\nfunction renderCell(columnCount) {\r\n\r\n // Variables.\r\n let cellElement;\r\n\r\n // Create the element.\r\n cellElement = document.createElement(\"div\");\r\n\r\n // Add CSS classes to element.\r\n cellElement.classList.add(\"formulate__cell\");\r\n cellElement.classList.add(\"formulate__cell--\" + columnCount.toString() + \"-columns\");\r\n\r\n // Return the DOM element for the cell.\r\n return cellElement;\r\n\r\n}\r\n\r\n// Export the function that renders a cell.\r\nmodule.exports = renderCell;","/**\r\n * Renders a formulate Field.\r\n * @param fieldData The data for the form field to render.\r\n * @param fieldRenderers The associative array of field rendering functions.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param extraOptions Additional options that are less commonly used.\r\n * @returns {HTMLInputElement} The DOM element created by the field renderer.\r\n */\r\nfunction renderField(fieldData, fieldRenderers, fieldValidators, extraOptions) {\r\n\r\n // Variables.\r\n let renderer, cssClasses, renderResult;\r\n\r\n // Get the field rendering function for the current field type.\r\n renderer = fieldRenderers[fieldData.fieldType];\r\n\r\n // Create CSS classes to be attached to the DOM element.\r\n cssClasses = [];\r\n cssClasses.push(\"formulate__field\");\r\n cssClasses.push(\"formulate__field--\" + fieldData.fieldType);\r\n\r\n // Render the field.\r\n if (!renderer) {\r\n throw Error(\"Unable to find renderer for field of type \" + fieldData.fieldType + \".\");\r\n }\r\n renderResult = new renderer(fieldData, fieldValidators, cssClasses, extraOptions);\r\n\r\n // Return the rendered field (an object that has information about the rendered field).\r\n return renderResult;\r\n\r\n}\r\n\r\n// Export the function that renders a field.\r\nmodule.exports = renderField;","/**\r\n * Renders a Formulate form.\r\n * @param formData The data to render a form for.\r\n * @param formElement The DOM element to insert elements into.\r\n * @param placeholderElement The element that the form will be inserted before.\r\n * @param fieldRenderers The associative array of field rendering functions.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n */\r\nfunction renderForm(formData, formElement, placeholderElement, fieldRenderers, fieldValidators) {\r\n\r\n // Variables.\r\n let i, j, k, row, rows, rowElement, cells, cell, fields, fieldId,\r\n columnCount, cellElement, fieldElement, fieldsData, fieldMap,\r\n field, renderedFields, renderedField;\r\n\r\n // Map fields to an associative array for quick lookups.\r\n fieldsData = formData.data.fields;\r\n fieldMap = require(\"../utils/map-fields-by-id\")(fieldsData);\r\n\r\n // Process each row in the form.\r\n rows = formData.data.rows;\r\n renderedFields = [];\r\n for(i = 0; i < rows.length; i++) {\r\n\r\n // Create the row.\r\n row = rows[i];\r\n cells = row.cells;\r\n rowElement = require(\"./render-row\")();\r\n formElement.appendChild(rowElement);\r\n\r\n // Process each cell in this row.\r\n for (j = 0; j < cells.length; j++) {\r\n\r\n // Create the cell.\r\n cell = cells[j];\r\n fields = cell.fields;\r\n columnCount = cell.columns;\r\n cellElement = require(\"./render-cell\")(columnCount);\r\n rowElement.appendChild(cellElement);\r\n\r\n // Process each field in this cell.\r\n for (k = 0; k < fields.length; k++) {\r\n\r\n // Create the field.\r\n fieldId = fields[k].id;\r\n field = fieldMap[fieldId];\r\n renderedField = require(\"./render-field\")(field, fieldRenderers, fieldValidators, {\r\n formElement: formElement,\r\n placeholderElement: placeholderElement\r\n });\r\n renderedFields.push(renderedField);\r\n fieldElement = renderedField.getElement();\r\n cellElement.appendChild(fieldElement);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n // Return the rendered fields.\r\n return renderedFields;\r\n\r\n}\r\n\r\n// Export the function that renders a form.\r\nmodule.exports = renderForm;","// Dependencies.\r\nlet dispatchEvent = require(\"../utils/events\");\r\n\r\n/**\r\n * Renders the Formulate forms, inserting them into the appropriate place\r\n * in the DOM.\r\n * @param forms The data for the forms to render.\r\n * @param fieldRenderers The associative array of the field rendering functions.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n */\r\nfunction renderForms(forms, fieldRenderers, fieldValidators) {\r\n\r\n // Variables.\r\n let i, form, formId, placeholderElement, formElement, formContainer, fields;\r\n\r\n // Process each form.\r\n for (i = 0; i < forms.length; i++) {\r\n\r\n // Variables.\r\n form = forms[i];\r\n\r\n // Create the form DOM element.\r\n formElement = document.createElement(\"form\");\r\n\r\n // Add CSS class to DOM element.\r\n formElement.classList.add(\"formulate__form\");\r\n\r\n // Get the placeholder element to insert the form before.\r\n formId = \"formulate-form-\" + form.data.randomId;\r\n placeholderElement = document.getElementById(formId);\r\n\r\n // Render the contents of the form.\r\n fields = require(\"./render-form\")(form, formElement, placeholderElement, fieldRenderers, fieldValidators);\r\n\r\n // Insert the form before the placeholder, and remove the placeholder.\r\n formContainer = placeholderElement.parentNode;\r\n formContainer.insertBefore(formElement, placeholderElement);\r\n formContainer.removeChild(placeholderElement);\r\n\r\n // Handle submits.\r\n attachSubmitHandler(formElement, fields, form.data.payload, form.data.url);\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Attaches the function that handles the submit event.\r\n * @param form {HTMLFormElement} The HTML form DOM element.\r\n * @param fields {Array} The fields in this form.\r\n * @param payload {Object} The additional data to send with the submission.\r\n * @param url {string} The URL to send the submission to.\r\n */\r\nfunction attachSubmitHandler(form, fields, payload, url) {\r\n\r\n // Variables.\r\n let validationData;\r\n\r\n // Listen for submit events.\r\n form.addEventListener(\"submit\", function (e) {\r\n\r\n // Cancel submit (since we'll be doing it with AJAX instead).\r\n e.preventDefault();\r\n\r\n // Dispatch event to indicate the form submission has started.\r\n dispatchEvent(form, \"formulate: submit: started\");\r\n\r\n // First, ensure all fields are valid.\r\n checkValidity(form, fields)\r\n .then(function (validationResult) {\r\n if (validationResult.success) {\r\n\r\n // Dispatch event to indicate the form submission validation succeeded.\r\n validationData = {\r\n cancelSubmit: false,\r\n fields: fields,\r\n payload: payload\r\n };\r\n dispatchEvent(form, \"formulate: validation: success\", validationData);\r\n\r\n // Should the submit be cancelled?\r\n if (validationData.cancelSubmit) {\r\n dispatchEvent(form, \"formulate: submit: cancelled\");\r\n return;\r\n }\r\n\r\n // Use the data from the validation event, in case it was modified by a listener.\r\n fields = validationData.fields;\r\n payload = validationData.payload;\r\n\r\n // Populate submission with initial payload.\r\n sendPayloadToServer(form, fields, payload, url);\r\n\r\n } else {\r\n\r\n // Validation failed.\r\n handleInvalidFields(validationResult.messages, form);\r\n\r\n }\r\n });\r\n\r\n }, true);\r\n\r\n}\r\n\r\n/**\r\n * Handles invalid fields by dispatching an event with the validation errors.\r\n * @param messages The messages for the validation errors.\r\n * @param form The form.\r\n */\r\nfunction handleInvalidFields(messages, form) {\r\n dispatchEvent(form, \"formulate: submit: validation errors\", {\r\n messages: messages\r\n });\r\n}\r\n\r\n/**\r\n * Checks the form for validation errors.\r\n * @param form The form.\r\n * @param fields The fields in the form.\r\n * @returns {*} A promise that will resolve to the result of the validations.\r\n */\r\nfunction checkValidity(form, fields) {\r\n\r\n // Variables.\r\n let i, field, validationPromises = [], fieldPromises;\r\n\r\n // Start validating each field.\r\n for(i = 0; i < fields.length; i++) {\r\n field = fields[i];\r\n fieldPromises = field.checkValidity();\r\n validationPromises = validationPromises.concat(fieldPromises);\r\n }\r\n\r\n // Finalize the validation of the fields.\r\n return require(\"../utils/validation\").aggregateValidations(validationPromises);\r\n\r\n}\r\n\r\n/**\r\n * Sends the payload for the form to the server.\r\n * @param form The form element.\r\n * @param fields The fields for the form.\r\n * @param payload The data to send to the server.\r\n * @param url The URL to send the data to.\r\n */\r\nfunction sendPayloadToServer(form, fields, payload, url) {\r\n\r\n // Variables.\r\n let i, data, payloadKey, dataByAlias = {};\r\n\r\n // Populate submission with initial payload.\r\n data = new FormData();\r\n for(payloadKey in payload) {\r\n if (payload.hasOwnProperty(payloadKey)) {\r\n data.append(payloadKey, payload[payloadKey]);\r\n }\r\n }\r\n\r\n // Populate submission with data from fields.\r\n for (i = 0; i < fields.length; i++) {\r\n fields[i].setData(data);\r\n fields[i].setData(dataByAlias, {\r\n rawDataByAlias: true\r\n });\r\n }\r\n\r\n // Send data as AJAX submission.\r\n new (require(\"../utils/ajax\"))(url, data).then(function(result) {\r\n\r\n // Was the request successful?\r\n let success = JSON.parse(result.text).Success;\r\n if (success) {\r\n\r\n // Dispatch success event.\r\n dispatchEvent(form, \"formulate form: submit: success\", {\r\n dataByAlias: dataByAlias\r\n });\r\n\r\n } else {\r\n\r\n // Dispatch failure event.\r\n dispatchEvent(form, \"formulate form: submit: failure\");\r\n\r\n }\r\n\r\n }).catch(function() {\r\n\r\n // Dispatch failure event.\r\n dispatchEvent(form, \"formulate form: submit: failure\");\r\n\r\n });\r\n\r\n}\r\n\r\n// Export the function that renders forms.\r\nmodule.exports = renderForms;","/**\r\n * Renders a row in a Formulate form.\r\n * @returns {HTMLDivElement} The DOM element for the row.\r\n */\r\nfunction renderRow() {\r\n\r\n // Variables.\r\n let rowElement;\r\n\r\n // Create the DOM element for the row.\r\n rowElement = document.createElement(\"div\");\r\n\r\n // Add a CSS class to the DOM element.\r\n rowElement.classList.add(\"formulate__row\");\r\n\r\n // Return the DOM element for the row.\r\n return rowElement;\r\n\r\n}\r\n\r\n// Export the function that renders a row.\r\nmodule.exports = renderRow;","/**\r\n * Adds CSS classes to a DOM element\r\n * @param element The DOM element to add classes to.\r\n * @param cssClasses The CSS classes to add to the element.\r\n */\r\nfunction addClasses(element, cssClasses) {\r\n\r\n // Variables.\r\n let i;\r\n\r\n // Add each CSS class to the element.\r\n for (i = 0; i < cssClasses.length; i++) {\r\n element.classList.add(cssClasses[i]);\r\n }\r\n\r\n}\r\n\r\n// Export the function that adds CSS classes to an element.\r\nmodule.exports = addClasses;","// A readyState of 4 indicates the request has completed: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState\r\nconst STATE_DONE = 4;\r\n\r\n// An HTTP response code of 200 indicates success.\r\nconst STATUS_SUCCESS = 200;\r\n\r\n// HTTP request method to post data to the server: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST\r\nconst METHOD_POST = \"POST\";\r\n\r\n/**\r\n * Posts a form to the server with AJAX.\r\n * @param url {string} The URL to post the form to.\r\n * @param payload {FormData} The form data to send with the request.\r\n * @returns {Promise} A promise that resolves once the request is complete.\r\n * @constructor\r\n */\r\nfunction SendRequest(url, payload) {\r\n\r\n // Variables.\r\n let self = this, Promise = require(\"../polyfills/promise\"), state;\r\n\r\n // Instance variables.\r\n this.request = new XMLHttpRequest();\r\n\r\n // Return a promise that will resolve once the AJAX request has returned from the server.\r\n return new Promise(function (resolve, reject) {\r\n\r\n // Initiate the AJAX request.\r\n self.request.onreadystatechange = function () {\r\n state = self.handleStateChange();\r\n if (state && state.status === STATUS_SUCCESS) {\r\n resolve(state);\r\n } else if (state && state.status !== STATUS_SUCCESS) {\r\n reject(state);\r\n }\r\n };\r\n self.request.open(METHOD_POST, url, true);\r\n self.request.send(payload);\r\n\r\n });\r\n\r\n}\r\n\r\n/**\r\n * Called whenever the state changes for the AJAX call.\r\n * @returns {{} | null} The result of the state change, or null if it's an irrelevant state change.\r\n */\r\nSendRequest.prototype.handleStateChange = function () {\r\n\r\n // Is the request done?\r\n if (this.request.readyState === STATE_DONE) {\r\n\r\n // Was the request successful?\r\n if (this.request.status === STATUS_SUCCESS){\r\n\r\n // Success.\r\n return {\r\n status: STATUS_SUCCESS,\r\n text: this.request.responseText\r\n };\r\n\r\n } else {\r\n\r\n // Error.\r\n return {\r\n status: this.request.status\r\n };\r\n\r\n }\r\n\r\n }\r\n\r\n // Not a state change we care about.\r\n return null;\r\n\r\n};\r\n\r\n// Export the function that sends an AJAX request.\r\nmodule.exports = SendRequest;","/**\r\n * Dispatches the specified event.\r\n * @param element The element to dispatch the element on.\r\n * @param eventName The event to dispatch.\r\n * @param data The data to send with the event.\r\n */\r\nfunction dispatchEvent(element, eventName, data) {\r\n let event;\r\n if (typeof window.CustomEvent === \"function\") {\r\n\r\n // Typical implementation for CustomEvent.\r\n event = new CustomEvent(eventName, {\r\n bubbles: true,\r\n detail: data\r\n });\r\n element.dispatchEvent(event);\r\n\r\n } else {\r\n\r\n // IE11 implementation for CustomEvent.\r\n event = document.createEvent(\"CustomEvent\");\r\n event.initCustomEvent(eventName, true, false, data);\r\n element.dispatchEvent(event);\r\n\r\n }\r\n}\r\n\r\n// Export the function that dispatches an event.\r\nmodule.exports = dispatchEvent;","// Variables.\r\nlet idCount = 0;\r\n\r\n/**\r\n * Utility functions for working with form fields.\r\n * @constructor\r\n */\r\nfunction Field() {\r\n}\r\n\r\n/**\r\n * Initializes a field renderer prototype to ensure it has all the necessary functions.\r\n * @param fieldPrototype The prototype for the field renderer.\r\n */\r\nField.initializeFieldPrototype = function (fieldPrototype) {\r\n\r\n // Use a fallback for setData?\r\n if (!fieldPrototype.setData) {\r\n fieldPrototype.setData = function () {};\r\n }\r\n\r\n // Use a fallback for checkValidity?\r\n if (!fieldPrototype.checkValidity) {\r\n fieldPrototype.checkValidity = function () {\r\n return [];\r\n };\r\n }\r\n\r\n // Use fallback for getCategory?\r\n if (!fieldPrototype.getCategory) {\r\n fieldPrototype.getCategory = function () {\r\n return null;\r\n };\r\n }\r\n\r\n};\r\n\r\n/**\r\n * Adds the data for a field to the specified instance of either FormData or an object.\r\n * @param data The FormData or object to set the field data on.\r\n * @param value The value to set.\r\n * @param options {{rawDataByAlias: boolean}} Optional. The options for setting the data.\r\n * @param alias The field alias.\r\n * @param id The field ID.\r\n */\r\nField.setData = function (data, value, options, alias, id) {\r\n\r\n // Adjust options.\r\n options = options || {};\r\n options.rawDataByAlias = options.rawDataByAlias || false;\r\n\r\n // Set data.\r\n if (options.rawDataByAlias) {\r\n if (alias) {\r\n data[alias] = value;\r\n }\r\n } else {\r\n data.append(id, value);\r\n }\r\n\r\n};\r\n\r\n/**\r\n * Initializes a field renderer.\r\n * @param fieldRenderer The field renderer to initialize.\r\n * @param fieldData The field data that should be used to render the field.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @param options {{type: string, usePlaceholder: boolean, useLabel: boolean, useWrapper: boolean, cssClasses: string[], nodeName: string, nestFieldInLabel: boolean, wrapperElement: HTMLElement, wrapLabelText: boolean, fieldBeforeLabelText: boolean, name: string, label: string, label2: string}}\r\n * The options to use when constructing the field.\r\n */\r\nField.initializeField = function (fieldRenderer, fieldData, fieldValidators, options) {\r\n\r\n // Variables.\r\n let fieldElement, labelElement, fieldId, textNode, labelTextWrapper,\r\n useWrapper = options.useWrapper !== false,\r\n wrapperElement = options.wrapperElement,\r\n useLabel = options.useLabel !== false,\r\n labelText = options.hasOwnProperty(\"label\")\r\n ? options.label\r\n : fieldData.label,\r\n hasLabel2 = options.hasOwnProperty(\"label2\");\r\n\r\n // Create element.\r\n fieldElement = document.createElement(options.nodeName || \"input\");\r\n if (options.type) {\r\n fieldElement.type = options.type;\r\n }\r\n if (options.hasOwnProperty(\"name\")) {\r\n fieldElement.name = options.name;\r\n }\r\n\r\n // Add the catagory to the field.\r\n if (fieldData.category) {\r\n fieldElement.setAttribute(\"data-category\", fieldData.category);\r\n }\r\n\r\n // Set value?\r\n if (options.hasOwnProperty(\"value\")) {\r\n fieldElement.value = options.value;\r\n }\r\n\r\n // Set aria label.\r\n if (useLabel) {\r\n fieldElement.setAttribute(\"aria-label\", labelText);\r\n }\r\n\r\n // Create wrapper element, or just use the field element as the wrapper.\r\n wrapperElement = useWrapper\r\n ? (wrapperElement || document.createElement(\"div\"))\r\n : fieldElement;\r\n\r\n // Attach CSS classes.\r\n if (options.cssClasses) {\r\n require(\"./add-classes\")(wrapperElement, options.cssClasses);\r\n }\r\n\r\n // Add placeholder?\r\n if (options.usePlaceholder !== false) {\r\n fieldElement.setAttribute(\"placeholder\", labelText);\r\n }\r\n\r\n // Create label element?\r\n if (useLabel) {\r\n fieldId = Field.generateId(\"formulate-field-\");\r\n fieldElement.setAttribute(\"id\", fieldId);\r\n labelElement = document.createElement(\"label\");\r\n labelElement.setAttribute(\"for\", fieldId);\r\n labelElement.classList.add(\"formulate__field__label\");\r\n textNode = document.createTextNode(labelText);\r\n if (options.wrapLabelText) {\r\n labelTextWrapper = document.createElement(\"span\");\r\n labelTextWrapper.classList.add(\"formulate__field__label-text\");\r\n labelTextWrapper.appendChild(textNode);\r\n labelElement.appendChild(labelTextWrapper);\r\n if (hasLabel2) {\r\n labelTextWrapper = labelTextWrapper.cloneNode();\r\n textNode = document.createTextNode(options.label2);\r\n labelTextWrapper.appendChild(textNode);\r\n labelElement.appendChild(labelTextWrapper);\r\n }\r\n } else {\r\n labelElement.appendChild(textNode);\r\n }\r\n wrapperElement.appendChild(labelElement);\r\n }\r\n\r\n // Add element to wrapper?\r\n if (useWrapper) {\r\n if (options.nestFieldInLabel) {\r\n if (options.fieldBeforeLabelText) {\r\n labelElement.insertBefore(fieldElement, labelElement.childNodes[0]);\r\n } else {\r\n labelElement.appendChild(fieldElement);\r\n }\r\n } else {\r\n if (options.fieldBeforeLabelText || window.labelAfterTextInput) {\r\n wrapperElement.insertBefore(fieldElement, wrapperElement.childNodes[0]);\r\n } else {\r\n wrapperElement.appendChild(fieldElement);\r\n }\r\n }\r\n }\r\n\r\n // Retain DOM elements and field properties.\r\n if (useWrapper) {\r\n fieldRenderer.wrapper = wrapperElement;\r\n }\r\n fieldRenderer.element = fieldElement;\r\n fieldRenderer.id = fieldData.id;\r\n fieldRenderer.alias = fieldData.alias;\r\n fieldRenderer.label = labelElement;\r\n\r\n // Prepare the validators and retain them for later use.\r\n fieldRenderer.validators = require(\"./validation\").prepareValidators(fieldData.validations, fieldValidators);\r\n\r\n};\r\n\r\n/**\r\n * Generates a unique ID for an HTML element.\r\n * @param prefix {string} The prefix to use for the ID.\r\n * @returns {string} The unique ID.\r\n */\r\nField.generateId = function (prefix) {\r\n idCount++;\r\n return prefix + idCount.toString();\r\n};\r\n\r\n// Export the form field utility functions.\r\nmodule.exports = Field;\r\n","/**\r\n * Maps an array of Formulate fields into an associative array, with the field\r\n * ID as the key and the field as the value.\r\n * @param fields The array of fields to map.\r\n * @returns {{}} The associative array of fields.\r\n */\r\nfunction mapFields(fields) {\r\n\r\n // Variables.\r\n let i, fieldMap, field, fieldId;\r\n\r\n // Process each field.\r\n fieldMap = {};\r\n for (i = 0; i < fields.length; i++) {\r\n\r\n // Store the field in the associative array.\r\n field = fields[i];\r\n fieldId = field.id;\r\n fieldMap[fieldId] = field;\r\n\r\n }\r\n\r\n // Return the associative array of fields.\r\n return fieldMap;\r\n\r\n}\r\n\r\n// Export the function that maps fields.\r\nmodule.exports = mapFields;","/**\r\n * A collection of validation utility functions.\r\n * @constructor\r\n */\r\nfunction ValidationUtilities() {\r\n}\r\n\r\n/**\r\n * Is the specified value set to something that is not null or undefined?\r\n * @param value {*} The value.\r\n * @returns {boolean} True, if the value is set to something; otherwise, false.\r\n */\r\nValidationUtilities.isValueSet = function (value) {\r\n return value !== null && value !== undefined && typeof(value) !== \"undefined\";\r\n};\r\n\r\n/**\r\n * Prepares the validators by passing configuration to their constructors.\r\n * @param validationData The data to pass to the validators.\r\n * @param fieldValidators The associative array of the field validating functions.\r\n * @returns {*} An array of prepared validators.\r\n */\r\nValidationUtilities.prepareValidators = function (validationData, fieldValidators) {\r\n\r\n // Validate input.\r\n if (!validationData || !fieldValidators) {\r\n return [];\r\n }\r\n\r\n // Variables.\r\n let i, validationOptions, validator, key, preparedValidators;\r\n\r\n // Process the validation data to prepare the validators.\r\n preparedValidators = [];\r\n for(i = 0; i < validationData.length; i++) {\r\n validationOptions = validationData[i];\r\n key = validationOptions.validationType;\r\n validator = fieldValidators[key];\r\n preparedValidators.push({\r\n validator: new validator(validationOptions.configuration),\r\n data: validationOptions\r\n });\r\n }\r\n\r\n // Return the prepared validators.\r\n return preparedValidators;\r\n\r\n};\r\n\r\n/**\r\n * Adds inline validation messages to a container.\r\n * @param containerElement {HTMLElement} The container to add the inline validation messages to.\r\n * @param messages {string[]} The validation messages to add.\r\n * @param priorListElement {HTMLUListElement} The list element returned the last time this\r\n * function was called.\r\n * @returns {HTMLUListElement} The list element containing the validation messages.\r\n */\r\nValidationUtilities.addValidationMessages = function (containerElement, messages, priorListElement) {\r\n\r\n // If there are no messages, remove the prior list element and return early.\r\n if (!messages || messages.length === 0) {\r\n if (priorListElement) {\r\n priorListElement.parentNode.removeChild(priorListElement);\r\n }\r\n return null;\r\n }\r\n\r\n // Variables.\r\n let i, listElement, message, itemElement;\r\n\r\n // Create the list element that contains the messages.\r\n listElement = document.createElement(\"ul\");\r\n listElement.classList.add(\"formulate__inline-validation-summary\");\r\n\r\n // Add the messages to the list element.\r\n for (i = 0; i < messages.length; i++) {\r\n message = messages[i];\r\n itemElement = document.createElement(\"li\");\r\n itemElement.classList.add(\"formulate__inline-validation-summary__error\");\r\n itemElement.appendChild(document.createTextNode(message));\r\n listElement.appendChild(itemElement);\r\n }\r\n\r\n // Remove the prior list element.\r\n if (priorListElement) {\r\n priorListElement.parentNode.removeChild(priorListElement);\r\n }\r\n\r\n // Add the new list element to the container.\r\n containerElement.appendChild(listElement);\r\n\r\n // Return the new list element (expected to be passed in on the subsequent call as the\r\n // prior list element).\r\n return listElement;\r\n\r\n};\r\n\r\n/**\r\n * Aggregates validation results into a single validation result.\r\n * @param validationPromises {Promise[]} An array of promises that will resolve to a validation result.\r\n * @returns {Promise} A promise that will resolve to the aggregate validation result.\r\n */\r\nValidationUtilities.aggregateValidations = function (validationPromises) {\r\n\r\n // Variables.\r\n let Promise = require(\"../polyfills/promise\");\r\n\r\n // Return a promise that resolves to the result of all of the validations.\r\n return Promise.all(validationPromises)\r\n .then(function (results) {\r\n\r\n // Variables.\r\n let i, result, success, failures;\r\n\r\n // Extract all the failures from the validation results.\r\n failures = [];\r\n for (i = 0; i < results.length; i++) {\r\n result = results[i];\r\n if (!result.success) {\r\n failures.push(result);\r\n }\r\n }\r\n\r\n // Success if there are no failures.\r\n success = failures.length === 0;\r\n if (success) {\r\n\r\n // Success.\r\n return {\r\n success: true\r\n };\r\n\r\n } else {\r\n\r\n // Failure. Return validation messages for the failures.\r\n return {\r\n success: false,\r\n messages: failures.map(function (x) {\r\n return x.message;\r\n })\r\n };\r\n\r\n }\r\n\r\n });\r\n\r\n};\r\n\r\n/**\r\n * Checks the validity of a text array field, adding inline validation messages if there are\r\n * any validations that fail.\r\n * @param fieldRenderer The instance of the Formulate field renderer.\r\n * @param validators The prepared validator functions.\r\n * @param value The value to check the validity of.\r\n * @param containerElement The container element to add validation messages to.\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nValidationUtilities.checkTextArrayValidity = function (fieldRenderer, validators, value, containerElement) {\r\n return ValidationUtilities.checkValidityCommon(fieldRenderer, validators, value, containerElement, \"validateTextArray\");\r\n};\r\n\r\n/**\r\n * Checks the validity of a text-based field, adding inline validation messages if there are\r\n * any validations that fail.\r\n * @param fieldRenderer The instance of the Formulate field renderer.\r\n * @param validators The prepared validator functions.\r\n * @param value The value to check the validity of.\r\n * @param containerElement The container element to add validation messages to.\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nValidationUtilities.checkTextValidity = function (fieldRenderer, validators, value, containerElement) {\r\n return ValidationUtilities.checkValidityCommon(fieldRenderer, validators, value, containerElement, \"validateText\");\r\n};\r\n\r\n/**\r\n * Checks the validity of a boolean-based field, adding inline validation messages if there are\r\n * any validations that fail.\r\n * @param fieldRenderer The instance of the Formulate field renderer.\r\n * @param validators The prepared validator functions.\r\n * @param value The value to check the validity of.\r\n * @param containerElement The container element to add validation messages to.\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nValidationUtilities.checkBoolValidity = function (fieldRenderer, validators, value, containerElement) {\r\n return ValidationUtilities.checkValidityCommon(fieldRenderer, validators, value, containerElement, \"validateBool\");\r\n};\r\n\r\n/**\r\n * Checks the validity of a file-based field, adding inline validation messages if there are\r\n * any validations that fail.\r\n * @param fieldRenderer The instance of the Formulate field renderer.\r\n * @param validators The prepared validator functions.\r\n * @param value The value to check the validity of.\r\n * @param containerElement The container element to add validation messages to.\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nValidationUtilities.checkFileValidity = function (fieldRenderer, validators, value, containerElement) {\r\n return ValidationUtilities.checkValidityCommon(fieldRenderer, validators, value, containerElement, \"validateFile\");\r\n};\r\n\r\n/**\r\n * Checks the validity of a field, adding inline validation messages if there are any validations that fail.\r\n * @param fieldRenderer The instance of the Formulate field renderer.\r\n * @param validators The prepared validator functions.\r\n * @param value The value to check the validity of.\r\n * @param containerElement The container element to add validation messages to.\r\n * @param validityFnName The name of the validity function (e.g., \"validateText\").\r\n * @returns {Promise[]} An array of promises that resolve to validation results.\r\n */\r\nValidationUtilities.checkValidityCommon = function (fieldRenderer, validators, value, containerElement, validityFnName) {\r\n\r\n // Variables.\r\n let i, validator, validationResults;\r\n\r\n // Check each validator for the validity of the value in this field.\r\n validationResults = [];\r\n for (i = 0; i < validators.length; i++) {\r\n validator = validators[i];\r\n validationResults.push(checkValidity(validator, value, validityFnName));\r\n }\r\n\r\n // Add inline validation messages.\r\n ValidationUtilities.aggregateValidations(validationResults)\r\n .then(function (result) {\r\n\r\n // Add inline validation messages.\r\n fieldRenderer.validationListElement = ValidationUtilities.addValidationMessages(\r\n containerElement, result.messages, fieldRenderer.validationListElement);\r\n\r\n // Add or remove validation error CSS class.\r\n if (result.success) {\r\n containerElement.classList.remove(\"formulate__field--validation-error\");\r\n } else {\r\n containerElement.classList.add(\"formulate__field--validation-error\");\r\n }\r\n\r\n });\r\n\r\n // Return the validation results.\r\n return validationResults;\r\n\r\n};\r\n\r\n/**\r\n * Validates the specified value against the specified validator.\r\n * @param validator The validator.\r\n * @param value The value to validate.\r\n * @param validityFnName The name of the validity function (e.g., \"validateText\").\r\n * @returns {Promise} A promise that will resolve to the validation result.\r\n */\r\nfunction checkValidity(validator, value, validityFnName) {\r\n return validator.validator[validityFnName](value)\r\n .then(function (result) {\r\n if (result) {\r\n\r\n // Success.\r\n return {\r\n success: true\r\n };\r\n\r\n } else {\r\n\r\n // Failure. Return validation message.\r\n return {\r\n success: false,\r\n message: validator.data.configuration.message\r\n };\r\n\r\n }\r\n });\r\n}\r\n\r\n// Export the validation utility functions.\r\nmodule.exports = ValidationUtilities;","/**\r\n * Validates a field to ensure its value matches a regular expression.\r\n * @param configuration The configuration for this regex validator.\r\n * @constructor\r\n */\r\nfunction RegexValidator(configuration) {\r\n this.regex = new RegExp(configuration.pattern);\r\n}\r\n\r\n/**\r\n * Validates the the specified text matches the regex.\r\n * @param value {string} The text value to validate.\r\n * @returns {Promise} A promise that resolves to true, if the text is valid; otherwise, false.\r\n */\r\nRegexValidator.prototype.validateText = function (value) {\r\n let self = this;\r\n return new (require(\"../polyfills/promise\"))(function (resolve) {\r\n let isValueSet = require(\"../utils/validation\").isValueSet;\r\n if (!isValueSet(value)) {\r\n value = \"\";\r\n }\r\n resolve(self.regex.test(value));\r\n });\r\n};\r\n\r\n/**\r\n * Validates the the specified boolean matches the regex.\r\n * @param value {boolean} The boolean value to validate.\r\n * @returns {Promise} A promise that resolves to true, if the boolean matches the regex; otherwise, false.\r\n */\r\nRegexValidator.prototype.validateBool = function (value) {\r\n let self = this,\r\n textValue = value === true\r\n ? \"true\"\r\n : \"false\";\r\n return new (require(\"../polyfills/promise\"))(function (resolve) {\r\n resolve(self.regex.test(textValue));\r\n });\r\n};\r\n\r\n/**\r\n * Validates that the specified array of text values all match the regex and that the array is not null/empty.\r\n * @param value {string[]} The array of text values.\r\n * @returns {Promise} A promise that resolves to true, if the array of text values is valid; otherwise, false.\r\n */\r\nRegexValidator.prototype.validateTextArray = function (value) {\r\n let self = this;\r\n return new (require(\"../polyfills/promise\"))(function (resolve) {\r\n\r\n // Variables.\r\n let i, item,\r\n isValueSet = require(\"../utils/validation\").isValueSet;\r\n\r\n // Check if the value is a valid array.\r\n if (!isValueSet(value) || !Array.isArray(value)) {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n // Check if the array has at least one value.\r\n if (value.length === 0) {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n // Check if each value in the array matches the regex.\r\n for (i = 0; i < value.length; i++) {\r\n item = value[i];\r\n if (!self.validateText(item)) {\r\n resolve(false);\r\n return;\r\n }\r\n }\r\n\r\n // All tests passed. Array value is valid.\r\n resolve(true);\r\n\r\n });\r\n};\r\n\r\n/**\r\n * Validates that the specified filename matches the regex.\r\n * @param value {*} The file value.\r\n * @returns {Promise} A promise that resolves to true, if the filename matches; otherwise, false.\r\n */\r\nRegexValidator.prototype.validateFile = function (value) {\r\n let hasFile = !!value,\r\n filename = hasFile\r\n ? value.name\r\n : null;\r\n return this.validateText(filename);\r\n};\r\n\r\n// Export the field validator configuration.\r\nmodule.exports = {\r\n key: \"regex\",\r\n validator: RegexValidator\r\n};","/**\r\n * Validates a field to ensure its value is set.\r\n * @constructor\r\n */\r\nfunction RequiredValidator() {\r\n}\r\n\r\n/**\r\n * Validates the the specified text is set (i.e., not null/empty).\r\n * @param value {string} The text value to validate.\r\n * @returns {Promise} A promise that resolves to true, if the text is valid; otherwise, false.\r\n */\r\nRequiredValidator.prototype.validateText = function (value) {\r\n return new (require(\"../polyfills/promise\"))(function (resolve) {\r\n let isValueSet = require(\"../utils/validation\").isValueSet,\r\n valid = isValueSet(value) && value.hasOwnProperty(\"length\") && value.length > 0;\r\n resolve(valid);\r\n });\r\n};\r\n\r\n/**\r\n * Validates the the specified boolean is true.\r\n * @param value {boolean} The boolean value to validate.\r\n * @returns {Promise} A promise that resolves to true, if the boolean is true; otherwise, false.\r\n */\r\nRequiredValidator.prototype.validateBool = function (value) {\r\n return new (require(\"../polyfills/promise\"))(function (resolve) {\r\n resolve(value === true);\r\n });\r\n};\r\n\r\n/**\r\n * Validates that the specified array of text values are all set and that the array is not null/empty.\r\n * @param value {string[]} The array of text values.\r\n * @returns {Promise} A promise that resolves to true, if the array of text values is valid; otherwise, false.\r\n */\r\nRequiredValidator.prototype.validateTextArray = function (value) {\r\n let self = this;\r\n return new (require(\"../polyfills/promise\"))(function (resolve) {\r\n\r\n // Variables.\r\n let i, item,\r\n isValueSet = require(\"../utils/validation\").isValueSet;\r\n\r\n // Check if the value is a valid array.\r\n if (!isValueSet(value) || !Array.isArray(value)) {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n // Check if the array has at least one value.\r\n if (value.length === 0) {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n // Check if each value in the array is set to some valid text.\r\n for (i = 0; i < value.length; i++) {\r\n item = value[i];\r\n if (!self.validateText(item)) {\r\n resolve(false);\r\n return;\r\n }\r\n }\r\n\r\n // All tests passed. Array value is valid.\r\n resolve(true);\r\n\r\n });\r\n};\r\n\r\n/**\r\n * Validates that the specified file has been selected.\r\n * @param value {*} The file value.\r\n * @returns {Promise} A promise that resolves to true, if the file is selected; otherwise, false.\r\n */\r\nRequiredValidator.prototype.validateFile = function (value) {\r\n return new (require(\"../polyfills/promise\"))(function (resolve) {\r\n let hasFile = !!value && !!value.name;\r\n resolve(hasFile);\r\n });\r\n};\r\n\r\n// Export the field validator configuration.\r\nmodule.exports = {\r\n key: \"required\",\r\n validator: RequiredValidator\r\n};","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","var isArray = require('./isArray');\n\n/**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\nfunction castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n}\n\nmodule.exports = castArray;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nmodule.exports = uniqWith;\n","/**@license MIT-promiscuous-©Ruben Verborgh*/\n(function (func, obj) {\n // Type checking utility function\n function is(type, item) { return (typeof item)[0] == type; }\n\n // Creates a promise, calling callback(resolve, reject), ignoring other parameters.\n function Promise(callback, handler) {\n // The `handler` variable points to the function that will\n // 1) handle a .then(resolved, rejected) call\n // 2) handle a resolve or reject call (if the first argument === `is`)\n // Before 2), `handler` holds a queue of callbacks.\n // After 2), `handler` is a finalized .then handler.\n handler = function pendingHandler(resolved, rejected, value, queue, then, i) {\n queue = pendingHandler.q;\n\n // Case 1) handle a .then(resolved, rejected) call\n if (resolved != is) {\n return Promise(function (resolve, reject) {\n queue.push({ p: this, r: resolve, j: reject, 1: resolved, 0: rejected });\n });\n }\n\n // Case 2) handle a resolve or reject call\n // (`resolved` === `is` acts as a sentinel)\n // The actual function signature is\n // .re[ject|solve](, success, value)\n\n // Check if the value is a promise and try to obtain its `then` method\n if (value && (is(func, value) | is(obj, value))) {\n try { then = value.then; }\n catch (reason) { rejected = 0; value = reason; }\n }\n // If the value is a promise, take over its state\n if (is(func, then)) {\n try { then.call(value, transferState(1), rejected = transferState(0)); }\n catch (reason) { rejected(reason); }\n }\n // The value is not a promise; handle resolve/reject\n else {\n // Replace this handler with a finalized resolved/rejected handler\n handler = function (Resolved, Rejected) {\n // If the Resolved or Rejected parameter is not a function,\n // return the original promise (now stored in the `callback` variable)\n if (!is(func, (Resolved = rejected ? Resolved : Rejected)))\n return callback;\n // Otherwise, return a finalized promise, transforming the value with the function\n return Promise(function (resolve, reject) { finalize(this, resolve, reject, value, Resolved); });\n };\n // Resolve/reject pending callbacks\n i = 0;\n while (i < queue.length) {\n then = queue[i++];\n // If no callback, just resolve/reject the promise\n if (!is(func, resolved = then[rejected]))\n (rejected ? then.r : then.j)(value);\n // Otherwise, resolve/reject the promise with the result of the callback\n else\n finalize(then.p, then.r, then.j, value, resolved);\n }\n }\n // Returns a function that transfers the state of the promise\n function transferState(resolved) {\n return function (value) { then && (then = 0, pendingHandler(is, resolved, value)); };\n }\n };\n // The queue of pending callbacks; garbage-collected when handler is resolved/rejected\n handler.q = [];\n\n // Create and return the promise (reusing the callback variable)\n callback.call(callback = { then: function (resolved, rejected) { return handler(resolved, rejected); },\n \"catch\": function (rejected) { return handler(0, rejected); } },\n function (value) { handler(is, 1, value); },\n function (reason) { handler(is, 0, reason); });\n return callback;\n }\n\n // Finalizes the promise by resolving/rejecting it with the transformed value\n function finalize(promise, resolve, reject, value, transform) {\n setTimeout(function () {\n try {\n // Transform the value through and check whether it's a promise\n value = transform(value);\n transform = value && (is(obj, value) | is(func, value)) && value.then;\n // Return the result if it's not a promise\n if (!is(func, transform))\n resolve(value);\n // If it's a promise, make sure it's not circular\n else if (value == promise)\n reject(TypeError());\n // Take over the promise's state\n else\n transform.call(value, resolve, reject);\n }\n catch (error) { reject(error); }\n });\n }\n\n // Export the main module\n module.exports = Promise;\n\n // Creates a resolved promise\n Promise.resolve = ResolvedPromise;\n function ResolvedPromise(value) { return Promise(function (resolve) { resolve(value); }); }\n\n // Creates a rejected promise\n Promise.reject = function (reason) { return Promise(function (resolve, reject) { reject(reason); }); };\n\n // Transforms an array of promises into a promise for an array\n Promise.all = function (promises) {\n return Promise(function (resolve, reject, count, values) {\n // Array of collected values\n values = [];\n // Resolve immediately if there are no promises\n count = promises.length || resolve(values);\n // Transform all elements (`map` is shorter than `forEach`)\n promises.map(function (promise, index) {\n ResolvedPromise(promise).then(\n // Store the value and resolve if it was the last\n function (value) {\n values[index] = value;\n --count || resolve(values);\n },\n // Reject if one element fails\n reject);\n });\n });\n };\n\n // Returns a promise that resolves or rejects as soon as one promise in the array does\n Promise.race = function (promises) {\n return Promise(function (resolve, reject) {\n // Register to all promises in the array\n promises.map(function (promise) {\n ResolvedPromise(promise).then(resolve, reject);\n });\n });\n };\n})('f', 'o');\n","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cdiv class=\\\"btt\\\"\\u003E\\u003Cdiv class=\\\"btt__wrapper\\\"\\u003E\\u003Cbutton class=\\\"btt__button\\\" data-js-back-to-top\\u003E\\u003Cspan\\u003EBack To Top\\u003C\\u002Fspan\\u003E\\u003Ci class=\\\"icomoon icomoon--Arrow\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (results) {// iterate results\n;(function(){\n var $$obj = results;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var result = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"search__result__container\\\"\\u003E\\u003Ca\" + (\" class=\\\"search__result\\\"\"+pug.attr(\"href\", result.url, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = result.label) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var result = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"search__result__container\\\"\\u003E\\u003Ca\" + (\" class=\\\"search__result\\\"\"+pug.attr(\"href\", result.url, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = result.label) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n}.call(this,\"results\" in locals_for_with?locals_for_with.results:typeof results!==\"undefined\"?results:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (error) {pug_html = pug_html + \"\\u003Cdiv class=\\\"error-message\\\"\\u003E\\u003Cdiv class=\\\"container\\\"\\u003E\\u003Ch2 class=\\\"error-message__header\\\"\\u003EOh No. . .\\u003C\\u002Fh2\\u003E\\u003Cp class=\\\"error-message__copy\\\"\\u003EIt looks like \" + (pug.escape(null == (pug_interp = error.serviceName) ? \"\" : pug_interp)) + \"'s servers are not responding. Please check back later.\\u003C\\u002Fp\\u003E\\u003Cul class=\\\"error-message__button-list\\\"\\u003E\\u003Cli class=\\\"error-message__button-item\\\"\\u003E\\u003Ca\" + (\" class=\\\"error-message__button error-message__button--primary\\\"\"+pug.attr(\"href\", error.directoryURL, true, true)) + \"\\u003EVisit Our Directory\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003Cli class=\\\"error-message__button-item\\\"\\u003E\\u003Ca class=\\\"error-message__button error-message__button--secondary\\\" href=\\\"\\u002F\\\"\\u003EVisit The Homepage\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"error\" in locals_for_with?locals_for_with.error:typeof error!==\"undefined\"?error:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (data) {pug_html = pug_html + \"\\u003Cdiv class=\\\"ww-improv layout__widget\\\"\\u003E\\u003Cdiv class=\\\"ww-improv__header\\\" data-js-ww-improv\\u003E\\u003Cdiv class=\\\"ww-improv__wrapper\\\"\\u003E\\u003Cdiv class=\\\"ww-improv__container container\\\"\\u003E\\u003Cdiv class=\\\"ww-improv__row\\\"\\u003E\\u003Ch1 class=\\\"ww-improv__text\\\"\\u003EIrvine Improv \\u003C\\u002Fh1\\u003E\\u003Ca class=\\\"ww-improv__address\\\" target=\\\"_blank\\\" href=\\\"https:\\u002F\\u002Fwww.google.com\\u002Fmaps\\u002Fplace\\u002FIrvine+Improv+Comedy+Club\\u002F@33.6522491,-117.7487058,17z\\u002Fdata=!3m2!4b1!5s0x80dce7f9a114ecbb:0xbb81174528352780!4m5!3m4!1s0x80dce7f9a7ef2b27:0xdcc29db1707ff99d!8m2!3d33.6522491!4d-117.7465171\\\"\\u003E527 Spectrum Center Drive, \\u003Cbr\\u002F\\u003EIrvine CA 92618\\u003C\\u002Fa\\u003E\\u003Cdiv class=\\\"ww-improv__contact\\\"\\u003E\\u003Cdiv class=\\\"ww-improv__contact__site\\\"\\u003E \\u003Ca href=\\\"https:\\u002F\\u002Fimprov.com\\u002FIrvine\\u002F\\\" target=\\\"_blank\\\"\\u003EWebsite\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ww-improv__contact__phone\\\"\\u003E \\u003Ca href=\\\"tel:9498545455\\\"\\u003E (949) 854-5455\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ww-improv__row\\\"\\u003E\\u003Cdiv class=\\\"ww-improv__button-wrapper\\\" data-js-improv-nav\\u003E\\u003Cbutton class=\\\"ww-improv__button ww-improv__button--prev\\\" data-js-nav-month=\\\"prev\\\"\\u003E\\u003C\\u002Fbutton\\u003E\";\n// iterate data\n;(function(){\n var $$obj = data;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var month = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"ww-improv__month\",index==0 ? 'active':''], [false,true]), false, true)+pug.attr(\"data-js-month-display\", true, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = month.timeDisplay) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var month = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"ww-improv__month\",index==0 ? 'active':''], [false,true]), false, true)+pug.attr(\"data-js-month-display\", true, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = month.timeDisplay) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cbutton class=\\\"ww-improv__button ww-improv__button--next\\\" data-js-nav-month=\\\"next\\\"\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"container\\\"\\u003E\";\npug_mixins[\"improvMovieCard\"] = pug_interp = function(type, data, index){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"show-card show-card--\" + type], [true]), false, true)) + \"\\u003E\\u003Cdiv class=\\\"show-card__container\\\"\\u003E\\u003Cdiv class=\\\"show-card__top-section\\\"\\u003E\";\nif (type === 'movie') {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"show-card__top-section__link\\\"\"+pug.attr(\"href\", data.detailPageUrl, true, true)) + \"\\u003E\\u003Cimg\" + (pug.attr(\"src\", data.image, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cimg\" + (pug.attr(\"src\", data.image, true, true)) + \"\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"show-card__info-container mobile\\\"\\u003E\";\nif (type === 'movie') {\npug_html = pug_html + \"\\u003Ch2 class=\\\"show-card__title\\\"\\u003E\\u003Ca\" + (\" class=\\\"show-card__title__link\\\"\"+pug.attr(\"href\", data.detailPageUrl, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = data.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fh2\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ch2 class=\\\"show-card__title\\\"\\u003E\" + (pug.escape(null == (pug_interp = data.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh2\\u003E\";\n}\nif (data.details) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"show-card__movie-details\\\"\\u003E\" + (null == (pug_interp = data.details) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"show-card__info-container desktop\\\"\\u003E\";\nif (type === 'movie') {\npug_html = pug_html + \"\\u003Ch2 class=\\\"show-card__title\\\"\\u003E\\u003Ca\" + (\" class=\\\"show-card__title__link\\\"\"+pug.attr(\"href\", data.detailPageUrl, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = data.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fh2\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ch2 class=\\\"show-card__title\\\"\\u003E\" + (pug.escape(null == (pug_interp = data.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh2\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__select-showing\\\"\\u003E \";\nif (type === 'movie' || type === 'improv') {\npug_html = pug_html + \"\\u003Ci class=\\\"showtimes__ticket-icon icomoon icomoon--ticket\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003Cspan class=\\\"showtimes__select-showing__text\\\"\\u003E\" + (pug.escape(null == (pug_interp = data.cta) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\npug_mixins[\"showtimes\"] = pug_interp = function(showTimes){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\n// iterate showTimes\n;(function(){\n var $$obj = showTimes;\n if ('number' == typeof $$obj.length) {\n for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) {\n var item = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__info\\\"\\u003E\\u003Cdiv class=\\\"showtimes__title\\\"\\u003E\" + (pug.escape(null == (pug_interp = item.header) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"showtimes__times-container\\\"\\u003E\";\nif (item.times) {\n// iterate item.times\n;(function(){\n var $$obj = item.times;\n if ('number' == typeof $$obj.length) {\n for (var pug_index2 = 0, $$l = $$obj.length; pug_index2 < $$l; pug_index2++) {\n var time = $$obj[pug_index2];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__time-wrapper\\\"\\u003E\\u003Ca\" + (\" class=\\\"showtimes__time\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", time.disabled ? 'javascript:void(0);' : time.link, true, true)+pug.attr(\"disabled\", time.disabled, true, true)) + \"\\u003E\" + (null == (pug_interp = time.timeDisplay) ? \"\" : pug_interp) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index2 in $$obj) {\n $$l++;\n var time = $$obj[pug_index2];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__time-wrapper\\\"\\u003E\\u003Ca\" + (\" class=\\\"showtimes__time\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", time.disabled ? 'javascript:void(0);' : time.link, true, true)+pug.attr(\"disabled\", time.disabled, true, true)) + \"\\u003E\" + (null == (pug_interp = time.timeDisplay) ? \"\" : pug_interp) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index1 in $$obj) {\n $$l++;\n var item = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__info\\\"\\u003E\\u003Cdiv class=\\\"showtimes__title\\\"\\u003E\" + (pug.escape(null == (pug_interp = item.header) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"showtimes__times-container\\\"\\u003E\";\nif (item.times) {\n// iterate item.times\n;(function(){\n var $$obj = item.times;\n if ('number' == typeof $$obj.length) {\n for (var pug_index3 = 0, $$l = $$obj.length; pug_index3 < $$l; pug_index3++) {\n var time = $$obj[pug_index3];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__time-wrapper\\\"\\u003E\\u003Ca\" + (\" class=\\\"showtimes__time\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", time.disabled ? 'javascript:void(0);' : time.link, true, true)+pug.attr(\"disabled\", time.disabled, true, true)) + \"\\u003E\" + (null == (pug_interp = time.timeDisplay) ? \"\" : pug_interp) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index3 in $$obj) {\n $$l++;\n var time = $$obj[pug_index3];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__time-wrapper\\\"\\u003E\\u003Ca\" + (\" class=\\\"showtimes__time\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", time.disabled ? 'javascript:void(0);' : time.link, true, true)+pug.attr(\"disabled\", time.disabled, true, true)) + \"\\u003E\" + (null == (pug_interp = time.timeDisplay) ? \"\" : pug_interp) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\n};\npug_mixins[\"showtimes\"](data.showTimesGrouped);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\n\n\n\n\n// iterate data \n;(function(){\n var $$obj = data ;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var month = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"ww-improv__section\",index==0 ? 'active': ''], [false,true]), false, true)+pug.attr(\"data-js-improv-section\", month.id, true, true)) + \"\\u003E\";\n// iterate month.shows\n;(function(){\n var $$obj = month.shows;\n if ('number' == typeof $$obj.length) {\n for (var pug_index5 = 0, $$l = $$obj.length; pug_index5 < $$l; pug_index5++) {\n var show = $$obj[pug_index5];\npug_mixins[\"improvMovieCard\"](\"improv\", show);\n }\n } else {\n var $$l = 0;\n for (var pug_index5 in $$obj) {\n $$l++;\n var show = $$obj[pug_index5];\npug_mixins[\"improvMovieCard\"](\"improv\", show);\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var month = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"ww-improv__section\",index==0 ? 'active': ''], [false,true]), false, true)+pug.attr(\"data-js-improv-section\", month.id, true, true)) + \"\\u003E\";\n// iterate month.shows\n;(function(){\n var $$obj = month.shows;\n if ('number' == typeof $$obj.length) {\n for (var pug_index6 = 0, $$l = $$obj.length; pug_index6 < $$l; pug_index6++) {\n var show = $$obj[pug_index6];\npug_mixins[\"improvMovieCard\"](\"improv\", show);\n }\n } else {\n var $$l = 0;\n for (var pug_index6 in $$obj) {\n $$l++;\n var show = $$obj[pug_index6];\npug_mixins[\"improvMovieCard\"](\"improv\", show);\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cdiv class=\\\"ww-improv__button-wrapper\\\" data-js-improv-nav\\u003E\\u003Cbutton class=\\\"ww-improv__button ww-improv__button--prev\\\" data-js-nav-month=\\\"prev\\\"\\u003E\\u003C\\u002Fbutton\\u003E\";\n// iterate data\n;(function(){\n var $$obj = data;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var month = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"ww-improv__month\",index==0 ? 'active':''], [false,true]), false, true)+pug.attr(\"data-js-month-display\", true, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = month.timeDisplay) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var month = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"ww-improv__month\",index==0 ? 'active':''], [false,true]), false, true)+pug.attr(\"data-js-month-display\", true, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = month.timeDisplay) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cbutton class=\\\"ww-improv__button ww-improv__button--next\\\" data-js-nav-month=\\\"next\\\"\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\" + (null == (pug_interp = require(\"../../components/improv-movie/back-to-top.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"data\" in locals_for_with?locals_for_with.data:typeof data!==\"undefined\"?data:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (data) {pug_html = pug_html + \"\\u003Cdiv class=\\\"ww-coming-soon layout__widget\\\"\\u003E\\u003Cdiv class=\\\"container\\\"\\u003E\\u003Cdiv class=\\\"movie-header__fandango\\\"\\u003E\\u003Cimg class=\\\"movie-header__fandango__logo\\\" src=\\\"\\u002Fassets\\u002Fimages\\u002FFandango.png\\\" alt=\\\"Powered By Fandago\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ww-coming-soon__wrapper\\\"\\u003E\\u003Cdiv class=\\\"ww-coming-soon__grid\\\"\\u003E\";\n// iterate data\n;(function(){\n var $$obj = data;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var movie = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"ww-coming-soon__col\\\"\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card\\\"\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card__img-container\\\"\\u003E\\u003Cimg\" + (pug.attr(\"src\", movie.images[1].url, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card__details\\\"\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card__premier\\\"\\u003E\" + (pug.escape(null == (pug_interp = movie.releaseDateDisplay) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Ch3 class=\\\"ww-coming-soon__card__title\\\"\\u003E\" + (pug.escape(null == (pug_interp = movie.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh3\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card__hover-container\\\"\\u003E\";\nif (movie.trailers[0]) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"ww-coming-soon__card__btn\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", movie.trailers[0].url, true, true)) + \"\\u003EWatch Trailer\\u003C\\u002Fa\\u003E\";\n}\nvar url = '/entertainment/movies/details?id=' + movie.id + '&comingSoon=true'\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"ww-coming-soon__card__btn\\\"\"+pug.attr(\"href\", url, true, true)) + \"\\u003EDetails\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var movie = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"ww-coming-soon__col\\\"\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card\\\"\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card__img-container\\\"\\u003E\\u003Cimg\" + (pug.attr(\"src\", movie.images[1].url, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card__details\\\"\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card__premier\\\"\\u003E\" + (pug.escape(null == (pug_interp = movie.releaseDateDisplay) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Ch3 class=\\\"ww-coming-soon__card__title\\\"\\u003E\" + (pug.escape(null == (pug_interp = movie.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh3\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card__hover-container\\\"\\u003E\";\nif (movie.trailers[0]) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"ww-coming-soon__card__btn\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", movie.trailers[0].url, true, true)) + \"\\u003EWatch Trailer\\u003C\\u002Fa\\u003E\";\n}\nvar url = '/entertainment/movies/details?id=' + movie.id + '&comingSoon=true'\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"ww-coming-soon__card__btn\\\"\"+pug.attr(\"href\", url, true, true)) + \"\\u003EDetails\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\" + (null == (pug_interp = require(\"../../components/improv-movie/back-to-top.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"data\" in locals_for_with?locals_for_with.data:typeof data!==\"undefined\"?data:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (data) {pug_html = pug_html + \"\\u003Cdiv class=\\\"ww-movie-details layout__widget\\\"\\u003E\";\npug_mixins[\"filter-buttons\"] = pug_interp = function(filters){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"filter-buttons\\\" data-filter-buttons-container\\u003E\\u003Cdiv class=\\\"filter-buttons__inner\\\"\\u003E\";\n// iterate filters\n;(function(){\n var $$obj = filters;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var filter = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv class=\\\"filter-buttons__filter\\\"\\u003E\\u003Cbutton\" + (pug.attr(\"class\", pug.classes([\"filter-buttons__filter__button\",index==0 ? 'active':''], [false,true]), false, true)+pug.attr(\"data-target\", filter.id, true, true)+pug.attr(\"data-filter-btn\", true, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = filter.dateDisplay) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var filter = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv class=\\\"filter-buttons__filter\\\"\\u003E\\u003Cbutton\" + (pug.attr(\"class\", pug.classes([\"filter-buttons__filter__button\",index==0 ? 'active':''], [false,true]), false, true)+pug.attr(\"data-target\", filter.id, true, true)+pug.attr(\"data-filter-btn\", true, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = filter.dateDisplay) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"showtimes\"] = pug_interp = function(showTimes){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\n// iterate showTimes\n;(function(){\n var $$obj = showTimes;\n if ('number' == typeof $$obj.length) {\n for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) {\n var item = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__info\\\"\\u003E\\u003Cdiv class=\\\"showtimes__title\\\"\\u003E\" + (pug.escape(null == (pug_interp = item.header) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"showtimes__times-container\\\"\\u003E\";\nif (item.times) {\n// iterate item.times\n;(function(){\n var $$obj = item.times;\n if ('number' == typeof $$obj.length) {\n for (var pug_index2 = 0, $$l = $$obj.length; pug_index2 < $$l; pug_index2++) {\n var time = $$obj[pug_index2];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__time-wrapper\\\"\\u003E\\u003Ca\" + (\" class=\\\"showtimes__time\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", time.disabled ? 'javascript:void(0);' : time.link, true, true)+pug.attr(\"disabled\", time.disabled, true, true)) + \"\\u003E\" + (null == (pug_interp = time.timeDisplay) ? \"\" : pug_interp) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index2 in $$obj) {\n $$l++;\n var time = $$obj[pug_index2];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__time-wrapper\\\"\\u003E\\u003Ca\" + (\" class=\\\"showtimes__time\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", time.disabled ? 'javascript:void(0);' : time.link, true, true)+pug.attr(\"disabled\", time.disabled, true, true)) + \"\\u003E\" + (null == (pug_interp = time.timeDisplay) ? \"\" : pug_interp) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index1 in $$obj) {\n $$l++;\n var item = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__info\\\"\\u003E\\u003Cdiv class=\\\"showtimes__title\\\"\\u003E\" + (pug.escape(null == (pug_interp = item.header) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"showtimes__times-container\\\"\\u003E\";\nif (item.times) {\n// iterate item.times\n;(function(){\n var $$obj = item.times;\n if ('number' == typeof $$obj.length) {\n for (var pug_index3 = 0, $$l = $$obj.length; pug_index3 < $$l; pug_index3++) {\n var time = $$obj[pug_index3];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__time-wrapper\\\"\\u003E\\u003Ca\" + (\" class=\\\"showtimes__time\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", time.disabled ? 'javascript:void(0);' : time.link, true, true)+pug.attr(\"disabled\", time.disabled, true, true)) + \"\\u003E\" + (null == (pug_interp = time.timeDisplay) ? \"\" : pug_interp) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index3 in $$obj) {\n $$l++;\n var time = $$obj[pug_index3];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__time-wrapper\\\"\\u003E\\u003Ca\" + (\" class=\\\"showtimes__time\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", time.disabled ? 'javascript:void(0);' : time.link, true, true)+pug.attr(\"disabled\", time.disabled, true, true)) + \"\\u003E\" + (null == (pug_interp = time.timeDisplay) ? \"\" : pug_interp) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"ww-movie-details__back-container\\\"\\u003E\\u003Cdiv class=\\\"container\\\"\\u003E\\u003Cdiv class=\\\"ww-movie-details__flex\\\"\\u003E\\u003Cdiv\\u003E\\u003Cdiv class=\\\"arrow-container\\\"\\u003E\\u003Cspan class=\\\"icomoon icomoon--Arrow\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"ww-movie-details__back-link\\\" href=\\\"javascript:void(0)\\\" onclick=\\\"window.history.back()\\\"\\u003EBack\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"container\\\"\\u003E\\u003Cdiv class=\\\"ww-movie-details__wrapper\\\"\\u003E\\u003Cdiv class=\\\"ww-movie-details__left\\\"\\u003E\\u003Cdiv class=\\\"ww-movie-details__mobile-top\\\"\\u003E\\u003Ch2 class=\\\"ww-movie-details__mobile-top__title\\\"\\u003E\" + (pug.escape(null == (pug_interp = data.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh2\\u003E\\u003Cspan class=\\\"ww-movie-details__mobile-top__details\\\"\\u003E\" + (null == (pug_interp = data.details) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ww-movie-details__image-container\\\"\\u003E\\u003Cimg\" + (pug.attr(\"src\", data.fullImage, true, true)+pug.attr(\"alt\", data.title, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ww-movie-details__right\\\"\\u003E\\u003Cdiv class=\\\"ww-movie-details__desktop\\\"\\u003E\\u003Ch1 class=\\\"ww-movie-details__desktop__title\\\"\\u003E\" + (pug.escape(null == (pug_interp = data.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh1\\u003E\\u003Cspan class=\\\"ww-movie-details__desktop__details\\\"\\u003E\" + (null == (pug_interp = data.details) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ww-movie-details__summary\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (data.synopses[0]) {\npug_html = pug_html + \"\\u003Cp\\u003E\" + (pug.escape(null == (pug_interp = data.synopses[0].description) ? \"\" : pug_interp)) + \"\\u003C\\u002Fp\\u003E\";\n}\nif (!data.comingSoon) {\npug_mixins[\"filter-buttons\"](data.showTimesByDate);\npug_html = pug_html + \"\\u003Cdiv class=\\\"ww-movie-details__showtimes-wrapper\\\"\\u003E\";\n// iterate data.showTimesByDate\n;(function(){\n var $$obj = data.showTimesByDate;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var day = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"ww-movie-details__showtimes-wrapper__showtime-section\",index==0 ? 'active': ''], [false,true]), false, true)+pug.attr(\"data-js-showtime-section\", true, true, true)) + \"\\u003E\\u003Cdiv class=\\\"ww-movie-details__showtimes-wrapper__showtime-card\\\"\\u003E\\u003Cdiv class=\\\"showtimes__select-showing\\\"\\u003E\\u003Ci class=\\\"showtimes__ticket-icon icomoon icomoon--ticket\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003Cspan class=\\\"showtimes__select-showing__text\\\"\\u003E\" + (pug.escape(null == (pug_interp = data.cta) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\npug_mixins[\"showtimes\"](day.showTimesGrouped);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var day = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"ww-movie-details__showtimes-wrapper__showtime-section\",index==0 ? 'active': ''], [false,true]), false, true)+pug.attr(\"data-js-showtime-section\", true, true, true)) + \"\\u003E\\u003Cdiv class=\\\"ww-movie-details__showtimes-wrapper__showtime-card\\\"\\u003E\\u003Cdiv class=\\\"showtimes__select-showing\\\"\\u003E\\u003Ci class=\\\"showtimes__ticket-icon icomoon icomoon--ticket\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003Cspan class=\\\"showtimes__select-showing__text\\\"\\u003E\" + (pug.escape(null == (pug_interp = data.cta) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\npug_mixins[\"showtimes\"](day.showTimesGrouped);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\nif (data.trailers && data.trailers.length) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"ww-movie-details__trailers\\\"\\u003E\\u003Ch2 class=\\\"ww-movie-details__trailers__title\\\"\\u003ETrailers\\u003C\\u002Fh2\\u003E\\u003Cdiv class=\\\"ww-movie-details__trailers__grid\\\"\\u003E\";\n// iterate data.trailers\n;(function(){\n var $$obj = data.trailers;\n if ('number' == typeof $$obj.length) {\n for (var pug_index5 = 0, $$l = $$obj.length; pug_index5 < $$l; pug_index5++) {\n var trailer = $$obj[pug_index5];\npug_html = pug_html + \"\\u003Cdiv class=\\\"ww-movie-details__trailers__col\\\"\\u003E\\u003Ca\" + (\" class=\\\"ww-movie-details__trailers__link\\\"\"+pug.attr(\"href\", trailer.url, true, true)+\" target=\\\"_blank\\\"\") + \"\\u003E\\u003Cimg\" + (pug.attr(\"src\", trailer.images[0].url, true, true)+pug.attr(\"alt\", trailer.title, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index5 in $$obj) {\n $$l++;\n var trailer = $$obj[pug_index5];\npug_html = pug_html + \"\\u003Cdiv class=\\\"ww-movie-details__trailers__col\\\"\\u003E\\u003Ca\" + (\" class=\\\"ww-movie-details__trailers__link\\\"\"+pug.attr(\"href\", trailer.url, true, true)+\" target=\\\"_blank\\\"\") + \"\\u003E\\u003Cimg\" + (pug.attr(\"src\", trailer.images[0].url, true, true)+pug.attr(\"alt\", trailer.title, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"data\" in locals_for_with?locals_for_with.data:typeof data!==\"undefined\"?data:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (data) {pug_mixins[\"improvMovieCard\"] = pug_interp = function(type, data, index){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"show-card show-card--\" + type], [true]), false, true)) + \"\\u003E\\u003Cdiv class=\\\"show-card__container\\\"\\u003E\\u003Cdiv class=\\\"show-card__top-section\\\"\\u003E\";\nif (type === 'movie') {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"show-card__top-section__link\\\"\"+pug.attr(\"href\", data.detailPageUrl, true, true)) + \"\\u003E\\u003Cimg\" + (pug.attr(\"src\", data.image, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cimg\" + (pug.attr(\"src\", data.image, true, true)) + \"\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"show-card__info-container mobile\\\"\\u003E\";\nif (type === 'movie') {\npug_html = pug_html + \"\\u003Ch2 class=\\\"show-card__title\\\"\\u003E\\u003Ca\" + (\" class=\\\"show-card__title__link\\\"\"+pug.attr(\"href\", data.detailPageUrl, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = data.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fh2\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ch2 class=\\\"show-card__title\\\"\\u003E\" + (pug.escape(null == (pug_interp = data.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh2\\u003E\";\n}\nif (data.details) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"show-card__movie-details\\\"\\u003E\" + (null == (pug_interp = data.details) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"show-card__info-container desktop\\\"\\u003E\";\nif (type === 'movie') {\npug_html = pug_html + \"\\u003Ch2 class=\\\"show-card__title\\\"\\u003E\\u003Ca\" + (\" class=\\\"show-card__title__link\\\"\"+pug.attr(\"href\", data.detailPageUrl, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = data.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fh2\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ch2 class=\\\"show-card__title\\\"\\u003E\" + (pug.escape(null == (pug_interp = data.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh2\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__select-showing\\\"\\u003E \";\nif (type === 'movie' || type === 'improv') {\npug_html = pug_html + \"\\u003Ci class=\\\"showtimes__ticket-icon icomoon icomoon--ticket\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003Cspan class=\\\"showtimes__select-showing__text\\\"\\u003E\" + (pug.escape(null == (pug_interp = data.cta) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\npug_mixins[\"showtimes\"] = pug_interp = function(showTimes){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\n// iterate showTimes\n;(function(){\n var $$obj = showTimes;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var item = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__info\\\"\\u003E\\u003Cdiv class=\\\"showtimes__title\\\"\\u003E\" + (pug.escape(null == (pug_interp = item.header) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"showtimes__times-container\\\"\\u003E\";\nif (item.times) {\n// iterate item.times\n;(function(){\n var $$obj = item.times;\n if ('number' == typeof $$obj.length) {\n for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) {\n var time = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__time-wrapper\\\"\\u003E\\u003Ca\" + (\" class=\\\"showtimes__time\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", time.disabled ? 'javascript:void(0);' : time.link, true, true)+pug.attr(\"disabled\", time.disabled, true, true)) + \"\\u003E\" + (null == (pug_interp = time.timeDisplay) ? \"\" : pug_interp) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index1 in $$obj) {\n $$l++;\n var time = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__time-wrapper\\\"\\u003E\\u003Ca\" + (\" class=\\\"showtimes__time\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", time.disabled ? 'javascript:void(0);' : time.link, true, true)+pug.attr(\"disabled\", time.disabled, true, true)) + \"\\u003E\" + (null == (pug_interp = time.timeDisplay) ? \"\" : pug_interp) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var item = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__info\\\"\\u003E\\u003Cdiv class=\\\"showtimes__title\\\"\\u003E\" + (pug.escape(null == (pug_interp = item.header) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"showtimes__times-container\\\"\\u003E\";\nif (item.times) {\n// iterate item.times\n;(function(){\n var $$obj = item.times;\n if ('number' == typeof $$obj.length) {\n for (var pug_index2 = 0, $$l = $$obj.length; pug_index2 < $$l; pug_index2++) {\n var time = $$obj[pug_index2];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__time-wrapper\\\"\\u003E\\u003Ca\" + (\" class=\\\"showtimes__time\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", time.disabled ? 'javascript:void(0);' : time.link, true, true)+pug.attr(\"disabled\", time.disabled, true, true)) + \"\\u003E\" + (null == (pug_interp = time.timeDisplay) ? \"\" : pug_interp) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index2 in $$obj) {\n $$l++;\n var time = $$obj[pug_index2];\npug_html = pug_html + \"\\u003Cdiv class=\\\"showtimes__time-wrapper\\\"\\u003E\\u003Ca\" + (\" class=\\\"showtimes__time\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", time.disabled ? 'javascript:void(0);' : time.link, true, true)+pug.attr(\"disabled\", time.disabled, true, true)) + \"\\u003E\" + (null == (pug_interp = time.timeDisplay) ? \"\" : pug_interp) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\n};\npug_mixins[\"showtimes\"](data.showTimesGrouped);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"filter-buttons\"] = pug_interp = function(filters){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"filter-buttons\\\" data-filter-buttons-container\\u003E\\u003Cdiv class=\\\"filter-buttons__inner\\\"\\u003E\";\n// iterate filters\n;(function(){\n var $$obj = filters;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var filter = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv class=\\\"filter-buttons__filter\\\"\\u003E\\u003Cbutton\" + (pug.attr(\"class\", pug.classes([\"filter-buttons__filter__button\",index==0 ? 'active':''], [false,true]), false, true)+pug.attr(\"data-target\", filter.id, true, true)+pug.attr(\"data-filter-btn\", true, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = filter.dateDisplay) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var filter = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv class=\\\"filter-buttons__filter\\\"\\u003E\\u003Cbutton\" + (pug.attr(\"class\", pug.classes([\"filter-buttons__filter__button\",index==0 ? 'active':''], [false,true]), false, true)+pug.attr(\"data-target\", filter.id, true, true)+pug.attr(\"data-filter-btn\", true, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = filter.dateDisplay) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\n\n\n\n\npug_html = pug_html + \"\\u003Cdiv\\u003E\";\nif (data[0]) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"movie-slider__slider\\\" data-slider\\u003E\\u003Cdiv class=\\\"movie-slider__pager movie-slider__pager--left\\\" data-prev\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"movie-slider__pager movie-slider__pager--right\\\" data-next\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"movie-slider__inner\\\" data-inner\\u003E\";\n// iterate data[0].movies\n;(function(){\n var $$obj = data[0].movies;\n if ('number' == typeof $$obj.length) {\n for (var pug_index4 = 0, $$l = $$obj.length; pug_index4 < $$l; pug_index4++) {\n var movie = $$obj[pug_index4];\npug_html = pug_html + \"\\u003Cdiv class=\\\"movie-slider__slide\\\"\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card\\\"\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card__img-container\\\"\\u003E\\u003Cimg\" + (pug.attr(\"src\", movie.images[1].url, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card__hover-container\\\"\\u003E\";\nif (movie.trailers[0]) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"ww-coming-soon__card__btn\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", movie.trailers[0].url, true, true)) + \"\\u003EWatch Trailer\\u003C\\u002Fa\\u003E\";\n}\nvar url = '/entertainment/movies/details?comingSoon=false&id=' + movie.id;\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"ww-coming-soon__card__btn\\\"\"+pug.attr(\"href\", url, true, true)) + \"\\u003EDetails\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index4 in $$obj) {\n $$l++;\n var movie = $$obj[pug_index4];\npug_html = pug_html + \"\\u003Cdiv class=\\\"movie-slider__slide\\\"\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card\\\"\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card__img-container\\\"\\u003E\\u003Cimg\" + (pug.attr(\"src\", movie.images[1].url, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ww-coming-soon__card__hover-container\\\"\\u003E\";\nif (movie.trailers[0]) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"ww-coming-soon__card__btn\\\"\"+\" target=\\\"_blank\\\"\"+pug.attr(\"href\", movie.trailers[0].url, true, true)) + \"\\u003EWatch Trailer\\u003C\\u002Fa\\u003E\";\n}\nvar url = '/entertainment/movies/details?comingSoon=false&id=' + movie.id;\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"ww-coming-soon__card__btn\\\"\"+pug.attr(\"href\", url, true, true)) + \"\\u003EDetails\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"container\\\"\\u003E\";\npug_mixins[\"filter-buttons\"](data);\n// iterate data\n;(function(){\n var $$obj = data;\n if ('number' == typeof $$obj.length) {\n for (var index = 0, $$l = $$obj.length; index < $$l; index++) {\n var day = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"ww-movies__section\",index==0 ? 'active': ''], [false,true]), false, true)+pug.attr(\"data-js-movie-section\", true, true, true)) + \"\\u003E\";\n// iterate day.movies\n;(function(){\n var $$obj = day.movies;\n if ('number' == typeof $$obj.length) {\n for (var pug_index6 = 0, $$l = $$obj.length; pug_index6 < $$l; pug_index6++) {\n var movie = $$obj[pug_index6];\npug_mixins[\"improvMovieCard\"](\"movie\", movie);\n }\n } else {\n var $$l = 0;\n for (var pug_index6 in $$obj) {\n $$l++;\n var movie = $$obj[pug_index6];\npug_mixins[\"improvMovieCard\"](\"movie\", movie);\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var index in $$obj) {\n $$l++;\n var day = $$obj[index];\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"ww-movies__section\",index==0 ? 'active': ''], [false,true]), false, true)+pug.attr(\"data-js-movie-section\", true, true, true)) + \"\\u003E\";\n// iterate day.movies\n;(function(){\n var $$obj = day.movies;\n if ('number' == typeof $$obj.length) {\n for (var pug_index7 = 0, $$l = $$obj.length; pug_index7 < $$l; pug_index7++) {\n var movie = $$obj[pug_index7];\npug_mixins[\"improvMovieCard\"](\"movie\", movie);\n }\n } else {\n var $$l = 0;\n for (var pug_index7 in $$obj) {\n $$l++;\n var movie = $$obj[pug_index7];\npug_mixins[\"improvMovieCard\"](\"movie\", movie);\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + (null == (pug_interp = require(\"../../components/improv-movie/back-to-top.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"data\" in locals_for_with?locals_for_with.data:typeof data!==\"undefined\"?data:undefined));;return pug_html;};\nmodule.exports = template;","'use strict';\n\nvar pug_has_own_property = Object.prototype.hasOwnProperty;\n\n/**\n * Merge two attribute objects giving precedence\n * to values in object `b`. Classes are special-cased\n * allowing for arrays and merging/joining appropriately\n * resulting in a string.\n *\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n * @api private\n */\n\nexports.merge = pug_merge;\nfunction pug_merge(a, b) {\n if (arguments.length === 1) {\n var attrs = a[0];\n for (var i = 1; i < a.length; i++) {\n attrs = pug_merge(attrs, a[i]);\n }\n return attrs;\n }\n\n for (var key in b) {\n if (key === 'class') {\n var valA = a[key] || [];\n a[key] = (Array.isArray(valA) ? valA : [valA]).concat(b[key] || []);\n } else if (key === 'style') {\n var valA = pug_style(a[key]);\n valA = valA && valA[valA.length - 1] !== ';' ? valA + ';' : valA;\n var valB = pug_style(b[key]);\n valB = valB && valB[valB.length - 1] !== ';' ? valB + ';' : valB;\n a[key] = valA + valB;\n } else {\n a[key] = b[key];\n }\n }\n\n return a;\n};\n\n/**\n * Process array, object, or string as a string of classes delimited by a space.\n *\n * If `val` is an array, all members of it and its subarrays are counted as\n * classes. If `escaping` is an array, then whether or not the item in `val` is\n * escaped depends on the corresponding item in `escaping`. If `escaping` is\n * not an array, no escaping is done.\n *\n * If `val` is an object, all the keys whose value is truthy are counted as\n * classes. No escaping is done.\n *\n * If `val` is a string, it is counted as a class. No escaping is done.\n *\n * @param {(Array.|Object.|string)} val\n * @param {?Array.} escaping\n * @return {String}\n */\nexports.classes = pug_classes;\nfunction pug_classes_array(val, escaping) {\n var classString = '', className, padding = '', escapeEnabled = Array.isArray(escaping);\n for (var i = 0; i < val.length; i++) {\n className = pug_classes(val[i]);\n if (!className) continue;\n escapeEnabled && escaping[i] && (className = pug_escape(className));\n classString = classString + padding + className;\n padding = ' ';\n }\n return classString;\n}\nfunction pug_classes_object(val) {\n var classString = '', padding = '';\n for (var key in val) {\n if (key && val[key] && pug_has_own_property.call(val, key)) {\n classString = classString + padding + key;\n padding = ' ';\n }\n }\n return classString;\n}\nfunction pug_classes(val, escaping) {\n if (Array.isArray(val)) {\n return pug_classes_array(val, escaping);\n } else if (val && typeof val === 'object') {\n return pug_classes_object(val);\n } else {\n return val || '';\n }\n}\n\n/**\n * Convert object or string to a string of CSS styles delimited by a semicolon.\n *\n * @param {(Object.|string)} val\n * @return {String}\n */\n\nexports.style = pug_style;\nfunction pug_style(val) {\n if (!val) return '';\n if (typeof val === 'object') {\n var out = '';\n for (var style in val) {\n /* istanbul ignore else */\n if (pug_has_own_property.call(val, style)) {\n out = out + style + ':' + val[style] + ';';\n }\n }\n return out;\n } else {\n return val + '';\n }\n};\n\n/**\n * Render the given attribute.\n *\n * @param {String} key\n * @param {String} val\n * @param {Boolean} escaped\n * @param {Boolean} terse\n * @return {String}\n */\nexports.attr = pug_attr;\nfunction pug_attr(key, val, escaped, terse) {\n if (val === false || val == null || !val && (key === 'class' || key === 'style')) {\n return '';\n }\n if (val === true) {\n return ' ' + (terse ? key : key + '=\"' + key + '\"');\n }\n var type = typeof val;\n if ((type === 'object' || type === 'function') && typeof val.toJSON === 'function') {\n val = val.toJSON();\n }\n if (typeof val !== 'string') {\n val = JSON.stringify(val);\n if (!escaped && val.indexOf('\"') !== -1) {\n return ' ' + key + '=\\'' + val.replace(/'/g, ''') + '\\'';\n }\n }\n if (escaped) val = pug_escape(val);\n return ' ' + key + '=\"' + val + '\"';\n};\n\n/**\n * Render the given attributes object.\n *\n * @param {Object} obj\n * @param {Object} terse whether to use HTML5 terse boolean attributes\n * @return {String}\n */\nexports.attrs = pug_attrs;\nfunction pug_attrs(obj, terse){\n var attrs = '';\n\n for (var key in obj) {\n if (pug_has_own_property.call(obj, key)) {\n var val = obj[key];\n\n if ('class' === key) {\n val = pug_classes(val);\n attrs = pug_attr(key, val, false, terse) + attrs;\n continue;\n }\n if ('style' === key) {\n val = pug_style(val);\n }\n attrs += pug_attr(key, val, false, terse);\n }\n }\n\n return attrs;\n};\n\n/**\n * Escape the given string of `html`.\n *\n * @param {String} html\n * @return {String}\n * @api private\n */\n\nvar pug_match_html = /[\"&<>]/;\nexports.escape = pug_escape;\nfunction pug_escape(_html){\n var html = '' + _html;\n var regexResult = pug_match_html.exec(html);\n if (!regexResult) return _html;\n\n var result = '';\n var i, lastIndex, escape;\n for (i = regexResult.index, lastIndex = 0; i < html.length; i++) {\n switch (html.charCodeAt(i)) {\n case 34: escape = '"'; break;\n case 38: escape = '&'; break;\n case 60: escape = '<'; break;\n case 62: escape = '>'; break;\n default: continue;\n }\n if (lastIndex !== i) result += html.substring(lastIndex, i);\n lastIndex = i + 1;\n result += escape;\n }\n if (lastIndex !== i) return result + html.substring(lastIndex, i);\n else return result;\n};\n\n/**\n * Re-throw the given `err` in context to the\n * the pug in `filename` at the given `lineno`.\n *\n * @param {Error} err\n * @param {String} filename\n * @param {String} lineno\n * @param {String} str original source\n * @api private\n */\n\nexports.rethrow = pug_rethrow;\nfunction pug_rethrow(err, filename, lineno, str){\n if (!(err instanceof Error)) throw err;\n if ((typeof window != 'undefined' || !filename) && !str) {\n err.message += ' on line ' + lineno;\n throw err;\n }\n try {\n str = str || require('fs').readFileSync(filename, 'utf8')\n } catch (ex) {\n pug_rethrow(err, null, lineno)\n }\n var context = 3\n , lines = str.split('\\n')\n , start = Math.max(lineno - context, 0)\n , end = Math.min(lines.length, lineno + context);\n\n // Error context\n var context = lines.slice(start, end).map(function(line, i){\n var curr = i + start + 1;\n return (curr == lineno ? ' > ' : ' ')\n + curr\n + '| '\n + line;\n }).join('\\n');\n\n // Alter exception message\n err.path = filename;\n err.message = (filename || 'Pug') + ':' + lineno\n + '\\n' + context + '\\n\\n' + err.message;\n throw err;\n};\n","/**\n * polyfill for document.scrollingElement\n * https://github.com/yangg/scrolling-element\n */\n(function () {\n if (document.scrollingElement) {\n return\n }\n var element = null\n function scrollingElement () {\n if (element) {\n return element\n } else if (document.body.scrollTop) {\n // speed up if scrollTop > 0\n return (element = document.body)\n }\n var iframe = document.createElement('iframe')\n iframe.style.height = '1px'\n document.documentElement.appendChild(iframe)\n var doc = iframe.contentWindow.document\n doc.write('
x
')\n doc.close()\n var isCompliant = doc.documentElement.scrollHeight > doc.body.scrollHeight\n iframe.parentNode.removeChild(iframe)\n return (element = isCompliant ? document.documentElement : document.body)\n }\n Object.defineProperty(document, 'scrollingElement', {\n get: scrollingElement\n })\n})()\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// A readyState of 4 indicates the request has completed: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState\r\nconst STATE_DONE = 4;\r\n\r\n// An HTTP response code of 200 indicates success.\r\nconst STATUS_SUCCESS = 200;\r\n\r\n// HTTP request method to get data from the server: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET\r\nconst METHOD_POST = \"GET\";\r\n\r\n/**\r\n * Gets data from the server with AJAX.\r\n * @param url {string} The URL to get the data from.\r\n * @returns {Promise} A promise that resolves once the request is complete.\r\n * @constructor\r\n */\r\nfunction SendRequest(url) {\r\n\r\n // Variables.\r\n let self = this, state;\r\n\r\n // Instance variables.\r\n this.request = new XMLHttpRequest();\r\n\r\n // Return a promise that will resolve once the AJAX request has returned from the server.\r\n return new Promise(function (resolve, reject) {\r\n\r\n // Initiate the AJAX request.\r\n self.request.onreadystatechange = function () {\r\n state = self.handleStateChange();\r\n if (state && state.status === STATUS_SUCCESS) {\r\n resolve(state);\r\n } else if (state && state.status !== STATUS_SUCCESS) {\r\n reject(state);\r\n }\r\n };\r\n self.request.open(METHOD_POST, url, true);\r\n self.request.send();\r\n });\r\n\r\n}\r\n\r\n/**\r\n * Called whenever the state changes for the AJAX call.\r\n * @returns {{} | null} The result of the state change, or null if it's an irrelevant state change.\r\n */\r\nSendRequest.prototype.handleStateChange = function () {\r\n\r\n // Is the request done?\r\n if (this.request.readyState === STATE_DONE) {\r\n\r\n // Was the request successful?\r\n if (this.request.status === STATUS_SUCCESS){\r\n\r\n // Success.\r\n return {\r\n status: STATUS_SUCCESS,\r\n text: this.request.responseText\r\n };\r\n\r\n } else {\r\n\r\n // Error.\r\n return {\r\n status: this.request.status\r\n };\r\n\r\n }\r\n\r\n }\r\n\r\n // Not a state change we care about.\r\n return null;\r\n\r\n};\r\n\r\n// Export the function that sends an AJAX request.\r\nexport default SendRequest;","// Dependencies.\r\nimport SendRequest from \"../../lib/ajax\";\r\n\r\n// Ensure validators have been initialized.\r\nlet key = \"formulate-plain-js-validators\";\r\nwindow[key] = window[key] || [];\r\n\r\n/**\r\n * Validates a field to ensure its value is a valid email address.\r\n * @constructor\r\n */\r\nfunction BriteVerifyValidator() {\r\n}\r\n\r\n/**\r\n * Validates the the specified text is a valid email address.\r\n * @param value {string} The text value to validate.\r\n * @returns {Promise} A promise that resolves to true, if the text is valid; otherwise, false.\r\n */\r\nBriteVerifyValidator.prototype.validateText = function (value) {\r\n return new Promise(function (resolve) {\r\n let encodedEmail = encodeURIComponent(value),\r\n url = \"/umbraco/rhythm/briteverifyapi/verify?email=\" + encodedEmail;\r\n new SendRequest(url)\r\n .then(function (result) {\r\n let success = result.text === \"true\";\r\n resolve(success);\r\n });\r\n });\r\n};\r\n\r\n// Does nothing. Only here to satisfy the contract.\r\nBriteVerifyValidator.prototype.validateTextArray = function (value) {\r\n return new Promise(function (resolve) {\r\n\r\n // Fake it, as we don't care about validating text arrays.\r\n resolve(true);\r\n\r\n });\r\n};\r\n\r\n// Does nothing. Only here to satisfy the contract.\r\nBriteVerifyValidator.prototype.validateFile = function (value) {\r\n return new Promise(function (resolve) {\r\n\r\n // Fake it, as we don't care about validating files.\r\n resolve(true);\r\n\r\n });\r\n};\r\n\r\n// Store the field validator configuration so Formulate will pick it up.\r\nwindow[key].push({\r\n key: \"ValidationBriteVerify\",\r\n validator: BriteVerifyValidator\r\n});","// https://github.com/yangg/scrolling-element\r\nimport 'scrolling-element'\r\n\r\n// from:https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md\r\n(function (arr) {\r\n arr.forEach(function (item) {\r\n if (item.hasOwnProperty('remove')) {\r\n return;\r\n }\r\n Object.defineProperty(item, 'remove', {\r\n configurable: true,\r\n enumerable: true,\r\n writable: true,\r\n value: function remove() {\r\n if (this.parentNode !== null)\r\n this.parentNode.removeChild(this);\r\n }\r\n });\r\n });\r\n })([Element.prototype, CharacterData.prototype, DocumentType.prototype]);\r\n\r\n (function(){\r\n if (typeof Object.assign != 'function') {\r\n // Must be writable: true, enumerable: false, configurable: true\r\n Object.defineProperty(Object, \"assign\", {\r\n value: function assign(target, varArgs) { // .length of function is 2\r\n 'use strict';\r\n if (target == null) { // TypeError if undefined or null\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n \r\n var to = Object(target);\r\n \r\n for (var index = 1; index < arguments.length; index++) {\r\n var nextSource = arguments[index];\r\n \r\n if (nextSource != null) { // Skip over if undefined or null\r\n for (var nextKey in nextSource) {\r\n // Avoid bugs when hasOwnProperty is shadowed\r\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n return to;\r\n },\r\n writable: true,\r\n configurable: true\r\n });\r\n }\r\n })();\r\n\r\n // Overwrites native 'firstElementChild' prototype.\r\n// Adds Document & DocumentFragment support for IE9 & Safari.\r\n// Returns array instead of HTMLCollection.\r\n// https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/firstElementChild\r\n(function(constructor) {\r\n if (constructor &&\r\n constructor.prototype &&\r\n constructor.prototype.firstElementChild == null) {\r\n Object.defineProperty(constructor.prototype, 'firstElementChild', {\r\n get: function() {\r\n var node, nodes = this.childNodes, i = 0;\r\n while (node = nodes[i++]) {\r\n if (node.nodeType === 1) {\r\n return node;\r\n }\r\n }\r\n return null;\r\n }\r\n });\r\n }\r\n})(window.Node || window.Element);\r\n","export const mqMap = {\r\n xs: 480,\r\n sm: 768,\r\n md: 980,\r\n lg: 1280,\r\n xl: 1690,\r\n navDesktop: 1690,\r\n};\r\n\r\nexport const widgetSpacing = {\r\n default: 40,\r\n md: 60,\r\n}\r\n\r\nexport const duration = 300;\r\nexport const navDesktopMQ = 'navDesktop';\r\nexport const mobileNavHeight = 60;","import {mqMap} from './const';\r\n\r\nexport function mq(breakpoint, direction = 'min-width') {\r\n if(mqMap.hasOwnProperty(breakpoint)) {\r\n breakpoint = mqMap[breakpoint] + 'px';\r\n }\r\n\r\n // if we pass in two breaks, do the inbetwen thingy\r\n if(mqMap.hasOwnProperty(direction)) {\r\n breakpoint = [breakpoint];\r\n\r\n breakpoint.push(mqMap[direction] + 'px');\r\n }\r\n let query;\r\n if(typeof breakpoint === 'string') {\r\n query = `(${direction}: ${breakpoint})`;\r\n }else{\r\n query = `(min-width: ${breakpoint[0]}) and (max-width: ${breakpoint[1]})`;\r\n }\r\n\r\n return window.matchMedia(query).matches;\r\n}\r\n\r\n/**\r\n * Debounces a function to minimize the number of times it gets called over a given time interval.\r\n * @param fn The function to bounce.\r\n * @param interval The number of milliseconds to debounce.\r\n * @param slide {boolean} The \"slide\" option will cause the function execution to slide further into\r\n * the future each time the function is called. Defaults to true. When false, the function\r\n * will execute within the timeout regardless of prior calls.\r\n * @returns {Function} The function that is debounced.\r\n */\r\nexport function debounce(fn, interval, slide) {\r\n\r\n // Set default.\r\n slide = typeof(slide) === 'undefined'\r\n ? true\r\n : slide;\r\n\r\n // Which sort of debounce should be executed?\r\n if (slide) {\r\n return debounceWithSlide(fn, interval, this);\r\n } else {\r\n return debounceWithoutSlide(fn, interval, this);\r\n }\r\n\r\n}\r\n\r\nfunction debounceWithSlide(fn, interval, context) {\r\n let timeout;\r\n return () => {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(fn.apply.bind(fn, this, arguments), interval);\r\n };\r\n}\r\n\r\nfunction debounceWithoutSlide(fn, interval, context) {\r\n let timeout = null;\r\n return () => {\r\n if (timeout) {\r\n return;\r\n }\r\n timeout = setTimeout(function () {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n fn.apply.bind(fn, context, arguments)();\r\n }, interval);\r\n };\r\n}\r\n\r\n/**\r\n * Added because the above debounce did not provide correct context\r\n * If `immediate` is passed, trigger the function on the leading edge, instead of the trailing.\r\n * @export\r\n * @param {*} func\r\n * @param {*} wait\r\n * @param {*} immediate\r\n * @returns\r\n */\r\nexport function debounce2(func, wait, immediate) {\r\n\tvar timeout;\r\n\treturn function() {\r\n\t\tvar context = this, args = arguments;\r\n\t\tvar later = function() {\r\n\t\t\ttimeout = null;\r\n\t\t\tif (!immediate) func.apply(context, args);\r\n\t\t};\r\n\t\tvar callNow = immediate && !timeout;\r\n\t\tclearTimeout(timeout);\r\n\t\ttimeout = setTimeout(later, wait);\r\n\t\tif (callNow) func.apply(context, args);\r\n\t};\r\n};\r\n\r\n/**\r\n * Creates a custom event, extra steps for IE support\r\n *\r\n * @export\r\n * @param {string} name\r\n */\r\nexport function createEvent(name) {\r\n const event = document.createEvent('Event');\r\n\r\n event.initEvent(name, true, true);\r\n return event;\r\n}\r\n\r\nexport function each(nodeList, cb) {\r\n if(!nodeList.length) {\r\n return;\r\n }\r\n for (let i = 0; i < nodeList.length; i++) {\r\n cb(nodeList[i], i);\r\n }\r\n}\r\n\r\nexport function removeChildren(node) {\r\n while (node.firstChild) {\r\n node.removeChild(node.firstChild);\r\n }\r\n}\r\n\r\n/**\r\n * Simulate a click event.\r\n * @public\r\n * @param {Element} elem the element to simulate a click on\r\n */\r\nexport function click(elem) {\r\n\t// Create our event (with options)\r\n\tvar evt = new MouseEvent('click', {\r\n\t\tbubbles: true,\r\n\t\tcancelable: true,\r\n\t\tview: window\r\n\t});\r\n\t// If cancelled, don't dispatch our event\r\n\tvar canceled = !elem.dispatchEvent(evt);\r\n};\r\n\r\nexport function getUrlParamByName(parameterName) {\r\n var result = null,\r\n tmp = [];\r\n location.search\r\n .substr(1)\r\n .split(\"&\")\r\n .forEach(function (item) {\r\n tmp = item.split(\"=\");\r\n if (tmp[0] === parameterName) result = decodeURIComponent(tmp[1]);\r\n });\r\n return result;\r\n}\r\n\r\n\r\nexport function scrollTo(element, to, duration) {\r\n var start = element.scrollTop,\r\n change = to - start,\r\n currentTime = 0,\r\n increment = 20;\r\n\r\n var animateScroll = function(){\r\n currentTime += increment;\r\n var val = Math.easeInOutQuad(currentTime, start, change, duration);\r\n element.scrollTop = val;\r\n if(currentTime < duration) {\r\n setTimeout(animateScroll, increment);\r\n }\r\n };\r\n animateScroll();\r\n}\r\n\r\nexport function scrollToPosition(to, duration) {\r\n var scrollY = (window.scrollY || window.pageYOffset);\r\n\r\n if (scrollY == to) return;\r\n\r\n var diff = to - scrollY;\r\n var scrollStep = Math.PI / (duration / 10);\r\n var count = 0;\r\n var start = scrollY;\r\n var currPos = scrollY;\r\n\r\n var scrollInterval = setInterval(function() {\r\n if (currPos != to) {\r\n count = count + 1;\r\n currPos = start + diff * (0.5 - 0.5 * Math.cos(count * scrollStep));\r\n window.scrollTo(0, currPos);\r\n scrollY = (window.scrollY || window.pageYOffset);\r\n } else {\r\n clearInterval(scrollInterval);\r\n }\r\n }, 10);\r\n};\r\n\r\n//t = current time\r\n//b = start value\r\n//c = change in value\r\n//d = duration\r\nMath.easeInOutQuad = function (t, b, c, d) {\r\n t /= d/2;\r\n if (t < 1) return c/2*t*t + b;\r\n t--;\r\n return -c/2 * (t*(t-2) - 1) + b;\r\n};\r\n\r\n// you guessed it, capitalizes a strings first letter\r\nexport function capitalizeFirstLetter(string) {\r\n return string.charAt(0).toUpperCase() + string.toLowerCase().slice(1);\r\n}\r\n\r\nexport function getIndex(elem){\r\n var i= 0;\r\n while((elem=elem.previousElementSibling)!=null) ++i;\r\n return i;\r\n}\r\n\r\nexport function isMobileSafari(){\r\n var ua = window.navigator.userAgent;\r\n var iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\r\n var webkit = !!ua.match(/WebKit/i);\r\n return iOS && webkit && !ua.match(/CriOS/i);\r\n}\r\n\r\nexport function getCookie(name) {\r\n\tvar value = \"; \" + document.cookie;\r\n\tvar parts = value.split(\"; \" + name + \"=\");\r\n\tif (parts.length == 2) return parts.pop().split(\";\").shift();\r\n};\r\n\r\nexport function setCookie(name, value, days = 30) {\r\n var d = new Date;\r\n d.setTime(d.getTime() + 24*60*60*1000*days);\r\n document.cookie = name + \"=\" + value + \";path=/;expires=\" + d.toGMTString();\r\n}\r\n\r\nexport function compareStrings(a, b) {\r\n if (typeof a === 'undefined' || typeof b === 'undefined')\r\n {\r\n return false;\r\n }\r\n\r\n return a.toLowerCase() === b.toLowerCase();\r\n}\r\n\r\n/**\r\n* Determine the mobile operating system.\r\n* This function returns one of 'iOS', 'Android', 'Windows Phone', or 'unknown'.\r\n*\r\n* @returns {String}\r\n*/\r\nexport function getMobileOperatingSystem() {\r\n var userAgent = navigator.userAgent || navigator.vendor || window.opera;\r\n\r\n // Windows Phone must come first because its UA also contains \"Android\"\r\n if (/windows phone/i.test(userAgent)) {\r\n return \"Windows Phone\";\r\n }\r\n\r\n if (/android/i.test(userAgent)) {\r\n return \"Android\";\r\n }\r\n\r\n // iOS detection from: http://stackoverflow.com/a/9039885/177710\r\n if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {\r\n return \"iOS\";\r\n }\r\n\r\n return \"unknown\";\r\n}\r\n\r\n\r\nexport function addDataLayerItem(item){\r\n if (Object.keys(item).length > 0){\r\n window.dataLayer = window.dataLayer || [];\r\n item[\"event\"] = 'isc custom event';\r\n window.dataLayer.push(item);\r\n }\r\n\r\n}","const bodyService = {\r\n\r\n lock: function() {\r\n if(!document.body.classList.contains('lock')) {\r\n document.body.classList.add('lock');\r\n }\r\n },\r\n\r\n unlock: function() {\r\n document.body.classList.remove('lock');\r\n }\r\n}\r\n\r\nexport default bodyService;","export default class DomComponent {\r\n el;\r\n static refs = [];\r\n\r\n static defaultOpts = {\r\n cache: false\r\n };\r\n\r\n constructor(el, opts = {}) {\r\n\r\n if(!el) {\r\n return false;\r\n }\r\n\r\n opts = Object.assign({}, DomComponent.defaultOpts, opts)\r\n\r\n this.el = el;\r\n this.el.classList.add('js');\r\n\r\n if(opts.cache) {\r\n this.ref = Math.random();\r\n this.el.dataset.ref = this.ref;\r\n DomComponent.refs[this.ref] = this;\r\n }\r\n }\r\n\r\n loaded() {\r\n this.el.classList.add('js-loaded');\r\n }\r\n\r\n static getComponentByRef(ref) {\r\n return DomComponent.refs[ref];\r\n }\r\n\r\n static getEntryElements() {\r\n return document.querySelectorAll(this.selector);\r\n }\r\n\r\n static fromTemplate(data) {\r\n const html = this.template({data: data});\r\n const div = document.createElement('div');\r\n div.innerHTML = html;\r\n\r\n return new this(div.firstElementChild);\r\n }\r\n\r\n static fromErrorTemplate(error) {\r\n const html = this.errorTemplate({error: error});\r\n const div = document.createElement('div');\r\n div.innerHTML = html;\r\n\r\n return new this(div.firstElementChild, error=true);\r\n }\r\n}","import DomComponent from 'App/lib/domComponent';\r\nimport { debounce2, mq } from 'App/lib/util';\r\nimport { duration } from 'App/lib/const';\r\nimport SendRequest from \"../../lib/ajax\";\r\n\r\nconst searchResultTemplate = require('./search-results.template.pug');\r\n\r\nexport default class SearchComponent extends DomComponent {\r\n static selector = '[data-js-search]';\r\n input;\r\n results;\r\n resultsContainer;\r\n initialHeight;\r\n searchExpanded = false;\r\n searchUrl;\r\n\r\n constructor(el, Header) {\r\n // return false\r\n super(el);\r\n\r\n this.Header = Header;\r\n\r\n this.input = this.el.querySelector('[data-input]');\r\n this.form = this.el.querySelector('[data-form]');\r\n this.results = this.el.querySelector('[data-results]');\r\n this.quickTip = this.el.querySelector('[data-content]');\r\n this.resultsContainer = this.el.querySelector('[data-results-container]');\r\n this.searchUrl = this.el.getAttribute('data-search-results-url');\r\n\r\n // event listeners\r\n const debouncedFn = debounce2(this.inputHandler.bind(this), 200);\r\n\r\n if (this.input && this.results) {\r\n this.input.addEventListener('input', (e) => {\r\n debouncedFn(e);\r\n });\r\n }\r\n\r\n this.form.addEventListener('submit', (e) => {\r\n e.preventDefault();\r\n\r\n if(this.input.value) {\r\n this.submitHandler(e);\r\n }\r\n });\r\n\r\n //set initial height on quick tip\r\n const height = this.quickTip.firstElementChild.offsetHeight;\r\n this.quickTip.style.height = `${height}px`;\r\n\r\n this.initialHeight = this.el.parentElement.offsetHeight;\r\n\r\n // set max height on search results so it doesnt spill beneath window\r\n if(mq(this.Header.desktopMediaQuery)) {\r\n const styles = getComputedStyle(this.el.parentElement);\r\n const usedSpace = this.input.offsetHeight +\r\n parseInt(styles.paddingTop) +\r\n parseInt(styles.paddingBottom);\r\n\r\n const maxHeight = window.innerHeight - this.Header.el.offsetHeight - usedSpace;\r\n this.resultsContainer.style.maxHeight = `${maxHeight}px`;\r\n }\r\n\r\n setTimeout(() => {\r\n this.loaded();\r\n })\r\n }\r\n\r\n submitHandler() {\r\n const urlParams = this.input.value ? `?term=${this.input.value}` : '';\r\n window.location = this.searchUrl + urlParams;\r\n }\r\n\r\n inputHandler() {\r\n if(this.input.value) {\r\n\r\n if(!this.searchExpanded) {\r\n this.searchExpanded = true;\r\n this.Header.expandSearchMenu();\r\n }\r\n\r\n this.showLoader();\r\n\r\n this.search(this.input.value).then((data) => {\r\n let html;\r\n\r\n if(data.results && data.results.length) {\r\n html = searchResultTemplate(data);\r\n }else{\r\n html = '

No results Found for search term \\'' + this.input.value + '\\'

'\r\n this.showQuickTip();\r\n }\r\n\r\n this.updateResults(html);\r\n setTimeout(() => {\r\n if(!this.resultsContainer.classList.contains('overflow-scroll')) {\r\n this.resultsContainer.classList.add('overflow-scroll');\r\n }\r\n }, duration);\r\n // const results = this.results.querySelectorAll('')\r\n })\r\n }else{\r\n this.clearResults();\r\n this.showQuickTip();\r\n this.Header.minimizeSearchMenu(this.initialHeight);\r\n this.searchExpanded = false;\r\n }\r\n }\r\n\r\n updateResults(html) {\r\n this.results.innerHTML = html;\r\n this.resultsContainer.style.height = `${this.results.offsetHeight}px`;\r\n }\r\n\r\n clearResults() {\r\n this.results.innerHTML = '';\r\n this.resultsContainer.style.height = '0px';\r\n this.resultsContainer.classList.remove('overflow-scroll');\r\n this.showQuickTip();\r\n }\r\n\r\n hideQuickTip() {\r\n this.quickTip.style.opacity = 0;\r\n this.quickTip.style.height = '0px';\r\n this.quickTip.classList.add('closed');\r\n }\r\n showQuickTip() {\r\n this.quickTip.classList.remove('closed');\r\n this.quickTip.style.opacity = 1;\r\n this.quickTip.style.height = `${this.quickTip.firstElementChild.offsetHeight}px`;\r\n }\r\n\r\n showLoader() {\r\n this.hideQuickTip();\r\n\r\n if(!this.el.querySelectorAll('.loader').length) {\r\n this.updateResults('
');\r\n }\r\n }\r\n\r\n search(term) {\r\n let encodedTerm = encodeURIComponent(term),\r\n url = '/umbraco/rhythm/searchapi/search?term=' + encodedTerm;\r\n const request = new SendRequest(url);\r\n\r\n return request.then((data) => JSON.parse(data.text))\r\n }\r\n}","import { each } from '../lib/util';\r\n\r\nclass ColorBars {\r\n constructor(el) {\r\n this.el = el;\r\n this.colorBars = this.el.querySelectorAll('[data-js-color-bar]');\r\n this.scale = window.innerWidth / 1280;\r\n\r\n if (this.colorBars.length > 0) {\r\n this.init();\r\n }\r\n }\r\n\r\n init() {\r\n let cumulativeWidth = 0;\r\n each(this.colorBars, (el) => {\r\n const width = this.getScaledValue(el.offsetWidth);\r\n const percentage = (Math.ceil((width / window.innerWidth) * 100));\r\n el.dataset.originalWidth = el.offsetWidth;\r\n if (!el.classList.contains(\"fill\")) {\r\n el.style.width = `${percentage}%`;\r\n el.style.maxWidth = `${percentage}%`;\r\n el.style.flex = `1 0 ${percentage}%`;\r\n cumulativeWidth += width;\r\n }\r\n });\r\n }\r\n\r\n getScaledValue(num) {\r\n return Math.floor(num * this.scale);\r\n }\r\n}\r\n\r\nexport default ColorBars;","import bodyService from '../services/body';\r\nimport DomComponent from '../lib/domComponent';\r\nimport { each, mq, isMobileSafari } from '../lib/util';\r\nimport SearchComponent from '../components/search/search';\r\nimport ColorBars from '../services/color-bars';\r\n\r\nexport default class HeaderComponent extends DomComponent {\r\n static selector = '[data-js-header]';\r\n el;\r\n\r\n lastScroll = 0;\r\n logoRotationSpeed = 0.2;\r\n active = null;\r\n activeSubmenu;\r\n menuMap = {};\r\n toggles;\r\n menus;\r\n\r\n desktopMediaQuery = '1280px';\r\n desktopHeight = 90;\r\n toggleActiveClass = 'header__button--active';\r\n menuCtrActiveClass = 'header__menu-container--open';\r\n menuActiveClass = 'header__menu--active';\r\n\r\n submenuNameSelector = '[data-name-placeholder]';\r\n submenuImageSelector = '[data-submenu-image]';\r\n submenuNavSelector = '[data-submenu-nav]';\r\n submenuNavItemSelector = '[data-submenu-nav-item]';\r\n submenuDefaults = {};\r\n isTouchDevice = 'ontouchstart' in window;\r\n\r\n constructor(el) {\r\n // return false\r\n super(el);\r\n\r\n // query dom for elements\r\n this.menuToggles = this.el.querySelectorAll('[data-toggle]');\r\n this.subMenuToggles = this.el.querySelectorAll('[data-toggle-submenu]');\r\n this.subMenuBackButtons = this.el.querySelectorAll('[data-close-submenu]');\r\n this.subMenuContainer = this.el.querySelector('[data-submenu-container]');\r\n this.subMenus = this.el.querySelectorAll('[data-submenu]');\r\n this.mainSubMenus = this.el.querySelectorAll('[data-submenu]');\r\n this.menuContainer = this.el.querySelector('[data-menu-container]');\r\n this.menus = this.el.querySelectorAll('[data-menu]');\r\n this.logoCircle = this.el.querySelector('[data-logo-circle]');\r\n this.headerMenuNav = this.el.querySelector('.header__menu__nav');\r\n this.layout = document.querySelector('.layout');\r\n this.morebutton = this.el.querySelector('.header__menu__more-button');\r\n this.headerInner = this.el.querySelector('.header__inner');\r\n this.chatButton = document.querySelector('#divSatisfiChat');\r\n this.$emergencyBanner = document.querySelector('[data-js-emergency-alert]');\r\n\r\n if (this.headerMenuNav) {\r\n this.subMenuButtons = this.headerMenuNav.querySelectorAll('.header__menu__nav__button');\r\n }\r\n\r\n //mobile Safari isn't very friendly. Depending on your scroll, panels on the top and bottom collapse in\r\n //we need to adjust the UI for these panels as sometimes they will hide the \"More\" button in the submenu\r\n // if(this.isTouchDevice && isMobileSafari() && !mq(this.desktopMediaQuery)){\r\n // this.checkMobileHeight();\r\n // window.addEventListener('resize', this.checkMobileHeight.bind(this));\r\n // }\r\n\r\n // construct map of menus\r\n for (let i = 0; i < this.menus.length; i++) {\r\n this.menuMap[this.menus[i].dataset.menu] = this.menus[i];\r\n }\r\n\r\n //set initial state of submenus\r\n if (mq(this.desktopMediaQuery)) {\r\n if (this.subMenuContainer) {\r\n this.subMenuContainer.style.height = '0';\r\n }\r\n }\r\n\r\n //scroll event handler\r\n this.initScrollHandlers();\r\n\r\n // desktop submenu hover events\r\n each(this.subMenus, (subMenu) => {\r\n if(subMenu.dataset.submenu === 'more') {\r\n return;\r\n }\r\n\r\n const image = subMenu.querySelector(this.submenuImageSelector);\r\n const namePlaceholder = subMenu.querySelector(this.submenuNameSelector);\r\n const nav = subMenu.querySelector(this.submenuNavSelector);\r\n\r\n if (nav && image && namePlaceholder) {\r\n //add swap image/text hover functionality\r\n\r\n const imageIncoming = image.cloneNode();\r\n const nameIn = namePlaceholder.nextElementSibling;\r\n const nameOut = nameIn.nextElementSibling;\r\n imageIncoming.classList.add('incoming');\r\n image.parentElement.insertBefore(imageIncoming, image.nextSibling);\r\n this.adjustFontSize(namePlaceholder, namePlaceholder.innerText);\r\n\r\n let animating = 0;\r\n let activeText;\r\n let activeImage;\r\n\r\n setTimeout(() => {\r\n namePlaceholder.parentElement.style.width = `${namePlaceholder.offsetWidth}px`;\r\n }, 450);\r\n this.submenuDefaults[subMenu.dataset.submenu] = {\r\n name: namePlaceholder.innerText,\r\n image: image.getAttribute('src')\r\n };\r\n\r\n nav.addEventListener('mouseleave', (event) => {\r\n if(mq(this.desktopMediaQuery)) {\r\n if(animating !== 0) {\r\n this.endSubmenuHoverAnimation(activeText, activeImage, nameIn, nameOut, imageIncoming, image);\r\n animating = 1;\r\n }\r\n\r\n activeText = this.submenuDefaults[subMenu.dataset.submenu].name;\r\n activeImage = this.submenuDefaults[subMenu.dataset.submenu].image;\r\n\r\n this.startSubmenuHoverAnimation(activeText, activeImage, nameIn, nameOut, namePlaceholder, imageIncoming, image);\r\n\r\n\r\n setTimeout(() => {\r\n this.endSubmenuHoverAnimation(activeText, activeImage, nameIn, nameOut, imageIncoming, image);\r\n }, 300)\r\n }\r\n });\r\n\r\n nav.addEventListener('mouseover', (event) => {\r\n if(mq(this.desktopMediaQuery)) {\r\n animating++;\r\n\r\n if(animating > 1) {\r\n this.endSubmenuHoverAnimation(activeText, activeImage, nameIn, nameOut, imageIncoming, image);\r\n }\r\n\r\n if(event.target && typeof event.target.dataset.submenuNavItem !== 'undefined') {\r\n\r\n activeText = event.target.innerText.toLowerCase();\r\n activeImage = event.target.dataset.submenuNavItem;\r\n\r\n this.startSubmenuHoverAnimation(activeText, activeImage, nameIn, nameOut, namePlaceholder, imageIncoming, image);\r\n\r\n setTimeout(() => {;\r\n animating--;\r\n if(animating === 0) {\r\n this.endSubmenuHoverAnimation(activeText, activeImage, nameIn, nameOut, imageIncoming, image);\r\n }\r\n }, 300)\r\n\r\n }\r\n // else{\r\n // activeText = this.submenuDefaults[subMenu.dataset.submenu].name;\r\n // activeImage = this.submenuDefaults[subMenu.dataset.submenu].image;\r\n // }\r\n\r\n\r\n }\r\n })\r\n }\r\n })\r\n\r\n // mobile menu toggle click events\r\n each(this.menuToggles, (toggle, i) => {\r\n toggle.addEventListener('click', () => {\r\n if (mq(this.desktopMediaQuery)) {\r\n return;\r\n }\r\n\r\n var hasChatButton = this.checkForChatButton();\r\n var hasEmergencyBanner = this.$emergencyBanner && document.body.classList.contains('emergency-alert-visible--banner');\r\n\r\n // Close Menu\r\n if (toggle.classList.contains(this.toggleActiveClass)) {\r\n const chatWidget = document.querySelector('#divSatisfiChat');\r\n if (chatWidget) {\r\n chatWidget.style.display = 'block';\r\n }\r\n this.el.classList.remove('open');\r\n this.active.menu.classList.remove(this.menuActiveClass);\r\n this.active.toggle.classList.remove(this.toggleActiveClass);\r\n this.active = null;\r\n this.menuContainer.classList.remove(this.menuCtrActiveClass);\r\n each(this.subMenus, (submenu) => {\r\n submenu.classList.remove('active');\r\n this.headerMenuNav.style.height = '';\r\n });\r\n this.menuMap[toggle.dataset.toggle].classList.remove('open');\r\n\r\n bodyService.unlock();\r\n if (this.isTouchDevice) {\r\n this.layout.classList.remove('mobile-lock');\r\n }\r\n\r\n // if there is a chat button, show it\r\n if (hasChatButton) {\r\n this.chatButton.style.display = '';\r\n }\r\n\r\n // if there is an emergency banner, show it\r\n if (hasEmergencyBanner) {\r\n this.expandAlert();\r\n }\r\n }\r\n // Open Menu\r\n else {\r\n const chatWidget = document.querySelector('#divSatisfiChat');\r\n if (chatWidget) {\r\n chatWidget.style.display = 'none';\r\n }\r\n bodyService.lock();\r\n if(this.isTouchDevice){\r\n this.layout.classList.add('mobile-lock');\r\n // this.checkMobileHeight();\r\n }\r\n\r\n if(!this.menuMap[toggle.dataset.toggle].classList.contains('open')) {\r\n setTimeout(() => {\r\n this.menuMap[toggle.dataset.toggle].classList.add('open');\r\n }, 300);\r\n }\r\n\r\n // if menus already open, hide any menu content inside\r\n if(this.active) {\r\n this.active.menu.classList.remove(this.menuActiveClass);\r\n this.active.toggle.classList.remove(this.toggleActiveClass);\r\n each(this.subMenus, (submenu) => {\r\n submenu.classList.remove('active');\r\n this.headerMenuNav.style.height = '';\r\n });\r\n }else{\r\n // otherwise, open menu\r\n this.menuContainer.classList.add(this.menuCtrActiveClass);\r\n }\r\n\r\n // set new active menu\r\n this.active = {\r\n toggle: toggle,\r\n menu: this.menuMap[toggle.dataset.toggle],\r\n }\r\n\r\n // show active menu\r\n this.active.menu.classList.add(this.menuActiveClass);\r\n this.active.toggle.classList.add(this.toggleActiveClass);\r\n\r\n // if there is a chat button, hide it\r\n if (hasChatButton) {\r\n this.chatButton.style.display = 'none';\r\n }\r\n\r\n // if there is an emergency banner, hide it\r\n if (hasEmergencyBanner) {\r\n this.collapseAlert();\r\n }\r\n }\r\n })\r\n })\r\n\r\n // back button click events\r\n each(this.subMenuBackButtons, (button) => {\r\n button.addEventListener('click', () => {\r\n each(this.subMenus, (submenu) => {\r\n submenu.classList.remove('active');\r\n this.headerMenuNav.style.height = '';\r\n })\r\n });\r\n })\r\n\r\n each(this.subMenuToggles, (toggle, index) => {\r\n const toggleSubmenu = toggle.dataset.toggleSubmenu;\r\n toggle.addEventListener('mouseenter', (e) => {\r\n if (toggleSubmenu === 'more' || toggleSubmenu === 'search') {\r\n return;\r\n }\r\n // desktop main hover events\r\n if(mq(this.desktopMediaQuery)) {\r\n each(this.subMenus, (subMenu) => {\r\n if (subMenu.dataset.submenu === toggle.dataset.toggleSubmenu) {\r\n if (this.activeSubmenu === subMenu.dataset.submenu || this.activeSubmenu === 'search') {\r\n return;\r\n }\r\n\r\n this.activeSubmenu = subMenu.dataset.submenu;\r\n\r\n\r\n if (!subMenu.classList.contains('active')) {\r\n subMenu.classList.add('active');\r\n }\r\n if (!toggle.classList.contains('active')) {\r\n toggle.classList.add('active');\r\n }\r\n\r\n this.updateSubmenuHeight(subMenu);\r\n\r\n function submenuMouseleaveHandler (e) {\r\n\r\n const menu = e.toElement ? e.toElement.dataset.toggleSubmenu : null;\r\n if(!menu || menu !== subMenu.dataset.submenu) {\r\n closeMenu.call(this);\r\n }\r\n }\r\n\r\n function toggleMouseleaveHandler (e) {\r\n const toElement = e.toElement || e.relatedTarget;\r\n let menu = toElement ? toElement.dataset.submenu : null;\r\n menu = menu ? menu : (toElement && toElement.parentElement ? toElement.parentElement.dataset.submenu : null);\r\n\r\n if (!menu || menu !== subMenu.dataset.submenu) {\r\n closeMenu.call(this);\r\n }\r\n }\r\n\r\n function closeMenu() {\r\n toggle.classList.remove('active');\r\n subMenu.classList.remove('active');\r\n if (this.activeSubmenu !== 'search') {\r\n this.subMenuContainer.style.height = 0;\r\n this.activeSubmenu = null;\r\n }\r\n\r\n subMenu.removeEventListener('mouseleave', submenuMouseleaveHandler);\r\n toggle.removeEventListener('mouseleave', toggleMouseleaveHandler);\r\n }\r\n\r\n subMenu.addEventListener('mouseleave', submenuMouseleaveHandler.bind(this));\r\n toggle.addEventListener('mouseleave', toggleMouseleaveHandler.bind(this));\r\n\r\n }\r\n })\r\n\r\n }\r\n });\r\n\r\n // Desktop Search Button\r\n if (toggleSubmenu === 'search') {\r\n toggle.addEventListener('click', () => {\r\n if (mq(this.desktopMediaQuery)) {\r\n // Button toggle\r\n if (!toggle.classList.contains('active')) {\r\n toggle.classList.add('active');\r\n } else {\r\n toggle.classList.remove('active');\r\n }\r\n // Submenu\r\n each(this.subMenus, (subMenu) => {\r\n if (subMenu.dataset.submenu === 'search') {\r\n this.activeSubmenu = subMenu.dataset.submenu;\r\n this.updateSubmenuHeight(subMenu);\r\n if (!subMenu.classList.contains('active')) {\r\n subMenu.classList.add('active');\r\n } else {\r\n subMenu.classList.remove('active');\r\n this.subMenuContainer.style.height = 0;\r\n this.activeSubmenu = null;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n //mobile submenu events\r\n toggle.addEventListener('click', (e) => {\r\n // on mobile we have click handlers that handle opening the sub menu\r\n // we dont need this handler on desktop but we attach it anyway in case\r\n // the user changes screen size after page load\r\n if(!mq(this.desktopMediaQuery)) {\r\n\r\n // prevent navigation on mobile\r\n e.preventDefault();\r\n\r\n each(this.subMenus, (subMenu) => {\r\n if (subMenu.dataset.submenu === toggle.dataset.toggleSubmenu) {\r\n if (subMenu.classList.contains('active')) {\r\n subMenu.classList.remove('active');\r\n this.headerMenuNav.style.height = '';\r\n } else {\r\n subMenu.classList.add('active');\r\n this.headerMenuNav.style.height = '90%';\r\n }\r\n }\r\n })\r\n }\r\n\r\n })\r\n });\r\n\r\n //set up search functionality\r\n each(SearchComponent.getEntryElements(), (el) => {\r\n return new SearchComponent(el, this);\r\n })\r\n\r\n\r\n setTimeout(() => {\r\n this.loaded();\r\n })\r\n\r\n setTimeout(() => {\r\n this.colorBars = new ColorBars(this.subMenuContainer);\r\n }, 500)\r\n }\r\n\r\n adjustFontSize(el, text) {\r\n if (text.length > 25) {\r\n el.parentElement.classList.add('small');\r\n }\r\n else {\r\n el.parentElement.classList.remove('small');\r\n }\r\n }\r\n\r\n // checkMobileHeight(e){\r\n // let height = window.innerHeight - this.headerInner.offsetHeight - this.morebutton.offsetHeight;\r\n // height = height / 3;\r\n // each(this.subMenuButtons, (button) => {\r\n // button.style.height = height + \"px\";\r\n // });\r\n // }\r\n\r\n startSubmenuHoverAnimation(activeText, activeImage, nameIn, nameOut, namePlaceholder, imageIncoming, imageOutgoing) {\r\n if (activeText.length > 25) {\r\n namePlaceholder.parentElement.classList.add('small');\r\n }\r\n else {\r\n namePlaceholder.parentElement.classList.remove('small');\r\n }\r\n namePlaceholder.innerText = activeText;\r\n nameOut.innerText = activeText;\r\n namePlaceholder.parentElement.style.width = `${namePlaceholder.offsetWidth}px`;\r\n\r\n\r\n imageIncoming.setAttribute('src', activeImage);\r\n\r\n imageIncoming.classList.add('fade-in');\r\n imageOutgoing.classList.add('fade-out');\r\n\r\n nameIn.classList.add('fade-left');\r\n nameOut.classList.add('fade-right');\r\n }\r\n endSubmenuHoverAnimation(activeText, activeImage, nameIn, nameOut, imageIncoming, imageOutgoing) {\r\n nameIn.classList.remove('fade-left');\r\n nameOut.classList.remove('fade-right');\r\n nameIn.innerText = activeText;\r\n nameOut.innerText = '';\r\n\r\n imageOutgoing.setAttribute('src', activeImage);\r\n imageIncoming.classList.remove('fade-in');\r\n imageOutgoing.classList.remove('fade-out');\r\n }\r\n\r\n initScrollHandlers() {\r\n this.lastScroll = window.pageYOffset;\r\n window.addEventListener('scroll', this.scrollHandler.bind(this));\r\n }\r\n\r\n updateSubmenuHeight(submenu, height) {\r\n if(!submenu) {\r\n each(this.subMenus, (_submenu) => {\r\n if(this.activeSubmenu === _submenu.dataset.submenu) {\r\n submenu = _submenu;\r\n }\r\n });\r\n }\r\n height = height ? height : submenu.offsetHeight;\r\n this.subMenuContainer.style.height = `${height}px`;\r\n }\r\n\r\n scrollHandler() {\r\n // spinning circle in logo\r\n const angle = 0.2 * window.pageYOffset;\r\n this.logoCircle.style.transform = `rotate(${angle}deg)`;\r\n\r\n // active/inactive header states\r\n if (!mq(this.desktopMediaQuery)) {\r\n // mobile\r\n\r\n //check to see if mobile menu is open, if so we don't want to apply any active/inactive classes\r\n if(this.menuContainer.classList.contains(this.menuCtrActiveClass)){\r\n return;\r\n }\r\n\r\n if (window.pageYOffset > this.el.offsetHeight) {\r\n\r\n if(this.lastScroll > window.pageYOffset) {\r\n //scrolling up\r\n this.el.classList.remove('inactive');\r\n this.expandAlert();\r\n\r\n }else{\r\n //scrolling down\r\n this.collapseAlert();\r\n this.el.classList.add('inactive');\r\n }\r\n }\r\n }else{\r\n // desktop\r\n if (window.pageYOffset > this.desktopHeight) {\r\n this.el.classList.add('inactive');\r\n this.collapseAlert();\r\n }else{\r\n this.el.classList.remove('inactive');\r\n this.expandAlert();\r\n }\r\n }\r\n\r\n this.lastScroll = window.pageYOffset;\r\n }\r\n\r\n expandAlert() {\r\n if (this.$emergencyBanner) {\r\n const event = new CustomEvent('alert:expand', {});\r\n this.$emergencyBanner.dispatchEvent(event);\r\n }\r\n }\r\n\r\n collapseAlert() {\r\n if (this.$emergencyBanner) {\r\n const event = new CustomEvent('alert:collapse', {});\r\n this.$emergencyBanner.dispatchEvent(event);\r\n }\r\n }\r\n\r\n expandSearchMenu() {\r\n let searchMenu;\r\n each(this.subMenus, (submenu) => {\r\n if(submenu.dataset.submenu === 'search') {\r\n searchMenu = submenu;\r\n }\r\n })\r\n\r\n if(searchMenu) {\r\n searchMenu.classList.add('searching');\r\n this.updateSubmenuHeight(searchMenu);\r\n }\r\n }\r\n\r\n minimizeSearchMenu(height) {\r\n let searchMenu;\r\n\r\n each(this.subMenus, (submenu) => {\r\n if(submenu.dataset.submenu === 'search') {\r\n searchMenu = submenu;\r\n }\r\n })\r\n\r\n if(searchMenu) {\r\n searchMenu.classList.remove('searching');\r\n this.updateSubmenuHeight(searchMenu, height);\r\n }\r\n }\r\n checkForChatButton() {\r\n if (this.$chatButton) {\r\n return true;\r\n }\r\n\r\n var chatButtonEl = document.querySelector('#divSatisfiChat');\r\n\r\n if (chatButtonEl) {\r\n this.chatButton = chatButtonEl;\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n}","import DomComponent from '../lib/domComponent';\r\n\r\nexport default class HeaderComponent extends DomComponent {\r\n static selector = '[data-js-footer]';\r\n inactiveLinks = [];\r\n el;\r\n\r\n constructor(el) {\r\n\r\n super(el);\r\n\r\n this.inactiveLinks = this.el.querySelectorAll('[data-disabled]');\r\n\r\n for(let i = 0; i < this.inactiveLinks.length; i++){\r\n this.inactiveLinks[i].classList.add('inactive-link');\r\n this.inactiveLinks[i].insertAdjacentHTML('beforeend', 'Coming Soon');\r\n }\r\n\r\n setTimeout(() => {\r\n this.loaded();\r\n })\r\n }\r\n} ","import DomComponent from '../lib/domComponent';\r\n\r\nexport default class WidgetBase extends DomComponent {\r\n\r\n constructor(el) {\r\n super(el);\r\n }\r\n\r\n}","export default {\r\n touch: () => ('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)\r\n}","// TODO set transform origin prop of all elements on index change\r\n\r\nimport WidgetBase from '../widget.base';\r\nimport { each } from 'App/lib/util';\r\nimport featSniffer from 'App/lib/featureDetection';\r\n\r\nexport default class GraphicalCalloutCarouselWidget extends WidgetBase {\r\n static selector = '[data-ww-graphical-callout-carousel]';\r\n imgSelector = '[data-slide-image]';\r\n inactiveSlideScale = 0.8;\r\n inactiveSlideOpacity = 0.7;\r\n activeImageScale = 1.3;\r\n threshold = 100;\r\n innerContainer;\r\n slides;\r\n pagerTriggers;\r\n pagerWidth;\r\n prevIndex;\r\n _index;\r\n activatingIndex;\r\n\r\n constructor(el) {\r\n super(el);\r\n\r\n if(!this.el) {\r\n return;\r\n }\r\n\r\n // set intial state for dom/internal \r\n this.innerContainer = this.el.querySelector('[data-carousel-inner]');\r\n this.slides = this.el.querySelectorAll('[data-carousel-slide]');\r\n this.pager = this.el.querySelector('[data-pager]');\r\n this.pagerTriggers = this.el.querySelectorAll('[data-pager-trigger]');\r\n this.pagerIndicator = this.el.querySelector('[data-pager-indicator]');\r\n\r\n this.index = this.el.dataset.index ? parseInt(this.el.dataset.index) : 0;\r\n\r\n // // Set initial transform on slides\r\n // each(this.slides, (slide, i) => {\r\n // if (i !== this.index) {\r\n // // active slide\r\n // this.setInactiveStyles(slide);\r\n // }else{\r\n // // active slide\r\n // this.setActiveStyles(slide);\r\n // }\r\n // });\r\n\r\n // add pager event listeners\r\n each(this.pagerTriggers, (trigger, i) => {\r\n trigger.addEventListener('click', () => {\r\n if (!trigger.classList.contains('active')) {\r\n this.index = i;\r\n }\r\n })\r\n });\r\n\r\n var imageClickFunction = (event) => {\r\n this.index = parseInt(event.currentTarget.parentElement.parentElement.attributes[\"data-carousel-index\"].value);\r\n };\r\n\r\n each(this.slides, (slide, i) => {\r\n var index = i;\r\n slide.querySelector(\".ww-graphical-callout-carousel__slide__image\").addEventListener('click', imageClickFunction);\r\n });\r\n\r\n // add touch events if supported\r\n if (featSniffer.touch()) {\r\n this.addTouchEvents(this.innerContainer);\r\n }\r\n\r\n // update on resize\r\n window.addEventListener('resize', () => {\r\n this.update(this.index);\r\n });\r\n\r\n // tell dom we're ready\r\n setTimeout(() => this.loaded());\r\n }\r\n\r\n get index() {\r\n return this._index;\r\n }\r\n\r\n set index(i) {\r\n if (i === this._index) {\r\n return;\r\n }\r\n \r\n const oldIndex = this.index;\r\n this._index = i;\r\n\r\n // remove active state from previous slide\r\n if(typeof oldIndex !== 'undefined') {\r\n this.slides[oldIndex].classList.remove('active');\r\n this.pagerTriggers[oldIndex].classList.remove('active');\r\n\r\n if(oldIndex - 1 >= 0) {\r\n this.pagerTriggers[oldIndex - 1].classList.remove('active--prev');\r\n }\r\n if(oldIndex + 1 <= this.slides.length - 1) {\r\n this.pagerTriggers[oldIndex + 1].classList.remove('active--next');\r\n }\r\n \r\n }\r\n\r\n // add active state to new slide\r\n this.slides[i].classList.add('active');\r\n \r\n // update pager state\r\n this.pagerTriggers[i].classList.add('active');\r\n\r\n if (i - 1 >= 0) {\r\n this.pagerTriggers[i - 1].classList.add('active--prev');\r\n }\r\n if (i + 1 <= this.slides.length - 1) {\r\n this.pagerTriggers[i + 1].classList.add('active--next');\r\n }\r\n\r\n this.update(i, true);\r\n }\r\n\r\n update(index, shouldUpdateStyle = false) {\r\n this.slideWidth = this.slides[index].offsetWidth;\r\n this.pagerWidth = this.pager.offsetWidth;\r\n const newOpacity = (this.slideWidth * 3) > window.innerWidth ? 0.7 : 1; \r\n\r\n if (this.inactiveSlideOpacity !== newOpacity || shouldUpdateStyle) {\r\n this.inactiveSlideOpacity = newOpacity;\r\n\r\n // update slide styles\r\n this.setActiveStyles(index);\r\n each(this.slides, (slide, i) => {\r\n if (i !== index) {\r\n this.setInactiveStyles(i);\r\n }\r\n })\r\n }\r\n\r\n // update pager styles (the last index * 1 is added to pixel push, required because my math sucks)\r\n this.setTransformX(this.pagerIndicator, this.pagerWidth/(this.slides.length - 1) * (index - 1));\r\n \r\n this.gutter = (window.innerWidth - this.slideWidth) / 2; \r\n\r\n if(index === 0) {\r\n this.setTransformX(this.innerContainer, this.gutter)\r\n }else if(index === 1){\r\n this.setTransformX(this.innerContainer, (this.gutter - this.slideWidth))\r\n }else{\r\n this.setTransformX(this.innerContainer, (this.slideWidth) * -index + (this.gutter) )\r\n }\r\n\r\n }\r\n\r\n setTransformX(el, value) {\r\n el.style.transform = 'translate3d(' + value + 'px, 0, 0)';\r\n }\r\n \r\n addTouchEvents(element) {\r\n let isTouchStart = false;\r\n\r\n // initial mouse X for `mousedown`\r\n let touchX;\r\n let touchY;\r\n\r\n // element transform style before/after\r\n let transformX;\r\n\r\n // element X before and after move\r\n let elementX = 0;\r\n\r\n element.addEventListener('touchstart', onTouchStart.bind(this));\r\n \r\n /**\r\n * Listens to `mousedown` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchStart(event) {\r\n element.classList.add('dragging');\r\n touchX = event.touches[0].clientX;\r\n touchY = event.touches[0].clientY;\r\n isTouchStart = true;\r\n\r\n transformX = parseTransformX(element.style.transform);\r\n }\r\n \r\n // mouse button released\r\n element.addEventListener('touchend', onTouchEnd.bind(this));\r\n \r\n /**\r\n * Listens to `mouseup` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchEnd(event) {\r\n isTouchStart = false;\r\n element.classList.remove('dragging');\r\n \r\n elementX = element.style.transform ? parseTransformX(element.style.transform) : transformX;\r\n \r\n const transformDelta = elementX - transformX;\r\n \r\n if (Math.abs(transformDelta) > this.threshold) {\r\n if(transformDelta < 0) {\r\n if(this.index !== this.slides.length - 1) {\r\n this.index++;\r\n }else{\r\n // sets slide back to start position\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)'; \r\n this.setActiveStyles(this.index);\r\n }\r\n }else{\r\n if(this.index !== 0) {\r\n this.index--;\r\n }else{\r\n // sets slide back to start position\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)'; \r\n this.setActiveStyles(this.index);\r\n }\r\n }\r\n }else{\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)';\r\n\r\n if (this.activatingIndex) {\r\n this.setInactiveStyles(this.activatingIndex);\r\n }\r\n //sets inactive slide back to defaut\r\n \r\n // sets slide back to start position\r\n this.setActiveStyles(this.index);\r\n }\r\n }\r\n\r\n // gets the x transform value from an element with a transform3d style applied\r\n function parseTransformX(transform) {\r\n return parseInt(transform.split('(')[1].split(',')[0])\r\n }\r\n \r\n // need to attach to the entire document\r\n // in order to take full width and height\r\n // this ensures the element keeps up with the mouse\r\n document.addEventListener('touchmove', onTouchMove.bind(this));\r\n\r\n /**\r\n * Listens to `mousemove` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchMove(event) {\r\n if (!isTouchStart) return;\r\n var deltaX = event.touches[0].clientX - touchX;\r\n var deltaY = event.touches[0].clientY - touchY;\r\n \r\n const absDeltaX = Math.abs(deltaX);\r\n const absDeltaY = Math.abs(deltaY);\r\n\r\n if(absDeltaY > absDeltaX) {\r\n return false;\r\n }\r\n\r\n element.style.transform = 'translate3d(' + (transformX + deltaX) + 'px, 0, 0)';\r\n const deltaRatio = (absDeltaX/this.slideWidth); //ratio of mousemove delta to slide width\r\n \r\n // change transform origin\r\n let originRatio = this.ratioUtility(deltaRatio, 50);\r\n let originRight = deltaX < 0 ? 50 + originRatio : 50 - originRatio;\r\n this.slides[this.index].style.transformOrigin = `${originRight}% 50%`;\r\n \r\n let scaleRatio = this.ratioUtility(deltaRatio, 1 - this.inactiveSlideScale);\r\n this.slides[this.index].style.transform = `scale(${1 - scaleRatio })`;\r\n\r\n let opacityRatio = this.ratioUtility(deltaRatio, 1 - this.inactiveSlideOpacity);\r\n this.slides[this.index].style.opacity = 1 - opacityRatio;\r\n \r\n let imageScaleRatio = this.ratioUtility(deltaRatio, this.activeImageScale - 1);\r\n this.slides[this.index].querySelector(this.imgSelector).style.transform = `scale(${this.activeImageScale - imageScaleRatio})`;\r\n\r\n this.activatingIndex = null;\r\n\r\n if (deltaX < 0 && this.index < this.slides.length - 1) {\r\n this.activatingIndex = this.index + 1;\r\n }\r\n \r\n if(deltaX > 0 && this.index > 0) {\r\n // prev\r\n this.activatingIndex = this.index - 1;\r\n // activatingSlide = this.slides[this.index - 1];\r\n }\r\n \r\n if(this.activatingIndex !== null) {\r\n const activatingSlide = this.slides[this.activatingIndex];\r\n \r\n // change transform origin\r\n originRight = deltaX < 0 ? originRatio : 100 - originRatio;\r\n activatingSlide.style.transformOrigin = `${originRight}% 50%`;\r\n\r\n // scale slide bigger\r\n activatingSlide.style.transform = `scale(${this.inactiveSlideScale + scaleRatio})`;\r\n \r\n // scale opacity\r\n activatingSlide.style.opacity = this.inactiveSlideOpacity + opacityRatio;\r\n\r\n // scale image seperately\r\n activatingSlide.querySelector(this.imgSelector).style.transform = `scale(${1 + imageScaleRatio})`;\r\n \r\n\r\n }\r\n }\r\n }\r\n\r\n ratioUtility(delta, max) {\r\n const ratio = delta * max;\r\n return ratio < max ? ratio : max;\r\n }\r\n\r\n setActiveStyles(i) {\r\n this.slides[i].style.transform = 'scale(1)';\r\n this.slides[i].style.transformOrigin = '50% 50%';\r\n this.slides[i].style.opacity = 1;\r\n this.slides[i].querySelector(this.imgSelector).style.transform = `scale(${this.activeImageScale})`;\r\n }\r\n \r\n setInactiveStyles(i) {\r\n const originRight = i < this.index ? '100%' : '0%';\r\n const opacity = (i === this.index - 1 || i === this.index + 1) ? this.inactiveSlideOpacity : 0;\r\n this.slides[i].style.transformOrigin = null;\r\n this.slides[i].style.transform = `scale(${this.inactiveSlideScale})`;\r\n this.slides[i].style.opacity = opacity;\r\n this.slides[i].querySelector(this.imgSelector).style.transform = 'scale(1)';\r\n }\r\n}","import WidgetBase from '../widget.base';\r\nimport { mq } from '../../lib/util';\r\nimport { duration, mqMap } from '../../lib/const';\r\nimport Hammer, { each } from 'hammerjs';\r\n\r\nexport default class GraphicalCalloutGrid extends WidgetBase {\r\n static selector = '[data-ww-graphical-callout-grid]';\r\n flex = 4;\r\n cinemgraphs;\r\n activeSlideView;\r\n container;\r\n slides = [];\r\n nextBtn;\r\n prevBtn;\r\n currentIndex;\r\n slidesToRemove = [];\r\n originalLength;\r\n offsetAmount = 20;\r\n\r\n isAnimating = false;\r\n mobileBP = mqMap.sm;\r\n tabletBP = 979;\r\n constructor(el){\r\n super(el);\r\n if(!el){\r\n return false;\r\n }\r\n this.cinemgraphs = this.el.querySelectorAll('[data-cinemagraph]');\r\n\r\n this.slides = (this.el.querySelectorAll('[data-ww-graphical-callout-slide]'));\r\n this.slides[this.slides.length-1];\r\n this.originalLength = this.slides.length;\r\n\r\n setTimeout(() => {\r\n this.setPaddingTop();\r\n if(this.slides.length > 3){\r\n this.activeSlideView = this.el.querySelector('[data-ww-graphical-callout-grid-active-view]');\r\n this.activeSlideView.classList.add('is-carousel');\r\n this.el.classList.add('carousel');\r\n this.setUpSlides();\r\n window.addEventListener('resize', this.setUpSlides.bind(this));\r\n }\r\n this.loaded();\r\n }, 500)\r\n }\r\n\r\n setPaddingTop() {\r\n each(this.slides, (slide) => {\r\n const heading = slide.querySelector('.ww-graphical-cg__image__content');\r\n const summary = slide.querySelector('.ww-graphical-cg__fly-out__summary');\r\n const height = heading.offsetHeight;\r\n summary.style.paddingTop = `${height + 10}px`;\r\n })\r\n }\r\n\r\n setUpSlides(){\r\n this.container = this.el.querySelector('[data-ww-graphical-callout-grid-container]');\r\n this.nextBtn = this.el.querySelector('[data-ww-graphical-callout-grid-next]');\r\n this.prevBtn = this.el.querySelector('[data-ww-graphical-callout-grid-prev]');\r\n this.nextBtn.addEventListener('click', this.next);\r\n this.prevBtn.addEventListener('click', this.prev);\r\n\r\n const Swipe = new Hammer.Swipe();\r\n // Create a manager to manager the element\r\n var manager = new Hammer.Manager(this.container.querySelector('.ww-graphical-cg__wrapper'));\r\n manager.add(Swipe);\r\n\r\n if(this.slides.length > 3) {\r\n manager.on('swipe', (e) => {\r\n var direction = e.offsetDirection;\r\n\r\n if (direction === 2) {\r\n this.next();\r\n }else if(direction === 4) {\r\n this.prev();\r\n }\r\n });\r\n }\r\n\r\n each(this.slides, (slide, index) => {\r\n switch (index % 3) {\r\n case 0:\r\n slide.classList.add('bg-1');\r\n break;\r\n case 1:\r\n slide.classList.add('bg-2');\r\n break;\r\n case 2:\r\n slide.classList.add('bg-3');\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n })\r\n\r\n //adjust the structure so that one card is surrounded by two inactive for mobile\r\n //for desktop, three active are surrounded by one inactive on each side\r\n // if (this.isMobile()){\r\n // this.flex = 3;\r\n // this.currentIndex = 0;\r\n // } else{\r\n // if(this.slides.length === 4){\r\n // const lastSlide = this.slides[this.slides.length -1];\r\n // const clone = lastSlide.cloneNode(true);\r\n // this.activeSlideView.insertBefore(clone, this.slides[0]);\r\n // this.slides = (this.el.querySelectorAll('[data-ww-graphical-callout-slide]'));\r\n // }\r\n // this.flex = 4;\r\n // this.currentIndex = 1;\r\n // }\r\n this.currentIndex = 0;\r\n\r\n\r\n for(var i = this.slides.length -1;i >= 0; i--) {\r\n const slide = this.slides[i];\r\n const clone = slide.cloneNode(true);\r\n this.activeSlideView.prepend(clone);\r\n\r\n }\r\n each(this.slides, (slide) => {\r\n const clone = slide.cloneNode(true);\r\n\r\n this.activeSlideView.append(clone);\r\n })\r\n\r\n this.container.style.width = '100%';\r\n\r\n // if (this.isMobile()) {\r\n // let newFlex = 100 / this.flex;\r\n // for(let i = 0; i < this.slides.length; i++){\r\n // let slide = this.slides[i];\r\n // slide.style.flex = '1 0 ' + newFlex + '%';\r\n // slide.style.width = newFlex + '%';\r\n // slide.style.maxWidth = newFlex + '%';\r\n // }\r\n // }\r\n\r\n // this.activeSlideView.style.justifyContent = \"normal\";\r\n // let offset = (window.innerWidth > mqMap.lg && window.innerWidth < 1600) ? 4 : 2;\r\n // if(this.isMobile()) {\r\n // offset = 1;\r\n // }\r\n // let initialTranslate = this.activeSlideView.offsetWidth/(this.flex*offset);\r\n let initialTranslate = Array.from(this.slides).reduce((previousVal, slide) => {\r\n return previousVal + slide.offsetWidth\r\n }, 0);\r\n this.initialTranslate = initialTranslate;\r\n this.translateX = initialTranslate;\r\n this.activeSlideView.style.transform = \"translateX(\"+(-1 *initialTranslate)+\"px)\";\r\n\r\n // //if there are 4 slides, just put the view at the beginning\r\n // if(this.slides.length === 4 && !this.isMobile()){\r\n // this.transformSlideContainer(this.currentIndex);\r\n // } else {\r\n // this.transformSlideContainer(this.currentIndex+1);\r\n // }\r\n\r\n this.toggleArrows(this.currentIndex);\r\n\r\n }\r\n\r\n prev = () =>{\r\n if(this.isAnimating){\r\n return;\r\n } else{\r\n this.isAnimating = true;\r\n }\r\n const newIndex = this.currentIndex-1;\r\n this.translateX -= this.slides[0].offsetWidth;\r\n this.activeSlideView.style.transform = \"translateX(\"+(-1 *this.translateX)+\"px)\";\r\n // this.moveLastSlideToFront();\r\n setTimeout(() => {\r\n if (newIndex <= -this.originalLength) {\r\n this.activeSlideView.classList.add(\"no-transition\");\r\n this.activeSlideView.style.transform = \"translateX(\"+(-1 *this.initialTranslate)+\"px)\";\r\n this.currentIndex = 0;\r\n this.translateX = this.initialTranslate;\r\n setTimeout(() => {\r\n this.activeSlideView.classList.remove('no-transition');\r\n this.isAnimating = false;\r\n }, 50);\r\n }\r\n else {\r\n this.currentIndex = newIndex;\r\n this.isAnimating = false;\r\n }\r\n\r\n }, duration+50)\r\n\r\n\r\n }\r\n\r\n next = () =>{\r\n if(this.isAnimating){\r\n return;\r\n } else{\r\n this.isAnimating = true;\r\n }\r\n const newIndex = this.currentIndex+1;\r\n this.translateX += this.slides[0].offsetWidth;\r\n this.activeSlideView.style.transform = \"translateX(\"+(-1 *this.translateX)+\"px)\";\r\n // this.moveFirstSlideToLast();\r\n\r\n setTimeout(() => {\r\n if (newIndex >= this.originalLength) {\r\n this.activeSlideView.classList.add(\"no-transition\");\r\n this.activeSlideView.style.transform = \"translateX(\"+(-1 *this.initialTranslate)+\"px)\";\r\n this.currentIndex = 0;\r\n this.translateX = this.initialTranslate;\r\n setTimeout(() => {\r\n this.activeSlideView.classList.remove('no-transition');\r\n this.isAnimating = false;\r\n }, 50);\r\n }\r\n else {\r\n this.currentIndex = newIndex;\r\n this.isAnimating = false;\r\n }\r\n // for(let i = 0; i < this.slidesToRemove.length; i++){\r\n // this.slidesToRemove[i].remove();\r\n // }\r\n\r\n // this.adjustSliderViewForOffset('right', true);\r\n // this.slides = this.el.querySelectorAll('[data-ww-graphical-callout-slide]');\r\n }, duration+50)\r\n }\r\n\r\n toggleArrows(idx){\r\n if(this.slides.length > 3){\r\n this.nextBtn.classList.remove('hidden');\r\n this.prevBtn.classList.remove('hidden');\r\n }\r\n }\r\n\r\n transformSlideContainer(idx, accountForOffset = false){\r\n let translateX = this.activeSlideView.offsetWidth / this.flex;\r\n let currentTransform = this.parseTransformX(this.activeSlideView.style.transform);\r\n //moving to the right\r\n if(idx > this.currentIndex){\r\n translateX*= -1;\r\n let newTranslate = (translateX) + currentTransform;\r\n if(accountForOffset && !this.isMobile()){\r\n newTranslate -= this.offsetAmount;\r\n }\r\n this.activeSlideView.style.transform = \"translateX(\"+newTranslate+\"px)\";\r\n //moving to the left\r\n } else if(idx < this.currentIndex){\r\n\r\n let newTranslate = translateX + currentTransform;\r\n if(Math.abs(translateX) == Math.abs(currentTransform)){\r\n newTranslate = 0;\r\n }\r\n\r\n this.activeSlideView.style.transform = \"translateX(\"+newTranslate+\"px)\";\r\n }\r\n\r\n this.currentIndex = idx;\r\n }\r\n\r\n addRemoveActiveClasses(idx){\r\n let isMobile = this.isMobile();\r\n for(let i = 0; i < this.slides.length; i++){\r\n let slide = this.slides[i];\r\n slide.classList.add('inactive');\r\n\r\n let mod = idx >= this.originalLength ? Math.abs(idx) % this.originalLength : idx;\r\n\r\n if(!isMobile && (i === 1 || i === 2 || i === 3)){\r\n slide.classList.remove('inactive');\r\n }\r\n else if(isMobile && (i === 1)){\r\n slide.classList.remove('inactive');\r\n }\r\n }\r\n }\r\n\r\n adjustSliderViewForOffset(rightOrLeft, accountForOffset = false){\r\n let translateX = this.activeSlideView.offsetWidth / this.flex;\r\n const multiplier = rightOrLeft === 'left' ? -1 : 1;\r\n translateX *= multiplier;\r\n const currentTransform = this.parseTransformX(this.activeSlideView.style.transform);\r\n let newTranslate = translateX + currentTransform ;\r\n if(accountForOffset && !this.isMobile()){\r\n newTranslate += this.offsetAmount;\r\n }\r\n this.activeSlideView.classList.add(\"no-transition\");\r\n this.activeSlideView.style.transform = \"translateX(\"+newTranslate+\"px)\";\r\n\r\n setTimeout(() => this.activeSlideView.classList.remove(\"no-transition\"), 10);\r\n }\r\n\r\n moveLastSlideToFront(slideToMoveIndex){\r\n //if there are four slides, take the length - 2, this will prevent duplicate slides\r\n const idx = (this.originalLength === 4 && !this.isMobile())? this.slides.length - 2 : this.slides.length - 1;\r\n const lastSlide = this.slides[idx];\r\n const clone = lastSlide.cloneNode(true);\r\n\r\n this.removeAnimationClasses(clone);\r\n\r\n this.activeSlideView.insertBefore(clone, this.slides[0]);\r\n this.adjustSliderViewForOffset('left');\r\n this.slides = (this.el.querySelectorAll('[data-ww-graphical-callout-slide]'));\r\n if(this.originalLength === 4 && !this.isMobile()){\r\n this.slidesToRemove.push(this.slides[this.slides.length -1]);\r\n } else{\r\n this.slidesToRemove.push(lastSlide);\r\n\r\n }\r\n }\r\n\r\n moveFirstSlideToLast(){\r\n const idx = (this.originalLength === 4 && !this.isMobile()) ? 1 : 0;\r\n const firstSlide = this.slides[idx];\r\n const clone = firstSlide.cloneNode(true);\r\n\r\n this.removeAnimationClasses(clone);\r\n\r\n this.activeSlideView.insertBefore(clone, null);\r\n this.slides = (this.el.querySelectorAll('[data-ww-graphical-callout-slide]'));\r\n this.slidesToRemove.push(this.slides[0]);\r\n }\r\n\r\n parseTransformX(transform) {\r\n if(!transform) {\r\n return 0;\r\n }\r\n return parseInt(transform.split('(')[1].split(',')[0])\r\n }\r\n\r\n isMobile(){\r\n //target mobile devices\r\n // return mq(this.cardBP);\r\n let browserWidth = window.innerWidth;\r\n return (browserWidth < 768);\r\n }\r\n\r\n isTablet() {\r\n let browserWidth = window.innerWidth;\r\n // return (browserWidth >= this.tabletBP && < )\r\n }\r\n\r\n removeAnimationClasses(node){\r\n let header = node.querySelector('.animate-down');\r\n header.style.transform = \"translateY(0px)\";\r\n header.classList.add('no-animate');\r\n let gradBox = node.querySelector('.fade-in');\r\n gradBox.classList.add('no-animate');\r\n }\r\n}","export function each(nodeList, cb) {\r\n for (let i = 0; i < nodeList.length; i++) {\r\n cb(nodeList[i], i);\r\n }\r\n}","import DomComponent from '../lib/domComponent';\r\nimport {each} from '../lib/dom';\r\n\r\nexport default class AccordionComponent extends DomComponent {\r\n static selector = '[data-js-accordion]';\r\n el;\r\n\r\n constructor(el) {\r\n if(!el) {\r\n return false\r\n }\r\n\r\n super(el);\r\n\r\n this.toggles = this.el.querySelectorAll('[data-accordion-toggle]');\r\n\r\n each(this.toggles, (toggle) => {\r\n const content = toggle.nextElementSibling;\r\n\r\n if (content) {\r\n content.style.height = '0px';\r\n setTimeout(() => {\r\n content.style.height = '';\r\n content.dataset.maxHeight = `${content.offsetHeight}px`;\r\n content.style.height = '0px';\r\n }, 1000);\r\n\r\n toggle.addEventListener('click', () => {\r\n if (toggle.parentElement.classList.contains('active')) {\r\n toggle.parentElement.classList.remove('active');\r\n content.style.height = '0px';\r\n } else {\r\n toggle.parentElement.classList.add('active');\r\n content.style.height = content.dataset.maxHeight;\r\n }\r\n })\r\n } else {\r\n console.error('accordion has no content!', this.el)\r\n }\r\n })\r\n\r\n setTimeout(() => {\r\n this.loaded();\r\n })\r\n\r\n }\r\n}","import DomComponent from '../../lib/domComponent';\r\nimport body from '../../services/body';\r\nimport { each, mq } from '../../lib/util';\r\nimport { duration } from '../../lib/const';\r\n\r\nexport default class ModalComponent extends DomComponent {\r\n static selector = '[data-js-modal]';\r\n static defaultOpts = {\r\n cache: true\r\n }\r\n\r\n constructor(el) {\r\n super(el, ModalComponent.defaultOpts);\r\n\r\n if(!this.el) {\r\n return;\r\n }\r\n\r\n this.closeButton = this.el.querySelector('[data-close]');\r\n this.background = this.el.querySelector('[data-bg]');\r\n this.modalTriggers = document.querySelectorAll('[data-modal-target]');\r\n this.modalContents = this.el.querySelectorAll('[data-modal-content]');\r\n this.videoModalContent = this.el.querySelector('[data-modal-content=\"video-modal\"]');\r\n this.modalBox = this.el.querySelector('[data-modal-box]');\r\n this.youtubeVideoModalTriggers = document.querySelectorAll('[data-video-id]');\r\n this.iframeModalTriggers = document.querySelectorAll('[data-iframe-src]');\r\n this.video = document.querySelector('[data-modal-video]');\r\n this.formWidgetSelector = '.form-widget';\r\n\r\n this.closeButton.addEventListener('click', this.closeModalHandler.bind(this));\r\n\r\n if(this.background) {\r\n this.background.addEventListener('click', this.closeModalHandler.bind(this));\r\n\r\n }\r\n\r\n each(this.youtubeVideoModalTriggers, (trigger) => {\r\n trigger.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n this.prepareYoutubeVideo(trigger.dataset.videoId);\r\n this.openModal(this.videoModalContent);\r\n })\r\n });\r\n\r\n each(this.iframeModalTriggers, (trigger) => {\r\n trigger.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n this.prepareIframe(trigger.dataset.iframeSrc);\r\n this.openModal(this.videoModalContent);\r\n })\r\n });\r\n\r\n // triggers that open modal\r\n each(this.modalTriggers, (trigger) => {\r\n trigger.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n\r\n const target = trigger.dataset.modalTarget;\r\n each(this.modalContents, (content) => {\r\n if(target === content.dataset.modalContent) {\r\n this.openModal(content);\r\n }\r\n });\r\n })\r\n });\r\n\r\n each(this.modalContents, (content) => {\r\n const formWidget = content.querySelector(this.formWidgetSelector);\r\n\r\n // formulate modal logic\r\n if ( formWidget ) {\r\n formWidget.addEventListener('formulate form: submit: success', (e) => {\r\n this.successHandler(e, content);\r\n })\r\n }\r\n });\r\n\r\n\r\n setTimeout(() => {\r\n this.loaded();\r\n });\r\n }\r\n\r\n updateHeader(node, text) {\r\n node.querySelector('h2').innerText = text;\r\n }\r\n\r\n successHandler(e, content) {\r\n this.updateHeader(content, 'THANK YOU.');\r\n }\r\n\r\n addIframeTriggers(nodeList) {\r\n each(nodeList, (node) => {\r\n node.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n this.prepareIframe(node.dataset.iframeSrc);\r\n this.openModal(this.videoModalContent);\r\n })\r\n })\r\n }\r\n\r\n addIframeVimeoTriggers(nodeList) {\r\n each(nodeList, (node) => {\r\n node.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n let vimeoId;\r\n if (mq('sm')) {\r\n vimeoId = node.dataset.desktopVideoId;\r\n } else {\r\n vimeoId = node.dataset.mobileVideoId;\r\n }\r\n this.prepareVimeoVideo(vimeoId);\r\n this.openModal(this.videoModalContent);\r\n })\r\n })\r\n }\r\n\r\n addYouTubeTriggers(nodeList) {\r\n each(nodeList, (node) => {\r\n node.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n this.prepareYoutubeVideo(node.dataset.videoId);\r\n this.openModal(this.videoModalContent);\r\n })\r\n })\r\n }\r\n\r\n closeModalHandler() {\r\n this.el.classList.remove('open');\r\n body.unlock();\r\n\r\n setTimeout(() => {\r\n each(this.modalContents, (content) => {content.style.display = 'none'});\r\n this.video.removeAttribute('src');\r\n this.el.classList.remove('modal--video');\r\n }, duration)\r\n }\r\n\r\n prepareVimeoVideo(videoId) {\r\n this.prepareIframe(`https://player.vimeo.com/video/${videoId}?amp;color=ffffff&title=0&byline=0&portrait=0&autoplay=1&transparent=0`);\r\n }\r\n\r\n prepareYoutubeVideo(videoId) {\r\n this.prepareIframe(`https://www.youtube.com/embed/${videoId}`)\r\n }\r\n\r\n prepareIframe(src) {\r\n this.video.setAttribute('src', src);\r\n this.el.classList.add('modal--video');\r\n }\r\n\r\n openModal(node) {\r\n node.style.display = '';\r\n this.el.classList.add('open');\r\n body.lock();\r\n }\r\n}","import Hammer from 'hammerjs';\r\nimport { each } from '../lib/util';\r\nimport DomComponent from '../lib/domComponent';\r\n\r\nexport default class Carousel {\r\n // The current index number\r\n index = 0;\r\n\r\n // The total number of slides\r\n numOfSlides = 0;\r\n\r\n // Are clones used\r\n areClonesUsed = false;\r\n\r\n // List of dots\r\n dots = [];\r\n\r\n constructor(el){\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n /**\r\n * Initialize the Carousel\r\n */\r\n init() {\r\n // Clone slides if needed\r\n this.cloneSlides();\r\n // Cache the DOM\r\n this.cacheDOM();\r\n // Event listeners\r\n this.eventListeners();\r\n // Get the number of slides\r\n this.numOfSlides = this.slides.length;\r\n // Display the carousel\r\n this.displayCarousel();\r\n // Display the controls\r\n this.displayControls();\r\n // Add touch controls\r\n this.touchControls();\r\n }\r\n\r\n /**\r\n * Close slides when there are only 2 slides in the carousel\r\n */\r\n cloneSlides() {\r\n // The slides container\r\n this.slidesContainer = this.el.querySelector('[data-slides-container]');\r\n // Check to see if there are only 2 slides in the carousel\r\n if (this.slidesContainer.children.length === 2) {\r\n // Clone the first slide\r\n const slide1Clone = this.slidesContainer.children[0].cloneNode(true);\r\n // Clone the second slide\r\n const slide2Clone = this.slidesContainer.children[1].cloneNode(true);\r\n // Append the first cloned slide\r\n this.slidesContainer.appendChild(slide1Clone);\r\n // Append the second cloned slide\r\n this.slidesContainer.appendChild(slide2Clone);\r\n // Set the areClonesUsed flag to true\r\n this.areClonesUsed = true;\r\n // Add YouTube Triggers to all the cloned elements\r\n const youTubeTriggers = this.el.querySelectorAll('[data-video-id]');\r\n const vimeoTriggers = this.el.querySelectorAll('[data-vimeo]');\r\n\r\n const modalEl = document.querySelector('[data-js-modal]');\r\n const modalComponent = DomComponent.getComponentByRef(modalEl.dataset.ref);\r\n modalComponent.addYouTubeTriggers(youTubeTriggers);\r\n modalComponent.addIframeVimeoTriggers(vimeoTriggers);\r\n }\r\n }\r\n\r\n /**\r\n * Cache the DOM elements\r\n */\r\n cacheDOM() {\r\n // The list of slide\r\n this.slides = this.el.querySelectorAll('[data-slide]');\r\n // The controls container\r\n this.controls = this.el.querySelector('[data-controls]');\r\n // The previous button\r\n this.prevButton = this.el.querySelector('[data-prev-btn]');\r\n // The next button\r\n this.nextButton = this.el.querySelector('[data-next-btn]');\r\n // The dots container\r\n this.dotsContainer = this.el.querySelector('[data-dots]');\r\n }\r\n\r\n /**\r\n * Event listeners\r\n */\r\n eventListeners() {\r\n // Previous button event listener\r\n this.prevButton.addEventListener('click', this.prevSlide.bind(this));\r\n // Next button event listener\r\n this.nextButton.addEventListener('click', this.nextSlide.bind(this));\r\n }\r\n\r\n /**\r\n * Display the carousel or just a single slide\r\n */\r\n displayCarousel() {\r\n // Check to see if there is only 1 slide\r\n if (this.numOfSlides === 1) {\r\n // Display the only slide\r\n this.slides[0].classList.add('current');\r\n }\r\n // Use the regular carousel if there are at least 3 slides\r\n else if (this.numOfSlides > 2) {\r\n // Display the dots\r\n this.displayDots();\r\n // Display the first slide\r\n this.goToSlide(0);\r\n }\r\n }\r\n\r\n /**\r\n * Display the Controls. ie. The previous and next buttons and the slide counter\r\n */\r\n displayControls() {\r\n // Check to see if the are more than 1 side\r\n if (this.numOfSlides === 1) {\r\n // If only 1 slide, then remove the controls\r\n this.controls.style.display = 'none';\r\n }\r\n }\r\n\r\n /**\r\n * Display the Dots\r\n */\r\n displayDots() {\r\n const numOfSlides = this.areClonesUsed ? 2 : this.numOfSlides;\r\n for (let i = 0; i < numOfSlides; i++) {\r\n const btn = document.createElement('BUTTON');\r\n btn.setAttribute('type', 'button');\r\n btn.setAttribute('aria-label', `go to slide number ${i + 1}`)\r\n if (i === 0) {\r\n btn.classList.add('active');\r\n }\r\n btn.addEventListener('click', () => {\r\n this.goToSlide(i);\r\n });\r\n this.dotsContainer.appendChild(btn);\r\n this.dots.push(btn);\r\n }\r\n }\r\n\r\n /**\r\n * Add touch controls to the carousel\r\n */\r\n touchControls() {\r\n const mc = new Hammer.Manager(this.slidesContainer);\r\n const swipe = new Hammer.Swipe();\r\n mc.add(swipe);\r\n mc.sensitivity = 25;\r\n // Show the Next Slide\r\n mc.on('swipeleft', () => {\r\n this.nextSlide();\r\n });\r\n // Show the Previous Slide\r\n mc.on('swiperight', () => {\r\n this.prevSlide();\r\n });\r\n }\r\n\r\n /**\r\n * Remove all the classes from the slides\r\n */\r\n removeAllClasses() {\r\n // Loop though all the slides\r\n each(this.slides, (slide) => {\r\n // Remove the current class\r\n slide.classList.remove('current');\r\n // Remove the next class\r\n slide.classList.remove('next');\r\n // Remove the prev class\r\n slide.classList.remove('prev');\r\n // Remove the in-transition class\r\n slide.classList.remove('in-transition');\r\n });\r\n }\r\n\r\n /**\r\n * Update the dots\r\n */\r\n updateDots() {\r\n this.dots.forEach(dot => {\r\n dot.classList.remove('active');\r\n });\r\n this.dots[this.index].classList.add('active');\r\n }\r\n\r\n /**\r\n * Go to the given index\r\n *\r\n * @param {int} newCurrent The new index of the carousel\r\n */\r\n goToSlide(newCurrent) {\r\n // Update the new next index\r\n const newPrev = (newCurrent - 1 < 0) ? this.numOfSlides - 1 : newCurrent - 1;\r\n // Update the new previous index\r\n const newNext = (newCurrent + 1 === this.numOfSlides) ? 0 : newCurrent + 1;\r\n // Remove all the classes added to the slides\r\n this.removeAllClasses();\r\n // Add the current class to the new current slide\r\n this.slides[newCurrent].classList.add('current');\r\n // Add the next class to the new next slide\r\n this.slides[newNext].classList.add('next');\r\n // Add the prev class to the new previous slide\r\n this.slides[newPrev].classList.add('prev');\r\n // Add the in-transition class to the current slide so it can transition out of view\r\n this.slides[this.index].classList.add('in-transition');\r\n // Update the current index\r\n this.index = newCurrent;\r\n // Update dots\r\n this.updateDots();\r\n }\r\n\r\n /**\r\n * Go to the previous slide\r\n */\r\n prevSlide() {\r\n // Get the previous slide index\r\n const prevSlide = (this.index - 1 < 0) ? this.numOfSlides - 1 : this.index - 1;\r\n // Go to the previous slide\r\n this.goToSlide(prevSlide);\r\n }\r\n\r\n /**\r\n * Go to the next slide\r\n */\r\n nextSlide() {\r\n // Get the next slide index\r\n const nextSlide = (this.index + 1 === this.numOfSlides) ? 0 : this.index + 1;\r\n // Go to the next slide\r\n this.goToSlide(nextSlide);\r\n }\r\n}","import WidgetBase from '../widget.base';\r\nimport Carousel from '../../services/carousel';\r\nimport AccordionComponent from '../../components/accordion';\r\nimport { each, mq } from '../../lib/util';\r\n\r\nexport default class AttractionDetails extends WidgetBase {\r\n static selector = '[data-ww-attraction-details]';\r\n\r\n constructor(el){\r\n super(el);\r\n this.initialize();\r\n }\r\n\r\n initialize() {\r\n // Get all the carousels\r\n this.carousels = this.el.querySelectorAll('[data-js-media-gallery]');\r\n // Start all carousels\r\n this.startCarousels();\r\n // Only display accordions on mobile\r\n if (!mq('sm')) {\r\n // Get all accordions\r\n this.accordions = this.el.querySelectorAll('[data-attraction-accordion]');\r\n // Start all accordions\r\n this.startAccordions();\r\n }\r\n }\r\n\r\n /**\r\n * Start all carousels\r\n */\r\n startCarousels() {\r\n // Loop through all the Apply Selected buttons\r\n each(this.carousels, (carousel) => {\r\n new Carousel(carousel);\r\n });\r\n }\r\n\r\n /**\r\n * Start all accordions\r\n */\r\n startAccordions() {\r\n // Loop through all the accordions\r\n each(this.accordions, (accordion) => {\r\n new AccordionComponent(accordion);\r\n });\r\n }\r\n}","import WidgetBase from '../widget.base';\r\n\r\nexport default class AttractionGallery extends WidgetBase {\r\n static selector = '[data-ww-attraction-gallery]';\r\n activeClass = 'active';\r\n hiddenClass = 'hidden';\r\n menuSelector = '[data-menu-item]';\r\n cardSelector = '[data-categories]';\r\n menuItems = [];\r\n cards = [];\r\n\r\n constructor(el){\r\n super(el);\r\n this.menuItems = this.el.querySelectorAll(this.menuSelector);\r\n this.cards = this.el.querySelectorAll(this.cardSelector);\r\n\r\n for(let i = 0; i < this.menuItems.length; i++){\r\n this.menuItems[i].addEventListener('click', this.menuItemClicked);\r\n }\r\n\r\n //this.initializeCount()\r\n this.initialize();\r\n }\r\n\r\n initialize() {\r\n\r\n //Check for a ?filter query param, and if found, click the selected filter\r\n const params = this.parseUrlParams();\r\n\r\n if(params.hasOwnProperty('filter') && params.filter) {\r\n this.el.querySelectorAll('[data-filter]')\r\n .forEach(el => {\r\n if (el.dataset.filter.toUpperCase() === params.filter.toUpperCase()) {\r\n el.click();\r\n }\r\n });\r\n }\r\n }\r\n\r\n initializeCount(){\r\n for(let i = 0; i < this.menuItems.length; i++){\r\n let count = 0;\r\n let category = this.menuItems[i].dataset.filter.toUpperCase();\r\n\r\n if(category === \"ALL\"){\r\n count = this.cards.length;;\r\n } else {\r\n for(let j = 0; j < this.cards.length; j++){\r\n let cardCategories = JSON.parse(this.cards[j].dataset.categories).map((val) => val.toUpperCase());\r\n if(cardCategories.indexOf(category) > -1){\r\n count++;\r\n }\r\n }\r\n }\r\n this.menuItems[i].insertAdjacentHTML('beforeend', ' ('+count+')');\r\n }\r\n }\r\n\r\n menuItemClicked = (e) =>{\r\n e.preventDefault();\r\n let filterCategory = e.target.dataset.filter.toUpperCase();\r\n this.removeAllActiveMenuItems();\r\n this.removeAllActiveCards();\r\n\r\n e.target.classList.add(this.activeClass);\r\n this.filterCards(filterCategory);\r\n }\r\n\r\n filterCards(categories){\r\n for(let i = 0; i < this.cards.length; i++){\r\n if(categories === \"ALL\"){\r\n this.cards[i].classList.remove(this.hiddenClass);\r\n } else {\r\n let cardCategories = JSON.parse(this.cards[i].dataset.categories).map((val) => val.toUpperCase());\r\n if(cardCategories.indexOf(categories) > -1){\r\n this.cards[i].classList.remove(this.hiddenClass);\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeAllActiveMenuItems(){\r\n for(let i = 0; i < this.menuItems.length; i++){\r\n this.menuItems[i].classList.remove(this.activeClass);\r\n }\r\n }\r\n\r\n removeAllActiveCards(){\r\n for(let i = 0; i < this.cards.length; i++){\r\n this.cards[i].classList.add(this.hiddenClass);\r\n }\r\n }\r\n \r\n getUrlVars() {\r\n let vars = {};\r\n const parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, (m,key,value) => {\r\n vars[key] = decodeURI(value);\r\n });\r\n return vars;\r\n }\r\n\r\n parseUrlParams() {\r\n let params = this.getUrlVars();\r\n\r\n return {\r\n filter: params['filter']\r\n };\r\n }\r\n}","import WidgetBase from '../widget.base';\r\nimport featSniffer from 'App/lib/featureDetection';\r\nimport { each } from 'App/lib/dom';\r\n\r\nexport default class CompoundCalloutListWidget extends WidgetBase {\r\n static selector = '[data-ww-compound-callout-list]';\r\n slideContainer;\r\n circleBG;\r\n sections;\r\n pagerWidth;\r\n navCircles;\r\n navContainer;\r\n threshold = 100;\r\n isUpdatingTouch = false;\r\n mobileBP = 480;\r\n calloutObj;\r\n slides;\r\n _index;\r\n\r\n constructor(el){\r\n super(el);\r\n this.sections = this.el.querySelectorAll('[data-section]');\r\n this.circleBG = this.el.querySelectorAll('[data-circle-bg]');\r\n this.createCalloutObj();\r\n window.addEventListener('resize', this.adjustCircleSize.bind(this));\r\n this.adjustCircleSize();\r\n setTimeout(() => this.loaded());\r\n }\r\n\r\n adjustCircleSize(){\r\n each(this.circleBG, (el) => {\r\n const height = el.offsetHeight;\r\n el.style.width = `${height}px`;\r\n });\r\n }\r\n\r\n createCalloutObj(){\r\n this.calloutObj = [];\r\n \r\n for(let i = 0; i < this.sections.length; i++){\r\n let obj = {};\r\n obj.index = 0;\r\n obj.slides = this.sections[i].querySelectorAll(['[data-slide]']);\r\n obj.navCircles = this.sections[i].querySelectorAll('[data-nav-circle]');\r\n obj.navContainer = this.sections[i].querySelector('[data-nav-container]');\r\n obj.slideContainer = this.sections[i].querySelector('[data-slide-container]');\r\n obj.slideContainer.style.transform = \"translateX(0px)\";\r\n obj.calloutContainer = this.sections[i].querySelector('[data-callout-container]');\r\n obj.mainCallout = this.sections[i].querySelectorAll('[data-js-main]');\r\n if((obj.slides.length === 0 && obj.mainCallout.length === 1) || obj.slides.length === 1){\r\n if(this.isMobile()){\r\n obj.calloutContainer.style.position = \"relative\";\r\n obj.calloutContainer.style.top = \"0\";\r\n obj.calloutContainer.style.transform=\"translateY(0)\";\r\n } else{\r\n obj.calloutContainer.style.position = \"absolute\";\r\n obj.calloutContainer.style.top = \"50%\";\r\n obj.calloutContainer.style.left = \"50%\";\r\n obj.calloutContainer.style.transform=\"translateX(-50%) translateY(-50%)\";\r\n }\r\n }\r\n if(obj.slides.length == 0){\r\n \r\n } else{\r\n obj.slides[0].classList.add('active');\r\n }\r\n obj.slideContainer.addEventListener(\"transitionend\", (e) => {\r\n e.target.classList.remove('transition-container');\r\n });\r\n if(featSniffer.touch() && obj.slides.length > 1){\r\n this.addTouchEvents(obj.slideContainer, i);\r\n }\r\n\r\n \r\n\r\n \r\n \r\n this.calloutObj.push(obj);\r\n }\r\n }\r\n\r\n //modifyCSS(collection){\r\n //collection.circleBackground.style.position=\"relative\";\r\n // collection.circle.style.left = \"null\";\r\n //collection.circle.style.position=\"absolute\";\r\n //collection.circle.style.left = \"unset\";\r\n //collection.circle.style.width=\"auto\";\r\n //collection.headerContainer.style.position=\"absolute\";\r\n\r\n //collection.contentContainer.style.justifyContent=\"center\";\r\n // collection.headerContainer.style.top = \"0\";\r\n //}\r\n\r\n removeTransition = () => {\r\n this.slideContainer.classList.remove('transition-container');\r\n }\r\n\r\n setTransformX(el, value) {\r\n el.style.transform = 'translate3d(' + value + 'px, 0, 0)';\r\n }\r\n\r\n\r\n\r\n update(oldIdx, collection) {\r\n let currentIdx = collection.index;\r\n\r\n if(collection.slides[currentIdx] == null){\r\n return;\r\n }\r\n if(collection.slides[oldIdx] == null){\r\n return;\r\n }\r\n if(typeof oldIdx !== 'undefined') {\r\n collection.slides[oldIdx].classList.remove('active');\r\n collection.navCircles[oldIdx].classList.remove('active');\r\n \r\n }\r\n\r\n collection.slides[currentIdx].classList.add('active');\r\n collection.navCircles[currentIdx].classList.add('active');\r\n \r\n let slideWidth = collection.slides[currentIdx].offsetWidth;\r\n const newOpacity = (slideWidth * 3) > window.innerWidth ? 0.7 : 1; \r\n const offset = 30; //initial offset. how far the first slide is indented\r\n // const marginOffset = 5; //margin of 10. divide it by 2\r\n // let gutter = (collection.slideContainer.offsetWidth / collection.slides.length) * currentIdx;\r\n // gutter -= (currentIdx * marginOffset);\r\n // gutter *= -1;\r\n // gutter += offset;\r\n let gutter = slideWidth * currentIdx * -1;\r\n const marginOffset = window.screen.width <= 325 ? 15 : 30;\r\n const slideoff = ((window.screen.width - slideWidth) / 2) - marginOffset - (currentIdx * 10);\r\n gutter += slideoff;\r\n \r\n // if(oldIdx === 0){\r\n // gutter -= offset / 2;\r\n // } else {\r\n // gutter -= (10 * currentIdx);\r\n //}\r\n // const gutter = ((collection.slideContainer.offsetWidth / collection.slides.length) * currentIdx - (5 * currentIdx)) * -1; //slideWidth * currentIdx * -1; //(window.innerWidth - this.slideWidth); \r\n\r\n if(currentIdx === 0) {\r\n this.setTransformX(collection.slideContainer, 0)\r\n }else{\r\n this.setTransformX(collection.slideContainer, gutter)\r\n }\r\n\r\n }\r\n\r\n addTouchEvents(element, collectionIdx){\r\n let isTouchStart = false;\r\n\r\n // initial mouse X for `mousedown`\r\n let touchX;\r\n let touchY;\r\n\r\n // element transform style before/after\r\n let transformX;\r\n\r\n // element X before and after move\r\n let elementX = 0;\r\n\r\n element.addEventListener('touchstart', onTouchStart.bind(this));\r\n \r\n /**\r\n * Listens to `mousedown` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchStart(event) {\r\n if(!this.isMobile()){\r\n return;\r\n }\r\n \r\n \r\n element.classList.add('dragging');\r\n touchX = event.touches[0].clientX;\r\n touchY = event.touches[0].clientY;\r\n isTouchStart = true;\r\n\r\n transformX = parseTransformX(element.style.transform);\r\n }\r\n \r\n // mouse button released\r\n element.addEventListener('touchend', onTouchEnd.bind(this));\r\n \r\n /**\r\n * Listens to `mouseup` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchEnd(event) {\r\n if(!this.isMobile()){\r\n return;\r\n }\r\n \r\n let oldIdx = this.calloutObj[collectionIdx].index;\r\n element.classList.remove('dragging');\r\n element.classList.add('transition-container');\r\n elementX = element.style.transform ? parseTransformX(element.style.transform) : transformX;\r\n \r\n const transformDelta = elementX - transformX;\r\n \r\n if (Math.abs(transformDelta) > this.threshold) {\r\n if(transformDelta < 0) {\r\n if(oldIdx !== this.calloutObj[collectionIdx].slides.length - 1) {\r\n this.calloutObj[collectionIdx].index++;\r\n this.isUpdatingTouch = true;\r\n this.update(oldIdx, this.calloutObj[collectionIdx]);\r\n\r\n }else{\r\n // sets slide back to start position\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)'; \r\n }\r\n }else{\r\n if(oldIdx !== 0) {\r\n this.calloutObj[collectionIdx].index--;\r\n this.update(oldIdx, this.calloutObj[collectionIdx]);\r\n \r\n }else{\r\n // sets slide back to start position\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)'; \r\n }\r\n }\r\n }else{\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)';\r\n\r\n if (this.activatingIndex) {\r\n }\r\n }\r\n \r\n \r\n }\r\n\r\n function parseTransformX(transform) {\r\n return parseInt(transform.split('(')[1].split(',')[0])\r\n }\r\n\r\n element.addEventListener('touchmove', onTouchMove.bind(this));\r\n\r\n function onTouchMove(event) {\r\n if (!isTouchStart) return;\r\n \r\n var deltaX = event.touches[0].clientX - touchX;\r\n var deltaY = event.touches[0].clientY - touchY;\r\n \r\n const absDeltaX = Math.abs(deltaX);\r\n const absDeltaY = Math.abs(deltaY);\r\n\r\n if(absDeltaY > absDeltaX) {\r\n return false;\r\n }\r\n element.style.transform = 'translate3d(' + (transformX + deltaX) + 'px, 0, 0)';\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n ratioUtility(delta, max) {\r\n const ratio = delta * max;\r\n return ratio < max ? ratio : max;\r\n }\r\n \r\n isMobile(){\r\n let browserWidth = window.innerWidth;\r\n return (browserWidth <= this.mobileBP);\r\n }\r\n}","// Dependencies.\r\nimport DomComponent from '../../lib/domComponent';\r\nimport { mq } from '../../lib/util';\r\n\r\n/**\r\n * The chat button/window shown at the bottom right of the page.\r\n */\r\nexport default class ChatComponent extends DomComponent {\r\n static selector = '[data-js-module=\"chat\"]';\r\n\r\n constructor(el) {\r\n super(el);\r\n\r\n // Variables.\r\n this.newWindowLink = el.dataset.chatbotUrl;\r\n this.buttons = Array.from(document.querySelectorAll('[data-chat-button]'));\r\n\r\n // Listen for click events on the chat header.\r\n this.buttons.forEach(b => b.addEventListener('click', (e) => {\r\n this.handleClick(e);\r\n }));\r\n\r\n }\r\n\r\n /**\r\n * Handles a click of the chat header.\r\n * @param e The click event.\r\n */\r\n handleClick(e) {\r\n\r\n // Avoid navigation.\r\n e.preventDefault();\r\n this.openChat();\r\n }\r\n\r\n /**\r\n * Opens the chat window.\r\n */\r\n openChat() {\r\n const $chatBotButton = document.querySelector('.satisfi_chat-button');\r\n\r\n if (!$chatBotButton) {\r\n return;\r\n }\r\n\r\n $chatBotButton.click();\r\n }\r\n\r\n}","import { scrollTo } from '../lib/util';\r\nimport { duration } from '../lib/const';\r\nconst BackToTop = {}\r\n\r\nBackToTop.init = function(parentElm, shouldScrollToTopOfWidget){\r\n var scrollToTop = function(){\r\n const controlsOffsetY = shouldScrollToTopOfWidget \r\n ? window.pageYOffset + parentElm.getBoundingClientRect().top - 210\r\n : 0;\r\n scrollTo(document.scrollingElement, controlsOffsetY, duration);\r\n }\r\n\r\n const bttButton = parentElm.querySelector('[data-js-back-to-top]');\r\n bttButton.addEventListener('click', scrollToTop);\r\n}\r\n\r\nexport default BackToTop;","import WidgetBase from '../widget.base';\r\n\r\nimport { each , debounce2, capitalizeFirstLetter } from 'App/lib/util';\r\nimport body from 'App/services/body';\r\nimport { mq, scrollTo } from '../../lib/util';\r\nimport BackToTopService from '../../services/back-to-top';\r\nexport default class DirectoryWidget extends WidgetBase {\r\n static selector = '[data-js-directory]';\r\n\r\n activeFilter;\r\n activeSubfilters = [];\r\n searchTerm;\r\n viewType = 'grid';\r\n\r\n constructor(el) {\r\n super(el);\r\n\r\n this.listings = this.el.querySelector('[data-listings]');\r\n this.listingRows = this.el.querySelectorAll('[data-listing-row]')\r\n this.headers = this.el.querySelectorAll('[data-header]');\r\n this.searchInputs = this.el.querySelectorAll('[data-search]');\r\n this.searchClear = this.el.querySelectorAll('[data-clear-search]');\r\n this.filters = this.el.querySelectorAll('[data-filter]');\r\n this.filterAll = this.el.querySelector('[data-filter=\"all\"]');\r\n this.subfilters = this.el.querySelectorAll('[data-subfilter]');\r\n this.viewToggles = this.el.querySelectorAll('[data-view-toggle]');\r\n this.selectedFiltersList = this.el.querySelector('[data-selected-filters]');\r\n this.selectedFiltersContainer = this.el.querySelector('[data-selected-filters-container]');\r\n this.listingHeaders = this.el.querySelectorAll('[data-listing-header]');\r\n this.mobileFilterBtn = this.el.querySelectorAll('[data-mobile-filter-btn]');\r\n this.directoryContainer = this.el.querySelector('[data-directory-container]');\r\n this.directoryHeaderMobile = this.el.querySelector('.directory-header__mobile');\r\n this.sideBar = this.el.querySelector('.directory__sidebar');\r\n this.activeOrderHeader;\r\n\r\n each(this.mobileFilterBtn, (btn) => {\r\n btn.addEventListener('click', () => {\r\n // if (btn.classList.contains('open') && !btn.classList.contains('sub')) {\r\n // btn.innerHTML = 'Filter';\r\n // } else {\r\n // btn.innerHTML = 'Apply';\r\n // }\r\n btn.classList.toggle('open');\r\n document.body.classList.toggle('lock');\r\n this.directoryContainer.classList.toggle('open');\r\n });\r\n })\r\n\r\n const debouncedSearchHandler = debounce2(this.searchHandler.bind(this), 200);\r\n const initialState = this.getInitialState();\r\n const hasInitialFilter = initialState.hasOwnProperty('filter') && initialState.filter.length > 0;\r\n\r\n each(this.searchClear, (trigger) => {\r\n trigger.addEventListener('click', this.clearSearch.bind(this));\r\n })\r\n\r\n each(this.searchInputs, (input) => {\r\n\r\n if (initialState.hasOwnProperty('term')) {\r\n input.value = initialState.term;\r\n }\r\n\r\n input.addEventListener('keydown', (e) => {\r\n setTimeout(() => {\r\n debouncedSearchHandler(e, input.value);\r\n })\r\n });\r\n })\r\n\r\n each(this.filters, (filter) => {\r\n filter.addEventListener('click', (e) => {\r\n this.filterHandler(e, filter);\r\n });\r\n\r\n if (hasInitialFilter && initialState.filter === filter.dataset.filter) {\r\n filter.classList.add('active');\r\n this.activeFilter = filter;\r\n this.createFilterClearTrigger(filter);\r\n }\r\n });\r\n\r\n each(this.subfilters, (filter) => {\r\n filter.addEventListener('click', (e) => {\r\n e.stopPropagation();\r\n this.toggleSubfilter(filter);\r\n });\r\n\r\n if (initialState.hasOwnProperty('subfilter')) {\r\n each(initialState.subfilter, (subfilter) => {\r\n if (subfilter === filter.dataset.subfilter) {\r\n if (hasInitialFilter == false || (hasInitialFilter && filter.classList.contains(initialState.filter))) {\r\n filter.classList.add('active');\r\n this.createSubfilterClearTrigger(filter);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n each(this.viewToggles, (toggle) => {\r\n toggle.addEventListener('click', (e) => {\r\n this.changeView(toggle.dataset.viewToggle);\r\n })\r\n });\r\n\r\n each(this.selectedFiltersList.querySelectorAll('[data-selected-filter]'), (filter) => {\r\n filter.addEventListener('click', (e) => {\r\n this.toggleSubfilter(filter);\r\n })\r\n });\r\n\r\n each(this.listingHeaders, (header) => {\r\n header.addEventListener('click', (e) => {\r\n this.orderColumn(header);\r\n });\r\n });\r\n\r\n if(initialState.term) {\r\n this.searchHandler(null, initialState.term);\r\n }\r\n\r\n if(initialState.filterOnInit) {\r\n if (initialState.filter === 'dining') {\r\n this.disableSubfilters();\r\n this.diningFilter(true);\r\n } else {\r\n this.filter();\r\n }\r\n }\r\n\r\n\r\n setTimeout(() => {\r\n if (!mq(1345)) {\r\n const height = this.directoryHeaderMobile.offsetHeight * -1;\r\n this.sideBar.style.top = `${height}px`;\r\n }\r\n this.loaded();\r\n },500)\r\n\r\n BackToTopService.init(el, true);\r\n }\r\n\r\n changeView(type) {\r\n if(type === this.viewType) {\r\n return;\r\n }\r\n\r\n this.listings.classList.remove(`directory__listings--` + this.viewType);\r\n this.listings.classList.add(`directory__listings--` + type);\r\n\r\n // update classes\r\n each(this.viewToggles, (toggle) => {\r\n if(toggle.dataset.viewToggle === type) {\r\n toggle.classList.add('active');\r\n }else{\r\n toggle.classList.remove('active');\r\n }\r\n });\r\n\r\n this.viewType = type;\r\n }\r\n\r\n filter() {\r\n if(this.activeFilter.dataset.filter === 'all') {\r\n this.clearSearch();\r\n }\r\n\r\n each(this.listings.children, (listing) => {\r\n let found = this.activeFilter.dataset.filter === 'all';\r\n if (this.activeSubfilters.length) {\r\n each(this.activeSubfilters, (activeFilter) => {\r\n if (listing.classList.contains(activeFilter.filter.dataset.subfilter) && listing.classList.contains('shopping')) {\r\n found = true;\r\n }\r\n });\r\n } else {\r\n if (listing.classList.contains(this.activeFilter.dataset.filter)) {\r\n found = true;\r\n }\r\n }\r\n\r\n if (found) {\r\n listing.classList.remove('hidden-by-filter');\r\n } else {\r\n listing.classList.add('hidden-by-filter');\r\n }\r\n });\r\n\r\n this.checkForZeroResults();\r\n this.recordState();\r\n }\r\n\r\n diningFilter(isOnload = false) {\r\n if(this.activeFilter.dataset.filter === 'all') {\r\n this.clearSearch();\r\n }\r\n const diningSubfilters = [];\r\n each(this.listings.children, (listing) => {\r\n let found = this.activeFilter.dataset.filter === 'all';\r\n if (this.activeSubfilters.length) {\r\n found = true;\r\n each(this.activeSubfilters, (activeFilter) => {\r\n if (!listing.classList.contains(activeFilter.filter.dataset.subfilter) || !listing.classList.contains('dining')) {\r\n found = false;\r\n }\r\n });\r\n } else {\r\n if (listing.classList.contains(this.activeFilter.dataset.filter)) {\r\n found = true;\r\n }\r\n }\r\n\r\n if (found) {\r\n listing.classList.remove('hidden-by-filter');\r\n const tempListing = listing.dataset.listingRow.split(' ');\r\n tempListing.forEach((value) => {\r\n if (!diningSubfilters.includes(value)) {\r\n diningSubfilters.push(value);\r\n }\r\n });\r\n } else {\r\n listing.classList.add('hidden-by-filter');\r\n }\r\n });\r\n this.enableSubfilters(diningSubfilters)\r\n this.checkForZeroResults();\r\n if (isOnload === false) {\r\n this.recordState();\r\n }\r\n }\r\n\r\n filterHandler(e, filter) {\r\n if (this.activeFilter.dataset.filter !== filter.dataset.filter) {\r\n this.clearActiveSubfilters();\r\n this.setActiveFilter(filter);\r\n setTimeout(() => {\r\n scrollTo(document.scrollingElement, 0, 500);\r\n }, 500);\r\n }\r\n const filterBy = filter.dataset.filter;\r\n\r\n if (filter.classList.contains('active')) {\r\n const dropdown = filter.nextElementSibling;\r\n\r\n // open / close dropdown\r\n if (dropdown && typeof dropdown.dataset.dropdown !== 'undefined') {\r\n if (filter.parentElement.classList.contains('open')) {\r\n this.closeDropdown(filter);\r\n } else {\r\n this.openDropdown(filter);\r\n }\r\n }\r\n\r\n } else {\r\n this.clearActiveSubfilters();\r\n this.setActiveFilter(filter);\r\n }\r\n\r\n if (this.activeFilter && filterBy === this.activeFilter.dataset.filter && this.activeSubfilters.length > 0) {\r\n return;\r\n } else {\r\n if (filter.dataset.filter === 'dining') {\r\n this.diningFilter();\r\n } else {\r\n this.filter();\r\n }\r\n }\r\n }\r\n\r\n clearActiveSubfilters() {\r\n if (this.activeFilter) {\r\n this.closeDropdown(this.activeFilter);\r\n }\r\n this.selectedFiltersContainer.classList.remove('open')\r\n this.selectedFiltersList.innerHTML = \"\";\r\n\r\n each(this.activeSubfilters, (item) => {\r\n item.filter.classList.remove('active');\r\n })\r\n this.activeSubfilters = [];\r\n }\r\n\r\n closeDropdown(filter) {\r\n if (filter.nextElementSibling !== null) {\r\n filter.nextElementSibling.style.height = '';\r\n }\r\n filter.parentElement.classList.remove('open');\r\n\r\n if(!mq('md')) {\r\n body.unlock();\r\n }\r\n\r\n document.removeEventListener('click', this.closeDropdown);\r\n }\r\n\r\n openDropdown(filter) {\r\n const dropdown = filter.nextElementSibling;\r\n if (dropdown !== null) {\r\n dropdown.style.height = 'auto';\r\n let height = dropdown.clientHeight + 'px';\r\n dropdown.style.height = 0;\r\n setTimeout(() => {\r\n dropdown.style.height = height;\r\n }, 0);\r\n }\r\n\r\n setTimeout(() => {\r\n filter.parentElement.classList.add('open');\r\n })\r\n\r\n document.addEventListener('click', this.closeDropdown.bind(this, filter));\r\n }\r\n\r\n disableSubfilters() {\r\n each(this.subfilters, (filter) => {\r\n if (!filter.classList.contains('active') && filter.classList.contains('dining')) {\r\n filter.setAttribute('disabled','disabled');\r\n }\r\n });\r\n }\r\n\r\n enableSubfilters(subfiltersToEnable = []) {\r\n each(this.subfilters, (filter) => {\r\n if (subfiltersToEnable.includes(filter.dataset.subfilter)) {\r\n filter.removeAttribute('disabled');\r\n }\r\n });\r\n }\r\n\r\n toggleSubfilter (filter) {\r\n if (filter.classList.contains('active')) {\r\n // remove subfilter\r\n filter.classList.remove('active');\r\n\r\n let index = this.activeSubfilters.length;\r\n while(index--) {\r\n if (this.activeSubfilters[index].filter.dataset.subfilter === filter.dataset.subfilter) {\r\n this.activeSubfilters[index].clearTrigger.remove();\r\n this.activeSubfilters.splice(index, 1);\r\n }\r\n }\r\n\r\n if(!this.activeSubfilters.length > 0) {\r\n this.selectedFiltersContainer.classList.remove('open');\r\n }\r\n this.enableSubfilters();\r\n } else {\r\n // add subfilter\r\n this.createSubfilterClearTrigger(filter);\r\n filter.classList.add('active');\r\n this.disableSubfilters();\r\n }\r\n\r\n if (filter.classList.contains('dining')) {\r\n this.diningFilter();\r\n } else {\r\n this.filter();\r\n }\r\n }\r\n\r\n createSubfilterClearTrigger(filter) {\r\n let span = document.createElement('span');\r\n span.innerText = filter.innerText;\r\n span.addEventListener('click', (e) => {\r\n this.toggleSubfilter(filter);\r\n });\r\n\r\n this.selectedFiltersList.append(span);\r\n this.activeSubfilters.push({\r\n clearTrigger: span,\r\n filter: filter,\r\n });\r\n\r\n // open the filter bar if it's not already open\r\n if(!this.selectedFiltersContainer.classList.contains('open')) {\r\n this.selectedFiltersContainer.classList.add('open');\r\n }\r\n }\r\n\r\n createFilterClearTrigger(filter) {\r\n if(filter.dataset.filter === 'all') {\r\n return;\r\n }\r\n\r\n let span = document.createElement('span');\r\n span.innerText = capitalizeFirstLetter(filter.innerText);\r\n\r\n span.addEventListener('click', (e) => {\r\n this.clearAllFilters();\r\n });\r\n\r\n this.selectedFiltersList.append(span);\r\n\r\n // open the filter bar if it's not already open\r\n if(!this.selectedFiltersContainer.classList.contains('open')) {\r\n this.selectedFiltersContainer.classList.add('open');\r\n }\r\n }\r\n\r\n updateHeaders(headerText) {\r\n each(this.headers, (header) => {\r\n header.innerText = headerText;\r\n })\r\n }\r\n\r\n setActiveFilter (filter) {\r\n if(this.activeFilter) {\r\n this.activeFilter.classList.remove('active');\r\n }\r\n\r\n filter.classList.add('active');\r\n this.activeFilter = filter;\r\n this.updateHeaders('Directory | ' + capitalizeFirstLetter(filter.dataset.filter));\r\n\r\n this.createFilterClearTrigger(filter);\r\n }\r\n\r\n clearAllFilters() {\r\n this.activeFilter.classList.remove('active');\r\n this.activeFilter = this.filterAll;\r\n this.activeFilter.classList.add('active');\r\n this.activeSubfilters = [];\r\n this.filter();\r\n this.updateHeaders('Directory');\r\n this.selectedFiltersContainer.classList.remove('open');\r\n // Clear all subfilters\r\n each(this.subfilters, (filter) => {\r\n filter.classList.remove('active');\r\n });\r\n }\r\n\r\n recordState() {\r\n let subfilterArr = [];\r\n if(this.activeSubfilters) {\r\n each(this.activeSubfilters, (subfilter) => {\r\n subfilterArr.push(subfilter.filter.dataset.subfilter);\r\n });\r\n }\r\n\r\n const state = {\r\n filter: this.activeFilter ? this.activeFilter.dataset.filter : null,\r\n subfilter: subfilterArr,\r\n term: this.searchTerm,\r\n };\r\n\r\n let url = window.location.pathname + \"?\";\r\n\r\n let arr = Object.keys(state);\r\n\r\n url += arr\r\n .filter((prop) => state[prop] && state[prop].length)\r\n .map((prop) => {\r\n const value = typeof state[prop] === 'string' ? state[prop] : state[prop].join('|');\r\n return `${prop}=${value}`;\r\n\r\n })\r\n .join('&');\r\n\r\n window.history.pushState(state, null, url);\r\n }\r\n\r\n clearSearch() {\r\n each(this.searchInputs, (input) => {\r\n input.value = '';\r\n })\r\n\r\n this.searchHandler(null, null);\r\n }\r\n\r\n activateSearch() {\r\n each(this.searchInputs, (input) => {\r\n input.closest('.directory__search').classList.add('active');\r\n })\r\n }\r\n deactivateSearch() {\r\n each(this.searchInputs, (input) => {\r\n input.closest('.directory__search').classList.remove('active');\r\n })\r\n }\r\n\r\n searchHandler (e, searchTerm) {\r\n if(searchTerm) {\r\n searchTerm = searchTerm.toLowerCase().trim();\r\n this.searchTerm = searchTerm;\r\n this.activateSearch();\r\n }else{\r\n this.searchTerm = null;\r\n this.deactivateSearch();\r\n }\r\n\r\n each(this.listings.children, (listing) => {\r\n const searchTerms = [];\r\n\r\n if (listing.dataset.name) {\r\n searchTerms.push(listing.dataset.name);\r\n }\r\n\r\n if (listing.dataset.searchTerms) {\r\n searchTerms.push(listing.dataset.searchTerms);\r\n }\r\n\r\n if (!searchTerm || searchTerm.length === 0) {\r\n listing.classList.remove('hidden-by-search');\r\n } else if (searchTerm.length > 0 && searchTerms.some(value => this.searchTermMatches(value, searchTerm))) {\r\n listing.classList.remove('hidden-by-search');\r\n } else {\r\n listing.classList.add('hidden-by-search');\r\n }\r\n });\r\n\r\n this.checkForZeroResults();\r\n this.recordState();\r\n }\r\n\r\n /**\r\n * Searches the specified value to see if the term matches it.\r\n * @param value The value to search within.\r\n * @param term The term to search for within the value.\r\n * @returns {boolean} True, if the term was found within the value.\r\n */\r\n searchTermMatches(value, term) {\r\n value = this.removeSpecialCharacters(value).toLowerCase();\r\n term = this.removeSpecialCharacters(term).toLowerCase();\r\n return value.includes(term);\r\n }\r\n\r\n /**\r\n * Removes the special characters from the specified string value.\r\n * @param {string} value The string that may contain special characters\r\n * (e.g., \"Mandel's-Brats & Relish\").\r\n * @returns The string without special characters (e.g., \"MandelsBrats Relish\").\r\n */\r\n removeSpecialCharacters(value) {\r\n if (!value || !value.length) {\r\n return '';\r\n }\r\n const normalCharsRegex = new RegExp('[a-z0-9 ]+', 'gi'),\r\n multipleSpacesRegex = new RegExp(' +', 'g'),\r\n matches = value.match(normalCharsRegex) || [],\r\n sanitized = matches.join('');\r\n return sanitized.replace(multipleSpacesRegex, ' ');\r\n }\r\n\r\n checkForZeroResults() {\r\n let visibleCount = this.listings.children.length\r\n each(this.listings.children, (listing) => {\r\n if(listing.offsetParent === null) {\r\n visibleCount--;\r\n }\r\n })\r\n\r\n if(!visibleCount) {\r\n this.listings.classList.add('no-results');\r\n }else{\r\n this.listings.classList.remove('no-results');\r\n }\r\n\r\n }\r\n\r\n parseUrlParams() {\r\n let params = this.getUrlVars();\r\n\r\n return {\r\n filter: params['filter'],\r\n subfilter: params['subfilter'] ? params['subfilter'].split('|') : null,\r\n term: params['term']\r\n };\r\n }\r\n\r\n getInitialState() {\r\n let state = {};\r\n const params = this.parseUrlParams();\r\n let filterOnInit = false;\r\n\r\n if(params.hasOwnProperty('filter') && params.filter) {\r\n state.filter = params.filter;\r\n filterOnInit = true;\r\n }else if(this.el.dataset.main) {\r\n state.filter = this.el.dataset.main;\r\n }\r\n\r\n if(params.hasOwnProperty('subfilter') && params.subfilter) {\r\n state.subfilter = params.subfilter;\r\n filterOnInit = true;\r\n }else if(this.el.dataset.sub) {\r\n state.subfilter = this.el.dataset.sub;\r\n }\r\n\r\n if(params.hasOwnProperty('term') && params.term) {\r\n state.term = params.term;\r\n }else if(this.el.dataset.term) {\r\n state.term = this.el.dataset.term;\r\n }\r\n\r\n state.filterOnInit = filterOnInit;\r\n\r\n return state;\r\n }\r\n\r\n orderColumn(colHeader){\r\n //this would be 'name' or 'suite'\r\n const orderVal = colHeader.dataset.listingHeader;\r\n\r\n //determine what order the list should display as\r\n const order = colHeader.classList.contains('desc') ? 'asc' : 'desc';\r\n\r\n //since we are sorting the list, we need to convert node list into an array. cannot call sort on node list\r\n const rowsArray = Array.prototype.slice.call(this.listingRows, 0);\r\n\r\n colHeader.classList.remove('desc', 'asc');\r\n colHeader.classList.add(order);\r\n\r\n //change the previous active order header to default state\r\n if(this.activeOrderHeader != null && this.activeOrderHeader != colHeader){\r\n this.activeOrderHeader.classList.remove('desc', 'asc');\r\n }\r\n this.activeOrderHeader = colHeader;\r\n\r\n //compare the data value of the order property with each item in the list\r\n var sortByOrderVal = function(a,b){\r\n if(order === \"desc\"){\r\n return b.dataset[orderVal].toLowerCase().localeCompare(a.dataset[orderVal].toLowerCase());\r\n } else{\r\n return a.dataset[orderVal].toLowerCase().localeCompare(b.dataset[orderVal].toLowerCase());\r\n }\r\n }\r\n rowsArray.sort(sortByOrderVal);\r\n\r\n //remove all the listings from the screen\r\n each(this.listingRows, (row) => {\r\n row.parentNode.removeChild(row);\r\n });\r\n\r\n //append the listings. Now they are in the new desired order\r\n each(rowsArray, (row) => {\r\n this.listings.appendChild(row);\r\n });\r\n }\r\n /**\r\n * checks to see that atleast one of the objects values is set\r\n */\r\n checkValues (obj) {\r\n let isEmpty = true;\r\n\r\n for (key in obj) {\r\n if(obj[key]) {\r\n isEmpty = false;\r\n }\r\n }\r\n\r\n return isEmpty;\r\n }\r\n\r\n getUrlVars() {\r\n let vars = {};\r\n const parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, (m,key,value) => {\r\n vars[key] = decodeURIComponent(value);\r\n });\r\n return vars;\r\n }\r\n}","\r\nimport WidgetBase from '../widget.base';\r\nimport { each, getIndex, getMobileOperatingSystem } from '../../lib/util';\r\nimport { duration } from '../../lib/const';\r\nimport featSniffer from 'App/lib/featureDetection';\r\nimport DomComponent from '../../lib/domComponent';\r\nimport bodyService from '../../services/body';\r\n\r\nexport default class StoreDetailsComponent extends WidgetBase {\r\n static selector = '[data-js-detail-page]';\r\n activeClass = 'active';\r\n activeIndex = 0;\r\n\r\n constructor(el){\r\n super(el);\r\n this.gallery = this.el.querySelector('[data-js-gallery]');\r\n this.galleryArrows = this.el.querySelectorAll('[data-gallery-arrow]');\r\n this.galleryChildren = this.el.querySelectorAll('[data-js-gallery-image]');\r\n this.thumbnails = this.el.querySelectorAll('[data-js-gallery-thumbnail]');\r\n this.galleryTrack = this.el.querySelector('[data-js-gallery-track]');\r\n this.galleryVideos = this.el.querySelectorAll('[data-vimeo]');\r\n this.readMore = this.el.querySelector('[data-js-read-more]');\r\n this.readMoreContainer = this.el.querySelector('[data-js-read-more-container]');\r\n this.mobileDealsButton = this.el.querySelector('[data-js-deals-button]');\r\n this.mobileDealsButtonClose = this.el.querySelector('[data-js-deals-button-close]');\r\n this.mobileDealsDropdown = this.el.querySelector('[data-js-deals-dropdown]');\r\n this.downloadAppButton = this.el.querySelector('[data-download-app]');\r\n // this.mobileEventPromotions = this.el.querySelector('[data-js-event-promotions]');\r\n this.activeTrackIndexes = [];\r\n this.translateAmount = 0;\r\n\r\n if (this.galleryChildren.length === 1) {\r\n this.gallery.classList.add('one-item');\r\n this.galleryTrack.style.display = 'none';\r\n }\r\n\r\n if (this.readMore) {\r\n this.readMore.addEventListener('click',this.readMoreClick.bind(this));\r\n }\r\n\r\n if (this.mobileDealsButton) {\r\n this.mobileDealsButton.addEventListener('click', this.showDeals.bind(this));\r\n }\r\n\r\n if (this.mobileDealsButtonClose) {\r\n this.mobileDealsButtonClose.addEventListener('click', this.hideDeals.bind(this));\r\n }\r\n\r\n each(this.thumbnails, (thumbnail, index) => {\r\n if (this.activeTrackIndexes.length < 4) {\r\n this.activeTrackIndexes.push(index);\r\n }\r\n thumbnail.dataset.index = index;\r\n thumbnail.addEventListener('click', this.thumbnailClick.bind(this));\r\n });\r\n\r\n const modalEl = document.querySelector('[data-js-modal]');\r\n const modalComponent = DomComponent.getComponentByRef(modalEl.dataset.ref);\r\n modalComponent.addIframeVimeoTriggers(this.galleryVideos);\r\n\r\n each(this.galleryArrows, (arrow) => {\r\n arrow.addEventListener('click', (e) => {\r\n // clearInterval(this.interval);\r\n const direction = arrow.dataset.galleryArrow;\r\n if(direction === \"next\"){\r\n this.next();\r\n } else {\r\n this.prev();\r\n }\r\n });\r\n });\r\n\r\n if(featSniffer.touch() && this.galleryChildren.length > 0){\r\n this.addTouchEvents(this.gallery);\r\n }\r\n \r\n if (this.downloadAppButton) {\r\n this.downloadAppButton.addEventListener('click', this.goToAppDownload.bind(this));\r\n }\r\n\r\n setTimeout(() => {\r\n this.loaded();\r\n })\r\n setTimeout(() => {\r\n this.chatButton = document.querySelector('#divSatisfiChat');\r\n }, 300);\r\n }\r\n\r\n // goToDeals() {\r\n // const headerHeight = document.querySelector('[data-js-header]').offsetHeight;\r\n // const top = this.mobileEventPromotions.getBoundingClientRect().top;\r\n // scrollToPosition(top - headerHeight, 300);\r\n // }\r\n\r\n showDeals() {\r\n bodyService.lock();\r\n this.mobileDealsDropdown.classList.add('open');\r\n if (this.chatButton) {\r\n this.chatButton.style.display = 'none';\r\n }\r\n }\r\n\r\n hideDeals() {\r\n bodyService.unlock();\r\n this.mobileDealsDropdown.classList.remove('open');\r\n if (this.chatButton) {\r\n this.chatButton.style.display = '';\r\n }\r\n }\r\n\r\n goToAppDownload() {\r\n // const offer = offerId.dataset.offerId;\r\n const phone = getMobileOperatingSystem();\r\n if (phone === 'iOS') {\r\n window.location.href = this.mobileDealsDropdown.dataset.appleAppStoreAppUrl;\r\n }\r\n if (phone === 'Android') {\r\n window.location.href = this.mobileDealsDropdown.dataset.googlePlayAppUrl;\r\n }\r\n }\r\n\r\n readMoreClick() {\r\n this.readMoreContainer.classList.add('read-more');\r\n }\r\n\r\n prev() {\r\n let index = this.activeIndex;\r\n index = (index-1 < 0) ? this.galleryChildren.length-1 : index-1;\r\n this.navigateToImage(index);\r\n this.updateThubmnailTrack(index);\r\n this.activeIndex = index;\r\n }\r\n\r\n next() {\r\n let index = this.activeIndex;\r\n index = (index+1 === this.galleryChildren.length) ? 0 : index+1;\r\n this.navigateToImage(index);\r\n this.updateThubmnailTrack(index);\r\n this.activeIndex = index;\r\n }\r\n\r\n thumbnailClick(e) {\r\n if (e.currentTarget.classList.contains('active') === true) {\r\n return;\r\n }\r\n const target = e.currentTarget;\r\n const index = Number(target.dataset.index);\r\n this.navigateToImage(index);\r\n this.updateThubmnailTrack(index);\r\n this.activeIndex = index;\r\n }\r\n\r\n // galleryInterval(){\r\n // let index = this.activeIndex;\r\n // index = (index+1 === this.pager.children.length) ? 0 : index+1;\r\n // this.navigateToImage(index);\r\n // }\r\n\r\n updateThubmnailTrack(newIndex) {\r\n const currentTrigger = this.thumbnails[this.activeIndex];\r\n const incoming = this.thumbnails[newIndex];\r\n\r\n currentTrigger.classList.remove('active');\r\n incoming.classList.add('active');\r\n\r\n if (this.galleryChildren.length < 5) {\r\n return;\r\n }\r\n\r\n if (this.activeTrackIndexes.indexOf(newIndex) !== -1) {\r\n return;\r\n }\r\n\r\n if(newIndex === this.galleryChildren.length - 1) {\r\n //subtract the new index by number of shown thumbanils. This case it's 3 (base 0)\r\n const difference = Math.abs(newIndex - 3);\r\n this.translateAmount = -difference * 25;\r\n this.activeTrackIndexes = [this.galleryChildren.length - 4,\r\n this.galleryChildren.length - 3,\r\n this.galleryChildren.length - 2,\r\n this.galleryChildren.length - 1];\r\n }\r\n else if(newIndex === 0) {\r\n this.activeTrackIndexes = [0, 1, 2, 3];\r\n this.translateAmount = 0;\r\n }\r\n else if (newIndex > this.activeIndex) {\r\n this.translateAmount -= 25;\r\n this.activeTrackIndexes = this.activeTrackIndexes.map((index) => index + 1);\r\n }\r\n else {\r\n this.translateAmount += 25;\r\n this.activeTrackIndexes = this.activeTrackIndexes.map((index) => index - 1);\r\n }\r\n\r\n // this.translateAmount -= 25;\r\n this.galleryTrack.style.transform = `translateX(${this.translateAmount}%)`;\r\n }\r\n\r\n navigateToImage(index){\r\n const pagerTrigger = this.galleryChildren[index];\r\n const incoming = this.galleryChildren[index];\r\n const current = this.galleryChildren[this.activeIndex];\r\n\r\n // pagerTrigger.classList.add(this.activeClass);\r\n // this.galleryChildren[this.activeIndex].classList.remove(this.activeClass);\r\n\r\n if (this.activeIndex === this.galleryChildren.length - 1 && index === 0){\r\n this.setTransform('right', incoming);\r\n }\r\n else if(this.activeIndex === 0 && index === this.galleryChildren.length - 1){\r\n this.setTransform('left', incoming);\r\n }\r\n else if(index < this.activeIndex) {\r\n this.setTransform('left', incoming);\r\n }else{\r\n this.setTransform('right', incoming);\r\n }\r\n\r\n setTimeout(() => {\r\n incoming.classList.add('animating');\r\n this.setTransform('center', incoming);\r\n\r\n setTimeout(() => {\r\n incoming.classList.remove('animating');\r\n incoming.classList.add(this.activeClass);\r\n current.classList.remove(this.activeClass);\r\n }, duration);\r\n });\r\n\r\n\r\n }\r\n\r\n setTransform(state, el) {\r\n let transformX;\r\n if(state === 'center') {\r\n transformX = '0';\r\n }else{\r\n transformX = state === 'right' ? '100%' : '-100%';\r\n }\r\n el.style.transform = `translate3d(${transformX}, 0, 0)`;\r\n }\r\n\r\n\r\n addTouchEvents(element, collectionIdx){\r\n let isTouchStart = false;\r\n\r\n let isSwipeLeft = false;\r\n\r\n let incomingImage;\r\n\r\n // initial mouse X for `mousedown`\r\n let touchX;\r\n let touchY;\r\n\r\n // element transform style before/after\r\n let transformX;\r\n\r\n // element X before and after move\r\n let elementX = 0;\r\n\r\n element.addEventListener('touchstart', onTouchStart.bind(this));\r\n\r\n /**\r\n * Listens to `mousedown` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchStart(event) {\r\n // if(this.interval != null){\r\n // clearInterval(this.interval);\r\n // }\r\n\r\n\r\n element.classList.add('dragging');\r\n touchX = event.touches[0].clientX;\r\n touchY = event.touches[0].clientY;\r\n isTouchStart = true;\r\n const incoming = this.galleryChildren[1];\r\n\r\n if(this.galleryChildren[1].style.transform == \"\"){\r\n this.galleryChildren[1].style.transform = `translate3d(${screen.width}, -50%, 0)`;\r\n }\r\n // transformX = parseTransformX(this.galleryChildren[1].style.transform);\r\n }\r\n\r\n // mouse button released\r\n element.addEventListener('touchend', onTouchEnd.bind(this));\r\n\r\n /**\r\n * Listens to `mouseup` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchEnd(event) {\r\n if (event.target.hasAttribute('data-gallery-arrow')) return;\r\n // const incoming = this.galleryChildren[1];\r\n const current = this.galleryChildren[this.activeIndex];\r\n incomingImage.classList.remove('dragging');\r\n incomingImage.classList.add('animating');\r\n var newSlide = false;\r\n\r\n const newIndex = getIndex(incomingImage);\r\n // const pagerTrigger = this.galleryChildren[newIndex];\r\n // pagerTrigger.classList.add(this.activeClass);\r\n this.updateThubmnailTrack(newIndex);\r\n var elementX = parseTransformX(incomingImage.style.transform);\r\n const originalIndex = this.activeIndex;\r\n\r\n\r\n this.setTransform('center', incomingImage);\r\n newSlide = true;\r\n\r\n\r\n this.activeIndex = newIndex;\r\n\r\n\r\n\r\n setTimeout(function(){\r\n this.galleryChildren[originalIndex].classList.remove(this.activeClass);\r\n incomingImage.classList.remove('animating');\r\n if(newSlide === true){\r\n incomingImage.classList.add(this.activeClass);\r\n current.classList.remove(this.activeClass);\r\n }\r\n // this.galleryChildren[1].remove('animating');\r\n incomingImage = null;\r\n }.bind(this), duration);\r\n }\r\n\r\n function parseTransformX(transform) {\r\n return parseInt(transform.split('(')[1].split(',')[0])\r\n }\r\n\r\n element.addEventListener('touchmove', onTouchMove.bind(this));\r\n\r\n function onTouchMove(event) {\r\n if (!isTouchStart) return;\r\n\r\n var deltaX = event.touches[0].clientX - touchX;\r\n var deltaY = event.touches[0].clientY - touchY;\r\n\r\n if(deltaX > 0){\r\n isSwipeLeft = false;\r\n } else{\r\n isSwipeLeft = true;\r\n }\r\n\r\n if(incomingImage == null){\r\n if(isSwipeLeft){\r\n\r\n let newIndex = this.activeIndex + 1;\r\n if(newIndex === this.galleryChildren.length){\r\n newIndex = 0;\r\n }\r\n incomingImage = this.galleryChildren[newIndex];\r\n } else{\r\n\r\n let newIndex = this.activeIndex - 1;\r\n if(newIndex < 0){\r\n newIndex = this.galleryChildren.length -1;\r\n }\r\n incomingImage = this.galleryChildren[newIndex];\r\n }\r\n }\r\n\r\n const absDeltaX = Math.abs(deltaX);\r\n const absDeltaY = Math.abs(deltaY);\r\n\r\n if(absDeltaY > absDeltaX) {\r\n return false;\r\n }\r\n\r\n deltaX = screen.width - Math.abs(deltaX);\r\n deltaX = isSwipeLeft ? deltaX : -1 * deltaX;\r\n\r\n incomingImage.classList.add('dragging');\r\n incomingImage.style.transform = 'translate3d(' + ( deltaX) + 'px, 0, 0)';\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n}","import DomComponent from '../../lib/domComponent';\r\nimport { mq } from '../../lib/util';\r\nimport { widgetSpacing } from '../../lib/const';\r\n\r\nexport default class BgImgComponent extends DomComponent {\r\n static selector = '[data-js-bg-img]'\r\n carouselWidget;\r\n gridWidget;\r\n\r\n constructor(el, graphicalCalloutGrid, graphicalCalloutCaorusel) {\r\n super(el);\r\n\r\n if (!this.el || !graphicalCalloutCaorusel || !graphicalCalloutGrid) {\r\n return;\r\n }\r\n this.carouselWidget = graphicalCalloutCaorusel;\r\n this.gridWidget = graphicalCalloutGrid;\r\n\r\n this.calculateBackgroundHeight();\r\n\r\n\r\n window.addEventListener('resize', this.calculateBackgroundHeight.bind(this));\r\n\r\n setTimeout(() => {\r\n this.loaded();\r\n })\r\n }\r\n\r\n calculateBackgroundHeight(){\r\n const hero = document.querySelector('.hero');\r\n\r\n if(this.carouselWidget && this.gridWidget && hero){\r\n this.el.style.top = hero.offsetHeight + 'px';\r\n this.el.style.height = this.carouselWidget.offsetHeight\r\n + this.gridWidget.offsetHeight\r\n + 'px';\r\n }\r\n }\r\n}","import DomComponent from '../lib/domComponent';\r\nimport { each, mq } from '../lib/util';\r\n\r\nexport default class ValidationComponent extends DomComponent {\r\n static selector = '[data-js-validate]';\r\n\r\n requiredInputSelector = '[data-required]'\r\n errorMessageMap = {};\r\n\r\n constructor(el) {\r\n super(el);\r\n\r\n this.el.addEventListener('submit', (e) => {\r\n e.preventDefault();\r\n\r\n this.validate().then((valid) => {\r\n if (valid) {\r\n e.target.submit();\r\n };\r\n });\r\n\r\n })\r\n }\r\n\r\n validate() {\r\n\r\n return new Promise((resolve) => {\r\n let valid = true;\r\n const promises = [];\r\n\r\n each(this.el.querySelectorAll(this.requiredInputSelector), (input) => {\r\n if (!input.value) {\r\n promises.push(new Promise((resolve) => resolve(false)));\r\n this.createErrorMessage(input);\r\n } else {\r\n this.removeErrorMessage(input);\r\n\r\n if (input.type === 'email') { \r\n const encodedEmail = encodeURIComponent(input.value);\r\n const url = \"/umbraco/rhythm/briteverifyapi/verify?email=\" + encodedEmail;\r\n \r\n const promise = fetch(url)\r\n .then((response) => response.json())\r\n .then((result) => {\r\n if (result) {\r\n this.removeErrorMessage(input);\r\n }\r\n else {\r\n this.createErrorMessage(input, 'Please enter a valid email');\r\n }\r\n\r\n return result;\r\n });\r\n \r\n promises.push(promise);\r\n }\r\n else {\r\n promises.push(new Promise((resolve) => resolve(true)));\r\n }\r\n }\r\n });\r\n\r\n if (promises.length > 0) {\r\n Promise.all(promises).then((results) => {\r\n resolve(results.indexOf(false) === -1);\r\n });\r\n }\r\n else {\r\n resolve(valid);\r\n } \r\n });\r\n }\r\n\r\n createErrorMessage(input, message) {\r\n if(!input.classList.contains('validation-error')) {\r\n const name = input.dataset.required ? input.dataset.required : input.getAttribute('name');\r\n input.classList.add('validation-error')\r\n\r\n let div = document.createElement('div');\r\n div.classList.add('validation-error-message');\r\n div.innerText = message || `Please enter a valid ${name}`;\r\n\r\n input.parentElement.appendChild(div);\r\n\r\n this.errorMessageMap[name] = div;\r\n }\r\n }\r\n\r\n removeErrorMessage(input) {\r\n if(input.classList.contains('validation-error')) {\r\n const name = input.dataset.required ? input.dataset.required : input.getAttribute('name');\r\n input.classList.remove('validation-error');\r\n\r\n this.errorMessageMap[name].remove();\r\n delete this.errorMessageMap[name];\r\n }\r\n }\r\n}\r\n","/*\n * anime.js v3.2.1\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n nil: function (a) { return is.und(a) || a === null; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; },\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n eases['easeOutIn' + name] = function (a, b) { return function (t) { return t < 0.5 ? (1 - easeIn(a, b)(1 - t * 2)) / 2 : \n (easeIn(a, b)(t * 2 - 1) + 1) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (!is.nil(getAttribute(el, prop)) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width,\n h: height,\n vW: viewBox[2],\n vH: viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress, isPathTargetInsideSVG) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n var scaleX = isPathTargetInsideSVG ? 1 : svg.w / svg.vW;\n var scaleY = isPathTargetInsideSVG ? 1 : svg.h / svg.vH;\n switch (path.property) {\n case 'x': return (p.x - svg.x) * scaleX;\n case 'y': return (p.y - svg.y) * scaleY;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isPathTargetInsideSVG = tween.isPath && is.svg(animatable.target);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\n\nvar engine = (function () {\n var raf;\n\n function play() {\n if (!raf && (!isDocumentHidden() || !anime.suspendWhenDocumentHidden) && activeInstances.length > 0) {\n raf = requestAnimationFrame(step);\n }\n }\n function step(t) {\n // memo on algorithm issue:\n // dangerous iteration over mutable `activeInstances`\n // (that collection may be updated from within callbacks of `tick`-ed animation instances)\n var activeInstancesLength = activeInstances.length;\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n i++;\n } else {\n activeInstances.splice(i, 1);\n activeInstancesLength--;\n }\n }\n raf = i > 0 ? requestAnimationFrame(step) : undefined;\n }\n\n function handleVisibilityChange() {\n if (!anime.suspendWhenDocumentHidden) { return; }\n\n if (isDocumentHidden()) {\n // suspend ticks\n raf = cancelAnimationFrame(raf);\n } else { // is back to active tab\n // first adjust animations to consider the time that ticks were suspended\n activeInstances.forEach(\n function (instance) { return instance ._onDocumentVisibility(); }\n );\n engine();\n }\n }\n if (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n }\n\n return play;\n})();\n\nfunction isDocumentHidden() {\n return !!document && document.hidden;\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber, tween.isPathTargetInsideSVG);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // internal method (for engine) to adjust animation timings before restoring engine ticks (rAF)\n instance._onDocumentVisibility = resetTime;\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n engine();\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.remove = function(targets) {\n var targetsArray = parseTargets(targets);\n removeTargetsFromInstance(targetsArray, instance);\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargetsFromInstance(targetsArray, instance) {\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n}\n\nfunction removeTargetsFromActiveInstances(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n removeTargetsFromInstance(targetsArray, instance);\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.1';\nanime.speed = 1;\n// TODO:#review: naming, documentation\nanime.suspendWhenDocumentHidden = true;\nanime.running = activeInstances;\nanime.remove = removeTargetsFromActiveInstances;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nexport default anime;\n","import { each } from '../lib/util';\r\nimport anime from 'animejs';\r\n\r\nclass HeroColorBars {\r\n constructor(rootEl) {\r\n this.rootEl = rootEl;\r\n this.animatedElements = this.rootEl.querySelectorAll('.color-bar, h1, h2, a');\r\n this.nonColorBarElements = this.rootEl.querySelectorAll('h1, h2, h3, p, a');\r\n this.colorBars = this.rootEl.querySelectorAll('.color-bar');\r\n this.headerContainer = this.rootEl.querySelector('.js-header');\r\n this.headings = this.headerContainer.querySelectorAll('h1, h2, h3, p');\r\n this.cta = this.headerContainer.querySelectorAll('a');\r\n\r\n this.hasResized = false;\r\n this.easing = 'easeOutQuad';\r\n\r\n this.settings = {\r\n duration: 600,\r\n easing: this.easing,\r\n }\r\n this.timeout = 2000;\r\n this.$bar1 = this.rootEl.querySelector('.js-bar1');\r\n this.$bar2 = this.rootEl.querySelector('.js-bar2');\r\n this.$bar3 = this.rootEl.querySelector('.js-bar3');\r\n this.$bar4 = this.rootEl.querySelector('.js-bar4');\r\n this.$bar5 = this.rootEl.querySelector('.js-bar5');\r\n this.$bar6 = this.rootEl.querySelector('.js-bar6');\r\n this.$bar7 = this.rootEl.querySelector('.js-bar7');\r\n\r\n this.setStartingPosition();\r\n setTimeout(() => {\r\n this.startEntryAnimation();\r\n }, 100);\r\n\r\n window.addEventListener('resize', this.resize.bind(this));\r\n }\r\n\r\n setStartingPosition() {\r\n this.scale = window.innerWidth / 1680;\r\n const padding = 15;\r\n each(this.headings, (heading) => {\r\n const style = window.getComputedStyle(heading, null).getPropertyValue('font-size');\r\n const lineheightStyle = window.getComputedStyle(heading, null).getPropertyValue('line-height');\r\n var fontSize = parseFloat(style);\r\n var lineHeight = parseFloat(lineheightStyle);\r\n heading.dataset.originalFontSize = style;\r\n heading.dataset.originalLineHeight = lineheightStyle;\r\n heading.style.fontSize = `${this.getScaledValue(fontSize)}px`;\r\n heading.style.lineHeight = `${this.getScaledValue(lineHeight)}px`;\r\n })\r\n each(this.colorBars, (el) => {\r\n const width = this.getScaledValue(el.offsetWidth);\r\n el.dataset.originalWidth = el.offsetWidth;\r\n el.style.width = `${width}px`;\r\n el.style.transform = `translateX(-${width + padding}px)`;\r\n });\r\n each(this.nonColorBarElements, (el) => {\r\n const width = el.offsetWidth;\r\n el.style.width = `${width}px`;\r\n el.style.transform = `translateX(-${width + padding}px)`;\r\n });\r\n }\r\n\r\n startEntryAnimation() {\r\n const delay = 300;\r\n const duration = 600;\r\n const margin = 20;\r\n each(this.colorBars, (colorbar, index) => {\r\n const translateXVal = this.getTranslateValue(colorbar, index);\r\n anime({\r\n targets: colorbar,\r\n translateX: translateXVal,\r\n duration: duration,\r\n delay: index * delay,\r\n easing: this.easing,\r\n complete: (el) => {\r\n colorbar.dataset.originalTranslate = translateXVal;\r\n }\r\n })\r\n\r\n // animate the headers on the last color bar\r\n if (index === this.colorBars.length -1) {\r\n // h2 tags\r\n anime({\r\n targets: this.headings,\r\n translateX: translateXVal + (this.getScaledValue(margin)),\r\n duration: duration,\r\n delay: index * delay,\r\n easing: this.easing\r\n })\r\n\r\n //cta has a delay\r\n anime({\r\n targets: this.cta,\r\n translateX: translateXVal + (this.getScaledValue(margin)),\r\n duration: duration,\r\n delay: index * delay + 250,\r\n easing: this.easing,\r\n complete: () => {\r\n setTimeout(() => {\r\n this.animationComplete(this.animationOne.bind(this));\r\n }, this.timeout);\r\n }\r\n })\r\n }\r\n });\r\n }\r\n\r\n animationOne() {\r\n console.log('animation one');\r\n\r\n anime({\r\n targets: this.$bar7,\r\n width: 80 * this.scale,\r\n ...this.settings\r\n });\r\n\r\n anime({\r\n targets: this.$bar6,\r\n translateX: `-=${this.getScaledValue(220)}`,\r\n width: `+=${this.getScaledValue(220)}`,\r\n ...this.settings\r\n })\r\n\r\n anime({\r\n targets: this.$bar4,\r\n translateX: this.rootEl.offsetWidth - this.$bar4.offsetWidth,\r\n ...this.settings\r\n });\r\n\r\n anime({\r\n targets: [this.$bar1, this.$bar2, this.$bar3],\r\n translateX: `-=${this.$bar4.offsetWidth}`,\r\n complete: () => {\r\n setTimeout(() => {\r\n this.animationComplete(this.animationTwo.bind(this));\r\n }, this.timeout);\r\n },\r\n ...this.settings\r\n })\r\n }\r\n\r\n animationTwo() {\r\n console.log('animation two');\r\n anime({\r\n targets: this.$bar7,\r\n width: this.getScaledValue(Number(this.$bar7.dataset.originalWidth)),\r\n ...this.settings\r\n });\r\n\r\n anime({\r\n targets: this.$bar6,\r\n translateX: `+=${this.getScaledValue(220)}`,\r\n width: `-=${this.getScaledValue(220)}`,\r\n ...this.settings\r\n })\r\n\r\n anime({\r\n targets: this.$bar4,\r\n translateX: this.getTranslateX(this.$bar3),\r\n ...this.settings\r\n });\r\n\r\n anime({\r\n targets: [this.$bar1, this.$bar2, this.$bar3],\r\n translateX: `+=${this.$bar4.offsetWidth}`,\r\n complete: () => {\r\n setTimeout(() => {\r\n this.animationComplete(this.animationThree.bind(this));\r\n }, this.timeout);\r\n },\r\n ...this.settings\r\n })\r\n }\r\n\r\n animationThree() {\r\n const bar6Width = this.getScaledValue(45);\r\n const line3TranslateX = this.getTranslateX(this.$bar6) + bar6Width + this.$bar5.offsetWidth;\r\n const line3Width = this.getTranslateX(this.$bar2) - line3TranslateX - this.$bar4.offsetWidth;\r\n\r\n anime({\r\n targets: this.$bar4,\r\n translateX: this.rootEl.offsetWidth - this.$bar4.offsetWidth,\r\n ...this.settings\r\n });\r\n\r\n anime({\r\n targets: this.$bar5,\r\n translateX: this.getTranslateX(this.$bar6) + bar6Width,\r\n ...this.settings\r\n })\r\n\r\n anime({\r\n targets: this.$bar6,\r\n width: bar6Width,\r\n ...this.settings\r\n })\r\n\r\n anime({\r\n targets: [this.$bar1, this.$bar2],\r\n translateX: `-=${this.$bar4.offsetWidth + line3Width}`,\r\n ...this.settings\r\n })\r\n\r\n anime({\r\n targets: this.$bar3,\r\n width: line3Width,\r\n translateX: this.getTranslateX(this.$bar6) + bar6Width + this.$bar5.offsetWidth + this.$bar1.offsetWidth + this.$bar2.offsetWidth,\r\n complete: () => {\r\n setTimeout(() => {\r\n this.animationComplete(this.animationFour.bind(this));\r\n // this.animationComplete(this.goToStartingPosition.bind(this));\r\n }, this.timeout);\r\n },\r\n ...this.settings\r\n })\r\n }\r\n\r\n animationFour() {\r\n console.log('animation 4');\r\n each(this.colorBars, (colorbar, index) => {\r\n const translateXVal = colorbar.dataset.originalTranslate;\r\n const width = colorbar.dataset.originalWidth;\r\n\r\n anime({\r\n targets: colorbar,\r\n translateX: translateXVal,\r\n width: this.getScaledValue(width),\r\n complete: () => {\r\n if (index === this.colorBars.length-1) {\r\n setTimeout(() => {\r\n this.animationComplete(this.animationFive.bind(this));\r\n }, this.timeout);\r\n }\r\n },\r\n ...this.settings\r\n })\r\n });\r\n }\r\n\r\n animationFive() {\r\n console.log('animation5');\r\n const bar6Width = this.getScaledValue(85);\r\n this.$bar6.style.zIndex = '2';\r\n anime({\r\n targets: this.$bar6,\r\n width: bar6Width,\r\n translateX: this.getTranslateX(this.$bar7),\r\n ...this.settings\r\n });\r\n anime({\r\n targets: this.$bar7,\r\n translateX: `+=${bar6Width}`,\r\n width: `+=${this.getScaledValue(40)}`,\r\n ...this.settings\r\n });\r\n anime({\r\n targets: this.$bar4,\r\n translateX: `-=${this.$bar5.offsetWidth}`,\r\n ...this.settings\r\n });\r\n anime({\r\n targets: this.$bar5,\r\n translateX: `+=${this.$bar4.offsetWidth}`,\r\n complete: () => {\r\n setTimeout(() => {\r\n this.animationComplete(this.goToStartingPosition.bind(this));\r\n }, this.timeout);\r\n },\r\n ...this.settings\r\n });\r\n }\r\n\r\n goToStartingPosition() {\r\n each(this.colorBars, (colorbar, index) => {\r\n const translateXVal = colorbar.dataset.originalTranslate;\r\n const width = colorbar.dataset.originalWidth;\r\n\r\n anime({\r\n targets: colorbar,\r\n translateX: translateXVal,\r\n width: this.getScaledValue(width),\r\n complete: () => {\r\n if (index === this.colorBars.length-1) {\r\n setTimeout(() => {\r\n this.animationComplete(this.animationOne.bind(this));\r\n }, this.timeout);\r\n }\r\n },\r\n ...this.settings\r\n })\r\n });\r\n }\r\n\r\n resize() {\r\n var touchsupport = ('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)\r\n if (touchsupport){ // browser doesn't support touch\r\n return;\r\n }\r\n\r\n this.hasResized = true;\r\n this.rootEl.classList.add('resizing');\r\n\r\n if (this.resizeDelay) {\r\n clearTimeout(this.resizeDelay);\r\n }\r\n\r\n this.resizeDelay = setTimeout(() => {\r\n each(this.colorBars, (colorbar) => {\r\n colorbar.style.width = `${colorbar.dataset.originalWidth}px`;\r\n colorbar.style.transform = 'none';\r\n });\r\n setTimeout(() => {\r\n each(this.headings, (heading) => {\r\n const fontSize = heading.dataset.originalFontSize;\r\n const lineheightStyle = heading.dataset.originalLineHeight;\r\n heading.style.fontSize = `${fontSize}`;\r\n heading.style.lineHeight = `${lineheightStyle}`;\r\n })\r\n each(this.nonColorBarElements, (el) => {\r\n el.style.width = `auto`;\r\n });\r\n setTimeout(() => {\r\n this.setStartingPosition();\r\n setTimeout(() => {\r\n this.rootEl.classList.remove('resizing');\r\n this.startEntryAnimation();\r\n this.hasResized = false;\r\n }, 500)\r\n }, 50);\r\n }, 500);\r\n }, 1000);\r\n }\r\n\r\n animationComplete(nextStep) {\r\n if (!this.hasResized) {\r\n nextStep();\r\n }\r\n else {\r\n\r\n }\r\n }\r\n\r\n getTranslateValue(el, indexOfEl) {\r\n let cumulativeWidth = 0;\r\n for(let i = 0; i < indexOfEl; i++) {\r\n const priorColorBar = this.colorBars[i];\r\n cumulativeWidth+= priorColorBar.offsetWidth;\r\n }\r\n\r\n return this.rootEl.offsetWidth - el.offsetWidth - cumulativeWidth;\r\n }\r\n\r\n getColorBar(number) {\r\n each(this.colorBars, (bar) => {\r\n if (bar.dataset.number == number) {\r\n return bar;\r\n }\r\n })\r\n }\r\n\r\n getTranslateX(el) {\r\n return Number(el.style.transform.replace(/[^\\d.]/g, ''));\r\n }\r\n\r\n getScaledValue(num) {\r\n return Math.floor(num * this.scale);\r\n }\r\n}\r\n\r\nexport default HeroColorBars;","import WidgetBase from '../widget.base';\r\nimport { duration } from '../../lib/const';\r\nimport { scrollTo } from '../../lib/util';\r\nimport HeroColorBars from '../../components/hero-color-bars';\r\n\r\nexport default class Hero extends WidgetBase {\r\n static selector = '[data-js-hero]';\r\n scrollBtn;\r\n pageWidgets;\r\n\r\n constructor(el){\r\n super(el);\r\n if(!el){\r\n return false;\r\n }\r\n\r\n this.scrollBtn = this.el.querySelector('[data-scroll-btn]');\r\n this.pageWidgets = document.querySelectorAll('div.layout__widget');\r\n\r\n this.scrollBtn.addEventListener('click', () => {\r\n const controlsOffsetY = window.pageYOffset + this.pageWidgets[1].getBoundingClientRect().top;\r\n\r\n scrollTo(document.scrollingElement, controlsOffsetY, duration);\r\n });\r\n\r\n setTimeout(() => {\r\n this.rootColorBar = this.el.querySelector('.color-bars');\r\n if (this.rootColorBar) {\r\n this.colorBars = new HeroColorBars(this.rootColorBar);\r\n }\r\n this.loaded();\r\n }, 1000)\r\n }\r\n}","import WidgetBase from '../widget.base';\r\nimport { duration } from '../../lib/const';\r\nimport { scrollTo } from '../../lib/util';\r\n\r\nexport default class GraphicalBanner extends WidgetBase {\r\n static selector = '[data-js-graphical-banner]';\r\n scrollBtn;\r\n pageWidgets;\r\n\r\n constructor(el){\r\n super(el);\r\n if(!el){\r\n return false;\r\n }\r\n\r\n this.scrollBtn = this.el.querySelector('[data-scroll-btn]');\r\n this.pageWidgets = document.querySelectorAll('div.layout__widget');\r\n\r\n this.scrollBtn.addEventListener('click', () => {\r\n const controlsOffsetY = window.pageYOffset + el.nextElementSibling.getBoundingClientRect().top - 50;\r\n\r\n scrollTo(document.scrollingElement, controlsOffsetY, duration);\r\n });\r\n\r\n setTimeout(() => {\r\n this.loaded();\r\n })\r\n }\r\n}","// TODO set transform origin prop of all elements on index change\r\n\r\nimport WidgetBase from '../widget.base';\r\nimport { each } from 'App/lib/util';\r\nimport { mq } from 'App/lib/util';\r\nimport featSniffer from 'App/lib/featureDetection';\r\nimport bodyService from '../../services/body';\r\n\r\nexport default class FeaturedCardsCalloutCarouselWidget extends WidgetBase {\r\n static selector = '[data-ww-featured-cards-callout-carousel]';\r\n inner;\r\n cards;\r\n threshold = 100;\r\n currentCardIndex = 0;\r\n transitioning = false;\r\n isDesktop = false;\r\n\r\n constructor(el) {\r\n super(el);\r\n\r\n if(!this.el) {\r\n return;\r\n }\r\n\r\n this.isDesktop = mq('md');\r\n\r\n this.el.querySelector('[data-pager-prev]')\r\n .addEventListener('click', () => {\r\n\r\n if (this.transitioning) {\r\n return;\r\n }\r\n\r\n this.transitioning = true;\r\n\r\n this.inner.style.transition = '';\r\n this.inner.style.transform = 'translateX(-100%)';\r\n\r\n let $el = this.el.querySelector('.is-ref');\r\n\r\n $el.classList.remove('is-ref');\r\n\r\n let $nextCard = this.prev($el, this.cards[0].style.order == 4 ? 2 : 3);\r\n\r\n $nextCard.classList.add('is-ref');\r\n\r\n $nextCard.style.order = 1;\r\n\r\n for(let i = 2; i <= this.cards.length; i++) {\r\n $nextCard = this.next($nextCard);\r\n $nextCard.style.order = i;\r\n }\r\n\r\n setTimeout(() => {\r\n this.inner.style.transition = 'transform 0.5s ease-in-out';\r\n this.inner.style.transform = 'translateX(0)';\r\n }, 0);\r\n\r\n setTimeout(() => {\r\n this.transitioning = false;\r\n }, 500);\r\n });\r\n\r\n this.el.querySelector('[data-pager-next]')\r\n .addEventListener('click', () => {\r\n\r\n if (this.transitioning) {\r\n return;\r\n }\r\n\r\n this.transitioning = true;\r\n\r\n this.inner.style.transition = 'transform 0.5s ease-in-out';\r\n this.inner.style.transform = 'translateX(-100%)';\r\n\r\n let $el = this.el.querySelector('.is-ref');\r\n\r\n $el.classList.remove('is-ref');\r\n\r\n let $nextCard = this.next($el, this.cards[0].style.order == 1 ? 2 : 3);\r\n\r\n $nextCard.classList.add('is-ref');\r\n\r\n setTimeout(() => {\r\n $nextCard.style.order = 1;\r\n\r\n for(let i = 2; i <= this.cards.length; i++) {\r\n $nextCard = this.next($nextCard);\r\n $nextCard.style.order = i;\r\n }\r\n\r\n this.inner.style.transition = '';\r\n this.inner.style.transform = 'translateX(0)';\r\n\r\n this.transitioning = false;\r\n\r\n }, 500);\r\n });\r\n\r\n this.inner = this.el.querySelector('[data-carousel-inner]');\r\n this.cards = this.el.querySelectorAll('[data-carousel-card]');\r\n\r\n // add touch events if supported\r\n if (featSniffer.touch()) {\r\n this.addTouchEvents(this.inner);\r\n }\r\n\r\n // update on resize\r\n window.addEventListener('resize', () => {\r\n let isDesktop = mq('md');\r\n\r\n if (isDesktop != this.isDesktop) {\r\n if (isDesktop) {\r\n this.initDesktop();\r\n } else {\r\n this.initMobile();\r\n }\r\n }\r\n\r\n this.isDesktop = isDesktop;\r\n });\r\n\r\n if (this.isDesktop) {\r\n this.initDesktop();\r\n } else {\r\n this.initMobile();\r\n }\r\n\r\n // tell dom we're ready\r\n setTimeout(() => this.loaded());\r\n }\r\n\r\n initDesktop() {\r\n this.inner.style.transform = 'translate3d(0,0,0)';\r\n this.cards.forEach((card, index) => {\r\n card.classList.remove('is-ref');\r\n card.style.opacity = 1;\r\n card.style.order = index + 1;\r\n });\r\n\r\n this.cards[0].classList.add('is-ref');\r\n }\r\n\r\n initMobile() {\r\n this.inner.style.transform = 'translate3d(0,0,0)';\r\n this.cards.forEach((card, index) => {\r\n card.classList.remove('is-ref');\r\n card.style.opacity = 1;\r\n card.style.order = index + 1;\r\n });\r\n\r\n this.cards[0].classList.add('is-ref');\r\n\r\n this.currentCardIndex = 0;\r\n this.updateCardOpacity(0);\r\n }\r\n\r\n next(element, times = 1) {\r\n\r\n for (let i = 0; i < times; i++) {\r\n element = element.nextElementSibling || this.cards[0];\r\n }\r\n\r\n return element;\r\n }\r\n\r\n prev(element, times = 1) {\r\n\r\n for (let i = 0; i < times; i++) {\r\n element = element.previousElementSibling || this.cards[this.cards.length - 1];\r\n }\r\n\r\n return element;\r\n }\r\n\r\n getCardOffsetX(index) {\r\n let runningTotal = 0;\r\n\r\n for (let i = 0; i < index; i++) {\r\n runningTotal += this.cards[i].offsetWidth;\r\n }\r\n\r\n if (!mq('sm') && index != 0) {\r\n runningTotal -= 40; // padding\r\n }\r\n\r\n return runningTotal * -1;\r\n }\r\n\r\n updateCardOpacity(offsetX) {\r\n //swap sign\r\n offsetX = offsetX * -1;\r\n\r\n let runningTotal = 0;\r\n\r\n let viewportStart = offsetX;\r\n let viewportEnd = offsetX + this.inner.offsetWidth;\r\n\r\n for (let i = 0; i < this.cards.length; i++) {\r\n\r\n let cardWidth = this.cards[i].offsetWidth;\r\n let cardCenter = runningTotal + (cardWidth / 2);\r\n\r\n let delta = 0;\r\n\r\n if (cardCenter < viewportStart) {\r\n delta = Math.abs(cardCenter - viewportStart);\r\n }\r\n\r\n if (cardCenter > viewportEnd) {\r\n delta = Math.abs(cardCenter - viewportEnd);\r\n }\r\n\r\n let ratio = delta / cardWidth;\r\n\r\n let opacity = 1 - ratio;\r\n\r\n opacity = Math.max(opacity, 0.5);\r\n\r\n this.cards[i].style.opacity = opacity;\r\n\r\n runningTotal += cardWidth;\r\n }\r\n }\r\n\r\n addTouchEvents(element) {\r\n let isTouchStart = false;\r\n\r\n // initial mouse X for `mousedown`\r\n let touchX;\r\n let touchY;\r\n\r\n // element transform style before/after\r\n let transformX;\r\n\r\n // element X before and after move\r\n let elementX = 0;\r\n\r\n element.addEventListener('touchstart', onTouchStart.bind(this));\r\n /**\r\n * Listens to `mousedown` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchStart(event) {\r\n element.classList.add('dragging');\r\n touchX = event.touches[0].clientX;\r\n touchY = event.touches[0].clientY;\r\n isTouchStart = true;\r\n\r\n transformX = parseTransformX(element.style.transform);\r\n }\r\n\r\n // mouse button released\r\n element.addEventListener('touchend', onTouchEnd.bind(this));\r\n\r\n /**\r\n * Listens to `mouseup` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchEnd(event) {\r\n isTouchStart = false;\r\n bodyService.unlock();\r\n element.classList.remove('dragging');\r\n\r\n elementX = element.style.transform ? parseTransformX(element.style.transform) : transformX;\r\n\r\n const transformDelta = elementX - transformX;\r\n\r\n if (Math.abs(transformDelta) > this.threshold) {\r\n if(transformDelta < 0) {\r\n if(this.currentCardIndex !== this.cards.length - 1) {\r\n this.currentCardIndex++;\r\n let x = this.getCardOffsetX(this.currentCardIndex);\r\n element.style.transform = 'translate3d(' + x + 'px, 0, 0)';\r\n this.updateCardOpacity(x);\r\n }else{\r\n // sets slide back to start position\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)';\r\n this.updateCardOpacity(transformX);\r\n }\r\n }else{\r\n if(this.currentCardIndex !== 0) {\r\n this.currentCardIndex--;\r\n let x = this.getCardOffsetX(this.currentCardIndex);\r\n element.style.transform = 'translate3d(' + x + 'px, 0, 0)';\r\n this.updateCardOpacity(x);\r\n }else{\r\n // sets slide back to start position\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)';\r\n this.updateCardOpacity(transformX);\r\n }\r\n }\r\n }else{\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)';\r\n this.updateCardOpacity(transformX);\r\n }\r\n }\r\n\r\n // gets the x transform value from an element with a transform3d style applied\r\n function parseTransformX(transform) {\r\n return parseInt(transform.split('(')[1].split(',')[0])\r\n }\r\n\r\n // need to attach to the entire document\r\n // in order to take full width and height\r\n // this ensures the element keeps up with the mouse\r\n document.addEventListener('touchmove', onTouchMove.bind(this));\r\n\r\n /**\r\n * Listens to `mousemove` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchMove(event) {\r\n if (!isTouchStart) return;\r\n var deltaX = event.touches[0].clientX - touchX;\r\n var deltaY = event.touches[0].clientY - touchY;\r\n\r\n const absDeltaX = Math.abs(deltaX);\r\n const absDeltaY = Math.abs(deltaY);\r\n\r\n\r\n if(absDeltaY > absDeltaX ) {\r\n return false;\r\n }\r\n else {\r\n bodyService.lock();\r\n }\r\n\r\n\r\n element.style.transform = 'translate3d(' + (transformX + deltaX) + 'px, 0, 0)';\r\n\r\n this.updateCardOpacity(transformX + deltaX);\r\n }\r\n }\r\n}","// TODO set transform origin prop of all elements on index change\r\n\r\nimport WidgetBase from '../widget.base';\r\nimport { each } from 'App/lib/util';\r\nimport { mq } from 'App/lib/util';\r\nimport featSniffer from 'App/lib/featureDetection';\r\nimport ColorBars from '../../services/color-bars';\r\nimport bodyService from '../../services/body';\r\n\r\nexport default class NewsCarouselWidget extends WidgetBase {\r\n static selector = '[data-ww-news-carousel]';\r\n inner;\r\n cards;\r\n threshold = 100;\r\n currentCardIndex = 0;\r\n transitioning = false;\r\n isDesktop = false;\r\n\r\n constructor(el) {\r\n super(el);\r\n\r\n if(!this.el) {\r\n return;\r\n }\r\n\r\n this.isDesktop = mq('md');\r\n\r\n this.el.querySelector('[data-pager-prev]')\r\n .addEventListener('click', () => {\r\n\r\n if (this.transitioning) {\r\n return;\r\n }\r\n\r\n this.transitioning = true;\r\n\r\n this.inner.style.transition = '';\r\n this.inner.style.transform = 'translateX(-100%)';\r\n\r\n let $el = this.el.querySelector('.is-ref');\r\n\r\n $el.classList.remove('is-ref');\r\n\r\n let $nextCard = this.prev($el, 3);\r\n\r\n $nextCard.classList.add('is-ref');\r\n\r\n $nextCard.style.order = 1;\r\n\r\n for(let i = 2; i <= this.cards.length; i++) {\r\n $nextCard = this.next($nextCard);\r\n $nextCard.style.order = i;\r\n }\r\n\r\n setTimeout(() => {\r\n this.inner.style.transition = 'transform 0.5s ease-in-out';\r\n this.inner.style.transform = 'translateX(0)';\r\n }, 0);\r\n\r\n setTimeout(() => {\r\n this.transitioning = false;\r\n\r\n }, 500);\r\n });\r\n\r\n this.el.querySelector('[data-pager-next]')\r\n .addEventListener('click', () => {\r\n\r\n if (this.transitioning) {\r\n return;\r\n }\r\n\r\n this.transitioning = true;\r\n\r\n this.inner.style.transition = 'transform 0.5s ease-in-out';\r\n this.inner.style.transform = 'translateX(-100%)';\r\n\r\n let $el = this.el.querySelector('.is-ref');\r\n\r\n $el.classList.remove('is-ref');\r\n\r\n let $nextCard = this.next($el, 3);\r\n\r\n $nextCard.classList.add('is-ref');\r\n\r\n setTimeout(() => {\r\n $nextCard.style.order = 1;\r\n\r\n for(let i = 2; i <= this.cards.length; i++) {\r\n $nextCard = this.next($nextCard);\r\n $nextCard.style.order = i;\r\n }\r\n\r\n this.inner.style.transition = '';\r\n this.inner.style.transform = 'translateX(0)';\r\n\r\n this.transitioning = false;\r\n\r\n }, 500);\r\n });\r\n\r\n this.inner = this.el.querySelector('[data-carousel-inner]');\r\n this.cards = this.el.querySelectorAll('[data-carousel-card]');\r\n\r\n // add touch events if supported\r\n if (featSniffer.touch()) {\r\n this.addTouchEvents(this.inner);\r\n }\r\n\r\n // update on resize\r\n window.addEventListener('resize', () => {\r\n let isDesktop = mq('md');\r\n\r\n if (isDesktop != this.isDesktop) {\r\n if (isDesktop) {\r\n this.initDesktop();\r\n } else {\r\n this.initMobile();\r\n }\r\n }\r\n\r\n this.isDesktop = isDesktop;\r\n });\r\n\r\n if (this.isDesktop) {\r\n this.initDesktop();\r\n } else {\r\n this.initMobile();\r\n }\r\n\r\n // tell dom we're ready\r\n setTimeout(() => {\r\n this.loaded()\r\n this.ColorBars = new ColorBars(this.el);\r\n }, 200);\r\n }\r\n\r\n initDesktop() {\r\n this.inner.style.transform = 'translate3d(0,0,0)';\r\n this.cards.forEach((card, index) => {\r\n card.classList.remove('is-ref');\r\n card.style.opacity = 1;\r\n card.style.order = index + 1;\r\n });\r\n\r\n this.cards[0].classList.add('is-ref');\r\n }\r\n\r\n initMobile() {\r\n this.inner.style.transform = 'translate3d(0,0,0)';\r\n this.cards.forEach((card, index) => {\r\n card.classList.remove('is-ref');\r\n card.style.opacity = 1;\r\n card.style.order = index + 1;\r\n });\r\n\r\n this.cards[0].classList.add('is-ref');\r\n\r\n this.currentCardIndex = 0;\r\n this.updateCardOpacity(0);\r\n }\r\n\r\n next(element, times = 1) {\r\n\r\n for (let i = 0; i < times; i++) {\r\n element = element.nextElementSibling || this.cards[0];\r\n }\r\n\r\n return element;\r\n }\r\n\r\n prev(element, times = 1) {\r\n\r\n for (let i = 0; i < times; i++) {\r\n element = element.previousElementSibling || this.cards[this.cards.length - 1];\r\n }\r\n\r\n return element;\r\n }\r\n\r\n getCardOffsetX(index) {\r\n let runningTotal = 0;\r\n\r\n for (let i = 0; i < index; i++) {\r\n runningTotal += this.cards[i].offsetWidth;\r\n }\r\n\r\n if (!mq('sm') && index != 0) {\r\n runningTotal -= 40;\r\n }\r\n\r\n return runningTotal * -1;\r\n }\r\n\r\n updateCardOpacity(offsetX) {\r\n //swap sign\r\n offsetX = offsetX * -1;\r\n\r\n let runningTotal = 0;\r\n\r\n let viewportStart = offsetX;\r\n let viewportEnd = offsetX + this.inner.offsetWidth;\r\n\r\n for (let i = 0; i < this.cards.length; i++) {\r\n\r\n let cardWidth = this.cards[i].offsetWidth;\r\n let cardCenter = runningTotal + (cardWidth / 2);\r\n\r\n let delta = 0;\r\n\r\n if (cardCenter < viewportStart) {\r\n delta = Math.abs(cardCenter - viewportStart);\r\n }\r\n\r\n if (cardCenter > viewportEnd) {\r\n delta = Math.abs(cardCenter - viewportEnd);\r\n }\r\n\r\n let ratio = delta / cardWidth;\r\n\r\n let opacity = 1 - ratio;\r\n\r\n opacity = Math.max(opacity, 0.5);\r\n\r\n this.cards[i].style.opacity = opacity;\r\n\r\n runningTotal += cardWidth;\r\n }\r\n }\r\n\r\n addTouchEvents(element) {\r\n let isTouchStart = false;\r\n\r\n // initial mouse X for `mousedown`\r\n let touchX;\r\n let touchY;\r\n\r\n // element transform style before/after\r\n let transformX;\r\n\r\n // element X before and after move\r\n let elementX = 0;\r\n\r\n // element.style.touchAction = 'none';\r\n\r\n element.addEventListener('touchstart', onTouchStart.bind(this), {passive: false});\r\n // element.style.touchAction = 'pan-x';\r\n /**\r\n * Listens to `mousedown` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchStart(event) {\r\n element.classList.add('dragging');\r\n\r\n touchX = event.touches[0].clientX;\r\n touchY = event.touches[0].clientY;\r\n isTouchStart = true;\r\n\r\n transformX = parseTransformX(element.style.transform);\r\n }\r\n\r\n // mouse button released\r\n element.addEventListener('touchend', onTouchEnd.bind(this), {passive: false});\r\n\r\n /**\r\n * Listens to `mouseup` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchEnd(event) {\r\n isTouchStart = false;\r\n bodyService.unlock();\r\n // element.style.touchAction = 'unset';\r\n element.classList.remove('dragging');\r\n\r\n elementX = element.style.transform ? parseTransformX(element.style.transform) : transformX;\r\n\r\n const transformDelta = elementX - transformX;\r\n\r\n if (Math.abs(transformDelta) > this.threshold) {\r\n if(transformDelta < 0) {\r\n if(this.currentCardIndex !== this.cards.length - 1) {\r\n this.currentCardIndex++;\r\n let x = this.getCardOffsetX(this.currentCardIndex);\r\n element.style.transform = 'translate3d(' + x + 'px, 0, 0)';\r\n this.updateCardOpacity(x);\r\n }else{\r\n // sets slide back to start position\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)';\r\n this.updateCardOpacity(transformX);\r\n }\r\n }else{\r\n if(this.currentCardIndex !== 0) {\r\n this.currentCardIndex--;\r\n let x = this.getCardOffsetX(this.currentCardIndex);\r\n element.style.transform = 'translate3d(' + x + 'px, 0, 0)';\r\n this.updateCardOpacity(x);\r\n }else{\r\n // sets slide back to start position\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)';\r\n this.updateCardOpacity(transformX);\r\n }\r\n }\r\n }else{\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)';\r\n this.updateCardOpacity(transformX);\r\n }\r\n }\r\n\r\n // gets the x transform value from an element with a transform3d style applied\r\n function parseTransformX(transform) {\r\n return parseInt(transform.split('(')[1].split(',')[0])\r\n }\r\n\r\n // need to attach to the entire document\r\n // in order to take full width and height\r\n // this ensures the element keeps up with the mouse\r\n element.addEventListener('touchmove', onTouchMove.bind(this), {passive: false});\r\n\r\n\r\n /**\r\n * Listens to `mousemove` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchMove(event) {\r\n if (!isTouchStart) return;\r\n var deltaX = event.touches[0].clientX - touchX;\r\n var deltaY = event.touches[0].clientY - touchY;\r\n\r\n const absDeltaX = Math.abs(deltaX);\r\n const absDeltaY = Math.abs(deltaY);\r\n\r\n if(absDeltaY > absDeltaX ) {\r\n return false;\r\n }\r\n else {\r\n bodyService.lock();\r\n }\r\n\r\n element.style.transform = 'translate3d(' + (transformX + deltaX) + 'px, 0, 0)';\r\n\r\n this.updateCardOpacity(transformX + deltaX);\r\n }\r\n }\r\n}","import { each } from '../lib/util';\r\nimport { duration } from '../lib/const';\r\n\r\nexport default ((window) => {\r\n const animatableItems = document.querySelectorAll('[data-js-animate]');\r\n\r\n let animArr;\r\n const scrollOffset = 20;\r\n\r\n calculateElementPositions();\r\n\r\n window.addEventListener('scroll', animate);\r\n window.addEventListener('resize', calculateElementPositions);\r\n\r\n \r\n function animate() {\r\n const bottomOfWindow = window.pageYOffset + window.innerHeight;\r\n\r\n let i = animArr.length;\r\n while(i--) {\r\n const item = animArr[i];\r\n \r\n if(item.offset < (bottomOfWindow - scrollOffset)) {\r\n item.el.classList.remove('animate--before');\r\n item.el.classList.add('animate');\r\n setTimeout(() => {\r\n item.el.classList.add('animate--done');\r\n }, item.duration);\r\n \r\n animArr.splice(i, 1);\r\n }\r\n\r\n }\r\n }\r\n\r\n function calculateElementPositions() {\r\n animArr = [];\r\n\r\n each(animatableItems, (item) => {\r\n item.classList.add('animate--before');\r\n let offset = item.getBoundingClientRect().top + window.pageYOffset;\r\n offset += item.dataset.animateSide && item.dataset.animateSide === 'center' ? item.offsetHeight / 2 : item.offsetHeight;\r\n\r\n const duration = item.dataset.animateDuration ? parseInt(item.dataset.animateDuration) : duration;\r\n animArr.push({\r\n offset: offset - 60,\r\n el: item,\r\n duration: duration\r\n });\r\n });\r\n\r\n animate();\r\n }\r\n\r\n})(window)","import SendRequest from \"../lib/ajax\";\r\n\r\nimport { uniqWith, uniqBy, isEqual, groupBy } from 'lodash';\r\n\r\nconst MovieService = {};\r\n\r\nconst apiBaseUrl = window.movieApiBaseUrl || 'https://api.shopirvinespectrumcenter.com/umbraco/api/';\r\n\r\nconst moviesNowPlayingEndpoint = `${apiBaseUrl}fandango/getmovies?theatreId=AABTB&provider=Fandango`;\r\nconst moviesComingSoonEndpoint = `${apiBaseUrl}fandango/getcomingsoon?theatreId=AABTB&provider=Fandango`;\r\nconst improvShowsEndpoint = `/umbraco/rhythm/improvapi/GetUpcomingShows`;\r\nconst movieDetailsEndpoint = `${apiBaseUrl}fandango/getmoviedetails?theatreId=AABTB&provider=Fandango&movieId=`;\r\n\r\nconst dayMap = ['Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat'];\r\nconst monthMap = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];\r\nconst fullMonthMap = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n\r\n\r\n// the Date constructor in safari doesnt know how to parse the time correctly when passing\r\n// in a string, so we use regex to get the relveant parts from the date string\r\n// and pass those into Date() using the spread operator\r\nfunction toDate(dateStr) {\r\n const matches = /(^\\d{4})-(\\d{1,})-(\\d{1,})T(\\d{1,}):(\\d{1,}):(\\d{1,})/g.exec(dateStr);\r\n matches.shift();\r\n return new Date(...matches);\r\n}\r\n\r\nfunction formatShowTime(t) {\r\n\r\n const d = toDate(t);\r\n\r\n let hours = d.getHours();\r\n const minutes = (d.getMinutes()<10?'0':'') + d.getMinutes();\r\n\r\n const meridiem = hours >= 12 ? \"PM\" : \"AM\";\r\n hours = hours > 12 ? hours - 12 : hours;\r\n\r\n return `${hours}:${minutes}${meridiem}`;\r\n}\r\n\r\nfunction formatRuntime(t) {\r\n const hours = Math.floor(t/60);\r\n const minuteString = t%60 > 0 ? `${t%60} min` : '';\r\n\r\n return `${hours}hr ${minuteString}`;\r\n}\r\n\r\nfunction formatMovieDate(dateString) {\r\n const d = new Date(dateString);\r\n const now = new Date();\r\n const date = d.getDate();\r\n if(now.getDate() === date) {\r\n return 'Today';\r\n }else{\r\n return `${dayMap[d.getDay()]} - ${monthMap[d.getMonth()]} ${date}`;\r\n }\r\n}\r\n\r\nfunction formatImprovShowDate(dateString) {\r\n const d = new Date(dateString);\r\n\r\n return `${dayMap[d.getDay()]}, ${monthMap[d.getMonth()]} ${d.getDate()}`;\r\n}\r\n\r\nfunction groupShowtimesByAmenities(showtimes) {\r\n\r\n // sort by uniq enities\r\n const showTimesGrouped = uniqWith(showtimes.slice(0), (x, y) => {\r\n return isEqual(x.amenities, y.amenities)\r\n });\r\n\r\n // format amenities into display string\r\n showTimesGrouped.forEach((showtimeByAmenities) => {\r\n showtimeByAmenities.times = [];\r\n showtimeByAmenities.header = showtimeByAmenities.amenities\r\n .map(x => x.name)\r\n .join(' • ');\r\n });\r\n\r\n // sort showtimes by amenities\r\n showtimes.forEach((showtime) => {\r\n let found = false;\r\n let i = 0;\r\n\r\n while(!found) {\r\n if(isEqual(showTimesGrouped[i].amenities, showtime.amenities)) {\r\n showTimesGrouped[i].times.push(showtime);\r\n found = true;\r\n }\r\n\r\n i++;\r\n }\r\n }, []);\r\n\r\n return showTimesGrouped;\r\n\r\n}\r\n\r\nfunction formatMovieMeta(movie) {\r\n let foo = [];\r\n\r\n if(movie.runtime) {\r\n foo.push(formatRuntime(movie.runtime));\r\n }\r\n\r\n if(movie.rating) {\r\n foo.push(movie.rating);\r\n }\r\n\r\n if(movie.genres) {\r\n if(typeof movie.genres === 'object') {\r\n foo.push(movie.genres.length ? movie.genres.join(', ') : movie.genres[0]);\r\n }else{\r\n foo.push(movie.genres);\r\n }\r\n }\r\n\r\n return foo.join('  â€¢  ');\r\n}\r\n\r\n\r\nfunction formatComingSoon(data) {\r\n data.forEach(movie => {\r\n const d = new Date(movie.releaseDate);\r\n movie.releaseDateDisplay = `Premiering ${dayMap[d.getDay()]}, ${monthMap[d.getMonth()]} ${d.getDate()}, ${d.getFullYear()}`;\r\n });\r\n\r\n return data;\r\n}\r\n\r\nfunction formatMonthYear(dateString) {\r\n const d = new Date(dateString);\r\n return `${fullMonthMap[d.getMonth()]} ${d.getFullYear()}`;\r\n}\r\n\r\nfunction formatImprovShows(data) {\r\n const formattedData = [];\r\n const nameHelper = [];\r\n const timeHelper = [];\r\n const monthHelper = [];\r\n\r\n data.forEach((event) => {\r\n\r\n\r\n const monthYear = formatMonthYear(event.dates.startDate);\r\n const monthIndex = monthHelper.indexOf(monthYear);\r\n\r\n const header = formatImprovShowDate(event.dates.startDate);\r\n\r\n const time = {\r\n link: event.eventUrl,\r\n time: event.dates.startDate,\r\n timeDisplay: formatShowTime(event.dates.startDate),\r\n disabled: isPast(event.dates.startDate),\r\n };\r\n\r\n if(event.status === 'SoldOut') {\r\n time.timeDisplay += '
Sold Out';\r\n time.disabled = true;\r\n }\r\n\r\n const formattedShow = {\r\n title: event.eventName,\r\n image: event.eventImages.large,\r\n cta: 'Select a showtime to buy tickets',\r\n showTimesGrouped: [{\r\n header: header,\r\n times: [time]\r\n }]\r\n };\r\n\r\n if(monthIndex > -1) {\r\n\r\n const nameIndex = nameHelper[monthIndex].indexOf(event.eventName);\r\n\r\n if(nameIndex > -1) {\r\n const timeIndex = timeHelper[monthIndex][nameIndex].indexOf(header);\r\n\r\n if(timeIndex > -1) {\r\n formattedData[monthIndex].shows[nameIndex].showTimesGrouped[timeIndex].times.push(time);\r\n }else{\r\n formattedData[monthIndex].shows[nameIndex].showTimesGrouped.push({\r\n header: header,\r\n times: [time]\r\n });\r\n timeHelper[monthIndex][nameIndex].push(header);\r\n\r\n }\r\n\r\n }else{\r\n nameHelper[monthIndex].push(event.eventName);\r\n timeHelper[monthIndex].push([header]);\r\n formattedData[monthIndex].shows.push(formattedShow);\r\n }\r\n\r\n }else{\r\n formattedData.push({\r\n id: monthHelper.length,\r\n timeDisplay: monthYear,\r\n shows: [formattedShow]\r\n });\r\n monthHelper.push(monthYear);\r\n nameHelper.push([event.eventName]);\r\n timeHelper.push([[header]]);\r\n }\r\n\r\n });\r\n\r\n return formattedData;\r\n}\r\n\r\nfunction isPast(time) {\r\n return toDate(time).valueOf < Date.now()\r\n}\r\n\r\nfunction formatMovie(movie) {\r\n if(movie.showTimes) {\r\n movie.showTimes.forEach(showTime => {\r\n showTime.timeDisplay = formatShowTime(showTime.time);\r\n showTime.disabled = isPast(showTime.time);\r\n });\r\n\r\n movie.cta = 'Select a movie time to buy tickets';\r\n }\r\n // movie.runtimeDisplay = formatRuntime(movie.runtime);\r\n movie.details = formatMovieMeta(movie);\r\n if(movie.images) {\r\n movie.image = movie.images[0].url;\r\n movie.fullImage = movie.images[2].url;\r\n }else if(movie.image){\r\n movie.image = movie.image.url;\r\n movie.fullImage = movie.image;\r\n }\r\n\r\n movie.detailPageUrl = `/entertainment/movies/details?id=${movie.id}&comingSoon=false`;\r\n}\r\n\r\nfunction formatNowPlaying(data) {\r\n // while loop so we can remove elements while iterating\r\n let i = data.length;\r\n\r\n while (i) {\r\n i--;\r\n\r\n const item = data[i];\r\n item.id = i;\r\n item.dateDisplay = formatMovieDate(item.date);\r\n\r\n if(item.movies.length) {\r\n\r\n\r\n item.movies\r\n .forEach((movie) => {\r\n formatMovie(movie);\r\n movie.showTimesGrouped = groupShowtimesByAmenities(movie.showTimes);\r\n });\r\n\r\n item.movies.sort((a, b) => {\r\n const x = a.title.toLowerCase();\r\n const y = b.title.toLowerCase();\r\n if(x < y) { return -1 };\r\n if(x > y) { return 1 };\r\n return 0;\r\n });\r\n\r\n\r\n }else{\r\n data.pop();\r\n }\r\n }\r\n\r\n return data;\r\n}\r\n\r\nfunction formatMovieDetails(data) {\r\n formatMovie(data);\r\n const showTimesByDate = [];\r\n\r\n const helper = [];\r\n data.showTimes = uniqBy(data.showTimes, x => x.time);\r\n\r\n data.showTimes.forEach((showtime) => {\r\n const dateDisplay = formatMovieDate(showtime.time);\r\n const index = helper.indexOf(dateDisplay);\r\n if(index > -1) {\r\n showTimesByDate[index].showTimes.push(showtime);\r\n }else{\r\n showTimesByDate.push({\r\n dateDisplay: dateDisplay,\r\n showTimes: [Object.assign({}, showtime)]\r\n });\r\n helper.push(dateDisplay);\r\n }\r\n });\r\n\r\n\r\n showTimesByDate.forEach((date, index) => {\r\n date.id = index;\r\n date.showTimesGrouped = groupShowtimesByAmenities(date.showTimes)\r\n })\r\n\r\n if(showTimesByDate[0] && showTimesByDate[0].dateDisplay !== 'Today') {\r\n showTimesByDate.shift();\r\n }\r\n\r\n data.showTimesByDate = showTimesByDate;\r\n\r\n return data;\r\n}\r\n\r\nMovieService.fetch = function(url) {\r\n console.log(url);\r\n return new SendRequest(url)\r\n .then((res) => {\r\n if(res.status === 200) {\r\n return JSON.parse(res.text);\r\n }else{\r\n console.error('Attempted to fetch data from: ' + url + ', responded with status code: ' + res.status);\r\n }\r\n\r\n })\r\n .catch((err) => {\r\n console.error('Failed to fetch data from: ' + url);\r\n console.error(err);\r\n });\r\n}\r\n\r\nMovieService.fetchImprovShows = function() {\r\n\r\n return MovieService.fetch(improvShowsEndpoint)\r\n .then(data => formatImprovShows(data))\r\n .catch(err => {\r\n console.error('error formatting Improv playing data');\r\n console.error(err);\r\n })\r\n}\r\n\r\nMovieService.fetchNowPlaying = function() {\r\n\r\n return MovieService.fetch(moviesNowPlayingEndpoint)\r\n .then(data => formatNowPlaying(data))\r\n .catch(err => {\r\n console.error('error formatting now playing data');\r\n console.error(err);\r\n })\r\n}\r\n\r\nMovieService.fetchComingSoon = function() {\r\n\r\n return MovieService.fetch(moviesComingSoonEndpoint)\r\n .then(data => formatComingSoon(data))\r\n .catch(err => {\r\n console.error('error formatting coming soon data');\r\n console.error(err);\r\n });\r\n}\r\n\r\nMovieService.fetchMovieDetails = function(id, comingSoon = 'false') {\r\n\r\n return MovieService.fetch(movieDetailsEndpoint + id + '&comingSoon=' + comingSoon)\r\n .then(data => {\r\n data.comingSoon = (comingSoon !== 'false');\r\n return formatMovieDetails(data);\r\n })\r\n .catch(err => {\r\n console.error('error formatting movie detail data');\r\n console.error(err);\r\n });\r\n}\r\n\r\nexport default MovieService;\r\n","import WidgetBase from '../widget.base';\r\nimport { each, getIndex, mq } from '../../lib/util';\r\nimport { duration } from '../../lib/const';\r\nimport template from './movies-now-playing.widget.pug';\r\nimport errorTemplate from './error-template.pug';\r\nimport MovieService from '../../services/movies';\r\nimport BackToTopService from '../../services/back-to-top';\r\n\r\nexport default class MoviesNowPlayingComponent extends WidgetBase {\r\n static selector = '[data-js-movies-now-playing]';\r\n static template = template;\r\n static fetch = MovieService.fetchNowPlaying;\r\n static errorTemplate = errorTemplate;\r\n static error = {\r\n serviceName: 'Fandango',\r\n directoryURL: '/shopping/stores'\r\n }\r\n\r\n constructor(el, error=false){\r\n super(el);\r\n this.filterButtons = this.el.querySelectorAll('[data-filter-btn]');\r\n this.filterButtonsContainer = this.el.querySelector('[data-filter-buttons-container]');\r\n this.sections = this.el.querySelectorAll('[data-js-movie-section]');\r\n\r\n if (error) {\r\n // Hide the top message if there is an error\r\n document.querySelector('[data-js-movies-top-message]').style.display = 'none';\r\n return;\r\n }\r\n\r\n BackToTopService.init(el, true);\r\n\r\n each(this.filterButtons, (filter) =>{\r\n if(filter.classList.contains('active')){\r\n this.activeFilter = filter;\r\n }\r\n\r\n filter.addEventListener('click', (e) => {\r\n this.filterClicked(filter);\r\n });\r\n });\r\n\r\n each(this.sections, (section) => {\r\n if(section.classList.contains('active')){\r\n this.activeSection = section;\r\n }\r\n });\r\n\r\n const slider = this.el.querySelector('[data-slider]');\r\n\r\n if(slider && mq('md')) {\r\n this.initSlider(slider);\r\n }\r\n\r\n setTimeout(() => {\r\n this.hideScrollbars(this.filterButtonsContainer)\r\n });\r\n }\r\n\r\n hideScrollbars(el) {\r\n const child = el.firstElementChild;\r\n el.classList.add('js');\r\n const sbWidth = child.offsetWidth - child.clientWidth;\r\n const sbHeight = child.offsetHeight - child.clientHeight;\r\n el.style.height = `${child.offsetHeight - sbHeight}px`;\r\n child.style.width = `calc(100% + ${sbWidth}px)`\r\n }\r\n\r\n filterClicked(filter){\r\n const target = Number(filter.dataset.target);\r\n\r\n //remove the current active class from filter and section\r\n this.activeSection.classList.remove('active');\r\n this.activeFilter.classList.remove('active');\r\n\r\n //add active class to the new ones\r\n filter.classList.add('active');\r\n this.activeFilter = filter;\r\n\r\n this.sections[target].classList.add('active');\r\n this.activeSection = this.sections[target];\r\n }\r\n\r\n initSlider(slider) {\r\n const slideDistance = 320;\r\n const inner = slider.querySelector('[data-inner]');\r\n const prev = slider.querySelector('[data-prev]');\r\n const next = slider.querySelector('[data-next]');\r\n\r\n\r\n const max = Math.floor(inner.children.length / 2);\r\n let index = 0;\r\n\r\n function transitionSlider() {\r\n inner.style.left = `${-index * slideDistance}px`;\r\n\r\n if(index >= max) {\r\n next.style.display = \"none\";\r\n }else{\r\n next.style.display = \"\";\r\n }\r\n\r\n if(index <= -max) {\r\n prev.style.display = \"none\";\r\n }else{\r\n prev.style.display = \"\";\r\n }\r\n }\r\n\r\n next.addEventListener('click', (e) => {\r\n index++;\r\n transitionSlider();\r\n })\r\n\r\n prev.addEventListener('click', (e) => {\r\n index--;\r\n\r\n transitionSlider();\r\n })\r\n }\r\n\r\n}","import WidgetBase from '../widget.base';\r\nimport template from './movies-coming-soon.widget.pug';\r\nimport errorTemplate from './error-template.pug';\r\nimport MovieService from '../../services/movies';\r\nimport BackToTopService from '../../services/back-to-top';\r\nimport DomComponent from '../../lib/domComponent';\r\n\r\nexport default class MoviesComingSoonComponent extends WidgetBase {\r\n static selector = '[data-js-movies-coming-soon]';\r\n static template = template;\r\n static fetch = MovieService.fetchComingSoon;\r\n static errorTemplate = errorTemplate;\r\n static error = {\r\n serviceName: 'Fandango',\r\n directoryURL: '/shopping/stores'\r\n }\r\n\r\n constructor(el, error=false){\r\n super(el);\r\n\r\n if (error) {\r\n return;\r\n }\r\n BackToTopService.init(el, true);\r\n\r\n const iframeTriggers = this.el.querySelectorAll('[data-iframe-src]');\r\n const modalEl = document.querySelector('[data-js-modal]');\r\n const modalComponent = DomComponent.getComponentByRef(modalEl.dataset.ref);\r\n\r\n modalComponent.addIframeTriggers(iframeTriggers);\r\n\r\n }\r\n\r\n}","import WidgetBase from '../widget.base';\r\nimport { each, getUrlParamByName } from '../../lib/util';\r\nimport { duration } from '../../lib/const';\r\nimport template from './movies-details-page.widget.pug';\r\nimport errorTemplate from './error-template.pug';\r\nimport MovieService from '../../services/movies';\r\nimport DomComponent from '../../lib/domComponent';\r\nexport default class MoviesDetailsPageComponent extends WidgetBase {\r\n static selector = '[data-js-movies-details-page]';\r\n static template = template;\r\n static fetch = MovieService.fetchMovieDetails.bind(this, getUrlParamByName('id'), getUrlParamByName('comingSoon'));\r\n static errorTemplate = errorTemplate;\r\n static error = {\r\n serviceName: 'Fandango',\r\n directoryURL: '/shopping/stores'\r\n }\r\n\r\n constructor(el, error=false){\r\n super(el);\r\n if (error) {\r\n return;\r\n }\r\n\r\n this.filterButtons = this.el.querySelectorAll('[data-filter-btn]');\r\n this.activeFilter = this.filterButtons[0];\r\n this.sections = this.el.querySelectorAll('[data-js-showtime-section]');\r\n this.activeSection = this.sections[0];\r\n\r\n const iframeTriggers = this.el.querySelectorAll('[data-iframe-src]');\r\n const modalEl = document.querySelector('[data-js-modal]');\r\n const modalComponent = DomComponent.getComponentByRef(modalEl.dataset.ref);\r\n\r\n modalComponent.addIframeTriggers(iframeTriggers);\r\n\r\n each(this.filterButtons, (filter) =>{\r\n filter.addEventListener('click', (e) => {\r\n this.filterClicked(filter);\r\n });\r\n });\r\n }\r\n\r\n filterClicked(filter){\r\n const target = Number(filter.dataset.target);\r\n\r\n //remove the current active class from filter and section\r\n this.activeSection.classList.remove('active');\r\n this.activeFilter.classList.remove('active');\r\n\r\n //add active class to the new ones\r\n filter.classList.add('active');\r\n this.activeFilter = filter;\r\n\r\n this.sections[target].classList.add('active');\r\n this.activeSection = this.sections[target];\r\n }\r\n\r\n}","import WidgetBase from '../widget.base';\r\nimport template from './improv.widget.pug';\r\nimport errorTemplate from './error-template.pug';\r\nimport MovieService from '../../services/movies';\r\nimport BackToTopService from '../../services/back-to-top';\r\nimport { each } from '../../lib/util';\r\nexport default class MoviesComingSoonComponent extends WidgetBase {\r\n static selector = '[data-js-improv]';\r\n static template = template;\r\n static fetch = MovieService.fetchImprovShows;\r\n static errorTemplate = errorTemplate;\r\n static error = {\r\n serviceName: 'Improv',\r\n directoryURL: '/shopping/stores'\r\n }\r\n\r\n constructor(el, error=false){\r\n super(el);\r\n\r\n if (error) {\r\n return;\r\n }\r\n this.navMonthButtons = this.el.querySelectorAll('[data-js-nav-month]');\r\n this.sections = this.el.querySelectorAll('[data-js-improv-section]');\r\n\r\n this.improvNavs = this.el.querySelectorAll('[data-js-improv-nav]');\r\n this.improvNavMap = [];\r\n\r\n each(this.improvNavs, (nav) => {\r\n this.improvNavMap.push(nav.querySelectorAll('[data-js-month-display]'));\r\n })\r\n\r\n this.index = 0;\r\n BackToTopService.init(el, true);\r\n\r\n each(this.navMonthButtons, (button) =>{\r\n button.addEventListener('click', (e) => {\r\n this.navigate(button);\r\n });\r\n });\r\n }\r\n\r\n navigate(button){\r\n const direction = button.dataset.jsNavMonth;\r\n\r\n if(direction === 'next'){\r\n this.next();\r\n } else{\r\n this.prev();\r\n }\r\n }\r\n\r\n next(){\r\n const newIndex = this.index+1;\r\n if(newIndex >= this.sections.length){\r\n return;\r\n }\r\n this.showMonth(newIndex);\r\n }\r\n\r\n prev(){\r\n const newIndex = this.index-1;\r\n if(newIndex < 0){\r\n return;\r\n }\r\n this.showMonth(newIndex);\r\n }\r\n\r\n showMonth(newIndex){\r\n this.sections[this.index].classList.remove('active');\r\n this.sections[newIndex].classList.add('active');\r\n\r\n // this.monthsDisplays[this.index].classList.remove('active');\r\n // this.monthsDisplays[newIndex].classList.add('active');\r\n\r\n each(this.improvNavMap, (monthDisplays) => {\r\n monthDisplays[this.index].classList.remove('active');\r\n monthDisplays[newIndex].classList.add('active');\r\n })\r\n\r\n this.index = newIndex;\r\n }\r\n}","import WidgetBase from '../widget.base';\r\n\r\nexport default class MoviesNowPlayingComponent extends WidgetBase {\r\n static selector = '[data-js-theater-features]';\r\n\r\n\r\n constructor(el){\r\n super(el); \r\n }\r\n\r\n}","import DomComponent from '../../lib/domComponent';\r\nimport { each, getCookie, setCookie } from '../../lib/util';\r\n\r\nexport default class EmergencyAlertComponent extends DomComponent {\r\n static selector = '[data-js-emergency-alert]';\r\n\r\n constructor(el) {\r\n super(el);\r\n\r\n if(!this.el) {\r\n return;\r\n }\r\n this.hasBeenClosed = false;\r\n this.mobileNavButton = document.querySelectorAll('.header [data-toggle]');\r\n // each(this.mobileNavButton, (button) => {\r\n // button.addEventListener('click', this.close.bind(this));\r\n // });\r\n\r\n this.id = this.el.dataset.jsEmergencyAlert;\r\n this.bodyClass = `emergency-alert-visible--${this.id}`;\r\n this.cookieName = `close-${this.id}`;\r\n const alreadyClosed = false;//getCookie(this.cookieName);\r\n this.hasBeenClosed = alreadyClosed;\r\n setTimeout(() => {\r\n if(!alreadyClosed) {\r\n this.el.classList.add('visible');\r\n document.body.classList.add(this.bodyClass);\r\n const box = this.el.querySelector('[data-box]');\r\n\r\n this.closeButtons = this.el.querySelectorAll('[data-close]');\r\n\r\n each(this.closeButtons, button => button.addEventListener('click', this.close))\r\n\r\n if(this.id === 'popup') {\r\n box.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n\r\n setTimeout(() => {\r\n document.addEventListener('click', this.close);\r\n })\r\n }\r\n\r\n if(this.id === 'banner') {\r\n const height = this.el.offsetHeight;\r\n this.height = height;\r\n\r\n this.header = document.querySelector('[data-js-header]');\r\n this.layout = document.querySelector('[data-layout]');\r\n\r\n\r\n this.layout.style.marginTop = `${height}px`;\r\n this.header.style.top = `${height}px`;\r\n\r\n }\r\n }\r\n });\r\n\r\n setTimeout(() => {\r\n this.loaded();\r\n });\r\n\r\n this.el.addEventListener('alert:collapse', () => {\r\n if (!this.hasBeenClosed) {\r\n this.layout.style.marginTop = '0px';\r\n this.header.style.top = '0px';\r\n this.el.classList.remove('visible');\r\n }\r\n });\r\n\r\n this.el.addEventListener('alert:expand', () => {\r\n if (!this.hasBeenClosed) {\r\n this.el.classList.add('visible');\r\n this.layout.style.marginTop = `${this.height}px`;\r\n this.header.style.top = `${this.height}px`;\r\n }\r\n });\r\n }\r\n\r\n close = () => {\r\n this.hasBeenClosed = true;\r\n this.el.classList.remove('visible');\r\n document.body.classList.remove(this.bodyClass);\r\n //if (this.id !== 'popup') setCookie(this.cookieName, true);\r\n\r\n if(this.id === 'popup') {\r\n setTimeout(() => {\r\n document.removeEventListener('click', this.close);\r\n })\r\n }\r\n\r\n if(this.id === 'banner') {\r\n this.layout.style.marginTop = '0px';\r\n this.header.style.top = '0px';\r\n }\r\n }\r\n}","export default class FormFieldComponent {\r\n el;\r\n alias;\r\n id;\r\n validators;\r\n validationContainerEl;\r\n\r\n constructor(el) {\r\n this.el = el;\r\n const { umbFieldId, umbFieldType } = this.el.dataset;\r\n this.id = umbFieldId;\r\n this.alias = umbFieldType;\r\n this.validators = [];\r\n }\r\n\r\n createValidationContainer() {\r\n const containerEl = document.createElement('ul');\r\n containerEl.classList.add('formulate__inline-validation-summary');\r\n this.validationContainerEl = containerEl;\r\n this.el.appendChild(this.validationContainerEl);\r\n }\r\n\r\n getFieldAlias() {\r\n }\r\n\r\n async validate() {\r\n const value = this.getValue();\r\n if (this.validators.length == 0) {\r\n this.hideValidationError();\r\n\r\n return Promise.resolve([{ valid: true }]);\r\n }\r\n\r\n const promises = [];\r\n\r\n this.validators.forEach((v) => {\r\n promises.push(v.validate(value));\r\n });\r\n\r\n // run promises in sequential order and return the first invalid response.\r\n for await (const promise of promises) {\r\n const result = await promise;\r\n\r\n if (result.valid === false) {\r\n this.showValidationError(result.messages);\r\n return Promise.resolve([result]);\r\n }\r\n }\r\n\r\n this.hideValidationError();\r\n\r\n return Promise.resolve([{ valid: true }]);\r\n };\r\n\r\n showValidationError(messages) {\r\n this.el.classList.add('formulate__field--validation-error');\r\n\r\n if (this.validationContainerEl) {\r\n this.clearValidationMessages();\r\n } else {\r\n this.createValidationContainer();\r\n }\r\n\r\n messages.forEach((message) => {\r\n const { text } = message;\r\n const messageEl = document.createElement('li');\r\n messageEl.innerText = text;\r\n messageEl.classList.add('formulate__inline-validation-summary__error');\r\n this.validationContainerEl.appendChild(messageEl);\r\n });\r\n }\r\n\r\n hideValidationError() {\r\n const errorElements = [\r\n this.el,\r\n ...this.el.querySelectorAll('.formulate__field--validation-error'),\r\n ];\r\n\r\n errorElements.forEach((element) => {\r\n element.classList.remove('formulate__field--validation-error');\r\n });\r\n\r\n this.clearValidationMessages();\r\n }\r\n\r\n clearValidationMessages() {\r\n const parent = this.validationContainerEl;\r\n\r\n if (parent) {\r\n while (parent.firstChild) {\r\n parent.removeChild(parent.firstChild);\r\n }\r\n }\r\n }\r\n}","import FormFieldHelper from \"../FormFieldHelper\";\r\nimport FormFieldComponent from \"./_FormFieldComponent\";\r\n\r\nexport default class ShortAnswerFormFieldComponent extends FormFieldComponent {\r\n field;\r\n fieldAlias;\r\n\r\n constructor(el) {\r\n super(el);\r\n this.field = this.el.querySelector('[data-umb-field-alias]');\r\n this.fieldAlias = this.field.dataset.umbFieldAlias;\r\n\r\n const requiredValidator = FormFieldHelper.getRequiredFieldValidator(this.field);\r\n const briteVerifyValidator = FormFieldHelper.getBriteVerifyFieldValidator(this.field);\r\n const regexValidator = FormFieldHelper.getRegexFieldValidator(this.field);\r\n\r\n if (typeof (requiredValidator) !== 'undefined') {\r\n this.validators.push(requiredValidator);\r\n }\r\n\r\n if (typeof (briteVerifyValidator) !== 'undefined') {\r\n this.validators.push(briteVerifyValidator);\r\n }\r\n\r\n if (typeof (regexValidator) !== 'undefined') {\r\n this.validators.push(regexValidator);\r\n }\r\n }\r\n\r\n getValue() {\r\n return this.field.value;\r\n }\r\n\r\n getFieldAlias() {\r\n return this.fieldAlias;\r\n }\r\n}","import FormFieldHelper from \"../FormFieldHelper\";\r\nimport FormFieldComponent from \"./_FormFieldComponent\";\r\n\r\nexport default class LongAnswerFormFieldComponent extends FormFieldComponent\r\n{\r\n field;\r\n fieldAlias;\r\n\r\n constructor(el) {\r\n super(el); \r\n this.field = this.el.querySelector('[data-umb-field-alias]');\r\n this.fieldAlias = this.field.dataset.umbFieldAlias;\r\n\r\n const requiredValidator = FormFieldHelper.getRequiredFieldValidator(this.field);\r\n const regexValidator = FormFieldHelper.getRegexFieldValidator(this.field);\r\n\r\n if (typeof (requiredValidator) !== 'undefined') {\r\n this.validators.push(requiredValidator);\r\n }\r\n\r\n if (typeof (regexValidator) !== 'undefined') {\r\n this.validators.push(regexValidator);\r\n }\r\n }\r\n\r\n getValue() {\r\n return this.field.value;\r\n }\r\n\r\n getFieldAlias() {\r\n return this.fieldAlias;\r\n }\r\n}","import FormFieldHelper from \"../FormFieldHelper\";\r\nimport FormFieldComponent from \"./_FormFieldComponent\";\r\n\r\nexport default class DateFormFieldComponent extends FormFieldComponent\r\n{\r\n field;\r\n fieldAlias;\r\n\r\n constructor(el) {\r\n super(el); \r\n this.field = this.el.querySelector('[data-umb-field-alias]');\r\n this.fieldAlias = this.field.dataset.umbFieldAlias;\r\n\r\n const requiredValidator = FormFieldHelper.getRequiredFieldValidator(this.field);\r\n const regexValidator = FormFieldHelper.getRegexFieldValidator(this.field);\r\n\r\n if (typeof (requiredValidator) !== 'undefined') {\r\n this.validators.push(requiredValidator);\r\n }\r\n\r\n if (typeof (regexValidator) !== 'undefined') {\r\n this.validators.push(regexValidator);\r\n }\r\n }\r\n\r\n getValue() {\r\n return this.field.value;\r\n }\r\n\r\n getFieldAlias() {\r\n return this.fieldAlias;\r\n }\r\n}","import FormFieldHelper from \"../FormFieldHelper\";\r\nimport FormFieldComponent from \"./_FormFieldComponent\";\r\n\r\nexport default class DataConsentFormFieldComponent extends FormFieldComponent\r\n{\r\n field;\r\n fieldAlias;\r\n constructor(el) {\r\n super(el);\r\n \r\n this.field = this.el.querySelector('[data-umb-field-alias]');\r\n this.fieldAlias = this.field.dataset.umbFieldAlias;\r\n\r\n const requiredValidator = FormFieldHelper.getRequiredFieldValidator(this.field);\r\n if (typeof (requiredValidator) !== 'undefined') {\r\n this.validators.push(requiredValidator);\r\n }\r\n }\r\n\r\n getValue() {\r\n return this.field.checked ? this.field.value : undefined;\r\n }\r\n\r\n getFieldAlias() {\r\n return this.fieldAlias;\r\n }\r\n}","export default class FieldValidator {\r\n message;\r\n constructor(message) {\r\n this.message = message;\r\n }\r\n\r\n async validate(value) {\r\n }\r\n}","import FieldValidator from './_FieldValidator';\r\n\r\nexport default class ReCaptchaFieldValidator extends FieldValidator {\r\n el;\r\n\r\n constructor(el) {\r\n super('Please solve the recaptcha.');\r\n\r\n this.el = el;\r\n }\r\n\r\n async validate(value) {\r\n const widgetEl = this.el.querySelector('[data-grecaptcha-id]');\r\n if (typeof (widgetEl) === 'undefined') {\r\n return Promise.resolve({ valid: false, messages: [{ text: this.message }] });\r\n }\r\n\r\n const widgetId = widgetEl.dataset.grecaptchaId;\r\n const isValid = window.grecaptcha\r\n && window.grecaptcha.getResponse\r\n && window.grecaptcha.getResponse(widgetId).length > 0;\r\n\r\n if (isValid === false) {\r\n return Promise.resolve({ valid: false, messages: [{ text: this.message }] });\r\n }\r\n\r\n return Promise.resolve({ valid: true });\r\n }\r\n}","import ReCaptchaFieldValidator from \"../validators/ReCaptchaFieldValidator\";\r\nimport FormFieldComponent from \"./_FormFieldComponent\";\r\n\r\nexport default class ReCaptcha2FormFieldComponent extends FormFieldComponent\r\n{\r\n field;\r\n constructor(el) {\r\n super(el);\r\n this.field = this.el.querySelector('[data-umb-field-alias]');\r\n\r\n this.validators.push(new ReCaptchaFieldValidator(this.el));\r\n }\r\n\r\n getValue() {\r\n return this.field.value;\r\n }\r\n\r\n getFieldAlias() {\r\n return 'g-recaptcha-response';\r\n }\r\n}","import FormFieldHelper from \"../FormFieldHelper\";\r\nimport FormFieldComponent from \"./_FormFieldComponent\";\r\n\r\nexport default class DropdownFormFieldComponent extends FormFieldComponent\r\n{\r\n field;\r\n fieldAlias;\r\n constructor(el) {\r\n super(el);\r\n \r\n this.field = this.el.querySelector('[data-umb-field-alias]');\r\n this.fieldAlias = this.field.dataset.umbFieldAlias;\r\n\r\n const requiredValidator = FormFieldHelper.getRequiredFieldValidator(this.field);\r\n if (typeof (requiredValidator) !== 'undefined') {\r\n this.validators.push(requiredValidator);\r\n }\r\n }\r\n\r\n getValue() {\r\n return this.field.value;\r\n }\r\n\r\n getFieldAlias() {\r\n return this.fieldAlias;\r\n }\r\n}","import FormFieldHelper from \"../FormFieldHelper\";\r\nimport FormFieldComponent from \"./_FormFieldComponent\";\r\n\r\nexport default class SingleChoiceFormFieldComponent extends FormFieldComponent\r\n{\r\n field;\r\n fieldAlias;\r\n items;\r\n constructor(el) {\r\n super(el);\r\n \r\n this.field = this.el.querySelector('[data-umb-field-alias]');\r\n this.items = this.field.querySelectorAll('[data-umb-field-item]');\r\n this.fieldAlias = this.field.dataset.umbFieldAlias;\r\n\r\n const requiredValidator = FormFieldHelper.getRequiredFieldValidator(this.field);\r\n if (typeof (requiredValidator) !== 'undefined') {\r\n this.validators.push(requiredValidator);\r\n }\r\n }\r\n\r\n getValue() {\r\n if (typeof(this.items) === 'undefined' || this.items.length === 0){\r\n return undefined;\r\n }\r\n\r\n for (var i = 0; i < this.items.length; i++) { \r\n const item = this.items[i];\r\n \r\n if (item.checked) {\r\n return item.value;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getFieldAlias() {\r\n return this.fieldAlias;\r\n }\r\n}","import FormFieldHelper from \"../FormFieldHelper\";\r\nimport FormFieldComponent from \"./_FormFieldComponent\";\r\n\r\nexport default class MultipleChoiceFormFieldComponent extends FormFieldComponent\r\n{\r\n field;\r\n fieldAlias;\r\n items;\r\n constructor(el) {\r\n super(el);\r\n \r\n this.field = this.el.querySelector('[data-umb-field-alias]');\r\n this.items = this.field.querySelectorAll('[data-umb-field-item]');\r\n this.fieldAlias = this.field.dataset.umbFieldAlias;\r\n\r\n const requiredValidator = FormFieldHelper.getRequiredFieldValidator(this.field);\r\n if (typeof (requiredValidator) !== 'undefined') {\r\n this.validators.push(requiredValidator);\r\n }\r\n }\r\n\r\n getValue() {\r\n const values = [];\r\n\r\n if (typeof(this.items) === 'undefined' || this.items.length === 0){\r\n return values;\r\n }\r\n\r\n for (var i = 0; i < this.items.length; i++) { \r\n const item = this.items[i];\r\n \r\n if (item.checked) {\r\n values.push(item.value);\r\n }\r\n }\r\n\r\n console.log(values);\r\n\r\n return values;\r\n }\r\n\r\n getFieldAlias() {\r\n return this.fieldAlias;\r\n }\r\n}","import { removeChildren } from \"../../../lib/util\";\r\nimport FormFieldHelper from \"../FormFieldHelper\";\r\nimport FormFieldComponent from \"./_FormFieldComponent\";\r\n\r\nexport default class ChildInformationFormFieldComponent extends FormFieldComponent {\r\n static FieldsetFieldsSelector = \"input:not([type='hidden'])\";\r\n static HideCssClass = \"hide\";\r\n\r\n field;\r\n fieldAlias;\r\n items;\r\n constructor(el) {\r\n super(el);\r\n\r\n this.field = this.el.querySelector('[data-umb-field-alias]');\r\n this.items = this.field.querySelectorAll('[data-umb-field-item]');\r\n this.fieldAlias = this.field.dataset.umbFieldAlias;\r\n\r\n const validator = FormFieldHelper.getChildInformationFieldValidator(this.field);\r\n if (typeof (validator) !== 'undefined') {\r\n this.validators.push(validator);\r\n }\r\n\r\n this.#init();\r\n }\r\n\r\n #init() {\r\n const elementsToHide = this.field.querySelectorAll(\"fieldset[data-child-information]:not([data-child-information = '0'])\");\r\n elementsToHide.forEach((fieldset) => {\r\n const inputs = Array.from(fieldset.querySelectorAll(ChildInformationFormFieldComponent.FieldsetFieldsSelector));\r\n const hasNoValues = inputs.every(x => typeof (x.value) === 'undefined' || x.value.length === 0);\r\n\r\n if (hasNoValues) {\r\n fieldset.classList.add(ChildInformationFormFieldComponent.HideCssClass);\r\n }\r\n });\r\n\r\n this.#initEvents();\r\n }\r\n\r\n #initEvents() {\r\n this.field.querySelector('button[data-add-child-btn]').addEventListener('click', function (e) {\r\n e.preventDefault();\r\n const nextChildEl = document.querySelector(\"[data-child-information].hide\");\r\n\r\n if (nextChildEl === null) {\r\n return;\r\n }\r\n\r\n nextChildEl.classList.remove(\"hide\");\r\n });\r\n\r\n this.field.querySelector('button[data-remove-child-btn]').addEventListener('click', function (e) {\r\n e.preventDefault();\r\n\r\n const lastVisibleChildEl = document.querySelector(\":nth-last-child(1 of [data-child-information]:not(.hide))\");\r\n\r\n if (lastVisibleChildEl === null) {\r\n return;\r\n }\r\n\r\n const { childInformation: index } = lastVisibleChildEl.dataset;\r\n\r\n if (index === \"0\") {\r\n return;\r\n }\r\n\r\n lastVisibleChildEl.classList.add(\"hide\");\r\n\r\n const inputs = Array.from(lastVisibleChildEl.querySelectorAll(ChildInformationFormFieldComponent.fieldsetFieldsSelector));\r\n for (var i = 0; i < inputs.length; i++) {\r\n inputs[i].value = '';\r\n }\r\n });\r\n }\r\n\r\n getValue() {\r\n const values = [];\r\n const elements = this.field.querySelectorAll(\"fieldset[data-child-information]:not(.hide)\");\r\n\r\n elements.forEach((element, index) => {\r\n const firstName = element.querySelector('input[name$=\".FirstName\"]');\r\n const lastName = element.querySelector('input[name$=\".LastName\"]');\r\n const birthDate = element.querySelector('input[name$=\".BirthDate\"]');\r\n\r\n values.push({\r\n 'fieldNamePrefix': `ChildInformation[${index}]`,\r\n 'firstName': firstName?.value,\r\n 'lastName': lastName?.value,\r\n 'birthDate': birthDate?.value\r\n });\r\n });\r\n\r\n console.log(values);\r\n\r\n return values;\r\n }\r\n\r\n getFieldAlias() {\r\n return this.fieldAlias;\r\n }\r\n\r\n #createErrorSummary = (parent) => {\r\n const element = document.createElement('ul');\r\n element.classList.add('formulate__inline-validation-summary');\r\n parent.appendChild(element);\r\n\r\n return element;\r\n }\r\n\r\n showValidationError(messages) {\r\n this.hideValidationError();\r\n\r\n messages.forEach((message) => {\r\n const { text, fieldName } = message;\r\n const input = this.field.querySelector(`[name='${fieldName}']`);\r\n const field = input.closest('.formulate__field');\r\n\r\n if (field === null) {\r\n return;\r\n }\r\n\r\n field.classList.add('formulate__field--validation-error');\r\n let summary = field.querySelector('.formulate__inline-validation-summary');\r\n\r\n if (summary === null) {\r\n summary = this.#createErrorSummary(field);\r\n }\r\n\r\n const messageEl = document.createElement('li');\r\n messageEl.innerText = text;\r\n\r\n summary.appendChild(messageEl);\r\n });\r\n }\r\n\r\n clearValidationMessages() {\r\n const parents = this.el.querySelectorAll('.formulate__inline-validation-summary');\r\n\r\n parents.forEach((parent) => {\r\n removeChildren(parent);\r\n });\r\n }\r\n}","import FieldValidator from './_FieldValidator';\r\n\r\nexport default class RequiredFieldValidator extends FieldValidator {\r\n constructor(message) {\r\n super(message);\r\n }\r\n\r\n async validate(value) {\r\n if (this.#hasValue(value)) {\r\n return Promise.resolve({ valid: true });\r\n }\r\n\r\n return Promise.resolve({ valid: false, messages: [{ text: this.message }] });\r\n }\r\n\r\n #hasValue(value) {\r\n if (!value) {\r\n return false;\r\n }\r\n\r\n return value.length > 0;\r\n }\r\n}","import FieldValidator from './_FieldValidator';\r\n\r\nexport default class RegexFieldValidator extends FieldValidator {\r\n regex;\r\n constructor(message, pattern) {\r\n super(message);\r\n\r\n this.regex = new RegExp(pattern);\r\n }\r\n\r\n async validate(value) {\r\n if (this.regex.test(value)) {\r\n return Promise.resolve({ valid: true });\r\n }\r\n\r\n return Promise.resolve({ valid: false, messages: [{ text: this.message }] });\r\n }\r\n}","import FieldValidator from './_FieldValidator';\r\n\r\nexport default class BriteVerifyFieldValidator extends FieldValidator {\r\n constructor() {\r\n super('Please enter a valid email address');\r\n }\r\n\r\n async validate(value) {\r\n const uri = `/umbraco/rhythm/briteverifyapi/Verify?email=${encodeURIComponent(value)}`;\r\n const request = {\r\n method: 'GET'\r\n };\r\n return await fetch(uri, request).then(async (response) => {\r\n const body = await response.json();\r\n\r\n return Promise.resolve({ valid: body, messages: [{ text: this.message }] });\r\n }, () => {\r\n return Promise.resolve({ valid: false, messages: [{ text: this.message }] });\r\n });\r\n }\r\n}","import FieldValidator from './_FieldValidator';\r\n\r\nexport default class ChildInformationFieldValidator extends FieldValidator {\r\n constructor() {\r\n super('');\r\n }\r\n\r\n async validate(value) {\r\n const messages = [];\r\n\r\n value.forEach((item, index) => {\r\n const {fieldNamePrefix, firstName, lastName, birthDate} = item; \r\n\r\n if (firstName.length === 0) {\r\n messages.push({fieldName: `${fieldNamePrefix}.FirstName`, text: 'Please provide a value for First Name'});\r\n }\r\n \r\n if (lastName.length === 0) {\r\n messages.push({fieldName: `${fieldNamePrefix}.LastName`, text: 'Please provide a value for Last Name'});\r\n }\r\n \r\n if (birthDate.length === 0) {\r\n messages.push({fieldName: `${fieldNamePrefix}.BirthDate`, text: 'Please provide a value for Birth Date'});\r\n }\r\n });\r\n\r\n\r\n if (messages.length === 0) {\r\n return Promise.resolve({ valid: true });\r\n }\r\n\r\n return Promise.resolve({ valid: false, messages });\r\n }\r\n}","import ShortAnswerFormFieldComponent from \"./fields/ShortAnswerFormFieldComponent\";\r\nimport LongAnswerFormFieldComponent from \"./fields/LongAnswerFormFieldComponent\";\r\nimport DateFormFieldComponent from \"./fields/DateFormFieldComponent\";\r\nimport DataConsentFormFieldComponent from \"./fields/DataConsentFormFieldComponent\";\r\nimport ReCaptcha2FormFieldComponent from \"./fields/ReCaptcha2FormFieldComponent\";\r\nimport DropdownFormFieldComponent from \"./fields/DropdownFormFieldComponent\";\r\nimport SingleChoiceFormFieldComponent from \"./fields/SingleChoiceFormFieldComponent\";\r\nimport MultipleChoiceFormFieldComponent from \"./fields/MultipleChoiceFormFieldComponent\";\r\nimport ChildInformationFormFieldComponent from \"./fields/ChildInformationFormFieldComponent\";\r\n\r\nimport RequiredFieldValidator from \"./validators/RequiredFieldValidator\";\r\nimport RegexFieldValidator from \"./validators/RegexFieldValidator\";\r\nimport BriteVerifyFieldValidator from \"./validators/BriteVerifyFieldValidator\";\r\nimport ChildInformationFieldValidator from \"./validators/ChildInformationFieldValidator\";\r\n\r\nexport default class FormFieldHelper {\r\n\r\n static getFieldComponent(el) {\r\n const { umbFieldType } = el.dataset;\r\n\r\n switch (umbFieldType) {\r\n case 'shortAnswer':\r\n return new ShortAnswerFormFieldComponent(el);\r\n case 'longAnswer':\r\n return new LongAnswerFormFieldComponent(el);\r\n case 'date':\r\n return new DateFormFieldComponent(el);\r\n case 'dataConsent':\r\n return new DataConsentFormFieldComponent(el);\r\n case 'dropdown':\r\n return new DropdownFormFieldComponent(el);\r\n case 'recaptcha2':\r\n return new ReCaptcha2FormFieldComponent(el);\r\n case 'singleChoice':\r\n return new SingleChoiceFormFieldComponent(el);\r\n case 'multipleChoice':\r\n return new MultipleChoiceFormFieldComponent(el);\r\n case 'childInformation':\r\n return new ChildInformationFormFieldComponent(el);\r\n default:\r\n return undefined;\r\n }\r\n }\r\n\r\n static getRequiredFieldValidator(field) {\r\n if (!field) {\r\n return undefined;\r\n }\r\n\r\n const { valRequired } = field.dataset;\r\n if (!valRequired) {\r\n return undefined;\r\n }\r\n\r\n return new RequiredFieldValidator(valRequired);\r\n }\r\n\r\n static getBriteVerifyFieldValidator(field) {\r\n if (!field) {\r\n return undefined;\r\n }\r\n\r\n if (field.type !== 'email') {\r\n return undefined;\r\n }\r\n\r\n return new BriteVerifyFieldValidator();\r\n }\r\n\r\n static getChildInformationFieldValidator(field) {\r\n if (!field) {\r\n return undefined;\r\n }\r\n\r\n return new ChildInformationFieldValidator();\r\n }\r\n\r\n static getRegexFieldValidator(field) {\r\n if (!field) {\r\n return undefined;\r\n }\r\n\r\n const { valRegexPattern, valRegex } = field.dataset;\r\n\r\n if (!valRegex && !valRegexPattern) {\r\n return undefined;\r\n }\r\n\r\n return new RegexFieldValidator(valRegex, valRegexPattern);\r\n }\r\n}","// TODO set transform origin prop of all elements on index change\r\n\r\nimport { resolve } from 'promiscuous/dist/promiscuous-browser-shim-full';\r\nimport WidgetBase from '../widget.base';\r\nimport FormFieldComponent from './fields/_FormFieldComponent';\r\nimport FormFieldHelper from './FormFieldHelper';\r\nimport { addDataLayerItem } from '../../lib/util';\r\n\r\nexport default class FormComponent extends WidgetBase {\r\n static selector = '[data-ww-form]';\r\n formEl;\r\n formKey;\r\n pageId;\r\n fieldMap;\r\n tokenHeaderName;\r\n tokenValue;\r\n successContent;\r\n errorContent;\r\n\r\n constructor(el) {\r\n super(el);\r\n\r\n if (!this.el) {\r\n return;\r\n }\r\n\r\n this.successContent = this.el.querySelector(\".formulate-success-content\");\r\n this.errorContent = this.el.querySelector(\".formulate-error-content\");\r\n\r\n this.fieldMap = [];\r\n\r\n this.formKey = this.el.dataset.formKey;\r\n this.tokenHeaderName = this.el.dataset.tokenHeaderName;\r\n this.tokenValue = this.el.dataset.tokenValue;\r\n\r\n const formEl = this.el.querySelector('form');\r\n this.init(formEl);\r\n\r\n setTimeout(() => {\r\n this.loaded();\r\n })\r\n }\r\n\r\n init(formEl) {\r\n this.pageId = formEl.dataset.pageId;\r\n\r\n this.buildFieldMap(formEl);\r\n this.addSubmitHandler(formEl);\r\n }\r\n\r\n buildFieldMap(formEl) {\r\n const fieldEls = [...formEl.querySelectorAll('.formulate__field')];\r\n\r\n fieldEls.forEach((el) => {\r\n const field = FormFieldHelper.getFieldComponent(el);\r\n if (typeof (field) !== 'undefined') {\r\n this.fieldMap[field.id] = field;\r\n }\r\n });\r\n };\r\n\r\n addSubmitHandler(formEl) {\r\n formEl.addEventListener('submit', (e) => this.submit(e));\r\n };\r\n\r\n validateForm(formEl) {\r\n const promises = [];\r\n\r\n Object.entries(this.fieldMap).forEach(([key, value]) => {\r\n promises.push(value.validate());\r\n });\r\n\r\n return Promise.all(promises).then((values) => {\r\n const isValid = values.flat().every(x => x.valid);\r\n\r\n return Promise.resolve(isValid);\r\n });\r\n }\r\n\r\n submit(e) {\r\n e.preventDefault();\r\n const formEl = e.target;\r\n const button = this.el.querySelector('button[type=submit]');\r\n this.validateForm(formEl)\r\n .then(async response => {\r\n if (response) {\r\n if (button.dataset.trackingFormEvent){\r\n addDataLayerItem({\r\n \"name\": button.dataset.trackingFormEvent,\r\n \"form_name\": button.dataset.formName,\r\n });\r\n }\r\n await this.postForm(formEl);\r\n }\r\n });\r\n };\r\n\r\n async postForm(formEl) {\r\n const data = {\r\n contentKey: this.pageId,\r\n values: {}\r\n };\r\n\r\n Object.entries(this.fieldMap).forEach(([key, value]) => {\r\n data.values[value.getFieldAlias()] = value.getValue();\r\n });\r\n\r\n const headers = {\r\n \"Content-Type\": \"application/json\",\r\n };\r\n\r\n headers[this.tokenHeaderName] = this.tokenValue;\r\n\r\n await fetch(`/umbraco/forms/api/v1.0/entries/${this.formKey}`, {\r\n method: \"POST\",\r\n headers: headers,\r\n body: JSON.stringify(data),\r\n }).then((response) => {\r\n if (response.status === 202) {\r\n this.showSuccess(formEl);\r\n }\r\n // Umbraco Forms could return server side validation feedback but that is not currently handled in this version.\r\n else {\r\n this.showError(formEl);\r\n }\r\n });\r\n }\r\n\r\n showSuccess(formEl) {\r\n formEl.parentNode.removeChild(formEl);\r\n this.errorContent.parentNode.removeChild(this.errorContent);\r\n this.successContent.classList.remove(\"formulate-success-content--hidden\");\r\n this.successContent.classList.add(\"formulate-success-content--visible\");\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n showError() {\r\n this.errorContent.classList.remove(\"formulate-success-content--hidden\");\r\n this.errorContent.classList.add(\"formulate-success-content--visible\");\r\n }\r\n}","export default class FormsModule {\r\n\r\n constructor() {\r\n const forms = document.querySelectorAll('form');\r\n if(forms.length != 0) forms.forEach(this.initForm.bind(this))\r\n }\r\n\r\n initForm(form) {\r\n const selectElements = form.querySelectorAll('.formulate__field--select');\r\n selectElements.forEach(this.createDropdown);\r\n if (selectElements.length > 0){\r\n document.addEventListener('click', this.closeAllDropdowns);\r\n }\r\n }\r\n\r\n closeAllDropdowns(){\r\n let formSelect = document.getElementsByClassName(\"formulate__field--select active\");\r\n for (let i = 0; i < formSelect.length; i++){\r\n let elm = formSelect[i];\r\n let selectItems = elm.getElementsByClassName('field__select__select-items')[0];\r\n let selectSelected = elm.getElementsByClassName('field__select__select-selected')[0];\r\n elm.classList.remove('active');\r\n selectSelected.classList.remove('field__select__select-arrow-active');\r\n selectItems.classList.add('field__select__select-hide');\r\n };\r\n }\r\n\r\n createDropdown(formSelectDiv){\r\n let formSelect = formSelectDiv;\r\n let selectElement = formSelectDiv.querySelector('select');\r\n let temp = formSelectDiv.getElementsByClassName(\"field__select__critical\");\r\n if(temp.length > 0){\r\n temp[0].outerHTML = \"\";\r\n }\r\n\r\n\r\n let a = document.createElement(\"DIV\");\r\n a.setAttribute(\"class\", \"field__select__select-selected\");\r\n a.innerHTML = selectElement.options[selectElement.selectedIndex].innerHTML;\r\n formSelectDiv.appendChild(a);\r\n\r\n let b = document.createElement(\"DIV\");\r\n b.setAttribute(\"class\", \"field__select__select-items field__select__select-hide\");\r\n\r\n let h = selectElement.nextElementSibling;\r\n\r\n for(let i = 1; i < selectElement.length; i++){\r\n let c = document.createElement(\"DIV\");\r\n c.innerHTML = '
' + selectElement.options[i].innerHTML;\r\n\r\n let selectItemClick = (e) => {\r\n for(let j = 0; j < selectElement.length; j++){\r\n if(selectElement.options[j].innerHTML == e.currentTarget.innerText){\r\n selectElement.selectedIndex = j;\r\n h.innerHTML = e.currentTarget.innerText;\r\n let y = formSelect.getElementsByClassName(\"field__select__same-as-selected\");\r\n for(let k = 0; k < y.length; k++){\r\n y[k].removeAttribute(\"class\");\r\n }\r\n e.currentTarget.setAttribute(\"class\", \"field__select__same-as-selected\");\r\n break;\r\n }\r\n }\r\n a.click();\r\n }\r\n c.addEventListener('click', selectItemClick);\r\n\r\n\r\n b.appendChild(c);\r\n }\r\n\r\n let selectHeaderClicked = (e) => {\r\n e.stopPropagation();\r\n b.classList.toggle('field__select__select-hide');\r\n e.currentTarget.classList.toggle('field__select__select-arrow-active');\r\n formSelect.classList.toggle('active');\r\n }\r\n a.addEventListener(\"click\", selectHeaderClicked);\r\n\r\n let headerSelectHeight = formSelect.clientHeight;\r\n b.style.top = headerSelectHeight + 1 + \"px\";\r\n\r\n formSelectDiv.appendChild(b);\r\n }\r\n}\r\n","import DomComponent from 'App/lib/domComponent';\r\nimport { each } from 'App/lib/util';\r\n\r\nexport default class CurbsideToGo extends DomComponent {\r\n static selector = '.ww-rich-text table';\r\n\r\n constructor(el) {\r\n super(el);\r\n\r\n setTimeout(() => {\r\n this.loaded();\r\n });\r\n this.tr = this.el.querySelectorAll('tr');\r\n this.td = this.el.querySelectorAll('td');\r\n this.tdPhone = this.el.querySelectorAll('tr td:nth-child(2)');\r\n this.tdThird = this.el.querySelectorAll('tr td:nth-child(3)');\r\n this.tdFourth = this.el.querySelectorAll('tr td:nth-child(4)');\r\n this.tdFifth = this.el.querySelectorAll('tr td:nth-child(5)');\r\n this.curbsideToGo();\r\n this.dogFriendly();\r\n }\r\n\r\n removeAttributes() {\r\n this.el.removeAttribute('width');\r\n this.el.removeAttribute('height');\r\n this.el.removeAttribute('style');\r\n this.el.removeAttribute('border');\r\n\r\n each(this.tr, (tr, index) => {\r\n tr.removeAttribute('style');\r\n if (index === 0 && this.tr.length > 1) {\r\n tr.style.display = 'none';\r\n }\r\n });\r\n\r\n each(this.td, (td) => {\r\n td.removeAttribute('style');\r\n if(td.innerText.trim().length == 0 || td.innerText.trim() == \" \" || td.innerText.trim() == '-') {\r\n td.style.display = 'none';\r\n }\r\n });\r\n }\r\n\r\n curbsideToGo() {\r\n if (location.href.indexOf('curbside-to-go') === -1) {\r\n return;\r\n }\r\n\r\n // Desktop\r\n if (screen.width > 768) {\r\n this.el.removeAttribute('border');\r\n this.el.removeAttribute('style');\r\n this.el.classList.add('curbside-to-go--desktop');\r\n this.el.parentNode.style.maxWidth = '1140px';\r\n return;\r\n }\r\n\r\n this.el.classList.add('curbside-to-go');\r\n this.removeAttributes();\r\n\r\n const stripTagsRegex = /(]+?>|

|<\\/p>|]+?>|

|<\\/div>)/img;\r\n\r\n each(this.tdPhone, (td) => {\r\n td.innerHTML = `PHONE NUMBER: ${td.innerHTML.replace(stripTagsRegex, '')}`;\r\n });\r\n\r\n // Dinning Curbside\r\n if (location.href.indexOf('dining') > -1) {\r\n each(this.tdThird, (td) => {\r\n td.innerHTML = `NEAREST CURBSIDE PICK-UP LOCATION: ${td.innerHTML.replace(stripTagsRegex, '')}`;\r\n });\r\n\r\n each(this.tdFourth, (td) => {\r\n td.innerHTML = `OPEN FOR IN-STORE DINING: ${td.innerHTML.replace(stripTagsRegex, '')}`;\r\n });\r\n\r\n each(this.tdFifth, (td) => {\r\n td.innerHTML = `OFFERS*: ${td.innerHTML}`;\r\n });\r\n }\r\n // Shopping Curbside\r\n else {\r\n each(this.tdThird, (td) => {\r\n td.innerHTML = `CURBSIDE PICK-UP LOCATION: ${td.innerHTML.replace(stripTagsRegex, '')}`;\r\n });\r\n\r\n each(this.tdFourth, (td) => {\r\n td.innerHTML = `OPEN FOR IN-STORE SHOPPING: ${td.innerHTML.replace(stripTagsRegex, '')}`;\r\n });\r\n }\r\n }\r\n\r\n dogFriendly() {\r\n if (location.href.indexOf('guest-services/dog-friendly') === -1) {\r\n return;\r\n }\r\n\r\n // If the table only has 1 row, then don't change it\r\n if (this.tr.length === 1) {\r\n return;\r\n }\r\n\r\n // Desktop\r\n if (screen.width > 768) {\r\n this.el.removeAttribute('border');\r\n this.el.removeAttribute('style');\r\n this.el.classList.add('dog-friendly--desktop');\r\n return;\r\n }\r\n\r\n this.el.classList.add('dog-friendly');\r\n this.removeAttributes();\r\n\r\n const stripTagsRegex = /(]+?>|

|<\\/p>|]+?>|

|<\\/div>)/img;\r\n\r\n each(this.tdPhone, (td) => {\r\n td.innerHTML = `PHONE NUMBER: ${td.innerHTML.replace(stripTagsRegex, '')}`;\r\n });\r\n }\r\n}","import { sum } from 'lodash';\r\nimport { each, removeChildren } from '../../lib/util';\r\nimport WidgetBase from '../widget.base';\r\n\r\nexport default class KidsBirthdayClubForm extends WidgetBase {\r\n static selector = '[data-ww-kids-birthday-club-form]';\r\n static FieldsetFieldsSelector = \"input:not([type='hidden'])\";\r\n static HideCssClass = \"hide\";\r\n formSelector = 'form';\r\n\r\n constructor(el) {\r\n super(el);\r\n this.form = this.el.querySelector(this.formSelector);\r\n\r\n const elementsToHide = this.el.querySelectorAll(\"fieldset[data-child-information]:not([data-child-information = '0'])\");\r\n each(elementsToHide, (fieldset) => {\r\n const inputs = Array.from(fieldset.querySelectorAll(KidsBirthdayClubForm.FieldsetFieldsSelector));\r\n const hasNoValues = inputs.every(x => typeof (x.value) === 'undefined' || x.value.length === 0);\r\n\r\n if (hasNoValues) {\r\n fieldset.classList.add(KidsBirthdayClubForm.HideCssClass);\r\n }\r\n });\r\n\r\n this.initEvents();\r\n\r\n setTimeout(() => {\r\n this.loaded();\r\n });\r\n }\r\n\r\n handleSuccess = () => {\r\n document.getElementById('blank-form').style.display = 'none';\r\n let template = document.querySelector('#thank-you');\r\n document.querySelector('.form-widget').appendChild(template.content.cloneNode(true));\r\n };\r\n resetErrors = () => {\r\n const fields = this.form.querySelectorAll('.formulate__field--validation-error');\r\n\r\n each(fields, (field) => {\r\n field.classList.remove('formulate__field--validation-error');\r\n\r\n const summary = field.querySelector('.formulate__inline-validation-summary');\r\n if (summary === null) {\r\n return;\r\n }\r\n\r\n removeChildren(summary);\r\n });\r\n }\r\n\r\n createErrorSummary = (parent) => {\r\n const element = document.createElement('ul');\r\n element.classList.add('formulate__inline-validation-summary');\r\n parent.appendChild(element);\r\n\r\n return element;\r\n }\r\n\r\n handleErrors = (errors) => {\r\n this.resetErrors();\r\n\r\n for (const [key, value] of Object.entries(errors)) {\r\n const input = this.form.querySelector(`[name='${key}']`);\r\n const field = input.closest('.formulate__field');\r\n\r\n if (field === null) {\r\n continue;\r\n }\r\n\r\n field.classList.add('formulate__field--validation-error');\r\n\r\n let summary = field.querySelector('.formulate__inline-validation-summary');\r\n\r\n if (summary === null) {\r\n summary = this.createErrorSummary(field);\r\n }\r\n\r\n value.forEach((error) => {\r\n const element = document.createElement('li');\r\n element.innerText = error;\r\n\r\n summary.appendChild(element);\r\n });\r\n }\r\n };\r\n\r\n\r\n initEvents = () => {\r\n this.form.addEventListener('submit', async (e) => {\r\n e.preventDefault();\r\n let formElement = e.currentTarget;\r\n formElement.querySelector('#receive-updates').value = formElement.querySelector('#receive-updates').value === 'on' ? true : false;\r\n const hiddenFieldsets = formElement.querySelectorAll('[data-child-information].hide');\r\n\r\n let data = new FormData(e.target);\r\n\r\n hiddenFieldsets.forEach(x => {\r\n const { childInformation: index } = x.dataset;\r\n\r\n if (index === '0') {\r\n return;\r\n }\r\n\r\n data.delete(`ChildInformation[${index}].FirstName`);\r\n data.delete(`ChildInformation[${index}].LastName`);\r\n data.delete(`ChildInformation[${index}].BirthDate`);\r\n });\r\n\r\n let response = await fetch(e.target.action, {\r\n method: \"POST\",\r\n body: data,\r\n });\r\n const result = await response.json();\r\n const { success, errors } = result;\r\n\r\n if (success === true) {\r\n this.handleSuccess();\r\n }\r\n else {\r\n this.handleErrors(errors);\r\n }\r\n });\r\n\r\n this.form.querySelector('button[data-add-child-btn]').addEventListener('click', function (e) {\r\n e.preventDefault();\r\n const nextChildEl = document.querySelector(\"[data-child-information].hide\");\r\n\r\n if (nextChildEl === null) {\r\n return;\r\n }\r\n\r\n nextChildEl.classList.remove(\"hide\");\r\n });\r\n\r\n this.form.querySelector('button[data-remove-child-btn]').addEventListener('click', function (e) {\r\n e.preventDefault();\r\n\r\n const lastVisibleChildEl = document.querySelector(\":nth-last-child(1 of [data-child-information]:not(.hide))\");\r\n\r\n if (lastVisibleChildEl === null) {\r\n return;\r\n }\r\n\r\n const { childInformation: index } = lastVisibleChildEl.dataset;\r\n\r\n if (index === \"0\") {\r\n return;\r\n }\r\n\r\n lastVisibleChildEl.classList.add(\"hide\");\r\n\r\n const inputs = Array.from(lastVisibleChildEl.querySelectorAll(KidsBirthdayClubForm.fieldsetFieldsSelector));\r\n for (var i = 0; i < inputs.length; i++) {\r\n inputs[i].value = '';\r\n }\r\n\r\n });\r\n }\r\n}","import WidgetBase from '../widget.base';\r\n\r\nexport default class AugmentedRealityExperience extends WidgetBase {\r\n static selector = '[data-js-module=\"augmented-reality-experience\"]';\r\n\r\n constructor(el) {\r\n super(el);\r\n\r\n const {\r\n androidFile,\r\n androidAudioFile,\r\n autoPlay,\r\n augmentedRealityExperienceName,\r\n iosFile\r\n } = this.el.dataset;\r\n const androidFullUrl = `intent://arvr.google.com/scene-viewer/1.0?file=${androidFile}&mode=ar_preferred${(androidAudioFile) ? `&sound=${androidAudioFile}` : ''}#Intent;scheme=https;package=com.google.ar.core;action=android.intent.action.VIEW;S.browser_fallback_url=https://developers.google.com/ar;end;`;\r\n const userAgent = navigator.userAgent || navigator.vendor || window.opera;\r\n const triggerQuery = `[data-augmented-reality-experience-link='${augmentedRealityExperienceName}']`;\r\n let canAutoPlay = document.querySelectorAll(`[data-js-module=\"augmented-reality-experience\"]:not([data-augmented-reality-experience-name='${augmentedRealityExperienceName}'])`).length === 0;\r\n\r\n this.$triggers = document.querySelectorAll(triggerQuery);\r\n\r\n if (/android/i.test(userAgent)) {\r\n this.setupExperience(androidFullUrl);\r\n }\r\n else if (/Mac/i.test(userAgent) && !window.MSStream) {\r\n this.setupExperience(iosFile, true);\r\n }\r\n else {\r\n this.setupFallbackExperience();\r\n canAutoPlay = false;\r\n }\r\n\r\n if (canAutoPlay && autoPlay === 'true') {\r\n this.$triggers[0].click();\r\n }\r\n\r\n setTimeout(() => {\r\n this.loaded();\r\n });\r\n }\r\n\r\n setupExperience(url, setRel) {\r\n const { $triggers } = this;\r\n\r\n $triggers.forEach((trigger) => {\r\n if (setRel) {\r\n trigger.setAttribute('rel', 'ar');\r\n }\r\n\r\n trigger.setAttribute('href', url);\r\n });\r\n }\r\n\r\n setupFallbackExperience() {\r\n const { $triggers } = this;\r\n\r\n $triggers.forEach((trigger) => {\r\n trigger.classList.add('disabled');\r\n trigger.setAttribute('title', 'Your device does not support AR at this time.');\r\n\r\n trigger.addEventListener('click', e => e.preventDefault());\r\n });\r\n }\r\n}\r\n","import WidgetBase from '../widget.base';\r\nimport { mq } from 'App/lib/util';\r\nimport featSniffer from 'App/lib/featureDetection';\r\n\r\nexport default class EventsCarouselWidget extends WidgetBase {\r\n static selector = '[data-ww-events-carousel]';\r\n inner;\r\n cards;\r\n threshold = 100;\r\n currentCardIndex = 0;\r\n transitioning = false;\r\n isDesktop = false;\r\n\r\n constructor(el) {\r\n super(el);\r\n\r\n if (!this.el) {\r\n return;\r\n }\r\n\r\n this.isDesktop = mq('md');\r\n\r\n this.el.querySelector('[data-pager-prev]')\r\n .addEventListener('click', () => {\r\n\r\n if (this.transitioning) {\r\n return;\r\n }\r\n\r\n this.transitioning = true;\r\n\r\n this.inner.style.transition = '';\r\n this.inner.style.transform = 'translateX(-100%)';\r\n\r\n let $el = this.el.querySelector('.is-ref');\r\n\r\n $el.classList.remove('is-ref');\r\n\r\n let $nextCard = this.prev($el, 3);\r\n\r\n $nextCard.classList.add('is-ref');\r\n\r\n $nextCard.style.order = 1;\r\n\r\n for(let i = 2; i <= this.cards.length; i++) {\r\n $nextCard = this.next($nextCard);\r\n $nextCard.style.order = i;\r\n }\r\n\r\n setTimeout(() => {\r\n this.inner.style.transition = 'transform 0.5s ease-in-out';\r\n this.inner.style.transform = 'translateX(0)';\r\n }, 0);\r\n\r\n setTimeout(() => {\r\n this.transitioning = false;\r\n }, 500);\r\n });\r\n\r\n this.el.querySelector('[data-pager-next]')\r\n .addEventListener('click', () => {\r\n\r\n if (this.transitioning) {\r\n return;\r\n }\r\n\r\n this.transitioning = true;\r\n\r\n this.inner.style.transition = 'transform 0.5s ease-in-out';\r\n this.inner.style.transform = 'translateX(-100%)';\r\n\r\n let $el = this.el.querySelector('.is-ref');\r\n\r\n $el.classList.remove('is-ref');\r\n\r\n let $nextCard = this.next($el, 3);\r\n\r\n $nextCard.classList.add('is-ref');\r\n\r\n setTimeout(() => {\r\n $nextCard.style.order = 1;\r\n\r\n for(let i = 2; i <= this.cards.length; i++) {\r\n $nextCard = this.next($nextCard);\r\n $nextCard.style.order = i;\r\n }\r\n\r\n this.inner.style.transition = '';\r\n this.inner.style.transform = 'translateX(0)';\r\n\r\n this.transitioning = false;\r\n\r\n }, 500);\r\n });\r\n\r\n this.inner = this.el.querySelector('[data-carousel-inner]');\r\n this.cards = this.el.querySelectorAll('[data-carousel-card]');\r\n\r\n // add touch events if supported\r\n if (featSniffer.touch()) {\r\n this.addTouchEvents(this.inner);\r\n }\r\n\r\n // update on resize\r\n window.addEventListener('resize', () => {\r\n let isDesktop = mq('md');\r\n\r\n if (isDesktop != this.isDesktop) {\r\n if (isDesktop) {\r\n this.initDesktop();\r\n } else {\r\n this.initMobile();\r\n }\r\n }\r\n\r\n this.isDesktop = isDesktop;\r\n });\r\n\r\n if (this.isDesktop) {\r\n this.initDesktop();\r\n } else {\r\n this.initMobile();\r\n }\r\n\r\n // tell dom we're ready\r\n setTimeout(() => this.loaded());\r\n }\r\n\r\n initDesktop() {\r\n this.inner.style.transform = 'translate3d(0,0,0)';\r\n this.cards.forEach((card, index) => {\r\n card.classList.remove('is-ref');\r\n card.style.opacity = 1;\r\n card.style.order = index + 1;\r\n });\r\n\r\n this.cards[0].classList.add('is-ref');\r\n }\r\n\r\n initMobile() {\r\n this.inner.style.transform = 'translate3d(0,0,0)';\r\n this.cards.forEach((card, index) => {\r\n card.classList.remove('is-ref');\r\n card.style.opacity = 1;\r\n card.style.order = index + 1;\r\n });\r\n\r\n this.cards[0].classList.add('is-ref');\r\n\r\n this.currentCardIndex = 0;\r\n this.updateCardOpacity(0);\r\n }\r\n\r\n next(element, times = 1) {\r\n\r\n for (let i = 0; i < times; i++) {\r\n element = element.nextElementSibling || this.cards[0];\r\n }\r\n\r\n return element;\r\n }\r\n\r\n prev(element, times = 1) {\r\n\r\n for (let i = 0; i < times; i++) {\r\n element = element.previousElementSibling || this.cards[this.cards.length - 1];\r\n }\r\n\r\n return element;\r\n }\r\n\r\n getCardOffsetX(index) {\r\n let runningTotal = 0;\r\n\r\n for (let i = 0; i < index; i++) {\r\n runningTotal += this.cards[i].offsetWidth;\r\n }\r\n\r\n return runningTotal * -1;\r\n }\r\n\r\n updateCardOpacity(offsetX) {\r\n //swap sign\r\n offsetX = offsetX * -1;\r\n\r\n let runningTotal = 0;\r\n\r\n let viewportStart = offsetX;\r\n let viewportEnd = offsetX + this.inner.offsetWidth;\r\n\r\n for (let i = 0; i < this.cards.length; i++) {\r\n\r\n let cardWidth = this.cards[i].offsetWidth;\r\n let cardCenter = runningTotal + (cardWidth / 2);\r\n\r\n let delta = 0;\r\n\r\n if (cardCenter < viewportStart) {\r\n delta = Math.abs(cardCenter - viewportStart);\r\n }\r\n\r\n if (cardCenter > viewportEnd) {\r\n delta = Math.abs(cardCenter - viewportEnd);\r\n }\r\n\r\n let ratio = delta / cardWidth;\r\n\r\n let opacity = 1 - ratio;\r\n\r\n opacity = Math.max(opacity, 0.5);\r\n\r\n this.cards[i].style.opacity = opacity;\r\n\r\n runningTotal += cardWidth;\r\n }\r\n }\r\n\r\n addTouchEvents(element) {\r\n let isTouchStart = false;\r\n\r\n // initial mouse X for `mousedown`\r\n let touchX;\r\n let touchY;\r\n\r\n // element transform style before/after\r\n let transformX;\r\n\r\n // element X before and after move\r\n let elementX = 0;\r\n\r\n element.addEventListener('touchstart', onTouchStart.bind(this));\r\n\r\n /**\r\n * Listens to `mousedown` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchStart(event) {\r\n element.classList.add('dragging');\r\n touchX = event.touches[0].clientX;\r\n touchY = event.touches[0].clientY;\r\n isTouchStart = true;\r\n\r\n transformX = parseTransformX(element.style.transform);\r\n }\r\n\r\n // mouse button released\r\n element.addEventListener('touchend', onTouchEnd.bind(this));\r\n\r\n /**\r\n * Listens to `mouseup` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchEnd(event) {\r\n isTouchStart = false;\r\n element.classList.remove('dragging');\r\n\r\n elementX = element.style.transform ? parseTransformX(element.style.transform) : transformX;\r\n\r\n const transformDelta = elementX - transformX;\r\n\r\n if (Math.abs(transformDelta) > this.threshold) {\r\n if(transformDelta < 0) {\r\n if(this.currentCardIndex !== this.cards.length - 1) {\r\n this.currentCardIndex++;\r\n let x = this.getCardOffsetX(this.currentCardIndex);\r\n element.style.transform = 'translate3d(' + x + 'px, 0, 0)';\r\n this.updateCardOpacity(x);\r\n }else{\r\n // sets slide back to start position\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)';\r\n this.updateCardOpacity(transformX);\r\n }\r\n }else{\r\n if(this.currentCardIndex !== 0) {\r\n this.currentCardIndex--;\r\n let x = this.getCardOffsetX(this.currentCardIndex);\r\n element.style.transform = 'translate3d(' + x + 'px, 0, 0)';\r\n this.updateCardOpacity(x);\r\n }else{\r\n // sets slide back to start position\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)';\r\n this.updateCardOpacity(transformX);\r\n }\r\n }\r\n }else{\r\n element.style.transform = 'translate3d(' + transformX + 'px, 0, 0)';\r\n this.updateCardOpacity(transformX);\r\n }\r\n }\r\n\r\n // gets the x transform value from an element with a transform3d style applied\r\n function parseTransformX(transform) {\r\n return parseInt(transform.split('(')[1].split(',')[0])\r\n }\r\n\r\n // need to attach to the entire document\r\n // in order to take full width and height\r\n // this ensures the element keeps up with the mouse\r\n document.addEventListener('touchmove', onTouchMove.bind(this));\r\n\r\n /**\r\n * Listens to `mousemove` event.\r\n *\r\n * @param {Object} event - The event.\r\n */\r\n function onTouchMove(event) {\r\n if (!isTouchStart) return;\r\n var deltaX = event.touches[0].clientX - touchX;\r\n var deltaY = event.touches[0].clientY - touchY;\r\n\r\n const absDeltaX = Math.abs(deltaX);\r\n const absDeltaY = Math.abs(deltaY);\r\n\r\n if(absDeltaY > absDeltaX) {\r\n return false;\r\n }\r\n\r\n element.style.transform = 'translate3d(' + (transformX + deltaX) + 'px, 0, 0)';\r\n\r\n this.updateCardOpacity(transformX + deltaX);\r\n }\r\n }\r\n}","import WidgetBase from '../widget.base';\r\nimport ColorBars from '../../services/color-bars';\r\n\r\nexport default class SimpleGraphicalCalloutGrid extends WidgetBase {\r\n static selector = '[data-ww-simple-graphical-callout-grid]';\r\n\r\n constructor(el){\r\n super(el);\r\n\r\n this.$colorbars = el.querySelector('.ww-simple-graphical-callout-grid__color-bars');\r\n\r\n setTimeout(() => {\r\n this.colorBars = new ColorBars(this.$colorbars);\r\n this.loaded();\r\n },500)\r\n }\r\n}","import DomComponent from '../../lib/domComponent';\r\nimport { addDataLayerItem } from '../../lib/util';\r\n\r\nexport default class TrackingEventsComponent extends DomComponent {\r\n static selector = '[data-tracking-event]';\r\n\r\n constructor(el) {\r\n super(el);\r\n\r\n if(!this.el) {\r\n return;\r\n }\r\n\r\n this.init();\r\n }\r\n\r\n init(){\r\n window.dataLayer = window.dataLayer || [];\r\n this.el.addEventListener('click', () => {\r\n let keys = Object.keys(this.el.dataset);\r\n\r\n if (keys !== null && keys.length > 0){\r\n\r\n //Filter tracking data\r\n let items = keys.filter((f) => f.startsWith(\"tracking\") && f !== \"trackingEvent\");\r\n\r\n //Build tracking object\r\n let dataTracking = {};\r\n\r\n items.forEach((i) => {\r\n let value = this.el.dataset[i];\r\n //Format tracking data keys/names from trackingDataEvent to data_event\r\n let key = i\r\n .replace('tracking', '')\r\n .match(/([A-Z]?[^A-Z]*)/g)\r\n .slice(0,-1)\r\n .join(\" \")\r\n .replaceAll(\" \", \"_\")\r\n .toLowerCase();\r\n //Add the value to the current key\r\n if (value && key){\r\n dataTracking[key] = value;\r\n }\r\n });\r\n\r\n addDataLayerItem(dataTracking);\r\n }\r\n });\r\n }\r\n}\r\n","import WidgetBase from '../widget.base';\r\n\r\nexport default class EventPromotionDetailWidget extends WidgetBase {\r\n static selector = '[data-js-event-promotion-detail]';\r\n\r\n constructor(el) {\r\n super(el);\r\n const addToCalendarButton = this.el.querySelector('.ww-epd__add-cal');\r\n const addToCalendarList = this.el.querySelector('.ww-epd__add-cal-items');\r\n this.setupAddToCalendar(addToCalendarButton, addToCalendarList);\r\n\r\n setTimeout(() => {\r\n this.loaded();\r\n })\r\n }\r\n\r\n setupAddToCalendar = (button, list) => {\r\n if (!button || !list) {\r\n return;\r\n }\r\n\r\n button.addEventListener('click', () => {\r\n list.classList.toggle('open');\r\n });\r\n }\r\n}","// import 'Styles/themes/_wiski-critical.scss';\r\n\r\n// TODO remove for prod\r\nimport 'Styles/styles.scss';\r\n\r\n// This import will add Promise to the window.\r\nimport \"promiscuous/dist/promiscuous-browser-shim-full\";\r\n\r\n// Formulate customizations.\r\nimport \"./components/formulate/brite-verify-validation\";\r\n\r\n// Formulate plain JavaScript frontend.\r\nimport \"../responsive.plain-javascript/plain-index\";\r\n\r\nimport \"./lib/polyfills\";\r\n\r\nimport { each } from './lib/util';\r\nimport HeaderComponent from './header/header';\r\nimport FooterComponent from './footer/footer';\r\nimport GraphicalCalloutCarousel from './widgets/graphical-callout-carousel/graphical-callout-carousel.widget';\r\nimport GraphicalCalloutGrid from './widgets/graphical-callout-grid/graphical-callout-grid.widget';\r\nimport AccordionComponent from './components/accordion';\r\nimport ModalComponent from './components/modal/modal';\r\nimport AttractionDetails from './widgets/attraction-details/attraction-details.widget';\r\nimport AttractionGallery from './widgets/attraction-gallery/attraction-gallery.widget';\r\nimport CompoundCalloutList from './widgets/compound-callout-list/compound-callout-list.widget';\r\nimport ChatComponent from './components/chat/chat';\r\nimport DirectoryComponent from './widgets/directory/directory.widget';\r\nimport StoreDetailsComponent from './widgets/store-details/store-details.widget';\r\nimport BgComponent from './components/bg-img/bg-img';\r\nimport ValidationComponent from './forms/validation';\r\nimport Hero from './widgets/hero/hero.widget';\r\nimport GraphicalBanner from './widgets/graphical-banner/graphical-banner.widget';\r\nimport FeaturedCardsCalloutCarousel from './widgets/featured-cards-callout-carousel/featured-cards-callout-carousel.widget';\r\nimport NewsCarousel from './widgets/news-carousel/news-carousel.widget';\r\nimport './widgets/offer-carousel/offer-carousel.widget';\r\nimport './widgets/product-carousel/product-carousel.widget';\r\nimport './services/animations';\r\nimport MoviesNowPlayingComponent from './widgets/movies/movies-now-playing.widget';\r\nimport MoviesComingSoonComponent from './widgets/movies/movies-coming-soon.widget';\r\nimport MoviesDetailsPageComponent from './widgets/movies/movies-details-page.widget';\r\nimport ImprovPageComponent from './widgets/movies/improv.widget';\r\nimport MovieTheaterFeaturesComponent from './widgets/movies/movies-theater-features.widget';\r\nimport EmergencyAlertComponent from './components/emergency-alert/emergency-alert';\r\nimport FormComponent from './widgets/form/form.widget';\r\nimport FormsModule from './forms/forms';\r\nimport CurbsideToGo from './curbside-to-go/curbside-to-go';\r\nimport KidsBirthdayClubForm from './widgets/kids-birthday-club-form/kids-birthday-club-form.widget';\r\nimport AugmentedRealityExperience from './widgets/augmented-reality-experience/augmented-reality-experience.widget';\r\nimport EventsCarousel from './widgets/events-carousel/events-carousel.widget';\r\nimport SimpleGraphicalCalloutGrid from './widgets/simple-graphical-callout-grid/simple-graphical-callout-grid';\r\nimport TrackingEventsComponent from './components/tracking-events/tracking-events';\r\nimport EventPromotionDetailWidget from './widgets/events-promotions-details/events-promotions-details.widget';\r\n\r\n// list of components that will fire conditionally depending on whether\r\n// the static selector property on them matches any dom elements\r\nconst components = [\r\n HeaderComponent,\r\n ModalComponent,\r\n TrackingEventsComponent,\r\n GraphicalCalloutCarousel,\r\n AccordionComponent,\r\n AttractionDetails,\r\n AttractionGallery,\r\n GraphicalCalloutGrid,\r\n CompoundCalloutList,\r\n FormComponent,\r\n FooterComponent,\r\n ChatComponent,\r\n DirectoryComponent,\r\n ValidationComponent,\r\n StoreDetailsComponent,\r\n Hero,\r\n GraphicalBanner,\r\n FeaturedCardsCalloutCarousel,\r\n NewsCarousel,\r\n MoviesNowPlayingComponent,\r\n MoviesComingSoonComponent,\r\n MoviesDetailsPageComponent,\r\n MovieTheaterFeaturesComponent,\r\n ImprovPageComponent,\r\n MovieTheaterFeaturesComponent,\r\n EmergencyAlertComponent,\r\n CurbsideToGo,\r\n KidsBirthdayClubForm,\r\n AugmentedRealityExperience,\r\n EventsCarousel,\r\n SimpleGraphicalCalloutGrid,\r\n EventPromotionDetailWidget\r\n];\r\n\r\nif (typeof DEVELOPMENT !== 'undefined' && DEVELOPMENT) {\r\n window.cssLoaded = true;\r\n}\r\n\r\n\r\n\r\n\r\n\r\nfunction init() {\r\n let apiMap = {};\r\n var touchsupport = ('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)\r\n if (touchsupport){ // browser doesn't support touch\r\n document.documentElement.classList.add('js-touch');\r\n }\r\n\r\n var is_ios = /iP(ad|od|hone)/i.test(window.navigator.userAgent),\r\n is_safari = !!navigator.userAgent.match(/Version\\/[\\d\\.]+.*Safari/);\r\n\r\n if (is_ios) {\r\n document.documentElement.classList.add('is-ios');\r\n }\r\n if (is_ios && is_safari) {\r\n document.documentElement.classList.add('is-safari');\r\n }\r\n\r\n var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;\r\n var isEdge = window.navigator.userAgent.indexOf(\"Edge\") > -1\r\n if (isIE11 || isEdge) {\r\n document.documentElement.classList.add('js-ie');\r\n }\r\n\r\n components.forEach((cmp) => {\r\n initComponent(cmp);\r\n });\r\n\r\n // Components that require other components to funciton\r\n const bgCmps = BgComponent.getEntryElements();\r\n each(bgCmps, (cmp) => {\r\n new BgComponent(cmp, document.querySelector('.graphical-callout-grid'),\r\n document.querySelector('.ww-graphical-callout-carousel'))\r\n })\r\n\r\n new FormsModule();\r\n}\r\n\r\nfunction initComponent(cmp) {\r\n let cmpsOnPage = cmp.getEntryElements();\r\n if(cmpsOnPage.length) {\r\n\r\n each(cmpsOnPage, (el) => {\r\n if(cmp.fetch && cmp.template) {\r\n cmp.fetch().then(data => {\r\n const cmpInstance = data === undefined ? cmp.fromErrorTemplate(cmp.error) : cmp.fromTemplate(data);\r\n el.parentElement.replaceChild(cmpInstance.el, el);\r\n }).catch(err => console.error(err));\r\n }else{\r\n new cmp(el);\r\n }\r\n })\r\n\r\n\r\n }else{\r\n return false;\r\n }\r\n}\r\n\r\nif(document.readyState === 'complete') {\r\n init();\r\n }else{\r\n window.addEventListener('load', init);\r\n }"],"names":["OfferCarouselSlider","_HTMLElement","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_possibleConstructorReturn","call","apply","concat","activeClass","instantScrollClass","visibility","before","original","after","slideTypes","Object","keys","_assertThisInitialized","_createClass","key","value","connectedCallback","this","storeElements","cloneSlides","observeSlides","configurePagers","setInitialPosition","listenForScrollCompletion","firstOriginalSlide","slidesContainer","querySelector","scrollToSlide","slide","instantly","_this2","classList","add","scrollLeft","offsetLeft","setTimeout","remove","next","addEventListener","handleNextClick","bind","prev","handlePrevClick","getCurrentlyVisibleSlide","nextElementSibling","previousElementSibling","_step","_iterator","_createForOfIteratorHelper","s","n","done","slideType","selector","err","e","f","_this3","onScroll","scrollTimeout","clearTimeout","requestAnimationFrame","resetToOriginalSlides","getSlideType","slideIndex","parseInt","dataset","originalSlide","type","forEach","x","hasOwnProperty","_this4","intersectionObserver","IntersectionObserver","entries","entry","target","index","isIntersecting","dots","threshold","root","allSlides","observe","_this5","firstSlide","slides","prevClone","cloneNode","setAttribute","insertBefore","nextClone","appendChild","querySelectorAll","_wrapNativeSuper","HTMLElement","window","customElements","define","ProductCarouselSlider","FieldUtility","require","RenderButton","fieldData","fieldValidators","cssClasses","extraOptions","initializeField","nodeName","usePlaceholder","useLabel","element","document","createTextNode","label","formElement","buttonKind","configuration","listenForSubmit","listenForFailureEvents","prototype","handleError","disabled","self","getElement","wrapper","getButtonKind","initializeFieldPrototype","module","exports","renderer","RenderCheckboxList","i","item","wrapperElement","labelElement","items","elements","nestFieldInLabel","wrapLabelText","fieldBeforeLabelText","push","createElement","parentNode","setData","data","options","checked","alias","id","checkValidity","values","filter","map","validators","RenderCheckbox","RenderDate","RenderRadioList","primary","secondary","name","generateId","label2","RenderHeader","useWrapper","text","RenderHidden","AddClasses","Validation","scriptInjected","RenderRecaptcha","eval","el","fieldValidations","ensureValidator","validations","prepareValidators","ensureGoogleScript","message","validationType","grecaptcha","script","src","async","head","getHiddenElement","RichText","innerHTML","dispatchEvent","RenderSelect","addOptions","addChangeEvent","category","option","fragment","createDocumentFragment","createOption","isInitial","cssClass","RenderText","RenderUpload","listenForChanges","file","getFile","hasFile","addFilename","addDeselectButton","removeFilename","removeDeselectButton","deselectElement","removeChild","filenameElement","nextSibling","previousSibling","listenForDeselect","files","forms","renderers","FormulatePromise","Promise","getFieldRenderers","fields","extraFields","field","fieldMap","getFieldValidators","extraValidators","validatorMap","validator","getFormData","renderCell","columnCount","cellElement","toString","renderField","fieldRenderers","fieldType","Error","renderForm","formData","placeholderElement","j","k","rows","rowElement","cells","cell","fieldElement","fieldsData","renderedFields","renderedField","columns","attachSubmitHandler","form","payload","url","validationData","preventDefault","fieldPromises","validationPromises","then","validationResult","success","cancelSubmit","sendPayloadToServer","payloadKey","dataByAlias","FormData","append","rawDataByAlias","result","JSON","parse","Success","handleInvalidFields","messages","renderForms","formId","formContainer","randomId","getElementById","renderRow","addClasses","STATUS_SUCCESS","METHOD_POST","SendRequest","state","request","XMLHttpRequest","resolve","reject","onreadystatechange","handleStateChange","status","open","send","readyState","responseText","eventName","event","CustomEvent","bubbles","detail","createEvent","initCustomEvent","idCount","Field","fieldPrototype","getCategory","fieldRenderer","fieldId","textNode","labelTextWrapper","labelText","hasLabel2","childNodes","labelAfterTextInput","prefix","mapFields","ValidationUtilities","validityFnName","isValueSet","validationOptions","preparedValidators","addValidationMessages","containerElement","priorListElement","listElement","itemElement","aggregateValidations","all","results","failures","checkTextArrayValidity","checkValidityCommon","checkTextValidity","checkBoolValidity","checkFileValidity","validationResults","validationListElement","RegexValidator","regex","RegExp","pattern","validateText","test","validateBool","textValue","validateTextArray","isArray","validateFile","filename","RequiredValidator","exportName","undefined","assign","VENDOR_PREFIXES","TEST_ELEMENT","TYPE_FUNCTION","round","Math","abs","now","Date","setTimeoutContext","fn","timeout","context","bindFn","invokeArrayArg","arg","each","obj","iterator","deprecate","method","deprecationMessage","stack","replace","log","console","warn","TypeError","output","source","nextKey","extend","dest","merge","inherit","child","base","properties","childP","baseP","create","constructor","boundFn","boolOrFn","val","ifUndefined","val1","val2","addEventListeners","types","handler","splitStr","removeEventListeners","removeEventListener","hasParent","node","parent","inStr","str","find","indexOf","trim","split","inArray","findByKey","toArray","slice","uniqueArray","sort","sortUniqueArray","a","b","prefixed","property","prop","camelProp","toUpperCase","_uniqueId","getWindowForElement","doc","ownerDocument","defaultView","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","navigator","userAgent","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","COMPUTE_INTERVAL","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","Input","manager","callback","inputTarget","domHandler","ev","enable","init","inputHandler","eventType","input","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","computeInputData","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","timeStamp","deltaTime","angle","getAngle","distance","getDistance","computeDeltaXY","offset","offsetDelta","prevDelta","prevInput","deltaX","y","deltaY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","scale","getScale","start","end","rotation","getRotation","maxPointers","computeIntervalInputData","velocity","velocityX","velocityY","direction","last","lastInterval","v","srcEvent","emit","recognize","clientX","clientY","p1","p2","props","sqrt","atan2","PI","evEl","evTarget","evWin","destroy","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pressed","MEhandler","button","which","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","store","pointerEvents","MSPointerEvent","PointerEvent","PEhandler","removePointer","eventTypeNormalized","toLowerCase","isTouch","storeIndex","pointerId","splice","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","started","normalizeSingleTouches","touches","changed","changedTouches","TEhandler","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","TouchInput","targetIds","getTouches","allTouches","identifier","targetTouches","changedTargetTouches","touch","MTEhandler","DEDUP_TIMEOUT","DEDUP_DISTANCE","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","t","dx","dy","TMEhandler","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","style","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","getTouchActionProps","touchMap","cssSupports","CSS","supports","TouchAction","set","compute","actions","update","touchAction","recognizers","recognizer","getTouchAction","cleanTouchActions","hasPanX","hasPanY","join","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","preventSrc","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","Recognizer","defaults","uniqueId","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","get","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","count","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","reset","process","attrTest","optionPointers","isRecognized","isValid","directionTest","hasMoved","inOut","time","validPointers","validMovement","validTime","taps","interval","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","handlers","oldCssProps","createInputInstance","toggleCssProps","stop","force","stopped","curRecognizer","existing","on","events","off","triggerDomEvent","gestureEvent","initEvent","gesture","Tap","Pan","Swipe","Pinch","Rotate","Press","castArray","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","clear","has","baseIndexOf","arrayIncludes","array","arrayIncludesWith","comparator","arraySome","predicate","eq","assocIndexOf","strictIndexOf","fromIndex","baseIsEqualDeep","isObjectLike","baseIsEqual","other","bitmask","customizer","Stack","equalArrays","equalByTag","equalObjects","getTag","isBuffer","isTypedArray","COMPARE_PARTIAL_FLAG","argsTag","arrayTag","objectTag","object","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","identity","SetCache","cacheHas","createSet","setToArray","LARGE_ARRAY_SIZE","baseUniq","iteratee","includes","isCommon","seen","outer","computed","seenIndex","noop","COMPARE_UNORDERED_FLAG","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","getAllKeys","objProps","objLength","objStacked","skipCtor","objValue","objCtor","othCtor","nativeKeys","overArg","nativeObjectToString","objectToString","__data__","size","pop","func","transform","stubArray","stubFalse","isEqual","baseIteratee","uniqBy","uniqWith","is","pendingHandler","resolved","rejected","queue","q","p","r","reason","transferState","Resolved","Rejected","finalize","promise","error","ResolvedPromise","promises","race","template","locals","pug_html","pug","pug_interp","locals_for_with","$$obj","pug_index0","$$l","attr","escape","serviceName","directoryURL","pug_mixins","month","classes","timeDisplay","block","attributes","detailPageUrl","image","title","details","cta","showTimes","pug_index1","header","times","pug_index2","link","pug_index3","showTimesGrouped","shows","pug_index5","show","pug_index6","movie","images","releaseDateDisplay","trailers","filters","dateDisplay","fullImage","synopses","description","comingSoon","showTimesByDate","day","trailer","movies","pug_index4","pug_index7","pug_has_own_property","pug_classes","escaping","pug_classes_array","className","classString","padding","escapeEnabled","pug_escape","pug_classes_object","pug_style","out","pug_attr","escaped","terse","toJSON","stringify","pug_merge","attrs","valA","valB","pug_attrs","pug_match_html","_html","html","regexResult","exec","lastIndex","charCodeAt","substring","rethrow","pug_rethrow","lineno","ex","lines","max","min","line","curr","path","scrollingElement","defineProperty","body","scrollTop","iframe","height","documentElement","contentWindow","write","close","isCompliant","scrollHeight","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","d","definition","o","enumerable","BriteVerifyValidator","encodedEmail","encodeURIComponent","Element","CharacterData","DocumentType","configurable","writable","varArgs","to","nextSource","Node","firstElementChild","nodes","nodeType","mqMap","xs","sm","md","lg","xl","navDesktop","duration","mq","breakpoint","query","matchMedia","matches","debounce2","wait","immediate","callNow","later","nodeList","cb","removeChildren","firstChild","getUrlParamByName","parameterName","tmp","location","search","substr","decodeURIComponent","scrollTo","change","currentTime","animateScroll","easeInOutQuad","capitalizeFirstLetter","string","charAt","addDataLayerItem","dataLayer","c","lock","contains","unlock","DomComponent","opts","defaultOpts","cache","ref","random","refs","loaded","getComponentByRef","getEntryElements","fromTemplate","div","fromErrorTemplate","errorTemplate","searchResultTemplate","SearchComponent","_DomComponent","Header","searchExpanded","quickTip","resultsContainer","searchUrl","getAttribute","debouncedFn","submitHandler","offsetHeight","initialHeight","parentElement","desktopMediaQuery","styles","getComputedStyle","usedSpace","paddingTop","paddingBottom","maxHeight","innerHeight","urlParams","expandSearchMenu","showLoader","showQuickTip","updateResults","clearResults","minimizeSearchMenu","hideQuickTip","opacity","term","encodedTerm","ColorBars","colorBars","innerWidth","width","getScaledValue","offsetWidth","percentage","ceil","originalWidth","maxWidth","flex","num","floor","HeaderComponent","lastScroll","logoRotationSpeed","active","menuMap","desktopHeight","toggleActiveClass","menuCtrActiveClass","menuActiveClass","submenuNameSelector","submenuImageSelector","submenuNavSelector","submenuNavItemSelector","submenuDefaults","isTouchDevice","menuToggles","subMenuToggles","subMenuBackButtons","subMenuContainer","subMenus","mainSubMenus","menuContainer","menus","logoCircle","headerMenuNav","layout","morebutton","headerInner","chatButton","$emergencyBanner","subMenuButtons","menu","initScrollHandlers","subMenu","submenu","namePlaceholder","nav","imageIncoming","nameIn","nameOut","adjustFontSize","innerText","activeText","activeImage","animating","endSubmenuHoverAnimation","startSubmenuHoverAnimation","submenuNavItem","toggle","hasChatButton","checkForChatButton","hasEmergencyBanner","chatWidget","display","bodyService","expandAlert","collapseAlert","toggleSubmenu","submenuMouseleaveHandler","toElement","closeMenu","toggleMouseleaveHandler","relatedTarget","activeSubmenu","updateSubmenuHeight","imageOutgoing","pageYOffset","scrollHandler","_submenu","searchMenu","$chatButton","chatButtonEl","inactiveLinks","insertAdjacentHTML","WidgetBase","maxTouchPoints","msMaxTouchPoints","GraphicalCalloutCarouselWidget","_WidgetBase","imgSelector","inactiveSlideScale","inactiveSlideOpacity","activeImageScale","innerContainer","pager","pagerTriggers","pagerIndicator","trigger","imageClickFunction","currentTarget","featSniffer","addTouchEvents","_index","oldIndex","shouldUpdateStyle","slideWidth","pagerWidth","newOpacity","setActiveStyles","setInactiveStyles","setTransformX","gutter","touchX","touchY","transformX","isTouchStart","parseTransformX","onTouchStart","onTouchEnd","transformDelta","activatingIndex","onTouchMove","absDeltaX","deltaRatio","originRatio","ratioUtility","originRight","transformOrigin","scaleRatio","opacityRatio","imageScaleRatio","activatingSlide","delta","ratio","GraphicalCalloutGrid","slidesToRemove","offsetAmount","isAnimating","mobileBP","tabletBP","newIndex","currentIndex","translateX","activeSlideView","originalLength","initialTranslate","cinemgraphs","setPaddingTop","setUpSlides","heading","summary","container","nextBtn","prevBtn","clone","prepend","from","reduce","previousVal","toggleArrows","idx","transformSlideContainer","accountForOffset","currentTransform","newTranslate","isMobile","addRemoveActiveClasses","adjustSliderViewForOffset","rightOrLeft","moveLastSlideToFront","slideToMoveIndex","lastSlide","removeAnimationClasses","moveFirstSlideToLast","isTablet","AccordionComponent","toggles","content","ModalComponent","closeButton","background","modalTriggers","modalContents","videoModalContent","modalBox","youtubeVideoModalTriggers","iframeModalTriggers","video","formWidgetSelector","closeModalHandler","prepareYoutubeVideo","videoId","openModal","prepareIframe","iframeSrc","modalTarget","modalContent","formWidget","successHandler","updateHeader","addIframeTriggers","addIframeVimeoTriggers","vimeoId","desktopVideoId","mobileVideoId","prepareVimeoVideo","addYouTubeTriggers","removeAttribute","Carousel","numOfSlides","areClonesUsed","cacheDOM","eventListeners","displayCarousel","displayControls","touchControls","children","slide1Clone","slide2Clone","youTubeTriggers","vimeoTriggers","modalEl","modalComponent","controls","prevButton","nextButton","dotsContainer","prevSlide","nextSlide","displayDots","goToSlide","_loop","btn","mc","swipe","sensitivity","removeAllClasses","updateDots","dot","newCurrent","newPrev","newNext","AttractionDetails","initialize","carousels","startCarousels","accordions","startAccordions","carousel","accordion","AttractionGallery","hiddenClass","menuSelector","cardSelector","menuItems","cards","menuItemClicked","filterCategory","removeAllActiveMenuItems","removeAllActiveCards","filterCards","params","parseUrlParams","click","initializeCount","categories","getUrlVars","vars","href","m","decodeURI","CompoundCalloutListWidget","isUpdatingTouch","removeTransition","slideContainer","sections","circleBG","createCalloutObj","adjustCircleSize","calloutObj","navCircles","navContainer","calloutContainer","mainCallout","position","top","left","oldIdx","collection","currentIdx","marginOffset","screen","collectionIdx","ChatComponent","newWindowLink","chatbotUrl","buttons","handleClick","openChat","$chatBotButton","BackToTop","parentElm","shouldScrollToTopOfWidget","scrollToTop","controlsOffsetY","getBoundingClientRect","DirectoryWidget","activeSubfilters","viewType","listings","listingRows","headers","searchInputs","searchClear","filterAll","subfilters","viewToggles","selectedFiltersList","selectedFiltersContainer","listingHeaders","mobileFilterBtn","directoryContainer","directoryHeaderMobile","sideBar","activeOrderHeader","debouncedSearchHandler","searchHandler","initialState","getInitialState","hasInitialFilter","clearSearch","filterHandler","activeFilter","createFilterClearTrigger","stopPropagation","toggleSubfilter","subfilter","createSubfilterClearTrigger","changeView","viewToggle","orderColumn","filterOnInit","disableSubfilters","diningFilter","BackToTopService","listing","found","checkForZeroResults","recordState","isOnload","diningSubfilters","listingRow","enableSubfilters","clearActiveSubfilters","setActiveFilter","filterBy","dropdown","closeDropdown","openDropdown","clientHeight","subfiltersToEnable","clearTrigger","span","clearAllFilters","updateHeaders","headerText","subfilterArr","searchTerm","pathname","history","pushState","activateSearch","closest","deactivateSearch","_this6","searchTerms","some","searchTermMatches","removeSpecialCharacters","normalCharsRegex","multipleSpacesRegex","match","visibleCount","offsetParent","main","sub","colHeader","_this7","orderVal","listingHeader","order","rowsArray","sortByOrderVal","localeCompare","row","checkValues","isEmpty","StoreDetailsComponent","activeIndex","gallery","galleryArrows","galleryChildren","thumbnails","galleryTrack","galleryVideos","readMore","readMoreContainer","mobileDealsButton","mobileDealsButtonClose","mobileDealsDropdown","downloadAppButton","activeTrackIndexes","translateAmount","readMoreClick","showDeals","hideDeals","thumbnail","thumbnailClick","arrow","galleryArrow","goToAppDownload","phone","getMobileOperatingSystem","vendor","opera","MSStream","appleAppStoreAppUrl","googlePlayAppUrl","navigateToImage","updateThubmnailTrack","Number","currentTrigger","incoming","difference","current","setTransform","incomingImage","isSwipeLeft","hasAttribute","getIndex","elem","originalIndex","BgImgComponent","graphicalCalloutGrid","graphicalCalloutCaorusel","carouselWidget","gridWidget","calculateBackgroundHeight","hero","ValidationComponent","requiredInputSelector","errorMessageMap","validate","valid","submit","removeErrorMessage","fetch","response","json","createErrorMessage","required","defaultInstanceSettings","begin","loopBegin","changeBegin","changeComplete","loopComplete","complete","loop","autoplay","timelineOffset","defaultTweenSettings","delay","endDelay","easing","validTransforms","springs","minMax","stringContains","applyArguments","arr","pth","svg","SVGElement","inp","HTMLInputElement","dom","fnc","und","nil","hex","rgb","hsl","col","parseEasingParameters","parseFloat","spring","mass","stiffness","damping","w0","zeta","wd","solver","progress","exp","cos","sin","getDuration","cached","frame","elapsed","rest","steps","eases","functionEasings","bezier","kSplineTableSize","kSampleStepSize","A","aA1","aA2","B","C","calcBezier","aT","getSlope","mX1","mY1","mX2","mY2","sampleValues","Float32Array","getTForX","aX","intervalStart","currentSample","lastSample","guessForT","initialSlope","newtonRaphsonIterate","aGuessT","currentSlope","binarySubdivide","aA","aB","currentX","currentT","penner","linear","Sine","Circ","Back","Bounce","pow2","pow","Elastic","amplitude","period","asin","easeIn","parseEasings","ease","selectString","filterArray","len","thisArg","flattenArray","NodeList","HTMLCollection","arrayContains","cloneObject","replaceObjectProps","o1","o2","mergeObjects","colorToRgb","rgbToRgba","rgbValue","hexToRgba","hexValue","g","hslToRgba","hslValue","h","l","hue2rgb","getUnit","getFunctionValue","animatable","total","convertPxToUnit","unit","tempEl","tagName","parentEl","factor","convertedUnit","getCSSValue","uppercasePropName","getPropertyValue","getAnimationType","getElementTransforms","reg","transforms","Map","getTransformValue","propName","defaultVal","getTransformUnit","list","getOriginalTargetValue","getRelativeValue","operator","u","validateValue","originalUnit","unitLess","getPolylineLength","previousPos","points","totalLength","numberOfItems","currentPos","getItem","getTotalLength","getCircleLength","getRectLength","getLineLength","getPolygonLength","getParentSvg","pathEl","svgData","parentSvgEl","getParentSvgEl","rect","viewBoxAttr","viewBox","w","vW","vH","getPathProgress","isPathTargetInsideSVG","point","getPointAtLength","p0","scaleX","scaleY","decomposeValue","rgx","numbers","strings","parseTargets","targets","pos","getAnimatables","parsed","normalizePropertyTweens","tweenSettings","settings","propArray","getProperties","keyframes","flattenKeyframes","propertyNames","newKey","tweens","normalizeTweens","previousTween","tween","normalizeTweenValues","tweenValue","toUnit","originalValue","previousValue","fromUnit","isPath","isColor","setProgressValue","css","attribute","manual","setTargetsValue","valueUnit","animType","getAnimations","animatables","createAnimation","lastTween","getInstanceTimings","animations","animLength","getTlOffset","anim","timings","instanceID","activeInstances","engine","raf","step","activeInstancesLength","activeInstance","paused","tick","handleVisibilityChange","anime","suspendWhenDocumentHidden","isDocumentHidden","cancelAnimationFrame","instance","_onDocumentVisibility","play","hidden","startTime","lastTime","childrenLength","makePromise","_resolve","finished","createNewInstance","instanceSettings","toggleInstanceDirection","reversed","adjustTime","resetTime","speed","seekChild","seek","setAnimationsProgress","insTime","animationsLength","tweenLength","eased","isNaN","toNumbersLength","toNumber","fromNumber","stringsLength","n$1","currentValue","setCallback","passThrough","setInstanceProgress","engineTime","insDuration","insDelay","insEndDelay","reversePlayback","syncInstanceChildren","i$1","began","loopBegan","changeBegan","changeCompleted","countIteration","remaining","completed","pause","reverse","restart","removeTargetsFromInstance","removeTargetsFromAnimations","targetsArray","childAnimations","version","running","removeTargetsFromActiveInstances","convertPx","getPath","percent","setDashoffset","pathLength","stagger","grid","axis","fromFirst","fromCenter","fromLast","isRange","maxValue","fromX","fromY","distanceX","distanceY","timeline","tl","instanceParams","tlIndex","ins","insParams","tlDuration","HeroColorBars","rootEl","animatedElements","nonColorBarElements","headerContainer","headings","hasResized","$bar1","$bar2","$bar3","$bar4","$bar5","$bar6","$bar7","setStartingPosition","startEntryAnimation","resize","lineheightStyle","fontSize","lineHeight","originalFontSize","originalLineHeight","colorbar","translateXVal","getTranslateValue","originalTranslate","animationComplete","animationOne","_objectSpread","animationTwo","getTranslateX","animationThree","bar6Width","line3TranslateX","line3Width","animationFour","animationFive","_this8","zIndex","goToStartingPosition","_this9","_this10","resizeDelay","nextStep","indexOfEl","cumulativeWidth","getColorBar","number","bar","Hero","scrollBtn","pageWidgets","rootColorBar","GraphicalBanner","FeaturedCardsCalloutCarouselWidget","currentCardIndex","transitioning","isDesktop","inner","transition","$el","$nextCard","initDesktop","initMobile","card","updateCardOpacity","getCardOffsetX","runningTotal","offsetX","viewportStart","viewportEnd","cardWidth","cardCenter","NewsCarouselWidget","passive","animArr","animatableItems","scrollOffset","animate","bottomOfWindow","calculateElementPositions","animateSide","animateDuration","MovieService","apiBaseUrl","movieApiBaseUrl","moviesNowPlayingEndpoint","moviesComingSoonEndpoint","movieDetailsEndpoint","dayMap","monthMap","fullMonthMap","toDate","dateStr","shift","_construct","_toConsumableArray","formatShowTime","hours","getHours","minutes","getMinutes","meridiem","formatMovieDate","dateString","date","getDate","getDay","getMonth","groupShowtimesByAmenities","showtimes","_uniqWith","_isEqual","amenities","showtimeByAmenities","showtime","formatMovieMeta","foo","runtime","formatRuntime","minuteString","rating","genres","_typeof","formatImprovShows","formattedData","nameHelper","timeHelper","monthHelper","monthYear","formatMonthYear","getFullYear","dates","startDate","monthIndex","formatImprovShowDate","eventUrl","isPast","formattedShow","eventImages","large","nameIndex","timeIndex","valueOf","formatMovie","showTime","res","fetchImprovShows","fetchNowPlaying","formatNowPlaying","fetchComingSoon","formatComingSoon","releaseDate","fetchMovieDetails","formatMovieDetails","helper","_uniqBy","MoviesNowPlayingComponent","filterButtons","filterButtonsContainer","filterClicked","section","activeSection","slider","initSlider","hideScrollbars","sbWidth","clientWidth","sbHeight","slideDistance","transitionSlider","MoviesComingSoonComponent","iframeTriggers","MoviesDetailsPageComponent","navMonthButtons","improvNavs","improvNavMap","navigate","jsNavMonth","showMonth","monthDisplays","EmergencyAlertComponent","hasBeenClosed","bodyClass","marginTop","mobileNavButton","jsEmergencyAlert","cookieName","box","closeButtons","_regeneratorRuntime","Op","hasOwn","desc","$Symbol","Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","iter","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","finish","_catch","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_defineProperties","descriptor","_toPropertyKey","_toPrimitive","hint","prim","toPrimitive","String","_asyncIterator","sync","retry","AsyncFromSyncIterator","AsyncFromSyncIteratorContinuation","_return","ret","thr","FormFieldComponent","Constructor","_this$el$dataset","umbFieldId","umbFieldType","_validate","protoProps","staticProps","createValidationContainer","containerEl","validationContainerEl","getFieldAlias","_asyncToGenerator","_callee","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_callee$","_context","getValue","hideValidationError","showValidationError","t0","clearValidationMessages","messageEl","ShortAnswerFormFieldComponent","_FormFieldComponent","fieldAlias","umbFieldAlias","requiredValidator","FormFieldHelper","getRequiredFieldValidator","briteVerifyValidator","getBriteVerifyFieldValidator","regexValidator","getRegexFieldValidator","LongAnswerFormFieldComponent","DateFormFieldComponent","DataConsentFormFieldComponent","FieldValidator","_x","_setPrototypeOf","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","_createSuperInternal","Super","_getPrototypeOf","NewTarget","ReferenceError","ReCaptchaFieldValidator","_FieldValidator","subClass","superClass","widgetEl","widgetId","grecaptchaId","getResponse","ReCaptcha2FormFieldComponent","DropdownFormFieldComponent","SingleChoiceFormFieldComponent","MultipleChoiceFormFieldComponent","_init","WeakSet","_initEvents","_createErrorSummary","WeakMap","ChildInformationFormFieldComponent","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","getChildInformationFieldValidator","_classPrivateMethodGet","_init2","firstName","lastName","birthDate","fieldName","_classPrivateFieldGet","fieldset","FieldsetFieldsSelector","every","HideCssClass","_initEvents2","nextChildEl","lastVisibleChildEl","childInformation","inputs","fieldsetFieldsSelector","privateSet","_checkPrivateRedeclaration","privateCollection","receiver","_hasValue","RequiredFieldValidator","_hasValue2","RegexFieldValidator","BriteVerifyFieldValidator","_callee2","uri","_callee2$","_context2","_ref","_x2","ChildInformationFieldValidator","fieldNamePrefix","getFieldComponent","valRequired","_field$dataset","valRegexPattern","valRegex","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_i","_s","_e","_r","_arr","_n","_d","_unsupportedIterableToArray","_nonIterableRest","_arrayWithoutHoles","_arrayLikeToArray","_iterableToArray","_nonIterableSpread","minLen","arr2","FormComponent","_postForm","successContent","errorContent","formKey","tokenHeaderName","tokenValue","formEl","pageId","buildFieldMap","addSubmitHandler","validateForm","_ref2","flat","_ref3","trackingFormEvent","formName","postForm","contentKey","_ref4","_ref5","showSuccess","showError","_x3","FormsModule","initForm","selectElements","createDropdown","closeAllDropdowns","formSelect","getElementsByClassName","elm","selectItems","selectSelected","formSelectDiv","selectElement","temp","outerHTML","selectedIndex","selectItemClick","selectHeaderClicked","headerSelectHeight","CurbsideToGo","tr","td","tdPhone","tdThird","tdFourth","tdFifth","curbsideToGo","dogFriendly","removeAttributes","stripTagsRegex","KidsBirthdayClubForm","formSelector","handleSuccess","resetErrors","createErrorSummary","handleErrors","errors","_Object$entries$_i","_Object$entries","initEvents","hiddenFieldsets","action","AugmentedRealityExperience","androidFile","androidAudioFile","autoPlay","augmentedRealityExperienceName","iosFile","androidFullUrl","triggerQuery","canAutoPlay","$triggers","setupExperience","setupFallbackExperience","setRel","EventsCarouselWidget","SimpleGraphicalCalloutGrid","$colorbars","TrackingEventsComponent","startsWith","dataTracking","replaceAll","EventPromotionDetailWidget","setupAddToCalendar","addToCalendarButton","addToCalendarList","components","GraphicalCalloutCarousel","CompoundCalloutList","FooterComponent","DirectoryComponent","FeaturedCardsCalloutCarousel","NewsCarousel","MovieTheaterFeaturesComponent","ImprovPageComponent","EventsCarousel","is_ios","is_safari","isIE11","MSInputMethodContext","documentMode","isEdge","cmp","initComponent","cmpsOnPage","cmpInstance","replaceChild","BgComponent","DEVELOPMENT","cssLoaded"],"sourceRoot":""}