{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/cash-dom/dist/cash.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/typed.js/lib/typed.js","webpack:///./node_modules/@terwanerik/scrolltrigger/dist/ScrollTrigger.js","webpack:///./app/javascript/channels/index.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./node_modules/@glidejs/glide/dist/glide.esm.js","webpack:///./app/javascript/rails/accordion.js","webpack:///./app/javascript/rails/dropdown.js","webpack:///./app/javascript/rails/cases.js","webpack:///./app/javascript/rails/faq.js","webpack:///./app/javascript/rails/features.js","webpack:///./app/javascript/rails/hero.js","webpack:///./app/javascript/rails/knowledgeEntry.js","webpack:///./app/javascript/rails/map.js","webpack:///./app/javascript/rails/message.js","webpack:///./app/javascript/rails/prices.js","webpack:///./app/javascript/rails/reader.js","webpack:///./app/javascript/rails/scrollable.js","webpack:///./app/javascript/rails/sitenav.js","webpack:///./app/javascript/rails/section.js","webpack:///./app/javascript/rails/siteHeader.js","webpack:///./app/javascript/rails/smooth-scroll.js","webpack:///./app/javascript/rails/statement.js","webpack:///./app/javascript/rails/subscribe.js","webpack:///./app/javascript/rails/testimonials.js","webpack:///./app/javascript/rails/up-form.js","webpack:///./app/javascript/packs/application.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","propMap","contenteditable","readonly","maxlength","tabindex","colspan","rowspan","usemap","attempt","fn","arg","_a","doc","document","win","window","docEle","documentElement","createElement","div","table","tbody","tr","isArray","Array","ArrayPrototype","concat","filter","indexOf","map","push","slice","some","splice","idRe","classRe","htmlRe","tagRe","find","selector","context","isDocument","isElement","test","getElementsByClassName","getElementsByTagName","querySelectorAll","Cash","isCash","eles","isString","ctx","getElementById","parseHTML","isFunction","this","ready","nodeType","length","init","cash","callback","apply","ele","start","end","dashAlphaRe","camelCase","str","replace","match","letter","toUpperCase","matches","x","isWindow","isUndefined","undefined","isNull","isNumeric","isNaN","parseFloat","isFinite","isPlainObject","proto","getPrototypeOf","each","arr","_reverse","keys","extend","sources","_i","arguments","deep","shift","target","source","constructor","getCompareFunction","comparator","is","filtered","collection","guid","index","Number","eq","first","last","prop","removeProp","plugins","compare","splitValuesRe","getSplitValues","pluck","until","plucked","isCallback","val_1","val_2","unique","item","self","computeStyle","isVariable","style","getComputedStyle","getPropertyValue","computeStyleInt","parseInt","hasClass","cls","classList","contains","removeAttr","attr","attrs","a","removeAttribute","value_1","getAttribute","setAttribute","toggleClass","force","classes","isForce","add","remove","toggle","addClass","removeClass","cssVariableRe","isCSSVariable","prefixedProps","vendorsPrefixes","numericProps","animationIterationCount","columnCount","flexGrow","flexShrink","fontWeight","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","opacity","order","orphans","widows","zIndex","getSuffixedValue","css","isVariable_1","propCC","propUC","join","split","getPrefixedProp","setProperty","JSONStringRe","getData","dataset","JSON","parse","getDocumentDimension","dimension","Math","max","body","getExtraSpace","xAxis","data","datas","stringify","setData","outer","includeMargins","propLC","toLowerCase","getBoundingClientRect","valueNumber","boxSizing","defaultDisplay","isHidden","displayProperty","hasNamespaces","ns1","ns2","display","tagName","insertBefore","removeChild","getDefaultDisplay","hide","show","eventsNamespace","eventsNamespacesSeparator","eventsFocus","focus","blur","eventsHover","mouseenter","mouseleave","eventsMouseRe","getEventNameBubbling","getEventsCache","parseEventName","eventName","parts","sort","removeEvent","namespaces","cache","sel","cb","removeEventListener","getValue","multiple","options","option","selected","disabled","parentNode","off","eventFullName","_this","nameOriginal","on","_one","isEventHover","isEventFocus","finalCallback","event","type","stopImmediatePropagation","namespace","___ot","relatedTarget","thisArg","___cd","configurable","returnValue","___td","preventDefault","stopPropagation","eventCache","addEventListener","addEvent","one","setTimeout","readyState","trigger","name_1","createEvent","initEvent","dispatchEvent","queryEncodeSpaceRe","queryEncodeCRLFRe","skippableRe","checkableRe","serialize","query","elements","checked","encodeURIComponent","queryEncode","val","isSelect","eleValue_1","String","clone","cloneNode","detach","fragmentRe","singleTagRe","containers","td","th","thead","tfoot","html","RegExp","$1","fragment","container","innerHTML","childNodes","empty","firstChild","text","textContent","unwrap","parent","$ele","replaceWith","children","offset","rect","top","pageYOffset","left","pageXOffset","offsetParent","position","isFixed","doc_1","ownerDocument","parentOffset","contents","contentDocument","content","HTMLCDATARe","scriptTypeRe","scriptAttributes","insertElement","anchor","inside","evaluate","nextSibling","node","script_1","head","evalScripts","insertSelectors","selectors","anchors","inverse","reverseLoop1","reverseLoop2","reverseLoop3","si","ti","ai","targetFinal","indexFinal","after","append","appendTo","before","insertAfter","prepend","prependTo","replaceAll","wrapAll","structure","wrapper","firstElementChild","wrap","wrapInner","has","next","_all","_until","nextAll","nextUntil","not","child","closest","$parent","parents","parentsUntil","prev","prevAll","prevUntil","siblings","createCommonjsModule","sparkMd5","factory","hex_chr","md5cycle","k","b","md5blk","md5blks","charCodeAt","md5blk_array","md51","tail","tmp","lo","hi","state","substring","toString","md51_array","subarray","Uint8Array","rhex","j","hex","toUtf8","unescape","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arrayBuffer2Utf8Str","fromCharCode","concatenateArrayBuffers","second","result","byteLength","set","buffer","hexToBinaryString","bytes","substr","SparkMD5","reset","clamp","min","from","to","num","targetArray","sourceArray","begin","appendBinary","_buff","_length","_hash","raw","ret","_finish","getState","hash","setState","destroy","hashBinary","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","props","descriptor","writable","protoProps","staticProps","fileSlice","File","mozSlice","webkitSlice","FileChecksum","file","chunkSize","chunkCount","ceil","size","chunkIndex","md5Buffer","fileReader","FileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","getMetaValue","element","findElement","findElements","root","toArray$1","querySelector","eventInit","bubbles","cancelable","detail","BlobRecord","checksum","url","attributes","filename","content_type","byte_size","xhr","XMLHttpRequest","open","responseType","setRequestHeader","csrfToken","requestDidLoad","requestDidError","send","blob","status","response","direct_upload","directUploadData","toJSON","_xhr","BlobUpload","_blob$directUploadDat","headers","id","DirectUpload","delegate","error","notify","upload","methodName","_len","messages","_key","DirectUploadController","input","directUpload","dispatch","hiddenInput","insertAdjacentElement","dispatchError","signed_id","progress","loaded","total","defaultPrevented","alert","_this2","uploadRequestDidProgress","inputSelector","DirectUploadsController","form","inputs","files","controllers","createDirectUploadControllers","startNextController","controller","forEach","processingAttribute","submitButtonsByForm","WeakMap","started","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","hasAttribute","disable","enable","submitForm","button","click","appendChild","delete","autostart","ActiveStorage","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","cspNonce","expando","Element","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","$","csrfParam","meta","CSRFProtection","token","refreshCSRFTokens","param","CustomEvent","fire","params","evt","initCustomEvent","Event","obj","stopEverything","e","eventType","handler","AcceptHeaders","createXHR","prepareOptions","processResponse","xml","json","script","ajax","responseText","getResponseHeader","floor","success","statusText","complete","beforeSend","OPENED","location","href","dataType","accept","done","crossDomain","withCredentials","onreadystatechange","DONE","parser","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","formElements","el","allowAction","handleConfirm","confirm","message","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","link","method","action","isRemote","handleRemote","enctype","FormData","args","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","jQuery","rails","Error","ajaxPrefilter","originalOptions","_rails_loaded","_createClass","_initializerJs","_htmlParserJs","Typed","elementId","_classCallCheck","initializer","load","pause","stop","typingComplete","toggleBlinking","onStop","arrayPos","typewrite","curString","curStrPos","backspace","onStart","onDestroy","restart","clearInterval","timeout","replaceText","cursor","strPos","curLoop","insertCursor","onReset","onBegin","shuffleStringsIfNeeded","bindInputFocusEvents","bindFocusEvents","currentElContent","strings","sequence","startDelay","fadeOut","fadeOutClass","humanize","humanizer","typeSpeed","numChars","htmlParser","typeHtmlChars","pauseTime","charAt","skip","exec","temporaryPause","onTypingPaused","stringBeforeSkip","stringSkipped","stringAfterSkip","doneTyping","keepTyping","onTypingResumed","setPauseStatus","preStringTyped","nextString","_this3","onStringTyped","loop","loopCount","backDelay","_this4","initFadeOut","backSpeed","backSpaceHtmlChars","curStringAtPosition","smartBackspace","stopNum","onLastStringBackspaced","onComplete","isTyping","isBlinking","cursorBlinking","speed","round","random","shuffle","_this5","className","fadeOutDelay","isInput","contentType","_this6","showCursor","cursorChar","_extends","assign","_defaultsJs","_defaultsJs2","Initializer","elContent","isPaused","trim","stringsElement","stringsLength","stringEl","getCurrentElContent","autoInsertCss","appendAnimationCss","cssDataName","innerCss","defaults","Infinity","HTMLParser","curChar","endTag","NodeList","__webpack_exports__","DefaultOptions","once","viewport","y","out","visible","scroll","sustain","directionChange","extend_default","_defineProperties","isInt","isFloat","Trigger_Trigger","Trigger","active","direction","parentFrame","w","offsetWidth","innerWidth","h","offsetHeight","innerHeight","getBounds","_checkVisibility","_toggleCallback","Promise","then","_toggleClass","console","width","height","elementOffset","_getElementOffset","viewportOffset","_getViewportOffset","TriggerCollection_defineProperties","TriggerCollection_TriggerCollection","TriggerCollection","triggers","TriggerCollection_classCallCheck","objects","hit","found","ScrollAnimationLoop_defineProperties","ScrollAnimationLoop_ScrollAnimationLoop","ScrollAnimationLoop","ScrollAnimationLoop_classCallCheck","_parseOptions","getPosition","lastAction","_getTimestamp","_startRun","_boundListener","_didScroll","startCallback","stopCallback","newPosition","newDirection","running","_loop","scrollLeft","scrollTop","Date","now","_stopRun","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","_tick","ScrollTrigger_defineProperties","ScrollTrigger_Trigger","ScrollTrigger_TriggerCollection","ScrollTrigger_ScrollAnimationLoop","ScrollTrigger_ScrollTrigger","ScrollTrigger","ScrollTrigger_classCallCheck","_initCollection","_initLoop","defaultTrigger","scrollOptions","scrollAttributes","createTriggers","_scrollCallback","_scrollStart","_scrollStop","_scrollDirectionChange","checkVisibility","createTrigger","HTMLElement","search","kill","channels","require","webpackEmptyContext","req","code","resolve","_typeof","iterator","_getPrototypeOf","setPrototypeOf","__proto__","_setPrototypeOf","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","NewTarget","_get","receiver","base","_superPropBase","desc","getOwnPropertyDescriptor","currentTarget","startAt","perView","focusAt","gap","autoplay","hoverpause","keyboard","bound","swipeThreshold","dragThreshold","perSwipe","touchRatio","touchAngle","animationDuration","rewind","rewindDuration","animationTimingFunc","waitForTransition","throttle","peek","cloningRatio","breakpoints","swipeable","dragging","ltr","rtl","slider","carousel","slide","arrow","nav","warn","msg","toInt","isObject","define","definition","mergeOptions","settings","EventsBus","events","hop","emit","Glide$1","Glide","_c","_t","_e","extensions","glide","components","_name","mount","transformers","pattern","Run","make","distance","Transition","Move","interval","_o","_d","getTime","func","wait","previous","later","leading","throttled","at","remaining","clearTimeout","trailing","cancel","MARGIN_TYPE","matched","exist","TRACK_SELECTOR","EventsBinder","listeners","closure","capture","VALID_DIRECTIONS","FLIPED_MOVEMENTS","Rtl","Components","modify","translate","Direction","Gap","multiplier","Sizes","slideWidth","Gaps","Grow","Clones","grow","Peeking","Peek","Focusing","supportsPassive","opts","supportsPassive$1","START_EVENTS","MOVE_EVENTS","END_EVENTS","MOUSE_EVENTS","CONTROLS_SELECTOR","PREVIOUS_CONTROLS_SELECTOR","NEXT_CONTROLS_SELECTOR","sortBreakpoints","points","reduce","COMPONENTS","Html","Events","track","collectSlides","slides","_r","Translate","transform","TRANSFORMERS","mutate","transformer","mutator","translate3d","mozTransform","webkitTransform","getStartIndex","isOffset","getTravelDistance","travelDistance","isType","movement","startWidth","compose","duration","transition","_v","setupSlides","setupWrapper","wrapperSize","reductor","len","marginLeft","marginRight","items","collect","_Glide$settings","cloneCount","reverse","_clone","unshift","_Components$Html","half","_i2","_i3","Resize","Binder","unbind","Build","typeClass","activeClass","sibling","removeClasses","_Glide$settings$class","move","calculate","isStart","isEnd","steps","viewSize","calculateForwardIndex","isBound","normalizeForwardIndex","_index","view","calculateBackwardIndex","normalizeBackwardIndex","_m","step","Swipe","swipeSin","swipeStartX","swipeStartY","passive","bindSwipeStart","swipe","touches","pageX","pageY","bindSwipeMove","bindSwipeEnd","subExSx","subEySy","powEX","abs","powEY","swipeHypotenuse","sqrt","swipeCathetus","asin","PI","_Glide$settings2","threshold","swipeDistance","swipeDeg","unbindSwipeMove","unbindSwipeEnd","_Glide$settings3","unbindSwipeStart","changedTouches","Images","dragstart","Anchors","detached","prevented","draggable","attach","Controls","_n","_arrowControls","addBindings","setActive","removeActive","controls","setArrowState","resetArrowState","disableArrow","lists","list","_len2","_key2","removeBindings","Keyboard","press","keyCode","Autoplay","setInterval","time","Breakpoints","matchMedia","point","_Core","subClass","superClass","_inherits","_super","dropdown","close","elem","toggleTextSpan","dropdownItems","selectedItem","nextIndex","prevIndex","currentIndex","log","bof","headings","lang","executeSearch","inputElement","category","initInterval","counter","resizeTimeout","getMapCenter","center","validateField","field","valid","mapboxgl","src","rel","includeMapScript","accessToken","Map","zoom","interactive","Marker","color","setLngLat","addTo","setCenter","nextElementSibling","icon","updateHandlePosition","scrollPosition","contentInner","handle","handlePosition","initScrollables","component","handleWidth","setHandleWidth","navigate","rightButton","leftButton","scrollTo","behavior","hideMega","scrollBar","factor","clientX","offsetLeft","oldPosition","scrollPos","clientHeight","isScrolledDown","isShowing","isHiding","hasBackgroundColor","readerMenu","onScroll","scrollY","mega","scrollIntoView","locale","frameDuration","totalFrames","animateCountUp","frame","countTo","currentCount","number","Intl","NumberFormat","format","formatNumber","navigator","userAgent","in","isBot","determineBot","positionLabel"],"mappings":"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","file":"js/application-720d6dc3d87b621edd6a.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 = 7);\n","/* MIT https://github.com/fabiospampinato/cash */\n(function () {\n \"use strict\";\n\n var propMap = {\n /* GENERAL */\n \"class\": 'className',\n contenteditable: 'contentEditable',\n /* LABEL */\n \"for\": 'htmlFor',\n /* INPUT */\n readonly: 'readOnly',\n maxlength: 'maxLength',\n tabindex: 'tabIndex',\n /* TABLE */\n colspan: 'colSpan',\n rowspan: 'rowSpan',\n /* IMAGE */\n usemap: 'useMap'\n };\n function attempt(fn, arg) {\n try {\n return fn(arg);\n } catch (_a) {\n return arg;\n }\n }\n var doc = document,\n win = window,\n docEle = doc.documentElement,\n createElement = doc.createElement.bind(doc),\n div = createElement('div'),\n table = createElement('table'),\n tbody = createElement('tbody'),\n tr = createElement('tr'),\n isArray = Array.isArray,\n ArrayPrototype = Array.prototype,\n concat = ArrayPrototype.concat,\n filter = ArrayPrototype.filter,\n indexOf = ArrayPrototype.indexOf,\n map = ArrayPrototype.map,\n push = ArrayPrototype.push,\n slice = ArrayPrototype.slice,\n some = ArrayPrototype.some,\n splice = ArrayPrototype.splice;\n var idRe = /^#(?:[\\w-]|\\\\.|[^\\x00-\\xa0])*$/,\n classRe = /^\\.(?:[\\w-]|\\\\.|[^\\x00-\\xa0])*$/,\n htmlRe = /<.+>/,\n tagRe = /^\\w+$/; // @require ./variables.ts\n\n function find(selector, context) {\n return !selector || !isDocument(context) && !isElement(context) ? [] : classRe.test(selector) ? context.getElementsByClassName(selector.slice(1)) : tagRe.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector);\n } // @require ./find.ts\n // @require ./variables.ts\n\n var Cash = /** @class */\n function () {\n function Cash(selector, context) {\n if (!selector) return;\n if (isCash(selector)) return selector;\n var eles = selector;\n if (isString(selector)) {\n var ctx = (isCash(context) ? context[0] : context) || doc;\n eles = idRe.test(selector) ? ctx.getElementById(selector.slice(1)) : htmlRe.test(selector) ? parseHTML(selector) : find(selector, ctx);\n if (!eles) return;\n } else if (isFunction(selector)) {\n return this.ready(selector); //FIXME: `fn.ready` is not included in `core`, but it's actually a core functionality\n }\n\n if (eles.nodeType || eles === win) eles = [eles];\n this.length = eles.length;\n for (var i = 0, l = this.length; i < l; i++) {\n this[i] = eles[i];\n }\n }\n Cash.prototype.init = function (selector, context) {\n return new Cash(selector, context);\n };\n return Cash;\n }();\n var fn = Cash.prototype,\n cash = fn.init;\n cash.fn = cash.prototype = fn; // Ensuring that `cash () instanceof cash`\n\n fn.length = 0;\n fn.splice = splice; // Ensuring a cash collection gets printed as array-like in Chrome's devtools\n\n if (typeof Symbol === 'function') {\n // Ensuring a cash collection is iterable\n fn[Symbol['iterator']] = ArrayPrototype[Symbol['iterator']];\n }\n fn.map = function (callback) {\n return cash(concat.apply([], map.call(this, function (ele, i) {\n return callback.call(ele, i, ele);\n })));\n };\n fn.slice = function (start, end) {\n return cash(slice.call(this, start, end));\n }; // @require ./cash.ts\n\n var dashAlphaRe = /-([a-z])/g;\n function camelCase(str) {\n return str.replace(dashAlphaRe, function (match, letter) {\n return letter.toUpperCase();\n });\n }\n cash.guid = 1; // @require ./cash.ts\n\n function matches(ele, selector) {\n var matches = ele && (ele['matches'] || ele['webkitMatchesSelector'] || ele['msMatchesSelector']);\n return !!matches && !!selector && matches.call(ele, selector);\n }\n function isCash(x) {\n return x instanceof Cash;\n }\n function isWindow(x) {\n return !!x && x === x.window;\n }\n function isDocument(x) {\n return !!x && x.nodeType === 9;\n }\n function isElement(x) {\n return !!x && x.nodeType === 1;\n }\n function isBoolean(x) {\n return typeof x === 'boolean';\n }\n function isFunction(x) {\n return typeof x === 'function';\n }\n function isString(x) {\n return typeof x === 'string';\n }\n function isUndefined(x) {\n return x === undefined;\n }\n function isNull(x) {\n return x === null;\n }\n function isNumeric(x) {\n return !isNaN(parseFloat(x)) && isFinite(x);\n }\n function isPlainObject(x) {\n if (typeof x !== 'object' || x === null) return false;\n var proto = Object.getPrototypeOf(x);\n return proto === null || proto === Object.prototype;\n }\n cash.isWindow = isWindow;\n cash.isFunction = isFunction;\n cash.isArray = isArray;\n cash.isNumeric = isNumeric;\n cash.isPlainObject = isPlainObject;\n fn.get = function (index) {\n if (isUndefined(index)) return slice.call(this);\n index = Number(index);\n return this[index < 0 ? index + this.length : index];\n };\n fn.eq = function (index) {\n return cash(this.get(index));\n };\n fn.first = function () {\n return this.eq(0);\n };\n fn.last = function () {\n return this.eq(-1);\n };\n function each(arr, callback, _reverse) {\n if (_reverse) {\n var i = arr.length;\n while (i--) {\n if (callback.call(arr[i], i, arr[i]) === false) return arr;\n }\n } else if (isPlainObject(arr)) {\n var keys = Object.keys(arr);\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n if (callback.call(arr[key], key, arr[key]) === false) return arr;\n }\n } else {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (callback.call(arr[i], i, arr[i]) === false) return arr;\n }\n }\n return arr;\n }\n cash.each = each;\n fn.each = function (callback) {\n return each(this, callback);\n };\n fn.prop = function (prop, value) {\n if (!prop) return;\n if (isString(prop)) {\n prop = propMap[prop] || prop;\n if (arguments.length < 2) return this[0] && this[0][prop];\n return this.each(function (i, ele) {\n ele[prop] = value;\n });\n }\n for (var key in prop) {\n this.prop(key, prop[key]);\n }\n return this;\n };\n fn.removeProp = function (prop) {\n return this.each(function (i, ele) {\n delete ele[propMap[prop] || prop];\n });\n };\n function extend() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n var deep = isBoolean(sources[0]) ? sources.shift() : false,\n target = sources.shift(),\n length = sources.length;\n if (!target) return {};\n if (!length) return extend(deep, cash, target);\n for (var i = 0; i < length; i++) {\n var source = sources[i];\n for (var key in source) {\n if (deep && (isArray(source[key]) || isPlainObject(source[key]))) {\n if (!target[key] || target[key].constructor !== source[key].constructor) target[key] = new source[key].constructor();\n extend(deep, target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n }\n }\n return target;\n }\n cash.extend = extend;\n fn.extend = function (plugins) {\n return extend(fn, plugins);\n }; // @require ./matches.ts\n // @require ./type_checking.ts\n\n function getCompareFunction(comparator) {\n return isString(comparator) ? function (i, ele) {\n return matches(ele, comparator);\n } : isFunction(comparator) ? comparator : isCash(comparator) ? function (i, ele) {\n return comparator.is(ele);\n } : !comparator ? function () {\n return false;\n } : function (i, ele) {\n return ele === comparator;\n };\n }\n fn.filter = function (comparator) {\n var compare = getCompareFunction(comparator);\n return cash(filter.call(this, function (ele, i) {\n return compare.call(ele, i, ele);\n }));\n }; // @require collection/filter.ts\n\n function filtered(collection, comparator) {\n return !comparator ? collection : collection.filter(comparator);\n } // @require ./type_checking.ts\n\n var splitValuesRe = /\\S+/g;\n function getSplitValues(str) {\n return isString(str) ? str.match(splitValuesRe) || [] : [];\n }\n fn.hasClass = function (cls) {\n return !!cls && some.call(this, function (ele) {\n return isElement(ele) && ele.classList.contains(cls);\n });\n };\n fn.removeAttr = function (attr) {\n var attrs = getSplitValues(attr);\n return this.each(function (i, ele) {\n if (!isElement(ele)) return;\n each(attrs, function (i, a) {\n ele.removeAttribute(a);\n });\n });\n };\n function attr(attr, value) {\n if (!attr) return;\n if (isString(attr)) {\n if (arguments.length < 2) {\n if (!this[0] || !isElement(this[0])) return;\n var value_1 = this[0].getAttribute(attr);\n return isNull(value_1) ? undefined : value_1;\n }\n if (isUndefined(value)) return this;\n if (isNull(value)) return this.removeAttr(attr);\n return this.each(function (i, ele) {\n if (!isElement(ele)) return;\n ele.setAttribute(attr, value);\n });\n }\n for (var key in attr) {\n this.attr(key, attr[key]);\n }\n return this;\n }\n fn.attr = attr;\n fn.toggleClass = function (cls, force) {\n var classes = getSplitValues(cls),\n isForce = !isUndefined(force);\n return this.each(function (i, ele) {\n if (!isElement(ele)) return;\n each(classes, function (i, c) {\n if (isForce) {\n force ? ele.classList.add(c) : ele.classList.remove(c);\n } else {\n ele.classList.toggle(c);\n }\n });\n });\n };\n fn.addClass = function (cls) {\n return this.toggleClass(cls, true);\n };\n fn.removeClass = function (cls) {\n if (arguments.length) return this.toggleClass(cls, false);\n return this.attr('class', '');\n };\n function pluck(arr, prop, deep, until) {\n var plucked = [],\n isCallback = isFunction(prop),\n compare = until && getCompareFunction(until);\n for (var i = 0, l = arr.length; i < l; i++) {\n if (isCallback) {\n var val_1 = prop(arr[i]);\n if (val_1.length) push.apply(plucked, val_1);\n } else {\n var val_2 = arr[i][prop];\n while (val_2 != null) {\n if (until && compare(-1, val_2)) break;\n plucked.push(val_2);\n val_2 = deep ? val_2[prop] : null;\n }\n }\n }\n return plucked;\n }\n function unique(arr) {\n return arr.length > 1 ? filter.call(arr, function (item, index, self) {\n return indexOf.call(self, item) === index;\n }) : arr;\n }\n cash.unique = unique;\n fn.add = function (selector, context) {\n return cash(unique(this.get().concat(cash(selector, context).get())));\n }; // @require core/type_checking.ts\n // @require core/variables.ts\n\n function computeStyle(ele, prop, isVariable) {\n if (!isElement(ele)) return;\n var style = win.getComputedStyle(ele, null);\n return isVariable ? style.getPropertyValue(prop) || undefined : style[prop] || ele.style[prop];\n } // @require ./compute_style.ts\n\n function computeStyleInt(ele, prop) {\n return parseInt(computeStyle(ele, prop), 10) || 0;\n }\n var cssVariableRe = /^--/; // @require ./variables.ts\n\n function isCSSVariable(prop) {\n return cssVariableRe.test(prop);\n } // @require core/camel_case.ts\n // @require core/cash.ts\n // @require core/each.ts\n // @require core/variables.ts\n // @require ./is_css_variable.ts\n\n var prefixedProps = {},\n style = div.style,\n vendorsPrefixes = ['webkit', 'moz', 'ms'];\n function getPrefixedProp(prop, isVariable) {\n if (isVariable === void 0) {\n isVariable = isCSSVariable(prop);\n }\n if (isVariable) return prop;\n if (!prefixedProps[prop]) {\n var propCC = camelCase(prop),\n propUC = \"\" + propCC[0].toUpperCase() + propCC.slice(1),\n props = (propCC + \" \" + vendorsPrefixes.join(propUC + \" \") + propUC).split(' ');\n each(props, function (i, p) {\n if (p in style) {\n prefixedProps[prop] = p;\n return false;\n }\n });\n }\n return prefixedProps[prop];\n }\n ; // @require core/type_checking.ts\n // @require ./is_css_variable.ts\n\n var numericProps = {\n animationIterationCount: true,\n columnCount: true,\n flexGrow: true,\n flexShrink: true,\n fontWeight: true,\n gridArea: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnStart: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowStart: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n widows: true,\n zIndex: true\n };\n function getSuffixedValue(prop, value, isVariable) {\n if (isVariable === void 0) {\n isVariable = isCSSVariable(prop);\n }\n return !isVariable && !numericProps[prop] && isNumeric(value) ? value + \"px\" : value;\n }\n function css(prop, value) {\n if (isString(prop)) {\n var isVariable_1 = isCSSVariable(prop);\n prop = getPrefixedProp(prop, isVariable_1);\n if (arguments.length < 2) return this[0] && computeStyle(this[0], prop, isVariable_1);\n if (!prop) return this;\n value = getSuffixedValue(prop, value, isVariable_1);\n return this.each(function (i, ele) {\n if (!isElement(ele)) return;\n if (isVariable_1) {\n ele.style.setProperty(prop, value);\n } else {\n ele.style[prop] = value;\n }\n });\n }\n for (var key in prop) {\n this.css(key, prop[key]);\n }\n return this;\n }\n ;\n fn.css = css; // @optional ./css.ts\n // @require core/attempt.ts\n // @require core/camel_case.ts\n\n var JSONStringRe = /^\\s+|\\s+$/;\n function getData(ele, key) {\n var value = ele.dataset[key] || ele.dataset[camelCase(key)];\n if (JSONStringRe.test(value)) return value;\n return attempt(JSON.parse, value);\n } // @require core/attempt.ts\n // @require core/camel_case.ts\n\n function setData(ele, key, value) {\n value = attempt(JSON.stringify, value);\n ele.dataset[camelCase(key)] = value;\n }\n function data(name, value) {\n if (!name) {\n if (!this[0]) return;\n var datas = {};\n for (var key in this[0].dataset) {\n datas[key] = getData(this[0], key);\n }\n return datas;\n }\n if (isString(name)) {\n if (arguments.length < 2) return this[0] && getData(this[0], name);\n if (isUndefined(value)) return this;\n return this.each(function (i, ele) {\n setData(ele, name, value);\n });\n }\n for (var key in name) {\n this.data(key, name[key]);\n }\n return this;\n }\n fn.data = data; // @optional ./data.ts\n\n function getDocumentDimension(doc, dimension) {\n var docEle = doc.documentElement;\n return Math.max(doc.body[\"scroll\" + dimension], docEle[\"scroll\" + dimension], doc.body[\"offset\" + dimension], docEle[\"offset\" + dimension], docEle[\"client\" + dimension]);\n } // @require css/helpers/compute_style_int.ts\n\n function getExtraSpace(ele, xAxis) {\n return computeStyleInt(ele, \"border\" + (xAxis ? 'Left' : 'Top') + \"Width\") + computeStyleInt(ele, \"padding\" + (xAxis ? 'Left' : 'Top')) + computeStyleInt(ele, \"padding\" + (xAxis ? 'Right' : 'Bottom')) + computeStyleInt(ele, \"border\" + (xAxis ? 'Right' : 'Bottom') + \"Width\");\n }\n each([true, false], function (i, outer) {\n each(['Width', 'Height'], function (i, prop) {\n var name = \"\" + (outer ? 'outer' : 'inner') + prop;\n fn[name] = function (includeMargins) {\n if (!this[0]) return;\n if (isWindow(this[0])) return outer ? this[0][\"inner\" + prop] : this[0].document.documentElement[\"client\" + prop];\n if (isDocument(this[0])) return getDocumentDimension(this[0], prop);\n return this[0][\"\" + (outer ? 'offset' : 'client') + prop] + (includeMargins && outer ? computeStyleInt(this[0], \"margin\" + (i ? 'Top' : 'Left')) + computeStyleInt(this[0], \"margin\" + (i ? 'Bottom' : 'Right')) : 0);\n };\n });\n });\n each(['Width', 'Height'], function (index, prop) {\n var propLC = prop.toLowerCase();\n fn[propLC] = function (value) {\n if (!this[0]) return isUndefined(value) ? undefined : this;\n if (!arguments.length) {\n if (isWindow(this[0])) return this[0].document.documentElement[\"client\" + prop];\n if (isDocument(this[0])) return getDocumentDimension(this[0], prop);\n return this[0].getBoundingClientRect()[propLC] - getExtraSpace(this[0], !index);\n }\n var valueNumber = parseInt(value, 10);\n return this.each(function (i, ele) {\n if (!isElement(ele)) return;\n var boxSizing = computeStyle(ele, 'boxSizing');\n ele.style[propLC] = getSuffixedValue(propLC, valueNumber + (boxSizing === 'border-box' ? getExtraSpace(ele, !index) : 0));\n });\n };\n }); // @optional ./inner_outer.ts\n // @optional ./normal.ts\n // @require css/helpers/compute_style.ts\n\n var defaultDisplay = {};\n function getDefaultDisplay(tagName) {\n if (defaultDisplay[tagName]) return defaultDisplay[tagName];\n var ele = createElement(tagName);\n doc.body.insertBefore(ele, null);\n var display = computeStyle(ele, 'display');\n doc.body.removeChild(ele);\n return defaultDisplay[tagName] = display !== 'none' ? display : 'block';\n } // @require css/helpers/compute_style.ts\n\n function isHidden(ele) {\n return computeStyle(ele, 'display') === 'none';\n }\n var displayProperty = '___cd';\n fn.toggle = function (force) {\n return this.each(function (i, ele) {\n if (!isElement(ele)) return;\n var show = isUndefined(force) ? isHidden(ele) : force;\n if (show) {\n ele.style.display = ele[displayProperty] || '';\n if (isHidden(ele)) {\n ele.style.display = getDefaultDisplay(ele.tagName);\n }\n } else {\n ele[displayProperty] = computeStyle(ele, 'display');\n ele.style.display = 'none';\n }\n });\n };\n fn.hide = function () {\n return this.toggle(false);\n };\n fn.show = function () {\n return this.toggle(true);\n }; // @optional ./hide.ts\n // @optional ./show.ts\n // @optional ./toggle.ts\n\n function hasNamespaces(ns1, ns2) {\n return !ns2 || !some.call(ns2, function (ns) {\n return ns1.indexOf(ns) < 0;\n });\n }\n var eventsNamespace = '___ce',\n eventsNamespacesSeparator = '.',\n eventsFocus = {\n focus: 'focusin',\n blur: 'focusout'\n },\n eventsHover = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n },\n eventsMouseRe = /^(mouse|pointer|contextmenu|drag|drop|click|dblclick)/i; // @require ./variables.ts\n\n function getEventNameBubbling(name) {\n return eventsHover[name] || eventsFocus[name] || name;\n } // @require ./variables.ts\n\n function getEventsCache(ele) {\n return ele[eventsNamespace] = ele[eventsNamespace] || {};\n } // @require core/guid.ts\n // @require events/helpers/get_events_cache.ts\n\n function addEvent(ele, name, namespaces, selector, callback) {\n var eventCache = getEventsCache(ele);\n eventCache[name] = eventCache[name] || [];\n eventCache[name].push([namespaces, selector, callback]);\n ele.addEventListener(name, callback);\n } // @require ./variables.ts\n\n function parseEventName(eventName) {\n var parts = eventName.split(eventsNamespacesSeparator);\n return [parts[0], parts.slice(1).sort()]; // [name, namespace[]]\n } // @require ./get_events_cache.ts\n // @require ./has_namespaces.ts\n // @require ./parse_event_name.ts\n\n function removeEvent(ele, name, namespaces, selector, callback) {\n var cache = getEventsCache(ele);\n if (!name) {\n for (name in cache) {\n removeEvent(ele, name, namespaces, selector, callback);\n }\n } else if (cache[name]) {\n cache[name] = cache[name].filter(function (_a) {\n var ns = _a[0],\n sel = _a[1],\n cb = _a[2];\n if (callback && cb.guid !== callback.guid || !hasNamespaces(ns, namespaces) || selector && selector !== sel) return true;\n ele.removeEventListener(name, cb);\n });\n }\n }\n fn.off = function (eventFullName, selector, callback) {\n var _this = this;\n if (isUndefined(eventFullName)) {\n this.each(function (i, ele) {\n if (!isElement(ele) && !isDocument(ele) && !isWindow(ele)) return;\n removeEvent(ele);\n });\n } else if (!isString(eventFullName)) {\n for (var key in eventFullName) {\n this.off(key, eventFullName[key]);\n }\n } else {\n if (isFunction(selector)) {\n callback = selector;\n selector = '';\n }\n each(getSplitValues(eventFullName), function (i, eventFullName) {\n var _a = parseEventName(eventFullName),\n nameOriginal = _a[0],\n namespaces = _a[1],\n name = getEventNameBubbling(nameOriginal);\n _this.each(function (i, ele) {\n if (!isElement(ele) && !isDocument(ele) && !isWindow(ele)) return;\n removeEvent(ele, name, namespaces, selector, callback);\n });\n });\n }\n return this;\n };\n function on(eventFullName, selector, data, callback, _one) {\n var _this = this;\n if (!isString(eventFullName)) {\n for (var key in eventFullName) {\n this.on(key, selector, data, eventFullName[key], _one);\n }\n return this;\n }\n if (!isString(selector)) {\n if (isUndefined(selector) || isNull(selector)) {\n selector = '';\n } else if (isUndefined(data)) {\n data = selector;\n selector = '';\n } else {\n callback = data;\n data = selector;\n selector = '';\n }\n }\n if (!isFunction(callback)) {\n callback = data;\n data = undefined;\n }\n if (!callback) return this;\n each(getSplitValues(eventFullName), function (i, eventFullName) {\n var _a = parseEventName(eventFullName),\n nameOriginal = _a[0],\n namespaces = _a[1],\n name = getEventNameBubbling(nameOriginal),\n isEventHover = (nameOriginal in eventsHover),\n isEventFocus = (nameOriginal in eventsFocus);\n if (!name) return;\n _this.each(function (i, ele) {\n if (!isElement(ele) && !isDocument(ele) && !isWindow(ele)) return;\n var finalCallback = function finalCallback(event) {\n if (event.target[\"___i\" + event.type]) return event.stopImmediatePropagation(); // Ignoring native event in favor of the upcoming custom one\n\n if (event.namespace && !hasNamespaces(namespaces, event.namespace.split(eventsNamespacesSeparator))) return;\n if (!selector && (isEventFocus && (event.target !== ele || event.___ot === name) || isEventHover && event.relatedTarget && ele.contains(event.relatedTarget))) return;\n var thisArg = ele;\n if (selector) {\n var target = event.target;\n while (!matches(target, selector)) {\n if (target === ele) return;\n target = target.parentNode;\n if (!target) return;\n }\n thisArg = target;\n event.___cd = true; // Delegate\n }\n\n if (event.___cd) {\n Object.defineProperty(event, 'currentTarget', {\n configurable: true,\n get: function get() {\n return thisArg;\n }\n });\n }\n Object.defineProperty(event, 'data', {\n configurable: true,\n get: function get() {\n return data;\n }\n });\n var returnValue = callback.call(thisArg, event, event.___td);\n if (_one) {\n removeEvent(ele, name, namespaces, selector, finalCallback);\n }\n if (returnValue === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n finalCallback.guid = callback.guid = callback.guid || cash.guid++;\n addEvent(ele, name, namespaces, selector, finalCallback);\n });\n });\n return this;\n }\n fn.on = on;\n function one(eventFullName, selector, data, callback) {\n return this.on(eventFullName, selector, data, callback, true);\n }\n ;\n fn.one = one;\n fn.ready = function (callback) {\n var cb = function cb() {\n return setTimeout(callback, 0, cash);\n };\n if (doc.readyState !== 'loading') {\n cb();\n } else {\n doc.addEventListener('DOMContentLoaded', cb);\n }\n return this;\n };\n fn.trigger = function (event, data) {\n if (isString(event)) {\n var _a = parseEventName(event),\n nameOriginal = _a[0],\n namespaces = _a[1],\n name_1 = getEventNameBubbling(nameOriginal);\n if (!name_1) return this;\n var type = eventsMouseRe.test(name_1) ? 'MouseEvents' : 'HTMLEvents';\n event = doc.createEvent(type);\n event.initEvent(name_1, true, true);\n event.namespace = namespaces.join(eventsNamespacesSeparator);\n event.___ot = nameOriginal;\n }\n event.___td = data;\n var isEventFocus = (event.___ot in eventsFocus);\n return this.each(function (i, ele) {\n if (isEventFocus && isFunction(ele[event.___ot])) {\n ele[\"___i\" + event.type] = true; // Ensuring the native event is ignored\n\n ele[event.___ot]();\n ele[\"___i\" + event.type] = false; // Ensuring the custom event is not ignored\n }\n\n ele.dispatchEvent(event);\n });\n }; // @optional ./off.ts\n // @optional ./on.ts\n // @optional ./one.ts\n // @optional ./ready.ts\n // @optional ./trigger.ts\n // @require core/pluck.ts\n // @require core/variables.ts\n\n function getValue(ele) {\n if (ele.multiple && ele.options) return pluck(filter.call(ele.options, function (option) {\n return option.selected && !option.disabled && !option.parentNode.disabled;\n }), 'value');\n return ele.value || '';\n }\n var queryEncodeSpaceRe = /%20/g,\n queryEncodeCRLFRe = /\\r?\\n/g;\n function queryEncode(prop, value) {\n return \"&\" + encodeURIComponent(prop) + \"=\" + encodeURIComponent(value.replace(queryEncodeCRLFRe, '\\r\\n')).replace(queryEncodeSpaceRe, '+');\n }\n var skippableRe = /file|reset|submit|button|image/i,\n checkableRe = /radio|checkbox/i;\n fn.serialize = function () {\n var query = '';\n this.each(function (i, ele) {\n each(ele.elements || [ele], function (i, ele) {\n if (ele.disabled || !ele.name || ele.tagName === 'FIELDSET' || skippableRe.test(ele.type) || checkableRe.test(ele.type) && !ele.checked) return;\n var value = getValue(ele);\n if (!isUndefined(value)) {\n var values = isArray(value) ? value : [value];\n each(values, function (i, value) {\n query += queryEncode(ele.name, value);\n });\n }\n });\n });\n return query.slice(1);\n };\n function val(value) {\n if (!arguments.length) return this[0] && getValue(this[0]);\n return this.each(function (i, ele) {\n var isSelect = ele.multiple && ele.options;\n if (isSelect || checkableRe.test(ele.type)) {\n var eleValue_1 = isArray(value) ? map.call(value, String) : isNull(value) ? [] : [String(value)];\n if (isSelect) {\n each(ele.options, function (i, option) {\n option.selected = eleValue_1.indexOf(option.value) >= 0;\n }, true);\n } else {\n ele.checked = eleValue_1.indexOf(ele.value) >= 0;\n }\n } else {\n ele.value = isUndefined(value) || isNull(value) ? '' : value;\n }\n });\n }\n fn.val = val;\n fn.clone = function () {\n return this.map(function (i, ele) {\n return ele.cloneNode(true);\n });\n };\n fn.detach = function (comparator) {\n filtered(this, comparator).each(function (i, ele) {\n if (ele.parentNode) {\n ele.parentNode.removeChild(ele);\n }\n });\n return this;\n };\n var fragmentRe = /^\\s*<(\\w+)[^>]*>/,\n singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\n var containers = {\n '*': div,\n tr: tbody,\n td: tr,\n th: tr,\n thead: table,\n tbody: table,\n tfoot: table\n }; //TODO: Create elements inside a document fragment, in order to prevent inline event handlers from firing\n //TODO: Ensure the created elements have the fragment as their parent instead of null, this also ensures we can deal with detatched nodes more reliably\n\n function parseHTML(html) {\n if (!isString(html)) return [];\n if (singleTagRe.test(html)) return [createElement(RegExp.$1)];\n var fragment = fragmentRe.test(html) && RegExp.$1,\n container = containers[fragment] || containers['*'];\n container.innerHTML = html;\n return cash(container.childNodes).detach().get();\n }\n cash.parseHTML = parseHTML;\n fn.empty = function () {\n return this.each(function (i, ele) {\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n });\n };\n function html(html) {\n if (!arguments.length) return this[0] && this[0].innerHTML;\n if (isUndefined(html)) return this;\n return this.each(function (i, ele) {\n if (!isElement(ele)) return;\n ele.innerHTML = html;\n });\n }\n fn.html = html;\n fn.remove = function (comparator) {\n filtered(this, comparator).detach().off();\n return this;\n };\n function text(text) {\n if (isUndefined(text)) return this[0] ? this[0].textContent : '';\n return this.each(function (i, ele) {\n if (!isElement(ele)) return;\n ele.textContent = text;\n });\n }\n ;\n fn.text = text;\n fn.unwrap = function () {\n this.parent().each(function (i, ele) {\n if (ele.tagName === 'BODY') return;\n var $ele = cash(ele);\n $ele.replaceWith($ele.children());\n });\n return this;\n };\n fn.offset = function () {\n var ele = this[0];\n if (!ele) return;\n var rect = ele.getBoundingClientRect();\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset\n };\n };\n fn.offsetParent = function () {\n return this.map(function (i, ele) {\n var offsetParent = ele.offsetParent;\n while (offsetParent && computeStyle(offsetParent, 'position') === 'static') {\n offsetParent = offsetParent.offsetParent;\n }\n return offsetParent || docEle;\n });\n };\n fn.position = function () {\n var ele = this[0];\n if (!ele) return;\n var isFixed = computeStyle(ele, 'position') === 'fixed',\n offset = isFixed ? ele.getBoundingClientRect() : this.offset();\n if (!isFixed) {\n var doc_1 = ele.ownerDocument;\n var offsetParent = ele.offsetParent || doc_1.documentElement;\n while ((offsetParent === doc_1.body || offsetParent === doc_1.documentElement) && computeStyle(offsetParent, 'position') === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent !== ele && isElement(offsetParent)) {\n var parentOffset = cash(offsetParent).offset();\n offset.top -= parentOffset.top + computeStyleInt(offsetParent, 'borderTopWidth');\n offset.left -= parentOffset.left + computeStyleInt(offsetParent, 'borderLeftWidth');\n }\n }\n return {\n top: offset.top - computeStyleInt(ele, 'marginTop'),\n left: offset.left - computeStyleInt(ele, 'marginLeft')\n };\n };\n fn.children = function (comparator) {\n return filtered(cash(unique(pluck(this, function (ele) {\n return ele.children;\n }))), comparator);\n };\n fn.contents = function () {\n return cash(unique(pluck(this, function (ele) {\n return ele.tagName === 'IFRAME' ? [ele.contentDocument] : ele.tagName === 'TEMPLATE' ? ele.content.childNodes : ele.childNodes;\n })));\n };\n fn.find = function (selector) {\n return cash(unique(pluck(this, function (ele) {\n return find(selector, ele);\n })));\n }; // @require core/variables.ts\n // @require collection/filter.ts\n // @require traversal/find.ts\n\n var HTMLCDATARe = /^\\s*\\s*$/g,\n scriptTypeRe = /^$|^module$|\\/(java|ecma)script/i,\n scriptAttributes = ['type', 'src', 'nonce', 'noModule'];\n function evalScripts(node, doc) {\n var collection = cash(node);\n collection.filter('script').add(collection.find('script')).each(function (i, ele) {\n if (scriptTypeRe.test(ele.type) && docEle.contains(ele)) {\n // The script type is supported // The element is attached to the DOM // Using `documentElement` for broader browser support\n var script_1 = createElement('script');\n script_1.text = ele.textContent.replace(HTMLCDATARe, '');\n each(scriptAttributes, function (i, attr) {\n if (ele[attr]) script_1[attr] = ele[attr];\n });\n doc.head.insertBefore(script_1, null);\n doc.head.removeChild(script_1);\n }\n });\n } // @require ./eval_scripts.ts\n\n function insertElement(anchor, target, left, inside, evaluate) {\n if (inside) {\n // prepend/append\n anchor.insertBefore(target, left ? anchor.firstChild : null);\n } else {\n // before/after\n anchor.parentNode.insertBefore(target, left ? anchor : anchor.nextSibling);\n }\n if (evaluate) {\n evalScripts(target, anchor.ownerDocument);\n }\n } // @require ./insert_element.ts\n\n function insertSelectors(selectors, anchors, inverse, left, inside, reverseLoop1, reverseLoop2, reverseLoop3) {\n each(selectors, function (si, selector) {\n each(cash(selector), function (ti, target) {\n each(cash(anchors), function (ai, anchor) {\n var anchorFinal = inverse ? target : anchor,\n targetFinal = inverse ? anchor : target,\n indexFinal = inverse ? ti : ai;\n insertElement(anchorFinal, !indexFinal ? targetFinal : targetFinal.cloneNode(true), left, inside, !indexFinal);\n }, reverseLoop3);\n }, reverseLoop2);\n }, reverseLoop1);\n return anchors;\n }\n fn.after = function () {\n return insertSelectors(arguments, this, false, false, false, true, true);\n };\n fn.append = function () {\n return insertSelectors(arguments, this, false, false, true);\n };\n fn.appendTo = function (selector) {\n return insertSelectors(arguments, this, true, false, true);\n };\n fn.before = function () {\n return insertSelectors(arguments, this, false, true);\n };\n fn.insertAfter = function (selector) {\n return insertSelectors(arguments, this, true, false, false, false, false, true);\n };\n fn.insertBefore = function (selector) {\n return insertSelectors(arguments, this, true, true);\n };\n fn.prepend = function () {\n return insertSelectors(arguments, this, false, true, true, true, true);\n };\n fn.prependTo = function (selector) {\n return insertSelectors(arguments, this, true, true, true, false, false, true);\n };\n fn.replaceWith = function (selector) {\n return this.before(selector).remove();\n };\n fn.replaceAll = function (selector) {\n cash(selector).replaceWith(this);\n return this;\n };\n fn.wrapAll = function (selector) {\n var structure = cash(selector),\n wrapper = structure[0];\n while (wrapper.children.length) {\n wrapper = wrapper.firstElementChild;\n }\n this.first().before(structure);\n return this.appendTo(wrapper);\n };\n fn.wrap = function (selector) {\n return this.each(function (i, ele) {\n var wrapper = cash(selector)[0];\n cash(ele).wrapAll(!i ? wrapper : wrapper.cloneNode(true));\n });\n };\n fn.wrapInner = function (selector) {\n return this.each(function (i, ele) {\n var $ele = cash(ele),\n contents = $ele.contents();\n contents.length ? contents.wrapAll(selector) : $ele.append(selector);\n });\n };\n fn.has = function (selector) {\n var comparator = isString(selector) ? function (i, ele) {\n return find(selector, ele).length;\n } : function (i, ele) {\n return ele.contains(selector);\n };\n return this.filter(comparator);\n };\n fn.is = function (comparator) {\n var compare = getCompareFunction(comparator);\n return some.call(this, function (ele, i) {\n return compare.call(ele, i, ele);\n });\n };\n fn.next = function (comparator, _all, _until) {\n return filtered(cash(unique(pluck(this, 'nextElementSibling', _all, _until))), comparator);\n };\n fn.nextAll = function (comparator) {\n return this.next(comparator, true);\n };\n fn.nextUntil = function (until, comparator) {\n return this.next(comparator, true, until);\n };\n fn.not = function (comparator) {\n var compare = getCompareFunction(comparator);\n return this.filter(function (i, ele) {\n return (!isString(comparator) || isElement(ele)) && !compare.call(ele, i, ele);\n });\n };\n fn.parent = function (comparator) {\n return filtered(cash(unique(pluck(this, 'parentNode'))), comparator);\n };\n fn.index = function (selector) {\n var child = selector ? cash(selector)[0] : this[0],\n collection = selector ? this : cash(child).parent().children();\n return indexOf.call(collection, child);\n };\n fn.closest = function (comparator) {\n var filtered = this.filter(comparator);\n if (filtered.length) return filtered;\n var $parent = this.parent();\n if (!$parent.length) return filtered;\n return $parent.closest(comparator);\n };\n fn.parents = function (comparator, _until) {\n return filtered(cash(unique(pluck(this, 'parentElement', true, _until))), comparator);\n };\n fn.parentsUntil = function (until, comparator) {\n return this.parents(comparator, until);\n };\n fn.prev = function (comparator, _all, _until) {\n return filtered(cash(unique(pluck(this, 'previousElementSibling', _all, _until))), comparator);\n };\n fn.prevAll = function (comparator) {\n return this.prev(comparator, true);\n };\n fn.prevUntil = function (until, comparator) {\n return this.prev(comparator, true, until);\n };\n fn.siblings = function (comparator) {\n return filtered(cash(unique(pluck(this, function (ele) {\n return cash(ele).parent().children().not(ele);\n }))), comparator);\n }; // @optional ./children.ts\n // @optional ./closest.ts\n // @optional ./contents.ts\n // @optional ./find.ts\n // @optional ./has.ts\n // @optional ./is.ts\n // @optional ./next.ts\n // @optional ./next_all.ts\n // @optional ./next_until.ts\n // @optional ./not.ts\n // @optional ./parent.ts\n // @optional ./parents.ts\n // @optional ./parents_until.ts\n // @optional ./prev.ts\n // @optional ./prev_all.ts\n // @optional ./prev_until.ts\n // @optional ./siblings.ts\n // @optional attributes/index.ts\n // @optional collection/index.ts\n // @optional css/index.ts\n // @optional data/index.ts\n // @optional dimensions/index.ts\n // @optional effects/index.ts\n // @optional events/index.ts\n // @optional forms/index.ts\n // @optional manipulation/index.ts\n // @optional offset/index.ts\n // @optional traversal/index.ts\n // @require core/index.ts\n // @priority -100\n // @require ./cash.ts\n // @require ./variables.ts\n\n if (typeof exports !== 'undefined') {\n // Node.js\n module.exports = cash;\n } else {\n // Browser\n win['cash'] = win['$'] = cash;\n }\n})();","(function (global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : factory(global.ActiveStorage = {});\n})(this, function (exports) {\n \"use strict\";\n\n function createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n }\n var sparkMd5 = createCommonjsModule(function (module, exports) {\n (function (factory) {\n {\n module.exports = factory();\n }\n })(function (undefined) {\n var hex_chr = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [],\n i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [],\n i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\",\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n if (to !== undefined) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function (str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length,\n i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function () {\n this._buff = \"\";\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash\n };\n };\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function (str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function () {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n });\n });\n var classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n var createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n var FileChecksum = function () {\n createClass(FileChecksum, null, [{\n key: \"create\",\n value: function create(file, callback) {\n var instance = new FileChecksum(file);\n instance.create(callback);\n }\n }]);\n function FileChecksum(file) {\n classCallCheck(this, FileChecksum);\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n createClass(FileChecksum, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n this.callback = callback;\n this.md5Buffer = new sparkMd5.ArrayBuffer();\n this.fileReader = new FileReader();\n this.fileReader.addEventListener(\"load\", function (event) {\n return _this.fileReaderDidLoad(event);\n });\n this.fileReader.addEventListener(\"error\", function (event) {\n return _this.fileReaderDidError(event);\n });\n this.readNextChunk();\n }\n }, {\n key: \"fileReaderDidLoad\",\n value: function fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n var binaryDigest = this.md5Buffer.end(true);\n var base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n }, {\n key: \"fileReaderDidError\",\n value: function fileReaderDidError(event) {\n this.callback(\"Error reading \" + this.file.name);\n }\n }, {\n key: \"readNextChunk\",\n value: function readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n var start = this.chunkIndex * this.chunkSize;\n var end = Math.min(start + this.chunkSize, this.file.size);\n var bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n }]);\n return FileChecksum;\n }();\n function getMetaValue(name) {\n var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n function findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n var elements = root.querySelectorAll(selector);\n return toArray$1(elements);\n }\n function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n }\n function dispatchEvent(element, type) {\n var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var disabled = element.disabled;\n var bubbles = eventInit.bubbles,\n cancelable = eventInit.cancelable,\n detail = eventInit.detail;\n var event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n }\n function toArray$1(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n }\n var BlobRecord = function () {\n function BlobRecord(file, checksum, url) {\n var _this = this;\n classCallCheck(this, BlobRecord);\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n var csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n createClass(BlobRecord, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n var response = this.response;\n var direct_upload = response.direct_upload;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var result = {};\n for (var key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n }, {\n key: \"status\",\n get: function get$$1() {\n return this.xhr.status;\n }\n }, {\n key: \"response\",\n get: function get$$1() {\n var _xhr = this.xhr,\n responseType = _xhr.responseType,\n response = _xhr.response;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n }]);\n return BlobRecord;\n }();\n var BlobUpload = function () {\n function BlobUpload(blob) {\n var _this = this;\n classCallCheck(this, BlobUpload);\n this.blob = blob;\n this.file = blob.file;\n var _blob$directUploadDat = blob.directUploadData,\n url = _blob$directUploadDat.url,\n headers = _blob$directUploadDat.headers;\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (var key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n createClass(BlobUpload, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n var _xhr = this.xhr,\n status = _xhr.status,\n response = _xhr.response;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n }\n }]);\n return BlobUpload;\n }();\n var id = 0;\n var DirectUpload = function () {\n function DirectUpload(file, url, delegate) {\n classCallCheck(this, DirectUpload);\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n }\n createClass(DirectUpload, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n FileChecksum.create(this.file, function (error, checksum) {\n if (error) {\n callback(error);\n return;\n }\n var blob = new BlobRecord(_this.file, checksum, _this.url);\n notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create(function (error) {\n if (error) {\n callback(error);\n } else {\n var upload = new BlobUpload(blob);\n notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create(function (error) {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n });\n }\n });\n });\n }\n }]);\n return DirectUpload;\n }();\n function notify(object, methodName) {\n if (object && typeof object[methodName] == \"function\") {\n for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n messages[_key - 2] = arguments[_key];\n }\n return object[methodName].apply(object, messages);\n }\n }\n var DirectUploadController = function () {\n function DirectUploadController(input, file) {\n classCallCheck(this, DirectUploadController);\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n createClass(DirectUploadController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n var hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(function (error, attributes) {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n _this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n _this.dispatch(\"end\");\n callback(error);\n });\n }\n }, {\n key: \"uploadRequestDidProgress\",\n value: function uploadRequestDidProgress(event) {\n var progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, \"direct-upload:\" + name, {\n detail: detail\n });\n }\n }, {\n key: \"dispatchError\",\n value: function dispatchError(error) {\n var event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n }, {\n key: \"directUploadWillCreateBlobWithXHR\",\n value: function directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n }, {\n key: \"directUploadWillStoreFileWithXHR\",\n value: function directUploadWillStoreFileWithXHR(xhr) {\n var _this2 = this;\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", function (event) {\n return _this2.uploadRequestDidProgress(event);\n });\n }\n }, {\n key: \"url\",\n get: function get$$1() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n }]);\n return DirectUploadController;\n }();\n var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n var DirectUploadsController = function () {\n function DirectUploadsController(form) {\n classCallCheck(this, DirectUploadsController);\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter(function (input) {\n return input.files.length;\n });\n }\n createClass(DirectUploadsController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n var controllers = this.createDirectUploadControllers();\n var startNextController = function startNextController() {\n var controller = controllers.shift();\n if (controller) {\n controller.start(function (error) {\n if (error) {\n callback(error);\n _this.dispatch(\"end\");\n } else {\n startNextController();\n }\n });\n } else {\n callback();\n _this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n }, {\n key: \"createDirectUploadControllers\",\n value: function createDirectUploadControllers() {\n var controllers = [];\n this.inputs.forEach(function (input) {\n toArray$1(input.files).forEach(function (file) {\n var controller = new DirectUploadController(input, file);\n controllers.push(controller);\n });\n });\n return controllers;\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n detail: detail\n });\n }\n }]);\n return DirectUploadsController;\n }();\n var processingAttribute = \"data-direct-uploads-processing\";\n var submitButtonsByForm = new WeakMap();\n var started = false;\n function start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n }\n function didClick(event) {\n var target = event.target;\n if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n submitButtonsByForm.set(target.form, target);\n }\n }\n function didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n }\n function didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n }\n function handleFormSubmissionEvent(event) {\n var form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n var controller = new DirectUploadsController(form);\n var inputs = controller.inputs;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start(function (error) {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n });\n }\n }\n function submitForm(form) {\n var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n var _button = button,\n disabled = _button.disabled;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n }\n function disable(input) {\n input.disabled = true;\n }\n function enable(input) {\n input.disabled = false;\n }\n function autostart() {\n if (window.ActiveStorage) {\n start();\n }\n }\n setTimeout(autostart, 1);\n exports.start = start;\n exports.DirectUpload = DirectUpload;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n expando = '_ujsData';\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function (event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n }\n return result;\n };\n }\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n prepareOptions = function (options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n createXHR = function (options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n processResponse = function (response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n Rails.href = function (element) {\n return element.href;\n };\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n toArray = function (e) {\n return Array.prototype.slice.call(e);\n };\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n allowAction = function (element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n Rails.enableElement = function (e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n disableLinkElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n enableLinkElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n disableFormElements = function (form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n disableFormElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n enableFormElements = function (form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n enableFormElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n isXhrRedirect = function (event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n isRemote = function (element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function (xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","/*!\n * \n * typed.js - A JavaScript Typing Animation Library\n * Author: Matt Boldt \n * Version: v2.0.12\n * Url: https://github.com/mattboldt/typed.js\n * License(s): MIT\n * \n */\n(function webpackUniversalModuleDefinition(root, factory) {\n if (typeof exports === 'object' && typeof module === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define([], factory);else if (typeof exports === 'object') exports[\"Typed\"] = factory();else root[\"Typed\"] = factory();\n})(this, function () {\n return (/******/function (modules) {\n // webpackBootstrap\n /******/ // The module cache\n /******/\n var installedModules = {};\n /******/\n /******/ // The require function\n /******/\n function __webpack_require__(moduleId) {\n /******/\n /******/ // Check if module is in cache\n /******/if (installedModules[moduleId]) /******/return installedModules[moduleId].exports;\n /******/\n /******/ // Create a new module (and put it into the cache)\n /******/\n var module = installedModules[moduleId] = {\n /******/exports: {},\n /******/id: moduleId,\n /******/loaded: false\n /******/\n };\n /******/\n /******/ // Execute the module function\n /******/\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n /******/ // Flag the module as loaded\n /******/\n module.loaded = true;\n /******/\n /******/ // Return the exports of the module\n /******/\n return module.exports;\n /******/\n }\n /******/\n /******/\n /******/ // expose the modules object (__webpack_modules__)\n /******/\n __webpack_require__.m = modules;\n /******/\n /******/ // expose the module cache\n /******/\n __webpack_require__.c = installedModules;\n /******/\n /******/ // __webpack_public_path__\n /******/\n __webpack_require__.p = \"\";\n /******/\n /******/ // Load entry module and return exports\n /******/\n return __webpack_require__(0);\n /******/\n }\n /************************************************************************/\n /******/([/* 0 */\n /***/function (module, exports, __webpack_require__) {\n 'use strict';\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n var _initializerJs = __webpack_require__(1);\n var _htmlParserJs = __webpack_require__(3);\n\n /**\n * Welcome to Typed.js!\n * @param {string} elementId HTML element ID _OR_ HTML element\n * @param {object} options options object\n * @returns {object} a new Typed object\n */\n\n var Typed = function () {\n function Typed(elementId, options) {\n _classCallCheck(this, Typed);\n\n // Initialize it up\n _initializerJs.initializer.load(this, options, elementId);\n // All systems go!\n this.begin();\n }\n\n /**\n * Toggle start() and stop() of the Typed instance\n * @public\n */\n\n _createClass(Typed, [{\n key: 'toggle',\n value: function toggle() {\n this.pause.status ? this.start() : this.stop();\n }\n\n /**\n * Stop typing / backspacing and enable cursor blinking\n * @public\n */\n }, {\n key: 'stop',\n value: function stop() {\n if (this.typingComplete) return;\n if (this.pause.status) return;\n this.toggleBlinking(true);\n this.pause.status = true;\n this.options.onStop(this.arrayPos, this);\n }\n\n /**\n * Start typing / backspacing after being stopped\n * @public\n */\n }, {\n key: 'start',\n value: function start() {\n if (this.typingComplete) return;\n if (!this.pause.status) return;\n this.pause.status = false;\n if (this.pause.typewrite) {\n this.typewrite(this.pause.curString, this.pause.curStrPos);\n } else {\n this.backspace(this.pause.curString, this.pause.curStrPos);\n }\n this.options.onStart(this.arrayPos, this);\n }\n\n /**\n * Destroy this instance of Typed\n * @public\n */\n }, {\n key: 'destroy',\n value: function destroy() {\n this.reset(false);\n this.options.onDestroy(this);\n }\n\n /**\n * Reset Typed and optionally restarts\n * @param {boolean} restart\n * @public\n */\n }, {\n key: 'reset',\n value: function reset() {\n var restart = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\n clearInterval(this.timeout);\n this.replaceText('');\n if (this.cursor && this.cursor.parentNode) {\n this.cursor.parentNode.removeChild(this.cursor);\n this.cursor = null;\n }\n this.strPos = 0;\n this.arrayPos = 0;\n this.curLoop = 0;\n if (restart) {\n this.insertCursor();\n this.options.onReset(this);\n this.begin();\n }\n }\n\n /**\n * Begins the typing animation\n * @private\n */\n }, {\n key: 'begin',\n value: function begin() {\n var _this = this;\n this.options.onBegin(this);\n this.typingComplete = false;\n this.shuffleStringsIfNeeded(this);\n this.insertCursor();\n if (this.bindInputFocusEvents) this.bindFocusEvents();\n this.timeout = setTimeout(function () {\n // Check if there is some text in the element, if yes start by backspacing the default message\n if (!_this.currentElContent || _this.currentElContent.length === 0) {\n _this.typewrite(_this.strings[_this.sequence[_this.arrayPos]], _this.strPos);\n } else {\n // Start typing\n _this.backspace(_this.currentElContent, _this.currentElContent.length);\n }\n }, this.startDelay);\n }\n\n /**\n * Called for each character typed\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @private\n */\n }, {\n key: 'typewrite',\n value: function typewrite(curString, curStrPos) {\n var _this2 = this;\n if (this.fadeOut && this.el.classList.contains(this.fadeOutClass)) {\n this.el.classList.remove(this.fadeOutClass);\n if (this.cursor) this.cursor.classList.remove(this.fadeOutClass);\n }\n var humanize = this.humanizer(this.typeSpeed);\n var numChars = 1;\n if (this.pause.status === true) {\n this.setPauseStatus(curString, curStrPos, true);\n return;\n }\n\n // contain typing function in a timeout humanize'd delay\n this.timeout = setTimeout(function () {\n // skip over any HTML chars\n curStrPos = _htmlParserJs.htmlParser.typeHtmlChars(curString, curStrPos, _this2);\n var pauseTime = 0;\n var substr = curString.substr(curStrPos);\n // check for an escape character before a pause value\n // format: \\^\\d+ .. eg: ^1000 .. should be able to print the ^ too using ^^\n // single ^ are removed from string\n if (substr.charAt(0) === '^') {\n if (/^\\^\\d+/.test(substr)) {\n var skip = 1; // skip at least 1\n substr = /\\d+/.exec(substr)[0];\n skip += substr.length;\n pauseTime = parseInt(substr);\n _this2.temporaryPause = true;\n _this2.options.onTypingPaused(_this2.arrayPos, _this2);\n // strip out the escape character and pause value so they're not printed\n curString = curString.substring(0, curStrPos) + curString.substring(curStrPos + skip);\n _this2.toggleBlinking(true);\n }\n }\n\n // check for skip characters formatted as\n // \"this is a `string to print NOW` ...\"\n if (substr.charAt(0) === '`') {\n while (curString.substr(curStrPos + numChars).charAt(0) !== '`') {\n numChars++;\n if (curStrPos + numChars > curString.length) break;\n }\n // strip out the escape characters and append all the string in between\n var stringBeforeSkip = curString.substring(0, curStrPos);\n var stringSkipped = curString.substring(stringBeforeSkip.length + 1, curStrPos + numChars);\n var stringAfterSkip = curString.substring(curStrPos + numChars + 1);\n curString = stringBeforeSkip + stringSkipped + stringAfterSkip;\n numChars--;\n }\n\n // timeout for any pause after a character\n _this2.timeout = setTimeout(function () {\n // Accounts for blinking while paused\n _this2.toggleBlinking(false);\n\n // We're done with this sentence!\n if (curStrPos >= curString.length) {\n _this2.doneTyping(curString, curStrPos);\n } else {\n _this2.keepTyping(curString, curStrPos, numChars);\n }\n // end of character pause\n if (_this2.temporaryPause) {\n _this2.temporaryPause = false;\n _this2.options.onTypingResumed(_this2.arrayPos, _this2);\n }\n }, pauseTime);\n\n // humanized value for typing\n }, humanize);\n }\n\n /**\n * Continue to the next string & begin typing\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @private\n */\n }, {\n key: 'keepTyping',\n value: function keepTyping(curString, curStrPos, numChars) {\n // call before functions if applicable\n if (curStrPos === 0) {\n this.toggleBlinking(false);\n this.options.preStringTyped(this.arrayPos, this);\n }\n // start typing each new char into existing string\n // curString: arg, this.el.html: original text inside element\n curStrPos += numChars;\n var nextString = curString.substr(0, curStrPos);\n this.replaceText(nextString);\n // loop the function\n this.typewrite(curString, curStrPos);\n }\n\n /**\n * We're done typing the current string\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @private\n */\n }, {\n key: 'doneTyping',\n value: function doneTyping(curString, curStrPos) {\n var _this3 = this;\n\n // fires callback function\n this.options.onStringTyped(this.arrayPos, this);\n this.toggleBlinking(true);\n // is this the final string\n if (this.arrayPos === this.strings.length - 1) {\n // callback that occurs on the last typed string\n this.complete();\n // quit if we wont loop back\n if (this.loop === false || this.curLoop === this.loopCount) {\n return;\n }\n }\n this.timeout = setTimeout(function () {\n _this3.backspace(curString, curStrPos);\n }, this.backDelay);\n }\n\n /**\n * Backspaces 1 character at a time\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @private\n */\n }, {\n key: 'backspace',\n value: function backspace(curString, curStrPos) {\n var _this4 = this;\n if (this.pause.status === true) {\n this.setPauseStatus(curString, curStrPos, false);\n return;\n }\n if (this.fadeOut) return this.initFadeOut();\n this.toggleBlinking(false);\n var humanize = this.humanizer(this.backSpeed);\n this.timeout = setTimeout(function () {\n curStrPos = _htmlParserJs.htmlParser.backSpaceHtmlChars(curString, curStrPos, _this4);\n // replace text with base text + typed characters\n var curStringAtPosition = curString.substr(0, curStrPos);\n _this4.replaceText(curStringAtPosition);\n\n // if smartBack is enabled\n if (_this4.smartBackspace) {\n // the remaining part of the current string is equal of the same part of the new string\n var nextString = _this4.strings[_this4.arrayPos + 1];\n if (nextString && curStringAtPosition === nextString.substr(0, curStrPos)) {\n _this4.stopNum = curStrPos;\n } else {\n _this4.stopNum = 0;\n }\n }\n\n // if the number (id of character in current string) is\n // less than the stop number, keep going\n if (curStrPos > _this4.stopNum) {\n // subtract characters one by one\n curStrPos--;\n // loop the function\n _this4.backspace(curString, curStrPos);\n } else if (curStrPos <= _this4.stopNum) {\n // if the stop number has been reached, increase\n // array position to next string\n _this4.arrayPos++;\n // When looping, begin at the beginning after backspace complete\n if (_this4.arrayPos === _this4.strings.length) {\n _this4.arrayPos = 0;\n _this4.options.onLastStringBackspaced();\n _this4.shuffleStringsIfNeeded();\n _this4.begin();\n } else {\n _this4.typewrite(_this4.strings[_this4.sequence[_this4.arrayPos]], curStrPos);\n }\n }\n // humanized value for typing\n }, humanize);\n }\n\n /**\n * Full animation is complete\n * @private\n */\n }, {\n key: 'complete',\n value: function complete() {\n this.options.onComplete(this);\n if (this.loop) {\n this.curLoop++;\n } else {\n this.typingComplete = true;\n }\n }\n\n /**\n * Has the typing been stopped\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @param {boolean} isTyping\n * @private\n */\n }, {\n key: 'setPauseStatus',\n value: function setPauseStatus(curString, curStrPos, isTyping) {\n this.pause.typewrite = isTyping;\n this.pause.curString = curString;\n this.pause.curStrPos = curStrPos;\n }\n\n /**\n * Toggle the blinking cursor\n * @param {boolean} isBlinking\n * @private\n */\n }, {\n key: 'toggleBlinking',\n value: function toggleBlinking(isBlinking) {\n if (!this.cursor) return;\n // if in paused state, don't toggle blinking a 2nd time\n if (this.pause.status) return;\n if (this.cursorBlinking === isBlinking) return;\n this.cursorBlinking = isBlinking;\n if (isBlinking) {\n this.cursor.classList.add('typed-cursor--blink');\n } else {\n this.cursor.classList.remove('typed-cursor--blink');\n }\n }\n\n /**\n * Speed in MS to type\n * @param {number} speed\n * @private\n */\n }, {\n key: 'humanizer',\n value: function humanizer(speed) {\n return Math.round(Math.random() * speed / 2) + speed;\n }\n\n /**\n * Shuffle the sequence of the strings array\n * @private\n */\n }, {\n key: 'shuffleStringsIfNeeded',\n value: function shuffleStringsIfNeeded() {\n if (!this.shuffle) return;\n this.sequence = this.sequence.sort(function () {\n return Math.random() - 0.5;\n });\n }\n\n /**\n * Adds a CSS class to fade out current string\n * @private\n */\n }, {\n key: 'initFadeOut',\n value: function initFadeOut() {\n var _this5 = this;\n this.el.className += ' ' + this.fadeOutClass;\n if (this.cursor) this.cursor.className += ' ' + this.fadeOutClass;\n return setTimeout(function () {\n _this5.arrayPos++;\n _this5.replaceText('');\n\n // Resets current string if end of loop reached\n if (_this5.strings.length > _this5.arrayPos) {\n _this5.typewrite(_this5.strings[_this5.sequence[_this5.arrayPos]], 0);\n } else {\n _this5.typewrite(_this5.strings[0], 0);\n _this5.arrayPos = 0;\n }\n }, this.fadeOutDelay);\n }\n\n /**\n * Replaces current text in the HTML element\n * depending on element type\n * @param {string} str\n * @private\n */\n }, {\n key: 'replaceText',\n value: function replaceText(str) {\n if (this.attr) {\n this.el.setAttribute(this.attr, str);\n } else {\n if (this.isInput) {\n this.el.value = str;\n } else if (this.contentType === 'html') {\n this.el.innerHTML = str;\n } else {\n this.el.textContent = str;\n }\n }\n }\n\n /**\n * If using input elements, bind focus in order to\n * start and stop the animation\n * @private\n */\n }, {\n key: 'bindFocusEvents',\n value: function bindFocusEvents() {\n var _this6 = this;\n if (!this.isInput) return;\n this.el.addEventListener('focus', function (e) {\n _this6.stop();\n });\n this.el.addEventListener('blur', function (e) {\n if (_this6.el.value && _this6.el.value.length !== 0) {\n return;\n }\n _this6.start();\n });\n }\n\n /**\n * On init, insert the cursor element\n * @private\n */\n }, {\n key: 'insertCursor',\n value: function insertCursor() {\n if (!this.showCursor) return;\n if (this.cursor) return;\n this.cursor = document.createElement('span');\n this.cursor.className = 'typed-cursor';\n this.cursor.setAttribute('aria-hidden', true);\n this.cursor.innerHTML = this.cursorChar;\n this.el.parentNode && this.el.parentNode.insertBefore(this.cursor, this.el.nextSibling);\n }\n }]);\n return Typed;\n }();\n exports['default'] = Typed;\n module.exports = exports['default'];\n\n /***/\n }, /* 1 */\n /***/function (module, exports, __webpack_require__) {\n 'use strict';\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n }\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n var _defaultsJs = __webpack_require__(2);\n var _defaultsJs2 = _interopRequireDefault(_defaultsJs);\n\n /**\n * Initialize the Typed object\n */\n\n var Initializer = function () {\n function Initializer() {\n _classCallCheck(this, Initializer);\n }\n _createClass(Initializer, [{\n key: 'load',\n /**\n * Load up defaults & options on the Typed instance\n * @param {Typed} self instance of Typed\n * @param {object} options options object\n * @param {string} elementId HTML element ID _OR_ instance of HTML element\n * @private\n */\n\n value: function load(self, options, elementId) {\n // chosen element to manipulate text\n if (typeof elementId === 'string') {\n self.el = document.querySelector(elementId);\n } else {\n self.el = elementId;\n }\n self.options = _extends({}, _defaultsJs2['default'], options);\n\n // attribute to type into\n self.isInput = self.el.tagName.toLowerCase() === 'input';\n self.attr = self.options.attr;\n self.bindInputFocusEvents = self.options.bindInputFocusEvents;\n\n // show cursor\n self.showCursor = self.isInput ? false : self.options.showCursor;\n\n // custom cursor\n self.cursorChar = self.options.cursorChar;\n\n // Is the cursor blinking\n self.cursorBlinking = true;\n\n // text content of element\n self.elContent = self.attr ? self.el.getAttribute(self.attr) : self.el.textContent;\n\n // html or plain text\n self.contentType = self.options.contentType;\n\n // typing speed\n self.typeSpeed = self.options.typeSpeed;\n\n // add a delay before typing starts\n self.startDelay = self.options.startDelay;\n\n // backspacing speed\n self.backSpeed = self.options.backSpeed;\n\n // only backspace what doesn't match the previous string\n self.smartBackspace = self.options.smartBackspace;\n\n // amount of time to wait before backspacing\n self.backDelay = self.options.backDelay;\n\n // Fade out instead of backspace\n self.fadeOut = self.options.fadeOut;\n self.fadeOutClass = self.options.fadeOutClass;\n self.fadeOutDelay = self.options.fadeOutDelay;\n\n // variable to check whether typing is currently paused\n self.isPaused = false;\n\n // input strings of text\n self.strings = self.options.strings.map(function (s) {\n return s.trim();\n });\n\n // div containing strings\n if (typeof self.options.stringsElement === 'string') {\n self.stringsElement = document.querySelector(self.options.stringsElement);\n } else {\n self.stringsElement = self.options.stringsElement;\n }\n if (self.stringsElement) {\n self.strings = [];\n self.stringsElement.style.display = 'none';\n var strings = Array.prototype.slice.apply(self.stringsElement.children);\n var stringsLength = strings.length;\n if (stringsLength) {\n for (var i = 0; i < stringsLength; i += 1) {\n var stringEl = strings[i];\n self.strings.push(stringEl.innerHTML.trim());\n }\n }\n }\n\n // character number position of current string\n self.strPos = 0;\n\n // current array position\n self.arrayPos = 0;\n\n // index of string to stop backspacing on\n self.stopNum = 0;\n\n // Looping logic\n self.loop = self.options.loop;\n self.loopCount = self.options.loopCount;\n self.curLoop = 0;\n\n // shuffle the strings\n self.shuffle = self.options.shuffle;\n // the order of strings\n self.sequence = [];\n self.pause = {\n status: false,\n typewrite: true,\n curString: '',\n curStrPos: 0\n };\n\n // When the typing is complete (when not looped)\n self.typingComplete = false;\n\n // Set the order in which the strings are typed\n for (var i in self.strings) {\n self.sequence[i] = i;\n }\n\n // If there is some text in the element\n self.currentElContent = this.getCurrentElContent(self);\n self.autoInsertCss = self.options.autoInsertCss;\n this.appendAnimationCss(self);\n }\n }, {\n key: 'getCurrentElContent',\n value: function getCurrentElContent(self) {\n var elContent = '';\n if (self.attr) {\n elContent = self.el.getAttribute(self.attr);\n } else if (self.isInput) {\n elContent = self.el.value;\n } else if (self.contentType === 'html') {\n elContent = self.el.innerHTML;\n } else {\n elContent = self.el.textContent;\n }\n return elContent;\n }\n }, {\n key: 'appendAnimationCss',\n value: function appendAnimationCss(self) {\n var cssDataName = 'data-typed-js-css';\n if (!self.autoInsertCss) {\n return;\n }\n if (!self.showCursor && !self.fadeOut) {\n return;\n }\n if (document.querySelector('[' + cssDataName + ']')) {\n return;\n }\n var css = document.createElement('style');\n css.type = 'text/css';\n css.setAttribute(cssDataName, true);\n var innerCss = '';\n if (self.showCursor) {\n innerCss += '\\n .typed-cursor{\\n opacity: 1;\\n }\\n .typed-cursor.typed-cursor--blink{\\n animation: typedjsBlink 0.7s infinite;\\n -webkit-animation: typedjsBlink 0.7s infinite;\\n animation: typedjsBlink 0.7s infinite;\\n }\\n @keyframes typedjsBlink{\\n 50% { opacity: 0.0; }\\n }\\n @-webkit-keyframes typedjsBlink{\\n 0% { opacity: 1; }\\n 50% { opacity: 0.0; }\\n 100% { opacity: 1; }\\n }\\n ';\n }\n if (self.fadeOut) {\n innerCss += '\\n .typed-fade-out{\\n opacity: 0;\\n transition: opacity .25s;\\n }\\n .typed-cursor.typed-cursor--blink.typed-fade-out{\\n -webkit-animation: 0;\\n animation: 0;\\n }\\n ';\n }\n if (css.length === 0) {\n return;\n }\n css.innerHTML = innerCss;\n document.body.appendChild(css);\n }\n }]);\n return Initializer;\n }();\n exports['default'] = Initializer;\n var initializer = new Initializer();\n exports.initializer = initializer;\n\n /***/\n }, /* 2 */\n /***/function (module, exports) {\n /**\n * Defaults & options\n * @returns {object} Typed defaults & options\n * @public\n */\n\n 'use strict';\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n var defaults = {\n /**\n * @property {array} strings strings to be typed\n * @property {string} stringsElement ID of element containing string children\n */\n strings: ['These are the default values...', 'You know what you should do?', 'Use your own!', 'Have a great day!'],\n stringsElement: null,\n /**\n * @property {number} typeSpeed type speed in milliseconds\n */\n typeSpeed: 0,\n /**\n * @property {number} startDelay time before typing starts in milliseconds\n */\n startDelay: 0,\n /**\n * @property {number} backSpeed backspacing speed in milliseconds\n */\n backSpeed: 0,\n /**\n * @property {boolean} smartBackspace only backspace what doesn't match the previous string\n */\n smartBackspace: true,\n /**\n * @property {boolean} shuffle shuffle the strings\n */\n shuffle: false,\n /**\n * @property {number} backDelay time before backspacing in milliseconds\n */\n backDelay: 700,\n /**\n * @property {boolean} fadeOut Fade out instead of backspace\n * @property {string} fadeOutClass css class for fade animation\n * @property {boolean} fadeOutDelay Fade out delay in milliseconds\n */\n fadeOut: false,\n fadeOutClass: 'typed-fade-out',\n fadeOutDelay: 500,\n /**\n * @property {boolean} loop loop strings\n * @property {number} loopCount amount of loops\n */\n loop: false,\n loopCount: Infinity,\n /**\n * @property {boolean} showCursor show cursor\n * @property {string} cursorChar character for cursor\n * @property {boolean} autoInsertCss insert CSS for cursor and fadeOut into HTML \n */\n showCursor: true,\n cursorChar: '|',\n autoInsertCss: true,\n /**\n * @property {string} attr attribute for typing\n * Ex: input placeholder, value, or just HTML text\n */\n attr: null,\n /**\n * @property {boolean} bindInputFocusEvents bind to focus and blur if el is text input\n */\n bindInputFocusEvents: false,\n /**\n * @property {string} contentType 'html' or 'null' for plaintext\n */\n contentType: 'html',\n /**\n * Before it begins typing\n * @param {Typed} self\n */\n onBegin: function onBegin(self) {},\n /**\n * All typing is complete\n * @param {Typed} self\n */\n onComplete: function onComplete(self) {},\n /**\n * Before each string is typed\n * @param {number} arrayPos\n * @param {Typed} self\n */\n preStringTyped: function preStringTyped(arrayPos, self) {},\n /**\n * After each string is typed\n * @param {number} arrayPos\n * @param {Typed} self\n */\n onStringTyped: function onStringTyped(arrayPos, self) {},\n /**\n * During looping, after last string is typed\n * @param {Typed} self\n */\n onLastStringBackspaced: function onLastStringBackspaced(self) {},\n /**\n * Typing has been stopped\n * @param {number} arrayPos\n * @param {Typed} self\n */\n onTypingPaused: function onTypingPaused(arrayPos, self) {},\n /**\n * Typing has been started after being stopped\n * @param {number} arrayPos\n * @param {Typed} self\n */\n onTypingResumed: function onTypingResumed(arrayPos, self) {},\n /**\n * After reset\n * @param {Typed} self\n */\n onReset: function onReset(self) {},\n /**\n * After stop\n * @param {number} arrayPos\n * @param {Typed} self\n */\n onStop: function onStop(arrayPos, self) {},\n /**\n * After start\n * @param {number} arrayPos\n * @param {Typed} self\n */\n onStart: function onStart(arrayPos, self) {},\n /**\n * After destroy\n * @param {Typed} self\n */\n onDestroy: function onDestroy(self) {}\n };\n exports['default'] = defaults;\n module.exports = exports['default'];\n\n /***/\n }, /* 3 */\n /***/function (module, exports) {\n /**\n * TODO: These methods can probably be combined somehow\n * Parse HTML tags & HTML Characters\n */\n\n 'use strict';\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n var HTMLParser = function () {\n function HTMLParser() {\n _classCallCheck(this, HTMLParser);\n }\n _createClass(HTMLParser, [{\n key: 'typeHtmlChars',\n /**\n * Type HTML tags & HTML Characters\n * @param {string} curString Current string\n * @param {number} curStrPos Position in current string\n * @param {Typed} self instance of Typed\n * @returns {number} a new string position\n * @private\n */\n\n value: function typeHtmlChars(curString, curStrPos, self) {\n if (self.contentType !== 'html') return curStrPos;\n var curChar = curString.substr(curStrPos).charAt(0);\n if (curChar === '<' || curChar === '&') {\n var endTag = '';\n if (curChar === '<') {\n endTag = '>';\n } else {\n endTag = ';';\n }\n while (curString.substr(curStrPos + 1).charAt(0) !== endTag) {\n curStrPos++;\n if (curStrPos + 1 > curString.length) {\n break;\n }\n }\n curStrPos++;\n }\n return curStrPos;\n }\n\n /**\n * Backspace HTML tags and HTML Characters\n * @param {string} curString Current string\n * @param {number} curStrPos Position in current string\n * @param {Typed} self instance of Typed\n * @returns {number} a new string position\n * @private\n */\n }, {\n key: 'backSpaceHtmlChars',\n value: function backSpaceHtmlChars(curString, curStrPos, self) {\n if (self.contentType !== 'html') return curStrPos;\n var curChar = curString.substr(curStrPos).charAt(0);\n if (curChar === '>' || curChar === ';') {\n var endTag = '';\n if (curChar === '>') {\n endTag = '<';\n } else {\n endTag = '&';\n }\n while (curString.substr(curStrPos - 1).charAt(0) !== endTag) {\n curStrPos--;\n if (curStrPos < 0) {\n break;\n }\n }\n curStrPos--;\n }\n return curStrPos;\n }\n }]);\n return HTMLParser;\n }();\n exports['default'] = HTMLParser;\n var htmlParser = new HTMLParser();\n exports.htmlParser = htmlParser;\n\n /***/\n }\n /******/])\n );\n});\n\n;","(function webpackUniversalModuleDefinition(root, factory) {\n if (typeof exports === 'object' && typeof module === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define(\"ScrollTrigger\", [], factory);else if (typeof exports === 'object') exports[\"ScrollTrigger\"] = factory();else root[\"ScrollTrigger\"] = factory();\n})(window, function () {\n return (/******/function (modules) {\n // webpackBootstrap\n /******/ // The module cache\n /******/\n var installedModules = {};\n /******/\n /******/ // The require function\n /******/\n function __webpack_require__(moduleId) {\n /******/\n /******/ // Check if module is in cache\n /******/if (installedModules[moduleId]) {\n /******/return installedModules[moduleId].exports;\n /******/\n }\n /******/ // Create a new module (and put it into the cache)\n /******/\n var module = installedModules[moduleId] = {\n /******/i: moduleId,\n /******/l: false,\n /******/exports: {}\n /******/\n };\n /******/\n /******/ // Execute the module function\n /******/\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n /******/ // Flag the module as loaded\n /******/\n module.l = true;\n /******/\n /******/ // Return the exports of the module\n /******/\n return module.exports;\n /******/\n }\n /******/\n /******/\n /******/ // expose the modules object (__webpack_modules__)\n /******/\n __webpack_require__.m = modules;\n /******/\n /******/ // expose the module cache\n /******/\n __webpack_require__.c = installedModules;\n /******/\n /******/ // define getter function for harmony exports\n /******/\n __webpack_require__.d = function (exports, name, getter) {\n /******/if (!__webpack_require__.o(exports, name)) {\n /******/Object.defineProperty(exports, name, {\n enumerable: true,\n get: getter\n });\n /******/\n }\n /******/\n };\n /******/\n /******/ // define __esModule on exports\n /******/\n __webpack_require__.r = function (exports) {\n /******/if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n /******/Object.defineProperty(exports, Symbol.toStringTag, {\n value: 'Module'\n });\n /******/\n }\n /******/\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n /******/ // create a fake namespace object\n /******/ // mode & 1: value is a module id, require it\n /******/ // mode & 2: merge all properties of value into the ns\n /******/ // mode & 4: return value when already ns object\n /******/ // mode & 8|1: behave like require\n /******/\n __webpack_require__.t = function (value, mode) {\n /******/if (mode & 1) value = __webpack_require__(value);\n /******/\n if (mode & 8) return value;\n /******/\n if (mode & 4 && typeof value === 'object' && value && value.__esModule) return value;\n /******/\n var ns = Object.create(null);\n /******/\n __webpack_require__.r(ns);\n /******/\n Object.defineProperty(ns, 'default', {\n enumerable: true,\n value: value\n });\n /******/\n if (mode & 2 && typeof value != 'string') for (var key in value) __webpack_require__.d(ns, key, function (key) {\n return value[key];\n }.bind(null, key));\n /******/\n return ns;\n /******/\n };\n /******/\n /******/ // getDefaultExport function for compatibility with non-harmony modules\n /******/\n __webpack_require__.n = function (module) {\n /******/var getter = module && module.__esModule ? /******/function getDefault() {\n return module['default'];\n } : /******/function getModuleExports() {\n return module;\n };\n /******/\n __webpack_require__.d(getter, 'a', getter);\n /******/\n return getter;\n /******/\n };\n /******/\n /******/ // Object.prototype.hasOwnProperty.call\n /******/\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n /******/ // __webpack_public_path__\n /******/\n __webpack_require__.p = \"\";\n /******/\n /******/\n /******/ // Load entry module and return exports\n /******/\n return __webpack_require__(__webpack_require__.s = 2);\n /******/\n }\n /************************************************************************/\n /******/([/* 0 */\n /***/function (module, exports) {\n /*!\n * object-extend\n * A well-tested function to deep extend (or merge) JavaScript objects without further dependencies.\n *\n * http://github.com/bernhardw\n *\n * Copyright 2013, Bernhard Wanger \n * Released under the MIT license.\n *\n * Date: 2013-04-10\n */\n\n /**\n * Extend object a with object b.\n *\n * @param {Object} a Source object.\n * @param {Object} b Object to extend with.\n * @returns {Object} a Extended object.\n */\n module.exports = function extend(a, b) {\n // Don't touch 'null' or 'undefined' objects.\n if (a == null || b == null) {\n return a;\n }\n\n // TODO: Refactor to use for-loop for performance reasons.\n Object.keys(b).forEach(function (key) {\n // Detect object without array, date or null.\n // TODO: Performance test:\n // a) b.constructor === Object.prototype.constructor\n // b) Object.prototype.toString.call(b) == '[object Object]'\n if (Object.prototype.toString.call(b[key]) == '[object Object]') {\n if (Object.prototype.toString.call(a[key]) != '[object Object]') {\n a[key] = b[key];\n } else {\n a[key] = extend(a[key], b[key]);\n }\n } else {\n a[key] = b[key];\n }\n });\n return a;\n };\n\n /***/\n }, /* 1 */\n /***/function (module, exports) {\n /**\n * Faster than .forEach\n * @param {(function())} fn The function to call\n */\n Array.prototype.each = function (fn) {\n var l = this.length;\n for (var i = 0; i < l; i++) {\n var e = this[i];\n if (e) {\n fn(e, i);\n }\n }\n };\n /**\n * Give NodeList some Array functions\n */\n\n NodeList.prototype.each = Array.prototype.each;\n NodeList.prototype.filter = Array.prototype.filter;\n\n /***/\n }, /* 2 */\n /***/function (module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n\n // CONCATENATED MODULE: ./src/config/DefaultOptions.js\n /**\n * Default options for ScrollTrigger\n */\n /* harmony default export */\n var DefaultOptions = function () {\n /**\n * The default options for a trigger\n *\n * @type {\n * {\n * once: boolean,\n * offset: {\n * viewport: {\n * x: number|(function(frame, direction)),\n * y: number|(function(frame, direction))\n * },\n * element: {\n * x: number|(function(rect, direction)),\n * y: number|(function(rect, direction))\n * }\n * },\n * toggle: {\n * class: {\n * in: string|string[],\n * out: string|string[]\n * },\n * callback: {\n * in: {TriggerInCallback},\n * visible: (function()),\n * out: (function())\n * }\n * }\n * }}\n */\n this.trigger = {\n once: false,\n offset: {\n viewport: {\n x: 0,\n y: 0\n },\n element: {\n x: 0,\n y: 0\n }\n },\n toggle: {\n \"class\": {\n \"in\": 'visible',\n out: 'invisible'\n },\n callback: {\n \"in\": null,\n visible: null,\n out: null\n }\n }\n };\n /**\n * The `in` callback is called when the element enters the viewport\n * @callback TriggerInCallback\n * @param {{x: Number, y: Number}} position\n * @param {string} direction\n */\n\n /**\n * The default options for the scroll behaviour\n * @type {\n * {\n * sustain: number,\n * element: Window|HTMLDocument|HTMLElement,\n * callback: {ScrollCallback},\n * start: (function()),\n * stop: (function()),\n * directionChange: (function(direction: {string}))\n * }\n * }\n */\n\n this.scroll = {\n sustain: 300,\n element: window,\n callback: function callback() {},\n start: function start() {},\n stop: function stop() {},\n directionChange: function directionChange() {}\n };\n /**\n * The scroll callback is called when the user scrolls\n * @callback ScrollCallback\n * @param {{x: Number, y: Number}} position\n * @param {string} direction\n */\n };\n // EXTERNAL MODULE: ./node_modules/object-extend/lib/extend.js\n var extend = __webpack_require__(0);\n var extend_default = /*#__PURE__*/__webpack_require__.n(extend);\n\n // EXTERNAL MODULE: ./src/extensions/Array.js\n var extensions_Array = __webpack_require__(1);\n\n // CONCATENATED MODULE: ./src/scripts/Trigger.js\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n function isInt(n) {\n return Number(n) === n && n % 1 === 0;\n }\n function isFloat(n) {\n return Number(n) === n && n % 1 !== 0;\n }\n var Trigger_Trigger = /*#__PURE__*/\n function () {\n /**\n * Creates a new Trigger from the given element and options\n *\n * @param {Element|HTMLElement} element\n * @param {DefaultOptions.trigger} [options=DefaultOptions.trigger] options\n */\n function Trigger(element, options) {\n _classCallCheck(this, Trigger);\n this.element = element;\n options = extend_default()(new DefaultOptions().trigger, options);\n this.offset = options.offset;\n this.toggle = options.toggle;\n this.once = options.once;\n this.visible = null;\n this.active = true;\n }\n /**\n * Checks if the Trigger is in the viewport, calls the callbacks and toggles the classes\n * @param {HTMLElement|HTMLDocument|Window} parent\n * @param {string} direction top, bottom, left, right\n * @returns {boolean} If the element is visible\n */\n\n _createClass(Trigger, [{\n key: \"checkVisibility\",\n value: function checkVisibility(parent, direction) {\n if (!this.active) {\n return this.visible;\n }\n var parentWidth = parent.offsetWidth || parent.innerWidth || 0;\n var parentHeight = parent.offsetHeight || parent.innerHeight || 0;\n var parentFrame = {\n w: parentWidth,\n h: parentHeight\n };\n var rect = this.getBounds();\n var visible = this._checkVisibility(rect, parentFrame, direction);\n if (visible !== this.visible) {\n this.visible = visible;\n var response = this._toggleCallback();\n if (response instanceof Promise) {\n response.then(this._toggleClass.bind(this))[\"catch\"](function (e) {\n console.error('Trigger promise failed');\n console.error(e);\n });\n } else {\n this._toggleClass();\n }\n if (this.visible && this.once) {\n this.active = false;\n }\n } else if (visible) {\n if (typeof this.toggle.callback.visible == 'function') {\n return this.toggle.callback.visible.call(this.element, this);\n }\n }\n return visible;\n }\n /**\n * Get the bounds of this element\n * @return {ClientRect | DOMRect}\n */\n }, {\n key: \"getBounds\",\n value: function getBounds() {\n return this.element.getBoundingClientRect();\n }\n /**\n * Get the calculated offset to place on the element\n * @param {ClientRect} rect\n * @param {string} direction top, bottom, left, right\n * @returns {{x: number, y: number}}\n * @private\n */\n }, {\n key: \"_getElementOffset\",\n value: function _getElementOffset(rect, direction) {\n var offset = {\n x: 0,\n y: 0\n };\n if (typeof this.offset.element.x === 'function') {\n offset.x = rect.width * this.offset.element.x(this, rect, direction);\n } else if (isFloat(this.offset.element.x)) {\n offset.x = rect.width * this.offset.element.x;\n } else if (isInt(this.offset.element.x)) {\n offset.x = this.offset.element.x;\n }\n if (typeof this.offset.element.y === 'function') {\n offset.y = rect.height * this.offset.element.y(this, rect, direction);\n } else if (isFloat(this.offset.element.y)) {\n offset.y = rect.height * this.offset.element.y;\n } else if (isInt(this.offset.element.y)) {\n offset.y = this.offset.element.y;\n }\n return offset;\n }\n /**\n * Get the calculated offset to place on the viewport\n * @param {{w: number, h: number}} parent\n * @param {string} direction top, bottom, left, right\n * @returns {{x: number, y: number}}\n * @private\n */\n }, {\n key: \"_getViewportOffset\",\n value: function _getViewportOffset(parent, direction) {\n var offset = {\n x: 0,\n y: 0\n };\n if (typeof this.offset.viewport.x === 'function') {\n offset.x = parent.w * this.offset.viewport.x(this, parent, direction);\n } else if (isFloat(this.offset.viewport.x)) {\n offset.x = parent.w * this.offset.viewport.x;\n } else if (isInt(this.offset.viewport.x)) {\n offset.x = this.offset.viewport.x;\n }\n if (typeof this.offset.viewport.y === 'function') {\n offset.y = parent.h * this.offset.viewport.y(this, parent, direction);\n } else if (isFloat(this.offset.viewport.y)) {\n offset.y = parent.h * this.offset.viewport.y;\n } else if (isInt(this.offset.viewport.y)) {\n offset.y = this.offset.viewport.y;\n }\n return offset;\n }\n /**\n * Check the visibility of the trigger in the viewport, with offsets applied\n * @param {ClientRect} rect\n * @param {{w: number, h: number}} parent\n * @param {string} direction top, bottom, left, right\n * @returns {boolean}\n * @private\n */\n }, {\n key: \"_checkVisibility\",\n value: function _checkVisibility(rect, parent, direction) {\n var elementOffset = this._getElementOffset(rect, direction);\n var viewportOffset = this._getViewportOffset(parent, direction);\n var visible = true;\n if (rect.left - viewportOffset.x < -(rect.width - elementOffset.x)) {\n visible = false;\n }\n if (rect.left + viewportOffset.x > parent.w - elementOffset.x) {\n visible = false;\n }\n if (rect.top - viewportOffset.y < -(rect.height - elementOffset.y)) {\n visible = false;\n }\n if (rect.top + viewportOffset.y > parent.h - elementOffset.y) {\n visible = false;\n }\n return visible;\n }\n /**\n * Toggles the classes\n * @private\n */\n }, {\n key: \"_toggleClass\",\n value: function _toggleClass() {\n var _this = this;\n if (this.visible) {\n if (Array.isArray(this.toggle[\"class\"][\"in\"])) {\n this.toggle[\"class\"][\"in\"].each(function (className) {\n _this.element.classList.add(className);\n });\n } else {\n this.element.classList.add(this.toggle[\"class\"][\"in\"]);\n }\n if (Array.isArray(this.toggle[\"class\"].out)) {\n this.toggle[\"class\"].out.each(function (className) {\n _this.element.classList.remove(className);\n });\n } else {\n this.element.classList.remove(this.toggle[\"class\"].out);\n }\n return;\n }\n if (Array.isArray(this.toggle[\"class\"][\"in\"])) {\n this.toggle[\"class\"][\"in\"].each(function (className) {\n _this.element.classList.remove(className);\n });\n } else {\n this.element.classList.remove(this.toggle[\"class\"][\"in\"]);\n }\n if (Array.isArray(this.toggle[\"class\"].out)) {\n this.toggle[\"class\"].out.each(function (className) {\n _this.element.classList.add(className);\n });\n } else {\n this.element.classList.add(this.toggle[\"class\"].out);\n }\n }\n /**\n * Toggles the callback\n * @private\n * @return null|Promise\n */\n }, {\n key: \"_toggleCallback\",\n value: function _toggleCallback() {\n if (this.visible) {\n if (typeof this.toggle.callback[\"in\"] == 'function') {\n return this.toggle.callback[\"in\"].call(this.element, this);\n }\n } else {\n if (typeof this.toggle.callback.out == 'function') {\n return this.toggle.callback.out.call(this.element, this);\n }\n }\n }\n }]);\n return Trigger;\n }();\n\n // CONCATENATED MODULE: ./src/scripts/TriggerCollection.js\n function TriggerCollection_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n function TriggerCollection_defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n function TriggerCollection_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) TriggerCollection_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) TriggerCollection_defineProperties(Constructor, staticProps);\n return Constructor;\n }\n var TriggerCollection_TriggerCollection = /*#__PURE__*/\n function () {\n /**\n * Initializes the collection\n * @param {Trigger[]} [triggers=[]] triggers A set of triggers to init with, optional\n */\n function TriggerCollection(triggers) {\n TriggerCollection_classCallCheck(this, TriggerCollection);\n\n /**\n * @member {Trigger[]}\n */\n this.triggers = triggers instanceof Array ? triggers : [];\n }\n /**\n * Adds one or multiple Trigger objects\n * @param {Trigger|Trigger[]} objects\n */\n\n TriggerCollection_createClass(TriggerCollection, [{\n key: \"add\",\n value: function add(objects) {\n var _this = this;\n if (objects instanceof Trigger_Trigger) {\n // single\n return this.triggers.push(objects);\n }\n objects.each(function (trigger) {\n if (trigger instanceof Trigger_Trigger) {\n _this.triggers.push(trigger);\n } else {\n console.error('Object added to TriggerCollection is not a Trigger. Object: ', trigger);\n }\n });\n }\n /**\n * Removes one or multiple Trigger objects\n * @param {Trigger|Trigger[]} objects\n */\n }, {\n key: \"remove\",\n value: function remove(objects) {\n if (objects instanceof Trigger_Trigger) {\n objects = [objects];\n }\n this.triggers = this.triggers.filter(function (trigger) {\n var hit = false;\n objects.each(function (object) {\n if (object == trigger) {\n hit = true;\n }\n });\n return !hit;\n });\n }\n /**\n * Lookup one or multiple triggers by a query string\n * @param {string} selector\n * @returns {Trigger[]}\n */\n }, {\n key: \"query\",\n value: function query(selector) {\n return this.triggers.filter(function (trigger) {\n var element = trigger.element;\n var parent = element.parentNode;\n var nodes = [].slice.call(parent.querySelectorAll(selector));\n return nodes.indexOf(element) > -1;\n });\n }\n /**\n * Lookup one or multiple triggers by a certain HTMLElement or NodeList\n * @param {HTMLElement|HTMLElement[]|NodeList} element\n * @returns {Trigger|Trigger[]|null}\n */\n }, {\n key: \"search\",\n value: function search(element) {\n var found = this.triggers.filter(function (trigger) {\n if (element instanceof NodeList || Array.isArray(element)) {\n var hit = false;\n element.each(function (el) {\n if (trigger.element == el) {\n hit = true;\n }\n });\n return hit;\n }\n return trigger.element == element;\n });\n return found.length == 0 ? null : found.length > 1 ? found : found[0];\n }\n /**\n * Calls a function on all triggers\n * @param {(function())} callback\n */\n }, {\n key: \"call\",\n value: function call(callback) {\n this.triggers.each(callback);\n }\n }]);\n return TriggerCollection;\n }();\n\n // CONCATENATED MODULE: ./src/scripts/ScrollAnimationLoop.js\n function ScrollAnimationLoop_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n function ScrollAnimationLoop_defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n function ScrollAnimationLoop_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) ScrollAnimationLoop_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) ScrollAnimationLoop_defineProperties(Constructor, staticProps);\n return Constructor;\n }\n var ScrollAnimationLoop_ScrollAnimationLoop = /*#__PURE__*/\n function () {\n /**\n * ScrollAnimationLoop constructor.\n * Starts a requestAnimationFrame loop as long as the user has scrolled the scrollElement. Stops after a certain time.\n *\n * @param {DefaultOptions.scroll} [options=DefaultOptions.scroll] options The options for the loop\n * @param {ScrollCallback} callback [loop=null] The loop callback\n */\n function ScrollAnimationLoop(options, callback) {\n ScrollAnimationLoop_classCallCheck(this, ScrollAnimationLoop);\n this._parseOptions(options);\n if (typeof callback === 'function') {\n this.callback = callback;\n }\n this.direction = 'none';\n this.position = this.getPosition();\n this.lastAction = this._getTimestamp();\n this._startRun();\n this._boundListener = this._didScroll.bind(this);\n this.element.addEventListener('scroll', this._boundListener);\n }\n /**\n * Parses the options\n *\n * @param {DefaultOptions.scroll} [options=DefaultOptions.scroll] options The options for the loop\n * @private\n */\n\n ScrollAnimationLoop_createClass(ScrollAnimationLoop, [{\n key: \"_parseOptions\",\n value: function _parseOptions(options) {\n var defaults = new DefaultOptions().scroll;\n if (typeof options != 'function') {\n defaults.callback = function () {};\n defaults = extend_default()(defaults, options);\n } else {\n defaults.callback = options;\n }\n this.element = defaults.element;\n this.sustain = defaults.sustain;\n this.callback = defaults.callback;\n this.startCallback = defaults.start;\n this.stopCallback = defaults.stop;\n this.directionChange = defaults.directionChange;\n }\n /**\n * Callback when the user scrolled the element\n * @private\n */\n }, {\n key: \"_didScroll\",\n value: function _didScroll() {\n var newPosition = this.getPosition();\n if (this.position !== newPosition) {\n var newDirection = this.direction;\n if (newPosition.x !== this.position.x) {\n newDirection = newPosition.x > this.position.x ? 'right' : 'left';\n } else if (newPosition.y !== this.position.y) {\n newDirection = newPosition.y > this.position.y ? 'bottom' : 'top';\n } else {\n newDirection = 'none';\n }\n if (newDirection !== this.direction) {\n this.direction = newDirection;\n if (typeof this.directionChange === 'function') {\n this.directionChange(this.direction);\n }\n }\n this.position = newPosition;\n this.lastAction = this._getTimestamp();\n } else {\n this.direction = 'none';\n }\n if (!this.running) {\n this._startRun();\n }\n }\n /**\n * Starts the loop, calls the start callback\n * @private\n */\n }, {\n key: \"_startRun\",\n value: function _startRun() {\n this.running = true;\n if (typeof this.startCallback === 'function') {\n this.startCallback();\n }\n this._loop();\n }\n /**\n * Stops the loop, calls the stop callback\n * @private\n */\n }, {\n key: \"_stopRun\",\n value: function _stopRun() {\n this.running = false;\n if (typeof this.stopCallback === 'function') {\n this.stopCallback();\n }\n }\n /**\n * The current position of the element\n * @returns {{x: number, y: number}}\n */\n }, {\n key: \"getPosition\",\n value: function getPosition() {\n var left = this.element.pageXOffset || this.element.scrollLeft || document.documentElement.scrollLeft || 0;\n var top = this.element.pageYOffset || this.element.scrollTop || document.documentElement.scrollTop || 0;\n return {\n x: left,\n y: top\n };\n }\n /**\n * The current timestamp in ms\n * @returns {number}\n * @private\n */\n }, {\n key: \"_getTimestamp\",\n value: function _getTimestamp() {\n return Number(Date.now());\n }\n /**\n * One single tick of the animation\n * @private\n */\n }, {\n key: \"_tick\",\n value: function _tick() {\n this.callback(this.position, this.direction);\n var now = this._getTimestamp();\n if (now - this.lastAction > this.sustain) {\n this._stopRun();\n }\n if (this.running) {\n this._loop();\n }\n }\n /**\n * Requests an animation frame\n * @private\n */\n }, {\n key: \"_loop\",\n value: function _loop() {\n var frame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame || function (callback) {\n setTimeout(callback, 1000 / 60);\n };\n frame(this._tick.bind(this));\n }\n /**\n * Kills the loop forever\n */\n }, {\n key: \"kill\",\n value: function kill() {\n this.running = false;\n this.element.removeEventListener('scroll', this._boundListener);\n }\n }]);\n return ScrollAnimationLoop;\n }();\n\n // CONCATENATED MODULE: ./src/ScrollTrigger.js\n /* harmony export (binding) */\n __webpack_require__.d(__webpack_exports__, \"Trigger\", function () {\n return ScrollTrigger_Trigger;\n });\n /* harmony export (binding) */\n __webpack_require__.d(__webpack_exports__, \"TriggerCollection\", function () {\n return ScrollTrigger_TriggerCollection;\n });\n /* harmony export (binding) */\n __webpack_require__.d(__webpack_exports__, \"ScrollAnimationLoop\", function () {\n return ScrollTrigger_ScrollAnimationLoop;\n });\n /* harmony export (binding) */\n __webpack_require__.d(__webpack_exports__, \"default\", function () {\n return ScrollTrigger_ScrollTrigger;\n });\n function ScrollTrigger_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n function ScrollTrigger_defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n function ScrollTrigger_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) ScrollTrigger_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) ScrollTrigger_defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n /*!\n * ScrollTrigger\n *\n *\n * http://github.com/terwanerik\n *\n * Copyright 2017, Erik Terwan \n * Released under the MIT license.\n *\n * Date: 2017-07-09\n */\n\n /**\n * Created by Erik on 09/07/2017.\n */\n\n var ScrollTrigger_Trigger = Trigger_Trigger;\n var ScrollTrigger_TriggerCollection = TriggerCollection_TriggerCollection;\n var ScrollTrigger_ScrollAnimationLoop = ScrollAnimationLoop_ScrollAnimationLoop;\n var ScrollTrigger_ScrollTrigger = /*#__PURE__*/\n function () {\n /**\n * Constructor for the scroll trigger\n * @param {DefaultOptions} [options=DefaultOptions] options\n */\n function ScrollTrigger(options) {\n ScrollTrigger_classCallCheck(this, ScrollTrigger);\n this._parseOptions(options);\n this._initCollection();\n this._initLoop();\n }\n /**\n * Parses the options\n * @param {DefaultOptions} [options=DefaultOptions] options\n * @private\n */\n\n ScrollTrigger_createClass(ScrollTrigger, [{\n key: \"_parseOptions\",\n value: function _parseOptions(options) {\n options = extend_default()(new DefaultOptions(), options);\n this.defaultTrigger = options.trigger;\n this.scrollOptions = options.scroll;\n }\n /**\n * Initializes the collection, picks all [data-scroll] elements as initial elements\n * @private\n */\n }, {\n key: \"_initCollection\",\n value: function _initCollection() {\n var scrollAttributes = document.querySelectorAll('[data-scroll]');\n var elements = [];\n if (scrollAttributes.length > 0) {\n elements = this.createTriggers(scrollAttributes);\n }\n this.collection = new ScrollTrigger_TriggerCollection(elements);\n }\n /**\n * Initializes the scroll loop\n * @private\n */\n }, {\n key: \"_initLoop\",\n value: function _initLoop() {\n var _this = this;\n this.loop = new ScrollTrigger_ScrollAnimationLoop({\n sustain: this.scrollOptions.sustain,\n element: this.scrollOptions.element,\n callback: function callback(position, direction) {\n _this._scrollCallback(position, direction);\n },\n start: function start() {\n _this._scrollStart();\n },\n stop: function stop() {\n _this._scrollStop();\n },\n directionChange: function directionChange(direction) {\n _this._scrollDirectionChange(direction);\n }\n });\n }\n /**\n * Callback for checking triggers\n * @param {{x: number, y: number}} position\n * @param {string} direction\n * @private\n */\n }, {\n key: \"_scrollCallback\",\n value: function _scrollCallback(position, direction) {\n var _this2 = this;\n this.collection.call(function (trigger) {\n trigger.checkVisibility(_this2.scrollOptions.element, direction);\n });\n this.scrollOptions.callback(position, direction);\n }\n /**\n * When the scrolling started\n * @private\n */\n }, {\n key: \"_scrollStart\",\n value: function _scrollStart() {\n this.scrollOptions.start();\n }\n /**\n * When the scrolling stopped\n * @private\n */\n }, {\n key: \"_scrollStop\",\n value: function _scrollStop() {\n this.scrollOptions.stop();\n }\n /**\n * When the direction changes\n * @param {string} direction\n * @private\n */\n }, {\n key: \"_scrollDirectionChange\",\n value: function _scrollDirectionChange(direction) {\n this.scrollOptions.directionChange(direction);\n }\n /**\n * Creates a Trigger object from a given element and optional option set\n * @param {HTMLElement} element\n * @param {DefaultOptions.trigger} [options=DefaultOptions.trigger] options\n * @returns Trigger\n */\n }, {\n key: \"createTrigger\",\n value: function createTrigger(element, options) {\n return new ScrollTrigger_Trigger(element, extend_default()(this.defaultTrigger, options));\n }\n /**\n * Creates an array of triggers\n * @param {HTMLElement[]|NodeList} elements\n * @param {Object} [options=null] options\n * @returns {Trigger[]} Array of triggers\n */\n }, {\n key: \"createTriggers\",\n value: function createTriggers(elements, options) {\n var _this3 = this;\n var triggers = [];\n elements.each(function (element) {\n triggers.push(_this3.createTrigger(element, options));\n });\n return triggers;\n }\n /**\n * Adds triggers\n * @param {string|HTMLElement|NodeList|Trigger|Trigger[]} objects A list of objects or a query\n * @param {Object} [options=null] options\n * @returns {ScrollTrigger}\n */\n }, {\n key: \"add\",\n value: function add(objects, options) {\n if (objects instanceof HTMLElement) {\n this.collection.add(this.createTrigger(objects, options));\n return this;\n }\n if (objects instanceof ScrollTrigger_Trigger) {\n this.collection.add(objects);\n return this;\n }\n if (objects instanceof NodeList) {\n this.collection.add(this.createTriggers(objects, options));\n return this;\n }\n if (Array.isArray(objects) && objects.length && objects[0] instanceof ScrollTrigger_Trigger) {\n this.collection.add(objects);\n return this;\n }\n if (Array.isArray(objects) && objects.length && objects[0] instanceof HTMLElement) {\n this.collection.add(this.createTriggers(objects, options));\n return this;\n } // assume it's a query string\n\n this.collection.add(this.createTriggers(document.querySelectorAll(objects), options));\n return this;\n }\n /**\n * Removes triggers\n * @param {string|HTMLElement|NodeList|Trigger|Trigger[]} objects A list of objects or a query\n * @returns {ScrollTrigger}\n */\n }, {\n key: \"remove\",\n value: function remove(objects) {\n if (objects instanceof ScrollTrigger_Trigger) {\n this.collection.remove(objects);\n return this;\n }\n if (Array.isArray(objects) && objects.length && objects[0] instanceof ScrollTrigger_Trigger) {\n this.collection.remove(objects);\n return this;\n }\n if (objects instanceof HTMLElement) {\n this.collection.remove(this.search(objects));\n return this;\n }\n if (Array.isArray(objects) && objects.length && objects[0] instanceof HTMLElement) {\n this.collection.remove(this.search(objects));\n return this;\n }\n if (objects instanceof NodeList) {\n this.collection.remove(this.search(objects));\n return this;\n }\n if (Array.isArray(objects) && objects.length && objects[0] instanceof ScrollTrigger_Trigger) {\n this.collection.remove(objects);\n return this;\n } // assume it's a query string\n\n this.collection.remove(this.query(objects.toString()));\n return this;\n }\n /**\n * Lookup one or multiple triggers by a query string\n * @param {string} selector\n * @returns {Trigger[]}\n */\n }, {\n key: \"query\",\n value: function query(selector) {\n return this.collection.query(selector);\n }\n /**\n * Lookup one or multiple triggers by a certain HTMLElement or NodeList\n * @param {HTMLElement|HTMLElement[]|NodeList} element\n * @returns {Trigger|Trigger[]|null}\n */\n }, {\n key: \"search\",\n value: function search(element) {\n return this.collection.search(element);\n }\n /**\n * Reattaches the scroll listener\n */\n }, {\n key: \"listen\",\n value: function listen() {\n if (this.loop) {\n return;\n }\n this._initLoop();\n }\n /**\n * Kills the scroll listener\n */\n }, {\n key: \"kill\",\n value: function kill() {\n this.loop.kill();\n this.loop = null;\n }\n }]);\n return ScrollTrigger;\n }();\n\n /***/\n }\n /******/])\n );\n});","// Load all the channels within this directory and all subdirectories.\n// Channel files must be named *_channel.js.\n\nconst channels = require.context('.', true, /_channel\\.js$/)\nchannels.keys().forEach(channels)\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 6;","/*!\n * Glide.js v3.5.2\n * (c) 2013-2021 Jędrzej Chałubek (https://github.com/jedrzejchalubek/)\n * Released under the MIT License.\n */\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}\nvar defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */\n type: 'slider',\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */\n startAt: 0,\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */\n perView: 1,\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */\n focusAt: 0,\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */\n gap: 10,\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */\n autoplay: false,\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */\n hoverpause: true,\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */\n keyboard: true,\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */\n bound: false,\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */\n swipeThreshold: 80,\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */\n dragThreshold: 120,\n /**\n * A number of slides moved on single swipe.\n *\n * Available types:\n * `` - Moves slider by one slide per swipe\n * `|` - Moves slider between views per swipe (number of slides defined in `perView` options)\n *\n * @type {String}\n */\n perSwipe: '',\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */\n touchRatio: 0.5,\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */\n touchAngle: 45,\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */\n animationDuration: 400,\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */\n rewind: true,\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */\n rewindDuration: 800,\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */\n animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n /**\n * Wait for the animation to finish until the next user input can be processed\n *\n * @type {boolean}\n */\n waitForTransition: true,\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */\n throttle: 10,\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */\n direction: 'ltr',\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */\n peek: 0,\n /**\n * Defines how many clones of current viewport will be generated.\n *\n * @type {Number}\n */\n cloningRatio: 1,\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */\n breakpoints: {},\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */\n classes: {\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n type: {\n slider: 'glide--slider',\n carousel: 'glide--carousel'\n },\n slide: {\n clone: 'glide__slide--clone',\n active: 'glide__slide--active'\n },\n arrow: {\n disabled: 'glide__arrow--disabled'\n },\n nav: {\n active: 'glide__bullet--active'\n }\n }\n};\n\n/**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\nfunction warn(msg) {\n console.error(\"[Glide warn]: \".concat(msg));\n}\n\n/**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toInt(value) {\n return parseInt(value);\n}\n/**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\n\nfunction toFloat(value) {\n return parseFloat(value);\n}\n/**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isString(value) {\n return typeof value === 'string';\n}\n/**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction isObject(value) {\n var type = _typeof(value);\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n}\n/**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\n/**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isArray(value) {\n return value.constructor === Array;\n}\n\n/**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\n\nfunction mount(glide, extensions, events) {\n var components = {};\n for (var name in extensions) {\n if (isFunction(extensions[name])) {\n components[name] = extensions[name](glide, components, events);\n } else {\n warn('Extension must be a function');\n }\n }\n for (var _name in components) {\n if (isFunction(components[_name].mount)) {\n components[_name].mount();\n }\n }\n return components;\n}\n\n/**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */\nfunction define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n}\n/**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\n\nfunction sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n return r[k], r;\n }, {});\n}\n/**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */\n\nfunction mergeOptions(defaults, settings) {\n var options = Object.assign({}, defaults, settings); // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n\n if (settings.hasOwnProperty('classes')) {\n options.classes = Object.assign({}, defaults.classes, settings.classes);\n if (settings.classes.hasOwnProperty('direction')) {\n options.classes.direction = Object.assign({}, defaults.classes.direction, settings.classes.direction);\n }\n if (settings.classes.hasOwnProperty('type')) {\n options.classes.type = Object.assign({}, defaults.classes.type, settings.classes.type);\n }\n if (settings.classes.hasOwnProperty('slide')) {\n options.classes.slide = Object.assign({}, defaults.classes.slide, settings.classes.slide);\n }\n if (settings.classes.hasOwnProperty('arrow')) {\n options.classes.arrow = Object.assign({}, defaults.classes.arrow, settings.classes.arrow);\n }\n if (settings.classes.hasOwnProperty('nav')) {\n options.classes.nav = Object.assign({}, defaults.classes.nav, settings.classes.nav);\n }\n }\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = Object.assign({}, defaults.breakpoints, settings.breakpoints);\n }\n return options;\n}\nvar EventsBus = /*#__PURE__*/function () {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */\n function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, EventsBus);\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n _createClass(EventsBus, [{\n key: \"on\",\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n return;\n } // Create the event's object if not yet created\n\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n } // Add the handler to queue\n\n var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n }, {\n key: \"emit\",\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n return;\n } // If the event doesn't exist, or there's no handlers in queue, just leave\n\n if (!this.hop.call(this.events, event)) {\n return;\n } // Cycle through events queue, fire!\n\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n return EventsBus;\n}();\nvar Glide$1 = /*#__PURE__*/function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Glide);\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this._e.emit('mount.before');\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n this._e.emit('mount.after');\n return this;\n }\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n }, {\n key: \"mutate\",\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n return this;\n }\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n }, {\n key: \"update\",\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.settings = mergeOptions(this.settings, settings);\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n this._e.emit('update');\n return this;\n }\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n * `|>` - Move one viewport forward\r\n * `|<` - Move one viewport backward\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n }, {\n key: \"go\",\n value: function go(pattern) {\n this._c.Run.make(pattern);\n return this;\n }\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n }, {\n key: \"move\",\n value: function move(distance) {\n this._c.Transition.disable();\n this._c.Move.make(distance);\n return this;\n }\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._e.emit('destroy');\n return this;\n }\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n }, {\n key: \"play\",\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (interval) {\n this.settings.autoplay = interval;\n }\n this._e.emit('play');\n return this;\n }\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n }, {\n key: \"pause\",\n value: function pause() {\n this._e.emit('pause');\n return this;\n }\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n }, {\n key: \"disable\",\n value: function disable() {\n this.disabled = true;\n return this;\n }\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n }, {\n key: \"enable\",\n value: function enable() {\n this.disabled = false;\n return this;\n }\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n }, {\n key: \"on\",\n value: function on(event, handler) {\n this._e.on(event, handler);\n return this;\n }\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n }, {\n key: \"isType\",\n value: function isType(name) {\n return this.settings.type === name;\n }\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n }, {\n key: \"settings\",\n get: function get() {\n return this._o;\n }\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */,\n\n set: function set(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n }, {\n key: \"index\",\n get: function get() {\n return this._i;\n }\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */,\n\n set: function set(i) {\n this._i = toInt(i);\n }\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n }, {\n key: \"type\",\n get: function get() {\n return this.settings.type;\n }\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n }, {\n key: \"disabled\",\n get: function get() {\n return this._d;\n }\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */,\n\n set: function set(status) {\n this._d = !!status;\n }\n }]);\n return Glide;\n}();\nfunction Run(Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n if (!Glide.disabled) {\n !Glide.settings.waitForTransition || Glide.disable();\n this.move = move;\n Events.emit('run.before', this.move);\n this.calculate();\n Events.emit('run', this.move);\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n if (_this.isOffset()) {\n _this._o = false;\n Events.emit('run.offset', _this.move);\n }\n Events.emit('run.after', _this.move);\n Glide.enable();\n });\n }\n },\n /**\n * Calculates current index based on defined move.\n *\n * @return {Number|Undefined}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction; // By default assume that size of view is equal to one slide\n\n var viewSize = 1; // While direction is `=` we want jump to\n // a specified index described in steps.\n\n if (direction === '=') {\n // Check if bound is true, \n // as we want to avoid whitespaces.\n if (Glide.settings.bound && toInt(steps) > length) {\n Glide.index = length;\n return;\n }\n Glide.index = steps;\n return;\n } // When pattern is equal to `>>` we want\n // fast forward to the last slide.\n\n if (direction === '>' && steps === '>') {\n Glide.index = length;\n return;\n } // When pattern is equal to `<<` we want\n // fast forward to the first slide.\n\n if (direction === '<' && steps === '<') {\n Glide.index = 0;\n return;\n } // pagination movement\n\n if (direction === '|') {\n viewSize = Glide.settings.perView || 1;\n } // we are moving forward\n\n if (direction === '>' || direction === '|' && steps === '>') {\n var index = calculateForwardIndex(viewSize);\n if (index > length) {\n this._o = true;\n }\n Glide.index = normalizeForwardIndex(index, viewSize);\n return;\n } // we are moving backward\n\n if (direction === '<' || direction === '|' && steps === '<') {\n var _index = calculateBackwardIndex(viewSize);\n if (_index < 0) {\n this._o = true;\n }\n Glide.index = normalizeBackwardIndex(_index, viewSize);\n return;\n }\n warn(\"Invalid direction pattern [\".concat(direction).concat(steps, \"] has been used\"));\n },\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index <= 0;\n },\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index >= this.length;\n },\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n if (!direction) {\n return this._o;\n }\n if (!this._o) {\n return false;\n } // did we view to the right?\n\n if (direction === '|>') {\n return this.move.direction === '|' && this.move.steps === '>';\n } // did we view to the left?\n\n if (direction === '|<') {\n return this.move.direction === '|' && this.move.steps === '<';\n }\n return this.move.direction === direction;\n },\n /**\n * Checks if bound mode is active\n *\n * @return {Boolean}\n */\n isBound: function isBound() {\n return Glide.isType('slider') && Glide.settings.focusAt !== 'center' && Glide.settings.bound;\n }\n };\n /**\n * Returns index value to move forward/to the right\n *\n * @param viewSize\n * @returns {Number}\n */\n\n function calculateForwardIndex(viewSize) {\n var index = Glide.index;\n if (Glide.isType('carousel')) {\n return index + viewSize;\n }\n return index + (viewSize - index % viewSize);\n }\n /**\n * Normalizes the given forward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {Number}\n */\n\n function normalizeForwardIndex(index, viewSize) {\n var length = Run.length;\n if (index <= length) {\n return index;\n }\n if (Glide.isType('carousel')) {\n return index - (length + 1);\n }\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on the last possible index value given by bound\n if (Run.isBound() && !Run.isEnd()) {\n return length;\n }\n return 0;\n }\n if (Run.isBound()) {\n return length;\n }\n return Math.floor(length / viewSize) * viewSize;\n }\n /**\n * Calculates index value to move backward/to the left\n *\n * @param viewSize\n * @returns {Number}\n */\n\n function calculateBackwardIndex(viewSize) {\n var index = Glide.index;\n if (Glide.isType('carousel')) {\n return index - viewSize;\n } // ensure our back navigation results in the same index as a forward navigation\n // to experience a homogeneous paging\n\n var view = Math.ceil(index / viewSize);\n return (view - 1) * viewSize;\n }\n /**\n * Normalizes the given backward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {*}\n */\n\n function normalizeBackwardIndex(index, viewSize) {\n var length = Run.length;\n if (index >= 0) {\n return index;\n }\n if (Glide.isType('carousel')) {\n return index + (length + 1);\n }\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on first possible index value before we to rewind to the length given by bound\n if (Run.isBound() && Run.isStart()) {\n return length;\n }\n return Math.floor(length / viewSize) * viewSize;\n }\n return 0;\n }\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length; // If the `bound` option is active, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (this.isBound()) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n return length - 1;\n }\n });\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n return Run;\n}\n\n/**\n * Returns a current time.\n *\n * @return {Number}\n */\nfunction now() {\n return new Date().getTime();\n}\n\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n return throttled;\n}\nvar MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n};\nfunction Gaps(Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n define(Gaps, 'grow', {\n /**\n * Gets additional dimensions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * Components.Sizes.length;\n }\n });\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n return Gaps.value * (perView - 1) / perView;\n }\n });\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n return Gaps;\n}\n\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\nfunction siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n return matched;\n }\n return [];\n}\n/**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\n\nfunction exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n return false;\n}\nvar TRACK_SELECTOR = '[data-glide-el=\"track\"]';\nfunction Html(Glide, Components, Events) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.collectSlides();\n },\n /**\n * Collect slides\n */\n collectSlides: function collectSlides() {\n this.slides = Array.prototype.slice.call(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.slide.clone);\n });\n }\n };\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n if (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn(\"Could not find track element. Please use \".concat(TRACK_SELECTOR, \" attribute.\"));\n }\n }\n });\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n /**\n * Add/remove/reorder dynamic slides\n */\n\n Events.on('update', function () {\n Html.collectSlides();\n });\n return Html;\n}\nfunction Peek(Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n Peek._v = value;\n }\n });\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n return value * 2 / perView;\n }\n });\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n return Peek;\n}\nfunction Move(Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.offset = offset;\n Events.emit('move', {\n movement: this.value\n });\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n return translate - offset;\n }\n });\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n return Move;\n}\nfunction Sizes(Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimensions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = \"\".concat(this.slideWidth, \"px\");\n var slides = Components.Html.slides;\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n /**\n * Setups dimensions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper() {\n Components.Html.wrapper.style.width = \"\".concat(this.wrapperSize, \"px\");\n },\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n Components.Html.wrapper.style.width = '';\n }\n };\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n define(Sizes, 'width', {\n /**\n * Gets width value of the slider (visible area).\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.track.offsetWidth;\n }\n });\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of a single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimensions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Sizes.remove();\n });\n return Sizes;\n}\nfunction Build(Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n this.typeClass();\n this.activeClass();\n Events.emit('build.after');\n },\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes.type[Glide.settings.type]);\n },\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n if (slide) {\n slide.classList.add(classes.slide.active);\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.slide.active);\n });\n }\n },\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var _Glide$settings$class = Glide.settings.classes,\n type = _Glide$settings$class.type,\n slide = _Glide$settings$class.slide;\n Components.Html.root.classList.remove(type[Glide.settings.type]);\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(slide.active);\n });\n }\n };\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimensions\n * - on updating settings via API\n */\n\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n\n Events.on('move.after', function () {\n Build.activeClass();\n });\n return Build;\n}\nfunction Clones(Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n /**\n * Collect clones with pattern.\n *\n * @return {[]}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes,\n cloningRatio = _Glide$settings.cloningRatio;\n if (slides.length !== 0) {\n var peekIncrementer = +!!Glide.settings.peek;\n var cloneCount = perView + peekIncrementer + Math.round(perView / 2);\n var append = slides.slice(0, cloneCount).reverse();\n var prepend = slides.slice(cloneCount * -1);\n for (var r = 0; r < Math.max(cloningRatio, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < append.length; i++) {\n var clone = append[i].cloneNode(true);\n clone.classList.add(classes.slide.clone);\n items.push(clone);\n }\n for (var _i = 0; _i < prepend.length; _i++) {\n var _clone = prepend[_i].cloneNode(true);\n _clone.classList.add(classes.slide.clone);\n items.unshift(_clone);\n }\n }\n }\n return items;\n },\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half * -1).reverse();\n var width = \"\".concat(Components.Sizes.slideWidth, \"px\");\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n define(Clones, 'grow', {\n /**\n * Gets additional dimensions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n\n Events.on('destroy', function () {\n Clones.remove();\n });\n return Clones;\n}\nvar EventsBinder = /*#__PURE__*/function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, EventsBinder);\n this.listeners = listeners;\n }\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n _createClass(EventsBinder, [{\n key: \"on\",\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (isString(events)) {\n events = [events];\n }\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n }, {\n key: \"off\",\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (isString(events)) {\n events = [events];\n }\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n return EventsBinder;\n}();\nfunction Resize(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n return Resize;\n}\nvar VALID_DIRECTIONS = ['ltr', 'rtl'];\nvar FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n};\nfunction Direction(Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n return pattern;\n },\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n\n Events.on('update', function () {\n Direction.mount();\n });\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n return Direction;\n}\n\n/**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Rtl(Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Gap(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var multiplier = Math.floor(translate / Components.Sizes.slideWidth);\n return translate + Components.Gaps.value * multiplier;\n }\n };\n}\n\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Grow(Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n}\n\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\nfunction Peeking(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n if (isObject(peek)) {\n return translate - peek.before;\n }\n return translate - peek;\n }\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Focusing(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n}\n\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\nfunction mutator(Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n return translate;\n }\n };\n}\nfunction Translate(Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n var translate3d = \"translate3d(\".concat(-1 * transform, \"px, 0px, 0px)\");\n Components.Html.wrapper.style.mozTransform = translate3d; // needed for supported Firefox 10-15\n\n Components.Html.wrapper.style.webkitTransform = translate3d; // needed for supported Chrome 10-35, Safari 5.1-8, and Opera 15-22\n\n Components.Html.wrapper.style.transform = translate3d;\n },\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n },\n /**\n * @return {number}\n */\n getStartIndex: function getStartIndex() {\n var length = Components.Sizes.length;\n var index = Glide.index;\n var perView = Glide.settings.perView;\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n return length + (index - perView);\n } // \"modulo length\" converts an index that equals length to zero\n\n return (index + perView) % length;\n },\n /**\n * @return {number}\n */\n getTravelDistance: function getTravelDistance() {\n var travelDistance = Components.Sizes.slideWidth * Glide.settings.perView;\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n // reverse travel distance so that we don't have to change subtract operations\n return travelDistance * -1;\n }\n return travelDistance;\n }\n };\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n\n Events.on('move', function (context) {\n if (!Glide.isType('carousel') || !Components.Run.isOffset()) {\n return Translate.set(context.movement);\n }\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(Components.Sizes.slideWidth * Glide.index);\n });\n var startWidth = Components.Sizes.slideWidth * Components.Translate.getStartIndex();\n return Translate.set(startWidth - Components.Translate.getTravelDistance());\n });\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Translate.remove();\n });\n return Translate;\n}\nfunction Transition(Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n if (!disabled) {\n return \"\".concat(property, \" \").concat(this.duration, \"ms \").concat(settings.animationTimingFunc);\n }\n return \"\".concat(property, \" 0ms \").concat(settings.animationTimingFunc);\n },\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n this.set();\n },\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n this.set();\n }\n };\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n return settings.animationDuration;\n }\n });\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n\n Events.on('move', function () {\n Transition.set();\n });\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimensions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n\n Events.on('run', function () {\n Transition.enable();\n });\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Transition.remove();\n });\n return Transition;\n}\n\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\nvar supportsPassive$1 = supportsPassive;\nvar START_EVENTS = ['touchstart', 'mousedown'];\nvar MOVE_EVENTS = ['touchmove', 'mousemove'];\nvar END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\nvar MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\nfunction Swipe(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n var swipe = this.touches(event);\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n this.bindSwipeMove();\n this.bindSwipeEnd();\n Events.emit('swipe.start');\n }\n },\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n var swipe = this.touches(event);\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n Components.Move.make(subExSx * toFloat(touchRatio));\n Components.Html.root.classList.add(classes.dragging);\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var _Glide$settings2 = Glide.settings,\n perSwipe = _Glide$settings2.perSwipe,\n touchAngle = _Glide$settings2.touchAngle,\n classes = _Glide$settings2.classes;\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n this.enable();\n if (swipeDistance > threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n } else if (swipeDistance < -threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n Components.Html.root.classList.remove(classes.dragging);\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n Events.emit('swipe.end');\n }\n },\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n var _Glide$settings3 = Glide.settings,\n swipeThreshold = _Glide$settings3.swipeThreshold,\n dragThreshold = _Glide$settings3.dragThreshold;\n if (swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n if (dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n return event.touches[0] || event.changedTouches[0];\n },\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n return settings.swipeThreshold;\n },\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n Components.Transition.enable();\n return this;\n },\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n Components.Transition.disable();\n return this;\n }\n };\n /**\n * Add component class:\n * - after initial building\n */\n\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n return Swipe;\n}\nfunction Images(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n return Images;\n}\nfunction Anchors(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n\n var detached = false;\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n\n var prevented = false;\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n this.bind();\n },\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n }\n detached = true;\n }\n return this;\n },\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n }\n detached = false;\n }\n return this;\n }\n };\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n return Anchors;\n}\nvar NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\nvar PREVIOUS_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\"<\\\"]\");\nvar NEXT_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\">\\\"]\");\nfunction Controls(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n /**\n * Collection of arrow control HTML elements.\n *\n * @private\n * @type {Object}\n */\n\n this._arrowControls = {\n previous: Components.Html.root.querySelectorAll(PREVIOUS_CONTROLS_SELECTOR),\n next: Components.Html.root.querySelectorAll(NEXT_CONTROLS_SELECTOR)\n };\n this.addBindings();\n },\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n if (!item) {\n return;\n }\n if (item) {\n item.classList.add(settings.classes.nav.active);\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.nav.active);\n });\n }\n },\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n if (item) {\n item.classList.remove(Glide.settings.classes.nav.active);\n }\n },\n /**\n * Calculates, removes or adds `Glide.settings.classes.disabledArrow` class on the control arrows\n */\n setArrowState: function setArrowState() {\n if (Glide.settings.rewind) {\n return;\n }\n var next = Controls._arrowControls.next;\n var previous = Controls._arrowControls.previous;\n this.resetArrowState(next, previous);\n if (Glide.index === 0) {\n this.disableArrow(previous);\n }\n if (Glide.index === Components.Run.length) {\n this.disableArrow(next);\n }\n },\n /**\n * Removes `Glide.settings.classes.disabledArrow` from given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n resetArrowState: function resetArrowState() {\n var settings = Glide.settings;\n for (var _len = arguments.length, lists = new Array(_len), _key = 0; _key < _len; _key++) {\n lists[_key] = arguments[_key];\n }\n lists.forEach(function (list) {\n list.forEach(function (element) {\n element.classList.remove(settings.classes.arrow.disabled);\n });\n });\n },\n /**\n * Adds `Glide.settings.classes.disabledArrow` to given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n disableArrow: function disableArrow() {\n var settings = Glide.settings;\n for (var _len2 = arguments.length, lists = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n lists[_key2] = arguments[_key2];\n }\n lists.forEach(function (list) {\n list.forEach(function (element) {\n element.classList.add(settings.classes.arrow.disabled);\n });\n });\n },\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in direction given via the\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {void}\n */\n click: function click(event) {\n if (!supportsPassive$1 && event.type === 'touchstart') {\n event.preventDefault();\n }\n var direction = event.currentTarget.getAttribute('data-glide-dir');\n Components.Run.make(Components.Direction.resolve(direction));\n }\n };\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n /**\n * Add or remove disabled class of arrow elements\n */\n\n Events.on(['mount.after', 'run'], function () {\n Controls.setArrowState();\n });\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n return Controls;\n}\nfunction Keyboard(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n var perSwipe = Glide.settings.perSwipe;\n if (event.keyCode === 39) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n }\n if (event.keyCode === 37) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n }\n }\n };\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n\n Events.on('update', function () {\n Keyboard.mount();\n });\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Keyboard;\n}\nfunction Autoplay(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.enable();\n this.start();\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n /**\n * Enables autoplaying\n *\n * @returns {Void}\n */\n enable: function enable() {\n this._e = true;\n },\n /**\n * Disables autoplaying.\n *\n * @returns {Void}\n */\n disable: function disable() {\n this._e = false;\n },\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n if (!this._e) {\n return;\n }\n this.enable();\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n Components.Run.make('>');\n _this.start();\n Events.emit('autoplay');\n }, this.time);\n }\n }\n },\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n Binder.on('mouseover', Components.Html.root, function () {\n if (_this2._e) {\n _this2.stop();\n }\n });\n Binder.on('mouseout', Components.Html.root, function () {\n if (_this2._e) {\n _this2.start();\n }\n });\n },\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n if (autoplay) {\n return toInt(autoplay);\n }\n return toInt(Glide.settings.autoplay);\n }\n });\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['run.before', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n Events.on(['pause', 'destroy'], function () {\n Autoplay.disable();\n Autoplay.stop();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['run.after', 'swipe.end'], function () {\n Autoplay.start();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['play'], function () {\n Autoplay.enable();\n Autoplay.start();\n });\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n\n Events.on('update', function () {\n Autoplay.mount();\n });\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Autoplay;\n}\n\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n\nfunction sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn(\"Breakpoints option must be an object\");\n }\n return {};\n}\nfunction Breakpoints(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n\n var settings = Glide.settings;\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n\n var points = sortBreakpoints(settings.breakpoints);\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n\n var defaults = Object.assign({}, settings);\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia(\"(max-width: \".concat(point, \"px)\")).matches) {\n return points[point];\n }\n }\n }\n }\n return defaults;\n }\n };\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n\n Object.assign(settings, Breakpoints.match(points));\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n\n Events.on('update', function () {\n points = sortBreakpoints(points);\n defaults = Object.assign({}, settings);\n });\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n return Breakpoints;\n}\nvar COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n};\nvar Glide = /*#__PURE__*/function (_Core) {\n _inherits(Glide, _Core);\n var _super = _createSuper(Glide);\n function Glide() {\n _classCallCheck(this, Glide);\n return _super.apply(this, arguments);\n }\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _get(_getPrototypeOf(Glide.prototype), \"mount\", this).call(this, Object.assign({}, COMPONENTS, extensions));\n }\n }]);\n return Glide;\n}(Glide$1);\nexport { Glide as default };","import $ from 'cash-dom'\n\n$(document).on('click', '.accordion-item-toggle', (e) => {\n let item = $(e.currentTarget).closest('.accordion-item')\n \n if (item.hasClass('is-open')) {\n item.removeClass('is-open')\n } else {\n $(e.currentTarget).closest('.accordion').find('.accordion-item').removeClass('is-open')\n item.addClass('is-open')\n }\n \n})","import $ from 'cash-dom'\n\n$(document).on('click', '.dropdown-toggle', function(e) {\n e.preventDefault();\n e.stopPropagation()\n\n let dropdown = $(this).closest('.dropdown');\n\n if (!dropdown.hasClass('is-active')) {\n open(dropdown);\n } else {\n close(dropdown)\n }\n});\n\n$(document).on('keydown', '.dropdown-toggle', function(e) {\n let dropdown = $(this).closest('.dropdown');\n if (e.keyCode == 40) {\n e.preventDefault();\n open(dropdown);\n }\n});\n\nfunction open(dropdown) {\n $('.dropdown').removeClass('is-active'); // Closes all active dropdowns\n dropdown.addClass('is-active');\n\n let items = dropdown.find('.dropdown-item');\n if (window.innerWidth >= 740) {\n items = items.not('.dropdown-item.only-mobile');\n items = items.not('.dropdown-item.only-mobile_nav');\n }\n if (items.length > 0) {\n items[0].focus()\n }\n \n\n $(document).on('keyup.dropdown', function(e) {\n if (e.keyCode == 27) {\n close(dropdown);\n }\n });\n\n setTimeout(function() {\n $(document).on('click.dropdown', function() {\n close(dropdown);\n });\n }, 100);\n}\n\nfunction close(dropdown) {\n dropdown.removeClass('is-active');\n $(document).off('click.dropdown');\n $(document).off('keyup.dropdown');\n\n let toggle = dropdown.find('.dropdown-toggle')[0]\n if (toggle) {\n toggle.focus();\n }\n}\n\n\n$(document).on('keydown', '.dropdown-item', function(e) {\n let items, nextIndex, prevIndex\n\n switch (e.keyCode) {\n case 38: // up key\n case 40: // down key\n e.preventDefault();\n e.stopPropagation();\n\n items = $(this).closest('.dropdown-nav').find('.dropdown-item');\n\n if (window.innerWidth >= 740) {\n items = items.not('.dropdown-item.only-mobile');\n }\n\n let currentIndex = items.index(this)\n prevIndex = currentIndex - 1\n nextIndex = currentIndex + 1\n\n if (prevIndex < 0) {\n prevIndex = 0\n }\n\n if (nextIndex >= items.length) {\n nextIndex = items.length - 1\n }\n\n break;\n }\n\n switch (e.keyCode) {\n case 9: // Tab\n e.preventDefault();\n close($(this).closest('.dropdown'))\n break;\n case 32: // Space\n e.preventDefault();\n $(this).trigger('click');\n break;\n case 38: // up key\n items[prevIndex].focus()\n break;\n case 40: // down key\n items[nextIndex].focus()\n break;\n default:\n }\n});\n","import $ from 'cash-dom'\nimport Glide from '@glidejs/glide'\n\nfunction init() {\n let elem = document.getElementById('cases')\n \n if (!elem) {\n return\n }\n\n let toggleTextSpan = $(elem).find('.dropdown-toggle span')\n\n let glide = new Glide('#cases', {\n type: 'carousel',\n perView: 1,\n autoplay: 7000,\n })\n\n glide.on('run', function(e) {\n let nav = $(elem).find('.selector-nav')\n nav.find('.selector-nav-item').removeClass('is-active')\n nav.find('.selector-nav-item').eq(glide.index).addClass('is-active')\n\n let dropdownItems = $(elem).find('.dropdown-items')\n let selectedItem = dropdownItems.find('.dropdown-item').eq(glide.index)\n let text = selectedItem.find('span').text()\n dropdownItems.find('.dropdown-item').removeClass('is-selected')\n selectedItem.addClass('is-selected')\n toggleTextSpan.text(text)\n })\n\n glide.mount()\n}\n\n$(window).on('load', init)","import $ from 'cash-dom'\n\n$(window).on('load', () => {\n $('.faq-item').not('.is-open').addClass('is-closed')\n})\n\n$(document).on('click', '.faq-item-toggle', (e) => {\n e.preventDefault()\n const item = $(e.target).closest('.faq-item')\n console.log('item', item.length)\n item.toggleClass('is-closed')\n})","import Glide from '@glidejs/glide'\nimport $ from 'cash-dom'\n\nfunction init() {\n let elem = document.getElementById('features')\n if (!elem) {\n return\n }\n\n let toggleTextSpan = $(elem).find('.dropdown-toggle span')\n\n let glide = new Glide('#features', {\n type: 'carousel',\n perView: 1,\n autoplay: 7000,\n })\n\n glide.on('run', function(e) {\n let nav = $(elem).find('.selector-nav')\n nav.find('.selector-nav-item').removeClass('is-active')\n nav.find('.selector-nav-item').eq(glide.index).addClass('is-active')\n\n let dropdownItems = $(elem).find('.dropdown-items')\n let selectedItem = dropdownItems.find('.dropdown-item').eq(glide.index)\n let text = selectedItem.find('span').text()\n dropdownItems.find('.dropdown-item').removeClass('is-selected')\n selectedItem.addClass('is-selected')\n toggleTextSpan.text(text)\n })\n\n glide.mount()\n}\n\n$(window).on('load', init)\n\n\n","import Typed from 'typed.js';\n\nfunction init() {\n window.bof = window.bof || {}\n let strings = window.bof.headings\n \n if (!strings) {\n return\n }\n\n for (let i = 0; i < strings.length; i++) {\n strings[i] = `^500${strings[i]}`\n }\n\n if (document.querySelector('.typed')) {\n document.querySelector('.typed').innerHTML = ''\n\n new Typed('.typed', {\n strings,\n typeSpeed: 50,\n backSpeed: 50,\n loop: true,\n })\n }\n}\n\nwindow.addEventListener(\"load\", init)\n","import $ from 'cash-dom';\n\nlet url = null;\nlet searchTimeout = null;\nlet query = null;\nlet dropdown = null;\nlet searchResultItems = [];\nlet lang = document.documentElement.lang;\n\nfunction search(e) {\n if (!e.target.value || (e.target.value && e.target.value.length < 2)) {\n cancelSearch($(e.target));\n return;\n }\n\n if (searchTimeout) {\n clearTimeout(searchTimeout);\n }\n\n searchTimeout = setTimeout(() => {\n if (query === e.target.value) {\n return;\n }\n\n query = e.target.value;\n performSearch($(e.target), query);\n }, 1000);\n}\n\nfunction performSearch(inputElement, query) {\n fetch(`${inputElement.closest('.bof-search').attr('action')}?q=${query}`)\n .then((response) => response.json())\n .then((data) => {\n searchResultItems = data;\n addItemsToDropdown(inputElement);\n });\n}\n\nfunction cancelSearch(inputElement) {\n if (searchTimeout) {\n clearTimeout(searchTimeout);\n }\n\n hideDropdown(inputElement);\n searchResultItems = [];\n query = null;\n}\n\nfunction addItemsToDropdown(inputElement) {\n let noResultsText = lang === 'sv' ? 'Din sökning gav inga resultat.' : 'Your search did not return any results.';\n\n let html = '';\n\n searchResultItems.each((item) => {\n html += `\n ${item.title}
\n ${item.category.title}
\n `;\n });\n\n inputElement.parent().parent().find('.bof-search-results').html(html);\n\n if (searchResultItems.length > 0) {\n showDropdown(inputElement);\n } else {\n showDropdown(inputElement);\n let html = '';\n html += ``;\n\n inputElement.parent().parent().find('.bof-search-results').html(html);\n }\n}\n\nfunction showDropdown(inputElement) {\n console.log(inputElement);\n console.log(inputElement.parent().parent());\n inputElement.parent().parent().find('.bof-search-results').addClass('is-active');\n\n setTimeout(() => {\n $(document)\n .off('click.searchDropdown')\n .on('click.searchDropdown', () => {\n hideDropdown(inputElement);\n });\n }, 100);\n}\n\nfunction hideDropdown(inputElement) {\n inputElement.parent().parent().find('.bof-search-results').removeClass('is-active');\n $(document).off('click.searchDropdown');\n}\n\nfunction toggleCategory(category, button) {\n $('.bof-knowledge-center-search-results-filter-link').removeClass('is-active');\n button.addClass('is-active');\n\n if (category != '*') {\n $('.bof-knowledge-center-search-results-link').addClass('is-hidden');\n $(`.bof-knowledge-center-search-results-link[data-id=\"${category}\"`).removeClass('is-hidden');\n } else {\n $('.bof-knowledge-center-search-results-link').removeClass('is-hidden');\n }\n}\n\n//function init() {\n//if (document.getElementById('knowledgeEntrySearchForm')) {\n// url = document.getElementById('knowledgeEntrySearchForm').action;\n// //dropdown = $('#knowledgeEntrisSearchResult');\n//}\n//if (document.getElementById('knowledgeEntrySearchForm')) {\n// url = document.getElementById('knowledgeEntrySearchForm').action;\n// //dropdown = $('#knowledgeEntrisSearchResult');\n//}\n//}\n\n// $(document).on('focus', '.bof-search .bof-search-input', (e) => {\n// if (e.target.value && searchResultItems.length > 0) {\n// showDropdown($(e.target));\n// }\n// });\n\n//$(document).on('search', '.bof-search .bof-search-input', (e) => {\n// // cancelSearch($(e.target));\n// // performSearch($(e.target), query);\n// query = e.target.value;\n// url = lang === 'sv' ? '/sv/knowledge-center/search' : '/en/knowledge-center/search';\n\n// console.log(url);\n// //window.location.href = `${url}?q=${query}`;\n//});\n\nfunction executeSearch(inputElement) {\n const query = inputElement.val();\n const category = inputElement.attr('data-category');\n const url = lang === 'sv' ? '/sv/knowledge-center/search' : '/en/knowledge-center/search';\n\n if (category == '') {\n window.location.href = `${url}?q=${query}`;\n } else {\n window.location.href = `${url}?q=${query}&c=${category}`;\n }\n}\n\n$(document).on('submit', '.bof-search', (e) => {\n e.preventDefault();\n executeSearch($(e.target).find('.bof-search-input'));\n});\n\n$(document).on('click', '.bof-search .bof-search-icon', (e) => {\n e.preventDefault();\n executeSearch($(e.target).parent().find('.bof-search-input'));\n});\n\n$(document).on('click', '.bof-knowledge-center-search-results-filter-link', function (event) {\n event.preventDefault();\n toggleCategory($(this).attr('data-id'), $(this));\n});\n\n// $(document).on('submit', '.bof-search, .bof-search-input', (e) => {\n// cancelSearch($(e.target));\n// query = e.target.value;\n// console.log(query);\n\n// performSearch($(e.target), query);\n// // e.preventDefault();\n// });\n\n//$(window).on('load', init);\n//$(document).on('input', '#knowledgeEntrySearchInput', search);\n// $(document).on('input', '.bof-search .bof-search-input', search);\n","import $ from 'cash-dom'\n\nlet map = null\nlet initInterval = null\nlet counter = 0\nlet resizeTimeout = null\n\nfunction includeMapScript() {\n let script = document.createElement('script')\n script.type = 'text/javascript'\n script.src = 'https://api.mapbox.com/mapbox-gl-js/v2.8.1/mapbox-gl.js'\n script.id = 'mapBoxScript'\n\n document.head.appendChild(script);\n\n let link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = 'https://api.mapbox.com/mapbox-gl-js/v2.8.1/mapbox-gl.css'\n link.id = 'mapBoxCss'\n\n document.head.appendChild(link);\n}\n\nfunction init() {\n if (!document.getElementById('map')) {\n return\n }\n\n if (typeof mapboxgl !== 'object') {\n includeMapScript()\n }\n \n initInterval = setInterval(() => {\n\n if (typeof mapboxgl === 'object') {\n clearInterval(initInterval)\n initMap()\n return\n }\n\n if (counter >= 200) {\n clearInterval(initInterval)\n return\n }\n\n counter += counter\n }, 100)\n}\n\nfunction getMapCenter() {\n let center = [14.737861474264719, 56.88061086641582]\n\n if (window.innerWidth <= 740) {\n center = [14.774696182229604, 56.898563345499355]\n }\n\n return center\n}\n\nfunction initMap() {\n mapboxgl.accessToken = 'pk.eyJ1IjoiZ2FicmllbC1zdmVubmVyYmVyZyIsImEiOiJjbDNzb2o0ZzgwMTIwM2Nudmoycmw1NDVrIn0.fKWvXdet0y_F2jef_0o5DA'\n\n map = new mapboxgl.Map({\n container: 'map',\n style: 'mapbox://styles/gabriel-svennerberg/cl3sonuey008c15msjmezpuz3',\n center: getMapCenter(),\n zoom: 12,\n interactive: false\n })\n \n new mapboxgl.Marker({ \n color: 'black',\n })\n .setLngLat([14.774147, 56.880127])\n .addTo(map)\n}\n\nfunction setMapCenter() {\n if (!map) {\n return\n }\n\n if (resizeTimeout) {\n clearTimeout(resizeTimeout)\n }\n\n resizeTimeout = setTimeout(() => {\n map.setCenter(getMapCenter())\n }, 100)\n\n}\n\n$(window).on('load', init)\n$(window).on('resize', setMapCenter)","import $ from 'cash-dom'\n\nfunction validateEmailSyntax(value) {\n const validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/;\n\n if (value.match(validRegex)) {\n return true\n } else {\n return false\n }\n}\n\nfunction validateField(field, type = 'text') {\n let valid = true\n const container = field.closest('.form-field')\n\n container.removeClass('has-error')\n \n if (type === 'email') {\n if (!validateEmailSyntax(field.val())) {\n valid = false\n container.addClass('has-error')\n }\n } else if (type === 'text') {\n if (!field.val()) {\n valid = false\n container.addClass('has-error')\n }\n } \n\n return valid\n}\n\nfunction init() {\n const form = document.getElementById('new_message')\n if (!form) {\n return\n }\n\n form.setAttribute('novalidate', '')\n}\n\n$(document).on('change', '#message_name', (e) => {\n validateField($(e.currentTarget))\n})\n\n$(document).on('change', '#message_email', (e) => {\n validateField($(e.currentTarget), 'email')\n})\n\n$(document).on('submit', '#new_message', (e) => {\n let valid = true\n\n const form = $(e.currentTarget)\n\n if (!validateField(form.find('#message_name'))) {\n valid = false\n }\n\n if (!validateField(form.find('#message_email'), 'email')) {\n valid = false\n }\n\n if (!valid) {\n e.preventDefault()\n }\n})\n\n$(window).on('load', init)","import $ from 'cash-dom'\n\n// $(document).on('load', () => {\n// $('.faq-item').not('.is-open').addClass('is-closed')\n// })\n\n$(document).on('click', '.bof-prices-list-link.is-centered.is-mobile', (e) => {\n e.preventDefault()\n console.log(e);\n const item = $(e.currentTarget.nextElementSibling)\n const icon = $(e.currentTarget.children[0])\n item.toggleClass('is-open')\n icon.toggleClass('fa-chevron-down')\n icon.toggleClass('fa-chevron-up')\n})","import $ from 'cash-dom';\n\n$(window).on('load', () => {\n function init() {\n initListeners();\n }\n\n function initListeners() {\n $('.bof-reader-menu-item-heading').on('click', function (event) {\n event.preventDefault();\n\n $(this).toggleClass('is-active');\n $(this).parent().find('.bof-reader-menu-item-child').toggleClass('is-active');\n });\n\n $('.bof-reader-menu-item-child-heading').on('click', function (event) {\n event.preventDefault();\n\n $(this).toggleClass('is-active');\n $(this).parent().find('.bof-reader-menu-item-child-items').toggleClass('is-active');\n });\n\n $('.bof-reader-mobile-menu-link').on('click', function (event) {\n event.preventDefault();\n\n $('body').toggleClass('is-modal-active');\n $('.bof-reader-mobile-menu-wrapper').toggleClass('is-active');\n $('.bof-reader-mobile-menu-link-icon').toggleClass('is-active');\n });\n\n $('.bof-reader-content-category-toggle.is-show-all').on('click', function (event) {\n event.preventDefault();\n\n $(this).removeClass('is-active');\n $('.bof-reader-content-category-toggle.is-show-less').addClass('is-active');\n $('.bof-reader-content-category-item.is-overflow').removeClass('is-hidden');\n });\n\n $('.bof-reader-content-category-toggle.is-show-less').on('click', function (event) {\n event.preventDefault();\n\n $(this).removeClass('is-active');\n $('.bof-reader-content-category-toggle.is-show-all').addClass('is-active');\n $('.bof-reader-content-category-item.is-overflow').addClass('is-hidden');\n });\n }\n\n init();\n});\n","import $ from 'cash-dom'\n\nlet resizeTimeout = null\n\nfunction updateHandlePosition(content) {\n const scrollPosition = content[0].scrollLeft\n const contentInner = content.find('.scrollable-content-inner')\n const handle = content.closest('.scrollable').find('.scrollable-scrollbar-handle')\n let factor = contentInner.width() / content.width()\n \n let handlePosition = (scrollPosition / factor)\n\n if (handlePosition > content.width() - handle.width()) {\n handlePosition = content.width() - handle.width()\n }\n\n handle.css({\n left: `${handlePosition}px`\n })\n}\n\nfunction setHandleWidth(component) {\n if (!component || (component && component.length === 0)) {\n return\n }\n\n const content = component.find('.scrollable-content-inner')\n const handle = component.find('.scrollable-scrollbar-handle')\n\n if (content.length === 0 || handle.length === 0) {\n return\n }\n\n let handleWidth = component.width() / content.width() * 100\n\n handle.css({\n width: `${handleWidth}%`\n })\n}\n\nfunction initScrollables() {\n $('.scrollable').each((index, obj) => {\n const component = $(obj)\n setHandleWidth(component)\n updateHandlePosition(component.find('.scrollable-content'))\n \n\n component.find('.scrollable-content').on('scroll', (e) => {\n updateHandlePosition($(e.target))\n })\n })\n}\n\nfunction navigate(direction, button) {\n const component = button.closest('.scrollable')\n const content = component.find('.scrollable-content')\n const contentInner = component.find('.scrollable-content-inner')\n const rightButton = component.find('.scrollable-nav-item.is-right')\n const leftButton = component.find('.scrollable-nav-item.is-left')\n \n \n\n let scrollPosition = 0\n let hasMoreItems = false\n\n \n\n if (direction === 'right') {\n scrollPosition = content.width() + content[0].scrollLeft\n leftButton.removeClass('is-disabled')\n \n if (scrollPosition > contentInner.width() - content.width()) {\n scrollPosition = contentInner.width() - content.width()\n hasMoreItems = false\n rightButton.addClass('is-disabled')\n }\n } else if (direction === 'left') {\n scrollPosition = (content.width() * -1) + content[0].scrollLeft\n rightButton.removeClass('is-disabled')\n hasMoreItems = true\n if (scrollPosition < 0) {\n scrollPosition = 0\n leftButton.addClass('is-disabled')\n rightButton.removeClass('is-disabled')\n }\n }\n\n // if (!hasMoreItems) {\n // rightButton.removeClass('is-disabled')\n // }\n\n content[0].scrollTo({\n top: 0,\n left: scrollPosition,\n behavior: 'smooth'\n })\n}\n\n// Event handlers\n\n$(window).on('load', initScrollables)\n\n$(window).on('resize.scrollable', () => {\n if (resizeTimeout) {\n clearTimeout(resizeTimeout)\n }\n\n resizeTimeout = setTimeout(initScrollables, 200)\n})\n\n$(document).on('click', '.scrollable-scrollbar', (e) => {\n const scrollBar = $(e.target)\n const handle = scrollBar.find('.scrollable-scrollbar-handle')\n const component = scrollBar.closest('.scrollable')\n const content = component.find('.scrollable-content')\n const contentInner = component.find('.scrollable-content-inner')\n\n let factor = contentInner.width() / component.width()\n let clickPosition = e.clientX - component[0].offsetLeft\n\n let scrollPosition = (clickPosition * factor) - handle.width()\n if (scrollPosition < 0) {\n scrollPosition = 0\n }\n\n content[0].scrollTo({\n top: 0,\n left: scrollPosition,\n behavior: 'smooth'\n })\n})\n\n$(document).on('click', '.scrollable-nav-item', (e) => {\n const button = $(e.currentTarget)\n button.hasClass('is-right') ? navigate('right', button) : navigate('left', button)\n})","import $ from 'cash-dom'\n\nfunction showMega() {\n const mega = $('#productsMega')\n mega.addClass('is-active')\n $('html').addClass('is-modal_mode')\n\n setTimeout(() => {\n $('body').on('click.megaMenu', () => {\n hideMega()\n })\n }, 100)\n}\n\nfunction hideMega() {\n const mega = $('#productsMega')\n mega.removeClass('is-active')\n $('html').removeClass('is-modal_mode')\n\n $('body').off('click.megaMenu')\n}\n\n$(document).on('click', '.siteheader-toggle', (e) => {\n $('.sitenav').toggleClass('is-active')\n $('body').addClass('is-modal-active')\n $('.bof-reader-mobile-menu-wrapper').removeClass('is-active');\n $('.bof-reader-mobile-menu-link-icon').removeClass('is-active');\n})\n\n$(document).on('click', '.sitenav-close', (e) => {\n $('.sitenav').removeClass('is-active')\n $('body').removeClass('is-modal-active')\n})\n\n$(document).on('click', '.sitenav-item.is-products', (e) => {\n e.preventDefault()\n e.stopPropagation()\n \n const mega = $('#productsMega')\n if (!mega.hasClass('is-active')) {\n showMega(mega)\n $(e.target).addClass()\n } else {\n hideMega()\n }\n\n // mega.toggleClass('is-active')\n // $('html').toggleClass('is-modal_mode', mega.hasClass('is-active'))\n\n // $('body').on('click', () => {\n // $('html').removeclass('is-modal_mode')\n // })\n})\n\n$(document).on('click', '.mega-backlink-button', hideMega)\n\n\n","import $ from 'cash-dom';\n\n$(window).on('load', () => {\n $('.section iframe').each(function () {\n $(this).wrap('');\n });\n\n $('.bof-reader-content-inner iframe').each(function () {\n $(this).wrap('');\n });\n\n $('.product-content-inner img').each(function () {\n $(this).attr('data-action', 'zoom');\n });\n\n $('.case-content-inner img').each(function () {\n $(this).attr('data-action', 'zoom');\n });\n\n $('.knowledge_center-content img').each(function () {\n $(this).attr('data-action', 'zoom');\n });\n\n $('.bof-reader-content img').each(function () {\n $(this).attr('data-action', 'zoom');\n });\n});\n","import $ from 'cash-dom';\n\nfunction init() {\n let oldPosition = 0;\n\n $(window).on('scroll', () => onScroll(window.scrollY));\n\n function onScroll(scrollPos) {\n const threshold = document.querySelector('.siteheader').clientHeight;\n const thresholdTwo = threshold + 100;\n\n let isScrolledDown = false;\n let isShowing = false;\n let isHiding = false;\n let hasBackgroundColor = false;\n\n isShowing = scrollPos > threshold && oldPosition > scrollPos;\n isHiding = scrollPos > threshold && oldPosition < scrollPos;\n hasBackgroundColor = scrollPos > thresholdTwo;\n isScrolledDown = scrollPos > threshold;\n\n $('.siteheader')\n .toggleClass('is-scrolled_down', isScrolledDown)\n .toggleClass('is-showing', isShowing)\n .toggleClass('is-hiding', isHiding)\n .toggleClass('has-background-color', hasBackgroundColor);\n\n let readerMenu = document.querySelector('.bof-reader-menu');\n\n if (readerMenu != null || readerMenu != undefined) {\n $('.bof-reader-menu').toggleClass('siteheader-is-showing', isShowing);\n $('.bof-reader-details').toggleClass('siteheader-is-showing', isShowing);\n $('.bof-reader-mobile-menu').toggleClass('is-scrolled-down', isScrolledDown);\n $('.bof-reader-mobile-menu').toggleClass('is-showing', isShowing);\n $('.bof-reader-mobile-menu').toggleClass('is-hiding', isHiding);\n } \n\n oldPosition = scrollPos;\n }\n}\n\n$(window).on('load', init)\n","import $ from 'cash-dom';\n\n$(window).on('load', () => {\n document.querySelectorAll('a[href^=\"#\"]').forEach((anchor) => {\n anchor.addEventListener('click', function (e) {\n if (document.querySelector(this.getAttribute('href')).scrollIntoView != undefined) {\n e.preventDefault();\n\n document.querySelector(this.getAttribute('href')).scrollIntoView({\n behavior: 'smooth',\n });\n }\n });\n });\n});\n","import $ from 'cash-dom'\nimport ScrollTrigger from '@terwanerik/scrolltrigger'\n\nlet locale = 'en-IN'\n\n// How long you want the animation to take, in ms\nconst animationDuration = 2000;\n// Calculate how long each ‘frame’ should last if we want to update the animation 60 times per second\nconst frameDuration = 1000 / 60;\n// Use that to calculate how many frames we need to complete the animation\nconst totalFrames = Math.round( animationDuration / frameDuration );\n// An ease-out function that slows the count as it progresses\nconst easeOutQuad = t => t * ( 2 - t );\n\n// The animation function, which takes an Element\nconst animateCountUp = el => {\n\tlet frame = 0;\n let value = el.innerHTML\n if (value) {\n value = value.replace(/ /g, '')\n }\n\tconst countTo = parseInt(value, 10)\n\t// Start the animation running 60 times per second\n\tconst counter = setInterval( () => {\n\t\tframe++;\n\t\t// Calculate our progress as a value between 0 and 1\n\t\t// Pass that value to our easing function to get our\n\t\t// progress on a curve\n\t\tconst progress = easeOutQuad( frame / totalFrames );\n\t\t// Use the progress value to calculate the current count\n\t\tconst currentCount = Math.round( countTo * progress );\n\n\t\t// If the current count has changed, update the element\n\t\tif ( parseInt( el.innerHTML, 10 ) !== currentCount ) {\n\t\t\tel.innerHTML = formatNumber(currentCount);\n\t\t}\n\n\t\t// If we’ve reached our last frame, stop the animation\n\t\tif ( frame === totalFrames ) {\n\t\t\tclearInterval( counter );\n\t\t}\n\t}, frameDuration );\n};\n\n// Run the animation on all elements with a class of ‘countup’\nfunction runAnimations() {\n\tconst countupEls = document.querySelectorAll('.stats-item-value')\n\tcountupEls.forEach(animateCountUp);\n}\n\nfunction formatNumber(number) {\n if (typeof Intl !== 'object') {\n return number\n }\n return Intl.NumberFormat(locale).format(number)\n}\n\nfunction isMobileDevice() {\n if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\n return true\n } else{\n return false\n }\n}\n\nfunction init() {\n\n if (document.documentElement.lang === 'sv') {\n locale = 'sv-SE'\n }\n\n const trigger = new ScrollTrigger()\n\n if (!isMobileDevice()) {\n trigger.add(document.querySelectorAll('.stats-item-value'), {\n once: true,\n toggle: {\n callback: {\n in: (el) => {\n runAnimations()\n },\n }\n }\n })\n }\n \n // trigger.add(document.querySelectorAll('.packages'), {\n // once: true,\n // toggle: {\n // callback: {\n // in: (el) => {\n // console.log(el)\n // $(el.element).addClass('is-visible')\n // },\n // }\n // }\n // })\n\n}\n\n$(window).on('load', init)","import $ from 'cash-dom'\n\nfunction validateEmailSyntax(value) {\n const validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/;\n\n if (value.match(validRegex)) {\n return true\n } else {\n return false\n }\n}\n\nfunction validateField(field, type = 'text') {\n let valid = true\n const container = field.closest('.form-field')\n\n container.removeClass('has-error')\n \n if (type === 'email') {\n if (!validateEmailSyntax(field.val())) {\n valid = false\n container.addClass('has-error')\n }\n } else if (type === 'text') {\n if (!field.val()) {\n valid = false\n container.addClass('has-error')\n }\n } \n\n return valid\n}\n\nfunction init() {\n const form = document.getElementById('new_subscriber')\n if (!form) {\n return\n }\n\n console.log('init', form)\n\n form.setAttribute('novalidate', '')\n}\n\n$(document).on('change', '#subscriber_first_name', (e) => {\n validateField($(e.currentTarget))\n})\n\n$(document).on('change', '#subscriber_last_name', (e) => {\n validateField($(e.currentTarget))\n})\n\n$(document).on('change', '#subscriber_email', (e) => {\n validateField($(e.currentTarget), 'email')\n})\n\n$(document).on('submit', '#new_subscriber', (e) => {\n let valid = true\n\n const form = $(e.currentTarget)\n\n if (!validateField(form.find('#subscriber_first_name'))) {\n valid = false\n }\n\n if (!validateField(form.find('#subscriber_last_name'))) {\n valid = false\n }\n\n if (!validateField(form.find('#subscriber_email'), 'email')) {\n valid = false\n }\n\n if (!valid) {\n e.preventDefault()\n }\n})\n\n$(window).on('load', init)","\nimport $ from 'cash-dom'\nimport Glide from '@glidejs/glide'\n\nfunction init() {\n if (!document.getElementById('testimonials')) {\n return\n }\n \n var glide = new Glide('#testimonials', {\n type: 'carousel',\n perView: 1,\n autoplay: 5000,\n\n })\n \n glide.mount()\n}\n\nwindow.addEventListener(\"load\", init)","import $ from 'cash-dom';\n\n$(window).on('load', () => {\n let isBot = false;\n\n function init() {\n initListeners();\n initLabels();\n determineBot($('.up-form-field.is-botcheck input'));\n }\n\n function initListeners() {\n $('.up-form-field:not(.is-phone) input').on('input', function (event) {\n positionLabel($(event.currentTarget));\n });\n\n $('.up-form-field input').on('keydown', function (event) {\n if (event.key == 'Enter' && isBot) {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n }\n });\n\n $('#up-form submit').on('keypress', function (event) {\n if (event.key == 'Enter' && isBot) {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n }\n });\n\n $('.up-form-field.is-botcheck input').on('input', function (event) {\n determineBot($(event.currentTarget));\n });\n\n $('#up-form').on('submit', function (event) {\n if (isBot) {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n }\n });\n }\n\n function initLabels() {\n $('.up-form-field input').each(function (index, element) {\n positionLabel($(element));\n });\n }\n\n function determineBot(input) {\n if (input.val() != '') {\n isBot = true;\n input.parent().parent().find('.submit-button').addClass('is-disabled').find('button').attr('tabindex', -1);\n } else {\n isBot = false;\n input.parent().parent().find('.submit-button').removeClass('is-disabled').find('button').removeAttr('tabindex');\n }\n }\n\n function positionLabel(element) {\n const input = $(element);\n\n if (input.val() != '') {\n input.closest('.up-form-field').addClass('has-input');\n } else {\n input.closest('.up-form-field').removeClass('has-input');\n }\n }\n\n init();\n});\n","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nimport * as ActiveStorage from '@rails/activestorage';\nimport Rails from '@rails/ujs';\nimport 'channels';\n// import Turbolinks from 'turbolinks';\n\nRails.start();\n// Turbolinks.start();\nActiveStorage.start();\n\ndocument.querySelector('html').classList.add('js');\n\nimport 'rails/accordion';\nimport 'rails/cases';\nimport 'rails/dropdown';\nimport 'rails/faq';\nimport 'rails/features';\nimport 'rails/hero';\nimport 'rails/knowledgeEntry';\n// import 'rails/logos'\nimport 'rails/map';\nimport 'rails/message';\nimport 'rails/parallax';\nimport 'rails/prices';\nimport 'rails/reader';\nimport 'rails/scrollable';\nimport 'rails/section';\nimport 'rails/siteHeader';\nimport 'rails/sitenav';\nimport 'rails/smooth-scroll';\nimport 'rails/statement';\nimport 'rails/subscribe';\nimport 'rails/testimonials';\nimport 'rails/up-form';\n"],"sourceRoot":""}