{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/js/components/menu-dropdown.js","webpack:///./src/js/components/buy-box.js","webpack:///./src/js/components/dropdown-open.js","webpack:///./src/js/components/menu.js","webpack:///./src/js/components/autocomplete.js","webpack:///./src/js/components/footer.js","webpack:///./node_modules/choices.js/public/assets/scripts/choices.js","webpack:///./src/js/components/range-slider.js","webpack:///./src/js/components/multiproduct.js","webpack:///./src/js/components/modal.js","webpack:///./src/js/components/scroll-to-top.js","webpack:///./src/js/awn/index.var.js","webpack:///./src/js/components/checkbox-open.js","webpack:///./src/js/components/sorting.js","webpack:///./src/js/components/parameter-open.js","webpack:///./src/js/components/filters.js","webpack:///./node_modules/awesome-notifications/dist/index.js","webpack:///./src/js/components/radio-open.js","webpack:///./src/js/awn/options.js","webpack:///./src/js/awn/constants.js","webpack:///./src/js/awn/elem.js","webpack:///./src/js/awn/timer.js","webpack:///./src/js/awn/toast.js","webpack:///./src/js/awn/popup.js","webpack:///./src/js/awn/index.js","webpack:///./src/js/components/notification-banner.js","webpack:///./node_modules/tiny-slider/src/helpers/raf.js","webpack:///./node_modules/tiny-slider/src/helpers/caf.js","webpack:///./node_modules/tiny-slider/src/helpers/extend.js","webpack:///./node_modules/tiny-slider/src/helpers/checkStorageValue.js","webpack:///./node_modules/tiny-slider/src/helpers/setLocalStorage.js","webpack:///./node_modules/tiny-slider/src/helpers/getBody.js","webpack:///./node_modules/tiny-slider/src/helpers/docElement.js","webpack:///./node_modules/tiny-slider/src/helpers/setFakeBody.js","webpack:///./node_modules/tiny-slider/src/helpers/resetFakeBody.js","webpack:///./node_modules/tiny-slider/src/helpers/addCSSRule.js","webpack:///./node_modules/tiny-slider/src/helpers/getCssRulesLength.js","webpack:///./node_modules/tiny-slider/src/helpers/forEach.js","webpack:///./node_modules/tiny-slider/src/helpers/classListSupport.js","webpack:///./node_modules/tiny-slider/src/helpers/hasClass.js","webpack:///./node_modules/tiny-slider/src/helpers/addClass.js","webpack:///./node_modules/tiny-slider/src/helpers/removeClass.js","webpack:///./node_modules/tiny-slider/src/helpers/hasAttr.js","webpack:///./node_modules/tiny-slider/src/helpers/getAttr.js","webpack:///./node_modules/tiny-slider/src/helpers/isNodeList.js","webpack:///./node_modules/tiny-slider/src/helpers/setAttrs.js","webpack:///./node_modules/tiny-slider/src/helpers/removeAttrs.js","webpack:///./node_modules/tiny-slider/src/helpers/arrayFromNodeList.js","webpack:///./node_modules/tiny-slider/src/helpers/hideElement.js","webpack:///./node_modules/tiny-slider/src/helpers/showElement.js","webpack:///./node_modules/tiny-slider/src/helpers/isVisible.js","webpack:///./node_modules/tiny-slider/src/helpers/whichProperty.js","webpack:///./node_modules/tiny-slider/src/helpers/getEndProperty.js","webpack:///./node_modules/tiny-slider/src/helpers/passiveOption.js","webpack:///./node_modules/tiny-slider/src/helpers/addEvents.js","webpack:///./node_modules/tiny-slider/src/helpers/removeEvents.js","webpack:///./node_modules/tiny-slider/src/helpers/events.js","webpack:///./node_modules/tiny-slider/src/tiny-slider.js","webpack:///./node_modules/tiny-slider/src/helpers/calc.js","webpack:///./node_modules/tiny-slider/src/helpers/percentageLayout.js","webpack:///./node_modules/tiny-slider/src/helpers/mediaquerySupport.js","webpack:///./node_modules/tiny-slider/src/helpers/has3DTransforms.js","webpack:///./node_modules/tiny-slider/src/helpers/getSlideId.js","webpack:///./node_modules/tiny-slider/src/helpers/createStyleSheet.js","webpack:///./node_modules/tiny-slider/src/helpers/jsTransform.js","webpack:///./node_modules/tiny-slider/src/helpers/removeCSSRule.js","webpack:///./node_modules/tiny-slider/src/helpers/toDegree.js","webpack:///./node_modules/tiny-slider/src/helpers/getTouchDirection.js","webpack:///./src/js/components/sliders.js","webpack:///./src/js/components/select.js","webpack:///./src/js/components/notifications.js","webpack:///./src/js/components/menu-category.js","webpack:///./src/js/components/sidepanel.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","document","addEventListener","e","target","tagName","classList","contains","parentNode","nextElementSibling","toggle","querySelectorAll","forEach","item","remove","buyBox","querySelector","footer","parentElement","window","onload","matchMedia","matches","height","offsetHeight","style","paddingBottom","dropdownOpenEls","event","currentTarget","dataset","open","menuHamburger","menuToggleEls","headerMenuContainer","menu","branch","body","headerFormOpenBtn","headerFormCloseBtn","headerForm","focus","backToTop","pageYOffset","add","factory","__webpack_modules__","282","__unused_webpack_module","clearChoices","activateChoices","filterChoices","addChoice","constants_1","_a","label","id","groupId","disabled","elementId","customProperties","placeholder","keyCode","type","ACTION_TYPES","ADD_CHOICE","results","FILTER_CHOICES","active","ACTIVATE_CHOICES","CLEAR_CHOICES","783","addGroup","ADD_GROUP","464","highlightItem","removeItem","addItem","choiceId","ADD_ITEM","REMOVE_ITEM","highlighted","HIGHLIGHT_ITEM","137","setIsLoading","resetTo","clearAll","CLEAR_ALL","state","RESET_TO","isLoading","SET_IS_LOADING","373","__spreadArray","this","to","from","pack","arguments","length","ar","Array","slice","concat","__importDefault","mod","deepmerge_1","fuse_js_1","choices_1","groups_1","items_1","misc_1","components_1","defaults_1","utils_1","reducers_1","store_1","templates_1","IS_IE11","documentElement","USER_DEFAULTS","Choices","element","userConfig","_this","undefined","allowHTML","console","warn","config","default","all","DEFAULT_CONFIG","defaults","options","arrayMerge","_","sourceArray","invalidConfigOptions","diff","join","passedElement","HTMLInputElement","HTMLSelectElement","TypeError","_isTextElement","TEXT_TYPE","_isSelectOneElement","SELECT_ONE_TYPE","_isSelectMultipleElement","SELECT_MULTIPLE_TYPE","_isSelectElement","searchEnabled","includes","renderSelectedChoices","addItemFilter","re","RegExp","test","WrappedInput","classNames","delimiter","WrappedSelect","template","data","_templates","option","initialised","_store","_initialState","defaultState","_currentState","_prevState","_currentValue","_canSearch","_isScrollingOnIe","_highlightPosition","_wasTap","_placeholderValue","_generatePlaceholderValue","_baseId","generateId","_direction","dir","elementDirection","getComputedStyle","direction","_idNames","itemChoice","_presetGroups","optionGroups","_presetOptions","_presetChoices","choices","_presetItems","items","splitValues","split","push","innerHTML","selected","hasAttribute","_render","_onFocus","_onBlur","_onKeyUp","_onKeyDown","_onClick","_onTouchMove","_onTouchEnd","_onMouseDown","_onMouseOver","_onFormReset","_onSelectKey","_onEnterKey","_onEscapeKey","_onDirectionKey","_onDeleteKey","isActive","silent","init","preventExtensions","configurable","_createTemplates","_createElements","_createStructure","subscribe","_addEventListeners","addItems","disable","callbackOnInit","destroy","_removeEventListeners","reveal","containerOuter","unwrap","clearStore","enable","isDisabled","input","runEvent","_b","_c","group","getGroupById","dispatch","triggerEvent","EVENTS","groupValue","unhighlightItem","highlightAll","unhighlightAll","removeActiveItemsByValue","activeItems","filter","_removeItem","removeActiveItems","excludedId","removeHighlightedItems","highlightedActiveItems","_triggerChange","showDropdown","preventInputFocus","dropdown","requestAnimationFrame","show","distanceFromTopWindow","hideDropdown","preventInputBlur","hide","close","removeActiveDescendant","blur","getValue","valueOnly","values","reduce","selectedItems","itemValue","setValue","_setChoiceOrItem","setChoiceByValue","isArray","val","_findAndSelectChoiceByValue","setChoices","choicesArrayOrFetcher","replaceChoices","ReferenceError","fetcher_1","Promise","resolve","then","_handleLoadingState","catch","err","error","removeLoadingState","_startLoading","groupOrChoice","_addGroup","parseInt","valueKey","labelKey","choice","_addChoice","isSelected","_stopLoading","clearInput","shouldSetInputWidth","clear","_isSearching","stateChanged","groups","shouldRenderChoices","shouldRenderItems","_renderChoices","_renderItems","activeGroups","activeChoices","choiceListFragment","createDocumentFragment","choiceList","resetScrollPosition","scrollToTop","activePlaceholders","activeChoice","_createChoicesFragment","_createGroupsFragment","childNodes","canAddItem","_canAddItem","response","append","_highlightChoice","notice","_getTemplate","dropdownItem","noResultsText","noChoicesText","itemList","itemListFragment","_createItemsFragment","fragment","shouldSort","sort","sorter","groupChoices","getGroupChoices","dropdownGroup","appendChild","withinGroup","searchResultLimit","renderChoiceLimit","sortByScore","appendChoice","itemSelectText","rendererableChoices","acc","placeholderChoices","normalChoices","choiceLimit","sortedChoices","shouldSortItems","removeItemButton","map","listItem","change","_selectPlaceholderChoice","placeholderChoice","_addItem","_handleButtonAction","removeItems","itemId","itemToRemove","find","_handleItemAction","hasShiftKey","passedId","_handleChoiceAction","getChoiceById","passedKeyCode","hasActiveDropdown","_handleBackspace","lastItem","hasHighlightedItems","some","editItems","setWidth","setLoading","placeholderItem","getChild","addLoadingState","loadingText","_handleSearch","isFocussed","searchFloor","searchChoices","hasUnactiveChoices","resultCount","_searchChoices","search","addItemText","isDuplicateValue","existsInArray","maxItemCount","maxItemText","duplicateItemsAllowed","uniqueItemText","customAddItemText","newValue","trim","currentValue","haystack","searchableChoices","needle","assign","fuseOptions","keys","searchFields","includeMatches","passive","form","addEventListeners","removeEventListener","removeEventListeners","hasFocusedInput","hasItems","hasChildren","keyString","String","fromCharCode","wasAlphaNumericChar","BACK_KEY","KEY_CODES","DELETE_KEY","ENTER_KEY","A_KEY","ESC_KEY","UP_KEY","DOWN_KEY","PAGE_UP_KEY","PAGE_DOWN_KEY","toLowerCase","backKey","deleteKey","outerHTML","userHasRemovedValue","canReactivateChoices","canSearch","rawValue","ctrlKey","metaKey","activeElement","enterKey","targetWasButton","preventDefault","highlightedChoice","highlightedState","downKey","pageUpKey","pageDownKey","directionInt","nextEl","currentEl","getAdjacentEl","isScrolledIntoView","scrollToChildElement","touches","containerInner","stopPropagation","HTMLElement","firstChoice","firstElementChild","isOnScrollbar","offsetX","offsetWidth","offsetLeft","closest","shiftKey","removeFocusState","addFocusState","hasHighlightedItems_1","el","passedEl","setAttribute","indexOf","highlightChoice","setActiveDescendant","_d","_e","_f","_g","passedValue","passedLabel","passedOptionId","prependValue","toString","appendValue","_h","choiceLabel","choiceElementId","isType","getElementsByTagName","Math","floor","Date","valueOf","random","isOptDisabled","args","_i","apply","callbackOnCreateTemplates","userTemplates","strToEl","Container","labelId","position","Input","preventPaste","paste","List","Dropdown","conceal","wrap","searchPlaceholderValue","insertBefore","firstChild","_addPredefinedGroups","_addPredefinedChoices","_addPredefinedItems","placeholderOption","hasSelectedChoice","firstEnabledChoiceIndex","findIndex","index","string","getType","foundChoice","valueComparer","text","placeholderValue","613","isOpen","isFlipped","shouldFlip","dropdownPos","activeDescendantID","removeAttribute","openState","flippedState","focusState","disabledState","removeChild","loadingState","217","getBoundingClientRect","bottom","selector","activeState","520","dropdown_1","container_1","input_1","list_1","wrapped_input_1","wrapped_select_1","11","isEqualNode","_onPaste","_onInput","set","sanitise","minWidth","width","624","scrollPos","scrollTop","node","hasChildNodes","listHeight","listScrollPosition","elementHeight","elementPos","offsetTop","destination","_animateScroll","_scrollDown","strength","easing","distance","_scrollUp","SCROLLING_SPEED","choiceListScrollTop","continueAnimation","730","WrappedElement","hidden","tabIndex","origStyle","getAttribute","eventType","dispatchEvent","541","extendStatics","__extends","b","setPrototypeOf","__proto__","__","constructor","_super","982","optionData","appendDocFragment","883","789","DEFAULT_CLASSNAMES","inputCloned","list","listItems","listSingle","listDropdown","itemSelectable","itemDisabled","groupHeading","button","selectedState","noResults","noChoices","sortByAlpha","value1","value2","includeScore","18","978","948","359","285","533","187","__createBinding","k","k2","__exportStar","287","132","837","598","37","369","47","923","876","799","tmpEl","cloneObject","generateChars","getRandomNumber","min","max","prefix","replace","obj","wrapper","createElement","nextSibling","startEl","prop","sibling","parent","str","cleanedInput","firldChild","children","label2","localeCompare","sensitivity","ignorePunctuation","numeric","a","score","scoreA","customArgs","CustomEvent","detail","bubbles","cancelable","array","JSON","parse","stringify","aKeys","bKeys","273","action","addChoiceAction","addItemAction_1","removeItemAction_1","filterChoicesAction_1","activateChoicesAction_1","871","addGroupAction","655","redux_1","loading_1","loading","appReducer","combineReducers","passedState","52","addItemAction","highlightItemAction_1","502","744","index_1","Store","createStore","__REDUX_DEVTOOLS_EXTENSION__","onChange","getState","selectableChoices","reverse","hasActiveOptions","686","templates","isSelectElement","isSelectOneElement","passedElementType","div","className","isPlaceholder","deletable","removeButton","choiceGroup","selectText","choiceDisabled","choiceSelectable","inp","autocomplete","autocapitalize","spellcheck","innerText","classes","opt","Option","996","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","clone","deepmerge","defaultArrayMerge","source","getKeys","getOwnPropertySymbols","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","mergeObject","propertyIsUnsafe","customMerge","getMergeFunction","sourceIsArray","Error","prev","next","221","__webpack_exports__","getTag","isString","isNumber","isBoolean","isObject","isObjectLike","isDefined","isBlank","Fuse","hasOwn","KeyStore","_keys","_keyMap","totalWeight","createKey","weight","keyId","path","src","createKeyPath","createKeyId","MISSING_KEY_PROPERTY","INVALID_KEY_WEIGHT_VALUE","Config","isCaseSensitive","sortFn","idx","findAllMatches","minMatchCharLength","location","threshold","useExtendedSearch","getFn","arr","deepGet","result","baseToString","len","ignoreLocation","ignoreFieldNorm","fieldNormWeight","SPACE","FuseIndex","norm","mantissa","cache","Map","pow","numTokens","match","has","parseFloat","round","isCreated","setIndexRecords","docs","records","_keysMap","doc","docIndex","_addString","_addObject","size","splice","record","v","$","keyIndex","subRecords","stack","nestedArrIndex","pop","subRecord","createIndex","myIndex","setKeys","setSources","computeScore$1","pattern","errors","currentLocation","expectedLocation","accuracy","proximity","abs","patternAlphabet","patternLen","textLen","currentThreshold","bestLocation","computeMatches","matchMask","lastBitArr","finalScore","binMax","mask","binMin","binMid","start","finish","bitArr","j","charMatch","charAt","isMatch","indices","matchmask","end","convertMaskToIndices","createPatternAlphabet","char","BitapSearch","chunks","addChunk","startIndex","alphabet","remainder","substr","allIndices","totalScore","hasMatches","BaseMatch","getMatch","multiRegex","singleRegex","exp","FuzzyMatch","super","_bitapSearch","searchIn","IncludeMatch","searchers","startsWith","endsWith","searchersLen","SPACE_RE","MultiMatchSet","Set","ExtendedSearch","query","queryItem","found","searcher","token","isMultiMatch","isSingleMatch","parseQuery","numMatches","qLen","pLen","registeredSearchers","createSearcher","searcherClass","condition","LogicalOperator","KeyType","isExpression","convertToExplicit","auto","isQueryPath","isPath","isLeaf","LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY","operator","transformMatches","refIndex","transformScore","_keyStore","setCollection","_docs","_myIndex","predicate","removeAt","limit","_searchStringList","_searchObjectList","_searchLogical","Number","EPSILON","computeScore","transformers","transformer","format","expression","evaluate","_findMatches","getValueForItemAtKeyId","res","child","resultMap","expResults","version","parseIndex","register","857","_defineProperty","writable","ownKeys","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","getOwnPropertyDescriptors","defineProperties","formatProdErrorMessage","code","ActionTypes","applyMiddleware","bindActionCreators","compose","$$observable","observable","randomString","substring","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","proto","getPrototypeOf","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","listener","isSubscribed","listeners","replaceReducer","nextReducer","_ref","outerSubscribe","observer","observeState","unsubscribe","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","nextState","_key","previousStateForKey","nextStateForKey","bindActionCreator","actionCreator","actionCreators","boundActionCreators","_len","funcs","arg","middlewares","store","_dispatch","middlewareAPI","chain","middleware","__webpack_module_cache__","cachedModule","definition","_scripts_choices__WEBPACK_IMPORTED_MODULE_0__","_scripts_choices__WEBPACK_IMPORTED_MODULE_0___default","rangeInputs","priceInputs","range","rangeInput","clientId","buttonId","minVal","minValue","maxValue","left","right","timeout","minPrice","maxPrice","clearTimeout","setTimeout","__doPostBack","maxVal","lastElementChild","top","modal","hideModal","showModal","scrollTopBtn","scrollTo","behavior","require","check","SortImgEls","previousElementSibling","setCookie","cname","cvalue","exdays","setTime","getTime","expires","toUTCString","cookie","getCookie","ca","decodeURIComponent","filterToggles","filterSearch","filterShowAll","filterCookie","filters","showAll","showALl","filterId","self","iterator","B","maxNotifications","animationDuration","labels","tip","info","success","warning","alert","async","confirm","confirmOk","confirmCancel","icons","suffix","enabled","replacements","general","messages","formatError","statusText","status","message","durations","global","minDurations","defaultsDeep","popup","toast","btn","u","klass","content","icon","progressBar","progressBarPause","ids","container","buttons","successBtn","cancelBtn","title","dotAnimation","f","hiding","lib","newNode","cssText","beforeInsert","afterInsert","getElement","beforeDelete","updateType","replaceChild","now","afterDelete","getElementById","duration","h","callback","remaining","resume","paused","timerId","pause","y","g","w","Reflect","construct","sham","Proxy","Boolean","toSecs","setInnerHtml","applyReplacements","childElementCount","getElementsByClassName","delete","isDeleted","addEvent","timer","toggleClass","O","T","S","P","insert","okBtn","keyupListener","nodeName","E","C","D","_addToast","_afterAsync","_addPopup","override","_responseHandler","_createContainer","x","radioOpenBtnEls","Options","overrides","tConsts","mConsts","eConsts","timeLeft","func","delay","msg","html","elements","Timer","Elem","onOk","onCancel","Notifier","promise","onResolve","onReject","asyncToast","asyncBlock","Popup","old","newToast","Toast","oldElement","payload","toastName","notificationBanner","closeBtn","raf","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","caf","cancelAnimationFrame","mozCancelAnimationFrame","extend","copy","checkStorageValue","setLocalStorage","storage","access","setItem","getBody","fake","docElement","setFakeBody","docOverflow","overflow","background","resetFakeBody","addCSSRule","sheet","rules","insertRule","addRule","getCssRulesLength","cssRules","scope","classListSupport","hasClass","addClass","removeClass","hasAttr","attr","getAttr","isNodeList","setAttrs","els","attrs","removeAttrs","attrLength","arrayFromNodeList","nl","hideElement","forceHide","display","showElement","isVisible","whichProperty","props","Props","toUpperCase","getEndProperty","propIn","propOut","endProp","supportsPassive","passiveOption","addEvents","preventScrolling","removeEvents","Events","topics","on","eventName","fn","off","emit","Element","tns","axis","gutter","edgePadding","fixedWidth","autoWidth","viewportMax","slideBy","center","controls","controlsPosition","controlsText","controlsContainer","prevButton","nextButton","nav","navPosition","navContainer","navAsThumbnails","arrowKeys","speed","autoplay","autoplayPosition","autoplayTimeout","autoplayDirection","autoplayText","autoplayHoverPause","autoplayButton","autoplayButtonOutput","autoplayResetOnVisibility","animateIn","animateOut","animateNormal","animateDelay","loop","rewind","autoHeight","responsive","lazyload","lazyloadSelector","touch","mouseDrag","swipeAngle","nested","preventActionWhenRunning","preventScrollOnTouch","freezable","onInit","useLocalStorage","nonce","win","KEYS","ENTER","LEFT","RIGHT","tnsStorage","localStorageAccess","browserInfo","navigator","userAgent","uid","localStorage","getItem","CALC","vals","calc","PERCENTAGELAYOUT","supported","outer","count","percentageLayout","CSSMQ","msMatchMedia","rule","styleSheet","createTextNode","currentStyle","mediaquerySupport","TRANSFORM","HAS3DTRANSFORMS","tf","has3d","cssTF","getPropertyValue","has3DTransforms","TRANSITIONDURATION","TRANSITIONDELAY","ANIMATIONDURATION","ANIMATIONDELAY","TRANSITIONEND","ANIMATIONEND","supportConsoleWarn","tnsList","optionsElements","carousel","responsiveTem","updateOptions","middleWrapper","breakpointZone","horizontal","outerWrapper","innerWrapper","containerParent","containerHTML","slideItems","slideCount","windowWidth","getWindowWidth","isOn","setBreakpointZone","slidePositions","imgsComplete","liveregionCurrent","itemsMax","media","getOption","viewport","getViewportWidth","fixedWidthViewportWidth","slideItemsOut","cloneCount","bp","tem","ceil","getItemsMax","hasOption","slideCountNew","hasRightDeadZone","rightBoundary","getRightBoundary","updateIndexBeforeTransform","transformAttr","transformPrefix","transformPostfix","getIndexMax","getStartIndex","indexCached","indexMin","getCurrentSlide","indexMax","moveDirectionExpected","running","events","newContainerClasses","slideId","tnsId","freeze","getFreeze","frozen","controlsEvents","onControlsClick","getEvent","navEvents","onTransitionEnd","getTarget","navIndex","navClicked","targetIndexBase","pages","goTo","navCurrentIndex","animating","stopAutoplay","curElement","setFocus","navItems","hoverEvents","stopAutoplayTimer","autoplayHoverPaused","setAutoplayTimer","visibilityEvent","autoplayVisibilityPaused","docmentKeydownEvent","touchEvents","onPanStart","onPanMove","onPanEnd","dragEvents","hasControls","hasNav","hasAutoplay","hasTouch","hasMouseDrag","slideActiveClass","imgCompleteClass","imgEvents","imgLoaded","img","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","cloneNode","cloneLast","initStructure","fontSize","slide","marginLeft","getSlideMarginLeft","getTransitionDurationStyle","getInnerWrapperStyles","getContainerWidth","getSlideWidthStyle","getSlideGutterStyle","getAnimationDurationStyle","opts","middleWrapperStr","innerWrapperStr","containerStr","slideStr","itemsBP","fixedWidthBP","speedBP","edgePaddingBP","autoHeightBP","gutterBP","initSheet","initSliderTransform","updateIndex","leftEdge","rightEdge","transformCore","postfix","tick","unit","positionTick","resetDuration","doContainerTransform","getContainerTransformValue","moveElement","updateContentWrapperHeight","eve","animateSlide","getInfo","play","startAutoplay","updateSliderHeight","updateInnerWrapperHeight","refresh","ownerNode","onResize","toggleAutoplay","clearInterval","htmlList","prevEl","parentEl","rebuild","ind","getAbsIndex","absIndex","innerWidth","clientWidth","getInsertPosition","pos","gap","getClientWidth","rect","ww","edgePaddingTem","gutterTem","fixedWidthTem","speedTem","gutterTemUnit","itemsTem","dividend","getCSSPrefix","imgs","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","point","cell","srcset","imgSelector","complete","navPrev","navCurrent","updateNavStatus","getMaxSlideHeight","slideStart","slideRange","heights","maxHeight","wp","attr2","base","getLowerCaseNodeName","isAriaDisabled","disEnableElement","prevDisabled","nextDisabled","disablePrev","disableNext","getCenterGap","denominator","number","classOut","classIn","isOut","render","sliderMoved","strTrans","propertyName","targetIndex","indexGap","isNaN","factor","passEventObject","targetIn","setInterval","updateAutoplayButton","isTouchEvent","changedTouches","srcElement","preventDefaultBehavior","returnValue","getMoveDirectionExpected","angle","atan2","PI","clientX","clientY","panUpdate","dist","preventClick","indexMoved","moved","rough","displayIndex","branchesSlider","servicesSlider","prevBtnElBranch","nextBtnElBranch","prevBtnElService","nextBtnElService","826","1246","1570","productDetailImageSlider","homepageImageSliders","576","1068","createSelects","selectEls","btnCart","notifier","AWN","cartOptions","categoryMenuBtn","categoryMenu","startTarget","sidepanel","url","clipboard","writeText"],"mappings":"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","file":"/js/app.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","document.addEventListener(\"click\", function(e)\n{\n var target = e.target;\n\n while(target && (target.tagName !== \"BUTTON\" || !target.classList.contains(\"js-dropdown-menu-btn\")))\n target = target.parentNode;\n\n if(target == null)\n {\n const allDropdowns = document.querySelectorAll('.js-dropdown-menu-btn');\n\n allDropdowns.forEach((item) =>\n {\n const dropdownMenu = item.nextElementSibling;\n dropdownMenu.classList.remove('js-active');\n });\n\n return;\n }\n\n target.nextElementSibling.classList.toggle(\"js-active\");\n});","const buyBox = document.querySelector('.js-buy-box');\nconst footer = document.querySelector('.js-footer');\n\ndocument.addEventListener(\"click\", function(e)\n{\n var target = e.target;\n\n if(target.tagName !== \"BUTTON\" && !target.classList.contains(\"js-buy-box-btn\"))\n return;\n\n target.classList.toggle(\"js-active\");\n target.parentElement.classList.toggle(\"js-active\");\n});\n\nif (buyBox && footer)\n{\n window.onload = () =>\n {\n if (window.matchMedia('(max-width: 1068px)').matches)\n {\n const height = buyBox.offsetHeight;\n footer.style.paddingBottom = `${height}px`;\n }\n };\n}\n","const dropdownOpenEls = document.querySelectorAll('.js-dropdown-open');\n\nif (dropdownOpenEls) {\n [...dropdownOpenEls].forEach((item) => {\n item.addEventListener('click', (event) => {\n const target = document.querySelector(event.currentTarget.dataset.open);\n target.classList.toggle('k-d-none');\n });\n });\n}\n","const menuHamburger = document.querySelector('.js-hamburger');\nconst menuToggleEls = document.querySelectorAll('.js-menu-toggle');\nconst headerMenuContainer = document.querySelector('.js-header-menu-container');\nconst menu = document.querySelector('.js-menu-open');\nconst branch = document.querySelector('.js-branch');\n\nif (menuHamburger && menu) {\n menuHamburger.addEventListener('click', () => {\n menu.classList.toggle('js-active');\n menuHamburger.classList.toggle('js-active');\n headerMenuContainer.classList.toggle('js-active');\n branch.classList.toggle('js-menu-active');\n document.body.classList.toggle('js-menu-active');\n });\n}\n\nif (menuToggleEls) {\n [...menuToggleEls].forEach((item) => {\n item.addEventListener('click', (event) => {\n event.target.classList.toggle('js-active');\n event.target.parentElement.classList.toggle('js-active');\n event.target.parentElement.nextElementSibling.classList.toggle('js-active');\n });\n });\n}\n","// js-menu-active na body\nconst headerFormOpenBtn = document.querySelector('.js-header-form-open-btn');\nconst headerFormCloseBtn = document.querySelector('.js-header-form-close-btn');\nconst headerForm = document.querySelector('.js-header-form');\n\nif (headerFormOpenBtn && headerFormCloseBtn && headerForm) {\n headerFormOpenBtn.addEventListener('click', () => {\n headerForm.classList.toggle('js-active');\n document.body.classList.toggle('js-menu-active');\n\n document.querySelector(\".k-input--search\").focus();\n });\n headerFormCloseBtn.addEventListener('click', () => {\n headerForm.classList.remove('js-active');\n document.body.classList.remove('js-menu-active');\n });\n}\n","var backToTop = document.querySelector(\".k-back-to-top-box\");\r\n\r\nwindow.addEventListener(\"scroll\", function(e)\r\n{\r\n if(window.pageYOffset > 384 && !backToTop.classList.contains(\"show\"))\r\n backToTop.classList.add(\"show\");\r\n else if(window.pageYOffset <= 384 && backToTop.classList.contains(\"show\"))\r\n backToTop.classList.remove(\"show\");\r\n});","/*! choices.js v10.1.0 | © 2022 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Choices\"] = factory();\n\telse\n\t\troot[\"Choices\"] = factory();\n})(window, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 282:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.clearChoices = exports.activateChoices = exports.filterChoices = exports.addChoice = void 0;\n\nvar constants_1 = __webpack_require__(883);\n\nvar addChoice = function (_a) {\n var value = _a.value,\n label = _a.label,\n id = _a.id,\n groupId = _a.groupId,\n disabled = _a.disabled,\n elementId = _a.elementId,\n customProperties = _a.customProperties,\n placeholder = _a.placeholder,\n keyCode = _a.keyCode;\n return {\n type: constants_1.ACTION_TYPES.ADD_CHOICE,\n value: value,\n label: label,\n id: id,\n groupId: groupId,\n disabled: disabled,\n elementId: elementId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n };\n};\n\nexports.addChoice = addChoice;\n\nvar filterChoices = function (results) {\n return {\n type: constants_1.ACTION_TYPES.FILTER_CHOICES,\n results: results\n };\n};\n\nexports.filterChoices = filterChoices;\n\nvar activateChoices = function (active) {\n if (active === void 0) {\n active = true;\n }\n\n return {\n type: constants_1.ACTION_TYPES.ACTIVATE_CHOICES,\n active: active\n };\n};\n\nexports.activateChoices = activateChoices;\n\nvar clearChoices = function () {\n return {\n type: constants_1.ACTION_TYPES.CLEAR_CHOICES\n };\n};\n\nexports.clearChoices = clearChoices;\n\n/***/ }),\n\n/***/ 783:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.addGroup = void 0;\n\nvar constants_1 = __webpack_require__(883);\n\nvar addGroup = function (_a) {\n var value = _a.value,\n id = _a.id,\n active = _a.active,\n disabled = _a.disabled;\n return {\n type: constants_1.ACTION_TYPES.ADD_GROUP,\n value: value,\n id: id,\n active: active,\n disabled: disabled\n };\n};\n\nexports.addGroup = addGroup;\n\n/***/ }),\n\n/***/ 464:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.highlightItem = exports.removeItem = exports.addItem = void 0;\n\nvar constants_1 = __webpack_require__(883);\n\nvar addItem = function (_a) {\n var value = _a.value,\n label = _a.label,\n id = _a.id,\n choiceId = _a.choiceId,\n groupId = _a.groupId,\n customProperties = _a.customProperties,\n placeholder = _a.placeholder,\n keyCode = _a.keyCode;\n return {\n type: constants_1.ACTION_TYPES.ADD_ITEM,\n value: value,\n label: label,\n id: id,\n choiceId: choiceId,\n groupId: groupId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n };\n};\n\nexports.addItem = addItem;\n\nvar removeItem = function (id, choiceId) {\n return {\n type: constants_1.ACTION_TYPES.REMOVE_ITEM,\n id: id,\n choiceId: choiceId\n };\n};\n\nexports.removeItem = removeItem;\n\nvar highlightItem = function (id, highlighted) {\n return {\n type: constants_1.ACTION_TYPES.HIGHLIGHT_ITEM,\n id: id,\n highlighted: highlighted\n };\n};\n\nexports.highlightItem = highlightItem;\n\n/***/ }),\n\n/***/ 137:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.setIsLoading = exports.resetTo = exports.clearAll = void 0;\n\nvar constants_1 = __webpack_require__(883);\n\nvar clearAll = function () {\n return {\n type: constants_1.ACTION_TYPES.CLEAR_ALL\n };\n};\n\nexports.clearAll = clearAll;\n\nvar resetTo = function (state) {\n return {\n type: constants_1.ACTION_TYPES.RESET_TO,\n state: state\n };\n};\n\nexports.resetTo = resetTo;\n\nvar setIsLoading = function (isLoading) {\n return {\n type: constants_1.ACTION_TYPES.SET_IS_LOADING,\n isLoading: isLoading\n };\n};\n\nexports.setIsLoading = setIsLoading;\n\n/***/ }),\n\n/***/ 373:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\nvar deepmerge_1 = __importDefault(__webpack_require__(996));\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n\nvar fuse_js_1 = __importDefault(__webpack_require__(221));\n\nvar choices_1 = __webpack_require__(282);\n\nvar groups_1 = __webpack_require__(783);\n\nvar items_1 = __webpack_require__(464);\n\nvar misc_1 = __webpack_require__(137);\n\nvar components_1 = __webpack_require__(520);\n\nvar constants_1 = __webpack_require__(883);\n\nvar defaults_1 = __webpack_require__(789);\n\nvar utils_1 = __webpack_require__(799);\n\nvar reducers_1 = __webpack_require__(655);\n\nvar store_1 = __importDefault(__webpack_require__(744));\n\nvar templates_1 = __importDefault(__webpack_require__(686));\n/** @see {@link http://browserhacks.com/#hack-acea075d0ac6954f275a70023906050c} */\n\n\nvar IS_IE11 = '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style;\nvar USER_DEFAULTS = {};\n/**\n * Choices\n * @author Josh Johnson\n */\n\nvar Choices =\n/** @class */\nfunction () {\n function Choices(element, userConfig) {\n var _this = this;\n\n if (element === void 0) {\n element = '[data-choice]';\n }\n\n if (userConfig === void 0) {\n userConfig = {};\n }\n\n if (userConfig.allowHTML === undefined) {\n console.warn('Deprecation warning: allowHTML will default to false in a future release. To render HTML in Choices, you will need to set it to true. Setting allowHTML will suppress this message.');\n }\n\n this.config = deepmerge_1.default.all([defaults_1.DEFAULT_CONFIG, Choices.defaults.options, userConfig], // When merging array configs, replace with a copy of the userConfig array,\n // instead of concatenating with the default array\n {\n arrayMerge: function (_, sourceArray) {\n return __spreadArray([], sourceArray, true);\n }\n });\n var invalidConfigOptions = (0, utils_1.diff)(this.config, defaults_1.DEFAULT_CONFIG);\n\n if (invalidConfigOptions.length) {\n console.warn('Unknown config option(s) passed', invalidConfigOptions.join(', '));\n }\n\n var passedElement = typeof element === 'string' ? document.querySelector(element) : element;\n\n if (!(passedElement instanceof HTMLInputElement || passedElement instanceof HTMLSelectElement)) {\n throw TypeError('Expected one of the following types text|select-one|select-multiple');\n }\n\n this._isTextElement = passedElement.type === constants_1.TEXT_TYPE;\n this._isSelectOneElement = passedElement.type === constants_1.SELECT_ONE_TYPE;\n this._isSelectMultipleElement = passedElement.type === constants_1.SELECT_MULTIPLE_TYPE;\n this._isSelectElement = this._isSelectOneElement || this._isSelectMultipleElement;\n this.config.searchEnabled = this._isSelectMultipleElement || this.config.searchEnabled;\n\n if (!['auto', 'always'].includes(\"\".concat(this.config.renderSelectedChoices))) {\n this.config.renderSelectedChoices = 'auto';\n }\n\n if (userConfig.addItemFilter && typeof userConfig.addItemFilter !== 'function') {\n var re = userConfig.addItemFilter instanceof RegExp ? userConfig.addItemFilter : new RegExp(userConfig.addItemFilter);\n this.config.addItemFilter = re.test.bind(re);\n }\n\n if (this._isTextElement) {\n this.passedElement = new components_1.WrappedInput({\n element: passedElement,\n classNames: this.config.classNames,\n delimiter: this.config.delimiter\n });\n } else {\n this.passedElement = new components_1.WrappedSelect({\n element: passedElement,\n classNames: this.config.classNames,\n template: function (data) {\n return _this._templates.option(data);\n }\n });\n }\n\n this.initialised = false;\n this._store = new store_1.default();\n this._initialState = reducers_1.defaultState;\n this._currentState = reducers_1.defaultState;\n this._prevState = reducers_1.defaultState;\n this._currentValue = '';\n this._canSearch = !!this.config.searchEnabled;\n this._isScrollingOnIe = false;\n this._highlightPosition = 0;\n this._wasTap = true;\n this._placeholderValue = this._generatePlaceholderValue();\n this._baseId = (0, utils_1.generateId)(this.passedElement.element, 'choices-');\n /**\n * setting direction in cases where it's explicitly set on passedElement\n * or when calculated direction is different from the document\n */\n\n this._direction = this.passedElement.dir;\n\n if (!this._direction) {\n var elementDirection = window.getComputedStyle(this.passedElement.element).direction;\n var documentDirection = window.getComputedStyle(document.documentElement).direction;\n\n if (elementDirection !== documentDirection) {\n this._direction = elementDirection;\n }\n }\n\n this._idNames = {\n itemChoice: 'item-choice'\n };\n\n if (this._isSelectElement) {\n // Assign preset groups from passed element\n this._presetGroups = this.passedElement.optionGroups; // Assign preset options from passed element\n\n this._presetOptions = this.passedElement.options;\n } // Assign preset choices from passed object\n\n\n this._presetChoices = this.config.choices; // Assign preset items from passed object first\n\n this._presetItems = this.config.items; // Add any values passed from attribute\n\n if (this.passedElement.value && this._isTextElement) {\n var splitValues = this.passedElement.value.split(this.config.delimiter);\n this._presetItems = this._presetItems.concat(splitValues);\n } // Create array of choices from option elements\n\n\n if (this.passedElement.options) {\n this.passedElement.options.forEach(function (option) {\n _this._presetChoices.push({\n value: option.value,\n label: option.innerHTML,\n selected: !!option.selected,\n disabled: option.disabled || option.parentNode.disabled,\n placeholder: option.value === '' || option.hasAttribute('placeholder'),\n customProperties: option.dataset['custom-properties']\n });\n });\n }\n\n this._render = this._render.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n this._onKeyUp = this._onKeyUp.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onTouchMove = this._onTouchMove.bind(this);\n this._onTouchEnd = this._onTouchEnd.bind(this);\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onMouseOver = this._onMouseOver.bind(this);\n this._onFormReset = this._onFormReset.bind(this);\n this._onSelectKey = this._onSelectKey.bind(this);\n this._onEnterKey = this._onEnterKey.bind(this);\n this._onEscapeKey = this._onEscapeKey.bind(this);\n this._onDirectionKey = this._onDirectionKey.bind(this);\n this._onDeleteKey = this._onDeleteKey.bind(this); // If element has already been initialised with Choices, fail silently\n\n if (this.passedElement.isActive) {\n if (!this.config.silent) {\n console.warn('Trying to initialise Choices on element already initialised', {\n element: element\n });\n }\n\n this.initialised = true;\n return;\n } // Let's go\n\n\n this.init();\n }\n\n Object.defineProperty(Choices, \"defaults\", {\n get: function () {\n return Object.preventExtensions({\n get options() {\n return USER_DEFAULTS;\n },\n\n get templates() {\n return templates_1.default;\n }\n\n });\n },\n enumerable: false,\n configurable: true\n });\n\n Choices.prototype.init = function () {\n if (this.initialised) {\n return;\n }\n\n this._createTemplates();\n\n this._createElements();\n\n this._createStructure();\n\n this._store.subscribe(this._render);\n\n this._render();\n\n this._addEventListeners();\n\n var shouldDisable = !this.config.addItems || this.passedElement.element.hasAttribute('disabled');\n\n if (shouldDisable) {\n this.disable();\n }\n\n this.initialised = true;\n var callbackOnInit = this.config.callbackOnInit; // Run callback if it is a function\n\n if (callbackOnInit && typeof callbackOnInit === 'function') {\n callbackOnInit.call(this);\n }\n };\n\n Choices.prototype.destroy = function () {\n if (!this.initialised) {\n return;\n }\n\n this._removeEventListeners();\n\n this.passedElement.reveal();\n this.containerOuter.unwrap(this.passedElement.element);\n this.clearStore();\n\n if (this._isSelectElement) {\n this.passedElement.options = this._presetOptions;\n }\n\n this._templates = templates_1.default;\n this.initialised = false;\n };\n\n Choices.prototype.enable = function () {\n if (this.passedElement.isDisabled) {\n this.passedElement.enable();\n }\n\n if (this.containerOuter.isDisabled) {\n this._addEventListeners();\n\n this.input.enable();\n this.containerOuter.enable();\n }\n\n return this;\n };\n\n Choices.prototype.disable = function () {\n if (!this.passedElement.isDisabled) {\n this.passedElement.disable();\n }\n\n if (!this.containerOuter.isDisabled) {\n this._removeEventListeners();\n\n this.input.disable();\n this.containerOuter.disable();\n }\n\n return this;\n };\n\n Choices.prototype.highlightItem = function (item, runEvent) {\n if (runEvent === void 0) {\n runEvent = true;\n }\n\n if (!item || !item.id) {\n return this;\n }\n\n var id = item.id,\n _a = item.groupId,\n groupId = _a === void 0 ? -1 : _a,\n _b = item.value,\n value = _b === void 0 ? '' : _b,\n _c = item.label,\n label = _c === void 0 ? '' : _c;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n\n this._store.dispatch((0, items_1.highlightItem)(id, true));\n\n if (runEvent) {\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightItem, {\n id: id,\n value: value,\n label: label,\n groupValue: group && group.value ? group.value : null\n });\n }\n\n return this;\n };\n\n Choices.prototype.unhighlightItem = function (item) {\n if (!item || !item.id) {\n return this;\n }\n\n var id = item.id,\n _a = item.groupId,\n groupId = _a === void 0 ? -1 : _a,\n _b = item.value,\n value = _b === void 0 ? '' : _b,\n _c = item.label,\n label = _c === void 0 ? '' : _c;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n\n this._store.dispatch((0, items_1.highlightItem)(id, false));\n\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightItem, {\n id: id,\n value: value,\n label: label,\n groupValue: group && group.value ? group.value : null\n });\n return this;\n };\n\n Choices.prototype.highlightAll = function () {\n var _this = this;\n\n this._store.items.forEach(function (item) {\n return _this.highlightItem(item);\n });\n\n return this;\n };\n\n Choices.prototype.unhighlightAll = function () {\n var _this = this;\n\n this._store.items.forEach(function (item) {\n return _this.unhighlightItem(item);\n });\n\n return this;\n };\n\n Choices.prototype.removeActiveItemsByValue = function (value) {\n var _this = this;\n\n this._store.activeItems.filter(function (item) {\n return item.value === value;\n }).forEach(function (item) {\n return _this._removeItem(item);\n });\n\n return this;\n };\n\n Choices.prototype.removeActiveItems = function (excludedId) {\n var _this = this;\n\n this._store.activeItems.filter(function (_a) {\n var id = _a.id;\n return id !== excludedId;\n }).forEach(function (item) {\n return _this._removeItem(item);\n });\n\n return this;\n };\n\n Choices.prototype.removeHighlightedItems = function (runEvent) {\n var _this = this;\n\n if (runEvent === void 0) {\n runEvent = false;\n }\n\n this._store.highlightedActiveItems.forEach(function (item) {\n _this._removeItem(item); // If this action was performed by the user\n // trigger the event\n\n\n if (runEvent) {\n _this._triggerChange(item.value);\n }\n });\n\n return this;\n };\n\n Choices.prototype.showDropdown = function (preventInputFocus) {\n var _this = this;\n\n if (this.dropdown.isActive) {\n return this;\n }\n\n requestAnimationFrame(function () {\n _this.dropdown.show();\n\n _this.containerOuter.open(_this.dropdown.distanceFromTopWindow);\n\n if (!preventInputFocus && _this._canSearch) {\n _this.input.focus();\n }\n\n _this.passedElement.triggerEvent(constants_1.EVENTS.showDropdown, {});\n });\n return this;\n };\n\n Choices.prototype.hideDropdown = function (preventInputBlur) {\n var _this = this;\n\n if (!this.dropdown.isActive) {\n return this;\n }\n\n requestAnimationFrame(function () {\n _this.dropdown.hide();\n\n _this.containerOuter.close();\n\n if (!preventInputBlur && _this._canSearch) {\n _this.input.removeActiveDescendant();\n\n _this.input.blur();\n }\n\n _this.passedElement.triggerEvent(constants_1.EVENTS.hideDropdown, {});\n });\n return this;\n };\n\n Choices.prototype.getValue = function (valueOnly) {\n if (valueOnly === void 0) {\n valueOnly = false;\n }\n\n var values = this._store.activeItems.reduce(function (selectedItems, item) {\n var itemValue = valueOnly ? item.value : item;\n selectedItems.push(itemValue);\n return selectedItems;\n }, []);\n\n return this._isSelectOneElement ? values[0] : values;\n };\n\n Choices.prototype.setValue = function (items) {\n var _this = this;\n\n if (!this.initialised) {\n return this;\n }\n\n items.forEach(function (value) {\n return _this._setChoiceOrItem(value);\n });\n return this;\n };\n\n Choices.prototype.setChoiceByValue = function (value) {\n var _this = this;\n\n if (!this.initialised || this._isTextElement) {\n return this;\n } // If only one value has been passed, convert to array\n\n\n var choiceValue = Array.isArray(value) ? value : [value]; // Loop through each value and\n\n choiceValue.forEach(function (val) {\n return _this._findAndSelectChoiceByValue(val);\n });\n return this;\n };\n /**\n * Set choices of select input via an array of objects (or function that returns array of object or promise of it),\n * a value field name and a label field name.\n * This behaves the same as passing items via the choices option but can be called after initialising Choices.\n * This can also be used to add groups of choices (see example 2); Optionally pass a true `replaceChoices` value to remove any existing choices.\n * Optionally pass a `customProperties` object to add additional data to your choices (useful when searching/filtering etc).\n *\n * **Input types affected:** select-one, select-multiple\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices([\n * {value: 'One', label: 'Label One', disabled: true},\n * {value: 'Two', label: 'Label Two', selected: true},\n * {value: 'Three', label: 'Label Three'},\n * ], 'value', 'label', false);\n * ```\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices(async () => {\n * try {\n * const items = await fetch('/items');\n * return items.json()\n * } catch(err) {\n * console.error(err)\n * }\n * });\n * ```\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices([{\n * label: 'Group one',\n * id: 1,\n * disabled: false,\n * choices: [\n * {value: 'Child One', label: 'Child One', selected: true},\n * {value: 'Child Two', label: 'Child Two', disabled: true},\n * {value: 'Child Three', label: 'Child Three'},\n * ]\n * },\n * {\n * label: 'Group two',\n * id: 2,\n * disabled: false,\n * choices: [\n * {value: 'Child Four', label: 'Child Four', disabled: true},\n * {value: 'Child Five', label: 'Child Five'},\n * {value: 'Child Six', label: 'Child Six', customProperties: {\n * description: 'Custom description about child six',\n * random: 'Another random custom property'\n * }},\n * ]\n * }], 'value', 'label', false);\n * ```\n */\n\n\n Choices.prototype.setChoices = function (choicesArrayOrFetcher, value, label, replaceChoices) {\n var _this = this;\n\n if (choicesArrayOrFetcher === void 0) {\n choicesArrayOrFetcher = [];\n }\n\n if (value === void 0) {\n value = 'value';\n }\n\n if (label === void 0) {\n label = 'label';\n }\n\n if (replaceChoices === void 0) {\n replaceChoices = false;\n }\n\n if (!this.initialised) {\n throw new ReferenceError(\"setChoices was called on a non-initialized instance of Choices\");\n }\n\n if (!this._isSelectElement) {\n throw new TypeError(\"setChoices can't be used with INPUT based Choices\");\n }\n\n if (typeof value !== 'string' || !value) {\n throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");\n } // Clear choices if needed\n\n\n if (replaceChoices) {\n this.clearChoices();\n }\n\n if (typeof choicesArrayOrFetcher === 'function') {\n // it's a choices fetcher function\n var fetcher_1 = choicesArrayOrFetcher(this);\n\n if (typeof Promise === 'function' && fetcher_1 instanceof Promise) {\n // that's a promise\n // eslint-disable-next-line no-promise-executor-return\n return new Promise(function (resolve) {\n return requestAnimationFrame(resolve);\n }).then(function () {\n return _this._handleLoadingState(true);\n }).then(function () {\n return fetcher_1;\n }).then(function (data) {\n return _this.setChoices(data, value, label, replaceChoices);\n }).catch(function (err) {\n if (!_this.config.silent) {\n console.error(err);\n }\n }).then(function () {\n return _this._handleLoadingState(false);\n }).then(function () {\n return _this;\n });\n } // function returned something else than promise, let's check if it's an array of choices\n\n\n if (!Array.isArray(fetcher_1)) {\n throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \".concat(typeof fetcher_1));\n } // recursion with results, it's sync and choices were cleared already\n\n\n return this.setChoices(fetcher_1, value, label, false);\n }\n\n if (!Array.isArray(choicesArrayOrFetcher)) {\n throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");\n }\n\n this.containerOuter.removeLoadingState();\n\n this._startLoading();\n\n choicesArrayOrFetcher.forEach(function (groupOrChoice) {\n if (groupOrChoice.choices) {\n _this._addGroup({\n id: groupOrChoice.id ? parseInt(\"\".concat(groupOrChoice.id), 10) : null,\n group: groupOrChoice,\n valueKey: value,\n labelKey: label\n });\n } else {\n var choice = groupOrChoice;\n\n _this._addChoice({\n value: choice[value],\n label: choice[label],\n isSelected: !!choice.selected,\n isDisabled: !!choice.disabled,\n placeholder: !!choice.placeholder,\n customProperties: choice.customProperties\n });\n }\n });\n\n this._stopLoading();\n\n return this;\n };\n\n Choices.prototype.clearChoices = function () {\n this._store.dispatch((0, choices_1.clearChoices)());\n\n return this;\n };\n\n Choices.prototype.clearStore = function () {\n this._store.dispatch((0, misc_1.clearAll)());\n\n return this;\n };\n\n Choices.prototype.clearInput = function () {\n var shouldSetInputWidth = !this._isSelectOneElement;\n this.input.clear(shouldSetInputWidth);\n\n if (!this._isTextElement && this._canSearch) {\n this._isSearching = false;\n\n this._store.dispatch((0, choices_1.activateChoices)(true));\n }\n\n return this;\n };\n\n Choices.prototype._render = function () {\n if (this._store.isLoading()) {\n return;\n }\n\n this._currentState = this._store.state;\n var stateChanged = this._currentState.choices !== this._prevState.choices || this._currentState.groups !== this._prevState.groups || this._currentState.items !== this._prevState.items;\n var shouldRenderChoices = this._isSelectElement;\n var shouldRenderItems = this._currentState.items !== this._prevState.items;\n\n if (!stateChanged) {\n return;\n }\n\n if (shouldRenderChoices) {\n this._renderChoices();\n }\n\n if (shouldRenderItems) {\n this._renderItems();\n }\n\n this._prevState = this._currentState;\n };\n\n Choices.prototype._renderChoices = function () {\n var _this = this;\n\n var _a = this._store,\n activeGroups = _a.activeGroups,\n activeChoices = _a.activeChoices;\n var choiceListFragment = document.createDocumentFragment();\n this.choiceList.clear();\n\n if (this.config.resetScrollPosition) {\n requestAnimationFrame(function () {\n return _this.choiceList.scrollToTop();\n });\n } // If we have grouped options\n\n\n if (activeGroups.length >= 1 && !this._isSearching) {\n // If we have a placeholder choice along with groups\n var activePlaceholders = activeChoices.filter(function (activeChoice) {\n return activeChoice.placeholder === true && activeChoice.groupId === -1;\n });\n\n if (activePlaceholders.length >= 1) {\n choiceListFragment = this._createChoicesFragment(activePlaceholders, choiceListFragment);\n }\n\n choiceListFragment = this._createGroupsFragment(activeGroups, activeChoices, choiceListFragment);\n } else if (activeChoices.length >= 1) {\n choiceListFragment = this._createChoicesFragment(activeChoices, choiceListFragment);\n } // If we have choices to show\n\n\n if (choiceListFragment.childNodes && choiceListFragment.childNodes.length > 0) {\n var activeItems = this._store.activeItems;\n\n var canAddItem = this._canAddItem(activeItems, this.input.value); // ...and we can select them\n\n\n if (canAddItem.response) {\n // ...append them and highlight the first choice\n this.choiceList.append(choiceListFragment);\n\n this._highlightChoice();\n } else {\n var notice = this._getTemplate('notice', canAddItem.notice);\n\n this.choiceList.append(notice);\n }\n } else {\n // Otherwise show a notice\n var dropdownItem = void 0;\n var notice = void 0;\n\n if (this._isSearching) {\n notice = typeof this.config.noResultsText === 'function' ? this.config.noResultsText() : this.config.noResultsText;\n dropdownItem = this._getTemplate('notice', notice, 'no-results');\n } else {\n notice = typeof this.config.noChoicesText === 'function' ? this.config.noChoicesText() : this.config.noChoicesText;\n dropdownItem = this._getTemplate('notice', notice, 'no-choices');\n }\n\n this.choiceList.append(dropdownItem);\n }\n };\n\n Choices.prototype._renderItems = function () {\n var activeItems = this._store.activeItems || [];\n this.itemList.clear(); // Create a fragment to store our list items\n // (so we don't have to update the DOM for each item)\n\n var itemListFragment = this._createItemsFragment(activeItems); // If we have items to add, append them\n\n\n if (itemListFragment.childNodes) {\n this.itemList.append(itemListFragment);\n }\n };\n\n Choices.prototype._createGroupsFragment = function (groups, choices, fragment) {\n var _this = this;\n\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n\n var getGroupChoices = function (group) {\n return choices.filter(function (choice) {\n if (_this._isSelectOneElement) {\n return choice.groupId === group.id;\n }\n\n return choice.groupId === group.id && (_this.config.renderSelectedChoices === 'always' || !choice.selected);\n });\n }; // If sorting is enabled, filter groups\n\n\n if (this.config.shouldSort) {\n groups.sort(this.config.sorter);\n }\n\n groups.forEach(function (group) {\n var groupChoices = getGroupChoices(group);\n\n if (groupChoices.length >= 1) {\n var dropdownGroup = _this._getTemplate('choiceGroup', group);\n\n fragment.appendChild(dropdownGroup);\n\n _this._createChoicesFragment(groupChoices, fragment, true);\n }\n });\n return fragment;\n };\n\n Choices.prototype._createChoicesFragment = function (choices, fragment, withinGroup) {\n var _this = this;\n\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n\n if (withinGroup === void 0) {\n withinGroup = false;\n } // Create a fragment to store our list items (so we don't have to update the DOM for each item)\n\n\n var _a = this.config,\n renderSelectedChoices = _a.renderSelectedChoices,\n searchResultLimit = _a.searchResultLimit,\n renderChoiceLimit = _a.renderChoiceLimit;\n var filter = this._isSearching ? utils_1.sortByScore : this.config.sorter;\n\n var appendChoice = function (choice) {\n var shouldRender = renderSelectedChoices === 'auto' ? _this._isSelectOneElement || !choice.selected : true;\n\n if (shouldRender) {\n var dropdownItem = _this._getTemplate('choice', choice, _this.config.itemSelectText);\n\n fragment.appendChild(dropdownItem);\n }\n };\n\n var rendererableChoices = choices;\n\n if (renderSelectedChoices === 'auto' && !this._isSelectOneElement) {\n rendererableChoices = choices.filter(function (choice) {\n return !choice.selected;\n });\n } // Split array into placeholders and \"normal\" choices\n\n\n var _b = rendererableChoices.reduce(function (acc, choice) {\n if (choice.placeholder) {\n acc.placeholderChoices.push(choice);\n } else {\n acc.normalChoices.push(choice);\n }\n\n return acc;\n }, {\n placeholderChoices: [],\n normalChoices: []\n }),\n placeholderChoices = _b.placeholderChoices,\n normalChoices = _b.normalChoices; // If sorting is enabled or the user is searching, filter choices\n\n\n if (this.config.shouldSort || this._isSearching) {\n normalChoices.sort(filter);\n }\n\n var choiceLimit = rendererableChoices.length; // Prepend placeholeder\n\n var sortedChoices = this._isSelectOneElement ? __spreadArray(__spreadArray([], placeholderChoices, true), normalChoices, true) : normalChoices;\n\n if (this._isSearching) {\n choiceLimit = searchResultLimit;\n } else if (renderChoiceLimit && renderChoiceLimit > 0 && !withinGroup) {\n choiceLimit = renderChoiceLimit;\n } // Add each choice to dropdown within range\n\n\n for (var i = 0; i < choiceLimit; i += 1) {\n if (sortedChoices[i]) {\n appendChoice(sortedChoices[i]);\n }\n }\n\n return fragment;\n };\n\n Choices.prototype._createItemsFragment = function (items, fragment) {\n var _this = this;\n\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n } // Create fragment to add elements to\n\n\n var _a = this.config,\n shouldSortItems = _a.shouldSortItems,\n sorter = _a.sorter,\n removeItemButton = _a.removeItemButton; // If sorting is enabled, filter items\n\n if (shouldSortItems && !this._isSelectOneElement) {\n items.sort(sorter);\n }\n\n if (this._isTextElement) {\n // Update the value of the hidden input\n this.passedElement.value = items.map(function (_a) {\n var value = _a.value;\n return value;\n }).join(this.config.delimiter);\n } else {\n // Update the options of the hidden input\n this.passedElement.options = items;\n }\n\n var addItemToFragment = function (item) {\n // Create new list element\n var listItem = _this._getTemplate('item', item, removeItemButton); // Append it to list\n\n\n fragment.appendChild(listItem);\n }; // Add each list item to list\n\n\n items.forEach(addItemToFragment);\n return fragment;\n };\n\n Choices.prototype._triggerChange = function (value) {\n if (value === undefined || value === null) {\n return;\n }\n\n this.passedElement.triggerEvent(constants_1.EVENTS.change, {\n value: value\n });\n };\n\n Choices.prototype._selectPlaceholderChoice = function (placeholderChoice) {\n this._addItem({\n value: placeholderChoice.value,\n label: placeholderChoice.label,\n choiceId: placeholderChoice.id,\n groupId: placeholderChoice.groupId,\n placeholder: placeholderChoice.placeholder\n });\n\n this._triggerChange(placeholderChoice.value);\n };\n\n Choices.prototype._handleButtonAction = function (activeItems, element) {\n if (!activeItems || !element || !this.config.removeItems || !this.config.removeItemButton) {\n return;\n }\n\n var itemId = element.parentNode && element.parentNode.dataset.id;\n var itemToRemove = itemId && activeItems.find(function (item) {\n return item.id === parseInt(itemId, 10);\n });\n\n if (!itemToRemove) {\n return;\n } // Remove item associated with button\n\n\n this._removeItem(itemToRemove);\n\n this._triggerChange(itemToRemove.value);\n\n if (this._isSelectOneElement && this._store.placeholderChoice) {\n this._selectPlaceholderChoice(this._store.placeholderChoice);\n }\n };\n\n Choices.prototype._handleItemAction = function (activeItems, element, hasShiftKey) {\n var _this = this;\n\n if (hasShiftKey === void 0) {\n hasShiftKey = false;\n }\n\n if (!activeItems || !element || !this.config.removeItems || this._isSelectOneElement) {\n return;\n }\n\n var passedId = element.dataset.id; // We only want to select one item with a click\n // so we deselect any items that aren't the target\n // unless shift is being pressed\n\n activeItems.forEach(function (item) {\n if (item.id === parseInt(\"\".concat(passedId), 10) && !item.highlighted) {\n _this.highlightItem(item);\n } else if (!hasShiftKey && item.highlighted) {\n _this.unhighlightItem(item);\n }\n }); // Focus input as without focus, a user cannot do anything with a\n // highlighted item\n\n this.input.focus();\n };\n\n Choices.prototype._handleChoiceAction = function (activeItems, element) {\n if (!activeItems || !element) {\n return;\n } // If we are clicking on an option\n\n\n var id = element.dataset.id;\n\n var choice = id && this._store.getChoiceById(id);\n\n if (!choice) {\n return;\n }\n\n var passedKeyCode = activeItems[0] && activeItems[0].keyCode ? activeItems[0].keyCode : undefined;\n var hasActiveDropdown = this.dropdown.isActive; // Update choice keyCode\n\n choice.keyCode = passedKeyCode;\n this.passedElement.triggerEvent(constants_1.EVENTS.choice, {\n choice: choice\n });\n\n if (!choice.selected && !choice.disabled) {\n var canAddItem = this._canAddItem(activeItems, choice.value);\n\n if (canAddItem.response) {\n this._addItem({\n value: choice.value,\n label: choice.label,\n choiceId: choice.id,\n groupId: choice.groupId,\n customProperties: choice.customProperties,\n placeholder: choice.placeholder,\n keyCode: choice.keyCode\n });\n\n this._triggerChange(choice.value);\n }\n }\n\n this.clearInput(); // We want to close the dropdown if we are dealing with a single select box\n\n if (hasActiveDropdown && this._isSelectOneElement) {\n this.hideDropdown(true);\n this.containerOuter.focus();\n }\n };\n\n Choices.prototype._handleBackspace = function (activeItems) {\n if (!this.config.removeItems || !activeItems) {\n return;\n }\n\n var lastItem = activeItems[activeItems.length - 1];\n var hasHighlightedItems = activeItems.some(function (item) {\n return item.highlighted;\n }); // If editing the last item is allowed and there are not other selected items,\n // we can edit the item value. Otherwise if we can remove items, remove all selected items\n\n if (this.config.editItems && !hasHighlightedItems && lastItem) {\n this.input.value = lastItem.value;\n this.input.setWidth();\n\n this._removeItem(lastItem);\n\n this._triggerChange(lastItem.value);\n } else {\n if (!hasHighlightedItems) {\n // Highlight last item if none already highlighted\n this.highlightItem(lastItem, false);\n }\n\n this.removeHighlightedItems(true);\n }\n };\n\n Choices.prototype._startLoading = function () {\n this._store.dispatch((0, misc_1.setIsLoading)(true));\n };\n\n Choices.prototype._stopLoading = function () {\n this._store.dispatch((0, misc_1.setIsLoading)(false));\n };\n\n Choices.prototype._handleLoadingState = function (setLoading) {\n if (setLoading === void 0) {\n setLoading = true;\n }\n\n var placeholderItem = this.itemList.getChild(\".\".concat(this.config.classNames.placeholder));\n\n if (setLoading) {\n this.disable();\n this.containerOuter.addLoadingState();\n\n if (this._isSelectOneElement) {\n if (!placeholderItem) {\n placeholderItem = this._getTemplate('placeholder', this.config.loadingText);\n\n if (placeholderItem) {\n this.itemList.append(placeholderItem);\n }\n } else {\n placeholderItem.innerHTML = this.config.loadingText;\n }\n } else {\n this.input.placeholder = this.config.loadingText;\n }\n } else {\n this.enable();\n this.containerOuter.removeLoadingState();\n\n if (this._isSelectOneElement) {\n if (placeholderItem) {\n placeholderItem.innerHTML = this._placeholderValue || '';\n }\n } else {\n this.input.placeholder = this._placeholderValue || '';\n }\n }\n };\n\n Choices.prototype._handleSearch = function (value) {\n if (!this.input.isFocussed) {\n return;\n }\n\n var choices = this._store.choices;\n var _a = this.config,\n searchFloor = _a.searchFloor,\n searchChoices = _a.searchChoices;\n var hasUnactiveChoices = choices.some(function (option) {\n return !option.active;\n }); // Check that we have a value to search and the input was an alphanumeric character\n\n if (value !== null && typeof value !== 'undefined' && value.length >= searchFloor) {\n var resultCount = searchChoices ? this._searchChoices(value) : 0; // Trigger search event\n\n this.passedElement.triggerEvent(constants_1.EVENTS.search, {\n value: value,\n resultCount: resultCount\n });\n } else if (hasUnactiveChoices) {\n // Otherwise reset choices to active\n this._isSearching = false;\n\n this._store.dispatch((0, choices_1.activateChoices)(true));\n }\n };\n\n Choices.prototype._canAddItem = function (activeItems, value) {\n var canAddItem = true;\n var notice = typeof this.config.addItemText === 'function' ? this.config.addItemText(value) : this.config.addItemText;\n\n if (!this._isSelectOneElement) {\n var isDuplicateValue = (0, utils_1.existsInArray)(activeItems, value);\n\n if (this.config.maxItemCount > 0 && this.config.maxItemCount <= activeItems.length) {\n // If there is a max entry limit and we have reached that limit\n // don't update\n canAddItem = false;\n notice = typeof this.config.maxItemText === 'function' ? this.config.maxItemText(this.config.maxItemCount) : this.config.maxItemText;\n }\n\n if (!this.config.duplicateItemsAllowed && isDuplicateValue && canAddItem) {\n canAddItem = false;\n notice = typeof this.config.uniqueItemText === 'function' ? this.config.uniqueItemText(value) : this.config.uniqueItemText;\n }\n\n if (this._isTextElement && this.config.addItems && canAddItem && typeof this.config.addItemFilter === 'function' && !this.config.addItemFilter(value)) {\n canAddItem = false;\n notice = typeof this.config.customAddItemText === 'function' ? this.config.customAddItemText(value) : this.config.customAddItemText;\n }\n }\n\n return {\n response: canAddItem,\n notice: notice\n };\n };\n\n Choices.prototype._searchChoices = function (value) {\n var newValue = typeof value === 'string' ? value.trim() : value;\n var currentValue = typeof this._currentValue === 'string' ? this._currentValue.trim() : this._currentValue;\n\n if (newValue.length < 1 && newValue === \"\".concat(currentValue, \" \")) {\n return 0;\n } // If new value matches the desired length and is not the same as the current value with a space\n\n\n var haystack = this._store.searchableChoices;\n var needle = newValue;\n var options = Object.assign(this.config.fuseOptions, {\n keys: __spreadArray([], this.config.searchFields, true),\n includeMatches: true\n });\n var fuse = new fuse_js_1.default(haystack, options);\n var results = fuse.search(needle); // see https://github.com/krisk/Fuse/issues/303\n\n this._currentValue = newValue;\n this._highlightPosition = 0;\n this._isSearching = true;\n\n this._store.dispatch((0, choices_1.filterChoices)(results));\n\n return results.length;\n };\n\n Choices.prototype._addEventListeners = function () {\n var documentElement = document.documentElement; // capture events - can cancel event processing or propagation\n\n documentElement.addEventListener('touchend', this._onTouchEnd, true);\n this.containerOuter.element.addEventListener('keydown', this._onKeyDown, true);\n this.containerOuter.element.addEventListener('mousedown', this._onMouseDown, true); // passive events - doesn't call `preventDefault` or `stopPropagation`\n\n documentElement.addEventListener('click', this._onClick, {\n passive: true\n });\n documentElement.addEventListener('touchmove', this._onTouchMove, {\n passive: true\n });\n this.dropdown.element.addEventListener('mouseover', this._onMouseOver, {\n passive: true\n });\n\n if (this._isSelectOneElement) {\n this.containerOuter.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.containerOuter.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n }\n\n this.input.element.addEventListener('keyup', this._onKeyUp, {\n passive: true\n });\n this.input.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.input.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n\n if (this.input.element.form) {\n this.input.element.form.addEventListener('reset', this._onFormReset, {\n passive: true\n });\n }\n\n this.input.addEventListeners();\n };\n\n Choices.prototype._removeEventListeners = function () {\n var documentElement = document.documentElement;\n documentElement.removeEventListener('touchend', this._onTouchEnd, true);\n this.containerOuter.element.removeEventListener('keydown', this._onKeyDown, true);\n this.containerOuter.element.removeEventListener('mousedown', this._onMouseDown, true);\n documentElement.removeEventListener('click', this._onClick);\n documentElement.removeEventListener('touchmove', this._onTouchMove);\n this.dropdown.element.removeEventListener('mouseover', this._onMouseOver);\n\n if (this._isSelectOneElement) {\n this.containerOuter.element.removeEventListener('focus', this._onFocus);\n this.containerOuter.element.removeEventListener('blur', this._onBlur);\n }\n\n this.input.element.removeEventListener('keyup', this._onKeyUp);\n this.input.element.removeEventListener('focus', this._onFocus);\n this.input.element.removeEventListener('blur', this._onBlur);\n\n if (this.input.element.form) {\n this.input.element.form.removeEventListener('reset', this._onFormReset);\n }\n\n this.input.removeEventListeners();\n };\n\n Choices.prototype._onKeyDown = function (event) {\n var keyCode = event.keyCode;\n var activeItems = this._store.activeItems;\n var hasFocusedInput = this.input.isFocussed;\n var hasActiveDropdown = this.dropdown.isActive;\n var hasItems = this.itemList.hasChildren();\n var keyString = String.fromCharCode(keyCode);\n var wasAlphaNumericChar = /[a-zA-Z0-9-_ ]/.test(keyString);\n var BACK_KEY = constants_1.KEY_CODES.BACK_KEY,\n DELETE_KEY = constants_1.KEY_CODES.DELETE_KEY,\n ENTER_KEY = constants_1.KEY_CODES.ENTER_KEY,\n A_KEY = constants_1.KEY_CODES.A_KEY,\n ESC_KEY = constants_1.KEY_CODES.ESC_KEY,\n UP_KEY = constants_1.KEY_CODES.UP_KEY,\n DOWN_KEY = constants_1.KEY_CODES.DOWN_KEY,\n PAGE_UP_KEY = constants_1.KEY_CODES.PAGE_UP_KEY,\n PAGE_DOWN_KEY = constants_1.KEY_CODES.PAGE_DOWN_KEY;\n\n if (!this._isTextElement && !hasActiveDropdown && wasAlphaNumericChar) {\n this.showDropdown();\n\n if (!this.input.isFocussed) {\n /*\n We update the input value with the pressed key as\n the input was not focussed at the time of key press\n therefore does not have the value of the key.\n */\n this.input.value += keyString.toLowerCase();\n }\n }\n\n switch (keyCode) {\n case A_KEY:\n return this._onSelectKey(event, hasItems);\n\n case ENTER_KEY:\n return this._onEnterKey(event, activeItems, hasActiveDropdown);\n\n case ESC_KEY:\n return this._onEscapeKey(hasActiveDropdown);\n\n case UP_KEY:\n case PAGE_UP_KEY:\n case DOWN_KEY:\n case PAGE_DOWN_KEY:\n return this._onDirectionKey(event, hasActiveDropdown);\n\n case DELETE_KEY:\n case BACK_KEY:\n return this._onDeleteKey(event, activeItems, hasFocusedInput);\n\n default:\n }\n };\n\n Choices.prototype._onKeyUp = function (_a) {\n var target = _a.target,\n keyCode = _a.keyCode;\n var value = this.input.value;\n var activeItems = this._store.activeItems;\n\n var canAddItem = this._canAddItem(activeItems, value);\n\n var backKey = constants_1.KEY_CODES.BACK_KEY,\n deleteKey = constants_1.KEY_CODES.DELETE_KEY; // We are typing into a text input and have a value, we want to show a dropdown\n // notice. Otherwise hide the dropdown\n\n if (this._isTextElement) {\n var canShowDropdownNotice = canAddItem.notice && value;\n\n if (canShowDropdownNotice) {\n var dropdownItem = this._getTemplate('notice', canAddItem.notice);\n\n this.dropdown.element.innerHTML = dropdownItem.outerHTML;\n this.showDropdown(true);\n } else {\n this.hideDropdown(true);\n }\n } else {\n var wasRemovalKeyCode = keyCode === backKey || keyCode === deleteKey;\n var userHasRemovedValue = wasRemovalKeyCode && target && !target.value;\n var canReactivateChoices = !this._isTextElement && this._isSearching;\n var canSearch = this._canSearch && canAddItem.response;\n\n if (userHasRemovedValue && canReactivateChoices) {\n this._isSearching = false;\n\n this._store.dispatch((0, choices_1.activateChoices)(true));\n } else if (canSearch) {\n this._handleSearch(this.input.rawValue);\n }\n }\n\n this._canSearch = this.config.searchEnabled;\n };\n\n Choices.prototype._onSelectKey = function (event, hasItems) {\n var ctrlKey = event.ctrlKey,\n metaKey = event.metaKey;\n var hasCtrlDownKeyPressed = ctrlKey || metaKey; // If CTRL + A or CMD + A have been pressed and there are items to select\n\n if (hasCtrlDownKeyPressed && hasItems) {\n this._canSearch = false;\n var shouldHightlightAll = this.config.removeItems && !this.input.value && this.input.element === document.activeElement;\n\n if (shouldHightlightAll) {\n this.highlightAll();\n }\n }\n };\n\n Choices.prototype._onEnterKey = function (event, activeItems, hasActiveDropdown) {\n var target = event.target;\n var enterKey = constants_1.KEY_CODES.ENTER_KEY;\n var targetWasButton = target && target.hasAttribute('data-button');\n\n if (this._isTextElement && target && target.value) {\n var value = this.input.value;\n\n var canAddItem = this._canAddItem(activeItems, value);\n\n if (canAddItem.response) {\n this.hideDropdown(true);\n\n this._addItem({\n value: value\n });\n\n this._triggerChange(value);\n\n this.clearInput();\n }\n }\n\n if (targetWasButton) {\n this._handleButtonAction(activeItems, target);\n\n event.preventDefault();\n }\n\n if (hasActiveDropdown) {\n var highlightedChoice = this.dropdown.getChild(\".\".concat(this.config.classNames.highlightedState));\n\n if (highlightedChoice) {\n // add enter keyCode value\n if (activeItems[0]) {\n activeItems[0].keyCode = enterKey; // eslint-disable-line no-param-reassign\n }\n\n this._handleChoiceAction(activeItems, highlightedChoice);\n }\n\n event.preventDefault();\n } else if (this._isSelectOneElement) {\n this.showDropdown();\n event.preventDefault();\n }\n };\n\n Choices.prototype._onEscapeKey = function (hasActiveDropdown) {\n if (hasActiveDropdown) {\n this.hideDropdown(true);\n this.containerOuter.focus();\n }\n };\n\n Choices.prototype._onDirectionKey = function (event, hasActiveDropdown) {\n var keyCode = event.keyCode,\n metaKey = event.metaKey;\n var downKey = constants_1.KEY_CODES.DOWN_KEY,\n pageUpKey = constants_1.KEY_CODES.PAGE_UP_KEY,\n pageDownKey = constants_1.KEY_CODES.PAGE_DOWN_KEY; // If up or down key is pressed, traverse through options\n\n if (hasActiveDropdown || this._isSelectOneElement) {\n this.showDropdown();\n this._canSearch = false;\n var directionInt = keyCode === downKey || keyCode === pageDownKey ? 1 : -1;\n var skipKey = metaKey || keyCode === pageDownKey || keyCode === pageUpKey;\n var selectableChoiceIdentifier = '[data-choice-selectable]';\n var nextEl = void 0;\n\n if (skipKey) {\n if (directionInt > 0) {\n nextEl = this.dropdown.element.querySelector(\"\".concat(selectableChoiceIdentifier, \":last-of-type\"));\n } else {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n }\n } else {\n var currentEl = this.dropdown.element.querySelector(\".\".concat(this.config.classNames.highlightedState));\n\n if (currentEl) {\n nextEl = (0, utils_1.getAdjacentEl)(currentEl, selectableChoiceIdentifier, directionInt);\n } else {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n }\n }\n\n if (nextEl) {\n // We prevent default to stop the cursor moving\n // when pressing the arrow\n if (!(0, utils_1.isScrolledIntoView)(nextEl, this.choiceList.element, directionInt)) {\n this.choiceList.scrollToChildElement(nextEl, directionInt);\n }\n\n this._highlightChoice(nextEl);\n } // Prevent default to maintain cursor position whilst\n // traversing dropdown options\n\n\n event.preventDefault();\n }\n };\n\n Choices.prototype._onDeleteKey = function (event, activeItems, hasFocusedInput) {\n var target = event.target; // If backspace or delete key is pressed and the input has no value\n\n if (!this._isSelectOneElement && !target.value && hasFocusedInput) {\n this._handleBackspace(activeItems);\n\n event.preventDefault();\n }\n };\n\n Choices.prototype._onTouchMove = function () {\n if (this._wasTap) {\n this._wasTap = false;\n }\n };\n\n Choices.prototype._onTouchEnd = function (event) {\n var target = (event || event.touches[0]).target;\n var touchWasWithinContainer = this._wasTap && this.containerOuter.element.contains(target);\n\n if (touchWasWithinContainer) {\n var containerWasExactTarget = target === this.containerOuter.element || target === this.containerInner.element;\n\n if (containerWasExactTarget) {\n if (this._isTextElement) {\n this.input.focus();\n } else if (this._isSelectMultipleElement) {\n this.showDropdown();\n }\n } // Prevents focus event firing\n\n\n event.stopPropagation();\n }\n\n this._wasTap = true;\n };\n /**\n * Handles mousedown event in capture mode for containetOuter.element\n */\n\n\n Choices.prototype._onMouseDown = function (event) {\n var target = event.target;\n\n if (!(target instanceof HTMLElement)) {\n return;\n } // If we have our mouse down on the scrollbar and are on IE11...\n\n\n if (IS_IE11 && this.choiceList.element.contains(target)) {\n // check if click was on a scrollbar area\n var firstChoice = this.choiceList.element.firstElementChild;\n var isOnScrollbar = this._direction === 'ltr' ? event.offsetX >= firstChoice.offsetWidth : event.offsetX < firstChoice.offsetLeft;\n this._isScrollingOnIe = isOnScrollbar;\n }\n\n if (target === this.input.element) {\n return;\n }\n\n var item = target.closest('[data-button],[data-item],[data-choice]');\n\n if (item instanceof HTMLElement) {\n var hasShiftKey = event.shiftKey;\n var activeItems = this._store.activeItems;\n var dataset = item.dataset;\n\n if ('button' in dataset) {\n this._handleButtonAction(activeItems, item);\n } else if ('item' in dataset) {\n this._handleItemAction(activeItems, item, hasShiftKey);\n } else if ('choice' in dataset) {\n this._handleChoiceAction(activeItems, item);\n }\n }\n\n event.preventDefault();\n };\n /**\n * Handles mouseover event over this.dropdown\n * @param {MouseEvent} event\n */\n\n\n Choices.prototype._onMouseOver = function (_a) {\n var target = _a.target;\n\n if (target instanceof HTMLElement && 'choice' in target.dataset) {\n this._highlightChoice(target);\n }\n };\n\n Choices.prototype._onClick = function (_a) {\n var target = _a.target;\n var clickWasWithinContainer = this.containerOuter.element.contains(target);\n\n if (clickWasWithinContainer) {\n if (!this.dropdown.isActive && !this.containerOuter.isDisabled) {\n if (this._isTextElement) {\n if (document.activeElement !== this.input.element) {\n this.input.focus();\n }\n } else {\n this.showDropdown();\n this.containerOuter.focus();\n }\n } else if (this._isSelectOneElement && target !== this.input.element && !this.dropdown.element.contains(target)) {\n this.hideDropdown();\n }\n } else {\n var hasHighlightedItems = this._store.highlightedActiveItems.length > 0;\n\n if (hasHighlightedItems) {\n this.unhighlightAll();\n }\n\n this.containerOuter.removeFocusState();\n this.hideDropdown(true);\n }\n };\n\n Choices.prototype._onFocus = function (_a) {\n var _b;\n\n var _this = this;\n\n var target = _a.target;\n var focusWasWithinContainer = target && this.containerOuter.element.contains(target);\n\n if (!focusWasWithinContainer) {\n return;\n }\n\n var focusActions = (_b = {}, _b[constants_1.TEXT_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.addFocusState();\n }\n }, _b[constants_1.SELECT_ONE_TYPE] = function () {\n _this.containerOuter.addFocusState();\n\n if (target === _this.input.element) {\n _this.showDropdown(true);\n }\n }, _b[constants_1.SELECT_MULTIPLE_TYPE] = function () {\n if (target === _this.input.element) {\n _this.showDropdown(true); // If element is a select box, the focused element is the container and the dropdown\n // isn't already open, focus and show dropdown\n\n\n _this.containerOuter.addFocusState();\n }\n }, _b);\n focusActions[this.passedElement.element.type]();\n };\n\n Choices.prototype._onBlur = function (_a) {\n var _b;\n\n var _this = this;\n\n var target = _a.target;\n var blurWasWithinContainer = target && this.containerOuter.element.contains(target);\n\n if (blurWasWithinContainer && !this._isScrollingOnIe) {\n var activeItems = this._store.activeItems;\n var hasHighlightedItems_1 = activeItems.some(function (item) {\n return item.highlighted;\n });\n var blurActions = (_b = {}, _b[constants_1.TEXT_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.removeFocusState();\n\n if (hasHighlightedItems_1) {\n _this.unhighlightAll();\n }\n\n _this.hideDropdown(true);\n }\n }, _b[constants_1.SELECT_ONE_TYPE] = function () {\n _this.containerOuter.removeFocusState();\n\n if (target === _this.input.element || target === _this.containerOuter.element && !_this._canSearch) {\n _this.hideDropdown(true);\n }\n }, _b[constants_1.SELECT_MULTIPLE_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.removeFocusState();\n\n _this.hideDropdown(true);\n\n if (hasHighlightedItems_1) {\n _this.unhighlightAll();\n }\n }\n }, _b);\n blurActions[this.passedElement.element.type]();\n } else {\n // On IE11, clicking the scollbar blurs our input and thus\n // closes the dropdown. To stop this, we refocus our input\n // if we know we are on IE *and* are scrolling.\n this._isScrollingOnIe = false;\n this.input.element.focus();\n }\n };\n\n Choices.prototype._onFormReset = function () {\n this._store.dispatch((0, misc_1.resetTo)(this._initialState));\n };\n\n Choices.prototype._highlightChoice = function (el) {\n var _this = this;\n\n if (el === void 0) {\n el = null;\n }\n\n var choices = Array.from(this.dropdown.element.querySelectorAll('[data-choice-selectable]'));\n\n if (!choices.length) {\n return;\n }\n\n var passedEl = el;\n var highlightedChoices = Array.from(this.dropdown.element.querySelectorAll(\".\".concat(this.config.classNames.highlightedState))); // Remove any highlighted choices\n\n highlightedChoices.forEach(function (choice) {\n choice.classList.remove(_this.config.classNames.highlightedState);\n choice.setAttribute('aria-selected', 'false');\n });\n\n if (passedEl) {\n this._highlightPosition = choices.indexOf(passedEl);\n } else {\n // Highlight choice based on last known highlight location\n if (choices.length > this._highlightPosition) {\n // If we have an option to highlight\n passedEl = choices[this._highlightPosition];\n } else {\n // Otherwise highlight the option before\n passedEl = choices[choices.length - 1];\n }\n\n if (!passedEl) {\n passedEl = choices[0];\n }\n }\n\n passedEl.classList.add(this.config.classNames.highlightedState);\n passedEl.setAttribute('aria-selected', 'true');\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightChoice, {\n el: passedEl\n });\n\n if (this.dropdown.isActive) {\n // IE11 ignores aria-label and blocks virtual keyboard\n // if aria-activedescendant is set without a dropdown\n this.input.setActiveDescendant(passedEl.id);\n this.containerOuter.setActiveDescendant(passedEl.id);\n }\n };\n\n Choices.prototype._addItem = function (_a) {\n var value = _a.value,\n _b = _a.label,\n label = _b === void 0 ? null : _b,\n _c = _a.choiceId,\n choiceId = _c === void 0 ? -1 : _c,\n _d = _a.groupId,\n groupId = _d === void 0 ? -1 : _d,\n _e = _a.customProperties,\n customProperties = _e === void 0 ? {} : _e,\n _f = _a.placeholder,\n placeholder = _f === void 0 ? false : _f,\n _g = _a.keyCode,\n keyCode = _g === void 0 ? -1 : _g;\n var passedValue = typeof value === 'string' ? value.trim() : value;\n var items = this._store.items;\n var passedLabel = label || passedValue;\n var passedOptionId = choiceId || -1;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n var id = items ? items.length + 1 : 1; // If a prepended value has been passed, prepend it\n\n if (this.config.prependValue) {\n passedValue = this.config.prependValue + passedValue.toString();\n } // If an appended value has been passed, append it\n\n\n if (this.config.appendValue) {\n passedValue += this.config.appendValue.toString();\n }\n\n this._store.dispatch((0, items_1.addItem)({\n value: passedValue,\n label: passedLabel,\n id: id,\n choiceId: passedOptionId,\n groupId: groupId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n }));\n\n if (this._isSelectOneElement) {\n this.removeActiveItems(id);\n } // Trigger change event\n\n\n this.passedElement.triggerEvent(constants_1.EVENTS.addItem, {\n id: id,\n value: passedValue,\n label: passedLabel,\n customProperties: customProperties,\n groupValue: group && group.value ? group.value : null,\n keyCode: keyCode\n });\n };\n\n Choices.prototype._removeItem = function (item) {\n var id = item.id,\n value = item.value,\n label = item.label,\n customProperties = item.customProperties,\n choiceId = item.choiceId,\n groupId = item.groupId;\n var group = groupId && groupId >= 0 ? this._store.getGroupById(groupId) : null;\n\n if (!id || !choiceId) {\n return;\n }\n\n this._store.dispatch((0, items_1.removeItem)(id, choiceId));\n\n this.passedElement.triggerEvent(constants_1.EVENTS.removeItem, {\n id: id,\n value: value,\n label: label,\n customProperties: customProperties,\n groupValue: group && group.value ? group.value : null\n });\n };\n\n Choices.prototype._addChoice = function (_a) {\n var value = _a.value,\n _b = _a.label,\n label = _b === void 0 ? null : _b,\n _c = _a.isSelected,\n isSelected = _c === void 0 ? false : _c,\n _d = _a.isDisabled,\n isDisabled = _d === void 0 ? false : _d,\n _e = _a.groupId,\n groupId = _e === void 0 ? -1 : _e,\n _f = _a.customProperties,\n customProperties = _f === void 0 ? {} : _f,\n _g = _a.placeholder,\n placeholder = _g === void 0 ? false : _g,\n _h = _a.keyCode,\n keyCode = _h === void 0 ? -1 : _h;\n\n if (typeof value === 'undefined' || value === null) {\n return;\n } // Generate unique id\n\n\n var choices = this._store.choices;\n var choiceLabel = label || value;\n var choiceId = choices ? choices.length + 1 : 1;\n var choiceElementId = \"\".concat(this._baseId, \"-\").concat(this._idNames.itemChoice, \"-\").concat(choiceId);\n\n this._store.dispatch((0, choices_1.addChoice)({\n id: choiceId,\n groupId: groupId,\n elementId: choiceElementId,\n value: value,\n label: choiceLabel,\n disabled: isDisabled,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n }));\n\n if (isSelected) {\n this._addItem({\n value: value,\n label: choiceLabel,\n choiceId: choiceId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n });\n }\n };\n\n Choices.prototype._addGroup = function (_a) {\n var _this = this;\n\n var group = _a.group,\n id = _a.id,\n _b = _a.valueKey,\n valueKey = _b === void 0 ? 'value' : _b,\n _c = _a.labelKey,\n labelKey = _c === void 0 ? 'label' : _c;\n var groupChoices = (0, utils_1.isType)('Object', group) ? group.choices : Array.from(group.getElementsByTagName('OPTION'));\n var groupId = id || Math.floor(new Date().valueOf() * Math.random());\n var isDisabled = group.disabled ? group.disabled : false;\n\n if (groupChoices) {\n this._store.dispatch((0, groups_1.addGroup)({\n value: group.label,\n id: groupId,\n active: true,\n disabled: isDisabled\n }));\n\n var addGroupChoices = function (choice) {\n var isOptDisabled = choice.disabled || choice.parentNode && choice.parentNode.disabled;\n\n _this._addChoice({\n value: choice[valueKey],\n label: (0, utils_1.isType)('Object', choice) ? choice[labelKey] : choice.innerHTML,\n isSelected: choice.selected,\n isDisabled: isOptDisabled,\n groupId: groupId,\n customProperties: choice.customProperties,\n placeholder: choice.placeholder\n });\n };\n\n groupChoices.forEach(addGroupChoices);\n } else {\n this._store.dispatch((0, groups_1.addGroup)({\n value: group.label,\n id: group.id,\n active: false,\n disabled: group.disabled\n }));\n }\n };\n\n Choices.prototype._getTemplate = function (template) {\n var _a;\n\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n return (_a = this._templates[template]).call.apply(_a, __spreadArray([this, this.config], args, false));\n };\n\n Choices.prototype._createTemplates = function () {\n var callbackOnCreateTemplates = this.config.callbackOnCreateTemplates;\n var userTemplates = {};\n\n if (callbackOnCreateTemplates && typeof callbackOnCreateTemplates === 'function') {\n userTemplates = callbackOnCreateTemplates.call(this, utils_1.strToEl);\n }\n\n this._templates = (0, deepmerge_1.default)(templates_1.default, userTemplates);\n };\n\n Choices.prototype._createElements = function () {\n this.containerOuter = new components_1.Container({\n element: this._getTemplate('containerOuter', this._direction, this._isSelectElement, this._isSelectOneElement, this.config.searchEnabled, this.passedElement.element.type, this.config.labelId),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n position: this.config.position\n });\n this.containerInner = new components_1.Container({\n element: this._getTemplate('containerInner'),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n position: this.config.position\n });\n this.input = new components_1.Input({\n element: this._getTemplate('input', this._placeholderValue),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n preventPaste: !this.config.paste\n });\n this.choiceList = new components_1.List({\n element: this._getTemplate('choiceList', this._isSelectOneElement)\n });\n this.itemList = new components_1.List({\n element: this._getTemplate('itemList', this._isSelectOneElement)\n });\n this.dropdown = new components_1.Dropdown({\n element: this._getTemplate('dropdown'),\n classNames: this.config.classNames,\n type: this.passedElement.element.type\n });\n };\n\n Choices.prototype._createStructure = function () {\n // Hide original element\n this.passedElement.conceal(); // Wrap input in container preserving DOM ordering\n\n this.containerInner.wrap(this.passedElement.element); // Wrapper inner container with outer container\n\n this.containerOuter.wrap(this.containerInner.element);\n\n if (this._isSelectOneElement) {\n this.input.placeholder = this.config.searchPlaceholderValue || '';\n } else if (this._placeholderValue) {\n this.input.placeholder = this._placeholderValue;\n this.input.setWidth();\n }\n\n this.containerOuter.element.appendChild(this.containerInner.element);\n this.containerOuter.element.appendChild(this.dropdown.element);\n this.containerInner.element.appendChild(this.itemList.element);\n\n if (!this._isTextElement) {\n this.dropdown.element.appendChild(this.choiceList.element);\n }\n\n if (!this._isSelectOneElement) {\n this.containerInner.element.appendChild(this.input.element);\n } else if (this.config.searchEnabled) {\n this.dropdown.element.insertBefore(this.input.element, this.dropdown.element.firstChild);\n }\n\n if (this._isSelectElement) {\n this._highlightPosition = 0;\n this._isSearching = false;\n\n this._startLoading();\n\n if (this._presetGroups.length) {\n this._addPredefinedGroups(this._presetGroups);\n } else {\n this._addPredefinedChoices(this._presetChoices);\n }\n\n this._stopLoading();\n }\n\n if (this._isTextElement) {\n this._addPredefinedItems(this._presetItems);\n }\n };\n\n Choices.prototype._addPredefinedGroups = function (groups) {\n var _this = this; // If we have a placeholder option\n\n\n var placeholderChoice = this.passedElement.placeholderOption;\n\n if (placeholderChoice && placeholderChoice.parentNode && placeholderChoice.parentNode.tagName === 'SELECT') {\n this._addChoice({\n value: placeholderChoice.value,\n label: placeholderChoice.innerHTML,\n isSelected: placeholderChoice.selected,\n isDisabled: placeholderChoice.disabled,\n placeholder: true\n });\n }\n\n groups.forEach(function (group) {\n return _this._addGroup({\n group: group,\n id: group.id || null\n });\n });\n };\n\n Choices.prototype._addPredefinedChoices = function (choices) {\n var _this = this; // If sorting is enabled or the user is searching, filter choices\n\n\n if (this.config.shouldSort) {\n choices.sort(this.config.sorter);\n }\n\n var hasSelectedChoice = choices.some(function (choice) {\n return choice.selected;\n });\n var firstEnabledChoiceIndex = choices.findIndex(function (choice) {\n return choice.disabled === undefined || !choice.disabled;\n });\n choices.forEach(function (choice, index) {\n var _a = choice.value,\n value = _a === void 0 ? '' : _a,\n label = choice.label,\n customProperties = choice.customProperties,\n placeholder = choice.placeholder;\n\n if (_this._isSelectElement) {\n // If the choice is actually a group\n if (choice.choices) {\n _this._addGroup({\n group: choice,\n id: choice.id || null\n });\n } else {\n /**\n * If there is a selected choice already or the choice is not the first in\n * the array, add each choice normally.\n *\n * Otherwise we pre-select the first enabled choice in the array (\"select-one\" only)\n */\n var shouldPreselect = _this._isSelectOneElement && !hasSelectedChoice && index === firstEnabledChoiceIndex;\n var isSelected = shouldPreselect ? true : choice.selected;\n var isDisabled = choice.disabled;\n\n _this._addChoice({\n value: value,\n label: label,\n isSelected: !!isSelected,\n isDisabled: !!isDisabled,\n placeholder: !!placeholder,\n customProperties: customProperties\n });\n }\n } else {\n _this._addChoice({\n value: value,\n label: label,\n isSelected: !!choice.selected,\n isDisabled: !!choice.disabled,\n placeholder: !!choice.placeholder,\n customProperties: customProperties\n });\n }\n });\n };\n\n Choices.prototype._addPredefinedItems = function (items) {\n var _this = this;\n\n items.forEach(function (item) {\n if (typeof item === 'object' && item.value) {\n _this._addItem({\n value: item.value,\n label: item.label,\n choiceId: item.id,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n }\n\n if (typeof item === 'string') {\n _this._addItem({\n value: item\n });\n }\n });\n };\n\n Choices.prototype._setChoiceOrItem = function (item) {\n var _this = this;\n\n var itemType = (0, utils_1.getType)(item).toLowerCase();\n var handleType = {\n object: function () {\n if (!item.value) {\n return;\n } // If we are dealing with a select input, we need to create an option first\n // that is then selected. For text inputs we can just add items normally.\n\n\n if (!_this._isTextElement) {\n _this._addChoice({\n value: item.value,\n label: item.label,\n isSelected: true,\n isDisabled: false,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n } else {\n _this._addItem({\n value: item.value,\n label: item.label,\n choiceId: item.id,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n }\n },\n string: function () {\n if (!_this._isTextElement) {\n _this._addChoice({\n value: item,\n label: item,\n isSelected: true,\n isDisabled: false\n });\n } else {\n _this._addItem({\n value: item\n });\n }\n }\n };\n handleType[itemType]();\n };\n\n Choices.prototype._findAndSelectChoiceByValue = function (value) {\n var _this = this;\n\n var choices = this._store.choices; // Check 'value' property exists and the choice isn't already selected\n\n var foundChoice = choices.find(function (choice) {\n return _this.config.valueComparer(choice.value, value);\n });\n\n if (foundChoice && !foundChoice.selected) {\n this._addItem({\n value: foundChoice.value,\n label: foundChoice.label,\n choiceId: foundChoice.id,\n groupId: foundChoice.groupId,\n customProperties: foundChoice.customProperties,\n placeholder: foundChoice.placeholder,\n keyCode: foundChoice.keyCode\n });\n }\n };\n\n Choices.prototype._generatePlaceholderValue = function () {\n if (this._isSelectElement && this.passedElement.placeholderOption) {\n var placeholderOption = this.passedElement.placeholderOption;\n return placeholderOption ? placeholderOption.text : null;\n }\n\n var _a = this.config,\n placeholder = _a.placeholder,\n placeholderValue = _a.placeholderValue;\n var dataset = this.passedElement.element.dataset;\n\n if (placeholder) {\n if (placeholderValue) {\n return placeholderValue;\n }\n\n if (dataset.placeholder) {\n return dataset.placeholder;\n }\n }\n\n return null;\n };\n\n return Choices;\n}();\n\nexports[\"default\"] = Choices;\n\n/***/ }),\n\n/***/ 613:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\nvar utils_1 = __webpack_require__(799);\n\nvar constants_1 = __webpack_require__(883);\n\nvar Container =\n/** @class */\nfunction () {\n function Container(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames,\n position = _a.position;\n this.element = element;\n this.classNames = classNames;\n this.type = type;\n this.position = position;\n this.isOpen = false;\n this.isFlipped = false;\n this.isFocussed = false;\n this.isDisabled = false;\n this.isLoading = false;\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n }\n\n Container.prototype.addEventListeners = function () {\n this.element.addEventListener('focus', this._onFocus);\n this.element.addEventListener('blur', this._onBlur);\n };\n\n Container.prototype.removeEventListeners = function () {\n this.element.removeEventListener('focus', this._onFocus);\n this.element.removeEventListener('blur', this._onBlur);\n };\n /**\n * Determine whether container should be flipped based on passed\n * dropdown position\n */\n\n\n Container.prototype.shouldFlip = function (dropdownPos) {\n if (typeof dropdownPos !== 'number') {\n return false;\n } // If flip is enabled and the dropdown bottom position is\n // greater than the window height flip the dropdown.\n\n\n var shouldFlip = false;\n\n if (this.position === 'auto') {\n shouldFlip = !window.matchMedia(\"(min-height: \".concat(dropdownPos + 1, \"px)\")).matches;\n } else if (this.position === 'top') {\n shouldFlip = true;\n }\n\n return shouldFlip;\n };\n\n Container.prototype.setActiveDescendant = function (activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n };\n\n Container.prototype.removeActiveDescendant = function () {\n this.element.removeAttribute('aria-activedescendant');\n };\n\n Container.prototype.open = function (dropdownPos) {\n this.element.classList.add(this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isOpen = true;\n\n if (this.shouldFlip(dropdownPos)) {\n this.element.classList.add(this.classNames.flippedState);\n this.isFlipped = true;\n }\n };\n\n Container.prototype.close = function () {\n this.element.classList.remove(this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'false');\n this.removeActiveDescendant();\n this.isOpen = false; // A dropdown flips if it does not have space within the page\n\n if (this.isFlipped) {\n this.element.classList.remove(this.classNames.flippedState);\n this.isFlipped = false;\n }\n };\n\n Container.prototype.focus = function () {\n if (!this.isFocussed) {\n this.element.focus();\n }\n };\n\n Container.prototype.addFocusState = function () {\n this.element.classList.add(this.classNames.focusState);\n };\n\n Container.prototype.removeFocusState = function () {\n this.element.classList.remove(this.classNames.focusState);\n };\n\n Container.prototype.enable = function () {\n this.element.classList.remove(this.classNames.disabledState);\n this.element.removeAttribute('aria-disabled');\n\n if (this.type === constants_1.SELECT_ONE_TYPE) {\n this.element.setAttribute('tabindex', '0');\n }\n\n this.isDisabled = false;\n };\n\n Container.prototype.disable = function () {\n this.element.classList.add(this.classNames.disabledState);\n this.element.setAttribute('aria-disabled', 'true');\n\n if (this.type === constants_1.SELECT_ONE_TYPE) {\n this.element.setAttribute('tabindex', '-1');\n }\n\n this.isDisabled = true;\n };\n\n Container.prototype.wrap = function (element) {\n (0, utils_1.wrap)(element, this.element);\n };\n\n Container.prototype.unwrap = function (element) {\n if (this.element.parentNode) {\n // Move passed element outside this element\n this.element.parentNode.insertBefore(element, this.element); // Remove this element\n\n this.element.parentNode.removeChild(this.element);\n }\n };\n\n Container.prototype.addLoadingState = function () {\n this.element.classList.add(this.classNames.loadingState);\n this.element.setAttribute('aria-busy', 'true');\n this.isLoading = true;\n };\n\n Container.prototype.removeLoadingState = function () {\n this.element.classList.remove(this.classNames.loadingState);\n this.element.removeAttribute('aria-busy');\n this.isLoading = false;\n };\n\n Container.prototype._onFocus = function () {\n this.isFocussed = true;\n };\n\n Container.prototype._onBlur = function () {\n this.isFocussed = false;\n };\n\n return Container;\n}();\n\nexports[\"default\"] = Container;\n\n/***/ }),\n\n/***/ 217:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\nvar Dropdown =\n/** @class */\nfunction () {\n function Dropdown(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames;\n this.element = element;\n this.classNames = classNames;\n this.type = type;\n this.isActive = false;\n }\n\n Object.defineProperty(Dropdown.prototype, \"distanceFromTopWindow\", {\n /**\n * Bottom position of dropdown in viewport coordinates\n */\n get: function () {\n return this.element.getBoundingClientRect().bottom;\n },\n enumerable: false,\n configurable: true\n });\n\n Dropdown.prototype.getChild = function (selector) {\n return this.element.querySelector(selector);\n };\n /**\n * Show dropdown to user by adding active state class\n */\n\n\n Dropdown.prototype.show = function () {\n this.element.classList.add(this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isActive = true;\n return this;\n };\n /**\n * Hide dropdown from user\n */\n\n\n Dropdown.prototype.hide = function () {\n this.element.classList.remove(this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'false');\n this.isActive = false;\n return this;\n };\n\n return Dropdown;\n}();\n\nexports[\"default\"] = Dropdown;\n\n/***/ }),\n\n/***/ 520:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.WrappedSelect = exports.WrappedInput = exports.List = exports.Input = exports.Container = exports.Dropdown = void 0;\n\nvar dropdown_1 = __importDefault(__webpack_require__(217));\n\nexports.Dropdown = dropdown_1.default;\n\nvar container_1 = __importDefault(__webpack_require__(613));\n\nexports.Container = container_1.default;\n\nvar input_1 = __importDefault(__webpack_require__(11));\n\nexports.Input = input_1.default;\n\nvar list_1 = __importDefault(__webpack_require__(624));\n\nexports.List = list_1.default;\n\nvar wrapped_input_1 = __importDefault(__webpack_require__(541));\n\nexports.WrappedInput = wrapped_input_1.default;\n\nvar wrapped_select_1 = __importDefault(__webpack_require__(982));\n\nexports.WrappedSelect = wrapped_select_1.default;\n\n/***/ }),\n\n/***/ 11:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\nvar utils_1 = __webpack_require__(799);\n\nvar constants_1 = __webpack_require__(883);\n\nvar Input =\n/** @class */\nfunction () {\n function Input(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames,\n preventPaste = _a.preventPaste;\n this.element = element;\n this.type = type;\n this.classNames = classNames;\n this.preventPaste = preventPaste;\n this.isFocussed = this.element.isEqualNode(document.activeElement);\n this.isDisabled = element.disabled;\n this._onPaste = this._onPaste.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n }\n\n Object.defineProperty(Input.prototype, \"placeholder\", {\n set: function (placeholder) {\n this.element.placeholder = placeholder;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"value\", {\n get: function () {\n return (0, utils_1.sanitise)(this.element.value);\n },\n set: function (value) {\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"rawValue\", {\n get: function () {\n return this.element.value;\n },\n enumerable: false,\n configurable: true\n });\n\n Input.prototype.addEventListeners = function () {\n this.element.addEventListener('paste', this._onPaste);\n this.element.addEventListener('input', this._onInput, {\n passive: true\n });\n this.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n };\n\n Input.prototype.removeEventListeners = function () {\n this.element.removeEventListener('input', this._onInput);\n this.element.removeEventListener('paste', this._onPaste);\n this.element.removeEventListener('focus', this._onFocus);\n this.element.removeEventListener('blur', this._onBlur);\n };\n\n Input.prototype.enable = function () {\n this.element.removeAttribute('disabled');\n this.isDisabled = false;\n };\n\n Input.prototype.disable = function () {\n this.element.setAttribute('disabled', '');\n this.isDisabled = true;\n };\n\n Input.prototype.focus = function () {\n if (!this.isFocussed) {\n this.element.focus();\n }\n };\n\n Input.prototype.blur = function () {\n if (this.isFocussed) {\n this.element.blur();\n }\n };\n\n Input.prototype.clear = function (setWidth) {\n if (setWidth === void 0) {\n setWidth = true;\n }\n\n if (this.element.value) {\n this.element.value = '';\n }\n\n if (setWidth) {\n this.setWidth();\n }\n\n return this;\n };\n /**\n * Set the correct input width based on placeholder\n * value or input value\n */\n\n\n Input.prototype.setWidth = function () {\n // Resize input to contents or placeholder\n var _a = this.element,\n style = _a.style,\n value = _a.value,\n placeholder = _a.placeholder;\n style.minWidth = \"\".concat(placeholder.length + 1, \"ch\");\n style.width = \"\".concat(value.length + 1, \"ch\");\n };\n\n Input.prototype.setActiveDescendant = function (activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n };\n\n Input.prototype.removeActiveDescendant = function () {\n this.element.removeAttribute('aria-activedescendant');\n };\n\n Input.prototype._onInput = function () {\n if (this.type !== constants_1.SELECT_ONE_TYPE) {\n this.setWidth();\n }\n };\n\n Input.prototype._onPaste = function (event) {\n if (this.preventPaste) {\n event.preventDefault();\n }\n };\n\n Input.prototype._onFocus = function () {\n this.isFocussed = true;\n };\n\n Input.prototype._onBlur = function () {\n this.isFocussed = false;\n };\n\n return Input;\n}();\n\nexports[\"default\"] = Input;\n\n/***/ }),\n\n/***/ 624:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\nvar constants_1 = __webpack_require__(883);\n\nvar List =\n/** @class */\nfunction () {\n function List(_a) {\n var element = _a.element;\n this.element = element;\n this.scrollPos = this.element.scrollTop;\n this.height = this.element.offsetHeight;\n }\n\n List.prototype.clear = function () {\n this.element.innerHTML = '';\n };\n\n List.prototype.append = function (node) {\n this.element.appendChild(node);\n };\n\n List.prototype.getChild = function (selector) {\n return this.element.querySelector(selector);\n };\n\n List.prototype.hasChildren = function () {\n return this.element.hasChildNodes();\n };\n\n List.prototype.scrollToTop = function () {\n this.element.scrollTop = 0;\n };\n\n List.prototype.scrollToChildElement = function (element, direction) {\n var _this = this;\n\n if (!element) {\n return;\n }\n\n var listHeight = this.element.offsetHeight; // Scroll position of dropdown\n\n var listScrollPosition = this.element.scrollTop + listHeight;\n var elementHeight = element.offsetHeight; // Distance from bottom of element to top of parent\n\n var elementPos = element.offsetTop + elementHeight; // Difference between the element and scroll position\n\n var destination = direction > 0 ? this.element.scrollTop + elementPos - listScrollPosition : element.offsetTop;\n requestAnimationFrame(function () {\n _this._animateScroll(destination, direction);\n });\n };\n\n List.prototype._scrollDown = function (scrollPos, strength, destination) {\n var easing = (destination - scrollPos) / strength;\n var distance = easing > 1 ? easing : 1;\n this.element.scrollTop = scrollPos + distance;\n };\n\n List.prototype._scrollUp = function (scrollPos, strength, destination) {\n var easing = (scrollPos - destination) / strength;\n var distance = easing > 1 ? easing : 1;\n this.element.scrollTop = scrollPos - distance;\n };\n\n List.prototype._animateScroll = function (destination, direction) {\n var _this = this;\n\n var strength = constants_1.SCROLLING_SPEED;\n var choiceListScrollTop = this.element.scrollTop;\n var continueAnimation = false;\n\n if (direction > 0) {\n this._scrollDown(choiceListScrollTop, strength, destination);\n\n if (choiceListScrollTop < destination) {\n continueAnimation = true;\n }\n } else {\n this._scrollUp(choiceListScrollTop, strength, destination);\n\n if (choiceListScrollTop > destination) {\n continueAnimation = true;\n }\n }\n\n if (continueAnimation) {\n requestAnimationFrame(function () {\n _this._animateScroll(destination, direction);\n });\n }\n };\n\n return List;\n}();\n\nexports[\"default\"] = List;\n\n/***/ }),\n\n/***/ 730:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\nvar utils_1 = __webpack_require__(799);\n\nvar WrappedElement =\n/** @class */\nfunction () {\n function WrappedElement(_a) {\n var element = _a.element,\n classNames = _a.classNames;\n this.element = element;\n this.classNames = classNames;\n\n if (!(element instanceof HTMLInputElement) && !(element instanceof HTMLSelectElement)) {\n throw new TypeError('Invalid element passed');\n }\n\n this.isDisabled = false;\n }\n\n Object.defineProperty(WrappedElement.prototype, \"isActive\", {\n get: function () {\n return this.element.dataset.choice === 'active';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedElement.prototype, \"dir\", {\n get: function () {\n return this.element.dir;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedElement.prototype, \"value\", {\n get: function () {\n return this.element.value;\n },\n set: function (value) {\n // you must define setter here otherwise it will be readonly property\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n\n WrappedElement.prototype.conceal = function () {\n // Hide passed input\n this.element.classList.add(this.classNames.input);\n this.element.hidden = true; // Remove element from tab index\n\n this.element.tabIndex = -1; // Backup original styles if any\n\n var origStyle = this.element.getAttribute('style');\n\n if (origStyle) {\n this.element.setAttribute('data-choice-orig-style', origStyle);\n }\n\n this.element.setAttribute('data-choice', 'active');\n };\n\n WrappedElement.prototype.reveal = function () {\n // Reinstate passed element\n this.element.classList.remove(this.classNames.input);\n this.element.hidden = false;\n this.element.removeAttribute('tabindex'); // Recover original styles if any\n\n var origStyle = this.element.getAttribute('data-choice-orig-style');\n\n if (origStyle) {\n this.element.removeAttribute('data-choice-orig-style');\n this.element.setAttribute('style', origStyle);\n } else {\n this.element.removeAttribute('style');\n }\n\n this.element.removeAttribute('data-choice'); // Re-assign values - this is weird, I know\n // @todo Figure out why we need to do this\n\n this.element.value = this.element.value; // eslint-disable-line no-self-assign\n };\n\n WrappedElement.prototype.enable = function () {\n this.element.removeAttribute('disabled');\n this.element.disabled = false;\n this.isDisabled = false;\n };\n\n WrappedElement.prototype.disable = function () {\n this.element.setAttribute('disabled', '');\n this.element.disabled = true;\n this.isDisabled = true;\n };\n\n WrappedElement.prototype.triggerEvent = function (eventType, data) {\n (0, utils_1.dispatchEvent)(this.element, eventType, data);\n };\n\n return WrappedElement;\n}();\n\nexports[\"default\"] = WrappedElement;\n\n/***/ }),\n\n/***/ 541:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n\n return extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\nvar wrapped_element_1 = __importDefault(__webpack_require__(730));\n\nvar WrappedInput =\n/** @class */\nfunction (_super) {\n __extends(WrappedInput, _super);\n\n function WrappedInput(_a) {\n var element = _a.element,\n classNames = _a.classNames,\n delimiter = _a.delimiter;\n\n var _this = _super.call(this, {\n element: element,\n classNames: classNames\n }) || this;\n\n _this.delimiter = delimiter;\n return _this;\n }\n\n Object.defineProperty(WrappedInput.prototype, \"value\", {\n get: function () {\n return this.element.value;\n },\n set: function (value) {\n this.element.setAttribute('value', value);\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n return WrappedInput;\n}(wrapped_element_1.default);\n\nexports[\"default\"] = WrappedInput;\n\n/***/ }),\n\n/***/ 982:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n\n return extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\nvar wrapped_element_1 = __importDefault(__webpack_require__(730));\n\nvar WrappedSelect =\n/** @class */\nfunction (_super) {\n __extends(WrappedSelect, _super);\n\n function WrappedSelect(_a) {\n var element = _a.element,\n classNames = _a.classNames,\n template = _a.template;\n\n var _this = _super.call(this, {\n element: element,\n classNames: classNames\n }) || this;\n\n _this.template = template;\n return _this;\n }\n\n Object.defineProperty(WrappedSelect.prototype, \"placeholderOption\", {\n get: function () {\n return this.element.querySelector('option[value=\"\"]') || // Backward compatibility layer for the non-standard placeholder attribute supported in older versions.\n this.element.querySelector('option[placeholder]');\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedSelect.prototype, \"optionGroups\", {\n get: function () {\n return Array.from(this.element.getElementsByTagName('OPTGROUP'));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedSelect.prototype, \"options\", {\n get: function () {\n return Array.from(this.element.options);\n },\n set: function (options) {\n var _this = this;\n\n var fragment = document.createDocumentFragment();\n\n var addOptionToFragment = function (data) {\n // Create a standard select option\n var option = _this.template(data); // Append it to fragment\n\n\n fragment.appendChild(option);\n }; // Add each list item to list\n\n\n options.forEach(function (optionData) {\n return addOptionToFragment(optionData);\n });\n this.appendDocFragment(fragment);\n },\n enumerable: false,\n configurable: true\n });\n\n WrappedSelect.prototype.appendDocFragment = function (fragment) {\n this.element.innerHTML = '';\n this.element.appendChild(fragment);\n };\n\n return WrappedSelect;\n}(wrapped_element_1.default);\n\nexports[\"default\"] = WrappedSelect;\n\n/***/ }),\n\n/***/ 883:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.SCROLLING_SPEED = exports.SELECT_MULTIPLE_TYPE = exports.SELECT_ONE_TYPE = exports.TEXT_TYPE = exports.KEY_CODES = exports.ACTION_TYPES = exports.EVENTS = void 0;\nexports.EVENTS = {\n showDropdown: 'showDropdown',\n hideDropdown: 'hideDropdown',\n change: 'change',\n choice: 'choice',\n search: 'search',\n addItem: 'addItem',\n removeItem: 'removeItem',\n highlightItem: 'highlightItem',\n highlightChoice: 'highlightChoice',\n unhighlightItem: 'unhighlightItem'\n};\nexports.ACTION_TYPES = {\n ADD_CHOICE: 'ADD_CHOICE',\n FILTER_CHOICES: 'FILTER_CHOICES',\n ACTIVATE_CHOICES: 'ACTIVATE_CHOICES',\n CLEAR_CHOICES: 'CLEAR_CHOICES',\n ADD_GROUP: 'ADD_GROUP',\n ADD_ITEM: 'ADD_ITEM',\n REMOVE_ITEM: 'REMOVE_ITEM',\n HIGHLIGHT_ITEM: 'HIGHLIGHT_ITEM',\n CLEAR_ALL: 'CLEAR_ALL',\n RESET_TO: 'RESET_TO',\n SET_IS_LOADING: 'SET_IS_LOADING'\n};\nexports.KEY_CODES = {\n BACK_KEY: 46,\n DELETE_KEY: 8,\n ENTER_KEY: 13,\n A_KEY: 65,\n ESC_KEY: 27,\n UP_KEY: 38,\n DOWN_KEY: 40,\n PAGE_UP_KEY: 33,\n PAGE_DOWN_KEY: 34\n};\nexports.TEXT_TYPE = 'text';\nexports.SELECT_ONE_TYPE = 'select-one';\nexports.SELECT_MULTIPLE_TYPE = 'select-multiple';\nexports.SCROLLING_SPEED = 4;\n\n/***/ }),\n\n/***/ 789:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.DEFAULT_CONFIG = exports.DEFAULT_CLASSNAMES = void 0;\n\nvar utils_1 = __webpack_require__(799);\n\nexports.DEFAULT_CLASSNAMES = {\n containerOuter: 'choices',\n containerInner: 'choices__inner',\n input: 'choices__input',\n inputCloned: 'choices__input--cloned',\n list: 'choices__list',\n listItems: 'choices__list--multiple',\n listSingle: 'choices__list--single',\n listDropdown: 'choices__list--dropdown',\n item: 'choices__item',\n itemSelectable: 'choices__item--selectable',\n itemDisabled: 'choices__item--disabled',\n itemChoice: 'choices__item--choice',\n placeholder: 'choices__placeholder',\n group: 'choices__group',\n groupHeading: 'choices__heading',\n button: 'choices__button',\n activeState: 'is-active',\n focusState: 'is-focused',\n openState: 'is-open',\n disabledState: 'is-disabled',\n highlightedState: 'is-highlighted',\n selectedState: 'is-selected',\n flippedState: 'is-flipped',\n loadingState: 'is-loading',\n noResults: 'has-no-results',\n noChoices: 'has-no-choices'\n};\nexports.DEFAULT_CONFIG = {\n items: [],\n choices: [],\n silent: false,\n renderChoiceLimit: -1,\n maxItemCount: -1,\n addItems: true,\n addItemFilter: null,\n removeItems: true,\n removeItemButton: false,\n editItems: false,\n allowHTML: true,\n duplicateItemsAllowed: true,\n delimiter: ',',\n paste: true,\n searchEnabled: true,\n searchChoices: true,\n searchFloor: 1,\n searchResultLimit: 4,\n searchFields: ['label', 'value'],\n position: 'auto',\n resetScrollPosition: true,\n shouldSort: true,\n shouldSortItems: false,\n sorter: utils_1.sortByAlpha,\n placeholder: true,\n placeholderValue: null,\n searchPlaceholderValue: null,\n prependValue: null,\n appendValue: null,\n renderSelectedChoices: 'auto',\n loadingText: 'Loading...',\n noResultsText: 'No results found',\n noChoicesText: 'No choices to choose from',\n itemSelectText: 'Press to select',\n uniqueItemText: 'Only unique values can be added',\n customAddItemText: 'Only values matching specific conditions can be added',\n addItemText: function (value) {\n return \"Press Enter to add \\\"\".concat((0, utils_1.sanitise)(value), \"\\\"\");\n },\n maxItemText: function (maxItemCount) {\n return \"Only \".concat(maxItemCount, \" values can be added\");\n },\n valueComparer: function (value1, value2) {\n return value1 === value2;\n },\n fuseOptions: {\n includeScore: true\n },\n labelId: '',\n callbackOnInit: null,\n callbackOnCreateTemplates: null,\n classNames: exports.DEFAULT_CLASSNAMES\n};\n\n/***/ }),\n\n/***/ 18:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 978:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 948:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 359:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 285:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 533:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 187:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function () {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n__exportStar(__webpack_require__(18), exports);\n\n__exportStar(__webpack_require__(978), exports);\n\n__exportStar(__webpack_require__(948), exports);\n\n__exportStar(__webpack_require__(359), exports);\n\n__exportStar(__webpack_require__(285), exports);\n\n__exportStar(__webpack_require__(533), exports);\n\n__exportStar(__webpack_require__(287), exports);\n\n__exportStar(__webpack_require__(132), exports);\n\n__exportStar(__webpack_require__(837), exports);\n\n__exportStar(__webpack_require__(598), exports);\n\n__exportStar(__webpack_require__(369), exports);\n\n__exportStar(__webpack_require__(37), exports);\n\n__exportStar(__webpack_require__(47), exports);\n\n__exportStar(__webpack_require__(923), exports);\n\n__exportStar(__webpack_require__(876), exports);\n\n/***/ }),\n\n/***/ 287:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 132:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 837:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 598:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 37:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 369:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 47:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 923:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 876:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 799:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.diff = exports.cloneObject = exports.existsInArray = exports.dispatchEvent = exports.sortByScore = exports.sortByAlpha = exports.strToEl = exports.sanitise = exports.isScrolledIntoView = exports.getAdjacentEl = exports.wrap = exports.isType = exports.getType = exports.generateId = exports.generateChars = exports.getRandomNumber = void 0;\n\nvar getRandomNumber = function (min, max) {\n return Math.floor(Math.random() * (max - min) + min);\n};\n\nexports.getRandomNumber = getRandomNumber;\n\nvar generateChars = function (length) {\n return Array.from({\n length: length\n }, function () {\n return (0, exports.getRandomNumber)(0, 36).toString(36);\n }).join('');\n};\n\nexports.generateChars = generateChars;\n\nvar generateId = function (element, prefix) {\n var id = element.id || element.name && \"\".concat(element.name, \"-\").concat((0, exports.generateChars)(2)) || (0, exports.generateChars)(4);\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = \"\".concat(prefix, \"-\").concat(id);\n return id;\n};\n\nexports.generateId = generateId;\n\nvar getType = function (obj) {\n return Object.prototype.toString.call(obj).slice(8, -1);\n};\n\nexports.getType = getType;\n\nvar isType = function (type, obj) {\n return obj !== undefined && obj !== null && (0, exports.getType)(obj) === type;\n};\n\nexports.isType = isType;\n\nvar wrap = function (element, wrapper) {\n if (wrapper === void 0) {\n wrapper = document.createElement('div');\n }\n\n if (element.parentNode) {\n if (element.nextSibling) {\n element.parentNode.insertBefore(wrapper, element.nextSibling);\n } else {\n element.parentNode.appendChild(wrapper);\n }\n }\n\n return wrapper.appendChild(element);\n};\n\nexports.wrap = wrap;\n\nvar getAdjacentEl = function (startEl, selector, direction) {\n if (direction === void 0) {\n direction = 1;\n }\n\n var prop = \"\".concat(direction > 0 ? 'next' : 'previous', \"ElementSibling\");\n var sibling = startEl[prop];\n\n while (sibling) {\n if (sibling.matches(selector)) {\n return sibling;\n }\n\n sibling = sibling[prop];\n }\n\n return sibling;\n};\n\nexports.getAdjacentEl = getAdjacentEl;\n\nvar isScrolledIntoView = function (element, parent, direction) {\n if (direction === void 0) {\n direction = 1;\n }\n\n if (!element) {\n return false;\n }\n\n var isVisible;\n\n if (direction > 0) {\n // In view from bottom\n isVisible = parent.scrollTop + parent.offsetHeight >= element.offsetTop + element.offsetHeight;\n } else {\n // In view from top\n isVisible = element.offsetTop >= parent.scrollTop;\n }\n\n return isVisible;\n};\n\nexports.isScrolledIntoView = isScrolledIntoView;\n\nvar sanitise = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n\n return value.replace(/&/g, '&').replace(/>/g, '>').replace(/ -1) {\n return state.map(function (obj) {\n var choice = obj;\n\n if (choice.id === parseInt(\"\".concat(addItemAction_1.choiceId), 10)) {\n choice.selected = true;\n }\n\n return choice;\n });\n }\n\n return state;\n }\n\n case 'REMOVE_ITEM':\n {\n var removeItemAction_1 = action; // When an item is removed and it has an associated choice,\n // we want to re-enable it so it can be chosen again\n\n if (removeItemAction_1.choiceId && removeItemAction_1.choiceId > -1) {\n return state.map(function (obj) {\n var choice = obj;\n\n if (choice.id === parseInt(\"\".concat(removeItemAction_1.choiceId), 10)) {\n choice.selected = false;\n }\n\n return choice;\n });\n }\n\n return state;\n }\n\n case 'FILTER_CHOICES':\n {\n var filterChoicesAction_1 = action;\n return state.map(function (obj) {\n var choice = obj; // Set active state based on whether choice is\n // within filtered results\n\n choice.active = filterChoicesAction_1.results.some(function (_a) {\n var item = _a.item,\n score = _a.score;\n\n if (item.id === choice.id) {\n choice.score = score;\n return true;\n }\n\n return false;\n });\n return choice;\n });\n }\n\n case 'ACTIVATE_CHOICES':\n {\n var activateChoicesAction_1 = action;\n return state.map(function (obj) {\n var choice = obj;\n choice.active = activateChoicesAction_1.active;\n return choice;\n });\n }\n\n case 'CLEAR_CHOICES':\n {\n return exports.defaultState;\n }\n\n default:\n {\n return state;\n }\n }\n}\n\nexports[\"default\"] = choices;\n\n/***/ }),\n\n/***/ 871:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = [];\n\nfunction groups(state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n\n if (action === void 0) {\n action = {};\n }\n\n switch (action.type) {\n case 'ADD_GROUP':\n {\n var addGroupAction = action;\n return __spreadArray(__spreadArray([], state, true), [{\n id: addGroupAction.id,\n value: addGroupAction.value,\n active: addGroupAction.active,\n disabled: addGroupAction.disabled\n }], false);\n }\n\n case 'CLEAR_CHOICES':\n {\n return [];\n }\n\n default:\n {\n return state;\n }\n }\n}\n\nexports[\"default\"] = groups;\n\n/***/ }),\n\n/***/ 655:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\n\nvar redux_1 = __webpack_require__(857);\n\nvar items_1 = __importDefault(__webpack_require__(52));\n\nvar groups_1 = __importDefault(__webpack_require__(871));\n\nvar choices_1 = __importDefault(__webpack_require__(273));\n\nvar loading_1 = __importDefault(__webpack_require__(502));\n\nvar utils_1 = __webpack_require__(799);\n\nexports.defaultState = {\n groups: [],\n items: [],\n choices: [],\n loading: false\n};\nvar appReducer = (0, redux_1.combineReducers)({\n items: items_1.default,\n groups: groups_1.default,\n choices: choices_1.default,\n loading: loading_1.default\n});\n\nvar rootReducer = function (passedState, action) {\n var state = passedState; // If we are clearing all items, groups and options we reassign\n // state and then pass that state to our proper reducer. This isn't\n // mutating our actual state\n // See: http://stackoverflow.com/a/35641992\n\n if (action.type === 'CLEAR_ALL') {\n state = exports.defaultState;\n } else if (action.type === 'RESET_TO') {\n return (0, utils_1.cloneObject)(action.state);\n }\n\n return appReducer(state, action);\n};\n\nexports[\"default\"] = rootReducer;\n\n/***/ }),\n\n/***/ 52:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = [];\n\nfunction items(state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n\n if (action === void 0) {\n action = {};\n }\n\n switch (action.type) {\n case 'ADD_ITEM':\n {\n var addItemAction = action; // Add object to items array\n\n var newState = __spreadArray(__spreadArray([], state, true), [{\n id: addItemAction.id,\n choiceId: addItemAction.choiceId,\n groupId: addItemAction.groupId,\n value: addItemAction.value,\n label: addItemAction.label,\n active: true,\n highlighted: false,\n customProperties: addItemAction.customProperties,\n placeholder: addItemAction.placeholder || false,\n keyCode: null\n }], false);\n\n return newState.map(function (obj) {\n var item = obj;\n item.highlighted = false;\n return item;\n });\n }\n\n case 'REMOVE_ITEM':\n {\n // Set item to inactive\n return state.map(function (obj) {\n var item = obj;\n\n if (item.id === action.id) {\n item.active = false;\n }\n\n return item;\n });\n }\n\n case 'HIGHLIGHT_ITEM':\n {\n var highlightItemAction_1 = action;\n return state.map(function (obj) {\n var item = obj;\n\n if (item.id === highlightItemAction_1.id) {\n item.highlighted = highlightItemAction_1.highlighted;\n }\n\n return item;\n });\n }\n\n default:\n {\n return state;\n }\n }\n}\n\nexports[\"default\"] = items;\n\n/***/ }),\n\n/***/ 502:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = false;\n\nvar general = function (state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n\n if (action === void 0) {\n action = {};\n }\n\n switch (action.type) {\n case 'SET_IS_LOADING':\n {\n return action.isLoading;\n }\n\n default:\n {\n return state;\n }\n }\n};\n\nexports[\"default\"] = general;\n\n/***/ }),\n\n/***/ 744:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nvar redux_1 = __webpack_require__(857);\n\nvar index_1 = __importDefault(__webpack_require__(655));\n\nvar Store =\n/** @class */\nfunction () {\n function Store() {\n this._store = (0, redux_1.createStore)(index_1.default, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());\n }\n /**\n * Subscribe store to function call (wrapped Redux method)\n */\n\n\n Store.prototype.subscribe = function (onChange) {\n this._store.subscribe(onChange);\n };\n /**\n * Dispatch event to store (wrapped Redux method)\n */\n\n\n Store.prototype.dispatch = function (action) {\n this._store.dispatch(action);\n };\n\n Object.defineProperty(Store.prototype, \"state\", {\n /**\n * Get store object (wrapping Redux method)\n */\n get: function () {\n return this._store.getState();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"items\", {\n /**\n * Get items from store\n */\n get: function () {\n return this.state.items;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeItems\", {\n /**\n * Get active items from store\n */\n get: function () {\n return this.items.filter(function (item) {\n return item.active === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"highlightedActiveItems\", {\n /**\n * Get highlighted items from store\n */\n get: function () {\n return this.items.filter(function (item) {\n return item.active && item.highlighted;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"choices\", {\n /**\n * Get choices from store\n */\n get: function () {\n return this.state.choices;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeChoices\", {\n /**\n * Get active choices from store\n */\n get: function () {\n return this.choices.filter(function (choice) {\n return choice.active === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"selectableChoices\", {\n /**\n * Get selectable choices from store\n */\n get: function () {\n return this.choices.filter(function (choice) {\n return choice.disabled !== true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"searchableChoices\", {\n /**\n * Get choices that can be searched (excluding placeholders)\n */\n get: function () {\n return this.selectableChoices.filter(function (choice) {\n return choice.placeholder !== true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"placeholderChoice\", {\n /**\n * Get placeholder choice from store\n */\n get: function () {\n return __spreadArray([], this.choices, true).reverse().find(function (choice) {\n return choice.placeholder === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"groups\", {\n /**\n * Get groups from store\n */\n get: function () {\n return this.state.groups;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeGroups\", {\n /**\n * Get active groups from store\n */\n get: function () {\n var _a = this,\n groups = _a.groups,\n choices = _a.choices;\n\n return groups.filter(function (group) {\n var isActive = group.active === true && group.disabled === false;\n var hasActiveOptions = choices.some(function (choice) {\n return choice.active === true && choice.disabled === false;\n });\n return isActive && hasActiveOptions;\n }, []);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Get loading state from store\n */\n\n Store.prototype.isLoading = function () {\n return this.state.loading;\n };\n /**\n * Get single choice by it's ID\n */\n\n\n Store.prototype.getChoiceById = function (id) {\n return this.activeChoices.find(function (choice) {\n return choice.id === parseInt(id, 10);\n });\n };\n /**\n * Get group by group id\n */\n\n\n Store.prototype.getGroupById = function (id) {\n return this.groups.find(function (group) {\n return group.id === id;\n });\n };\n\n return Store;\n}();\n\nexports[\"default\"] = Store;\n\n/***/ }),\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n/**\n * Helpers to create HTML elements used by Choices\n * Can be overridden by providing `callbackOnCreateTemplates` option\n */\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar templates = {\n containerOuter: function (_a, dir, isSelectElement, isSelectOneElement, searchEnabled, passedElementType, labelId) {\n var containerOuter = _a.classNames.containerOuter;\n var div = Object.assign(document.createElement('div'), {\n className: containerOuter\n });\n div.dataset.type = passedElementType;\n\n if (dir) {\n div.dir = dir;\n }\n\n if (isSelectOneElement) {\n div.tabIndex = 0;\n }\n\n if (isSelectElement) {\n div.setAttribute('role', searchEnabled ? 'combobox' : 'listbox');\n\n if (searchEnabled) {\n div.setAttribute('aria-autocomplete', 'list');\n }\n }\n\n div.setAttribute('aria-haspopup', 'true');\n div.setAttribute('aria-expanded', 'false');\n\n if (labelId) {\n div.setAttribute('aria-labeledby', labelId);\n }\n\n return div;\n },\n containerInner: function (_a) {\n var containerInner = _a.classNames.containerInner;\n return Object.assign(document.createElement('div'), {\n className: containerInner\n });\n },\n itemList: function (_a, isSelectOneElement) {\n var _b = _a.classNames,\n list = _b.list,\n listSingle = _b.listSingle,\n listItems = _b.listItems;\n return Object.assign(document.createElement('div'), {\n className: \"\".concat(list, \" \").concat(isSelectOneElement ? listSingle : listItems)\n });\n },\n placeholder: function (_a, value) {\n var _b;\n\n var allowHTML = _a.allowHTML,\n placeholder = _a.classNames.placeholder;\n return Object.assign(document.createElement('div'), (_b = {\n className: placeholder\n }, _b[allowHTML ? 'innerHTML' : 'innerText'] = value, _b));\n },\n item: function (_a, _b, removeItemButton) {\n var _c, _d;\n\n var allowHTML = _a.allowHTML,\n _e = _a.classNames,\n item = _e.item,\n button = _e.button,\n highlightedState = _e.highlightedState,\n itemSelectable = _e.itemSelectable,\n placeholder = _e.placeholder;\n var id = _b.id,\n value = _b.value,\n label = _b.label,\n customProperties = _b.customProperties,\n active = _b.active,\n disabled = _b.disabled,\n highlighted = _b.highlighted,\n isPlaceholder = _b.placeholder;\n var div = Object.assign(document.createElement('div'), (_c = {\n className: item\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = label, _c));\n Object.assign(div.dataset, {\n item: '',\n id: id,\n value: value,\n customProperties: customProperties\n });\n\n if (active) {\n div.setAttribute('aria-selected', 'true');\n }\n\n if (disabled) {\n div.setAttribute('aria-disabled', 'true');\n }\n\n if (isPlaceholder) {\n div.classList.add(placeholder);\n }\n\n div.classList.add(highlighted ? highlightedState : itemSelectable);\n\n if (removeItemButton) {\n if (disabled) {\n div.classList.remove(itemSelectable);\n }\n\n div.dataset.deletable = '';\n /** @todo This MUST be localizable, not hardcoded! */\n\n var REMOVE_ITEM_TEXT = 'Remove item';\n var removeButton = Object.assign(document.createElement('button'), (_d = {\n type: 'button',\n className: button\n }, _d[allowHTML ? 'innerHTML' : 'innerText'] = REMOVE_ITEM_TEXT, _d));\n removeButton.setAttribute('aria-label', \"\".concat(REMOVE_ITEM_TEXT, \": '\").concat(value, \"'\"));\n removeButton.dataset.button = '';\n div.appendChild(removeButton);\n }\n\n return div;\n },\n choiceList: function (_a, isSelectOneElement) {\n var list = _a.classNames.list;\n var div = Object.assign(document.createElement('div'), {\n className: list\n });\n\n if (!isSelectOneElement) {\n div.setAttribute('aria-multiselectable', 'true');\n }\n\n div.setAttribute('role', 'listbox');\n return div;\n },\n choiceGroup: function (_a, _b) {\n var _c;\n\n var allowHTML = _a.allowHTML,\n _d = _a.classNames,\n group = _d.group,\n groupHeading = _d.groupHeading,\n itemDisabled = _d.itemDisabled;\n var id = _b.id,\n value = _b.value,\n disabled = _b.disabled;\n var div = Object.assign(document.createElement('div'), {\n className: \"\".concat(group, \" \").concat(disabled ? itemDisabled : '')\n });\n div.setAttribute('role', 'group');\n Object.assign(div.dataset, {\n group: '',\n id: id,\n value: value\n });\n\n if (disabled) {\n div.setAttribute('aria-disabled', 'true');\n }\n\n div.appendChild(Object.assign(document.createElement('div'), (_c = {\n className: groupHeading\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = value, _c)));\n return div;\n },\n choice: function (_a, _b, selectText) {\n var _c;\n\n var allowHTML = _a.allowHTML,\n _d = _a.classNames,\n item = _d.item,\n itemChoice = _d.itemChoice,\n itemSelectable = _d.itemSelectable,\n selectedState = _d.selectedState,\n itemDisabled = _d.itemDisabled,\n placeholder = _d.placeholder;\n var id = _b.id,\n value = _b.value,\n label = _b.label,\n groupId = _b.groupId,\n elementId = _b.elementId,\n isDisabled = _b.disabled,\n isSelected = _b.selected,\n isPlaceholder = _b.placeholder;\n var div = Object.assign(document.createElement('div'), (_c = {\n id: elementId\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = label, _c.className = \"\".concat(item, \" \").concat(itemChoice), _c));\n\n if (isSelected) {\n div.classList.add(selectedState);\n }\n\n if (isPlaceholder) {\n div.classList.add(placeholder);\n }\n\n div.setAttribute('role', groupId && groupId > 0 ? 'treeitem' : 'option');\n Object.assign(div.dataset, {\n choice: '',\n id: id,\n value: value,\n selectText: selectText\n });\n\n if (isDisabled) {\n div.classList.add(itemDisabled);\n div.dataset.choiceDisabled = '';\n div.setAttribute('aria-disabled', 'true');\n } else {\n div.classList.add(itemSelectable);\n div.dataset.choiceSelectable = '';\n }\n\n return div;\n },\n input: function (_a, placeholderValue) {\n var _b = _a.classNames,\n input = _b.input,\n inputCloned = _b.inputCloned;\n var inp = Object.assign(document.createElement('input'), {\n type: 'search',\n name: 'search_terms',\n className: \"\".concat(input, \" \").concat(inputCloned),\n autocomplete: 'off',\n autocapitalize: 'off',\n spellcheck: false\n });\n inp.setAttribute('role', 'textbox');\n inp.setAttribute('aria-autocomplete', 'list');\n inp.setAttribute('aria-label', placeholderValue);\n return inp;\n },\n dropdown: function (_a) {\n var _b = _a.classNames,\n list = _b.list,\n listDropdown = _b.listDropdown;\n var div = document.createElement('div');\n div.classList.add(list, listDropdown);\n div.setAttribute('aria-expanded', 'false');\n return div;\n },\n notice: function (_a, innerText, type) {\n var _b;\n\n var allowHTML = _a.allowHTML,\n _c = _a.classNames,\n item = _c.item,\n itemChoice = _c.itemChoice,\n noResults = _c.noResults,\n noChoices = _c.noChoices;\n\n if (type === void 0) {\n type = '';\n }\n\n var classes = [item, itemChoice];\n\n if (type === 'no-choices') {\n classes.push(noChoices);\n } else if (type === 'no-results') {\n classes.push(noResults);\n }\n\n return Object.assign(document.createElement('div'), (_b = {}, _b[allowHTML ? 'innerHTML' : 'innerText'] = innerText, _b.className = classes.join(' '), _b));\n },\n option: function (_a) {\n var label = _a.label,\n value = _a.value,\n customProperties = _a.customProperties,\n active = _a.active,\n disabled = _a.disabled;\n var opt = new Option(label, value, false, active);\n\n if (customProperties) {\n opt.dataset.customProperties = \"\".concat(customProperties);\n }\n\n opt.disabled = !!disabled;\n return opt;\n }\n};\nexports[\"default\"] = templates;\n\n/***/ }),\n\n/***/ 996:\n/***/ (function(module) {\n\n\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n\n\n/***/ }),\n\n/***/ 221:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ Fuse; }\n/* harmony export */ });\n/**\n * Fuse.js v6.5.3 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2021 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n return !Array.isArray\n ? getTag(value) === '[object Array]'\n : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value\n }\n let result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n return (\n value === true ||\n value === false ||\n (isObjectLike(value) && getTag(value) == '[object Boolean]')\n )\n}\n\nfunction isObject(value) {\n return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n return value == null\n ? value === undefined\n ? '[object Undefined]'\n : '[object Null]'\n : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n constructor(keys) {\n this._keys = [];\n this._keyMap = {};\n\n let totalWeight = 0;\n\n keys.forEach((key) => {\n let obj = createKey(key);\n\n totalWeight += obj.weight;\n\n this._keys.push(obj);\n this._keyMap[obj.id] = obj;\n\n totalWeight += obj.weight;\n });\n\n // Normalize weights so that their sum is equal to 1\n this._keys.forEach((key) => {\n key.weight /= totalWeight;\n });\n }\n get(keyId) {\n return this._keyMap[keyId]\n }\n keys() {\n return this._keys\n }\n toJSON() {\n return JSON.stringify(this._keys)\n }\n}\n\nfunction createKey(key) {\n let path = null;\n let id = null;\n let src = null;\n let weight = 1;\n\n if (isString(key) || isArray(key)) {\n src = key;\n path = createKeyPath(key);\n id = createKeyId(key);\n } else {\n if (!hasOwn.call(key, 'name')) {\n throw new Error(MISSING_KEY_PROPERTY('name'))\n }\n\n const name = key.name;\n src = name;\n\n if (hasOwn.call(key, 'weight')) {\n weight = key.weight;\n\n if (weight <= 0) {\n throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n }\n }\n\n path = createKeyPath(name);\n id = createKeyId(name);\n }\n\n return { path, id, weight, src }\n}\n\nfunction createKeyPath(key) {\n return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n let list = [];\n let arr = false;\n\n const deepGet = (obj, path, index) => {\n if (!isDefined(obj)) {\n return\n }\n if (!path[index]) {\n // If there's no path left, we've arrived at the object we care about.\n list.push(obj);\n } else {\n let key = path[index];\n\n const value = obj[key];\n\n if (!isDefined(value)) {\n return\n }\n\n // If we're at the last value in the path, and if it's a string/number/bool,\n // add it to the list\n if (\n index === path.length - 1 &&\n (isString(value) || isNumber(value) || isBoolean(value))\n ) {\n list.push(toString(value));\n } else if (isArray(value)) {\n arr = true;\n // Search each item in the array.\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepGet(value[i], path, index + 1);\n }\n } else if (path.length) {\n // An object. Recurse further.\n deepGet(value, path, index + 1);\n }\n }\n };\n\n // Backwards compatibility (since path used to be a string)\n deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n // Whether the matches should be included in the result set. When `true`, each record in the result\n // set will include the indices of the matched characters.\n // These can consequently be used for highlighting purposes.\n includeMatches: false,\n // When `true`, the matching function will continue to the end of a search pattern even if\n // a perfect match has already been located in the string.\n findAllMatches: false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n // When `true`, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n isCaseSensitive: false,\n // When true, the matching function will continue to the end of a search pattern even if\n includeScore: false,\n // List of properties that will be searched. This also supports nested properties.\n keys: [],\n // Whether to sort the result list, by score\n shouldSort: true,\n // Default sort function: sort by ascending score, ascending index\n sortFn: (a, b) =>\n a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n // Approximately where in the text is the pattern expected to be found?\n location: 0,\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold: 0.6,\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance: 100\n};\n\nconst AdvancedOptions = {\n // When `true`, it enables the use of unix-like search commands\n useExtendedSearch: false,\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn: get,\n // When `true`, search will ignore `location` and `distance`, so it won't matter\n // where in the string the pattern appears.\n // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n ignoreLocation: false,\n // When `true`, the calculation for the relevance score (used for sorting) will\n // ignore the field-length norm.\n // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n ignoreFieldNorm: false,\n // The weight to determine how much field length norm effects scoring.\n fieldNormWeight: 1\n};\n\nvar Config = {\n ...BasicOptions,\n ...MatchOptions,\n ...FuzzyOptions,\n ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n const cache = new Map();\n const m = Math.pow(10, mantissa);\n\n return {\n get(value) {\n const numTokens = value.match(SPACE).length;\n\n if (cache.has(numTokens)) {\n return cache.get(numTokens)\n }\n\n // Default function is 1/sqrt(x), weight makes that variable\n const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n // In place of `toFixed(mantissa)`, for faster computation\n const n = parseFloat(Math.round(norm * m) / m);\n\n cache.set(numTokens, n);\n\n return n\n },\n clear() {\n cache.clear();\n }\n }\n}\n\nclass FuseIndex {\n constructor({\n getFn = Config.getFn,\n fieldNormWeight = Config.fieldNormWeight\n } = {}) {\n this.norm = norm(fieldNormWeight, 3);\n this.getFn = getFn;\n this.isCreated = false;\n\n this.setIndexRecords();\n }\n setSources(docs = []) {\n this.docs = docs;\n }\n setIndexRecords(records = []) {\n this.records = records;\n }\n setKeys(keys = []) {\n this.keys = keys;\n this._keysMap = {};\n keys.forEach((key, idx) => {\n this._keysMap[key.id] = idx;\n });\n }\n create() {\n if (this.isCreated || !this.docs.length) {\n return\n }\n\n this.isCreated = true;\n\n // List is Array\n if (isString(this.docs[0])) {\n this.docs.forEach((doc, docIndex) => {\n this._addString(doc, docIndex);\n });\n } else {\n // List is Array\n this.docs.forEach((doc, docIndex) => {\n this._addObject(doc, docIndex);\n });\n }\n\n this.norm.clear();\n }\n // Adds a doc to the end of the index\n add(doc) {\n const idx = this.size();\n\n if (isString(doc)) {\n this._addString(doc, idx);\n } else {\n this._addObject(doc, idx);\n }\n }\n // Removes the doc at the specified index of the index\n removeAt(idx) {\n this.records.splice(idx, 1);\n\n // Change ref index of every subsquent doc\n for (let i = idx, len = this.size(); i < len; i += 1) {\n this.records[i].i -= 1;\n }\n }\n getValueForItemAtKeyId(item, keyId) {\n return item[this._keysMap[keyId]]\n }\n size() {\n return this.records.length\n }\n _addString(doc, docIndex) {\n if (!isDefined(doc) || isBlank(doc)) {\n return\n }\n\n let record = {\n v: doc,\n i: docIndex,\n n: this.norm.get(doc)\n };\n\n this.records.push(record);\n }\n _addObject(doc, docIndex) {\n let record = { i: docIndex, $: {} };\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n this.keys.forEach((key, keyIndex) => {\n // console.log(key)\n let value = this.getFn(doc, key.path);\n\n if (!isDefined(value)) {\n return\n }\n\n if (isArray(value)) {\n let subRecords = [];\n const stack = [{ nestedArrIndex: -1, value }];\n\n while (stack.length) {\n const { nestedArrIndex, value } = stack.pop();\n\n if (!isDefined(value)) {\n continue\n }\n\n if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n i: nestedArrIndex,\n n: this.norm.get(value)\n };\n\n subRecords.push(subRecord);\n } else if (isArray(value)) {\n value.forEach((item, k) => {\n stack.push({\n nestedArrIndex: k,\n value: item\n });\n });\n } else ;\n }\n record.$[keyIndex] = subRecords;\n } else if (!isBlank(value)) {\n let subRecord = {\n v: value,\n n: this.norm.get(value)\n };\n\n record.$[keyIndex] = subRecord;\n }\n });\n\n this.records.push(record);\n }\n toJSON() {\n return {\n keys: this.keys,\n records: this.records\n }\n }\n}\n\nfunction createIndex(\n keys,\n docs,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys.map(createKey));\n myIndex.setSources(docs);\n myIndex.create();\n return myIndex\n}\n\nfunction parseIndex(\n data,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const { keys, records } = data;\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys);\n myIndex.setIndexRecords(records);\n return myIndex\n}\n\nfunction computeScore$1(\n pattern,\n {\n errors = 0,\n currentLocation = 0,\n expectedLocation = 0,\n distance = Config.distance,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n const accuracy = errors / pattern.length;\n\n if (ignoreLocation) {\n return accuracy\n }\n\n const proximity = Math.abs(expectedLocation - currentLocation);\n\n if (!distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n\n return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n matchmask = [],\n minMatchCharLength = Config.minMatchCharLength\n) {\n let indices = [];\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (let len = matchmask.length; i < len; i += 1) {\n let match = matchmask[i];\n if (match && start === -1) {\n start = i;\n } else if (!match && start !== -1) {\n end = i - 1;\n if (end - start + 1 >= minMatchCharLength) {\n indices.push([start, end]);\n }\n start = -1;\n }\n }\n\n // (i-1 - start) + 1 => i - start\n if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n indices.push([start, i - 1]);\n }\n\n return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n text,\n pattern,\n patternAlphabet,\n {\n location = Config.location,\n distance = Config.distance,\n threshold = Config.threshold,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n includeMatches = Config.includeMatches,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n if (pattern.length > MAX_BITS) {\n throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n }\n\n const patternLen = pattern.length;\n // Set starting location at beginning text and initialize the alphabet.\n const textLen = text.length;\n // Handle the case when location > text.length\n const expectedLocation = Math.max(0, Math.min(location, textLen));\n // Highest score beyond which we give up.\n let currentThreshold = threshold;\n // Is there a nearby exact match? (speedup)\n let bestLocation = expectedLocation;\n\n // Performance: only computer matches when the minMatchCharLength > 1\n // OR if `includeMatches` is true.\n const computeMatches = minMatchCharLength > 1 || includeMatches;\n // A mask of the matches, used for building the indices\n const matchMask = computeMatches ? Array(textLen) : [];\n\n let index;\n\n // Get all exact matches, here for speed up\n while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n let score = computeScore$1(pattern, {\n currentLocation: index,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n currentThreshold = Math.min(score, currentThreshold);\n bestLocation = index + patternLen;\n\n if (computeMatches) {\n let i = 0;\n while (i < patternLen) {\n matchMask[index + i] = 1;\n i += 1;\n }\n }\n }\n\n // Reset the best location\n bestLocation = -1;\n\n let lastBitArr = [];\n let finalScore = 1;\n let binMax = patternLen + textLen;\n\n const mask = 1 << (patternLen - 1);\n\n for (let i = 0; i < patternLen; i += 1) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n let binMin = 0;\n let binMid = binMax;\n\n while (binMin < binMid) {\n const score = computeScore$1(pattern, {\n errors: i,\n currentLocation: expectedLocation + binMid,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score <= currentThreshold) {\n binMin = binMid;\n } else {\n binMax = binMid;\n }\n\n binMid = Math.floor((binMax - binMin) / 2 + binMin);\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid;\n\n let start = Math.max(1, expectedLocation - binMid + 1);\n let finish = findAllMatches\n ? textLen\n : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n // Initialize the bit array\n let bitArr = Array(finish + 2);\n\n bitArr[finish + 1] = (1 << i) - 1;\n\n for (let j = finish; j >= start; j -= 1) {\n let currentLocation = j - 1;\n let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n if (computeMatches) {\n // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n matchMask[currentLocation] = +!!charMatch;\n }\n\n // First pass: exact match\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n // Subsequent passes: fuzzy match\n if (i) {\n bitArr[j] |=\n ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n }\n\n if (bitArr[j] & mask) {\n finalScore = computeScore$1(pattern, {\n errors: i,\n currentLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (finalScore <= currentThreshold) {\n // Indeed it is\n currentThreshold = finalScore;\n bestLocation = currentLocation;\n\n // Already passed `loc`, downhill from here on in.\n if (bestLocation <= expectedLocation) {\n break\n }\n\n // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n start = Math.max(1, 2 * expectedLocation - bestLocation);\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n const score = computeScore$1(pattern, {\n errors: i + 1,\n currentLocation: expectedLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score > currentThreshold) {\n break\n }\n\n lastBitArr = bitArr;\n }\n\n const result = {\n isMatch: bestLocation >= 0,\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n score: Math.max(0.001, finalScore)\n };\n\n if (computeMatches) {\n const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n if (!indices.length) {\n result.isMatch = false;\n } else if (includeMatches) {\n result.indices = indices;\n }\n }\n\n return result\n}\n\nfunction createPatternAlphabet(pattern) {\n let mask = {};\n\n for (let i = 0, len = pattern.length; i < len; i += 1) {\n const char = pattern.charAt(i);\n mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n }\n\n return mask\n}\n\nclass BitapSearch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n this.options = {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n this.chunks = [];\n\n if (!this.pattern.length) {\n return\n }\n\n const addChunk = (pattern, startIndex) => {\n this.chunks.push({\n pattern,\n alphabet: createPatternAlphabet(pattern),\n startIndex\n });\n };\n\n const len = this.pattern.length;\n\n if (len > MAX_BITS) {\n let i = 0;\n const remainder = len % MAX_BITS;\n const end = len - remainder;\n\n while (i < end) {\n addChunk(this.pattern.substr(i, MAX_BITS), i);\n i += MAX_BITS;\n }\n\n if (remainder) {\n const startIndex = len - MAX_BITS;\n addChunk(this.pattern.substr(startIndex), startIndex);\n }\n } else {\n addChunk(this.pattern, 0);\n }\n }\n\n searchIn(text) {\n const { isCaseSensitive, includeMatches } = this.options;\n\n if (!isCaseSensitive) {\n text = text.toLowerCase();\n }\n\n // Exact match\n if (this.pattern === text) {\n let result = {\n isMatch: true,\n score: 0\n };\n\n if (includeMatches) {\n result.indices = [[0, text.length - 1]];\n }\n\n return result\n }\n\n // Otherwise, use Bitap algorithm\n const {\n location,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n ignoreLocation\n } = this.options;\n\n let allIndices = [];\n let totalScore = 0;\n let hasMatches = false;\n\n this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n const { isMatch, score, indices } = search(text, pattern, alphabet, {\n location: location + startIndex,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n includeMatches,\n ignoreLocation\n });\n\n if (isMatch) {\n hasMatches = true;\n }\n\n totalScore += score;\n\n if (isMatch && indices) {\n allIndices = [...allIndices, ...indices];\n }\n });\n\n let result = {\n isMatch: hasMatches,\n score: hasMatches ? totalScore / this.chunks.length : 1\n };\n\n if (hasMatches && includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n}\n\nclass BaseMatch {\n constructor(pattern) {\n this.pattern = pattern;\n }\n static isMultiMatch(pattern) {\n return getMatch(pattern, this.multiRegex)\n }\n static isSingleMatch(pattern) {\n return getMatch(pattern, this.singleRegex)\n }\n search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n const matches = pattern.match(exp);\n return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'exact'\n }\n static get multiRegex() {\n return /^=\"(.*)\"$/\n }\n static get singleRegex() {\n return /^=(.*)$/\n }\n search(text) {\n const isMatch = text === this.pattern;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!(.*)$/\n }\n search(text) {\n const index = text.indexOf(this.pattern);\n const isMatch = index === -1;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'prefix-exact'\n }\n static get multiRegex() {\n return /^\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^\\^(.*)$/\n }\n search(text) {\n const isMatch = text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-prefix-exact'\n }\n static get multiRegex() {\n return /^!\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!\\^(.*)$/\n }\n search(text) {\n const isMatch = !text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'suffix-exact'\n }\n static get multiRegex() {\n return /^\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^(.*)\\$$/\n }\n search(text) {\n const isMatch = text.endsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [text.length - this.pattern.length, text.length - 1]\n }\n }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-suffix-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^!(.*)\\$$/\n }\n search(text) {\n const isMatch = !text.endsWith(this.pattern);\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\nclass FuzzyMatch extends BaseMatch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n super(pattern);\n this._bitapSearch = new BitapSearch(pattern, {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n });\n }\n static get type() {\n return 'fuzzy'\n }\n static get multiRegex() {\n return /^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^(.*)$/\n }\n search(text) {\n return this._bitapSearch.searchIn(text)\n }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'include'\n }\n static get multiRegex() {\n return /^'\"(.*)\"$/\n }\n static get singleRegex() {\n return /^'(.*)$/\n }\n search(text) {\n let location = 0;\n let index;\n\n const indices = [];\n const patternLen = this.pattern.length;\n\n // Get all exact matches\n while ((index = text.indexOf(this.pattern, location)) > -1) {\n location = index + patternLen;\n indices.push([index, location - 1]);\n }\n\n const isMatch = !!indices.length;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices\n }\n }\n}\n\n// ❗Order is important. DO NOT CHANGE.\nconst searchers = [\n ExactMatch,\n IncludeMatch,\n PrefixExactMatch,\n InversePrefixExactMatch,\n InverseSuffixExactMatch,\n SuffixExactMatch,\n InverseExactMatch,\n FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=([^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n return pattern.split(OR_TOKEN).map((item) => {\n let query = item\n .trim()\n .split(SPACE_RE)\n .filter((item) => item && !!item.trim());\n\n let results = [];\n for (let i = 0, len = query.length; i < len; i += 1) {\n const queryItem = query[i];\n\n // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n let found = false;\n let idx = -1;\n while (!found && ++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isMultiMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n found = true;\n }\n }\n\n if (found) {\n continue\n }\n\n // 2. Handle single query matches (i.e, once that are *not* quoted)\n idx = -1;\n while (++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isSingleMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n break\n }\n }\n }\n\n return results\n })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token | Match type | Description |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript` | fuzzy-match | Items that fuzzy match `jscript` |\n * | `=scheme` | exact-match | Items that are `scheme` |\n * | `'python` | include-match | Items that include `python` |\n * | `!ruby` | inverse-exact-match | Items that do not include `ruby` |\n * | `^java` | prefix-exact-match | Items that start with `java` |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$` | suffix-exact-match | Items that end with `.js` |\n * | `!.go$` | inverse-suffix-exact-match | Items that do not end with `.go` |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n constructor(\n pattern,\n {\n isCaseSensitive = Config.isCaseSensitive,\n includeMatches = Config.includeMatches,\n minMatchCharLength = Config.minMatchCharLength,\n ignoreLocation = Config.ignoreLocation,\n findAllMatches = Config.findAllMatches,\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance\n } = {}\n ) {\n this.query = null;\n this.options = {\n isCaseSensitive,\n includeMatches,\n minMatchCharLength,\n findAllMatches,\n ignoreLocation,\n location,\n threshold,\n distance\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n this.query = parseQuery(this.pattern, this.options);\n }\n\n static condition(_, options) {\n return options.useExtendedSearch\n }\n\n searchIn(text) {\n const query = this.query;\n\n if (!query) {\n return {\n isMatch: false,\n score: 1\n }\n }\n\n const { includeMatches, isCaseSensitive } = this.options;\n\n text = isCaseSensitive ? text : text.toLowerCase();\n\n let numMatches = 0;\n let allIndices = [];\n let totalScore = 0;\n\n // ORs\n for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n const searchers = query[i];\n\n // Reset indices\n allIndices.length = 0;\n numMatches = 0;\n\n // ANDs\n for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n const searcher = searchers[j];\n const { isMatch, indices, score } = searcher.search(text);\n\n if (isMatch) {\n numMatches += 1;\n totalScore += score;\n if (includeMatches) {\n const type = searcher.constructor.type;\n if (MultiMatchSet.has(type)) {\n allIndices = [...allIndices, ...indices];\n } else {\n allIndices.push(indices);\n }\n }\n } else {\n totalScore = 0;\n numMatches = 0;\n allIndices.length = 0;\n break\n }\n }\n\n // OR condition, so if TRUE, return\n if (numMatches) {\n let result = {\n isMatch: true,\n score: totalScore / numMatches\n };\n\n if (includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n }\n\n // Nothing was matched\n return {\n isMatch: false,\n score: 1\n }\n }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n let searcherClass = registeredSearchers[i];\n if (searcherClass.condition(pattern, options)) {\n return new searcherClass(pattern, options)\n }\n }\n\n return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n AND: '$and',\n OR: '$or'\n};\n\nconst KeyType = {\n PATH: '$path',\n PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n [key]: query[key]\n }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n const next = (query) => {\n let keys = Object.keys(query);\n\n const isQueryPath = isPath(query);\n\n if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n return next(convertToExplicit(query))\n }\n\n if (isLeaf(query)) {\n const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n if (!isString(pattern)) {\n throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n }\n\n const obj = {\n keyId: createKeyId(key),\n pattern\n };\n\n if (auto) {\n obj.searcher = createSearcher(pattern, options);\n }\n\n return obj\n }\n\n let node = {\n children: [],\n operator: keys[0]\n };\n\n keys.forEach((key) => {\n const value = query[key];\n\n if (isArray(value)) {\n value.forEach((item) => {\n node.children.push(next(item));\n });\n }\n });\n\n return node\n };\n\n if (!isExpression(query)) {\n query = convertToExplicit(query);\n }\n\n return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n results,\n { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n results.forEach((result) => {\n let totalScore = 1;\n\n result.matches.forEach(({ key, norm, score }) => {\n const weight = key ? key.weight : null;\n\n totalScore *= Math.pow(\n score === 0 && weight ? Number.EPSILON : score,\n (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n );\n });\n\n result.score = totalScore;\n });\n}\n\nfunction transformMatches(result, data) {\n const matches = result.matches;\n data.matches = [];\n\n if (!isDefined(matches)) {\n return\n }\n\n matches.forEach((match) => {\n if (!isDefined(match.indices) || !match.indices.length) {\n return\n }\n\n const { indices, value } = match;\n\n let obj = {\n indices,\n value\n };\n\n if (match.key) {\n obj.key = match.key.src;\n }\n\n if (match.idx > -1) {\n obj.refIndex = match.idx;\n }\n\n data.matches.push(obj);\n });\n}\n\nfunction transformScore(result, data) {\n data.score = result.score;\n}\n\nfunction format(\n results,\n docs,\n {\n includeMatches = Config.includeMatches,\n includeScore = Config.includeScore\n } = {}\n) {\n const transformers = [];\n\n if (includeMatches) transformers.push(transformMatches);\n if (includeScore) transformers.push(transformScore);\n\n return results.map((result) => {\n const { idx } = result;\n\n const data = {\n item: docs[idx],\n refIndex: idx\n };\n\n if (transformers.length) {\n transformers.forEach((transformer) => {\n transformer(result, data);\n });\n }\n\n return data\n })\n}\n\nclass Fuse {\n constructor(docs, options = {}, index) {\n this.options = { ...Config, ...options };\n\n if (\n this.options.useExtendedSearch &&\n !true\n ) {}\n\n this._keyStore = new KeyStore(this.options.keys);\n\n this.setCollection(docs, index);\n }\n\n setCollection(docs, index) {\n this._docs = docs;\n\n if (index && !(index instanceof FuseIndex)) {\n throw new Error(INCORRECT_INDEX_TYPE)\n }\n\n this._myIndex =\n index ||\n createIndex(this.options.keys, this._docs, {\n getFn: this.options.getFn,\n fieldNormWeight: this.options.fieldNormWeight\n });\n }\n\n add(doc) {\n if (!isDefined(doc)) {\n return\n }\n\n this._docs.push(doc);\n this._myIndex.add(doc);\n }\n\n remove(predicate = (/* doc, idx */) => false) {\n const results = [];\n\n for (let i = 0, len = this._docs.length; i < len; i += 1) {\n const doc = this._docs[i];\n if (predicate(doc, i)) {\n this.removeAt(i);\n i -= 1;\n len -= 1;\n\n results.push(doc);\n }\n }\n\n return results\n }\n\n removeAt(idx) {\n this._docs.splice(idx, 1);\n this._myIndex.removeAt(idx);\n }\n\n getIndex() {\n return this._myIndex\n }\n\n search(query, { limit = -1 } = {}) {\n const {\n includeMatches,\n includeScore,\n shouldSort,\n sortFn,\n ignoreFieldNorm\n } = this.options;\n\n let results = isString(query)\n ? isString(this._docs[0])\n ? this._searchStringList(query)\n : this._searchObjectList(query)\n : this._searchLogical(query);\n\n computeScore(results, { ignoreFieldNorm });\n\n if (shouldSort) {\n results.sort(sortFn);\n }\n\n if (isNumber(limit) && limit > -1) {\n results = results.slice(0, limit);\n }\n\n return format(results, this._docs, {\n includeMatches,\n includeScore\n })\n }\n\n _searchStringList(query) {\n const searcher = createSearcher(query, this.options);\n const { records } = this._myIndex;\n const results = [];\n\n // Iterate over every string in the index\n records.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n results.push({\n item: text,\n idx,\n matches: [{ score, value: text, norm, indices }]\n });\n }\n });\n\n return results\n }\n\n _searchLogical(query) {\n\n const expression = parse(query, this.options);\n\n const evaluate = (node, item, idx) => {\n if (!node.children) {\n const { keyId, searcher } = node;\n\n const matches = this._findMatches({\n key: this._keyStore.get(keyId),\n value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n searcher\n });\n\n if (matches && matches.length) {\n return [\n {\n idx,\n item,\n matches\n }\n ]\n }\n\n return []\n }\n\n const res = [];\n for (let i = 0, len = node.children.length; i < len; i += 1) {\n const child = node.children[i];\n const result = evaluate(child, item, idx);\n if (result.length) {\n res.push(...result);\n } else if (node.operator === LogicalOperator.AND) {\n return []\n }\n }\n return res\n };\n\n const records = this._myIndex.records;\n const resultMap = {};\n const results = [];\n\n records.forEach(({ $: item, i: idx }) => {\n if (isDefined(item)) {\n let expResults = evaluate(expression, item, idx);\n\n if (expResults.length) {\n // Dedupe when adding\n if (!resultMap[idx]) {\n resultMap[idx] = { idx, item, matches: [] };\n results.push(resultMap[idx]);\n }\n expResults.forEach(({ matches }) => {\n resultMap[idx].matches.push(...matches);\n });\n }\n }\n });\n\n return results\n }\n\n _searchObjectList(query) {\n const searcher = createSearcher(query, this.options);\n const { keys, records } = this._myIndex;\n const results = [];\n\n // List is Array\n records.forEach(({ $: item, i: idx }) => {\n if (!isDefined(item)) {\n return\n }\n\n let matches = [];\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n keys.forEach((key, keyIndex) => {\n matches.push(\n ...this._findMatches({\n key,\n value: item[keyIndex],\n searcher\n })\n );\n });\n\n if (matches.length) {\n results.push({\n idx,\n item,\n matches\n });\n }\n });\n\n return results\n }\n _findMatches({ key, value, searcher }) {\n if (!isDefined(value)) {\n return []\n }\n\n let matches = [];\n\n if (isArray(value)) {\n value.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({\n score,\n key,\n value: text,\n idx,\n norm,\n indices\n });\n }\n });\n } else {\n const { v: text, n: norm } = value;\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({ score, key, value: text, norm, indices });\n }\n }\n\n return matches\n }\n}\n\nFuse.version = '6.5.3';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n Fuse.parseQuery = parse;\n}\n\n{\n register(ExtendedSearch);\n}\n\n\n\n\n/***/ }),\n\n/***/ 857:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"__DO_NOT_USE__ActionTypes\": function() { return /* binding */ ActionTypes; },\n \"applyMiddleware\": function() { return /* binding */ applyMiddleware; },\n \"bindActionCreators\": function() { return /* binding */ bindActionCreators; },\n \"combineReducers\": function() { return /* binding */ combineReducers; },\n \"compose\": function() { return /* binding */ compose; },\n \"createStore\": function() { return /* binding */ createStore; }\n});\n\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\n\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n;// CONCATENATED MODULE: ./node_modules/redux/es/redux.js\n\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (false) {}\n\n return typeOfVal;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error( true ? formatProdErrorMessage(0) : 0);\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(1) : 0);\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(2) : 0);\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(3) : 0);\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error( true ? formatProdErrorMessage(4) : 0);\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(5) : 0);\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(6) : 0);\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error( true ? formatProdErrorMessage(7) : 0);\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(8) : 0);\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(9) : 0);\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(10) : 0);\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error( true ? formatProdErrorMessage(11) : 0);\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(12) : 0);\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(13) : 0);\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (false) {}\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (false) {}\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (false) { var warningMessage; }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error( true ? formatProdErrorMessage(14) : 0);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error( true ? formatProdErrorMessage(16) : 0);\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error( true ? formatProdErrorMessage(15) : 0);\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2(_objectSpread2({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (false) {}\n\n\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n!function() {\n/* harmony import */ var _scripts_choices__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(373);\n/* harmony import */ var _scripts_choices__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_scripts_choices__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _scripts_interfaces__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(187);\n/* harmony import */ var _scripts_interfaces__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_scripts_interfaces__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _scripts_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(883);\n/* harmony import */ var _scripts_defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(789);\n/* harmony import */ var _scripts_templates__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(686);\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((_scripts_choices__WEBPACK_IMPORTED_MODULE_0___default()));\n\n}();\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","const rangeInputs = document.querySelectorAll('.js-range-input');\nconst priceInputs = document.querySelectorAll('.js-price-input');\nconst range = document.querySelector('.js-progress-bar');\nconst rangeInput = document.querySelector(\".k-range-slider__input\");\nlet clientId = null;\nconst minGap = 10;\n\nif(rangeInput)\n clientId = rangeInput.dataset.buttonId;\n\nif(rangeInputs && range)\n{\n const min = parseInt(rangeInputs[0].min, 10);\n const minVal = parseInt(rangeInputs[0].value, 10);\n const max = parseInt(rangeInputs[1].max, 10);\n const maxVal = parseInt(rangeInputs[1].value, 10);\n\n const minValue = (minVal - min) / (max - min) * (100 - 0) + 0; // (6 - 5) / (11 - 5) * (100 - 0) + 0;\n const maxValue = (maxVal - min) / (max - min) * (100 - 0) + 0; // (6 - 5) / (11 - 5) * (100 - 0) + 0;\n\n range.style.left = `${minValue}%`;\n range.style.right = `${100 - maxValue}%`;\n}\n\nlet timeout = null;\n\npriceInputs.forEach((input) =>\n{\n input.addEventListener('input', (e) =>\n {\n const minPrice = parseInt(priceInputs[0].value, 10);\n const maxPrice = parseInt(priceInputs[1].value, 10);\n\n if ((maxPrice - minPrice >= minGap) && maxPrice <= rangeInputs[1].max)\n {\n if (e.target.classList.contains('js-price-input--min'))\n {\n rangeInputs[0].value = minPrice;\n range.style.left = `${(minPrice / rangeInputs[0].max) * 100}%`;\n }\n else\n {\n rangeInputs[1].value = maxPrice;\n range.style.right = `${100 - (maxPrice / rangeInputs[1].max) * 100}%`;\n }\n }\n\n clearTimeout(timeout);\n\n timeout = setTimeout(function()\n {\n __doPostBack(clientId, 'OnClick');\n }, 400);\n });\n});\n\nrangeInputs.forEach((input) =>\n{\n input.addEventListener('input', (e) =>\n {\n const minVal = parseInt(rangeInputs[0].value, 10);\n const maxVal = parseInt(rangeInputs[1].value, 10);\n\n if ((maxVal - minVal) < minGap)\n {\n if (e.target.classList.contains('js-range-input--min'))\n rangeInputs[0].value = maxVal - minGap;\n else\n rangeInputs[1].value = minVal + minGap;\n }\n else\n {\n priceInputs[0].value = minVal;\n priceInputs[1].value = maxVal;\n\n const min = parseInt(rangeInputs[0].min, 10);\n const max = parseInt(rangeInputs[1].max, 10);\n\n const minValue = (minVal - min) / (max - min) * (100 - 0) + 0; // (6 - 5) / (11 - 5) * (100 - 0) + 0;\n const maxValue = (maxVal - min) / (max - min) * (100 - 0) + 0; // (6 - 5) / (11 - 5) * (100 - 0) + 0;\n\n range.style.left = `${minValue}%`;\n range.style.right = `${100 - maxValue}%`;\n }\n });\n\n input.addEventListener(\"change\", (e) =>\n {\n clearTimeout(timeout);\n\n __doPostBack(clientId, 'OnClick');\n });\n});\n","function isNull(obj)\n{\n return obj === null;\n}\n\ndocument.addEventListener(\"click\", function(e)\n{\n var target = e.target;\n\n while(target && (!target.classList || !target.classList.contains(\"js-multiproduct-toggle\")))\n target = target.parentNode;\n\n if(isNull(target))\n return;\n\n target.classList.toggle(\"js-active\");\n target.firstElementChild.querySelector('.js-multiproduct-label-short').classList.toggle('k-d-none');\n target.firstElementChild.querySelector('.js-multiproduct-label-long').classList.toggle('k-d-none');\n target.firstElementChild.lastElementChild.classList.toggle('js-active');\n target.nextElementSibling.classList.toggle('k-d-none');\n});\n\nwindow.addEventListener('scroll', function()\n{\n const multiproductStickyEls = document.querySelectorAll('.js-multiproduct-sticky');\n\n [...multiproductStickyEls].forEach((item) =>\n {\n const { top } = item.getBoundingClientRect();\n\n if (!item.classList.contains('js-active') && top <= 0)\n {\n item.classList.add('js-active');\n item.setAttribute('animating', '1');\n setTimeout(() =>\n {\n item.setAttribute('animating', '0');\n }, 500);\n }\n else if (item.classList.contains('js-active') && top >= 100 && item.getAttribute('animating') === '0')\n item.classList.remove('js-active');\n });\n}, false);\n","document.addEventListener(\"click\", function(e)\r\n{\r\n var target = e.target;\r\n\r\n if(target.tagName !== \"BUTTON\" && !(target.dataset && target.dataset.modal))\r\n return;\r\n\r\n if(target.dataset == null || target.dataset.modal == null)\r\n return;\r\n\r\n const modal = document.querySelector(target.dataset.modal);\r\n\r\n modal.classList.remove(\"k-modal--active\");\r\n});\r\n\r\nwindow.hideModal = function(id)\r\n{\r\n document.querySelector(id).classList.remove(\"k-modal--active\");\r\n}\r\n\r\nwindow.showModal = function(id)\r\n{\r\n var modals = document.querySelectorAll(\".k-modal\");\r\n\r\n [...modals].forEach((i) =>\r\n {\r\n i.classList.remove(\"k-modal--active\");\r\n });\r\n\r\n document.querySelector(id).classList.add(\"k-modal--active\");\r\n}","const scrollTopBtn = document.querySelector('.js-scroll-top');\n\nif (scrollTopBtn) {\n scrollTopBtn.addEventListener('click', () => {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n });\n}\n","module.exports = require(\"./index.js\").default\n","const cartCheckboxEls = document.querySelectorAll('.js-cart-checkbox');\n\nif (cartCheckboxEls) {\n document.addEventListener('change', (event) => {\n if (!event.target.matches('.js-cart-checkbox')) { return; }\n event.target.parentElement.parentElement.classList.toggle('.js-active');\n const target = document.querySelector(event.target.dataset.check);\n target.classList.toggle('k-d-none');\n }, false);\n}\n","const SortImgEls = document.querySelectorAll('.js-sort-img');\n\nif (SortImgEls) {\n [...SortImgEls].forEach((item) => {\n item.addEventListener('click', () => {\n if (item.classList.contains('k-sort--none')) {\n item.classList.remove('k-sort--none');\n item.classList.add('k-sort--up');\n item.previousElementSibling.classList.add('js-active');\n } else if (item.classList.contains('k-sort--up')) {\n item.classList.remove('k-sort--up');\n item.classList.add('k-sort--down');\n } else if (item.classList.contains('k-sort--down')) {\n item.classList.remove('k-sort--down');\n item.classList.add('k-sort--both');\n } else {\n item.classList.remove('k-sort--both');\n item.classList.add('k-sort--none');\n item.previousElementSibling.classList.remove('js-active');\n }\n });\n });\n}\n","document.addEventListener(\"click\", function(e)\n{\n var target = e.target;\n\n if(target == null || !target.classList.contains(\"js-parameter-toggle\"))\n return;\n\n target.classList.toggle(\"js-active\");\n\n const targetElement = document.querySelector(target.dataset.open);\n\n targetElement.classList.toggle('k-d-none');\n});\n","function setCookie(cname, cvalue, exdays)\r\n{\r\n const d = new Date();\r\n d.setTime(d.getTime() + (exdays*24*60*60*1000));\r\n\r\n let expires = \"expires=\"+ d.toUTCString();\r\n\r\n document.cookie = cname + \"=\" + cvalue + \";\" + expires + \";path=/\";\r\n }\r\n\r\n function getCookie(cname)\r\n {\r\n let name = cname + \"=\";\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(';');\r\n\r\n for(let i = 0; i .k-input--search\");\r\n const filterShowAll = document.querySelectorAll(\".k-filter__btn-show\");\r\n\r\n if(filterToggles)\r\n {\r\n [...filterToggles].forEach(function(item)\r\n {\r\n item.addEventListener(\"click\", function(e)\r\n {\r\n var filterCookie = getCookie(\"filterToggle\");\r\n\r\n var filters = [];\r\n\r\n if(filterCookie != \"\")\r\n filters = JSON.parse(filterCookie);\r\n\r\n if(filters.includes(this.dataset.id))\r\n {\r\n filters.splice(filters.indexOf(this.dataset.id), 1);\r\n\r\n if(this.previousElementSibling.tagName === \"SPAN\")\r\n this.previousElementSibling.classList.add(\"k-d-none\");\r\n }\r\n else\r\n {\r\n filters.push(this.dataset.id);\r\n\r\n if(this.previousElementSibling.tagName === \"SPAN\" && this.previousElementSibling.innerText != \"0\")\r\n this.previousElementSibling.classList.remove(\"k-d-none\");\r\n }\r\n\r\n setCookie(\"filterToggle\", JSON.stringify(filters), 365);\r\n });\r\n });\r\n }\r\n\r\n if(filterSearch)\r\n {\r\n [...filterSearch].forEach(function(item)\r\n {\r\n item.addEventListener(\"keyup\", function(e)\r\n {\r\n var value = this.value;\r\n\r\n [...this.parentElement.nextElementSibling.childNodes].forEach(function(element)\r\n {\r\n if(element.tagName !== \"LI\")\r\n return;\r\n\r\n const childs = element.querySelectorAll(\":scope .k-checkbox__label\");\r\n\r\n [...childs].forEach(function(child)\r\n {\r\n let parent = child.parentElement;\r\n\r\n if(child.innerText.toLowerCase().includes(value.toLowerCase()))\r\n {\r\n while(parent.tagName !== \"LI\")\r\n parent = parent.parentElement;\r\n\r\n parent.classList.remove(\"k-d-none\");\r\n }\r\n else\r\n {\r\n while(parent.tagName !== \"LI\")\r\n parent = parent.parentElement;\r\n\r\n parent.classList.add(\"k-d-none\");\r\n }\r\n });\r\n })\r\n });\r\n })\r\n }\r\n\r\n if(filterShowAll)\r\n {\r\n [...filterShowAll].forEach(function(item)\r\n {\r\n item.addEventListener(\"click\", function(e)\r\n {\r\n var filterCookie = getCookie(\"filterShowAll\");\r\n\r\n var showAll = [];\r\n\r\n if(filterCookie != \"\")\r\n showALl = JSON.parse(filterCookie);\r\n\r\n if(!showAll.includes(this.dataset.filterId))\r\n showAll.push(this.dataset.filterId);\r\n\r\n setCookie(\"filterShowAll\", JSON.stringify(showAll), 365);\r\n });\r\n })\r\n }","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.AWN=e():t.AWN=e()}(self,(function(){return(()=>{\"use strict\";var t={d:(e,n)=>{for(var o in n)t.o(n,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})}},e={};function n(t){return n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n(t)}function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function r(t,e){for(var n=0;nB});var i={maxNotifications:10,animationDuration:300,position:\"bottom-right\",labels:{tip:\"Tip\",info:\"Info\",success:\"Success\",warning:\"Attention\",alert:\"Error\",async:\"Loading\",confirm:\"Confirmation required\",confirmOk:\"OK\",confirmCancel:\"Cancel\"},icons:{tip:\"question-circle\",info:\"info-circle\",success:\"check-circle\",warning:\"exclamation-circle\",alert:\"exclamation-triangle\",async:\"cog fa-spin\",confirm:\"exclamation-triangle\",prefix:\"\",enabled:!0},replacements:{tip:null,info:null,success:null,warning:null,alert:null,async:null,\"async-block\":null,modal:null,confirm:null,general:{\"\": \"\"\n }\n },\n messages: {\n tip: \"\",\n info: \"\",\n success: \"Action has been succeeded\",\n warning: \"\",\n alert: \"Action has been failed\",\n confirm: \"This action can't be undone. Continue?\",\n async: \"Please, wait...\",\n \"async-block\": \"Loading\"\n },\n formatError(err) {\n if (err.response) {\n if (!err.response.data) return '500 API Server Error'\n if (err.response.data.errors) {\n return err.response.data.errors.map(o => o.detail).join('
')\n }\n if (err.response.statusText) {\n return `${err.response.status} ${err.response.statusText}: ${err.response.data}`\n }\n }\n if (err.message) return err.message\n return err\n },\n durations: {\n global: 5000,\n success: null,\n info: null,\n tip: null,\n warning: null,\n alert: null\n },\n minDurations: {\n async: 1000,\n \"async-block\": 1000\n },\n}\nexport default class Options {\n constructor(options = {}, global = defaults) {\n Object.assign(this, this.defaultsDeep(global, options))\n }\n\n icon(type) {\n if (this.icons.enabled) return `${this.icons.prefix}${this.icons[type]}${this.icons.suffix}`\n return ''\n }\n\n label(type) {\n return this.labels[type]\n }\n\n duration(type) {\n let duration = this.durations[type]\n return duration === null ? this.durations.global : duration\n }\n\n toSecs(value) {\n return `${value / 1000}s`\n }\n\n applyReplacements(str, type) {\n if (!str) return this.messages[type] || \"\"\n for (const n of ['general', type]) {\n if (!this.replacements[n]) continue\n for (const k in this.replacements[n]) {\n str = str.replace(k, this.replacements[n][k])\n }\n }\n return str\n }\n\n override(options) {\n if (options) return new Options(options, this)\n return this\n }\n\n defaultsDeep(defaults, overrides) {\n let result = {}\n for (const k in defaults) {\n if (overrides.hasOwnProperty(k)) {\n result[k] = typeof defaults[k] === \"object\" && defaults[k] !== null ? this.defaultsDeep(defaults[k], overrides[k]) : overrides[k]\n } else {\n result[k] = defaults[k]\n }\n }\n return result\n }\n}\n","const libName = \"awn\"\nconst prefix = {\n popup: `${libName}-popup`,\n toast: `${libName}-toast`,\n btn: `${libName}-btn`,\n confirm: `${libName}-confirm`\n}\n\n// Constants for toasts\nexport const tConsts = {\n prefix: prefix.toast,\n klass: {\n label: `${prefix.toast}-label`,\n content: `${prefix.toast}-content`,\n icon: `${prefix.toast}-icon`,\n progressBar: `${prefix.toast}-progress-bar`,\n progressBarPause: `${prefix.toast}-progress-bar-paused`\n },\n ids: {\n container: `${prefix.toast}-container`\n }\n}\n\n// Constants for popups\nexport const mConsts = {\n prefix: prefix.popup,\n klass: {\n buttons: `${libName}-buttons`,\n button: prefix.btn,\n successBtn: `${prefix.btn}-success`,\n cancelBtn: `${prefix.btn}-cancel`,\n title: `${prefix.popup}-title`,\n body: `${prefix.popup}-body`,\n content: `${prefix.popup}-content`,\n dotAnimation: `${prefix.popup}-loading-dots`\n },\n ids: {\n wrapper: `${prefix.popup}-wrapper`,\n confirmOk: `${prefix.confirm}-ok`,\n confirmCancel: `${prefix.confirm}-cancel`\n }\n}\n\nexport const eConsts = {\n klass: {\n hiding: `${libName}-hiding`\n },\n lib: libName\n}\n","import {\n eConsts\n} from \"./constants\"\n\nexport default class {\n constructor(parent, id, klass, style, options) {\n this.newNode = document.createElement('div')\n if (id) this.newNode.id = id\n if (klass) this.newNode.className = klass\n if (style) this.newNode.style.cssText = style\n this.parent = parent\n this.options = options\n }\n beforeInsert() {}\n afterInsert() {}\n insert() {\n this.beforeInsert()\n this.el = this.parent.appendChild(this.newNode)\n this.afterInsert()\n return this\n }\n\n replace(el) {\n if (!this.getElement()) return\n return this.beforeDelete().then(() => {\n this.updateType(el.type)\n this.parent.replaceChild(el.newNode, this.el)\n this.el = this.getElement(el.newNode)\n this.afterInsert()\n return this\n })\n }\n\n beforeDelete(el = this.el) {\n let timeLeft = 0\n if (this.start) {\n timeLeft = this.options.minDurations[this.type] + this.start - Date.now()\n if (timeLeft < 0) timeLeft = 0\n }\n\n return new Promise(resolve => {\n setTimeout(() => {\n el.classList.add(eConsts.klass.hiding)\n setTimeout(resolve, this.options.animationDuration)\n }, timeLeft)\n })\n }\n\n delete(el = this.el) {\n if (!this.getElement(el)) return null\n return this.beforeDelete(el).then(() => {\n el.remove()\n this.afterDelete()\n })\n }\n afterDelete() {}\n\n getElement(el = this.el) {\n if (!el) return null\n return document.getElementById(el.id)\n }\n\n addEvent(name, func) {\n this.el.addEventListener(name, func)\n }\n\n toggleClass(klass) {\n this.el.classList.toggle(klass)\n }\n updateType(type) {\n this.type = type\n this.duration = this.options.duration(this.type)\n }\n}","export default class {\n constructor(callback, delay) {\n this.callback = callback\n this.remaining = delay\n this.resume()\n }\n pause() {\n this.paused = true\n window.clearTimeout(this.timerId)\n this.remaining -= new Date() - this.start\n }\n resume() {\n this.paused = false\n this.start = new Date()\n window.clearTimeout(this.timerId)\n this.timerId = window.setTimeout(() => {\n window.clearTimeout(this.timerId)\n this.callback()\n }, this.remaining)\n }\n toggle() {\n if (this.paused) this.resume()\n else this.pause()\n }\n}\n","import Elem from \"./elem\"\nimport Timer from \"./timer\"\n\nimport {\n tConsts,\n eConsts\n} from \"./constants\"\n\nexport default class extends Elem {\n constructor(msg, type, options, parent) {\n super(\n parent,\n `${tConsts.prefix}-${Math.floor(Date.now() - Math.random() * 100)}`,\n `${tConsts.prefix} ${tConsts.prefix}-${type}`,\n `animation-duration: ${options.toSecs(options.animationDuration)};`,\n options\n )\n this.updateType(type)\n this.setInnerHtml(msg)\n }\n\n setInnerHtml(html) {\n if (this.type === 'alert' && html) html = this.options.formatError(html)\n html = this.options.applyReplacements(html, this.type)\n this.newNode.innerHTML = `
${this.progressBar}${this.label}
${html}
${this.options.icon(this.type)}
`\n }\n\n beforeInsert() {\n if (this.parent.childElementCount >= this.options.maxNotifications) {\n let elements = Array.from(this.parent.getElementsByClassName(tConsts.prefix))\n this.delete(elements.find(e => !this.isDeleted(e)))\n }\n }\n afterInsert() {\n if (this.type == \"async\") return this.start = Date.now()\n\n this.addEvent(\"click\", (e) =>\n {\n debugger;\n\n this.delete();\n });\n\n if (this.duration <= 0) return\n this.timer = new Timer(() => this.delete(), this.duration)\n for (const e of [\"mouseenter\", \"mouseleave\"]) {\n this.addEvent(e, () => {\n if (this.isDeleted()) return\n this.toggleClass(tConsts.klass.progressBarPause)\n this.timer.toggle()\n })\n }\n }\n\n isDeleted(el = this.el) {\n return el.classList.contains(eConsts.klass.hiding)\n }\n get progressBar() {\n if (this.duration <= 0 || this.type === 'async') return \"\"\n return `
`\n }\n get label() {\n return `${this.options.label(this.type)}`\n }\n\n}\n","import Elem from \"./elem\"\nimport {\n mConsts\n} from \"./constants\"\n\nexport default class extends Elem {\n constructor(msg, type = 'modal', options, onOk, onCancel) {\n let animationDuration = `animation-duration: ${options.toSecs(options.animationDuration)};`\n super(document.body, mConsts.ids.wrapper, null, animationDuration, options)\n this[mConsts.ids.confirmOk] = onOk\n this[mConsts.ids.confirmCancel] = onCancel\n this.className = `${mConsts.prefix}-${type}`\n if (!['confirm', 'async-block', 'modal'].includes(type)) type = 'modal'\n this.updateType(type)\n this.setInnerHtml(msg)\n this.insert()\n }\n\n setInnerHtml(html) {\n let innerHTML = this.options.applyReplacements(html, this.type)\n switch (this.type) {\n case \"confirm\":\n let buttons = [``]\n if (this[mConsts.ids.confirmCancel] !== false) {\n buttons.push(``)\n }\n innerHTML = `${this.options.icon(this.type)}
${this.options.label(this.type)}
${innerHTML}
${buttons.join('')}
`\n break\n case \"async-block\":\n innerHTML = `${innerHTML}
`\n }\n this.newNode.innerHTML = `
${innerHTML}
`\n }\n\n keyupListener(e) {\n if (this.type === 'async-block') return e.preventDefault()\n switch (e.code) {\n case 'Escape':\n e.preventDefault()\n this.delete()\n case 'Tab':\n e.preventDefault()\n if (this.type !== 'confirm' || this[mConsts.ids.confirmCancel] === false) return true\n let next = this.okBtn\n if (e.shiftKey) {\n if (document.activeElement.id == mConsts.ids.confirmOk) next = this.cancelBtn\n } else if (document.activeElement.id !== mConsts.ids.confirmCancel) next = this.cancelBtn\n next.focus()\n }\n }\n afterInsert() {\n this.listener = e => this.keyupListener(e)\n window.addEventListener(\"keydown\", this.listener)\n switch (this.type) {\n case 'async-block':\n this.start = Date.now()\n break\n case 'confirm':\n this.okBtn.focus()\n this.addEvent(\"click\", e => {\n if (e.target.nodeName !== \"BUTTON\") return false\n this.delete()\n if (this[e.target.id]) this[e.target.id]()\n })\n break\n default:\n document.activeElement.blur()\n this.addEvent(\"click\", e => {\n if (e.target.id === this.newNode.id) this.delete()\n })\n }\n }\n\n afterDelete() {\n window.removeEventListener(\"keydown\", this.listener)\n }\n\n get okBtn() {\n return document.getElementById(mConsts.ids.confirmOk)\n }\n\n get cancelBtn() {\n return document.getElementById(mConsts.ids.confirmCancel)\n }\n}\n","import Options from \"./options\"\nimport Toast from \"./toast\"\nimport Popup from \"./popup\"\nimport Elem from \"./elem\"\n\nimport {\n tConsts\n} from \"./constants\"\n\nexport default class Notifier {\n constructor(options = {}) {\n this.options = new Options(options)\n }\n\n tip(msg, options) {\n return this._addToast(msg, \"tip\", options).el\n }\n\n info(msg, options) {\n return this._addToast(msg, \"info\", options).el\n }\n\n success(msg, options) {\n return this._addToast(msg, \"success\", options).el\n }\n\n warning(msg, options) {\n return this._addToast(msg, \"warning\", options).el\n }\n\n alert(msg, options) {\n return this._addToast(msg, \"alert\", options).el\n }\n\n async (promise, onResolve, onReject, msg, options) {\n let asyncToast = this._addToast(msg, \"async\", options)\n return this._afterAsync(promise, onResolve, onReject, options, asyncToast)\n }\n\n confirm(msg, onOk, onCancel, options) {\n return this._addPopup(msg, \"confirm\", options, onOk, onCancel)\n }\n\n asyncBlock(promise, onResolve, onReject, msg, options) {\n let asyncBlock = this._addPopup(msg, \"async-block\", options)\n return this._afterAsync(promise, onResolve, onReject, options, asyncBlock)\n }\n\n modal(msg, className, options) {\n return this._addPopup(msg, className, options)\n }\n\n closeToasts() {\n let c = this.container\n while (c.firstChild) {\n c.removeChild(c.firstChild)\n }\n }\n\n // Tools\n _addPopup(msg, className, options, onOk, onCancel) {\n return new Popup(msg, className, this.options.override(options), onOk, onCancel)\n }\n\n _addToast(msg, type, options, old) {\n options = this.options.override(options)\n let newToast = new Toast(msg, type, options, this.container)\n if (old) {\n if (old instanceof Popup) return old.delete().then(() => newToast.insert())\n let i = old.replace(newToast)\n return i\n }\n return newToast.insert()\n }\n\n _afterAsync(promise, onResolve, onReject, options, oldElement) {\n return promise.then(\n this._responseHandler(onResolve, \"success\", options, oldElement),\n this._responseHandler(onReject, \"alert\", options, oldElement)\n )\n }\n\n _responseHandler(payload, toastName, options, oldElement) {\n return result => {\n switch (typeof payload) {\n case 'undefined':\n case 'string':\n let msg = toastName === 'alert' ? payload || result : payload\n this._addToast(msg, toastName, options, oldElement)\n break\n default:\n oldElement.delete().then(() => {\n if (payload) payload(result)\n })\n }\n }\n }\n\n _createContainer() {\n return new Elem(document.body, tConsts.ids.container, `awn-${this.options.position}`).insert().el\n }\n\n get container() {\n return document.getElementById(tConsts.ids.container) || this._createContainer()\n }\n}\n","const notificationBanner = document.querySelectorAll('.js-notification-banner');\nconst menuHamburger = document.querySelector('.js-hamburger');\nconst closeBtn = document.querySelectorAll('.js-close-btn');\n\nif (notificationBanner) {\n menuHamburger.addEventListener('click', () => {\n [...notificationBanner].forEach((item) =>\n {\n item.classList.toggle('js-menu-active');\n });\n });\n}\n\nif (notificationBanner) {\n [...closeBtn].forEach((item) =>\n {\n item.addEventListener(\"click\", event =>\n {\n item.parentNode.classList.add(\"js-deactive\");\n });\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","export function getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n \n return 'tns' + window.tnsId;\n}","// create and append style sheet\nexport function createStyleSheet (media, nonce) {\n // Create the