{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/autocompleter/autocomplete.js","node_modules/resize-observer-polyfill/dist/ResizeObserver.js","scripts/components/accordion/accordion.js","scripts/components/asyncForms/asyncForms.js","scripts/components/conversionTracking/conversionTracking.js","scripts/components/cookies/cookies.js","scripts/components/countdownTimer/countdownTimer.js","scripts/components/eventBus/eventBus.js","scripts/components/fancyBoxBySize/fancyBoxBySize.js","scripts/components/favorites/favorites.js","scripts/components/featureDetection/featureDetection.js","scripts/components/fixedNavObserver/fixedNavObserver.js","scripts/components/fixedTitleBar/fixedTitleBar.js","scripts/components/formSubmissionHandler/formSubmissionHandler.js","scripts/components/heroSlider/heroSlider.js","scripts/components/layoutJumpLinks/layoutJumpLinks.js","scripts/components/phoneLocalizer/phoneLocalizer.js","scripts/components/simplePopup/simplePopup.js","scripts/components/siteSearch/siteSearch.js","scripts/components/slickSlider/slickSliderHelper.js","scripts/components/tabExtensions/tabExtensions.js","scripts/global/main.js","scripts/global/namespace.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","global","factory","this","settings","selected","debounceTimer","input","doc","document","container","createElement","preventSubmit","containerStyle","id","uid","style","debounceWaitMs","disableAutoSelect","customContainerParent","parentElement","items","inputValue","minLen","showOnFocus","fetchCounter","destroyed","suppressAutocomplete","undefined","minLength","className","join","trim","setAttribute","position","addEventListener","evt","stopPropagation","preventDefault","focus","detach","keyupEventHandler","clickEventHandler","keydownEventHandler","inputEventHandler","blurEventHandler","focusEventHandler","window","resizeEventHandler","scrollEventHandler","destroy","removeEventListener","removeAttribute","clearDebounceTimer","clear","fetch","startFetch","value","selectionStart","Date","now","toString","Math","random","substring","parent","parentNode","removeChild","clearTimeout","containerDisplayed","update","textContent","maxHeight","inputRect","render","item","_","__","itemElement","label","renderGroup","groupName","groupDiv","fragment","createDocumentFragment","prevGroup","forEach","index","group","appendChild","div","ev","onSelect","emptyMsg","empty","calc","docEl","documentElement","clientTop","body","clientLeft","scrollTop","pageYOffset","scrollLeft","pageXOffset","top","getBoundingClientRect","offsetHeight","left","innerHeight","bottom","height","width","offsetWidth","customize","updateScroll","updateIfDisplayed","target","selectBottom","elements","getElementsByClassName","element","previous","previousElementSibling","indexOf","offsetTop","containerBottom","updateSelectedSuggestion","getElementById","classList","remove","add","handleArrowAndEscapeKeys","key","containerIsDisplayed","handleEnterKey","trigger","setTimeout","inputText","cursorPos","savedFetchCounter","keyup","event","click","activeElement","define","amd","globalThis","self","autocomplete","MapShim","Map","Object","defineProperty","class_1","prototype","get","__entries__","enumerable","configurable","getIndex","entry","set","push","delete","entries","splice","has","callback","ctx","_i","_a","arr","result","some","isBrowser","global$1","Function","requestAnimationFrame$1","requestAnimationFrame","bind","trailingTimeout","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","addObserver","observer","observers_","connected_","connect_","removeObserver","observers","disconnect_","refresh","updateObservers_","activeObservers","filter","gatherActive","hasActive","broadcastActive","onTransitionEnd_","mutationsObserver_","observe","attributes","childList","characterData","subtree","mutationEventsAdded_","disconnect","_b","propertyName","getInstance","instance_","resolvePending","leadingCall","trailingCall","proxy","timeoutCallback","timeStamp","lastCallTime","delay","defineConfigurable","props","keys","writable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","parseFloat","getBordersSize","styles","positions","arguments","reduce","size","getHTMLElementContentRect","paddings","horizPad","vertPad","vertScrollbar","clientWidth","clientHeight","positions_1","getComputedStyle","right","boxSizing","round","horizScrollbar","abs","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","x","y","ResizeObservation","isActive","rect","contentRect_","broadcastWidth","broadcastHeight","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","create","contentRect","ResizeObserverSPI","TypeError","Element","observations","observations_","controller_","unobserve","clearActive","_this","observation","activeObservations_","callbackCtx_","map","callback_","controller","callbackCtx","WeakMap","ResizeObserver","method","apply","initialize","$","on","accordionId","attr","collapse","removeClass","addClass","console","log","conversionTracking","$formParent","$popup","$form","data","valid","closest","ajax","url","type","cache","serialize","success","pushFormEvent","$introduction","find","$successMessage","$popupWrapper","$popupTrigger","hide","error","status","err","append","getTrackingValuesFromForm","extendBrochureSignupMailCookie","$formNameEl","$trackingCategoryEl","$trackingLabelEl","$trackingValueEl","trackingCategory","val","trackingLabel","trackingValue","formName","cookie","domain","expires","path","$forms","$clickableTargets","trackingValues","isBrochureForm","toLowerCase","dataLayer","$this","trackingEventAction","trackingParams","pagePath","location","pathname","extend","actionName","isInPopup","formTriggeringEvent","hasAttribute","formDisplayMethod","trackingFormName","cookieName","cookieValue","expirationDays","d","setTime","getTime","toUTCString","name","ca","split","charAt","selector","countdownElements","querySelectorAll","info","let","countdownDate","getAttribute","countDown","setInterval","distance","daysSpan","querySelector","hoursSpan","minutesSpan","secondsSpan","innerText","floor","hour","minute","second","clearInterval","innerHTML","Vue","wrapperEl","fancyBoxEls","sizeLookup","small","medium","large","fancyBoxTriggers","fancyboxesBySize","groupBy","el","popupOptionsDefaults","padding","wrapCSS","fitToView","scrolling","maxWidth","hasOwnProperty","autoSize","autoResize","tpl","closeBtn","closeClick","openEffect","closeEffect","afterLoad","context","contextAfter","href","slick","topRatio","each","idx","wrapperClass","popupOptions","defaults","fancybox","cookies","slickSliderHelper","favoritesEventBus","addToFavorites","favorites","getFavoritesFromCookie","saveFavoritesToCookie","$emit","action","removeFromFavorites","toggleFavorite","isFavorite","favoriteString","encodeURIComponent","includes","setFavoriteIcons","favId","favCookie","decodeURIComponent","renderFavoritesList","elementId","favoriteTimerId","favoriteTours","sliderSelector","created","ids","updateFavoriteTours","$on","actionData","updated","methods","removeFavorite","reinitializeSlider","hasClass","initializeSlider","infinite","slidesToShow","slidesToScroll","responsive","breakpoint","removeSliderItem","response","await","headers","Content-Type","ok","json","initializeFavoriteButtons","isPassiveSupported","options","passive","getTotalFixedNavHeight","getours","fixedNavData","memo","navDef","hasFixedStyle","isFixed","contains","elStyles","computedPosition","getPropertyValue","computedDisplay","resizeObserver","obs","$el","css","outerHeight","totalFixedNavHeight","CustomEvent","detail","dispatchEvent","navEl","box","getHeights","getHeightBySelector","findWhere","$body","contentType","Array","isArray","disabledContentTypes","animateSubmitButton","$submitButton","validate","debounceForm","removeAttr","optionOverrides","enableAnimations","enableDebouncing","not","getoursFormSubmission","frm","Event","isContourForm","proxyFormWrapperSelector","heroSequence","$sliderVideos","$heroSlider","sequence","autoPlay","autoPlayInterval","autoPlayPauseOnHover","pagination","nextButton","prevButton","animateCanvas","fadeStepWhenSkipped","$videoWrapper","bgColor","$video","show","mouseenter","isAutoPlayPaused","pause","mouseleave","unpause","animationEnded","$videos","$videoContainer","currentTime","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","next","isMouseOver","fixedNavObserver","featureDetection","fixSectionNav","scrollDir","pageTopLayout","sectionJumpLinks","headerNavWrapperData","setActiveSection","fixedHeaderHeight","layoutRowSections","desktopJumpLinks","activeSection","vs","sectionId","jumpLink","$jumpLinks","initialOffset","$pageWrapper","variantContainerHeight","scrollPos","$submenuJumpLinks","offset","$tourJumpLinks","hash","headerHeight","$target","slice","localizePhoneNumber","$phoneNumberEl","isTelAttrEl","originCookie","localToPhoneDict","AARP","TZ","MGYB","is","ch","children","count","text","replace","applyLocalization","$phoneOverrideEl","$phoneNumberTextEls","$phoneNumberHrefEls","phoneNumberOverride","phoneEl","phoneHrefEl","enableConversionTracking","$cta","afterClose","inputId","searchResults","searchAutocomplete","form","overlay","closeButton","w","startsWith","containerSelector","unslickBelowBreakpoint","obj","Number","isInteger","unslickAboveBreakpoint","hasUpperBreakpoint","hasLowerBreakpoint","windowWidth","violatesUpperBound","violatesLowBound","isInitialized","tabList","tabNavItems","navItem","fixedTitleBar","layoutJumpLinks","phoneLocalizer","accordions","tabExtensions","heroSlider","simplePopup","siteSearch","formSubmissionHandler","asyncForms","fancyBoxBySize","countdownTimer","setupSelectBoxes","widthAttr","$chosenSelect","prop","change","siblings","chosen","disable_search","chosenDrop","chosenSingle","elem","docViewTop","docViewBottom","docViewMiddle","trimFeatureLinkDividers","$featureLinks","$previousFeatureLink","$currentFeatureLink","paddingTop","configurePhoneNumbers","ready","$btt","scroll","jQuery","vacationFinder","vacationFinderForm","toggleClass","liveChatImg","$cookieWarn","$featureLinkWrapper","pageHash","$flashSaleSequence","fidx","flashSequenceEl","liveChatDivs","liveChatReflections","slimmage","checkResponsiveImages","originFields","$hashEl","animate","$icon","$advancedFilters","section","$section","delayTime","parseInt","Models","Services","Components"],"mappings":"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","file":"main.min.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0) {\r\n var element = elements[0];\r\n // make group visible\r\n var previous = element.previousElementSibling;\r\n if (previous && previous.className.indexOf('group') !== -1 && !previous.previousElementSibling) {\r\n element = previous;\r\n }\r\n if (element.offsetTop < container.scrollTop) {\r\n container.scrollTop = element.offsetTop;\r\n }\r\n else {\r\n var selectBottom = element.offsetTop + element.offsetHeight;\r\n var containerBottom = container.scrollTop + container.offsetHeight;\r\n if (selectBottom > containerBottom) {\r\n container.scrollTop += selectBottom - containerBottom;\r\n }\r\n }\r\n }\r\n }\r\n function selectPreviousSuggestion() {\r\n var index = items.indexOf(selected);\r\n selected = index === -1\r\n ? undefined\r\n : items[(index + items.length - 1) % items.length];\r\n updateSelectedSuggestion(index);\r\n }\r\n function selectNextSuggestion() {\r\n var index = items.indexOf(selected);\r\n selected = items.length < 1\r\n ? undefined\r\n : index === -1\r\n ? items[0]\r\n : items[(index + 1) % items.length];\r\n updateSelectedSuggestion(index);\r\n }\r\n function updateSelectedSuggestion(index) {\r\n if (items.length > 0) {\r\n unselectSuggestion(index);\r\n selectSuggestion(items.indexOf(selected));\r\n updateScroll();\r\n }\r\n }\r\n function selectSuggestion(index) {\r\n var element = doc.getElementById(container.id + \"_\" + index);\r\n if (element) {\r\n element.classList.add('selected');\r\n element.setAttribute('aria-selected', 'true');\r\n input.setAttribute('aria-activedescendant', element.id);\r\n }\r\n }\r\n function unselectSuggestion(index) {\r\n var element = doc.getElementById(container.id + \"_\" + index);\r\n if (element) {\r\n element.classList.remove('selected');\r\n element.removeAttribute('aria-selected');\r\n input.removeAttribute('aria-activedescendant');\r\n }\r\n }\r\n function handleArrowAndEscapeKeys(ev, key) {\r\n var containerIsDisplayed = containerDisplayed();\r\n if (key === 'Escape') {\r\n clear();\r\n }\r\n else {\r\n if (!containerIsDisplayed || items.length < 1) {\r\n return;\r\n }\r\n key === 'ArrowUp'\r\n ? selectPreviousSuggestion()\r\n : selectNextSuggestion();\r\n }\r\n ev.preventDefault();\r\n if (containerIsDisplayed) {\r\n ev.stopPropagation();\r\n }\r\n }\r\n function handleEnterKey(ev) {\r\n if (selected) {\r\n if (preventSubmit === 2 /* OnSelect */) {\r\n ev.preventDefault();\r\n }\r\n suppressAutocomplete = true;\r\n try {\r\n settings.onSelect(selected, input);\r\n }\r\n finally {\r\n suppressAutocomplete = false;\r\n }\r\n clear();\r\n }\r\n if (preventSubmit === 1 /* Always */) {\r\n ev.preventDefault();\r\n }\r\n }\r\n function keydownEventHandler(ev) {\r\n var key = ev.key;\r\n switch (key) {\r\n case 'ArrowUp':\r\n case 'ArrowDown':\r\n case 'Escape':\r\n handleArrowAndEscapeKeys(ev, key);\r\n break;\r\n case 'Enter':\r\n handleEnterKey(ev);\r\n break;\r\n }\r\n }\r\n function focusEventHandler() {\r\n if (showOnFocus) {\r\n fetch(1 /* Focus */);\r\n }\r\n }\r\n function fetch(trigger) {\r\n if (input.value.length >= minLen || trigger === 1 /* Focus */) {\r\n clearDebounceTimer();\r\n debounceTimer = window.setTimeout(function () { return startFetch(input.value, trigger, input.selectionStart || 0); }, trigger === 0 /* Keyboard */ || trigger === 2 /* Mouse */ ? debounceWaitMs : 0);\r\n }\r\n else {\r\n clear();\r\n }\r\n }\r\n function startFetch(inputText, trigger, cursorPos) {\r\n if (destroyed)\r\n return;\r\n var savedFetchCounter = ++fetchCounter;\r\n settings.fetch(inputText, function (elements) {\r\n if (fetchCounter === savedFetchCounter && elements) {\r\n items = elements;\r\n inputValue = inputText;\r\n selected = (items.length < 1 || disableAutoSelect) ? undefined : items[0];\r\n update();\r\n }\r\n }, trigger, cursorPos);\r\n }\r\n function keyupEventHandler(e) {\r\n if (settings.keyup) {\r\n settings.keyup({\r\n event: e,\r\n fetch: function () { return fetch(0 /* Keyboard */); }\r\n });\r\n return;\r\n }\r\n if (!containerDisplayed() && e.key === 'ArrowDown') {\r\n fetch(0 /* Keyboard */);\r\n }\r\n }\r\n function clickEventHandler(e) {\r\n settings.click && settings.click({\r\n event: e,\r\n fetch: function () { return fetch(2 /* Mouse */); }\r\n });\r\n }\r\n function blurEventHandler() {\r\n // when an item is selected by mouse click, the blur event will be initiated before the click event and remove DOM elements,\r\n // so that the click event will never be triggered. In order to avoid this issue, DOM removal should be delayed.\r\n setTimeout(function () {\r\n if (doc.activeElement !== input) {\r\n clear();\r\n }\r\n }, 200);\r\n }\r\n function manualFetch() {\r\n startFetch(input.value, 3 /* Manual */, input.selectionStart || 0);\r\n }\r\n /**\r\n * Fixes #26: on long clicks focus will be lost and onSelect method will not be called\r\n */\r\n container.addEventListener('mousedown', function (evt) {\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n });\r\n /**\r\n * Fixes #30: autocomplete closes when scrollbar is clicked in IE\r\n * See: https://stackoverflow.com/a/9210267/13172349\r\n */\r\n container.addEventListener('focus', function () { return input.focus(); });\r\n // If the custom autocomplete container is already appended to the DOM during widget initialization, detach it.\r\n detach();\r\n /**\r\n * This function will remove DOM elements and clear event handlers\r\n */\r\n function destroy() {\r\n input.removeEventListener('focus', focusEventHandler);\r\n input.removeEventListener('keyup', keyupEventHandler);\r\n input.removeEventListener('click', clickEventHandler);\r\n input.removeEventListener('keydown', keydownEventHandler);\r\n input.removeEventListener('input', inputEventHandler);\r\n input.removeEventListener('blur', blurEventHandler);\r\n window.removeEventListener('resize', resizeEventHandler);\r\n doc.removeEventListener('scroll', scrollEventHandler, true);\r\n input.removeAttribute('role');\r\n input.removeAttribute('aria-expanded');\r\n input.removeAttribute('aria-autocomplete');\r\n input.removeAttribute('aria-controls');\r\n input.removeAttribute('aria-activedescendant');\r\n input.removeAttribute('aria-owns');\r\n input.removeAttribute('aria-haspopup');\r\n clearDebounceTimer();\r\n clear();\r\n destroyed = true;\r\n }\r\n // setup event handlers\r\n input.addEventListener('keyup', keyupEventHandler);\r\n input.addEventListener('click', clickEventHandler);\r\n input.addEventListener('keydown', keydownEventHandler);\r\n input.addEventListener('input', inputEventHandler);\r\n input.addEventListener('blur', blurEventHandler);\r\n input.addEventListener('focus', focusEventHandler);\r\n window.addEventListener('resize', resizeEventHandler);\r\n doc.addEventListener('scroll', scrollEventHandler, true);\r\n return {\r\n destroy: destroy,\r\n fetch: manualFetch\r\n };\r\n }\n\n return autocomplete;\n\n})));\n//# sourceMappingURL=autocomplete.js.map\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.ResizeObserver = factory());\n}(this, (function () { 'use strict';\n\n /**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n /* eslint-disable require-jsdoc, valid-jsdoc */\r\n var MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n })();\n\n /**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\n var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n // Returns global object of a current environment.\r\n var global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n })();\n\n /**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\n var requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n })();\n\n // Defines minimum timeout before adding a trailing call.\r\n var trailingTimeout = 2;\r\n /**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\n function throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n }\n\n // Minimum delay before invoking the update of observers.\r\n var REFRESH_DELAY = 20;\r\n // A list of substrings of CSS properties used to find transition events that\r\n // might affect dimensions of observed elements.\r\n var transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n // Check if MutationObserver is available.\r\n var mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n /**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\n var ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n }());\n\n /**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\n var defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n });\n\n /**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\n var getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n });\n\n // Placeholder of an empty content rectangle.\r\n var emptyRect = createRectInit(0, 0, 0, 0);\r\n /**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\n function toFloat(value) {\r\n return parseFloat(value) || 0;\r\n }\r\n /**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\n function getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n }\r\n /**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\n function getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n }\r\n /**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\n function getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n }\r\n /**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\n function getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n }\r\n /**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\n var isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n })();\r\n /**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\n function isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n }\r\n /**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\n function getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n }\r\n /**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\n function createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n }\r\n /**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\n function createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n }\n\n /**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\n var ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n }());\n\n var ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n }());\n\n var ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n }());\n\n // Registry of internal observers. If WeakMap is not available use current shim\r\n // for the Map collection as it has all required methods and because WeakMap\r\n // can't be fully polyfilled anyway.\r\n var observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n /**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\n var ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n }());\r\n // Expose public methods of ResizeObserver.\r\n [\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n ].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n });\n\n var index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n })();\n\n return index;\n\n})));\n","'use strict'\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name initializeAccordions\n * @description Setup an accordion. Event handlers, etc\n **/\n\n var initializeAccordions = function () {\n\n $('.get-accordion-expand').on('click', function (e) {\n e.preventDefault();\n\n var accordionId = $(this).attr(\"data-id\");\n\n $(accordionId + \" .collapse:not(.in)\").collapse('show');\n $(accordionId + \" [data-toggle='collapse']\").removeClass('collapsed');\n\n return false;\n });\n\n $('.get-accordion-collapse').on('click', function (e) {\n e.preventDefault();\n\n var accordionId = $(this).attr(\"data-id\");\n\n $(accordionId + \" .collapse.in\").collapse('hide');\n $(accordionId + \" [data-toggle='collapse']\").addClass('collapsed');\n\n return false;\n });\n\n console.log(\"accordion initialized\");\n };\n\n // Return an object exposing the public items\n return {\n initialize: initializeAccordions\n };\n}())","'use strict'\n\nvar conversionTracking = require('../conversionTracking/conversionTracking.js');\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name asyncForms\n * @description Initializes UmbracoForms with async submissions\n **/\n\n // Needs only be initialized once per page\n var initializeAsyncForms = function () {\n\n var $forms = $('.umbraco-forms-getours-async form');\n $forms.on('submit', function (e) {\n e.preventDefault();\n\n var $form = $(this);\n if ($form.data('submitted') === true) {\n // Previously submitted - don't submit again\n }\n else if ($form.valid()) {\n // Mark it so that the next submit can be ignored\n $form.data('submitted', true);\n\n // store wrapper for error message\n var $formParent = $form.parent();\n\n // store pop-up for thank you message\n var $popup = $form.closest('.form-popup');\n\n // Make ajax call form submission\n $.ajax({\n url: $form.attr('action'),\n type: 'POST',\n cache: false,\n data: $form.serialize(),\n success: function (result) {\n conversionTracking.pushFormEvent($form, 'success');\n /*$formParent.html('

' + result + '

');*/\n if ($popup && $popup.length > 0) {\n\n // fix popup height to the current popup height value\n //fixPopupHeight($form);\n $popup.addClass('form-succes')\n\n var $introduction = $popup.find('.form-introduction');\n if ($introduction) {\n $introduction.addClass('hide')\n }\n\n if ($formParent && $formParent.parent()) {\n $formParent.parent().addClass('hide')\n }\n\n var $successMessage = $popup.find('.form-success-message');\n if ($successMessage) {\n $successMessage.removeClass('hide')\n }\n }\n\n // Attempt to hide any buttons that may have opened this form in a popup\n hidePopupButton($form);\n\n },\n error: function (result, status, err) {\n\n conversionTracking.pushFormEvent($form, 'error');\n\n console.log('async form submission error: ' + err);\n\n var submitBtn = $form.find('input[type=\"submit\"]');\n submitBtn.hide();\n\n var errorMessage = 'There was a problem with your form submission. Please reload the page and try again. Contact Grand European Travel for assistance if you need help.';\n $formParent.append('

' + errorMessage + '

');\n }\n });\n }\n\n return this;\n });\n };\n\n var hidePopupButton = function ($form) {\n var $popupWrapper = $form.closest('.simple-popup.form-popup');\n if ($popupWrapper.length > 0) {\n var $popupTrigger = $('.form-popup-trigger[href=#' + $popupWrapper.attr('id') + ']');\n $popupTrigger.hide();\n }\n }\n\n // measure the popups height and fix the height at that value\n // when the form disappears, keep the popup that same size\n var fixPopupHeight = function ($form) {\n var $popupWrapper = $form.closest('.simple-popup.form-popup');\n var measuredHeight = $popupWrapper.height();\n $popupWrapper.height(measuredHeight);\n }\n\n // Return an object exposing the public items\n return {\n initialize: initializeAsyncForms\n };\n\n}())","'use strict'\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name conversionTracking\n * @description Handles custom tracking events\n **/\n\n // Needs only be initialized once per page\n var initialize = function () {\n\n var $forms = $('.umbraco-forms-form form');\n if ($forms.length > 0) {\n setupFormSubmissionTracking($forms);\n }\n\n var $clickableTargets = $('.clickable');\n if ($clickableTargets.length > 0) {\n setupClickTracking($clickableTargets);\n }\n\n };\n\n // Pushes a form event\n // $form and actionName should be provided\n // Can optionally provide trackingValues. If not provided, these values will be determined from hidden fields on the form\n var pushFormEvent = function ($form, actionName, trackingValues) {\n if (!actionName || actionName.length == 0) {\n actionName = 'unknown';\n }\n\n if (!trackingValues) {\n trackingValues = getTrackingValuesFromForm($form);\n }\n\n var $popup = $form.closest('[data-popup]');\n var isInPopup = $popup && $popup.length > 0;\n\n var formTriggeringEvent = !isInPopup ? 'Embedded' : ($popup[0].hasAttribute('data-popup-auto') ? 'Automatic Popup' : 'Click');\n var formDisplayMethod = isInPopup ? 'Popup' : 'Embedded';\n\n dataLayer.push(\n {\n event: 'GTM Custom Tracking Event',\n pagePath: window.location.pathname,\n\n formTriggeringEvent: formTriggeringEvent,\n formDisplayMethod: formDisplayMethod,\n\n trackingCategory: trackingValues.trackingCategory,\n trackingEventAction: actionName,\n trackingFormName: trackingValues.trackingLabel && trackingValues.trackingLabel.length > 0 ? trackingValues.trackingLabel : trackingValues.formName\n }\n );\n }\n\n var setupClickTracking = function ($targets) {\n $targets.on('click', function () {\n var $this = $(this);\n\n // get tracking data off of the element being clicked\n var trackingCategory = $this.attr(\"data-tracking-category\");\n var trackingEventAction = $this.attr(\"data-tracking-action\");\n var trackingLabel = $this.attr(\"data-tracking-label\");\n var trackingValue = $this.attr(\"data-tracking-value\");\n\n // fall back to the default tracking values global to the whole page if the values were not specified on the clickable element\n if (!trackingCategory || trackingCategory.length <= 0) {\n trackingCategory = $('body').attr(\"data-tracking-page\"); //try to get the catagory from the body\n }\n if (!trackingEventAction || trackingEventAction.length <= 0) {\n trackingEventAction = 'click'; //Set the event type to a click\n }\n\n // fire GTM event\n var trackingParams = {\n event: trackingEventAction,\n pagePath: window.location.pathname,\n trackingCategory: trackingCategory,\n trackingEventAction: trackingEventAction,\n trackingLabel: trackingLabel\n };\n if (trackingValue) {\n $.extend(trackingParams, { trackingValue: trackingValue });\n }\n\n if (typeof dataLayer !== 'undefined') {\n dataLayer.push(trackingParams);\n }\n });\n }\n\n var setupFormSubmissionTracking = function ($forms) {\n $forms.on('getours-form-submission', function (e) {\n var $form = $(this);\n var trackingValues = getTrackingValuesFromForm($form);\n var isBrochureForm = trackingValues.formName.toLowerCase().indexOf('brochure') > -1;\n\n if ($form.valid()) {\n if (typeof dataLayer !== 'undefined') {\n pushFormEvent($form, 'submit', trackingValues);\n }\n\n if (isBrochureForm) {\n extendBrochureSignupMailCookie();\n }\n }\n });\n }\n\n var getTrackingValuesFromForm = function ($form) {\n var $formNameEl = $form.find('[name=\"FormName\"]');\n var $trackingCategoryEl = $form.find('.trackingcategory input');\n var $trackingLabelEl = $form.find('.trackinglabel input');\n var $trackingValueEl = $form.find('.trackingvalue input');\n\n return {\n trackingCategory: $trackingCategoryEl.length > 0 ? $trackingCategoryEl.val() : '',\n trackingLabel: $trackingLabelEl.length > 0 ? $trackingLabelEl.val() : '',\n trackingValue: $trackingValueEl.length > 0 ? $trackingValueEl.val() : '',\n formName: $formNameEl.val()\n };\n }\n\n var extendBrochureSignupMailCookie = function () {\n var daysTillExpiration = 365 * 10; // expire in 10 years. (forever!)\n $.cookie('BrochureSignupMail', 'submitted', { domain: 'getours.com', expires: daysTillExpiration, path: '/' });\n }\n\n // Return an object exposing the public items\n return {\n initialize: initialize,\n pushFormEvent: pushFormEvent\n };\n\n}())","/**\n* @class Cookie\n* @description Helper functions for adding and deleting cookies.\n*/\nmodule.exports = (function () {\n\t/**\n\t* @method delete\n\t* @param {string} cookieName - The name of the cookie to delete.\n\t* @description Deletes the indicated cookie.\n\t*/\n\tlet remove = function (cookieName) {\n\t\tif (cookieName) {\n\t\t\tset(cookieName, \"\", -1);\n\t\t}\n\t}\n\n\t/**\n\t* @method get\n\t* @param {string} cookieName - The name of the cookie to retrieve\n\t* @returns {string}\n\t* @description Get the value stored in the cookie with the matching name, if any.\n\t*/\n\tlet get = function (cookieName) {\n\t\tif (cookieName) {\n\t\t\tvar name = cookieName + \"=\";\n\t\t\tvar ca = document.cookie.split(';');\n\t\t\tfor (var i = 0; i < ca.length; i++) {\n\t\t\t\tvar c = ca[i];\n\t\t\t\twhile (c.charAt(0) == ' ') {\n\t\t\t\t\tc = c.substring(1);\n\t\t\t\t}\n\t\t\t\tif (c.indexOf(name) == 0) {\n\t\t\t\t\treturn c.substring(name.length, c.length);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t}\n\n\t/**\n\t* @method set\n\t* @description Creates or overwrites the indicated cookie with the provided value, and optionally sets an expiration date.\n\t* @param {string} cookieName - The name of the cookie to set or overwrite\n\t* @param {string} cookieValue - The value to assign to the cookie\n\t* @param {number=} expirationDays - The time, in days, to store the cookie.\n\t*/\n\tlet set = function (cookieName, cookieValue, expirationDays) {\n\t\tif (cookieName) {\n\t\t\tvar d = new Date();\n\t\t\tvar expires = \"\";\n\t\t\tif (expirationDays) {\n\t\t\t\td.setTime(d.getTime() + (expirationDays * 24 * 60 * 60 * 1000));\n\t\t\t\texpires = \"expires=\" + d.toUTCString();\n\t\t\t}\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \"; \" + expires + \"; path=/\";\n\t\t}\n\t}\n\n\treturn {\n\t\tremove: remove,\n\t\tget: get,\n\t\tset: set\n\t}\n}());","'use strict'\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name initialize\n * @description initializes accessibilty extensions to bootstrap 3 data-toggle=\"tab\"\n **/\n\n var initialize = function (selector) {\n\n const second = 1000,\n minute = second * 60,\n hour = minute * 60,\n day = hour * 24;\n\n // Get all span elements with the class 'countdown-timer-item'\n const countdownElements = document.querySelectorAll(selector);\n console.info(\"Countdown Elements? \", countdownElements);\n countdownElements.forEach(function (element) {\n // Get the data-countdown attribute value (which is the target date)\n let countdownDate = element.getAttribute('data-countdown');\n\n // Convert it into a Date object\n const countDown = new Date(countdownDate).getTime();\n\n // Set up the interval for each countdown timer\n const x = setInterval(function () {\n const now = new Date().getTime(),\n distance = countDown - now;\n\n // Find child spans to update with the remaining time\n const daysSpan = element.querySelector('.days');\n const hoursSpan = element.querySelector('.hours');\n const minutesSpan = element.querySelector('.minutes');\n const secondsSpan = element.querySelector('.seconds');\n\n if (daysSpan && hoursSpan && minutesSpan && secondsSpan) {\n // Update the countdown timer display for this element\n daysSpan.innerText = Math.floor(distance / day);\n hoursSpan.innerText = Math.floor((distance % day) / hour);\n minutesSpan.innerText = Math.floor((distance % hour) / minute);\n secondsSpan.innerText = Math.floor((distance % minute) / second);\n }\n\n // When the countdown is complete\n if (distance < 0) {\n clearInterval(x);\n element.innerHTML = \"\";\n }\n }, 1000); // Update every second\n });\n };\n\n // Return an object exposing the public items\n return {\n initialize: initialize\n };\n}())","// eventBus.js\nmodule.exports = (function () {\n\n const eventBus = new Vue();\n\treturn eventBus;\n}());","'use strict'\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name fancyBoxBySize\n * @description Initializes a fancybox trigger on a fancybox with information embedded about the size of the popup\n **/\n\n // Needs only be initialized once per page\n var initialize = function (wrapperEl) {\n let sizeLookup = {\n small: 483,\n medium: 694,\n large: 905 // for hotel popups with image sliders\n };\n\n let fancyBoxTriggers = wrapperEl.querySelectorAll('[data-fancybox-by-size]');\n let fancyboxesBySize = _.groupBy(fancyBoxTriggers, function (el) {\n return $(el).attr('data-fancybox-by-size');\n })\n for (const [size, fancyBoxEls] of Object.entries(fancyboxesBySize)) {\n let maxWidth = sizeLookup.hasOwnProperty(size) ? sizeLookup[size] : sizeLookup[0];\n let popupOptionsDefaults = {\n padding: [0],\n wrapCSS: 'rounded-popup',\n fitToView: true,\n scrolling: 'no',\n maxWidth: maxWidth,\n autoSize: true,\n autoResize: true,\n tpl: {\n closeBtn: ''\n },\n closeClick: false,\n openEffect: 'none',\n closeEffect: 'none',\n afterLoad: function (context, contextAfter) {\n // This matters when popups have image sliders in them like for hotels\n var $imageSlider = $(context.href + ' .image-slider');\n $imageSlider.slick('refresh');\n }\n };\n if (size === 'large') {\n // Pin hotel popups to the top of the page, so when the images lazy load in and expand the popup, it isn't below the fold as often\n popupOptionsDefaults.topRatio = 0;\n }\n\n $.each($(fancyBoxEls), function (idx, el) {\n let $this = $(el);\n let wrapperClass = $this.attr('data-fancybox-wrapper-class');\n let popupOptions = {};\n if (wrapperClass && wrapperClass.length > 0) {\n popupOptions.wrapCSS = 'rounded-popup ' + (wrapperClass ? wrapperClass : '');\n }\n _.defaults(popupOptions, popupOptionsDefaults);\n\n $this.fancybox(popupOptions);\n });\n }\n };\n\n // Return an object exposing the public items\n return {\n initialize: initialize\n };\n}())","const cookies = require(\"../cookies/cookies.js\");\nconst slickSliderHelper = require('../slickSlider/slickSliderHelper.js');\n\n// initialize to global scope so favorites module can communicate with favorites modules in separate .js files\nwindow.favoritesEventBus = window.favoritesEventBus || require(\"../eventBus/eventBus.js\");\n\nmodule.exports = (function () {\n /**\n * @method set\n * @description Adds the vacation to the favorites\n * @param {string} id - The Umbraco guid if it's a tour and the cruise id (url) if it's a cruise\n */\n let addToFavorites = function (id) {\n if (id) {\n let favorites = getFavoritesFromCookie(); // Retrieve the favorites from the cookie\n if (!favorites) {\n favorites = [];\n }\n favorites.push(id); // Add the tourId to the favorites array\n saveFavoritesToCookie(favorites); // Save the updated favorites to the cookie\n window.favoritesEventBus.$emit(\"favoriteUpdated\", favorites, { action: 'add', value: id });\n }\n };\n\n /**\n * @method removeFavorites\n * @description Removes the vacation from the favorites\n * @param {string} id - The Umbraco guid if it's a tour and the cruise id (url) if it's a cruise\n */\n let removeFromFavorites = function (id) {\n const favorites = getFavoritesFromCookie(); // Retrieve the favorites from the cookie\n const index = favorites.indexOf(id);\n if (index !== -1) {\n favorites.splice(index, 1); // Remove the tourId from the favorites array\n saveFavoritesToCookie(favorites); // Save the updated favorites to the cookie\n window.favoritesEventBus.$emit(\"favoriteUpdated\", favorites, { action: 'remove', index: index });\n }\n };\n\n /**\n * @method toggleFavorite\n * @description Toggles an item into and out of the favorites list. Note that this does not visually update button states\n * @param {string} id - The Umbraco guid if it's a tour and the cruise id (url) if it's a cruise\n */\n let toggleFavorite = function (id) {\n if (!isFavorite(id)) {\n addToFavorites(id);\n } else {\n removeFromFavorites(id)\n }\n }\n\n /**\n * @method getFavorites\n * @description Gets the list of favorites from the cookie\n */\n let getFavoritesFromCookie = function () {\n var favCookie = cookies.get(\"get-favorites\");\n if (favCookie) {\n return decodeURIComponent(favCookie).split(\",\");\n }\n };\n\n /**\n * @method saveFavoritesToCookie\n * @description Saves the favorites to the cookie\n * @param {string[]} favorites - The list of Ids that will be combined to store in the cookie\n */\n let saveFavoritesToCookie = function (favorites) {\n if (favorites) {\n const favoriteString = favorites.join(\",\");\n cookies.set(\"get-favorites\", encodeURIComponent(favoriteString), 90);\n }\n };\n\n /**\n * @method isFavorite\n * @description Checks to see if the vacation is a favorite\n * @param {string} id - The Umbraco guid if it's a tour and the cruise id (url) if it's a cruise\n * @returns {boolean} - If the favorite exists in the cookie or not\n */\n let isFavorite = function (id) {\n if (id) {\n const favorites = getFavoritesFromCookie(); // Retrieve the favorites from the cookie\n if (!favorites) {\n return false;\n }\n return favorites.includes(id); // Check if the tourId exists in the favorites array\n }\n };\n\n /**\n * @method setFavoriteIcons\n * @description Updates all of the like buttons on the page when an item is liked or unliked\n */\n let setFavoriteIcons = function () {\n $('[data-favorite]').each(function () {\n const $this = $(this);\n const favId = $this.data('favorite');\n if (favId) {\n if (isFavorite(favId)) {\n $this.addClass('btn-liked');\n } else {\n $this.removeClass('btn-liked');\n }\n }\n });\n };\n\n /**\n * @method initializeFavoriteButtons\n * @description Initializes favorite button behavior\n * @param {string} selector - css selector to target the favorite buttons to initialize\n */\n let initializeFavoriteButtons = function(selector) {\n $(selector).click(function () {\n const $this = $(this);\n const favId = $this.data('favorite');\n toggleFavorite(favId);\n setFavoriteIcons();\n });\n }\n\n // -------------------- VUE IS HERE ------------------------------------\n\n /**\n * @method renderFavoritesList\n * @description Initialize the dynamic wishlist component\n * @param {string} elementId - id used to target the html wrapper element for this vue.js component\n */\n let renderFavoritesList = function (elementId) {\n let favoriteTimerId = 0;\n new Vue({\n el: \"#\" + elementId,\n data() {\n return {\n favoriteTours: [],\n sliderSelector: '#' + elementId + ' .mobile-tmc-slider'\n };\n },\n created() {\n if (!this.favoriteTours || this.favoriteTours.length == 0) {\n var ids = getFavoritesFromCookie();\n this.updateFavoriteTours(ids);\n }\n window.favoritesEventBus.$on(\"favoriteUpdated\", (ids, actionData) => {\n this.updateFavoriteTours(ids, actionData);\n });\n },\n updated() {\n\n },\n methods: {\n removeFavorite(favId) {\n removeFromFavorites(favId);\n setFavoriteIcons();\n },\n reinitializeSlider() {\n // Must give vue.js a chance to finish what its up to before slick kicks in\n if (typeof favoriteTimerId === \"number\" && favoriteTimerId > 0) {\n clearTimeout(favoriteTimerId);\n }\n favoriteTimerId = setTimeout(() => {\n let $slider = $(this.sliderSelector);\n let isInitialized = $slider.hasClass('slick-initialized');\n if (isInitialized) {\n $(this.sliderSelector).slick('unslick');\n } else {\n\n\n this.initializeSlider();\n }\n }, 2000);\n },\n initializeSlider() {\n if (this.favoriteTours && this.favoriteTours.length > 0) {\n slickSliderHelper.initialize(this.sliderSelector, {\n infinite: false,\n slidesToShow: 3,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 1199,\n settings: \"unslick-above\"\n },\n {\n breakpoint: 991,\n settings: {\n slidesToShow: 2,\n }\n },\n {\n breakpoint: 599,\n settings: {\n slidesToShow: 1,\n }\n }\n ]\n });\n }\n \n },\n removeSliderItem(idx) {\n $(this.sliderSelector).slick('slickRemove', idx);\n },\n async updateFavoriteTours(ids, actionData) {\n try {\n const response = await fetch(\n \"/umbraco/api/FavoritesApi/GetFavoriteTours?ids=\" + ids,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n }\n );\n if (response.ok) {\n const data = await response.json();\n this.favoriteTours = data;\n if (actionData && actionData.action === 'remove' && actionData.index) {\n this.removeSliderItem(actionData.index);\n } else {\n this.reinitializeSlider();\n }\n } else {\n throw new Error(\"Failed to fetch favorite tours\");\n }\n } catch (error) {\n console.error(\"Failed to fetch favorite tours:\", error);\n }\n }\n }\n });\n };\n\n return {\n setFavoriteIcons: setFavoriteIcons,\n addToFavorites: addToFavorites,\n removeFromFavorites: removeFromFavorites,\n isFavorite: isFavorite,\n renderFavoritesList: renderFavoritesList,\n toggleFavorite: toggleFavorite,\n initializeFavoriteButtons: initializeFavoriteButtons\n };\n})();\n","'use strict'\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name featureDetection\n * @description Use this to check on whether a particular JS feature is enabled in the current browser\n **/\n\n var isPassiveSupported = function (selector) {\n let isPassiveSupported = false;\n\n try {\n const options = {\n get passive() {\n // This function will be called when the browser\n // attempts to access the passive property.\n isPassiveSupported = true;\n return false;\n },\n };\n\n window.addEventListener(\"passive-support-text\", null, options);\n window.removeEventListener(\"passive-support-text\", null, options);\n } catch (err) {\n isPassiveSupported = false;\n }\n\n return isPassiveSupported;\n }\n\n // Return an object exposing the public items\n return {\n isPassiveSupported: isPassiveSupported\n };\n}())","'use strict'\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name fixedNavObserver\n * @description Initializes an observer that monitors the height of the fixed navs.\n * the height info is stored in namespaced global variable window.getours.fixedNavData\n * and can be retrieved via getHeightData()\n * \n * NOTE:\n * One of the limitations of the fixedNavObserver is that it is actually watching for resize\n * This means that if an element switches from being \"position: relative\"\" to \"position: fixed\",\n * but its actual height remains the same, it won't fire this thing off.\n **/\n\n var ResizeObserver = require('resize-observer-polyfill');\n\n // all fixed navs to be monitored\n window.getours.fixedNavData = [\n {\n selector: '.header-and-nav-wrapper',\n isFixed: function () {\n return document.body.classList.contains('has-fix-strip');\n },\n height: 0\n }, {\n selector: '.topStrip',\n isFixed: function () {\n return hasFixedStyle('.topStrip');\n },\n height: 0\n }, {\n selector: '#variants-and-jumps',\n isFixed: function () {\n return document.body.classList.contains('has-fixed-seasons-strip');\n },\n height: 0\n }, {\n selector: '#vacation-section-years',\n isFixed: function () {\n return document.body.classList.contains('has-fixed-year-select');\n },\n height: 0\n },\n {\n selector: \".submenu-jump-links-section\",\n isFixed: function () {\n return document.body.classList.contains('has-submenu-jump-links-section');\n },\n height: 0\n }\n ]\n\n var getFixedElementHeight = function (selector, isFixed) {\n if (!isFixed) {\n return 0;\n }\n\n var $el = $(selector);\n return $el.css('display') !== 'none' ? $el.outerHeight() : 0; // jquery may inconsistently return height of hidden elements. Be careful about this\n }\n\n // Needs only be initialized once per page\n var initializeObserver = function () {\n var resizeObserver = new ResizeObserver(function (entries, obs) {\n window.getours.fixedNavData.forEach(function (navDef) {\n navDef.height = getFixedElementHeight(navDef.selector, navDef.isFixed());\n });\n\n let totalFixedNavHeight = getTotalFixedNavHeight();\n let event = new CustomEvent('fixed-nav-resize-observed', { detail: totalFixedNavHeight });\n document.dispatchEvent(event);\n });\n\n // observe heights of all fixed navs\n window.getours.fixedNavData.forEach(function (navDef) {\n var navEl = document.querySelector(navDef.selector);\n if (navEl) {\n resizeObserver.observe(navEl, { box: 'border-box' });\n }\n });\n };\n\n var getHeightData = function () {\n return window.getours.fixedNavData;\n };\n\n var getHeightDataBySelector = function (selector) {\n return _.findWhere(window.getours.fixedNavData, { selector: selector });\n }\n\n var getTotalFixedNavHeight = function () {\n return _.reduce(window.getours.fixedNavData, function (memo, navDef) {\n return memo += navDef.height;\n }, 0);\n }\n\n var hasFixedStyle = function (selector) {\n var el = document.querySelector(selector);\n if (el) {\n var elStyles = window.getComputedStyle(el);\n var computedPosition = elStyles.getPropertyValue('position');\n var computedDisplay = elStyles.getPropertyValue('display');\n if (computedPosition === 'fixed' && computedDisplay !== 'none') {\n return true;\n }\n }\n\n return false;\n }\n\n // Return an object exposing the public items\n return {\n initialize: initializeObserver,\n getHeights: getHeightData,\n getHeightBySelector: getHeightDataBySelector,\n getTotalFixedNavHeight: getTotalFixedNavHeight\n };\n}())","'use strict'\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name fixedTitleBar\n * @description Initializes a fixed title bar that activates on scroll\n **/\n\n // Needs only be initialized once per page\n var initialize = function (options) {\n var $body = $('body');\n var contentType = $body.attr('data-doctype');\n\n if (options && Array.isArray(options.disabledContentTypes) && contentType && options.disabledContentTypes.includes(contentType)) {\n return;\n }\n\n $(window).on('scroll', function (e) {\n if ($(window).scrollTop() > 50) {\n $body.addClass('has-fix-strip');\n } else {\n $body.removeClass('has-fix-strip');\n }\n });\n };\n\n // Return an object exposing the public items\n return {\n initialize: initialize\n };\n}())","'use strict'\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name formSubmissionHandler\n * @description Handles form submission behavior including debouncing, submit button animations, and conversion tracking.\n * Options like:\n {\n enableAnimations = true,\n enableDebouncing = true\n };\n **/\n\n // Needs only be initialized once per page\n var initialize = function (optionOverrides) {\n var defaultOptions = {\n enableAnimations: true,\n enableDebouncing: true\n };\n optionOverrides = optionOverrides || {};\n var options = $.extend({}, defaultOptions, optionOverrides);\n\n registerCustomSubmitEvents();\n\n // animate and debounce regular contour forms\n var $regularSubmitButtons = $('input[type=\"submit\"]:not([proxy-submit-for])');\n $regularSubmitButtons.on('click', function () {\n var $submitButton = $(this);\n var $form = $submitButton.closest('form');\n\n var isContourForm = $form.parent().hasClass('umbraco-forms-form');\n\n if (options.enableAnimations) {\n animateSubmitButton($submitButton, $form);\n }\n \n if (!isContourForm && options.enableDebouncing) {\n debounceForm($submitButton, $form);\n }\n });\n\n // animate and debounce proxy submit button forms\n var $proxySubmitButtons = $('input[type=\"submit\"][proxy-submit-for]');\n $proxySubmitButtons.on('click', function () {\n var $submitButton = $(this);\n var proxyFormWrapperSelector = $submitButton.attr('proxy-submit-for');\n var $form = $(proxyFormWrapperSelector + ' form');\n if ($form.length > 0) {\n if (options.enableAnimations) {\n animateSubmitButton($submitButton, $form);\n }\n \n if (options.enableDebouncing) {\n debounceForm($submitButton, $form);\n }\n \n trySubmitProxyForm($form);\n }\n }); \n };\n\n var animateSubmitButton = function($submitButton, $form) {\n $submitButton.addClass('clicked');\n\n if ($form.length > 0) {\n $form.validate();\n if ($form.valid()) {\n setTimeout(function () {\n $submitButton.removeClass(\"clicked\");\n $submitButton.addClass(\"validate\");\n }, 1000);\n } else {\n $submitButton.removeClass(\"clicked\");\n }\n }\n }\n\n var debounceForm = function($submitButton, $form) {\n $form.on('submit', function () {\n if ($form.length > 0) {\n $form.validate();\n if ($form.valid()) {\n $submitButton.attr('disabled', 'disabled');\n } else {\n $submitButton.removeAttr('disabled', 'disabled');\n }\n }\n });\n }\n\n var trySubmitProxyForm = function($form) {\n if ($form.length > 0) {\n $form.validate();\n if ($form.valid()) {\n $form.find('input[type=\"submit\"]').click();\n }\n }\n }\n\n // Fire custom event when an UmbracoForm is successfully submitted\n // This allows other JS to attach to successful umbraco form submissions\n var registerCustomSubmitEvents = function () {\n $(\".umbraco-forms-form input[type=submit]\").not(\".cancel\").click(function (e) {\n var self = $(this);\n var frm = self.closest(\"form\");\n frm.validate();\n if (frm.valid()) {\n var getoursFormSubmission = new Event('getours-form-submission');\n frm[0].dispatchEvent(getoursFormSubmission);\n }\n });\n }\n\n // Return an object exposing the public items\n return {\n initialize: initialize\n };\n\n}())","'use strict'\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name heroSlider\n * @description Initializes hero slider\n **/\n\n // Needs only be initialized once per page\n var initializeHeroSliders = function () {\n var $heroSlider = $('#hero-sequence');\n if ($heroSlider.length > 0) {\n var heroSequence = initializeHomeBannerSlider($heroSlider);\n if (heroSequence) {\n var $slides = $heroSlider.find('.slide');\n var $sliderVideos = $slides.find('video');\n initializeHomeBannerVideo($sliderVideos);\n\n // Must implement manual \"pause on hover\" functionality.\n // Need to make sure that we don't start autoplay when\n // a video is playing\n $heroSlider.on({\n mouseenter: function () {\n var $this = $(this);\n var $activeSlide = $this.find('.seq-item.seq-in');\n var hasPlayingVideo = $activeSlide.find('video.playing').length > 0;\n if (!hasPlayingVideo && !heroSequence.isAutoPlayPaused) {\n heroSequence.autoPlay.pause();\n }\n },\n mouseleave: function () {\n var $this = $(this);\n var $activeSlide = $this.find('.seq-item.seq-in');\n var hasPlayingVideo = $activeSlide.find('video.playing').length > 0;\n if (!hasPlayingVideo && heroSequence.isAutoPlayPaused) {\n heroSequence.autoPlay.unpause();\n }\n }\n });\n\n // Whenever a transition ends (manual or autplay) restart all video states\n heroSequence.animationEnded = resetVideoState.bind(null, $sliderVideos);\n\n $sliderVideos.on('play', function () {\n var $this = $(this);\n heroSequence.autoPlay.pause();\n $this.addClass('playing');\n });\n\n $sliderVideos.on('stop ended', function () {\n var $this = $(this);\n if (!isInFullScreen()) {\n heroSequence.next();\n if (!heroSequence.isMouseOver) {\n heroSequence.autoPlay.unpause();\n }\n }\n\n $this.removeClass('playing');\n });\n }\n\n }\n };\n\n function initializeHomeBannerVideo($videos) {\n var $videoContainers = $videos.closest('.video-slide');\n $videoContainers.each(function () {\n var $this = $(this);\n $this.on('click', function () {\n var $videoWrapper = $this.find('.hero-banner-video-wrapper');\n var bgColor = $videoWrapper.attr('data-bg-color');\n if (bgColor && bgColor.length > 0) {\n $videoWrapper.css('background-color', bgColor);\n }\n\n var $video = $videoWrapper.find('video');\n $this.addClass('activated');\n $video.show().trigger('play');\n });\n });\n }\n\n function initializeHomeBannerSlider($heroSlider) {\n if ($heroSlider.length > 0) {\n var hasMultipleSlides = $heroSlider.find('.seq-item').length > 1;\n if (hasMultipleSlides) {\n return sequence($heroSlider[0], {\n autoPlay: true,\n autoPlayInterval: 5000,\n autoPlayPauseOnHover: false,\n pagination: '#hero-sequence .hero-seq-pagination',\n nextButton: true,\n prevButton: true,\n animateCanvas: false,\n fadeStepWhenSkipped: true\n });\n }\n }\n\n return null;\n }\n\n function resetVideoState($videos) {\n $videos.each(function () {\n var $this = $(this);\n var $videoContainer = $this.closest('.video-slide');\n if ($videoContainer.length > 0) {\n $videoContainer.removeClass('activated');\n }\n $this.hide();\n\n this.currentTime = 0;\n this.pause();\n });\n }\n\n function isInFullScreen() {\n return (document.fullscreenElement && document.fullscreenElement !== null) ||\n (document.webkitFullscreenElement && document.webkitFullscreenElement !== null) ||\n (document.mozFullScreenElement && document.mozFullScreenElement !== null) ||\n (document.msFullscreenElement && document.msFullscreenElement !== null);\n }\n\n // Return an object exposing the public items\n return {\n initialize: initializeHeroSliders\n };\n\n}())","const fixedNavObserver = require('../../components/fixedNavObserver/fixedNavObserver.js');\nconst featureDetection = require('../../components/featureDetection/featureDetection.js');\n'use strict'\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name layoutJumpLinks\n * @description Initializes fixed jump links for the layout rows that activates on scroll\n **/\n\n // Needs only be initialized once per page\n // fix the tour jump nav strip on scroll\n var initialize = function() {\n var $body = $('body');\n \n var $submenuJumpLinks = $('.submenu-jump-links-section');\n if (!$submenuJumpLinks || $submenuJumpLinks.length === 0) {\n return;\n }\n\n var initialOffset = $submenuJumpLinks.offset().top;\n\n var $tourJumpLinks = $('.submenu-link');\n createJumpLinks($tourJumpLinks, initialOffset, $body);\n setActiveSection();\n\n fixSectionNav();\n setActiveSection();\n\n var scrollPos = 0;\n document.addEventListener('scroll', function () {\n var scrollDir = document.body.getBoundingClientRect().top > scrollPos ? 'up' : 'down';\n scrollPos = document.body.getBoundingClientRect().top;\n fixSectionNav(scrollDir);\n setActiveSection();\n }, featureDetection.isPassiveSupported() ? { passive: true } : false);\n }\n\n function createJumpLinks($jumpLinks, initialOffset, $pageWrapper) {\n var $variantContainer = $('.submenu-jump-link-bar');\n var variantContainerHeight = $variantContainer.height();\n console.info(\"Jump Links: \", $jumpLinks);\n $jumpLinks.on('click', function () {\n window.location.hash = this.hash;\n let $target = $(this.hash);\n $target = $target.length ? $target : $('[name=' + this.hash.slice(1) + ']');\n\n if ($target.length) {\n // Get fixed header height\n // must simulate future fixed header height before determining scroll position\n $pageWrapper.addClass('skip-animate');\n $pageWrapper.addClass('has-submenu-jump-links-section');\n\n var headerHeight = fixedNavObserver.getTotalFixedNavHeight();\n\n $(window).scrollTop($target.offset().top - headerHeight);\n\n $pageWrapper.removeClass('skip-animate');\n if ($(window).scrollTop() > initialOffset - variantContainerHeight) {\n $pageWrapper.addClass('has-submenu-jump-links-section');\n } else {\n $pageWrapper.removeClass('has-submenu-jump-links-section');\n }\n\n setActiveSection();\n return false;\n }\n });\n }\n\n function fixSectionNav(scrollDir) {\n var pageTopLayout = document.getElementsByClassName('layout-section')[0];\n var sectionJumpLinks = document.getElementById('submenu-jump-links');\n\n var headerNavWrapperData = fixedNavObserver.getHeightBySelector('.header-and-nav-wrapper');\n\n // Make sure to check if we are scrolling up to prevent jitter as we cross the boundary and padding is applied to the body\n if (scrollDir === 'down' && !document.body.classList.contains('has-submenu-jump-links-section') && sectionJumpLinks.getBoundingClientRect().top <= headerNavWrapperData.height) {\n document.body.classList.add('has-submenu-jump-links-section');\n } else if (scrollDir === 'up' && document.body.classList.contains('has-submenu-jump-links-section') && pageTopLayout.getBoundingClientRect().bottom > headerNavWrapperData.height) {\n document.body.classList.remove('has-submenu-jump-links-section');\n }\n }\n\n function setActiveSection() {\n const fixedHeaderHeight = fixedNavObserver.getTotalFixedNavHeight();\n const layoutRowSections = document.getElementsByClassName('layout-section');\n\n const desktopJumpLinks = document.querySelectorAll('.submenu-jump-links-section .submenu-link');\n\n const activeSection = _.find(layoutRowSections, function (vs) {\n const distance = vs.getBoundingClientRect().bottom - fixedHeaderHeight - 2; // add a couple of pixels of buffer to prevent off by 1 error\n return distance >= 0;\n });\n\n if (activeSection) {\n const sectionId = activeSection.id;\n for (var i = 0; i < desktopJumpLinks.length; i++) {\n const jumpLink = desktopJumpLinks[i];\n if (jumpLink.getAttribute('href') == '#' + sectionId) {\n jumpLink.classList.add('active');\n }\n else {\n jumpLink.classList.remove('active');\n }\n }\n }\n }\n\n // Return an object exposing the public items\n return {\n initialize: initialize\n };\n}())","'use strict'\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name phoneLocalizer\n * @description Localizes phone numbers site wide\n **/\n\n var configurePhoneNumbers = function () {\n var $phoneOverrideEl = $('meta[name=\"phone-number-override\"]');\n var $phoneNumberTextEls = $('[data-phone-number-text]');\n var $phoneNumberHrefEls = $('[data-phone-number-link]');\n if ($phoneOverrideEl.length > 0 && $phoneOverrideEl.attr('content')) {\n var phoneNumberOverride = $phoneOverrideEl.attr('content');\n\n $phoneNumberTextEls.text(phoneNumberOverride);\n $phoneNumberHrefEls.attr('href', 'tel:' + phoneNumberOverride.replace(/-/g, ''));\n } else {\n $phoneNumberTextEls.each(function (idx, phoneEl) {\n localizePhoneNumber($(phoneEl));\n });\n $phoneNumberHrefEls.each(function (idx, phoneHrefEl) {\n localizePhoneNumber($(phoneHrefEl));\n });\n }\n }\n\n // Get the cookie.\n // If the cookie doesn’t exist, get the query string.\n // Set the cookie for one day. \n // return the default phone number.\n function localizePhoneNumber($phoneNumberEl) {\n var isTelAttrEl = $phoneNumberEl[0].hasAttribute('data-phone-number-link');\n\n var originCookie = $.cookie('GETOrigin');\n\n var localToPhoneDict = {};\n localToPhoneDict['AARP'] = '1-866-847-3858';\n localToPhoneDict['TZ'] = '1-800-889-7404';\n localToPhoneDict['MGYB'] = '1-888-522-3950';\n if ($phoneNumberEl.is(\"a\")) {\n var ch = $phoneNumberEl.children();\n if (ch.count < 1) {\n localToPhoneDict['DEFAULT'] = ch[1] || \"1-877-622-9109\";\n } else {\n localToPhoneDict['DEFAULT'] = \"1-877-622-9109\";\n }\n\n } else {\n localToPhoneDict['DEFAULT'] = $phoneNumberEl.text() || \"1-877-622-9109\";\n }\n\n if (!originCookie) {\n if (isTelAttrEl) {\n if (typeof localToPhoneDict['DEFAULT'] === \"object\") {\n $phoneNumberEl.attr('href', 'tel:' + localToPhoneDict['DEFAULT'].innerHTML.replace(/-/g, ''));\n } else {\n $phoneNumberEl.attr('href', 'tel:' + localToPhoneDict['DEFAULT'].replace(/-/g, ''));\n }\n\n } else {\n $phoneNumberEl.text(localToPhoneDict['DEFAULT']);\n }\n\n return;\n }\n\n var cookieValue = originCookie.split('=')[1];\n\n if (cookieValue && localToPhoneDict['AARP']) {\n if (cookieValue.indexOf('AARP') > -1) {\n if (isTelAttrEl) {\n $phoneNumberEl.attr('href', 'tel:' + localToPhoneDict['AARP'].replace(/-/g, ''));\n } else {\n $phoneNumberEl.text(localToPhoneDict['AARP']);\n }\n return;\n }\n }\n\n if (cookieValue && localToPhoneDict['TZ']) {\n if (cookieValue.indexOf('TZ') == 0) {\n if (isTelAttrEl) {\n $phoneNumberEl.attr('href', 'tel:' + localToPhoneDict['TZ'].replace(/-/g, ''));\n } else {\n $phoneNumberEl.text(localToPhoneDict['TZ']);\n }\n\n return;\n }\n }\n\n if (cookieValue) {\n switch (cookieValue.charAt(0)) {\n case 'M':\n case 'G':\n case 'Y':\n case 'B':\n if (isTelAttrEl) {\n $phoneNumberEl.attr('href', 'tel:' + localToPhoneDict['MGYB'].replace(/-/g, ''));\n } else {\n $phoneNumberEl.text(localToPhoneDict['MGYB']);\n }\n return;\n }\n }\n\n if (isTelAttrEl) {\n $phoneNumberEl.attr('href', 'tel:' + localToPhoneDict['DEFAULT'].replace(/-/g, ''));\n } else {\n $phoneNumberEl.text(localToPhoneDict['DEFAULT']);\n }\n }\n\n // Return an object exposing the public items\n return {\n applyLocalization: configurePhoneNumbers\n };\n}())","'use strict'\n\nvar conversionTracking = require('../conversionTracking/conversionTracking.js');\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name simplePopup\n * @description Initializes simple popups\n **/\n\n // Needs only be initialized once per page\n var initializeSimplePopups = function (selector, optionOverrides) {\n\n var defaultOptions = {\n maxWidth: 923,\n enableConversionTracking: false\n };\n optionOverrides = optionOverrides || {};\n var options = $.extend({}, defaultOptions, optionOverrides);\n\n var $cta = $(selector);\n if ($cta.length > 0) {\n $cta.fancybox({\n padding: [0],\n fitToView: true,\n scrolling: 'no',\n maxWidth: options.maxWidth,\n autoSize: true,\n autoResize: true,\n tpl: {\n closeBtn: ''\n },\n closeClick: false,\n openEffect: 'none',\n closeEffect: 'none',\n afterLoad: function (context, contextAfter) {\n if (options.enableConversionTracking) {\n var $form = $(context.href + ' form');\n if ($form && $form.length > 0) {\n conversionTracking.pushFormEvent($form, 'popup opened');\n }\n }\n },\n afterClose: function (context, contextAfter) {\n \n if (options.enableConversionTracking) {\n var $form = $(context.href + ' form');\n if ($form && $form.length > 0) {\n // For an async form, the form will be gone after submit and we will not fire this event.\n // In that case, it is not as important to track \"popup closed\"\n conversionTracking.pushFormEvent($form, 'popup closed');\n }\n }\n }\n });\n }\n };\n\n \n\n // Return an object exposing the public items\n return {\n initialize: initializeSimplePopups\n };\n\n}())","'use strict'\n\nmodule.exports = (function () {\n var autocomplete = require('autocompleter');\n /**\n * @ngdoc method\n * @name siteSearch\n * @description Initializes site search\n **/\n\n // Needs only be initialized once per page\n var initializeSiteSearch = function (inputId) {\n var searchResults = window.searchAutocomplete;\n\n var input = document.getElementById(inputId);\n var form = input.closest('form');\n var overlay = form.querySelector('.dropdown-overlay');\n var closeButton = form.querySelector('.close');\n\n if (typeof (form) !== \"undefined\") {\n input.addEventListener(\"focus\", () => {\n form.classList.add('open');\n });\n\n closeButton.addEventListener('click', () => {\n form.classList.remove('open');\n });\n\n overlay.addEventListener('click', () => {\n form.classList.remove('open');\n });\n\n input.addEventListener('keyup', () => {\n if (!input.value.length) {\n form.classList.add('open');\n }\n });\n }\n\n autocomplete({\n input: input,\n fetch: function (text, update) {\n form.classList.remove('open');\n text = text.toLowerCase();\n // you can also use AJAX requests instead of preloaded data\n var suggestions = searchResults.filter(n => _.some(n.label.toLowerCase().split(' '), w => w.startsWith(text)));\n update(suggestions);\n },\n onSelect: function (item) {\n window.location = item.value;\n }\n });\n };\n\n\n\n // Return an object exposing the public items\n return {\n initialize: initializeSiteSearch\n };\n\n}())","'use strict'\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name slickSliderHelper\n * @description Manage slick sliders through this helper\n **/\n\n // Initializes a slick slider\n // Supports optional disabling and reenabling of the slider when transitioning back and forth between desktop and mobile\n // Use settings \"unslick-above\" and \"unslick-below\" like:\n //\n // responsive: [\n // {\n // breakpoint: 991,\n // settings: \"unslick-above\"\n // },\n // {\n // breakpoint: 768,\n // settings: {\n // slidesToShow: 1,\n // }\n // }\n // ]\n var initialize = function(containerSelector, options) {\n if ($(containerSelector).length === 0) {\n return;\n }\n\n // supports a single upper and lower breakpoint for unslicking\n const unslickBelowBreakpoint = _.find(options.responsive, function (obj) {\n return obj.settings === 'unslick-below' && Number.isInteger(obj.breakpoint);\n });\n\n const unslickAboveBreakpoint = _.find(options.responsive, function (obj) {\n return obj.settings === 'unslick-above' && Number.isInteger(obj.breakpoint);\n });\n\n const hasUpperBreakpoint = unslickAboveBreakpoint && Number.isInteger(unslickAboveBreakpoint.breakpoint);\n const hasLowerBreakpoint = unslickBelowBreakpoint && Number.isInteger(unslickBelowBreakpoint.breakpoint);\n\n const windowWidth = $(window).width();\n const violatesUpperBound = hasUpperBreakpoint && windowWidth > unslickAboveBreakpoint.breakpoint;\n const violatesLowBound = hasLowerBreakpoint && windowWidth <= unslickBelowBreakpoint.breakpoint;\n if (!violatesUpperBound && !violatesLowBound) {\n $(containerSelector).not('.slick-initialized').slick(options);\n }\n\n if (hasUpperBreakpoint || hasLowerBreakpoint) {\n $(window).on('resize', function () {\n const windowWidth = $(window).width();\n $(containerSelector).each(function () {\n let $this = $(this);\n const isInitialized = $this.hasClass('slick-initialized');\n const violatesUpperBound = hasUpperBreakpoint && windowWidth > unslickAboveBreakpoint.breakpoint;\n const violatesLowBound = hasLowerBreakpoint && windowWidth <= unslickBelowBreakpoint.breakpoint;\n if (isInitialized && (violatesUpperBound || violatesLowBound)) {\n $this.slick('unslick');\n }\n else if (!isInitialized && !violatesUpperBound && !violatesLowBound) {\n $this.slick(options);\n }\n })\n });\n }\n }\n\n // Return an object exposing the public items\n return {\n initialize: initialize\n };\n}())","'use strict'\n\nmodule.exports = (function () {\n /**\n * @ngdoc method\n * @name initialize\n * @description initializes accessibilty extensions to bootstrap 3 data-toggle=\"tab\"\n **/\n\n var initialize = function () {\n\n var tabLists = document.querySelectorAll('[role=\"tablist\"]');\n tabLists.forEach(function (tabList) {\n var tabNavItems = tabList.querySelectorAll('[data-toggle=\"tab\"]');\n tabNavItems.forEach(function (el) {\n el.addEventListener('click', function () {\n tabNavItems.forEach(function (navItem) {\n navItem.setAttribute('aria-selected', navItem === el);\n })\n })\n });\n });\n };\n\n // Return an object exposing the public items\n return {\n initialize: initialize\n };\n}())","const namespace = require('./namespace.js');\nconst fixedTitleBar = require('../components/fixedTitleBar/fixedTitleBar.js');\nconst fixedNavObserver = require('../components/fixedNavObserver/fixedNavObserver.js');\nconst layoutJumpLinks = require('../components/layoutJumpLinks/layoutJumpLinks.js');\nconst phoneLocalizer = require('../components/phoneLocalizer/phoneLocalizer.js');\nconst accordions = require(\"../components/accordion/accordion.js\");\nconst tabExtensions = require(\"../components/tabExtensions/tabExtensions.js\");\nconst heroSlider = require('../components/heroSlider/heroSlider.js');\nconst simplePopup = require('../components/simplePopup/simplePopup.js');\nconst siteSearch = require('../components/siteSearch/siteSearch.js');\nconst conversionTracking = require('../components/conversionTracking/conversionTracking.js');\nconst formSubmissionHandler = require('../components/formSubmissionHandler/formSubmissionHandler.js');\nconst asyncForms = require('../components/asyncForms/asyncForms.js');\nconst favorites = require('../components/favorites/favorites.js');\nconst fancyBoxBySize = require('../components/fancyBoxBySize/fancyBoxBySize.js');\nconst countdownTimer = require('../components/countdownTimer/countdownTimer.js');\n\n// Event Handlers\n// new component architecture\nfunction _registerEventHandlers() {\n\n document.addEventListener('fixed-nav-resize-observed', function (e) {\n // on height change, push body down, so the page does not slide up behind the fixed nav\n document.body.style.paddingTop = e.detail + 'px';\n });\n\n fixedNavObserver.initialize();\n\n // expose this module for legacy purposes\n window.configurePhoneNumbers = phoneLocalizer.applyLocalization;\n\n $(document).ready(function () {\n fixedTitleBar.initialize({ disabledContentTypes: ['tour', 'cruise'] });\n layoutJumpLinks.initialize({ disabledContentTypes: ['tour', 'cruise'] });\n\n // Setup components\n \n accordions.initialize();\n phoneLocalizer.applyLocalization();\n \n tabExtensions.initialize();\n heroSlider.initialize();\n\n // Initialize the predictive site search for desktop\n siteSearch.initialize('search_text');\n // Initialize the predictive site search for mobile\n siteSearch.initialize('mobile_search_text');\n simplePopup.initialize('.simple-popup-trigger');\n simplePopup.initialize('.form-popup-trigger', { maxWidth: 612, enableConversionTracking: true } );\n\n conversionTracking.initialize();\n\n formSubmissionHandler.initialize();\n asyncForms.initialize();\n\n // Favorites (aka: Wishlist)\n favorites.initializeFavoriteButtons('[data-like-toggle]');\n favorites.setFavoriteIcons();\n\n fancyBoxBySize.initialize(document);\n\n countdownTimer.initialize('.countdown-timer-item');\n\n //BACK TO TOP\n var bttThreshold = 1040;\n var $btt = $('a.backToTop');\n if ($btt && $btt.length > 0) {\n $(window).scroll(function () {\n var $this = $(this);\n if ($this.scrollTop() > bttThreshold && !$btt.hasClass('btt-in')) {\n $btt.addClass('btt-in');\n } else if ($this.scrollTop() <= bttThreshold && $btt.hasClass('btt-in')) {\n $btt.removeClass('btt-in');\n }\n });\n }\n });\n}\n_registerEventHandlers();\n\n// old non-architecture with just a bunch of JS swimming together\n; (function ($) {\n\n $(document).ready(function () {\n setupVacationFinder();\n //setupTopNav();\n //setupMobileNav();\n //topStripScroll();\n formatGridFeatureLinks();\n\n // configureSequenceSliders\n configureFlashSaleSlider();\n\n // reflect live chat to each live chat reflection destination\n reflectLiveChat();\n\n // setup dropdowns with custom styling\n setupSelectBoxes('.chosen-select');\n setupSelectBoxes('.home-slider-destination-select');\n setupSelectBoxes('.footer-destination-select', '80%');\n setupSelectBoxes('.vacation-finder-select', '97%');\n setupSelectBoxes('.popup-select', '100%');\n //setupSelectBoxes('.request-quote-select', '32%');\n\n // fix slimmage/slimsy on bootstrap nav-tabs\n $('.nav.nav-tabs a[data-toggle=\"tab\"]').on('shown.bs.tab', function (e) {\n window.slimmage.checkResponsiveImages();\n });\n\n // make sure to trim any trailing commas to prevent jQuery errors when no sorting options are present\n var pageHash = location.hash ? location.hash.replace(/,$/, \"\") : '';\n if (pageHash !== '') {\n var $hashEl = $(pageHash);\n if ($hashEl && $hashEl.length >= 1) {\n\n $('html,body').animate({\n scrollTop: $(location.hash).offset().top\n }, 'slow');\n }\n }\n\n $('#SEOReadMore').on('click', function () {\n\n $(\".summaryContent\").toggleClass(\"limitSize\");\n\n //$(\".summaryContent\").toggle(function () {\n // $(this).animate({ height: 270 }, auto);\n //});\n });\n\n // should show any getorigin-inv contour fields when GETOrigin cookie is not set. Hide them otherwise\n var originFields = $('.getorigin-inv');\n var originCookie = $.cookie('GETOrigin');\n if (!originCookie || originCookie.indexOf('Source') !== 0) {\n originFields.show();\n } else {\n originFields.hide();\n }\n\n advancedSearchCollapse();\n bindCookieWarningHide();\n });\n\n function bindCookieWarningHide() {\n var $cookieWarn = $('.cookie-warn');\n var cookieWarnCookie = $.cookie(\"GETCookiePolicy\");\n if (cookieWarnCookie == 1) {\n return;\n } else {\n var delayTime = parseInt($cookieWarn.attr(\"popup-delay\"));\n window.setTimeout(function () {\n $cookieWarn.show();\n }, delayTime);\n }\n\n $(\".close-cookie-warn\").click(function () {\n hideCookieWarning();\n });\n }\n function hideCookieWarning() {\n //$(\".topStrip\").addClass(\"hide-cookie-warn\");\n $(\".cookie-warn\").hide();\n $(\"header\").css(\"margin-top\", \"0\");\n $(\".topStrip\").css(\"margin-top\", \"0\");\n $.cookie(\"GETCookiePolicy\", 1, { domain: 'getours.com', path: '/', expires: 1 * 356 }); //the expires math is there for extensibility and clarity\n }\n\n function configureFlashSaleSlider() {\n var $flashSaleSequence = $('.flash-sale-sequence');\n if ($flashSaleSequence.length > 0) {\n $.each($flashSaleSequence, function (fidx, flashSequenceEl) {\n var $flashSequence = $(flashSequenceEl);\n var hasMultipleSlides = $flashSequence.find('.seq-item').length > 1;\n if (hasMultipleSlides) {\n sequence(flashSequenceEl, {\n autoPlay: true,\n autoPlayInterval: 5000,\n pagination: '.zzzClassThatDoesntExistzzz', //\"pagination: false\" causes js errors. Must pass selector to non-existent element\n nextButton: false,\n prevButton: false,\n animateCanvas: false\n });\n }\n });\n }\n }\n\n function setupSelectBoxes(selector, widthAttr) {\n var $chosenSelect = $(selector);\n var $chosenForm = $chosenSelect.closest('form');\n $chosenForm.find('select[data-val-required]').prop('required', true);\n $chosenSelect.change(function () {\n var $this = $(this);\n if ($this.val() !== '') {\n $this.removeClass('input-validation-error');\n $this.siblings('.field-validation-error')\n .removeClass('field-validation-error')\n .addClass('field-validation-valid')\n .empty();\n }\n });\n\n if (widthAttr) {\n $chosenSelect.chosen({\n disable_search: true,\n width: widthAttr\n });\n } else {\n $chosenSelect.chosen({\n disable_search: true\n });\n }\n\n var chosenContainers = $chosenSelect.siblings('.chosen-container');\n chosenContainers.each(function () {\n var $this = $(this);\n var chosenDrop = $this.find('.chosen-drop');\n var chosenSingle = $this.find('.chosen-single');\n $this.on('mouseover', function () {\n if (isOnBottomHalfOfPage(chosenSingle)) {\n if (chosenDrop.css('top') !== 'auto') {\n chosenDrop.css('top', 'auto');\n chosenDrop.css('bottom', '100%');\n chosenDrop.css('border-radius', '4px 4px 0 0');\n }\n } else {\n if (chosenDrop.css('bottom') !== 'auto') {\n chosenDrop.css('bottom', 'auto');\n chosenDrop.css('top', '100%');\n chosenDrop.css('border-radius', '0 0 4px 4px');\n }\n }\n });\n });\n }\n\n\n function isOnBottomHalfOfPage(elem) {\n var docViewTop = $(window).scrollTop();\n var docViewBottom = docViewTop + $(window).height();\n var docViewMiddle = (docViewTop + docViewBottom) / 2;\n\n var elemTop = elem.offset().top;\n\n return elemTop >= docViewMiddle;\n }\n\n // Pull the live chat from the header and copy it to each reflection\n function reflectLiveChat() {\n var liveChatDivs = $('.liveChat');\n if (liveChatDivs.length <= 0) {\n return;\n }\n\n var liveChatImg = liveChatDivs.find('.lpStaticButtonTR img');\n if (liveChatImg.length != 1) {\n return;\n }\n\n var liveChatReflections = $('.liveChatReflection');\n $.each(liveChatReflections, function (idx, val) {\n var $this = $(this);\n $this.append('');\n\n $this.on('click', function (e) {\n liveChatImg.click();\n });\n });\n }\n\n function setupVacationFinder() {\n var vacationFinder = $('.vacationFinder');\n var vacationFinderForm = $('.vacationFinderForm');\n\n vacationFinder.click(function (e) {\n e.preventDefault();\n vacationFinder.toggleClass('open');\n vacationFinderForm.toggleClass('open');\n });\n }\n\n function formatGridFeatureLinks() {\n var $featureLinkWrapper = $('.feature-links');\n if ($featureLinkWrapper.length > 0) {\n var $featureLinks = $featureLinkWrapper.children('li');\n if ($featureLinks.length > 0) {\n // Fix dividers. Remove dividers when line breaks\n trimFeatureLinkDividers($featureLinks);\n $(window).on('resize', function () {\n trimFeatureLinkDividers($featureLinks);\n });\n }\n }\n }\n\n // use the y-offset of the feature links to determine if they have wrapped or not\n // use that information to add/remove the \"no-divider\" class and fix the divider problem\n function trimFeatureLinkDividers($featureLinks) {\n for (var i = 1; i < $featureLinks.length; i++) {\n var $previousFeatureLink = $($featureLinks[i - 1]);\n var $currentFeatureLink = $($featureLinks[i]);\n if ($previousFeatureLink.hasClass('no-divider')) {\n if (Math.round($previousFeatureLink.offset().top) === Math.round($currentFeatureLink.offset().top)) {\n $previousFeatureLink.removeClass('no-divider');\n }\n } else {\n if (Math.round($previousFeatureLink.offset().top) !== Math.round($currentFeatureLink.offset().top)) {\n $previousFeatureLink.addClass('no-divider');\n }\n }\n }\n }\n\n function advancedSearchCollapse() {\n $(\".advancedSearchFiltersToggle\").click(function () {\n $this = $(this);\n $icon = $this.find(\"i\");\n $advancedFilters = $('.' + $this.attr('data-target'));\n $advancedFilters.each(function (i, section) {\n var $section = $(section);\n if ($section.hasClass(\"collapse\")) {\n $section.addClass(\"collapse.show\");\n $section.removeClass(\"collapse\");\n\n $icon.addClass(\"fa-minus\");\n $icon.removeClass(\"fa-plus\");\n } else {\n $section.removeClass(\"collapse.show\");\n $section.addClass(\"collapse\");\n\n $icon.removeClass(\"fa-minus\");\n $icon.addClass(\"fa-plus\");\n }\n });\n });\n }\n\n})(jQuery);","(function (getours) {\n\n // Global namespaces defined\n getours.Models = {};\n getours.Services = {};\n getours.Components = {};\n\n}(window.getours = window.getours || {}));"]}