{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/flatpickr/dist/l10n/ar.js","webpack:///./app/javascript/packs/lib/utils.js","webpack:///./node_modules/choices.js/public/assets/scripts/choices.js","webpack:///./app/javascript/packs/lib/browser.js","webpack:///./app/javascript/packs/lib/long-article.js","webpack:///./app/javascript/packs/lib/share.js","webpack:///./app/javascript/packs/lib/side-note.js","webpack:///./app/javascript/packs/lib/foot-note.js","webpack:///./app/javascript/packs/lib/menu.js","webpack:///./app/javascript/packs/lib/cookies.js","webpack:///./app/javascript/packs/lib/oped.js","webpack:///./app/javascript/packs/lib/carousel.js","webpack:///./app/javascript/packs/lib/choice.js","webpack:///./app/javascript/packs/lib/progress-bar.js","webpack:///./app/javascript/packs/lib/gl-donations.js","webpack:///./app/javascript/packs/lib/carousel-tray.js","webpack:///./app/javascript/packs/lib/searchresponsive.js","webpack:///./app/javascript/packs/lib/series-carousel.js","webpack:///./node_modules/flatpickr/dist/esm/types/options.js","webpack:///./node_modules/flatpickr/dist/esm/l10n/default.js","webpack:///./node_modules/flatpickr/dist/esm/utils/index.js","webpack:///./node_modules/flatpickr/dist/esm/utils/dom.js","webpack:///./node_modules/flatpickr/dist/esm/utils/formatting.js","webpack:///./node_modules/flatpickr/dist/esm/utils/dates.js","webpack:///./node_modules/flatpickr/dist/esm/index.js","webpack:///./app/javascript/packs/lib/date-picker.js","webpack:///./node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack:///./node_modules/get-size/get-size.js","webpack:///./node_modules/ev-emitter/ev-emitter.js","webpack:///./node_modules/masonry-layout/masonry.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/outlayer/outlayer.js","webpack:///./node_modules/fizzy-ui-utils/utils.js","webpack:///./node_modules/desandro-matches-selector/matches-selector.js","webpack:///./node_modules/outlayer/item.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","fp","window","undefined","flatpickr","l10ns","Arabic","weekdays","shorthand","longhand","months","rangeSeparator","ar","default","factory","getArrayMax","array","reduce","a","b","Math","max","__webpack_modules__","__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","addGroup","ADD_GROUP","highlightItem","removeItem","addItem","choiceId","ADD_ITEM","REMOVE_ITEM","highlighted","HIGHLIGHT_ITEM","setIsLoading","resetTo","clearAll","CLEAR_ALL","state","RESET_TO","isLoading","SET_IS_LOADING","__spreadArray","this","to","from","pack","arguments","length","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","document","documentElement","style","USER_DEFAULTS","Choices","element","userConfig","_this","allowHTML","console","warn","config","all","DEFAULT_CONFIG","defaults","options","arrayMerge","_","sourceArray","invalidConfigOptions","diff","join","passedElement","querySelector","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","forEach","push","innerHTML","selected","parentNode","hasAttribute","dataset","_render","_onFocus","_onBlur","_onKeyUp","_onKeyDown","_onClick","_onTouchMove","_onTouchEnd","_onMouseDown","_onMouseOver","_onFormReset","_onSelectKey","_onEnterKey","_onEscapeKey","_onDirectionKey","_onDeleteKey","isActive","silent","init","preventExtensions","templates","configurable","_createTemplates","_createElements","_createStructure","subscribe","_addEventListeners","addItems","disable","callbackOnInit","destroy","_removeEventListeners","reveal","containerOuter","unwrap","clearStore","enable","isDisabled","input","item","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","open","distanceFromTopWindow","focus","hideDropdown","preventInputBlur","hide","close","removeActiveDescendant","blur","getValue","valueOnly","values","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","addEventListener","passive","form","addEventListeners","removeEventListener","removeEventListeners","event","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","target","backKey","deleteKey","outerHTML","userHasRemovedValue","canReactivateChoices","canSearch","rawValue","ctrlKey","metaKey","activeElement","enterKey","targetWasButton","preventDefault","highlightedChoice","highlightedState","downKey","pageUpKey","pageDownKey","directionInt","selectableChoiceIdentifier","nextEl","currentEl","getAdjacentEl","isScrolledIntoView","scrollToChildElement","touches","contains","containerInner","stopPropagation","HTMLElement","firstChoice","firstElementChild","isOnScrollbar","offsetX","offsetWidth","offsetLeft","closest","shiftKey","removeFocusState","addFocusState","hasHighlightedItems_1","el","querySelectorAll","passedEl","classList","remove","setAttribute","indexOf","add","highlightChoice","setActiveDescendant","_d","_e","_f","_g","passedValue","passedLabel","passedOptionId","prependValue","toString","appendValue","_h","choiceLabel","choiceElementId","isType","getElementsByTagName","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","tagName","hasSelectedChoice","firstEnabledChoiceIndex","findIndex","index","string","getType","foundChoice","valueComparer","text","placeholderValue","isOpen","isFlipped","shouldFlip","dropdownPos","matchMedia","matches","activeDescendantID","removeAttribute","openState","flippedState","focusState","disabledState","removeChild","loadingState","getBoundingClientRect","bottom","selector","activeState","dropdown_1","container_1","input_1","list_1","wrapped_input_1","wrapped_select_1","isEqualNode","_onPaste","_onInput","set","sanitise","minWidth","width","scrollPos","scrollTop","height","offsetHeight","node","hasChildNodes","listHeight","listScrollPosition","elementHeight","elementPos","offsetTop","destination","_animateScroll","_scrollDown","strength","easing","distance","_scrollUp","SCROLLING_SPEED","choiceListScrollTop","continueAnimation","WrappedElement","hidden","tabIndex","origStyle","getAttribute","eventType","dispatchEvent","extendStatics","__extends","setPrototypeOf","__proto__","__","constructor","_super","optionData","appendDocFragment","DEFAULT_CLASSNAMES","inputCloned","list","listItems","listSingle","listDropdown","itemSelectable","itemDisabled","groupHeading","button","selectedState","noResults","noChoices","sortByAlpha","value1","value2","includeScore","__createBinding","k","k2","__exportStar","tmpEl","cloneObject","generateChars","getRandomNumber","min","prefix","replace","obj","wrapper","createElement","nextSibling","startEl","prop","sibling","parent","str","cleanedInput","firldChild","children","label2","localeCompare","sensitivity","ignorePunctuation","numeric","score","scoreA","customArgs","CustomEvent","detail","bubbles","cancelable","JSON","parse","stringify","aKeys","bKeys","action","addChoiceAction","addItemAction_1","removeItemAction_1","filterChoicesAction_1","activateChoicesAction_1","addGroupAction","redux_1","loading_1","loading","appReducer","combineReducers","passedState","addItemAction","highlightItemAction_1","index_1","Store","createStore","__REDUX_DEVTOOLS_EXTENSION__","onChange","getState","selectableChoices","reverse","hasActiveOptions","isSelectElement","isSelectOneElement","passedElementType","div","className","isPlaceholder","deletable","REMOVE_ITEM_TEXT","removeButton","choiceGroup","selectText","choiceDisabled","choiceSelectable","inp","autocomplete","autocapitalize","spellcheck","innerText","classes","opt","Option","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","__webpack_exports__","getTag","Fuse","INFINITY","result","baseToString","isString","isNumber","isBoolean","isObject","isObjectLike","isDefined","isBlank","MISSING_KEY_PROPERTY","INVALID_KEY_WEIGHT_VALUE","hasOwn","KeyStore","_keys","_keyMap","totalWeight","createKey","weight","keyId","toJSON","path","src","createKeyPath","createKeyId","Config","isCaseSensitive","sortFn","idx","findAllMatches","minMatchCharLength","location","threshold","useExtendedSearch","getFn","arr","deepGet","len","ignoreLocation","ignoreFieldNorm","fieldNormWeight","SPACE","FuseIndex","norm","mantissa","cache","Map","pow","numTokens","match","has","parseFloat","round","isCreated","setIndexRecords","setSources","docs","records","setKeys","_keysMap","doc","docIndex","_addString","_addObject","size","removeAt","splice","getValueForItemAtKeyId","record","v","$","keyIndex","subRecords","stack","nestedArrIndex","pop","subRecord","createIndex","myIndex","computeScore$1","pattern","errors","currentLocation","expectedLocation","accuracy","proximity","abs","MAX_BITS","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","searchIn","allIndices","totalScore","hasMatches","BaseMatch","isMultiMatch","getMatch","multiRegex","isSingleMatch","singleRegex","exp","FuzzyMatch","super","_bitapSearch","IncludeMatch","searchers","startsWith","endsWith","searchersLen","SPACE_RE","MultiMatchSet","Set","ExtendedSearch","query","queryItem","found","searcher","token","parseQuery","condition","numMatches","qLen","pLen","registeredSearchers","createSearcher","searcherClass","LogicalOperator","KeyType","isExpression","convertToExplicit","auto","isQueryPath","isPath","isLeaf","LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY","operator","transformMatches","refIndex","transformScore","_keyStore","setCollection","_docs","_myIndex","predicate","getIndex","limit","_searchStringList","_searchObjectList","_searchLogical","Number","EPSILON","computeScore","transformers","transformer","format","expression","evaluate","_findMatches","res","child","resultMap","expResults","version","parseIndex","register","_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","e","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","tempVersionOffset","tempVersion","navUserAgent","navigator","userAgent","isSafari","appVersion","isIE","documentMode","warnOldBrowser","alert","timeout","calculatePullOverSideLength","pullover","sideLength","setProperty","setupPullovers","clearTimeout","setTimeout","share","checked","notes","container","notesListTop","top","easeOutTableOfContents","shareButton","title","url","toggleSideNote","base","trigger","rest","toggle","sideNote","toggleFootNote","footNote","windowClick","body","hasAccepted","cookie","parts","decodeURIComponent","cookiesEl","accept","days","expires","now","toUTCString","encodeURIComponent","setCookie","display","tags","carousel","content","page","transition","heights","clientHeight","getElementsByClassName","seperator","setSeperatorHeight","choicesInstances","setup","instance","sourceElement","selectedValue","counterpartSelector","counterpartElement","counterpartInstance","syncSelections","progressBar","toc","expand","article","totalHeight","innerHeight","progress","gi","vi","g","oo","handleClick","fill","q","glObjName","async","orgId","setupTrayCarousel","slider","startX","scrollLeft","isDown","pageX","walk","setupSearchResponsive","filterModal","getElementById","filterBtn","filterSpans","onclick","span","clearButtons","choiceElements","datePickerElements","filterBtnSVGPath","checkSelections","color","stroke","border","background","boxShadow","setupSeriesCarousel","dotsContainer","touchStartX","touchEndX","dot","dots","updateDots","previousControl","nextControl","stopInactiveVideos","video","play","pause","currentTime","clientX","changedTouches","handleSwipe","HOOKS","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","animate","ariaDateFormat","autoFillDefaultTime","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disableMobile","enableSeconds","enableTime","errorHandler","getWeek","givenDate","date","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","monthSelectorType","nextArrow","noCalendar","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","english","daysInMonth","firstDayOfWeek","ordinal","nth","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","number","bool","debounce","fn","wait","arrayify","toggleClass","elem","tag","textContent","clearNode","findParent","createNumberInput","inputClassName","opts","numInput","arrowUp","arrowDown","getEventTarget","composedPath","doNothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","G","hour","H","J","day","K","getHours","M","shortMonth","S","seconds","setSeconds","U","unixSeconds","W","weekNum","weekNumber","Y","year","setFullYear","Z","ISODate","h","minutes","setMinutes","month","u","unixMillSeconds","w","y","tokenRegex","toISOString","getMonth","getSeconds","getMinutes","createDateFormatter","l10n","isMobile","frmt","overrideLocale","formatDate","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","toFixed","datestr","parseDate","matched","ops","matchIndex","regexStr","isBackSlash","escaped","exec","isNaN","compareDates","date1","date2","isBetween","ts","ts1","ts2","duration","DAY","getDefaultHours","hours","minDate","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","DEBOUNCED_CHANGE_MS","FlatpickrInstance","instanceConfig","self","defaultConfig","bindToInstance","setCalendarWidth","calendarContainer","visibility","daysContainer","daysWidth","weekWrapper","removeProperty","updateTime","selectedDates","defaultDate","getMilliseconds","latestSelectedDateObj","isKeyDown","eventTarget","step","curValue","delta","which","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","secondElement","limitMinHours","minTime","minDateHasTime","maxTime","maxDateHasTime","setHoursFromDate","onYearInput","changeYear","handler","ev","_handlers","triggerChange","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","message","buildMonthSwitch","redraw","timeIncrement","inputElem","createEvent","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","onMouseOver","getFirstAvailableDay","startMonth","endMonth","endIndex","focusOnDay","current","offset","dayFocused","isInView","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","utils","getDaysInMonth","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","buildDays","frag","shouldBuildMonth","monthsDropdownContainer","buildMonth","monthNavFragment","monthElement","selectedMonth","yearInput","tabindex","yearElement","buildMonths","monthNav","prevMonthNav","yearElements","monthElements","nextMonthNav","buildWeekdays","weekdayContainer","updateWeekdays","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","isCalendarElem","appendTo","documentClick","isCalendarElement","isInput","lostFocus","relatedTarget","isIgnored","timeContainer","newYear","newYearNum","isNewYear","dateToCheck","parsed","onBlur","allowKeydown","allowInlineKeydown","isTimeObj","focusAndClose","selectDate","currentYearElement","elems","pluginElements","x","hoverDate","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","dayElem","timestamp","outOfRange","onResize","positionCalendar","minMaxDateSetter","inverseDateObj","getInputElem","setupLocale","customPositionElement","_positionElement","calendarHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","showOnTop","pageYOffset","left","pageXOffset","isCenter","isRight","right","rightMost","centerMost","editableSheet","styleSheets","sheet","cssRules","head","createStyleSheet","getDocumentStyleSheet","bodyWidth","centerLeft","centerBefore","centerAfter","centerIndex","centerStyle","insertRule","msMaxTouchPoints","selectedDate","shouldChangeMonth","selectedIndex","single","range","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","lastChild","_type","click","wasOpen","select","CALLBACKS","setSelectedDate","inputDate","dates","parseDateRules","rule","hooks","initEvent","getDateStr","dObj","mobileFormatStr","onMonthNavClick","isPrevMonth","isNextMonth","boolOpts","formats","_enable","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","parseConfig","nodeName","required","setupInputs","preloadedDate","setupDates","yr","__hidePrevMonthArrow","__hideNextMonthArrow","innerContainer","buildWeeks","rContainer","separator","hourInput","minuteInput","military2ampm","secondInput","buildTime","customAppend","nodeType","build","evt","inputType","defaultValue","setupMobile","debouncedResize","ontouchstart","capture","selText","bindEvents","_flatpickr","nodeList","nodes","instances","HTMLCollection","NodeList","Node","en","localize","setDefaults","jQuery","fp_incr","pickerDesktop","pickerMobile","inputDesktop","inputMobile","clearDesktop","clearMobile","checkClearVisibility","clearButton","syncDates","instanceDesktop","instanceMobile","getStyleSize","num","noop","logError","measurements","measurementsLength","getZeroSize","innerWidth","outerWidth","outerHeight","getStyle","isBoxSizeOuter","isSetup","padding","borderStyle","borderWidth","boxSizing","getSize","isBorderBox","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","EvEmitter","on","eventName","events","_events","once","onceEvents","_onceEvents","off","emitEvent","onceListeners","allOff","Outlayer","Masonry","compatOptions","fitWidth","_resetLayout","_getMeasurement","measureColumns","colYs","cols","maxY","horizontalColIndex","getContainerWidth","columnWidth","firstItem","firstItemElem","containerWidth","gutter","excess","_getOption","_getItemLayoutPosition","colSpan","colPosition","horizontalOrder","col","setHeight","setMax","_getTopColPosition","colGroup","_getTopColGroup","minimumY","groupCount","_getColGroupY","groupColYs","_getHorizontalColPosition","hasSize","_manageStamp","stamp","stampSize","_getElementOffset","firstX","lastX","firstCol","lastCol","stampMaxY","_getContainerSize","_getContainerFitWidth","unusedCols","needsResizeLayout","previousWidth","startApp","setupMenu","setupCookies","setupChoice","setupDonation","setupDatePicker","setupCarousel","setupProgressBar","setupShare","setupLongArticle","setupOped","setupSideNote","setupFootNote","hash","grid","itemSelector","percentPosition","originLeft","readyState","btn","modalId","modal","Item","GUID","queryElement","getQueryElement","$element","extend","outlayerGUID","_create","layout","namespace","containerStyle","initLayout","originTop","resize","resizeContainer","transitionDuration","hiddenStyle","opacity","transform","visibleStyle","subclass","Parent","SubClass","oldOption","horizontal","layoutInstant","reloadItems","stamps","bindResize","_itemize","itemElems","_filterFindItemElements","filterFindElements","getItemElements","_manageStamps","isInstant","_isLayoutInited","layoutItems","_init","_getItemsForLayout","_layoutItems","_postLayout","_emitCompleteOnItems","queue","isLayoutInstant","_processLayoutQueue","updateStagger","_positionItem","stagger","goTo","moveTo","_setContainerMeasure","measure","isWidth","elemSize","onComplete","count","doneCount","tick","emitArgs","$event","Event","ignore","getItem","unignore","_find","unstamp","removeFrom","makeArray","_getBoundingRect","boundingRect","_boundingRect","thisRect","handleEvent","isResizeBound","unbindResize","onresize","debounceMethod","appended","prepended","previousItems","revealItemElements","getItems","hideItemElements","removeData","Layout","htmlInit","bridget","msUnits","ms","time","unit","matchesSelector","arraySlice","ary","getParent","method","ffElems","childElems","_class","methodName","timeoutName","docReady","callback","toDashed","$1","$2","WidgetClass","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","dataOptionsAttr","attr","matchesMethod","ElemProto","Element","prefixes","isEmptyObj","docElemStyle","transitionProperty","transformProperty","transitionEndEvent","WebkitTransition","vendorProperties","transitionDelay","toDashedAll","_transn","ingProperties","clean","onEnd","css","elemStyle","getPosition","isOriginLeft","isOriginTop","xValue","yValue","layoutSize","layoutPosition","xPadding","xProperty","xResetProperty","getXValue","yPadding","yProperty","yResetProperty","getYValue","isHorizontal","_transitionTo","curX","curY","didNotMove","setPosition","isTransitioning","transX","transY","transitionStyle","getTranslate","onTransitionEnd","isCleaning","_nonTransition","_removeStyles","_transition","enableTransition","transitionProps","staggerDelay","onwebkitTransitionEnd","ontransitionend","onotransitionend","dashedVendorProperties","propertyName","disableTransition","removeTransitionStyles","cleanStyle","cleanTransitionStyle","delay","removeElem","isHidden","getHideRevealTransitionEndProperty","onRevealTransitionEnd","styleProperty","optionStyle","onHideTransitionEnd"],"mappings":"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","file":"js/application-2e3642ce86b99617d030.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 = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 23);\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ar = {}));\n}(this, (function (exports) { 'use strict';\n\n var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {},\n };\n var Arabic = {\n weekdays: {\n shorthand: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\"],\n longhand: [\n \"الأحد\",\n \"الاثنين\",\n \"الثلاثاء\",\n \"الأربعاء\",\n \"الخميس\",\n \"الجمعة\",\n \"السبت\",\n ],\n },\n months: {\n shorthand: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"],\n longhand: [\n \"يناير\",\n \"فبراير\",\n \"مارس\",\n \"أبريل\",\n \"مايو\",\n \"يونيو\",\n \"يوليو\",\n \"أغسطس\",\n \"سبتمبر\",\n \"أكتوبر\",\n \"نوفمبر\",\n \"ديسمبر\",\n ],\n },\n rangeSeparator: \" - \",\n };\n fp.l10ns.ar = Arabic;\n var ar = fp.l10ns;\n\n exports.Arabic = Arabic;\n exports.default = ar;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","export function getArrayMax(array) {\n return array.reduce((a, b) => {\n return Math.max(a, b);\n });\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});","let navUserAgent = navigator.userAgent;\nlet isSafari = false;\nlet version = '' + parseFloat(navigator.appVersion);\nlet tempVersionOffset, tempVersion;\nlet isIE = /*@cc_on!@*/false || !!document.documentMode;\n\nif ((tempVersionOffset = navUserAgent.indexOf('Safari')) != -1) {\n isSafari = true;\n version = navUserAgent.substring(tempVersionOffset + 7);\n\n if ((tempVersionOffset = navUserAgent.indexOf('Version')) != -1) {\n version = navUserAgent.substring(tempVersionOffset + 8);\n }\n\n if ((tempVersion = version.indexOf(' ')) != -1) {\n version = version.substring(0, tempVersion);\n }\n}\n\nexport function warnOldBrowser() {\n if (isIE || (isSafari && +version.split('.')[0] <= 10)) {\n alert('الرجاء تحديث المتصفّح لاستخدام الموقع بشكلٍ أفضل.\\nPlease update your browser for a better website experience.');\n }\n}\n","let timeout;\n\nexport default function () {\n // const stickyBtn = document.querySelector('#long-article .donate-btn');\n // const fixedBtn = document.querySelector('#long-article .long-content__latest .donate-btn');\n // const initialFixedBtnPosition = fixedBtn.getBoundingClientRect().left;\n\n setupPullovers();\n document.addEventListener('scroll', handleScroll, { passive: true });\n\n function handleScroll() {\n easeOutTableOfContents();\n // handleDonateBtnVisibility();\n }\n\n // function toggleButtonsVisibility(showStickyBtn) {\n // stickyBtn.style.opacity = showStickyBtn ? 100 : 0;\n // fixedBtn.style.opacity = showStickyBtn ? 0 : 100;\n // }\n\n // function adjustFixedButtonPosition(clientWidth) {\n // if (clientWidth > 1546) {\n // const fixedBtnLeft = initialFixedBtnPosition;\n // const stickyBtnLeft = stickyBtn.getBoundingClientRect().left;\n // const delta = Math.abs(fixedBtnLeft - stickyBtnLeft);\n // const newPosition = fixedBtnLeft + delta - (clientWidth - 1546) / 2;\n // fixedBtn.style.setProperty('left', `${newPosition}px`, 'important');\n // } else if (clientWidth < 1546 && clientWidth > 1279) {\n // fixedBtn.style.setProperty('left', '61.5%', 'important');\n // } else if (clientWidth < 1279 && clientWidth > 768) {\n // fixedBtn.style.setProperty('left', '40px', 'important');\n // } else if (clientWidth < 768) {\n // fixedBtn.style.setProperty('left', '30px', 'important');\n // }\n // }\n // }\n\n // function isLower(elem1, elem2) {\n // const clientHeight =\n // window.innerHeight || document.documentElement.clientHeight;\n // const elem1DeltaTop = clientHeight - elem1.getBoundingClientRect().top;\n // const elem2DeltaTop = clientHeight - elem2.getBoundingClientRect().top;\n // return elem1DeltaTop < elem2DeltaTop;\n // }\n\n function easeOutTableOfContents() {\n restartTocTimer();\n\n const notes = document.querySelector('.js-toc-stop');\n const container = document.querySelector('.js-sticky-toc-container');\n const notesListTop =\n notes.getBoundingClientRect().top -\n 150 -\n document.querySelector('.js-toc-content').offsetHeight;\n\n container.style.setProperty(\n '--toc-sticky-top',\n `${Math.min(92, notesListTop)}px`\n );\n }\n\n function setupPullovers() {\n calculatePullOverSideLength();\n const mediaQuery = window.matchMedia('(max-width: 768px)');\n mediaQuery.addEventListener('change', calculatePullOverSideLength);\n }\n\n function calculatePullOverSideLength() {\n document\n .querySelectorAll('.long-content__pullover-shadow')\n .forEach((pullover) => {\n const parent = pullover.querySelector('.long-content__pullover');\n const child = pullover.querySelector('.js-text');\n let sideLength = 170;\n pullover.style.setProperty('--side-length', sideLength);\n\n while (child.offsetHeight > parent.offsetHeight && sideLength < 1000) {\n sideLength += 10;\n pullover.style.setProperty('--side-length', sideLength);\n }\n });\n }\n\n function hideToc() {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n document\n .querySelector('.js-toc-ease-out')\n .classList.add('long-content__table-of-contents_is-hidden');\n document\n .querySelectorAll('.js-share-checkbox')\n .forEach((share) => (share.checked = false));\n }, 4000);\n }\n\n function restartTocTimer() {\n document\n .querySelector('.js-toc-ease-out')\n .classList.remove('long-content__table-of-contents_is-hidden');\n hideToc();\n }\n}\n\n// function setupUnblur() {\n// document.querySelectorAll('.blur-this').forEach((element) => {\n// element.firstChild.addEventListener('click', function () {\n// element.classList.toggle('blur-this');\n// });\n// });\n// }\n","export default function() {\n if (navigator.share) {\n for (let share of document.querySelectorAll('.js-share-btn')) {\n share.addEventListener('click', event => {\n event.preventDefault();\n const shareButton = event.target.closest('.js-share-btn');\n navigator.share({\n title: shareButton.getAttribute('data-title'),\n url: shareButton.getAttribute('data-url'),\n });\n });\n }\n }\n}\n","export default function() {\n for (let sideNote of document.querySelectorAll('.js-side-note')) {\n let id = +sideNote.id.match(/\\d+/)[0];\n sideNote.addEventListener('click', () => toggleSideNote(id, sideNote.classList[0]))\n }\n}\nfunction toggleSideNote(id, base) {\n let trigger = document.querySelector(`#sidenote-trigger-${id}`);\n let text = document.querySelector(`#sidenote-text-${id}`);\n let end = base.substring(base.length - 4);\n let rest = base.slice(0, base.length - 5);\n\n if (end === 'text') {\n trigger.classList.toggle(`${rest}_is-clicked`);\n text.classList.toggle(`${base}_is-clicked`);\n } else {\n trigger.classList.toggle(`${base}_is-clicked`);\n text.classList.toggle(`${base}-text_is-clicked`);\n }\n}\n","export default function() {\n for (let footNote of document.querySelectorAll('.js-foot-note')) {\n let id = +footNote.id.match(/\\d+/)[0];\n footNote.addEventListener('click', () => toggleFootNote(id, footNote.classList[0]))\n }\n}\nfunction toggleFootNote(id, base) {\n let trigger = document.querySelector(`#footnote-trigger-${id}`);\n let text = document.querySelector(`#footnote-text-${id}`);\n let end = base.substring(base.length - 4);\n let rest = base.slice(0, base.length - 5);\n\n if (end === 'text') {\n trigger.classList.toggle(`${rest}_is-clicked`);\n text.classList.toggle(`${base}_is-clicked`);\n } else {\n trigger.classList.toggle(`${base}_is-clicked`);\n text.classList.toggle(`${base}-text_is-clicked`);\n }\n}\n","export default function() {\n function windowClick(e) {\n if (!e.target.closest('.js-menu') && !e.target.closest('.js-header-menu-btn')) {\n close();\n }\n }\n\n function close() {\n document.body.classList.remove('is-menu-open');\n window.removeEventListener('click', windowClick);\n }\n\n function open() {\n document.body.classList.add('is-menu-open');\n window.addEventListener('click', windowClick);\n }\n\n document.querySelector('.js-header-menu-btn').addEventListener('click', () => {\n let isOpen = document.body.classList.contains('is-menu-open');\n isOpen ? close() : open();\n });\n}\n","export default function() {\n let hasAccepted = getCookie('accepted');\n let cookiesEl = document.querySelector('.js-cookies');\n\n function open() {\n cookiesEl.style.display = 'block';\n document.querySelector('.js-close-cookies').addEventListener('click', close);\n document.querySelector('.js-accept-cookies').addEventListener('click', accept);\n }\n\n function accept() {\n setCookie('accepted', 'true', 2000);\n close();\n document.querySelector('.js-close-cookies').removeEventListener('click', close);\n document.querySelector('.js-accept-cookies').removeEventListener('click', accept);\n }\n\n function close() {\n cookiesEl.style.display = 'none';\n }\n\n if (!hasAccepted || hasAccepted !== 'true') {\n open()\n }\n}\n\nfunction setCookie(name, value, days = 7, path = '/') {\n let expires = new Date(Date.now() + days * 864e5).toUTCString()\n document.cookie = name + '=' + encodeURIComponent(value) + '; expires=' + expires + '; path=' + path\n}\n\nfunction getCookie(name) {\n return document.cookie.split('; ').reduce((r, v) => {\n let parts = v.split('=')\n return parts[0] === name ? decodeURIComponent(parts[1]) : r\n }, '');\n}\n","export default function () {\n let tags = document.querySelector('.js-bottom-tags');\n // let stickyBtn = document.querySelector('.oped .donate-btn');\n // let fixedBtn = document.querySelector(\n // '.oped .long-content__latest .donate-btn'\n // );\n\n document.addEventListener('scroll', handleScroll);\n\n function handleScroll() {\n let top = tags.getBoundingClientRect().top;\n\n if (top < 0) {\n tags.classList.add('side-content__duplicated-tags_is-shown');\n } else if (top > 100) {\n tags.classList.remove('side-content__duplicated-tags_is-shown');\n }\n // handleDonateBtnVisibility();\n }\n\n // function handleDonateBtnVisibility() {\n // isLower(stickyBtn, fixedBtn)\n // ? (function () {\n // stickyBtn.style.opacity = 0;\n // fixedBtn.style.opacity = 100;\n // })()\n // : (function () {\n // stickyBtn.style.opacity = 100;\n // fixedBtn.style.opacity = 0;\n // })();\n // }\n}\n\n// function isLower(elem1, elem2) {\n// let clientHeight =\n// window.innerHeight || document.documentElement.clientHeight;\n// let elem1DeltaTop = clientHeight - elem1.getBoundingClientRect().top;\n// let elem2DeltaTop = clientHeight - elem2.getBoundingClientRect().top;\n\n// return elem1DeltaTop < elem2DeltaTop;\n// }\n","import { getArrayMax } from './utils';\n\nexport default function () {\n let carousel = document.querySelector('.js-carousel');\n let content = carousel.querySelector('.js-carousel-content');\n let items = carousel.querySelectorAll('.js-carousel-item');\n let page = 0;\n\n setSeperatorHeight();\n\n carousel\n .querySelector('.js-carousel-previous')\n .addEventListener('click', function () {\n if (page >= items.length - 1) {\n page = 0;\n } else {\n page++;\n }\n transition();\n });\n\n carousel\n .querySelector('.js-carousel-next')\n .addEventListener('click', function () {\n if (page === 0) {\n page = items.length - 1;\n } else {\n page--;\n }\n transition();\n });\n\n function transition() {\n content.style.setProperty(\n '--carousel-translate',\n `${content.offsetWidth * page}px`\n );\n }\n\n function setSeperatorHeight() {\n let descriptionDivs = Array.from(\n document.querySelectorAll('.carousel__description')\n );\n let heights = descriptionDivs.map((div) => div.clientHeight);\n let height = getArrayMax(heights);\n let seperatorDivs = Array.from(\n document.getElementsByClassName('carousel__seperator')\n );\n seperatorDivs.forEach((seperator) => {\n seperator.style.height = `${height}px`;\n });\n }\n}\n","import Choices from 'choices.js';\n\nconst choicesInstances = new Map(); // Create a map to store instances\n\nexport default function() {\n // Initialize Choices for all elements with the 'js-choice' class\n document.querySelectorAll('.js-choice').forEach(setup);\n}\n\nfunction setup(element) {\n let instance = new Choices(element, {\n placeholderValue: '',\n removeItemButton: true,\n allowHTML: true, // Explicitly allow HTML content within choice items\n });\n\n choicesInstances.set(element, instance); // Store the instance in the map\n\n if (element.value) {\n instance.containerInner.element.classList.add('choices__inner_is-selected');\n }\n\n element.addEventListener('change', e => {\n syncSelections(element, e.detail.value);\n if (e.detail.value) {\n instance.containerInner.element.classList.add('choices__inner_is-selected');\n } else {\n instance.containerInner.element.classList.remove('choices__inner_is-selected');\n }\n });\n}\n\nfunction syncSelections(sourceElement, selectedValue) {\n // Find the counterpart element (if source is mobile, find desktop, and vice versa)\n const counterpartSelector = sourceElement.classList.contains('js-choice-mobile')\n ? '.js-choice-desktop'\n : '.js-choice-mobile';\n const counterpartElement = document.querySelector(`${counterpartSelector}[name=\"${sourceElement.name}\"]`);\n \n if (counterpartElement) {\n // Retrieve the counterpart instance from the map\n const counterpartInstance = choicesInstances.get(counterpartElement);\n if (counterpartInstance && counterpartElement.value !== selectedValue) {\n counterpartInstance.setChoiceByValue(selectedValue);\n }\n }\n}\n","export default function() {\n let progressBar = document.querySelector('.js-progress-bar');\n let toc = document.querySelector('.js-expandable-toc');\n\n function hide() {\n progressBar.classList.remove('progress-bar_is-visible');\n }\n\n function show() {\n progressBar.classList.add('progress-bar_is-visible');\n }\n\n function expand() {\n toc.classList.add('table-of-contents_is-expanded');\n }\n\n function close() {\n toc.classList.remove('table-of-contents_is-expanded');\n }\n\n function setupScroll() {\n document.addEventListener('scroll', () => {\n let article = document.querySelector('.js-content-article');\n\n if (article.getBoundingClientRect().top < 100) {\n show();\n let totalHeight = article.offsetHeight + window.innerHeight;\n let progress = (totalHeight - (article.getBoundingClientRect().top + article.offsetHeight)) / totalHeight;\n progressBar.style.setProperty('--progress', `${progress * 100}%`);\n } else {\n hide();\n }\n });\n }\n\n\n function setupToc() {\n document.querySelector('.js-open-toc-btn').addEventListener('click', expand);\n document.querySelector('.js-close-toc-btn').addEventListener('click', close);\n }\n\n setupScroll();\n setupToc();\n}\n","export default function () {\n (function (gi, vi, n, g, l, oo, p) {\n (gi[l] =\n gi[l] ||\n function () {\n (gi[l].q = gi[l].q || []).push(arguments);\n gi.glObjName = l;\n }),\n (oo = vi.createElement(n)),\n (p = vi.getElementsByTagName(n)[0]);\n oo.async = 1;\n oo.src = g;\n oo.dataset.orgId = 1919;\n p.parentNode.insertBefore(oo, p);\n oo.id = 'gl-donation-popup-script';\n })(\n window,\n document,\n 'script',\n 'https://www.givingloop.org/js?' +\n Array(1)\n .fill(null)\n .map(() => Math.random().toString(20).substr(2))\n .join(''),\n 'givingloop'\n );\n\n \n let frontPageMobile = document.querySelector('#donate-section');\n let fronPageDesktop = document.querySelector('#donate-container');\n let longRead = document.querySelector('#long-article');\n let oPed = document.querySelector('#oped');\n let menu = document.querySelector('.menu');\n let footer = document.querySelector('.footer__main');\n let about = document.querySelector('.about__support');\n let headerDonateMobile = document.querySelector('.donate-head-mobile');\n let headerDonateDesktop = document.querySelector('.donate-head-desktop');\n [\n frontPageMobile,\n fronPageDesktop,\n longRead,\n oPed,\n menu,\n footer,\n about,\n headerDonateMobile,\n headerDonateDesktop,\n ].forEach((target) => {\n if (target) {\n target.addEventListener('click', handleClick);\n }\n });\n\n\n function handleClick(e) {\n if (e.target.closest('.js-donate')) {\n e.preventDefault();\n window.open('https://donorbox.org/support-megaphone', '_blank');\n }\n }\n}\n","export default function setupTrayCarousel() {\n let slider = document.querySelector('.dev-story__extra-carousel');\n if (!slider) return;\n\n let isDown = false;\n let startX;\n let scrollLeft;\n\n slider.addEventListener('mousedown', (e) => {\n isDown = true;\n startX = e.pageX - slider.offsetLeft;\n scrollLeft = slider.scrollLeft;\n });\n\n slider.addEventListener('mouseleave', () => {\n isDown = false;\n });\n\n slider.addEventListener('mouseup', () => {\n isDown = false;\n });\n\n slider.addEventListener('mousemove', (e) => {\n if(!isDown) return;\n e.preventDefault();\n const x = e.pageX - slider.offsetLeft;\n const walk = (x - startX);\n slider.scrollLeft = scrollLeft - walk;\n });\n}\n","export default function setupSearchResponsive() {\n var filterModal = document.getElementById('filter-modal');\n var filterBtn = document.getElementById('filter-btn');\n var filterSpans = document.getElementsByClassName('filter-close');\n\n if (filterBtn) {\n filterBtn.onclick = function(event) {\n event.preventDefault();\n filterModal.style.display = 'block';\n };\n }\n\n Array.from(filterSpans).forEach(span => {\n span.onclick = function() {\n filterModal.style.display = 'none';\n };\n });\n\n window.onclick = function(event) {\n if (event.target == filterModal) {\n filterModal.style.display = 'none';\n }\n };\n}\n\ndocument.addEventListener('DOMContentLoaded', function() {\n const clearButtons = document.querySelectorAll('.search__clear');\n const choiceElements = document.querySelectorAll('.js-choice');\n const datePickerElements = document.querySelectorAll('.js-date-picker-input');\n const filterBtn = document.getElementById('filter-btn');\n const filterBtnSVGPath = filterBtn.querySelector('svg path');\n\n function checkSelections() {\n let isSelected = false;\n\n choiceElements.forEach(element => {\n if (element.value) {\n isSelected = true;\n }\n });\n\n datePickerElements.forEach(element => {\n if (element.value) {\n isSelected = true;\n }\n });\n\n // Update the style of the filter button based on selection\n if (isSelected) {\n filterBtn.style.color = '#B43EC1'; \n filterBtnSVGPath.style.stroke = '#B43EC1'; \n } else {\n filterBtn.style.color = ''; \n filterBtnSVGPath.style.stroke = ''; \n }\n\n // Apply style changes to clear buttons\n clearButtons.forEach(button => {\n if (isSelected) {\n button.style.border = '1px solid #001ED7';\n button.style.background = '#FFF';\n button.style.boxShadow = '0px 2px 3px 0px rgba(0, 30, 215, 0.30)';\n button.style.color = '#001ED7';\n } else {\n button.style.border = '1px solid #D8D8D8';\n button.style.background = '#D8D8D8';\n button.style.boxShadow = 'none';\n }\n });\n }\n\n choiceElements.forEach(element => {\n element.addEventListener('change', checkSelections);\n });\n\n datePickerElements.forEach(element => {\n element.addEventListener('input', checkSelections);\n });\n\n clearButtons.forEach(button => {\n button.addEventListener('click', function() {\n choiceElements.forEach(element => {\n element.value = '';\n });\n datePickerElements.forEach(element => {\n element.value = '';\n });\n checkSelections();\n });\n });\n\n checkSelections();\n});\n","export default function setupSeriesCarousel() {\n let carousel = document.querySelector('.js-card-series');\n if (!carousel) return;\n\n let content = carousel.querySelector('.js-card-series-content');\n let items = carousel.querySelectorAll('.js-card-series-item');\n if (items.length <= 1) return;\n\n let dotsContainer = carousel.querySelector('.js-carousel-pagination');\n let page = 0;\n let touchStartX = 0;\n let touchEndX = 0;\n\n items.forEach(() => {\n let dot = document.createElement('div');\n dot.classList.add('carousel-pagination__dot');\n dotsContainer.appendChild(dot);\n });\n\n let dots = dotsContainer.querySelectorAll('.carousel-pagination__dot');\n\n function updateDots() {\n let previousControl = carousel.querySelector('.js-card-series-previous');\n let nextControl = carousel.querySelector('.js-card-series-next');\n previousControl.style.display = page === 0 ? 'none' : 'block';\n nextControl.style.display = page === items.length - 1 ? 'none' : 'block';\n dots.forEach((dot, index) => {\n dot.classList.toggle('carousel-pagination__dot--active', index === page);\n });\n }\n\n function handleSwipe() {\n if (touchEndX - touchStartX > 50) {\n if (page === 0) {\n content.classList.add('card-series__content--bounce');\n setTimeout(\n () => content.classList.remove('card-series__content--bounce'),\n 300\n );\n return; // Prevent swipe left on the first page\n } else {\n page--;\n }\n } else if (touchStartX - touchEndX > 50) {\n if (page >= items.length - 1) {\n content.classList.add('card-series__content--bounce-back');\n setTimeout(\n () => content.classList.remove('card-series__content--bounce-back'),\n 300\n );\n return;\n } else {\n page++;\n }\n }\n transition();\n }\n\n function transition() {\n content.style.setProperty(\n '--carousel-translate',\n `-${content.offsetWidth * page}px`\n );\n updateDots();\n stopInactiveVideos();\n }\n\n function stopInactiveVideos() {\n items.forEach((item, index) => {\n const video = item.querySelector('video');\n if (video) {\n if (index === page) {\n video.play();\n } else {\n video.pause();\n video.currentTime = 0;\n }\n }\n });\n }\n\n carousel\n .querySelector('.js-card-series-previous')\n .addEventListener('click', function () {\n if (page === 0) {\n content.classList.add('card-series__content--bounce');\n setTimeout(\n () => content.classList.remove('card-series__content--bounce'),\n 300\n );\n return;\n } else {\n page--;\n }\n transition();\n });\n\n carousel\n .querySelector('.js-card-series-next')\n .addEventListener('click', function () {\n if (page >= items.length - 1) {\n content.classList.add('card-series__content--bounce-back');\n setTimeout(\n () => content.classList.remove('card-series__content--bounce-back'),\n 300\n );\n return;\n } else {\n page++;\n }\n transition();\n });\n\n carousel.addEventListener('touchstart', function (event) {\n touchStartX = event.touches[0].clientX;\n });\n\n carousel.addEventListener('touchend', function (event) {\n touchEndX = event.changedTouches[0].clientX;\n handleSwipe();\n });\n\n updateDots();\n stopInactiveVideos();\n}\n","export const HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport const defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: (err) => typeof console !== \"undefined\" && console.warn(err),\n getWeek: (givenDate) => {\n const date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export const english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: (nth) => {\n const s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export const pad = (number, length = 2) => `000${number}`.slice(length * -1);\nexport const int = (bool) => (bool === true ? 1 : 0);\nexport function debounce(fn, wait) {\n let t;\n return function () {\n clearTimeout(t);\n t = setTimeout(() => fn.apply(this, arguments), wait);\n };\n}\nexport const arrayify = (obj) => obj instanceof Array ? obj : [obj];\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n const e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n const wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (const key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n const path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nconst doNothing = () => undefined;\nexport const monthToStr = (monthNumber, shorthand, locale) => locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber];\nexport const revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n H: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n J: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n K: (dateObj, amPM, locale) => {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: (_, unixSeconds) => new Date(parseFloat(unixSeconds) * 1000),\n W: function (dateObj, weekNum, locale) {\n const weekNumber = parseInt(weekNum);\n const date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: (dateObj, year) => {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: (_, ISODate) => new Date(ISODate),\n d: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n h: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n i: (dateObj, minutes) => {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: (_, unixMillSeconds) => new Date(parseFloat(unixMillSeconds)),\n w: doNothing,\n y: (dateObj, year) => {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport const tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport const formats = {\n Z: (date) => date.toISOString(),\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: (date) => pad(date.getHours()),\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: (date, locale) => locale.amPM[int(date.getHours() > 11)],\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: (date) => pad(date.getSeconds()),\n U: (date) => date.getTime() / 1000,\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: (date) => pad(date.getFullYear(), 4),\n d: (date) => pad(date.getDate()),\n h: (date) => (date.getHours() % 12 ? date.getHours() % 12 : 12),\n i: (date) => pad(date.getMinutes()),\n j: (date) => date.getDate(),\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: (date) => pad(date.getMonth() + 1),\n n: (date) => date.getMonth() + 1,\n s: (date) => date.getSeconds(),\n u: (date) => date.getTime(),\n w: (date) => date.getDay(),\n y: (date) => String(date.getFullYear()).substring(2),\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport const createDateFormatter = ({ config = defaults, l10n = english, isMobile = false, }) => (dateObj, frmt, overrideLocale) => {\n const locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map((c, i, arr) => formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\")\n .join(\"\");\n};\nexport const createDateParser = ({ config = defaults, l10n = english }) => (date, givenFormat, timeless, customLocale) => {\n if (date !== 0 && !date)\n return undefined;\n const locale = customLocale || l10n;\n let parsedDate;\n const dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n const format = givenFormat || (config || defaults).dateFormat;\n const datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr))\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n let matched, ops = [];\n for (let i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n const token = format[i];\n const isBackSlash = token === \"\\\\\";\n const escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n const match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n ops.forEach(({ fn, val }) => (parsedDate = fn(parsedDate, val, locale) || parsedDate));\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(`Invalid date provided: ${dateOrig}`));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n};\nexport function compareDates(date1, date2, timeless = true) {\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport const isBetween = (ts, ts1, ts2) => {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport const duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n let hours = config.defaultHour;\n let minutes = config.defaultMinute;\n let seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n const minHour = config.minDate.getHours();\n const minMinutes = config.minDate.getMinutes();\n const minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n const maxHr = config.maxDate.getHours();\n const maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours, minutes, seconds };\n}\n","import { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nconst DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n const self = {\n config: Object.assign(Object.assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth(month = self.currentMonth, yr = self.currentYear) {\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n const config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n const daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n const defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n const defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n const prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n let hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n const limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n const limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n const maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n const minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n const date = dateObj || self.latestSelectedDateObj;\n if (date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n const eventTarget = getEventTarget(event);\n const year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach((ev) => bind(element, ev, handler, options));\n if (element instanceof Array)\n return element.forEach((el) => bind(el, event, handler, options));\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: () => element.removeEventListener(event, handler),\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach((evt) => {\n Array.prototype.forEach.call(self.element.querySelectorAll(`[data-${evt}]`), (el) => bind(el, \"click\", self[evt]));\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n const debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", (e) => {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n const selText = (e) => getEventTarget(e).select();\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", () => self.secondElement && self.secondElement.select());\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", (e) => {\n updateTime(e);\n triggerChange();\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n const jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n const oldYear = self.currentYear;\n const oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n const eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n const target = e && getEventTarget(e);\n const input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n const event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n const fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n const { weekWrapper, weekNumbers } = buildWeeks();\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n const customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n const wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n const dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n const startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n for (let m = startMonth; m != endMonth; m += delta) {\n const month = self.daysContainer.children[m];\n const startIndex = delta > 0 ? 0 : month.children.length - 1;\n const endIndex = delta > 0 ? month.children.length : -1;\n for (let i = startIndex; i != endIndex; i += delta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n const givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n const loopDelta = delta > 0 ? 1 : -1;\n for (let m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n const month = self.daysContainer.children[m];\n const startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n const numMonthDays = month.children.length;\n for (let i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n const dayFocused = isInView(document.activeElement || document.body);\n const startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n const firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n const prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n const daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n let dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (let dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n const dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n const frag = document.createDocumentFragment();\n for (let i = 0; i < self.config.showMonths; i++) {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n const shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (let i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n const month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n const container = createElement(\"div\", \"flatpickr-month\");\n const monthNavFragment = window.document.createDocumentFragment();\n let monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", (e) => {\n const target = getEventTarget(e);\n const selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n const yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n const yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n const currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container,\n yearElement,\n monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (let m = self.config.showMonths; m--;) {\n const month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: () => self.__hidePrevMonthArrow,\n set(bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: () => self.__hideNextMonthArrow,\n set(bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n const defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n const separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n const hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n const minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n const secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (let i = self.config.showMonths; i--;) {\n const container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n const firstDayOfWeek = self.l10n.firstDayOfWeek;\n let weekdays = [...self.l10n.weekdays.shorthand];\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = [\n ...weekdays.splice(firstDayOfWeek, weekdays.length),\n ...weekdays.splice(0, firstDayOfWeek),\n ];\n }\n for (let i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = `\n \n ${weekdays.join(\"\")}\n \n `;\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n const weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n const weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper,\n weekNumbers,\n };\n }\n function changeMonth(value, isOffset = true) {\n const delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent = true, toInitial = true) {\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n const { hours, minutes, seconds } = getDefaultHours(self.config);\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (let i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n const wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach((k) => {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n const eventTarget = getEventTarget(e);\n const isCalendarElement = isCalendarElem(eventTarget);\n const isInput = eventTarget === self.input ||\n eventTarget === self.altInput ||\n self.element.contains(eventTarget) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n const lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n const isIgnored = !self.config.ignoredFocusElements.some((elem) => elem.contains(eventTarget));\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n const newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless = true) {\n var _a;\n const dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n const bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (let i = 0, d; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n const parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n const isInput = e.target === self._input;\n if (isInput &&\n (self.selectedDates.length > 0 || self._input.value.length > 0) &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n const eventTarget = getEventTarget(e);\n const isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n const allowInput = self.config.allowInput;\n const allowKeydown = self.isOpen && (!allowInput || !isInput);\n const allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n const isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n const delta = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta);\n else {\n e.stopPropagation();\n changeMonth(delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n const delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n const elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter((x) => x);\n const i = elems.indexOf(eventTarget);\n if (i !== -1) {\n const target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n const hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n let containsDisabled = false;\n let minRange = 0, maxRange = 0;\n for (let t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (let m = 0; m < self.config.showMonths; m++) {\n const month = self.daysContainer.children[m];\n for (let i = 0, l = month.children.length; i < l; i++) {\n const dayElem = month.children[i], date = dayElem.dateObj;\n const timestamp = date.getTime();\n const outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n continue;\n }\n else if (containsDisabled && !outOfRange)\n continue;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement = self._positionElement) {\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n const eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n const wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(() => self.hourElement.select(), 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return (date) => {\n const dateObj = (self.config[`_${type}Date`] = self.parseDate(date, self.config.dateFormat));\n const inverseDateObj = self.config[`_${type === \"min\" ? \"max\" : \"min\"}Date`];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter((d) => isEnabled(d));\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n const boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n const userConfig = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n const formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: () => self.config._enable,\n set: (dates) => {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: () => self.config._disable,\n set: (dates) => {\n self.config._disable = parseDateRules(dates);\n },\n });\n const timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n const defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n const defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + ` h:i${userConfig.enableSeconds ? \":S\" : \"\"} K`;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: () => self.config._minDate,\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: () => self.config._maxDate,\n set: minMaxDateSetter(\"max\"),\n });\n const minMaxTimeSetter = (type) => (val) => {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n };\n Object.defineProperty(self.config, \"minTime\", {\n get: () => self.config._minTime,\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: () => self.config._maxTime,\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (let i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter((hook) => self.config[hook] !== undefined).forEach((hook) => {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (let i = 0; i < self.config.plugins.length; i++) {\n const pluginConf = self.config.plugins[i](self) || {};\n for (const key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(`flatpickr: invalid locale ${self.config.locale}`));\n self.l10n = Object.assign(Object.assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = `(${self.l10n.amPM[0]}|${self.l10n.amPM[1]}|${self.l10n.amPM[0].toLowerCase()}|${self.l10n.amPM[1].toLowerCase()})`;\n const userConfig = Object.assign(Object.assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n const positionElement = customPositionElement || self._positionElement;\n const calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, ((acc, child) => acc + child.offsetHeight), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n const top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n let left = window.pageXOffset + inputBounds.left;\n let isCenter = false;\n let isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n const right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n const rightMost = left + calendarWidth > window.document.body.offsetWidth;\n const centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = `${top}px`;\n if (!rightMost) {\n self.calendarContainer.style.left = `${left}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = `${right}px`;\n }\n else {\n const doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n const bodyWidth = window.document.body.offsetWidth;\n const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n const centerBefore = \".flatpickr-calendar.centerMost:before\";\n const centerAfter = \".flatpickr-calendar.centerMost:after\";\n const centerIndex = doc.cssRules.length;\n const centerStyle = `{left:${inputBounds.left}px;right:auto;}`;\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(`${centerBefore},${centerAfter}${centerStyle}`, centerIndex);\n self.calendarContainer.style.left = `${centerLeft}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n let editableSheet = null;\n for (let i = 0; i < document.styleSheets.length; i++) {\n const sheet = document.styleSheets[i];\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n const isSelectable = (day) => day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n const t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n const target = t;\n const selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n const shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n const selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n const isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n const single = self.config.mode === \"single\" && !self.config.enableTime;\n const range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n const CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n clickOpens: [\n () => {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (const key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach((x) => x());\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach((x) => x());\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n let dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map((d) => self.parseDate(d, format));\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map((date) => self.parseDate(date, format));\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map((date) => self.parseDate(date, format));\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(inputDate)}`));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter((d) => d instanceof Date && isEnabled(d, false)));\n if (self.config.mode === \"range\")\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n function setDate(date, triggerChange = false, format = self.config.dateFormat) {\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map((rule) => {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter((x) => x);\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n const preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n const inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", (e) => {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n const hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (let i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n const e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (let i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach((yearElement, i) => {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map((dObj) => self.formatDate(dObj, format))\n .filter((d, i, arr) => self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i)\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange = true) {\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n const eventTarget = getEventTarget(e);\n const isPrevMonth = self.prevMonthNav.contains(eventTarget);\n const isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n const isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n const min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n let newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n const isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n const nodes = Array.prototype.slice\n .call(nodeList)\n .filter((x) => x instanceof HTMLElement);\n const instances = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: Object.assign({}, English),\n default: Object.assign({}, English),\n};\nflatpickr.localize = (l10n) => {\n flatpickr.l10ns.default = Object.assign(Object.assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = (config) => {\n flatpickr.defaultConfig = Object.assign(Object.assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","import flatpickr from 'flatpickr';\nimport { Arabic } from 'flatpickr/dist/l10n/ar.js';\n\n// Custom Arabic localization adjustments\nArabic.months.longhand = [\n 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيّار', 'حزيران',\n 'تمّوز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول',\n];\nArabic.weekdays.shorthand = Arabic.weekdays.longhand;\nArabic.firstDayOfWeek = 1;\n\nexport default function () {\n let pickerDesktop = document.querySelector('.js-date-picker-desktop');\n let pickerMobile = document.querySelector('.js-date-picker-mobile');\n let inputDesktop = pickerDesktop.querySelector('.js-date-picker-input');\n let inputMobile = pickerMobile.querySelector('.js-date-picker-input');\n let clearDesktop = pickerDesktop.querySelector('.js-date-picker-clear');\n let clearMobile = pickerMobile.querySelector('.js-date-picker-clear');\n\n function checkClearVisibility(input, clearButton) {\n if (input.value.trim() === '') {\n clearButton.classList.remove('search__filter-clear_is-visible');\n } else {\n clearButton.classList.add('search__filter-clear_is-visible');\n }\n }\n\n function syncDates(source, target) {\n if (target.value !== source.value) {\n target.value = source.value;\n }\n }\n\n // Initialize flatpickr for both inputs\n let instanceDesktop = flatpickr(inputDesktop, {\n locale: Arabic,\n mode: 'range',\n dateFormat: 'd-m-Y',\n maxDate: new Date(),\n onChange: function() {\n checkClearVisibility(inputDesktop, clearDesktop);\n syncDates(inputDesktop, inputMobile); // Sync desktop to mobile\n },\n });\n\n let instanceMobile = flatpickr(inputMobile, {\n locale: Arabic,\n mode: 'range',\n dateFormat: 'd-m-Y',\n maxDate: new Date(),\n onChange: function() {\n checkClearVisibility(inputMobile, clearMobile);\n syncDates(inputMobile, inputDesktop); // Sync mobile to desktop\n },\n });\n\n // Check initial visibility of clear buttons\n checkClearVisibility(inputDesktop, clearDesktop);\n checkClearVisibility(inputMobile, clearMobile);\n\n // Add event listeners to clear buttons\n clearDesktop.addEventListener('click', function() {\n instanceDesktop.clear();\n checkClearVisibility(inputDesktop, clearDesktop);\n });\n clearMobile.addEventListener('click', function() {\n instanceMobile.clear();\n checkClearVisibility(inputMobile, clearMobile);\n });\n}\n","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target, ...args) {\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n for (const source of args) {\n if (source) {\n Object.keys(source).forEach((key) => (target[key] = source[key]));\n }\n }\n return target;\n };\n}\n","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n","/*!\n * Masonry v4.2.2\n * Cascading grid layout library\n * https://masonry.desandro.com\n * MIT License\n * by David DeSandro\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'outlayer/outlayer',\n 'get-size/get-size'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('outlayer'),\n require('get-size')\n );\n } else {\n // browser global\n window.Masonry = factory(\n window.Outlayer,\n window.getSize\n );\n }\n\n}( window, function factory( Outlayer, getSize ) {\n\n'use strict';\n\n// -------------------------- masonryDefinition -------------------------- //\n\n // create an Outlayer layout class\n var Masonry = Outlayer.create('masonry');\n // isFitWidth -> fitWidth\n Masonry.compatOptions.fitWidth = 'isFitWidth';\n\n var proto = Masonry.prototype;\n\n proto._resetLayout = function() {\n this.getSize();\n this._getMeasurement( 'columnWidth', 'outerWidth' );\n this._getMeasurement( 'gutter', 'outerWidth' );\n this.measureColumns();\n\n // reset column Y\n this.colYs = [];\n for ( var i=0; i < this.cols; i++ ) {\n this.colYs.push( 0 );\n }\n\n this.maxY = 0;\n this.horizontalColIndex = 0;\n };\n\n proto.measureColumns = function() {\n this.getContainerWidth();\n // if columnWidth is 0, default to outerWidth of first item\n if ( !this.columnWidth ) {\n var firstItem = this.items[0];\n var firstItemElem = firstItem && firstItem.element;\n // columnWidth fall back to item of first element\n this.columnWidth = firstItemElem && getSize( firstItemElem ).outerWidth ||\n // if first elem has no width, default to size of container\n this.containerWidth;\n }\n\n var columnWidth = this.columnWidth += this.gutter;\n\n // calculate columns\n var containerWidth = this.containerWidth + this.gutter;\n var cols = containerWidth / columnWidth;\n // fix rounding errors, typically with gutters\n var excess = columnWidth - containerWidth % columnWidth;\n // if overshoot is less than a pixel, round up, otherwise floor it\n var mathMethod = excess && excess < 1 ? 'round' : 'floor';\n cols = Math[ mathMethod ]( cols );\n this.cols = Math.max( cols, 1 );\n };\n\n proto.getContainerWidth = function() {\n // container is parent if fit width\n var isFitWidth = this._getOption('fitWidth');\n var container = isFitWidth ? this.element.parentNode : this.element;\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var size = getSize( container );\n this.containerWidth = size && size.innerWidth;\n };\n\n proto._getItemLayoutPosition = function( item ) {\n item.getSize();\n // how many columns does this brick span\n var remainder = item.size.outerWidth % this.columnWidth;\n var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil';\n // round if off by 1 pixel, otherwise use ceil\n var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth );\n colSpan = Math.min( colSpan, this.cols );\n // use horizontal or top column position\n var colPosMethod = this.options.horizontalOrder ?\n '_getHorizontalColPosition' : '_getTopColPosition';\n var colPosition = this[ colPosMethod ]( colSpan, item );\n // position the brick\n var position = {\n x: this.columnWidth * colPosition.col,\n y: colPosition.y\n };\n // apply setHeight to necessary columns\n var setHeight = colPosition.y + item.size.outerHeight;\n var setMax = colSpan + colPosition.col;\n for ( var i = colPosition.col; i < setMax; i++ ) {\n this.colYs[i] = setHeight;\n }\n\n return position;\n };\n\n proto._getTopColPosition = function( colSpan ) {\n var colGroup = this._getTopColGroup( colSpan );\n // get the minimum Y value from the columns\n var minimumY = Math.min.apply( Math, colGroup );\n\n return {\n col: colGroup.indexOf( minimumY ),\n y: minimumY,\n };\n };\n\n /**\n * @param {Number} colSpan - number of columns the element spans\n * @returns {Array} colGroup\n */\n proto._getTopColGroup = function( colSpan ) {\n if ( colSpan < 2 ) {\n // if brick spans only one column, use all the column Ys\n return this.colYs;\n }\n\n var colGroup = [];\n // how many different places could this brick fit horizontally\n var groupCount = this.cols + 1 - colSpan;\n // for each group potential horizontal position\n for ( var i = 0; i < groupCount; i++ ) {\n colGroup[i] = this._getColGroupY( i, colSpan );\n }\n return colGroup;\n };\n\n proto._getColGroupY = function( col, colSpan ) {\n if ( colSpan < 2 ) {\n return this.colYs[ col ];\n }\n // make an array of colY values for that one group\n var groupColYs = this.colYs.slice( col, col + colSpan );\n // and get the max value of the array\n return Math.max.apply( Math, groupColYs );\n };\n\n // get column position based on horizontal index. #873\n proto._getHorizontalColPosition = function( colSpan, item ) {\n var col = this.horizontalColIndex % this.cols;\n var isOver = colSpan > 1 && col + colSpan > this.cols;\n // shift to next row if item can't fit on current row\n col = isOver ? 0 : col;\n // don't let zero-size items take up space\n var hasSize = item.size.outerWidth && item.size.outerHeight;\n this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex;\n\n return {\n col: col,\n y: this._getColGroupY( col, colSpan ),\n };\n };\n\n proto._manageStamp = function( stamp ) {\n var stampSize = getSize( stamp );\n var offset = this._getElementOffset( stamp );\n // get the columns that this stamp affects\n var isOriginLeft = this._getOption('originLeft');\n var firstX = isOriginLeft ? offset.left : offset.right;\n var lastX = firstX + stampSize.outerWidth;\n var firstCol = Math.floor( firstX / this.columnWidth );\n firstCol = Math.max( 0, firstCol );\n var lastCol = Math.floor( lastX / this.columnWidth );\n // lastCol should not go over if multiple of columnWidth #425\n lastCol -= lastX % this.columnWidth ? 0 : 1;\n lastCol = Math.min( this.cols - 1, lastCol );\n // set colYs to bottom of the stamp\n\n var isOriginTop = this._getOption('originTop');\n var stampMaxY = ( isOriginTop ? offset.top : offset.bottom ) +\n stampSize.outerHeight;\n for ( var i = firstCol; i <= lastCol; i++ ) {\n this.colYs[i] = Math.max( stampMaxY, this.colYs[i] );\n }\n };\n\n proto._getContainerSize = function() {\n this.maxY = Math.max.apply( Math, this.colYs );\n var size = {\n height: this.maxY\n };\n\n if ( this._getOption('fitWidth') ) {\n size.width = this._getContainerFitWidth();\n }\n\n return size;\n };\n\n proto._getContainerFitWidth = function() {\n var unusedCols = 0;\n // count unused columns\n var i = this.cols;\n while ( --i ) {\n if ( this.colYs[i] !== 0 ) {\n break;\n }\n unusedCols++;\n }\n // fit container to columns that have been used\n return ( this.cols - unusedCols ) * this.columnWidth - this.gutter;\n };\n\n proto.needsResizeLayout = function() {\n var previousWidth = this.containerWidth;\n this.getContainerWidth();\n return previousWidth != this.containerWidth;\n };\n\n return Masonry;\n\n}));\n","import { warnOldBrowser } from './lib/browser';\nimport setupLongArticle from './lib/long-article';\nimport setupShare from './lib/share';\nimport setupSideNote from './lib/side-note';\nimport setupFootNote from './lib/foot-note';\nimport setupMenu from './lib/menu';\nimport setupCookies from './lib/cookies';\nimport setupOped from './lib/oped';\nimport setupDatePicker from './lib/date-picker';\nimport setupCarousel from './lib/carousel';\nimport setupChoice from './lib/choice';\nimport setupProgressBar from './lib/progress-bar';\nimport setupDonation from './lib/gl-donations';\nimport setupTrayCarousel from './lib/carousel-tray'; // Added line\nimport Masonry from 'masonry-layout';\nimport setupSearchResponsive from './lib/searchresponsive';\nimport setupSeriesCarousel from './lib/series-carousel';\n\nfunction startApp() {\n warnOldBrowser();\n setupMenu();\n setupCookies();\n setupChoice();\n setupDonation();\n setupSearchResponsive();\n setupSeriesCarousel();\n\n if (document.querySelector('.js-date-picker')) {\n setupDatePicker();\n }\n\n if (document.querySelector('.js-carousel')) {\n setupCarousel();\n }\n\n if (document.querySelector('.dev-story__extra-carousel')) {\n setupTrayCarousel(); // Added line\n }\n\n if (document.querySelector('.js-progress-bar')) {\n setupProgressBar();\n }\n\n if (document.querySelector('.js-share-btn')) {\n setupShare();\n }\n\n if (document.querySelector('#long-article')) {\n setupLongArticle();\n }\n\n if (document.querySelector('#oped')) {\n setupOped();\n }\n\n if (document.querySelector('.js-side-note')) {\n setupSideNote();\n }\n\n if (document.querySelector('.js-foot-note')) {\n setupFootNote();\n }\n\n if (window.location.hash === '#english') {\n document.querySelector('.js-lang-checkbox').checked = true;\n }\n\n for (let grid of document.querySelectorAll('.js-masonry-grid')) {\n new Masonry(grid, {\n columnWidth: '.js-masonry-width',\n itemSelector: '.js-masonry-item',\n percentPosition: true,\n gutter: 20,\n originLeft: false,\n });\n }\n}\n\nif (document.readyState != 'loading') {\n startApp();\n} else {\n document.addEventListener('DOMContentLoaded', () => startApp());\n}\ndocument.addEventListener('DOMContentLoaded', () => {\n // Get all buttons that open a modal\n var btns = document.querySelectorAll('.myBtn');\n\n // Add click event to each button\n btns.forEach(function (btn) {\n btn.onclick = function () {\n var modalId = btn.getAttribute('data-modal-id');\n var modal = document.getElementById(modalId);\n if (modal) {\n modal.style.display = 'block';\n document.body.classList.add('no-scroll'); // Prevent scrolling on body\n }\n };\n });\n\n // Get all elements that close modals\n var spans = document.querySelectorAll('.close');\n\n // Add click event to each \n spans.forEach(function (span) {\n span.onclick = function () {\n var modal = span.closest('.modal');\n if (modal) {\n modal.style.display = 'none';\n document.body.classList.remove('no-scroll'); // Re-enable scrolling on body\n }\n };\n });\n\n // Close modals when clicking outside and re-enable scrolling\n window.onclick = function (event) {\n if (event.target.classList.contains('modal')) {\n event.target.style.display = 'none';\n document.body.classList.remove('no-scroll');\n }\n };\n});\n","/*!\n * Outlayer v2.1.1\n * the brains and guts of a layout library\n * MIT license\n */\n\n( function( window, factory ) {\n 'use strict';\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './item'\n ],\n function( EvEmitter, getSize, utils, Item ) {\n return factory( window, EvEmitter, getSize, utils, Item);\n }\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./item')\n );\n } else {\n // browser global\n window.Outlayer = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n window.Outlayer.Item\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize, utils, Item ) {\n'use strict';\n\n// ----- vars ----- //\n\nvar console = window.console;\nvar jQuery = window.jQuery;\nvar noop = function() {};\n\n// -------------------------- Outlayer -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Outlayer intances\nvar instances = {};\n\n\n/**\n * @param {Element, String} element\n * @param {Object} options\n * @constructor\n */\nfunction Outlayer( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for ' + this.constructor.namespace +\n ': ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // add id for Outlayer.getFromElement\n var id = ++GUID;\n this.element.outlayerGUID = id; // expando\n instances[ id ] = this; // associate via id\n\n // kick it off\n this._create();\n\n var isInitLayout = this._getOption('initLayout');\n if ( isInitLayout ) {\n this.layout();\n }\n}\n\n// settings are for internal use only\nOutlayer.namespace = 'outlayer';\nOutlayer.Item = Item;\n\n// default options\nOutlayer.defaults = {\n containerStyle: {\n position: 'relative'\n },\n initLayout: true,\n originLeft: true,\n originTop: true,\n resize: true,\n resizeContainer: true,\n // item options\n transitionDuration: '0.4s',\n hiddenStyle: {\n opacity: 0,\n transform: 'scale(0.001)'\n },\n visibleStyle: {\n opacity: 1,\n transform: 'scale(1)'\n }\n};\n\nvar proto = Outlayer.prototype;\n// inherit EvEmitter\nutils.extend( proto, EvEmitter.prototype );\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\n/**\n * get backwards compatible option value, check old name\n */\nproto._getOption = function( option ) {\n var oldOption = this.constructor.compatOptions[ option ];\n return oldOption && this.options[ oldOption ] !== undefined ?\n this.options[ oldOption ] : this.options[ option ];\n};\n\nOutlayer.compatOptions = {\n // currentName: oldName\n initLayout: 'isInitLayout',\n horizontal: 'isHorizontal',\n layoutInstant: 'isLayoutInstant',\n originLeft: 'isOriginLeft',\n originTop: 'isOriginTop',\n resize: 'isResizeBound',\n resizeContainer: 'isResizingContainer'\n};\n\nproto._create = function() {\n // get items from children\n this.reloadItems();\n // elements that affect layout, but are not laid out\n this.stamps = [];\n this.stamp( this.options.stamp );\n // set container style\n utils.extend( this.element.style, this.options.containerStyle );\n\n // bind resize method\n var canBindResize = this._getOption('resize');\n if ( canBindResize ) {\n this.bindResize();\n }\n};\n\n// goes through all children again and gets bricks in proper order\nproto.reloadItems = function() {\n // collection of item elements\n this.items = this._itemize( this.element.children );\n};\n\n\n/**\n * turn elements into Outlayer.Items to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Outlayer Items\n */\nproto._itemize = function( elems ) {\n\n var itemElems = this._filterFindItemElements( elems );\n var Item = this.constructor.Item;\n\n // create new Outlayer Items for collection\n var items = [];\n for ( var i=0; i < itemElems.length; i++ ) {\n var elem = itemElems[i];\n var item = new Item( elem, this );\n items.push( item );\n }\n\n return items;\n};\n\n/**\n * get item elements to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - item elements\n */\nproto._filterFindItemElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.itemSelector );\n};\n\n/**\n * getter method for getting item elements\n * @returns {Array} elems - collection of item elements\n */\nproto.getItemElements = function() {\n return this.items.map( function( item ) {\n return item.element;\n });\n};\n\n// ----- init & layout ----- //\n\n/**\n * lays out all items\n */\nproto.layout = function() {\n this._resetLayout();\n this._manageStamps();\n\n // don't animate first layout\n var layoutInstant = this._getOption('layoutInstant');\n var isInstant = layoutInstant !== undefined ?\n layoutInstant : !this._isLayoutInited;\n this.layoutItems( this.items, isInstant );\n\n // flag for initalized\n this._isLayoutInited = true;\n};\n\n// _init is alias for layout\nproto._init = proto.layout;\n\n/**\n * logic before any new layout\n */\nproto._resetLayout = function() {\n this.getSize();\n};\n\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * get measurement from option, for columnWidth, rowHeight, gutter\n * if option is String -> get element from selector string, & get size of element\n * if option is Element -> get size of element\n * else use option as a number\n *\n * @param {String} measurement\n * @param {String} size - width or height\n * @private\n */\nproto._getMeasurement = function( measurement, size ) {\n var option = this.options[ measurement ];\n var elem;\n if ( !option ) {\n // default to 0\n this[ measurement ] = 0;\n } else {\n // use option as an element\n if ( typeof option == 'string' ) {\n elem = this.element.querySelector( option );\n } else if ( option instanceof HTMLElement ) {\n elem = option;\n }\n // use size of element, if element\n this[ measurement ] = elem ? getSize( elem )[ size ] : option;\n }\n};\n\n/**\n * layout a collection of item elements\n * @api public\n */\nproto.layoutItems = function( items, isInstant ) {\n items = this._getItemsForLayout( items );\n\n this._layoutItems( items, isInstant );\n\n this._postLayout();\n};\n\n/**\n * get the items to be laid out\n * you may want to skip over some items\n * @param {Array} items\n * @returns {Array} items\n */\nproto._getItemsForLayout = function( items ) {\n return items.filter( function( item ) {\n return !item.isIgnored;\n });\n};\n\n/**\n * layout items\n * @param {Array} items\n * @param {Boolean} isInstant\n */\nproto._layoutItems = function( items, isInstant ) {\n this._emitCompleteOnItems( 'layout', items );\n\n if ( !items || !items.length ) {\n // no items, emit event with empty array\n return;\n }\n\n var queue = [];\n\n items.forEach( function( item ) {\n // get x/y object from method\n var position = this._getItemLayoutPosition( item );\n // enqueue\n position.item = item;\n position.isInstant = isInstant || item.isLayoutInstant;\n queue.push( position );\n }, this );\n\n this._processLayoutQueue( queue );\n};\n\n/**\n * get item layout position\n * @param {Outlayer.Item} item\n * @returns {Object} x and y position\n */\nproto._getItemLayoutPosition = function( /* item */ ) {\n return {\n x: 0,\n y: 0\n };\n};\n\n/**\n * iterate over array and position each item\n * Reason being - separating this logic prevents 'layout invalidation'\n * thx @paul_irish\n * @param {Array} queue\n */\nproto._processLayoutQueue = function( queue ) {\n this.updateStagger();\n queue.forEach( function( obj, i ) {\n this._positionItem( obj.item, obj.x, obj.y, obj.isInstant, i );\n }, this );\n};\n\n// set stagger from option in milliseconds number\nproto.updateStagger = function() {\n var stagger = this.options.stagger;\n if ( stagger === null || stagger === undefined ) {\n this.stagger = 0;\n return;\n }\n this.stagger = getMilliseconds( stagger );\n return this.stagger;\n};\n\n/**\n * Sets position of item in DOM\n * @param {Outlayer.Item} item\n * @param {Number} x - horizontal position\n * @param {Number} y - vertical position\n * @param {Boolean} isInstant - disables transitions\n */\nproto._positionItem = function( item, x, y, isInstant, i ) {\n if ( isInstant ) {\n // if not transition, just set CSS\n item.goTo( x, y );\n } else {\n item.stagger( i * this.stagger );\n item.moveTo( x, y );\n }\n};\n\n/**\n * Any logic you want to do after each layout,\n * i.e. size the container\n */\nproto._postLayout = function() {\n this.resizeContainer();\n};\n\nproto.resizeContainer = function() {\n var isResizingContainer = this._getOption('resizeContainer');\n if ( !isResizingContainer ) {\n return;\n }\n var size = this._getContainerSize();\n if ( size ) {\n this._setContainerMeasure( size.width, true );\n this._setContainerMeasure( size.height, false );\n }\n};\n\n/**\n * Sets width or height of container if returned\n * @returns {Object} size\n * @param {Number} width\n * @param {Number} height\n */\nproto._getContainerSize = noop;\n\n/**\n * @param {Number} measure - size of width or height\n * @param {Boolean} isWidth\n */\nproto._setContainerMeasure = function( measure, isWidth ) {\n if ( measure === undefined ) {\n return;\n }\n\n var elemSize = this.size;\n // add padding and border width if border box\n if ( elemSize.isBorderBox ) {\n measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight +\n elemSize.borderLeftWidth + elemSize.borderRightWidth :\n elemSize.paddingBottom + elemSize.paddingTop +\n elemSize.borderTopWidth + elemSize.borderBottomWidth;\n }\n\n measure = Math.max( measure, 0 );\n this.element.style[ isWidth ? 'width' : 'height' ] = measure + 'px';\n};\n\n/**\n * emit eventComplete on a collection of items events\n * @param {String} eventName\n * @param {Array} items - Outlayer.Items\n */\nproto._emitCompleteOnItems = function( eventName, items ) {\n var _this = this;\n function onComplete() {\n _this.dispatchEvent( eventName + 'Complete', null, [ items ] );\n }\n\n var count = items.length;\n if ( !items || !count ) {\n onComplete();\n return;\n }\n\n var doneCount = 0;\n function tick() {\n doneCount++;\n if ( doneCount == count ) {\n onComplete();\n }\n }\n\n // bind callback\n items.forEach( function( item ) {\n item.once( eventName, tick );\n });\n};\n\n/**\n * emits events via EvEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n // add original event to arguments\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery ) {\n // set this.$element\n this.$element = this.$element || jQuery( this.element );\n if ( event ) {\n // create jQuery event\n var $event = jQuery.Event( event );\n $event.type = type;\n this.$element.trigger( $event, args );\n } else {\n // just trigger with type if no event available\n this.$element.trigger( type, args );\n }\n }\n};\n\n// -------------------------- ignore & stamps -------------------------- //\n\n\n/**\n * keep item in collection, but do not lay it out\n * ignored items do not get skipped in layout\n * @param {Element} elem\n */\nproto.ignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n item.isIgnored = true;\n }\n};\n\n/**\n * return item to layout collection\n * @param {Element} elem\n */\nproto.unignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n delete item.isIgnored;\n }\n};\n\n/**\n * adds elements to stamps\n * @param {NodeList, Array, Element, or String} elems\n */\nproto.stamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ) {\n return;\n }\n\n this.stamps = this.stamps.concat( elems );\n // ignore\n elems.forEach( this.ignore, this );\n};\n\n/**\n * removes elements to stamps\n * @param {NodeList, Array, or Element} elems\n */\nproto.unstamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ){\n return;\n }\n\n elems.forEach( function( elem ) {\n // filter out removed stamp elements\n utils.removeFrom( this.stamps, elem );\n this.unignore( elem );\n }, this );\n};\n\n/**\n * finds child elements\n * @param {NodeList, Array, Element, or String} elems\n * @returns {Array} elems\n */\nproto._find = function( elems ) {\n if ( !elems ) {\n return;\n }\n // if string, use argument as selector string\n if ( typeof elems == 'string' ) {\n elems = this.element.querySelectorAll( elems );\n }\n elems = utils.makeArray( elems );\n return elems;\n};\n\nproto._manageStamps = function() {\n if ( !this.stamps || !this.stamps.length ) {\n return;\n }\n\n this._getBoundingRect();\n\n this.stamps.forEach( this._manageStamp, this );\n};\n\n// update boundingLeft / Top\nproto._getBoundingRect = function() {\n // get bounding rect for container element\n var boundingRect = this.element.getBoundingClientRect();\n var size = this.size;\n this._boundingRect = {\n left: boundingRect.left + size.paddingLeft + size.borderLeftWidth,\n top: boundingRect.top + size.paddingTop + size.borderTopWidth,\n right: boundingRect.right - ( size.paddingRight + size.borderRightWidth ),\n bottom: boundingRect.bottom - ( size.paddingBottom + size.borderBottomWidth )\n };\n};\n\n/**\n * @param {Element} stamp\n**/\nproto._manageStamp = noop;\n\n/**\n * get x/y position of element relative to container element\n * @param {Element} elem\n * @returns {Object} offset - has left, top, right, bottom\n */\nproto._getElementOffset = function( elem ) {\n var boundingRect = elem.getBoundingClientRect();\n var thisRect = this._boundingRect;\n var size = getSize( elem );\n var offset = {\n left: boundingRect.left - thisRect.left - size.marginLeft,\n top: boundingRect.top - thisRect.top - size.marginTop,\n right: thisRect.right - boundingRect.right - size.marginRight,\n bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom\n };\n return offset;\n};\n\n// -------------------------- resize -------------------------- //\n\n// enable event handlers for listeners\n// i.e. resize -> onresize\nproto.handleEvent = utils.handleEvent;\n\n/**\n * Bind layout to window resizing\n */\nproto.bindResize = function() {\n window.addEventListener( 'resize', this );\n this.isResizeBound = true;\n};\n\n/**\n * Unbind layout to window resizing\n */\nproto.unbindResize = function() {\n window.removeEventListener( 'resize', this );\n this.isResizeBound = false;\n};\n\nproto.onresize = function() {\n this.resize();\n};\n\nutils.debounceMethod( Outlayer, 'onresize', 100 );\n\nproto.resize = function() {\n // don't trigger if size did not change\n // or if resize was unbound. See #9\n if ( !this.isResizeBound || !this.needsResizeLayout() ) {\n return;\n }\n\n this.layout();\n};\n\n/**\n * check if layout is needed post layout\n * @returns Boolean\n */\nproto.needsResizeLayout = function() {\n var size = getSize( this.element );\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var hasSizes = this.size && size;\n return hasSizes && size.innerWidth !== this.size.innerWidth;\n};\n\n// -------------------------- methods -------------------------- //\n\n/**\n * add items to Outlayer instance\n * @param {Array or NodeList or Element} elems\n * @returns {Array} items - Outlayer.Items\n**/\nproto.addItems = function( elems ) {\n var items = this._itemize( elems );\n // add items to collection\n if ( items.length ) {\n this.items = this.items.concat( items );\n }\n return items;\n};\n\n/**\n * Layout newly-appended item elements\n * @param {Array or NodeList or Element} elems\n */\nproto.appended = function( elems ) {\n var items = this.addItems( elems );\n if ( !items.length ) {\n return;\n }\n // layout and reveal just the new items\n this.layoutItems( items, true );\n this.reveal( items );\n};\n\n/**\n * Layout prepended elements\n * @param {Array or NodeList or Element} elems\n */\nproto.prepended = function( elems ) {\n var items = this._itemize( elems );\n if ( !items.length ) {\n return;\n }\n // add items to beginning of collection\n var previousItems = this.items.slice(0);\n this.items = items.concat( previousItems );\n // start new layout\n this._resetLayout();\n this._manageStamps();\n // layout new stuff without transition\n this.layoutItems( items, true );\n this.reveal( items );\n // layout previous items\n this.layoutItems( previousItems );\n};\n\n/**\n * reveal a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.reveal = function( items ) {\n this._emitCompleteOnItems( 'reveal', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.reveal();\n });\n};\n\n/**\n * hide a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.hide = function( items ) {\n this._emitCompleteOnItems( 'hide', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.hide();\n });\n};\n\n/**\n * reveal item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.revealItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.reveal( items );\n};\n\n/**\n * hide item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.hideItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.hide( items );\n};\n\n/**\n * get Outlayer.Item, given an Element\n * @param {Element} elem\n * @param {Function} callback\n * @returns {Outlayer.Item} item\n */\nproto.getItem = function( elem ) {\n // loop through items to get the one that matches\n for ( var i=0; i < this.items.length; i++ ) {\n var item = this.items[i];\n if ( item.element == elem ) {\n // return item\n return item;\n }\n }\n};\n\n/**\n * get collection of Outlayer.Items, given Elements\n * @param {Array} elems\n * @returns {Array} items - Outlayer.Items\n */\nproto.getItems = function( elems ) {\n elems = utils.makeArray( elems );\n var items = [];\n elems.forEach( function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n items.push( item );\n }\n }, this );\n\n return items;\n};\n\n/**\n * remove element(s) from instance and DOM\n * @param {Array or NodeList or Element} elems\n */\nproto.remove = function( elems ) {\n var removeItems = this.getItems( elems );\n\n this._emitCompleteOnItems( 'remove', removeItems );\n\n // bail if no items to remove\n if ( !removeItems || !removeItems.length ) {\n return;\n }\n\n removeItems.forEach( function( item ) {\n item.remove();\n // remove item from collection\n utils.removeFrom( this.items, item );\n }, this );\n};\n\n// ----- destroy ----- //\n\n// remove and disable Outlayer instance\nproto.destroy = function() {\n // clean up dynamic styles\n var style = this.element.style;\n style.height = '';\n style.position = '';\n style.width = '';\n // destroy items\n this.items.forEach( function( item ) {\n item.destroy();\n });\n\n this.unbindResize();\n\n var id = this.element.outlayerGUID;\n delete instances[ id ]; // remove reference to instance by id\n delete this.element.outlayerGUID;\n // remove data for jQuery\n if ( jQuery ) {\n jQuery.removeData( this.element, this.constructor.namespace );\n }\n\n};\n\n// -------------------------- data -------------------------- //\n\n/**\n * get Outlayer instance from element\n * @param {Element} elem\n * @returns {Outlayer}\n */\nOutlayer.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.outlayerGUID;\n return id && instances[ id ];\n};\n\n\n// -------------------------- create Outlayer class -------------------------- //\n\n/**\n * create a layout class\n * @param {String} namespace\n */\nOutlayer.create = function( namespace, options ) {\n // sub-class Outlayer\n var Layout = subclass( Outlayer );\n // apply new options and compatOptions\n Layout.defaults = utils.extend( {}, Outlayer.defaults );\n utils.extend( Layout.defaults, options );\n Layout.compatOptions = utils.extend( {}, Outlayer.compatOptions );\n\n Layout.namespace = namespace;\n\n Layout.data = Outlayer.data;\n\n // sub-class Item\n Layout.Item = subclass( Item );\n\n // -------------------------- declarative -------------------------- //\n\n utils.htmlInit( Layout, namespace );\n\n // -------------------------- jQuery bridge -------------------------- //\n\n // make into jQuery plugin\n if ( jQuery && jQuery.bridget ) {\n jQuery.bridget( namespace, Layout );\n }\n\n return Layout;\n};\n\nfunction subclass( Parent ) {\n function SubClass() {\n Parent.apply( this, arguments );\n }\n\n SubClass.prototype = Object.create( Parent.prototype );\n SubClass.prototype.constructor = SubClass;\n\n return SubClass;\n}\n\n// ----- helpers ----- //\n\n// how many milliseconds are in each unit\nvar msUnits = {\n ms: 1,\n s: 1000\n};\n\n// munge time-like parameter into millisecond number\n// '0.4s' -> 40\nfunction getMilliseconds( time ) {\n if ( typeof time == 'number' ) {\n return time;\n }\n var matches = time.match( /(^\\d*\\.?\\d*)(\\w*)/ );\n var num = matches && matches[1];\n var unit = matches && matches[2];\n if ( !num.length ) {\n return 0;\n }\n num = parseFloat( num );\n var mult = msUnits[ unit ] || 1;\n return num * mult;\n}\n\n// ----- fin ----- //\n\n// back in global\nOutlayer.Item = Item;\n\nreturn Outlayer;\n\n}));\n","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n","/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n","/**\n * Outlayer Item\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size'\n ],\n factory\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n require('ev-emitter'),\n require('get-size')\n );\n } else {\n // browser global\n window.Outlayer = {};\n window.Outlayer.Item = factory(\n window.EvEmitter,\n window.getSize\n );\n }\n\n}( window, function factory( EvEmitter, getSize ) {\n'use strict';\n\n// ----- helpers ----- //\n\nfunction isEmptyObj( obj ) {\n for ( var prop in obj ) {\n return false;\n }\n prop = null;\n return true;\n}\n\n// -------------------------- CSS3 support -------------------------- //\n\n\nvar docElemStyle = document.documentElement.style;\n\nvar transitionProperty = typeof docElemStyle.transition == 'string' ?\n 'transition' : 'WebkitTransition';\nvar transformProperty = typeof docElemStyle.transform == 'string' ?\n 'transform' : 'WebkitTransform';\n\nvar transitionEndEvent = {\n WebkitTransition: 'webkitTransitionEnd',\n transition: 'transitionend'\n}[ transitionProperty ];\n\n// cache all vendor properties that could have vendor prefix\nvar vendorProperties = {\n transform: transformProperty,\n transition: transitionProperty,\n transitionDuration: transitionProperty + 'Duration',\n transitionProperty: transitionProperty + 'Property',\n transitionDelay: transitionProperty + 'Delay'\n};\n\n// -------------------------- Item -------------------------- //\n\nfunction Item( element, layout ) {\n if ( !element ) {\n return;\n }\n\n this.element = element;\n // parent layout class, i.e. Masonry, Isotope, or Packery\n this.layout = layout;\n this.position = {\n x: 0,\n y: 0\n };\n\n this._create();\n}\n\n// inherit EvEmitter\nvar proto = Item.prototype = Object.create( EvEmitter.prototype );\nproto.constructor = Item;\n\nproto._create = function() {\n // transition objects\n this._transn = {\n ingProperties: {},\n clean: {},\n onEnd: {}\n };\n\n this.css({\n position: 'absolute'\n });\n};\n\n// trigger specified handler for event type\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * apply CSS styles to element\n * @param {Object} style\n */\nproto.css = function( style ) {\n var elemStyle = this.element.style;\n\n for ( var prop in style ) {\n // use vendor property if available\n var supportedProp = vendorProperties[ prop ] || prop;\n elemStyle[ supportedProp ] = style[ prop ];\n }\n};\n\n // measure position, and sets it\nproto.getPosition = function() {\n var style = getComputedStyle( this.element );\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n var xValue = style[ isOriginLeft ? 'left' : 'right' ];\n var yValue = style[ isOriginTop ? 'top' : 'bottom' ];\n var x = parseFloat( xValue );\n var y = parseFloat( yValue );\n // convert percent to pixels\n var layoutSize = this.layout.size;\n if ( xValue.indexOf('%') != -1 ) {\n x = ( x / 100 ) * layoutSize.width;\n }\n if ( yValue.indexOf('%') != -1 ) {\n y = ( y / 100 ) * layoutSize.height;\n }\n // clean up 'auto' or other non-integer values\n x = isNaN( x ) ? 0 : x;\n y = isNaN( y ) ? 0 : y;\n // remove padding from measurement\n x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;\n y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;\n\n this.position.x = x;\n this.position.y = y;\n};\n\n// set settled position, apply padding\nproto.layoutPosition = function() {\n var layoutSize = this.layout.size;\n var style = {};\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n\n // x\n var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';\n var xProperty = isOriginLeft ? 'left' : 'right';\n var xResetProperty = isOriginLeft ? 'right' : 'left';\n\n var x = this.position.x + layoutSize[ xPadding ];\n // set in percentage or pixels\n style[ xProperty ] = this.getXValue( x );\n // reset other property\n style[ xResetProperty ] = '';\n\n // y\n var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';\n var yProperty = isOriginTop ? 'top' : 'bottom';\n var yResetProperty = isOriginTop ? 'bottom' : 'top';\n\n var y = this.position.y + layoutSize[ yPadding ];\n // set in percentage or pixels\n style[ yProperty ] = this.getYValue( y );\n // reset other property\n style[ yResetProperty ] = '';\n\n this.css( style );\n this.emitEvent( 'layout', [ this ] );\n};\n\nproto.getXValue = function( x ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && !isHorizontal ?\n ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';\n};\n\nproto.getYValue = function( y ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && isHorizontal ?\n ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';\n};\n\nproto._transitionTo = function( x, y ) {\n this.getPosition();\n // get current x & y from top/left\n var curX = this.position.x;\n var curY = this.position.y;\n\n var didNotMove = x == this.position.x && y == this.position.y;\n\n // save end position\n this.setPosition( x, y );\n\n // if did not move and not transitioning, just go to layout\n if ( didNotMove && !this.isTransitioning ) {\n this.layoutPosition();\n return;\n }\n\n var transX = x - curX;\n var transY = y - curY;\n var transitionStyle = {};\n transitionStyle.transform = this.getTranslate( transX, transY );\n\n this.transition({\n to: transitionStyle,\n onTransitionEnd: {\n transform: this.layoutPosition\n },\n isCleaning: true\n });\n};\n\nproto.getTranslate = function( x, y ) {\n // flip cooridinates if origin on right or bottom\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n x = isOriginLeft ? x : -x;\n y = isOriginTop ? y : -y;\n return 'translate3d(' + x + 'px, ' + y + 'px, 0)';\n};\n\n// non transition + transform support\nproto.goTo = function( x, y ) {\n this.setPosition( x, y );\n this.layoutPosition();\n};\n\nproto.moveTo = proto._transitionTo;\n\nproto.setPosition = function( x, y ) {\n this.position.x = parseFloat( x );\n this.position.y = parseFloat( y );\n};\n\n// ----- transition ----- //\n\n/**\n * @param {Object} style - CSS\n * @param {Function} onTransitionEnd\n */\n\n// non transition, just trigger callback\nproto._nonTransition = function( args ) {\n this.css( args.to );\n if ( args.isCleaning ) {\n this._removeStyles( args.to );\n }\n for ( var prop in args.onTransitionEnd ) {\n args.onTransitionEnd[ prop ].call( this );\n }\n};\n\n/**\n * proper transition\n * @param {Object} args - arguments\n * @param {Object} to - style to transition to\n * @param {Object} from - style to start transition from\n * @param {Boolean} isCleaning - removes transition styles after transition\n * @param {Function} onTransitionEnd - callback\n */\nproto.transition = function( args ) {\n // redirect to nonTransition if no transition duration\n if ( !parseFloat( this.layout.options.transitionDuration ) ) {\n this._nonTransition( args );\n return;\n }\n\n var _transition = this._transn;\n // keep track of onTransitionEnd callback by css property\n for ( var prop in args.onTransitionEnd ) {\n _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ];\n }\n // keep track of properties that are transitioning\n for ( prop in args.to ) {\n _transition.ingProperties[ prop ] = true;\n // keep track of properties to clean up when transition is done\n if ( args.isCleaning ) {\n _transition.clean[ prop ] = true;\n }\n }\n\n // set from styles\n if ( args.from ) {\n this.css( args.from );\n // force redraw. http://blog.alexmaccaw.com/css-transitions\n var h = this.element.offsetHeight;\n // hack for JSHint to hush about unused var\n h = null;\n }\n // enable transition\n this.enableTransition( args.to );\n // set styles that are transitioning\n this.css( args.to );\n\n this.isTransitioning = true;\n\n};\n\n// dash before all cap letters, including first for\n// WebkitTransform => -webkit-transform\nfunction toDashedAll( str ) {\n return str.replace( /([A-Z])/g, function( $1 ) {\n return '-' + $1.toLowerCase();\n });\n}\n\nvar transitionProps = 'opacity,' + toDashedAll( transformProperty );\n\nproto.enableTransition = function(/* style */) {\n // HACK changing transitionProperty during a transition\n // will cause transition to jump\n if ( this.isTransitioning ) {\n return;\n }\n\n // make `transition: foo, bar, baz` from style object\n // HACK un-comment this when enableTransition can work\n // while a transition is happening\n // var transitionValues = [];\n // for ( var prop in style ) {\n // // dash-ify camelCased properties like WebkitTransition\n // prop = vendorProperties[ prop ] || prop;\n // transitionValues.push( toDashedAll( prop ) );\n // }\n // munge number to millisecond, to match stagger\n var duration = this.layout.options.transitionDuration;\n duration = typeof duration == 'number' ? duration + 'ms' : duration;\n // enable transition styles\n this.css({\n transitionProperty: transitionProps,\n transitionDuration: duration,\n transitionDelay: this.staggerDelay || 0\n });\n // listen for transition end event\n this.element.addEventListener( transitionEndEvent, this, false );\n};\n\n// ----- events ----- //\n\nproto.onwebkitTransitionEnd = function( event ) {\n this.ontransitionend( event );\n};\n\nproto.onotransitionend = function( event ) {\n this.ontransitionend( event );\n};\n\n// properties that I munge to make my life easier\nvar dashedVendorProperties = {\n '-webkit-transform': 'transform'\n};\n\nproto.ontransitionend = function( event ) {\n // disregard bubbled events from children\n if ( event.target !== this.element ) {\n return;\n }\n var _transition = this._transn;\n // get property name of transitioned property, convert to prefix-free\n var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName;\n\n // remove property that has completed transitioning\n delete _transition.ingProperties[ propertyName ];\n // check if any properties are still transitioning\n if ( isEmptyObj( _transition.ingProperties ) ) {\n // all properties have completed transitioning\n this.disableTransition();\n }\n // clean style\n if ( propertyName in _transition.clean ) {\n // clean up style\n this.element.style[ event.propertyName ] = '';\n delete _transition.clean[ propertyName ];\n }\n // trigger onTransitionEnd callback\n if ( propertyName in _transition.onEnd ) {\n var onTransitionEnd = _transition.onEnd[ propertyName ];\n onTransitionEnd.call( this );\n delete _transition.onEnd[ propertyName ];\n }\n\n this.emitEvent( 'transitionEnd', [ this ] );\n};\n\nproto.disableTransition = function() {\n this.removeTransitionStyles();\n this.element.removeEventListener( transitionEndEvent, this, false );\n this.isTransitioning = false;\n};\n\n/**\n * removes style property from element\n * @param {Object} style\n**/\nproto._removeStyles = function( style ) {\n // clean up transition styles\n var cleanStyle = {};\n for ( var prop in style ) {\n cleanStyle[ prop ] = '';\n }\n this.css( cleanStyle );\n};\n\nvar cleanTransitionStyle = {\n transitionProperty: '',\n transitionDuration: '',\n transitionDelay: ''\n};\n\nproto.removeTransitionStyles = function() {\n // remove transition\n this.css( cleanTransitionStyle );\n};\n\n// ----- stagger ----- //\n\nproto.stagger = function( delay ) {\n delay = isNaN( delay ) ? 0 : delay;\n this.staggerDelay = delay + 'ms';\n};\n\n// ----- show/hide/remove ----- //\n\n// remove element from DOM\nproto.removeElem = function() {\n this.element.parentNode.removeChild( this.element );\n // remove display: none\n this.css({ display: '' });\n this.emitEvent( 'remove', [ this ] );\n};\n\nproto.remove = function() {\n // just remove element if no transition support or no transition\n if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) {\n this.removeElem();\n return;\n }\n\n // start transition\n this.once( 'transitionEnd', function() {\n this.removeElem();\n });\n this.hide();\n};\n\nproto.reveal = function() {\n delete this.isHidden;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd;\n\n this.transition({\n from: options.hiddenStyle,\n to: options.visibleStyle,\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onRevealTransitionEnd = function() {\n // check if still visible\n // during transition, item may have been hidden\n if ( !this.isHidden ) {\n this.emitEvent('reveal');\n }\n};\n\n/**\n * get style property use for hide/reveal transition end\n * @param {String} styleProperty - hiddenStyle/visibleStyle\n * @returns {String}\n */\nproto.getHideRevealTransitionEndProperty = function( styleProperty ) {\n var optionStyle = this.layout.options[ styleProperty ];\n // use opacity\n if ( optionStyle.opacity ) {\n return 'opacity';\n }\n // get first property\n for ( var prop in optionStyle ) {\n return prop;\n }\n};\n\nproto.hide = function() {\n // set flag\n this.isHidden = true;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd;\n\n this.transition({\n from: options.visibleStyle,\n to: options.hiddenStyle,\n // keep hidden stuff hidden\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onHideTransitionEnd = function() {\n // check if still hidden\n // during transition, item may have been un-hidden\n if ( this.isHidden ) {\n this.css({ display: 'none' });\n this.emitEvent('hide');\n }\n};\n\nproto.destroy = function() {\n this.css({\n position: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n transition: '',\n transform: ''\n });\n};\n\nreturn Item;\n\n}));\n"],"sourceRoot":""}