{"version":3,"sources":["../../../../../../node_modules/core-js/internals/global.js","../../../../../../node_modules/core-js/internals/dom-iterables.js","../../../../../../node_modules/core-js/internals/is-callable.js","../../../../../../node_modules/core-js/internals/is-object.js","../../../../../../node_modules/core-js/internals/document-create-element.js","../../../../../../node_modules/core-js/internals/dom-token-list-prototype.js","../../../../../../node_modules/core-js/internals/function-uncurry-this.js","../../../../../../node_modules/core-js/internals/try-to-string.js","../../../../../../node_modules/core-js/internals/a-callable.js","../../../../../../node_modules/core-js/internals/function-bind-context.js","../../../../../../node_modules/core-js/internals/fails.js","../../../../../../node_modules/core-js/internals/classof-raw.js","../../../../../../node_modules/core-js/internals/indexed-object.js","../../../../../../node_modules/core-js/internals/require-object-coercible.js","../../../../../../node_modules/core-js/internals/to-object.js","../../../../../../node_modules/core-js/internals/to-integer-or-infinity.js","../../../../../../node_modules/core-js/internals/to-length.js","../../../../../../node_modules/core-js/internals/length-of-array-like.js","../../../../../../node_modules/core-js/internals/is-array.js","../../../../../../node_modules/core-js/internals/set-global.js","../../../../../../node_modules/core-js/internals/shared-store.js","../../../../../../node_modules/core-js/internals/shared.js","../../../../../../node_modules/core-js/internals/has-own-property.js","../../../../../../node_modules/core-js/internals/engine-v8-version.js","../../../../../../node_modules/core-js/internals/uid.js","../../../../../../node_modules/core-js/internals/get-built-in.js","../../../../../../node_modules/core-js/internals/engine-user-agent.js","../../../../../../node_modules/core-js/internals/native-symbol.js","../../../../../../node_modules/core-js/internals/use-symbol-as-uid.js","../../../../../../node_modules/core-js/internals/well-known-symbol.js","../../../../../../node_modules/core-js/internals/to-string-tag-support.js","../../../../../../node_modules/core-js/internals/classof.js","../../../../../../node_modules/core-js/internals/inspect-source.js","../../../../../../node_modules/core-js/internals/is-constructor.js","../../../../../../node_modules/core-js/internals/array-species-constructor.js","../../../../../../node_modules/core-js/internals/array-species-create.js","../../../../../../node_modules/core-js/internals/array-iteration.js","../../../../../../node_modules/core-js/internals/array-method-is-strict.js","../../../../../../node_modules/core-js/internals/array-for-each.js","../../../../../../node_modules/core-js/internals/descriptors.js","../../../../../../node_modules/core-js/internals/ie8-dom-define.js","../../../../../../node_modules/core-js/internals/an-object.js","../../../../../../node_modules/core-js/internals/function-call.js","../../../../../../node_modules/core-js/internals/object-is-prototype-of.js","../../../../../../node_modules/core-js/internals/is-symbol.js","../../../../../../node_modules/core-js/internals/get-method.js","../../../../../../node_modules/core-js/internals/ordinary-to-primitive.js","../../../../../../node_modules/core-js/internals/to-primitive.js","../../../../../../node_modules/core-js/internals/to-property-key.js","../../../../../../node_modules/core-js/internals/object-define-property.js","../../../../../../node_modules/core-js/internals/create-property-descriptor.js","../../../../../../node_modules/core-js/internals/create-non-enumerable-property.js","../../../../../../node_modules/core-js/modules/web.dom-collections.for-each.js","../../../../../../node_modules/mdn-polyfills/NodeList.prototype.forEach.js","../../../../../../node_modules/mdn-polyfills/Element.prototype.matches.js","../../../../../../node_modules/mdn-polyfills/Element.prototype.closest.js","../../../../../../node_modules/mdn-polyfills/CustomEvent.js","../../../../../../node_modules/mdn-polyfills/Node.prototype.prepend.js","../../../../../../node_modules/mdn-polyfills/Node.prototype.append.js","../../../../../../node_modules/mdn-polyfills/Node.prototype.remove.js","../../../../../../node_modules/mdn-polyfills/Object.assign.js","../../../../../../node_modules/core-js/internals/is-forced.js","../../../../../../node_modules/core-js/internals/internal-state.js","../../../../../../node_modules/core-js/internals/native-weak-map.js","../../../../../../node_modules/core-js/internals/shared-key.js","../../../../../../node_modules/core-js/internals/hidden-keys.js","../../../../../../node_modules/core-js/internals/function-name.js","../../../../../../node_modules/core-js/internals/redefine.js","../../../../../../node_modules/core-js/internals/a-possible-prototype.js","../../../../../../node_modules/core-js/internals/object-set-prototype-of.js","../../../../../../node_modules/core-js/internals/inherit-if-required.js","../../../../../../node_modules/core-js/internals/to-indexed-object.js","../../../../../../node_modules/core-js/internals/to-absolute-index.js","../../../../../../node_modules/core-js/internals/array-includes.js","../../../../../../node_modules/core-js/internals/object-keys-internal.js","../../../../../../node_modules/core-js/internals/enum-bug-keys.js","../../../../../../node_modules/core-js/internals/object-get-own-property-names.js","../../../../../../node_modules/core-js/internals/object-property-is-enumerable.js","../../../../../../node_modules/core-js/internals/object-get-own-property-descriptor.js","../../../../../../node_modules/core-js/internals/this-number-value.js","../../../../../../node_modules/core-js/internals/to-string.js","../../../../../../node_modules/core-js/internals/whitespaces.js","../../../../../../node_modules/core-js/internals/string-trim.js","../../../../../../node_modules/core-js/modules/es.number.constructor.js","partials/stepup-stepdown-polyfill.js","../../../../../../node_modules/classlist-polyfill/src/index.js","../../../../../../node_modules/focus-within-polyfill/dist/focus-within-polyfill.js","../../../../../../node_modules/object-fit-images/dist/ofi.es-modules.js","../../../../../../node_modules/smoothscroll-polyfill/dist/smoothscroll.js","../../../../../../node_modules/@glidejs/glide/dist/glide.esm.js","../../../../../../node_modules/core-js/internals/object-get-own-property-symbols.js","../../../../../../node_modules/core-js/internals/own-keys.js","../../../../../../node_modules/core-js/internals/copy-constructor-properties.js","../../../../../../node_modules/core-js/internals/export.js","../../../../../../node_modules/core-js/internals/object-keys.js","../../../../../../node_modules/core-js/internals/object-assign.js","../../../../../../node_modules/core-js/modules/es.object.assign.js","../../../../../../node_modules/core-js/internals/array-method-has-species-support.js","../../../../../../node_modules/core-js/modules/es.array.filter.js","../../../../../../node_modules/core-js/internals/regexp-flags.js","../../../../../../node_modules/core-js/internals/regexp-sticky-helpers.js","../../../../../../node_modules/core-js/internals/object-define-properties.js","../../../../../../node_modules/core-js/internals/object-create.js","../../../../../../node_modules/core-js/internals/html.js","../../../../../../node_modules/core-js/internals/regexp-unsupported-dot-all.js","../../../../../../node_modules/core-js/internals/regexp-unsupported-ncg.js","../../../../../../node_modules/core-js/internals/regexp-exec.js","../../../../../../node_modules/core-js/modules/es.regexp.exec.js","../../../../../../node_modules/core-js/internals/function-apply.js","../../../../../../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","../../../../../../node_modules/core-js/internals/string-multibyte.js","../../../../../../node_modules/core-js/internals/advance-string-index.js","../../../../../../node_modules/core-js/internals/get-substitution.js","../../../../../../node_modules/core-js/internals/regexp-exec-abstract.js","../../../../../../node_modules/core-js/modules/es.string.replace.js","../../../../../../node_modules/core-js/internals/is-regexp.js","../../../../../../node_modules/core-js/internals/set-species.js","../../../../../../node_modules/core-js/modules/es.regexp.constructor.js","../../../../../../node_modules/core-js/modules/es.regexp.to-string.js","../../../../../../node_modules/core-js/modules/es.array.index-of.js","../../../../../../node_modules/core-js/internals/create-property.js","../../../../../../node_modules/core-js/internals/array-slice.js","../../../../../../node_modules/core-js/modules/es.array.slice.js","../../../../../../node_modules/vanilla-lazyload/dist/lazyload.esm.js","partials/toggle-search-form.js","../../../../../../node_modules/core-js/internals/a-constructor.js","../../../../../../node_modules/core-js/internals/species-constructor.js","../../../../../../node_modules/core-js/modules/es.string.split.js","../../../../../../node_modules/core-js/internals/object-to-string.js","../../../../../../node_modules/core-js/modules/es.object.to-string.js","partials/functions.js","partials/scroll-interval.js","partials/pretty-file-input.js","partials/placeholder-label.js","partials/target-blank-security.js","../../../../../../node_modules/core-js/internals/string-trim-forced.js","../../../../../../node_modules/core-js/modules/es.string.trim.js","../../../../../../node_modules/core-js/modules/es.array.concat.js","../../../../../../node_modules/core-js/internals/iterator-close.js","../../../../../../node_modules/core-js/internals/call-with-safe-iteration-closing.js","../../../../../../node_modules/core-js/internals/iterators.js","../../../../../../node_modules/core-js/internals/is-array-iterator-method.js","../../../../../../node_modules/core-js/internals/get-iterator-method.js","../../../../../../node_modules/core-js/internals/get-iterator.js","../../../../../../node_modules/core-js/internals/array-from.js","../../../../../../node_modules/core-js/internals/check-correctness-of-iteration.js","../../../../../../node_modules/core-js/modules/es.array.from.js","../../../../../../node_modules/core-js/internals/correct-prototype-getter.js","../../../../../../node_modules/core-js/internals/iterators-core.js","../../../../../../node_modules/core-js/internals/object-get-prototype-of.js","../../../../../../node_modules/core-js/internals/set-to-string-tag.js","../../../../../../node_modules/core-js/internals/create-iterator-constructor.js","../../../../../../node_modules/core-js/internals/define-iterator.js","../../../../../../node_modules/core-js/modules/es.string.iterator.js","../../../../../../node_modules/core-js/modules/es.string.match.js","../../../../../../node_modules/glightbox/dist/js/glightbox.js","../../../../../../node_modules/body-scroll-lock/lib/bodyScrollLock.es6.js","../../../../../../node_modules/core-js/internals/add-to-unscopables.js","../../../../../../node_modules/core-js/modules/es.array.includes.js","../../../../../../node_modules/core-js/internals/not-a-regexp.js","../../../../../../node_modules/core-js/internals/correct-is-regexp-logic.js","../../../../../../node_modules/core-js/modules/es.string.includes.js","partials/form-validation.js","partials/smooth-scroller.js","partials/glightbox-nubee.js","../../../../../../node_modules/core-js/internals/number-parse-float.js","../../../../../../node_modules/core-js/modules/es.parse-float.js","../../../../../../node_modules/core-js/modules/es.object.keys.js","../../../../../../node_modules/tiny-slider/src/helpers/raf.js","../../../../../../node_modules/tiny-slider/src/helpers/caf.js","../../../../../../node_modules/tiny-slider/src/helpers/extend.js","../../../../../../node_modules/tiny-slider/src/helpers/checkStorageValue.js","../../../../../../node_modules/tiny-slider/src/helpers/setLocalStorage.js","../../../../../../node_modules/tiny-slider/src/helpers/getBody.js","../../../../../../node_modules/tiny-slider/src/helpers/docElement.js","../../../../../../node_modules/tiny-slider/src/helpers/setFakeBody.js","../../../../../../node_modules/tiny-slider/src/helpers/resetFakeBody.js","../../../../../../node_modules/tiny-slider/src/helpers/addCSSRule.js","../../../../../../node_modules/tiny-slider/src/helpers/getCssRulesLength.js","../../../../../../node_modules/tiny-slider/src/helpers/forEach.js","../../../../../../node_modules/tiny-slider/src/helpers/classListSupport.js","../../../../../../node_modules/tiny-slider/src/helpers/hasClass.js","../../../../../../node_modules/tiny-slider/src/helpers/addClass.js","../../../../../../node_modules/tiny-slider/src/helpers/removeClass.js","../../../../../../node_modules/tiny-slider/src/helpers/hasAttr.js","../../../../../../node_modules/tiny-slider/src/helpers/getAttr.js","../../../../../../node_modules/tiny-slider/src/helpers/isNodeList.js","../../../../../../node_modules/tiny-slider/src/helpers/setAttrs.js","../../../../../../node_modules/tiny-slider/src/helpers/removeAttrs.js","../../../../../../node_modules/tiny-slider/src/helpers/arrayFromNodeList.js","../../../../../../node_modules/tiny-slider/src/helpers/hideElement.js","../../../../../../node_modules/tiny-slider/src/helpers/showElement.js","../../../../../../node_modules/tiny-slider/src/helpers/isVisible.js","../../../../../../node_modules/tiny-slider/src/helpers/whichProperty.js","../../../../../../node_modules/tiny-slider/src/helpers/getEndProperty.js","../../../../../../node_modules/tiny-slider/src/helpers/passiveOption.js","../../../../../../node_modules/tiny-slider/src/helpers/addEvents.js","../../../../../../node_modules/tiny-slider/src/helpers/removeEvents.js","../../../../../../node_modules/tiny-slider/src/helpers/events.js","../../../../../../node_modules/tiny-slider/src/tiny-slider.module.js","../../../../../../node_modules/tiny-slider/src/helpers/calc.js","../../../../../../node_modules/tiny-slider/src/helpers/percentageLayout.js","../../../../../../node_modules/tiny-slider/src/helpers/mediaquerySupport.js","../../../../../../node_modules/tiny-slider/src/helpers/has3DTransforms.js","../../../../../../node_modules/tiny-slider/src/helpers/createStyleSheet.js","../../../../../../node_modules/tiny-slider/src/helpers/getSlideId.js","../../../../../../node_modules/tiny-slider/src/helpers/jsTransform.js","../../../../../../node_modules/tiny-slider/src/helpers/removeCSSRule.js","../../../../../../node_modules/tiny-slider/src/helpers/toDegree.js","../../../../../../node_modules/tiny-slider/src/helpers/getTouchDirection.js","../../../../../../node_modules/core-js/modules/es.array.map.js","partials/google-map.js","partials/mobile-menu.js","partials/img-check.js","../../../../../../node_modules/regenerator-runtime/runtime.js","../../../../../../node_modules/core-js/modules/es.array.iterator.js","../../../../../../node_modules/core-js/modules/web.dom-collections.iterator.js","../../../../../../node_modules/core-js/internals/native-url.js","../../../../../../node_modules/core-js/internals/an-instance.js","../../../../../../node_modules/core-js/internals/string-punycode-to-ascii.js","../../../../../../node_modules/core-js/internals/redefine-all.js","../../../../../../node_modules/core-js/internals/array-sort.js","../../../../../../node_modules/core-js/modules/web.url-search-params.js","../../../../../../node_modules/core-js/modules/web.url.js","../../../../../../node_modules/core-js/internals/native-promise-constructor.js","../../../../../../node_modules/core-js/internals/task.js","../../../../../../node_modules/core-js/internals/iterate.js","../../../../../../node_modules/core-js/internals/engine-is-ios.js","../../../../../../node_modules/core-js/internals/engine-is-node.js","../../../../../../node_modules/core-js/internals/microtask.js","../../../../../../node_modules/core-js/internals/engine-is-ios-pebble.js","../../../../../../node_modules/core-js/internals/engine-is-webos-webkit.js","../../../../../../node_modules/core-js/internals/new-promise-capability.js","../../../../../../node_modules/core-js/internals/promise-resolve.js","../../../../../../node_modules/core-js/modules/es.promise.js","../../../../../../node_modules/core-js/internals/host-report-errors.js","../../../../../../node_modules/core-js/internals/engine-is-browser.js","../../../../../../node_modules/core-js/internals/perform.js","partials/infinite-scroll-simple.js","partials/loading-button.js","../../../../../../node_modules/core-js/internals/engine-ff-version.js","scripts.js","../../../../../../node_modules/core-js/internals/engine-is-ie-or-edge.js","../../../../../../node_modules/core-js/internals/engine-webkit-version.js","../../../../../../node_modules/core-js/modules/es.array.sort.js","partials/fake-sticky.js","partials/multi-action-form.js","partials/scroll-class-agent.js","partials/global-variables.js","partials/tiny-slider-nubee.js"],"names":["check","it","Math","global","globalThis","window","self","this","Function","domIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","isCallable","argument","require$$0","isObject","require$$1","document","EXISTS","createElement","documentCreateElement","classList","DOMTokenListPrototype","constructor","prototype","domTokenListPrototype","Object","undefined","FunctionPrototype","bind","call","callBind","functionUncurryThis","fn","apply","arguments","String","tryToString","error","require$$2","TypeError","aCallable","functionBindContext","that","fails","exec","uncurryThis","toString","stringSlice","slice","classofRaw","classof","require$$3","split","indexedObject","propertyIsEnumerable","requireObjectCoercible","toObject","ceil","floor","toIntegerOrInfinity","number","min","toLength","lengthOfArrayLike","obj","length","isArray","Array","defineProperty","setGlobal","key","value","configurable","writable","SHARED","sharedStore","store","sharedModule","push","version","mode","copyright","match","hasOwnProperty","hasOwnProperty_1","hasOwn","id","postfix","random","uid","aFunction","getBuiltIn","namespace","method","engineUserAgent","userAgent","process","Deno","versions","v8","engineV8Version","V8_VERSION","nativeSymbol","getOwnPropertySymbols","symbol","Symbol","sham","useSymbolAsUid","iterator","shared","NATIVE_SYMBOL","require$$4","USE_SYMBOL_AS_UID","require$$5","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","wellKnownSymbol","name","description","test","toStringTagSupport","TO_STRING_TAG_SUPPORT","TO_STRING_TAG","CORRECT_ARGUMENTS","O","tag","result","tryGet","callee","functionToString","inspectSource","noop","empty","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructor","called","SPECIES","arraySpeciesConstructor","originalArray","C","arraySpeciesCreate","IndexedObject","createMethod","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","$this","callbackfn","specificCreate","boundFunction","index","create","target","arrayIteration","forEach","map","filter","some","every","find","findIndex","filterReject","arrayMethodIsStrict","METHOD_NAME","$forEach","arrayForEach","descriptors","get","ie8DomDefine","a","anObject","functionCall","objectIsPrototypeOf","isPrototypeOf","isSymbol","$Symbol","getMethod","V","P","func","ordinaryToPrimitive","input","pref","val","valueOf","require$$6","TO_PRIMITIVE","toPrimitive","exoticToPrim","toPropertyKey","DESCRIPTORS","IE8_DOM_DEFINE","$defineProperty","Attributes","createPropertyDescriptor","bitmap","enumerable","definePropertyModule","createNonEnumerableProperty","object","f","DOMIterables","handlePrototype","CollectionPrototype","COLLECTION_NAME","o","t","i","Element","matches","msMatchesSelector","webkitMatchesSelector","closest","e","parentElement","parentNode","nodeType","bubbles","cancelable","detail","n","createEvent","initCustomEvent","CustomEvent","Event","createDocumentFragment","Node","appendChild","createTextNode","insertBefore","firstChild","Document","DocumentFragment","removeChild","CharacterData","DocumentType","assign","r","set","has","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","isForced_1","WeakMap","nativeWeakMap","keys","sharedKey","hiddenKeys","NATIVE_WEAK_MAP","require$$7","require$$8","OBJECT_ALREADY_INITIALIZED","state","wmget","wmhas","wmset","metadata","facade","STATE","internalState","enforce","getterFor","type","getDescriptor","getOwnPropertyDescriptor","functionName","PROPER","CONFIGURABLE","InternalStateModule","CONFIGURABLE_FUNCTION_NAME","getInternalState","enforceInternalState","TEMPLATE","redefineModule","options","unsafe","simple","noTargetGet","source","join","aPossiblePrototype","objectSetPrototypeOf","setPrototypeOf","setter","CORRECT_SETTER","proto","__proto__","inheritIfRequired","dummy","Wrapper","NewTarget","NewTargetPrototype","toIndexedObject","max","toAbsoluteIndex","integer","IS_INCLUDES","el","fromIndex","arrayIncludes","includes","indexOf","objectKeysInternal","names","enumBugKeys","internalObjectKeys","concat","getOwnPropertyNames","$propertyIsEnumerable","NASHORN_BUG","descriptor","propertyIsEnumerableModule","$getOwnPropertyDescriptor","thisNumberValue","whitespaces","whitespace","ltrim","RegExp","rtrim","stringTrim","start","end","trim","redefine","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","NUMBER","NativeNumber","NumberPrototype","arraySlice","charCodeAt","toNumeric","primValue","toNumber","first","third","radix","maxCode","digits","code","NaN","parseInt","NumberWrapper","j","testInput","stepUp","HTMLInputElement","stepChange","nbSteps","multiplier","getAttribute","step","Number","newVal","stepDown","createElementNS","view","classListProp","elemCtrProto","objCtr","strTrim","arrIndexOf","item","len","DOMEx","message","DOMException","checkTokenAndGetIndex","token","ClassList","elem","trimmedClasses","classes","_updateClassName","setAttribute","classListProto","classListGetter","Error","contains","add","tokens","l","updated","remove","splice","toggle","force","classListPropDesc","ex","__defineGetter__","testElement","original","_toggle","b","host","defaultView","c","h","querySelector","requestAnimationFrame","d","charAt","removeAttribute","g","addEventListener","body","k","OFI","propRegex","testImg","Image","style","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","nativeSetAttribute","autoModeEnabled","setPlaceholder","img","width","height","placeholder","onImageReady","callback","naturalWidth","setTimeout","fixOne","parsed","getComputedStyle","fontFamily","props","getStyle","ofi","skipTest","srcset","src","naturalHeight","prop","ss","keepSrcUsable","err","console","warn","picturefill","pf","_","ns","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","backgroundPosition","backgroundRepeat","backgroundOrigin","backgroundSize","fix","imgs","opts","startAutoMode","getElementsByTagName","querySelectorAll","tagName","watchMQ","getOfiImageMaybe","HTMLImageElement","hijackAttributes","exports","polyfill","w","documentElement","__forceSmoothScrollPolyfill__","HTMLElement","scroll","scrollTo","scrollBy","elementScroll","scrollElement","scrollIntoView","now","performance","Date","ROUNDING_TOLERANCE","isMicrosoftBrowser","navigator","shouldBailOut","smoothScroll","left","scrollX","pageXOffset","top","scrollY","pageYOffset","scrollLeft","scrollTop","SyntaxError","behavior","scrollableParent","findScrollableParent","parentRects","getBoundingClientRect","clientRects","position","x","y","firstArg","hasScrollableSpace","axis","clientHeight","scrollHeight","clientWidth","scrollWidth","canOverflow","overflowValue","isScrollable","isScrollableY","isScrollableX","context","currentX","currentY","elapsed","startTime","cos","PI","startX","startY","scrollable","defaults","startAt","perView","focusAt","gap","autoplay","hoverpause","keyboard","bound","swipeThreshold","dragThreshold","perTouch","touchRatio","touchAngle","animationDuration","rewind","rewindDuration","animationTimingFunc","throttle","direction","peek","breakpoints","ltr","rtl","slider","carousel","swipeable","dragging","cloneSlide","activeNav","activeSlide","disabledArrow","msg","_typeof","classCallCheck","instance","Constructor","createClass","defineProperties","protoProps","staticProps","_extends","property","receiver","desc","parent","getPrototypeOf","getter","possibleConstructorReturn","ReferenceError","toInt","isString","isFunction","isUndefined","mount","glide","extensions","events","components","_name","define","definition","mergeOptions","settings","EventsBus","hop","event","handler","on","emit","Glide","selector","_c","_t","_e","disabled","transformers","pattern","Run","make","distance","Transition","disable","Move","interval","_o","_i","_d","status","getTime","wait","timeout","args","previous","later","leading","throttled","at","remaining","clearTimeout","trailing","cancel","MARGIN_TYPE","siblings","node","matched","nextSibling","exist","TRACK_SELECTOR","EventsBinder","listeners","closure","capture","removeEventListener","VALID_DIRECTIONS","FLIPED_MOVEMENTS","Rtl","Components","modify","translate","Direction","is","Gap","Gaps","Grow","Clones","grow","Peeking","Peek","before","Focusing","Sizes","slideWidth","supportsPassive","supportsPassive$1","START_EVENTS","MOVE_EVENTS","END_EVENTS","MOUSE_EVENTS","sortBreakpoints","points","sort","reduce","COMPONENTS","Html","root","track","slides","wrapper","children","slide","_r","Translate","Events","transform","TRANSFORMERS","mutate","transformer","mutator","isType","isOffset","after","movement","compose","duration","transition","enable","offset","resolve","addClass","removeClass","_v","setupSlides","setupWrapper","dimention","wrapperSize","offsetWidth","reductor","marginLeft","marginRight","_this","items","collect","_Glide$settings","peekIncrementer","part","clone","cloneNode","_clone","unshift","append","_Components$Html","half","prepend","reverse","_i2","_i3","Resize","Binder","unbind","off","destroy","Build","typeClass","activeClass","sibling","removeClasses","move","calculate","isStart","isEnd","steps","countableSteps","_m","substr","Swipe","swipeSin","swipeStartX","swipeStartY","passive","bindSwipeStart","swipe","touches","pageX","pageY","bindSwipeMove","bindSwipeEnd","subExSx","subEySy","powEX","abs","powEY","swipeHypotenuse","sqrt","swipeCathetus","asin","stopPropagation","parseFloat","threshold","swipeDistance","swipeDeg","round","unbindSwipeMove","unbindSwipeEnd","unbindSwipeStart","_this2","_this3","changedTouches","Images","dragstart","preventDefault","Anchors","detached","prevented","_a","click","detach","draggable","attach","Controls","_n","addBindings","setActive","removeActive","controls","removeBindings","elements","currentTarget","Keyboard","press","keyCode","Autoplay","setInterval","stop","time","clearInterval","Breakpoints","matchMedia","point","Glide$1","_Core","Glide$$1","subClass","superClass","inherits","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","ownKeys","getOwnPropertyDescriptorModule","copyConstructorProperties","_export","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","forced","objectKeys","$assign","objectAssign","A","B","alphabet","chr","T","argumentsLength","S","arrayMethodHasSpeciesSupport","array","foo","Boolean","$","$filter","regexpFlags","ignoreCase","multiline","dotAll","unicode","sticky","$RegExp","re","lastIndex","activeXDocument","objectDefineProperties","Properties","html","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","domain","display","contentWindow","open","F","objectCreate","regexpUnsupportedDotAll","flags","regexpUnsupportedNcg","groups","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","group","str","raw","charsAdded","strCopy","regexpExec","functionApply","Reflect","RegExpPrototype","fixRegexpWellKnownSymbolLogic","KEY","FORCED","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","uncurriedNativeRegExpMethod","methods","nativeMethod","regexp","arg2","forceStringMethod","uncurriedNativeMethod","$exec","done","CONVERT_TO_STRING","pos","second","size","stringMultibyte","codeAt","advanceStringIndex","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","regexpExecAbstract","R","fixRegExpWellKnownSymbolLogic","getSubstitution","captures","namedCaptures","tailPos","m","symbols","ch","regExpExec","REPLACE","stringIndexOf","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","maybeCallNative","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","rx","res","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","replacerArgs","MATCH","isRegexp","isRegExp","setSpecies","CONSTRUCTOR_NAME","regExpFlags","require$$16","require$$17","require$$19","require$$20","require$$18","NativeRegExp","getFlags","IS_NCG","CORRECT_NEW","BASE_FORCED","RegExpWrapper","rawFlags","handled","thisIsRegExp","patternIsRegExp","flagsAreUndefined","rawPattern","named","brackets","ncg","groupid","groupname","handleNCG","handleDotAll","proxy","PROPER_FUNCTION_NAME","$toString","TO_STRING","n$ToString","NOT_GENERIC","INCORRECT_NAME","p","rf","$IndexOf","un$IndexOf","NEGATIVE_ZERO","STRICT_METHOD","searchElement","createProperty","propertyKey","un$Slice","HAS_SPECIES_SUPPORT","fin","runningOnBrowser","isBot","supportsIntersectionObserver","supportsClassList","defaultSettings","elements_selector","container","thresholds","data_src","data_srcset","data_sizes","data_bg","data_poster","class_loading","class_loaded","class_error","load_delay","auto_unobserve","callback_enter","callback_exit","callback_reveal","callback_loaded","callback_error","callback_finish","use_native","createInstance","classObj","eventString","dispatchEvent","dataPrefix","processedDataName","timeoutDataName","trueString","getData","element","attribute","setData","attrName","getWasProcessedData","setTimeoutData","getTimeoutData","getSourceTags","parentTag","childTag","sourceTags","setAttributeIfValue","setImageAttributes","setSourcesFunctions","IMG","sourceTag","IFRAME","VIDEO","load","setSources","elementToPurge","_settings","setSourcesFunction","loadingCount","_elements","srcDataValue","bgDataValue","setSourcesBgImage","className","safeCallback","arg1","arg3","genericLoadEventName","mediaLoadEventName","errorEventName","eventName","removeEventListeners","loadHandler","errorHandler","eventHandler","success","addOneShotEventListeners","addEventListeners","managedTags","revealAndUnobserve","observer","_observer","revealElement","unobserve","setWasProcessedData","cancelDelayLoad","timeoutId","onEnter","entry","loadDelay","delayLoad","setObserver","IntersectionObserver","entries","isIntersecting","intersectionRatio","onExit","rootMargin","nativeLazyTags","nodeSetToArray","nodeSet","getElements","purgeProcessedElements","queryElements","retryLazyLoad","errorElements","resetWasProcessedData","update","LazyLoad","customSettings","getInstanceSettings","toggleSearchForm","sourceEvent","button","theWrapper","theField","formOpened","focus","animationOver","shouldUseNative","observe","loadAll","optionsItem","autoInitialize","lazyLoadOptions","aConstructor","speciesConstructor","defaultConstructor","callRegExpExec","MAX_UINT32","$push","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SPLIT","nativeSplit","internalSplit","separator","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","q","z","objectToString","normalizeHash","hash","withSymbol","newHash","getElementByHash","changeHashWithoutScrolling","historyStateObj","historyAction","curHash","location","urlForHistory","href","history","pushState","replaceState","isInViewport","completelyInside","condition","viewportBottom","viewportTop","elemTop","elemBottom","fixedElHeight","vHeight","bottom","offsetHeight","offsetTop","offsetBottom","smoothFadeIn","thisEl","urlsAreSamePage","getParamsRegex","trailingSlashRegexes","regex","nakedUrls","urls","stripHash","stripGet","thisUrl","hashIndex","urlHash","substring","nakedUrl","thisRegex","elementToCheck","scriptsOk","scrollEventBefore","scrollEvent","scrollEventAfter","PrettyFileInput","parentSel","wrapperSel","labelSel","wrapLabelSel","wrapLabelInnerSel","labelSeveralFilesClass","labelOneFileClass","labelNoFilesClass","numberClass","dragSupportedClass","draggingClass","draggingThisClass","dragOverlayClass","dragOverlayInnerClass","deleteButtonIconClasses","deleteButtonClass","debug","initSuccess","init","i18n","bonesGlobals","prettyFileInput","elementsDragging","elementsDraggingThis","initLabels","initDeleteButton","dragSupported","checkDragSupport","wrapLabel","labels","noFiles","initDrag","applyFileNumber","wrapLabelInner","basicLabelText","oneFile","severalFiles","innerHTML","hasFiles","_icon$classList","deleteButton","title","deleteFiles","ariaLabel","icon","_toConsumableArray","role","dragOverlay","dragOverlayInner","dropHere","simpleDrag","fileNumber","files","updateDragClasses","incrementElementsDragging","incrementElementsDraggingThis","triggerChange","log","changeEvent","changeEventName","form","_FormValidation","dataTransfer","_PrettyFileInput","placeholderLabelUpdate","label","lastScroll","curScroll","lastWindowOpened","which","newWindow","linkClicked","linkTarget","targetRegex","linkUrl","clicking","opener","$trim","forcedStringTrimMethod","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","arg","E","iteratorClose","kind","innerResult","innerError","iterators","Iterators","ITERATOR","ArrayPrototype","isArrayIteratorMethod","getIteratorMethod","getIterator","usingIterator","iteratorMethod","callWithSafeIterationClosing","ENTRIES","arrayFrom","arrayLike","IS_CONSTRUCTOR","mapfn","mapping","next","SAFE_CLOSING","iteratorWithReturn","return","from","checkCorrectnessOfIteration","SKIP_CLOSING","ITERATION_SUPPORT","iterable","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","correctPrototypeGetter","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","objectGetPrototypeOf","BUGGY_SAFARI_ITERATORS","NEW_ITERATOR_PROTOTYPE","iteratorsCore","setToStringTag","TAG","returnThis","createIteratorConstructor","IteratorConstructor","NAME","FunctionName","IteratorsCore","KEYS","VALUES","defineIterator","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","values","STRING_ITERATOR","setInternalState","iterated","nativeMatch","matcher","matchStr","module","_classCallCheck","_defineProperties","_createClass","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","arr2","iter","getLen","v","dot","v1","v2","getAngle","mr","acos","cross","getRotateAngle","angle","EventsHandlerAdmin","handlers","wrapFunc","EventshandlerAdmin","TouchEvents","option","preV","pinchStartLen","zoom","isDoubleTap","rotate","touchStart","multipointStart","multipointEnd","pinch","tap","doubleTap","longTap","singleTap","pressMove","twoFingerPressMove","touchMove","touchEnd","touchCancel","_cancelAllHandler","cancelAll","delta","last","tapTimeout","singleTapTimeout","longTapTimeout","swipeTimeout","x1","x2","y1","y2","preTapPosition","evt","dispatch","_cancelLongTap","_cancelSingleTap","_preventTap","sCurrentX","sCurrentY","sx2","deltaX","deltaY","sy2","movedX","movedY","_swipeDirection","del","ZoomImages","onclose","setZoomEvents","active","zoomedIn","initialX","initialY","xOffset","yOffset","dragStart","dragEnd","drag","zoomIn","zoomOut","winWidth","widowWidth","maxWidth","maxHeight","centerX","setTranslate","clientX","clientY","isDragging","xPos","yPos","innerWidth","isMobile","isTouch","createTouch","msMaxTouchPoints","transitionEnd","whichTransitionEvent","animationEnd","whichAnimationEvent","videoPlayers","skin","closeButton","autoplayVideos","descPosition","videosWidth","beforeSlideChange","afterSlideChange","beforeSlideLoad","afterSlideLoad","onOpen","onClose","loop","touchNavigation","touchFollowAxis","keyboardNavigation","closeOnOutsideClick","plyr","css","js","config","ratio","youtube","noCookie","rel","showinfo","iv_load_policy","vimeo","byline","portrait","transparent","openEffect","closeEffect","slideEffect","moreText","moreLength","lightboxHtml","cssEfects","fade","in","out","slide_back","svg","prev","lightboxSlideHtml","slideHtml","extend","extended","deep","merge","utils","s","isNode","ar","isArrayLike","isFinite","isNil","isNumber","isNaN","each","collection","getNodeEvents","cache","all","found","cl","addEvent","_ref","onElement","withCallback","_ref$avoidDuplicate","avoidDuplicate","_ref$once","once","_ref$useCapture","useCapture","thisArg","hasClass","animations","animation","OAnimation","MozAnimation","WebkitAnimation","transitions","OTransition","MozTransition","WebkitTransition","animateElement","animationNames","createHTML","htmlStr","frag","getClosest","show","hide","windowSize","innerHeight","handleMediaFullScreen","media","checkSize","setSize","defaultWith","defaultHeight","getSlideData","effect","getSourceType","objectData","url","nodeName","nodeData","dataset","alt","cleanKeys","nodeDesc","setSlideContent","slideMedia","slideTitle","slideText","slideDesc","finalCallback","smallDescription","slideShortDesc","slideDescriptionEvents","setSlideVideo","createIframe","resize","setInlineContent","videoID","injectVideoApi","protocol","videoSource","embedID","customPlaceholder","vimeoID","youtubeID","getYoutubeID","_html","format","pop","sources","mp4","ogg","webm","videoFile","playerConfig","player","Plyr","allow","appendTo","onload","waitFor","head","headStyles","link","waitUntil","script","onComplete","delay","timeoutPointer","intervalPointer","innerContent","div","getElementById","cloned","origin","_this4","activeElement","toLocaleLowerCase","btns","focused","tabindex","newIndex","nextSlide","prevSlide","_this5","hDistance","vDistance","isInlined","winSize","winHeight","currentSlide","mediaImage","doingMove","initScale","maxScale","currentScale","doingZoom","imageZoomed","zoomedPosX","zoomedPosY","lastZoomedPosX","lastZoomedPosY","hDistancePercent","vDistancePercent","vSwipe","hSwipe","startCoords","endCoords","xDown","yDown","sliderWrapper","overlay","touchInstance","targetTouches","moved","opacity","xUp","yUp","xDiff","yDiff","slideCSSTransform","resetSlideMove","scaleX","scaleY","scale","mhDistance","mvDistance","webkitTransform","MozTransform","msTransform","OTransform","wordBoundary","useWordBoundary","subString","moreLink","shortEvent","GlightboxInit","effectsClasses","getAnimationClasses","slidesData","_this6","baseEvents","getSelector","prevActiveSlideIndex","prevActiveSlide","build","scrollBar","styleSheet","innerText","showSlide","prevButton","nextButton","lightboxOpen","_this7","loader","current","slidesContainer","slideAnimateOut","slideAnimateIn","slideData","slideDescription","slideDescriptionContained","preloadSlide","_this8","sourcetype","goToSlide","tmpAddSlides","atPosition","_this9","prevData","nextData","playSlideVideo","effect_name","animIn","animOut","stopSlideVideo","slideVideo","api","play","pause","list","nodes","gallery","tmp","effects","_this10","built","nextSVG","prevSVG","closeSVG","lightboxHTML","modal","video","image","descriptionResize","descHeight","_imgNode","videoRatio","_maxWidth","vwidth","vheight","_ratio","vsize","loopAtEnd","_this11","closing","styles","glightbox","factory","hasPassiveEvents","passiveTestOptions","previousBodyOverflowSetting","previousBodyPaddingRight","isIosDevice","platform","maxTouchPoints","locks","documentListenerAdded","initialClientY","allowTouchMove","lock","rawEvent","disableBodyScroll","targetElement","ontouchstart","ontouchmove","isTargetElementTotallyScrolled","handleScroll","reserveScrollBarGap","scrollBarGap","paddingRight","overflow","setOverflowHidden","enableBodyScroll","UNSCOPABLES","addToUnscopables","$includes","notARegExp","correctIsRegExpLogic","error1","error2","FormValidation","validationCompleteEvent","submitSel","wrapFieldSel","fieldOuterSel","classInvalidTmp","classHiddenTmp","classVisible","classPrefix","classMessage","classIcon","classIconValid","classIconInvalid","messageTagName","eventDelay","smoothScroller","validation","fileSizeUnits","submitButtons","fileInputs","setCustomValidity","noValidate","_step","_iterator","_createForOfIteratorHelper","wrapField","fieldOuter","classesAdded","createFieldMessage","createFieldIcon","isIterable","setCustomValidityForEl","isException","customValidity","valid","validateFileExtensionsForEl","validateFileInputNotEmptyForEl","validateFileSizeForEl","allValidity","propertyName","validity","_step2","_iterator2","valueMissing","required","fileSizeOverflow","maxSize","thisFile","acceptStr","acceptArray","hasAttribute","fileExtensionMismatch","fileExtension","fileIsValid","updateClasses","whatToUpdate","_step3","_iterator3","updateClassesForEl","resetClassesForEl","_thisEl$fieldOuter$cl","classesForOuter","classFinalPart","_thisEl$icon$theIcon$","classesForIcon","checkCustomValidity","theIcon","_thisEl$fieldOuter$cl2","_thisEl$icon$theIcon$2","updateMessages","includeGlobal","_step4","_iterator4","updateMessageForEl","updateMessageGlobal","errorStrings","messageType","thisErrorString","insertString","default","maxLength","minLength","extensionList","thisExt","extensionEl","outerHTML","mb","nameShort","messageList","listEl","messageDisappeared","setMessageListHtml","newHtml","lastChild","messageEl","messageInnerEl","messageListEl","iconEl","iconInnerEl","theIconEl","goToFirstInvalid","firstInvalid","getFirstInvalid","functions","align","focusFirstInvalid","_step5","_iterator5","doValidation","whatToValidate","alreadyValidated","_step6","_iterator6","_loop","inputTimeout","thisButton","invalidAnimEnd","SmoothScroller","scrollToOptions","ignoreRange","maxIterations","parentIsFixed","parentCompStyle","overflowX","getPropertyValue","overflowY","destination","requestedOffset","updateOffset","okToScroll","scrolling","iterations","monitorScrollEvents","monitorManualScrollEvents","debugRectDestination","outline","zIndex","pointerEvents","color","padding","debugRectPosition","debugRectParent","fixedElWidth","updatePosition","positionTarget","positionParent","rect","offsetLeft","right","updateDestination","updateRects","vWidth","offsetParent","updatePositions","updateOkToScroll","updateEverything","updateDebugRects","monitorManualScrollListener","endScroll","monitorScrollListener","oldDestination","doScroll","monitorScroll","endEvent","setHash","scrollOptions","maybeDoScroll","startEvent","_SmoothScroller","GLightboxNubee","links","galleryParent","elementSel","gLightboxOptions","popupOptions","popupInstance","isGallery","openedOnce","mouseTarget","prepareLinks","elementClass","buildElements","GLightbox","addReferencesToElements","buildElement","newElement","elContent","thisLink","openAt","customOnOpen","customOnClose","popupBlock","thisSlide","thisForm","_GLightboxNubee","_GLightbox","searchString","n$ParseFloat","numberParseFloat","Infinity","trimmedString","nativeKeys","win","raf","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","caf","cancelAnimationFrame","mozCancelAnimationFrame","copy","checkStorageValue","JSON","parse","setLocalStorage","storage","access","setItem","getBody","doc","fake","docElement","setFakeBody","docOverflow","background","resetFakeBody","addCSSRule","sheet","rules","insertRule","addRule","getCssRulesLength","cssRules","scope","classListSupport","hasAttr","attr","getAttr","isNodeList","setAttrs","els","attrs","removeAttrs","attrLength","arrayFromNodeList","nl","hideElement","forceHide","showElement","isVisible","whichProperty","Props","toUpperCase","prefix","getEndProperty","propIn","propOut","endProp","passiveOption","addEvents","preventScrolling","removeEvents","topics","tns","gutter","edgePadding","fixedWidth","autoWidth","viewportMax","slideBy","center","controlsPosition","controlsText","controlsContainer","nav","navPosition","navContainer","navAsThumbnails","arrowKeys","speed","autoplayPosition","autoplayTimeout","autoplayDirection","autoplayText","autoplayHoverPause","autoplayButton","autoplayButtonOutput","autoplayResetOnVisibility","animateIn","animateOut","animateNormal","animateDelay","autoHeight","responsive","lazyload","lazyloadSelector","touch","mouseDrag","swipeAngle","nested","preventActionWhenRunning","preventScrollOnTouch","freezable","onInit","useLocalStorage","nonce","ENTER","SPACE","LEFT","RIGHT","tnsStorage","localStorageAccess","browserInfo","localStorage","getItem","removeItem","CALC","vals","calc","PERCENTAGELAYOUT","outer","count","percentageLayout","CSSMQ","msMatchMedia","rule","cssText","currentStyle","mediaquerySupport","TRANSFORM","HAS3DTRANSFORMS","tf","has3d","cssTF","has3DTransforms","TRANSITIONDURATION","TRANSITIONDELAY","ANIMATIONDURATION","ANIMATIONDELAY","TRANSITIONEND","ANIMATIONEND","supportConsoleWarn","tnsList","optionsElements","responsiveTem","updateOptions","middleWrapper","breakpointZone","horizontal","outerWrapper","innerWrapper","containerParent","containerHTML","slideItems","slideCount","windowWidth","getWindowWidth","isOn","setBreakpointZone","slidePositions","itemsMax","getOption","viewport","getViewportWidth","fixedWidthViewportWidth","slideItemsOut","cloneCount","bp","tem","getItemsMax","hasOption","slideCountNew","hasRightDeadZone","rightBoundary","getRightBoundary","updateIndexBeforeTransform","transformAttr","transformPrefix","transformPostfix","getIndexMax","getStartIndex","indexCached","getCurrentSlide","imgsComplete","liveregionCurrent","indexMin","indexMax","moveDirectionExpected","running","newContainerClasses","slideId","tnsId","getSlideId","freeze","getFreeze","frozen","controlsEvents","onControlsClick","keydown","getEvent","keyIndex","navEvents","onTransitionEnd","getTarget","navIndex","navClicked","targetIndexBase","pages","goTo","navCurrentIndex","animating","stopAutoplay","curElement","setFocus","navItems","hoverEvents","mouseover","stopAutoplayTimer","autoplayHoverPaused","mouseout","setAutoplayTimer","visibilityEvent","visibilitychange","hidden","autoplayVisibilityPaused","docmentKeydownEvent","touchEvents","touchstart","onPanStart","touchmove","onPanMove","touchend","onPanEnd","touchcancel","dragEvents","mousedown","mousemove","mouseup","mouseleave","hasControls","hasNav","hasAutoplay","hasTouch","hasMouseDrag","slideActiveClass","slideClonedClass","imgCompleteClass","imgEvents","imgLoaded","imgCompleted","preventScroll","prevIsButton","nextIsButton","controlsContainerHTML","prevButtonHTML","nextButtonHTML","navContainerHTML","getPages","pagesCached","getCurrentNavIndex","navCurrentIndexCached","navActiveClass","navStr","navStrCurrent","autoplayTimer","autoplayUserPaused","autoplayButtonHTML","autoplayHtmlStrings","translateInit","rafIndex","initPosition","lastPosition","panStart","getDist","resetVariblesWhenDisable","fragmentBefore","fragmentAfter","num","cloneFirst","cloneLast","initStructure","fontSize","getSlideMarginLeft","getTransitionDurationStyle","getInnerWrapperStyles","getContainerWidth","getSlideWidthStyle","getSlideGutterStyle","getAnimationDurationStyle","middleWrapperStr","innerWrapperStr","containerStr","slideStr","itemsBP","fixedWidthBP","speedBP","edgePaddingBP","autoHeightBP","gutterBP","initSheet","initSliderTransform","updateIndex","leftEdge","rightEdge","transformCore","resetDuration","doContainerTransform","to","tick","unit","positionTick","moveElement","jsTransform","getContainerTransformValue","updateContentWrapperHeight","eve","animateSlide","getInfo","info","startAutoplay","updateSliderHeight","updateInnerWrapperHeight","refresh","ownerNode","onResize","toggleAutoplay","htmlList","prevEl","previousElementSibling","parentEl","nextElementSibling","firstElementChild","rebuild","ind","getAbsIndex","absIndex","getInsertPosition","getClientWidth","ww","edgePaddingTem","gutterTem","fixedWidthTem","speedTem","gutterTemUnit","itemsTem","dividend","getCSSPrefix","imgsLoadedCheck","getImageArray","initSliderTransformStyleCheck","doContainerTransformSilent","initTools","initEvents","stylesApplicationCheck","initSliderTransformCore","setSlidePositions","updateSlideStatus","insertAdjacentHTML","getLiveRegionStr","txt","navHtml","hiddenStr","updateNavVisibility","isButton","updateControlsStatus","disableUI","resizeTasks","doAutoHeight","doLazyLoad","disableSlider","freezeSlider","additionalUpdates","bpChanged","breakpointZoneTem","needContainerTransform","indChanged","itemsChanged","disableTem","freezeTem","arrowKeysTem","controlsTem","navTem","touchTem","mouseDragTem","autoplayTem","autoplayHoverPauseTem","autoplayResetOnVisibilityTem","indexTem","autoHeightTem","controlsTextTem","centerTem","autoplayTextTem","classN","enableUI","enableSlider","margin","unfreezeSlider","updateLiveRegion","updateGallerySlidePositions","deleteRule","removeRule","removeCSSRule","vp","getVisibleSlideRange","rangestart","rangeend","cell","imgSelector","complete","navPrev","navCurrent","updateNavStatus","getMaxSlideHeight","slideStart","slideRange","heights","wp","attr2","base","range","getLowerCaseNodeName","isAriaDisabled","disEnableElement","prevDisabled","nextDisabled","disablePrev","disableNext","getCenterGap","denominator","classOut","classIn","isOut","render","sliderMoved","strTrans","targetIndex","indexGap","factor","dir","passEventObject","targetIn","updateAutoplayButton","action","isTouchEvent","srcElement","preventDefaultBehavior","returnValue","getMoveDirectionExpected","atan2","panUpdate","dist","preventClick","indexMoved","rough","displayIndex","$map","GoogleMap","google","maps","markerSel","navigationControl","mapTypeControl","zoomControl","streetViewControl","scaleControl","fullscreenControl","gestureHandling","mapTypeId","MapTypeId","ROADMAP","markerIconUrl","themeDir","markerIconWidth","markerIconHeight","onlyOneInfoWindow","mapParent","markerEls","markers","openInfoWindows","markersToOpenOnLoad","lat","lng","LatLng","latLng","addMarkers","mapArgs","Map","addListenerOnce","addMarker","markerEl","marker","markerArgs","iwContent","iconWidth","iconHeight","scaledSize","Size","Marker","openOnLoad","infoWindow","InfoWindow","addListener","thisWin","bounds","LatLngBounds","thisMarker","setCenter","getCenter","setZoom","fitBounds","MobileMenu","viewportMin","closeMediaQuery","buttonSel","menuSel","scrollableElSel","dropdownParentSel","dropdownSel","linkSel","openClass","openingClass","closingClass","animatingClass","popupOpenClass","dropdownParentLinkActive","singleSubmenu","activeMenus","menu","scrollableEl","dropdownParents","dropdownParentLinks","openSubmenuTarget","hashLinks","openSubmenu","_MobileMenu","cleanClasses","desiredState","elementsToCover","finalAction","openDone","closeDone","animationDone","submenu","toggleSubmenu","closeSubmenu","submenuList","submenuListCandidates","thisCand","viewportOk","clickedLink","targetSubmenu","imgCheck","imgSize","mediumMinWidth","largeMinWidth","newSrc","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","reject","__await","then","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","Promise","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","finish","catch","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","ARRAY_ITERATOR","es_array_iterator","Arguments","ArrayIteratorMethods","ArrayValues","nativeUrl","URL","searchParams","pathname","URLSearchParams","username","anInstance","Prototype","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","RangeError","fromCharCode","digitToBasic","digit","adapt","numPoints","firstTime","baseMinusTMin","encode","counter","extra","ucs2decode","currentValue","inputLength","bias","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","redefineAll","mergeSort","comparefn","middle","insertionSort","llength","rlength","lindex","rindex","arraySort","USE_NATIVE_URL","require$$21","require$$22","require$$24","require$$23","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","getInternalIteratorState","n$Fetch","N$Request","Headers","RequestPrototype","HeadersPrototype","decodeURIComponent","encodeURIComponent","shift","plus","sequences","percentSequence","bytes","percentDecode","sequence","deserialize","replacements","serialize","parseSearchParams","query","attributes","updateSearchParams","validateArgumentsLength","passed","URLSearchParamsIterator","params","URLSearchParamsConstructor","URLSearchParamsPrototype","entryIterator","entryNext","updateURL","delete","getAll","headersHas","headersSet","wrapRequestOptions","headers","fetch","RequestConstructor","Request","EOF","web_urlSearchParams","getState","toASCII","encoded","URLSearchParamsModule","getInternalURLState","getInternalSearchParamsState","NativeURL","pow","numberToString","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","ipv4","parts","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","compress","pointer","serializeHost","ignore0","ipv6","maxIndex","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","specialSchemes","ftp","file","http","https","ws","wss","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","shortenURLsPath","path","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","buffer","seenAt","seenBracket","seenPasswordToken","port","fragment","codePoint","encodedCodePoints","URLConstructor","baseState","URLPrototype","urlString","searchParamsState","serializeURL","getOrigin","getProtocol","getUsername","getPassword","getHost","hostname","getHostname","getPort","getPathname","search","getSearch","getSearchParams","getHash","accessorDescriptor","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","defer","channel","nativePromiseConstructor","Result","stopped","ResultPrototype","engineIsIos","engineIsNode","IS_IOS","IS_NODE","setImmediate","clear","clearImmediate","Dispatch","MessageChannel","queue","ONREADYSTATECHANGE","run","runner","listener","post","postMessage","nextTick","port2","port1","onmessage","importScripts","flush","notify","promise","task","engineIsIosPebble","Pebble","engineIsWebosWebkit","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","exit","enter","characterData","microtask","PromiseCapability","$$resolve","$$reject","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","newPromiseCapability","engineIsBrowser","NativePromise","iterate","unboundFunction","iterFn","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","callFn","promiseResolve","promiseCapability","hostReportErrors","newPromiseCapabilityModule","perform","require$$25","require$$26","IS_BROWSER","require$$28","require$$29","require$$30","require$$27","PROMISE","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","SUBCLASSING","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","INCORRECT_ITERATION","isThenable","isReject","notified","chain","reactions","ok","exited","reaction","fail","rejection","onHandleUnhandled","onUnhandled","reason","initEvent","isUnhandled","unwrap","internalReject","internalResolve","executor","onFulfilled","onRejected","InfiniteScrollSimple","updateRequestedEvent","beforeUpdateEvent","afterUpdateEvent","noMoreEvent","itemAnimatedEvent","instanceIdAttr","loadingClass","noMoreClass","itemSel","animatingInClass","animatedInClass","containerInnerSel","animate","useInner","instanceId","getKeyElement","containerInner","appendEl","domParser","DOMParser","loading","noMore","addInstanceIdTo","inputSel","outputSel","keyElType","initial","keyEls","theSel","keyEl","loadingStart","_loadingButton","loadingEnd","getNextPage","_asyncToGenerator","_callee","ajaxUrl","fetchOptions","response","responseText","_context","nextPageUrl","text","addNextPage","nextPageText","docFrag","extractPiecesFromText","nextPageItems","nextPageButton","siteLazyLoad","animateNewItems","sourceText","htmlDoc","parseFromString","thisElAnimated","prevElAnimated","buttonClicked","isMouseLeft","_infiniteScrollSimple","LoadingButton","buttonEl","capability","$promiseResolve","alreadyCalled","race","loadedEvent","backToTop","lockedHeightEls","origHash","hashBlockedEvent","scrollStartEvent","scrollEndEvent","shareBtn","firefox","engineFfVersion","UA","engineIsIeOrEdge","webkit","engineWebkitVersion","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","un$Sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STABLE_SORT","FakeSticky","mediaQueries","minWidth","minHeight","oppositeDirections","resetPaddingObj","paddingTop","paddingBottom","paddingLeft","maybeRefresh","refreshMeasures","getStyles","getDirections","getHeight","directions","resetPadding","styleObject","setPadding","paddingProperty","getPaddingProperty","thisDir","cssPropertyName","thisMedia","_FakeSticky","MultiActionForm","sourceElSel","sourceEl","updateOption","selectedIndex","updateUrl","_MultiActionForm","ScrollClassAgent","classTarget","classesToChange","thisClass","mustHaveClass","scrollDirection","class","minimum","maximum","scrollChange","newState","changeClasses","changedEvent","classesChanged","setGlobalVariables","calcFixedEls","calcWindowDimensions","calcCurScroll","scrollClassAgent","scrollbarWidth","visibility","msOverflowStyle","inner","getScrollbarWidth","setProperty","vwInitial","vhInitial","ga","_gaq","vWidthExceptFixed","vHeightExceptFixed","newFixedElHeight","pageMenuEl","adminBarEl","siteHeaderEl","headerHeight","forceLastScroll","topExceptFixed","leftExceptFixed","vCenter","xExceptFixed","yExceptFixed","itemsLength","arrayLength","getSortCompare","objectFitImages","smoothscroll","globalVarFunctions","theHref","thisParent","legitInput","submit","theContainer","theDropdown","fadeOutOver","fadeInOver","sliderEl","sliderInstance","extraOptions","lazySelector","sliderOptions","maxItems","minItems","nbItems","newMaxItems","tinySlider","optionName","initSliderTiny","thisSelect","targetUrl","initialScrollEnd","historyState","thisGroup","sameHeightMinWidth","sameHeightEls","highestHeight","thisGal","fakeStickyArgs","fakeStickyMinWidth","fakeStickyMaxWidth","fakeStickyMinHeight","fakeStickyMaxHeight","select","execCommand"],"mappings":"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","sourcesContent":["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","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\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","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","var FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar callBind = bind && bind.bind(call);\n\nmodule.exports = bind ? function (fn) {\n return fn && callBind(call, fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : bind ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.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(it, '') : Object(it);\n} : Object;\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\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 requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\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(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\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.19.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && 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;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","/* eslint-disable es/no-symbol -- required for testing */\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 var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\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 hasOwn = require('../internals/has-own-property');\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 symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function (argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function (argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n // we can't check .prototype since constructors produced by .bind haven't it\n } return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n};\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\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 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 global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","var call = Function.prototype.call;\n\nmodule.exports = call.bind ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\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 = toPropertyKey(P);\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","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 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","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=function(o,t){t=t||window;for(var i=0;i 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 uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\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) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\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 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","'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 DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\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 = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n var primValue = toPrimitive(value, 'number');\n return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = charCodeAt(it, 0);\n if (first === 43 || first === 45) {\n third = charCodeAt(it, 2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (charCodeAt(it, 1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = arraySlice(it, 2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = charCodeAt(digits, index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n var dummy = this;\n // check on 1..constructor(foo) case\n return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","let testInput = document.createElement('input');\ntestInput.type = 'number';\n\ntry {\n\ttestInput.stepUp();\n} catch( e ) {\n\t// stepUp n'existe pas! Polyfillons.\n\n\tHTMLInputElement.prototype.stepChange = function( nbSteps, multiplier ) {\n\t\tnbSteps = nbSteps || 1;\n\t\tmultiplier = multiplier || 1;\n\n\t\tlet that = this;\n\t\tlet type = that.getAttribute('type');\n\t\tlet value = that.value;\n\t\tlet step = this.getAttribute('step') || 1;\n\t\tlet min = this.getAttribute('min') || 0;\n\t\tlet max = this.getAttribute('max') || null;\n\n\t\tif( 'number' == type ) {\n\t\t\tvalue = Number( value );\n\t\t\tstep = Number( step );\n\t\t\tmin = Number( min );\n\t\t\tmax = Number( max );\n\t\t\tnbSteps = Number( nbSteps );\n\t\t\tmultiplier = Number( multiplier );\n\n\t\t\tif( that.value || 0 === that.value ) {\n\t\t\t\tlet totalChange = nbSteps * step * multiplier;\n\t\t\t\tlet newVal = value + totalChange;\n\n\t\t\t\tif( 'undefined' != typeof min && null !== min && newVal < min ) {\n\t\t\t\t\tnewVal = min;\n\t\t\t\t}\n\n\t\t\t\tif( 'undefined' != typeof min && null !== max && newVal > max ) {\n\t\t\t\t\tnewVal = max;\n\t\t\t\t}\n\n\t\t\t\t// console.log(newVal);\n\n\t\t\t\tthat.value = newVal;\n\t\t\t} else {\n\t\t\t\tthat.value = step * multiplier;\n\t\t\t}\n\t\t}\n\t};\n\n\tHTMLInputElement.prototype.stepUp = function( nbSteps ) {\n\t\tthis.stepChange( nbSteps, 1 );\n\t};\n\n\tHTMLInputElement.prototype.stepDown = function( nbSteps ) {\n\t\tthis.stepChange( nbSteps, -1 );\n\t};\n}","/*\n * classList.js: Cross-browser full element.classList implementation.\n * 1.1.20170427\n *\n * By Eli Grey, http://eligrey.com\n * License: Dedicated to the public domain.\n * See https://github.com/eligrey/classList.js/blob/master/LICENSE.md\n */\n\n/*global self, document, DOMException */\n\n/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */\n\nif (\"document\" in window.self) {\n\n// Full polyfill for browsers with no classList support\n// Including IE < Edge missing SVGElement.classList\nif (!(\"classList\" in document.createElement(\"_\")) \n\t|| document.createElementNS && !(\"classList\" in document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\"))) {\n\n(function (view) {\n\n\"use strict\";\n\nif (!('Element' in view)) return;\n\nvar\n\t classListProp = \"classList\"\n\t, protoProp = \"prototype\"\n\t, elemCtrProto = view.Element[protoProp]\n\t, objCtr = Object\n\t, strTrim = String[protoProp].trim || function () {\n\t\treturn this.replace(/^\\s+|\\s+$/g, \"\");\n\t}\n\t, arrIndexOf = Array[protoProp].indexOf || function (item) {\n\t\tvar\n\t\t\t i = 0\n\t\t\t, len = this.length\n\t\t;\n\t\tfor (; i < len; i++) {\n\t\t\tif (i in this && this[i] === item) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\t// Vendors: please allow content code to instantiate DOMExceptions\n\t, DOMEx = function (type, message) {\n\t\tthis.name = type;\n\t\tthis.code = DOMException[type];\n\t\tthis.message = message;\n\t}\n\t, checkTokenAndGetIndex = function (classList, token) {\n\t\tif (token === \"\") {\n\t\t\tthrow new DOMEx(\n\t\t\t\t \"SYNTAX_ERR\"\n\t\t\t\t, \"An invalid or illegal string was specified\"\n\t\t\t);\n\t\t}\n\t\tif (/\\s/.test(token)) {\n\t\t\tthrow new DOMEx(\n\t\t\t\t \"INVALID_CHARACTER_ERR\"\n\t\t\t\t, \"String contains an invalid character\"\n\t\t\t);\n\t\t}\n\t\treturn arrIndexOf.call(classList, token);\n\t}\n\t, ClassList = function (elem) {\n\t\tvar\n\t\t\t trimmedClasses = strTrim.call(elem.getAttribute(\"class\") || \"\")\n\t\t\t, classes = trimmedClasses ? trimmedClasses.split(/\\s+/) : []\n\t\t\t, i = 0\n\t\t\t, len = classes.length\n\t\t;\n\t\tfor (; i < len; i++) {\n\t\t\tthis.push(classes[i]);\n\t\t}\n\t\tthis._updateClassName = function () {\n\t\t\telem.setAttribute(\"class\", this.toString());\n\t\t};\n\t}\n\t, classListProto = ClassList[protoProp] = []\n\t, classListGetter = function () {\n\t\treturn new ClassList(this);\n\t}\n;\n// Most DOMException implementations don't allow calling DOMException's toString()\n// on non-DOMExceptions. Error's toString() is sufficient here.\nDOMEx[protoProp] = Error[protoProp];\nclassListProto.item = function (i) {\n\treturn this[i] || null;\n};\nclassListProto.contains = function (token) {\n\ttoken += \"\";\n\treturn checkTokenAndGetIndex(this, token) !== -1;\n};\nclassListProto.add = function () {\n\tvar\n\t\t tokens = arguments\n\t\t, i = 0\n\t\t, l = tokens.length\n\t\t, token\n\t\t, updated = false\n\t;\n\tdo {\n\t\ttoken = tokens[i] + \"\";\n\t\tif (checkTokenAndGetIndex(this, token) === -1) {\n\t\t\tthis.push(token);\n\t\t\tupdated = true;\n\t\t}\n\t}\n\twhile (++i < l);\n\n\tif (updated) {\n\t\tthis._updateClassName();\n\t}\n};\nclassListProto.remove = function () {\n\tvar\n\t\t tokens = arguments\n\t\t, i = 0\n\t\t, l = tokens.length\n\t\t, token\n\t\t, updated = false\n\t\t, index\n\t;\n\tdo {\n\t\ttoken = tokens[i] + \"\";\n\t\tindex = checkTokenAndGetIndex(this, token);\n\t\twhile (index !== -1) {\n\t\t\tthis.splice(index, 1);\n\t\t\tupdated = true;\n\t\t\tindex = checkTokenAndGetIndex(this, token);\n\t\t}\n\t}\n\twhile (++i < l);\n\n\tif (updated) {\n\t\tthis._updateClassName();\n\t}\n};\nclassListProto.toggle = function (token, force) {\n\ttoken += \"\";\n\n\tvar\n\t\t result = this.contains(token)\n\t\t, method = result ?\n\t\t\tforce !== true && \"remove\"\n\t\t:\n\t\t\tforce !== false && \"add\"\n\t;\n\n\tif (method) {\n\t\tthis[method](token);\n\t}\n\n\tif (force === true || force === false) {\n\t\treturn force;\n\t} else {\n\t\treturn !result;\n\t}\n};\nclassListProto.toString = function () {\n\treturn this.join(\" \");\n};\n\nif (objCtr.defineProperty) {\n\tvar classListPropDesc = {\n\t\t get: classListGetter\n\t\t, enumerable: true\n\t\t, configurable: true\n\t};\n\ttry {\n\t\tobjCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n\t} catch (ex) { // IE 8 doesn't support enumerable:true\n\t\t// adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36\n\t\t// modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected\n\t\tif (ex.number === undefined || ex.number === -0x7FF5EC54) {\n\t\t\tclassListPropDesc.enumerable = false;\n\t\t\tobjCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n\t\t}\n\t}\n} else if (objCtr[protoProp].__defineGetter__) {\n\telemCtrProto.__defineGetter__(classListProp, classListGetter);\n}\n\n}(window.self));\n\n}\n\n// There is full or partial native classList support, so just check if we need\n// to normalize the add/remove and toggle APIs.\n\n(function () {\n\t\"use strict\";\n\n\tvar testElement = document.createElement(\"_\");\n\n\ttestElement.classList.add(\"c1\", \"c2\");\n\n\t// Polyfill for IE 10/11 and Firefox <26, where classList.add and\n\t// classList.remove exist but support only one argument at a time.\n\tif (!testElement.classList.contains(\"c2\")) {\n\t\tvar createMethod = function(method) {\n\t\t\tvar original = DOMTokenList.prototype[method];\n\n\t\t\tDOMTokenList.prototype[method] = function(token) {\n\t\t\t\tvar i, len = arguments.length;\n\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\ttoken = arguments[i];\n\t\t\t\t\toriginal.call(this, token);\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\t\tcreateMethod('add');\n\t\tcreateMethod('remove');\n\t}\n\n\ttestElement.classList.toggle(\"c3\", false);\n\n\t// Polyfill for IE 10 and Firefox <24, where classList.toggle does not\n\t// support the second argument.\n\tif (testElement.classList.contains(\"c3\")) {\n\t\tvar _toggle = DOMTokenList.prototype.toggle;\n\n\t\tDOMTokenList.prototype.toggle = function(token, force) {\n\t\t\tif (1 in arguments && !this.contains(token) === !force) {\n\t\t\t\treturn force;\n\t\t\t} else {\n\t\t\t\treturn _toggle.call(this, token);\n\t\t\t}\n\t\t};\n\n\t}\n\n\ttestElement = null;\n}());\n\n}\n","'use strict';(function(){(function(){function e(a){for(var b=[a];a=a.parentNode||a.host||a.defaultView;)b.push(a);return b}function f(a){return function(b){var c=\"undefined\"!==typeof b.getAttribute?b.getAttribute(\"class\")||\"\":void 0;\"undefined\"!==typeof c&&-1===c.indexOf(a)&&b.setAttribute(\"class\",c.concat(\" \",a).trim())}}function g(a){return function(b){var c=\"undefined\"!==typeof b.getAttribute?b.getAttribute(\"class\")||\"\":void 0;if(c){var d=c.indexOf(a);0<=d&&(0===d||0<=h.indexOf(c.charAt(d-1)))&&\n(c=c.replace(a,\"\").trim(),\"\"===c?b.removeAttribute(\"class\"):b.setAttribute(\"class\",c))}}}function k(){var a=function(a){function c(){b=!1;\"blur\"===a.type&&Array.prototype.slice.call(e(a.target)).forEach(g(\"focus-within\"));\"focus\"===a.type&&Array.prototype.slice.call(e(a.target)).forEach(f(\"focus-within\"))}if(!b){window.requestAnimationFrame(c);var b=!0}};document.addEventListener(\"focus\",a,!0);document.addEventListener(\"blur\",a,!0);f(\"js-focus-within\")(document.body);return!0}var h=[\"\\n\",\"\\t\",\" \",\n\"\\r\"];try{return\"undefined\"!==typeof window&&!document.querySelector(\":focus-within\")}catch(a){return k()}})()})();\n//# sourceMappingURL=focus-within-polyfill.js.map\n","/*! npm.im/object-fit-images 3.2.4 */\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\n}\n\nfunction polyfillCurrentSrc(el) {\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\n\t}\n}\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction setPlaceholder(img, width, height) {\n\t// Default: fill width, no height\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\n\n\t// Only set placeholder if it's different\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\n\t}\n}\n\nfunction onImageReady(img, callback) {\n\t// naturalWidth is only available when the image headers are loaded,\n\t// this loop will poll it every 100ms.\n\tif (img.naturalWidth) {\n\t\tcallback(img);\n\t} else {\n\t\tsetTimeout(onImageReady, 100, img, callback);\n\t}\n}\n\nfunction fixOne(el) {\n\tvar style = getStyle(el);\n\tvar ofi = el[OFI];\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// Avoid running where unnecessary, unless OFI had already done its deed\n\tif (!ofi.img) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// keep a clone in memory while resetting the original to a blank\n\tif (!ofi.img) {\n\t\tofi.img = new Image(el.width, el.height);\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\n\n\t\t// preserve for any future cloneNode calls\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\t\tif (el.srcset) {\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n\t\t}\n\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\n\n\t\t// remove srcset because it overrides src\n\t\tif (el.srcset) {\n\t\t\tel.srcset = '';\n\t\t}\n\t\ttry {\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tif (window.console) {\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\n\t\t\t}\n\t\t}\n\t}\n\n\tpolyfillCurrentSrc(ofi.img);\n\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\tel.style.backgroundOrigin = 'content-box';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\tonImageReady(ofi.img, function () {\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t} else {\n\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t}\n\t\t});\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n\n\tonImageReady(ofi.img, function (img) {\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\n\t});\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get(prop) {\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\n\t\t},\n\t\tset: function set(value, prop) {\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\n\t\t\tfixOne(el);\n\t\t\treturn value;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {\n\t\tget: function () { return descriptors.get('currentSrc'); }\n\t});\n\tObject.defineProperty(el, 'srcset', {\n\t\tget: function () { return descriptors.get('srcset'); },\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\n\t});\n}\n\nfunction hijackAttributes() {\n\tfunction getOfiImageMaybe(el, name) {\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n\t}\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (imgs === 'img') {\n\t\timgs = document.getElementsByTagName('img');\n\t} else if (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll(imgs);\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][OFI] = imgs[i][OFI] || {\n\t\t\tskipTest: opts.skipTest\n\t\t};\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nexport default fix;\n","/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n 'use strict';\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n // commonjs\n module.exports = { polyfill: polyfill };\n } else {\n // global\n polyfill();\n }\n\n}());\n","/*!\n * Glide.js v3.4.1\n * (c) 2013-2019 Jędrzej Chałubek (http://jedrzejchalubek.com/)\n * Released under the MIT License.\n */\n\nvar defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */\n type: 'slider',\n\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */\n startAt: 0,\n\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */\n perView: 1,\n\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */\n focusAt: 0,\n\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */\n gap: 10,\n\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */\n autoplay: false,\n\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */\n hoverpause: true,\n\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */\n keyboard: true,\n\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */\n bound: false,\n\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */\n swipeThreshold: 80,\n\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */\n dragThreshold: 120,\n\n /**\n * A maximum number of slides to which movement will be made on swiping or dragging. Use `false` for unlimited.\n *\n * @type {Number|Boolean}\n */\n perTouch: false,\n\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */\n touchRatio: 0.5,\n\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */\n touchAngle: 45,\n\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */\n animationDuration: 400,\n\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */\n rewind: true,\n\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */\n rewindDuration: 800,\n\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */\n animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */\n throttle: 10,\n\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */\n direction: 'ltr',\n\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */\n peek: 0,\n\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */\n breakpoints: {},\n\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */\n classes: {\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n slider: 'glide--slider',\n carousel: 'glide--carousel',\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n cloneSlide: 'glide__slide--clone',\n activeNav: 'glide__bullet--active',\n activeSlide: 'glide__slide--active',\n disabledArrow: 'glide__arrow--disabled'\n }\n};\n\n/**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\nfunction warn(msg) {\n console.error(\"[Glide warn]: \" + msg);\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 classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function 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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _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\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n/**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toInt(value) {\n return parseInt(value);\n}\n\n/**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toFloat(value) {\n return parseFloat(value);\n}\n\n/**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isString(value) {\n return typeof value === 'string';\n}\n\n/**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\nfunction isObject(value) {\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n}\n\n/**\n * Indicates whether the specified value is a number.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n\n/**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\n/**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\n\n/**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isArray(value) {\n return value.constructor === Array;\n}\n\n/**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\nfunction mount(glide, extensions, events) {\n var components = {};\n\n for (var name in extensions) {\n if (isFunction(extensions[name])) {\n components[name] = extensions[name](glide, components, events);\n } else {\n warn('Extension must be a function');\n }\n }\n\n for (var _name in components) {\n if (isFunction(components[_name].mount)) {\n components[_name].mount();\n }\n }\n\n return components;\n}\n\n/**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */\nfunction define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n}\n\n/**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n\n return r[k], r;\n }, {});\n}\n\n/**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */\nfunction mergeOptions(defaults, settings) {\n var options = _extends({}, defaults, settings);\n\n // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n if (settings.hasOwnProperty('classes')) {\n options.classes = _extends({}, defaults.classes, settings.classes);\n\n if (settings.classes.hasOwnProperty('direction')) {\n options.classes.direction = _extends({}, defaults.classes.direction, settings.classes.direction);\n }\n }\n\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = _extends({}, defaults.breakpoints, settings.breakpoints);\n }\n\n return options;\n}\n\nvar EventsBus = function () {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */\n function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, EventsBus);\n\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n createClass(EventsBus, [{\n key: 'on',\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n }\n\n // Create the event's object if not yet created\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n }\n\n // Add the handler to queue\n var index = this.events[event].push(handler) - 1;\n\n // Provide handle back for removal of event\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: 'emit',\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n }\n\n // If the event doesn't exist, or there's no handlers in queue, just leave\n if (!this.hop.call(this.events, event)) {\n return;\n }\n\n // Cycle through events queue, fire!\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n return EventsBus;\n}();\n\nvar Glide = function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, Glide);\n\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n\n createClass(Glide, [{\n key: 'mount',\n value: function mount$$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after');\n\n return this;\n }\n\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n\n }, {\n key: 'mutate',\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'update',\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'go',\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'move',\n value: function move(distance) {\n this._c.Transition.disable();\n this._c.Move.make(distance);\n\n return this;\n }\n\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'play',\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'pause',\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'disable',\n value: function disable() {\n this.disabled = true;\n\n return this;\n }\n\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'enable',\n value: function enable() {\n this.disabled = false;\n\n return this;\n }\n\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'on',\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'isType',\n value: function isType(name) {\n return this.settings.type === name;\n }\n\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: 'settings',\n get: function get$$1() {\n return this._o;\n }\n\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */\n ,\n set: function set$$1(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: 'index',\n get: function get$$1() {\n return this._i;\n }\n\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */\n ,\n set: function set$$1(i) {\n this._i = toInt(i);\n }\n\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n\n }, {\n key: 'type',\n get: function get$$1() {\n return this.settings.type;\n }\n\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'disabled',\n get: function get$$1() {\n return this._d;\n }\n\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n ,\n set: function set$$1(status) {\n this._d = !!status;\n }\n }]);\n return Glide;\n}();\n\nfunction Run (Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n Glide.disable();\n\n this.move = move;\n\n Events.emit('run.before', this.move);\n\n this.calculate();\n\n Events.emit('run', this.move);\n\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n\n if (_this.isOffset('<') || _this.isOffset('>')) {\n _this._o = false;\n\n Events.emit('run.offset', _this.move);\n }\n\n Events.emit('run.after', _this.move);\n\n Glide.enable();\n });\n }\n },\n\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Void}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction;\n\n\n var countableSteps = isNumber(toInt(steps)) && toInt(steps) !== 0;\n\n switch (direction) {\n case '>':\n if (steps === '>') {\n Glide.index = length;\n } else if (this.isEnd()) {\n if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n this._o = true;\n\n Glide.index = 0;\n }\n } else if (countableSteps) {\n Glide.index += Math.min(length - Glide.index, -toInt(steps));\n } else {\n Glide.index++;\n }\n break;\n\n case '<':\n if (steps === '<') {\n Glide.index = 0;\n } else if (this.isStart()) {\n if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n this._o = true;\n\n Glide.index = length;\n }\n } else if (countableSteps) {\n Glide.index -= Math.min(Glide.index, toInt(steps));\n } else {\n Glide.index--;\n }\n break;\n\n case '=':\n Glide.index = steps;\n break;\n\n default:\n warn('Invalid direction pattern [' + direction + steps + '] has been used');\n break;\n }\n },\n\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index === 0;\n },\n\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index === this.length;\n },\n\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset(direction) {\n return this._o && this.move.direction === direction;\n }\n };\n\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length;\n\n // If the `bound` option is acitve, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (Glide.isType('slider') && settings.focusAt !== 'center' && settings.bound) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n\n return Run;\n}\n\n/**\n * Returns a current time.\n *\n * @return {Number}\n */\nfunction now() {\n return new Date().getTime();\n}\n\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\nfunction throttle(func, wait, options) {\n var timeout = void 0,\n context = void 0,\n args = void 0,\n result = void 0;\n var previous = 0;\n if (!options) options = {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\nvar MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n};\n\nfunction Gaps (Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = this.value / 2 + 'px';\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = this.value / 2 + 'px';\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n\n define(Gaps, 'grow', {\n /**\n * Gets additional dimentions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * (Components.Sizes.length - 1);\n }\n });\n\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n\n return Gaps.value * (perView - 1) / perView;\n }\n });\n\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n\n return Gaps;\n}\n\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\nfunction siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n}\n\n/**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\nfunction exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\n}\n\nvar TRACK_SELECTOR = '[data-glide-el=\"track\"]';\n\nfunction Html (Glide, Components) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.slides = Array.prototype.slice.call(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.cloneSlide);\n });\n }\n };\n\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn('Could not find track element. Please use ' + TRACK_SELECTOR + ' attribute.');\n }\n }\n });\n\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n\n return Html;\n}\n\nfunction Peek (Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n\n return Peek;\n}\n\nfunction Move (Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n this.offset = offset;\n\n Events.emit('move', {\n movement: this.value\n });\n\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n\n return Move;\n}\n\nfunction Sizes (Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimentions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = this.slideWidth + 'px';\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n\n /**\n * Setups dimentions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper(dimention) {\n Components.Html.wrapper.style.width = this.wrapperSize + 'px';\n },\n\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n\n define(Sizes, 'width', {\n /**\n * Gets width value of the glide.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.root.offsetWidth;\n }\n });\n\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of the single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimentions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Sizes.remove();\n });\n\n return Sizes;\n}\n\nfunction Build (Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n\n this.typeClass();\n this.activeClass();\n\n Events.emit('build.after');\n },\n\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes[Glide.settings.type]);\n },\n\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.activeSlide);\n\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.activeSlide);\n });\n }\n },\n\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var classes = Glide.settings.classes;\n\n Components.Html.root.classList.remove(classes[Glide.settings.type]);\n\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(classes.activeSlide);\n });\n }\n };\n\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimentions\n * - on updating settings via API\n */\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n Events.on('move.after', function () {\n Build.activeClass();\n });\n\n return Build;\n}\n\nfunction Clones (Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n\n /**\n * Collect clones with pattern.\n *\n * @return {Void}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes;\n\n\n var peekIncrementer = +!!Glide.settings.peek;\n var part = perView + peekIncrementer;\n var start = slides.slice(0, part);\n var end = slides.slice(-part);\n\n for (var r = 0; r < Math.max(1, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < start.length; i++) {\n var clone = start[i].cloneNode(true);\n\n clone.classList.add(classes.cloneSlide);\n\n items.push(clone);\n }\n\n for (var _i = 0; _i < end.length; _i++) {\n var _clone = end[_i].cloneNode(true);\n\n _clone.classList.add(classes.cloneSlide);\n\n items.unshift(_clone);\n }\n }\n\n return items;\n },\n\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n\n\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half, items.length);\n var width = Components.Sizes.slideWidth + 'px';\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n\n define(Clones, 'grow', {\n /**\n * Gets additional dimentions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n Events.on('destroy', function () {\n Clones.remove();\n });\n\n return Clones;\n}\n\nvar EventsBinder = function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, EventsBinder);\n\n this.listeners = listeners;\n }\n\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n createClass(EventsBinder, [{\n key: 'on',\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: 'off',\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n return EventsBinder;\n}();\n\nfunction Resize (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n\n return Resize;\n}\n\nvar VALID_DIRECTIONS = ['ltr', 'rtl'];\nvar FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n};\n\nfunction Direction (Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n Events.on('update', function () {\n Direction.mount();\n });\n\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n\n return Direction;\n}\n\n/**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Rtl (Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Gap (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Gaps.value * Glide.index;\n }\n };\n}\n\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Grow (Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n}\n\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Peeking (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Focusing (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n}\n\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction mutator (Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n}\n\nfunction Translate (Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n\n Components.Html.wrapper.style.transform = 'translate3d(' + -1 * transform + 'px, 0px, 0px)';\n },\n\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n }\n };\n\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n Events.on('move', function (context) {\n var gap = Components.Gaps.value;\n var length = Components.Sizes.length;\n var width = Components.Sizes.slideWidth;\n\n if (Glide.isType('carousel') && Components.Run.isOffset('<')) {\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n\n Translate.set(width * (length - 1));\n });\n\n return Translate.set(-width - gap * length);\n }\n\n if (Glide.isType('carousel') && Components.Run.isOffset('>')) {\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n\n Translate.set(0);\n });\n\n return Translate.set(width * length + gap * length);\n }\n\n return Translate.set(context.movement);\n });\n\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Translate.remove();\n });\n\n return Translate;\n}\n\nfunction Transition (Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (!disabled) {\n return property + ' ' + this.duration + 'ms ' + settings.animationTimingFunc;\n }\n\n return property + ' 0ms ' + settings.animationTimingFunc;\n },\n\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n\n this.set();\n },\n\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n\n this.set();\n }\n };\n\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n Events.on('move', function () {\n Transition.set();\n });\n\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimentions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n Events.on('run', function () {\n Transition.enable();\n });\n\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Transition.remove();\n });\n\n return Transition;\n}\n\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\n\nvar supportsPassive = false;\n\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\n\nvar supportsPassive$1 = supportsPassive;\n\nvar START_EVENTS = ['touchstart', 'mousedown'];\nvar MOVE_EVENTS = ['touchmove', 'mousemove'];\nvar END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\nvar MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\n\nfunction Swipe (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? { passive: true } : false;\n\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n\n var swipe = this.touches(event);\n\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n\n this.bindSwipeMove();\n this.bindSwipeEnd();\n\n Events.emit('swipe.start');\n }\n },\n\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n\n\n var swipe = this.touches(event);\n\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n\n Components.Move.make(subExSx * toFloat(touchRatio));\n\n Components.Html.root.classList.add(classes.dragging);\n\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var settings = Glide.settings;\n\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n var steps = Math.round(swipeDistance / Components.Sizes.slideWidth);\n\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < settings.touchAngle) {\n // While swipe is positive and greater than threshold move backward.\n if (settings.perTouch) {\n steps = Math.min(steps, toInt(settings.perTouch));\n }\n\n if (Components.Direction.is('rtl')) {\n steps = -steps;\n }\n\n Components.Run.make(Components.Direction.resolve('<' + steps));\n } else if (swipeDistance < -threshold && swipeDeg < settings.touchAngle) {\n // While swipe is negative and lower than negative threshold move forward.\n if (settings.perTouch) {\n steps = Math.max(steps, -toInt(settings.perTouch));\n }\n\n if (Components.Direction.is('rtl')) {\n steps = -steps;\n }\n\n Components.Run.make(Components.Direction.resolve('>' + steps));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(settings.classes.dragging);\n\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n\n Events.emit('swipe.end');\n }\n },\n\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var settings = Glide.settings;\n\n if (settings.swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (settings.dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n\n Components.Transition.enable();\n\n return this;\n },\n\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n\n Components.Transition.disable();\n\n return this;\n }\n };\n\n /**\n * Add component class:\n * - after initial building\n */\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n\n return Swipe;\n}\n\nfunction Images (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n\n return Images;\n}\n\nfunction Anchors (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n var detached = false;\n\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n var prevented = false;\n\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n\n this.bind();\n },\n\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n\n this.items[i].setAttribute('data-href', this.items[i].getAttribute('href'));\n\n this.items[i].removeAttribute('href');\n }\n\n detached = true;\n }\n\n return this;\n },\n\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n\n this.items[i].setAttribute('href', this.items[i].getAttribute('data-href'));\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n\n return Anchors;\n}\n\nvar NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\n\nfunction Controls (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var capture = supportsPassive$1 ? { passive: true } : false;\n\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n\n this.addBindings();\n },\n\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.add(settings.classes.activeNav);\n\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.activeNav);\n });\n }\n },\n\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.remove(Glide.settings.classes.activeNav);\n }\n },\n\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in driection precised in\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n event.preventDefault();\n\n Components.Run.make(Components.Direction.resolve(event.currentTarget.getAttribute('data-glide-dir')));\n }\n };\n\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n\n return Controls;\n}\n\nfunction Keyboard (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n if (event.keyCode === 39) {\n Components.Run.make(Components.Direction.resolve('>'));\n }\n\n if (event.keyCode === 37) {\n Components.Run.make(Components.Direction.resolve('<'));\n }\n }\n };\n\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n Events.on('update', function () {\n Keyboard.mount();\n });\n\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n Events.on('destroy', function () {\n Binder.destroy();\n });\n\n return Keyboard;\n}\n\nfunction Autoplay (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n }, this.time);\n }\n }\n },\n\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n _this2.stop();\n });\n\n Binder.on('mouseout', Components.Html.root, function () {\n _this2.start();\n });\n },\n\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n Events.on(['run.before', 'pause', 'destroy', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n Events.on(['run.after', 'play', 'swipe.end'], function () {\n Autoplay.start();\n });\n\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n Events.on('update', function () {\n Autoplay.mount();\n });\n\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n Events.on('destroy', function () {\n Binder.destroy();\n });\n\n return Autoplay;\n}\n\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\nfunction sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn('Breakpoints option must be an object');\n }\n\n return {};\n}\n\nfunction Breakpoints (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n var settings = Glide.settings;\n\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n var points = sortBreakpoints(settings.breakpoints);\n\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n var defaults = _extends({}, settings);\n\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia('(max-width: ' + point + 'px)').matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n _extends(settings, Breakpoints.match(points));\n\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n Events.on('update', function () {\n points = sortBreakpoints(points);\n\n defaults = _extends({}, settings);\n });\n\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n\n return Breakpoints;\n}\n\nvar COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n};\n\nvar Glide$1 = function (_Core) {\n inherits(Glide$$1, _Core);\n\n function Glide$$1() {\n classCallCheck(this, Glide$$1);\n return possibleConstructorReturn(this, (Glide$$1.__proto__ || Object.getPrototypeOf(Glide$$1)).apply(this, arguments));\n }\n\n createClass(Glide$$1, [{\n key: 'mount',\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return get(Glide$$1.prototype.__proto__ || Object.getPrototypeOf(Glide$$1.prototype), 'mount', this).call(this, _extends({}, COMPONENTS, extensions));\n }\n }]);\n return Glide$$1;\n}(Glide);\n\nexport default Glide$1;\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\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\nvar concat = uncurryThis([].concat);\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 ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var hasOwn = require('../internals/has-own-property');\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 (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\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 options.name - the .name of the function if it does not match the key\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","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\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","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nexports.UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('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 = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, 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.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n // eslint-disable-next-line max-statements -- TODO\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(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 = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], 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 call(nativeReplace, 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 if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\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","var FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (bind ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\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');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, 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 FORCED\n ) {\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.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: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n }\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (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","'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 uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\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(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 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 ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar TypeError = global.TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\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\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\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\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 : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(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 push(results, result);\n if (!global) break;\n\n var matchStr = toString(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 = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(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++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar regExpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = global.SyntaxError;\nvar getFlags = uncurryThis(regExpFlags);\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only propper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n (!CORRECT_NEW || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n }));\n\nvar handleDotAll = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var brackets = false;\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n result += chr + charAt(string, ++index);\n continue;\n }\n if (!brackets && chr === '.') {\n result += '[\\\\s\\\\S]';\n } else {\n if (chr === '[') {\n brackets = true;\n } else if (chr === ']') {\n brackets = false;\n } result += chr;\n }\n } return result;\n};\n\nvar handleNCG = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var named = [];\n var names = {};\n var brackets = false;\n var ncg = false;\n var groupid = 0;\n var groupname = '';\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n chr = chr + charAt(string, ++index);\n } else if (chr === ']') {\n brackets = false;\n } else if (!brackets) switch (true) {\n case chr === '[':\n brackets = true;\n break;\n case chr === '(':\n if (exec(IS_NCG, stringSlice(string, index + 1))) {\n index += 2;\n ncg = true;\n }\n result += chr;\n groupid++;\n continue;\n case chr === '>' && ncg:\n if (groupname === '' || hasOwn(names, groupname)) {\n throw new SyntaxError('Invalid capture group name');\n }\n names[groupname] = true;\n named[named.length] = [groupname, groupid];\n ncg = false;\n groupname = '';\n continue;\n }\n if (ncg) groupname += chr;\n else result += chr;\n } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var groups = [];\n var rawPattern = pattern;\n var rawFlags, dotAll, sticky, handled, result, state;\n\n if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n return pattern;\n }\n\n if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n pattern = pattern.source;\n if (flagsAreUndefined) flags = 'flags' in rawPattern ? rawPattern.flags : getFlags(rawPattern);\n }\n\n pattern = pattern === undefined ? '' : toString(pattern);\n flags = flags === undefined ? '' : toString(flags);\n rawPattern = pattern;\n\n if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n if (dotAll) flags = replace(flags, /s/g, '');\n }\n\n rawFlags = flags;\n\n if (UNSUPPORTED_Y && 'sticky' in re1) {\n sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n if (sticky) flags = replace(flags, /y/g, '');\n }\n\n if (UNSUPPORTED_NCG) {\n handled = handleNCG(pattern);\n pattern = handled[0];\n groups = handled[1];\n }\n\n result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n if (dotAll || sticky || groups.length) {\n state = enforceInternalState(result);\n if (dotAll) {\n state.dotAll = true;\n state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n }\n if (sticky) state.sticky = true;\n if (groups.length) state.groups = groups;\n }\n\n if (pattern !== rawPattern) try {\n // fails in old engines, but we have no alternatives for unsupported regex syntax\n createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n } catch (error) { /* empty */ }\n\n return result;\n };\n\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n\n for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n proxy(keys[index++]);\n }\n\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar n$ToString = RegExpPrototype[TO_STRING];\nvar getFlags = uncurryThis(regExpFlags);\n\nvar NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = $toString(R.source);\n var rf = R.flags;\n var f = $toString(rf === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype) ? getFlags(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar $IndexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? un$IndexOf(this, searchElement, fromIndex) || 0\n : $IndexOf(this, searchElement, fromIndex);\n }\n});\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","const runningOnBrowser = typeof window !== \"undefined\";\r\n\r\nconst isBot =\r\n\t(runningOnBrowser && !(\"onscroll\" in window)) ||\r\n\t(typeof navigator !== \"undefined\" &&\r\n\t\t/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent));\r\n\r\nconst supportsIntersectionObserver =\r\n\trunningOnBrowser && \"IntersectionObserver\" in window;\r\n\r\nconst supportsClassList =\r\n\trunningOnBrowser && \"classList\" in document.createElement(\"p\");\r\n\r\nconst defaultSettings = {\r\n elements_selector: \"img\",\r\n container: isBot || runningOnBrowser ? document : null,\r\n threshold: 300,\r\n thresholds: null,\r\n data_src: \"src\",\r\n data_srcset: \"srcset\",\r\n data_sizes: \"sizes\",\r\n data_bg: \"bg\",\r\n data_poster: \"poster\",\r\n class_loading: \"loading\",\r\n class_loaded: \"loaded\",\r\n class_error: \"error\",\r\n load_delay: 0,\r\n auto_unobserve: true,\r\n callback_enter: null,\r\n callback_exit: null,\r\n callback_reveal: null,\r\n callback_loaded: null,\r\n callback_error: null,\r\n callback_finish: null,\r\n use_native: false\r\n};\r\n\r\nconst getInstanceSettings = customSettings => {\r\n return Object.assign({}, defaultSettings, customSettings);\r\n};\r\n\r\n/* Creates instance and notifies it through the window element */\r\nconst createInstance = function(classObj, options) {\r\n var event;\r\n let eventString = \"LazyLoad::Initialized\";\r\n let instance = new classObj(options);\r\n try {\r\n // Works in modern browsers\r\n event = new CustomEvent(eventString, { detail: { instance } });\r\n } catch (err) {\r\n // Works in Internet Explorer (all versions)\r\n event = document.createEvent(\"CustomEvent\");\r\n event.initCustomEvent(eventString, false, false, { instance });\r\n }\r\n window.dispatchEvent(event);\r\n};\r\n\r\n/* Auto initialization of one or more instances of lazyload, depending on the \r\n options passed in (plain object or an array) */\r\nconst autoInitialize = (classObj, options) => {\r\n if (!options) {\r\n return;\r\n }\r\n if (!options.length) {\r\n // Plain object\r\n createInstance(classObj, options);\r\n } else {\r\n // Array of objects\r\n for (let i = 0, optionsItem; (optionsItem = options[i]); i += 1) {\r\n createInstance(classObj, optionsItem);\r\n }\r\n }\r\n};\r\n\r\nconst dataPrefix = \"data-\";\r\nconst processedDataName = \"was-processed\";\r\nconst timeoutDataName = \"ll-timeout\";\r\nconst trueString = \"true\";\r\n\r\nconst getData = (element, attribute) => {\r\n\treturn element.getAttribute(dataPrefix + attribute);\r\n};\r\n\r\nconst setData = (element, attribute, value) => {\r\n\tvar attrName = dataPrefix + attribute;\r\n\tif (value === null) {\r\n\t\telement.removeAttribute(attrName);\r\n\t\treturn;\r\n\t}\r\n\telement.setAttribute(attrName, value);\r\n};\r\n\r\nconst resetWasProcessedData = element =>\r\n\tsetData(element, processedDataName, null);\r\n\r\nconst setWasProcessedData = element =>\r\n\tsetData(element, processedDataName, trueString);\r\n\r\nconst getWasProcessedData = element =>\r\n\tgetData(element, processedDataName) === trueString;\r\n\r\nconst setTimeoutData = (element, value) =>\r\n\tsetData(element, timeoutDataName, value);\r\n\r\nconst getTimeoutData = element => getData(element, timeoutDataName);\r\n\r\nconst purgeProcessedElements = elements => {\r\n\treturn elements.filter(element => !getWasProcessedData(element));\r\n};\r\n\r\nconst purgeOneElement = (elements, elementToPurge) => {\r\n\treturn elements.filter(element => element !== elementToPurge);\r\n};\r\n\r\nconst getSourceTags = parentTag => {\r\n let sourceTags = [];\r\n for (let i = 0, childTag; (childTag = parentTag.children[i]); i += 1) {\r\n if (childTag.tagName === \"SOURCE\") {\r\n sourceTags.push(childTag);\r\n }\r\n }\r\n return sourceTags;\r\n};\r\n\r\nconst setAttributeIfValue = (element, attrName, value) => {\r\n if (!value) {\r\n return;\r\n }\r\n element.setAttribute(attrName, value);\r\n};\r\n\r\nconst setImageAttributes = (element, settings) => {\r\n setAttributeIfValue(element, \"sizes\", getData(element, settings.data_sizes));\r\n setAttributeIfValue(element, \"srcset\", getData(element, settings.data_srcset));\r\n setAttributeIfValue(element, \"src\", getData(element, settings.data_src));\r\n};\r\n\r\nconst setSourcesImg = (element, settings) => {\r\n const parent = element.parentNode;\r\n\r\n if (parent && parent.tagName === \"PICTURE\") {\r\n let sourceTags = getSourceTags(parent);\r\n sourceTags.forEach(sourceTag => {\r\n setImageAttributes(sourceTag, settings);\r\n });\r\n }\r\n\r\n setImageAttributes(element, settings);\r\n};\r\n\r\nconst setSourcesIframe = (element, settings) => {\r\n setAttributeIfValue(element, \"src\", getData(element, settings.data_src));\r\n};\r\n\r\nconst setSourcesVideo = (element, settings) => {\r\n let sourceTags = getSourceTags(element);\r\n sourceTags.forEach(sourceTag => {\r\n setAttributeIfValue(sourceTag, \"src\", getData(sourceTag, settings.data_src));\r\n });\r\n setAttributeIfValue(element, \"poster\", getData(element, settings.data_poster));\r\n setAttributeIfValue(element, \"src\", getData(element, settings.data_src));\r\n element.load();\r\n};\r\n\r\nconst setSourcesBgImage = (element, settings) => {\r\n const srcDataValue = getData(element, settings.data_src);\r\n const bgDataValue = getData(element, settings.data_bg);\r\n\r\n if (srcDataValue) {\r\n element.style.backgroundImage = `url(\"${srcDataValue}\")`;\r\n }\r\n\r\n if (bgDataValue) {\r\n element.style.backgroundImage = bgDataValue;\r\n }\r\n};\r\n\r\nconst setSourcesFunctions = {\r\n IMG: setSourcesImg,\r\n IFRAME: setSourcesIframe,\r\n VIDEO: setSourcesVideo\r\n};\r\n\r\nconst setSources = (element, instance) => {\r\n const settings = instance._settings;\r\n const tagName = element.tagName;\r\n const setSourcesFunction = setSourcesFunctions[tagName];\r\n if (setSourcesFunction) {\r\n setSourcesFunction(element, settings);\r\n instance.loadingCount += 1;\r\n instance._elements = purgeOneElement(instance._elements, element);\r\n return;\r\n }\r\n setSourcesBgImage(element, settings);\r\n};\r\n\r\nconst addClass = (element, className) => {\r\n\tif (supportsClassList) {\r\n\t\telement.classList.add(className);\r\n\t\treturn;\r\n\t}\r\n\telement.className += (element.className ? \" \" : \"\") + className;\r\n};\r\n\r\nconst removeClass = (element, className) => {\r\n\tif (supportsClassList) {\r\n\t\telement.classList.remove(className);\r\n\t\treturn;\r\n\t}\r\n\telement.className = element.className.\r\n\t\treplace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").\r\n\t\treplace(/^\\s+/, \"\").\r\n\t\treplace(/\\s+$/, \"\");\r\n};\r\n\r\nconst safeCallback = (callback, arg1, arg2, arg3) => {\r\n\tif (!callback) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (arg3 !== undefined) {\r\n\t\tcallback(arg1, arg2, arg3);\r\n\t\treturn;\r\n\t}\r\n\tif (arg2 !== undefined) {\r\n\t\tcallback(arg1, arg2);\r\n\t\treturn;\r\n\t}\r\n\tcallback(arg1);\r\n};\r\n\r\nconst genericLoadEventName = \"load\";\r\nconst mediaLoadEventName = \"loadeddata\";\r\nconst errorEventName = \"error\";\r\n\r\nconst addEventListener = (element, eventName, handler) => {\r\n element.addEventListener(eventName, handler);\r\n};\r\n\r\nconst removeEventListener = (element, eventName, handler) => {\r\n element.removeEventListener(eventName, handler);\r\n};\r\n\r\nconst addEventListeners = (element, loadHandler, errorHandler) => {\r\n addEventListener(element, genericLoadEventName, loadHandler);\r\n addEventListener(element, mediaLoadEventName, loadHandler);\r\n addEventListener(element, errorEventName, errorHandler);\r\n};\r\n\r\nconst removeEventListeners = (element, loadHandler, errorHandler) => {\r\n removeEventListener(element, genericLoadEventName, loadHandler);\r\n removeEventListener(element, mediaLoadEventName, loadHandler);\r\n removeEventListener(element, errorEventName, errorHandler);\r\n};\r\n\r\nconst eventHandler = function(event, success, instance) {\r\n var settings = instance._settings;\r\n const className = success ? settings.class_loaded : settings.class_error;\r\n const callback = success ? settings.callback_loaded : settings.callback_error;\r\n const element = event.target;\r\n\r\n removeClass(element, settings.class_loading);\r\n addClass(element, className);\r\n safeCallback(callback, element, instance);\r\n\r\n instance.loadingCount -= 1;\r\n\r\n if (instance._elements.length === 0 && instance.loadingCount === 0) {\r\n safeCallback(settings.callback_finish, instance);\r\n }\r\n};\r\n\r\nconst addOneShotEventListeners = (element, instance) => {\r\n const loadHandler = event => {\r\n eventHandler(event, true, instance);\r\n removeEventListeners(element, loadHandler, errorHandler);\r\n };\r\n const errorHandler = event => {\r\n eventHandler(event, false, instance);\r\n removeEventListeners(element, loadHandler, errorHandler);\r\n };\r\n addEventListeners(element, loadHandler, errorHandler);\r\n};\r\n\r\nconst managedTags = [\"IMG\", \"IFRAME\", \"VIDEO\"];\r\n\r\nconst revealAndUnobserve = (element, instance) => {\r\n var observer = instance._observer;\r\n revealElement(element, instance);\r\n if (observer && instance._settings.auto_unobserve) {\r\n observer.unobserve(element);\r\n }\r\n};\r\n\r\nconst revealElement = (element, instance, force) => {\r\n var settings = instance._settings;\r\n if (!force && getWasProcessedData(element)) {\r\n return; // element has already been processed and force wasn't true\r\n }\r\n if (managedTags.indexOf(element.tagName) > -1) {\r\n addOneShotEventListeners(element, instance);\r\n addClass(element, settings.class_loading);\r\n }\r\n setSources(element, instance);\r\n setWasProcessedData(element);\r\n safeCallback(settings.callback_reveal, element, instance);\r\n};\r\n\r\nconst cancelDelayLoad = element => {\r\n var timeoutId = getTimeoutData(element);\r\n if (!timeoutId) {\r\n return; // do nothing if timeout doesn't exist\r\n }\r\n clearTimeout(timeoutId);\r\n setTimeoutData(element, null);\r\n};\r\n\r\nconst delayLoad = (element, instance) => {\r\n var loadDelay = instance._settings.load_delay;\r\n var timeoutId = getTimeoutData(element);\r\n if (timeoutId) {\r\n return; // do nothing if timeout already set\r\n }\r\n timeoutId = setTimeout(function() {\r\n revealAndUnobserve(element, instance);\r\n cancelDelayLoad(element);\r\n }, loadDelay);\r\n setTimeoutData(element, timeoutId);\r\n};\r\n\r\nconst onEnter = (element, entry, instance) => {\r\n const settings = instance._settings;\r\n safeCallback(settings.callback_enter, element, entry, instance);\r\n if (!settings.load_delay) {\r\n revealAndUnobserve(element, instance);\r\n return;\r\n }\r\n delayLoad(element, instance);\r\n};\r\n\r\nconst onExit = (element, entry, instance) => {\r\n const settings = instance._settings;\r\n safeCallback(settings.callback_exit, element, entry, instance);\r\n if (!settings.load_delay) {\r\n return;\r\n }\r\n cancelDelayLoad(element);\r\n};\r\n\r\nconst isIntersecting = entry => entry.isIntersecting || entry.intersectionRatio > 0;\r\n\r\nconst getObserverSettings = settings => ({\r\n root: settings.container === document ? null : settings.container,\r\n rootMargin: settings.thresholds || settings.threshold + \"px\"\r\n});\r\n\r\nconst setObserver = instance => {\r\n if (!supportsIntersectionObserver) {\r\n return false;\r\n }\r\n instance._observer = new IntersectionObserver(entries => {\r\n entries.forEach(entry =>\r\n isIntersecting(entry)\r\n ? onEnter(entry.target, entry, instance)\r\n : onExit(entry.target, entry, instance)\r\n );\r\n }, getObserverSettings(instance._settings));\r\n return true;\r\n};\r\n\r\nconst nativeLazyTags = [\"IMG\", \"IFRAME\"];\r\n\r\nconst shouldUseNative = settings =>\r\n\tsettings.use_native && \"loading\" in HTMLImageElement.prototype;\r\n\r\nconst loadAllNative = instance => {\r\n\tinstance._elements.forEach(element => {\r\n\t\tif (nativeLazyTags.indexOf(element.tagName) === -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telement.setAttribute(\"loading\", \"lazy\");\r\n\t\trevealElement(element, instance);\r\n\t});\r\n};\r\n\r\nconst queryElements = settings => settings.container.querySelectorAll(settings.elements_selector);\r\n\r\nconst nodeSetToArray = nodeSet => Array.prototype.slice.call(nodeSet);\r\n\r\nconst getElements = (elements, settings) =>\r\n purgeProcessedElements(nodeSetToArray(elements || queryElements(settings)));\r\n\r\nconst retryLazyLoad = instance => {\r\n var settings = instance._settings;\r\n var errorElements = settings.container.querySelectorAll(\".\" + settings.class_error);\r\n nodeSetToArray(errorElements).forEach(element => {\r\n removeClass(element, settings.class_error);\r\n resetWasProcessedData(element);\r\n });\r\n instance.update();\r\n};\r\n\r\nconst setOnlineCheck = instance => {\r\n if (!runningOnBrowser) {\r\n return;\r\n }\r\n window.addEventListener(\"online\", event => {\r\n retryLazyLoad(instance);\r\n });\r\n};\r\n\r\nconst LazyLoad = function(customSettings, elements) {\r\n this._settings = getInstanceSettings(customSettings);\r\n this.loadingCount = 0;\r\n setObserver(this);\r\n this.update(elements);\r\n setOnlineCheck(this);\r\n};\r\n\r\nLazyLoad.prototype = {\r\n update: function(elements) {\r\n var settings = this._settings;\r\n this._elements = getElements(elements, settings);\r\n if (isBot || !this._observer) {\r\n this.loadAll();\r\n return;\r\n }\r\n if (shouldUseNative(settings)) {\r\n loadAllNative(this);\r\n this._elements = getElements(elements, settings);\r\n }\r\n this._elements.forEach(element => {\r\n this._observer.observe(element);\r\n });\r\n },\r\n\r\n destroy: function() {\r\n if (this._observer) {\r\n this._elements.forEach(element => {\r\n this._observer.unobserve(element);\r\n });\r\n this._observer = null;\r\n }\r\n this._elements = null;\r\n this._settings = null;\r\n },\r\n\r\n load: function(element, force) {\r\n revealElement(element, this, force);\r\n },\r\n\r\n loadAll: function() {\r\n this._elements.forEach(element => {\r\n revealAndUnobserve(element, this);\r\n });\r\n }\r\n};\r\n\r\n/* Automatic instances creation if required (useful for async script loading) */\r\nif (runningOnBrowser) {\r\n autoInitialize(LazyLoad, window.lazyLoadOptions);\r\n}\r\n\r\nexport default LazyLoad;\r\n","function toggleSearchForm( sourceEvent ) {\n\tlet button = sourceEvent.target;\n\tlet theWrapper = button.closest('.search-form');\n\tlet theForm = button.closest('form');\n\tlet theField = theForm.querySelector('.search-field');\n\n\tif( ! theWrapper.classList.contains('animating') ) {\n\t\tif( ! theWrapper.classList.contains('open') ) {\n\t\t\tsourceEvent.preventDefault();\n\t\t\ttheWrapper.classList.add('animating');\n\t\t\ttheWrapper.classList.add('open');\n\n\t\t\ttheWrapper.querySelector('.search-field').disabled = false;\n\n\t\t\ttheField.addEventListener( 'transitionend', function formOpened( event ) {\n\t\t\t\tevent.target.focus();\n\t\t\t\tevent.target.removeEventListener( 'transitionend', formOpened );\n\t\t\t} );\n\t\t} else if( ! theField.val() ) {\n\t\t\tsourceEvent.preventDefault();\n\t\t\ttheWrapper.classList.add('animating');\n\t\t\ttheWrapper.classList.remove('open');\n\t\t}\n\n\t\ttheField.addEventListener( 'transitionend', function animationOver( event ) {\n\t\t\ttheWrapper.classList.remove('animating');\n\t\t\tevent.target.removeEventListener( 'transitionend', animationOver );\n\t\t} );\n\t} else {\n\t\tsourceEvent.preventDefault();\n\t}\n}\n\nexport default toggleSearchForm;","var global = require('../internals/global');\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\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\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return call(nativeSplit, string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = call(regexpExec, separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n push(output, stringSlice(string, lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\n } else push(output, stringSlice(string, lastLastIndex));\n return output.length > lim ? arraySlice(output, 0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","// S'assure qu'un hash contient bel et bien son symbole '#'.\n\nexport function normalizeHash( hash, withSymbol = true ) {\n\tlet newHash = hash ? hash.replace( '#', '' ) : '';\n\n\tif( newHash && withSymbol ) {\n\t\tnewHash = '#' + newHash;\n\t}\n\n\treturn newHash;\n}\n\n\n// Prend un d'ID #hash, et renvoie une node HTMLElement (ou alors renvoie ce qu'on a reçu si c'en est déjà un)\n\nexport function getElementByHash( selector ) {\n\tlet element;\n\n\tif( selector ) {\n\t\tif( 'string' == typeof selector ) {\n\t\t\telement = document.querySelector( normalizeHash( selector ) );\n\t\t} else {\n\t\t\telement = selector;\n\t\t}\n\t} else {\n\t\telement = null;\n\t}\n\n\treturn element;\n}\n\n\n// Change le hash de la page, mais ne scroll pas vers ce hash.\n// historyAction: 'push' (ajoute à l'historique) | 'replace' (n'ajoute pas à l'historique mais remplace l'état actuel)\nexport function changeHashWithoutScrolling( hash = null, historyStateObj = null, historyAction = 'push' ) {\n\thash = normalizeHash( hash );\n\tlet curHash = normalizeHash( window.location.hash );\n\n\tif( hash != curHash ) {\n\t\tlet urlForHistory = hash ? hash : window.location.href.replace( /#.*$/, '' );\n\n\t\tif( 'push' == historyAction ) {\n\t\t\thistory.pushState( historyStateObj, null, urlForHistory );\n\t\t} else if( 'replace' == historyAction ) {\n\t\t\thistory.replaceState( historyStateObj, null, urlForHistory );\n\t\t}\n\t}\n}\n\n\n// elem : Élément DOM sur lequel on se pose la question\n// offset : Nombre de pixels de grâce (nombre plus gros = plus tolérant)\n// completelyInside : si true, l'élément doit être à 100% dans le viewport ; si false, il peut dépasser\n// parent : par rapport à quoi? | défaut window/viewport\n\nexport function isInViewport( elem, offset, completelyInside, parent ) {\n\toffset = offset || ( -1 * window.fixedElHeight );\n\tcompletelyInside = completelyInside || false;\n\tparent = parent || window;\n\n\tlet condition;\n\tlet viewportBottom;\n\tlet viewportTop;\n\tlet elemTop;\n\tlet elemBottom;\n\n\tif( 'string' == typeof elem ) {\n\t\telem = document.querySelector( elem );\n\t}\n\n\tif( elem ) {\n\t\tif( parent == window ) {\n\t\t\tviewportTop = 0;\n\t\t\tviewportBottom = window.vHeight;\n\t\t\telemTop = elem.getBoundingClientRect().top;\n\t\t\telemBottom = elem.getBoundingClientRect().bottom;\n\t\t} else {\n\t\t\tviewportTop = parent.scrollTop;\n\t\t\tviewportBottom = parent.scrollTop + parent.offsetHeight;\n\t\t\telemTop = elem.offsetTop;\n\t\t\telemBottom = elem.offsetBottom + elem.offsetHeight;\n\t\t}\n\n\n\t\tif( completelyInside ) {\n\t\t\tcondition = (\n\t\t\t\t( elemTop >= viewportTop + offset && elemTop < viewportBottom - offset )\n\t\t\t\t&& ( elemBottom >= viewportTop + offset && elemBottom < viewportBottom - offset )\n\t\t\t);\n\t\t} else {\n\t\t\tcondition = (\n\t\t\t\t( elemTop >= viewportTop + offset && elemTop < viewportBottom - offset )\n\t\t\t\t|| ( elemBottom >= viewportTop + offset && elemBottom < viewportBottom - offset )\n\t\t\t);\n\t\t}\n\t} else {\n\t\tcondition = null;\n\t}\n\n\treturn condition;\n}\n\n\n// Fait apparaître des trucs quand ils entrent dans le viewport\n\nexport function smoothFadeIn( thisEl ) {\n\tif( ! thisEl.classList.contains( 'visible' ) && isInViewport( thisEl ) ) {\n\t\tthisEl.classList.add( 'visible' );\n\t}\n}\n\n\n// Change complètement l'URL de la page sans rediriger en enregistrant le changement dans l'historique.\n// objet d'args :\n// context('open'/'close') : 'open' = ouverture du popup / 'close' = retour à l'URL d'origine.\n\nexport function changeUrl( args ) {\n\tlet returnVal;\n\n\tswitch(args.context) {\n\t\tcase 'open':\n\t\t\twindow.changeUrlOriginalTitle = document.title;\n\t\t\twindow.changeUrlOriginalUrl = window.location.href;\n\t\t\twindow.changeUrlOriginalId = document.body.dataset.id || window.location.href;\n\n\t\t\twindow.history.pushState(\n\t\t\t\t{\n\t\t\t\t\tid: 'popup-' + args.id\n\t\t\t\t},\n\t\t\t\targs.title,\n\t\t\t\targs.url\n\t\t\t);\n\t\t\tdocument.title = args.title;\n\n\t\t\treturnVal = true;\n\t\t\tbreak;\n\n\t\tcase 'close':\n\t\t\tif( window.changeUrlOriginalId ) {\n\t\t\t\twindow.history.pushState(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: window.changeUrlOriginalId\n\t\t\t\t\t},\n\t\t\t\t\twindow.changeUrlOriginalTitle,\n\t\t\t\t\twindow.changeUrlOriginalUrl\n\t\t\t\t);\n\t\t\t\tdocument.title = window.changeUrlOriginalTitle;\n\n\t\t\t\twindow.changeUrlOriginalTitle = null;\n\t\t\t\twindow.changeUrlOriginalUrl = null;\n\t\t\t\twindow.changeUrlOriginalId = null;\n\n\t\t\t\treturnVal = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t}\n\n\treturn returnVal;\n}\n\n\n// S'assure qu'aucun caractère réservé n'est dans une string pour regex\n\nexport function escapeRegExp(text) {\n\tif ( ! text || 'string' != typeof text ) {\n\t\treturn '';\n\t}\n\treturn text.replace(/[-[\\]{}()*+?.,\\\\/^$|#\\s]/g, '\\\\$&');\n}\n\n\n// Est-ce que tous les éléments de cet array sont la même chose?\n\nexport function arrayAllEqual( array ) {\n\treturn array.every( function( elementToCheck ) {\n\t\treturn elementToCheck === array[0];\n\t} );\n}\n\n\n// Est-ce que toutes ces URLs sont la même chose?\n// objet d'args :\n// urls(array) : URLS à vérifier\n// stripHash(bool) : retirer toutes les hash (#) des URLs avant de vérifier? | défaut true\n// stripGet(bool) : retirer tous les paramètres get (?var=val) des URLs avant de vérifier? | défaut false\n\nexport function urlsAreSamePage( args ) {\n\tlet getParamsRegex = /\\?.+$/;\n\tlet trailingSlashRegexes = [\n\t\t{\n\t\t\tregex: /\\/$/,\n\t\t\treplacement: '',\n\t\t},\n\t\t{\n\t\t\tregex: /\\/\\?/,\n\t\t\treplacement: '?',\n\t\t},\n\t\t{\n\t\t\tregex: /\\/#/,\n\t\t\treplacement: '#',\n\t\t}\n\t];\n\tlet nakedUrls = [];\n\targs = args || {};\n\n\targs.urls = args.urls || [];\n\targs.stripHash = args.stripHash || true;\n\targs.stripGet = args.stripGet || false;\n\n\tif( 'string' == typeof args.urls ) {\n\t\targs.urls = [ args.urls ];\n\t}\n\n\t// Une seule URL ? On compare avec celle de la page actuelle.\n\tif( Array.isArray( args.urls ) && 1 == args.urls.length ) {\n\t\targs.urls.push( window.location.href );\n\t}\n\n\targs.urls.forEach( function( thisUrl ) {\n\t\tlet hashIndex = thisUrl.indexOf( '#' );\n\t\tlet urlHash = -1 !== hashIndex ? thisUrl.substring( hashIndex ) : '';\n\t\tlet nakedUrl = thisUrl;\n\n\t\tif( args.stripHash ) {\n\t\t\tnakedUrl = nakedUrl.replace( urlHash, '' );\n\t\t}\n\n\t\tif( args.stripGet ) {\n\t\t\tnakedUrl = nakedUrl.replace( getParamsRegex, '' );\n\t\t}\n\n\t\ttrailingSlashRegexes.forEach( function( thisRegex ) {\n\t\t\tnakedUrl.replace( thisRegex.regex, thisRegex.replacement );\n\t\t} );\n\n\t\tnakedUrls.push( nakedUrl );\n\t} );\n\n\treturn arrayAllEqual( nakedUrls );\n}\n\n\n// Combien de chiffres après la virgule le chiffre a-t-il ?\n// https://stackoverflow.com/a/27082406/1995518\n\nexport function countDecimals( value ) {\n\tif( Math.floor(value) !== value ) {\n\t\treturn value.toString().split(\".\")[1].length || 0;\n\t}\n\treturn 0;\n}\n\n\n// Cet élément fait-il partie d'un élément no-scripts? Si oui on initialisera pas toutes sortes d'affaires.\n\nexport function scriptsOk( element ) {\n\treturn element.closest( '.no-scripts' ) ? false : true;\n}","/*** Évènement scrollinterval - comme scroll mais au maximum aux 50 ms. *************************/\n// Plus performant qu'un évènement scroll. Se hooker là-dessus quand c'est pas nécessaire d'être au pixel près.\n// scrollinterval : Se lance toutes les 100 ms à condition qu'on ait scrollé depuis la dernière fois.\n// Utilisation : window.addEventListener( 'scrollinterval', function() { /* Votre code */ } );\n// scrollintervalbefore et scrollintervalafter : Se lancent toutes les X ms peu importe quoi\n\nlet scrollEventBefore = new Event( 'scrollintervalbefore' );\nlet scrollEvent = new Event( 'scrollinterval' );\nlet scrollEventAfter = new Event( 'scrollintervalafter' );\n\nsetInterval( function() {\n\twindow.dispatchEvent( scrollEventBefore );\n\n\tif( 'undefined' == typeof window.lastScroll || window.curScroll.top != window.lastScroll.top ) {\n\t\twindow.dispatchEvent( scrollEvent );\n\t}\n\n\twindow.dispatchEvent( scrollEventAfter );\n}, 100 );","function PrettyFileInput( args ) {\n\tlet that = this;\n\n\targs = args || {};\n\targs.input = args.input || null;\n\targs.parentSel = args.parentSel || '.wrap-field';\n\targs.wrapperSel = args.wrapperSel || '.pretty-file-input';\n\targs.labelSel = args.labelSel || '.file-input-label';\n\targs.wrapLabelSel = args.wrapLabelSel || '.wrap-file-input-label';\n\targs.wrapLabelInnerSel = args.wrapLabelInnerSel || '.wrap-file-input-label-inner';\n\n\targs.labelSeveralFilesClass = args.labelSeveralFilesClass || 'label-several-files';\n\targs.labelOneFileClass = args.labelOneFileClass || 'label-one-file';\n\targs.labelNoFilesClass = args.labelNoFilesClass || 'label-no-files';\n\targs.numberClass = args.numberClass || 'number';\n\targs.dragSupportedClass = args.dragSupportedClass || 'supports-drag';\n\targs.draggingClass = args.draggingClass || 'dragging';\n\targs.draggingThisClass = args.draggingThisClass || 'dragging';\n\targs.dragOverlayClass = args.dragOverlayClass || 'drag-overlay';\n\targs.dragOverlayInnerClass = args.dragOverlayInnerClass || 'drag-overlay-inner';\n\n\targs.deleteButtonIconClasses = args.deleteButtonIconClasses || [ 'icon', 'icon-close-x-thick' ];\n\targs.deleteButtonClass = args.deleteButtonClass || 'file-input-delete';\n\n\targs.debug = args.debug || false;\n\n\tthat.args = args;\n\tthat.initSuccess = false;\n\n\tthat.init = function() {\n\t\tthat.i18n = window.bonesGlobals.i18n.prettyFileInput;\n\t\tthat.elementsDragging = 0; // Nombre d'éléments au-dessus desquels on est en train de drag dans tout le site\n\t\tthat.elementsDraggingThis = 0; // Nombre d'éléments au-dessus desquels on est en train de drag dans ce champ\n\n\t\tthat.input = that.args.input;\n\t\tthat.parent = that.input.closest( that.args.parentSel );\n\t\tthat.wrapper = that.parent.querySelector( that.args.wrapperSel );\n\n\t\tthat.initLabels();\n\t\tthat.initDeleteButton();\n\n\t\tthat.dragSupported = that.checkDragSupport();\n\n\t\tif( that.args.debug && ! that.i18n ) {\n\t\t\tconsole.error( \"pretty-file-input: i18n missing. Make sure you put all required entries in 'bonesGlobals.i18n.prettyFileInput'.\" );\n\t\t\treturn;\n\t\t}\n\n\t\tif( ! that.input || ! that.parent || ! that.wrapper || ! that.wrapLabel || ! that.labels.noFiles ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthat.initDrag();\n\n\t\tthat.applyFileNumber();\n\t\tthat.addEventListeners();\n\t\tthat.initSuccess = true;\n\t};\n\n\tthat.checkDragSupport = function() {\n\t\treturn (\n\t\t\t'draggable' in that.wrapper \n\t\t\t|| (\n\t\t\t\t'ondragstart' in that.wrapper\n\t\t\t\t&& 'ondrag' in that.wrapper\n\t\t\t)\n\t\t);\n\t};\n\n\t// On crée les éléments de labels qui disent si on a des fichiers et combien.\n\tthat.initLabels = function() {\n\t\tthat.wrapLabel = that.parent.querySelector( that.args.wrapLabelSel );\n\t\tthat.wrapLabelInner = that.parent.querySelector( that.args.wrapLabelInnerSel );\n\t\tthat.labels = {};\n\n\t\t// Enregistrement du label (pas de fichiers)\n\t\tthat.basicLabelText = that.i18n.simple;\n\t\tthat.labels.noFiles = that.parent.querySelector( that.args.labelSel );\n\n\t\t// Copie et différentiation d'un nouveau label (un seul fichier)\n\t\tthat.labels.oneFile = that.labels.noFiles.cloneNode();\n\t\tthat.labels.oneFile.classList.add( args.labelOneFileClass );\n\t\tthat.wrapLabelInner.append( that.labels.oneFile );\n\n\t\t// Copie et différentiation d'un nouveau label (avec fichiers)\n\t\tthat.labels.severalFiles = that.labels.noFiles.cloneNode();\n\t\tthat.labels.severalFiles.innerHTML = that.i18n.hasFiles.replace( '%s', '' + 0 + '' );\n\t\tthat.labels.severalFiles.classList.add( that.args.labelSeveralFilesClass );\n\t\tthat.wrapLabelInner.append( that.labels.severalFiles );\n\n\t\t// Ajout d'une référence pour aller modifier le span du nombre et mettre le chiffre dedans\n\t\tthat.labels.number = that.labels.severalFiles.querySelector( '.' + that.args.numberClass );\n\n\t\t// Ajout d'une classe pour différencier le label (pas de fichiers)\n\t\tthat.labels.noFiles.classList.add( that.args.labelNoFilesClass );\n\t};\n\n\t// On ajoute un bouton X qui permet de vider le champ file si on s'est trompé\n\tthat.initDeleteButton = function() {\n\t\tthat.deleteButton = document.createElement( 'button' );\n\t\tthat.deleteButton.type = 'button';\n\t\tthat.deleteButton.title = that.i18n.deleteFiles;\n\t\tthat.deleteButton.ariaLabel = that.i18n.deleteFiles;\n\t\tthat.deleteButton.classList.add( that.args.deleteButtonClass );\n\n\t\t// Ajout d'une icône\n\t\tlet icon = document.createElement( 'span' );\n\t\ticon.classList.add( ...that.args.deleteButtonIconClasses );\n\t\ticon.role = 'presentation';\n\t\tthat.deleteButton.append( icon );\n\n\t\t// Ajout du X au wrap des labels\n\t\tthat.wrapLabelInner.append( that.deleteButton );\n\t};\n\n\t// On prépare tout ce qui a trait au drag-and-drop\n\tthat.initDrag = function() {\n\t\tif( that.dragSupported ) {\n\t\t\tlet dragOverlay = document.createElement( 'span' );\n\t\t\tlet dragOverlayInner = document.createElement( 'span' );\n\n\t\t\tdragOverlay.classList.add( that.args.dragOverlayClass );\n\t\t\tdragOverlayInner.classList.add( that.args.dragOverlayInnerClass );\n\t\t\tdragOverlayInner.innerHTML = that.i18n.dropHere;\n\n\t\t\tdragOverlay.append( dragOverlayInner );\n\t\t\tthat.dragOverlay = dragOverlay;\n\t\t\tthat.wrapper.append( that.dragOverlay );\n\n\t\t\tthat.basicLabelText = that.i18n.simpleDrag;\n\n\t\t\tthat.wrapper.classList.add( that.args.dragSupportedClass );\n\t\t} else {\n\t\t\tthat.dragOverlay = null;\n\t\t\tthat.wrapper.classList.remove( that.args.dragSupportedClass );\n\t\t}\n\n\t\tthat.labels.noFiles.innerHTML = that.basicLabelText;\n\t};\n\n\tthat.applyFileNumber = function() {\n\t\tlet fileNumber = that.input.files.length || 0;\n\n\t\tif( 1 == fileNumber ) {\n\t\t\t// normalize permet d'inverser la division du e et de son accent aigu qui se produit normalement.\n\t\t\tthat.labels.oneFile.innerHTML = that.input.files[0].name.normalize();\n\t\t}\n\n\t\tthat.wrapper.setAttribute( 'data-number-files', fileNumber );\n\t\tthat.labels.number.innerHTML = fileNumber;\n\t};\n\n\tthat.updateDragClasses = function() {\n\t\tif( that.elementsDragging > 0 ) {\n\t\t\tdocument.documentElement.classList.add( that.args.draggingClass );\n\t\t} else {\n\t\t\tdocument.documentElement.classList.remove( that.args.draggingClass );\n\t\t}\n\n\t\tif( that.elementsDraggingThis > 0 ) {\n\t\t\tthat.wrapper.classList.add( that.args.draggingThisClass );\n\t\t} else {\n\t\t\tthat.wrapper.classList.remove( that.args.draggingThisClass );\n\t\t}\n\t};\n\n\tthat.incrementElementsDragging = function( multiplier = 1 ) {\n\t\tthat.elementsDragging = Math.max( ( that.elementsDragging + multiplier ), 0 );\n\t};\n\n\tthat.incrementElementsDraggingThis = function( multiplier = 1 ) {\n\t\tthat.elementsDraggingThis = Math.max( ( that.elementsDraggingThis + multiplier ), 0 );\n\t};\n\n\tthat.triggerChange = function( target ) {\n\t\t// On informe l'input qu'il a changé, parce qu'il est visiblement pas au courant.\n\t\tif( that.args.debug ) console.log('pretty-file-input: triggered change');\n\t\tlet changeEvent = new Event( 'change' );\n\t\ttarget.dispatchEvent( changeEvent );\n\t};\n\n\tthat.addEventListeners = function() {\n\t\t// Si le form est validé, on veut pas faire la modification dès le changement. La validation va nous le dire quand elle va avoir fini.\n\t\tlet changeEventName;\n\n\t\tif( that.input.form._FormValidation ) {\n\t\t\tchangeEventName = 'validationcomplete';\n\t\t} else {\n\t\t\tchangeEventName = 'change';\n\t\t}\n\n\t\tthat.input.addEventListener( changeEventName, function() {\n\t\t\tif( that.args.debug ) console.log('pretty-file-input: Field changed. Applying number.');\n\t\t\tthat.applyFileNumber();\n\t\t\tthat.deleteButton.disabled = false;\n\t\t} );\n\n\t\t// Classes qui nous permettent de faire apparaître l'overlay dès qu'on est en train de dragger un fichier dans le site\n\t\tdocument.addEventListener( 'dragenter', function() {\n\t\t\tthat.incrementElementsDragging();\n\t\t\tthat.updateDragClasses();\n\t\t} );\n\n\t\tdocument.addEventListener( 'dragleave', function() {\n\t\t\tthat.incrementElementsDragging( -1 );\n\t\t\tthat.updateDragClasses();\n\t\t} );\n\n\t\t// Classes pour que le champ devienne plus présent quand on est en train de dragger directement dessus\n\t\tthat.wrapper.addEventListener( 'dragenter', function() {\n\t\t\tthat.incrementElementsDraggingThis();\n\t\t\tthat.updateDragClasses();\n\t\t} );\n\n\t\tthat.wrapper.addEventListener( 'dragleave', function() {\n\t\t\tthat.incrementElementsDraggingThis( -1 );\n\t\t\tthat.updateDragClasses();\n\t\t} );\n\n\n\t\t// Si on annule pas ces évènements-là, l'évènement drop ne se lancera pas\n\t\tlet eventsToPrevent = [ 'dragover', 'dragenter' ];\n\n\t\teventsToPrevent.forEach( function( eventName ) {\n\t\t\tthat.wrapper.addEventListener( eventName, function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t} );\n\t\t} );\n\n\n\t\t// On met le fichier dans l'input\n\t\tthat.wrapper.addEventListener( 'drop', function( event ) {\n\t\t\t// Sinon la page va juste ouvrir le document glissé et on va perdre le site\n\t\t\tevent.preventDefault();\n\n\t\t\tthat.elementsDragging = 0;\n\t\t\tthat.elementsDraggingThis = 0;\n\t\t\tthat.updateDragClasses();\n\n\t\t\tif( event.dataTransfer.files ) {\n\t\t\t\tthat.input.files = event.dataTransfer.files;\n\t\t\t\tthat.triggerChange( that.input );\n\n\t\t\t\tif( that.args.debug ) {\n\t\t\t\t\tconsole.log( '[DROP] set files to :' );\n\t\t\t\t\tconsole.log( that.input.files );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Bouton delete : vider le input file\n\t\tthat.deleteButton.addEventListener( 'click', function( event ) {\n\t\t\t// Sinon cliquer sur le delete ouvrirait Parcourir\n\t\t\tevent.stopPropagation();\n\t\t\tthat.deleteButton.disabled = true;\n\t\t\tthat.input.value = '';\n\t\t\tthat.triggerChange( that.input );\n\n\t\t\tif( that.args.debug ) console.log( \"pretty-file-input: button pressed; deleted files.\" );\n\t\t} );\n\t};\n\n\tthat.init();\n\n\tif( ! that.initSuccess ) {\n\t\tif( that.args.debug ) {\n\t\t\tconsole.error( \"pretty-file-input: One or more of the following elements was not found.\" );\n\t\t\tconsole.log( \"input:\" );\n\t\t\tconsole.log( that.input );\n\t\t\tconsole.log( \"parent '\" + that.args.parentSel + \"':\" );\n\t\t\tconsole.log( that.parent );\n\t\t\tconsole.log( \"wrapper '\" + that.args.wrapperSel + \"':\" );\n\t\t\tconsole.log( that.wrapper );\n\t\t\tconsole.log( \"wrapLabel : '\" + that.args.wrapLabelSel + \"':\" );\n\t\t\tconsole.log( that.wrapLabel );\n\t\t\tconsole.log( \"labels.noFiles : '\" + that.args.labelSel + \"':\" );\n\t\t\tconsole.log( that.labels.noFiles );\n\t\t}\n\n\t\treturn [];\n\t} else {\n\t\tthat.input._PrettyFileInput = that;\n\t}\n}\n\nexport default PrettyFileInput;","function placeholderLabelUpdate( input ) {\n\tif( input instanceof Event ) {\n\t\tinput = input.target;\n\t}\n\n\tlet parent = input.closest('.has-placeholder-label');\n\tlet label = parent.querySelector('.placeholder-label');\n\t// console.log('value : \"' + $(this).val() + '\"');\n\n\tif( label ) {\n\t\tif( ! input.value ) {\n\t\t\tlabel.classList.remove('out-of-way');\n\t\t} else {\n\t\t\tlabel.classList.add('out-of-way');\n\t\t}\n\t}\n}\n\nexport default placeholderLabelUpdate;","/*** Sécurité pour les liens \"nouvel onglet\" **************************************************************/\n\n(function() {\n\tlet eventNames = [ 'mouseup', 'mousedown', 'mousemove' ];\n\twindow.lastWindowOpened = 0;\n\n\teventNames.forEach( function( eventName ) {\n\t\tdocument.addEventListener( eventName, function( event ) {\n\t\t\tif( 1 == event.which || 2 == event.which ) {\n\t\t\t\tlet linkClicked = event.target.closest('a:not(.no-tab-security)');\n\t\t\t\tlet linkTarget = linkClicked ? linkClicked.getAttribute('target') : null;\n\t\t\t\tlet newWindow;\n\t\t\t\tlet targetRegex = new RegExp( /^(_blank|_new)$/, 'i' );\n\n\t\t\t\tif( linkTarget && targetRegex.test( linkTarget ) ) {\n\t\t\t\t\tlet linkUrl = linkClicked.getAttribute('href');\n\n\t\t\t\t\tswitch( event.eventName ) {\n\t\t\t\t\t\tcase 'mousedown':\n\t\t\t\t\t\t\tlinkClicked.dragging = false;\n\t\t\t\t\t\t\tlinkClicked.clicking = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'mousemove':\n\t\t\t\t\t\t\tif( linkClicked.clicking ) {\n\t\t\t\t\t\t\t\tlinkClicked.dragging = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'mouseup':\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t\tif( linkClicked.clicking && ! linkClicked.dragging ) {\n\t\t\t\t\t\t\t\tnewWindow = window.open( linkUrl, 'targetBlankWindow_' + window.lastWindowOpened );\n\n\t\t\t\t\t\t\t\t++ window.lastWindowOpened;\n\n\t\t\t\t\t\t\t\tif( newWindow ) {\n\t\t\t\t\t\t\t\t\tnewWindow.opener = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlinkClicked.clicking = false;\n\t\t\t\t\t\t\tlinkClicked.dragging = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}) ();","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar TypeError = global.TypeError;\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","module.exports = {};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar Array = global.Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n redefine(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof Object ? ObjectPrototype : null;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !hasOwn(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.GLightbox = factory());\n}(this, (function () { 'use strict';\n\n function _typeof(obj) {\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\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _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\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n }\n\n function getLen(v) {\n return Math.sqrt(v.x * v.x + v.y * v.y);\n }\n\n function dot(v1, v2) {\n return v1.x * v2.x + v1.y * v2.y;\n }\n\n function getAngle(v1, v2) {\n var mr = getLen(v1) * getLen(v2);\n if (mr === 0) return 0;\n var r = dot(v1, v2) / mr;\n if (r > 1) r = 1;\n return Math.acos(r);\n }\n\n function cross(v1, v2) {\n return v1.x * v2.y - v2.x * v1.y;\n }\n\n function getRotateAngle(v1, v2) {\n var angle = getAngle(v1, v2);\n\n if (cross(v1, v2) > 0) {\n angle *= -1;\n }\n\n return angle * 180 / Math.PI;\n }\n\n var EventsHandlerAdmin = function () {\n function EventsHandlerAdmin(el) {\n _classCallCheck(this, EventsHandlerAdmin);\n\n this.handlers = [];\n this.el = el;\n }\n\n _createClass(EventsHandlerAdmin, [{\n key: \"add\",\n value: function add(handler) {\n this.handlers.push(handler);\n }\n }, {\n key: \"del\",\n value: function del(handler) {\n if (!handler) this.handlers = [];\n\n for (var i = this.handlers.length; i >= 0; i--) {\n if (this.handlers[i] === handler) {\n this.handlers.splice(i, 1);\n }\n }\n }\n }, {\n key: \"dispatch\",\n value: function dispatch() {\n for (var i = 0, len = this.handlers.length; i < len; i++) {\n var handler = this.handlers[i];\n if (typeof handler === 'function') handler.apply(this.el, arguments);\n }\n }\n }]);\n\n return EventsHandlerAdmin;\n }();\n\n function wrapFunc(el, handler) {\n var EventshandlerAdmin = new EventsHandlerAdmin(el);\n EventshandlerAdmin.add(handler);\n return EventshandlerAdmin;\n }\n\n var TouchEvents = function () {\n function TouchEvents(el, option) {\n _classCallCheck(this, TouchEvents);\n\n this.element = typeof el == 'string' ? document.querySelector(el) : el;\n this.start = this.start.bind(this);\n this.move = this.move.bind(this);\n this.end = this.end.bind(this);\n this.cancel = this.cancel.bind(this);\n this.element.addEventListener(\"touchstart\", this.start, false);\n this.element.addEventListener(\"touchmove\", this.move, false);\n this.element.addEventListener(\"touchend\", this.end, false);\n this.element.addEventListener(\"touchcancel\", this.cancel, false);\n this.preV = {\n x: null,\n y: null\n };\n this.pinchStartLen = null;\n this.zoom = 1;\n this.isDoubleTap = false;\n\n var noop = function noop() {};\n\n this.rotate = wrapFunc(this.element, option.rotate || noop);\n this.touchStart = wrapFunc(this.element, option.touchStart || noop);\n this.multipointStart = wrapFunc(this.element, option.multipointStart || noop);\n this.multipointEnd = wrapFunc(this.element, option.multipointEnd || noop);\n this.pinch = wrapFunc(this.element, option.pinch || noop);\n this.swipe = wrapFunc(this.element, option.swipe || noop);\n this.tap = wrapFunc(this.element, option.tap || noop);\n this.doubleTap = wrapFunc(this.element, option.doubleTap || noop);\n this.longTap = wrapFunc(this.element, option.longTap || noop);\n this.singleTap = wrapFunc(this.element, option.singleTap || noop);\n this.pressMove = wrapFunc(this.element, option.pressMove || noop);\n this.twoFingerPressMove = wrapFunc(this.element, option.twoFingerPressMove || noop);\n this.touchMove = wrapFunc(this.element, option.touchMove || noop);\n this.touchEnd = wrapFunc(this.element, option.touchEnd || noop);\n this.touchCancel = wrapFunc(this.element, option.touchCancel || noop);\n this._cancelAllHandler = this.cancelAll.bind(this);\n window.addEventListener('scroll', this._cancelAllHandler);\n this.delta = null;\n this.last = null;\n this.now = null;\n this.tapTimeout = null;\n this.singleTapTimeout = null;\n this.longTapTimeout = null;\n this.swipeTimeout = null;\n this.x1 = this.x2 = this.y1 = this.y2 = null;\n this.preTapPosition = {\n x: null,\n y: null\n };\n }\n\n _createClass(TouchEvents, [{\n key: \"start\",\n value: function start(evt) {\n if (!evt.touches) return;\n this.now = Date.now();\n this.x1 = evt.touches[0].pageX;\n this.y1 = evt.touches[0].pageY;\n this.delta = this.now - (this.last || this.now);\n this.touchStart.dispatch(evt, this.element);\n\n if (this.preTapPosition.x !== null) {\n this.isDoubleTap = this.delta > 0 && this.delta <= 250 && Math.abs(this.preTapPosition.x - this.x1) < 30 && Math.abs(this.preTapPosition.y - this.y1) < 30;\n if (this.isDoubleTap) clearTimeout(this.singleTapTimeout);\n }\n\n this.preTapPosition.x = this.x1;\n this.preTapPosition.y = this.y1;\n this.last = this.now;\n var preV = this.preV,\n len = evt.touches.length;\n\n if (len > 1) {\n this._cancelLongTap();\n\n this._cancelSingleTap();\n\n var v = {\n x: evt.touches[1].pageX - this.x1,\n y: evt.touches[1].pageY - this.y1\n };\n preV.x = v.x;\n preV.y = v.y;\n this.pinchStartLen = getLen(preV);\n this.multipointStart.dispatch(evt, this.element);\n }\n\n this._preventTap = false;\n this.longTapTimeout = setTimeout(function () {\n this.longTap.dispatch(evt, this.element);\n this._preventTap = true;\n }.bind(this), 750);\n }\n }, {\n key: \"move\",\n value: function move(evt) {\n if (!evt.touches) return;\n var preV = this.preV,\n len = evt.touches.length,\n currentX = evt.touches[0].pageX,\n currentY = evt.touches[0].pageY;\n this.isDoubleTap = false;\n\n if (len > 1) {\n var sCurrentX = evt.touches[1].pageX,\n sCurrentY = evt.touches[1].pageY;\n var v = {\n x: evt.touches[1].pageX - currentX,\n y: evt.touches[1].pageY - currentY\n };\n\n if (preV.x !== null) {\n if (this.pinchStartLen > 0) {\n evt.zoom = getLen(v) / this.pinchStartLen;\n this.pinch.dispatch(evt, this.element);\n }\n\n evt.angle = getRotateAngle(v, preV);\n this.rotate.dispatch(evt, this.element);\n }\n\n preV.x = v.x;\n preV.y = v.y;\n\n if (this.x2 !== null && this.sx2 !== null) {\n evt.deltaX = (currentX - this.x2 + sCurrentX - this.sx2) / 2;\n evt.deltaY = (currentY - this.y2 + sCurrentY - this.sy2) / 2;\n } else {\n evt.deltaX = 0;\n evt.deltaY = 0;\n }\n\n this.twoFingerPressMove.dispatch(evt, this.element);\n this.sx2 = sCurrentX;\n this.sy2 = sCurrentY;\n } else {\n if (this.x2 !== null) {\n evt.deltaX = currentX - this.x2;\n evt.deltaY = currentY - this.y2;\n var movedX = Math.abs(this.x1 - this.x2),\n movedY = Math.abs(this.y1 - this.y2);\n\n if (movedX > 10 || movedY > 10) {\n this._preventTap = true;\n }\n } else {\n evt.deltaX = 0;\n evt.deltaY = 0;\n }\n\n this.pressMove.dispatch(evt, this.element);\n }\n\n this.touchMove.dispatch(evt, this.element);\n\n this._cancelLongTap();\n\n this.x2 = currentX;\n this.y2 = currentY;\n\n if (len > 1) {\n evt.preventDefault();\n }\n }\n }, {\n key: \"end\",\n value: function end(evt) {\n if (!evt.changedTouches) return;\n\n this._cancelLongTap();\n\n var self = this;\n\n if (evt.touches.length < 2) {\n this.multipointEnd.dispatch(evt, this.element);\n this.sx2 = this.sy2 = null;\n }\n\n if (this.x2 && Math.abs(this.x1 - this.x2) > 30 || this.y2 && Math.abs(this.y1 - this.y2) > 30) {\n evt.direction = this._swipeDirection(this.x1, this.x2, this.y1, this.y2);\n this.swipeTimeout = setTimeout(function () {\n self.swipe.dispatch(evt, self.element);\n }, 0);\n } else {\n this.tapTimeout = setTimeout(function () {\n if (!self._preventTap) {\n self.tap.dispatch(evt, self.element);\n }\n\n if (self.isDoubleTap) {\n self.doubleTap.dispatch(evt, self.element);\n self.isDoubleTap = false;\n }\n }, 0);\n\n if (!self.isDoubleTap) {\n self.singleTapTimeout = setTimeout(function () {\n self.singleTap.dispatch(evt, self.element);\n }, 250);\n }\n }\n\n this.touchEnd.dispatch(evt, this.element);\n this.preV.x = 0;\n this.preV.y = 0;\n this.zoom = 1;\n this.pinchStartLen = null;\n this.x1 = this.x2 = this.y1 = this.y2 = null;\n }\n }, {\n key: \"cancelAll\",\n value: function cancelAll() {\n this._preventTap = true;\n clearTimeout(this.singleTapTimeout);\n clearTimeout(this.tapTimeout);\n clearTimeout(this.longTapTimeout);\n clearTimeout(this.swipeTimeout);\n }\n }, {\n key: \"cancel\",\n value: function cancel(evt) {\n this.cancelAll();\n this.touchCancel.dispatch(evt, this.element);\n }\n }, {\n key: \"_cancelLongTap\",\n value: function _cancelLongTap() {\n clearTimeout(this.longTapTimeout);\n }\n }, {\n key: \"_cancelSingleTap\",\n value: function _cancelSingleTap() {\n clearTimeout(this.singleTapTimeout);\n }\n }, {\n key: \"_swipeDirection\",\n value: function _swipeDirection(x1, x2, y1, y2) {\n return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? x1 - x2 > 0 ? 'Left' : 'Right' : y1 - y2 > 0 ? 'Up' : 'Down';\n }\n }, {\n key: \"on\",\n value: function on(evt, handler) {\n if (this[evt]) {\n this[evt].add(handler);\n }\n }\n }, {\n key: \"off\",\n value: function off(evt, handler) {\n if (this[evt]) {\n this[evt].del(handler);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.singleTapTimeout) clearTimeout(this.singleTapTimeout);\n if (this.tapTimeout) clearTimeout(this.tapTimeout);\n if (this.longTapTimeout) clearTimeout(this.longTapTimeout);\n if (this.swipeTimeout) clearTimeout(this.swipeTimeout);\n this.element.removeEventListener(\"touchstart\", this.start);\n this.element.removeEventListener(\"touchmove\", this.move);\n this.element.removeEventListener(\"touchend\", this.end);\n this.element.removeEventListener(\"touchcancel\", this.cancel);\n this.rotate.del();\n this.touchStart.del();\n this.multipointStart.del();\n this.multipointEnd.del();\n this.pinch.del();\n this.swipe.del();\n this.tap.del();\n this.doubleTap.del();\n this.longTap.del();\n this.singleTap.del();\n this.pressMove.del();\n this.twoFingerPressMove.del();\n this.touchMove.del();\n this.touchEnd.del();\n this.touchCancel.del();\n this.preV = this.pinchStartLen = this.zoom = this.isDoubleTap = this.delta = this.last = this.now = this.tapTimeout = this.singleTapTimeout = this.longTapTimeout = this.swipeTimeout = this.x1 = this.x2 = this.y1 = this.y2 = this.preTapPosition = this.rotate = this.touchStart = this.multipointStart = this.multipointEnd = this.pinch = this.swipe = this.tap = this.doubleTap = this.longTap = this.singleTap = this.pressMove = this.touchMove = this.touchEnd = this.touchCancel = this.twoFingerPressMove = null;\n window.removeEventListener('scroll', this._cancelAllHandler);\n return null;\n }\n }]);\n\n return TouchEvents;\n }();\n\n var ZoomImages = function () {\n function ZoomImages(el, slide) {\n var _this = this;\n\n var onclose = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n _classCallCheck(this, ZoomImages);\n\n this.img = el;\n this.slide = slide;\n this.onclose = onclose;\n\n if (this.img.setZoomEvents) {\n return false;\n }\n\n this.active = false;\n this.zoomedIn = false;\n this.dragging = false;\n this.currentX = null;\n this.currentY = null;\n this.initialX = null;\n this.initialY = null;\n this.xOffset = 0;\n this.yOffset = 0;\n this.img.addEventListener('mousedown', function (e) {\n return _this.dragStart(e);\n }, false);\n this.img.addEventListener('mouseup', function (e) {\n return _this.dragEnd(e);\n }, false);\n this.img.addEventListener('mousemove', function (e) {\n return _this.drag(e);\n }, false);\n this.img.addEventListener('click', function (e) {\n if (!_this.zoomedIn) {\n return _this.zoomIn();\n }\n\n if (_this.zoomedIn && !_this.dragging) {\n _this.zoomOut();\n }\n }, false);\n this.img.setZoomEvents = true;\n }\n\n _createClass(ZoomImages, [{\n key: \"zoomIn\",\n value: function zoomIn() {\n var winWidth = this.widowWidth();\n\n if (this.zoomedIn || winWidth <= 768) {\n return;\n }\n\n var img = this.img;\n img.setAttribute('data-style', img.getAttribute('style'));\n img.style.maxWidth = img.naturalWidth + 'px';\n img.style.maxHeight = img.naturalHeight + 'px';\n\n if (img.naturalWidth > winWidth) {\n var centerX = winWidth / 2 - img.naturalWidth / 2;\n this.setTranslate(this.img.parentNode, centerX, 0);\n }\n\n this.slide.classList.add('zoomed');\n this.zoomedIn = true;\n }\n }, {\n key: \"zoomOut\",\n value: function zoomOut() {\n this.img.parentNode.setAttribute('style', '');\n this.img.setAttribute('style', this.img.getAttribute('data-style'));\n this.slide.classList.remove('zoomed');\n this.zoomedIn = false;\n this.currentX = null;\n this.currentY = null;\n this.initialX = null;\n this.initialY = null;\n this.xOffset = 0;\n this.yOffset = 0;\n\n if (this.onclose && typeof this.onclose == 'function') {\n this.onclose();\n }\n }\n }, {\n key: \"dragStart\",\n value: function dragStart(e) {\n e.preventDefault();\n\n if (!this.zoomedIn) {\n this.active = false;\n return;\n }\n\n if (e.type === \"touchstart\") {\n this.initialX = e.touches[0].clientX - this.xOffset;\n this.initialY = e.touches[0].clientY - this.yOffset;\n } else {\n this.initialX = e.clientX - this.xOffset;\n this.initialY = e.clientY - this.yOffset;\n }\n\n if (e.target === this.img) {\n this.active = true;\n this.img.classList.add('dragging');\n }\n }\n }, {\n key: \"dragEnd\",\n value: function dragEnd(e) {\n var _this2 = this;\n\n e.preventDefault();\n this.initialX = this.currentX;\n this.initialY = this.currentY;\n this.active = false;\n setTimeout(function () {\n _this2.dragging = false;\n _this2.img.isDragging = false;\n\n _this2.img.classList.remove('dragging');\n }, 100);\n }\n }, {\n key: \"drag\",\n value: function drag(e) {\n if (this.active) {\n e.preventDefault();\n\n if (e.type === 'touchmove') {\n this.currentX = e.touches[0].clientX - this.initialX;\n this.currentY = e.touches[0].clientY - this.initialY;\n } else {\n this.currentX = e.clientX - this.initialX;\n this.currentY = e.clientY - this.initialY;\n }\n\n this.xOffset = this.currentX;\n this.yOffset = this.currentY;\n this.img.isDragging = true;\n this.dragging = true;\n this.setTranslate(this.img, this.currentX, this.currentY);\n }\n }\n }, {\n key: \"onMove\",\n value: function onMove(e) {\n if (!this.zoomedIn) {\n return;\n }\n\n var xOffset = e.clientX - this.img.naturalWidth / 2;\n var yOffset = e.clientY - this.img.naturalHeight / 2;\n this.setTranslate(this.img, xOffset, yOffset);\n }\n }, {\n key: \"setTranslate\",\n value: function setTranslate(node, xPos, yPos) {\n node.style.transform = \"translate3d(\" + xPos + \"px, \" + yPos + \"px, 0)\";\n }\n }, {\n key: \"widowWidth\",\n value: function widowWidth() {\n return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n }\n }]);\n\n return ZoomImages;\n }();\n\n var isMobile = navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i);\n var isTouch = isMobile !== null || document.createTouch !== undefined || 'ontouchstart' in window || 'onmsgesturechange' in window || navigator.msMaxTouchPoints;\n var html = document.getElementsByTagName('html')[0];\n var transitionEnd = whichTransitionEvent();\n var animationEnd = whichAnimationEvent();\n var uid = Date.now();\n var videoPlayers = {};\n var defaults = {\n selector: '.glightbox',\n elements: null,\n skin: 'clean',\n closeButton: true,\n startAt: null,\n autoplayVideos: true,\n descPosition: 'bottom',\n width: '900px',\n height: '506px',\n videosWidth: '960px',\n beforeSlideChange: null,\n afterSlideChange: null,\n beforeSlideLoad: null,\n afterSlideLoad: null,\n onOpen: null,\n onClose: null,\n loop: false,\n touchNavigation: true,\n touchFollowAxis: true,\n keyboardNavigation: true,\n closeOnOutsideClick: true,\n plyr: {\n css: 'https://cdn.plyr.io/3.5.6/plyr.css',\n js: 'https://cdn.plyr.io/3.5.6/plyr.js',\n config: {\n ratio: '16:9',\n youtube: {\n noCookie: true,\n rel: 0,\n showinfo: 0,\n iv_load_policy: 3\n },\n vimeo: {\n byline: false,\n portrait: false,\n title: false,\n transparent: false\n }\n }\n },\n openEffect: 'zoomIn',\n closeEffect: 'zoomOut',\n slideEffect: 'slide',\n moreText: 'See more',\n moreLength: 60,\n lightboxHtml: '',\n cssEfects: {\n fade: {\n \"in\": 'fadeIn',\n out: 'fadeOut'\n },\n zoom: {\n \"in\": 'zoomIn',\n out: 'zoomOut'\n },\n slide: {\n \"in\": 'slideInRight',\n out: 'slideOutLeft'\n },\n slide_back: {\n \"in\": 'slideInLeft',\n out: 'slideOutRight'\n }\n },\n svg: {\n close: '',\n next: ' ',\n prev: ''\n }\n };\n var lightboxSlideHtml = \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n

\\n
\\n
\\n
\\n
\\n
\\n
\";\n defaults.slideHtml = lightboxSlideHtml;\n var lightboxHtml = \"
\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\";\n defaults.lightboxHtml = lightboxHtml;\n\n function extend() {\n var extended = {};\n var deep = true;\n var i = 0;\n var length = arguments.length;\n\n if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]') {\n deep = arguments[0];\n i++;\n }\n\n var merge = function merge(obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') {\n extended[prop] = extend(true, extended[prop], obj[prop]);\n } else {\n extended[prop] = obj[prop];\n }\n }\n }\n };\n\n for (; i < length; i++) {\n var obj = arguments[i];\n merge(obj);\n }\n\n return extended;\n }\n\n var utils = {\n isFunction: function isFunction(f) {\n return typeof f === 'function';\n },\n isString: function isString(s) {\n return typeof s === 'string';\n },\n isNode: function isNode(el) {\n return !!(el && el.nodeType && el.nodeType == 1);\n },\n isArray: function isArray(ar) {\n return Array.isArray(ar);\n },\n isArrayLike: function isArrayLike(ar) {\n return ar && ar.length && isFinite(ar.length);\n },\n isObject: function isObject(o) {\n var type = _typeof(o);\n\n return type === 'object' && o != null && !utils.isFunction(o) && !utils.isArray(o);\n },\n isNil: function isNil(o) {\n return o == null;\n },\n has: function has(obj, key) {\n return obj !== null && hasOwnProperty.call(obj, key);\n },\n size: function size(o) {\n if (utils.isObject(o)) {\n if (o.keys) {\n return o.keys().length;\n }\n\n var l = 0;\n\n for (var k in o) {\n if (utils.has(o, k)) {\n l++;\n }\n }\n\n return l;\n } else {\n return o.length;\n }\n },\n isNumber: function isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n };\n\n function each(collection, callback) {\n if (utils.isNode(collection) || collection === window || collection === document) {\n collection = [collection];\n }\n\n if (!utils.isArrayLike(collection) && !utils.isObject(collection)) {\n collection = [collection];\n }\n\n if (utils.size(collection) == 0) {\n return;\n }\n\n if (utils.isArrayLike(collection) && !utils.isObject(collection)) {\n var l = collection.length,\n i = 0;\n\n for (; i < l; i++) {\n if (callback.call(collection[i], collection[i], i, collection) === false) {\n break;\n }\n }\n } else if (utils.isObject(collection)) {\n for (var key in collection) {\n if (utils.has(collection, key)) {\n if (callback.call(collection[key], collection[key], key, collection) === false) {\n break;\n }\n }\n }\n }\n }\n\n function getNodeEvents(node) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var fn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var cache = node[uid] = node[uid] || [];\n var data = {\n all: cache,\n evt: null,\n found: null\n };\n\n if (name && fn && utils.size(cache) > 0) {\n each(cache, function (cl, i) {\n if (cl.eventName == name && cl.fn.toString() == fn.toString()) {\n data.found = true;\n data.evt = i;\n return false;\n }\n });\n }\n\n return data;\n }\n\n function addEvent(eventName) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n onElement = _ref.onElement,\n withCallback = _ref.withCallback,\n _ref$avoidDuplicate = _ref.avoidDuplicate,\n avoidDuplicate = _ref$avoidDuplicate === void 0 ? true : _ref$avoidDuplicate,\n _ref$once = _ref.once,\n once = _ref$once === void 0 ? false : _ref$once,\n _ref$useCapture = _ref.useCapture,\n useCapture = _ref$useCapture === void 0 ? false : _ref$useCapture;\n\n var thisArg = arguments.length > 2 ? arguments[2] : undefined;\n var element = onElement || [];\n\n if (utils.isString(element)) {\n element = document.querySelectorAll(element);\n }\n\n function handler(event) {\n if (utils.isFunction(withCallback)) {\n withCallback.call(thisArg, event, this);\n }\n\n if (once) {\n handler.destroy();\n }\n }\n\n handler.destroy = function () {\n each(element, function (el) {\n var events = getNodeEvents(el, eventName, handler);\n\n if (events.found) {\n events.all.splice(events.evt, 1);\n }\n\n if (el.removeEventListener) el.removeEventListener(eventName, handler, useCapture);\n });\n };\n\n each(element, function (el) {\n var events = getNodeEvents(el, eventName, handler);\n\n if (el.addEventListener && avoidDuplicate && !events.found || !avoidDuplicate) {\n el.addEventListener(eventName, handler, useCapture);\n events.all.push({\n eventName: eventName,\n fn: handler\n });\n }\n });\n return handler;\n }\n\n function addClass(node, name) {\n each(name.split(' '), function (cl) {\n return node.classList.add(cl);\n });\n }\n\n function removeClass(node, name) {\n each(name.split(' '), function (cl) {\n return node.classList.remove(cl);\n });\n }\n\n function hasClass(node, name) {\n return node.classList.contains(name);\n }\n\n function whichAnimationEvent() {\n var t,\n el = document.createElement(\"fakeelement\");\n var animations = {\n animation: \"animationend\",\n OAnimation: \"oAnimationEnd\",\n MozAnimation: \"animationend\",\n WebkitAnimation: \"webkitAnimationEnd\"\n };\n\n for (t in animations) {\n if (el.style[t] !== undefined) {\n return animations[t];\n }\n }\n }\n\n function whichTransitionEvent() {\n var t,\n el = document.createElement(\"fakeelement\");\n var transitions = {\n transition: \"transitionend\",\n OTransition: \"oTransitionEnd\",\n MozTransition: \"transitionend\",\n WebkitTransition: \"webkitTransitionEnd\"\n };\n\n for (t in transitions) {\n if (el.style[t] !== undefined) {\n return transitions[t];\n }\n }\n }\n\n function animateElement(element) {\n var animation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!element || animation === '') {\n return false;\n }\n\n if (animation == 'none') {\n if (utils.isFunction(callback)) callback();\n return false;\n }\n\n var animationNames = animation.split(' ');\n each(animationNames, function (name) {\n addClass(element, 'g' + name);\n });\n addEvent(animationEnd, {\n onElement: element,\n avoidDuplicate: false,\n once: true,\n withCallback: function withCallback(event, target) {\n each(animationNames, function (name) {\n removeClass(target, 'g' + name);\n });\n if (utils.isFunction(callback)) callback();\n }\n });\n }\n\n function createHTML(htmlStr) {\n var frag = document.createDocumentFragment(),\n temp = document.createElement('div');\n temp.innerHTML = htmlStr;\n\n while (temp.firstChild) {\n frag.appendChild(temp.firstChild);\n }\n\n return frag;\n }\n\n function getClosest(elem, selector) {\n while (elem !== document.body) {\n elem = elem.parentElement;\n var matches = typeof elem.matches == 'function' ? elem.matches(selector) : elem.msMatchesSelector(selector);\n if (matches) return elem;\n }\n }\n\n function show(element) {\n element.style.display = 'block';\n }\n\n function hide(element) {\n element.style.display = 'none';\n }\n\n function windowSize() {\n return {\n width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,\n height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\n };\n }\n\n function handleMediaFullScreen(event) {\n if (!hasClass(event.target, 'plyr--html5')) {\n return;\n }\n\n var media = getClosest(event.target, '.gslide-media');\n\n if (event.type == 'enterfullscreen') {\n addClass(media, 'fullscreen');\n }\n\n if (event.type == 'exitfullscreen') {\n removeClass(media, 'fullscreen');\n }\n }\n\n function checkSize(size) {\n return utils.isNumber(size) ? \"\".concat(size, \"px\") : size;\n }\n\n function setSize(data, settings) {\n var defaultWith = data.type == 'video' ? checkSize(settings.videosWidth) : checkSize(settings.width);\n var defaultHeight = checkSize(settings.height);\n data.width = utils.has(data, 'width') && data.width !== '' ? checkSize(data.width) : defaultWith;\n data.height = utils.has(data, 'height') && data.height !== '' ? checkSize(data.height) : defaultHeight;\n return data;\n }\n\n var getSlideData = function getSlideData() {\n var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var settings = arguments.length > 1 ? arguments[1] : undefined;\n var data = {\n href: '',\n title: '',\n type: '',\n description: '',\n descPosition: settings.descPosition,\n effect: '',\n width: '',\n height: '',\n node: element,\n content: false\n };\n\n if (utils.isObject(element) && !utils.isNode(element)) {\n if (!utils.has(element, 'type')) {\n if (utils.has(element, 'content') && element.content) {\n element.type = 'inline';\n } else if (utils.has(element, 'href')) {\n element.type = getSourceType(element.href);\n }\n }\n\n var objectData = extend(data, element);\n setSize(objectData, settings);\n return objectData;\n }\n\n var url = '';\n var config = element.getAttribute('data-glightbox');\n var nodeType = element.nodeName.toLowerCase();\n if (nodeType === 'a') url = element.href;\n if (nodeType === 'img') url = element.src;\n data.href = url;\n each(data, function (val, key) {\n if (utils.has(settings, key) && key !== 'width') {\n data[key] = settings[key];\n }\n\n var nodeData = element.dataset[key];\n\n if (!utils.isNil(nodeData)) {\n data[key] = nodeData;\n }\n });\n\n if (data.content) {\n data.type = 'inline';\n }\n\n if (!data.type && url) {\n data.type = getSourceType(url);\n }\n\n if (!utils.isNil(config)) {\n var cleanKeys = [];\n each(data, function (v, k) {\n cleanKeys.push(';\\\\s?' + k);\n });\n cleanKeys = cleanKeys.join('\\\\s?:|');\n\n if (config.trim() !== '') {\n each(data, function (val, key) {\n var str = config;\n var match = '\\s?' + key + '\\s?:\\s?(.*?)(' + cleanKeys + '\\s?:|$)';\n var regex = new RegExp(match);\n var matches = str.match(regex);\n\n if (matches && matches.length && matches[1]) {\n var value = matches[1].trim().replace(/;\\s*$/, '');\n data[key] = value;\n }\n });\n }\n } else {\n if (nodeType == 'a') {\n var title = element.title;\n if (!utils.isNil(title) && title !== '') data.title = title;\n }\n\n if (nodeType == 'img') {\n var alt = element.alt;\n if (!utils.isNil(alt) && alt !== '') data.title = alt;\n }\n\n var desc = element.getAttribute('data-description');\n if (!utils.isNil(desc) && desc !== '') data.description = desc;\n }\n\n if (data.description && data.description.substring(0, 1) == '.' && document.querySelector(data.description)) {\n data.description = document.querySelector(data.description).innerHTML;\n } else {\n var nodeDesc = element.querySelector('.glightbox-desc');\n\n if (nodeDesc) {\n data.description = nodeDesc.innerHTML;\n }\n }\n\n setSize(data, settings);\n return data;\n };\n\n var setSlideContent = function setSlideContent() {\n var _this = this;\n\n var slide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (hasClass(slide, 'loaded')) {\n return false;\n }\n\n if (utils.isFunction(this.settings.beforeSlideLoad)) {\n this.settings.beforeSlideLoad(slide, data);\n }\n\n var type = data.type;\n var position = data.descPosition;\n var slideMedia = slide.querySelector('.gslide-media');\n var slideTitle = slide.querySelector('.gslide-title');\n var slideText = slide.querySelector('.gslide-desc');\n var slideDesc = slide.querySelector('.gdesc-inner');\n var finalCallback = callback;\n\n if (utils.isFunction(this.settings.afterSlideLoad)) {\n finalCallback = function finalCallback() {\n if (utils.isFunction(callback)) {\n callback();\n }\n\n _this.settings.afterSlideLoad(slide, data);\n };\n }\n\n if (data.title == '' && data.description == '') {\n if (slideDesc) {\n slideDesc.parentNode.parentNode.removeChild(slideDesc.parentNode);\n }\n } else {\n if (slideTitle && data.title !== '') {\n slideTitle.innerHTML = data.title;\n } else {\n slideTitle.parentNode.removeChild(slideTitle);\n }\n\n if (slideText && data.description !== '') {\n if (isMobile && this.settings.moreLength > 0) {\n data.smallDescription = slideShortDesc(data.description, this.settings.moreLength, this.settings.moreText);\n slideText.innerHTML = data.smallDescription;\n slideDescriptionEvents.apply(this, [slideText, data]);\n } else {\n slideText.innerHTML = data.description;\n }\n } else {\n slideText.parentNode.removeChild(slideText);\n }\n\n addClass(slideMedia.parentNode, \"desc-\".concat(position));\n addClass(slideDesc.parentNode, \"description-\".concat(position));\n }\n\n addClass(slideMedia, \"gslide-\".concat(type));\n addClass(slide, 'loaded');\n\n if (type === 'video') {\n addClass(slideMedia.parentNode, \"gvideo-container\");\n slideMedia.insertBefore(createHTML('
'), slideMedia.firstChild);\n setSlideVideo.apply(this, [slide, data, finalCallback]);\n return;\n }\n\n if (type === 'external') {\n var iframe = createIframe({\n url: data.href,\n callback: finalCallback\n });\n slideMedia.parentNode.style.maxWidth = data.width;\n slideMedia.parentNode.style.height = data.height;\n slideMedia.appendChild(iframe);\n return;\n }\n\n if (type === 'inline') {\n setInlineContent.apply(this, [slide, data, finalCallback]);\n return;\n }\n\n if (type === 'image') {\n var img = new Image();\n img.addEventListener('load', function () {\n if (!isMobile && img.naturalWidth > img.offsetWidth) {\n addClass(img, 'zoomable');\n new ZoomImages(img, slide, function () {\n _this.resize(slide);\n });\n }\n\n if (utils.isFunction(finalCallback)) {\n finalCallback();\n }\n }, false);\n img.src = data.href;\n slideMedia.insertBefore(img, slideMedia.firstChild);\n return;\n }\n\n if (utils.isFunction(finalCallback)) finalCallback();\n };\n\n function setSlideVideo(slide, data, callback) {\n var _this2 = this;\n\n var videoID = 'gvideo' + data.index;\n var slideMedia = slide.querySelector('.gvideo-wrapper');\n injectVideoApi(this.settings.plyr.css);\n var url = data.href;\n var protocol = location.protocol.replace(':', '');\n var videoSource = '';\n var embedID = '';\n var customPlaceholder = false;\n\n if (protocol == 'file') {\n protocol = 'http';\n }\n\n slideMedia.parentNode.style.maxWidth = data.width;\n injectVideoApi(this.settings.plyr.js, 'Plyr', function () {\n if (url.match(/vimeo\\.com\\/([0-9]*)/)) {\n var vimeoID = /vimeo.*\\/(\\d+)/i.exec(url);\n videoSource = 'vimeo';\n embedID = vimeoID[1];\n }\n\n if (url.match(/(youtube\\.com|youtube-nocookie\\.com)\\/watch\\?v=([a-zA-Z0-9\\-_]+)/) || url.match(/youtu\\.be\\/([a-zA-Z0-9\\-_]+)/) || url.match(/(youtube\\.com|youtube-nocookie\\.com)\\/embed\\/([a-zA-Z0-9\\-_]+)/)) {\n var youtubeID = getYoutubeID(url);\n videoSource = 'youtube';\n embedID = youtubeID;\n }\n\n if (url.match(/\\.(mp4|ogg|webm|mov)$/) !== null) {\n videoSource = 'local';\n\n var _html = '';\n customPlaceholder = createHTML(_html);\n }\n\n var placeholder = customPlaceholder ? customPlaceholder : createHTML(\"
\"));\n addClass(slideMedia, \"\".concat(videoSource, \"-video gvideo\"));\n slideMedia.appendChild(placeholder);\n slideMedia.setAttribute('data-id', videoID);\n var playerConfig = utils.has(_this2.settings.plyr, 'config') ? _this2.settings.plyr.config : {};\n var player = new Plyr('#' + videoID, playerConfig);\n player.on('ready', function (event) {\n var instance = event.detail.plyr;\n videoPlayers[videoID] = instance;\n\n if (utils.isFunction(callback)) {\n callback();\n }\n });\n player.on('enterfullscreen', handleMediaFullScreen);\n player.on('exitfullscreen', handleMediaFullScreen);\n });\n }\n\n function createIframe(config) {\n var url = config.url,\n allow = config.allow,\n callback = config.callback,\n appendTo = config.appendTo;\n var iframe = document.createElement('iframe');\n iframe.className = 'vimeo-video gvideo';\n iframe.src = url;\n iframe.style.width = '100%';\n iframe.style.height = '100%';\n\n if (allow) {\n iframe.setAttribute('allow', allow);\n }\n\n iframe.onload = function () {\n addClass(iframe, 'node-ready');\n\n if (utils.isFunction(callback)) {\n callback();\n }\n };\n\n if (appendTo) {\n appendTo.appendChild(iframe);\n }\n\n return iframe;\n }\n\n function getYoutubeID(url) {\n var videoID = '';\n url = url.replace(/(>|<)/gi, '').split(/(vi\\/|v=|\\/v\\/|youtu\\.be\\/|\\/embed\\/)/);\n\n if (url[2] !== undefined) {\n videoID = url[2].split(/[^0-9a-z_\\-]/i);\n videoID = videoID[0];\n } else {\n videoID = url;\n }\n\n return videoID;\n }\n\n function injectVideoApi(url, waitFor, callback) {\n if (utils.isNil(url)) {\n console.error('Inject videos api error');\n return;\n }\n\n if (utils.isFunction(waitFor)) {\n callback = waitFor;\n waitFor = false;\n }\n\n var found;\n\n if (url.indexOf('.css') !== -1) {\n found = document.querySelectorAll('link[href=\"' + url + '\"]');\n\n if (found && found.length > 0) {\n if (utils.isFunction(callback)) callback();\n return;\n }\n\n var head = document.getElementsByTagName(\"head\")[0];\n var headStyles = head.querySelectorAll('link[rel=\"stylesheet\"]');\n var link = document.createElement('link');\n link.rel = 'stylesheet';\n link.type = 'text/css';\n link.href = url;\n link.media = 'all';\n\n if (headStyles) {\n head.insertBefore(link, headStyles[0]);\n } else {\n head.appendChild(link);\n }\n\n if (utils.isFunction(callback)) callback();\n return;\n }\n\n found = document.querySelectorAll('script[src=\"' + url + '\"]');\n\n if (found && found.length > 0) {\n if (utils.isFunction(callback)) {\n if (utils.isString(waitFor)) {\n waitUntil(function () {\n return typeof window[waitFor] !== 'undefined';\n }, function () {\n callback();\n });\n return false;\n }\n\n callback();\n }\n\n return;\n }\n\n var script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = url;\n\n script.onload = function () {\n if (utils.isFunction(callback)) {\n if (utils.isString(waitFor)) {\n waitUntil(function () {\n return typeof window[waitFor] !== 'undefined';\n }, function () {\n callback();\n });\n return false;\n }\n\n callback();\n }\n };\n\n document.body.appendChild(script);\n return;\n }\n\n function waitUntil(check, onComplete, delay, timeout) {\n if (check()) {\n onComplete();\n return;\n }\n\n if (!delay) delay = 100;\n var timeoutPointer;\n var intervalPointer = setInterval(function () {\n if (!check()) return;\n clearInterval(intervalPointer);\n if (timeoutPointer) clearTimeout(timeoutPointer);\n onComplete();\n }, delay);\n if (timeout) timeoutPointer = setTimeout(function () {\n clearInterval(intervalPointer);\n }, timeout);\n }\n\n function setInlineContent(slide, data, callback) {\n var _this3 = this;\n\n var slideMedia = slide.querySelector('.gslide-media');\n var hash = utils.has(data, 'href') && data.href ? data.href.split('#').pop().trim() : false;\n var content = utils.has(data, 'content') && data.content ? data.content : false;\n var innerContent;\n\n if (content) {\n if (utils.isString(content)) {\n innerContent = createHTML(\"
\".concat(content, \"
\"));\n }\n\n if (utils.isNode(content)) {\n if (content.style.display == 'none') {\n content.style.display = 'block';\n }\n\n var container = document.createElement('div');\n container.className = 'ginlined-content';\n container.appendChild(content);\n innerContent = container;\n }\n }\n\n if (hash) {\n var div = document.getElementById(hash);\n\n if (!div) {\n return false;\n }\n\n var cloned = div.cloneNode(true);\n cloned.style.height = data.height;\n cloned.style.maxWidth = data.width;\n addClass(cloned, 'ginlined-content');\n innerContent = cloned;\n }\n\n if (!innerContent) {\n console.error('Unable to append inline slide content', data);\n return false;\n }\n\n slideMedia.style.height = data.height;\n slideMedia.style.width = data.width;\n slideMedia.appendChild(innerContent);\n this.events['inlineclose' + hash] = addEvent('click', {\n onElement: slideMedia.querySelectorAll('.gtrigger-close'),\n withCallback: function withCallback(e) {\n e.preventDefault();\n\n _this3.close();\n }\n });\n\n if (utils.isFunction(callback)) {\n callback();\n }\n\n return;\n }\n\n var getSourceType = function getSourceType(url) {\n var origin = url;\n url = url.toLowerCase();\n\n if (url.match(/\\.(jpeg|jpg|jpe|gif|png|apn|webp|svg)$/) !== null) {\n return 'image';\n }\n\n if (url.match(/(youtube\\.com|youtube-nocookie\\.com)\\/watch\\?v=([a-zA-Z0-9\\-_]+)/) || url.match(/youtu\\.be\\/([a-zA-Z0-9\\-_]+)/) || url.match(/(youtube\\.com|youtube-nocookie\\.com)\\/embed\\/([a-zA-Z0-9\\-_]+)/)) {\n return 'video';\n }\n\n if (url.match(/vimeo\\.com\\/([0-9]*)/)) {\n return 'video';\n }\n\n if (url.match(/\\.(mp4|ogg|webm|mov)$/) !== null) {\n return 'video';\n }\n\n if (url.indexOf(\"#\") > -1) {\n var hash = origin.split('#').pop();\n\n if (hash.trim() !== '') {\n return 'inline';\n }\n }\n\n if (url.includes(\"gajax=true\")) {\n return 'ajax';\n }\n\n return 'external';\n };\n\n function keyboardNavigation() {\n var _this4 = this;\n\n if (this.events.hasOwnProperty('keyboard')) {\n return false;\n }\n\n this.events['keyboard'] = addEvent('keydown', {\n onElement: window,\n withCallback: function withCallback(event, target) {\n event = event || window.event;\n var key = event.keyCode;\n\n if (key == 9) {\n var activeElement = document.activeElement && document.activeElement.nodeName ? document.activeElement.nodeName.toLocaleLowerCase() : false;\n\n if (activeElement == 'input' || activeElement == 'textarea' || activeElement == 'button') {\n return;\n }\n\n event.preventDefault();\n var btns = document.querySelectorAll('.gbtn');\n\n if (!btns || btns.length <= 0) {\n return;\n }\n\n var focused = _toConsumableArray(btns).filter(function (item) {\n return hasClass(item, 'focused');\n });\n\n if (!focused.length) {\n var first = document.querySelector('.gbtn[tabindex=\"0\"]');\n\n if (first) {\n first.focus();\n addClass(first, 'focused');\n }\n\n return;\n }\n\n btns.forEach(function (element) {\n return removeClass(element, 'focused');\n });\n var tabindex = focused[0].getAttribute('tabindex');\n tabindex = tabindex ? tabindex : '0';\n var newIndex = parseInt(tabindex) + 1;\n\n if (newIndex > btns.length - 1) {\n newIndex = '0';\n }\n\n var next = document.querySelector(\".gbtn[tabindex=\\\"\".concat(newIndex, \"\\\"]\"));\n\n if (next) {\n next.focus();\n addClass(next, 'focused');\n }\n }\n\n if (key == 39) _this4.nextSlide();\n if (key == 37) _this4.prevSlide();\n if (key == 27) _this4.close();\n }\n });\n }\n\n function touchNavigation() {\n var _this5 = this;\n\n if (this.events.hasOwnProperty('touch')) {\n return false;\n }\n\n var winSize = windowSize();\n var winWidth = winSize.width;\n var winHeight = winSize.height;\n var process = false;\n var currentSlide = null;\n var media = null;\n var mediaImage = null;\n var doingMove = false;\n var initScale = 1;\n var maxScale = 4.5;\n var currentScale = 1;\n var doingZoom = false;\n var imageZoomed = false;\n var zoomedPosX = null;\n var zoomedPosY = null;\n var lastZoomedPosX = null;\n var lastZoomedPosY = null;\n var hDistance;\n var vDistance;\n var hDistancePercent = 0;\n var vDistancePercent = 0;\n var vSwipe = false;\n var hSwipe = false;\n var startCoords = {};\n var endCoords = {};\n var xDown = 0;\n var yDown = 0;\n var isInlined;\n var instance = this;\n var sliderWrapper = document.getElementById('glightbox-slider');\n var overlay = document.querySelector('.goverlay');\n var loop = this.loop();\n var touchInstance = new TouchEvents(sliderWrapper, {\n touchStart: function touchStart(e) {\n if (hasClass(e.targetTouches[0].target, 'ginner-container') || getClosest(e.targetTouches[0].target, '.gslide-desc')) {\n process = false;\n return false;\n }\n\n process = true;\n endCoords = e.targetTouches[0];\n startCoords.pageX = e.targetTouches[0].pageX;\n startCoords.pageY = e.targetTouches[0].pageY;\n xDown = e.targetTouches[0].clientX;\n yDown = e.targetTouches[0].clientY;\n currentSlide = instance.activeSlide;\n media = currentSlide.querySelector('.gslide-media');\n isInlined = currentSlide.querySelector('.gslide-inline');\n mediaImage = null;\n\n if (hasClass(media, 'gslide-image')) {\n mediaImage = media.querySelector('img');\n }\n\n removeClass(overlay, 'greset');\n },\n touchMove: function touchMove(e) {\n if (!process) {\n return;\n }\n\n endCoords = e.targetTouches[0];\n\n if (doingZoom || imageZoomed) {\n return;\n }\n\n if (isInlined && isInlined.offsetHeight > winHeight) {\n var moved = startCoords.pageX - endCoords.pageX;\n\n if (Math.abs(moved) <= 13) {\n return false;\n }\n }\n\n doingMove = true;\n var xUp = e.targetTouches[0].clientX;\n var yUp = e.targetTouches[0].clientY;\n var xDiff = xDown - xUp;\n var yDiff = yDown - yUp;\n\n if (Math.abs(xDiff) > Math.abs(yDiff)) {\n vSwipe = false;\n hSwipe = true;\n } else {\n hSwipe = false;\n vSwipe = true;\n }\n\n hDistance = endCoords.pageX - startCoords.pageX;\n hDistancePercent = hDistance * 100 / winWidth;\n vDistance = endCoords.pageY - startCoords.pageY;\n vDistancePercent = vDistance * 100 / winHeight;\n var opacity;\n\n if (vSwipe && mediaImage) {\n opacity = 1 - Math.abs(vDistance) / winHeight;\n overlay.style.opacity = opacity;\n\n if (_this5.settings.touchFollowAxis) {\n hDistancePercent = 0;\n }\n }\n\n if (hSwipe) {\n opacity = 1 - Math.abs(hDistance) / winWidth;\n media.style.opacity = opacity;\n\n if (_this5.settings.touchFollowAxis) {\n vDistancePercent = 0;\n }\n }\n\n if (!mediaImage) {\n return slideCSSTransform(media, \"translate3d(\".concat(hDistancePercent, \"%, 0, 0)\"));\n }\n\n slideCSSTransform(media, \"translate3d(\".concat(hDistancePercent, \"%, \").concat(vDistancePercent, \"%, 0)\"));\n },\n touchEnd: function touchEnd() {\n if (!process) {\n return;\n }\n\n doingMove = false;\n\n if (imageZoomed || doingZoom) {\n lastZoomedPosX = zoomedPosX;\n lastZoomedPosY = zoomedPosY;\n return;\n }\n\n var v = Math.abs(parseInt(vDistancePercent));\n var h = Math.abs(parseInt(hDistancePercent));\n\n if (v > 29 && mediaImage) {\n _this5.close();\n\n return;\n }\n\n if (v < 29 && h < 25) {\n addClass(overlay, 'greset');\n overlay.style.opacity = 1;\n return resetSlideMove(media);\n }\n },\n multipointEnd: function multipointEnd() {\n setTimeout(function () {\n doingZoom = false;\n }, 50);\n },\n multipointStart: function multipointStart() {\n doingZoom = true;\n initScale = currentScale ? currentScale : 1;\n },\n pinch: function pinch(evt) {\n if (!mediaImage || doingMove) {\n return false;\n }\n\n doingZoom = true;\n mediaImage.scaleX = mediaImage.scaleY = initScale * evt.zoom;\n var scale = initScale * evt.zoom;\n imageZoomed = true;\n\n if (scale <= 1) {\n imageZoomed = false;\n scale = 1;\n lastZoomedPosY = null;\n lastZoomedPosX = null;\n zoomedPosX = null;\n zoomedPosY = null;\n mediaImage.setAttribute('style', '');\n return;\n }\n\n if (scale > maxScale) {\n scale = maxScale;\n }\n\n mediaImage.style.transform = \"scale3d(\".concat(scale, \", \").concat(scale, \", 1)\");\n currentScale = scale;\n },\n pressMove: function pressMove(e) {\n if (imageZoomed && !doingZoom) {\n var mhDistance = endCoords.pageX - startCoords.pageX;\n var mvDistance = endCoords.pageY - startCoords.pageY;\n\n if (lastZoomedPosX) {\n mhDistance = mhDistance + lastZoomedPosX;\n }\n\n if (lastZoomedPosY) {\n mvDistance = mvDistance + lastZoomedPosY;\n }\n\n zoomedPosX = mhDistance;\n zoomedPosY = mvDistance;\n var style = \"translate3d(\".concat(mhDistance, \"px, \").concat(mvDistance, \"px, 0)\");\n\n if (currentScale) {\n style += \" scale3d(\".concat(currentScale, \", \").concat(currentScale, \", 1)\");\n }\n\n slideCSSTransform(mediaImage, style);\n }\n },\n swipe: function swipe(evt) {\n if (imageZoomed) {\n return;\n }\n\n if (doingZoom) {\n doingZoom = false;\n return;\n }\n\n if (evt.direction == 'Left') {\n if (_this5.index == _this5.elements.length - 1) {\n return resetSlideMove(media);\n }\n\n _this5.nextSlide();\n }\n\n if (evt.direction == 'Right') {\n if (_this5.index == 0) {\n return resetSlideMove(media);\n }\n\n _this5.prevSlide();\n }\n }\n });\n this.events['touch'] = touchInstance;\n }\n\n function slideCSSTransform(slide) {\n var translate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n if (translate == '') {\n slide.style.webkitTransform = '';\n slide.style.MozTransform = '';\n slide.style.msTransform = '';\n slide.style.OTransform = '';\n slide.style.transform = '';\n return false;\n }\n\n slide.style.webkitTransform = translate;\n slide.style.MozTransform = translate;\n slide.style.msTransform = translate;\n slide.style.OTransform = translate;\n slide.style.transform = translate;\n }\n\n function resetSlideMove(slide) {\n var media = hasClass(slide, 'gslide-media') ? slide : slide.querySelector('.gslide-media');\n var desc = slide.querySelector('.gslide-description');\n addClass(media, 'greset');\n slideCSSTransform(media, \"translate3d(0, 0, 0)\");\n var animation = addEvent(transitionEnd, {\n onElement: media,\n once: true,\n withCallback: function withCallback(event, target) {\n removeClass(media, 'greset');\n }\n });\n media.style.opacity = '';\n\n if (desc) {\n desc.style.opacity = '';\n }\n }\n\n function slideShortDesc(string) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 50;\n var wordBoundary = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var useWordBoundary = wordBoundary;\n string = string.trim();\n\n if (string.length <= n) {\n return string;\n }\n\n var subString = string.substr(0, n - 1);\n\n if (!useWordBoundary) {\n return subString;\n }\n\n return subString + '...
' + wordBoundary + '';\n }\n\n function slideDescriptionEvents(desc, data) {\n var moreLink = desc.querySelector('.desc-more');\n\n if (!moreLink) {\n return false;\n }\n\n addEvent('click', {\n onElement: moreLink,\n withCallback: function withCallback(event, target) {\n event.preventDefault();\n var body = document.body;\n var desc = getClosest(target, '.gslide-desc');\n\n if (!desc) {\n return false;\n }\n\n desc.innerHTML = data.description;\n addClass(body, 'gdesc-open');\n var shortEvent = addEvent('click', {\n onElement: [body, getClosest(desc, '.gslide-description')],\n withCallback: function withCallback(event, target) {\n if (event.target.nodeName.toLowerCase() !== 'a') {\n removeClass(body, 'gdesc-open');\n addClass(body, 'gdesc-closed');\n desc.innerHTML = data.smallDescription;\n slideDescriptionEvents(desc, data);\n setTimeout(function () {\n removeClass(body, 'gdesc-closed');\n }, 400);\n shortEvent.destroy();\n }\n }\n });\n }\n });\n }\n\n var GlightboxInit = function () {\n function GlightboxInit() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, GlightboxInit);\n\n this.settings = extend(defaults, options);\n this.effectsClasses = this.getAnimationClasses();\n this.slidesData = {};\n }\n\n _createClass(GlightboxInit, [{\n key: \"init\",\n value: function init() {\n var _this6 = this;\n\n this.baseEvents = addEvent('click', {\n onElement: this.getSelector(),\n withCallback: function withCallback(e, target) {\n e.preventDefault();\n\n _this6.open(target);\n }\n });\n }\n }, {\n key: \"open\",\n value: function open() {\n var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var startAt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n this.elements = this.getElements(element);\n if (this.elements.length == 0) return false;\n this.activeSlide = null;\n this.prevActiveSlideIndex = null;\n this.prevActiveSlide = null;\n var index = startAt ? startAt : this.settings.startAt;\n\n if (element && utils.isNil(index)) {\n index = this.elements.indexOf(element);\n\n if (index < 0) {\n index = 0;\n }\n }\n\n if (utils.isNil(index)) {\n index = 0;\n }\n\n this.build();\n animateElement(this.overlay, this.settings.openEffect == 'none' ? 'none' : this.settings.cssEfects.fade[\"in\"]);\n var body = document.body;\n var scrollBar = window.innerWidth - document.documentElement.clientWidth;\n\n if (scrollBar > 0) {\n var styleSheet = document.createElement(\"style\");\n styleSheet.type = 'text/css';\n styleSheet.className = 'gcss-styles';\n styleSheet.innerText = \".gscrollbar-fixer {margin-right: \".concat(scrollBar, \"px}\");\n document.head.appendChild(styleSheet);\n addClass(body, 'gscrollbar-fixer');\n }\n\n addClass(body, 'glightbox-open');\n addClass(html, 'glightbox-open');\n\n if (isMobile) {\n addClass(document.body, 'glightbox-mobile');\n this.settings.slideEffect = 'slide';\n }\n\n this.showSlide(index, true);\n\n if (this.elements.length == 1) {\n hide(this.prevButton);\n hide(this.nextButton);\n } else {\n show(this.prevButton);\n show(this.nextButton);\n }\n\n this.lightboxOpen = true;\n\n if (utils.isFunction(this.settings.onOpen)) {\n this.settings.onOpen();\n }\n\n if (isMobile && isTouch && this.settings.touchNavigation) {\n touchNavigation.apply(this);\n return false;\n }\n\n if (this.settings.keyboardNavigation) {\n keyboardNavigation.apply(this);\n }\n }\n }, {\n key: \"openAt\",\n value: function openAt() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.open(null, index);\n }\n }, {\n key: \"showSlide\",\n value: function showSlide() {\n var _this7 = this;\n\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var first = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n show(this.loader);\n this.index = parseInt(index);\n var current = this.slidesContainer.querySelector('.current');\n\n if (current) {\n removeClass(current, 'current');\n }\n\n this.slideAnimateOut();\n var slide = this.slidesContainer.querySelectorAll('.gslide')[index];\n\n if (hasClass(slide, 'loaded')) {\n this.slideAnimateIn(slide, first);\n hide(this.loader);\n } else {\n show(this.loader);\n var slideData = getSlideData(this.elements[index], this.settings);\n slideData.index = index;\n this.slidesData[index] = slideData;\n setSlideContent.apply(this, [slide, slideData, function () {\n hide(_this7.loader);\n\n _this7.resize();\n\n _this7.slideAnimateIn(slide, first);\n }]);\n }\n\n this.slideDescription = slide.querySelector('.gslide-description');\n this.slideDescriptionContained = this.slideDescription && hasClass(this.slideDescription.parentNode, 'gslide-media');\n this.preloadSlide(index + 1);\n this.preloadSlide(index - 1);\n var loop = this.loop();\n removeClass(this.nextButton, 'disabled');\n removeClass(this.prevButton, 'disabled');\n\n if (index === 0 && !loop) {\n addClass(this.prevButton, 'disabled');\n } else if (index === this.elements.length - 1 && !loop) {\n addClass(this.nextButton, 'disabled');\n }\n\n this.activeSlide = slide;\n }\n }, {\n key: \"preloadSlide\",\n value: function preloadSlide(index) {\n var _this8 = this;\n\n if (index < 0 || index > this.elements.length) return false;\n if (utils.isNil(this.elements[index])) return false;\n var slide = this.slidesContainer.querySelectorAll('.gslide')[index];\n\n if (hasClass(slide, 'loaded')) {\n return false;\n }\n\n var slideData = getSlideData(this.elements[index], this.settings);\n slideData.index = index;\n this.slidesData[index] = slideData;\n var type = slideData.sourcetype;\n\n if (type == 'video' || type == 'external') {\n setTimeout(function () {\n setSlideContent.apply(_this8, [slide, slideData]);\n }, 200);\n } else {\n setSlideContent.apply(this, [slide, slideData]);\n }\n }\n }, {\n key: \"prevSlide\",\n value: function prevSlide() {\n this.goToSlide(this.index - 1);\n }\n }, {\n key: \"nextSlide\",\n value: function nextSlide() {\n this.goToSlide(this.index + 1);\n }\n }, {\n key: \"goToSlide\",\n value: function goToSlide() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.prevActiveSlide = this.activeSlide;\n this.prevActiveSlideIndex = this.index;\n var loop = this.loop();\n\n if (!loop && (index < 0 || index > this.elements.length - 1)) {\n return false;\n }\n\n if (index < 0) {\n index = this.elements.length - 1;\n } else if (index >= this.elements.length) {\n index = 0;\n }\n\n this.showSlide(index);\n }\n }, {\n key: \"insertSlide\",\n value: function insertSlide() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;\n\n if (!this.tmpAddSlides) {\n this.tmpAddSlides = [];\n }\n\n data.atPosition = index;\n this.tmpAddSlides.push(data);\n }\n }, {\n key: \"slideAnimateIn\",\n value: function slideAnimateIn(slide, first) {\n var _this9 = this;\n\n var slideMedia = slide.querySelector('.gslide-media');\n var slideDesc = slide.querySelector('.gslide-description');\n var prevData = {\n index: this.prevActiveSlideIndex,\n slide: this.prevActiveSlide\n };\n var nextData = {\n index: this.index,\n slide: this.activeSlide\n };\n\n if (slideMedia.offsetWidth > 0 && slideDesc) {\n hide(slideDesc);\n slideDesc.style.display = '';\n }\n\n removeClass(slide, this.effectsClasses);\n\n if (first) {\n animateElement(slide, this.settings.openEffect, function () {\n if (!isMobile && _this9.settings.autoplayVideos) {\n _this9.playSlideVideo(slide);\n }\n\n if (utils.isFunction(_this9.settings.afterSlideChange)) {\n _this9.settings.afterSlideChange.apply(_this9, [prevData, nextData]);\n }\n });\n } else {\n var effect_name = this.settings.slideEffect;\n var animIn = effect_name !== 'none' ? this.settings.cssEfects[effect_name][\"in\"] : effect_name;\n\n if (this.prevActiveSlideIndex > this.index) {\n if (this.settings.slideEffect == 'slide') {\n animIn = this.settings.cssEfects.slide_back[\"in\"];\n }\n }\n\n animateElement(slide, animIn, function () {\n if (!isMobile && _this9.settings.autoplayVideos) {\n _this9.playSlideVideo(slide);\n }\n\n if (utils.isFunction(_this9.settings.afterSlideChange)) {\n _this9.settings.afterSlideChange.apply(_this9, [prevData, nextData]);\n }\n });\n }\n\n setTimeout(function () {\n _this9.resize(slide);\n }, 100);\n addClass(slide, 'current');\n }\n }, {\n key: \"slideAnimateOut\",\n value: function slideAnimateOut() {\n if (!this.prevActiveSlide) {\n return false;\n }\n\n var prevSlide = this.prevActiveSlide;\n removeClass(prevSlide, this.effectsClasses);\n addClass(prevSlide, 'prev');\n var animation = this.settings.slideEffect;\n var animOut = animation !== 'none' ? this.settings.cssEfects[animation].out : animation;\n this.stopSlideVideo(prevSlide);\n\n if (utils.isFunction(this.settings.beforeSlideChange)) {\n this.settings.beforeSlideChange.apply(this, [{\n index: this.prevActiveSlideIndex,\n slide: this.prevActiveSlide\n }, {\n index: this.index,\n slide: this.activeSlide\n }]);\n }\n\n if (this.prevActiveSlideIndex > this.index && this.settings.slideEffect == 'slide') {\n animOut = this.settings.cssEfects.slide_back.out;\n }\n\n animateElement(prevSlide, animOut, function () {\n var media = prevSlide.querySelector('.gslide-media');\n var desc = prevSlide.querySelector('.gslide-description');\n media.style.transform = '';\n removeClass(media, 'greset');\n media.style.opacity = '';\n\n if (desc) {\n desc.style.opacity = '';\n }\n\n removeClass(prevSlide, 'prev');\n });\n }\n }, {\n key: \"stopSlideVideo\",\n value: function stopSlideVideo(slide) {\n if (utils.isNumber(slide)) {\n slide = this.slidesContainer.querySelectorAll('.gslide')[slide];\n }\n\n var slideVideo = slide ? slide.querySelector('.gvideo') : null;\n\n if (!slideVideo) {\n return false;\n }\n\n var videoID = slideVideo.getAttribute('data-id');\n\n if (videoPlayers && utils.has(videoPlayers, videoID)) {\n var api = videoPlayers[videoID];\n\n if (api && api.play) {\n api.pause();\n }\n }\n }\n }, {\n key: \"playSlideVideo\",\n value: function playSlideVideo(slide) {\n if (utils.isNumber(slide)) {\n slide = this.slidesContainer.querySelectorAll('.gslide')[slide];\n }\n\n var slideVideo = slide.querySelector('.gvideo');\n\n if (!slideVideo) {\n return false;\n }\n\n var videoID = slideVideo.getAttribute('data-id');\n\n if (videoPlayers && utils.has(videoPlayers, videoID)) {\n var api = videoPlayers[videoID];\n\n if (api && api.play) {\n api.play();\n }\n }\n }\n }, {\n key: \"setElements\",\n value: function setElements(elements) {\n this.settings.elements = elements;\n }\n }, {\n key: \"getElements\",\n value: function getElements() {\n var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var list = [];\n this.elements = this.elements ? this.elements : [];\n\n if (!utils.isNil(this.settings.elements) && utils.isArray(this.settings.elements)) {\n list = this.settings.elements;\n }\n\n var nodes = false;\n var selector = this.getSelector();\n\n if (element !== null) {\n var gallery = element.getAttribute('data-gallery');\n\n if (gallery && gallery !== '') {\n nodes = document.querySelectorAll(\"[data-gallery=\\\"\".concat(gallery, \"\\\"]\"));\n }\n }\n\n if (nodes == false && selector) {\n nodes = document.querySelectorAll(this.getSelector());\n }\n\n nodes = Array.prototype.slice.call(nodes);\n list = list.concat(nodes);\n\n if (this.tmpAddSlides && this.tmpAddSlides.length) {\n each(this.tmpAddSlides, function (tmp) {\n var pos = tmp.atPosition < 0 ? list.length + 1 : tmp.atPosition;\n list.splice(pos, 0, extend({}, tmp));\n });\n this.tmpAddSlides.length = 0;\n }\n\n return list;\n }\n }, {\n key: \"getSelector\",\n value: function getSelector() {\n if (this.settings.selector.substring(0, 5) == 'data-') {\n return \"*[\".concat(this.settings.selector, \"]\");\n }\n\n return this.settings.selector;\n }\n }, {\n key: \"getActiveSlide\",\n value: function getActiveSlide() {\n return this.slidesContainer.querySelectorAll('.gslide')[this.index];\n }\n }, {\n key: \"getActiveSlideIndex\",\n value: function getActiveSlideIndex() {\n return this.index;\n }\n }, {\n key: \"getAnimationClasses\",\n value: function getAnimationClasses() {\n var effects = [];\n\n for (var key in this.settings.cssEfects) {\n if (this.settings.cssEfects.hasOwnProperty(key)) {\n var effect = this.settings.cssEfects[key];\n effects.push(\"g\".concat(effect[\"in\"]));\n effects.push(\"g\".concat(effect.out));\n }\n }\n\n return effects.join(' ');\n }\n }, {\n key: \"build\",\n value: function build() {\n var _this10 = this;\n\n if (this.built) {\n return false;\n }\n\n var nextSVG = utils.has(this.settings.svg, 'next') ? this.settings.svg.next : '';\n var prevSVG = utils.has(this.settings.svg, 'prev') ? this.settings.svg.prev : '';\n var closeSVG = utils.has(this.settings.svg, 'close') ? this.settings.svg.close : '';\n var lightboxHTML = this.settings.lightboxHtml;\n lightboxHTML = lightboxHTML.replace(/{nextSVG}/g, nextSVG);\n lightboxHTML = lightboxHTML.replace(/{prevSVG}/g, prevSVG);\n lightboxHTML = lightboxHTML.replace(/{closeSVG}/g, closeSVG);\n lightboxHTML = createHTML(lightboxHTML);\n document.body.appendChild(lightboxHTML);\n var modal = document.getElementById('glightbox-body');\n this.modal = modal;\n var closeButton = modal.querySelector('.gclose');\n this.prevButton = modal.querySelector('.gprev');\n this.nextButton = modal.querySelector('.gnext');\n this.overlay = modal.querySelector('.goverlay');\n this.loader = modal.querySelector('.gloader');\n this.slidesContainer = document.getElementById('glightbox-slider');\n this.events = {};\n addClass(this.modal, 'glightbox-' + this.settings.skin);\n\n if (this.settings.closeButton && closeButton) {\n this.events['close'] = addEvent('click', {\n onElement: closeButton,\n withCallback: function withCallback(e, target) {\n e.preventDefault();\n\n _this10.close();\n }\n });\n }\n\n if (closeButton && !this.settings.closeButton) {\n closeButton.parentNode.removeChild(closeButton);\n }\n\n if (this.nextButton) {\n this.events['next'] = addEvent('click', {\n onElement: this.nextButton,\n withCallback: function withCallback(e, target) {\n e.preventDefault();\n\n _this10.nextSlide();\n }\n });\n }\n\n if (this.prevButton) {\n this.events['prev'] = addEvent('click', {\n onElement: this.prevButton,\n withCallback: function withCallback(e, target) {\n e.preventDefault();\n\n _this10.prevSlide();\n }\n });\n }\n\n if (this.settings.closeOnOutsideClick) {\n this.events['outClose'] = addEvent('click', {\n onElement: modal,\n withCallback: function withCallback(e, target) {\n if (!hasClass(document.body, 'glightbox-mobile') && !getClosest(e.target, '.ginner-container')) {\n if (!getClosest(e.target, '.gbtn') && !hasClass(e.target, 'gnext') && !hasClass(e.target, 'gprev')) {\n _this10.close();\n }\n }\n }\n });\n }\n\n each(this.elements, function () {\n var slide = createHTML(_this10.settings.slideHtml);\n\n _this10.slidesContainer.appendChild(slide);\n });\n\n if (isTouch) {\n addClass(document.body, 'glightbox-touch');\n }\n\n this.events['resize'] = addEvent('resize', {\n onElement: window,\n withCallback: function withCallback() {\n _this10.resize();\n }\n });\n this.built = true;\n }\n }, {\n key: \"resize\",\n value: function resize() {\n var slide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n slide = !slide ? this.activeSlide : slide;\n\n if (!slide || hasClass(slide, 'zoomed')) {\n return;\n }\n\n var winSize = windowSize();\n var video = slide.querySelector('.gvideo-wrapper');\n var image = slide.querySelector('.gslide-image');\n var description = this.slideDescription;\n var winWidth = winSize.width;\n var winHeight = winSize.height;\n\n if (winWidth <= 768) {\n addClass(document.body, 'glightbox-mobile');\n } else {\n removeClass(document.body, 'glightbox-mobile');\n }\n\n if (!video && !image) {\n return;\n }\n\n var descriptionResize = false;\n\n if (description && (hasClass(description, 'description-bottom') || hasClass(description, 'description-top')) && !hasClass(description, 'gabsolute')) {\n descriptionResize = true;\n }\n\n if (image) {\n if (winWidth <= 768) {\n var imgNode = image.querySelector('img');\n imgNode.setAttribute('style', '');\n } else if (descriptionResize) {\n var descHeight = description.offsetHeight;\n var maxWidth = this.slidesData[this.index].width;\n maxWidth = maxWidth <= winWidth ? maxWidth + 'px' : '100%';\n\n var _imgNode = image.querySelector('img');\n\n _imgNode.setAttribute('style', \"max-height: calc(100vh - \".concat(descHeight, \"px)\"));\n\n description.setAttribute('style', \"max-width: \".concat(_imgNode.offsetWidth, \"px;\"));\n }\n }\n\n if (video) {\n var ratio = utils.has(this.settings.plyr.config, 'ratio') ? this.settings.plyr.config.ratio : '16:9';\n var videoRatio = ratio.split(':');\n var _maxWidth = this.slidesData[this.index].width;\n\n var maxHeight = _maxWidth / (parseInt(videoRatio[0]) / parseInt(videoRatio[1]));\n\n maxHeight = Math.floor(maxHeight);\n\n if (descriptionResize) {\n winHeight = winHeight - description.offsetHeight;\n }\n\n if (winHeight < maxHeight && winWidth > _maxWidth) {\n var vwidth = video.offsetWidth;\n var vheight = video.offsetHeight;\n\n var _ratio = winHeight / vheight;\n\n var vsize = {\n width: vwidth * _ratio,\n height: vheight * _ratio\n };\n video.parentNode.setAttribute('style', \"max-width: \".concat(vsize.width, \"px\"));\n\n if (descriptionResize) {\n description.setAttribute('style', \"max-width: \".concat(vsize.width, \"px;\"));\n }\n } else {\n video.parentNode.style.maxWidth = \"\".concat(_maxWidth, \"px\");\n\n if (descriptionResize) {\n description.setAttribute('style', \"max-width: \".concat(_maxWidth, \"px;\"));\n }\n }\n }\n }\n }, {\n key: \"reload\",\n value: function reload() {\n this.init();\n }\n }, {\n key: \"loop\",\n value: function loop() {\n var loop = utils.has(this.settings, 'loopAtEnd') ? this.settings.loopAtEnd : null;\n loop = utils.has(this.settings, 'loop') ? this.settings.loop : loop;\n return loop;\n }\n }, {\n key: \"close\",\n value: function close() {\n var _this11 = this;\n\n if (this.closing) {\n return false;\n }\n\n this.closing = true;\n this.stopSlideVideo(this.activeSlide);\n addClass(this.modal, 'glightbox-closing');\n animateElement(this.overlay, this.settings.openEffect == 'none' ? 'none' : this.settings.cssEfects.fade.out);\n animateElement(this.activeSlide, this.settings.closeEffect, function () {\n _this11.activeSlide = null;\n _this11.prevActiveSlideIndex = null;\n _this11.prevActiveSlide = null;\n _this11.built = false;\n\n if (_this11.events) {\n for (var key in _this11.events) {\n if (_this11.events.hasOwnProperty(key)) {\n _this11.events[key].destroy();\n }\n }\n\n _this11.events = null;\n }\n\n var body = document.body;\n removeClass(html, 'glightbox-open');\n removeClass(body, 'glightbox-open touching gdesc-open glightbox-touch glightbox-mobile gscrollbar-fixer');\n\n _this11.modal.parentNode.removeChild(_this11.modal);\n\n if (utils.isFunction(_this11.settings.onClose)) {\n _this11.settings.onClose();\n }\n\n var styles = document.querySelector('.gcss-styles');\n\n if (styles) {\n styles.parentNode.removeChild(styles);\n }\n\n _this11.closing = null;\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.close();\n this.baseEvents.destroy();\n }\n }]);\n\n return GlightboxInit;\n }();\n\n function glightbox () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var instance = new GlightboxInit(options);\n instance.init();\n return instance;\n }\n\n return glightbox;\n\n})));\n","\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\nlet hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n const 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\nconst 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\nlet locks = [];\nlet documentListenerAdded = false;\nlet initialClientY = -1;\nlet previousBodyOverflowSetting;\nlet previousBodyPaddingRight;\n\n// returns true if `el` should be allowed to receive touchmove events.\nconst allowTouchMove = el => locks.some(lock => {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n});\n\nconst preventDefault = rawEvent => {\n const 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\nconst setOverflowHidden = options => {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n const reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n const 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\nconst 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\nconst isTargetElementTotallyScrolled = targetElement => targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n\nconst handleScroll = (event, targetElement) => {\n const 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 const 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(lock => lock.targetElement === targetElement)) {\n return;\n }\n\n const lock = {\n targetElement,\n options: options || {}\n };\n\n locks = [...locks, lock];\n\n if (isIosDevice) {\n targetElement.ontouchstart = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = 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 const clearAllBodyScrollLocks = () => {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(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 const 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(lock => lock.targetElement !== targetElement);\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","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","var global = require('../internals/global');\nvar isRegExp = require('../internals/is-regexp');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n","// Requiert functions.isInViewport\n// Requiert window.smoothScroller (smooth-scroller.js), initialisé dans global-variables.js\n\nimport * as functions from 'partials/functions.js';\n\nfunction FormValidation( args ) {\n\tlet that = this;\n\tlet validationCompleteEvent = new Event( 'validationcomplete' );\n\targs = args || {};\n\n\targs.submitSel = args.submitSel || 'button[type=\"submit\"], input[type=\"submit\"]';\n\targs.wrapFieldSel = args.wrapFieldSel || '.wrap-field';\n\targs.fieldOuterSel = args.fieldOuterSel || '.field-block';\n\targs.classInvalidTmp = args.classInvalidTmp || 'tmp-invalid';\n\targs.classHiddenTmp = args.classHiddenTmp || 'tmp-hidden';\n\targs.classVisible = args.classVisible || 'visible';\n\targs.classPrefix = args.classPrefix || 'validation-';\n\targs.classMessage = args.classMessage || 'message';\n\targs.classIcon = args.classIcon || 'icon';\n\targs.classIconValid = args.classIconValid || 'icon-checkmark-circle';\n\targs.classIconInvalid = args.classIconInvalid || 'icon-x-circle';\n\targs.messageTagName = args.messageTagName || 'aside';\n\targs.eventDelay = args.eventDelay || 600;\n\targs.smoothScroller = args.smoothScroller || window.smoothScroller || null;\n\n\targs.debug = args.debug || false;\n\n\tthis.args = args;\n\n\tthis.init = function() {\n\t\tthat.i18n = window.bonesGlobals.i18n.validation;\n\t\tthat.fileSizeUnits = window.bonesGlobals.i18n.fileSizeUnits;\n\n\t\tthat.form = that.args.form;\n\t\tthat.submitButtons = that.form.querySelectorAll( that.args.submitSel );\n\t\tthat.fileInputs = that.form.querySelectorAll('input[type=\"file\"]');\n\n\t\tthat.setCustomValidity( that.form );\n\n\t\t// On désactive la validation normale pour que l'utilisateur ait le droit d'essayer de soumettre (et triggerer notre validation)\n\t\tthat.form.noValidate = true;\n\n\t\t// On enregistre dans chaque champ ses éléments HTML importants et ses classes d'origine\n\t\tfor( let thisEl of that.form.elements ) {\n\t\t\tthisEl.wrapField = thisEl.closest( that.args.wrapFieldSel );\n\t\t\tthisEl.fieldOuter = thisEl.closest( that.args.fieldOuterSel );\n\n\t\t\tif( thisEl.fieldOuter ) {\n\t\t\t\tthisEl.fieldOuter.classesAdded = [];\n\t\t\t}\n\n\t\t\tif( thisEl.wrapField ) {\n\t\t\t\tthisEl.message = that.createFieldMessage();\n\t\t\t\tthisEl.icon = that.createFieldIcon();\n\t\t\t\tthisEl.wrapField.append( thisEl.icon );\n\t\t\t\tthisEl.wrapField.append( thisEl.message );\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.isIterable = function( target ) {\n\t\t// Vaut pour null ET undefined\n\t\tif( target == null ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn (\n\t\t\ttarget instanceof HTMLCollection\n\t\t\t|| target instanceof NodeList\n\t\t\t|| Array.isArray( target )\n\t\t);\n\t};\n\n\n\n\t// Actualise la validité d'un élément\n\tthis.setCustomValidityForEl = function( target ) {\n\t\ttarget.isException = target.isException || {};\n\t\ttarget.customValidity = target.customValidity || { valid: true };\n\n\t\t// On ne le traite que si c'est un input/select/textarea. Fuck les fieldsets.\n\t\tif( target instanceof HTMLInputElement ) {\n\t\t\t// Commençons par valider nos règles custom.\n\t\t\tthat.validateFileExtensionsForEl( target );\n\t\t\tthat.validateFileInputNotEmptyForEl( target );\n\t\t\tthat.validateFileSizeForEl( target );\n\n\t\t\t// Par défaut, c'est valide.\n\t\t\ttarget.customValidity.valid = true;\n\n\t\t\t// Préparons-nous un objet avec toutes les propriétés standard ou custom. Il va juste servir de guide pour itérer sur absolument toutes les propriétés\n\t\t\tlet allValidity = {};\n\t\t\t\n\t\t\tfor( let propertyName in target.validity ) {\n\t\t\t\tallValidity[propertyName] = target.validity[propertyName];\n\t\t\t}\n\t\t\t\n\t\t\tfor( let propertyName in target.customValidity ) {\n\t\t\t\tallValidity[propertyName] = target.customValidity[propertyName];\n\t\t\t}\n\n\t\t\t// Sauf valid, vu qu'il est géré à la main dans la boucle\n\t\t\tdelete allValidity.valid;\n\n\t\t\t// Faisons le tour des propriétés pour savoir si l'élément et le form sont globalement valides.\n\t\t\t// On va aussi propager l'invalidité d'un champ au formulaire.\n\t\t\tfor( let propertyName in allValidity ) {\n\t\t\t\t// Si le form n'a pas cette propriété, donnons-lui. À false parce que le formulaire est tout valide par défaut.\n\t\t\t\tif( 'undefined' === typeof target.form.customValidity[propertyName] ) {\n\t\t\t\t\ttarget.form.customValidity[propertyName] = false;\n\t\t\t\t}\n\n\t\t\t\t// Copions l'objet validité standard, sauf si cet élément est une exception dans cette propriété (dans quel cas il a déjà la bonne valeur)\n\t\t\t\tif( ! target.isException[propertyName] ) {\n\t\t\t\t\ttarget.customValidity[propertyName] = target.validity[propertyName] || false;\n\t\t\t\t} else {\n\t\t\t\t\tif( that.args.debug ) {\n\t\t\t\t\t\tconsole.log( 'form-validation: target is an exception in property \"'+propertyName+'\". Value will stay with its old value:' );\n\t\t\t\t\t\tconsole.log( target.customValidity[propertyName] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Pour chaque propriété, on décide si l'élément est valide\n\t\t\t\tif( target.customValidity[propertyName] ) {\n\t\t\t\t\t// Cette propriété a une erreur. Ça veut dire que ni le champ, ni le form ne sont valides.\n\t\t\t\t\tthat.form.customValidity[propertyName] = true;\n\t\t\t\t\ttarget.customValidity.valid = false;\n\t\t\t\t\tthat.form.customValidity.valid = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif( that.args.debug ) {\n\t\t\t\tconsole.log('form-validation: Validated field:');\n\t\t\t\tconsole.log(target);\n\t\t\t\tconsole.log('form-validation: Current validity of field:');\n\t\t\t\tconsole.log(target.customValidity);\n\t\t\t\tconsole.log('form-validation: Current validity of form:');\n\t\t\t\tconsole.log(that.form.customValidity);\n\t\t\t}\n\t\t}\n\t};\n\n\t// On met à jour la validité custom de la cible, ou de tous les éléments si on a reçu le form\n\tthis.setCustomValidity = function( target ) {\n\n\t\ttarget.customValidity = target.customValidity || {};\n\n\t\tif( target instanceof HTMLInputElement ) {\n\t\t\t// C'est un champ. Traitons-le\n\t\t\tthat.setCustomValidityForEl( target );\n\t\t} else if( target instanceof HTMLFormElement && target.elements ) {\n\t\t\t// C'est le form. On lui prépare un objet de validité à remplir.\n\t\t\ttarget.customValidity = { valid: true };\n\n\t\t\t// Ensuite on fait le tour des champs. Eux vont décider si c'est valide ou pas.\n\t\t\tfor( let thisEl of target.elements ) {\n\t\t\t\tthat.setCustomValidityForEl( thisEl );\n\t\t\t}\n\t\t}\n\t};\n\n\t// La version HTML5 de base marche pas pantoute pour les types file.\n\tthis.validateFileInputNotEmptyForEl = function( target ) {\n\t\tif( target.type && 'file' == target.type ) {\n\t\t\ttarget.isException.valueMissing = true;\n\n\t\t\tif( target.required ) {\n\t\t\t\ttarget.customValidity.valueMissing = ( target.files.length == 0 );\n\n\t\t\t\tif( that.args.debug ) {\n\t\t\t\t\tconsole.log('checking if file input is not empty for files ' + target.files);\n\t\t\t\t\tconsole.log('new customValidity.valueMissing value is:');\n\t\t\t\t\tconsole.log( target.customValidity.valueMissing );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// C'est même pas requis. C'est forcément valide.\n\t\t\t\ttarget.customValidity.valueMissing = false;\n\t\t\t}\n\t\t} else {\n\t\t\t// C'est même pas un type file. On ne fait rien. La validation HTML5 s'en occupe.\n\t\t}\n\t};\n\n\t// Validation custom : le fichier est-il trop gros?\n\tthis.validateFileSizeForEl = function( target ) {\n\t\tif( target.type && 'file' == target.type ) {\n\t\t\ttarget.isException.fileSizeOverflow = true;\n\n\t\t\tif( target.dataset.maxSize ) {\n\t\t\t\ttarget.customValidity.fileSizeOverflow = false;\n\n\t\t\t\ttarget.files.forEach( function( thisFile ) {\n\t\t\t\t\tif( thisFile.size > target.dataset.maxSize ) {\n\t\t\t\t\t\ttarget.customValidity.fileSizeOverflow = true;\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tif( that.args.debug ) {\n\t\t\t\t\tconsole.log('checking the size of files ' + target.files);\n\t\t\t\t\tconsole.log('new customValidity.fileSizeOverflow value is:');\n\t\t\t\t\tconsole.log( target.customValidity.fileSizeOverflow );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Y'a même pas de max. C'est forcément valide\n\t\t\t\ttarget.customValidity.fileSizeOverflow = false;\n\t\t\t}\n\t\t} else {\n\t\t\t// C'est même pas un type file. Rien à faire.\n\t\t}\n\t};\n\n\t// La validation HTML5 n'a aucun concept de vérification d'extensions. Occupons-nous-en.\n\tthis.validateFileExtensionsForEl = function( target ) {\n\t\tif( that.args.debug ) {\n\t\t\tconsole.log( 'form-validation: Might check file extensions for target:' );\n\t\t\tconsole.log( target );\n\t\t}\n\n\t\tif( target.files ) {\n\t\t\t// Si c'est pas déjà fait, on enregistre un array des formats valides dans l'élément avant de vérifier\n\t\t\tif( 'undefined' === typeof target.acceptArray ) {\n\t\t\t\tlet acceptStr;\n\n\t\t\t\tif( target.hasAttribute( 'accept' ) ) {\n\t\t\t\t\tacceptStr = target.getAttribute( 'accept' );\n\n\t\t\t\t\tif( acceptStr ) {\n\t\t\t\t\t\ttarget.acceptArray = acceptStr.split( ',' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.acceptArray = [];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttarget.acceptArray = null;\n\t\t\t\t}\n\n\t\t\t\tif( that.args.debug ) {\n\t\t\t\t\tconsole.log( 'form-validation: set acceptArray:' );\n\t\t\t\t\tconsole.log( target.acceptArray );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttarget.isException.fileExtensionMismatch = true;\n\n\t\t\tif( null === target.acceptArray ) {\n\t\t\t\t// null = pas de contrainte. C'est forcément valide.\n\t\t\t\ttarget.customValidity.fileExtensionMismatch = false;\n\t\t\t} else {\n\t\t\t\t// Un array = il y a des contraintes. Validons.\n\n\t\t\t\tif( target.files.length ) {\n\t\t\t\t\t// Faisons le tour des fichiers.\n\t\t\t\t\ttarget.files.forEach( function( thisFile ) {\n\t\t\t\t\t\tlet fileExtension = '.' + thisFile.name.split( '.' ).pop();\n\t\t\t\t\t\tlet fileIsValid = target.acceptArray.includes( fileExtension );\n\n\t\t\t\t\t\ttarget.customValidity.fileExtensionMismatch = ! fileIsValid;\n\n\t\t\t\t\t\tif( that.args.debug ) {\n\t\t\t\t\t\t\tconsole.log( 'form-validation: Checked file extensions for file ' + thisFile.name );\n\t\t\t\t\t\t\tconsole.log( 'form-validation: New customValidity.fileExtensionMismatch value is:' );\n\t\t\t\t\t\t\tconsole.log( target.customValidity.fileExtensionMismatch );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif( ! fileIsValid ) {\n\t\t\t\t\t\t\ttarget.value = '';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\t// Y'a aucun fichier dans le champ! C'est forcément valide.\n\t\t\t\t\ttarget.customValidity.fileExtensionMismatch = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.updateClasses = function( whatToUpdate ) {\n\t\tif( whatToUpdate == that.form ) {\n\t\t\twhatToUpdate = whatToUpdate.elements;\n\t\t}\n\n\t\tif( that.isIterable( whatToUpdate ) ) {\n\t\t\tfor( let thisEl of whatToUpdate ) {\n\t\t\t\tthat.updateClassesForEl( thisEl );\n\t\t\t}\n\t\t} else {\n\t\t\tthat.updateClassesForEl( whatToUpdate );\n\t\t}\n\t};\n\n\tthis.updateClassesForEl = function( thisEl ) {\n\t\tthat.resetClassesForEl( thisEl );\n\n\t\tif( thisEl.fieldOuter ) {\n\t\t\tlet classesForOuter = [];\n\n\t\t\tfor( let propertyName in thisEl.customValidity ) {\n\t\t\t\tlet classFinalPart;\n\n\t\t\t\t// Une classe par propriété valide ou pas sur le parent. (Champ valide globalement = propriété \"valid\")\n\t\t\t\tif( thisEl.customValidity[ propertyName ] ) {\n\t\t\t\t\tclassFinalPart = 'true';\n\t\t\t\t} else {\n\t\t\t\t\tclassFinalPart = 'false';\n\t\t\t\t}\n\n\t\t\t\tif( propertyName ) {\n\t\t\t\t\tclassesForOuter.push( that.args.classPrefix + propertyName + '-' + classFinalPart );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthisEl.fieldOuter.classesAdded = classesForOuter;\n\t\t\tthisEl.fieldOuter.classList.add( ...classesForOuter );\n\t\t}\n\n\t\tif( thisEl.icon ) {\n\t\t\tlet classesForIcon = [];\n\t\t\t// Changement de la classe de l'icône\n\t\t\tif( that.checkCustomValidity( thisEl ) ) {\n\t\t\t\tclassesForIcon.push( that.args.classIconValid );\n\t\t\t} else {\n\t\t\t\tclassesForIcon.push( that.args.classIconInvalid );\n\t\t\t}\n\n\t\t\tthisEl.icon.theIcon.classesAdded = classesForIcon;\n\t\t\tthisEl.icon.theIcon.classList.add( ...classesForIcon );\n\t\t}\n\t};\n\n\tthis.resetClassesForEl = function( thisEl ) {\n\t\tif( thisEl.fieldOuter && thisEl.fieldOuter.classesAdded ) {\n\t\t\tthisEl.fieldOuter.classList.remove( ...thisEl.fieldOuter.classesAdded );\n\t\t}\n\n\t\tif( thisEl.icon && thisEl.icon.theIcon.classesAdded ) {\n\t\t\tthisEl.icon.theIcon.classList.remove( ...thisEl.icon.theIcon.classesAdded );\n\t\t}\n\t};\n\n\tthis.updateMessages = function( whatToUpdate) {\n\t\tlet includeGlobal = false;\n\n\t\tif( whatToUpdate == that.form ) {\n\t\t\tincludeGlobal = true;\n\t\t\twhatToUpdate = whatToUpdate.elements;\n\t\t}\n\n\t\tif( that.isIterable( whatToUpdate ) ) {\n\t\t\tfor( let thisEl of whatToUpdate ) {\n\t\t\t\tthat.updateMessageForEl( thisEl );\n\t\t\t}\n\t\t} else {\n\t\t\tthat.updateMessageForEl( whatToUpdate );\n\t\t}\n\n\t\tif( includeGlobal ) {\n\t\t\tthat.updateMessageGlobal();\n\t\t}\n\t};\n\n\tthis.updateMessageForEl = function( thisEl ) {\n\t\tif( thisEl.message ) {\n\t\t\tlet errorStrings = [];\n\t\t\tfor( let messageType in thisEl.customValidity ) {\n\t\t\t\tif( thisEl.customValidity[ messageType ] ) {\n\t\t\t\t\tlet thisErrorString = that.i18n[messageType] || null;\n\t\t\t\t\tlet insertString = '';\n\n\t\t\t\t\tif( thisErrorString ) {\n\t\t\t\t\t\tswitch( messageType ) {\n\t\t\t\t\t\t\tcase 'typeMismatch':\n\t\t\t\t\t\t\t\tthisErrorString = that.i18n[messageType][thisEl.type] || that.i18n[messageType].default;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'rangeOverflow':\n\t\t\t\t\t\t\t\tinsertString = '' + thisEl.max + '';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'rangeUnderflow':\n\t\t\t\t\t\t\t\tinsertString = '' + thisEl.min + '';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'stepMismatch':\n\t\t\t\t\t\t\t\tinsertString = '' + thisEl.step + '';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'tooLong':\n\t\t\t\t\t\t\t\tinsertString = '' + thisEl.maxLength + '';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'tooShort':\n\t\t\t\t\t\t\t\tinsertString = '' + thisEl.minLength + '';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'fileExtensionMismatch':\n\t\t\t\t\t\t\t\t( function() {\n\t\t\t\t\t\t\t\t\tlet extensionList = document.createElement( 'ul' );\n\t\t\t\t\t\t\t\t\textensionList.classList.add( that.args.classPrefix + that.args.classMessage + '-sublist' );\n\n\t\t\t\t\t\t\t\t\tthisEl.acceptArray.forEach( function( thisExt ) {\n\t\t\t\t\t\t\t\t\t\tlet extensionEl = document.createElement( 'li' );\n\t\t\t\t\t\t\t\t\t\textensionEl.classList.add( that.args.classPrefix + that.args.classMessage + '-sublist-el' );\n\t\t\t\t\t\t\t\t\t\textensionEl.innerHTML = thisExt.replace( /^\\./, '' );\n\t\t\t\t\t\t\t\t\t\textensionList.append( extensionEl );\n\t\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t\tinsertString = extensionList.outerHTML;\n\t\t\t\t\t\t\t\t}) ();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'fileSizeOverflow':\n\t\t\t\t\t\t\t\tinsertString =\n\t\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t\t\t+ ''\n\t\t\t\t\t\t\t\t\t\t\t// Arrondissement à 2 chiffres après la virgule, mais seulement si nécessaire.\n\t\t\t\t\t\t\t\t\t\t\t+ ( Math.round( thisEl.dataset.maxSize / that.fileSizeUnits.mb.value * 100 ) / 100 )\n\t\t\t\t\t\t\t\t\t\t+ ''\n\t\t\t\t\t\t\t\t\t\t+ ' '\n\t\t\t\t\t\t\t\t\t\t\t+ that.fileSizeUnits.mb.nameShort\n\t\t\t\t\t\t\t\t\t\t+ ''\n\t\t\t\t\t\t\t\t\t+ ''\n\t\t\t\t\t\t\t\t;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t// Rien à remplacer pour les autres types\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif( insertString ) {\n\t\t\t\t\t\t\tthisErrorString = thisErrorString.replace( '%s', insertString );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\terrorStrings.push( thisErrorString );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthisEl.icon.classList.add( that.args.classVisible );\n\n\t\t\tif( errorStrings.length > 0 ) {\n\t\t\t\tlet messageList = thisEl.message.querySelector( '.' + that.args.classPrefix + that.args.classMessage + '-list' );\n\t\t\t\tlet frag = new DocumentFragment();\n\n\t\t\t\terrorStrings.forEach( function( thisErrorString ) {\n\t\t\t\t\tlet listEl = document.createElement( 'li' );\n\t\t\t\t\tlistEl.classList.add( that.args.classPrefix + that.args.classMessage + '-list-el' );\n\t\t\t\t\tlistEl.innerHTML = thisErrorString;\n\t\t\t\t\tfrag.append( listEl );\n\t\t\t\t} );\n\n\t\t\t\tif( thisEl.message.classList.contains( that.args.classVisible ) ) {\n\t\t\t\t\t// Si le message est déjà visible, on le cache le temps de changer les strings\n\t\t\t\t\tthisEl.message.classList.add( that.args.classHiddenTmp );\n\t\t\t\t\tthisEl.icon.classList.add( that.args.classHiddenTmp );\n\n\t\t\t\t\tthisEl.message.addEventListener( 'transitionend', function messageDisappeared() {\n\t\t\t\t\t\t// Le message a fini de disparaître ! On peut changer la string puis lancer la réapparition.\n\t\t\t\t\t\tthat.setMessageListHtml( messageList, frag );\n\t\t\t\t\t\tthisEl.message.classList.remove( that.args.classHiddenTmp );\n\t\t\t\t\t\tthisEl.icon.classList.remove( that.args.classHiddenTmp );\n\t\t\t\t\t\tthisEl.message.removeEventListener( 'transitionend', messageDisappeared );\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tthat.setMessageListHtml( messageList, frag );\n\t\t\t\t}\n\n\t\t\t\tthisEl.message.classList.add( that.args.classVisible );\n\t\t\t} else {\n\t\t\t\t// Aucune erreur ! On cache la bulle.\n\t\t\t\tthisEl.message.classList.remove( that.args.classVisible );\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.setMessageListHtml = function( messageList, newHtml ) {\n\t\twhile( messageList.lastChild ) {\n\t\t\tmessageList.removeChild( messageList.lastChild );\n\t\t}\n\t\tmessageList.append( newHtml );\n\t};\n\n\t\n\tthis.updateMessageGlobal = function() {};\n\t\n\n\tthis.createFieldMessage = function() {\n\t\tlet messageEl;\n\t\tlet messageInnerEl;\n\t\tlet messageListEl;\n\n\t\tmessageEl = document.createElement( that.args.messageTagName );\n\t\tmessageEl.classList.add( that.args.classPrefix + that.args.classMessage );\n\t\tmessageEl.setAttribute( 'role', 'alert' );\n\n\t\tmessageInnerEl = document.createElement( 'div' );\n\t\tmessageInnerEl.classList.add( that.args.classPrefix + that.args.classMessage + '-inner' );\n\n\t\tmessageListEl = document.createElement( 'ul' );\n\t\tmessageListEl.classList.add( that.args.classPrefix + that.args.classMessage + '-list' );\n\n\t\tmessageInnerEl.append( messageListEl );\n\t\tmessageEl.append( messageInnerEl );\n\t\treturn messageEl;\n\t};\n\n\tthis.createFieldIcon = function() {\n\t\tlet iconEl;\n\t\tlet iconInnerEl;\n\t\tlet theIconEl;\n\n\t\ticonEl = document.createElement( 'div' );\n\t\ticonEl.classList.add( that.args.classPrefix + that.args.classIcon );\n\n\t\ticonInnerEl = document.createElement( 'div' );\n\t\ticonInnerEl.classList.add( that.args.classPrefix + that.args.classIcon + '-inner' );\n\n\t\ttheIconEl = document.createElement( 'div' );\n\t\ttheIconEl.classList.add( that.args.classPrefix + that.args.classIcon + '-the-icon' );\n\n\t\ticonEl.theIcon = theIconEl;\n\t\ticonEl.iconInnerEl = iconInnerEl;\n\n\t\ticonInnerEl.append( theIconEl );\n\t\ticonEl.append( iconInnerEl );\n\n\t\ticonEl.theIcon.classesAdded = [];\n\t\treturn iconEl;\n\t};\n\n\tthis.goToFirstInvalid = function() {\n\t\tlet firstInvalid = that.getFirstInvalid();\n\n\t\tif( firstInvalid ) {\n\t\t\tif( that.args.smoothScroller && ! functions.isInViewport( firstInvalid, null, false, that.args.smoothScroller.parent ) ) {\n\t\t\t\tthat.args.smoothScroller.scrollTo({\n\t\t\t\t\ttarget: firstInvalid.fieldOuter,\n\t\t\t\t\talign: {\n\t\t\t\t\t\tx: 'center',\n\t\t\t\t\t\ty: 'center',\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tthat.args.smoothScroller.parent.addEventListener( 'smoothscrollend', function focusFirstInvalid() {\n\t\t\t\t\tfirstInvalid.focus();\n\t\t\t\t\tthat.args.smoothScroller.parent.removeEventListener( 'smoothscrollend', focusFirstInvalid );\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tfirstInvalid.focus();\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.getFirstInvalid = function() {\n\t\tlet firstInvalid = null;\n\n\t\tfor( let thisEl of that.form.elements ) {\n\t\t\tif( ! that.checkCustomValidity( thisEl ) ) {\n\t\t\t\tfirstInvalid = thisEl;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn firstInvalid;\n\t};\n\n\tthis.doValidation = function( whatToValidate = that.form ) {\n\t\tif( ! whatToValidate || ! whatToValidate.alreadyValidated ) {\n\t\t\tif( that.args.debug ) {\n\t\t\t\tconsole.log('___________________________________________________________________');\n\t\t\t\tconsole.log('New validation with:');\n\t\t\t\tconsole.log( whatToValidate );\n\t\t\t}\n\n\t\t\tthat.setCustomValidity( whatToValidate );\n\n\t\t\tthat.updateClasses( whatToValidate );\n\t\t\tthat.updateMessages( whatToValidate );\n\n\t\t\twhatToValidate.dispatchEvent( validationCompleteEvent );\n\t\t}\n\n\t\tif( whatToValidate.alreadyValidated ) {\n\t\t\twhatToValidate.alreadyValidated = false;\n\t\t}\n\t};\n\n\t// Un checkValidity qui prend en compte les règles custom\n\tthis.checkCustomValidity = function( target ) {\n\t\treturn target.customValidity.valid;\n\t};\n\n\t// Initialisation\n\n\tthis.init();\n\n\tif( this.form ) {\n\t\tthis.form._FormValidation = that;\n\t} else {\n\t\treturn [];\n\t}\n\n\n\t// Évènements\n\n\tfor( let thisEl of this.form.elements ) {\n\t\tlet inputTimeout;\n\n\t\t// Empêcher les bulles de validation du navigateur\n\t\tthisEl.addEventListener( 'invalid', function( event ) {\n\t\t\tevent.preventDefault();\n\t\t} );\n\n\t\t// Mettre à jour chaque champ quand on fait quelque chose avec\n\t\t[ 'input', 'change' ].forEach( function( eventName ) {\n\t\t\tthisEl.addEventListener( eventName, function() {\n\t\t\t\t// On ne déclenche la validation qu'après un court délai (sinon une même action pourrait valider plusieurs fois, et ça flasherait quand on tape)\n\t\t\t\tif( inputTimeout ) {\n\t\t\t\t\tclearTimeout( inputTimeout );\n\t\t\t\t}\n\n\t\t\t\tinputTimeout = setTimeout( function() {\n\t\t\t\t\tthat.doValidation( thisEl );\n\t\t\t\t}, that.args.eventDelay );\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Empêcher de soumettre si le form est invalide\n\tthis.form.addEventListener( 'submit', function( event ) {\n\t\tthat.doValidation();\n\n\t\tif( ! that.checkCustomValidity( event.target ) ) {\n\t\t\tevent.preventDefault();\n\t\t\tthat.goToFirstInvalid();\n\n\t\t\tthat.form.classList.add( that.args.classInvalidTmp );\n\n\t\t\tif( that.submitButtons.length > 0 ) {\n\t\t\t\tthat.submitButtons[0].addEventListener( 'animationend', function invalidAnimEnd( event ) {\n\t\t\t\t\tthat.form.classList.remove( that.args.classInvalidTmp );\n\t\t\t\t\tevent.target.removeEventListener( 'animationend', invalidAnimEnd );\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\t\t\t// Tout est OK! Bloquons le bouton Submit pour éviter une multi-soumission.\n\t\t\tthat.submitButtons.forEach( function( thisButton ) {\n\t\t\t\tthisButton.disabled = true;\n\t\t\t} );\n\t\t}\n\t} );\n}\n\nexport default FormValidation;","import * as functions from 'partials/functions.js';\n\n// Pour faire du smooth scroll vers un élément. Commencez par l'instancier avec un parent au chargement.\n// Puis, quand c'est le temps de scroller, appelez monInstance.scrollTo().\nfunction SmoothScroller( args ) {\n\tlet that = this;\n\n\targs = args || {};\n\t// Si aucun parent n'est trouvé\n\targs.parent = args.parent || window;\n\n\targs.scrollToOptions = args.scrollToOptions || {};\n\t// Si la différence entre la cible et le scroll actuel est plus petite que ignoreRange, on ne fera rien.\n\targs.ignoreRange = args.ignoreRange || 30;\n\t// En principe ça devrait pas arriver, mais on met fin au scroll si jamais les évènements sont lancés trop de fois.\n\targs.maxIterations = args.maxIterations || 20;\n\targs.parentIsFixed = args.parentIsFixed || false;\n\n\tthat.args = args;\n\n\tthat.init = function() {\n\t\tthat.parent = that.args.parent;\n\n\t\tif( ! that.parent ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// On check dans quelles directions l'élément est scrollable.\n\t\t(function() {\n\t\t\tif( that.parent == window ) {\n\t\t\t\tthat.parent.scrollable = {\n\t\t\t\t\tx: true,\n\t\t\t\t\ty: true,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tlet parentCompStyle = window.getComputedStyle( that.parent );\n\t\t\t\tlet overflowX = parentCompStyle.getPropertyValue( 'overflow-x' );\n\t\t\t\tlet overflowY = parentCompStyle.getPropertyValue( 'overflow-y' );\n\n\t\t\t\tthat.parent.scrollable = {};\n\n\t\t\t\tthat.parent.scrollable.x = ( 'auto' == overflowX || 'scroll' == overflowX );\n\t\t\t\tthat.parent.scrollable.y = ( 'auto' == overflowY || 'scroll' == overflowY );\n\t\t\t}\n\t\t}) ();\n\n\t\tif( that.parent == window ) {\n\t\t\tdocument.documentElement.classList.add( 'has-smooth-scroller' );\n\t\t} else {\n\t\t\tthat.parent.classList.add( 'has-smooth-scroller' );\n\t\t}\n\n\t\tthat.target = null;\n\n\t\tthat.destination = {\n\t\t\tleft: 0,\n\t\t\ttop: 0,\n\t\t};\n\n\t\tthat.requestedOffset = {};\n\t\tthat.offset = {};\n\t\tthat.updateOffset();\n\n\t\tthat.align = {};\n\n\t\tthat.behavior = 'smooth';\n\n\t\tthat.okToScroll = true;\n\t\tthat.scrolling = false;\n\t\tthat.iterations = 0;\n\t\tthat.monitorScrollEvents = [ 'lazyloaded', 'scrollintervalafter', 'load' ];\n\t\tthat.monitorManualScrollEvents = [ 'touchstart', 'mousedown', 'mousewheel' ];\n\n\t\t// Un rectangle rouge qui flashe pour montrer la cible\n\t\tif( that.args.debug ) {\n\t\t\tthat.debugRectDestination = document.createElement( 'div' );\n\t\t\tthat.debugRectDestination.classList.add('smooth-scroller-debug-rectangle');\n\n\t\t\tthat.debugRectDestination.style.position = 'absolute';\n\t\t\tthat.debugRectDestination.style.outline = '1px solid red';\n\t\t\tthat.debugRectDestination.style.zIndex = 9000;\n\t\t\tthat.debugRectDestination.style.pointerEvents = 'none';\n\t\t\tthat.debugRectDestination.style.color = 'red';\n\t\t\tthat.debugRectDestination.style.padding = '3px';\n\t\t\tthat.debugRectDestination.innerHTML = 'destination';\n\n\t\t\tthat.debugRectPosition = that.debugRectDestination.cloneNode();\n\t\t\tthat.debugRectPosition.style.outline = '2px solid green';\n\t\t\tthat.debugRectPosition.style.color = 'green';\n\t\t\tthat.debugRectPosition.style.zIndex = 8990;\n\t\t\tthat.debugRectPosition.innerHTML = 'position';\n\n\t\t\tthat.debugRectParent = that.debugRectDestination.cloneNode();\n\t\t\tthat.debugRectParent.style.outline = '2px dashed cyan';\n\t\t\tthat.debugRectParent.style.color = 'cyan';\n\t\t\tthat.debugRectParent.style.zIndex = 8980;\n\t\t\tthat.debugRectParent.innerHTML = 'parent';\n\n\t\t\tthat.debugRectPosition.classList.add('smooth-scroller-debug-rectangle-position');\n\t\t\tthat.debugRectDestination.classList.add('smooth-scroller-debug-rectangle-destination');\n\t\t\tthat.debugRectParent.classList.add('smooth-scroller-debug-rectangle-parent');\n\t\t}\n\t};\n\n\tthat.updateOffset = function() {\n\t\tthat.requestedOffset.x = that.requestedOffset.x || 0;\n\t\tthat.requestedOffset.y = that.requestedOffset.y || 0;\n\n\t\tif( that.offset.x != that.requestedOffset.x || that.offset.y != that.requestedOffset.y ) {\n\t\t\tthat.offset = Object.assign( that.requestedOffset );\n\n\t\t\tif( window == that.parent ) {\n\t\t\t\tthat.offset.x -= window.fixedElWidth;\n\t\t\t\tthat.offset.y -= window.fixedElHeight;\n\t\t\t}\n\t\t}\n\n\t\tif( that.args.debug ) {\n\t\t\tconsole.log( \"SmoothScroller.updateOffset: requestedOffset, offset\" );\n\t\t\tconsole.log( that.requestedOffset, that.offset );\n\t\t}\n\t};\n\n\t// Création du rectangle imaginaire qui correspond à la position de l'objet dans le scroll\n\t// Dans le cas d'un scroll de window, l'offset correspond à fixedElHeight.\n\t// Si le parent n'est PAS window, alors la position correspond exactement au rect.\n\tthat.updatePosition = function( positionTarget, positionParent ) {\n\t\tif( that.args.debug ) {\n\t\t\tconsole.log( \"SmoothScroller.updatePosition: updating position of target versus parent:\" );\n\t\t\tconsole.log( positionTarget, positionParent );\n\t\t}\n\n\t\tif( that.parent == window ) {\n\t\t\tpositionTarget.position = {};\n\n\t\t\tif( window == positionTarget ) {\n\t\t\t\tpositionTarget.position = window.curScroll;\n\t\t\t} else {\n\t\t\t\tif( window == positionParent && window == that.parent ) {\n\t\t\t\t\tpositionTarget.position.top = that.target.rect.top + window.curScroll.top;\n\t\t\t\t\tpositionTarget.position.left = that.target.rect.left + window.curScroll.left;\n\t\t\t\t} else {\n\t\t\t\t\tpositionTarget.position.top = positionTarget.offsetTop;\n\t\t\t\t\tpositionTarget.position.left = positionTarget.offsetLeft;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Calcul des autres côtés\n\t\t\tpositionTarget.position.bottom = positionTarget.position.top + that.target.rect.height;\n\t\t\tpositionTarget.position.right = positionTarget.position.left + that.target.rect.width;\n\t\t} else {\n\t\t\tpositionTarget.position = positionTarget.rect;\n\t\t}\n\n\t\tif( that.args.debug ) {\n\t\t\tconsole.log( positionTarget.position );\n\t\t}\n\t};\n\n\t// La vraie destination vers laquelle on doit scroller en fonction de l'offset et de la position demandée.\n\tthat.updateDestination = function() {\n\t\tif( that.args.debug ) {\n\t\t\tconsole.log( \"SmoothScroller.updateDestination: align, offset, position:\" );\n\t\t\tconsole.log( that.align, that.offset, that.target.position );\n\t\t}\n\n\t\tif( 'left' == that.align.x ) {\n\t\t\tthat.destination.left = that.target.position.left + that.offset.x;\n\t\t} else if( 'right' == that.align.x ) {\n\t\t\tthat.destination.left = that.target.position.right - that.parent.rect.width + that.offset.x;\n\t\t} else if( 'center' == that.align.x ) {\n\t\t\tthat.destination.left = that.target.position.left + ( that.target.rect.width - that.parent.rect.width + that.offset.x ) / 2;\n\t\t}\n\n\t\tif( 'top' == that.align.y ) {\n\t\t\tthat.destination.top = that.target.position.top + that.offset.y;\n\t\t} else if( 'bottom' == that.align.y ) {\n\t\t\tthat.destination.top = that.target.position.bottom - that.parent.rect.height + that.offset.y;\n\t\t} else if( 'center' == that.align.y ) {\n\t\t\tthat.destination.top = that.target.position.top + ( that.target.rect.height - that.parent.rect.height + that.offset.y ) / 2;\n\t\t}\n\n\t\t// Floor pour pas avoir de chiffre à virgule qui mélange tout\n\t\tthat.destination.top = Math.floor( that.destination.top );\n\t\tthat.destination.left = Math.floor( that.destination.left );\n\n\t\t// Si le parent est pas scrollable dans une direction, on met la destination à 0 pour pas causer de bugs\n\t\tif( ! that.parent.scrollable.x ) {\n\t\t\tthat.destination.left = 0;\n\t\t}\n\n\t\tif( ! that.parent.scrollable.y ) {\n\t\t\tthat.destination.top = 0;\n\t\t}\n\n\t\tif( that.args.debug ) {\n\t\t\tconsole.log( \"SmoothScroller.updateDestination: updated destination:\" );\n\t\t\tconsole.log( that.destination );\n\t\t}\n\t};\n\n\tthat.updateRects = function() {\n\t\tif( window == that.parent ) {\n\t\t\t// Si c'est le parent, on fonctionne avec le viewport et bounding client rect\n\t\t\tthat.parent.rect = {\n\t\t\t\twidth: window.vWidth,\n\t\t\t\theight: window.vHeight,\n\t\t\t\ttop: 0,\n\t\t\t\tright: window.vWidth,\n\t\t\t\tbottom: window.vHeight,\n\t\t\t\tleft: 0,\n\t\t\t};\n\n\t\t\tthat.target.rect = that.target.getBoundingClientRect();\n\t\t} else {\n\t\t\t// Si c'est un div scrollable, ça va dépendre de si les deux ont un offsetParent identique\n\t\t\tthat.parent.rect = {\n\t\t\t\twidth: that.parent.clientWidth,\n\t\t\t\theight: that.parent.clientHeight,\n\t\t\t};\n\n\t\t\tif( that.args.debug ) {\n\t\t\t\tconsole.log( \"SmoothScroller.updateRects: parent offset parent, target offset parent:\" );\n\t\t\t\tconsole.log( that.parent.offsetParent, that.target.offsetParent );\n\t\t\t}\n\n\t\t\tif( that.parent.offsetParent == that.target.offsetParent ) {\t\t\t\t\n\t\t\t\tthat.parent.rect.top = that.parent.offsetTop;\n\t\t\t\tthat.parent.rect.left = that.parent.offsetTop;\n\t\t\t} else {\n\t\t\t\tthat.parent.rect.top = 0;\n\t\t\t\tthat.parent.rect.left = 0;\n\t\t\t}\n\n\t\t\tthat.target.rect = {\n\t\t\t\twidth: that.target.offsetWidth,\n\t\t\t\theight: that.target.offsetHeight,\n\t\t\t\ttop: that.target.offsetTop,\n\t\t\t\tleft: that.target.offsetLeft,\n\t\t\t};\n\n\t\t\t// Maintenant qu'on a les dimensions de base, on est capable de calculer le bottom/right\n\t\t\tthat.parent.rect.right = that.parent.rect.left + that.parent.rect.width;\n\t\t\tthat.parent.rect.bottom = that.parent.rect.top + that.parent.rect.height;\n\n\t\t\tthat.target.rect.right = that.target.rect.left + that.target.rect.width;\n\t\t\tthat.target.rect.bottom = that.target.rect.top + that.target.rect.height;\n\t\t}\n\n\t\tif( that.args.debug ) {\n\t\t\tconsole.log( \"SmoothScroller.updateRects: parent, parent rect:\" );\n\t\t\tconsole.log( that.parent, that.parent.rect );\n\t\t\tconsole.log( \"SmoothScroller.updateRects: target, target rect:\" );\n\t\t\tconsole.log( that.target, that.target.rect );\n\t\t}\n\t};\n\n\tthat.updatePositions = function() {\n\t\tthat.updatePosition( that.parent, window );\n\t\tthat.updatePosition( that.target, that.parent );\n\t};\n\n\tthat.updateOkToScroll = function() {\n\t\t// Si true, on est assez loin pour scroller.\n\t\tthat.okToScroll = (\n\t\t\t(\n\t\t\t\tthat.target.position.top > that.parent.position.top + args.ignoreRange\n\t\t\t\t|| that.target.position.top < that.parent.position.top - args.ignoreRange\n\t\t\t)\n\t\t\t|| (\n\t\t\t\tthat.target.position.left > that.parent.position.left + args.ignoreRange\n\t\t\t\t|| that.target.position.left < that.parent.position.left - args.ignoreRange\n\t\t\t)\n\t\t);\n\n\t\tif( that.args.debug ) {\n\t\t\tconsole.log( \"SmoothScroller.updateOkToScroll: updated okToScroll to:\" );\n\t\t\tconsole.log( that.okToScroll );\n\t\t}\n\t};\n\n\tthat.updateEverything = function() {\n\t\tif( that.args.debug ) console.log( \"SmoothScroller.updateEverything: updating everything...\" );\n\n\t\t// Au cas où le header aurait changé de taille en scrollant\n\t\tthat.updateOffset();\n\t\tthat.updateRects();\n\t\t// On base nos calculs sur les positions actuelles du parent et de la cible.\n\t\tthat.updatePositions();\n\n\t\t// On combine l'alignement (haut/milieu/bas) et les positions pour savoir à quel pixel exactement on doit scroller\n\t\tthat.updateDestination();\n\t\t// Maintenant qu'on connaît notre destination exacte, est-ce qu'on est assez loin pour scroller?\n\t\tthat.updateOkToScroll();\n\n\t\tif( that.args.debug ) {\n\t\t\tthat.updateDebugRects();\n\t\t}\n\t};\n\n\tthat.monitorManualScrollListener = function( event ) {\n\t\tif( that.args.debug ) {\n\t\t\tconsole.log( \"SmoothScroller.monitorManualScrollListener: User scrolled manually with following event. Ending scroll.\" );\n\t\t\tconsole.log( event );\n\t\t}\n\n\t\t// Annulation des écouteurs\n\t\tthat.monitorManualScrollEvents.forEach( function( eventName ) {\n\t\t\twindow.removeEventListener( eventName, that.monitorManualScrollListener );\n\t\t} );\n\n\t\tthat.endScroll();\n\t};\n\n\tthat.monitorScrollListener = function( event ) {\n\t\tif( that.args.debug ) console.log( \"SmoothScroller.monitorScrollListener: event '\" + event.type + \"' occurred.\" );\n\n\t\tif( that.scrolling ) {\n\t\t\tlet oldDestination = that.destination;\n\t\t\tthat.updateEverything();\n\n\t\t\tif( oldDestination.left != that.destination.left || oldDestination.top != that.destination.top ) {\n\t\t\t\t// La destination a changé en cours de route. On commande un nouveau scroll.\n\t\t\t\tthat.doScroll();\n\t\t\t} else {\n\t\t\t\tlet curScroll;\n\n\t\t\t\tif( window == that.parent ) {\n\t\t\t\t\tcurScroll = window.curScroll;\n\t\t\t\t} else {\n\t\t\t\t\tcurScroll = {\n\t\t\t\t\t\tleft: that.parent.scrollLeft,\n\t\t\t\t\t\ttop: that.parent.scrollTop,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif(\n\t\t\t\t\t( ! that.parent.scrollable.x || curScroll.left == that.destination.left )\n\t\t\t\t\t&& ( ! that.parent.scrollable.y || curScroll.top == that.destination.top )\n\t\t\t\t) {\n\t\t\t\t\t// Scroll terminé!\n\t\t\t\t\tthat.endScroll();\n\t\t\t\t} else {\n\t\t\t\t\t++ that.iterations;\n\n\t\t\t\t\tif( that.args.debug ) {\n\t\t\t\t\t\tconsole.log( \"SmoothScroller.monitorScrollListener: Continuing scroll... ( \" + that.iterations + \" / \" + that.args.maxIterations + \" ) iterations. destination, curScroll\" );\n\t\t\t\t\t\t\tconsole.log( that.destination, curScroll );\n\t\t\t\t\t}\n\n\t\t\t\t\t// D'une façon ou d'une autre, on s'est jamais rendu au bout du scroll. On met fin au scroll à un moment donné pareil.\n\t\t\t\t\tif( that.args.maxIterations <= that.iterations ) {\n\t\t\t\t\t\tif( that.args.debug ) {\n\t\t\t\t\t\t\tconsole.log(\"SmoothScroller.monitorScrollListener: Still not there after \" + that.args.maxIterations + \" occurrences. Aborting scroll. destination, curScroll\");\n\t\t\t\t\t\t\tconsole.log( that.destination, curScroll );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthat.endScroll();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tthat.monitorScroll = function() {\n\t\tthat.monitorScrollEvents.forEach( function( eventName ) {\n\t\t\twindow.addEventListener( eventName, that.monitorScrollListener );\n\n\t\t\tif( that.args.debug ) console.log( \"SmoothScroller.monitorScroll: listener added for event '\" + eventName + \"'.\" );\n\t\t} );\n\n\t\t// On annule tout si l'utilisateur essaie de scroller manuellement.\n\t\tthat.monitorManualScrollEvents.forEach( function( eventName ) {\n\t\t\twindow.addEventListener( eventName, that.monitorManualScrollListener );\n\t\t} );\n\t};\n\n\tthat.endScroll = function() {\n\t\tif( that.args.debug ) console.log( \"SmoothScroller.monitorScroll: Scrolling ended!\" );\n\n\t\tlet endEvent = new Event( 'smoothscrollend' );\n\t\tthat.scrolling = false;\n\n\t\t// On change le hash si nécessaire\n\t\tif( that.setHash && that.target.id ) {\n\t\t\tfunctions.changeHashWithoutScrolling( that.target.id, that.historyStateObj, that.historyAction );\n\t\t}\n\n\t\t// On lance l'évènement de scroll fini.\n\t\tthat.parent.dispatchEvent( endEvent );\n\n\t\t// On annule tous les écouteurs.\n\t\tthat.monitorScrollEvents.forEach( function( eventName ) {\n\t\t\twindow.removeEventListener( eventName, that.monitorScrollListener );\n\t\t} );\n\t};\n\n\tthat.doScroll = function() {\n\t\tlet scrollOptions = {\n\t\t\tbehavior: that.behavior,\n\t\t\tleft: that.destination.left,\n\t\t\ttop: that.destination.top,\n\t\t};\n\n\t\tif( that.args.debug ) {\n\t\t\tconsole.log( \"SmoothScroller.doScroll: Starting scroll - parent, options:\" );\n\t\t\tconsole.log( that.parent, scrollOptions );\n\t\t}\n\n\t\tthat.parent.scrollTo( scrollOptions );\n\t\tthat.scrolling = true;\n\t};\n\n\tthat.maybeDoScroll = function() {\n\t\tthat.updateEverything();\n\n\t\tif( that.okToScroll ) {\n\t\t\tlet startEvent = new Event( 'smoothscrollstart' );\n\n\t\t\tthat.parent.dispatchEvent( startEvent );\n\t\t\t// Tout au long du scroll, ça va vérifier si le scroll est fini et mettre à jour la destination (au cas où elle change à cause de modifications de tailles d'éléments)\n\t\t\tthat.monitorScroll();\n\t\t\tthat.doScroll();\n\t\t}\n\t};\n\n\n\t// args, c'est les arguments de cette méthode. Ne pas confondre avec that.args, les arguments de l'objet.\n\tthat.scrollTo = function( args ) {\n\t\tif( ! that.scrolling ) {\n\t\t\tif( args && ! args.target ) {\n\t\t\t\targs = { target: args };\n\t\t\t}\n\n\t\t\targs.target = args.target ? functions.getElementByHash( args.target ) : null;\n\t\t\tthat.target = args.target;\n\t\t\tthat.iterations = 0;\n\n\t\t\tif( that.args.debug ) {\n\t\t\t\tconsole.log('SmoothScroller.scrollTo: args :');\n\t\t\t\tconsole.log( args );\n\t\t\t}\n\n\t\t\tif( args.target ) {\n\t\t\t\tthat.align = args.align = args.align || {};\n\t\t\t\tthat.align.x = args.align.x || 'left';\n\t\t\t\tthat.align.y = args.align.y || 'top';\n\t\t\t\tthat.setHash = args.setHash || true;\n\t\t\t\tthat.behavior = args.behavior || 'smooth';\n\n\t\t\t\tthat.requestedOffset = args.offset || that.requestedOffset;\n\n\t\t\t\t// On peut envoyer un history.state et une action 'replace' à la place si on veut ne pas ajouter d'étape à l'historique.\n\t\t\t\tthat.historyStateObj = args.historyStateObj || null;\n\t\t\t\tthat.historyAction = args.historyAction || 'push';\n\n\t\t\t\tthat.maybeDoScroll();\n\t\t\t}\n\t\t} else {\n\t\t\tif( that.args.debug ) {\n\t\t\t\tconsole.log( \"SmoothScroller.scrollTo: Currently scrolling. Will not scroll.\" );\n\t\t\t}\n\t\t}\n\t};\n\n\tthat.updateDebugRects = function() {\n\t\tconsole.log( \"SmoothScroller.updateDebugRects : Using the following variables : destination, target.rect, parent.rect\" );\n\t\tconsole.log( that.destination, that.target.rect, that.parent.rect );\n\n\t\tthat.debugRectDestination.style.top = that.destination.top + 'px';\n\t\tthat.debugRectDestination.style.left = that.destination.left + 'px';\n\t\tthat.debugRectPosition.style.top = that.target.rect.top + 'px';\n\t\tthat.debugRectPosition.style.left = that.target.rect.left + 'px';\n\n\t\tthat.debugRectDestination.style.width =\n\t\t\tthat.debugRectPosition.style.width =\n\t\t\tthat.target.rect.width + 'px'\n\t\t;\n\t\tthat.debugRectDestination.style.height =\n\t\t\tthat.debugRectPosition.style.height =\n\t\t\tthat.target.rect.height + 'px'\n\t\t;\n\t\t\n\t\tthat.debugRectParent.style.top = that.parent.rect.top + 'px';\n\t\tthat.debugRectParent.style.left = that.parent.rect.left + 'px';\n\t\tthat.debugRectParent.style.width = that.parent.rect.width + 'px';\n\t\tthat.debugRectParent.style.height = that.parent.rect.height + 'px';\n\n\t\tif( window == that.parent ) {\n\t\t\tdocument.body.append( that.debugRectDestination );\n\t\t\tdocument.body.append( that.debugRectPosition );\n\t\t\tdocument.body.append( that.debugRectParent );\n\t\t} else {\n\t\t\tthat.parent.style.position = 'relative';\n\t\t\tthat.parent.append( that.debugRectDestination );\n\t\t\tthat.parent.append( that.debugRectPosition );\n\t\t\tthat.parent.append( that.debugRectParent );\n\t\t}\n\t};\n\n\tthat.init();\n\n\tif( ! that.parent ) {\n\t\tconsole.error( \"SmoothScroller: You must specify a parent.\" );\n\t\treturn [];\n\t} else {\n\t\tthat.parent._SmoothScroller = that;\n\t}\n\n}\n\n// Un raccourci pour ceux qui utilisent la vieille fonction\nexport function smoothScrollTo( args ) {\n\tif( window.smoothScroller ) {\n\t\twindow.smoothScroller.scrollTo( args );\n\t}\n}\n\n// Pour trouver le smooth scroller le plus proche d'un élément arbitraire\nexport function getSmoothScroller( element ) {\n\tlet closestParent = element.closest( '.has-smooth-scroller' );\n\n\tif( closestParent ) {\n\t\tif( closestParent != document.documentElement ) {\n\t\t\treturn closestParent._SmoothScroller;\n\t\t} else {\n\t\t\treturn window._SmoothScroller;\n\t\t}\n\t} else {\n\t\treturn null;\n\t}\n}\n\nexport default SmoothScroller;","import GLightbox from 'glightbox/dist/js/glightbox.js';\nimport { urlsAreSamePage, getElementByHash } from 'partials/functions.js';\nimport { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock/lib/bodyScrollLock.es6.js';\nimport FormValidation from 'partials/form-validation.js';\nimport PrettyFileInput from 'partials/pretty-file-input.js';\nimport SmoothScroller from 'smooth-scroller.js';\n\nfunction GLightboxNubee( args ) {\n\tlet that = this;\n\n\targs = args || {};\n\targs.links = args.links || [];\n\targs.galleryParent = args.galleryParent || null;\n\targs.elementSel = args.elementSel || '.lightbox-gallery-el';\n\targs.gLightboxOptions = args.gLightboxOptions || {};\n\tthat.args = args;\n\n\tthat.links = [];\n\tthat.elements = [];\n\tthat.popupOptions = {};\n\tthat.popupInstance = {};\n\tthat.isGallery = false;\n\tthat.openedOnce = false;\n\tthat.mouseTarget = null;\n\n\tthat.init = function() {\n\t\tif( that.args.debug ) {\n\t\t\tconsole.log( \"glightbox-nubee: Received arguments:\" );\n\t\t\tconsole.log( that.args );\n\t\t}\n\t\t\n\t\tthat.prepareLinks();\n\n\t\tif( ! that.links.length && ! that.args.elementClass ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthat.buildElements( that.links );\n\t\tthat.isGallery = that.elements.length > 1;\n\n\t\tthat.popupOptions = {\n\t\t\t// En attendant qu'ils règlent leur bug qui fait que ça commence toujours au début si on utilise elements, il faut passer par classe avec l'argument selector.\n\t\t\telements: that.elements,\n\t\t\tautoplayVideos: true,\n\t\t\tkeyboardNavigation: true,\n\t\t\tdescPosition: 'top',\n\t\t\tskin: 'clean nubee',\n\t\t};\n\n\t\t// Override potentiel venu des paramètres\n\t\tObject.assign( that.popupOptions, that.args.gLightboxOptions );\n\n\t\t// Classe pour savoir si c'est une galerie ou pas\n\t\tthat.popupOptions.skin = that.popupOptions.skin || 'nubee';\n\n\t\tif( that.isGallery ) {\n\t\t\tthat.popupOptions.skin += ' gallery';\n\t\t} else {\n\t\t\tthat.popupOptions.skin += ' single';\n\t\t}\n\n\t\t// Si y'a un espace au bout, GLightbox capote\n\t\tthat.popupOptions.skin = that.popupOptions.skin.trim();\n\n\t\tthat.addEventListeners();\n\t\tthat.popupInstance = GLightbox( that.popupOptions );\n\t\tthat.addReferencesToElements();\n\n\t\tif( that.args.debug ) {\n\t\t\tconsole.log( \"glightbox-nubee: GLightbox initialized:\" );\n\t\t\tconsole.log( that.popupInstance );\n\t\t}\n\t};\n\n\tthat.prepareLinks = function() {\n\t\tthat.links = [];\n\n\t\t// Si on a reçu un seul lien, on fait un array avec.\n\t\tif( that.args.links instanceof HTMLElement ) {\n\t\t\tthat.args.links = [ that.args.links ];\n\t\t}\n\n\t\t// Ajout des liens envoyés en arguments à l'array vide\n\t\tthat.links = that.links.concat(\n\t\t\tArray.from( that.args.links )\n\t\t);\n\n\t\t// Si c'est une galerie, on va chercher tous ses éléments\n\t\tif( that.args.galleryParent ) {\n\t\t\tthat.links = that.links.concat(\n\t\t\t\tArray.from(\n\t\t\t\t\tthat.args.galleryParent.querySelectorAll( that.args.elementSel )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tif( that.args.debug ) {\n\t\t\tconsole.log( \"glightbox-nubee: prepared links:\" );\n\t\t\tconsole.log( that.links );\n\t\t}\n\t};\n\n\tthat.buildElement = function( link ) {\n\t\tlet newElement = null;\n\n\t\tif( link.href ) {\n\t\t\tnewElement = {\n\t\t\t\tindex: that.elements.length,\n\t\t\t\tlink: link,\n\t\t\t\thref: link.href,\n\t\t\t\ttype: 'external',\n\t\t\t\twidth: '100%',\n\t\t\t\theight: '100%',\n\t\t\t};\n\n\t\t\tif( newElement.href.match(/\\.(jpg|jpeg|gif|png|svg|webp|tif|tiff|bmp|apng|ico|cur|jfif|pjpeg|pjp)$/i) ) {\n\t\t\t\tnewElement.type = 'image';\n\t\t\t} else if( newElement.href.match(/\\.(mp4|ogg|mov|webm|avi|mkv|ogv)$/i) ) {\n\t\t\t\tnewElement.type = 'video';\n\t\t\t\tnewElement.source = 'local';\n\t\t\t} else if( newElement.href.match(/youtu/i) ) {\n\t\t\t\tnewElement.type = 'video';\n\t\t\t\tnewElement.source = 'youtube';\n\t\t\t} else if( newElement.href.match(/vimeo/i) ) {\n\t\t\t\tnewElement.type = 'video';\n\t\t\t\tnewElement.source = 'vimeo';\n\t\t\t} else if( \n\t\t\t\tnewElement.link.hash\n\t\t\t\t&& urlsAreSamePage({\n\t\t\t\t\turls: [\n\t\t\t\t\t\tnewElement.href,\n\t\t\t\t\t\twindow.location.href,\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\t// Lien dièse (#mon-el)\n\t\t\t\tlet elContent = getElementByHash( newElement.link.hash );\n\n\t\t\t\tif( elContent ) {\n\t\t\t\t\t// Le dièse fait référence à quelque chose sur cette page. On se sert de cet élément-là.\n\t\t\t\t\telContent = elContent.cloneNode( true );\n\t\t\t\t\tnewElement.content = elContent;\n\t\t\t\t\tnewElement.type = 'inline';\n\t\t\t\t\tnewElement.height = 'auto';\n\t\t\t\t\tnewElement.width = 'auto';\n\t\t\t\t} else {\n\t\t\t\t\t// Cette ID n'exite pas. Par défaut c'est 'external'. On va essayer de charger le popup comme un AJAX.\n\t\t\t\t\tif( that.args.debug ) {\n\t\t\t\t\t\tconsole.log( \"glightbox-nubee: Aucun élément trouvé sur cette page avec l'ID '\" + newElement.link.hash + \"'. L'élément sera initialisé comme un type external (AJAX).\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Taille pour toutes les vidéos\n\t\t\tif( 'video' == newElement.type ) {\n\t\t\t\tdelete newElement.height;\n\t\t\t}\n\t\t}\n\n\t\treturn newElement;\n\t};\n\n\n\tthat.buildElements = function( links ) {\n\t\tlinks.forEach( function( thisLink ) {\n\t\t\tlet newElement = that.buildElement( thisLink );\n\t\t\tthat.elements.push( newElement );\n\t\t} );\n\n\t\tif( that.args.debug ) {\n\t\t\tconsole.log( \"glightbox-nubee: built elements:\" );\n\t\t\tconsole.log( that.elements );\n\t\t}\n\t};\n\n\tthat.addEventListeners = function() {\n\n\t\t// On ouvre le popup au clic\n\t\tthat.elements.forEach( function( thisEl ) {\n\t\t\tthisEl.link.addEventListener( 'click', function( event ) {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif( that.args.debug ) {\n\t\t\t\t\tconsole.log( \"glightbox-nubee: opening element :\" );\n\t\t\t\t\tconsole.log( thisEl );\n\t\t\t\t}\n\n\t\t\t\tthat.popupInstance.openAt( thisEl.index );\n\t\t\t} );\n\t\t} );\n\n\t\t// Enregistrement d'éventuelles fonctions personnalisées ajoutées dans les paramètres pour les exécuter après ce code.\n\t\tlet customOnOpen = that.popupOptions.onOpen || null;\n\t\tlet customOnClose = that.popupOptions.onClose || null;\n\n\t\t// Évènements à l'ouverture du popup\n\t\tthat.popupOptions.onOpen = function() {\n\t\t\tlet popupBlock = that.popupInstance.modal || null;\n\n\t\t\t// Blocage du scroll\n\t\t\tdisableBodyScroll( popupBlock, { reserveScrollBarGap: true } );\n\n\t\t\t// Fermeture si on clique en-dehors de l'image\n\t\t\tif( ! that.openedOnce ) {\n\t\t\t\tif( popupBlock ) {\n\t\t\t\t\t// On enregistre la cible, pour différentier un vrai clic d'un drag\n\t\t\t\t\tpopupBlock.addEventListener( 'mousedown', function( event ) {\n\t\t\t\t\t\tthat.mouseTarget = event.target;\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Clic sur le background = fermer le popup\n\t\t\t\t\tpopupBlock.addEventListener( 'click', function( event ) {\n\t\t\t\t\t\tif(\n\t\t\t\t\t\t\tthat.mouseTarget\n\t\t\t\t\t\t\t&& that.mouseTarget == event.target\n\t\t\t\t\t\t\t&& event.target.matches( '.ginner-container' )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthat.popupInstance.close();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthat.mouseTarget = null;\n\t\t\t\t\t} );\n\n\n\t\t\t\t\t/*** Initialisation des scripts sur le contenu de la popup ************************************/\n\n\t\t\t\t\t(function() {\n\t\t\t\t\t\tpopupBlock.querySelectorAll( '.gslide-media' ).forEach( function( thisSlide ) {\n\t\t\t\t\t\t\t// Smooth scroller\n\t\t\t\t\t\t\tthisSlide.smoothScroller = new SmoothScroller({\n\t\t\t\t\t\t\t\tparent: thisSlide,\n\t\t\t\t\t\t\t\t// debug: that.args.debug,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t// Validation de formulaire\n\t\t\t\t\t\t\tthisSlide.querySelectorAll( '.validate-form' ).forEach( function( thisForm ) {\n\t\t\t\t\t\t\t\t// Validation du formulaire\n\t\t\t\t\t\t\t\tnew FormValidation({\n\t\t\t\t\t\t\t\t\tform: thisForm,\n\t\t\t\t\t\t\t\t\tsmoothScroller: thisSlide.smoothScroller,\n\t\t\t\t\t\t\t\t\t// debug: that.args.debug,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t// pretty-file-input\n\t\t\t\t\t\t\tlet inputs = popupBlock.querySelectorAll( '.hidden-file-input' );\n\t\t\t\t\t\t\tinputs.forEach( function( thisEl ) {\n\t\t\t\t\t\t\t\tnew PrettyFileInput({\n\t\t\t\t\t\t\t\t\tinput: thisEl,\n\t\t\t\t\t\t\t\t\t// debug: that.args.debug,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} );\n\t\t\t\t\t}) ();\n\t\t\t\t}\n\n\t\t\t\tthat.popupInstance.openedOnce = true;\n\t\t\t}\n\n\t\t\tif( customOnOpen ) {\n\t\t\t\tcustomOnOpen();\n\t\t\t}\n\t\t};\n\n\t\t// Évènements à la fermeture du popup\n\t\tthat.popupOptions.onClose = function() {\n\t\t\tlet popupBlock = that.popupInstance.modal || null;\n\t\t\t// Réactivation du scroll\n\t\t\tenableBodyScroll( popupBlock, { reserveScrollBarGap: true } );\n\n\t\t\tif( customOnClose ) {\n\t\t\t\tcustomOnClose();\n\t\t\t}\n\t\t}; \n\t};\n\n\t// Permet par la suite d'accéder au popup à partir de n'importe quel élément ou du parent de la galerie\n\tthat.addReferencesToElements = function() {\n\t\tlet elements = that.links;\n\t\t\n\t\tif( that.args.galleryParent ) {\n\t\t\telements.push( that.args.galleryParent );\n\t\t}\n\n\t\telements.forEach( function( thisLink ) {\n\t\t\tthisLink._GLightboxNubee = that;\n\t\t\tthisLink._GLightbox = that.popupInstance;\n\t\t} );\n\t};\n\n\tthat.init();\n}\n\nexport default GLightboxNubee;","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar charAt = uncurryThis(''.charAt);\nvar n$ParseFloat = global.parseFloat;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / n$ParseFloat(whitespaces + '-0') !== -Infinity\n // MS Edge 18- broken with boxed symbols\n || (ITERATOR && !fails(function () { n$ParseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(toString(string));\n var result = n$ParseFloat(trimmedString);\n return result === 0 && charAt(trimmedString, 0) == '-' ? -0 : result;\n} : n$ParseFloat;\n","var $ = require('../internals/export');\nvar $parseFloat = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != $parseFloat }, {\n parseFloat: $parseFloat\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var win = window;\n\nexport var raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n","var win = window;\n\nexport var caf = win.cancelAnimationFrame\n || win.mozCancelAnimationFrame\n || function(id){ clearTimeout(id); };\n","export function extend() {\n var obj, name, copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n}","export function checkStorageValue (value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}","export function setLocalStorage(storage, key, value, access) {\n if (access) {\n try { storage.setItem(key, value); } catch (e) {}\n }\n return value;\n}","export function getBody () {\n var doc = document,\n body = doc.body;\n\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n\n return body;\n}","export var docElement = document.documentElement;","import { docElement } from './docElement.js';\n\nexport function setFakeBody (body) {\n var docOverflow = '';\n if (body.fake) {\n docOverflow = docElement.style.overflow;\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}","import { docElement } from './docElement.js';\n\nexport function resetFakeBody (body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n }\n}","// cross browsers addRule method\nimport { raf } from './raf.js';\nexport function addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ?\n sheet.insertRule(selector + '{' + rules + '}', index) :\n sheet.addRule(selector, rules, index);\n // });\n}","export function getCssRulesLength(sheet) {\n var rule = ('insertRule' in sheet) ? sheet.cssRules : sheet.rules;\n return rule.length;\n}","// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\nexport function forEach (arr, callback, scope) {\n for (var i = 0, l = arr.length; i < l; i++) {\n callback.call(scope, arr[i], i);\n }\n}","export var classListSupport = 'classList' in document.createElement('_');","import { classListSupport } from './classListSupport.js';\n\nvar hasClass = classListSupport ?\n function (el, str) { return el.classList.contains(str); } :\n function (el, str) { return el.className.indexOf(str) >= 0; };\n\nexport { classListSupport, hasClass };","import { classListSupport, hasClass } from './hasClass.js';\nvar addClass = classListSupport ?\n function (el, str) {\n if (!hasClass(el, str)) { el.classList.add(str); }\n } :\n function (el, str) {\n if (!hasClass(el, str)) { el.className += ' ' + str; }\n };\n\nexport { addClass };","import { classListSupport, hasClass } from './hasClass.js';\nvar removeClass = classListSupport ?\n function (el, str) {\n if (hasClass(el, str)) { el.classList.remove(str); }\n } :\n function (el, str) {\n if (hasClass(el, str)) { el.className = el.className.replace(str, ''); }\n };\n\nexport { removeClass };","export function hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}","export function getAttr(el, attr) {\n return el.getAttribute(attr);\n}","export function isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\"; \n}","import { isNodeList } from \"./isNodeList.js\";\n\nexport function setAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n if (Object.prototype.toString.call(attrs) !== '[object Object]') { return; }\n\n for (var i = els.length; i--;) {\n for(var key in attrs) {\n els[i].setAttribute(key, attrs[key]);\n }\n }\n}","import { isNodeList } from \"./isNodeList.js\";\n\nexport function removeAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n attrs = (attrs instanceof Array) ? attrs : [attrs];\n\n var attrLength = attrs.length;\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\n}","export function arrayFromNodeList (nl) {\n var arr = [];\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n return arr;\n}","export function hideElement(el, forceHide) {\n if (el.style.display !== 'none') { el.style.display = 'none'; }\n}","export function showElement(el, forceHide) {\n if (el.style.display === 'none') { el.style.display = ''; }\n}","export function isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\n}","export function whichProperty(props){\n if (typeof props === 'string') {\n var arr = [props],\n Props = props.charAt(0).toUpperCase() + props.substr(1),\n prefixes = ['Webkit', 'Moz', 'ms', 'O'];\n \n prefixes.forEach(function(prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n\n props = arr;\n }\n\n var el = document.createElement('fakeelement'),\n len = props.length;\n for(var i = 0; i < props.length; i++){\n var prop = props[i];\n if( el.style[prop] !== undefined ){ return prop; }\n }\n\n return false; // explicit for ie9-\n}\n","// get transitionend, animationend based on transitionDuration\n// @propin: string\n// @propOut: string, first-letter uppercase\n// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd\nexport function getEndProperty(propIn, propOut) {\n var endProp = false;\n if (/^Webkit/.test(propIn)) {\n endProp = 'webkit' + propOut + 'End';\n } else if (/^O/.test(propIn)) {\n endProp = 'o' + propOut + 'End';\n } else if (propIn) {\n endProp = propOut.toLowerCase() + 'end';\n }\n return endProp;\n}","// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\nexport var passiveOption = supportsPassive ? { passive: true } : false;","import { passiveOption } from './passiveOption.js';\n\nexport function addEvents(el, obj, preventScrolling) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? passiveOption : false;\n el.addEventListener(prop, obj[prop], option);\n }\n}","import { passiveOption } from './passiveOption.js';\n\nexport function removeEvents(el, obj) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? passiveOption : false;\n el.removeEventListener(prop, obj[prop], option);\n }\n}","export function Events() {\n return {\n topics: {},\n on: function (eventName, fn) {\n this.topics[eventName] = this.topics[eventName] || [];\n this.topics[eventName].push(fn);\n },\n off: function(eventName, fn) {\n if (this.topics[eventName]) {\n for (var i = 0; i < this.topics[eventName].length; i++) {\n if (this.topics[eventName][i] === fn) {\n this.topics[eventName].splice(i, 1);\n break;\n }\n }\n }\n },\n emit: function (eventName, data) {\n data.type = eventName;\n if (this.topics[eventName]) {\n this.topics[eventName].forEach(function(fn) {\n fn(data, eventName);\n });\n }\n }\n };\n};","// Object.keys\nif (!Object.keys) {\n Object.keys = function(object) {\n var keys = [];\n for (var name in object) {\n if (Object.prototype.hasOwnProperty.call(object, name)) {\n keys.push(name);\n }\n }\n return keys;\n };\n}\n\n// ChildNode.remove\nif(!(\"remove\" in Element.prototype)){\n Element.prototype.remove = function(){\n if(this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\n\nimport { raf } from './helpers/raf.js';\nimport { caf } from './helpers/caf.js';\nimport { extend } from './helpers/extend.js';\nimport { checkStorageValue } from './helpers/checkStorageValue.js';\nimport { setLocalStorage } from './helpers/setLocalStorage.js';\nimport { getSlideId } from './helpers/getSlideId.js';\nimport { calc } from './helpers/calc.js';\nimport { percentageLayout } from './helpers/percentageLayout.js';\nimport { mediaquerySupport } from './helpers/mediaquerySupport.js';\nimport { createStyleSheet } from './helpers/createStyleSheet.js';\nimport { addCSSRule } from './helpers/addCSSRule.js';\nimport { removeCSSRule } from './helpers/removeCSSRule.js';\nimport { getCssRulesLength } from './helpers/getCssRulesLength.js';\nimport { toDegree } from './helpers/toDegree.js';\nimport { getTouchDirection } from './helpers/getTouchDirection.js';\nimport { forEach } from './helpers/forEach.js';\nimport { hasClass } from './helpers/hasClass.js';\nimport { addClass } from './helpers/addClass.js';\nimport { removeClass } from './helpers/removeClass.js';\nimport { hasAttr } from './helpers/hasAttr.js';\nimport { getAttr } from './helpers/getAttr.js';\nimport { setAttrs } from './helpers/setAttrs.js';\nimport { removeAttrs } from './helpers/removeAttrs.js';\nimport { arrayFromNodeList } from './helpers/arrayFromNodeList.js';\nimport { hideElement } from './helpers/hideElement.js';\nimport { showElement } from './helpers/showElement.js';\nimport { isVisible } from './helpers/isVisible.js';\nimport { whichProperty } from './helpers/whichProperty.js';\nimport { has3DTransforms } from './helpers/has3DTransforms.js';\nimport { getEndProperty } from './helpers/getEndProperty.js';\nimport { addEvents } from './helpers/addEvents.js';\nimport { removeEvents } from './helpers/removeEvents.js';\nimport { Events } from './helpers/events.js';\nimport { jsTransform } from './helpers/jsTransform.js';\n\nexport var tns = function(options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true,\n nonce: false\n }, options || {});\n\n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date;\n\n try {\n tnsStorage = win.localStorage;\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n if (!localStorageAccess) { tnsStorage = {}; }\n } catch(e) {\n localStorageAccess = false;\n }\n\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function(item) { tnsStorage.removeItem(item); });\n }\n // update browserInfo\n localStorage['tnsApp'] = browserInfo;\n }\n }\n\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess);\n\n // get element nodes from selectors\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'],\n optionsElements = {};\n\n tnsList.forEach(function(item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) { console.warn('Can\\'t find', options[item]); }\n return;\n }\n }\n });\n\n // make sure at least 1 slide\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) { console.warn('No slides found in', options.container); }\n return;\n }\n\n // update options\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n\n var responsiveTem = {};\n for (var key in responsive) {\n var val = responsive[key];\n // update responsive\n // from: 300: 2\n // to:\n // 300: {\n // items: 2\n // }\n val = typeof val === 'number' ? {items: val} : val;\n responsiveTem[key] = val;\n }\n responsive = responsiveTem;\n responsiveTem = null;\n }\n\n // update options\n function updateOptions (obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') { obj[key] = 'page'; }\n if (key === 'edgePadding') { obj[key] = false; }\n if (key === 'autoHeight') { obj[key] = false; }\n }\n\n // update responsive options\n if (key === 'responsive') { updateOptions(obj[key]); }\n }\n }\n if (!carousel) { updateOptions(options); }\n\n\n // === define and set variables ===\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n if (responsive) { setBreakpointZone(); }\n if (carousel) { container.className += ' tns-vpfix'; }\n\n // fixedWidth: viewport > rightBoundary > indexMax\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(null, getOption('nonce')),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions, // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = (!carousel || !loop) ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = (function () {\n if (fixedWidth) {\n return function() { return center && !loop ? slideCount - 1 : Math.ceil(- rightBoundary / (fixedWidth + gutter)); };\n } else if (autoWidth) {\n return function() {\n for (var i = 0; i < slideCountNew; i++) {\n if (slidePositions[i] >= - rightBoundary) { return i; }\n }\n };\n } else {\n return function() {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n })(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index,\n displayIndex = getCurrentSlide(),\n indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n // resize\n resizeTimer,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {'visibilitychange': onVisibilityChange},\n docmentKeydownEvent = {'keydown': onDocumentKeydown},\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n }, dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n slideClonedClass = 'tns-slide-cloned',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false;\n\n // controls\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n }\n\n // nav\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n }\n\n // autoplay\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['', ' animation'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n disX,\n disY,\n panStart = false,\n rafIndex,\n getDist = horizontal ?\n function(a, b) { return a.x - b.x; } :\n function(a, b) { return a.y - b.y; };\n }\n\n // disable slider when slidecount <= items\n if (!autoWidth) { resetVariblesWhenDisable(disable || freeze); }\n\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n\n }\n\n if (carousel) { container.className = container.className.replace('tns-vpfix', ''); }\n initStructure();\n initSheet();\n initSliderTransform();\n\n // === COMMON FUNCTIONS === //\n function resetVariblesWhenDisable (condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n\n function getCurrentSlide () {\n var tem = carousel ? index - cloneCount : index;\n while (tem < 0) { tem += slideCount; }\n return tem%slideCount + 1;\n }\n\n function getStartIndex (ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n\n function getAbsIndex (i) {\n if (i == null) { i = index; }\n\n if (carousel) { i -= cloneCount; }\n while (i < 0) { i += slideCount; }\n\n return Math.floor(i%slideCount);\n }\n\n function getCurrentNavIndex () {\n var absIndex = getAbsIndex(),\n result;\n\n result = navAsThumbnails ? absIndex :\n fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) :\n Math.floor(absIndex / items);\n\n // set active nav to the last one when reaches the right edge\n if (!loop && carousel && index === indexMax) { result = pages - 1; }\n\n return result;\n }\n\n function getItemsMax () {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || (fixedWidth && !viewportMax)) {\n return slideCount - 1;\n // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) { arr.push(options[str]); }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n if (tem && (fixedWidth || tem < slideCount)) { arr.push(tem); }\n }\n }\n\n if (!arr.length) { arr.push(0); }\n\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n\n function getCloneCountForLoop () {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount)/2) : (itemsMax * 4 - slideCount);\n result = Math.max(itemsMax, result);\n\n return hasOption('edgePadding') ? result + 1 : result;\n }\n\n function getWindowWidth () {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n\n function getInsertPosition (pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n\n function getClientWidth (el) {\n if (el == null) { return; }\n var div = doc.createElement('div'), rect, width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n\n function getViewportWidth () {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n\n function hasOption (item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) { return true; }\n }\n }\n return false;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n function getOption (item, ww) {\n if (ww == null) { ww = windowWidth; }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n\n } else {\n var result = options[item];\n\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) { result = responsive[bp][item]; }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') { result = getOption('items'); }\n if (!carousel && (item === 'slideBy' || item === 'items')) { result = Math.floor(result); }\n\n return result;\n }\n }\n\n function getSlideMarginLeft (i) {\n return CALC ?\n CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' :\n i * 100 / slideCountNew + '%';\n }\n\n function getInnerWrapperStyles (edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n if (gutterTem) { gap -= gutterTem; }\n str = horizontal ?\n 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' :\n 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';'\n }\n\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) { str += getTransitionDurationStyle(speedTem); }\n return str;\n }\n\n function getContainerWidth (fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ?\n CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' :\n slideCountNew * 100 / itemsTem + '%';\n }\n }\n\n function getSlideWidthStyle (fixedWidthTem, gutterTem, itemsTem) {\n var width;\n\n if (fixedWidthTem) {\n width = (fixedWidthTem + gutterTem) + 'px';\n } else {\n if (!carousel) { itemsTem = Math.floor(itemsTem); }\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ?\n CALC + '(100% / ' + dividend + ')' :\n 100 / dividend + '%';\n }\n\n width = 'width:' + width;\n\n // inner slider: overwrite outer slider styles\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle (gutterTem) {\n var str = '';\n\n // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n\n return str;\n }\n\n function getCSSPrefix (name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n if (prefix) { prefix = '-' + prefix + '-'; }\n\n return prefix;\n }\n\n function getTransitionDurationStyle (speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n\n function getAnimationDurationStyle (speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n\n function initStructure () {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner',\n hasGutter = hasOption('gutter');\n\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw';\n\n // set container properties\n if (container.id === '') { container.id = slideId; }\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n if (autoWidth) { newContainerClasses += ' tns-autowidth'; }\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses;\n\n // add constrain layer for carousel\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container);\n\n // add id, class, aria attributes\n // before clone slides\n forEach(slideItems, function(item, i) {\n addClass(item, 'tns-item');\n if (!item.id) { item.id = slideId + '-item' + i; }\n if (!carousel && animateNormal) { addClass(item, animateNormal); }\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n });\n\n // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(),\n fragmentAfter = doc.createDocumentFragment();\n\n for (var j = cloneCount; j--;) {\n var num = j%slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n addClass(cloneFirst, slideClonedClass);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n addClass(cloneLast, slideClonedClass);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n\n }\n\n function initSliderTransform () {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img');\n\n // add img load event listener\n forEach(imgs, function(img) {\n var src = img.src;\n\n if (!lazyload) {\n // not data img\n if (src && src.indexOf('data:image') < 0) {\n img.src = '';\n addEvents(img, imgEvents);\n addClass(img, 'loading');\n\n img.src = src;\n // data img\n } else {\n imgLoaded(img);\n }\n }\n });\n\n // set imgsComplete\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // reset imgs for auto height: check visible imgs only\n if (hasOption('autoHeight')) { imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1)); }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck); });\n\n } else {\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck () {\n if (autoWidth && slideCount > 1) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n\n (function stylesApplicationCheck() {\n var left = slideItems[num].getBoundingClientRect().left;\n var right = slideItems[num - 1].getBoundingClientRect().right;\n\n (Math.abs(left - right) <= 1) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck() }, 16);\n })();\n\n } else {\n initSliderTransformCore();\n }\n }\n\n\n function initSliderTransformCore () {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n if (freezable) { freeze = getFreeze(); }\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n }\n\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n\n function initSheet () {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) {\n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // #### LAYOUT\n\n // ## INLINE-BLOCK VS FLOAT\n\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n }\n\n\n // ## BASIC STYLES\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n }\n\n // inner wrapper styles\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet));\n\n // container styles\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n }\n\n // slide styles\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n if (options.gutter) { str += getSlideGutterStyle(options.gutter); }\n // set gallery items transition-duration\n if (!carousel) {\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n if (ANIMATIONDURATION) { str += getAnimationDurationStyle(speed); }\n }\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n\n // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n } else {\n // middle wrapper styles\n update_carousel_transition_duration();\n\n // inner wrapper styles\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight);\n\n // container styles\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n if (gutter) { str += getSlideGutterStyle(gutter); }\n\n // append to the last line\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n }\n\n // ## MEDIAQUERIES\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp);\n\n // middle wrapper string\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n }\n\n // inner wrapper string\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n }\n\n // container string\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || (fixedWidth && 'gutter' in opts))) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n }\n\n // slide string\n if ('fixedWidth' in opts || (fixedWidth && 'gutter' in opts) || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n }\n // set gallery items transition-duration\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) { slideStr += getTransitionDurationStyle(speedBP); }\n if (ANIMATIONDURATION) { slideStr += getAnimationDurationStyle(speedBP); }\n }\n if (slideStr) { slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}'; }\n\n // add up\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n\n function initTools () {\n // == slides ==\n updateSlideStatus();\n\n // == live region ==\n outerWrapper.insertAdjacentHTML('afterbegin', '
slide ' + getLiveRegionStr() + ' of ' + slideCount + '
');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current');\n\n // == autoplayInit ==\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n if (autoplayButton) {\n setAttrs(autoplayButton, {'data-action': txt});\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n }\n\n // add event\n if (autoplayButton) {\n addEvents(autoplayButton, {'click': toggleAutoplay});\n }\n\n if (autoplay) {\n startAutoplay();\n if (autoplayHoverPause) { addEvents(container, hoverEvents); }\n if (autoplayResetOnVisibility) { addEvents(container, visibilityEvent); }\n }\n }\n\n // == navInit ==\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount;\n // customized nav\n // will not hide the navs in case they're thumbnails\n if (navContainer) {\n setAttrs(navContainer, {'aria-label': 'Carousel Pagination'});\n navItems = navContainer.children;\n forEach(navItems, function(item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId,\n });\n });\n\n // generated nav\n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '';\n }\n navHtml = '
' + navHtml + '
';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility();\n\n // add transition\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n\n setAttrs(navItems[navCurrentIndex], {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass);\n\n // add events\n addEvents(navContainer, navEvents);\n }\n\n\n\n // == controlsInit ==\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '
');\n\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1',\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs(prevButton, {'data-controls' : 'prev'});\n setAttrs(nextButton, {'data-controls' : 'next'});\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n\n updateControlsStatus();\n\n // add events\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n }\n\n // hide tools if needed\n disableUI();\n }\n\n function initEvents () {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n\n if (touch) { addEvents(container, touchEvents, options.preventScrollOnTouch); }\n if (mouseDrag) { addEvents(container, dragEvents); }\n if (arrowKeys) { addEvents(doc, docmentKeydownEvent); }\n\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {'resize': onResize});\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) { doAutoHeight(); }\n }\n\n doLazyLoad();\n if (disable) { disableSlider(); } else if (freeze) { freezeSlider(); }\n\n events.on('indexChanged', additionalUpdates);\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n if (typeof onInit === 'function') { onInit(info()); }\n isOn = true;\n }\n\n function destroy () {\n // sheet\n sheet.disabled = true;\n if (sheet.ownerNode) { sheet.ownerNode.remove(); }\n\n // remove win event listeners\n removeEvents(win, {'resize': onResize});\n\n // arrowKeys, controls, nav\n if (arrowKeys) { removeEvents(doc, docmentKeydownEvent); }\n if (controlsContainer) { removeEvents(controlsContainer, controlsEvents); }\n if (navContainer) { removeEvents(navContainer, navEvents); }\n\n // autoplay\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n if (autoplayButton) { removeEvents(autoplayButton, {'click': toggleAutoplay}); }\n if (autoplay) { clearInterval(autoplayTimer); }\n\n // container\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n if (touch) { removeEvents(container, touchEvents); }\n if (mouseDrag) { removeEvents(container, dragEvents); }\n\n // cache Object values in options && reset HTML\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n\n tnsList.forEach(function(item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (typeof el === 'object' && el) {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n });\n\n\n // reset variables\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null;\n // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') { this[a] = null; }\n }\n isOn = false;\n }\n\n// === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n function onResize (e) {\n raf(function(){ resizeTasks(getEvent(e)); });\n }\n\n function resizeTasks (e) {\n if (!isOn) { return; }\n if (nested === 'outer') { events.emit('outerResized', info(e)); }\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone;\n // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n if (bpChanged) { events.emit('newBreakpointStart', info(e)); }\n }\n\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n }\n // update options\n resetVariblesWhenDisable(disable);\n\n viewport = getViewportWidth(); // <= edgePadding, gutter\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n needContainerTransform = true;\n }\n }\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) { indexMax = getIndexMax(); } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n updateIndex();\n }\n }\n\n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n if (!autoplay) { autoplayHoverPause = autoplayResetOnVisibility = false; }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ?\n addEvents(doc, docmentKeydownEvent) :\n removeEvents(doc, docmentKeydownEvent);\n }\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n if (nav !== navTem) {\n if (nav) {\n showElement(navContainer);\n updateNavVisibility();\n } else {\n hideElement(navContainer)\n }\n }\n if (touch !== touchTem) {\n touch ?\n addEvents(container, touchEvents, options.preventScrollOnTouch) :\n removeEvents(container, touchEvents);\n }\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ?\n addEvents(container, dragEvents) :\n removeEvents(container, dragEvents);\n }\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) { showElement(autoplayButton); }\n if (!animating && !autoplayUserPaused) { startAutoplay(); }\n } else {\n if (autoplayButton) { hideElement(autoplayButton); }\n if (animating) { stopAutoplay(); }\n }\n }\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ?\n addEvents(container, hoverEvents) :\n removeEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ?\n addEvents(doc, visibilityEvent) :\n removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) { needContainerTransform = true; }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) { innerWrapper.style.height = ''; }\n }\n\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) { needContainerTransform = true; }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n if (indChanged) {\n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) { additionalUpdates(); }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) { updateGallerySlidePositions(); }\n\n if (!disable && !freeze) {\n // non-mediaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = getSlideWidthStyle(fixedWidth, gutter, items) +\n getSlideGutterStyle(gutter);\n\n // remove the last line and\n // add new styles\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // auto height\n if (autoHeight) { doAutoHeight(); }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) { events.emit('newBreakpointEnd', info(e)); }\n }\n\n\n\n\n\n // === INITIALIZATION FUNCTIONS === //\n function getFreeze () {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n\n return width <= vp;\n }\n\n function setBreakpointZone () {\n breakpointZone = 0;\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n if (windowWidth >= bp) { breakpointZone = bp; }\n }\n }\n\n // (slideBy, indexMin, indexMax) => index\n var updateIndex = (function () {\n return loop ?\n carousel ?\n // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n\n leftEdge += slideBy;\n rightEdge -= slideBy;\n\n // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter)%(fixedWidth + gutter)) { rightEdge -= 1; }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } :\n // loop + gallery\n function() {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) { index -= slideCount; }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) { index += slideCount; }\n }\n } :\n // non-loop\n function() {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n })();\n\n function disableUI () {\n if (!autoplay && autoplayButton) { hideElement(autoplayButton); }\n if (!nav && navContainer) { hideElement(navContainer); }\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n\n function enableUI () {\n if (autoplay && autoplayButton) { showElement(autoplayButton); }\n if (nav && navContainer) { showElement(navContainer); }\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n }\n }\n\n function freezeSlider () {\n if (frozen) { return; }\n\n // remove edge padding from inner wrapper\n if (edgePadding) { innerWrapper.style.margin = '0px'; }\n\n // add class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { addClass(slideItems[i], str); }\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n disableUI();\n\n frozen = true;\n }\n\n function unfreezeSlider () {\n if (!frozen) { return; }\n\n // restore edge padding for inner wrapper\n // for mordern browsers\n if (edgePadding && CSSMQ) { innerWrapper.style.margin = ''; }\n\n // remove class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { removeClass(slideItems[i], str); }\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n enableUI();\n\n frozen = false;\n }\n\n function disableSlider () {\n if (disabled) { return; }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { hideElement(slideItems[j]); }\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // vertical slider\n if (!horizontal || !carousel) { removeAttrs(innerWrapper, ['style']); }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // update tools\n disableUI();\n\n disabled = true;\n }\n\n function enableSlider () {\n if (!disabled) { return; }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { showElement(slideItems[j]); }\n showElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n }\n\n // update tools\n enableUI();\n\n disabled = false;\n }\n\n function updateLiveRegion () {\n var str = getLiveRegionStr();\n if (liveregionCurrent.innerHTML !== str) { liveregionCurrent.innerHTML = str; }\n }\n\n function getLiveRegionStr () {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end;\n }\n\n function getVisibleSlideRange (val) {\n if (val == null) { val = getContainerTransformValue(); }\n var start = index, end, rangestart, rangeend;\n\n // get range start, range end for autoWidth and fixedWidth\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = - (parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n }\n\n // get start, end\n // - check auto width\n if (autoWidth) {\n slidePositions.forEach(function(point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) { start = i; }\n if (rangeend - point >= 0.5) { end = i; }\n }\n });\n\n // - check percentage width, fixed width\n } else {\n\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n if (center || edgePadding) {\n start = Math.floor(rangestart/cell);\n end = Math.ceil(rangeend/cell - 1);\n } else {\n end = start + Math.ceil(viewport/cell) - 1;\n }\n\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n\n return [start, end];\n }\n\n function doLazyLoad () {\n if (lazyload && !disable) {\n var arg = getVisibleSlideRange();\n arg.push(lazyloadSelector);\n\n getImageArray.apply(null, arg).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n eve[TRANSITIONEND] = function (e) { e.stopPropagation(); };\n addEvents(img, eve);\n\n addEvents(img, imgEvents);\n\n // update src\n img.src = getAttr(img, 'data-src');\n\n // update srcset\n var srcset = getAttr(img, 'data-srcset');\n if (srcset) { img.srcset = srcset; }\n\n addClass(img, 'loading');\n }\n });\n }\n }\n\n function onImgLoaded (e) {\n imgLoaded(getTarget(e));\n }\n\n function onImgFailed (e) {\n imgFailed(getTarget(e));\n }\n\n function imgLoaded (img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n\n function imgFailed (img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n\n function imgCompleted (img) {\n addClass(img, imgCompleteClass);\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray (start, end, imgSelector) {\n var imgs = [];\n if (!imgSelector) { imgSelector = 'img'; }\n\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll(imgSelector), function (img) { imgs.push(img); });\n start++;\n }\n\n return imgs;\n }\n\n // check if all visible images are loaded\n // and update container height if it's done\n function doAutoHeight () {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function(){ imgsLoadedCheck(imgs, updateInnerWrapperHeight); });\n }\n\n function imgsLoadedCheck (imgs, cb) {\n // execute callback function if all images are complete\n if (imgsComplete) { return cb(); }\n\n // check image classes\n imgs.forEach(function (img, index) {\n if (!lazyload && img.complete) { imgCompleted(img); } // Check image.complete\n if (hasClass(img, imgCompleteClass)) { imgs.splice(index, 1); }\n });\n\n // execute callback function if selected images are all complete\n if (!imgs.length) { return cb(); }\n\n // otherwise execute this functiona again\n raf(function(){ imgsLoadedCheck(imgs, cb); });\n }\n\n function additionalUpdates () {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n\n\n function update_carousel_transition_duration () {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n\n function getMaxSlideHeight (slideStart, slideRange) {\n var heights = [];\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n\n return Math.max.apply(null, heights);\n }\n\n // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n function updateInnerWrapperHeight () {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) { wp.style.height = maxHeight + 'px'; }\n }\n\n // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n function setSlidePositions () {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n\n forEach(slideItems, function(item, i) {\n // skip the first slide\n if (i) { slidePositions.push(item.getBoundingClientRect()[attr] - base); }\n // add the end edge\n if (i === slideCountNew - 1) { slidePositions.push(item.getBoundingClientRect()[attr2] - base); }\n });\n }\n\n // update slide\n function updateSlideStatus () {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n\n forEach(slideItems, function(item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n }\n // hide slides\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n }\n\n // gallery: update slide position\n function updateGallerySlidePositions () {\n var l = index + Math.min(slideCount, items);\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n }\n\n // remove outlet animation\n removeClass(item, animateOut);\n }\n\n // removing '.tns-moving'\n setTimeout(function() {\n forEach(slideItems, function(el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n }\n\n // set tabindex on Nav\n function updateNavStatus () {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n\n setAttrs(navCurrent, {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n\n function getLowerCaseNodeName (el) {\n return el.nodeName.toLowerCase();\n }\n\n function isButton (el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n\n function isAriaDisabled (el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n\n function disEnableElement (isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n }\n\n // set 'disabled' to true on controls when reach the edges\n function updateControlsStatus () {\n if (!controls || rewind || loop) { return; }\n\n var prevDisabled = (prevIsButton) ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = (nextIsButton) ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = (index <= indexMin) ? true : false,\n disableNext = (!rewind && index >= indexMax) ? true : false;\n\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n }\n\n // set duration\n function resetDuration (el, str) {\n if (TRANSITIONDURATION) { el.style[TRANSITIONDURATION] = str; }\n }\n\n function getSliderWidth () {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap (num) {\n if (num == null) { num = index; }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? ((viewport - gap) - (slidePositions[num + 1] - slidePositions[num] - gutter))/2 :\n fixedWidth ? (viewport - fixedWidth) / 2 :\n (items - 1) / 2;\n }\n\n function getRightBoundary () {\n var gap = edgePadding ? gutter : 0,\n result = (viewport + gap) - getSliderWidth();\n\n if (center && !loop) {\n result = fixedWidth ? - (fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() :\n getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n if (result > 0) { result = 0; }\n\n return result;\n }\n\n function getContainerTransformValue (num) {\n if (num == null) { num = index; }\n\n var val;\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = - (fixedWidth + gutter) * num;\n if (center) { val += getCenterGap(); }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n if (center) { num -= getCenterGap(); }\n val = - num * 100 / denominator;\n }\n } else {\n val = - slidePositions[num];\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) { val = Math.max(val, rightBoundary); }\n\n val += (horizontal && !autoWidth && !fixedWidth) ? '%' : 'px';\n\n return val;\n }\n\n function doContainerTransformSilent (val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n\n function doContainerTransform (val) {\n if (val == null) { val = getContainerTransformValue(); }\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide (number, classOut, classIn, isOut) {\n var l = number + items;\n if (!loop) { l = Math.min(l, slideCountNew); }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i];\n\n // set item positions\n if (!isOut) { item.style.left = (i - index) * 100 / items + '%'; }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n removeClass(item, classOut);\n addClass(item, classIn);\n\n if (isOut) { slideItemsOut.push(item); }\n }\n }\n\n // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n var transformCore = (function () {\n return carousel ?\n function () {\n resetDuration(container, '');\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or\n // zero duration for all browsers\n doContainerTransform();\n // run fallback function manually\n // when duration is 0 / container is hidden\n if (!speed || !isVisible(container)) { onTransitionEnd(); }\n\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n\n if (!horizontal) { updateContentWrapperHeight(); }\n } :\n function () {\n slideItemsOut = [];\n\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn);\n\n // run fallback function manually\n // when transition or animation not supported / duration is 0\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) { onTransitionEnd(); }\n };\n })();\n\n function render (e, sliderMoved) {\n if (updateIndexBeforeTransform) { updateIndex(); }\n\n // render when slider was moved (touch or drag) even though index may not change\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n if (autoHeight) { doAutoHeight(); }\n\n // pause autoplay when click or keydown from user\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) { stopAutoplay(); }\n\n running = true;\n transformCore();\n }\n }\n\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n function strTrans (str) {\n return str.toLowerCase().replace(/-/g, '');\n }\n\n // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n function onTransitionEnd (event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i];\n // set item positions\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) {\n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event'\n * have to check event first, otherwise event.target will cause an error\n * => or 'gallery' mode:\n * + event target is slide item\n * => or 'carousel' mode:\n * + event target is container,\n * + event.property is the same with transform attribute\n */\n if (!event ||\n !carousel && event.target.parentNode === container ||\n event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n\n if (!updateIndexBeforeTransform) {\n var indexTem = index;\n updateIndex();\n if (index !== indexTem) {\n events.emit('indexChanged', info());\n\n doContainerTransformSilent();\n }\n }\n\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n running = false;\n indexCached = index;\n }\n }\n\n }\n\n // # ACTIONS\n function goTo (targetIndex, e) {\n if (freeze) { return; }\n\n // prev slideBy\n if (targetIndex === 'prev') {\n onControlsClick(e, -1);\n\n // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1);\n\n // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n var absIndex = getAbsIndex(),\n indexGap = 0;\n\n if (targetIndex === 'first') {\n indexGap = - absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') { targetIndex = parseInt(targetIndex); }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) { targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex)); }\n\n indexGap = targetIndex - absIndex;\n }\n }\n\n // gallery: make sure new page won't overlap with current page\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += (index + indexGap - slideCount) >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n\n index += indexGap;\n\n // make sure index is in range\n if (carousel && loop) {\n if (index < indexMin) { index += slideCount; }\n if (index > indexMax) { index -= slideCount; }\n }\n\n // if index is changed, start rendering\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n\n }\n }\n\n // on controls click\n function onControlsClick (e, dir) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n var passEventObject;\n\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) { target = target.parentNode; }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n\n if (dir) {\n index += slideBy * dir;\n if (autoWidth) { index = Math.floor(index); }\n // pass e when click control buttons or keydown\n render((passEventObject || (e && e.type === 'keydown')) ? e : null);\n }\n }\n\n // on nav click\n function onNavClick (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n e = getEvent(e);\n var target = getTarget(e), navIndex;\n\n // find the clicked nav item\n while (target !== navContainer && !hasAttr(target, 'data-nav')) { target = target.parentNode; }\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n\n if (navCurrentIndex === navIndex) {\n if (animating) { stopAutoplay(); }\n navClicked = -1; // reset navClicked\n }\n }\n }\n\n // autoplay functions\n function setAutoplayTimer () {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n\n animating = true;\n }\n\n function stopAutoplayTimer () {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton (action, txt) {\n setAttrs(autoplayButton, {'data-action': action});\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay () {\n setAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('stop', autoplayText[1]); }\n }\n\n function stopAutoplay () {\n stopAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('start', autoplayText[0]); }\n }\n\n // programaitcally play/pause the slider\n function play () {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n function pause () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n\n function toggleAutoplay () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function onVisibilityChange () {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n\n function mouseoverPause () {\n if (animating) {\n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n\n function mouseoutRestart () {\n if (autoplayHoverPaused) {\n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n }\n\n // keydown events on document\n function onDocumentKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n }\n\n // on key control\n function onControlsKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) { onControlsClick(e, -1); }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n }\n\n // set focus\n function setFocus (el) {\n el.focus();\n }\n\n // on key nav\n function onNavKeydown (e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n if (!hasAttr(curElement, 'data-nav')) { return; }\n\n // var code = e.keyCode,\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) { setFocus(navItems[navIndex - 1]); }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) { setFocus(navItems[navIndex + 1]); }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n\n function getEvent (e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n function getTarget (e) {\n return e.target || win.event.srcElement;\n }\n\n function isTouchEvent (e) {\n return e.type.indexOf('touch') >= 0;\n }\n\n function preventDefaultBehavior (e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n\n function getMoveDirectionExpected () {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n\n function onPanStart (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n if (autoplay && animating) { stopAutoplayTimer(); }\n\n panStart = true;\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n\n function onPanMove (e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n\n if (carousel) {\n if (!rafIndex) { rafIndex = raf(function(){ panUpdate(e); }); }\n } else {\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) { preventScroll = true; }\n }\n\n if ((typeof e.cancelable !== 'boolean' || e.cancelable) && preventScroll) {\n e.preventDefault();\n }\n }\n }\n\n function panUpdate (e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n caf(rafIndex);\n if (panStart) { rafIndex = raf(function(){ panUpdate(e); }); }\n\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) { preventScroll = true; }\n\n try {\n if (e.type) { events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e)); }\n } catch(err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew): dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n\n function onPanEnd (e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n if (carousel) { resetDuration(container, ''); }\n panStart = false;\n\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {'click': function preventClick (e) {\n preventDefaultBehavior(e);\n removeEvents(target, {'click': preventClick});\n }});\n }\n\n if (carousel) {\n rafIndex = raf(function() {\n if (horizontal && !autoWidth) {\n var indexMoved = - dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n index += indexMoved;\n } else {\n var moved = - (translateInit + dist);\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n if (moved > slidePositions[i] && dist < 0) { index += 1; }\n i++;\n }\n }\n }\n\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n }\n\n // reset\n if (options.preventScrollOnTouch === 'auto') { preventScroll = false; }\n if (swipeAngle) { moveDirectionExpected = '?'; }\n if (autoplay && !animating) { setAutoplayTimer(); }\n }\n\n // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n function updateContentWrapperHeight () {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n\n function getPages () {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n function updateNavVisibility () {\n if (!nav || navAsThumbnails) { return; }\n\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n\n while (min < max) {\n fn(navItems[min]);\n min++;\n }\n\n // cache pages\n pagesCached = pages;\n }\n }\n\n function info (e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {},\n };\n }\n\n return {\n version: '2.9.4',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function() {\n return tns(extend(options, optionsElements));\n }\n };\n};\n","// get css-calc \n// @return - false | calc | -webkit-calc | -moz-calc\n// @usage - var calc = getCalc(); \nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function calc() {\n var doc = document, \n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'), \n result = false;\n\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n if (div.offsetWidth === 100) { \n result = val.replace(str, ''); \n break;\n }\n }\n } catch (e) {}\n \n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return result;\n}","// get subpixel support value\n// @return - boolean\nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '
';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n\n return supported;\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function mediaquerySupport () {\n if (window.matchMedia || window.msMatchMedia) {\n return true;\n }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return position === \"absolute\";\n}\n","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function has3DTransforms(tf){\n if (!tf) { return false; }\n if (!window.getComputedStyle) { return false; }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n el = doc.createElement('p'),\n has3d,\n cssTF = tf.length > 9 ? '-' + tf.slice(0, -9).toLowerCase() + '-' : '';\n\n cssTF += 'transform';\n\n // Add it to the body to get the computed style\n body.insertBefore(el, null);\n\n el.style[tf] = 'translate3d(1px,1px,1px)';\n has3d = window.getComputedStyle(el).getPropertyValue(cssTF);\n\n body.fake ? resetFakeBody(body, docOverflow) : el.remove();\n\n return (has3d !== undefined && has3d.length > 0 && has3d !== \"none\");\n}\n","// create and append style sheet\nexport function createStyleSheet (media, nonce) {\n // Create the