{"version":3,"sources":["webpack://stoneridgeresidences.com/./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/advance-string-index.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/an-object.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/array-includes.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/classof-raw.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/create-property-descriptor.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/descriptors.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/document-create-element.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/engine-is-node.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/engine-user-agent.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/engine-v8-version.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/enum-bug-keys.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/export.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/fails.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/get-built-in.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/get-substitution.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/global.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/has.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/hidden-keys.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/ie8-dom-define.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/indexed-object.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/inspect-source.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/internal-state.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/is-forced.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/is-object.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/is-pure.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/native-symbol.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/native-weak-map.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/object-define-property.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/object-keys-internal.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/own-keys.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/path.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/redefine.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/regexp-exec.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/regexp-flags.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/require-object-coercible.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/set-global.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/shared-key.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/shared-store.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/shared.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/string-multibyte.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/to-absolute-index.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/to-indexed-object.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/to-integer.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/to-length.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/to-object.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/to-primitive.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/uid.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://stoneridgeresidences.com/./node_modules/core-js/internals/well-known-symbol.js","webpack://stoneridgeresidences.com/./node_modules/core-js/modules/es.regexp.exec.js","webpack://stoneridgeresidences.com/./node_modules/core-js/modules/es.string.replace.js","webpack://stoneridgeresidences.com/./node_modules/countup.js/dist/countUp.min.js","webpack://stoneridgeresidences.com/./node_modules/custom-event-polyfill/polyfill.js","webpack://stoneridgeresidences.com/./node_modules/selector-set/selector-set.next.js","webpack://stoneridgeresidences.com/./node_modules/delegated-events/dist/index.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Components/arrow.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Components/body.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Components/group.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Components/head.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Components/option.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Components/root.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Components/value.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Config/Behavior.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Config/Callbacks.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Config/ClassNames.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Config/Config.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Easydropdown/Easydropdown.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Easydropdown/EasydropdownFacade.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Easydropdown/Timers.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Easydropdown/cache.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Easydropdown/factory.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Constants/KeyCodes.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Constants/Selectors.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/EventBinding.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Handlers/handleBodyClick.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Handlers/handleBodyMousedown.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Handlers/handleBodyMouseover.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Handlers/handleHeadClick.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Handlers/handleItemsListScroll.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Handlers/handleSelectBlur.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Handlers/handleSelectFocus.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Handlers/handleSelectInvalid.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Handlers/handleSelectKeydown.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Handlers/handleSelectKeydownDown.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Handlers/handleSelectKeydownUp.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Handlers/handleSelectKeypress.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/Handlers/handleWindowClick.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/bindEvents.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Events/getEventsList.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Renderer/Constants/AttributeChangeType.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Renderer/Constants/DomChangeType.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Renderer/Dom.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Renderer/PatchCommand.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Renderer/Renderer.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Renderer/domDiff.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Renderer/domPatch.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Shared/Polyfills/Element.matches.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Shared/Util/Constants/CollisionType.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Shared/Util/closestParent.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Shared/Util/composeClassName.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Shared/Util/createDomElementFromHtml.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Shared/Util/detectBodyCollision.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Shared/Util/dispatchOpen.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Shared/Util/getIsMobilePlatform.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Shared/Util/killSelectReaction.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Shared/Util/pollForSelectChange.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Shared/Util/pollForSelectMutation.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/Shared/Util/throttle.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/State/Constants/BodyStatus.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/State/Constants/ScrollStatus.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/State/Group.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/State/InjectedActions/closeOthers.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/State/InjectedActions/scrollToView.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/State/Option.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/State/State.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/State/StateManager.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/State/StateMapper.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/State/resolveActions.js","webpack://stoneridgeresidences.com/./node_modules/easydropdown/dist/index.js","webpack://stoneridgeresidences.com/./node_modules/flatpickr/dist/esm/types/options.js","webpack://stoneridgeresidences.com/./node_modules/flatpickr/dist/esm/l10n/default.js","webpack://stoneridgeresidences.com/./node_modules/flatpickr/dist/esm/utils/index.js","webpack://stoneridgeresidences.com/./node_modules/flatpickr/dist/esm/utils/dom.js","webpack://stoneridgeresidences.com/./node_modules/flatpickr/dist/esm/utils/formatting.js","webpack://stoneridgeresidences.com/./node_modules/flatpickr/dist/esm/utils/dates.js","webpack://stoneridgeresidences.com/./node_modules/flatpickr/dist/esm/index.js","webpack://stoneridgeresidences.com/./node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack://stoneridgeresidences.com/./node_modules/helpful-merge/dist/Config.js","webpack://stoneridgeresidences.com/./node_modules/helpful-merge/dist/Constants/ArrayStrategy.js","webpack://stoneridgeresidences.com/./node_modules/helpful-merge/dist/FluentMerge.js","webpack://stoneridgeresidences.com/./node_modules/helpful-merge/dist/Messages.js","webpack://stoneridgeresidences.com/./node_modules/helpful-merge/dist/deriveCustomTypeInstance.js","webpack://stoneridgeresidences.com/./node_modules/helpful-merge/dist/handleMergeError.js","webpack://stoneridgeresidences.com/./node_modules/helpful-merge/dist/index.js","webpack://stoneridgeresidences.com/./node_modules/helpful-merge/dist/merge.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/_rollupPluginBabelHelpers-6ccb1f64.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/core/utils.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/core/action-details.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/core/change-details.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/core/continuous-tail-details.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/core/holder.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/masked/base.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/masked/factory.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/masked/pattern/input-definition.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/masked/pattern/fixed-definition.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/masked/pattern/chunk-tail-details.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/masked/regexp.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/masked/pattern.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/masked/range.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/masked/date.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/controls/mask-element.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/controls/html-mask-element.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/controls/html-contenteditable-mask-element.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/controls/input.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/masked/enum.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/masked/number.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/masked/function.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/masked/dynamic.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/masked/pipe.js","webpack://stoneridgeresidences.com/./node_modules/imask/esm/index.js","webpack://stoneridgeresidences.com/./node_modules/js-cookie/src/js.cookie.js","webpack://stoneridgeresidences.com/./node_modules/jump.js/dist/jump.module.js","webpack://stoneridgeresidences.com/./node_modules/lg-thumbnail.js/dist/lg-thumbnail.js","webpack://stoneridgeresidences.com/./node_modules/lightgallery.js/dist/js/lightgallery.js","webpack://stoneridgeresidences.com/./node_modules/lodash/_Symbol.js","webpack://stoneridgeresidences.com/./node_modules/lodash/_baseGetTag.js","webpack://stoneridgeresidences.com/./node_modules/lodash/_baseTrim.js","webpack://stoneridgeresidences.com/./node_modules/lodash/_freeGlobal.js","webpack://stoneridgeresidences.com/./node_modules/lodash/_getRawTag.js","webpack://stoneridgeresidences.com/./node_modules/lodash/_objectToString.js","webpack://stoneridgeresidences.com/./node_modules/lodash/_root.js","webpack://stoneridgeresidences.com/./node_modules/lodash/_trimmedEndIndex.js","webpack://stoneridgeresidences.com/./node_modules/lodash/debounce.js","webpack://stoneridgeresidences.com/./node_modules/lodash/isObject.js","webpack://stoneridgeresidences.com/./node_modules/lodash/isObjectLike.js","webpack://stoneridgeresidences.com/./node_modules/lodash/isSymbol.js","webpack://stoneridgeresidences.com/./node_modules/lodash/now.js","webpack://stoneridgeresidences.com/./node_modules/lodash/throttle.js","webpack://stoneridgeresidences.com/./node_modules/lodash/toNumber.js","webpack://stoneridgeresidences.com/./node_modules/is-dom-node/dist/is-dom-node.es.js","webpack://stoneridgeresidences.com/./node_modules/tealight/dist/tealight.es.js","webpack://stoneridgeresidences.com/./node_modules/is-dom-node-list/dist/is-dom-node-list.es.js","webpack://stoneridgeresidences.com/./node_modules/rematrix/dist/rematrix.es.js","webpack://stoneridgeresidences.com/./node_modules/miniraf/dist/miniraf.es.js","webpack://stoneridgeresidences.com/./node_modules/scrollreveal/dist/scrollreveal.es.js","webpack://stoneridgeresidences.com/./node_modules/ssr-window/ssr-window.esm.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/autoplay/autoplay.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/utils/get-support.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/utils/get-device.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/utils/get-browser.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/modules/resize/resize.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/modules/observer/observer.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/events/onTouchStart.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/events/onTouchMove.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/events/onTouchEnd.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/events/onResize.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/events/onClick.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/events/onScroll.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/events/index.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/check-overflow/index.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/defaults.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/core-class.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/modular.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/events-emitter.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/update/index.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/update/updateSize.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/update/updateSlides.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/update/updateAutoHeight.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/update/updateSlidesOffset.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/update/updateSlidesProgress.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/update/updateProgress.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/update/updateSlidesClasses.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/update/updateActiveIndex.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/update/updateClickedSlide.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/translate/index.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/translate/getTranslate.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/translate/setTranslate.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/translate/minTranslate.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/translate/maxTranslate.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/translate/translateTo.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/transition/index.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/transition/setTransition.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/transition/transitionStart.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/transition/transitionEnd.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/slide/index.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/slide/slideTo.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/slide/slideToLoop.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/slide/slideNext.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/slide/slidePrev.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/slide/slideReset.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/slide/slideToClosest.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/slide/slideToClickedSlide.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/loop/index.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/loop/loopCreate.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/loop/loopFix.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/loop/loopDestroy.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/grab-cursor/index.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/grab-cursor/setGrabCursor.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/grab-cursor/unsetGrabCursor.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/manipulation/index.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/manipulation/appendSlide.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/manipulation/prependSlide.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/manipulation/addSlide.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/manipulation/removeSlide.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/manipulation/removeAllSlides.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/breakpoints/index.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/breakpoints/setBreakpoint.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/breakpoints/getBreakpoint.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/classes/index.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/classes/addClasses.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/classes/removeClasses.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/images/index.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/images/loadImage.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/core/images/preloadImages.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/effect-fade/effect-fade.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/navigation/navigation.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/pagination/pagination.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/components/thumbs/thumbs.js","webpack://stoneridgeresidences.com/./node_modules/dom7/dom7.esm.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/utils/dom.js","webpack://stoneridgeresidences.com/./node_modules/swiper/esm/utils/utils.js","webpack://stoneridgeresidences.com/./node_modules/tingle.js/dist/tingle.min.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/enums.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/createPopper.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/math.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/within.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/popper.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://stoneridgeresidences.com/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://stoneridgeresidences.com/./node_modules/tippy.js/dist/tippy.esm.js","webpack://stoneridgeresidences.com/./node_modules/validate.js/validate.js","webpack://stoneridgeresidences.com/./node_modules/verge/verge.js","webpack://stoneridgeresidences.com/./node_modules/what-input/dist/what-input.js","webpack://stoneridgeresidences.com/./node_modules/wretch/dist/mix.js","webpack://stoneridgeresidences.com/./node_modules/wretch/dist/config.js","webpack://stoneridgeresidences.com/./node_modules/wretch/dist/perfs.js","webpack://stoneridgeresidences.com/./node_modules/wretch/dist/middleware.js","webpack://stoneridgeresidences.com/./node_modules/wretch/dist/resolver.js","webpack://stoneridgeresidences.com/./node_modules/wretch/dist/wretcher.js","webpack://stoneridgeresidences.com/./node_modules/wretch/dist/index.js"],"names":["hasPassiveEvents","window","passiveTestOptions","addEventListener","removeEventListener","isIosDevice","navigator","platform","test","maxTouchPoints","locks","documentListenerAdded","initialClientY","previousBodyOverflowSetting","previousBodyPaddingRight","allowTouchMove","el","some","lock","options","preventDefault","rawEvent","e","event","target","touches","length","restoreOverflowSetting","undefined","document","body","style","paddingRight","overflow","disableBodyScroll","targetElement","concat","arr","Array","isArray","i","arr2","from","_toConsumableArray","ontouchstart","targetTouches","clientY","ontouchmove","scrollTop","scrollHeight","clientHeight","isTargetElementTotallyScrolled","stopPropagation","handleScroll","passive","_reserveScrollBarGap","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","setOverflowHidden","console","error","clearAllBodyScrollLocks","forEach","enableBodyScroll","filter","charAt","module","exports","S","index","unicode","isObject","it","TypeError","String","toIndexedObject","toLength","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","fromIndex","value","O","includes","indexOf","toString","call","slice","has","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","source","keys","defineProperty","f","getOwnPropertyDescriptor","key","DESCRIPTORS","createPropertyDescriptor","object","bitmap","enumerable","configurable","writable","fails","Object","get","global","EXISTS","createElement","classof","process","getBuiltIn","match","version","userAgent","versions","v8","split","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","prototype","noTargetGet","forced","sham","exec","wellKnownSymbol","SPECIES","REPLACE_SUPPORTS_NAMED_GROUPS","re","result","groups","a","replace","REPLACE_KEEPS_$0","REPLACE","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","apply","this","arguments","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","constructor","flags","nativeRegExpMethod","methods","nativeMethod","regexp","str","arg2","forceStringMethod","RegExp","done","stringMethod","regexMethod","string","arg","path","aFunction","variable","namespace","method","toObject","floor","Math","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","position","captures","namedCaptures","replacement","tailPos","m","symbols","ch","capture","n","check","globalThis","self","g","Function","hasOwnProperty","propertyIsEnumerable","store","functionToString","inspectSource","set","NATIVE_WEAK_MAP","objectHas","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","state","wmget","wmhas","wmset","metadata","facade","STATE","enforce","getterFor","TYPE","type","feature","detection","data","normalize","POLYFILL","NATIVE","toLowerCase","IS_NODE","V8_VERSION","getOwnPropertySymbols","Symbol","IE8_DOM_DEFINE","anObject","toPrimitive","$defineProperty","P","Attributes","propertyIsEnumerableModule","$getOwnPropertyDescriptor","internalObjectKeys","getOwnPropertyNames","names","push","$propertyIsEnumerable","NASHORN_BUG","1","V","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","join","regexpExec","R","re1","re2","regexpFlags","stickyHelpers","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","sticky","charsAdded","strCopy","multiline","input","that","ignoreCase","dotAll","RE","s","uid","SHARED","IS_PURE","mode","copyright","toInteger","requireObjectCoercible","CONVERT_TO_STRING","pos","first","second","size","charCodeAt","codeAt","max","min","integer","IndexedObject","ceil","argument","isNaN","PREFERRED_STRING","fn","val","valueOf","id","postfix","random","NATIVE_SYMBOL","iterator","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","name","$","proto","fixRegExpWellKnownSymbolLogic","advanceStringIndex","getSubstitution","regExpExec","maybeCallNative","reason","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","res","rx","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","j","replacerArgs","__assign","assign","t","CountUp","endVal","defaults","startVal","decimalPlaces","duration","useEasing","useGrouping","smartEasingThreshold","smartEasingAmount","separator","decimal","prefix","suffix","finalEndVal","countDown","paused","count","startTime","remaining","frameVal","easingFn","Number","toFixed","printValue","rAF","requestAnimationFrame","update","callback","formatNumber","r","o","abs","l","h","numerals","easeOutExpo","pow","formattingFn","validateValue","resetDuration","getElementById","determineDirectionAndSmartEasing","start","pauseResume","cancelAnimationFrame","reset","tagName","textContent","innerHTML","ensureNumber","ce","CustomEvent","cancelable","defaultPrevented","Error","params","evt","origPrevent","bubbles","detail","createEvent","initCustomEvent","Event","SelectorSet","selectors","selectorObjects","indexes","create","activeIndexes","docElem","matches","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","matchesSelector","selector","querySelectorAll","context","idRe","sel","element","classRe","className","baseVal","Map","tagRe","toUpperCase","nodeName","map","chunker","parseSelectorIndexes","allIndexes","dup","allIndexesLen","rest","findByPrototype","ary","len","item","isPrototypeOf","sortById","b","logDefaultIndexUsed","add","obj","indexProto","objs","selectorIndexes","selectorIndex","remove","k","selIndex","removedIds","removeAll","splice","queryAll","len2","els","elements","sort","len3","matchedIds","bubbleEvents","captureEvents","propagationStopped","immediatePropagationStopped","currentTargets","currentTargetDesc","before","subject","verb","trackPropagation","trackImmediate","getCurrentTarget","defineCurrentTarget","getter","dispatch","eventPhase","_","canDispatch","queue","reverse","node","nodeType","_matches","observers","unshift","parentElement","len1","on","events","default","classNames","arrow","composeClassName_1","group_1","isAtTop","bodyAtTop","isAtBottom","bodyAtBottom","isScrollable","bodyScrollable","styleAttr","isOpen","maxBodyHeight","itemsList","groupState","gradientTop","gradientBottom","option_1","group","isDisabled","groupDisabled","hasLabel","groupHasLabel","groupLabel","label","optionState","arrow_1","value_1","head","select","isSelected","selectedOption","option","optionSelected","focusedOption","optionFocused","optionDisabled","body_1","head_1","root","rootDisabled","isInvalid","rootInvalid","rootOpen","isFocused","rootFocused","hasValue","rootHasValue","isOpenAbove","rootOpenAbove","isOpenBelow","rootOpenBelow","isUseNativeMode","rootNative","isRequired","isPlaceholderShown","humanReadableValue","showPlaceholderWhenOpen","openOnFocus","closeOnSelect","useNativeUiOnMobile","loop","clampMaxVisibleItems","liveUpdates","maxVisibleItems","seal","onOpen","onClose","onSelect","onOptionClick","Behavior_1","Callbacks_1","ClassNames_1","callbacks","behavior","helpful_merge_1","Config_1","bindEvents_1","Renderer_1","dispatchOpen_1","pollForSelectChange_1","pollForSelectMutation_1","closeOthers_1","scrollToView_1","StateManager_1","StateMapper_1","cache_1","Timers_1","Easydropdown","selectElement","config","mapFromSelect","renderer","dom","render","timers","actions","proxyActions","closeOthers","bind","scrollToView","handleStateUpdate","eventBindings","pollChangeIntervalId","pollMutationIntervalId","refresh","nextValue","open","close","queryDomRefs","validate","invalidate","destroy","clear","binding","unbind","cacheIndex","cb","getOptionFromIndex","focusedIndex","implementation","defineProperties","Timers","_this","clearInterval","Easydropdown_1","EasydropdownFacade_1","factory","selectElementOrSelector","querySelector","HTMLSelectElement","multiple","_i","cache_2","cachedInstance","instance","factoryFn","decoratedFactory","all","selects","UP","DOWN","SPACE","ENTER","ESC","OPTION","EventBinding","eventBindingRaw","debounce","throttle","handler","boundHandler","closestParent_1","Selectors","_a","optionIndex","selectOption","startClickSelecting","isKeying","focusOption","getIsMobilePlatform_1","handleHeadClick","injectedGetIsMobilePlatform","isMobilePlatform","isClosed","focus","boundHandleHeadClick","_b","offsetHeight","topOut","bottomOut","scroll","blur","isClickSelecting","killSelectReaction_1","KeyCodes","handleSelectKeydownDown_1","handleSelectKeydownUp_1","handlerParams","keyCode","isSearching","metaKey","selectedIndex","iterations","incrementAmount","round","totalOptions","searchResetDuration","clearTimeout","searchTimeoutId","search","setTimeout","resetSearch","throttle_1","EventBinding_1","getEventsList_1","bindEvent","eventBinding","handleBodyClick_1","handleBodyMousedown_1","handleBodyMouseover_1","handleHeadClick_1","handleItemsListScroll_1","handleSelectBlur_1","handleSelectFocus_1","handleSelectInvalid_1","handleSelectKeydown_1","handleSelectKeypress_1","handleWindowClick_1","handleWindowClick_2","AttributeChangeType","DomChangeType","Dom","sumItemsHeight","Infinity","totalHeight","newNode","newInnerHtml","newTextContent","attributeChanges","childCommands","root_1","createDomElementFromHtml_1","Dom_1","domDiff_1","domPatch_1","Renderer","html","rootElement","injectSelect","nextHtml","nextRoot","diffCommand","syncSelectWithValue","classList","replaceChild","err","parent","tempSelect","setAttribute","dispatchEvent","reduce","localDom","ref","AttributeChangeType_1","DomChangeType_1","PatchCommand_1","diffAttributeChanges","prev","next","totalAttributes","attributes","attributesMap","undef","attr1","attr2","attr","change","ADD","REMOVE","EDIT","OUTER","domDiff","totalChildNodes","command","NONE","Text","INNER","HTMLElement","outerHTML","FULL","childNodes","childNode","patchAttributes","raf","patchAttribute","removeAttribute","domPatch","childCommand","Element","CollisionType","includeSelf","parentNode","tokens","token","predicate","temp","firstElementChild","CollisionType_1","mapCollisionData","deltaTop","deltaBottom","maxHeight","itemHeight","maxVisibleItemsOverride","largestDelta","TOP","BOTTOM","bbHead","getBoundingClientRect","wh","innerHeight","top","bottom","detectBodyCollision_1","dispatchOpen","injectedDetectBodyCollision","collisionData","boundDispatchOpen","isIos","isAndroid","isOperaMini","isWindowsPhone","keyingTimeoutId","keying","resetKeying","disabled","lastValue","setInterval","getOptionIndexFromValue","handleMutation","lastOuterHtml","delay","timerId","last","args","now","Date","later","difference","BodyStatus","ScrollStatus","Group","thisInstance","cache","getScrollTop","currentScrollTop","optionOffsetTop","optionHeight","bodyHeight","scrollOffset","remainder","scrollToMiddle","offset","offsetTop","BodyStatus_1","ScrollStatus_1","Group_1","Option_1","State","stateRaw","placeholder","scrollStatus","AT_TOP","bodyStatus","CLOSED","groupRaw","optionRaw","total","hasPlaceholder","Boolean","find","OPEN_ABOVE","OPEN_BELOW","AT_BOTTOM","groupStartIndex","_c","resolveActions_1","StateManager","injectedActions","onAction","stateProxy","createStateProxy","getPropertyDescriptorsFromValue","proxy","getPrototypeOf","localDescriptors","isAccessorProperty","readPropertyValue","updatePropertyValue","State_1","StateMapper","isWithinGroup","required","child","children","getAttribute","HTMLOptionElement","mapGroup","lastGroup","mapOption","selected","HTMLOptGroupElement","groupChild","isParentGroupDisabled","SCROLLED","makeScrollable","makeUnscrollable","collisionType","optionAtIndex","shouldScrollToView","useNative","factory_1","HOOKS","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","animate","ariaDateFormat","autoFillDefaultTime","clickOpens","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enableSeconds","enableTime","errorHandler","warn","getWeek","givenDate","date","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","monthSelectorType","nextArrow","noCalendar","onChange","onDayCreate","onDestroy","onKeyDown","onMonthChange","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","wrap","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","number","bool","wait","arrayify","toggleClass","elem","tag","content","clearNode","firstChild","removeChild","findParent","condition","createNumberInput","inputClassName","opts","wrapper","numInput","arrowUp","arrowDown","pattern","appendChild","getEventTarget","composedPath","doNothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","G","hour","parseFloat","H","J","day","K","getHours","M","shortMonth","seconds","setSeconds","U","unixSeconds","W","weekNum","weekNumber","parseInt","Y","year","setFullYear","Z","ISODate","d","minutes","setMinutes","month","u","unixMillSeconds","w","y","tokenRegex","formats","toISOString","getMonth","getSeconds","getMinutes","substring","createDateFormatter","l10n","isMobile","frmt","overrideLocale","formatDate","c","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","format","datestr","trim","parseDate","ops","matchIndex","regexStr","isBackSlash","escaped","compareDates","date1","date2","getDefaultHours","hours","minDate","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","FlatpickrInstance","instanceConfig","flatpickr","defaultConfig","bindToInstance","setCalendarWidth","calendarContainer","visibility","display","daysContainer","daysWidth","days","offsetWidth","width","weekWrapper","removeProperty","updateTime","selectedDates","defaultDate","getMilliseconds","latestSelectedDateObj","isKeyDown","eventTarget","step","curValue","newValue","delta","which","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","secondElement","limitMinHours","minTime","minDateHasTime","maxTime","maxDateHasTime","setHoursFromDate","onYearInput","changeYear","ev","_handlers","triggerChange","triggerEvent","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","message","buildMonthSwitch","redraw","timeIncrement","contains","inputElem","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","tabIndex","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","onMouseOver","getFirstAvailableDay","startMonth","endMonth","startIndex","endIndex","focusOnDay","current","dayFocused","isInView","activeElement","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","utils","getDaysInMonth","createDocumentFragment","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","buildDays","frag","shouldBuildMonth","monthsDropdownContainer","buildMonth","container","monthNavFragment","monthElement","selectedMonth","yearInput","tabindex","yearElement","getElementsByTagName","buildMonths","monthNav","prevMonthNav","yearElements","monthElements","nextMonthNav","buildWeekdays","weekdayContainer","updateWeekdays","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","isCalendarElem","appendTo","documentClick","isCalendarElement","isInput","lostFocus","relatedTarget","isIgnored","timeContainer","newYear","newYearNum","isNewYear","dateToCheck","enable","array","parsed","to","onBlur","allowKeydown","allowInlineKeydown","isTimeObj","focusAndClose","selectDate","ctrlKey","currentYearElement","elems","pluginElements","x","shiftKey","hoverDate","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","dayElem","timestamp","outOfRange","ts1","ts2","ts","onResize","positionCalendar","minMaxDateSetter","inverseDateObj","getInputElem","setupLocale","l10ns","JSON","parse","stringify","dataset","customPositionElement","_positionElement","calendarHeight","acc","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","showOnTop","pageYOffset","left","pageXOffset","isCenter","isRight","right","rightMost","centerMost","doc","editableSheet","styleSheets","sheet","cssRules","createStyleSheet","getDocumentStyleSheet","bodyWidth","centerLeft","centerBefore","centerAfter","centerIndex","centerStyle","insertRule","msMaxTouchPoints","selectedDate","shouldChangeMonth","single","range","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","lastChild","insertBefore","_type","click","wasOpen","CALLBACKS","setSelectedDate","toggle","inputDate","dates","parseDateRules","rule","hooks","initEvent","getDateStr","dObj","mobileFormatStr","onMonthNavClick","isPrevMonth","isNextMonth","boolOpts","userConfig","_enable","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","parseConfig","nextSibling","preloadedDate","setupDates","yr","fragment","__hidePrevMonthArrow","__hideNextMonthArrow","innerContainer","buildWeeks","rContainer","hourInput","minuteInput","military2ampm","secondInput","title","buildTime","customAppend","build","inputType","defaultValue","setupMobile","debouncedResize","selText","bindEvents","isSafari","init","_flatpickr","nodeList","nodes","instances","HTMLCollection","NodeList","Node","en","localize","setDefaults","jQuery","fp_incr","ArrayStrategy_1","Messages","deep","useReferenceIfTargetUnset","useReferenceIfArray","preserveTypeIfTargetUnset","includeReadOnly","includeNonEmurable","arrayStrategy","errorMessage","MERGE_ERROR","ArrayStrategy","merge_1","FluentMerge","sources","with","offender","suggestion","TYPE_ERROR_TARGET","TYPE_ERROR_SOURCE","INVALID_ARRAY_STRATEGY","strategy","reduceBestMatch","offendingKeyLower","offendingKey","currBestMatch","currKey","totalMatching","getTotalMatching","possibleKey","longer","shorter","leftPointer","leftInnerPointer","leftTotalMatching","lastCommonIndex","rightPointer","rightInnerPointer","rightTotalMatching","longerLastIndex","shorterLastIndex","isSealed","isExtensible","reducer","bestMatch","deriveCustomTypeInstance_1","FluentMerge_1","handleMergeError_1","merge","isClientSide","sourceKeys","PUSH","RangeError","sourceKeys_1","createFluent","_typeof","_classCallCheck","Constructor","_defineProperties","props","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","setPrototypeOf","__proto__","p","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","Proxy","_isNativeReflectConstruct","Super","NewTarget","_superPropBase","property","_get","receiver","base","desc","_defineProperty","_set","isStrict","_slicedToArray","_arrayWithHoles","_arr","_n","_d","_e","_s","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","isString","DIRECTION","forceDirection","direction","escapeRegExp","objectIncludes","arrA","arrB","dateA","dateB","regexpA","regexpB","ActionDetails","cursorPos","oldValue","oldSelection","startChangePos","substr","insertedCount","end","removedCount","ChangeDetails","details","inserted","rawInserted","skip","tailShift","ContinuousTailDetails","stop","tail","masked","append","aggregate","_appendPlaceholder","shiftChar","IMask","InputMask","Masked","_value","_update","DEFAULTS","isInitialized","withValueRefresh","resolve","doCommit","doParse","doFormat","extractInput","raw","fromPos","toPos","checkTail","consistentState","_appendCharRaw","doPrepare","consistentTail","appended","doValidate","beforeTailState","overwrite","shiftBefore","tailDetails","appendTail","_beforeTailState","ci","_appendChar","_refreshing","rawInput","rawInputValue","ret","_isolated","prepare","commit","deleteCount","removeDirection","extractTail","nearestInputPos","v","maskedClass","mask","createMask","MaskedClass","DEFAULT_INPUT_DEFINITIONS","PatternInputDefinition","blockOpts","_isFilled","isOptional","placeholderChar","unmaskedValue","lazy","_this$masked","_this$masked2","_this$masked3","minPos","maxPos","boundPos","isComplete","_this$masked4","_this$parent","PatternFixedDefinition","isUnmasking","_isRawInput","char","isResolved","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","extend","firstTailChunk","shift","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","_stops","_blocks","remainChars","cstate","chunkShiftPos","MaskedRegExp","_Masked","_super","MaskedPattern","definitions","_rebuildMask","defs","_maskedBlocks","unmaskingBlock","optionalBlock","blocks","bNames","bName","maskedBlock","_isInput","STOP_CHAR","ESCAPE_CHAR","def","maskedState","bi","every","blockIter","_block","blockDetails","_this2","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","_blockStartPos","stopBefore","si","toBlockIndex","_this3","startBlockIter","startBlockIndex","endBlockIndex","bDetails","accVal","_block2","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","beginBlockData","beginBlockOffset","beginBlockIndex","beginBlock","beginBlockCursorPos","cursorAtRight","cursorAtLeft","searchBlockIndex","blockIndexAtLeft","blockAtLeft","blockInputPos","firstInputAtRight","blockAtRight","_blockInputPos","_bi","_block3","_blockInputPos2","firstFilledBlockIndexAtRight","_bi2","filledBlock","_blockInputPos3","firstEmptyInputBlockIndex","firstFilledInputBlockIndex","_bi3","_block4","_blockInputPos4","_bi4","_block5","_blockInputPos5","blockAlignedPos","_bi5","_block6","_blockInputPos6","firstInputBlockAlignedIndex","firstInputBlockAlignedPos","_bi6","_block7","_blockInputPos7","_bi7","_block8","_blockInputPos8","_bi8","_block9","_blockInputPos9","alignedPos","maskedBlocks","_this4","indices","gi","block","InputDefinition","FixedDefinition","MaskedRange","_MaskedPattern","maxLength","fromStr","padStart","toStr","sameCharsCount","repeat","minstr","maxstr","_ref2","num","padEnd","autofix","prepStr","nextVal","_this$boundaries","boundaries","_this$boundaries2","_get2","firstNonZero","_matchFrom","_this$boundaries3","_this$boundaries4","_len","_key","MaskedDate","GET_DEFAULT_BLOCKS","bk","isDateExist","typedValue","_str$split2","MaskElement","_unsafeSelectionStart","_unsafeSelectionEnd","selectionStart","selectionEnd","_unsafeSelect","handlers","HTMLMaskElement","_MaskElement","getRootNode","setSelectionRange","_toggleEventHandler","EVENTS_MAP","selectionChange","drop","HTMLContenteditableMaskElement","_HTMLMaskElement","selection","getSelection","anchorOffset","createRange","setStart","setEnd","removeAllRanges","addRange","isContentEditable","_listeners","_unmaskedValue","_saveSelection","_onInput","_onChange","_onDrop","_onFocus","_onClick","alignCursor","alignCursorFriendly","_bindEvents","maskEquals","updateOptions","updateControl","unbindEvents","listeners","_cursorChanging","_changingCursorPos","isActive","_selection","newUnmaskedValue","isChanged","_fireChangeEvents","restOpts","updateMask","updateOpts","_delayUpdateCursor","_abortUpdateCursor","_fireEvent","_inputEvent","hIndex","oldRawValue","removed","updateCursor","_unbindEvents","MaskedEnum","enum","MaskedNumber","_updateRegExps","allowNegative","scale","radix","_numberRegExpInput","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","parts","_removeThousandsSeparators","extendOnSeparators","_separatorsCount","_this$_adjustRangeWit","_adjustRangeWithSeparators","_this$_adjustRangeWit2","prevBeforeTailValue","prevBeforeTailSeparatorsCount","_separatorsCountFromSlice","appendDetails","_insertThousandsSeparators","beforeTailValue","beforeTailSeparatorsCount","searchFrom","separatorPos","separatorAroundFromPos","_findSeparatorAround","separatorAroundToPos","_this$_adjustRangeWit3","_this$_adjustRangeWit4","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","valid","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","signed","MaskedFunction","MaskedDynamic","currentMask","compiledMasks","_applyDispatch","prevValueBeforeTail","inputValue","insertValue","_rawInputValue","tailValue","prevMask","prevMaskState","doDispatch","_this$currentMask","_this$currentMask2","currentMaskRef","mi","_this$currentMask3","_this$currentMask4","_get3","_len2","_key2","_this$currentMask5","_get4","_len3","_key3","inputs","weight","i1","i2","PIPE_TYPE","MASKED","UNMASKED","TYPED","createPipe","runIsolated","pipeArgs","decode","decodeURIComponent","converter","api","expires","toUTCString","write","encodeURIComponent","escape","stringifiedAttributes","attributeName","cookie","json","jar","cookies","read","getJSON","withConverter","easeInOutQuad","easing","a11y","distance","timeStart","timeElapsed","location","scrollY","timeCurrent","scrollTo","jumper","code","require","lgThumbnail","_extends","thumbnailDefaults","thumbnail","animateThumb","currentPagerPosition","thumbWidth","thumbContHeight","thumbMargin","exThumbImage","showThumbByDefault","toggleThumb","pullCaptionUp","enableThumbDrag","enableThumbSwipe","swipeThreshold","loadYoutubeThumbnail","youtubeThumbSize","loadVimeoThumbnail","vimeoThumbSize","loadDailymotionThumbnail","Thumbnail","core","lgData","thumbOuter","thumbOuterWidth","thumbTotalWidth","items","thumbIndex","addClass","outer","isTouch","doCss","thumbClickable","thumbkeyPress","$thumb","thumbList","vimeoErrorThumbSize","getThumb","src","thumb","thumbImg","isVideo","vimeoId","youtube","vimeo","dailymotion","height","dynamic","dynamicEl","vimeoVideoId","script","removeClass","lgBusy","slide","setTranslate","setVendor","lGalleryOn","hasClass","speed","startCoords","endCoords","isDraging","isMoved","tempLeft","pageX","scrollLeft","off","lgScript","getElementsByClassName","lgModules","mod","lgUtils","trigger","customEvent","Listener","_id","_event","param","2","lightgallery","_lgUtils","_lgUtils2","__esModule","cssEasing","startClass","backdropDuration","hideBarsDelay","useLeft","ariaLabelledby","ariaDescribedby","closable","escKey","keyPress","controls","slideEndAnimatoin","hideControlOnEnd","mousewheel","getCaptionFromTitleOrAlt","appendSubHtmlTo","subHtmlSelectorRelative","preload","showAfterLoad","selectWithin","prevHtml","iframeMaxWidth","download","counter","appendCounterTo","enableSwipe","enableDrag","galleryId","supportLegacyBrowser","Plugin","modules","hideBartimeout","___slide","_hash","hash","structure","closeGallery","initialHideBarTimeout","template","list","subHtmlCont","setTop","inner","prevScrollTop","wH","lGallery","transition","support","html5","vk","addHtml","currentEle","subHtml","fL","loadContent","rec","_img","_src","_poster","_srcset","_sizes","_html","_alt","_hasPoster","getResponsiveSrc","srcItms","rsWidth","rsSrc","__src","wWidth","poster","alt","responsive","srcset","sizes","iframe","_isVideo","videoClass","picturefill","_speed","fromTouch","fromThumb","_prevIndex","_length","_time","_next","_prev","downloadUrl","prevIndex","arrowDisable","touchPrev","touchNext","goToNextSlide","goToPrevSlide","xValue","yValue","touchMove","touchEnd","opacity","manageSwipeClass","deltaY","mousedown","lguid","lightGallery","getRawTag","objectToString","symToStringTag","toStringTag","trimmedEndIndex","reTrimStart","freeGlobal","objectProto","nativeObjectToString","isOwn","unmasked","freeSelf","reWhitespace","toNumber","nativeMax","nativeMin","func","lastArgs","lastThis","maxWait","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","flush","baseGetTag","isObjectLike","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","isBinary","prototypeToString","query","matrix","identity","multiply","fm","fx","product","row","col","scalar","scalarY","clock","polyfill","currentTime","webkitRequestAnimationFrame","mozRequestAnimationFrame","interval","origin","rotate","z","cleanup","desktop","mobile","useDelay","viewFactor","viewOffset","afterReset","afterReveal","beforeReset","beforeReveal","mount","clean","reveal","sync","each","collection","logger","debug","report","log","rinse","this$1","elementIds","active","stale","sequenceIds","containerIds","staleId","containerId","sequence","containers","delegate","sequences","getPrefixedCssProp","properties","getPrefixedCssProperty","clearCache","computed","getComputedStyle","inlineMatch","generated","angle","theta","computedOpacity","configOpacity","transformations","axis","fontSize","translateY","translateX","PI","cos","sin","rotateY","rotateZ","transform","initial","final","fragments","delayed","instant","composed","composition","applyStyle","declaration","pair","dirty","callbackTimer","styles","history","deepAssign","agent","nextUniqueId","initialize","visible","revealed","initTimeout","force","pristine","seen","shouldReveal","shouldReset","triggerReveal","triggerReset","registerCallbacks","isDelayed","beforeCallback","afterCallback","elapsed","seq","SequenceModel","models","nextId","members","nextElement","cue","blocked","pop","foot","Sequence","prop","syncing","sequence$$1","containerBuffer","elementBuffer","elementNode","existingId","containerNode","collections","getContainerId","record","boundDelegate","boundDestroy","boundReveal","boundClean","boundSync","mathSign","getGeometry","isContainer","offsetLeft","offsetParent","bounds","getScrolled","isElementVisible","elementBounds","geometry","containerBounds","ScrollReveal","buffer","isSupported","isTransformSupported","isTransitionSupported","ssrDocument","createElementNS","importNode","host","hostname","href","pathname","protocol","getDocument","ssrWindow","replaceState","pushState","go","back","getPropertyValue","Image","screen","matchMedia","getWindow","win","Autoplay","run","swiper","$activeSlideEl","slides","eq","activeIndex","autoplay","timeout","autoplayResult","reverseDirection","loopFix","slidePrev","emit","isBeginning","stopOnLastSlide","slideTo","slideNext","isEnd","cssMode","running","pause","waitForTransition","$wrapperEl","onTransitionEnd","onVisibilityChange","visibilityState","destroyed","enabled","disableOnInteraction","beforeTransitionStart","internal","sliderFirstMove","device","browser","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","observer","passiveListener","supportsPassive","gestures","calcSupport","getDevice","overrides","_temp","ua","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isEdge","isWebView","calcBrowser","resize","createObserver","initialized","ResizeObserver","entries","newWidth","newHeight","_ref","contentBoxSize","contentRect","inlineSize","blockSize","resizeHandler","observe","removeObserver","unobserve","orientationChangeHandler","resizeObserver","Observer","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observeParents","containerParents","$el","parents","observeSlideChildren","disconnect","onTouchStart","touchEventsData","animating","preventInteractionOnTransition","originalEvent","$targetEl","touchEventsTarget","closest","wrapperEl","isTouchEvent","button","isTouched","noSwipingClass","shadowRoot","noSwiping","noSwipingSelector","allowClick","swipeHandler","currentX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","threshold","allowThresholdMove","is","formElements","shouldPreventDefault","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","rtl","rtlTranslate","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","translate","maxTranslate","minTranslate","touchAngle","diffX","diffY","sqrt","isHorizontal","atan2","touchMoveStopPropagation","nested","startTranslate","getTranslate","setTransition","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","diff","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","watchSlidesProgress","watchSlidesVisibility","updateActiveIndex","updateSlidesClasses","velocities","updateProgress","onTouchEnd","slidesGrid","snapGrid","currentPos","touchEndTime","timeDiff","updateClickedSlide","lastClickTime","freeModeMomentum","lastMoveEvent","velocityEvent","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","centeredSlides","freeModeSticky","nextSlide","once","moveDistance","currentSlideSize","slidesSizesGrid","slideToClosest","transitionStart","transitionEnd","longSwipesMs","stopIndex","groupSize","slidesPerGroupSkip","slidesPerGroup","_increment","ratio","increment","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","breakpoints","setBreakpoint","updateSlides","slidesPerView","watchOverflow","checkOverflow","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","previousTranslate","scrollWidth","translatesDiff","progress","dummyEventAttached","dummyEventListener","initialSlide","updateOnWindowResize","url","autoHeight","setWrapperSize","virtualTranslate","effect","breakpointsBase","spaceBetween","slidesPerColumn","slidesPerColumnFill","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","loopFillGroupWithBlank","loopPreventsSlide","passiveListeners","containerModifierClass","slideClass","slideBlankClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","prototypes","modular","useParams","instanceParams","moduleName","useModules","modulesParams","moduleParams","moduleEventName","eventsEmitter","priority","eventsListeners","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","eventsArray","css","getDirectionLabel","getDirectionPropertyValue","swiperSize","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","newSlidesGrid","_$wrapperEl$css","_$wrapperEl$css2","slidesPerRow","numFullColumns","newSlideOrderIndex","column","groupIndex","slideIndexInGroup","columnsInGroup","order","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","outerWidth","outerHeight","paddingLeft","boxSizing","_slide$","swiperSlideSize","slidesGridItem","_i2","_slidesGridItem","_slides$filter$css","slideEl","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","_allSlidesSize","allSlidesOffset","snapIndex","updateSlidesOffset","updateAutoHeight","activeSlides","visibleSlides","swiperSlideOffset","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideProgress","slideBefore","slideAfter","multiplier","wasBeginning","wasEnd","activeSlide","realIndex","nextAll","prevSlide","prevAll","emitSlidesClasses","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","slideFound","clickedSlide","clickedIndex","byController","translateTo","runCallbacks","translateBounds","newTranslate","_wrapperEl$scrollTo","isH","onTranslateToWrapperTransitionEnd","dir","indexAsNumber","isFinite","normalizedTranslate","normalizedGird","normalizedGridNext","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","_clientLeft","clientLeft","normalizedSnapGrid","prevSnap","slideReset","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","blankSlidesNum","blankNode","prependSlides","appendSlides","cloneNode","prepend","loopDestroy","removeAttr","moving","isLocked","cursor","unsetGrabCursor","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","attachEvents","touchEvents","move","detachEvents","_swiper$loopedSlides","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","emitContainerClasses","directionChanged","needsReLoop","changeDirection","containerEl","currentWidth","currentHeight","points","point","minRatio","_points$i","wasLocked","lastSlidePosition","classes","addClasses","resultClasses","suffixes","removeClasses","images","loadImage","imageEl","checkForComplete","image","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","__swiper__","moduleParamName","swiperParams","passedParams","eventName","touchEventsTouch","touchEventsDesktop","clickTimeout","_proto","setProgress","getSlideClasses","updates","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","mounted","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","prototypeGroup","protoMethod","Fade","$slideEl","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","beforeInit","overwriteParams","Navigation","toggleEl","disabledClass","_swiper$navigation","$nextEl","$prevEl","lockClass","onPrevClick","onNextClick","_swiper$navigation2","hideOnClick","hiddenClass","toEdge","fromEdge","_swiper$navigation3","targetEl","pagination","clickable","isHidden","Pagination","paginationType","bullets","firstIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","currentClass","text","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scaleX","scaleY","progressbarFillClass","renderCustom","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickableClass","modifierClass","progressbarOppositeClass","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","Thumbs","thumbsParams","thumbs","SwiperClass","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","nextIndex","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","slideChange","beforeDestroy","_construct","Parent","Class","_wrapNativeSuper","_cache","Wrapper","Dom7","_Array","arrayFlat","arrayFilter","toCreate","tempParent","qsa","uniqueArray","arrayUnique","noTrigger","shortcut","Methods","_el$classList","_el$classList2","_len4","_key4","attrs","attrName","transitionDuration","_len5","_key5","eventType","targetSelector","listener","handleLiveEvent","eventData","dom7EventData","_parents","handleEvent","dom7LiveListeners","proxyListener","dom7Listeners","_len6","_key6","dom7proxy","_len9","_key9","dataIndex","fireCallBack","includeMargins","_styles","_styles2","box","clientTop","scrollX","_prop","compareWith","previousSibling","returnIndex","newChild","tempDiv","nextElementSibling","nextEls","previousElementSibling","prevEls","_parent","foundElements","found","methodName","deleteProps","nextTick","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","noExtend","nextSource","keysArray","nextKey","bindModuleMethods","subKey","classesToSelector","beforeOpen","beforeClose","stickyFooter","footer","cssClass","closeLabel","closeMethods","modalBoxFooter","modalBox","modal","modalCloseBtn","modalCloseBtnIcon","modalCloseBtnLabel","modalBoxContent","_events","clickCloseBtn","clickOverlay","clientX","keyboardNav","addFooter","_busy","_isBusy","_scrollPosition","setStickyFooter","setContent","getContent","setFooterContent","getFooterContent","isOverflow","addFooterBtn","ownerDocument","defaultView","isElement","isHTMLElement","isShadowRoot","ShadowRoot","includeScale","rect","getWindowScroll","getNodeName","getDocumentElement","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","offsets","getLayoutRect","clientRect","getParentNode","assignedSlot","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","visualViewport","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","isFirefox","currentNode","perspective","contain","willChange","getContainingBlock","auto","basePlacements","viewport","popper","variationPlacements","placement","modifierPhases","modifiers","visited","Set","modifier","requires","requiresIfExists","dep","depModifier","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","reference","pending","orderedModifiers","modifiersData","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","merged","phase","orderModifiers","existing","_ref3","_ref3$options","cleanupFn","forceUpdate","_state$elements","rects","_state$orderedModifie","_state$orderedModifie2","_options","Promise","then","onFirstUpdate","_options$scroll","_options$resize","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","dpr","devicePixelRatio","roundOffsetsByDPR","_ref3$x","_ref3$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","initialStyles","margin","attribute","getOppositePlacement","getOppositeVariationPlacement","rootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","getViewportRect","getInnerBoundingClientRect","winScroll","getDocumentRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","altContext","clippingClientRect","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","within","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","eventListeners","_ref4","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","_loop","fittingPlacement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_min","_max","_preventedOffset","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","CONTENT_CLASS","ARROW_CLASS","SVG_ARROW_CLASS","TOUCH_OPTIONS","getValueAtIndexOrReturn","isType","invokeWithArgsOrReturn","ms","normalizeToArray","pushIfUnique","arrayFrom","div","setTransitionDuration","setVisibilityState","updateTransitionEndListener","action","currentInput","lastMouseMoveTime","onDocumentTouchStart","performance","onDocumentMouseMove","onWindowBlur","_tippy","isVisible","isIE","defaultProps","aria","expanded","getReferenceClientRect","ignoreAttributes","interactive","interactiveBorder","interactiveDebounce","moveTransition","onAfterUpdate","onBeforeUpdate","onCreate","onHidden","onHide","onMount","onShow","onShown","onTrigger","onUntrigger","onClickOutside","popperOptions","showOnCreate","triggerTarget","animateFill","followCursor","inlinePositioning","allowHTML","animation","inertia","maxWidth","role","theme","zIndex","defaultKeys","getExtendedPassedProps","passedProps","pluginProps","plugin","evaluateProps","out","valueAsString","getDataAttributeProps","dangerouslySetInnerHTML","createArrowElement","getChildren","boxChildren","backdrop","onUpdate","prevProps","nextProps","_getChildren","$$tippy","idCounter","mouseMoveListeners","mountedInstances","createTippy","showTimeout","hideTimeout","scheduleHideAnimationFrame","lastTriggerEvent","currentTransitionEndListener","currentTarget","isVisibleFromClick","didHideDueToDocumentMouseDown","didTouchMove","ignoreOnFirstUpdate","debouncedOnMouseMove","onMouseMove","popperInstance","isMounted","isShown","clearDelayTimeouts","setProps","partialProps","invokeHook","removeListeners","addListeners","cleanupInteractiveMouseListeners","handleAriaExpandedAttribute","handleStyles","createPopperInstance","getNestedPopperTree","nestedPopper","show","isAlreadyVisible","isTouchAndTouchDisabled","hasAttribute","getIsDefaultRenderFn","addDocumentPress","_getDefaultTemplateCh2","getDefaultTemplateChildren","_instance$popperInsta2","_getDefaultTemplateCh3","_box","_content","handleAriaContentAttribute","onTransitionedIn","hide","isAlreadyHidden","removeDocumentPress","_getDefaultTemplateCh4","onTransitionedOut","unmount","hideWithInteractivity","destroyPopperInstance","_props$render","pluginsHooks","hasAriaExpanded","scheduleShow","getNormalizedTouchSettings","getIsCustomTouchBehavior","_instance$props$rende","getDelay","isShow","shouldInvokePropsHook","_instance$props","pluginHooks","currentValue","onDocumentPress","onMouseLeave","onBlurOrFocusOut","_lastTriggerEvent","shouldScheduleClickHide","isEventListenerStopped","wasFocused","scheduleHide","isCursorOverReferenceOrPopper","popperTreeData","popperState","topDistance","bottomDistance","leftDistance","rightDistance","exceedsTop","exceedsBottom","exceedsLeft","exceedsRight","isCursorOutsideInteractiveBorder","_instance$popperInsta","_instance$props2","computedReference","_getNormalizedTouchSe","touchValue","touchDelay","tippy","targets","optionalProps","isNodeList","setDefaultProps","define","constraints","runValidations","isPromise","processValidationResults","major","minor","patch","isEmpty","EMPTY_STRING_REGEXP","validatorName","validators","validator","validatorOptions","isDomElement","isJqueryElement","collectFormValues","getDeepObjectValue","globalOptions","errors","pruneEmptyErrors","expandMultipleErrors","convertErrorMessages","formatters","async","WrapErrors","wrapErrors","cleanAttributes","reject","waitForResults","fullMessages","memo","isNumber","isFunction","isInteger","isBoolean","isDate","isDefined","jquery","vals","FORMAT_REGEXP","m0","m1","m2","prettify","stringifyValue","isHash","unique","forEachKeyInKeypath","keypath","form","values","sanitizeFormValue","checked","_val","nullify","capitalize","msg","errorInfo","groupErrorsByAttribute","flattenErrorsToArray","whitelist","whitelistCreator","cleanRecursive","ow","buildObjectWhitelist","exposeModule","amd","presence","allowEmpty","maximum","minimum","tokenizer","wrongLength","tooShort","tooLong","notValid","numericality","greaterThan","greaterThanOrEqualTo","equalTo","lessThan","lessThanOrEqualTo","divisibleBy","strict","onlyInteger","noStrings","notInteger","odd","notOdd","even","notEven","datetime","earliest","NaN","latest","dateOnly","tooEarly","tooLate","inclusion","exclusion","email","PATTERN","equality","otherValue","comparator","v1","v2","schemes","allowLocal","allowDataUrl","regex","tld","originalOptions","types","messages","boolean","detailed","flat","grouped","constraint","make","xports","mq","q","viewportW","viewportH","rectangle","cushion","coords","calibrate","installedModules","moduleId","loaded","ask","ignoreKeys","specificKeys","registerOnChange","unRegisterOnChange","currentElement","currentIntent","currentTimestamp","shouldPersist","formInputs","functionList","ignoreMap","specificMap","inputMap","keydown","keyup","mousemove","MSPointerDown","MSPointerMove","pointerdown","pointermove","touchstart","touchend","mousePos","pointerMap","3","4","setPersist","sessionStorage","getItem","doUpdate","setInput","eventKey","pointerType","ignoreMatch","specificMatch","shouldUpdate","validateTouch","persistInput","activeElem","checkClosest","fireFunctions","setIntent","detectScrolling","setElement","clearElement","setItem","touchIsValid","detectWheel","onmousewheel","screenX","screenY","ElementPrototype","MSPointerEvent","opt","objPos","clearStorage","__spreadArrays","il","jl","mix","one","two","mergeArrays","clone","errorType","polyfills","fetch","FormData","URLSearchParams","PerformanceObserver","AbortController","doThrow","onMatch","_performance","getEntriesByName","clearMeasures","perfs","delete","clearResourceTimings","_observer","lazyObserver","entryTypes","WretchErrorWrapper","JSON_MIME","CONTENT_TYPE_HEADER","Wretcher","_url","_catchers","_resolvers","_middlewares","_deferredChain","selfFactory","catchers","_f","resolvers","_g","middlewares","_h","deferredChain","mixin","qp","appendQueryParams","headers","headerValues","accept","headerValue","Accept","auth","Authorization","catcher","errorId","newMap","signal","controller","doResolve","defer","baseWretcher","startsWith","wretcher","finalOptions","fetchController","fetchRequest","fetchFunction","reduceRight","curr","idx","middlewareHelper","throwingPromise","catch","response","ok","status","bodyParser","funName","responseChain","blob","formData","arrayBuffer","abort","badRequest","unauthorized","forbidden","notFound","internalError","fetchError","onAbort","chain","resolver","put","post","replay","contents","jsObject","preservedContentType","formObject","recursive","convertFormData","formUrl","encodeQueryValue","queryString","usp","ancestors","formKey","ancestor"],"mappings":"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","file":"vendor.js","sourcesContent":["function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n var passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true;\n return undefined;\n }\n };\n window.addEventListener('testPassive', null, passiveTestOptions);\n window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n return locks.some(function (lock) {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n var e = rawEvent || window.event;\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true;\n }\n\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true;\n\n if (e.preventDefault) e.preventDefault();\n\n return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n if (_reserveScrollBarGap && scrollBarGap > 0) {\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = scrollBarGap + 'px';\n }\n }\n\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight;\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined;\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting;\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined;\n }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n var clientY = event.targetTouches[0].clientY - initialClientY;\n\n if (allowTouchMove(event.target)) {\n return false;\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event);\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event);\n }\n\n event.stopPropagation();\n return true;\n};\n\nexport var disableBodyScroll = function disableBodyScroll(targetElement, options) {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n return;\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(function (lock) {\n return lock.targetElement === targetElement;\n })) {\n return;\n }\n\n var lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [lock]);\n\n if (isIosDevice) {\n targetElement.ontouchstart = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement);\n }\n };\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = true;\n }\n } else {\n setOverflowHidden(options);\n }\n};\n\nexport var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(function (lock) {\n lock.targetElement.ontouchstart = null;\n lock.targetElement.ontouchmove = null;\n });\n\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n\n // Reset initial clientY.\n initialClientY = -1;\n } else {\n restoreOverflowSetting();\n }\n\n locks = [];\n};\n\nexport var enableBodyScroll = function enableBodyScroll(targetElement) {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n return;\n }\n\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n\n if (isIosDevice) {\n targetElement.ontouchstart = null;\n targetElement.ontouchmove = null;\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n } else if (!locks.length) {\n restoreOverflowSetting();\n }\n};\n\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === RegExp.prototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","module.exports = {};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = false;\n","var IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // eslint-disable-next-line es/no-symbol -- required for testing\n return !Symbol.sham &&\n // Chrome 38 Symbol has incorrect toString conversion\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n (IS_NODE ? V8_VERSION === 38 : V8_VERSION > 37 && V8_VERSION < 41);\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\nvar shared = require('./shared');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\n// eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.11.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n});\n","var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(t){for(var i,a=1,s=arguments.length;as.endVal?s.endVal:s.frameVal,s.frameVal=Number(s.frameVal.toFixed(s.options.decimalPlaces)),s.printValue(s.frameVal),i1?s.options.decimal+a[1]:\"\",s.options.useGrouping){r=\"\";for(var l=0,h=n.length;lt;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold){this.finalEndVal=t;var a=this.countDown?1:-1;this.endVal=t+a*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},t.prototype.start=function(t){this.error||(this.callback=t,this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},t.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},t.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},t.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,this.finalEndVal||this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},t.prototype.printValue=function(t){var i=this.formattingFn(t);\"INPUT\"===this.el.tagName?this.el.value=i:\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=i:this.el.innerHTML=i},t.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},t.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \"+t,null)},t.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},t}();export{CountUp};","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\n(function() {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n var ce = new window.CustomEvent('test', { cancelable: true });\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n } catch (e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(\n event,\n params.bubbles,\n params.cancelable,\n params.detail\n );\n origPrevent = evt.preventDefault;\n evt.preventDefault = function() {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n } catch (e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n }\n})();\n","// Public: Create a new SelectorSet.\nexport default function SelectorSet() {\n // Construct new SelectorSet if called as a function.\n if (!(this instanceof SelectorSet)) {\n return new SelectorSet();\n }\n\n // Public: Number of selectors added to the set\n this.size = 0;\n\n // Internal: Incrementing ID counter\n this.uid = 0;\n\n // Internal: Array of String selectors in the set\n this.selectors = [];\n\n // Internal: Map of selector ids to objects\n this.selectorObjects = {};\n\n // Internal: All Object index String names mapping to Index objects.\n this.indexes = Object.create(this.indexes);\n\n // Internal: Used Object index String names mapping to Index objects.\n this.activeIndexes = [];\n}\n\n// Detect prefixed Element#matches function.\nvar docElem = window.document.documentElement;\nvar matches =\n docElem.matches ||\n docElem.webkitMatchesSelector ||\n docElem.mozMatchesSelector ||\n docElem.oMatchesSelector ||\n docElem.msMatchesSelector;\n\n// Public: Check if element matches selector.\n//\n// Maybe overridden with custom Element.matches function.\n//\n// el - An Element\n// selector - String CSS selector\n//\n// Returns true or false.\nSelectorSet.prototype.matchesSelector = function(el, selector) {\n return matches.call(el, selector);\n};\n\n// Public: Find all elements in the context that match the selector.\n//\n// Maybe overridden with custom querySelectorAll function.\n//\n// selectors - String CSS selectors.\n// context - Element context\n//\n// Returns non-live list of Elements.\nSelectorSet.prototype.querySelectorAll = function(selectors, context) {\n return context.querySelectorAll(selectors);\n};\n\n// Public: Array of indexes.\n//\n// name - Unique String name\n// selector - Function that takes a String selector and returns a String key\n// or undefined if it can't be used by the index.\n// element - Function that takes an Element and returns an Array of String\n// keys that point to indexed values.\n//\nSelectorSet.prototype.indexes = [];\n\n// Index by element id\nvar idRe = /^#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'ID',\n selector: function matchIdSelector(sel) {\n var m;\n if ((m = sel.match(idRe))) {\n return m[0].slice(1);\n }\n },\n element: function getElementId(el) {\n if (el.id) {\n return [el.id];\n }\n }\n});\n\n// Index by all of its class names\nvar classRe = /^\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'CLASS',\n selector: function matchClassSelector(sel) {\n var m;\n if ((m = sel.match(classRe))) {\n return m[0].slice(1);\n }\n },\n element: function getElementClassNames(el) {\n var className = el.className;\n if (className) {\n if (typeof className === 'string') {\n return className.split(/\\s/);\n } else if (typeof className === 'object' && 'baseVal' in className) {\n // className is a SVGAnimatedString\n // global SVGAnimatedString is not an exposed global in Opera 12\n return className.baseVal.split(/\\s/);\n }\n }\n }\n});\n\n// Index by tag/node name: `DIV`, `FORM`, `A`\nvar tagRe = /^((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'TAG',\n selector: function matchTagSelector(sel) {\n var m;\n if ((m = sel.match(tagRe))) {\n return m[0].toUpperCase();\n }\n },\n element: function getElementTagName(el) {\n return [el.nodeName.toUpperCase()];\n }\n});\n\n// Default index just contains a single array of elements.\nSelectorSet.prototype.indexes['default'] = {\n name: 'UNIVERSAL',\n selector: function() {\n return true;\n },\n element: function() {\n return [true];\n }\n};\n\n// Use ES Maps when supported\nvar Map;\nif (typeof window.Map === 'function') {\n Map = window.Map;\n} else {\n Map = (function() {\n function Map() {\n this.map = {};\n }\n Map.prototype.get = function(key) {\n return this.map[key + ' '];\n };\n Map.prototype.set = function(key, value) {\n this.map[key + ' '] = value;\n };\n return Map;\n })();\n}\n\n// Regexps adopted from Sizzle\n// https://github.com/jquery/sizzle/blob/1.7/sizzle.js\n//\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g;\n\n// Internal: Get indexes for selector.\n//\n// selector - String CSS selector\n//\n// Returns Array of {index, key}.\nfunction parseSelectorIndexes(allIndexes, selector) {\n allIndexes = allIndexes.slice(0).concat(allIndexes['default']);\n\n var allIndexesLen = allIndexes.length,\n i,\n j,\n m,\n dup,\n rest = selector,\n key,\n index,\n indexes = [];\n\n do {\n chunker.exec('');\n if ((m = chunker.exec(rest))) {\n rest = m[3];\n if (m[2] || !rest) {\n for (i = 0; i < allIndexesLen; i++) {\n index = allIndexes[i];\n if ((key = index.selector(m[1]))) {\n j = indexes.length;\n dup = false;\n while (j--) {\n if (indexes[j].index === index && indexes[j].key === key) {\n dup = true;\n break;\n }\n }\n if (!dup) {\n indexes.push({ index: index, key: key });\n }\n break;\n }\n }\n }\n }\n } while (m);\n\n return indexes;\n}\n\n// Internal: Find first item in Array that is a prototype of `proto`.\n//\n// ary - Array of objects\n// proto - Prototype of expected item in `ary`\n//\n// Returns object from `ary` if found. Otherwise returns undefined.\nfunction findByPrototype(ary, proto) {\n var i, len, item;\n for (i = 0, len = ary.length; i < len; i++) {\n item = ary[i];\n if (proto.isPrototypeOf(item)) {\n return item;\n }\n }\n}\n\n// Public: Log when added selector falls under the default index.\n//\n// This API should not be considered stable. May change between\n// minor versions.\n//\n// obj - {selector, data} Object\n//\n// SelectorSet.prototype.logDefaultIndexUsed = function(obj) {\n// console.warn(obj.selector, \"could not be indexed\");\n// };\n//\n// Returns nothing.\nSelectorSet.prototype.logDefaultIndexUsed = function() {};\n\n// Public: Add selector to set.\n//\n// selector - String CSS selector\n// data - Optional data Object (default: undefined)\n//\n// Returns nothing.\nSelectorSet.prototype.add = function(selector, data) {\n var obj,\n i,\n indexProto,\n key,\n index,\n objs,\n selectorIndexes,\n selectorIndex,\n indexes = this.activeIndexes,\n selectors = this.selectors,\n selectorObjects = this.selectorObjects;\n\n if (typeof selector !== 'string') {\n return;\n }\n\n obj = {\n id: this.uid++,\n selector: selector,\n data: data\n };\n selectorObjects[obj.id] = obj;\n\n selectorIndexes = parseSelectorIndexes(this.indexes, selector);\n for (i = 0; i < selectorIndexes.length; i++) {\n selectorIndex = selectorIndexes[i];\n key = selectorIndex.key;\n indexProto = selectorIndex.index;\n\n index = findByPrototype(indexes, indexProto);\n if (!index) {\n index = Object.create(indexProto);\n index.map = new Map();\n indexes.push(index);\n }\n\n if (indexProto === this.indexes['default']) {\n this.logDefaultIndexUsed(obj);\n }\n objs = index.map.get(key);\n if (!objs) {\n objs = [];\n index.map.set(key, objs);\n }\n objs.push(obj);\n }\n\n this.size++;\n selectors.push(selector);\n};\n\n// Public: Remove selector from set.\n//\n// selector - String CSS selector\n// data - Optional data Object (default: undefined)\n//\n// Returns nothing.\nSelectorSet.prototype.remove = function(selector, data) {\n if (typeof selector !== 'string') {\n return;\n }\n\n var selectorIndexes,\n selectorIndex,\n i,\n j,\n k,\n selIndex,\n objs,\n obj,\n indexes = this.activeIndexes,\n selectors = (this.selectors = []),\n selectorObjects = this.selectorObjects,\n removedIds = {},\n removeAll = arguments.length === 1;\n\n selectorIndexes = parseSelectorIndexes(this.indexes, selector);\n for (i = 0; i < selectorIndexes.length; i++) {\n selectorIndex = selectorIndexes[i];\n\n j = indexes.length;\n while (j--) {\n selIndex = indexes[j];\n if (selectorIndex.index.isPrototypeOf(selIndex)) {\n objs = selIndex.map.get(selectorIndex.key);\n if (objs) {\n k = objs.length;\n while (k--) {\n obj = objs[k];\n if (obj.selector === selector && (removeAll || obj.data === data)) {\n objs.splice(k, 1);\n removedIds[obj.id] = true;\n }\n }\n }\n break;\n }\n }\n }\n\n for (i in removedIds) {\n delete selectorObjects[i];\n this.size--;\n }\n\n for (i in selectorObjects) {\n selectors.push(selectorObjects[i].selector);\n }\n};\n\n// Sort by id property handler.\n//\n// a - Selector obj.\n// b - Selector obj.\n//\n// Returns Number.\nfunction sortById(a, b) {\n return a.id - b.id;\n}\n\n// Public: Find all matching decendants of the context element.\n//\n// context - An Element\n//\n// Returns Array of {selector, data, elements} matches.\nSelectorSet.prototype.queryAll = function(context) {\n if (!this.selectors.length) {\n return [];\n }\n\n var matches = {},\n results = [];\n var els = this.querySelectorAll(this.selectors.join(', '), context);\n\n var i, j, len, len2, el, m, match, obj;\n for (i = 0, len = els.length; i < len; i++) {\n el = els[i];\n m = this.matches(el);\n for (j = 0, len2 = m.length; j < len2; j++) {\n obj = m[j];\n if (!matches[obj.id]) {\n match = {\n id: obj.id,\n selector: obj.selector,\n data: obj.data,\n elements: []\n };\n matches[obj.id] = match;\n results.push(match);\n } else {\n match = matches[obj.id];\n }\n match.elements.push(el);\n }\n }\n\n return results.sort(sortById);\n};\n\n// Public: Match element against all selectors in set.\n//\n// el - An Element\n//\n// Returns Array of {selector, data} matches.\nSelectorSet.prototype.matches = function(el) {\n if (!el) {\n return [];\n }\n\n var i, j, k, len, len2, len3, index, keys, objs, obj, id;\n var indexes = this.activeIndexes,\n matchedIds = {},\n matches = [];\n\n for (i = 0, len = indexes.length; i < len; i++) {\n index = indexes[i];\n keys = index.element(el);\n if (keys) {\n for (j = 0, len2 = keys.length; j < len2; j++) {\n if ((objs = index.map.get(keys[j]))) {\n for (k = 0, len3 = objs.length; k < len3; k++) {\n obj = objs[k];\n id = obj.id;\n if (!matchedIds[id] && this.matchesSelector(el, obj.selector)) {\n matchedIds[id] = true;\n matches.push(obj);\n }\n }\n }\n }\n }\n }\n\n return matches.sort(sortById);\n};\n","import SelectorSet from 'selector-set';\n\nvar bubbleEvents = {};\nvar captureEvents = {};\nvar propagationStopped = new WeakMap();\nvar immediatePropagationStopped = new WeakMap();\nvar currentTargets = new WeakMap();\nvar currentTargetDesc = Object.getOwnPropertyDescriptor(Event.prototype, 'currentTarget');\n\nfunction before(subject, verb, fn) {\n var source = subject[verb];\n\n subject[verb] = function () {\n fn.apply(subject, arguments);\n return source.apply(subject, arguments);\n };\n\n return subject;\n}\n\nfunction matches(selectors, target, reverse) {\n var queue = [];\n var node = target;\n\n do {\n if (node.nodeType !== 1) break;\n\n var _matches = selectors.matches(node);\n\n if (_matches.length) {\n var matched = {\n node: node,\n observers: _matches\n };\n\n if (reverse) {\n queue.unshift(matched);\n } else {\n queue.push(matched);\n }\n }\n } while (node = node.parentElement);\n\n return queue;\n}\n\nfunction trackPropagation() {\n propagationStopped.set(this, true);\n}\n\nfunction trackImmediate() {\n propagationStopped.set(this, true);\n immediatePropagationStopped.set(this, true);\n}\n\nfunction getCurrentTarget() {\n return currentTargets.get(this) || null;\n}\n\nfunction defineCurrentTarget(event, getter) {\n if (!currentTargetDesc) return;\n Object.defineProperty(event, 'currentTarget', {\n configurable: true,\n enumerable: true,\n get: getter || currentTargetDesc.get\n });\n}\n\nfunction canDispatch(event) {\n try {\n event.eventPhase;\n return true;\n } catch (_) {\n return false;\n }\n}\n\nfunction dispatch(event) {\n if (!canDispatch(event)) return;\n var events = event.eventPhase === 1 ? captureEvents : bubbleEvents;\n var selectors = events[event.type];\n if (!selectors) return;\n var queue = matches(selectors, event.target, event.eventPhase === 1);\n if (!queue.length) return;\n before(event, 'stopPropagation', trackPropagation);\n before(event, 'stopImmediatePropagation', trackImmediate);\n defineCurrentTarget(event, getCurrentTarget);\n\n for (var i = 0, len1 = queue.length; i < len1; i++) {\n if (propagationStopped.get(event)) break;\n var matched = queue[i];\n currentTargets.set(event, matched.node);\n\n for (var j = 0, len2 = matched.observers.length; j < len2; j++) {\n if (immediatePropagationStopped.get(event)) break;\n matched.observers[j].data.call(matched.node, event);\n }\n }\n\n currentTargets[\"delete\"](event);\n defineCurrentTarget(event);\n}\n\nfunction on(name, selector, fn) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var capture = options.capture ? true : false;\n var events = capture ? captureEvents : bubbleEvents;\n var selectors = events[name];\n\n if (!selectors) {\n selectors = new SelectorSet();\n events[name] = selectors;\n document.addEventListener(name, dispatch, capture);\n }\n\n selectors.add(selector, fn);\n}\nfunction off(name, selector, fn) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var capture = options.capture ? true : false;\n var events = capture ? captureEvents : bubbleEvents;\n var selectors = events[name];\n if (!selectors) return;\n selectors.remove(selector, fn);\n if (selectors.size) return;\n delete events[name];\n document.removeEventListener(name, dispatch, capture);\n}\nfunction fire(target, name, detail) {\n return target.dispatchEvent(new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: detail\n }));\n}\n\nexport { fire, off, on };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar arrow = function (_, classNames) { return \"
\"; };\nexports.default = arrow;\n//# sourceMappingURL=arrow.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nvar group_1 = require(\"./group\");\nfunction body(state, classNames) {\n var className = composeClassName_1.default([\n classNames.body,\n [state.isAtTop, classNames.bodyAtTop],\n [state.isAtBottom, classNames.bodyAtBottom],\n [state.isScrollable, classNames.bodyScrollable]\n ]);\n var styleAttr = state.isOpen ?\n \"style=\\\"max-height: \" + state.maxBodyHeight + \"px;\\\"\" : '';\n return (\"\\n \\n
\\n \" + state.groups.map(function (groupState) { return group_1.default(groupState, state, classNames); }).join('') + \"\\n
\\n
\\n
\\n \\n \");\n}\nexports.default = body;\n//# sourceMappingURL=body.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nvar option_1 = require(\"./option\");\nvar group = function (groupState, state, classNames) {\n var className = composeClassName_1.default([\n classNames.group,\n [groupState.isDisabled, classNames.groupDisabled],\n [groupState.hasLabel, classNames.groupHasLabel]\n ]);\n return (\"\\n
\\n \" + (groupState.hasLabel ?\n \"
\" + groupState.label + \"
\" : '') + \"\\n \" + groupState.options.map(function (optionState) { return option_1.default(optionState, state, classNames); }).join('') + \"\\n
\\n \");\n};\nexports.default = group;\n//# sourceMappingURL=group.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar arrow_1 = require(\"./arrow\");\nvar value_1 = require(\"./value\");\nvar head = function (state, classNames) { return (\"\\n
\\n \" + value_1.default(state, classNames) + \"\\n \" + arrow_1.default(state, classNames) + \"\\n \\n
\\n\"); };\nexports.default = head;\n//# sourceMappingURL=head.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nfunction option(optionState, state, classNames) {\n var isSelected = state.selectedOption === optionState;\n var className = composeClassName_1.default([\n classNames.option,\n [isSelected, classNames.optionSelected],\n [optionState === state.focusedOption, classNames.optionFocused],\n [optionState.isDisabled, classNames.optionDisabled]\n ]);\n return (\"\\n \\n \" + optionState.label + \"\\n \\n \");\n}\nexports.default = option;\n//# sourceMappingURL=option.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nvar body_1 = require(\"./body\");\nvar head_1 = require(\"./head\");\nvar root = function (state, classNames) {\n var className = composeClassName_1.default([\n classNames.root,\n [state.isDisabled, classNames.rootDisabled],\n [state.isInvalid, classNames.rootInvalid],\n [state.isOpen, classNames.rootOpen],\n [state.isFocused, classNames.rootFocused],\n [state.hasValue, classNames.rootHasValue],\n [state.isOpenAbove, classNames.rootOpenAbove],\n [state.isOpenBelow, classNames.rootOpenBelow],\n [state.isUseNativeMode, classNames.rootNative]\n ]);\n return (\"\\n \\n \" + head_1.default(state, classNames) + \"\\n \" + (state.isUseNativeMode ? '' : body_1.default(state, classNames)) + \"\\n \\n \");\n};\nexports.default = root;\n//# sourceMappingURL=root.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar value = function (state, classNames) {\n return (\"\\n \\n \" + state.humanReadableValue + \"\\n \\n \");\n};\nexports.default = value;\n//# sourceMappingURL=value.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Behavior = /** @class */ (function () {\n function Behavior() {\n this.showPlaceholderWhenOpen = false;\n this.openOnFocus = false;\n this.closeOnSelect = true;\n this.useNativeUiOnMobile = true;\n this.loop = false;\n this.clampMaxVisibleItems = true;\n this.liveUpdates = false;\n this.maxVisibleItems = 15;\n Object.seal(this);\n }\n return Behavior;\n}());\nexports.default = Behavior;\n//# sourceMappingURL=Behavior.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Callbacks = /** @class */ (function () {\n function Callbacks() {\n this.onOpen = null;\n this.onClose = null;\n this.onSelect = null;\n this.onOptionClick = null;\n Object.seal(this);\n }\n return Callbacks;\n}());\nexports.default = Callbacks;\n//# sourceMappingURL=Callbacks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ClassNames = /** @class */ (function () {\n function ClassNames() {\n this.root = 'edd-root';\n this.rootOpen = 'edd-root-open';\n this.rootOpenAbove = 'edd-root-open-above';\n this.rootOpenBelow = 'edd-root-open-below';\n this.rootDisabled = 'edd-root-disabled';\n this.rootInvalid = 'edd-root-invalid';\n this.rootFocused = 'edd-root-focused';\n this.rootHasValue = 'edd-root-has-value';\n this.rootNative = 'edd-root-native';\n this.gradientTop = 'edd-gradient-top';\n this.gradientBottom = 'edd-gradient-bottom';\n this.head = 'edd-head';\n this.value = 'edd-value';\n this.arrow = 'edd-arrow';\n this.select = 'edd-select';\n this.body = 'edd-body';\n this.bodyScrollable = 'edd-body-scrollable';\n this.bodyAtTop = 'edd-body-at-top';\n this.bodyAtBottom = 'edd-body-at-bottom';\n this.itemsList = 'edd-items-list';\n this.group = 'edd-group';\n this.groupDisabled = 'edd-group-disabled';\n this.groupHasLabel = 'edd-group-has-label';\n this.groupLabel = 'edd-group-label';\n this.option = 'edd-option';\n this.optionDisabled = 'edd-option-disabled';\n this.optionFocused = 'edd-option-focused';\n this.optionSelected = 'edd-option-selected';\n Object.seal(this);\n }\n return ClassNames;\n}());\nexports.default = ClassNames;\n//# sourceMappingURL=ClassNames.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Behavior_1 = require(\"./Behavior\");\nvar Callbacks_1 = require(\"./Callbacks\");\nvar ClassNames_1 = require(\"./ClassNames\");\nvar Config = /** @class */ (function () {\n function Config() {\n this.callbacks = new Callbacks_1.default();\n this.classNames = new ClassNames_1.default();\n this.behavior = new Behavior_1.default();\n Object.seal(this);\n }\n return Config;\n}());\nexports.default = Config;\n//# sourceMappingURL=Config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpful_merge_1 = require(\"helpful-merge\");\nvar Config_1 = require(\"../Config/Config\");\nvar bindEvents_1 = require(\"../Events/bindEvents\");\nvar Renderer_1 = require(\"../Renderer/Renderer\");\nvar dispatchOpen_1 = require(\"../Shared/Util/dispatchOpen\");\nvar pollForSelectChange_1 = require(\"../Shared/Util/pollForSelectChange\");\nvar pollForSelectMutation_1 = require(\"../Shared/Util/pollForSelectMutation\");\nvar closeOthers_1 = require(\"../State/InjectedActions/closeOthers\");\nvar scrollToView_1 = require(\"../State/InjectedActions/scrollToView\");\nvar StateManager_1 = require(\"../State/StateManager\");\nvar StateMapper_1 = require(\"../State/StateMapper\");\nvar cache_1 = require(\"./cache\");\nvar Timers_1 = require(\"./Timers\");\nvar Easydropdown = /** @class */ (function () {\n function Easydropdown(selectElement, options) {\n this.config = helpful_merge_1.default(new Config_1.default(), options, true);\n this.state = StateMapper_1.default.mapFromSelect(selectElement, this.config);\n this.renderer = new Renderer_1.default(this.config.classNames);\n this.dom = this.renderer.render(this.state, selectElement);\n this.timers = new Timers_1.default();\n this.actions = StateManager_1.default.proxyActions(this.state, {\n closeOthers: closeOthers_1.default.bind(null, this, cache_1.default),\n scrollToView: scrollToView_1.default.bind(null, this.dom, this.timers)\n }, this.handleStateUpdate.bind(this));\n this.eventBindings = bindEvents_1.default({\n actions: this.actions,\n config: this.config,\n dom: this.dom,\n state: this.state,\n timers: this.timers\n });\n this.timers.pollChangeIntervalId = pollForSelectChange_1.default(this.dom.select, this.state, this.actions, this.config);\n if (this.config.behavior.liveUpdates) {\n this.timers.pollMutationIntervalId = pollForSelectMutation_1.default(this.dom.select, this.state, this.refresh.bind(this));\n }\n }\n Object.defineProperty(Easydropdown.prototype, \"selectElement\", {\n get: function () {\n return this.dom.select;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Easydropdown.prototype, \"value\", {\n get: function () {\n return this.state.value;\n },\n set: function (nextValue) {\n if (typeof nextValue !== 'string') {\n throw new TypeError('[EasyDropDown] Provided value not a valid string');\n }\n this.dom.select.value = nextValue;\n },\n enumerable: true,\n configurable: true\n });\n Easydropdown.prototype.open = function () {\n dispatchOpen_1.default(this.actions, this.config, this.dom);\n };\n Easydropdown.prototype.close = function () {\n this.actions.close();\n };\n Easydropdown.prototype.refresh = function () {\n this.state = helpful_merge_1.default(this.state, StateMapper_1.default.mapFromSelect(this.dom.select, this.config));\n this.renderer.update(this.state);\n this.dom.group.length = this.dom.option.length = this.dom.item.length = 0;\n Renderer_1.default.queryDomRefs(this.dom, ['group', 'option', 'item']);\n };\n Easydropdown.prototype.validate = function () {\n if (!this.state.isRequired || this.state.hasValue) {\n return true;\n }\n this.actions.invalidate();\n return false;\n };\n Easydropdown.prototype.destroy = function () {\n this.timers.clear();\n this.eventBindings.forEach(function (binding) { return binding.unbind(); });\n this.renderer.destroy();\n var cacheIndex = cache_1.default.indexOf(this);\n cache_1.default.splice(cacheIndex, 1);\n };\n Easydropdown.prototype.handleStateUpdate = function (state, key) {\n var callbacks = this.config.callbacks;\n this.renderer.update(state, key);\n switch (key) {\n case 'bodyStatus': {\n var cb = void 0;\n if (state.isOpen) {\n cb = callbacks.onOpen;\n }\n else {\n cb = callbacks.onClose;\n }\n if (typeof cb === 'function')\n cb();\n break;\n }\n case 'selectedIndex': {\n var cb = callbacks.onSelect;\n if (typeof cb === 'function')\n cb(state.value);\n break;\n }\n case 'isClickSelecting': {\n var cb = callbacks.onOptionClick;\n if (state[key] === false) {\n var nextValue = state.getOptionFromIndex(state.focusedIndex).value;\n if (typeof cb === 'function')\n cb(nextValue);\n }\n }\n }\n };\n return Easydropdown;\n}());\nexports.default = Easydropdown;\n//# sourceMappingURL=Easydropdown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EasydropdownFacade = /** @class */ (function () {\n function EasydropdownFacade(implementation) {\n this.open = implementation.open.bind(implementation);\n this.close = implementation.close.bind(implementation);\n this.refresh = implementation.refresh.bind(implementation);\n this.destroy = implementation.destroy.bind(implementation);\n this.validate = implementation.validate.bind(implementation);\n Object.defineProperties(this, {\n value: {\n get: function () { return implementation.value; },\n set: function (nextValue) { return implementation.value = nextValue; }\n }\n });\n }\n return EasydropdownFacade;\n}());\nexports.default = EasydropdownFacade;\n//# sourceMappingURL=EasydropdownFacade.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Timers = /** @class */ (function () {\n function Timers() {\n }\n Timers.prototype.clear = function () {\n var _this = this;\n Object.keys(this).forEach(function (key) { return window.clearInterval(_this[key]); });\n };\n return Timers;\n}());\nexports.default = Timers;\n//# sourceMappingURL=Timers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cache = [];\nexports.default = cache;\n//# sourceMappingURL=cache.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cache_1 = require(\"./cache\");\nvar Easydropdown_1 = require(\"./Easydropdown\");\nvar EasydropdownFacade_1 = require(\"./EasydropdownFacade\");\nfunction factory(selectElementOrSelector, options) {\n if (options === void 0) { options = {}; }\n var selectElement = selectElementOrSelector;\n if (typeof selectElementOrSelector === 'string') {\n selectElement = document.querySelector(selectElementOrSelector);\n }\n if (!(selectElement instanceof HTMLSelectElement)) {\n throw new TypeError('[EasyDropDown] Invalid select element provided');\n }\n if (selectElement.multiple) {\n throw new Error('[EasyDropDown] EasyDropDown does not support the `multiple`' +\n ' attribute on select elements.');\n }\n for (var _i = 0, cache_2 = cache_1.default; _i < cache_2.length; _i++) {\n var cachedInstance = cache_2[_i];\n if (cachedInstance.selectElement === selectElement) {\n return new EasydropdownFacade_1.default(cachedInstance);\n }\n }\n var instance = new Easydropdown_1.default(selectElement, options);\n // @ts-ignore\n cache_1.default.push(instance);\n return new EasydropdownFacade_1.default(instance);\n}\nfunction decorateFactory(factoryFn) {\n factoryFn.all = function (options) {\n if (options === void 0) { options = {}; }\n var selects = document.querySelectorAll('select');\n Array.prototype.forEach.call(selects, function (select) {\n var instance = factory(select, options);\n return instance;\n });\n };\n factoryFn.destroy = function () {\n var cacheCopy = cache_1.default.slice();\n cacheCopy.forEach(function (instance) { return instance.destroy(); });\n };\n return factoryFn;\n}\nvar decoratedFactory = decorateFactory(factory);\nexports.default = decoratedFactory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UP = 38;\nexports.DOWN = 40;\nexports.SPACE = 32;\nexports.ENTER = 13;\nexports.ESC = 27;\n//# sourceMappingURL=KeyCodes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OPTION = '[data-ref~=\"option\"]';\n//# sourceMappingURL=Selectors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpful_merge_1 = require(\"helpful-merge\");\nvar EventBinding = /** @class */ (function () {\n function EventBinding(eventBindingRaw) {\n this.type = '';\n this.target = null;\n this.debounce = 0;\n this.throttle = 0;\n this.handler = null;\n this.boundHandler = null;\n this.passive = false;\n helpful_merge_1.default(this, eventBindingRaw);\n Object.seal(this);\n }\n EventBinding.prototype.unbind = function () {\n if (!this.target)\n return;\n this.target.removeEventListener(this.type, this.boundHandler);\n };\n return EventBinding;\n}());\nexports.default = EventBinding;\n//# sourceMappingURL=EventBinding.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar closestParent_1 = require(\"../../Shared/Util/closestParent\");\nvar Selectors = require(\"../Constants/Selectors\");\nfunction handleBodyClick(e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom, config = _a.config;\n e.stopPropagation();\n var option = closestParent_1.default(e.target, Selectors.OPTION, true);\n if (!option)\n return;\n var optionIndex = Array.prototype.indexOf.call(dom.option, option);\n actions.selectOption(optionIndex, config.behavior.closeOnSelect);\n}\nexports.default = handleBodyClick;\n//# sourceMappingURL=handleBodyClick.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar closestParent_1 = require(\"../../Shared/Util/closestParent\");\nvar Selectors = require(\"../Constants/Selectors\");\nfunction handleBodyMousedown(e, _a) {\n var actions = _a.actions;\n e.stopPropagation();\n var option = closestParent_1.default(e.target, Selectors.OPTION, true);\n if (!option)\n return;\n actions.startClickSelecting();\n}\nexports.default = handleBodyMousedown;\n//# sourceMappingURL=handleBodyMousedown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar closestParent_1 = require(\"../../Shared/Util/closestParent\");\nvar Selectors = require(\"../Constants/Selectors\");\nfunction handleBodyMouseover(e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom;\n e.stopPropagation();\n var option = closestParent_1.default(e.target, Selectors.OPTION, true);\n if (!option || state.isKeying)\n return;\n var optionIndex = Array.prototype.indexOf.call(dom.option, option);\n actions.focusOption(optionIndex);\n}\nexports.default = handleBodyMouseover;\n//# sourceMappingURL=handleBodyMouseover.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar getIsMobilePlatform_1 = require(\"../../Shared/Util/getIsMobilePlatform\");\nfunction handleHeadClick(injectedGetIsMobilePlatform, e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom, config = _a.config;\n if (state.isUseNativeMode)\n return;\n var isMobilePlatform = injectedGetIsMobilePlatform(window.navigator.userAgent);\n e.stopPropagation();\n if (state.isClosed) {\n dispatchOpen_1.default(actions, config, dom);\n if (isMobilePlatform) {\n actions.focus();\n }\n else {\n dom.select.focus();\n }\n }\n else {\n actions.close();\n }\n}\nexports.handleHeadClick = handleHeadClick;\nvar boundHandleHeadClick = handleHeadClick.bind(null, getIsMobilePlatform_1.default);\nexports.default = boundHandleHeadClick;\n//# sourceMappingURL=handleHeadClick.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleItemsListScroll(e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom;\n e.stopPropagation();\n var _b = dom.itemsList, offsetHeight = _b.offsetHeight, scrollHeight = _b.scrollHeight, scrollTop = _b.scrollTop;\n if (scrollTop === 0) {\n actions.topOut();\n }\n else if (scrollTop === scrollHeight - offsetHeight) {\n actions.bottomOut();\n }\n else {\n actions.scroll();\n }\n}\nexports.default = handleItemsListScroll;\n//# sourceMappingURL=handleItemsListScroll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleSelectBlur(e, _a) {\n var actions = _a.actions, state = _a.state, config = _a.config;\n if (state.isKeying)\n return;\n actions.blur();\n if (config.behavior.openOnFocus && !state.isClickSelecting)\n actions.close();\n}\nexports.default = handleSelectBlur;\n//# sourceMappingURL=handleSelectBlur.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nfunction handleSelectFocus(e, _a) {\n var actions = _a.actions, config = _a.config, dom = _a.dom, state = _a.state;\n actions.focus();\n if (config.behavior.openOnFocus && !state.isUseNativeMode) {\n dispatchOpen_1.default(actions, config, dom);\n }\n}\nexports.default = handleSelectFocus;\n//# sourceMappingURL=handleSelectFocus.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleSelectInvalid(e, _a) {\n var actions = _a.actions, config = _a.config, dom = _a.dom;\n actions.invalidate();\n}\nexports.default = handleSelectInvalid;\n//# sourceMappingURL=handleSelectInvalid.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar killSelectReaction_1 = require(\"../../Shared/Util/killSelectReaction\");\nvar KeyCodes = require(\"../Constants/KeyCodes\");\nvar handleSelectKeydownDown_1 = require(\"./handleSelectKeydownDown\");\nvar handleSelectKeydownUp_1 = require(\"./handleSelectKeydownUp\");\nfunction handleSelectKeydown(e, handlerParams) {\n var keyCode = e.keyCode, target = e.target;\n var state = handlerParams.state, actions = handlerParams.actions, dom = handlerParams.dom, config = handlerParams.config;\n if (state.isUseNativeMode || state.isDisabled)\n return;\n switch (keyCode) {\n case KeyCodes.DOWN:\n handleSelectKeydownDown_1.default(e, handlerParams);\n break;\n case KeyCodes.UP:\n handleSelectKeydownUp_1.default(e, handlerParams);\n break;\n case KeyCodes.SPACE:\n if (state.isSearching) {\n e.stopPropagation();\n return;\n }\n case KeyCodes.ENTER:\n e.stopPropagation();\n e.preventDefault();\n killSelectReaction_1.default(target, handlerParams);\n if (state.isOpen) {\n actions.selectOption(state.focusedIndex, config.behavior.closeOnSelect);\n }\n else {\n dispatchOpen_1.default(actions, config, dom);\n }\n break;\n case KeyCodes.ESC:\n actions.close();\n break;\n }\n}\nexports.default = handleSelectKeydown;\n//# sourceMappingURL=handleSelectKeydown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar killSelectReaction_1 = require(\"../../Shared/Util/killSelectReaction\");\nfunction handleSelectKeydownDown(e, handlerParams) {\n var metaKey = e.metaKey, target = e.target;\n var state = handlerParams.state, dom = handlerParams.dom, actions = handlerParams.actions, config = handlerParams.config;\n var focusedIndex = state.focusedIndex > -1 ?\n state.focusedIndex : state.selectedIndex;\n var iterations = 0;\n var incrementAmount = 1;\n e.preventDefault();\n killSelectReaction_1.default(target, handlerParams);\n if (metaKey) {\n incrementAmount = Math.round(Math.max(state.totalOptions / 2, config.behavior.maxVisibleItems));\n }\n do {\n focusedIndex += incrementAmount;\n incrementAmount = 1;\n if (focusedIndex >= state.totalOptions) {\n focusedIndex = config.behavior.loop ? 0 : state.totalOptions - 1;\n }\n actions.focusOption(focusedIndex, true);\n iterations++;\n } while (state.focusedOption &&\n state.focusedOption.isDisabled &&\n iterations <= state.totalOptions);\n if (state.isClosed) {\n dispatchOpen_1.default(actions, config, dom);\n return;\n }\n}\nexports.default = handleSelectKeydownDown;\n//# sourceMappingURL=handleSelectKeydownDown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar killSelectReaction_1 = require(\"../../Shared/Util/killSelectReaction\");\nfunction handleSelectKeydownUp(e, handlerParams) {\n var metaKey = e.metaKey, target = e.target;\n var state = handlerParams.state, config = handlerParams.config, dom = handlerParams.dom, actions = handlerParams.actions;\n var focusedIndex = state.focusedIndex > -1 ?\n state.focusedIndex : state.selectedIndex;\n var iterations = 0;\n var incrementAmount = 1;\n e.preventDefault();\n killSelectReaction_1.default(target, handlerParams);\n if (metaKey) {\n incrementAmount = Math.round(Math.max(state.totalOptions / 2, config.behavior.maxVisibleItems));\n }\n do {\n focusedIndex -= incrementAmount;\n incrementAmount = 1;\n if (focusedIndex < 0) {\n focusedIndex = config.behavior.loop ? state.totalOptions - 1 : 0;\n }\n actions.focusOption(focusedIndex, true);\n iterations++;\n } while (state.focusedOption &&\n state.focusedOption.isDisabled &&\n iterations < state.totalOptions);\n if (state.isClosed) {\n dispatchOpen_1.default(actions, config, dom);\n }\n}\nexports.default = handleSelectKeydownUp;\n//# sourceMappingURL=handleSelectKeydownUp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar KeyCodes = require(\"../Constants/KeyCodes\");\nvar SEARCH_RESET_DURATION = 1200;\nfunction handleSelectKeypress(_a, _b, searchResetDuration) {\n var keyCode = _a.keyCode;\n var actions = _b.actions, timers = _b.timers, state = _b.state;\n if (searchResetDuration === void 0) { searchResetDuration = SEARCH_RESET_DURATION; }\n if (state.isUseNativeMode || [KeyCodes.UP, KeyCodes.DOWN].includes(keyCode))\n return;\n window.clearTimeout(timers.searchTimeoutId);\n actions.search();\n timers.searchTimeoutId = window.setTimeout(function () { return actions.resetSearch(); }, searchResetDuration);\n}\nexports.default = handleSelectKeypress;\n//# sourceMappingURL=handleSelectKeypress.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleWindowClick(_, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom;\n if (!state.isOpen)\n return;\n actions.close();\n dom.select.blur();\n}\nexports.default = handleWindowClick;\n//# sourceMappingURL=handleWindowClick.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar throttle_1 = require(\"../Shared/Util/throttle\");\nvar EventBinding_1 = require(\"./EventBinding\");\nvar getEventsList_1 = require(\"./getEventsList\");\nfunction bindEvent(handlerParams, eventBindingRaw) {\n var eventBinding = new EventBinding_1.default(eventBindingRaw);\n if (!eventBinding.target)\n return eventBinding;\n var boundHandler = function (e) { return eventBinding.handler(e, handlerParams); };\n if (eventBinding.throttle > 0) {\n eventBinding.boundHandler = throttle_1.default(boundHandler, eventBinding.throttle);\n }\n else {\n eventBinding.boundHandler = boundHandler;\n }\n eventBinding.target.addEventListener(eventBinding.type, eventBinding.boundHandler);\n return eventBinding;\n}\nexports.bindEvent = bindEvent;\nfunction bindEvents(handlerParams) {\n return getEventsList_1.default(handlerParams.dom).map(bindEvent.bind(null, handlerParams));\n}\nexports.default = bindEvents;\n//# sourceMappingURL=bindEvents.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar handleBodyClick_1 = require(\"./Handlers/handleBodyClick\");\nvar handleBodyMousedown_1 = require(\"./Handlers/handleBodyMousedown\");\nvar handleBodyMouseover_1 = require(\"./Handlers/handleBodyMouseover\");\nvar handleHeadClick_1 = require(\"./Handlers/handleHeadClick\");\nvar handleItemsListScroll_1 = require(\"./Handlers/handleItemsListScroll\");\nvar handleSelectBlur_1 = require(\"./Handlers/handleSelectBlur\");\nvar handleSelectFocus_1 = require(\"./Handlers/handleSelectFocus\");\nvar handleSelectInvalid_1 = require(\"./Handlers/handleSelectInvalid\");\nvar handleSelectKeydown_1 = require(\"./Handlers/handleSelectKeydown\");\nvar handleSelectKeypress_1 = require(\"./Handlers/handleSelectKeypress\");\nvar handleWindowClick_1 = require(\"./Handlers/handleWindowClick\");\nvar handleWindowClick_2 = require(\"./Handlers/handleWindowClick\");\nvar getEventsList = function (dom) { return [\n {\n target: dom.head,\n type: 'click',\n handler: handleHeadClick_1.default\n },\n {\n target: dom.body,\n type: 'mousedown',\n handler: handleBodyMousedown_1.default\n },\n {\n target: dom.body,\n type: 'click',\n handler: handleBodyClick_1.default\n },\n {\n target: dom.body,\n type: 'mouseover',\n handler: handleBodyMouseover_1.default\n },\n {\n target: dom.itemsList,\n type: 'scroll',\n handler: handleItemsListScroll_1.default\n },\n {\n target: dom.select,\n type: 'keydown',\n handler: handleSelectKeydown_1.default\n },\n {\n target: dom.select,\n type: 'invalid',\n handler: handleSelectInvalid_1.default\n },\n {\n target: dom.select,\n type: 'keypress',\n handler: handleSelectKeypress_1.default\n },\n {\n target: dom.select,\n type: 'focus',\n handler: handleSelectFocus_1.default\n },\n {\n target: dom.select,\n type: 'blur',\n handler: handleSelectBlur_1.default\n },\n {\n target: document.documentElement,\n type: 'click',\n handler: handleWindowClick_1.default\n },\n {\n target: window,\n type: 'resize',\n handler: handleWindowClick_2.default,\n throttle: 100\n }\n]; };\nexports.default = getEventsList;\n//# sourceMappingURL=getEventsList.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AttributeChangeType;\n(function (AttributeChangeType) {\n AttributeChangeType[\"ADD\"] = \"ADD\";\n AttributeChangeType[\"EDIT\"] = \"EDIT\";\n AttributeChangeType[\"REMOVE\"] = \"REMOVE\";\n})(AttributeChangeType || (AttributeChangeType = {}));\nexports.default = AttributeChangeType;\n//# sourceMappingURL=AttributeChangeType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DomChangeType;\n(function (DomChangeType) {\n DomChangeType[\"NONE\"] = \"NONE\";\n DomChangeType[\"FULL\"] = \"FULL\";\n DomChangeType[\"REPLACE\"] = \"REPLACE\";\n DomChangeType[\"INNER\"] = \"INNER\";\n DomChangeType[\"OUTER\"] = \"OUTER\";\n})(DomChangeType = exports.DomChangeType || (exports.DomChangeType = {}));\nexports.default = DomChangeType;\n//# sourceMappingURL=DomChangeType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Dom = /** @class */ (function () {\n function Dom() {\n this.select = null;\n this.root = null;\n this.head = null;\n this.value = null;\n this.body = null;\n this.arrow = null;\n this.itemsList = null;\n this.item = [];\n this.group = [];\n this.option = [];\n }\n Dom.prototype.sumItemsHeight = function (max) {\n if (max === void 0) { max = Infinity; }\n var totalHeight = 0;\n for (var i = 0, item = void 0; (item = this.item[i]); i++) {\n if (i === max)\n break;\n totalHeight += item.offsetHeight;\n }\n return totalHeight;\n };\n return Dom;\n}());\nexports.default = Dom;\n//# sourceMappingURL=Dom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PatchCommand = /** @class */ (function () {\n function PatchCommand() {\n this.newNode = null;\n this.newInnerHtml = '';\n this.newTextContent = '';\n this.attributeChanges = [];\n this.childCommands = [];\n this.index = null;\n }\n return PatchCommand;\n}());\nexports.default = PatchCommand;\n//# sourceMappingURL=PatchCommand.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar root_1 = require(\"../Components/root\");\nvar createDomElementFromHtml_1 = require(\"../Shared/Util/createDomElementFromHtml\");\nvar Dom_1 = require(\"./Dom\");\nvar domDiff_1 = require(\"./domDiff\");\nvar domPatch_1 = require(\"./domPatch\");\nvar Renderer = /** @class */ (function () {\n function Renderer(classNames) {\n this.dom = new Dom_1.default();\n this.classNames = classNames;\n }\n Renderer.prototype.render = function (state, selectElement) {\n var html = root_1.default(state, this.classNames);\n var rootElement = createDomElementFromHtml_1.default(html);\n this.dom = new Dom_1.default();\n this.dom.root = rootElement;\n this.dom.option.length = this.dom.group.length = 0;\n Renderer.queryDomRefs(this.dom);\n this.injectSelect(selectElement);\n return this.dom;\n };\n Renderer.prototype.update = function (state, key) {\n var nextHtml = root_1.default(state, this.classNames);\n var nextRoot = createDomElementFromHtml_1.default(nextHtml);\n var diffCommand = domDiff_1.default(this.dom.root, nextRoot);\n domPatch_1.default(this.dom.root, diffCommand);\n if (key === 'selectedIndex') {\n this.syncSelectWithValue(state.value);\n }\n };\n Renderer.prototype.destroy = function () {\n this.dom.select.classList.remove(this.classNames.select);\n try {\n this.dom.root.parentElement.replaceChild(this.dom.select, this.dom.root);\n }\n catch (err) { /**/ }\n };\n Renderer.prototype.injectSelect = function (selectElement) {\n var parent = selectElement.parentElement;\n var tempSelect = this.dom.select;\n if (!parent)\n throw new Error('[EasyDropDown] The provided `` element\");\n }\n }\n return Object.seal(state);\n };\n StateMapper.mapGroup = function (group) {\n if (group === void 0) { group = null; }\n return helpful_merge_1.default(new Group_1.default(), {\n label: group ? group.label : '',\n isDisabled: group ? group.disabled : false\n });\n };\n StateMapper.mapOption = function (option, group) {\n if (group === void 0) { group = null; }\n if (!(option instanceof HTMLOptionElement))\n throw new TypeError('[EasyDropDown] Invalid markup structure');\n var isParentGroupDisabled = group !== null && group.disabled;\n return helpful_merge_1.default(new Option_1.default(), {\n label: option.textContent,\n value: option.value,\n isDisabled: option.disabled || isParentGroupDisabled\n });\n };\n return StateMapper;\n}());\nexports.default = StateMapper;\n//# sourceMappingURL=StateMapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CollisionType_1 = require(\"../Shared/Util/Constants/CollisionType\");\nvar BodyStatus_1 = require(\"./Constants/BodyStatus\");\nvar ScrollStatus_1 = require(\"./Constants/ScrollStatus\");\nvar resolveActions = function (state) { return ({\n focus: function () {\n state.isFocused = true;\n },\n blur: function () {\n state.isFocused = false;\n },\n invalidate: function () {\n state.isInvalid = true;\n },\n validate: function () {\n state.isInvalid = false;\n },\n topOut: function () {\n state.scrollStatus = ScrollStatus_1.default.AT_TOP;\n },\n bottomOut: function () {\n state.scrollStatus = ScrollStatus_1.default.AT_BOTTOM;\n },\n scroll: function () {\n state.scrollStatus = ScrollStatus_1.default.SCROLLED;\n },\n makeScrollable: function () {\n state.isScrollable = true;\n },\n makeUnscrollable: function () {\n state.isScrollable = false;\n },\n open: function (maxBodyHeight, collisionType, isScrollable) {\n if (state.isDisabled)\n return;\n this.closeOthers();\n switch (collisionType) {\n case CollisionType_1.default.NONE:\n case CollisionType_1.default.TOP:\n state.bodyStatus = BodyStatus_1.default.OPEN_BELOW;\n break;\n case CollisionType_1.default.BOTTOM:\n state.bodyStatus = BodyStatus_1.default.OPEN_ABOVE;\n break;\n }\n state.isScrollable = isScrollable;\n state.maxBodyHeight = maxBodyHeight;\n this.scrollToView(state, true);\n },\n close: function () {\n state.bodyStatus = BodyStatus_1.default.CLOSED;\n state.focusedIndex = -1;\n this.blur();\n },\n startClickSelecting: function () {\n state.isClickSelecting = true;\n },\n selectOption: function (index, close) {\n if (close === void 0) { close = true; }\n var optionAtIndex = state.getOptionFromIndex(index);\n state.isClickSelecting = false;\n if (index > -1 && (!optionAtIndex || optionAtIndex.isDisabled))\n return;\n state.selectedIndex = index;\n if (state.isInvalid && state.hasValue) {\n this.validate();\n }\n if (state.isSearching) {\n this.scrollToView(state);\n }\n else if (close) {\n this.close();\n }\n },\n focusOption: function (index, shouldScrollToView) {\n if (shouldScrollToView === void 0) { shouldScrollToView = false; }\n var scrollToMiddle = Math.abs(index - state.focusedIndex) > 1;\n state.focusedIndex = index;\n if (shouldScrollToView) {\n this.scrollToView(state, scrollToMiddle);\n }\n },\n search: function () {\n state.isSearching = true;\n },\n resetSearch: function () {\n state.isSearching = false;\n },\n keying: function () {\n state.isKeying = true;\n },\n resetKeying: function () {\n state.isKeying = false;\n },\n useNative: function () {\n state.isUseNativeMode = true;\n }\n}); };\nexports.default = resolveActions;\n//# sourceMappingURL=resolveActions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"custom-event-polyfill\");\nrequire(\"./Shared/Polyfills/Element.matches\");\nvar factory_1 = require(\"./Easydropdown/factory\");\nexports.default = factory_1.default;\n//# sourceMappingURL=index.js.map","export const HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport const defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: (err) => typeof console !== \"undefined\" && console.warn(err),\n getWeek: (givenDate) => {\n const date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export const english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: (nth) => {\n const s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export const pad = (number, length = 2) => `000${number}`.slice(length * -1);\nexport const int = (bool) => (bool === true ? 1 : 0);\nexport function debounce(fn, wait) {\n let t;\n return function () {\n clearTimeout(t);\n t = setTimeout(() => fn.apply(this, arguments), wait);\n };\n}\nexport const arrayify = (obj) => obj instanceof Array ? obj : [obj];\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n const e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n const wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (const key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n const path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nconst doNothing = () => undefined;\nexport const monthToStr = (monthNumber, shorthand, locale) => locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber];\nexport const revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n H: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n J: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n K: (dateObj, amPM, locale) => {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: (_, unixSeconds) => new Date(parseFloat(unixSeconds) * 1000),\n W: function (dateObj, weekNum, locale) {\n const weekNumber = parseInt(weekNum);\n const date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: (dateObj, year) => {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: (_, ISODate) => new Date(ISODate),\n d: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n h: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n i: (dateObj, minutes) => {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: (_, unixMillSeconds) => new Date(parseFloat(unixMillSeconds)),\n w: doNothing,\n y: (dateObj, year) => {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport const tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport const formats = {\n Z: (date) => date.toISOString(),\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: (date) => pad(date.getHours()),\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: (date, locale) => locale.amPM[int(date.getHours() > 11)],\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: (date) => pad(date.getSeconds()),\n U: (date) => date.getTime() / 1000,\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: (date) => pad(date.getFullYear(), 4),\n d: (date) => pad(date.getDate()),\n h: (date) => (date.getHours() % 12 ? date.getHours() % 12 : 12),\n i: (date) => pad(date.getMinutes()),\n j: (date) => date.getDate(),\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: (date) => pad(date.getMonth() + 1),\n n: (date) => date.getMonth() + 1,\n s: (date) => date.getSeconds(),\n u: (date) => date.getTime(),\n w: (date) => date.getDay(),\n y: (date) => String(date.getFullYear()).substring(2),\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport const createDateFormatter = ({ config = defaults, l10n = english, isMobile = false, }) => (dateObj, frmt, overrideLocale) => {\n const locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map((c, i, arr) => formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\")\n .join(\"\");\n};\nexport const createDateParser = ({ config = defaults, l10n = english }) => (date, givenFormat, timeless, customLocale) => {\n if (date !== 0 && !date)\n return undefined;\n const locale = customLocale || l10n;\n let parsedDate;\n const dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n const format = givenFormat || (config || defaults).dateFormat;\n const datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr))\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n let matched, ops = [];\n for (let i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n const token = format[i];\n const isBackSlash = token === \"\\\\\";\n const escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n const match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n ops.forEach(({ fn, val }) => (parsedDate = fn(parsedDate, val, locale) || parsedDate));\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(`Invalid date provided: ${dateOrig}`));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n};\nexport function compareDates(date1, date2, timeless = true) {\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport const isBetween = (ts, ts1, ts2) => {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport const duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n let hours = config.defaultHour;\n let minutes = config.defaultMinute;\n let seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n const minHour = config.minDate.getHours();\n const minMinutes = config.minDate.getMinutes();\n const minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n const maxHr = config.maxDate.getHours();\n const maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours, minutes, seconds };\n}\n","import { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nconst DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n const self = {\n config: Object.assign(Object.assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth(month = self.currentMonth, yr = self.currentYear) {\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n const config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n const daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n const defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n const defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n const prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n let hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n const limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n const limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n const maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n const minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n const date = dateObj || self.latestSelectedDateObj;\n if (date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n const eventTarget = getEventTarget(event);\n const year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach((ev) => bind(element, ev, handler, options));\n if (element instanceof Array)\n return element.forEach((el) => bind(el, event, handler, options));\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: () => element.removeEventListener(event, handler),\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach((evt) => {\n Array.prototype.forEach.call(self.element.querySelectorAll(`[data-${evt}]`), (el) => bind(el, \"click\", self[evt]));\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n const debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", (e) => {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n const selText = (e) => getEventTarget(e).select();\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", () => self.secondElement && self.secondElement.select());\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", (e) => {\n updateTime(e);\n triggerChange();\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n const jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n const oldYear = self.currentYear;\n const oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n const eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n const target = e && getEventTarget(e);\n const input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n const event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n const fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n const { weekWrapper, weekNumbers } = buildWeeks();\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n const customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n const wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n const dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n const startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n for (let m = startMonth; m != endMonth; m += delta) {\n const month = self.daysContainer.children[m];\n const startIndex = delta > 0 ? 0 : month.children.length - 1;\n const endIndex = delta > 0 ? month.children.length : -1;\n for (let i = startIndex; i != endIndex; i += delta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n const givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n const loopDelta = delta > 0 ? 1 : -1;\n for (let m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n const month = self.daysContainer.children[m];\n const startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n const numMonthDays = month.children.length;\n for (let i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n const dayFocused = isInView(document.activeElement || document.body);\n const startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n const firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n const prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n const daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n let dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (let dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n const dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n const frag = document.createDocumentFragment();\n for (let i = 0; i < self.config.showMonths; i++) {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n const shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (let i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n const month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n const container = createElement(\"div\", \"flatpickr-month\");\n const monthNavFragment = window.document.createDocumentFragment();\n let monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", (e) => {\n const target = getEventTarget(e);\n const selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n const yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n const yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n const currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container,\n yearElement,\n monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (let m = self.config.showMonths; m--;) {\n const month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: () => self.__hidePrevMonthArrow,\n set(bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: () => self.__hideNextMonthArrow,\n set(bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n const defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n const separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n const hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n const minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n const secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (let i = self.config.showMonths; i--;) {\n const container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n const firstDayOfWeek = self.l10n.firstDayOfWeek;\n let weekdays = [...self.l10n.weekdays.shorthand];\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = [\n ...weekdays.splice(firstDayOfWeek, weekdays.length),\n ...weekdays.splice(0, firstDayOfWeek),\n ];\n }\n for (let i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = `\n \n ${weekdays.join(\"\")}\n \n `;\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n const weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n const weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper,\n weekNumbers,\n };\n }\n function changeMonth(value, isOffset = true) {\n const delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent = true, toInitial = true) {\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n const { hours, minutes, seconds } = getDefaultHours(self.config);\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (let i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n const wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach((k) => {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n const eventTarget = getEventTarget(e);\n const isCalendarElement = isCalendarElem(eventTarget);\n const isInput = eventTarget === self.input ||\n eventTarget === self.altInput ||\n self.element.contains(eventTarget) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n const lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n const isIgnored = !self.config.ignoredFocusElements.some((elem) => elem.contains(eventTarget));\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n const newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless = true) {\n var _a;\n const dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n const bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (let i = 0, d; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n const parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n const isInput = e.target === self._input;\n if (isInput &&\n (self.selectedDates.length > 0 || self._input.value.length > 0) &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n const eventTarget = getEventTarget(e);\n const isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n const allowInput = self.config.allowInput;\n const allowKeydown = self.isOpen && (!allowInput || !isInput);\n const allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n const isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n const delta = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta);\n else {\n e.stopPropagation();\n changeMonth(delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n const delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n const elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter((x) => x);\n const i = elems.indexOf(eventTarget);\n if (i !== -1) {\n const target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n const hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n let containsDisabled = false;\n let minRange = 0, maxRange = 0;\n for (let t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (let m = 0; m < self.config.showMonths; m++) {\n const month = self.daysContainer.children[m];\n for (let i = 0, l = month.children.length; i < l; i++) {\n const dayElem = month.children[i], date = dayElem.dateObj;\n const timestamp = date.getTime();\n const outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n continue;\n }\n else if (containsDisabled && !outOfRange)\n continue;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement = self._positionElement) {\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n const eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n const wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(() => self.hourElement.select(), 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return (date) => {\n const dateObj = (self.config[`_${type}Date`] = self.parseDate(date, self.config.dateFormat));\n const inverseDateObj = self.config[`_${type === \"min\" ? \"max\" : \"min\"}Date`];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter((d) => isEnabled(d));\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n const boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n const userConfig = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n const formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: () => self.config._enable,\n set: (dates) => {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: () => self.config._disable,\n set: (dates) => {\n self.config._disable = parseDateRules(dates);\n },\n });\n const timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n const defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n const defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + ` h:i${userConfig.enableSeconds ? \":S\" : \"\"} K`;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: () => self.config._minDate,\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: () => self.config._maxDate,\n set: minMaxDateSetter(\"max\"),\n });\n const minMaxTimeSetter = (type) => (val) => {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n };\n Object.defineProperty(self.config, \"minTime\", {\n get: () => self.config._minTime,\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: () => self.config._maxTime,\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (let i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter((hook) => self.config[hook] !== undefined).forEach((hook) => {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (let i = 0; i < self.config.plugins.length; i++) {\n const pluginConf = self.config.plugins[i](self) || {};\n for (const key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(`flatpickr: invalid locale ${self.config.locale}`));\n self.l10n = Object.assign(Object.assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = `(${self.l10n.amPM[0]}|${self.l10n.amPM[1]}|${self.l10n.amPM[0].toLowerCase()}|${self.l10n.amPM[1].toLowerCase()})`;\n const userConfig = Object.assign(Object.assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n const positionElement = customPositionElement || self._positionElement;\n const calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, ((acc, child) => acc + child.offsetHeight), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n const top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n let left = window.pageXOffset + inputBounds.left;\n let isCenter = false;\n let isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n const right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n const rightMost = left + calendarWidth > window.document.body.offsetWidth;\n const centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = `${top}px`;\n if (!rightMost) {\n self.calendarContainer.style.left = `${left}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = `${right}px`;\n }\n else {\n const doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n const bodyWidth = window.document.body.offsetWidth;\n const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n const centerBefore = \".flatpickr-calendar.centerMost:before\";\n const centerAfter = \".flatpickr-calendar.centerMost:after\";\n const centerIndex = doc.cssRules.length;\n const centerStyle = `{left:${inputBounds.left}px;right:auto;}`;\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(`${centerBefore},${centerAfter}${centerStyle}`, centerIndex);\n self.calendarContainer.style.left = `${centerLeft}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n let editableSheet = null;\n for (let i = 0; i < document.styleSheets.length; i++) {\n const sheet = document.styleSheets[i];\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n const isSelectable = (day) => day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n const t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n const target = t;\n const selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n const shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n const selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n const isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n const single = self.config.mode === \"single\" && !self.config.enableTime;\n const range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n const CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n clickOpens: [\n () => {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (const key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach((x) => x());\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach((x) => x());\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n let dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map((d) => self.parseDate(d, format));\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map((date) => self.parseDate(date, format));\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map((date) => self.parseDate(date, format));\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(inputDate)}`));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter((d) => d instanceof Date && isEnabled(d, false)));\n if (self.config.mode === \"range\")\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n function setDate(date, triggerChange = false, format = self.config.dateFormat) {\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map((rule) => {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter((x) => x);\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n const preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n const inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", (e) => {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n const hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (let i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n const e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (let i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach((yearElement, i) => {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map((dObj) => self.formatDate(dObj, format))\n .filter((d, i, arr) => self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i)\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange = true) {\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n const eventTarget = getEventTarget(e);\n const isPrevMonth = self.prevMonthNav.contains(eventTarget);\n const isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n const isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n const min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n let newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n const isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n const nodes = Array.prototype.slice\n .call(nodeList)\n .filter((x) => x instanceof HTMLElement);\n const instances = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: Object.assign({}, English),\n default: Object.assign({}, English),\n};\nflatpickr.localize = (l10n) => {\n flatpickr.l10ns.default = Object.assign(Object.assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = (config) => {\n flatpickr.defaultConfig = Object.assign(Object.assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target, ...args) {\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n for (const source of args) {\n if (source) {\n Object.keys(source).forEach((key) => (target[key] = source[key]));\n }\n }\n return target;\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ArrayStrategy_1 = require(\"./Constants/ArrayStrategy\");\nvar Messages = require(\"./Messages\");\nvar Config = /** @class */ (function () {\n function Config() {\n this.deep = false;\n this.useReferenceIfTargetUnset = false;\n this.useReferenceIfArray = false;\n this.preserveTypeIfTargetUnset = false;\n this.includeReadOnly = false;\n this.includeNonEmurable = false;\n this.arrayStrategy = ArrayStrategy_1.default.REPLACE;\n this.errorMessage = Messages.MERGE_ERROR;\n Object.seal(this);\n }\n return Config;\n}());\nexports.default = Config;\n//# sourceMappingURL=Config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ArrayStrategy;\n(function (ArrayStrategy) {\n ArrayStrategy[\"PUSH\"] = \"PUSH\";\n ArrayStrategy[\"REPLACE\"] = \"REPLACE\";\n})(ArrayStrategy || (ArrayStrategy = {}));\nexports.default = ArrayStrategy;\n//# sourceMappingURL=ArrayStrategy.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar merge_1 = require(\"./merge\");\nvar FluentMerge = /** @class */ (function () {\n function FluentMerge() {\n this.target = null;\n this.sources = [];\n this.config = {};\n }\n /**\n * Supplies a fluent merge instance with a target object to merge into and return.\n */\n FluentMerge.prototype.to = function (target) {\n this.target = target;\n return this;\n };\n /**\n * Supplies a fluent merge instance with one or more source objects to merge from, in right to left order.\n */\n FluentMerge.prototype.from = function () {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n this.sources = sources;\n return this;\n };\n /**\n * Supplies a fluent merge instance with a configuration object of one or more options.\n */\n FluentMerge.prototype.with = function (options) {\n this.config = options;\n return this;\n };\n /**\n * Executes a fluent merge instance, merging all provided sources into the\n * target, as per any provided configuration, and returning a reference to\n * the target.\n */\n FluentMerge.prototype.exec = function () {\n var _this = this;\n return this.sources.reduce(function (target, source) { return merge_1.default(target, source, _this.config); }, this.target || {});\n };\n return FluentMerge;\n}());\nexports.default = FluentMerge;\n//# sourceMappingURL=FluentMerge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MERGE_ERROR = function (offender, suggestion) {\n if (suggestion === void 0) { suggestion = ''; }\n return \"Unknown property \\\"\" + offender + \"\\\"\" + (suggestion ? \". Did you mean \\\"\" + suggestion + \"\\\"?\" : '');\n};\nexports.TYPE_ERROR_TARGET = function (target) {\n return \"[Helpful Merge] Target \\\"\" + target + \"\\\" must be a valid object\";\n};\nexports.TYPE_ERROR_SOURCE = function (source) {\n return \"[Helpful Merge] Source \\\"\" + source + \"\\\" must be a valid object\";\n};\nexports.INVALID_ARRAY_STRATEGY = function (strategy) {\n return \"[Helpful Merge] Invalid array strategy \\\"\" + strategy + \"\\\"\";\n};\n//# sourceMappingURL=Messages.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction deriveCustoTypeInstance(_a) {\n var constructor = _a.constructor;\n if (typeof constructor === 'function' && constructor !== Object) {\n return new constructor();\n }\n return {};\n}\nexports.default = deriveCustoTypeInstance;\n//# sourceMappingURL=deriveCustomTypeInstance.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleMergeError(err, target, offendingKey, message) {\n // Rethrow if any of the following:\n // - offending key already exists on target\n // - object not sealed\n // - is extensible\n // - error not a TypeError\n if (Object.hasOwnProperty.call(target, offendingKey) ||\n !Object.isSealed(target) ||\n Object.isExtensible(target) ||\n !(err instanceof TypeError))\n throw err;\n var reducer = reduceBestMatch.bind(null, offendingKey, offendingKey.toLowerCase());\n var primer = { key: '', delta: Infinity, totalMatching: 0 };\n // Iterate through keys in target, for each key, compare with\n // the offending key. Greatest number of matching characters wins.\n var bestMatch = Object.keys(target).reduce(reducer, primer);\n var suggestion = bestMatch && bestMatch.totalMatching > 1 ? bestMatch.key : '';\n throw new TypeError(message(offendingKey, suggestion));\n}\n/**\n * Compares current key with current best match.\n */\nfunction reduceBestMatch(offendingKeyLower, offendingKey, currBestMatch, currKey) {\n var totalMatching = getTotalMatching(currKey.toLowerCase(), offendingKeyLower);\n var delta = Math.abs(currKey.length - offendingKey.length);\n if (totalMatching > currBestMatch.totalMatching ||\n (totalMatching === currBestMatch.totalMatching && delta < currBestMatch.delta)) {\n // If a greater number of matching characters, or the same\n // number, but a lesser delta, usurp the best match\n return { key: currKey, delta: delta, totalMatching: totalMatching };\n }\n return currBestMatch;\n}\n/**\n * Returns the number of common, consecutive characters\n * between two strings.\n */\nfunction getTotalMatching(possibleKey, offendingKey) {\n var longer = possibleKey.length > offendingKey.length ? possibleKey : offendingKey;\n var shorter = longer === possibleKey ? offendingKey : possibleKey;\n var leftPointer = 0;\n var leftInnerPointer = 0;\n var leftTotalMatching = 0;\n var lastCommonIndex = -1;\n for (; leftPointer < longer.length; leftPointer++) {\n while (leftTotalMatching === 0 &&\n longer[leftPointer] !== shorter[leftInnerPointer] &&\n leftInnerPointer < shorter.length) {\n // No match at present, move innerPointer through all possible\n // indices until a match is found\n leftInnerPointer++;\n }\n if (longer[leftPointer] === shorter[leftInnerPointer]) {\n // Match found\n if (lastCommonIndex !== leftPointer - 1) {\n // If beginning of a new match, reset total common\n leftTotalMatching = 0;\n }\n lastCommonIndex = leftPointer;\n leftTotalMatching++;\n leftInnerPointer++;\n // Whole word matched, end\n if (leftTotalMatching === shorter.length)\n break;\n }\n else if (leftTotalMatching > 1) {\n // No match, but at least two common characters found, end\n break;\n }\n else {\n // No match at this index, reset\n leftTotalMatching = leftInnerPointer = 0;\n }\n }\n lastCommonIndex = -1;\n var rightPointer = 0;\n var rightInnerPointer = 0;\n var rightTotalMatching = 0;\n var longerLastIndex = longer.length - 1;\n var shorterLastIndex = shorter.length - 1;\n // As above, but from right to left\n for (; rightPointer < longer.length - leftPointer; rightPointer++) {\n while (rightTotalMatching === 0 &&\n longer[longerLastIndex - rightPointer] !== shorter[shorterLastIndex - rightInnerPointer] &&\n rightInnerPointer < shorter.length) {\n rightInnerPointer++;\n }\n if (longer[longerLastIndex - rightPointer] === shorter[shorterLastIndex - rightInnerPointer]) {\n if (lastCommonIndex !== rightPointer - 1)\n rightTotalMatching = 0;\n lastCommonIndex = rightPointer;\n rightTotalMatching++;\n rightInnerPointer++;\n }\n else if (rightTotalMatching > 1) {\n break;\n }\n else {\n rightTotalMatching = rightInnerPointer = 0;\n }\n }\n return Math.min(shorter.length, leftTotalMatching + rightTotalMatching);\n}\nexports.getTotalMatching = getTotalMatching;\nexports.default = handleMergeError;\n//# sourceMappingURL=handleMergeError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar merge_1 = require(\"./merge\");\nvar ArrayStrategy_1 = require(\"./Constants/ArrayStrategy\");\nexports.ArrayStrategy = ArrayStrategy_1.default;\nexports.default = merge_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Config_1 = require(\"./Config\");\nvar ArrayStrategy_1 = require(\"./Constants/ArrayStrategy\");\nvar deriveCustomTypeInstance_1 = require(\"./deriveCustomTypeInstance\");\nvar FluentMerge_1 = require(\"./FluentMerge\");\nvar handleMergeError_1 = require(\"./handleMergeError\");\nvar Messages = require(\"./Messages\");\nfunction merge(target, source, options) {\n if (options === void 0) { options = null; }\n var isClientSide = typeof window !== 'undefined';\n var sourceKeys = [];\n var config;\n if (options instanceof Config_1.default) {\n config = options;\n }\n else {\n config = new Config_1.default();\n }\n if (typeof options === 'boolean' && options === true) {\n config.deep = true;\n }\n else if (options && config !== options && typeof options === 'object') {\n merge(config, options);\n if ([ArrayStrategy_1.default.PUSH, ArrayStrategy_1.default.REPLACE].indexOf(config.arrayStrategy) < 0) {\n throw RangeError(Messages.INVALID_ARRAY_STRATEGY(config.arrayStrategy));\n }\n }\n if (!target || typeof target !== 'object') {\n throw new TypeError(Messages.TYPE_ERROR_TARGET(target));\n }\n if (!source || typeof source !== 'object') {\n throw new TypeError(Messages.TYPE_ERROR_SOURCE(source));\n }\n if (Array.isArray(source)) {\n if (config.arrayStrategy === ArrayStrategy_1.default.PUSH) {\n // Merge arrays via push()\n target.push.apply(target, source);\n return target;\n }\n for (var i = 0; i < source.length; i++) {\n sourceKeys.push(i.toString());\n }\n }\n else {\n sourceKeys = Object.getOwnPropertyNames(source);\n }\n for (var _i = 0, sourceKeys_1 = sourceKeys; _i < sourceKeys_1.length; _i++) {\n var key = sourceKeys_1[_i];\n var descriptor = Object.getOwnPropertyDescriptor(source, key);\n // Skip read-only properties\n if (typeof descriptor.get === 'function' && !descriptor.set && !config.includeReadOnly)\n continue;\n // Skip non-enumerable properties\n if (!descriptor.enumerable && !config.includeNonEmurable)\n continue;\n if (!config.deep ||\n typeof source[key] !== 'object' ||\n (isClientSide && source[key] instanceof window.Node) ||\n (isClientSide && source[key] === window.document.body) ||\n (isClientSide && source[key] === window.document.documentElement) ||\n source[key] === null ||\n (Array.isArray(source[key]) && config.useReferenceIfArray) ||\n (!target[key] && config.useReferenceIfTargetUnset)) {\n // If:\n // - Shallow merge\n // - All non-object primatives\n // - , , or DOM Nodes\n // - Null pointers\n // - Arrays, if `useReferenceIfArray` set\n // - Target prop null or undefined and `useRererenceIfTargetUnset` set\n try {\n target[key] = source[key];\n }\n catch (err) {\n handleMergeError_1.default(err, target, key, config.errorMessage);\n }\n }\n else {\n // Deep merge objects/arrays\n if (!Object.prototype.hasOwnProperty.call(target, key) || target[key] === null) {\n // If property does not exist on target, instantiate an empty\n // object, custom type or array to merge into\n try {\n target[key] = Array.isArray(source[key]) ?\n [] : config.preserveTypeIfTargetUnset ?\n deriveCustomTypeInstance_1.default(source[key]) : {};\n }\n catch (err) {\n handleMergeError_1.default(err, target, key, config.errorMessage);\n }\n }\n // Recursively deep copy objects or arrays\n merge(target[key], source[key], config);\n }\n }\n return target;\n}\nvar createFluent = function (method) { return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return (_a = new FluentMerge_1.default())[method].apply(_a, args);\n var _a;\n}; };\nObject\n .keys(FluentMerge_1.default.prototype)\n .forEach(function (method) { return merge[method] = createFluent(method); });\nexports.default = merge;\n//# sourceMappingURL=merge.js.map","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nfunction set(target, property, value, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n\n var desc;\n\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n\n return true;\n };\n }\n\n return set(target, property, value, receiver);\n}\n\nfunction _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n\n if (!s && isStrict) {\n throw new Error('failed to set property');\n }\n\n return value;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nexport { _createClass as _, _classCallCheck as a, _objectWithoutProperties as b, _typeof as c, _inherits as d, _createSuper as e, _slicedToArray as f, _get as g, _getPrototypeOf as h, _set as i };\n","import { c as _typeof } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\n\n/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n/**\r\n Direction\r\n @prop {string} NONE\r\n @prop {string} LEFT\r\n @prop {string} FORCE_LEFT\r\n @prop {string} RIGHT\r\n @prop {string} FORCE_RIGHT\r\n*/\n\nvar DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n/**\r\n Direction\r\n @enum {string}\r\n*/\n\n/** Returns next char index in direction */\nfunction indexInDirection(pos, direction) {\n if (direction === DIRECTION.LEFT) --pos;\n return pos;\n}\n/** Returns next char position in direction */\n\nfunction posInDirection(pos, direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return --pos;\n\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return ++pos;\n\n default:\n return pos;\n }\n}\n/** */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n\n default:\n return direction;\n }\n}\n/** Escapes regular expression control chars */\n\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n} // cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\n\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n var arrA = Array.isArray(a),\n arrB = Array.isArray(b),\n i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n\n for (i = 0; i < a.length; i++) {\n if (!objectIncludes(a[i], b[i])) return false;\n }\n\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n var keys = Object.keys(a); // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n }\n\n for (i = 0; i < keys.length; i++) {\n if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n }\n\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n\n return false;\n}\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, indexInDirection, isString, objectIncludes, posInDirection };\n","import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\n\nvar ActionDetails = /*#__PURE__*/function () {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n function ActionDetails(value, cursorPos, oldValue, oldSelection) {\n _classCallCheck(this, ActionDetails);\n\n this.value = value;\n this.cursorPos = cursorPos;\n this.oldValue = oldValue;\n this.oldSelection = oldSelection; // double check if left part was changed (autofilling, other non-standard input triggers)\n\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n /**\r\n Start changing position\r\n @readonly\r\n */\n\n\n _createClass(ActionDetails, [{\n key: \"startChangePos\",\n get: function get() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n /**\r\n Inserted symbols count\r\n @readonly\r\n */\n\n }, {\n key: \"insertedCount\",\n get: function get() {\n return this.cursorPos - this.startChangePos;\n }\n /**\r\n Inserted symbols\r\n @readonly\r\n */\n\n }, {\n key: \"inserted\",\n get: function get() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n /**\r\n Removed symbols count\r\n @readonly\r\n */\n\n }, {\n key: \"removedCount\",\n get: function get() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos || // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n /**\r\n Removed symbols\r\n @readonly\r\n */\n\n }, {\n key: \"removed\",\n get: function get() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n /**\r\n Unchanged head symbols\r\n @readonly\r\n */\n\n }, {\n key: \"head\",\n get: function get() {\n return this.value.substring(0, this.startChangePos);\n }\n /**\r\n Unchanged tail symbols\r\n @readonly\r\n */\n\n }, {\n key: \"tail\",\n get: function get() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n /**\r\n Remove direction\r\n @readonly\r\n */\n\n }, {\n key: \"removeDirection\",\n get: function get() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE; // align right if delete at right or if range removed (event with backspace)\n\n return this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n }]);\n\n return ActionDetails;\n}();\n\nexport default ActionDetails;\n","import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\n\n/**\r\n Provides details of changing model value\r\n @param {Object} [details]\r\n @param {string} [details.inserted] - Inserted symbols\r\n @param {boolean} [details.skip] - Can skip chars\r\n @param {number} [details.removeCount] - Removed symbols count\r\n @param {number} [details.tailShift] - Additional offset if any changes occurred before tail\r\n*/\nvar ChangeDetails = /*#__PURE__*/function () {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n function ChangeDetails(details) {\n _classCallCheck(this, ChangeDetails);\n\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n /**\r\n Aggregate changes\r\n @returns {ChangeDetails} `this`\r\n */\n\n\n _createClass(ChangeDetails, [{\n key: \"aggregate\",\n value: function aggregate(details) {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n /** Total offset considering all changes */\n\n }, {\n key: \"offset\",\n get: function get() {\n return this.tailShift + this.inserted.length;\n }\n }]);\n\n return ChangeDetails;\n}();\n\nexport default ChangeDetails;\n","import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\n\n/** Provides details of continuous extracted tail */\nvar ContinuousTailDetails = /*#__PURE__*/function () {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n function ContinuousTailDetails() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var stop = arguments.length > 2 ? arguments[2] : undefined;\n\n _classCallCheck(this, ContinuousTailDetails);\n\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n\n _createClass(ContinuousTailDetails, [{\n key: \"toString\",\n value: function toString() {\n return this.value;\n }\n }, {\n key: \"extend\",\n value: function extend(tail) {\n this.value += String(tail);\n }\n }, {\n key: \"appendTo\",\n value: function appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n },\n set: function set(state) {\n Object.assign(this, state);\n }\n }, {\n key: \"shiftBefore\",\n value: function shiftBefore(pos) {\n if (this.from >= pos || !this.value.length) return '';\n var shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n }]);\n\n return ContinuousTailDetails;\n}();\n\nexport default ContinuousTailDetails;\n","/**\r\n * Applies mask on element.\r\n * @constructor\r\n * @param {HTMLInputElement|HTMLTextAreaElement|MaskElement} el - Element to apply mask\r\n * @param {Object} opts - Custom mask options\r\n * @return {InputMask}\r\n */\nfunction IMask(el) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport default IMask;\n","import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Supported mask type */\n\n/** Provides common masking stuff */\nvar Masked = /*#__PURE__*/function () {\n // $Shape; TODO after fix https://github.com/facebook/flow/issues/4773\n\n /** @type {Mask} */\n\n /** */\n // $FlowFixMe no ideas\n\n /** Transforms value before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing in the end of editing */\n\n /** Format typed value to string */\n\n /** Parse strgin to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n function Masked(opts) {\n _classCallCheck(this, Masked);\n\n this._value = '';\n\n this._update(Object.assign({}, Masked.DEFAULTS, opts));\n\n this.isInitialized = true;\n }\n /** Sets and applies new options */\n\n\n _createClass(Masked, [{\n key: \"updateOptions\",\n value: function updateOptions(opts) {\n if (!Object.keys(opts).length) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n /**\r\n Sets new options\r\n @protected\r\n */\n\n }, {\n key: \"_update\",\n value: function _update(opts) {\n Object.assign(this, opts);\n }\n /** Mask state */\n\n }, {\n key: \"state\",\n get: function get() {\n return {\n _value: this.value\n };\n },\n set: function set(state) {\n this._value = state._value;\n }\n /** Resets value */\n\n }, {\n key: \"reset\",\n value: function reset() {\n this._value = '';\n }\n /** */\n\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(value) {\n this.resolve(value);\n }\n /** Resolve new value */\n\n }, {\n key: \"resolve\",\n value: function resolve(value) {\n this.reset();\n this.append(value, {\n input: true\n }, '');\n this.doCommit();\n return this.value;\n }\n /** */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.value;\n },\n set: function set(value) {\n this.reset();\n this.append(value, {}, '');\n this.doCommit();\n }\n /** */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.doParse(this.value);\n },\n set: function set(value) {\n this.value = this.doFormat(value);\n }\n /** Value that includes raw user input */\n\n }, {\n key: \"rawInputValue\",\n get: function get() {\n return this.extractInput(0, this.value.length, {\n raw: true\n });\n },\n set: function set(value) {\n this.reset();\n this.append(value, {\n raw: true\n }, '');\n this.doCommit();\n }\n /** */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return true;\n }\n /** Finds nearest input position in direction */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n /** Extracts value in range considering flags */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return this.value.slice(fromPos, toPos);\n }\n /** Extracts tail in range */\n\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n /** Appends tail */\n // $FlowFixMe no ideas\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n /** Appends char */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n /** Appends char */\n\n }, {\n key: \"_appendChar\",\n value: function _appendChar(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var checkTail = arguments.length > 2 ? arguments[2] : undefined;\n var consistentState = this.state;\n\n var details = this._appendCharRaw(this.doPrepare(ch, flags), flags);\n\n if (details.inserted) {\n var consistentTail;\n var appended = this.doValidate(flags) !== false;\n\n if (appended && checkTail != null) {\n // validation ok, check tail\n var beforeTailState = this.state;\n\n if (this.overwrite) {\n consistentTail = checkTail.state;\n checkTail.shiftBefore(this.value.length);\n }\n\n var tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString(); // if ok, rollback state after tail\n\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n } // revert all if something went wrong\n\n\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n\n return details;\n }\n /** Appends optional placeholder at end */\n\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n return new ChangeDetails();\n }\n /** Appends symbols considering flags */\n // $FlowFixMe no ideas\n\n }, {\n key: \"append\",\n value: function append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n var details = new ChangeDetails();\n var checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags && flags.tail) flags._beforeTailState = this.state;\n\n for (var ci = 0; ci < str.length; ++ci) {\n details.aggregate(this._appendChar(str[ci], flags, checkTail));\n } // append tail but aggregate only tailShift\n\n\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift; // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n return details;\n }\n /** */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n this._value = this.value.slice(0, fromPos) + this.value.slice(toPos);\n return new ChangeDetails();\n }\n /** Calls function and reapplies current value */\n\n }, {\n key: \"withValueRefresh\",\n value: function withValueRefresh(fn) {\n if (this._refreshing || !this.isInitialized) return fn();\n this._refreshing = true;\n var rawInput = this.rawInputValue;\n var value = this.value;\n var ret = fn();\n this.rawInputValue = rawInput; // append lost trailing chars at end\n\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.value.length), {}, '');\n }\n\n delete this._refreshing;\n return ret;\n }\n /** */\n\n }, {\n key: \"runIsolated\",\n value: function runIsolated(fn) {\n if (this._isolated || !this.isInitialized) return fn(this);\n this._isolated = true;\n var state = this.state;\n var ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n /**\r\n Prepares string before mask processing\r\n @protected\r\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.prepare ? this.prepare(str, this, flags) : str;\n }\n /**\r\n Validates if value is acceptable\r\n @protected\r\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n /**\r\n Does additional processing in the end of editing\r\n @protected\r\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n /** */\n\n }, {\n key: \"doFormat\",\n value: function doFormat(value) {\n return this.format ? this.format(value, this) : value;\n }\n /** */\n\n }, {\n key: \"doParse\",\n value: function doParse(str) {\n return this.parse ? this.parse(str, this) : str;\n }\n /** */\n\n }, {\n key: \"splice\",\n value: function splice(start, deleteCount, inserted, removeDirection) {\n var tailPos = start + deleteCount;\n var tail = this.extractTail(tailPos);\n var startChangePos = this.nearestInputPos(start, removeDirection);\n var changeDetails = new ChangeDetails({\n tailShift: startChangePos - start // adjust tailShift if start was aligned\n\n }).aggregate(this.remove(startChangePos)).aggregate(this.append(inserted, {\n input: true\n }, tail));\n return changeDetails;\n }\n }]);\n\n return Masked;\n}();\nMasked.DEFAULTS = {\n format: function format(v) {\n return v;\n },\n parse: function parse(v) {\n return v;\n }\n};\nIMask.Masked = Masked;\n\nexport default Masked;\n","import { isString } from '../core/utils.js';\nimport IMask from '../core/holder.js';\nimport '../_rollupPluginBabelHelpers-6ccb1f64.js';\n\n/** Get Masked class by mask type */\n\nfunction maskedClass(mask) {\n if (mask == null) {\n throw new Error('mask property should be defined');\n } // $FlowFixMe\n\n\n if (mask instanceof RegExp) return IMask.MaskedRegExp; // $FlowFixMe\n\n if (isString(mask)) return IMask.MaskedPattern; // $FlowFixMe\n\n if (mask instanceof Date || mask === Date) return IMask.MaskedDate; // $FlowFixMe\n\n if (mask instanceof Number || typeof mask === 'number' || mask === Number) return IMask.MaskedNumber; // $FlowFixMe\n\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic; // $FlowFixMe\n\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask; // $FlowFixMe\n\n if (mask instanceof Function) return IMask.MaskedFunction; // $FlowFixMe\n\n if (mask instanceof IMask.Masked) return mask.constructor;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n // $FlowFixMe\n\n return IMask.Masked;\n}\n/** Creates new {@link Masked} depending on mask type */\n\nfunction createMask(opts) {\n // $FlowFixMe\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n opts = Object.assign({}, opts);\n var mask = opts.mask; // $FlowFixMe\n\n if (IMask.Masked && mask instanceof IMask.Masked) return mask;\n var MaskedClass = maskedClass(mask);\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be import manually before creating mask.');\n return new MaskedClass(opts);\n}\nIMask.createMask = createMask;\n\nexport default createMask;\nexport { maskedClass };\n","import { _ as _createClass, a as _classCallCheck, b as _objectWithoutProperties } from '../../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nvar DEFAULT_INPUT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n/** */\n\nvar PatternInputDefinition = /*#__PURE__*/function () {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n function PatternInputDefinition(opts) {\n _classCallCheck(this, PatternInputDefinition);\n\n var mask = opts.mask,\n blockOpts = _objectWithoutProperties(opts, [\"mask\"]);\n\n this.masked = createMask({\n mask: mask\n });\n Object.assign(this, blockOpts);\n }\n\n _createClass(PatternInputDefinition, [{\n key: \"reset\",\n value: function reset() {\n this._isFilled = false;\n this.masked.reset();\n }\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n if (fromPos === 0 && toPos >= 1) {\n this._isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n\n return new ChangeDetails();\n }\n }, {\n key: \"value\",\n get: function get() {\n return this.masked.value || (this._isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.masked.unmaskedValue;\n }\n }, {\n key: \"isComplete\",\n get: function get() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n }, {\n key: \"_appendChar\",\n value: function _appendChar(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this._isFilled) return new ChangeDetails();\n var state = this.masked.state; // simulate input\n\n var details = this.masked._appendChar(str, flags);\n\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n\n details.skip = !details.inserted && !this.isOptional;\n this._isFilled = Boolean(details.inserted);\n return details;\n }\n }, {\n key: \"append\",\n value: function append() {\n var _this$masked;\n\n return (_this$masked = this.masked).append.apply(_this$masked, arguments);\n }\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n var details = new ChangeDetails();\n if (this._isFilled || this.isOptional) return details;\n this._isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var _this$masked2;\n\n return (_this$masked2 = this.masked).extractTail.apply(_this$masked2, arguments);\n }\n }, {\n key: \"appendTail\",\n value: function appendTail() {\n var _this$masked3;\n\n return (_this$masked3 = this.masked).appendTail.apply(_this$masked3, arguments);\n }\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 ? arguments[2] : undefined;\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n var minPos = 0;\n var maxPos = this.value.length;\n var boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _this$masked4, _this$parent;\n\n return (_this$masked4 = this.masked).doValidate.apply(_this$masked4, arguments) && (!this.parent || (_this$parent = this.parent).doValidate.apply(_this$parent, arguments));\n }\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n this.masked.doCommit();\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n masked: this.masked.state,\n _isFilled: this._isFilled\n };\n },\n set: function set(state) {\n this.masked.state = state.masked;\n this._isFilled = state._isFilled;\n }\n }]);\n\n return PatternInputDefinition;\n}();\n\nexport default PatternInputDefinition;\nexport { DEFAULT_INPUT_DEFINITIONS };\n","import { _ as _createClass, a as _classCallCheck } from '../../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\n\nvar PatternFixedDefinition = /*#__PURE__*/function () {\n /** */\n\n /** */\n\n /** */\n\n /** */\n function PatternFixedDefinition(opts) {\n _classCallCheck(this, PatternFixedDefinition);\n\n Object.assign(this, opts);\n this._value = '';\n }\n\n _createClass(PatternFixedDefinition, [{\n key: \"value\",\n get: function get() {\n return this._value;\n }\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.isUnmasking ? this.value : '';\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this._isRawInput = false;\n this._value = '';\n }\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n var minPos = 0;\n var maxPos = this._value.length;\n\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n var flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n }, {\n key: \"isComplete\",\n get: function get() {\n return true;\n }\n }, {\n key: \"_appendChar\",\n value: function _appendChar(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var details = new ChangeDetails();\n if (this._value) return details;\n var appended = this.char === str[0];\n var isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n var details = new ChangeDetails();\n if (this._value) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails('');\n } // $FlowFixMe no ideas\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n }, {\n key: \"append\",\n value: function append(str, flags, tail) {\n var details = this._appendChar(str, flags);\n\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n\n return details;\n }\n }, {\n key: \"doCommit\",\n value: function doCommit() {}\n }, {\n key: \"state\",\n get: function get() {\n return {\n _value: this._value,\n _isRawInput: this._isRawInput\n };\n },\n set: function set(state) {\n Object.assign(this, state);\n }\n }]);\n\n return PatternFixedDefinition;\n}();\n\nexport default PatternFixedDefinition;\n","import { _ as _createClass, a as _classCallCheck, b as _objectWithoutProperties } from '../../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nvar ChunksTailDetails = /*#__PURE__*/function () {\n /** */\n function ChunksTailDetails() {\n var chunks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, ChunksTailDetails);\n\n this.chunks = chunks;\n this.from = from;\n }\n\n _createClass(ChunksTailDetails, [{\n key: \"toString\",\n value: function toString() {\n return this.chunks.map(String).join('');\n } // $FlowFixMe no ideas\n\n }, {\n key: \"extend\",\n value: function extend(tailChunk) {\n if (!String(tailChunk)) return;\n if (isString(tailChunk)) tailChunk = new ContinuousTailDetails(String(tailChunk));\n var lastChunk = this.chunks[this.chunks.length - 1];\n var extendLast = lastChunk && ( // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) && // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n var firstTailChunk;\n\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift();\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n } // if tail chunk still has value\n\n\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n }, {\n key: \"appendTo\",\n value: function appendTo(masked) {\n // $FlowFixMe\n if (!(masked instanceof IMask.MaskedPattern)) {\n var tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n\n var details = new ChangeDetails();\n\n for (var ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n var chunk = this.chunks[ci];\n\n var lastBlockIter = masked._mapPosToBlock(masked.value.length);\n\n var stop = chunk.stop;\n var chunkBlock = void 0;\n\n if (stop != null && ( // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails || // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n\n if (chunkBlock) {\n var tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted; // get not inserted chars\n\n var remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n chunks: this.chunks.map(function (c) {\n return c.state;\n }),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n },\n set: function set(state) {\n var chunks = state.chunks,\n props = _objectWithoutProperties(state, [\"chunks\"]);\n\n Object.assign(this, props);\n this.chunks = chunks.map(function (cstate) {\n var chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails(); // $FlowFixMe already checked above\n\n chunk.state = cstate;\n return chunk;\n });\n }\n }, {\n key: \"shiftBefore\",\n value: function shiftBefore(pos) {\n if (this.from >= pos || !this.chunks.length) return '';\n var chunkShiftPos = pos - this.from;\n var ci = 0;\n\n while (ci < this.chunks.length) {\n var chunk = this.chunks[ci];\n var shiftChar = chunk.shiftBefore(chunkShiftPos);\n\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n\n if (shiftChar) return shiftChar;\n }\n\n return '';\n }\n }]);\n\n return ChunksTailDetails;\n}();\n\nexport default ChunksTailDetails;\n","import { d as _inherits, e as _createSuper, _ as _createClass, a as _classCallCheck, g as _get, h as _getPrototypeOf } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\n\nvar MaskedRegExp = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedRegExp, _Masked);\n\n var _super = _createSuper(MaskedRegExp);\n\n function MaskedRegExp() {\n _classCallCheck(this, MaskedRegExp);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedRegExp, [{\n key: \"_update\",\n value:\n /**\r\n @override\r\n @param {Object} opts\r\n */\n function _update(opts) {\n if (opts.mask) opts.validate = function (value) {\n return value.search(opts.mask) >= 0;\n };\n\n _get(_getPrototypeOf(MaskedRegExp.prototype), \"_update\", this).call(this, opts);\n }\n }]);\n\n return MaskedRegExp;\n}(Masked);\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport default MaskedRegExp;\n","import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf, b as _objectWithoutProperties, i as _set } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport { forceDirection, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport PatternInputDefinition, { DEFAULT_INPUT_DEFINITIONS } from './pattern/input-definition.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/**\r\n Pattern mask\r\n @param {Object} opts\r\n @param {Object} opts.blocks\r\n @param {Object} opts.definitions\r\n @param {string} opts.placeholderChar\r\n @param {boolean} opts.lazy\r\n*/\nvar MaskedPattern = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedPattern, _Masked);\n\n var _super = _createSuper(MaskedPattern);\n\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Show placeholder only when needed */\n function MaskedPattern() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, MaskedPattern);\n\n // TODO type $Shape={} does not work\n opts.definitions = Object.assign({}, DEFAULT_INPUT_DEFINITIONS, opts.definitions);\n return _super.call(this, Object.assign({}, MaskedPattern.DEFAULTS, opts));\n }\n /**\r\n @override\r\n @param {Object} opts\r\n */\n\n\n _createClass(MaskedPattern, [{\n key: \"_update\",\n value: function _update() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n\n _get(_getPrototypeOf(MaskedPattern.prototype), \"_update\", this).call(this, opts);\n\n this._rebuildMask();\n }\n /** */\n\n }, {\n key: \"_rebuildMask\",\n value: function _rebuildMask() {\n var _this = this;\n\n var defs = this.definitions;\n this._blocks = [];\n this._stops = [];\n this._maskedBlocks = {};\n var pattern = this.mask;\n if (!pattern || !defs) return;\n var unmaskingBlock = false;\n var optionalBlock = false;\n\n for (var i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n var _ret = function () {\n var p = pattern.slice(i);\n var bNames = Object.keys(_this.blocks).filter(function (bName) {\n return p.indexOf(bName) === 0;\n }); // order by key length\n\n bNames.sort(function (a, b) {\n return b.length - a.length;\n }); // use block name with max length\n\n var bName = bNames[0];\n\n if (bName) {\n // $FlowFixMe no ideas\n var maskedBlock = createMask(Object.assign({\n parent: _this,\n lazy: _this.lazy,\n placeholderChar: _this.placeholderChar,\n overwrite: _this.overwrite\n }, _this.blocks[bName]));\n\n if (maskedBlock) {\n _this._blocks.push(maskedBlock); // store block index\n\n\n if (!_this._maskedBlocks[bName]) _this._maskedBlocks[bName] = [];\n\n _this._maskedBlocks[bName].push(_this._blocks.length - 1);\n }\n\n i += bName.length - 1;\n return \"continue\";\n }\n }();\n\n if (_ret === \"continue\") continue;\n }\n\n var char = pattern[i];\n\n var _isInput = (char in defs);\n\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n\n continue;\n }\n\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n _isInput = false;\n }\n\n var def = _isInput ? new PatternInputDefinition({\n parent: this,\n lazy: this.lazy,\n placeholderChar: this.placeholderChar,\n mask: defs[char],\n isOptional: optionalBlock\n }) : new PatternFixedDefinition({\n char: char,\n isUnmasking: unmaskingBlock\n });\n\n this._blocks.push(def);\n }\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"state\",\n get: function get() {\n return Object.assign({}, _get(_getPrototypeOf(MaskedPattern.prototype), \"state\", this), {\n _blocks: this._blocks.map(function (b) {\n return b.state;\n })\n });\n },\n set: function set(state) {\n var _blocks = state._blocks,\n maskedState = _objectWithoutProperties(state, [\"_blocks\"]);\n\n this._blocks.forEach(function (b, bi) {\n return b.state = _blocks[bi];\n });\n\n _set(_getPrototypeOf(MaskedPattern.prototype), \"state\", maskedState, this, true);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"reset\",\n value: function reset() {\n _get(_getPrototypeOf(MaskedPattern.prototype), \"reset\", this).call(this);\n\n this._blocks.forEach(function (b) {\n return b.reset();\n });\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return this._blocks.every(function (b) {\n return b.isComplete;\n });\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n this._blocks.forEach(function (b) {\n return b.doCommit();\n });\n\n _get(_getPrototypeOf(MaskedPattern.prototype), \"doCommit\", this).call(this);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._blocks.reduce(function (str, b) {\n return str += b.unmaskedValue;\n }, '');\n },\n set: function set(unmaskedValue) {\n _set(_getPrototypeOf(MaskedPattern.prototype), \"unmaskedValue\", unmaskedValue, this, true);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"value\",\n get: function get() {\n // TODO return _value when not in change?\n return this._blocks.reduce(function (str, b) {\n return str += b.value;\n }, '');\n },\n set: function set(value) {\n _set(_getPrototypeOf(MaskedPattern.prototype), \"value\", value, this, true);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n return _get(_getPrototypeOf(MaskedPattern.prototype), \"appendTail\", this).call(this, tail).aggregate(this._appendPlaceholder());\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var blockIter = this._mapPosToBlock(this.value.length);\n\n var details = new ChangeDetails();\n if (!blockIter) return details;\n\n for (var bi = blockIter.index;; ++bi) {\n var _block = this._blocks[bi];\n if (!_block) break;\n\n var blockDetails = _block._appendChar(ch, flags);\n\n var skip = blockDetails.skip;\n details.aggregate(blockDetails);\n if (skip || blockDetails.rawInserted) break; // go next char\n }\n\n return details;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var _this2 = this;\n\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, bi, bFromPos, bToPos) {\n var blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = _this2._findStopBefore(bi);\n blockChunk.from = _this2._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n\n return chunkTail;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (fromPos === toPos) return '';\n var input = '';\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, _, fromPos, toPos) {\n input += b.extractInput(fromPos, toPos, flags);\n });\n\n return input;\n }\n }, {\n key: \"_findStopBefore\",\n value: function _findStopBefore(blockIndex) {\n var stopBefore;\n\n for (var si = 0; si < this._stops.length; ++si) {\n var stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n\n return stopBefore;\n }\n /** Appends placeholder depending on laziness */\n\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder(toBlockIndex) {\n var _this3 = this;\n\n var details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n\n var startBlockIter = this._mapPosToBlock(this.value.length);\n\n if (!startBlockIter) return details;\n var startBlockIndex = startBlockIter.index;\n var endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(function (b) {\n if (!b.lazy || toBlockIndex != null) {\n // $FlowFixMe `_blocks` may not be present\n var args = b._blocks != null ? [b._blocks.length] : [];\n\n var bDetails = b._appendPlaceholder.apply(b, args);\n\n _this3._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n\n return details;\n }\n /** Finds block in pos */\n\n }, {\n key: \"_mapPosToBlock\",\n value: function _mapPosToBlock(pos) {\n var accVal = '';\n\n for (var bi = 0; bi < this._blocks.length; ++bi) {\n var _block2 = this._blocks[bi];\n var blockStartPos = accVal.length;\n accVal += _block2.value;\n\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n /** */\n\n }, {\n key: \"_blockStartPos\",\n value: function _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce(function (pos, b) {\n return pos += b.value.length;\n }, 0);\n }\n /** */\n\n }, {\n key: \"_forEachBlocksInRange\",\n value: function _forEachBlocksInRange(fromPos) {\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var fn = arguments.length > 2 ? arguments[2] : undefined;\n\n var fromBlockIter = this._mapPosToBlock(fromPos);\n\n if (fromBlockIter) {\n var toBlockIter = this._mapPosToBlock(toPos); // process first block\n\n\n var isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n var fromBlockStartPos = fromBlockIter.offset;\n var fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].value.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (var bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].value.length);\n } // process last block\n\n\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n var removeDetails = _get(_getPrototypeOf(MaskedPattern.prototype), \"remove\", this).call(this, fromPos, toPos);\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, _, bFromPos, bToPos) {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n\n return removeDetails;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n // TODO refactor - extract alignblock\n var beginBlockData = this._mapPosToBlock(cursorPos) || {\n index: 0,\n offset: 0\n };\n var beginBlockOffset = beginBlockData.offset,\n beginBlockIndex = beginBlockData.index;\n var beginBlock = this._blocks[beginBlockIndex];\n if (!beginBlock) return cursorPos;\n var beginBlockCursorPos = beginBlockOffset; // if position inside block - try to adjust it\n\n if (beginBlockCursorPos !== 0 && beginBlockCursorPos < beginBlock.value.length) {\n beginBlockCursorPos = beginBlock.nearestInputPos(beginBlockOffset, forceDirection(direction));\n }\n\n var cursorAtRight = beginBlockCursorPos === beginBlock.value.length;\n var cursorAtLeft = beginBlockCursorPos === 0; // cursor is INSIDE first block (not at bounds)\n\n if (!cursorAtLeft && !cursorAtRight) return this._blockStartPos(beginBlockIndex) + beginBlockCursorPos;\n var searchBlockIndex = cursorAtRight ? beginBlockIndex + 1 : beginBlockIndex;\n\n if (direction === DIRECTION.NONE) {\n // NONE direction used to calculate start input position if no chars were removed\n // FOR NONE:\n // -\n // input|any\n // ->\n // any|input\n // <-\n // filled-input|any\n // check if first block at left is input\n if (searchBlockIndex > 0) {\n var blockIndexAtLeft = searchBlockIndex - 1;\n var blockAtLeft = this._blocks[blockIndexAtLeft];\n var blockInputPos = blockAtLeft.nearestInputPos(0, DIRECTION.NONE); // is input\n\n if (!blockAtLeft.value.length || blockInputPos !== blockAtLeft.value.length) {\n return this._blockStartPos(searchBlockIndex);\n }\n } // ->\n\n\n var firstInputAtRight = searchBlockIndex;\n\n for (var bi = firstInputAtRight; bi < this._blocks.length; ++bi) {\n var blockAtRight = this._blocks[bi];\n\n var _blockInputPos = blockAtRight.nearestInputPos(0, DIRECTION.NONE);\n\n if (!blockAtRight.value.length || _blockInputPos !== blockAtRight.value.length) {\n return this._blockStartPos(bi) + _blockInputPos;\n }\n } // <-\n // find first non-fixed symbol\n\n\n for (var _bi = searchBlockIndex - 1; _bi >= 0; --_bi) {\n var _block3 = this._blocks[_bi];\n\n var _blockInputPos2 = _block3.nearestInputPos(0, DIRECTION.NONE); // is input\n\n\n if (!_block3.value.length || _blockInputPos2 !== _block3.value.length) {\n return this._blockStartPos(_bi) + _block3.value.length;\n }\n }\n\n return cursorPos;\n }\n\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // -\n // any|filled-input\n // <-\n // any|first not empty is not-len-aligned\n // not-0-aligned|any\n // ->\n // any|not-len-aligned or end\n // check if first block at right is filled input\n var firstFilledBlockIndexAtRight;\n\n for (var _bi2 = searchBlockIndex; _bi2 < this._blocks.length; ++_bi2) {\n if (this._blocks[_bi2].value) {\n firstFilledBlockIndexAtRight = _bi2;\n break;\n }\n }\n\n if (firstFilledBlockIndexAtRight != null) {\n var filledBlock = this._blocks[firstFilledBlockIndexAtRight];\n\n var _blockInputPos3 = filledBlock.nearestInputPos(0, DIRECTION.RIGHT);\n\n if (_blockInputPos3 === 0 && filledBlock.unmaskedValue.length) {\n // filled block is input\n return this._blockStartPos(firstFilledBlockIndexAtRight) + _blockInputPos3;\n }\n } // <-\n // find this vars\n\n\n var firstFilledInputBlockIndex = -1;\n var firstEmptyInputBlockIndex; // TODO consider nested empty inputs\n\n for (var _bi3 = searchBlockIndex - 1; _bi3 >= 0; --_bi3) {\n var _block4 = this._blocks[_bi3];\n\n var _blockInputPos4 = _block4.nearestInputPos(_block4.value.length, DIRECTION.FORCE_LEFT);\n\n if (!_block4.value || _blockInputPos4 !== 0) firstEmptyInputBlockIndex = _bi3;\n\n if (_blockInputPos4 !== 0) {\n if (_blockInputPos4 !== _block4.value.length) {\n // aligned inside block - return immediately\n return this._blockStartPos(_bi3) + _blockInputPos4;\n } else {\n // found filled\n firstFilledInputBlockIndex = _bi3;\n break;\n }\n }\n }\n\n if (direction === DIRECTION.LEFT) {\n // try find first empty input before start searching position only when not forced\n for (var _bi4 = firstFilledInputBlockIndex + 1; _bi4 <= Math.min(searchBlockIndex, this._blocks.length - 1); ++_bi4) {\n var _block5 = this._blocks[_bi4];\n\n var _blockInputPos5 = _block5.nearestInputPos(0, DIRECTION.NONE);\n\n var blockAlignedPos = this._blockStartPos(_bi4) + _blockInputPos5;\n\n if (blockAlignedPos > cursorPos) break; // if block is not lazy input\n\n if (_blockInputPos5 !== _block5.value.length) return blockAlignedPos;\n }\n } // process overflow\n\n\n if (firstFilledInputBlockIndex >= 0) {\n return this._blockStartPos(firstFilledInputBlockIndex) + this._blocks[firstFilledInputBlockIndex].value.length;\n } // for lazy if has aligned left inside fixed and has came to the start - use start position\n\n\n if (direction === DIRECTION.FORCE_LEFT || this.lazy && !this.extractInput() && !isInput(this._blocks[searchBlockIndex])) {\n return 0;\n }\n\n if (firstEmptyInputBlockIndex != null) {\n return this._blockStartPos(firstEmptyInputBlockIndex);\n } // find first input\n\n\n for (var _bi5 = searchBlockIndex; _bi5 < this._blocks.length; ++_bi5) {\n var _block6 = this._blocks[_bi5];\n\n var _blockInputPos6 = _block6.nearestInputPos(0, DIRECTION.NONE); // is input\n\n\n if (!_block6.value.length || _blockInputPos6 !== _block6.value.length) {\n return this._blockStartPos(_bi5) + _blockInputPos6;\n }\n }\n\n return 0;\n }\n\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // ->\n // any|not-len-aligned and filled\n // any|not-len-aligned\n // <-\n // not-0-aligned or start|any\n var firstInputBlockAlignedIndex;\n var firstInputBlockAlignedPos;\n\n for (var _bi6 = searchBlockIndex; _bi6 < this._blocks.length; ++_bi6) {\n var _block7 = this._blocks[_bi6];\n\n var _blockInputPos7 = _block7.nearestInputPos(0, DIRECTION.NONE);\n\n if (_blockInputPos7 !== _block7.value.length) {\n firstInputBlockAlignedPos = this._blockStartPos(_bi6) + _blockInputPos7;\n firstInputBlockAlignedIndex = _bi6;\n break;\n }\n }\n\n if (firstInputBlockAlignedIndex != null && firstInputBlockAlignedPos != null) {\n for (var _bi7 = firstInputBlockAlignedIndex; _bi7 < this._blocks.length; ++_bi7) {\n var _block8 = this._blocks[_bi7];\n\n var _blockInputPos8 = _block8.nearestInputPos(0, DIRECTION.FORCE_RIGHT);\n\n if (_blockInputPos8 !== _block8.value.length) {\n return this._blockStartPos(_bi7) + _blockInputPos8;\n }\n }\n\n return direction === DIRECTION.FORCE_RIGHT ? this.value.length : firstInputBlockAlignedPos;\n }\n\n for (var _bi8 = Math.min(searchBlockIndex, this._blocks.length - 1); _bi8 >= 0; --_bi8) {\n var _block9 = this._blocks[_bi8];\n\n var _blockInputPos9 = _block9.nearestInputPos(_block9.value.length, DIRECTION.LEFT);\n\n if (_blockInputPos9 !== 0) {\n var alignedPos = this._blockStartPos(_bi8) + _blockInputPos9;\n\n if (alignedPos >= cursorPos) return alignedPos;\n break;\n }\n }\n }\n\n return cursorPos;\n }\n /** Get block by name */\n\n }, {\n key: \"maskedBlock\",\n value: function maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n /** Get all blocks by name */\n\n }, {\n key: \"maskedBlocks\",\n value: function maskedBlocks(name) {\n var _this4 = this;\n\n var indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(function (gi) {\n return _this4._blocks[gi];\n });\n }\n }]);\n\n return MaskedPattern;\n}(Masked);\nMaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\n\nfunction isInput(block) {\n if (!block) return false;\n var value = block.value;\n return !value || block.nearestInputPos(0, DIRECTION.NONE) !== value.length;\n}\n\nIMask.MaskedPattern = MaskedPattern;\n\nexport default MaskedPattern;\n","import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf, f as _slicedToArray } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\n\nvar MaskedRange = /*#__PURE__*/function (_MaskedPattern) {\n _inherits(MaskedRange, _MaskedPattern);\n\n var _super = _createSuper(MaskedRange);\n\n function MaskedRange() {\n _classCallCheck(this, MaskedRange);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedRange, [{\n key: \"_matchFrom\",\n get:\n /**\r\n Optionally sets max length of pattern.\r\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\r\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n function get() {\n return this.maxLength - String(this.from).length;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"_update\",\n value: function _update(opts) {\n // TODO type\n opts = Object.assign({\n to: this.to || 0,\n from: this.from || 0\n }, opts);\n var maxLength = String(opts.to).length;\n if (opts.maxLength != null) maxLength = Math.max(maxLength, opts.maxLength);\n opts.maxLength = maxLength;\n var fromStr = String(opts.from).padStart(maxLength, '0');\n var toStr = String(opts.to).padStart(maxLength, '0');\n var sameCharsCount = 0;\n\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) {\n ++sameCharsCount;\n }\n\n opts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(maxLength - sameCharsCount);\n\n _get(_getPrototypeOf(MaskedRange.prototype), \"_update\", this).call(this, opts);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return _get(_getPrototypeOf(MaskedRange.prototype), \"isComplete\", this) && Boolean(this.value);\n }\n }, {\n key: \"boundaries\",\n value: function boundaries(str) {\n var minstr = '';\n var maxstr = '';\n\n var _ref = str.match(/^(\\D*)(\\d*)(\\D*)/) || [],\n _ref2 = _slicedToArray(_ref, 3),\n placeholder = _ref2[1],\n num = _ref2[2];\n\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n str = _get(_getPrototypeOf(MaskedRange.prototype), \"doPrepare\", this).call(this, str, flags).replace(/\\D/g, '');\n if (!this.autofix) return str;\n var fromStr = String(this.from).padStart(this.maxLength, '0');\n var toStr = String(this.to).padStart(this.maxLength, '0');\n var val = this.value;\n var prepStr = '';\n\n for (var ci = 0; ci < str.length; ++ci) {\n var nextVal = val + prepStr + str[ci];\n\n var _this$boundaries = this.boundaries(nextVal),\n _this$boundaries2 = _slicedToArray(_this$boundaries, 2),\n minstr = _this$boundaries2[0],\n maxstr = _this$boundaries2[1];\n\n if (Number(maxstr) < this.from) prepStr += fromStr[nextVal.length - 1];else if (Number(minstr) > this.to) prepStr += toStr[nextVal.length - 1];else prepStr += str[ci];\n }\n\n return prepStr;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _get2;\n\n var str = this.value;\n var firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n\n var _this$boundaries3 = this.boundaries(str),\n _this$boundaries4 = _slicedToArray(_this$boundaries3, 2),\n minstr = _this$boundaries4[0],\n maxstr = _this$boundaries4[1];\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && (_get2 = _get(_getPrototypeOf(MaskedRange.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args));\n }\n }]);\n\n return MaskedRange;\n}(MaskedPattern);\nIMask.MaskedRange = MaskedRange;\n\nexport default MaskedRange;\n","import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, f as _slicedToArray, g as _get, h as _getPrototypeOf, i as _set } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './regexp.js';\n\n/** Date mask */\n\nvar MaskedDate = /*#__PURE__*/function (_MaskedPattern) {\n _inherits(MaskedDate, _MaskedPattern);\n\n var _super = _createSuper(MaskedDate);\n\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /**\r\n @param {Object} opts\r\n */\n function MaskedDate(opts) {\n _classCallCheck(this, MaskedDate);\n\n return _super.call(this, Object.assign({}, MaskedDate.DEFAULTS, opts));\n }\n /**\r\n @override\r\n */\n\n\n _createClass(MaskedDate, [{\n key: \"_update\",\n value: function _update(opts) {\n if (opts.mask === Date) delete opts.mask;\n if (opts.pattern) opts.mask = opts.pattern;\n var blocks = opts.blocks;\n opts.blocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS()); // adjust year block\n\n if (opts.min) opts.blocks.Y.from = opts.min.getFullYear();\n if (opts.max) opts.blocks.Y.to = opts.max.getFullYear();\n\n if (opts.min && opts.max && opts.blocks.Y.from === opts.blocks.Y.to) {\n opts.blocks.m.from = opts.min.getMonth() + 1;\n opts.blocks.m.to = opts.max.getMonth() + 1;\n\n if (opts.blocks.m.from === opts.blocks.m.to) {\n opts.blocks.d.from = opts.min.getDate();\n opts.blocks.d.to = opts.max.getDate();\n }\n }\n\n Object.assign(opts.blocks, blocks); // add autofix\n\n Object.keys(opts.blocks).forEach(function (bk) {\n var b = opts.blocks[bk];\n if (!('autofix' in b)) b.autofix = opts.autofix;\n });\n\n _get(_getPrototypeOf(MaskedDate.prototype), \"_update\", this).call(this, opts);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _get2;\n\n var date = this.date;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return (_get2 = _get(_getPrototypeOf(MaskedDate.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args)) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n /** Checks if date is exists */\n\n }, {\n key: \"isDateExist\",\n value: function isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n /** Parsed Date */\n\n }, {\n key: \"date\",\n get: function get() {\n return this.typedValue;\n },\n set: function set(date) {\n this.typedValue = date;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.isComplete ? _get(_getPrototypeOf(MaskedDate.prototype), \"typedValue\", this) : null;\n },\n set: function set(value) {\n _set(_getPrototypeOf(MaskedDate.prototype), \"typedValue\", value, this, true);\n }\n }]);\n\n return MaskedDate;\n}(MaskedPattern);\nMaskedDate.DEFAULTS = {\n pattern: 'd{.}`m{.}`Y',\n format: function format(date) {\n var day = String(date.getDate()).padStart(2, '0');\n var month = String(date.getMonth() + 1).padStart(2, '0');\n var year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: function parse(str) {\n var _str$split = str.split('.'),\n _str$split2 = _slicedToArray(_str$split, 3),\n day = _str$split2[0],\n month = _str$split2[1],\n year = _str$split2[2];\n\n return new Date(year, month - 1, day);\n }\n};\n\nMaskedDate.GET_DEFAULT_BLOCKS = function () {\n return {\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n };\n};\n\nIMask.MaskedDate = MaskedDate;\n\nexport default MaskedDate;\n","import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport IMask from '../core/holder.js';\n\n/**\r\n Generic element API to use with mask\r\n @interface\r\n*/\nvar MaskElement = /*#__PURE__*/function () {\n function MaskElement() {\n _classCallCheck(this, MaskElement);\n }\n\n _createClass(MaskElement, [{\n key: \"selectionStart\",\n get:\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n function get() {\n var start;\n\n try {\n start = this._unsafeSelectionStart;\n } catch (e) {}\n\n return start != null ? start : this.value.length;\n }\n /** Safely returns selection end */\n\n }, {\n key: \"selectionEnd\",\n get: function get() {\n var end;\n\n try {\n end = this._unsafeSelectionEnd;\n } catch (e) {}\n\n return end != null ? end : this.value.length;\n }\n /** Safely sets element selection */\n\n }, {\n key: \"select\",\n value: function select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n\n try {\n this._unsafeSelect(start, end);\n } catch (e) {}\n }\n /** Should be overriden in subclasses */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {}\n /** Should be overriden in subclasses */\n\n }, {\n key: \"isActive\",\n get: function get() {\n return false;\n }\n /** Should be overriden in subclasses */\n\n }, {\n key: \"bindEvents\",\n value: function bindEvents(handlers) {}\n /** Should be overriden in subclasses */\n\n }, {\n key: \"unbindEvents\",\n value: function unbindEvents() {}\n }]);\n\n return MaskElement;\n}();\nIMask.MaskElement = MaskElement;\n\nexport default MaskElement;\n","import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\n/** Bridge between HTMLElement and {@link Masked} */\n\nvar HTMLMaskElement = /*#__PURE__*/function (_MaskElement) {\n _inherits(HTMLMaskElement, _MaskElement);\n\n var _super = _createSuper(HTMLMaskElement);\n\n /** Mapping between HTMLElement events and mask internal events */\n\n /** HTMLElement to use mask on */\n\n /**\r\n @param {HTMLInputElement|HTMLTextAreaElement} input\r\n */\n function HTMLMaskElement(input) {\n var _this;\n\n _classCallCheck(this, HTMLMaskElement);\n\n _this = _super.call(this);\n _this.input = input;\n _this._handlers = {};\n return _this;\n }\n /** */\n // $FlowFixMe https://github.com/facebook/flow/issues/2839\n\n\n _createClass(HTMLMaskElement, [{\n key: \"rootElement\",\n get: function get() {\n return this.input.getRootNode ? this.input.getRootNode() : document;\n }\n /**\r\n Is element in focus\r\n @readonly\r\n */\n\n }, {\n key: \"isActive\",\n get: function get() {\n //$FlowFixMe\n return this.input === this.rootElement.activeElement;\n }\n /**\r\n Returns HTMLElement selection start\r\n @override\r\n */\n\n }, {\n key: \"_unsafeSelectionStart\",\n get: function get() {\n return this.input.selectionStart;\n }\n /**\r\n Returns HTMLElement selection end\r\n @override\r\n */\n\n }, {\n key: \"_unsafeSelectionEnd\",\n get: function get() {\n return this.input.selectionEnd;\n }\n /**\r\n Sets HTMLElement selection\r\n @override\r\n */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n /**\r\n HTMLElement value\r\n @override\r\n */\n\n }, {\n key: \"value\",\n get: function get() {\n return this.input.value;\n },\n set: function set(value) {\n this.input.value = value;\n }\n /**\r\n Binds HTMLElement events to mask internal events\r\n @override\r\n */\n\n }, {\n key: \"bindEvents\",\n value: function bindEvents(handlers) {\n var _this2 = this;\n\n Object.keys(handlers).forEach(function (event) {\n return _this2._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]);\n });\n }\n /**\r\n Unbinds HTMLElement events to mask internal events\r\n @override\r\n */\n\n }, {\n key: \"unbindEvents\",\n value: function unbindEvents() {\n var _this3 = this;\n\n Object.keys(this._handlers).forEach(function (event) {\n return _this3._toggleEventHandler(event);\n });\n }\n /** */\n\n }, {\n key: \"_toggleEventHandler\",\n value: function _toggleEventHandler(event, handler) {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n }]);\n\n return HTMLMaskElement;\n}(MaskElement);\nHTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur'\n};\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport default HTMLMaskElement;\n","import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nvar HTMLContenteditableMaskElement = /*#__PURE__*/function (_HTMLMaskElement) {\n _inherits(HTMLContenteditableMaskElement, _HTMLMaskElement);\n\n var _super = _createSuper(HTMLContenteditableMaskElement);\n\n function HTMLContenteditableMaskElement() {\n _classCallCheck(this, HTMLContenteditableMaskElement);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(HTMLContenteditableMaskElement, [{\n key: \"_unsafeSelectionStart\",\n get:\n /**\r\n Returns HTMLElement selection start\r\n @override\r\n */\n function get() {\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n return selection && selection.anchorOffset;\n }\n /**\r\n Returns HTMLElement selection end\r\n @override\r\n */\n\n }, {\n key: \"_unsafeSelectionEnd\",\n get: function get() {\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n return selection && this._unsafeSelectionStart + String(selection).length;\n }\n /**\r\n Sets HTMLElement selection\r\n @override\r\n */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n var range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n /**\r\n HTMLElement value\r\n @override\r\n */\n\n }, {\n key: \"value\",\n get: function get() {\n // $FlowFixMe\n return this.input.textContent;\n },\n set: function set(value) {\n this.input.textContent = value;\n }\n }]);\n\n return HTMLContenteditableMaskElement;\n}(HTMLMaskElement);\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport default HTMLContenteditableMaskElement;\n","import { _ as _createClass, a as _classCallCheck, b as _objectWithoutProperties } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport { objectIncludes, DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport MaskedDate from '../masked/date.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLMaskElement from './html-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport '../masked/pattern.js';\nimport '../core/change-details.js';\nimport '../masked/base.js';\nimport '../core/continuous-tail-details.js';\nimport '../masked/pattern/input-definition.js';\nimport '../masked/pattern/fixed-definition.js';\nimport '../masked/pattern/chunk-tail-details.js';\nimport '../masked/regexp.js';\nimport '../masked/range.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\n\nvar InputMask = /*#__PURE__*/function () {\n /**\r\n View element\r\n @readonly\r\n */\n\n /**\r\n Internal {@link Masked} model\r\n @readonly\r\n */\n\n /**\r\n @param {MaskElement|HTMLInputElement|HTMLTextAreaElement} el\r\n @param {Object} opts\r\n */\n function InputMask(el, opts) {\n _classCallCheck(this, InputMask);\n\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n\n this._bindEvents(); // refresh\n\n\n this.updateValue();\n\n this._onChange();\n }\n /** Read or update mask */\n\n\n _createClass(InputMask, [{\n key: \"mask\",\n get: function get() {\n return this.masked.mask;\n },\n set: function set(mask) {\n if (this.maskEquals(mask)) return;\n\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n this.masked.updateOptions({\n mask: mask\n });\n return;\n }\n\n var masked = createMask({\n mask: mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n /** Raw value */\n\n }, {\n key: \"maskEquals\",\n value: function maskEquals(mask) {\n return mask == null || mask === this.masked.mask || mask === Date && this.masked instanceof MaskedDate;\n }\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(str) {\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n /** Unmasked value */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._unmaskedValue;\n },\n set: function set(str) {\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n /** Typed unmasked value */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.masked.typedValue;\n },\n set: function set(val) {\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n /**\r\n Starts listening to element events\r\n @protected\r\n */\n\n }, {\n key: \"_bindEvents\",\n value: function _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange\n });\n }\n /**\r\n Stops listening to element events\r\n @protected\r\n */\n\n }, {\n key: \"_unbindEvents\",\n value: function _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n /**\r\n Fires custom event\r\n @protected\r\n */\n\n }, {\n key: \"_fireEvent\",\n value: function _fireEvent(ev) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(function (l) {\n return l.apply(void 0, args);\n });\n }\n /**\r\n Current selection start\r\n @readonly\r\n */\n\n }, {\n key: \"selectionStart\",\n get: function get() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n /** Current cursor position */\n\n }, {\n key: \"cursorPos\",\n get: function get() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n },\n set: function set(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n\n this._saveSelection();\n }\n /**\r\n Stores current selection\r\n @protected\r\n */\n\n }, {\n key: \"_saveSelection\",\n value: function _saveSelection()\n /* ev */\n {\n if (this.value !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n /** Syncronizes model value from view */\n\n }, {\n key: \"updateValue\",\n value: function updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n /** Syncronizes view from model value, fires change events */\n\n }, {\n key: \"updateControl\",\n value: function updateControl() {\n var newUnmaskedValue = this.masked.unmaskedValue;\n var newValue = this.masked.value;\n var isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n if (this.el.value !== newValue) this.el.value = newValue;\n if (isChanged) this._fireChangeEvents();\n }\n /** Updates options with deep equal check, recreates @{link Masked} model if mask type changes */\n\n }, {\n key: \"updateOptions\",\n value: function updateOptions(opts) {\n var mask = opts.mask,\n restOpts = _objectWithoutProperties(opts, [\"mask\"]);\n\n var updateMask = !this.maskEquals(mask);\n var updateOpts = !objectIncludes(this.masked, restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts);\n if (updateMask || updateOpts) this.updateControl();\n }\n /** Updates cursor */\n\n }, {\n key: \"updateCursor\",\n value: function updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos; // also queue change cursor for mobile browsers\n\n this._delayUpdateCursor(cursorPos);\n }\n /**\r\n Delays cursor update to support mobile browsers\r\n @private\r\n */\n\n }, {\n key: \"_delayUpdateCursor\",\n value: function _delayUpdateCursor(cursorPos) {\n var _this = this;\n\n this._abortUpdateCursor();\n\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(function () {\n if (!_this.el) return; // if was destroyed\n\n _this.cursorPos = _this._changingCursorPos;\n\n _this._abortUpdateCursor();\n }, 10);\n }\n /**\r\n Fires custom events\r\n @protected\r\n */\n\n }, {\n key: \"_fireChangeEvents\",\n value: function _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n /**\r\n Aborts delayed cursor update\r\n @private\r\n */\n\n }, {\n key: \"_abortUpdateCursor\",\n value: function _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n /** Aligns cursor to nearest available position */\n\n }, {\n key: \"alignCursor\",\n value: function alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT);\n }\n /** Aligns cursor only if selection is empty */\n\n }, {\n key: \"alignCursorFriendly\",\n value: function alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n\n this.alignCursor();\n }\n /** Adds listener on custom event */\n\n }, {\n key: \"on\",\n value: function on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n\n this._listeners[ev].push(handler);\n\n return this;\n }\n /** Removes custom event listener */\n\n }, {\n key: \"off\",\n value: function off(ev, handler) {\n if (!this._listeners[ev]) return this;\n\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n\n var hIndex = this._listeners[ev].indexOf(handler);\n\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n /** Handles view input event */\n\n }, {\n key: \"_onInput\",\n value: function _onInput(e) {\n this._inputEvent = e;\n\n this._abortUpdateCursor(); // fix strange IE behavior\n\n\n if (!this._selection) return this.updateValue();\n var details = new ActionDetails( // new state\n this.el.value, this.cursorPos, // old state\n this.value, this._selection);\n var oldRawValue = this.masked.rawInputValue;\n var offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection).offset; // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n\n var removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n var cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n /** Handles view change event and commits model value */\n\n }, {\n key: \"_onChange\",\n value: function _onChange() {\n if (this.value !== this.el.value) {\n this.updateValue();\n }\n\n this.masked.doCommit();\n this.updateControl();\n\n this._saveSelection();\n }\n /** Handles view drop event, prevents by default */\n\n }, {\n key: \"_onDrop\",\n value: function _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n /** Restore last selection on focus */\n\n }, {\n key: \"_onFocus\",\n value: function _onFocus(ev) {\n this.alignCursorFriendly();\n }\n /** Restore last selection on focus */\n\n }, {\n key: \"_onClick\",\n value: function _onClick(ev) {\n this.alignCursorFriendly();\n }\n /** Unbind view events and removes element reference */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._unbindEvents(); // $FlowFixMe why not do so?\n\n\n this._listeners.length = 0; // $FlowFixMe\n\n delete this.el;\n }\n }]);\n\n return InputMask;\n}();\nIMask.InputMask = InputMask;\n\nexport default InputMask;\n","import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\n\nvar MaskedEnum = /*#__PURE__*/function (_MaskedPattern) {\n _inherits(MaskedEnum, _MaskedPattern);\n\n var _super = _createSuper(MaskedEnum);\n\n function MaskedEnum() {\n _classCallCheck(this, MaskedEnum);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedEnum, [{\n key: \"_update\",\n value:\n /**\r\n @override\r\n @param {Object} opts\r\n */\n function _update(opts) {\n // TODO type\n if (opts.enum) opts.mask = '*'.repeat(opts.enum[0].length);\n\n _get(_getPrototypeOf(MaskedEnum.prototype), \"_update\", this).call(this, opts);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _this = this,\n _get2;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.enum.some(function (e) {\n return e.indexOf(_this.unmaskedValue) >= 0;\n }) && (_get2 = _get(_getPrototypeOf(MaskedEnum.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args));\n }\n }]);\n\n return MaskedEnum;\n}(MaskedPattern);\nIMask.MaskedEnum = MaskedEnum;\n\nexport default MaskedEnum;\n","import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf, f as _slicedToArray, i as _set } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/**\r\n Number mask\r\n @param {Object} opts\r\n @param {string} opts.radix - Single char\r\n @param {string} opts.thousandsSeparator - Single char\r\n @param {Array} opts.mapToRadix - Array of single chars\r\n @param {number} opts.min\r\n @param {number} opts.max\r\n @param {number} opts.scale - Digits after point\r\n @param {boolean} opts.signed - Allow negative\r\n @param {boolean} opts.normalizeZeros - Flag to remove leading and trailing zeros in the end of editing\r\n @param {boolean} opts.padFractionalZeros - Flag to pad trailing zeros after point in the end of editing\r\n*/\nvar MaskedNumber = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedNumber, _Masked);\n\n var _super = _createSuper(MaskedNumber);\n\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n function MaskedNumber(opts) {\n _classCallCheck(this, MaskedNumber);\n\n return _super.call(this, Object.assign({}, MaskedNumber.DEFAULTS, opts));\n }\n /**\r\n @override\r\n */\n\n\n _createClass(MaskedNumber, [{\n key: \"_update\",\n value: function _update(opts) {\n _get(_getPrototypeOf(MaskedNumber.prototype), \"_update\", this).call(this, opts);\n\n this._updateRegExps();\n }\n /** */\n\n }, {\n key: \"_updateRegExps\",\n value: function _updateRegExps() {\n // use different regexp to process user input (more strict, input suffix) and tail shifting\n var start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n var midInput = '(0|([1-9]+\\\\d*))?';\n var mid = '\\\\d*';\n var end = (this.scale ? '(' + escapeRegExp(this.radix) + '\\\\d{0,' + this.scale + '})?' : '') + '$';\n this._numberRegExpInput = new RegExp(start + midInput + end);\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp('[' + this.mapToRadix.map(escapeRegExp).join('') + ']', 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n /** */\n\n }, {\n key: \"_removeThousandsSeparators\",\n value: function _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n /** */\n\n }, {\n key: \"_insertThousandsSeparators\",\n value: function _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n var parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(str) {\n var _get2;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return (_get2 = _get(_getPrototypeOf(MaskedNumber.prototype), \"doPrepare\", this)).call.apply(_get2, [this, this._removeThousandsSeparators(str.replace(this._mapToRadixRegExp, this.radix))].concat(args));\n }\n /** */\n\n }, {\n key: \"_separatorsCount\",\n value: function _separatorsCount(to) {\n var extendOnSeparators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var count = 0;\n\n for (var pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n\n return count;\n }\n /** */\n\n }, {\n key: \"_separatorsCountFromSlice\",\n value: function _separatorsCountFromSlice() {\n var slice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._value;\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 ? arguments[2] : undefined;\n\n var _this$_adjustRangeWit = this._adjustRangeWithSeparators(fromPos, toPos);\n\n var _this$_adjustRangeWit2 = _slicedToArray(_this$_adjustRangeWit, 2);\n\n fromPos = _this$_adjustRangeWit2[0];\n toPos = _this$_adjustRangeWit2[1];\n return this._removeThousandsSeparators(_get(_getPrototypeOf(MaskedNumber.prototype), \"extractInput\", this).call(this, fromPos, toPos, flags));\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.thousandsSeparator) return _get(_getPrototypeOf(MaskedNumber.prototype), \"_appendCharRaw\", this).call(this, ch, flags);\n var prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n\n var prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n\n this._value = this._removeThousandsSeparators(this.value);\n\n var appendDetails = _get(_getPrototypeOf(MaskedNumber.prototype), \"_appendCharRaw\", this).call(this, ch, flags);\n\n this._value = this._insertThousandsSeparators(this._value);\n var beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n\n var beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n /** */\n\n }, {\n key: \"_findSeparatorAround\",\n value: function _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n var searchFrom = pos - this.thousandsSeparator.length + 1;\n var separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n\n return -1;\n }\n }, {\n key: \"_adjustRangeWithSeparators\",\n value: function _adjustRangeWithSeparators(from, to) {\n var separatorAroundFromPos = this._findSeparatorAround(from);\n\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n\n var separatorAroundToPos = this._findSeparatorAround(to);\n\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n var _this$_adjustRangeWit3 = this._adjustRangeWithSeparators(fromPos, toPos);\n\n var _this$_adjustRangeWit4 = _slicedToArray(_this$_adjustRangeWit3, 2);\n\n fromPos = _this$_adjustRangeWit4[0];\n toPos = _this$_adjustRangeWit4[1];\n var valueBeforePos = this.value.slice(0, fromPos);\n var valueAfterPos = this.value.slice(toPos);\n\n var prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n\n var beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n var separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n\n if (separatorAtLeftPos >= 0) {\n var separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n\n break;\n }\n\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n var separatorAtRightPos = this._findSeparatorAround(cursorPos);\n\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n\n return cursorPos;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate(flags) {\n var regexp = flags.input ? this._numberRegExpInput : this._numberRegExp; // validate as string\n\n var valid = regexp.test(this._removeThousandsSeparators(this.value));\n\n if (valid) {\n // validate as number\n var number = this.number;\n valid = valid && !isNaN(number) && ( // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && ( // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n\n return valid && _get(_getPrototypeOf(MaskedNumber.prototype), \"doValidate\", this).call(this, flags);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n if (this.value) {\n var number = this.number;\n var validnum = number; // check bounds\n\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = String(validnum);\n var formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n\n _get(_getPrototypeOf(MaskedNumber.prototype), \"doCommit\", this).call(this);\n }\n /** */\n\n }, {\n key: \"_normalizeZeros\",\n value: function _normalizeZeros(value) {\n var parts = this._removeThousandsSeparators(value).split(this.radix); // remove leading zeros\n\n\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, function (match, sign, zeros, num) {\n return sign + num;\n }); // add leading zero\n\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n /** */\n\n }, {\n key: \"_padFractionalZeros\",\n value: function _padFractionalZeros(value) {\n if (!value) return value;\n var parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, '.');\n },\n set: function set(unmaskedValue) {\n _set(_getPrototypeOf(MaskedNumber.prototype), \"unmaskedValue\", unmaskedValue.replace('.', this.radix), this, true);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return Number(this.unmaskedValue);\n },\n set: function set(n) {\n _set(_getPrototypeOf(MaskedNumber.prototype), \"unmaskedValue\", String(n), this, true);\n }\n /** Parsed Number */\n\n }, {\n key: \"number\",\n get: function get() {\n return this.typedValue;\n },\n set: function set(number) {\n this.typedValue = number;\n }\n /**\r\n Is negative allowed\r\n @readonly\r\n */\n\n }, {\n key: \"allowNegative\",\n get: function get() {\n return this.signed || this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n }]);\n\n return MaskedNumber;\n}(Masked);\nMaskedNumber.DEFAULTS = {\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: ['.'],\n scale: 2,\n signed: false,\n normalizeZeros: true,\n padFractionalZeros: false\n};\nIMask.MaskedNumber = MaskedNumber;\n\nexport default MaskedNumber;\n","import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\n\nvar MaskedFunction = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedFunction, _Masked);\n\n var _super = _createSuper(MaskedFunction);\n\n function MaskedFunction() {\n _classCallCheck(this, MaskedFunction);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedFunction, [{\n key: \"_update\",\n value:\n /**\r\n @override\r\n @param {Object} opts\r\n */\n function _update(opts) {\n if (opts.mask) opts.validate = opts.mask;\n\n _get(_getPrototypeOf(MaskedFunction.prototype), \"_update\", this).call(this, opts);\n }\n }]);\n\n return MaskedFunction;\n}(Masked);\nIMask.MaskedFunction = MaskedFunction;\n\nexport default MaskedFunction;\n","import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf, i as _set, b as _objectWithoutProperties } from '../_rollupPluginBabelHelpers-6ccb1f64.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/continuous-tail-details.js';\n\n/** Dynamic mask for choosing apropriate mask in run-time */\nvar MaskedDynamic = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedDynamic, _Masked);\n\n var _super = _createSuper(MaskedDynamic);\n\n /** Currently chosen mask */\n\n /** Compliled {@link Masked} options */\n\n /** Chooses {@link Masked} depending on input value */\n\n /**\r\n @param {Object} opts\r\n */\n function MaskedDynamic(opts) {\n var _this;\n\n _classCallCheck(this, MaskedDynamic);\n\n _this = _super.call(this, Object.assign({}, MaskedDynamic.DEFAULTS, opts));\n _this.currentMask = null;\n return _this;\n }\n /**\r\n @override\r\n */\n\n\n _createClass(MaskedDynamic, [{\n key: \"_update\",\n value: function _update(opts) {\n _get(_getPrototypeOf(MaskedDynamic.prototype), \"_update\", this).call(this, opts);\n\n if ('mask' in opts) {\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(function (m) {\n return createMask(m);\n }) : [];\n }\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var details = this._applyDispatch(ch, flags);\n\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, flags));\n }\n\n return details;\n }\n }, {\n key: \"_applyDispatch\",\n value: function _applyDispatch() {\n var appended = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n var inputValue = this.rawInputValue;\n var insertValue = flags.tail && flags._beforeTailState != null ? // $FlowFixMe - tired to fight with type system\n flags._beforeTailState._rawInputValue : inputValue;\n var tailValue = inputValue.slice(insertValue.length);\n var prevMask = this.currentMask;\n var details = new ChangeDetails();\n var prevMaskState = prevMask && prevMask.state; // clone flags to prevent overwriting `_beforeTailState`\n\n this.currentMask = this.doDispatch(appended, Object.assign({}, flags)); // restore state after dispatch\n\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n\n if (insertValue) {\n // $FlowFixMe - it's ok, we don't change current mask above\n var d = this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n }\n\n if (tailValue) {\n // $FlowFixMe - it's ok, we don't change current mask above\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n\n return details;\n }\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n var details = this._applyDispatch.apply(this, arguments);\n\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n\n return details;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doDispatch\",\n value: function doDispatch(appended) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.dispatch(appended, this, flags);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _get2, _this$currentMask;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return (_get2 = _get(_getPrototypeOf(MaskedDynamic.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args)) && (!this.currentMask || (_this$currentMask = this.currentMask).doValidate.apply(_this$currentMask, args));\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.currentMask) this.currentMask.reset();\n this.compiledMasks.forEach(function (m) {\n return m.reset();\n });\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"value\",\n get: function get() {\n return this.currentMask ? this.currentMask.value : '';\n },\n set: function set(value) {\n _set(_getPrototypeOf(MaskedDynamic.prototype), \"value\", value, this, true);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.currentMask ? this.currentMask.unmaskedValue : '';\n },\n set: function set(unmaskedValue) {\n _set(_getPrototypeOf(MaskedDynamic.prototype), \"unmaskedValue\", unmaskedValue, this, true);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.currentMask ? this.currentMask.typedValue : '';\n } // probably typedValue should not be used with dynamic\n ,\n set: function set(value) {\n var unmaskedValue = String(value); // double check it\n\n if (this.currentMask) {\n this.currentMask.typedValue = value;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n\n this.unmaskedValue = unmaskedValue;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return !!this.currentMask && this.currentMask.isComplete;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var details = new ChangeDetails();\n\n if (this.currentMask) {\n var _this$currentMask2;\n\n details.aggregate((_this$currentMask2 = this.currentMask).remove.apply(_this$currentMask2, arguments)) // update with dispatch\n .aggregate(this._applyDispatch());\n }\n\n return details;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"state\",\n get: function get() {\n return Object.assign({}, _get(_getPrototypeOf(MaskedDynamic.prototype), \"state\", this), {\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(function (m) {\n return m.state;\n }),\n currentMaskRef: this.currentMask,\n currentMask: this.currentMask && this.currentMask.state\n });\n },\n set: function set(state) {\n var compiledMasks = state.compiledMasks,\n currentMaskRef = state.currentMaskRef,\n currentMask = state.currentMask,\n maskedState = _objectWithoutProperties(state, [\"compiledMasks\", \"currentMaskRef\", \"currentMask\"]);\n\n this.compiledMasks.forEach(function (m, mi) {\n return m.state = compiledMasks[mi];\n });\n\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n\n _set(_getPrototypeOf(MaskedDynamic.prototype), \"state\", maskedState, this, true);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var _this$currentMask3;\n\n return this.currentMask ? (_this$currentMask3 = this.currentMask).extractInput.apply(_this$currentMask3, arguments) : '';\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var _this$currentMask4, _get3;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.currentMask ? (_this$currentMask4 = this.currentMask).extractTail.apply(_this$currentMask4, args) : (_get3 = _get(_getPrototypeOf(MaskedDynamic.prototype), \"extractTail\", this)).call.apply(_get3, [this].concat(args));\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n\n _get(_getPrototypeOf(MaskedDynamic.prototype), \"doCommit\", this).call(this);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos() {\n var _this$currentMask5, _get4;\n\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.currentMask ? (_this$currentMask5 = this.currentMask).nearestInputPos.apply(_this$currentMask5, args) : (_get4 = _get(_getPrototypeOf(MaskedDynamic.prototype), \"nearestInputPos\", this)).call.apply(_get4, [this].concat(args));\n }\n }, {\n key: \"overwrite\",\n get: function get() {\n return this.currentMask ? this.currentMask.overwrite : _get(_getPrototypeOf(MaskedDynamic.prototype), \"overwrite\", this);\n },\n set: function set(overwrite) {\n console.warn('\"overwrite\" option is not available in dynamic mask, use this option in siblings');\n }\n }]);\n\n return MaskedDynamic;\n}(Masked);\nMaskedDynamic.DEFAULTS = {\n dispatch: function dispatch(appended, masked, flags) {\n if (!masked.compiledMasks.length) return;\n var inputValue = masked.rawInputValue; // simulate input\n\n var inputs = masked.compiledMasks.map(function (m, index) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n m.append(appended, flags);\n var weight = m.rawInputValue.length;\n return {\n weight: weight,\n index: index\n };\n }); // pop masks with longer values first\n\n inputs.sort(function (i1, i2) {\n return i2.weight - i1.weight;\n });\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport default MaskedDynamic;\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../_rollupPluginBabelHelpers-6ccb1f64.js';\n\n/** Mask pipe source and destination types */\n\nvar PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\n\nfunction createPipe(mask) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : PIPE_TYPE.MASKED;\n var to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : PIPE_TYPE.MASKED;\n var masked = createMask(mask);\n return function (value) {\n return masked.runIsolated(function (m) {\n m[from] = value;\n return m[to];\n });\n };\n}\n/** Pipes value through mask depending on mask type, source and destination options */\n\nfunction pipe(value) {\n for (var _len = arguments.length, pipeArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n pipeArgs[_key - 1] = arguments[_key];\n }\n\n return createPipe.apply(void 0, pipeArgs)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default } from './core/holder.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as createMask } from './masked/factory.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nimport './_rollupPluginBabelHelpers-6ccb1f64.js';\nimport './core/utils.js';\nimport './core/action-details.js';\nimport './core/change-details.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/input-definition.js';\nimport './masked/pattern/fixed-definition.js';\nimport './masked/pattern/chunk-tail-details.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch (e) {}\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","// Robert Penner's easeInOutQuad\n\n// find the rest of his easing functions here: http://robertpenner.com/easing/\n// find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\nvar easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0; // element to scroll to (node)\n\n var start = void 0; // where scroll starts (px)\n var stop = void 0; // where scroll stops (px)\n\n var offset = void 0; // adjustment from the stop position (px)\n var easing = void 0; // easing function (function)\n var a11y = void 0; // accessibility support flag (boolean)\n\n var distance = void 0; // distance of scroll (px)\n var duration = void 0; // scroll duration (ms)\n\n var timeStart = void 0; // time scroll started (ms)\n var timeElapsed = void 0; // time spent scrolling thus far (ms)\n\n var next = void 0; // next scroll position (px)\n\n var callback = void 0; // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset;\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start;\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent;\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart;\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration);\n\n // scroll to it\n window.scrollTo(0, next);\n\n // check progress\n timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop\n : done(); // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance);\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1');\n\n // focus the element\n element.focus();\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback();\n }\n\n // reset time for next jump\n timeStart = false;\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // resolve options, or use defaults\n duration = options.duration || 1000;\n offset = options.offset || 0;\n callback = options.callback; // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad;\n a11y = options.a11y || false;\n\n // cache starting position\n start = location();\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined; // no element to scroll to\n a11y = false; // make sure accessibility is off\n stop = start + target;\n break;\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target;\n stop = top(element);\n break;\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target);\n stop = top(element);\n break;\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset;\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration;\n break;\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance);\n break;\n }\n\n // start the loop\n window.requestAnimationFrame(loop);\n }\n\n // expose only the jump method\n return jump;\n};\n\n// export singleton\n\nvar singleton = jumper();\n\nexport default singleton;\n","/**!\n * lg-thumbnail.js | 1.2.0 | May 20th 2020\n * http://sachinchoolur.github.io/lg-thumbnail.js\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgThumbnail = f()}})(function(){var define,module,exports;return (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 1) {\n if (this.core.s.showThumbByDefault) {\n setTimeout(function () {\n utils.addClass(_this.core.outer, 'lg-thumb-open');\n }, 700);\n }\n\n if (this.core.s.pullCaptionUp) {\n utils.addClass(this.core.outer, 'lg-pull-caption-up');\n }\n\n this.build();\n if (this.core.s.animateThumb) {\n if (this.core.s.enableThumbDrag && !this.core.isTouch && this.core.doCss()) {\n this.enableThumbDrag();\n }\n\n if (this.core.s.enableThumbSwipe && this.core.isTouch && this.core.doCss()) {\n this.enableThumbSwipe();\n }\n\n this.thumbClickable = false;\n } else {\n this.thumbClickable = true;\n }\n\n this.toggle();\n this.thumbkeyPress();\n }\n };\n\n Thumbnail.prototype.build = function () {\n var _this = this;\n var thumbList = '';\n var vimeoErrorThumbSize = '';\n var $thumb;\n var html = '
' + '
' + '
' + '
';\n\n switch (this.core.s.vimeoThumbSize) {\n case 'thumbnail_large':\n vimeoErrorThumbSize = '640';\n break;\n case 'thumbnail_medium':\n vimeoErrorThumbSize = '200x150';\n break;\n case 'thumbnail_small':\n vimeoErrorThumbSize = '100x75';\n }\n\n utils.addClass(_this.core.outer, 'lg-has-thumb');\n\n _this.core.outer.querySelector('.lg').insertAdjacentHTML('beforeend', html);\n\n _this.thumbOuter = _this.core.outer.querySelector('.lg-thumb-outer');\n _this.thumbOuterWidth = _this.thumbOuter.offsetWidth;\n\n if (_this.core.s.animateThumb) {\n _this.core.outer.querySelector('.lg-thumb').style.width = _this.thumbTotalWidth + 'px';\n _this.core.outer.querySelector('.lg-thumb').style.position = 'relative';\n }\n\n if (this.core.s.animateThumb) {\n _this.thumbOuter.style.height = _this.core.s.thumbContHeight + 'px';\n }\n\n function getThumb(src, thumb, index) {\n var isVideo = _this.core.isVideo(src, index) || {};\n var thumbImg;\n var vimeoId = '';\n\n if (isVideo.youtube || isVideo.vimeo || isVideo.dailymotion) {\n if (isVideo.youtube) {\n if (_this.core.s.loadYoutubeThumbnail) {\n thumbImg = '//img.youtube.com/vi/' + isVideo.youtube[1] + '/' + _this.core.s.youtubeThumbSize + '.jpg';\n } else {\n thumbImg = thumb;\n }\n } else if (isVideo.vimeo) {\n if (_this.core.s.loadVimeoThumbnail) {\n thumbImg = '//i.vimeocdn.com/video/error_' + vimeoErrorThumbSize + '.jpg';\n vimeoId = isVideo.vimeo[1];\n } else {\n thumbImg = thumb;\n }\n } else if (isVideo.dailymotion) {\n if (_this.core.s.loadDailymotionThumbnail) {\n thumbImg = '//www.dailymotion.com/thumbnail/video/' + isVideo.dailymotion[1];\n } else {\n thumbImg = thumb;\n }\n }\n } else {\n thumbImg = thumb;\n }\n\n thumbList += '
';\n vimeoId = '';\n }\n\n if (_this.core.s.dynamic) {\n for (var j = 0; j < _this.core.s.dynamicEl.length; j++) {\n getThumb(_this.core.s.dynamicEl[j].src, _this.core.s.dynamicEl[j].thumb, j);\n }\n } else {\n for (var i = 0; i < _this.core.items.length; i++) {\n if (!_this.core.s.exThumbImage) {\n getThumb(_this.core.items[i].getAttribute('href') || _this.core.items[i].getAttribute('data-src'), _this.core.items[i].querySelector('img').getAttribute('src'), i);\n } else {\n getThumb(_this.core.items[i].getAttribute('href') || _this.core.items[i].getAttribute('data-src'), _this.core.items[i].getAttribute(_this.core.s.exThumbImage), i);\n }\n }\n }\n\n _this.core.outer.querySelector('.lg-thumb').innerHTML = thumbList;\n\n $thumb = _this.core.outer.querySelectorAll('.lg-thumb-item');\n\n for (var n = 0; n < $thumb.length; n++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n var $this = $thumb[index];\n var vimeoVideoId = $this.getAttribute('data-vimeo-id');\n if (vimeoVideoId) {\n\n window['lgJsonP' + _this.el.getAttribute('lg-uid') + '' + n] = function (content) {\n $this.querySelector('img').setAttribute('src', content[0][_this.core.s.vimeoThumbSize]);\n };\n\n var script = document.createElement('script');\n script.className = 'lg-script';\n script.src = '//www.vimeo.com/api/v2/video/' + vimeoVideoId + '.json?callback=lgJsonP' + _this.el.getAttribute('lg-uid') + '' + n;\n document.body.appendChild(script);\n }\n })(n);\n }\n\n // manage active class for thumbnail\n utils.addClass($thumb[_this.core.index], 'active');\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function () {\n\n for (var j = 0; j < $thumb.length; j++) {\n utils.removeClass($thumb[j], 'active');\n }\n\n utils.addClass($thumb[_this.core.index], 'active');\n });\n\n for (var k = 0; k < $thumb.length; k++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n\n utils.on($thumb[index], 'click.lg touchend.lg', function () {\n\n setTimeout(function () {\n\n // In IE9 and bellow touch does not support\n // Go to slide if browser does not support css transitions\n if (_this.thumbClickable && !_this.core.lgBusy || !_this.core.doCss()) {\n _this.core.index = index;\n _this.core.slide(_this.core.index, false, true);\n }\n }, 50);\n });\n })(k);\n }\n\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function () {\n _this.animateThumb(_this.core.index);\n });\n\n utils.on(window, 'resize.lgthumb orientationchange.lgthumb', function () {\n setTimeout(function () {\n _this.animateThumb(_this.core.index);\n _this.thumbOuterWidth = _this.thumbOuter.offsetWidth;\n }, 200);\n });\n };\n\n Thumbnail.prototype.setTranslate = function (value) {\n utils.setVendor(this.core.outer.querySelector('.lg-thumb'), 'Transform', 'translate3d(-' + value + 'px, 0px, 0px)');\n };\n\n Thumbnail.prototype.animateThumb = function (index) {\n var $thumb = this.core.outer.querySelector('.lg-thumb');\n if (this.core.s.animateThumb) {\n var position;\n switch (this.core.s.currentPagerPosition) {\n case 'left':\n position = 0;\n break;\n case 'middle':\n position = this.thumbOuterWidth / 2 - this.core.s.thumbWidth / 2;\n break;\n case 'right':\n position = this.thumbOuterWidth - this.core.s.thumbWidth;\n }\n this.left = (this.core.s.thumbWidth + this.core.s.thumbMargin) * index - 1 - position;\n if (this.left > this.thumbTotalWidth - this.thumbOuterWidth) {\n this.left = this.thumbTotalWidth - this.thumbOuterWidth;\n }\n\n if (this.left < 0) {\n this.left = 0;\n }\n\n if (this.core.lGalleryOn) {\n if (!utils.hasClass($thumb, 'on')) {\n utils.setVendor(this.core.outer.querySelector('.lg-thumb'), 'TransitionDuration', this.core.s.speed + 'ms');\n }\n\n if (!this.core.doCss()) {\n $thumb.style.left = -this.left + 'px';\n }\n } else {\n if (!this.core.doCss()) {\n $thumb.style.left = -this.left + 'px';\n }\n }\n\n this.setTranslate(this.left);\n }\n };\n\n // Enable thumbnail dragging and swiping\n Thumbnail.prototype.enableThumbDrag = function () {\n\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isDraging = false;\n var isMoved = false;\n var tempLeft = 0;\n\n utils.addClass(_this.thumbOuter, 'lg-grab');\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'mousedown.lgthumb', function (e) {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n // execute only on .lg-object\n e.preventDefault();\n startCoords = e.pageX;\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.core.outer.scrollLeft += 1;\n _this.core.outer.scrollLeft -= 1;\n\n // *\n _this.thumbClickable = false;\n utils.removeClass(_this.thumbOuter, 'lg-grab');\n utils.addClass(_this.thumbOuter, 'lg-grabbing');\n }\n });\n\n utils.on(window, 'mousemove.lgthumb', function (e) {\n if (isDraging) {\n tempLeft = _this.left;\n isMoved = true;\n endCoords = e.pageX;\n\n utils.addClass(_this.thumbOuter, 'lg-dragging');\n\n tempLeft = tempLeft - (endCoords - startCoords);\n\n if (tempLeft > _this.thumbTotalWidth - _this.thumbOuterWidth) {\n tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;\n }\n\n if (tempLeft < 0) {\n tempLeft = 0;\n }\n\n // move current slide\n _this.setTranslate(tempLeft);\n }\n });\n\n utils.on(window, 'mouseup.lgthumb', function () {\n if (isMoved) {\n isMoved = false;\n utils.removeClass(_this.thumbOuter, 'lg-dragging');\n\n _this.left = tempLeft;\n\n if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {\n _this.thumbClickable = true;\n }\n } else {\n _this.thumbClickable = true;\n }\n\n if (isDraging) {\n isDraging = false;\n utils.removeClass(_this.thumbOuter, 'lg-grabbing');\n utils.addClass(_this.thumbOuter, 'lg-grab');\n }\n });\n };\n\n Thumbnail.prototype.enableThumbSwipe = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isMoved = false;\n var tempLeft = 0;\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'touchstart.lg', function (e) {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n e.preventDefault();\n startCoords = e.targetTouches[0].pageX;\n _this.thumbClickable = false;\n }\n });\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'touchmove.lg', function (e) {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n e.preventDefault();\n endCoords = e.targetTouches[0].pageX;\n isMoved = true;\n\n utils.addClass(_this.thumbOuter, 'lg-dragging');\n\n tempLeft = _this.left;\n\n tempLeft = tempLeft - (endCoords - startCoords);\n\n if (tempLeft > _this.thumbTotalWidth - _this.thumbOuterWidth) {\n tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;\n }\n\n if (tempLeft < 0) {\n tempLeft = 0;\n }\n\n // move current slide\n _this.setTranslate(tempLeft);\n }\n });\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'touchend.lg', function () {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n\n if (isMoved) {\n isMoved = false;\n utils.removeClass(_this.thumbOuter, 'lg-dragging');\n if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {\n _this.thumbClickable = true;\n }\n\n _this.left = tempLeft;\n } else {\n _this.thumbClickable = true;\n }\n } else {\n _this.thumbClickable = true;\n }\n });\n };\n\n Thumbnail.prototype.toggle = function () {\n var _this = this;\n if (_this.core.s.toggleThumb) {\n utils.addClass(_this.core.outer, 'lg-can-toggle');\n _this.thumbOuter.insertAdjacentHTML('beforeend', '');\n utils.on(_this.core.outer.querySelector('.lg-toggle-thumb'), 'click.lg', function () {\n if (utils.hasClass(_this.core.outer, 'lg-thumb-open')) {\n utils.removeClass(_this.core.outer, 'lg-thumb-open');\n } else {\n utils.addClass(_this.core.outer, 'lg-thumb-open');\n }\n });\n }\n };\n\n Thumbnail.prototype.thumbkeyPress = function () {\n var _this = this;\n utils.on(window, 'keydown.lgthumb', function (e) {\n if (e.keyCode === 38) {\n e.preventDefault();\n utils.addClass(_this.core.outer, 'lg-thumb-open');\n } else if (e.keyCode === 40) {\n e.preventDefault();\n utils.removeClass(_this.core.outer, 'lg-thumb-open');\n }\n });\n };\n\n Thumbnail.prototype.destroy = function (d) {\n if (this.core.s.thumbnail && this.core.items.length > 1) {\n utils.off(window, '.lgthumb');\n if (!d) {\n this.thumbOuter.parentNode.removeChild(this.thumbOuter);\n }\n utils.removeClass(this.core.outer, 'lg-has-thumb');\n\n var lgScript = document.getElementsByClassName('lg-script');\n while (lgScript[0]) {\n lgScript[0].parentNode.removeChild(lgScript[0]);\n }\n }\n };\n\n window.lgModules.thumbnail = Thumbnail;\n});\n\n},{}]},{},[1])(1)\n});\n","/**!\n * lightgallery.js | 1.4.0 | October 13th 2020\n * http://sachinchoolur.github.io/lightgallery.js/\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Lightgallery = f()}})(function(){var define,module,exports;return (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 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!el) {\n return;\n }\n\n var customEvent = new CustomEvent(event, {\n detail: detail\n });\n el.dispatchEvent(customEvent);\n },\n\n Listener: {\n uid: 0\n },\n on: function on(el, events, fn) {\n var _this = this;\n\n if (!el) {\n return;\n }\n\n events.split(' ').forEach(function (event) {\n var _id = _this.getAttribute(el, 'lg-event-uid') || '';\n utils.Listener.uid++;\n _id += '&' + utils.Listener.uid;\n _this.setAttribute(el, 'lg-event-uid', _id);\n utils.Listener[event + utils.Listener.uid] = fn;\n el.addEventListener(event.split('.')[0], fn, false);\n });\n },\n\n off: function off(el, event) {\n if (!el) {\n return;\n }\n\n var _id = this.getAttribute(el, 'lg-event-uid');\n if (_id) {\n _id = _id.split('&');\n for (var i = 0; i < _id.length; i++) {\n if (_id[i]) {\n var _event = event + _id[i];\n if (_event.substring(0, 1) === '.') {\n for (var key in utils.Listener) {\n if (utils.Listener.hasOwnProperty(key)) {\n if (key.split('.').indexOf(_event.split('.')[1]) > -1) {\n el.removeEventListener(key.split('.')[0], utils.Listener[key]);\n this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[key];\n }\n }\n }\n } else {\n el.removeEventListener(_event.split('.')[0], utils.Listener[_event]);\n this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[_event];\n }\n }\n }\n }\n },\n\n param: function param(obj) {\n return Object.keys(obj).map(function (k) {\n return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]);\n }).join('&');\n }\n };\n\n exports.default = utils;\n});\n\n},{}],2:[function(require,module,exports){\n(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['./lg-utils'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(require('./lg-utils'));\n } else {\n var mod = {\n exports: {}\n };\n factory(global.lgUtils);\n global.lightgallery = mod.exports;\n }\n})(this, function (_lgUtils) {\n 'use strict';\n\n var _lgUtils2 = _interopRequireDefault(_lgUtils);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n /** Polyfill the CustomEvent() constructor functionality in Internet Explorer 9 and higher */\n (function () {\n\n if (typeof window.CustomEvent === 'function') {\n return false;\n }\n\n function CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n\n CustomEvent.prototype = window.Event.prototype;\n\n window.CustomEvent = CustomEvent;\n })();\n\n window.utils = _lgUtils2.default;\n window.lgData = {\n uid: 0\n };\n\n window.lgModules = {};\n var defaults = {\n\n mode: 'lg-slide',\n\n // Ex : 'ease'\n cssEasing: 'ease',\n\n //'for jquery animation'\n easing: 'linear',\n speed: 600,\n height: '100%',\n width: '100%',\n addClass: '',\n startClass: 'lg-start-zoom',\n backdropDuration: 150,\n\n // Set 0, if u don't want to hide the controls \n hideBarsDelay: 6000,\n\n useLeft: false,\n\n // aria-labelledby attribute fot gallery\n ariaLabelledby: '',\n\n //aria-describedby attribute for gallery\n ariaDescribedby: '',\n\n closable: true,\n loop: true,\n escKey: true,\n keyPress: true,\n controls: true,\n slideEndAnimatoin: true,\n hideControlOnEnd: false,\n mousewheel: false,\n\n getCaptionFromTitleOrAlt: true,\n\n // .lg-item || '.lg-sub-html'\n appendSubHtmlTo: '.lg-sub-html',\n\n subHtmlSelectorRelative: false,\n\n /**\n * @desc number of preload slides\n * will exicute only after the current slide is fully loaded.\n *\n * @ex you clicked on 4th image and if preload = 1 then 3rd slide and 5th\n * slide will be loaded in the background after the 4th slide is fully loaded..\n * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ...\n *\n */\n preload: 1,\n showAfterLoad: true,\n selector: '',\n selectWithin: '',\n nextHtml: '',\n prevHtml: '',\n\n // 0, 1\n index: false,\n\n iframeMaxWidth: '100%',\n\n download: true,\n counter: true,\n appendCounterTo: '.lg-toolbar',\n\n swipeThreshold: 50,\n enableSwipe: true,\n enableDrag: true,\n\n dynamic: false,\n dynamicEl: [],\n galleryId: 1,\n supportLegacyBrowser: true\n };\n\n function Plugin(element, options) {\n\n // Current lightGallery element\n this.el = element;\n\n // lightGallery settings\n this.s = _extends({}, defaults, options);\n\n // When using dynamic mode, ensure dynamicEl is an array\n if (this.s.dynamic && this.s.dynamicEl !== 'undefined' && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) {\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\n }\n\n // lightGallery modules\n this.modules = {};\n\n // false when lightgallery complete first slide;\n this.lGalleryOn = false;\n\n this.lgBusy = false;\n\n // Timeout function for hiding controls;\n this.hideBartimeout = false;\n\n // To determine browser supports for touch events;\n this.isTouch = 'ontouchstart' in document.documentElement;\n\n // Disable hideControlOnEnd if sildeEndAnimation is true\n if (this.s.slideEndAnimatoin) {\n this.s.hideControlOnEnd = false;\n }\n\n this.items = [];\n\n // Gallery items\n if (this.s.dynamic) {\n this.items = this.s.dynamicEl;\n } else {\n if (this.s.selector === 'this') {\n this.items.push(this.el);\n } else if (this.s.selector !== '') {\n if (this.s.selectWithin) {\n this.items = document.querySelector(this.s.selectWithin).querySelectorAll(this.s.selector);\n } else {\n this.items = this.el.querySelectorAll(this.s.selector);\n }\n } else {\n this.items = this.el.children;\n }\n }\n\n // .lg-item\n\n this.___slide = '';\n\n // .lg-outer\n this.outer = '';\n\n this.init();\n\n return this;\n }\n\n Plugin.prototype.init = function () {\n\n var _this = this;\n\n // s.preload should not be more than $item.length\n if (_this.s.preload > _this.items.length) {\n _this.s.preload = _this.items.length;\n }\n\n // if dynamic option is enabled execute immediately\n var _hash = window.location.hash;\n if (_hash.indexOf('lg=' + this.s.galleryId) > 0) {\n\n _this.index = parseInt(_hash.split('&slide=')[1], 10);\n\n _lgUtils2.default.addClass(document.body, 'lg-from-hash');\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n }\n\n if (_this.s.dynamic) {\n\n _lgUtils2.default.trigger(this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || 0;\n\n // prevent accidental double execution\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n } else {\n\n for (var i = 0; i < _this.items.length; i++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n\n // Using different namespace for click because click event should not unbind if selector is same object('this')\n _lgUtils2.default.on(_this.items[index], 'click.lgcustom', function (e) {\n\n e.preventDefault();\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || index;\n\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _this.build(_this.index);\n _lgUtils2.default.addClass(document.body, 'lg-on');\n }\n });\n })(i);\n }\n }\n };\n\n Plugin.prototype.build = function (index) {\n\n var _this = this;\n\n _this.structure();\n\n for (var key in window.lgModules) {\n _this.modules[key] = new window.lgModules[key](_this.el);\n }\n\n // initiate slide function\n _this.slide(index, false, false);\n\n if (_this.s.keyPress) {\n _this.keyPress();\n }\n\n if (_this.items.length > 1) {\n\n _this.arrow();\n\n setTimeout(function () {\n _this.enableDrag();\n _this.enableSwipe();\n }, 50);\n\n if (_this.s.mousewheel) {\n _this.mousewheel();\n }\n }\n\n _this.counter();\n\n _this.closeGallery();\n\n _lgUtils2.default.trigger(_this.el, 'onAfterOpen');\n\n // Hide controllers if mouse doesn't move for some period\n if (_this.s.hideBarsDelay > 0) {\n\n // Hide controls if user doesn't use mouse or touch after opening gallery\n var initialHideBarTimeout = setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-items');\n }, _this.s.hideBarsDelay);\n _lgUtils2.default.on(_this.outer, 'mousemove.lg click.lg touchstart.lg', function () {\n\n // Cancel initalHideBarTimout if user uses mouse or touch events\n // Before it fires\n clearTimeout(initialHideBarTimeout);\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-items');\n\n clearTimeout(_this.hideBartimeout);\n\n // Timeout will be cleared on each slide movement also\n _this.hideBartimeout = setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-items');\n }, _this.s.hideBarsDelay);\n });\n }\n };\n\n Plugin.prototype.structure = function () {\n var list = '';\n var controls = '';\n var i = 0;\n var subHtmlCont = '';\n var template;\n var _this = this;\n\n document.body.insertAdjacentHTML('beforeend', '
');\n _lgUtils2.default.setVendor(document.querySelector('.lg-backdrop'), 'TransitionDuration', this.s.backdropDuration + 'ms');\n\n // Create gallery items\n for (i = 0; i < this.items.length; i++) {\n list += '
';\n }\n\n // Create controlls\n if (this.s.controls && this.items.length > 1) {\n controls = '
' + '' + '' + '
';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n subHtmlCont = '
';\n }\n\n var ariaLabelledby = this.s.ariaLabelledby ? 'aria-labelledby=\"' + this.s.ariaLabelledby + '\"' : '';\n var ariaDescribedby = this.s.ariaDescribedby ? 'aria-describedby=\"' + this.s.ariaDescribedby + '\"' : '';\n\n template = '
' + '
' + '
' + list + '
' + '
' + '' + '
' + controls + subHtmlCont + '
' + '
';\n\n document.body.insertAdjacentHTML('beforeend', template);\n this.outer = document.querySelector('.lg-outer');\n this.outer.focus();\n this.___slide = this.outer.querySelectorAll('.lg-item');\n\n if (this.s.useLeft) {\n _lgUtils2.default.addClass(this.outer, 'lg-use-left');\n\n // Set mode lg-slide if use left is true;\n this.s.mode = 'lg-slide';\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-use-css3');\n }\n\n // For fixed height gallery\n _this.setTop();\n _lgUtils2.default.on(window, 'resize.lg orientationchange.lg', function () {\n setTimeout(function () {\n _this.setTop();\n }, 100);\n });\n\n // add class lg-current to remove initial transition\n _lgUtils2.default.addClass(this.___slide[this.index], 'lg-current');\n\n // add Class for css support and transition mode\n if (this.doCss()) {\n _lgUtils2.default.addClass(this.outer, 'lg-css3');\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-css');\n\n // Set speed 0 because no animation will happen if browser doesn't support css3\n this.s.speed = 0;\n }\n\n _lgUtils2.default.addClass(this.outer, this.s.mode);\n\n if (this.s.enableDrag && this.items.length > 1) {\n _lgUtils2.default.addClass(this.outer, 'lg-grab');\n }\n\n if (this.s.showAfterLoad) {\n _lgUtils2.default.addClass(this.outer, 'lg-show-after-load');\n }\n\n if (this.doCss()) {\n var inner = this.outer.querySelector('.lg-inner');\n _lgUtils2.default.setVendor(inner, 'TransitionTimingFunction', this.s.cssEasing);\n _lgUtils2.default.setVendor(inner, 'TransitionDuration', this.s.speed + 'ms');\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(document.querySelector('.lg-backdrop'), 'in');\n });\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-visible');\n }, this.s.backdropDuration);\n\n if (this.s.download) {\n this.outer.querySelector('.lg-toolbar').insertAdjacentHTML('beforeend', '
');\n }\n\n // Store the current scroll top value to scroll back after closing the gallery..\n this.prevScrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n };\n\n // For fixed height gallery\n Plugin.prototype.setTop = function () {\n if (this.s.height !== '100%') {\n var wH = window.innerHeight;\n var top = (wH - parseInt(this.s.height, 10)) / 2;\n var lGallery = this.outer.querySelector('.lg');\n if (wH >= parseInt(this.s.height, 10)) {\n lGallery.style.top = top + 'px';\n } else {\n lGallery.style.top = '0px';\n }\n }\n };\n\n // Find css3 support\n Plugin.prototype.doCss = function () {\n // check for css animation support\n var support = function support() {\n var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];\n var root = document.documentElement;\n var i = 0;\n for (i = 0; i < transition.length; i++) {\n if (transition[i] in root.style) {\n return true;\n }\n }\n };\n\n if (support()) {\n return true;\n }\n\n return false;\n };\n\n /**\n * @desc Check the given src is video\n * @param {String} src\n * @return {Object} video type\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\n */\n Plugin.prototype.isVideo = function (src, index) {\n\n var html;\n if (this.s.dynamic) {\n html = this.s.dynamicEl[index].html;\n } else {\n html = this.items[index].getAttribute('data-html');\n }\n\n if (!src && html) {\n return {\n html5: true\n };\n }\n\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)/i);\n var vimeo = src.match(/\\/\\/(?:www\\.)?vimeo.com\\/([0-9a-z\\-_]+)/i);\n var dailymotion = src.match(/\\/\\/(?:www\\.)?dai.ly\\/([0-9a-z\\-_]+)/i);\n var vk = src.match(/\\/\\/(?:www\\.)?(?:vk\\.com|vkontakte\\.ru)\\/(?:video_ext\\.php\\?)(.*)/i);\n\n if (youtube) {\n return {\n youtube: youtube\n };\n } else if (vimeo) {\n return {\n vimeo: vimeo\n };\n } else if (dailymotion) {\n return {\n dailymotion: dailymotion\n };\n } else if (vk) {\n return {\n vk: vk\n };\n }\n };\n\n /**\n * @desc Create image counter\n * Ex: 1/10\n */\n Plugin.prototype.counter = function () {\n if (this.s.counter) {\n this.outer.querySelector(this.s.appendCounterTo).insertAdjacentHTML('beforeend', '
' + (parseInt(this.index, 10) + 1) + ' / ' + this.items.length + '
');\n }\n };\n\n /**\n * @desc add sub-html into the slide\n * @param {Number} index - index of the slide\n */\n Plugin.prototype.addHtml = function (index) {\n var subHtml = null;\n var currentEle;\n if (this.s.dynamic) {\n subHtml = this.s.dynamicEl[index].subHtml;\n } else {\n currentEle = this.items[index];\n subHtml = currentEle.getAttribute('data-sub-html');\n if (this.s.getCaptionFromTitleOrAlt && !subHtml) {\n subHtml = currentEle.getAttribute('title');\n if (subHtml && currentEle.querySelector('img')) {\n subHtml = currentEle.querySelector('img').getAttribute('alt');\n }\n }\n }\n\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n\n // get first letter of subhtml\n // if first letter starts with . or # get the html form the jQuery object\n var fL = subHtml.substring(0, 1);\n if (fL === '.' || fL === '#') {\n if (this.s.subHtmlSelectorRelative && !this.s.dynamic) {\n subHtml = currentEle.querySelector(subHtml).innerHTML;\n } else {\n subHtml = document.querySelector(subHtml).innerHTML;\n }\n }\n } else {\n subHtml = '';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n this.outer.querySelector(this.s.appendSubHtmlTo).innerHTML = subHtml;\n } else {\n this.___slide[index].insertAdjacentHTML('beforeend', subHtml);\n }\n\n // Add lg-empty-html class if title doesn't exist\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n if (subHtml === '') {\n _lgUtils2.default.addClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n } else {\n _lgUtils2.default.removeClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n }\n }\n\n _lgUtils2.default.trigger(this.el, 'onAfterAppendSubHtml', {\n index: index\n });\n };\n\n /**\n * @desc Preload slides\n * @param {Number} index - index of the slide\n */\n Plugin.prototype.preload = function (index) {\n var i = 1;\n var j = 1;\n for (i = 1; i <= this.s.preload; i++) {\n if (i >= this.items.length - index) {\n break;\n }\n\n this.loadContent(index + i, false, 0);\n }\n\n for (j = 1; j <= this.s.preload; j++) {\n if (index - j < 0) {\n break;\n }\n\n this.loadContent(index - j, false, 0);\n }\n };\n\n /**\n * @desc Load slide content into slide.\n * @param {Number} index - index of the slide.\n * @param {Boolean} rec - if true call loadcontent() function again.\n * @param {Boolean} delay - delay for adding complete class. it is 0 except first time.\n */\n Plugin.prototype.loadContent = function (index, rec, delay) {\n\n var _this = this;\n var _hasPoster = false;\n var _img;\n var _src;\n var _poster;\n var _srcset;\n var _sizes;\n var _html;\n var _alt;\n var getResponsiveSrc = function getResponsiveSrc(srcItms) {\n var rsWidth = [];\n var rsSrc = [];\n for (var i = 0; i < srcItms.length; i++) {\n var __src = srcItms[i].split(' ');\n\n // Manage empty space\n if (__src[0] === '') {\n __src.splice(0, 1);\n }\n\n rsSrc.push(__src[0]);\n rsWidth.push(__src[1]);\n }\n\n var wWidth = window.innerWidth;\n for (var j = 0; j < rsWidth.length; j++) {\n if (parseInt(rsWidth[j], 10) > wWidth) {\n _src = rsSrc[j];\n break;\n }\n }\n };\n\n if (_this.s.dynamic) {\n\n if (_this.s.dynamicEl[index].poster) {\n _hasPoster = true;\n _poster = _this.s.dynamicEl[index].poster;\n }\n\n _html = _this.s.dynamicEl[index].html;\n _src = _this.s.dynamicEl[index].src;\n _alt = _this.s.dynamicEl[index].alt;\n\n if (_this.s.dynamicEl[index].responsive) {\n var srcDyItms = _this.s.dynamicEl[index].responsive.split(',');\n getResponsiveSrc(srcDyItms);\n }\n\n _srcset = _this.s.dynamicEl[index].srcset;\n _sizes = _this.s.dynamicEl[index].sizes;\n } else {\n\n if (_this.items[index].getAttribute('data-poster')) {\n _hasPoster = true;\n _poster = _this.items[index].getAttribute('data-poster');\n }\n\n _html = _this.items[index].getAttribute('data-html');\n _src = _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src');\n _alt = _this.items[index].getAttribute('title');\n\n if (_this.items[index].querySelector('img')) {\n _alt = _alt || _this.items[index].querySelector('img').getAttribute('alt');\n }\n\n if (_this.items[index].getAttribute('data-responsive')) {\n var srcItms = _this.items[index].getAttribute('data-responsive').split(',');\n getResponsiveSrc(srcItms);\n }\n\n _srcset = _this.items[index].getAttribute('data-srcset');\n _sizes = _this.items[index].getAttribute('data-sizes');\n }\n\n //if (_src || _srcset || _sizes || _poster) {\n\n var iframe = false;\n if (_this.s.dynamic) {\n if (_this.s.dynamicEl[index].iframe) {\n iframe = true;\n }\n } else {\n if (_this.items[index].getAttribute('data-iframe') === 'true') {\n iframe = true;\n }\n }\n\n var _isVideo = _this.isVideo(_src, index);\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-loaded')) {\n if (iframe) {\n _this.___slide[index].insertAdjacentHTML('afterbegin', '
');\n } else if (_hasPoster) {\n var videoClass = '';\n if (_isVideo && _isVideo.youtube) {\n videoClass = 'lg-has-youtube';\n } else if (_isVideo && _isVideo.vimeo) {\n videoClass = 'lg-has-vimeo';\n } else {\n videoClass = 'lg-has-html5';\n }\n\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n } else if (_isVideo) {\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n _lgUtils2.default.trigger(_this.el, 'hasVideo', {\n index: index,\n src: _src,\n html: _html\n });\n } else {\n _alt = _alt ? 'alt=\"' + _alt + '\"' : '';\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n }\n\n _lgUtils2.default.trigger(_this.el, 'onAferAppendSlide', {\n index: index\n });\n\n _img = _this.___slide[index].querySelector('.lg-object');\n if (_sizes) {\n _img.setAttribute('sizes', _sizes);\n }\n\n if (_srcset) {\n _img.setAttribute('srcset', _srcset);\n\n if (this.s.supportLegacyBrowser) {\n try {\n picturefill({\n elements: [_img[0]]\n });\n } catch (e) {\n console.warn('If you want srcset to be supported for older browsers, ' + 'please include picturefil javascript library in your document.');\n }\n }\n }\n\n if (this.s.appendSubHtmlTo !== '.lg-sub-html') {\n _this.addHtml(index);\n }\n\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-loaded');\n }\n\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n\n // For first time add some delay for displaying the start animation.\n var _speed = 0;\n\n // Do not change the delay value because it is required for zoom plugin.\n // If gallery opened from direct url (hash) speed value should be 0\n if (delay && !_lgUtils2.default.hasClass(document.body, 'lg-from-hash')) {\n _speed = delay;\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n\n _lgUtils2.default.trigger(_this.el, 'onSlideItemLoad', {\n index: index,\n delay: delay || 0\n });\n }, _speed);\n });\n\n // @todo check load state for html5 videos\n if (_isVideo && _isVideo.html5 && !_hasPoster) {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n }\n\n if (rec === true) {\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-complete')) {\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n _this.preload(index);\n });\n } else {\n _this.preload(index);\n }\n }\n\n //}\n };\n\n /**\n * @desc slide function for lightgallery\n ** Slide() gets call on start\n ** ** Set lg.on true once slide() function gets called.\n ** Call loadContent() on slide() function inside setTimeout\n ** ** On first slide we do not want any animation like slide of fade\n ** ** So on first slide( if lg.on if false that is first slide) loadContent() should start loading immediately\n ** ** Else loadContent() should wait for the transition to complete.\n ** ** So set timeout s.speed + 50\n <=> ** loadContent() will load slide content in to the particular slide\n ** ** It has recursion (rec) parameter. if rec === true loadContent() will call preload() function.\n ** ** preload will execute only when the previous slide is fully loaded (images iframe)\n ** ** avoid simultaneous image load\n <=> ** Preload() will check for s.preload value and call loadContent() again accoring to preload value\n ** loadContent() <====> Preload();\n \n * @param {Number} index - index of the slide\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\n */\n Plugin.prototype.slide = function (index, fromTouch, fromThumb) {\n\n var _prevIndex = 0;\n for (var i = 0; i < this.___slide.length; i++) {\n if (_lgUtils2.default.hasClass(this.___slide[i], 'lg-current')) {\n _prevIndex = i;\n break;\n }\n }\n\n var _this = this;\n\n // Prevent if multiple call\n // Required for hsh plugin\n if (_this.lGalleryOn && _prevIndex === index) {\n return;\n }\n\n var _length = this.___slide.length;\n var _time = _this.lGalleryOn ? this.s.speed : 0;\n var _next = false;\n var _prev = false;\n\n if (!_this.lgBusy) {\n\n if (this.s.download) {\n var _src;\n if (_this.s.dynamic) {\n _src = _this.s.dynamicEl[index].downloadUrl !== false && (_this.s.dynamicEl[index].downloadUrl || _this.s.dynamicEl[index].src);\n } else {\n _src = _this.items[index].getAttribute('data-download-url') !== 'false' && (_this.items[index].getAttribute('data-download-url') || _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src'));\n }\n\n if (_src) {\n document.getElementById('lg-download').setAttribute('href', _src);\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-download');\n } else {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-download');\n }\n }\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n\n _this.lgBusy = true;\n\n clearTimeout(_this.hideBartimeout);\n\n // Add title if this.s.appendSubHtmlTo === lg-sub-html\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n\n // wait for slide animation to complete\n setTimeout(function () {\n _this.addHtml(index);\n }, _time);\n }\n\n this.arrowDisable(index);\n\n if (!fromTouch) {\n\n // remove all transitions\n _lgUtils2.default.addClass(_this.outer, 'lg-no-trans');\n\n for (var j = 0; j < this.___slide.length; j++) {\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-prev-slide');\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-next-slide');\n }\n\n if (index < _prevIndex) {\n _prev = true;\n if (index === 0 && _prevIndex === _length - 1 && !fromThumb) {\n _prev = false;\n _next = true;\n }\n } else if (index > _prevIndex) {\n _next = true;\n if (index === _length - 1 && _prevIndex === 0 && !fromThumb) {\n _prev = true;\n _next = false;\n }\n }\n\n if (_prev) {\n\n //prevslide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-prev-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-next-slide');\n } else if (_next) {\n\n // next slide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-next-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-prev-slide');\n }\n\n // give 50 ms for browser to add/remove class\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n\n //_this.$slide.eq(_prevIndex).removeClass('lg-current');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n\n // reset all transitions\n _lgUtils2.default.removeClass(_this.outer, 'lg-no-trans');\n }, 50);\n } else {\n\n var touchPrev = index - 1;\n var touchNext = index + 1;\n\n if (index === 0 && _prevIndex === _length - 1) {\n\n // next slide\n touchNext = 0;\n touchPrev = _length - 1;\n } else if (index === _length - 1 && _prevIndex === 0) {\n\n // prev slide\n touchNext = 0;\n touchPrev = _length - 1;\n }\n\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-prev-slide'), 'lg-prev-slide');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-next-slide'), 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[touchPrev], 'lg-prev-slide');\n _lgUtils2.default.addClass(_this.___slide[touchNext], 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n }\n\n if (_this.lGalleryOn) {\n setTimeout(function () {\n _this.loadContent(index, true, 0);\n }, this.s.speed + 50);\n\n setTimeout(function () {\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }, this.s.speed);\n } else {\n _this.loadContent(index, true, _this.s.backdropDuration);\n\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }\n\n _this.lGalleryOn = true;\n\n if (this.s.counter) {\n if (document.getElementById('lg-counter-current')) {\n document.getElementById('lg-counter-current').innerHTML = index + 1;\n }\n }\n }\n };\n\n /**\n * @desc Go to next slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n */\n Plugin.prototype.goToNextSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index + 1 < _this.___slide.length) {\n _this.index++;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = 0;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-right-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-right-end');\n }, 400);\n }\n }\n }\n };\n\n /**\n * @desc Go to previous slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n */\n Plugin.prototype.goToPrevSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index > 0) {\n _this.index--;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = _this.items.length - 1;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-left-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-left-end');\n }, 400);\n }\n }\n }\n };\n\n Plugin.prototype.keyPress = function () {\n var _this = this;\n if (this.items.length > 1) {\n _lgUtils2.default.on(window, 'keyup.lg', function (e) {\n if (_this.items.length > 1) {\n if (e.keyCode === 37) {\n e.preventDefault();\n _this.goToPrevSlide();\n }\n\n if (e.keyCode === 39) {\n e.preventDefault();\n _this.goToNextSlide();\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'keydown.lg', function (e) {\n if (_this.s.escKey === true && e.keyCode === 27) {\n e.preventDefault();\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-thumb-open')) {\n _this.destroy();\n } else {\n _lgUtils2.default.removeClass(_this.outer, 'lg-thumb-open');\n }\n }\n });\n };\n\n Plugin.prototype.arrow = function () {\n var _this = this;\n _lgUtils2.default.on(this.outer.querySelector('.lg-prev'), 'click.lg', function () {\n _this.goToPrevSlide();\n });\n\n _lgUtils2.default.on(this.outer.querySelector('.lg-next'), 'click.lg', function () {\n _this.goToNextSlide();\n });\n };\n\n Plugin.prototype.arrowDisable = function (index) {\n\n // Disable arrows if s.hideControlOnEnd is true\n if (!this.s.loop && this.s.hideControlOnEnd) {\n var next = this.outer.querySelector('.lg-next');\n var prev = this.outer.querySelector('.lg-prev');\n if (index + 1 < this.___slide.length) {\n next.removeAttribute('disabled');\n _lgUtils2.default.removeClass(next, 'disabled');\n } else {\n next.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(next, 'disabled');\n }\n\n if (index > 0) {\n prev.removeAttribute('disabled');\n _lgUtils2.default.removeClass(prev, 'disabled');\n } else {\n prev.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(prev, 'disabled');\n }\n }\n };\n\n Plugin.prototype.setTranslate = function (el, xValue, yValue) {\n // jQuery supports Automatic CSS prefixing since jQuery 1.8.0\n if (this.s.useLeft) {\n el.style.left = xValue;\n } else {\n _lgUtils2.default.setVendor(el, 'Transform', 'translate3d(' + xValue + 'px, ' + yValue + 'px, 0px)');\n }\n };\n\n Plugin.prototype.touchMove = function (startCoords, endCoords) {\n\n var distance = endCoords - startCoords;\n\n if (Math.abs(distance) > 15) {\n // reset opacity and transition duration\n _lgUtils2.default.addClass(this.outer, 'lg-dragging');\n\n // move current slide\n this.setTranslate(this.___slide[this.index], distance, 0);\n\n // move next and prev slide with current slide\n this.setTranslate(document.querySelector('.lg-prev-slide'), -this.___slide[this.index].clientWidth + distance, 0);\n this.setTranslate(document.querySelector('.lg-next-slide'), this.___slide[this.index].clientWidth + distance, 0);\n }\n };\n\n Plugin.prototype.touchEnd = function (distance) {\n var _this = this;\n\n // keep slide animation for any mode while dragg/swipe\n if (_this.s.mode !== 'lg-slide') {\n _lgUtils2.default.addClass(_this.outer, 'lg-slide');\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n if (!_lgUtils2.default.hasClass(this.___slide[i], 'lg-current') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-prev-slide') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-next-slide')) {\n this.___slide[i].style.opacity = '0';\n }\n }\n\n // set transition duration\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-dragging');\n if (distance < 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToNextSlide(true);\n } else if (distance > 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToPrevSlide(true);\n } else if (Math.abs(distance) < 5) {\n\n // Trigger click if distance is less than 5 pix\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n for (var i = 0; i < _this.___slide.length; i++) {\n _this.___slide[i].removeAttribute('style');\n }\n });\n\n // remove slide class once drag/swipe is completed if mode is not slide\n setTimeout(function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging') && _this.s.mode !== 'lg-slide') {\n _lgUtils2.default.removeClass(_this.outer, 'lg-slide');\n }\n }, _this.s.speed + 100);\n };\n\n Plugin.prototype.enableSwipe = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isMoved = false;\n\n if (_this.s.enableSwipe && _this.isTouch && _this.doCss()) {\n\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'touchstart.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed') && !_this.lgBusy) {\n e.preventDefault();\n _this.manageSwipeClass();\n startCoords = e.targetTouches[0].pageX;\n }\n });\n }\n\n for (var j = 0; j < _this.___slide.length; j++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[j], 'touchmove.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n e.preventDefault();\n endCoords = e.targetTouches[0].pageX;\n _this.touchMove(startCoords, endCoords);\n isMoved = true;\n }\n });\n }\n\n for (var k = 0; k < _this.___slide.length; k++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[k], 'touchend.lg', function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n } else {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n }\n });\n }\n }\n };\n\n Plugin.prototype.enableDrag = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isDraging = false;\n var isMoved = false;\n if (_this.s.enableDrag && !_this.isTouch && _this.doCss()) {\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'mousedown.lg', function (e) {\n // execute only on .lg-object\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n e.preventDefault();\n\n if (!_this.lgBusy) {\n _this.manageSwipeClass();\n startCoords = e.pageX;\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.outer.scrollLeft += 1;\n _this.outer.scrollLeft -= 1;\n\n // *\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-grab');\n _lgUtils2.default.addClass(_this.outer, 'lg-grabbing');\n\n _lgUtils2.default.trigger(_this.el, 'onDragstart');\n }\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'mousemove.lg', function (e) {\n if (isDraging) {\n isMoved = true;\n endCoords = e.pageX;\n _this.touchMove(startCoords, endCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragmove');\n }\n });\n\n _lgUtils2.default.on(window, 'mouseup.lg', function (e) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragend');\n } else if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n // Prevent execution on click\n if (isDraging) {\n isDraging = false;\n _lgUtils2.default.removeClass(_this.outer, 'lg-grabbing');\n _lgUtils2.default.addClass(_this.outer, 'lg-grab');\n }\n });\n }\n };\n\n Plugin.prototype.manageSwipeClass = function () {\n var touchNext = this.index + 1;\n var touchPrev = this.index - 1;\n var length = this.___slide.length;\n if (this.s.loop) {\n if (this.index === 0) {\n touchPrev = length - 1;\n } else if (this.index === length - 1) {\n touchNext = 0;\n }\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-next-slide');\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-prev-slide');\n }\n\n if (touchPrev > -1) {\n _lgUtils2.default.addClass(this.___slide[touchPrev], 'lg-prev-slide');\n }\n\n _lgUtils2.default.addClass(this.___slide[touchNext], 'lg-next-slide');\n };\n\n Plugin.prototype.mousewheel = function () {\n var _this = this;\n _lgUtils2.default.on(_this.outer, 'mousewheel.lg', function (e) {\n\n if (!e.deltaY) {\n return;\n }\n\n if (e.deltaY > 0) {\n _this.goToPrevSlide();\n } else {\n _this.goToNextSlide();\n }\n\n e.preventDefault();\n });\n };\n\n Plugin.prototype.closeGallery = function () {\n\n var _this = this;\n var mousedown = false;\n _lgUtils2.default.on(this.outer.querySelector('.lg-close'), 'click.lg', function () {\n _this.destroy();\n });\n\n if (_this.s.closable) {\n\n // If you drag the slide and release outside gallery gets close on chrome\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\n _lgUtils2.default.on(_this.outer, 'mousedown.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap')) {\n mousedown = true;\n } else {\n mousedown = false;\n }\n });\n\n _lgUtils2.default.on(_this.outer, 'mouseup.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap') && mousedown) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging')) {\n _this.destroy();\n }\n }\n });\n }\n };\n\n Plugin.prototype.destroy = function (d) {\n\n var _this = this;\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onBeforeClose');\n }\n\n document.body.scrollTop = _this.prevScrollTop;\n document.documentElement.scrollTop = _this.prevScrollTop;\n\n /**\n * if d is false or undefined destroy will only close the gallery\n * plugins instance remains with the element\n *\n * if d is true destroy will completely remove the plugin\n */\n\n if (d) {\n if (!_this.s.dynamic) {\n // only when not using dynamic mode is $items a jquery collection\n\n for (var i = 0; i < this.items.length; i++) {\n _lgUtils2.default.off(this.items[i], '.lg');\n _lgUtils2.default.off(this.items[i], '.lgcustom');\n }\n }\n\n var lguid = _this.el.getAttribute('lg-uid');\n delete window.lgData[lguid];\n _this.el.removeAttribute('lg-uid');\n }\n\n // Unbind all events added by lightGallery\n _lgUtils2.default.off(this.el, '.lgtm');\n\n // Distroy all lightGallery modules\n for (var key in window.lgModules) {\n if (_this.modules[key]) {\n _this.modules[key].destroy(d);\n }\n }\n\n this.lGalleryOn = false;\n\n clearTimeout(_this.hideBartimeout);\n this.hideBartimeout = false;\n _lgUtils2.default.off(window, '.lg');\n _lgUtils2.default.removeClass(document.body, 'lg-on');\n _lgUtils2.default.removeClass(document.body, 'lg-from-hash');\n\n if (_this.outer) {\n _lgUtils2.default.removeClass(_this.outer, 'lg-visible');\n }\n\n _lgUtils2.default.removeClass(document.querySelector('.lg-backdrop'), 'in');\n setTimeout(function () {\n try {\n if (_this.outer) {\n _this.outer.parentNode.removeChild(_this.outer);\n }\n\n if (document.querySelector('.lg-backdrop')) {\n document.querySelector('.lg-backdrop').parentNode.removeChild(document.querySelector('.lg-backdrop'));\n }\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onCloseAfter');\n }\n _this.el.focus();\n } catch (err) {}\n }, _this.s.backdropDuration + 50);\n };\n\n window.lightGallery = function (el, options) {\n if (!el) {\n return;\n }\n\n try {\n if (!el.getAttribute('lg-uid')) {\n var uid = 'lg' + window.lgData.uid++;\n window.lgData[uid] = new Plugin(el, options);\n el.setAttribute('lg-uid', uid);\n } else {\n window.lgData[el.getAttribute('lg-uid')].init();\n }\n } catch (err) {\n console.error('lightGallery has not initiated properly', err);\n }\n };\n});\n\n},{\"./lg-utils\":1}]},{},[2])(2)\n});\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","/*! @license is-dom-node v1.0.4\n\n\tCopyright 2018 Fisssion LLC.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n\n*/\nfunction isDomNode(x) {\n\treturn typeof window.Node === 'object'\n\t\t? x instanceof window.Node\n\t\t: x !== null &&\n\t\t\t\ttypeof x === 'object' &&\n\t\t\t\ttypeof x.nodeType === 'number' &&\n\t\t\t\ttypeof x.nodeName === 'string'\n}\n\nexport default isDomNode;\n","/*! @license Tealight v0.3.6\n\n\tCopyright 2018 Fisssion LLC.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n\n*/\nimport isDomNode from 'is-dom-node';\nimport isDomNodeList from 'is-dom-node-list';\n\nfunction tealight(target, context) {\n if ( context === void 0 ) context = document;\n\n if (target instanceof Array) { return target.filter(isDomNode); }\n if (isDomNode(target)) { return [target]; }\n if (isDomNodeList(target)) { return Array.prototype.slice.call(target); }\n if (typeof target === \"string\") {\n try {\n var query = context.querySelectorAll(target);\n return Array.prototype.slice.call(query);\n } catch (err) {\n return [];\n }\n }\n return [];\n}\n\nexport default tealight;\n","/*! @license is-dom-node-list v1.2.1\n\n\tCopyright 2018 Fisssion LLC.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n\n*/\nimport isDomNode from 'is-dom-node';\n\nfunction isDomNodeList(x) {\n\tvar prototypeToString = Object.prototype.toString.call(x);\n\tvar regex = /^\\[object (HTMLCollection|NodeList|Object)\\]$/;\n\n\treturn typeof window.NodeList === 'object'\n\t\t? x instanceof window.NodeList\n\t\t: x !== null &&\n\t\t\t\ttypeof x === 'object' &&\n\t\t\t\ttypeof x.length === 'number' &&\n\t\t\t\tregex.test(prototypeToString) &&\n\t\t\t\t(x.length === 0 || isDomNode(x[0]))\n}\n\nexport default isDomNodeList;\n","/*! @license Rematrix v0.3.0\n\n\tCopyright 2018 Julian Lloyd.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in\n\tall copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\tTHE SOFTWARE.\n*/\n/**\n * @module Rematrix\n */\n\n/**\n * Transformation matrices in the browser come in two flavors:\n *\n * - `matrix` using 6 values (short)\n * - `matrix3d` using 16 values (long)\n *\n * This utility follows this [conversion guide](https://goo.gl/EJlUQ1)\n * to expand short form matrices to their equivalent long form.\n *\n * @param {array} source - Accepts both short and long form matrices.\n * @return {array}\n */\nfunction format(source) {\n\tif (source.constructor !== Array) {\n\t\tthrow new TypeError('Expected array.')\n\t}\n\tif (source.length === 16) {\n\t\treturn source\n\t}\n\tif (source.length === 6) {\n\t\tvar matrix = identity();\n\t\tmatrix[0] = source[0];\n\t\tmatrix[1] = source[1];\n\t\tmatrix[4] = source[2];\n\t\tmatrix[5] = source[3];\n\t\tmatrix[12] = source[4];\n\t\tmatrix[13] = source[5];\n\t\treturn matrix\n\t}\n\tthrow new RangeError('Expected array with either 6 or 16 values.')\n}\n\n/**\n * Returns a matrix representing no transformation. The product of any matrix\n * multiplied by the identity matrix will be the original matrix.\n *\n * > **Tip:** Similar to how `5 * 1 === 5`, where `1` is the identity.\n *\n * @return {array}\n */\nfunction identity() {\n\tvar matrix = [];\n\tfor (var i = 0; i < 16; i++) {\n\t\ti % 5 == 0 ? matrix.push(1) : matrix.push(0);\n\t}\n\treturn matrix\n}\n\n/**\n * Returns a matrix describing the inverse transformation of the source\n * matrix. The product of any matrix multiplied by its inverse will be the\n * identity matrix.\n *\n * > **Tip:** Similar to how `5 * (1/5) === 1`, where `1/5` is the inverse.\n *\n * @param {array} source - Accepts both short and long form matrices.\n * @return {array}\n */\nfunction inverse(source) {\n\tvar m = format(source);\n\n\tvar s0 = m[0] * m[5] - m[4] * m[1];\n\tvar s1 = m[0] * m[6] - m[4] * m[2];\n\tvar s2 = m[0] * m[7] - m[4] * m[3];\n\tvar s3 = m[1] * m[6] - m[5] * m[2];\n\tvar s4 = m[1] * m[7] - m[5] * m[3];\n\tvar s5 = m[2] * m[7] - m[6] * m[3];\n\n\tvar c5 = m[10] * m[15] - m[14] * m[11];\n\tvar c4 = m[9] * m[15] - m[13] * m[11];\n\tvar c3 = m[9] * m[14] - m[13] * m[10];\n\tvar c2 = m[8] * m[15] - m[12] * m[11];\n\tvar c1 = m[8] * m[14] - m[12] * m[10];\n\tvar c0 = m[8] * m[13] - m[12] * m[9];\n\n\tvar determinant = 1 / (s0 * c5 - s1 * c4 + s2 * c3 + s3 * c2 - s4 * c1 + s5 * c0);\n\n\tif (isNaN(determinant) || determinant === Infinity) {\n\t\tthrow new Error('Inverse determinant attempted to divide by zero.')\n\t}\n\n\treturn [\n\t\t(m[5] * c5 - m[6] * c4 + m[7] * c3) * determinant,\n\t\t(-m[1] * c5 + m[2] * c4 - m[3] * c3) * determinant,\n\t\t(m[13] * s5 - m[14] * s4 + m[15] * s3) * determinant,\n\t\t(-m[9] * s5 + m[10] * s4 - m[11] * s3) * determinant,\n\n\t\t(-m[4] * c5 + m[6] * c2 - m[7] * c1) * determinant,\n\t\t(m[0] * c5 - m[2] * c2 + m[3] * c1) * determinant,\n\t\t(-m[12] * s5 + m[14] * s2 - m[15] * s1) * determinant,\n\t\t(m[8] * s5 - m[10] * s2 + m[11] * s1) * determinant,\n\n\t\t(m[4] * c4 - m[5] * c2 + m[7] * c0) * determinant,\n\t\t(-m[0] * c4 + m[1] * c2 - m[3] * c0) * determinant,\n\t\t(m[12] * s4 - m[13] * s2 + m[15] * s0) * determinant,\n\t\t(-m[8] * s4 + m[9] * s2 - m[11] * s0) * determinant,\n\n\t\t(-m[4] * c3 + m[5] * c1 - m[6] * c0) * determinant,\n\t\t(m[0] * c3 - m[1] * c1 + m[2] * c0) * determinant,\n\t\t(-m[12] * s3 + m[13] * s1 - m[14] * s0) * determinant,\n\t\t(m[8] * s3 - m[9] * s1 + m[10] * s0) * determinant\n\t]\n}\n\n/**\n * Returns a 4x4 matrix describing the combined transformations\n * of both arguments.\n *\n * > **Note:** Order is very important. For example, rotating 45°\n * along the Z-axis, followed by translating 500 pixels along the\n * Y-axis... is not the same as translating 500 pixels along the\n * Y-axis, followed by rotating 45° along on the Z-axis.\n *\n * @param {array} m - Accepts both short and long form matrices.\n * @param {array} x - Accepts both short and long form matrices.\n * @return {array}\n */\nfunction multiply(m, x) {\n\tvar fm = format(m);\n\tvar fx = format(x);\n\tvar product = [];\n\n\tfor (var i = 0; i < 4; i++) {\n\t\tvar row = [fm[i], fm[i + 4], fm[i + 8], fm[i + 12]];\n\t\tfor (var j = 0; j < 4; j++) {\n\t\t\tvar k = j * 4;\n\t\t\tvar col = [fx[k], fx[k + 1], fx[k + 2], fx[k + 3]];\n\t\t\tvar result =\n\t\t\t\trow[0] * col[0] + row[1] * col[1] + row[2] * col[2] + row[3] * col[3];\n\n\t\t\tproduct[i + k] = result;\n\t\t}\n\t}\n\n\treturn product\n}\n\n/**\n * Attempts to return a 4x4 matrix describing the CSS transform\n * matrix passed in, but will return the identity matrix as a\n * fallback.\n *\n * > **Tip:** This method is used to convert a CSS matrix (retrieved as a\n * `string` from computed styles) to its equivalent array format.\n *\n * @param {string} source - `matrix` or `matrix3d` CSS Transform value.\n * @return {array}\n */\nfunction parse(source) {\n\tif (typeof source === 'string') {\n\t\tvar match = source.match(/matrix(3d)?\\(([^)]+)\\)/);\n\t\tif (match) {\n\t\t\tvar raw = match[2].split(', ').map(parseFloat);\n\t\t\treturn format(raw)\n\t\t}\n\t}\n\treturn identity()\n}\n\n/**\n * Returns a 4x4 matrix describing Z-axis rotation.\n *\n * > **Tip:** This is just an alias for `Rematrix.rotateZ` for parity with CSS\n *\n * @param {number} angle - Measured in degrees.\n * @return {array}\n */\nfunction rotate(angle) {\n\treturn rotateZ(angle)\n}\n\n/**\n * Returns a 4x4 matrix describing X-axis rotation.\n *\n * @param {number} angle - Measured in degrees.\n * @return {array}\n */\nfunction rotateX(angle) {\n\tvar theta = Math.PI / 180 * angle;\n\tvar matrix = identity();\n\n\tmatrix[5] = matrix[10] = Math.cos(theta);\n\tmatrix[6] = matrix[9] = Math.sin(theta);\n\tmatrix[9] *= -1;\n\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing Y-axis rotation.\n *\n * @param {number} angle - Measured in degrees.\n * @return {array}\n */\nfunction rotateY(angle) {\n\tvar theta = Math.PI / 180 * angle;\n\tvar matrix = identity();\n\n\tmatrix[0] = matrix[10] = Math.cos(theta);\n\tmatrix[2] = matrix[8] = Math.sin(theta);\n\tmatrix[2] *= -1;\n\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing Z-axis rotation.\n *\n * @param {number} angle - Measured in degrees.\n * @return {array}\n */\nfunction rotateZ(angle) {\n\tvar theta = Math.PI / 180 * angle;\n\tvar matrix = identity();\n\n\tmatrix[0] = matrix[5] = Math.cos(theta);\n\tmatrix[1] = matrix[4] = Math.sin(theta);\n\tmatrix[4] *= -1;\n\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing 2D scaling. The first argument\n * is used for both X and Y-axis scaling, unless an optional\n * second argument is provided to explicitly define Y-axis scaling.\n *\n * @param {number} scalar - Decimal multiplier.\n * @param {number} [scalarY] - Decimal multiplier.\n * @return {array}\n */\nfunction scale(scalar, scalarY) {\n\tvar matrix = identity();\n\n\tmatrix[0] = scalar;\n\tmatrix[5] = typeof scalarY === 'number' ? scalarY : scalar;\n\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing X-axis scaling.\n *\n * @param {number} scalar - Decimal multiplier.\n * @return {array}\n */\nfunction scaleX(scalar) {\n\tvar matrix = identity();\n\tmatrix[0] = scalar;\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing Y-axis scaling.\n *\n * @param {number} scalar - Decimal multiplier.\n * @return {array}\n */\nfunction scaleY(scalar) {\n\tvar matrix = identity();\n\tmatrix[5] = scalar;\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing Z-axis scaling.\n *\n * @param {number} scalar - Decimal multiplier.\n * @return {array}\n */\nfunction scaleZ(scalar) {\n\tvar matrix = identity();\n\tmatrix[10] = scalar;\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing shear. The first argument\n * defines X-axis shearing, and an optional second argument\n * defines Y-axis shearing.\n *\n * @param {number} angleX - Measured in degrees.\n * @param {number} [angleY] - Measured in degrees.\n * @return {array}\n */\nfunction skew(angleX, angleY) {\n\tvar thetaX = Math.PI / 180 * angleX;\n\tvar matrix = identity();\n\n\tmatrix[4] = Math.tan(thetaX);\n\n\tif (angleY) {\n\t\tvar thetaY = Math.PI / 180 * angleY;\n\t\tmatrix[1] = Math.tan(thetaY);\n\t}\n\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing X-axis shear.\n *\n * @param {number} angle - Measured in degrees.\n * @return {array}\n */\nfunction skewX(angle) {\n\tvar theta = Math.PI / 180 * angle;\n\tvar matrix = identity();\n\n\tmatrix[4] = Math.tan(theta);\n\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing Y-axis shear.\n *\n * @param {number} angle - Measured in degrees\n * @return {array}\n */\nfunction skewY(angle) {\n\tvar theta = Math.PI / 180 * angle;\n\tvar matrix = identity();\n\n\tmatrix[1] = Math.tan(theta);\n\n\treturn matrix\n}\n\n/**\n * Returns a CSS Transform property value equivalent to the source matrix.\n *\n * @param {array} source - Accepts both short and long form matrices.\n * @return {string}\n */\nfunction toString(source) {\n\treturn (\"matrix3d(\" + (format(source).join(', ')) + \")\")\n}\n\n/**\n * Returns a 4x4 matrix describing 2D translation. The first\n * argument defines X-axis translation, and an optional second\n * argument defines Y-axis translation.\n *\n * @param {number} distanceX - Measured in pixels.\n * @param {number} [distanceY] - Measured in pixels.\n * @return {array}\n */\nfunction translate(distanceX, distanceY) {\n\tvar matrix = identity();\n\tmatrix[12] = distanceX;\n\n\tif (distanceY) {\n\t\tmatrix[13] = distanceY;\n\t}\n\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing X-axis translation.\n *\n * @param {number} distance - Measured in pixels.\n * @return {array}\n */\nfunction translateX(distance) {\n\tvar matrix = identity();\n\tmatrix[12] = distance;\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing Y-axis translation.\n *\n * @param {number} distance - Measured in pixels.\n * @return {array}\n */\nfunction translateY(distance) {\n\tvar matrix = identity();\n\tmatrix[13] = distance;\n\treturn matrix\n}\n\n/**\n * Returns a 4x4 matrix describing Z-axis translation.\n *\n * @param {number} distance - Measured in pixels.\n * @return {array}\n */\nfunction translateZ(distance) {\n\tvar matrix = identity();\n\tmatrix[14] = distance;\n\treturn matrix\n}\n\nexport { format, identity, inverse, multiply, parse, rotate, rotateX, rotateY, rotateZ, scale, scaleX, scaleY, scaleZ, skew, skewX, skewY, toString, translate, translateX, translateY, translateZ };\n","/*! @license miniraf v1.0.0\n\n\tCopyright 2018 Fisssion LLC.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n\n*/\nvar polyfill = (function () {\n\tvar clock = Date.now();\n\n\treturn function (callback) {\n\t\tvar currentTime = Date.now();\n\t\tif (currentTime - clock > 16) {\n\t\t\tclock = currentTime;\n\t\t\tcallback(currentTime);\n\t\t} else {\n\t\t\tsetTimeout(function () { return polyfill(callback); }, 0);\n\t\t}\n\t}\n})();\n\nvar index = window.requestAnimationFrame ||\n\twindow.webkitRequestAnimationFrame ||\n\twindow.mozRequestAnimationFrame ||\n\tpolyfill;\n\nexport default index;\n","/*! @license ScrollReveal v4.0.9\n\n\tCopyright 2021 Fisssion LLC.\n\n\tLicensed under the GNU General Public License 3.0 for\n\tcompatible open source projects and non-commercial use.\n\n\tFor commercial sites, themes, projects, and applications,\n\tkeep your source code private/proprietary by purchasing\n\ta commercial license from https://scrollrevealjs.org/\n*/\nimport $ from 'tealight';\nimport { translateY, translateX, rotateX, rotateY, rotateZ, scale, parse, multiply } from 'rematrix';\nimport raf from 'miniraf';\n\nvar defaults = {\n\tdelay: 0,\n\tdistance: '0',\n\tduration: 600,\n\teasing: 'cubic-bezier(0.5, 0, 0, 1)',\n\tinterval: 0,\n\topacity: 0,\n\torigin: 'bottom',\n\trotate: {\n\t\tx: 0,\n\t\ty: 0,\n\t\tz: 0\n\t},\n\tscale: 1,\n\tcleanup: false,\n\tcontainer: document.documentElement,\n\tdesktop: true,\n\tmobile: true,\n\treset: false,\n\tuseDelay: 'always',\n\tviewFactor: 0.0,\n\tviewOffset: {\n\t\ttop: 0,\n\t\tright: 0,\n\t\tbottom: 0,\n\t\tleft: 0\n\t},\n\tafterReset: function afterReset() {},\n\tafterReveal: function afterReveal() {},\n\tbeforeReset: function beforeReset() {},\n\tbeforeReveal: function beforeReveal() {}\n};\n\nfunction failure() {\n\tdocument.documentElement.classList.remove('sr');\n\n\treturn {\n\t\tclean: function clean() {},\n\t\tdestroy: function destroy() {},\n\t\treveal: function reveal() {},\n\t\tsync: function sync() {},\n\t\tget noop() {\n\t\t\treturn true\n\t\t}\n\t}\n}\n\nfunction success() {\n\tdocument.documentElement.classList.add('sr');\n\n\tif (document.body) {\n\t\tdocument.body.style.height = '100%';\n\t} else {\n\t\tdocument.addEventListener('DOMContentLoaded', function () {\n\t\t\tdocument.body.style.height = '100%';\n\t\t});\n\t}\n}\n\nvar mount = { success: success, failure: failure };\n\nfunction isObject(x) {\n\treturn (\n\t\tx !== null &&\n\t\tx instanceof Object &&\n\t\t(x.constructor === Object ||\n\t\t\tObject.prototype.toString.call(x) === '[object Object]')\n\t)\n}\n\nfunction each(collection, callback) {\n\tif (isObject(collection)) {\n\t\tvar keys = Object.keys(collection);\n\t\treturn keys.forEach(function (key) { return callback(collection[key], key, collection); })\n\t}\n\tif (collection instanceof Array) {\n\t\treturn collection.forEach(function (item, i) { return callback(item, i, collection); })\n\t}\n\tthrow new TypeError('Expected either an array or object literal.')\n}\n\nfunction logger(message) {\n\tvar details = [], len = arguments.length - 1;\n\twhile ( len-- > 0 ) details[ len ] = arguments[ len + 1 ];\n\n\tif (this.constructor.debug && console) {\n\t\tvar report = \"%cScrollReveal: \" + message;\n\t\tdetails.forEach(function (detail) { return (report += \"\\n — \" + detail); });\n\t\tconsole.log(report, 'color: #ea654b;'); // eslint-disable-line no-console\n\t}\n}\n\nfunction rinse() {\n\tvar this$1 = this;\n\n\tvar struct = function () { return ({\n\t\tactive: [],\n\t\tstale: []\n\t}); };\n\n\tvar elementIds = struct();\n\tvar sequenceIds = struct();\n\tvar containerIds = struct();\n\n\t/**\n\t * Take stock of active element IDs.\n\t */\n\ttry {\n\t\teach($('[data-sr-id]'), function (node) {\n\t\t\tvar id = parseInt(node.getAttribute('data-sr-id'));\n\t\t\telementIds.active.push(id);\n\t\t});\n\t} catch (e) {\n\t\tthrow e\n\t}\n\t/**\n\t * Destroy stale elements.\n\t */\n\teach(this.store.elements, function (element) {\n\t\tif (elementIds.active.indexOf(element.id) === -1) {\n\t\t\telementIds.stale.push(element.id);\n\t\t}\n\t});\n\n\teach(elementIds.stale, function (staleId) { return delete this$1.store.elements[staleId]; });\n\n\t/**\n\t * Take stock of active container and sequence IDs.\n\t */\n\teach(this.store.elements, function (element) {\n\t\tif (containerIds.active.indexOf(element.containerId) === -1) {\n\t\t\tcontainerIds.active.push(element.containerId);\n\t\t}\n\t\tif (element.hasOwnProperty('sequence')) {\n\t\t\tif (sequenceIds.active.indexOf(element.sequence.id) === -1) {\n\t\t\t\tsequenceIds.active.push(element.sequence.id);\n\t\t\t}\n\t\t}\n\t});\n\n\t/**\n\t * Destroy stale containers.\n\t */\n\teach(this.store.containers, function (container) {\n\t\tif (containerIds.active.indexOf(container.id) === -1) {\n\t\t\tcontainerIds.stale.push(container.id);\n\t\t}\n\t});\n\n\teach(containerIds.stale, function (staleId) {\n\t\tvar stale = this$1.store.containers[staleId].node;\n\t\tstale.removeEventListener('scroll', this$1.delegate);\n\t\tstale.removeEventListener('resize', this$1.delegate);\n\t\tdelete this$1.store.containers[staleId];\n\t});\n\n\t/**\n\t * Destroy stale sequences.\n\t */\n\teach(this.store.sequences, function (sequence) {\n\t\tif (sequenceIds.active.indexOf(sequence.id) === -1) {\n\t\t\tsequenceIds.stale.push(sequence.id);\n\t\t}\n\t});\n\n\teach(sequenceIds.stale, function (staleId) { return delete this$1.store.sequences[staleId]; });\n}\n\nvar getPrefixedCssProp = (function () {\n\tvar properties = {};\n\tvar style = document.documentElement.style;\n\n\tfunction getPrefixedCssProperty(name, source) {\n\t\tif ( source === void 0 ) source = style;\n\n\t\tif (name && typeof name === 'string') {\n\t\t\tif (properties[name]) {\n\t\t\t\treturn properties[name]\n\t\t\t}\n\t\t\tif (typeof source[name] === 'string') {\n\t\t\t\treturn (properties[name] = name)\n\t\t\t}\n\t\t\tif (typeof source[(\"-webkit-\" + name)] === 'string') {\n\t\t\t\treturn (properties[name] = \"-webkit-\" + name)\n\t\t\t}\n\t\t\tthrow new RangeError((\"Unable to find \\\"\" + name + \"\\\" style property.\"))\n\t\t}\n\t\tthrow new TypeError('Expected a string.')\n\t}\n\n\tgetPrefixedCssProperty.clearCache = function () { return (properties = {}); };\n\n\treturn getPrefixedCssProperty\n})();\n\nfunction style(element) {\n\tvar computed = window.getComputedStyle(element.node);\n\tvar position = computed.position;\n\tvar config = element.config;\n\n\t/**\n\t * Generate inline styles\n\t */\n\tvar inline = {};\n\tvar inlineStyle = element.node.getAttribute('style') || '';\n\tvar inlineMatch = inlineStyle.match(/[\\w-]+\\s*:\\s*[^;]+\\s*/gi) || [];\n\n\tinline.computed = inlineMatch ? inlineMatch.map(function (m) { return m.trim(); }).join('; ') + ';' : '';\n\n\tinline.generated = inlineMatch.some(function (m) { return m.match(/visibility\\s?:\\s?visible/i); })\n\t\t? inline.computed\n\t\t: inlineMatch.concat( ['visibility: visible']).map(function (m) { return m.trim(); }).join('; ') + ';';\n\n\t/**\n\t * Generate opacity styles\n\t */\n\tvar computedOpacity = parseFloat(computed.opacity);\n\tvar configOpacity = !isNaN(parseFloat(config.opacity))\n\t\t? parseFloat(config.opacity)\n\t\t: parseFloat(computed.opacity);\n\n\tvar opacity = {\n\t\tcomputed: computedOpacity !== configOpacity ? (\"opacity: \" + computedOpacity + \";\") : '',\n\t\tgenerated: computedOpacity !== configOpacity ? (\"opacity: \" + configOpacity + \";\") : ''\n\t};\n\n\t/**\n\t * Generate transformation styles\n\t */\n\tvar transformations = [];\n\n\tif (parseFloat(config.distance)) {\n\t\tvar axis = config.origin === 'top' || config.origin === 'bottom' ? 'Y' : 'X';\n\n\t\t/**\n\t\t * Let’s make sure our our pixel distances are negative for top and left.\n\t\t * e.g. { origin: 'top', distance: '25px' } starts at `top: -25px` in CSS.\n\t\t */\n\t\tvar distance = config.distance;\n\t\tif (config.origin === 'top' || config.origin === 'left') {\n\t\t\tdistance = /^-/.test(distance) ? distance.substr(1) : (\"-\" + distance);\n\t\t}\n\n\t\tvar ref = distance.match(/(^-?\\d+\\.?\\d?)|(em$|px$|%$)/g);\n\t\tvar value = ref[0];\n\t\tvar unit = ref[1];\n\n\t\tswitch (unit) {\n\t\t\tcase 'em':\n\t\t\t\tdistance = parseInt(computed.fontSize) * value;\n\t\t\t\tbreak\n\t\t\tcase 'px':\n\t\t\t\tdistance = value;\n\t\t\t\tbreak\n\t\t\tcase '%':\n\t\t\t\t/**\n\t\t\t\t * Here we use `getBoundingClientRect` instead of\n\t\t\t\t * the existing data attached to `element.geometry`\n\t\t\t\t * because only the former includes any transformations\n\t\t\t\t * current applied to the element.\n\t\t\t\t *\n\t\t\t\t * If that behavior ends up being unintuitive, this\n\t\t\t\t * logic could instead utilize `element.geometry.height`\n\t\t\t\t * and `element.geoemetry.width` for the distance calculation\n\t\t\t\t */\n\t\t\t\tdistance =\n\t\t\t\t\taxis === 'Y'\n\t\t\t\t\t\t? (element.node.getBoundingClientRect().height * value) / 100\n\t\t\t\t\t\t: (element.node.getBoundingClientRect().width * value) / 100;\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tthrow new RangeError('Unrecognized or missing distance unit.')\n\t\t}\n\n\t\tif (axis === 'Y') {\n\t\t\ttransformations.push(translateY(distance));\n\t\t} else {\n\t\t\ttransformations.push(translateX(distance));\n\t\t}\n\t}\n\n\tif (config.rotate.x) { transformations.push(rotateX(config.rotate.x)); }\n\tif (config.rotate.y) { transformations.push(rotateY(config.rotate.y)); }\n\tif (config.rotate.z) { transformations.push(rotateZ(config.rotate.z)); }\n\tif (config.scale !== 1) {\n\t\tif (config.scale === 0) {\n\t\t\t/**\n\t\t\t * The CSS Transforms matrix interpolation specification\n\t\t\t * basically disallows transitions of non-invertible\n\t\t\t * matrixes, which means browsers won't transition\n\t\t\t * elements with zero scale.\n\t\t\t *\n\t\t\t * That’s inconvenient for the API and developer\n\t\t\t * experience, so we simply nudge their value\n\t\t\t * slightly above zero; this allows browsers\n\t\t\t * to transition our element as expected.\n\t\t\t *\n\t\t\t * `0.0002` was the smallest number\n\t\t\t * that performed across browsers.\n\t\t\t */\n\t\t\ttransformations.push(scale(0.0002));\n\t\t} else {\n\t\t\ttransformations.push(scale(config.scale));\n\t\t}\n\t}\n\n\tvar transform = {};\n\tif (transformations.length) {\n\t\ttransform.property = getPrefixedCssProp('transform');\n\t\t/**\n\t\t * The default computed transform value should be one of:\n\t\t * undefined || 'none' || 'matrix()' || 'matrix3d()'\n\t\t */\n\t\ttransform.computed = {\n\t\t\traw: computed[transform.property],\n\t\t\tmatrix: parse(computed[transform.property])\n\t\t};\n\n\t\ttransformations.unshift(transform.computed.matrix);\n\t\tvar product = transformations.reduce(multiply);\n\n\t\ttransform.generated = {\n\t\t\tinitial: ((transform.property) + \": matrix3d(\" + (product.join(', ')) + \");\"),\n\t\t\tfinal: ((transform.property) + \": matrix3d(\" + (transform.computed.matrix.join(', ')) + \");\")\n\t\t};\n\t} else {\n\t\ttransform.generated = {\n\t\t\tinitial: '',\n\t\t\tfinal: ''\n\t\t};\n\t}\n\n\t/**\n\t * Generate transition styles\n\t */\n\tvar transition = {};\n\tif (opacity.generated || transform.generated.initial) {\n\t\ttransition.property = getPrefixedCssProp('transition');\n\t\ttransition.computed = computed[transition.property];\n\t\ttransition.fragments = [];\n\n\t\tvar delay = config.delay;\n\t\tvar duration = config.duration;\n\t\tvar easing = config.easing;\n\n\t\tif (opacity.generated) {\n\t\t\ttransition.fragments.push({\n\t\t\t\tdelayed: (\"opacity \" + (duration / 1000) + \"s \" + easing + \" \" + (delay / 1000) + \"s\"),\n\t\t\t\tinstant: (\"opacity \" + (duration / 1000) + \"s \" + easing + \" 0s\")\n\t\t\t});\n\t\t}\n\n\t\tif (transform.generated.initial) {\n\t\t\ttransition.fragments.push({\n\t\t\t\tdelayed: ((transform.property) + \" \" + (duration / 1000) + \"s \" + easing + \" \" + (delay / 1000) + \"s\"),\n\t\t\t\tinstant: ((transform.property) + \" \" + (duration / 1000) + \"s \" + easing + \" 0s\")\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * The default computed transition property should be undefined, or one of:\n\t\t * '' || 'none 0s ease 0s' || 'all 0s ease 0s' || 'all 0s 0s cubic-bezier()'\n\t\t */\n\t\tvar hasCustomTransition =\n\t\t\ttransition.computed && !transition.computed.match(/all 0s|none 0s/);\n\n\t\tif (hasCustomTransition) {\n\t\t\ttransition.fragments.unshift({\n\t\t\t\tdelayed: transition.computed,\n\t\t\t\tinstant: transition.computed\n\t\t\t});\n\t\t}\n\n\t\tvar composed = transition.fragments.reduce(\n\t\t\tfunction (composition, fragment, i) {\n\t\t\t\tcomposition.delayed += i === 0 ? fragment.delayed : (\", \" + (fragment.delayed));\n\t\t\t\tcomposition.instant += i === 0 ? fragment.instant : (\", \" + (fragment.instant));\n\t\t\t\treturn composition\n\t\t\t},\n\t\t\t{\n\t\t\t\tdelayed: '',\n\t\t\t\tinstant: ''\n\t\t\t}\n\t\t);\n\n\t\ttransition.generated = {\n\t\t\tdelayed: ((transition.property) + \": \" + (composed.delayed) + \";\"),\n\t\t\tinstant: ((transition.property) + \": \" + (composed.instant) + \";\")\n\t\t};\n\t} else {\n\t\ttransition.generated = {\n\t\t\tdelayed: '',\n\t\t\tinstant: ''\n\t\t};\n\t}\n\n\treturn {\n\t\tinline: inline,\n\t\topacity: opacity,\n\t\tposition: position,\n\t\ttransform: transform,\n\t\ttransition: transition\n\t}\n}\n\n/**\n * apply a CSS string to an element using the CSSOM (element.style) rather\n * than setAttribute, which may violate the content security policy.\n *\n * @param {Node} [el] Element to receive styles.\n * @param {string} [declaration] Styles to apply.\n */\nfunction applyStyle (el, declaration) {\n\tdeclaration.split(';').forEach(function (pair) {\n\t\tvar ref = pair.split(':');\n\t\tvar property = ref[0];\n\t\tvar value = ref.slice(1);\n\t\tif (property && value) {\n\t\t\tel.style[property.trim()] = value.join(':');\n\t\t}\n\t});\n}\n\nfunction clean(target) {\n\tvar this$1 = this;\n\n\tvar dirty;\n\ttry {\n\t\teach($(target), function (node) {\n\t\t\tvar id = node.getAttribute('data-sr-id');\n\t\t\tif (id !== null) {\n\t\t\t\tdirty = true;\n\t\t\t\tvar element = this$1.store.elements[id];\n\t\t\t\tif (element.callbackTimer) {\n\t\t\t\t\twindow.clearTimeout(element.callbackTimer.clock);\n\t\t\t\t}\n\t\t\t\tapplyStyle(element.node, element.styles.inline.generated);\n\t\t\t\tnode.removeAttribute('data-sr-id');\n\t\t\t\tdelete this$1.store.elements[id];\n\t\t\t}\n\t\t});\n\t} catch (e) {\n\t\treturn logger.call(this, 'Clean failed.', e.message)\n\t}\n\n\tif (dirty) {\n\t\ttry {\n\t\t\trinse.call(this);\n\t\t} catch (e) {\n\t\t\treturn logger.call(this, 'Clean failed.', e.message)\n\t\t}\n\t}\n}\n\nfunction destroy() {\n\tvar this$1 = this;\n\n\t/**\n\t * Remove all generated styles and element ids\n\t */\n\teach(this.store.elements, function (element) {\n\t\tapplyStyle(element.node, element.styles.inline.generated);\n\t\telement.node.removeAttribute('data-sr-id');\n\t});\n\n\t/**\n\t * Remove all event listeners.\n\t */\n\teach(this.store.containers, function (container) {\n\t\tvar target =\n\t\t\tcontainer.node === document.documentElement ? window : container.node;\n\t\ttarget.removeEventListener('scroll', this$1.delegate);\n\t\ttarget.removeEventListener('resize', this$1.delegate);\n\t});\n\n\t/**\n\t * Clear all data from the store\n\t */\n\tthis.store = {\n\t\tcontainers: {},\n\t\telements: {},\n\t\thistory: [],\n\t\tsequences: {}\n\t};\n}\n\nfunction deepAssign(target) {\n\tvar sources = [], len = arguments.length - 1;\n\twhile ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n\tif (isObject(target)) {\n\t\teach(sources, function (source) {\n\t\t\teach(source, function (data, key) {\n\t\t\t\tif (isObject(data)) {\n\t\t\t\t\tif (!target[key] || !isObject(target[key])) {\n\t\t\t\t\t\ttarget[key] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdeepAssign(target[key], data);\n\t\t\t\t} else {\n\t\t\t\t\ttarget[key] = data;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn target\n\t} else {\n\t\tthrow new TypeError('Target must be an object literal.')\n\t}\n}\n\nfunction isMobile(agent) {\n\tif ( agent === void 0 ) agent = navigator.userAgent;\n\n\treturn /Android|iPhone|iPad|iPod/i.test(agent)\n}\n\nvar nextUniqueId = (function () {\n\tvar uid = 0;\n\treturn function () { return uid++; }\n})();\n\nfunction initialize() {\n\tvar this$1 = this;\n\n\trinse.call(this);\n\n\teach(this.store.elements, function (element) {\n\t\tvar styles = [element.styles.inline.generated];\n\n\t\tif (element.visible) {\n\t\t\tstyles.push(element.styles.opacity.computed);\n\t\t\tstyles.push(element.styles.transform.generated.final);\n\t\t\telement.revealed = true;\n\t\t} else {\n\t\t\tstyles.push(element.styles.opacity.generated);\n\t\t\tstyles.push(element.styles.transform.generated.initial);\n\t\t\telement.revealed = false;\n\t\t}\n\n\t\tapplyStyle(element.node, styles.filter(function (s) { return s !== ''; }).join(' '));\n\t});\n\n\teach(this.store.containers, function (container) {\n\t\tvar target =\n\t\t\tcontainer.node === document.documentElement ? window : container.node;\n\t\ttarget.addEventListener('scroll', this$1.delegate);\n\t\ttarget.addEventListener('resize', this$1.delegate);\n\t});\n\n\t/**\n\t * Manually invoke delegate once to capture\n\t * element and container dimensions, container\n\t * scroll position, and trigger any valid reveals\n\t */\n\tthis.delegate();\n\n\t/**\n\t * Wipe any existing `setTimeout` now\n\t * that initialization has completed.\n\t */\n\tthis.initTimeout = null;\n}\n\nfunction animate(element, force) {\n\tif ( force === void 0 ) force = {};\n\n\tvar pristine = force.pristine || this.pristine;\n\tvar delayed =\n\t\telement.config.useDelay === 'always' ||\n\t\t(element.config.useDelay === 'onload' && pristine) ||\n\t\t(element.config.useDelay === 'once' && !element.seen);\n\n\tvar shouldReveal = element.visible && !element.revealed;\n\tvar shouldReset = !element.visible && element.revealed && element.config.reset;\n\n\tif (force.reveal || shouldReveal) {\n\t\treturn triggerReveal.call(this, element, delayed)\n\t}\n\n\tif (force.reset || shouldReset) {\n\t\treturn triggerReset.call(this, element)\n\t}\n}\n\nfunction triggerReveal(element, delayed) {\n\tvar styles = [\n\t\telement.styles.inline.generated,\n\t\telement.styles.opacity.computed,\n\t\telement.styles.transform.generated.final\n\t];\n\tif (delayed) {\n\t\tstyles.push(element.styles.transition.generated.delayed);\n\t} else {\n\t\tstyles.push(element.styles.transition.generated.instant);\n\t}\n\telement.revealed = element.seen = true;\n\tapplyStyle(element.node, styles.filter(function (s) { return s !== ''; }).join(' '));\n\tregisterCallbacks.call(this, element, delayed);\n}\n\nfunction triggerReset(element) {\n\tvar styles = [\n\t\telement.styles.inline.generated,\n\t\telement.styles.opacity.generated,\n\t\telement.styles.transform.generated.initial,\n\t\telement.styles.transition.generated.instant\n\t];\n\telement.revealed = false;\n\tapplyStyle(element.node, styles.filter(function (s) { return s !== ''; }).join(' '));\n\tregisterCallbacks.call(this, element);\n}\n\nfunction registerCallbacks(element, isDelayed) {\n\tvar this$1 = this;\n\n\tvar duration = isDelayed\n\t\t? element.config.duration + element.config.delay\n\t\t: element.config.duration;\n\n\tvar beforeCallback = element.revealed\n\t\t? element.config.beforeReveal\n\t\t: element.config.beforeReset;\n\n\tvar afterCallback = element.revealed\n\t\t? element.config.afterReveal\n\t\t: element.config.afterReset;\n\n\tvar elapsed = 0;\n\tif (element.callbackTimer) {\n\t\telapsed = Date.now() - element.callbackTimer.start;\n\t\twindow.clearTimeout(element.callbackTimer.clock);\n\t}\n\n\tbeforeCallback(element.node);\n\n\telement.callbackTimer = {\n\t\tstart: Date.now(),\n\t\tclock: window.setTimeout(function () {\n\t\t\tafterCallback(element.node);\n\t\t\telement.callbackTimer = null;\n\t\t\tif (element.revealed && !element.config.reset && element.config.cleanup) {\n\t\t\t\tclean.call(this$1, element.node);\n\t\t\t}\n\t\t}, duration - elapsed)\n\t};\n}\n\nfunction sequence(element, pristine) {\n\tif ( pristine === void 0 ) pristine = this.pristine;\n\n\t/**\n\t * We first check if the element should reset.\n\t */\n\tif (!element.visible && element.revealed && element.config.reset) {\n\t\treturn animate.call(this, element, { reset: true })\n\t}\n\n\tvar seq = this.store.sequences[element.sequence.id];\n\tvar i = element.sequence.index;\n\n\tif (seq) {\n\t\tvar visible = new SequenceModel(seq, 'visible', this.store);\n\t\tvar revealed = new SequenceModel(seq, 'revealed', this.store);\n\n\t\tseq.models = { visible: visible, revealed: revealed };\n\n\t\t/**\n\t\t * If the sequence has no revealed members,\n\t\t * then we reveal the first visible element\n\t\t * within that sequence.\n\t\t *\n\t\t * The sequence then cues a recursive call\n\t\t * in both directions.\n\t\t */\n\t\tif (!revealed.body.length) {\n\t\t\tvar nextId = seq.members[visible.body[0]];\n\t\t\tvar nextElement = this.store.elements[nextId];\n\n\t\t\tif (nextElement) {\n\t\t\t\tcue.call(this, seq, visible.body[0], -1, pristine);\n\t\t\t\tcue.call(this, seq, visible.body[0], +1, pristine);\n\t\t\t\treturn animate.call(this, nextElement, { reveal: true, pristine: pristine })\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * If our element isn’t resetting, we check the\n\t\t * element sequence index against the head, and\n\t\t * then the foot of the sequence.\n\t\t */\n\t\tif (\n\t\t\t!seq.blocked.head &&\n\t\t\ti === [].concat( revealed.head ).pop() &&\n\t\t\ti >= [].concat( visible.body ).shift()\n\t\t) {\n\t\t\tcue.call(this, seq, i, -1, pristine);\n\t\t\treturn animate.call(this, element, { reveal: true, pristine: pristine })\n\t\t}\n\n\t\tif (\n\t\t\t!seq.blocked.foot &&\n\t\t\ti === [].concat( revealed.foot ).shift() &&\n\t\t\ti <= [].concat( visible.body ).pop()\n\t\t) {\n\t\t\tcue.call(this, seq, i, +1, pristine);\n\t\t\treturn animate.call(this, element, { reveal: true, pristine: pristine })\n\t\t}\n\t}\n}\n\nfunction Sequence(interval) {\n\tvar i = Math.abs(interval);\n\tif (!isNaN(i)) {\n\t\tthis.id = nextUniqueId();\n\t\tthis.interval = Math.max(i, 16);\n\t\tthis.members = [];\n\t\tthis.models = {};\n\t\tthis.blocked = {\n\t\t\thead: false,\n\t\t\tfoot: false\n\t\t};\n\t} else {\n\t\tthrow new RangeError('Invalid sequence interval.')\n\t}\n}\n\nfunction SequenceModel(seq, prop, store) {\n\tvar this$1 = this;\n\n\tthis.head = [];\n\tthis.body = [];\n\tthis.foot = [];\n\n\teach(seq.members, function (id, index) {\n\t\tvar element = store.elements[id];\n\t\tif (element && element[prop]) {\n\t\t\tthis$1.body.push(index);\n\t\t}\n\t});\n\n\tif (this.body.length) {\n\t\teach(seq.members, function (id, index) {\n\t\t\tvar element = store.elements[id];\n\t\t\tif (element && !element[prop]) {\n\t\t\t\tif (index < this$1.body[0]) {\n\t\t\t\t\tthis$1.head.push(index);\n\t\t\t\t} else {\n\t\t\t\t\tthis$1.foot.push(index);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nfunction cue(seq, i, direction, pristine) {\n\tvar this$1 = this;\n\n\tvar blocked = ['head', null, 'foot'][1 + direction];\n\tvar nextId = seq.members[i + direction];\n\tvar nextElement = this.store.elements[nextId];\n\n\tseq.blocked[blocked] = true;\n\n\tsetTimeout(function () {\n\t\tseq.blocked[blocked] = false;\n\t\tif (nextElement) {\n\t\t\tsequence.call(this$1, nextElement, pristine);\n\t\t}\n\t}, seq.interval);\n}\n\nfunction reveal(target, options, syncing) {\n\tvar this$1 = this;\n\tif ( options === void 0 ) options = {};\n\tif ( syncing === void 0 ) syncing = false;\n\n\tvar containerBuffer = [];\n\tvar sequence$$1;\n\tvar interval = options.interval || defaults.interval;\n\n\ttry {\n\t\tif (interval) {\n\t\t\tsequence$$1 = new Sequence(interval);\n\t\t}\n\n\t\tvar nodes = $(target);\n\t\tif (!nodes.length) {\n\t\t\tthrow new Error('Invalid reveal target.')\n\t\t}\n\n\t\tvar elements = nodes.reduce(function (elementBuffer, elementNode) {\n\t\t\tvar element = {};\n\t\t\tvar existingId = elementNode.getAttribute('data-sr-id');\n\n\t\t\tif (existingId) {\n\t\t\t\tdeepAssign(element, this$1.store.elements[existingId]);\n\n\t\t\t\t/**\n\t\t\t\t * In order to prevent previously generated styles\n\t\t\t\t * from throwing off the new styles, the style tag\n\t\t\t\t * has to be reverted to its pre-reveal state.\n\t\t\t\t */\n\t\t\t\tapplyStyle(element.node, element.styles.inline.computed);\n\t\t\t} else {\n\t\t\t\telement.id = nextUniqueId();\n\t\t\t\telement.node = elementNode;\n\t\t\t\telement.seen = false;\n\t\t\t\telement.revealed = false;\n\t\t\t\telement.visible = false;\n\t\t\t}\n\n\t\t\tvar config = deepAssign({}, element.config || this$1.defaults, options);\n\n\t\t\tif ((!config.mobile && isMobile()) || (!config.desktop && !isMobile())) {\n\t\t\t\tif (existingId) {\n\t\t\t\t\tclean.call(this$1, element);\n\t\t\t\t}\n\t\t\t\treturn elementBuffer // skip elements that are disabled\n\t\t\t}\n\n\t\t\tvar containerNode = $(config.container)[0];\n\t\t\tif (!containerNode) {\n\t\t\t\tthrow new Error('Invalid container.')\n\t\t\t}\n\t\t\tif (!containerNode.contains(elementNode)) {\n\t\t\t\treturn elementBuffer // skip elements found outside the container\n\t\t\t}\n\n\t\t\tvar containerId;\n\t\t\t{\n\t\t\t\tcontainerId = getContainerId(\n\t\t\t\t\tcontainerNode,\n\t\t\t\t\tcontainerBuffer,\n\t\t\t\t\tthis$1.store.containers\n\t\t\t\t);\n\t\t\t\tif (containerId === null) {\n\t\t\t\t\tcontainerId = nextUniqueId();\n\t\t\t\t\tcontainerBuffer.push({ id: containerId, node: containerNode });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telement.config = config;\n\t\t\telement.containerId = containerId;\n\t\t\telement.styles = style(element);\n\n\t\t\tif (sequence$$1) {\n\t\t\t\telement.sequence = {\n\t\t\t\t\tid: sequence$$1.id,\n\t\t\t\t\tindex: sequence$$1.members.length\n\t\t\t\t};\n\t\t\t\tsequence$$1.members.push(element.id);\n\t\t\t}\n\n\t\t\telementBuffer.push(element);\n\t\t\treturn elementBuffer\n\t\t}, []);\n\n\t\t/**\n\t\t * Modifying the DOM via setAttribute needs to be handled\n\t\t * separately from reading computed styles in the map above\n\t\t * for the browser to batch DOM changes (limiting reflows)\n\t\t */\n\t\teach(elements, function (element) {\n\t\t\tthis$1.store.elements[element.id] = element;\n\t\t\telement.node.setAttribute('data-sr-id', element.id);\n\t\t});\n\t} catch (e) {\n\t\treturn logger.call(this, 'Reveal failed.', e.message)\n\t}\n\n\t/**\n\t * Now that element set-up is complete...\n\t * Let’s commit any container and sequence data we have to the store.\n\t */\n\teach(containerBuffer, function (container) {\n\t\tthis$1.store.containers[container.id] = {\n\t\t\tid: container.id,\n\t\t\tnode: container.node\n\t\t};\n\t});\n\tif (sequence$$1) {\n\t\tthis.store.sequences[sequence$$1.id] = sequence$$1;\n\t}\n\n\t/**\n\t * If reveal wasn't invoked by sync, we want to\n\t * make sure to add this call to the history.\n\t */\n\tif (syncing !== true) {\n\t\tthis.store.history.push({ target: target, options: options });\n\n\t\t/**\n\t\t * Push initialization to the event queue, giving\n\t\t * multiple reveal calls time to be interpreted.\n\t\t */\n\t\tif (this.initTimeout) {\n\t\t\twindow.clearTimeout(this.initTimeout);\n\t\t}\n\t\tthis.initTimeout = window.setTimeout(initialize.bind(this), 0);\n\t}\n}\n\nfunction getContainerId(node) {\n\tvar collections = [], len = arguments.length - 1;\n\twhile ( len-- > 0 ) collections[ len ] = arguments[ len + 1 ];\n\n\tvar id = null;\n\teach(collections, function (collection) {\n\t\teach(collection, function (container) {\n\t\t\tif (id === null && container.node === node) {\n\t\t\t\tid = container.id;\n\t\t\t}\n\t\t});\n\t});\n\treturn id\n}\n\n/**\n * Re-runs the reveal method for each record stored in history,\n * for capturing new content asynchronously loaded into the DOM.\n */\nfunction sync() {\n\tvar this$1 = this;\n\n\teach(this.store.history, function (record) {\n\t\treveal.call(this$1, record.target, record.options, true);\n\t});\n\n\tinitialize.call(this);\n}\n\nvar polyfill = function (x) { return (x > 0) - (x < 0) || +x; };\nvar mathSign = Math.sign || polyfill;\n\nfunction getGeometry(target, isContainer) {\n\t/**\n\t * We want to ignore padding and scrollbars for container elements.\n\t * More information here: https://goo.gl/vOZpbz\n\t */\n\tvar height = isContainer ? target.node.clientHeight : target.node.offsetHeight;\n\tvar width = isContainer ? target.node.clientWidth : target.node.offsetWidth;\n\n\tvar offsetTop = 0;\n\tvar offsetLeft = 0;\n\tvar node = target.node;\n\n\tdo {\n\t\tif (!isNaN(node.offsetTop)) {\n\t\t\toffsetTop += node.offsetTop;\n\t\t}\n\t\tif (!isNaN(node.offsetLeft)) {\n\t\t\toffsetLeft += node.offsetLeft;\n\t\t}\n\t\tnode = node.offsetParent;\n\t} while (node)\n\n\treturn {\n\t\tbounds: {\n\t\t\ttop: offsetTop,\n\t\t\tright: offsetLeft + width,\n\t\t\tbottom: offsetTop + height,\n\t\t\tleft: offsetLeft\n\t\t},\n\t\theight: height,\n\t\twidth: width\n\t}\n}\n\nfunction getScrolled(container) {\n\tvar top, left;\n\tif (container.node === document.documentElement) {\n\t\ttop = window.pageYOffset;\n\t\tleft = window.pageXOffset;\n\t} else {\n\t\ttop = container.node.scrollTop;\n\t\tleft = container.node.scrollLeft;\n\t}\n\treturn { top: top, left: left }\n}\n\nfunction isElementVisible(element) {\n\tif ( element === void 0 ) element = {};\n\n\tvar container = this.store.containers[element.containerId];\n\tif (!container) { return }\n\n\tvar viewFactor = Math.max(0, Math.min(1, element.config.viewFactor));\n\tvar viewOffset = element.config.viewOffset;\n\n\tvar elementBounds = {\n\t\ttop: element.geometry.bounds.top + element.geometry.height * viewFactor,\n\t\tright: element.geometry.bounds.right - element.geometry.width * viewFactor,\n\t\tbottom: element.geometry.bounds.bottom - element.geometry.height * viewFactor,\n\t\tleft: element.geometry.bounds.left + element.geometry.width * viewFactor\n\t};\n\n\tvar containerBounds = {\n\t\ttop: container.geometry.bounds.top + container.scroll.top + viewOffset.top,\n\t\tright: container.geometry.bounds.right + container.scroll.left - viewOffset.right,\n\t\tbottom:\n\t\t\tcontainer.geometry.bounds.bottom + container.scroll.top - viewOffset.bottom,\n\t\tleft: container.geometry.bounds.left + container.scroll.left + viewOffset.left\n\t};\n\n\treturn (\n\t\t(elementBounds.top < containerBounds.bottom &&\n\t\t\telementBounds.right > containerBounds.left &&\n\t\t\telementBounds.bottom > containerBounds.top &&\n\t\t\telementBounds.left < containerBounds.right) ||\n\t\telement.styles.position === 'fixed'\n\t)\n}\n\nfunction delegate(\n\tevent,\n\telements\n) {\n\tvar this$1 = this;\n\tif ( event === void 0 ) event = { type: 'init' };\n\tif ( elements === void 0 ) elements = this.store.elements;\n\n\traf(function () {\n\t\tvar stale = event.type === 'init' || event.type === 'resize';\n\n\t\teach(this$1.store.containers, function (container) {\n\t\t\tif (stale) {\n\t\t\t\tcontainer.geometry = getGeometry.call(this$1, container, true);\n\t\t\t}\n\t\t\tvar scroll = getScrolled.call(this$1, container);\n\t\t\tif (container.scroll) {\n\t\t\t\tcontainer.direction = {\n\t\t\t\t\tx: mathSign(scroll.left - container.scroll.left),\n\t\t\t\t\ty: mathSign(scroll.top - container.scroll.top)\n\t\t\t\t};\n\t\t\t}\n\t\t\tcontainer.scroll = scroll;\n\t\t});\n\n\t\t/**\n\t\t * Due to how the sequencer is implemented, it’s\n\t\t * important that we update the state of all\n\t\t * elements, before any animation logic is\n\t\t * evaluated (in the second loop below).\n\t\t */\n\t\teach(elements, function (element) {\n\t\t\tif (stale || element.geometry === undefined) {\n\t\t\t\telement.geometry = getGeometry.call(this$1, element);\n\t\t\t}\n\t\t\telement.visible = isElementVisible.call(this$1, element);\n\t\t});\n\n\t\teach(elements, function (element) {\n\t\t\tif (element.sequence) {\n\t\t\t\tsequence.call(this$1, element);\n\t\t\t} else {\n\t\t\t\tanimate.call(this$1, element);\n\t\t\t}\n\t\t});\n\n\t\tthis$1.pristine = false;\n\t});\n}\n\nfunction isTransformSupported() {\n\tvar style = document.documentElement.style;\n\treturn 'transform' in style || 'WebkitTransform' in style\n}\n\nfunction isTransitionSupported() {\n\tvar style = document.documentElement.style;\n\treturn 'transition' in style || 'WebkitTransition' in style\n}\n\nvar version = \"4.0.9\";\n\nvar boundDelegate;\nvar boundDestroy;\nvar boundReveal;\nvar boundClean;\nvar boundSync;\nvar config;\nvar debug;\nvar instance;\n\nfunction ScrollReveal(options) {\n\tif ( options === void 0 ) options = {};\n\n\tvar invokedWithoutNew =\n\t\ttypeof this === 'undefined' ||\n\t\tObject.getPrototypeOf(this) !== ScrollReveal.prototype;\n\n\tif (invokedWithoutNew) {\n\t\treturn new ScrollReveal(options)\n\t}\n\n\tif (!ScrollReveal.isSupported()) {\n\t\tlogger.call(this, 'Instantiation failed.', 'This browser is not supported.');\n\t\treturn mount.failure()\n\t}\n\n\tvar buffer;\n\ttry {\n\t\tbuffer = config\n\t\t\t? deepAssign({}, config, options)\n\t\t\t: deepAssign({}, defaults, options);\n\t} catch (e) {\n\t\tlogger.call(this, 'Invalid configuration.', e.message);\n\t\treturn mount.failure()\n\t}\n\n\ttry {\n\t\tvar container = $(buffer.container)[0];\n\t\tif (!container) {\n\t\t\tthrow new Error('Invalid container.')\n\t\t}\n\t} catch (e) {\n\t\tlogger.call(this, e.message);\n\t\treturn mount.failure()\n\t}\n\n\tconfig = buffer;\n\n\tif ((!config.mobile && isMobile()) || (!config.desktop && !isMobile())) {\n\t\tlogger.call(\n\t\t\tthis,\n\t\t\t'This device is disabled.',\n\t\t\t(\"desktop: \" + (config.desktop)),\n\t\t\t(\"mobile: \" + (config.mobile))\n\t\t);\n\t\treturn mount.failure()\n\t}\n\n\tmount.success();\n\n\tthis.store = {\n\t\tcontainers: {},\n\t\telements: {},\n\t\thistory: [],\n\t\tsequences: {}\n\t};\n\n\tthis.pristine = true;\n\n\tboundDelegate = boundDelegate || delegate.bind(this);\n\tboundDestroy = boundDestroy || destroy.bind(this);\n\tboundReveal = boundReveal || reveal.bind(this);\n\tboundClean = boundClean || clean.bind(this);\n\tboundSync = boundSync || sync.bind(this);\n\n\tObject.defineProperty(this, 'delegate', { get: function () { return boundDelegate; } });\n\tObject.defineProperty(this, 'destroy', { get: function () { return boundDestroy; } });\n\tObject.defineProperty(this, 'reveal', { get: function () { return boundReveal; } });\n\tObject.defineProperty(this, 'clean', { get: function () { return boundClean; } });\n\tObject.defineProperty(this, 'sync', { get: function () { return boundSync; } });\n\n\tObject.defineProperty(this, 'defaults', { get: function () { return config; } });\n\tObject.defineProperty(this, 'version', { get: function () { return version; } });\n\tObject.defineProperty(this, 'noop', { get: function () { return false; } });\n\n\treturn instance ? instance : (instance = this)\n}\n\nScrollReveal.isSupported = function () { return isTransformSupported() && isTransitionSupported(); };\n\nObject.defineProperty(ScrollReveal, 'debug', {\n\tget: function () { return debug || false; },\n\tset: function (value) { return (debug = typeof value === 'boolean' ? value : debug); }\n});\n\nScrollReveal();\n\nexport default ScrollReveal;\n","/**\n * SSR Window 3.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target, src) {\n if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n var doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nvar ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n requestAnimationFrame: function (callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame: function (id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n var win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/* eslint no-underscore-dangle: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick, bindModuleMethods } from '../../utils/utils';\nvar Autoplay = {\n run: function run() {\n var swiper = this;\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n var delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = nextTick(function () {\n var autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();else if (autoplayResult === false) {\n swiper.autoplay.run();\n }\n }, delay);\n },\n start: function start() {\n var swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop: function stop() {\n var swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause: function pause(speed) {\n var swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n onVisibilityChange: function onVisibilityChange() {\n var swiper = this;\n var document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd: function onTransitionEnd(e) {\n var swiper = this;\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n }\n};\nexport default {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n autoplay: _extends({}, Autoplay, {\n running: false,\n paused: false\n })\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n var document = getDocument();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove: function sliderFirstMove(swiper) {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd: function touchEnd(swiper) {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy: function destroy(swiper) {\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n\n var document = getDocument();\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nvar support;\n\nfunction calcSupport() {\n var window = getWindow();\n var document = getDocument();\n return {\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,\n observer: function checkObserver() {\n return 'MutationObserver' in window || 'WebkitMutationObserver' in window;\n }(),\n passiveListener: function checkPassiveListener() {\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support';\nvar device;\n\nfunction calcDevice(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n userAgent = _ref.userAgent;\n\n var support = getSupport();\n var window = getWindow();\n var platform = window.navigator.platform;\n var ua = userAgent || window.navigator.userAgent;\n var device = {\n ios: false,\n android: false\n };\n var screenWidth = window.screen.width;\n var screenHeight = window.screen.height;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n var windows = platform === 'Win32';\n var macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + \"x\" + screenHeight) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!device) {\n device = calcDevice(overrides);\n }\n\n return device;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nvar browser;\n\nfunction calcBrowser() {\n var window = getWindow();\n\n function isSafari() {\n var ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nimport { extend } from '../../utils/utils';\n\nvar supportsResizeObserver = function supportsResizeObserver() {\n var window = getWindow();\n return typeof window.ResizeObserver !== 'undefined';\n};\n\nexport default {\n name: 'resize',\n create: function create() {\n var swiper = this;\n extend(swiper, {\n resize: {\n observer: null,\n createObserver: function createObserver() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.resize.observer = new ResizeObserver(function (entries) {\n var width = swiper.width,\n height = swiper.height;\n var newWidth = width;\n var newHeight = height;\n entries.forEach(function (_ref) {\n var contentBoxSize = _ref.contentBoxSize,\n contentRect = _ref.contentRect,\n target = _ref.target;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n swiper.resize.resizeHandler();\n }\n });\n swiper.resize.observer.observe(swiper.el);\n },\n removeObserver: function removeObserver() {\n if (swiper.resize.observer && swiper.resize.observer.unobserve && swiper.el) {\n swiper.resize.observer.unobserve(swiper.el);\n swiper.resize.observer = null;\n }\n },\n resizeHandler: function resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n }\n }\n });\n },\n on: {\n init: function init(swiper) {\n var window = getWindow();\n\n if (swiper.params.resizeObserver && supportsResizeObserver()) {\n swiper.resize.createObserver();\n return;\n } // Emit resize\n\n\n window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange\n\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy: function destroy(swiper) {\n var window = getWindow();\n swiper.resize.removeObserver();\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n }\n }\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { getWindow } from 'ssr-window';\nimport { bindModuleMethods } from '../../utils/utils';\nvar Observer = {\n attach: function attach(target, options) {\n if (options === void 0) {\n options = {};\n }\n\n var window = getWindow();\n var swiper = this;\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n var observer = new ObserverFunc(function (mutations) {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n\n var observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n swiper.observer.observers.push(observer);\n },\n init: function init() {\n var swiper = this;\n if (!swiper.support.observer || !swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n\n for (var i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n } // Observe container\n\n\n swiper.observer.attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n swiper.observer.attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.observers.forEach(function (observer) {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n }\n};\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n observer: _extends({}, Observer, {\n observers: []\n })\n });\n },\n on: {\n init: function init(swiper) {\n swiper.observer.init();\n },\n destroy: function destroy(swiper) {\n swiper.observer.destroy();\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils';\nexport default function onTouchStart(event) {\n var swiper = this;\n var document = getDocument();\n var window = getWindow();\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n var $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root componenet\n\n var swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : \".\" + params.noSwipingClass)[0]) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n var startX = touches.currentX;\n var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n\n if (document.activeElement && $(document.activeElement).is(data.formElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils';\nexport default function onTouchMove(event) {\n var document = getDocument();\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n\n if (data.isTouched) {\n extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n var touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n var diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n var disableParentSwiper = true;\n var resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../../utils/utils';\nexport default function onTouchEnd(event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n $wrapperEl = swiper.$wrapperEl,\n slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n var touchEndTime = now();\n var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(function () {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n var currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n var lastMoveEvent = data.velocities.pop();\n var velocityEvent = data.velocities.pop();\n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n data.velocities.length = 0;\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n var newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n var nextSlide;\n\n for (var j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n swiper.once('transitionEnd', function () {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(function () {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n swiper.emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n return;\n } // Find current slide\n\n\n var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n\n for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + _increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + _increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n\n var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n var swiper = this;\n var params = swiper.params,\n el = swiper.el;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n var allowSlideNext = swiper.allowSlideNext,\n allowSlidePrev = swiper.allowSlidePrev,\n snapGrid = swiper.snapGrid; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n var swiper = this;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n var swiper = this;\n var wrapperEl = swiper.wrapperEl,\n rtlTranslate = swiper.rtlTranslate;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === -0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\nvar dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device,\n support = swiper.support;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n var capture = !!params.nested; // Touch Events\n\n if (!support.touch && support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture: capture\n } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device,\n support = swiper.support;\n var capture = !!params.nested; // Touch Events\n\n if (!support.touch && support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n\n swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);\n}\n\nexport default {\n attachEvents: attachEvents,\n detachEvents: detachEvents\n};","function checkOverflow() {\n var swiper = this;\n var params = swiper.params;\n var wasLocked = swiper.isLocked;\n var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked; // events\n\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n if (swiper.navigation) swiper.navigation.update();\n }\n}\n\nexport default {\n checkOverflow: checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: false,\n nested: false,\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-container-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport { extend, now, deleteProps } from '../../utils/utils';\nimport { getSupport } from '../../utils/get-support';\nimport { getDevice } from '../../utils/get-device';\nimport { getBrowser } from '../../utils/get-browser';\nimport Resize from '../../modules/resize/resize';\nimport Observer from '../../modules/observer/observer';\nimport modular from './modular';\nimport eventsEmitter from './events-emitter';\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\nimport defaults from './defaults';\nvar prototypes = {\n modular: modular,\n eventsEmitter: eventsEmitter,\n update: update,\n translate: translate,\n transition: transition,\n slide: slide,\n loop: loop,\n grabCursor: grabCursor,\n manipulation: manipulation,\n events: events,\n breakpoints: breakpoints,\n checkOverflow: checkOverflow,\n classes: classes,\n images: images\n};\nvar extendedDefaults = {};\n\nvar Swiper = /*#__PURE__*/function () {\n function Swiper() {\n var el;\n var params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n el = args[0];\n params = args[1];\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n var swipers = [];\n $(params.el).each(function (containerEl) {\n var newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n var swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n }\n }); // Extend defaults with modules params\n\n var swiperParams = extend({}, defaults);\n swiper.useParams(swiperParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(function (eventName) {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n extend(swiper, {\n el: el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal: function isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical: function isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\n\n if (swiper.support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video, label',\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n }); // Install Modules\n\n swiper.useModules();\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n var _proto = Swiper.prototype;\n\n _proto.setProgress = function setProgress(progress, speed) {\n var swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n var min = swiper.minTranslate();\n var max = swiper.maxTranslate();\n var current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n };\n\n _proto.emitContainerClasses = function emitContainerClasses() {\n var swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n var classes = swiper.el.className.split(' ').filter(function (className) {\n return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', classes.join(' '));\n };\n\n _proto.getSlideClasses = function getSlideClasses(slideEl) {\n var swiper = this;\n return slideEl.className.split(' ').filter(function (className) {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n };\n\n _proto.emitSlidesClasses = function emitSlidesClasses() {\n var swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n var updates = [];\n swiper.slides.each(function (slideEl) {\n var classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl: slideEl,\n classNames: classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n };\n\n _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {\n var swiper = this;\n var params = swiper.params,\n slides = swiper.slides,\n slidesGrid = swiper.slidesGrid,\n swiperSize = swiper.size,\n activeIndex = swiper.activeIndex;\n var spv = 1;\n\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop;\n\n for (var i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {\n if (slides[_i] && !breakLoop) {\n slideSize += slides[_i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {\n if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n\n return spv;\n };\n\n _proto.update = function update() {\n var swiper = this;\n if (!swiper || swiper.destroyed) return;\n var snapGrid = swiper.snapGrid,\n params = swiper.params; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n var translated;\n\n if (swiper.params.freeMode) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n };\n\n _proto.changeDirection = function changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n var swiper = this;\n var currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(\"\" + swiper.params.containerModifierClass + currentDirection).addClass(\"\" + swiper.params.containerModifierClass + newDirection);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(function (slideEl) {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n };\n\n _proto.mount = function mount(el) {\n var swiper = this;\n if (swiper.mounted) return true; // Find el\n\n var $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper; // Find Wrapper\n\n var $wrapperEl;\n\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(\".\" + swiper.params.wrapperClass)); // Children needs to return slot items\n\n $wrapperEl.children = function (options) {\n return $el.children(options);\n };\n } else {\n $wrapperEl = $el.children(\".\" + swiper.params.wrapperClass);\n }\n\n extend(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n };\n\n _proto.init = function init(el) {\n var swiper = this;\n if (swiper.initialized) return swiper;\n var mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n };\n\n _proto.destroy = function destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n $el = swiper.$el,\n $wrapperEl = swiper.$wrapperEl,\n slides = swiper.slides;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(function (eventName) {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n };\n\n Swiper.extendDefaults = function extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n };\n\n Swiper.installModule = function installModule(module) {\n if (!Swiper.prototype.modules) Swiper.prototype.modules = {};\n var name = module.name || Object.keys(Swiper.prototype.modules).length + \"_\" + now();\n Swiper.prototype.modules[name] = module;\n };\n\n Swiper.use = function use(module) {\n if (Array.isArray(module)) {\n module.forEach(function (m) {\n return Swiper.installModule(m);\n });\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n };\n\n _createClass(Swiper, null, [{\n key: \"extendedDefaults\",\n get: function get() {\n return extendedDefaults;\n }\n }, {\n key: \"defaults\",\n get: function get() {\n return defaults;\n }\n }]);\n\n return Swiper;\n}();\n\nObject.keys(prototypes).forEach(function (prototypeGroup) {\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import { extend } from '../../utils/utils';\nexport default {\n useParams: function useParams(instanceParams) {\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName]; // Extend params\n\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n },\n useModules: function useModules(modulesParams) {\n if (modulesParams === void 0) {\n modulesParams = {};\n }\n\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {}; // Add event listeners\n\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(function (moduleEventName) {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n } // Module create callback\n\n\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n};","/* eslint-disable no-underscore-dangle */\nexport default {\n on: function on(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once: function once(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny: function onAny(handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n offAny: function offAny(handler) {\n var self = this;\n if (!self.eventsAnyListeners) return self;\n var index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n off: function off(events, handler) {\n var self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(function (event) {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler, index) {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit: function emit() {\n var self = this;\n if (!self.eventsListeners) return self;\n var events;\n var data;\n var context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n var eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(function (event) {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(function (eventHandler) {\n eventHandler.apply(context, [event].concat(data));\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler) {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\nexport default {\n updateSize: updateSize,\n updateSlides: updateSlides,\n updateAutoHeight: updateAutoHeight,\n updateSlidesOffset: updateSlidesOffset,\n updateSlidesProgress: updateSlidesProgress,\n updateProgress: updateProgress,\n updateSlidesClasses: updateSlidesClasses,\n updateActiveIndex: updateActiveIndex,\n updateClickedSlide: updateClickedSlide\n};","import { extend } from '../../../utils/utils';\nexport default function updateSize() {\n var swiper = this;\n var width;\n var height;\n var $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n extend(swiper, {\n width: width,\n height: height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { extend } from '../../../utils/utils';\nexport default function updateSlides() {\n var swiper = this;\n\n var getDirectionLabel = function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n };\n\n var getDirectionPropertyValue = function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n };\n\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl,\n swiperSize = swiper.size,\n rtl = swiper.rtlTranslate,\n wrongRTL = swiper.wrongRTL;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n var slides = $wrapperEl.children(\".\" + swiper.params.slideClass);\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n var snapGrid = [];\n var slidesGrid = [];\n var slidesSizesGrid = [];\n\n function slidesForMargin(slideEl, slideIndex) {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }\n\n var offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n var offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n var previousSnapGridLength = swiper.snapGrid.length;\n var previousSlidesGridLength = swiper.slidesGrid.length;\n var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: ''\n });\n var slidesNumberEvenToRows;\n\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n } // Calc slides\n\n\n var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n var slide = slides.eq(i);\n\n if (params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex = void 0;\n var column = void 0;\n var row = void 0;\n\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide.css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n\n if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {\n row += 1;\n\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(getDirectionLabel('margin-top'), row !== 0 && params.spaceBetween && params.spaceBetween + \"px\");\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n var slideStyles = getComputedStyle(slide[0]);\n var currentTransform = slide[0].style.transform;\n var currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n var width = getDirectionPropertyValue(slideStyles, 'width');\n var paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n var paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n var marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n var marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n var boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n var _slide$ = slide[0],\n clientWidth = _slide$.clientWidth,\n offsetWidth = _slide$.offsetWidth;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = slideSize + \"px\";\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n var newSlidesGrid;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: swiper.virtualSize + params.spaceBetween + \"px\"\n });\n }\n\n if (params.setWrapperSize) {\n var _$wrapperEl$css;\n\n $wrapperEl.css((_$wrapperEl$css = {}, _$wrapperEl$css[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + \"px\", _$wrapperEl$css));\n }\n\n if (params.slidesPerColumn > 1) {\n var _$wrapperEl$css2;\n\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n $wrapperEl.css((_$wrapperEl$css2 = {}, _$wrapperEl$css2[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + \"px\", _$wrapperEl$css2));\n\n if (params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var _i = 0; _i < snapGrid.length; _i += 1) {\n var slidesGridItem = snapGrid[_i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid = newSlidesGrid;\n }\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {\n var _slidesGridItem = snapGrid[_i2];\n if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);\n\n if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(_slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n var _slides$filter$css;\n\n var key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter(slidesForMargin).css((_slides$filter$css = {}, _slides$filter$css[key] = spaceBetween + \"px\", _slides$filter$css));\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n var allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n var maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(function (snap) {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n var _allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n _allSlidesSize -= params.spaceBetween;\n\n if (_allSlidesSize < swiperSize) {\n var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;\n snapGrid.forEach(function (snap, snapIndex) {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach(function (snap, snapIndex) {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n extend(swiper, {\n slides: slides,\n snapGrid: snapGrid,\n slidesGrid: slidesGrid,\n slidesSizesGrid: slidesSizesGrid\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}","export default function updateAutoHeight(speed) {\n var swiper = this;\n var activeSlides = [];\n var newHeight = 0;\n var i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n } // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(function (slide) {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n var index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight) swiper.$wrapperEl.css('height', newHeight + \"px\");\n}","export default function updateSlidesOffset() {\n var swiper = this;\n var slides = swiper.slides;\n\n for (var i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../../utils/dom';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\n var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides,\n rtl = swiper.rtlTranslate;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n var offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (var i = 0; i < slides.length; i += 1) {\n var slide = slides[i];\n var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n\n if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","import { extend } from '../../../utils/utils';\nexport default function updateProgress(translate) {\n var swiper = this;\n\n if (typeof translate === 'undefined') {\n var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n var params = swiper.params;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n var progress = swiper.progress,\n isBeginning = swiper.isBeginning,\n isEnd = swiper.isEnd;\n var wasBeginning = isBeginning;\n var wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n extend(swiper, {\n progress: progress,\n isBeginning: isBeginning,\n isEnd: isEnd\n });\n if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n var swiper = this;\n var slides = swiper.slides,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex,\n realIndex = swiper.realIndex;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(params.slideActiveClass + \" \" + params.slideNextClass + \" \" + params.slidePrevClass + \" \" + params.slideDuplicateActiveClass + \" \" + params.slideDuplicateNextClass + \" \" + params.slideDuplicatePrevClass);\n var activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + activeIndex + \"\\\"]\");\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n var nextSlide = activeSlide.nextAll(\".\" + params.slideClass).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n var prevSlide = activeSlide.prevAll(\".\" + params.slideClass).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","import { extend } from '../../../utils/utils';\nexport default function updateActiveIndex(newActiveIndex) {\n var swiper = this;\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid,\n params = swiper.params,\n previousIndex = swiper.activeIndex,\n previousRealIndex = swiper.realIndex,\n previousSnapIndex = swiper.snapIndex;\n var activeIndex = newActiveIndex;\n var snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n var skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n extend(swiper, {\n snapIndex: snapIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../../utils/dom';\nexport default function updateClickedSlide(e) {\n var swiper = this;\n var params = swiper.params;\n var slide = $(e.target).closest(\".\" + params.slideClass)[0];\n var slideFound = false;\n var slideIndex;\n\n if (slide) {\n for (var i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\nexport default {\n getTranslate: getTranslate,\n setTranslate: setTranslate,\n minTranslate: minTranslate,\n maxTranslate: maxTranslate,\n translateTo: translateTo\n};","import { getTranslate } from '../../../utils/utils';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n var swiper = this;\n var params = swiper.params,\n rtl = swiper.rtlTranslate,\n translate = swiper.translate,\n $wrapperEl = swiper.$wrapperEl;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n var currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n var swiper = this;\n var rtl = swiper.rtlTranslate,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n wrapperEl = swiper.wrapperEl,\n progress = swiper.progress;\n var x = 0;\n var y = 0;\n var z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(\"translate3d(\" + x + \"px, \" + y + \"px, \" + z + \"px)\");\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","export default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n wrapperEl = swiper.wrapperEl;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n var minTranslate = swiper.minTranslate();\n var maxTranslate = swiper.maxTranslate();\n var newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n var _wrapperEl$scrollTo;\n\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\nexport default {\n setTransition: setTransition,\n transitionStart: transitionStart,\n transitionEnd: transitionEnd\n};","export default function setTransition(duration, byController) {\n var swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n params = swiper.params,\n previousIndex = swiper.previousIndex;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n\n swiper.emit('slideChangeTransitionStart');\n\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}","export default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n previousIndex = swiper.previousIndex,\n params = swiper.params;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n\n swiper.emit('slideChangeTransitionEnd');\n\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\nexport default {\n slideTo: slideTo,\n slideToLoop: slideToLoop,\n slideNext: slideNext,\n slidePrev: slidePrev,\n slideReset: slideReset,\n slideToClosest: slideToClosest,\n slideToClickedSlide: slideToClickedSlide\n};","export default function slideTo(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\"The 'index' argument cannot have type other than 'number' or 'string'. [\" + typeof index + \"] given.\");\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n var indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n var isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\"The passed-in 'index' (string) couldn't be converted to 'number'. [\" + index + \"] given.\");\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n var swiper = this;\n var slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n var params = swiper.params,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n previousIndex = swiper.previousIndex,\n activeIndex = swiper.activeIndex,\n rtl = swiper.rtlTranslate,\n wrapperEl = swiper.wrapperEl;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n var translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n var normalizedTranslate = -Math.floor(translate * 100);\n var normalizedGird = Math.floor(slidesGrid[i] * 100);\n var normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGird) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGird) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n var direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n var t = -translate;\n\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n var _wrapperEl$scrollTo;\n\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating;\n var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n rtlTranslate = swiper.rtlTranslate;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n var translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) {\n return normalize(val);\n });\n var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach(function (snap) {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n\n var prevIndex;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\n var swiper = this;\n var index = swiper.activeIndex;\n var skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n var currentSnap = swiper.snapGrid[snapIndex];\n var nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n var prevSnap = swiper.snapGrid[snapIndex - 1];\n var _currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../../utils/dom';\nimport { nextTick } from '../../../utils/utils';\nexport default function slideToClickedSlide() {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl;\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\n nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\n nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\nexport default {\n loopCreate: loopCreate,\n loopFix: loopFix,\n loopDestroy: loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nexport default function loopCreate() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides\n\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass).remove();\n var slides = $wrapperEl.children(\".\" + params.slideClass);\n\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankNode = $(document.createElement('div')).addClass(params.slideClass + \" \" + params.slideBlankClass);\n $wrapperEl.append(blankNode);\n }\n\n slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n var prependSlides = [];\n var appendSlides = [];\n slides.each(function (el, index) {\n var slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (var _i = 0; _i < appendSlides.length; _i += 1) {\n $wrapperEl.append($(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {\n $wrapperEl.prepend($(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n var swiper = this;\n swiper.emit('beforeLoopFix');\n var activeIndex = swiper.activeIndex,\n slides = swiper.slides,\n loopedSlides = swiper.loopedSlides,\n allowSlidePrev = swiper.allowSlidePrev,\n allowSlideNext = swiper.allowSlideNext,\n snapGrid = swiper.snapGrid,\n rtl = swiper.rtlTranslate;\n var newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n var snapTranslate = -snapGrid[activeIndex];\n var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n var slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n\n var _slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (_slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n slides = swiper.slides;\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \",.\" + params.slideClass + \".\" + params.slideBlankClass).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\nexport default {\n setGrabCursor: setGrabCursor,\n unsetGrabCursor: unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n var swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n var el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n var swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper.el.style.cursor = '';\n}","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\nexport default {\n appendSlide: appendSlide,\n prependSlide: prependSlide,\n addSlide: addSlide,\n removeSlide: removeSlide,\n removeAllSlides: removeAllSlides\n};","export default function appendSlide(slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n}","export default function prependSlide(slides) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n var newActiveIndex = activeIndex + 1;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}","export default function addSlide(index, slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n\n var baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n var slidesBuffer = [];\n\n for (var i = baseLength - 1; i >= index; i -= 1) {\n var currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var _i = 0; _i < slides.length; _i += 1) {\n if (slides[_i]) $wrapperEl.append(slides[_i]);\n }\n\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {\n $wrapperEl.append(slidesBuffer[_i2]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeSlide(slidesIndexes) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n\n var newActiveIndex = activeIndexBuffer;\n var indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (var i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeAllSlides() {\n var swiper = this;\n var slidesIndexes = [];\n\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\n}","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\nexport default {\n setBreakpoint: setBreakpoint,\n getBreakpoint: getBreakpoint\n};","import { extend } from '../../../utils/utils';\nexport default function setBreakpoint() {\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n initialized = swiper.initialized,\n _swiper$loopedSlides = swiper.loopedSlides,\n loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,\n params = swiper.params,\n $el = swiper.$el;\n var breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n var breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {\n var paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n var breakpointParams = breakpointOnlyParams || swiper.originalParams;\n var wasMultiRow = params.slidesPerColumn > 1;\n var isMultiRow = breakpointParams.slidesPerColumn > 1;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(params.containerModifierClass + \"multirow \" + params.containerModifierClass + \"multirow-column\");\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(params.containerModifierClass + \"multirow\");\n\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(params.containerModifierClass + \"multirow-column\");\n }\n\n swiper.emitContainerClasses();\n }\n\n var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n var breakpoint = false;\n var window = getWindow();\n var currentWidth = base === 'window' ? window.innerWidth : containerEl.clientWidth;\n var currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n var points = Object.keys(breakpoints).map(function (point) {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n var minRatio = parseFloat(point.substr(1));\n var value = currentHeight * minRatio;\n return {\n value: value,\n point: point\n };\n }\n\n return {\n value: point,\n point: point\n };\n });\n points.sort(function (a, b) {\n return parseInt(a.value, 10) - parseInt(b.value, 10);\n });\n\n for (var i = 0; i < points.length; i += 1) {\n var _points$i = points[i],\n point = _points$i.point,\n value = _points$i.value;\n\n if (value <= currentWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\nexport default {\n addClasses: addClasses,\n removeClasses: removeClasses\n};","function prepareClasses(entries, prefix) {\n var resultClasses = [];\n entries.forEach(function (item) {\n if (typeof item === 'object') {\n Object.keys(item).forEach(function (classNames) {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n var swiper = this;\n var classNames = swiper.classNames,\n params = swiper.params,\n rtl = swiper.rtl,\n $el = swiper.$el,\n device = swiper.device,\n support = swiper.support; // prettier-ignore\n\n var suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': support.pointerEvents && !support.touch\n }, {\n 'free-mode': params.freeMode\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'multirow': params.slidesPerColumn > 1\n }, {\n 'multirow-column': params.slidesPerColumn > 1 && params.slidesPerColumnFill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }], params.containerModifierClass);\n classNames.push.apply(classNames, suffixes);\n $el.addClass([].concat(classNames).join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n var swiper = this;\n var $el = swiper.$el,\n classNames = swiper.classNames;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\nexport default {\n loadImage: loadImage,\n preloadImages: preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../../utils/dom';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n var window = getWindow();\n var image;\n\n function onReady() {\n if (callback) callback();\n }\n\n var isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n var swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { extend, bindModuleMethods } from '../../utils/utils';\nvar Fade = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = swiper.slides.eq(i);\n var offset = $slideEl[0].swiperSlideOffset;\n var tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n var ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl.css({\n opacity: slideOpacity\n }).transform(\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px)\");\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides,\n $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration);\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n slides.transitionEnd(function () {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n }\n};\nexport default {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n fadeEffect: _extends({}, Fade)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"fade\");\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n }\n }\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\nvar Navigation = {\n toggleEl: function toggleEl($el, disabled) {\n $el[disabled ? 'addClass' : 'removeClass'](this.params.navigation.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n },\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n var toggleEl = swiper.navigation.toggleEl;\n if (swiper.params.loop) return;\n var _swiper$navigation = swiper.navigation,\n $nextEl = _swiper$navigation.$nextEl,\n $prevEl = _swiper$navigation.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n toggleEl($prevEl, true);\n } else {\n toggleEl($prevEl, false);\n }\n\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n toggleEl($nextEl, true);\n } else {\n toggleEl($nextEl, false);\n }\n\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick: function onPrevClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick: function onNextClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n var $nextEl;\n var $prevEl;\n\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n\n if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n\n if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n extend(swiper.navigation, {\n $nextEl: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var _swiper$navigation2 = swiper.navigation,\n $nextEl = _swiper$navigation2.$nextEl,\n $prevEl = _swiper$navigation2.$prevEl;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n};\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n navigation: _extends({}, Navigation)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge(swiper) {\n swiper.navigation.update();\n },\n fromEdge: function fromEdge(swiper) {\n swiper.navigation.update();\n },\n destroy: function destroy(swiper) {\n swiper.navigation.destroy();\n },\n click: function click(swiper, e) {\n var _swiper$navigation3 = swiper.navigation,\n $nextEl = _swiper$navigation3.$nextEl,\n $prevEl = _swiper$navigation3.$prevEl;\n var targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n var isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n swiper.emit('navigationShow');\n } else {\n swiper.emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n }\n }\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods, classesToSelector } from '../../utils/utils';\nvar Pagination = {\n update: function update() {\n // Render || Update Pagination bullets/items\n var swiper = this;\n var rtl = swiper.rtl;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el; // Current/Total\n\n var current;\n var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n var bullets = swiper.pagination.bullets;\n var firstIndex;\n var lastIndex;\n var midIndex;\n\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + \"px\");\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;\n\n if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(params.bulletActiveClass + \" \" + params.bulletActiveClass + \"-next \" + params.bulletActiveClass + \"-next-next \" + params.bulletActiveClass + \"-prev \" + params.bulletActiveClass + \"-prev-prev \" + params.bulletActiveClass + \"-main\");\n\n if ($el.length > 1) {\n bullets.each(function (bullet) {\n var $bullet = $(bullet);\n var bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(params.bulletActiveClass + \"-main\");\n }\n\n if (bulletIndex === firstIndex) {\n $bullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n }\n\n if (bulletIndex === lastIndex) {\n $bullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n });\n } else {\n var $bullet = bullets.eq(current);\n var bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n var $firstDisplayedBullet = bullets.eq(firstIndex);\n var $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (var i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(params.bulletActiveClass + \"-main\");\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {\n bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + \"-main\");\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + \"-prev\");\n } else {\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n } else {\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n }\n\n if (params.dynamicBullets) {\n var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;\n var offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + \"px\");\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n var progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n var scale = (current + 1) / total;\n var scaleX = 1;\n var scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(\"translate3d(0,0,0) scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\").transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', $el[0]);\n } else {\n swiper.emit('paginationUpdate', $el[0]);\n }\n\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render: function render() {\n // Render Container\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n var paginationHTML = '';\n\n if (params.type === 'bullets') {\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (var i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += \"<\" + params.bulletElement + \" class=\\\"\" + params.bulletClass + \"\\\">\";\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = \"\" + ' / ' + (\"\");\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = \"\";\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el) return;\n var $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(\"\" + params.modifierClass + params.type + \"-dynamic\");\n swiper.pagination.dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n var index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n extend(swiper.pagination, {\n $el: $el,\n el: $el[0]\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n};\nexport default {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: function formatFractionCurrent(number) {\n return number;\n },\n formatFractionTotal: function formatFractionTotal(number) {\n return number;\n },\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-',\n // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable',\n // NEW\n lockClass: 'swiper-pagination-lock'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n pagination: _extends({\n dynamicBulletIndex: 0\n }, Pagination)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange: function activeIndexChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange: function snapIndexChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange: function slidesLengthChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange: function snapGridLengthChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy: function destroy(swiper) {\n swiper.pagination.destroy();\n },\n click: function click(swiper, e) {\n var targetEl = e.target;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n swiper.emit('paginationShow');\n } else {\n swiper.emit('paginationHide');\n }\n\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n }\n }\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { extend, isObject, bindModuleMethods } from '../../utils/utils';\nimport $ from '../../utils/dom';\nvar Thumbs = {\n init: function init() {\n var swiper = this;\n var thumbsParams = swiper.params.thumbs;\n if (swiper.thumbs.initialized) return false;\n swiper.thumbs.initialized = true;\n var SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false\n }));\n swiper.thumbs.swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n return true;\n },\n onThumbClick: function onThumbClick() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n var clickedIndex = thumbsSwiper.clickedIndex;\n var clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n var slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n var currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n var prevIndex = swiper.slides.eq(currentIndex).prevAll(\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\").eq(0).index();\n var nextIndex = swiper.slides.eq(currentIndex).nextAll(\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\").eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n },\n update: function update(initial) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n var currentThumbsIndex = thumbsSwiper.activeIndex;\n var newThumbsIndex;\n var direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(\"[data-swiper-slide-index=\\\"\" + swiper.realIndex + \"\\\"]\").eq(0).index();\n var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(\"[data-swiper-slide-index=\\\"\" + swiper.realIndex + \"\\\"]\").eq(0).index();\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;else newThumbsIndex = prevThumbsIndex;\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n } // Activate thumbs\n\n\n var thumbsToActivate = 1;\n var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (var i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex + i) + \"\\\"]\").addClass(thumbActiveClass);\n }\n } else {\n for (var _i = 0; _i < thumbsToActivate; _i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + _i).addClass(thumbActiveClass);\n }\n }\n }\n};\nexport default {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n thumbs: _extends({\n swiper: null,\n initialized: false\n }, Thumbs)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n var thumbs = swiper.params.thumbs;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange: function slideChange(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update: function update(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize: function resize(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate: function observerUpdate(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition: function setTransition(swiper, duration) {\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy: function beforeDestroy(swiper) {\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n }\n }\n};","/**\n * Dom7 3.0.0\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n var proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get: function get() {\n return proto;\n },\n set: function set(value) {\n proto.__proto__ = value;\n }\n });\n}\n\nvar Dom7 = /*#__PURE__*/function (_Array) {\n _inheritsLoose(Dom7, _Array);\n\n function Dom7(items) {\n var _this;\n\n _this = _Array.call.apply(_Array, [this].concat(items)) || this;\n makeReactive(_assertThisInitialized(_this));\n return _this;\n }\n\n return Dom7;\n}( /*#__PURE__*/_wrapNativeSuper(Array));\n\nfunction arrayFlat(arr) {\n if (arr === void 0) {\n arr = [];\n }\n\n var res = [];\n arr.forEach(function (el) {\n if (Array.isArray(el)) {\n res.push.apply(res, arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n var uniqueArray = [];\n\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, function (match, group) {\n return group.toUpperCase();\n });\n}\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n var a = [];\n var res = context.querySelectorAll(selector);\n\n for (var i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n var window = getWindow();\n var document = getDocument();\n var arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n var html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(' 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (var propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n var el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n var dataKey = el.getAttribute(\"data-\" + key);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n var el = this[0];\n if (!el) return undefined;\n var dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (var dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (var i = 0; i < el.attributes.length; i += 1) {\n var _attr = el.attributes[i];\n\n if (_attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(_attr.name.split('data-')[1])] = _attr.value;\n }\n }\n }\n\n for (var key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n var el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n var values = [];\n\n for (var i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (var _i = 0; _i < this.length; _i += 1) {\n var _el = this[_i];\n\n if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') {\n for (var j = 0; j < _el.options.length; j += 1) {\n _el.options[j].selected = value.indexOf(_el.options[j].value) >= 0;\n }\n } else {\n _el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? duration + \"ms\" : duration;\n }\n\n return this;\n}\n\nfunction on() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) return;\n var eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n var _parents = $(target).parents(); // eslint-disable-line\n\n\n for (var k = 0; k < _parents.length; k += 1) {\n if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n var events = eventType.split(' ');\n var j;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var _event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];\n\n el.dom7LiveListeners[_event].push({\n listener: listener,\n proxyListener: handleLiveEvent\n });\n\n el.addEventListener(_event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n var events = eventType.split(' ');\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = void 0;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once() {\n var dom = this;\n\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n var eventName = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventName = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n function onceHandler() {\n for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n eventArgs[_key8] = arguments[_key8];\n }\n\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger() {\n var window = getWindow();\n\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n\n var events = args[0].split(' ');\n var eventData = args[1];\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n\n if (window.CustomEvent) {\n var evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter(function (data, dataIndex) {\n return dataIndex > 0;\n });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n var window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles = this.styles();\n\n return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n var window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles2 = this.styles();\n\n return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === window ? window.scrollY : el.scrollTop;\n var scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n var window = getWindow();\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n var window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n var window = getWindow();\n var i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (var _prop in props) {\n this[i].style[_prop] = props[_prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach(function (el, index) {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n var result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n var child = this[0];\n var i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n var length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n var returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append() {\n var newChild;\n var document = getDocument();\n\n for (var k = 0; k < arguments.length; k += 1) {\n newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];\n\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n var document = getDocument();\n var i;\n var j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n var before = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (var j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n var after = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (var j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n var _next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_next).is(selector)) nextEls.push(_next);\n } else nextEls.push(_next);\n\n el = _next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n var _prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_prev).is(selector)) prevEls.push(_prev);\n } else prevEls.push(_prev);\n\n el = _prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var _parent = this[i].parentNode; // eslint-disable-line\n\n while (_parent) {\n if (selector) {\n if ($(_parent).is(selector)) parents.push(_parent);\n } else {\n parents.push(_parent);\n }\n\n _parent = _parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n var closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n var foundElements = [];\n\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n var children = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].children;\n\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add() {\n var dom = this;\n var i;\n var j;\n\n for (var _len10 = arguments.length, els = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n els[_key10] = arguments[_key10];\n }\n\n for (i = 0; i < els.length; i += 1) {\n var toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.nodeType === 1) {\n for (var j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\nfunction scrollTo() {\n var window = getWindow();\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var left = args[0],\n top = args[1],\n duration = args[2],\n easing = args[3],\n callback = args[4];\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n left = args[0];\n top = args[1];\n duration = args[2];\n callback = args[3];\n easing = args[4];\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n var el = this;\n var currentTop;\n var currentLeft;\n var maxTop;\n var maxLeft;\n var newTop;\n var newLeft;\n var scrollTop; // eslint-disable-line\n\n var scrollLeft; // eslint-disable-line\n\n var animateTop = top > 0 || top === 0;\n var animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n var startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time) {\n if (time === void 0) {\n time = new Date().getTime();\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n var done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var top = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n top = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var left = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n left = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n var window = getWindow();\n var els = this;\n var a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n easingProgress: function easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n stop: function stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done: function done(complete) {\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n var que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate: function animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n var elements = []; // Define & Cache Initials & Units\n\n a.elements.each(function (el, index) {\n var initialFullValue;\n var initialValue;\n var unit;\n var finalValue;\n var finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(function (prop) {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue: initialFullValue,\n initialValue: initialValue,\n unit: unit,\n finalValue: finalValue,\n finalFullValue: finalFullValue,\n currentValue: initialValue\n };\n });\n });\n var startTime = null;\n var time;\n var elementsDone = 0;\n var propsDone = 0;\n var done;\n var began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n var progress;\n var easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(function (element) {\n var el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(function (prop) {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n var _el$prop = el[prop],\n initialValue = _el$prop.initialValue,\n finalValue = _el$prop.finalValue,\n unit = _el$prop.unit;\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n var currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n var animateInstance;\n\n for (var i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n var els = this;\n\n for (var i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nvar noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'undefined') {\n for (var i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on.apply(this, [name].concat(args));\n }\n\n return eventHandler;\n}\n\nvar click = shortcut('click');\nvar blur = shortcut('blur');\nvar focus = shortcut('focus');\nvar focusin = shortcut('focusin');\nvar focusout = shortcut('focusout');\nvar keyup = shortcut('keyup');\nvar keydown = shortcut('keydown');\nvar keypress = shortcut('keypress');\nvar submit = shortcut('submit');\nvar change = shortcut('change');\nvar mousedown = shortcut('mousedown');\nvar mousemove = shortcut('mousemove');\nvar mouseup = shortcut('mouseup');\nvar mouseenter = shortcut('mouseenter');\nvar mouseleave = shortcut('mouseleave');\nvar mouseout = shortcut('mouseout');\nvar mouseover = shortcut('mouseover');\nvar touchstart = shortcut('touchstart');\nvar touchend = shortcut('touchend');\nvar touchmove = shortcut('touchmove');\nvar resize = shortcut('resize');\nvar scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nvar Methods = {\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n attr: attr,\n removeAttr: removeAttr,\n transform: transform,\n transition: transition,\n on: on,\n off: off,\n trigger: trigger,\n transitionEnd: transitionEnd,\n outerWidth: outerWidth,\n outerHeight: outerHeight,\n styles: styles,\n offset: offset,\n css: css,\n each: each,\n html: html,\n text: text,\n is: is,\n index: index,\n eq: eq,\n append: append,\n prepend: prepend,\n next: next,\n nextAll: nextAll,\n prev: prev,\n prevAll: prevAll,\n parent: parent,\n parents: parents,\n closest: closest,\n find: find,\n children: children,\n filter: filter,\n remove: remove\n};\nObject.keys(Methods).forEach(function (methodName) {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n var object = obj;\n Object.keys(object).forEach(function (key) {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n var window = getWindow();\n var style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n var window = getWindow();\n var matrix;\n var curTransform;\n var transformMatrix;\n var curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) {\n return a.replace(',', '.');\n }).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction extend() {\n var to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n var noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (var i = 1; i < arguments.length; i += 1) {\n var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null) {\n var keysArray = Object.keys(Object(nextSource)).filter(function (key) {\n return noExtend.indexOf(key) < 0;\n });\n\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction bindModuleMethods(instance, obj) {\n Object.keys(obj).forEach(function (key) {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach(function (subKey) {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n\n instance[key] = obj[key];\n });\n}\n\nfunction classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return \".\" + classes.trim().replace(/([\\.:\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.');\n}\n\nexport { deleteProps, nextTick, now, getTranslate, isObject, extend, bindModuleMethods, getComputedStyle, classesToSelector };","!function(t,o){\"function\"==typeof define&&define.amd?define(o):\"object\"==typeof exports?module.exports=o():t.tingle=o()}(this,function(){var o=!1;function t(t){this.opts=function(){for(var t=1;t',this.modalCloseBtnLabel=document.createElement(\"span\"),this.modalCloseBtnLabel.classList.add(\"tingle-modal__closeLabel\"),this.modalCloseBtnLabel.innerHTML=this.opts.closeLabel,this.modalCloseBtn.appendChild(this.modalCloseBtnIcon),this.modalCloseBtn.appendChild(this.modalCloseBtnLabel));this.modalBox=document.createElement(\"div\"),this.modalBox.classList.add(\"tingle-modal-box\"),this.modalBoxContent=document.createElement(\"div\"),this.modalBoxContent.classList.add(\"tingle-modal-box__content\"),this.modalBox.appendChild(this.modalBoxContent),-1!==this.opts.closeMethods.indexOf(\"button\")&&this.modal.appendChild(this.modalCloseBtn);this.modal.appendChild(this.modalBox)}.call(this),function(){this._events={clickCloseBtn:this.close.bind(this),clickOverlay:function(t){var o=this.modal.offsetWidth-this.modal.clientWidth,e=t.clientX>=this.modal.offsetWidth-15,s=this.modal.scrollHeight!==this.modal.offsetHeight;if(\"MacIntel\"===navigator.platform&&0==o&&e&&s)return;-1!==this.opts.closeMethods.indexOf(\"overlay\")&&!function(t,o){for(;(t=t.parentElement)&&!t.classList.contains(o););return t}(t.target,\"tingle-modal\")&&t.clientX 0) {\n scaleX = rect.width / offsetWidth || 1;\n }\n\n if (offsetHeight > 0) {\n scaleY = rect.height / offsetHeight || 1;\n }\n }\n\n return {\n width: round(rect.width / scaleX),\n height: round(rect.height / scaleY),\n top: round(rect.top / scaleY),\n right: round(rect.right / scaleX),\n bottom: round(rect.bottom / scaleY),\n left: round(rect.left / scaleX),\n x: round(rect.left / scaleX),\n y: round(rect.top / scaleY)\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = rect.width / element.offsetWidth || 1;\n var scaleY = rect.height / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(round(x * dpr) / dpr) || 0,\n y: round(round(y * dpr) / dpr) || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets;\n\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom; // $FlowFixMe[prop-missing]\n\n y -= offsetParent[heightProp] - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right; // $FlowFixMe[prop-missing]\n\n x -= offsetParent[widthProp] - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n var state = _ref4.state,\n options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis || checkAltAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n if (checkMainAxis) {\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","/**!\n* tippy.js v6.3.1\n* (c) 2017-2021 atomiks\n* MIT License\n*/\nimport { createPopper, applyStyles } from '@popperjs/core';\n\nvar ROUND_ARROW = '';\nvar BOX_CLASS = \"tippy-box\";\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar SVG_ARROW_CLASS = \"tippy-svg-arrow\";\nvar TOUCH_OPTIONS = {\n passive: true,\n capture: true\n};\n\nfunction hasOwnProperty(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\nfunction getValueAtIndexOrReturn(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;\n }\n\n return value;\n}\nfunction isType(value, type) {\n var str = {}.toString.call(value);\n return str.indexOf('[object') === 0 && str.indexOf(type + \"]\") > -1;\n}\nfunction invokeWithArgsOrReturn(value, args) {\n return typeof value === 'function' ? value.apply(void 0, args) : value;\n}\nfunction debounce(fn, ms) {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n\n var timeout;\n return function (arg) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn(arg);\n }, ms);\n };\n}\nfunction removeProperties(obj, keys) {\n var clone = Object.assign({}, obj);\n keys.forEach(function (key) {\n delete clone[key];\n });\n return clone;\n}\nfunction splitBySpaces(value) {\n return value.split(/\\s+/).filter(Boolean);\n}\nfunction normalizeToArray(value) {\n return [].concat(value);\n}\nfunction pushIfUnique(arr, value) {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\nfunction unique(arr) {\n return arr.filter(function (item, index) {\n return arr.indexOf(item) === index;\n });\n}\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\nfunction removeUndefinedProps(obj) {\n return Object.keys(obj).reduce(function (acc, key) {\n if (obj[key] !== undefined) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nfunction div() {\n return document.createElement('div');\n}\nfunction isElement(value) {\n return ['Element', 'Fragment'].some(function (type) {\n return isType(value, type);\n });\n}\nfunction isNodeList(value) {\n return isType(value, 'NodeList');\n}\nfunction isMouseEvent(value) {\n return isType(value, 'MouseEvent');\n}\nfunction isReferenceElement(value) {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\nfunction getArrayOfElements(value) {\n if (isElement(value)) {\n return [value];\n }\n\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return arrayFrom(document.querySelectorAll(value));\n}\nfunction setTransitionDuration(els, value) {\n els.forEach(function (el) {\n if (el) {\n el.style.transitionDuration = value + \"ms\";\n }\n });\n}\nfunction setVisibilityState(els, state) {\n els.forEach(function (el) {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\nfunction getOwnerDocument(elementOrElements) {\n var _element$ownerDocumen;\n\n var _normalizeToArray = normalizeToArray(elementOrElements),\n element = _normalizeToArray[0]; // Elements created via a