{"version":3,"sources":["webpack://emak-block/./node_modules/@splidejs/splide/dist/js/splide.esm.js","webpack://emak-block/./node_modules/desandro-matches-selector/matches-selector.js","webpack://emak-block/./node_modules/ev-emitter/ev-emitter.js","webpack://emak-block/./node_modules/fizzy-ui-utils/utils.js","webpack://emak-block/./node_modules/flickity/js/add-remove-cell.js","webpack://emak-block/./node_modules/flickity/js/animate.js","webpack://emak-block/./node_modules/flickity/js/cell.js","webpack://emak-block/./node_modules/flickity/js/drag.js","webpack://emak-block/./node_modules/flickity/js/flickity.js","webpack://emak-block/./node_modules/flickity/js/index.js","webpack://emak-block/./node_modules/flickity/js/lazyload.js","webpack://emak-block/./node_modules/flickity/js/page-dots.js","webpack://emak-block/./node_modules/flickity/js/player.js","webpack://emak-block/./node_modules/flickity/js/prev-next-button.js","webpack://emak-block/./node_modules/flickity/js/slide.js","webpack://emak-block/./node_modules/get-size/get-size.js","webpack://emak-block/./node_modules/object-assign/index.js","webpack://emak-block/./node_modules/react/cjs/react.production.min.js","webpack://emak-block/./node_modules/react/index.js","webpack://emak-block/./node_modules/unidragger/unidragger.js","webpack://emak-block/./node_modules/unipointer/unipointer.js"],"names":["factory","self","__webpack_modules__","311","__unused_webpack_module","__webpack_exports__","r","d","module_Splide","states_namespaceObject","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","CREATED","DESTROYED","IDLE","MOUNTED","MOVING","keys","each","obj","callback","some","index","values","map","isObject","subject","merge","_ref","from","to","value","toArray","Array","isArray","between","m1","m2","Math","min","max","sprintf","format","replacements","replace","unit","type","parseFloat","pad","number","toPixel","root","div","create","applyStyle","position","width","append","clientWidth","dom_remove","find","elm","selector","querySelector","split","child","parent","tagOrClassName","children","filter","hasClass","tagName","tag","attrs","document","createElement","setAttribute","domify","html","innerHTML","firstChild","elms","forEach","parentElement","removeChild","appendChild","before","ref","insertBefore","styles","prop","style","addOrRemoveClasses","classes","remove","name","classList","addClass","removeClass","className","contains","getAttribute","removeAttribute","names","getRect","getBoundingClientRect","SLIDE","LOOP","FADE","slide","Splide","Components","list","endCallback","mount","Elements","on","e","start","destIndex","newIndex","prevIndex","coord","done","options","edgeIndex","Controller","speed","is","rewindSpeed","transition","easing","transform","x","y","fade","slides","track","height","clientHeight","setTimeout","error","message","console","MESSAGE_PREFIX","exist","Error","ROOT","STATUS_CLASSES","active","visible","loading","DEFAULTS","rewind","waitForTransition","fixedWidth","fixedHeight","heightRatio","autoWidth","autoHeight","perPage","perMove","clones","focus","gap","padding","arrows","arrowPath","pagination","autoplay","interval","pauseOnHover","pauseOnFocus","resetProgress","lazyLoad","preloadPages","keyboard","drag","dragAngleThreshold","swipeDistanceThreshold","flickVelocityThreshold","flickPower","flickMaxPages","direction","cover","accessibility","slideFocus","isNavigation","trimSpace","updateOnMove","throttle","destroy","breakpoints","slider","container","arrow","prev","next","page","clone","progress","bar","play","pause","spinner","sr","i18n","first","last","slideX","pageX","_defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","curr","Element","Event","data","unsubscribe","item","removeEventListener","event","handler","events","addEventListener","push","off","emit","_len","args","_key","core_event","State","set","state","STATES","_o","_i","_c","_e","_t","Constructor","protoProps","_proto","Extensions","Transition","_this","components","Component","toLowerCase","compose","component","required","undefined","mounted","visibility","sync","splide","sibling","_this$Event","concat","go","control","wait","add","refresh","bind","completely","_this2","reverse","get","parseInt","created","RTL","TTB","STYLE_RESTORE_EVENTS","floor","abs","func","timeout","drag_abs","ATTRIBUTES_UPDATE_EVENT","UPDATE_EVENT","SRCSET_DATA_NAME","ARIA_CURRENRT","ARIA_CONTROLS","ARIA_LABEL","ARIA_HIDDEN","TAB_INDEX","KEY_MAP","ltr","ArrowLeft","ArrowRight","Left","Right","rtl","ttb","ArrowUp","ArrowDown","Up","Down","SYNC_EVENT","CLICK_EVENTS","TRIGGER_KEYS","COMPLETE","Options","JSON","parse","Breakpoints","initialOptions","prevPoint","throttledCheck","check","point","mql","matches","matchMedia","sort","n","m","isLoop","newOptions","silently","trim","Track","String","match","indicator","toIndex","sign","toPage","parsePage","hasFocus","pageLength","edge","isRtl","ceil","Slides","id","window","uid","init","getClasses","Slide","findParts","collect","register","realIndex","SlideObject","STATUS_UPDATE_EVENTS","isClone","update","restoreStyles","_update","display","isActive","isVisible","trackRect","slideRect","top","bottom","left","right","isWithin","within","diff","forVisibility","elements_slide","getSlide","getSlides","includeClones","getSlidesByPage","idx","splice","images","querySelectorAll","count","img","onload","onerror","loaded","rootClass","Layout","isVertical","isFade","isRTL","isLoopPending","jump","newPosition","getTrimmedPosition","toCoord","onTransitionEnd","translate","cancel","shift","toPosition","innerSize","totalSize","size","minDistance","Infinity","slideIndex","distance","slideSize","offset","Clones","cloneCount","getCloneCount","slice","cloneDeeply","generateClones","baseCount","dimension","fixedSize","cloneNode","resize","totalHeight","totalWidth","slideHeight","slideWidth","margin","paddingTop","paddingBottom","offsetHeight","vertical","paddingLeft","paddingRight","listRect","offsetWidth","horizontal","getOwnPropertyDescriptor","maxWidth","Drag","startCoord","startInfo","currentInfo","isDragging","axis","disabled","move","passive","end","preventDefault","analyze","cancelable","_start","_end","log","resist","angle","atan","PI","shouldMove","info","velocity","absV","destination","timeStamp","touches","_ref2","clientX","clientY","_ref3","_ref3$x","fromX","_ref3$y","duration","time","Click","onClick","stopPropagation","stopImmediatePropagation","capture","Autoplay","flags","elapse","rate","requestAnimationFrame","_pause","step","timestamp","reset","createInterval","switchOn","flag","f","indexOf","Cover","uncover","src","background","Arrows","updateDisabled","_Components$Controlle","nextIndex","isEnough","createArrow","wrapper","firstElementChild","appendArrows","Pagination","items","li","button","createPagination","updateAttributes","getItem","LazyLoad","isSequential","isNaN","image","load","loadNext","srcset","Keyboard","Sync","syncMain","syncSibling","moveSibling","A11y","allAttributes","updateSlide","initArrows","controls","updateArrows","prevLabel","nextLabel","initPagination","activeItem","label","join","updatePagination","initNavigation","main","isButton","mainSlide","updateNavigation","_Core","subClass","superClass","constructor","__proto__","__webpack_module_cache__","moduleId","exports","module","definition","o","Symbol","toStringTag","matchesMethod","ElemProto","matchesSelector","prefixes","method","elem","EvEmitter","proto","eventName","listener","_events","listeners","once","onceEvents","_onceEvents","emitEvent","onceListeners","allOff","utils","a","b","num","arraySlice","makeArray","removeFrom","ary","getParent","parentNode","body","getQueryElement","handleEvent","filterFindElements","elems","ffElems","HTMLElement","childElems","debounceMethod","_class","methodName","threshold","timeoutName","clearTimeout","docReady","readyState","toDashed","str","$1","$2","htmlInit","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","dataOptionsAttr","jQuery","attr","instance","Flickity","insert","cells","_makeCells","len","fragment","createDocumentFragment","cell","element","getCellsFragment","isAppend","insertCellElement","endCells","_sizeCells","cellChange","prepend","getCells","minCellIndex","cellSizeChange","getCell","getSize","changedCellIndex","isPositioningSlider","prevSelectedElem","selectedElement","_positionCells","_getWrapShiftCells","setGallerySize","selectedIndex","getCellSlideIndex","select","positionSliderAtSelected","isAnimating","restingFrames","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","settle","wrapAround","modulo","slideableWidth","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","cursorPosition","rightToLeft","translateX","getPositionValue","firstSlide","positionX","slidesWidth","dispatchEvent","selectedSlide","percentPosition","round","innerWidth","isPointerDown","isFreeScrolling","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","cellShift","wrapShift","outerWidth","getFrictionFactor","force","isDraggable","dragForce","dragX","applyForce","selectedAttraction","Cell","unselect","side","originSide","setPosition","updateTarget","renderPosition","setDefaultTarget","marginProperty","cellAlign","Unidragger","extend","defaults","draggable","dragThreshold","createMethods","_touchActionValue","isTouch","isTouchmoveScrollCanceled","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","handles","viewport","bindHandles","unbindHandles","bindDrag","unbindDrag","pointerDown","pointer","okayPointerDown","_pointerDownPreventDefault","pointerDownFocus","activeElement","pointerDownBlur","pointerDownScroll","getScrollPosition","_pointerDownDefault","pointerDownPointer","pageY","_bindPostStartEvents","focusNodes","INPUT","TEXTAREA","SELECT","pageXOffset","pageYOffset","nodeName","isTouchStart","isTouchPointer","pointerType","isFocusNode","hasDragStarted","moveVector","pointerUp","isTouchScrolling","_dragPointerUp","pointerDone","dragStart","dragStartPosition","startAnimation","pointerMove","_dragPointerMove","_dragMove","dragMove","previousDragX","originBound","endBound","getLastSlide","dragMoveTime","Date","dragEnd","freeScroll","dragEndRestingSelect","restingX","getRestingPosition","dragEndBoostSelect","isDragSelect","getSlideDistance","positiveResting","_getClosestResting","negativeResting","increment","condition","contain","dist","minDist","isWrapAround","wrap","delta","staticClick","clickedCell","getParentCell","cellElem","cellIndex","onscroll","scroll","scrollMoveX","scrollMoveY","_pointerDone","animatePrototype","getComputedStyle","moveElements","toElem","GUID","instances","queryElement","flickityGUID","option","$element","_create","freeScrollFriction","friction","namespaceJQueryEvents","guid","_createSlider","watchCSS","activate","opts","_filterFindCellElements","reloadCells","tabIndex","selectInitialIndex","isInitActivated","cellSelector","positionCells","getLastCell","maxCellHeight","cellX","startCell","outerHeight","updateSlides","_containSlides","nextMargin","canCellFit","_getCanCellFit","firstMargin","addCell","updateSelectedSlide","groupCells","percentMatch","percent","_init","reposition","setCellAlign","cellAlignShorthands","center","shorthand","adaptiveHeight","_unshiftCells","gapX","_getGapCells","isRightToLeft","beginMargin","endMargin","contentWidth","isContentSmaller","beginBound","emitArgs","$event","jQEvent","trigger","isWrap","isInstant","_wrapSelect","wrapIndex","backWrapDelta","forewardWrapDelta","previous","unselectSelectedSlide","selectedCells","selectedElements","getCellElements","selectedCell","initialIndex","queryCell","selectCell","getAdjacentCellElements","adjCount","cellElems","uiChange","childUIPointerDown","onresize","content","deactivate","onkeydown","isNotFocused","keyboardHandlers","keyCode","37","leftMethod","39","rightMethod","prevScrollY","preventScroll","scrollTo","removeData","bridget","setJQuery","jq","LazyLoader","flickity","_createLazyload","lazyImages","lazyCellImages","lazyloadAttr","srcAttr","srcsetAttr","imgs","getCellLazyImages","complete","Unipointer","PageDots","holder","dots","handleClick","setDots","bindStartEvent","unbindStartEvent","addDots","removeDots","newDots","dot","updateSelected","selectedDot","onTap","pageDots","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","Player","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","hidden","tick","autoPlay","clear","stop","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","svgURI","PrevNextButton","isEnabled","isPrevious","leftDirection","isLeft","disable","svg","createSVG","createElementNS","shape","path","pathMovements","arrowShape","x0","x1","y1","x2","y2","x3","onclick","enable","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","isOriginLeft","lastCell","lastMargin","getStyleSize","logError","measurements","measurementsLength","getStyle","isBoxSizeOuter","isSetup","borderStyle","borderWidth","boxSizing","documentElement","setup","nodeType","innerHeight","getZeroSize","isBorderBox","measurement","paddingWidth","paddingHeight","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","err","shouldUseNative","symbols","s","l","for","p","q","t","u","v","w","z","A","B","iterator","C","c","encodeURIComponent","D","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","E","F","context","refs","updater","G","H","isReactComponent","setState","forceUpdate","I","isPureReactComponent","J","current","K","L","__self","__source","M","g","k","h","defaultProps","$$typeof","_owner","O","P","Q","R","pop","result","keyPrefix","S","T","U","V","escape","toString","W","aa","X","N","Y","Z","ba","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Children","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","createFactory","createRef","forwardRef","render","isValidElement","lazy","_ctor","_status","_result","memo","compare","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","version","_bindHandles","isAdd","bindMethod","touchAction","handle","_bindStartEvent","PointerEvent","cursorNodes","OPTION","clickTypes","radio","checkbox","submit","file","isCursorNode","isClickType","isOkay","_pointerReset","focused","blur","_dragStart","_dragEnd","_staticClick","isPreventingClicks","isIgnoringMouseUp","getPointerPoint","startEvent","getTouch","touch","identifier","pointerIdentifier","onmousedown","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointerId","postStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","onmouseup","_pointerUp","onpointerup","ontouchend","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel"],"mappings":"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","file":"vendors.a48386.js","sourcesContent":["/*!\n * Splide.js\n * Version : 2.4.20\n * License : MIT\n * Copyright: 2020 Naotoshi Fujita\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Splide\"] = factory();\n\telse\n\t\troot[\"Splide\"] = factory();\n})(self, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 311:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": () => /* binding */ module_Splide\n});\n\n// NAMESPACE OBJECT: ./src/js/constants/states.js\nvar states_namespaceObject = {};\n__webpack_require__.r(states_namespaceObject);\n__webpack_require__.d(states_namespaceObject, {\n \"CREATED\": () => CREATED,\n \"DESTROYED\": () => DESTROYED,\n \"IDLE\": () => IDLE,\n \"MOUNTED\": () => MOUNTED,\n \"MOVING\": () => MOVING\n});\n\n;// CONCATENATED MODULE: ./src/js/core/event.js\n/**\r\n * The function for providing an Event object simply managing events.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * The function for providing an Event object simply managing events.\r\n */\n/* harmony default export */ const core_event = (function () {\n /**\r\n * Store all event data.\r\n *\r\n * @type {Array}\r\n */\n var data = [];\n var Event = {\n /**\r\n * Subscribe the given event(s).\r\n *\r\n * @param {string} events - An event name. Use space to separate multiple events.\r\n * Also, namespace is accepted by dot, such as 'resize.{namespace}'.\r\n * @param {function} handler - A callback function.\r\n * @param {Element} elm - Optional. Native event will be listened to when this arg is provided.\r\n * @param {Object} options - Optional. Options for addEventListener.\r\n */\n on: function on(events, handler, elm, options) {\n if (elm === void 0) {\n elm = null;\n }\n\n if (options === void 0) {\n options = {};\n }\n\n events.split(' ').forEach(function (event) {\n if (elm) {\n elm.addEventListener(event, handler, options);\n }\n\n data.push({\n event: event,\n handler: handler,\n elm: elm,\n options: options\n });\n });\n },\n\n /**\r\n * Unsubscribe the given event(s).\r\n *\r\n * @param {string} events - A event name or names split by space.\r\n * @param {Element} elm - Optional. removeEventListener() will be called when this arg is provided.\r\n */\n off: function off(events, elm) {\n if (elm === void 0) {\n elm = null;\n }\n\n events.split(' ').forEach(function (event) {\n data = data.filter(function (item) {\n if (item && item.event === event && item.elm === elm) {\n unsubscribe(item);\n return false;\n }\n\n return true;\n });\n });\n },\n\n /**\r\n * Emit an event.\r\n * This method is only for custom events.\r\n *\r\n * @param {string} event - An event name.\r\n * @param {*} args - Any number of arguments passed to handlers.\r\n */\n emit: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n data.forEach(function (item) {\n if (!item.elm && item.event.split('.')[0] === event) {\n item.handler.apply(item, args);\n }\n });\n },\n\n /**\r\n * Clear event data.\r\n */\n destroy: function destroy() {\n data.forEach(unsubscribe);\n data = [];\n }\n };\n /**\r\n * Remove the registered event listener.\r\n *\r\n * @param {Object} item - An object containing event data.\r\n */\n\n function unsubscribe(item) {\n if (item.elm) {\n item.elm.removeEventListener(item.event, item.handler, item.options);\n }\n }\n\n return Event;\n});\n;// CONCATENATED MODULE: ./src/js/core/state.js\n/**\r\n * The function providing a super simple state system.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * The function providing a super simple state system.\r\n *\r\n * @param {string|number} initialState - Provide the initial state value.\r\n */\n/* harmony default export */ const state = (function (initialState) {\n /**\r\n * Store the current state.\r\n *\r\n * @type {string|number}\r\n */\n var curr = initialState;\n return {\n /**\r\n * Change state.\r\n *\r\n * @param {string|number} state - A new state.\r\n */\n set: function set(state) {\n curr = state;\n },\n\n /**\r\n * Verify if the current state is given one or not.\r\n *\r\n * @param {string|number} state - A state name to be verified.\r\n *\r\n * @return {boolean} - True if the current state is the given one.\r\n */\n is: function is(state) {\n return state === curr;\n }\n };\n});\n;// CONCATENATED MODULE: ./src/js/utils/object.js\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/**\r\n * Some utility functions related with Object, supporting IE.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\nvar keys = Object.keys;\n/**\r\n * Iterate an object like Array.forEach.\r\n * IE doesn't support forEach of HTMLCollection.\r\n *\r\n * @param {Object} obj - An object.\r\n * @param {function} callback - A function handling each value. Arguments are value, property and index.\r\n */\n\nfunction each(obj, callback) {\n keys(obj).some(function (key, index) {\n return callback(obj[key], key, index);\n });\n}\n/**\r\n * Return values of the given object as an array.\r\n * IE doesn't support Object.values.\r\n *\r\n * @param {Object} obj - An object.\r\n *\r\n * @return {Array} - An array containing all values of the given object.\r\n */\n\nfunction values(obj) {\n return keys(obj).map(function (key) {\n return obj[key];\n });\n}\n/**\r\n * Check if the given subject is object or not.\r\n *\r\n * @param {*} subject - A subject to be verified.\r\n *\r\n * @return {boolean} - True if object, false otherwise.\r\n */\n\nfunction isObject(subject) {\n return typeof subject === 'object';\n}\n/**\r\n * Merge two objects deeply.\r\n *\r\n * @param {Object} to - An object where \"from\" is merged.\r\n * @param {Object} from - An object merged to \"to\".\r\n *\r\n * @return {Object} - A merged object.\r\n */\n\nfunction merge(_ref, from) {\n var to = _extends({}, _ref);\n\n each(from, function (value, key) {\n if (isObject(value)) {\n if (!isObject(to[key])) {\n to[key] = {};\n }\n\n to[key] = merge(to[key], value);\n } else {\n to[key] = value;\n }\n });\n return to;\n}\n/**\r\n * Assign all properties \"from\" to \"to\" object.\r\n *\r\n * @param {Object} to - An object where properties are assigned.\r\n * @param {Object} from - An object whose properties are assigned to \"to\".\r\n *\r\n * @return {Object} - An assigned object.\r\n */\n\nfunction object_assign(to, from) {\n keys(from).forEach(function (key) {\n if (!to[key]) {\n Object.defineProperty(to, key, Object.getOwnPropertyDescriptor(from, key));\n }\n });\n return to;\n}\n;// CONCATENATED MODULE: ./src/js/utils/utils.js\n/**\r\n * A package of some miscellaneous utility functions.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Convert the given value to array.\r\n *\r\n * @param {*} value - Any value.\r\n *\r\n * @return {*[]} - Array containing the given value.\r\n */\n\nfunction toArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n/**\r\n * Check if the given value is between min and max.\r\n * Min will be returned when the value is less than min or max will do when greater than max.\r\n *\r\n * @param {number} value - A number to be checked.\r\n * @param {number} m1 - Minimum or maximum number.\r\n * @param {number} m2 - Maximum or minimum number.\r\n *\r\n * @return {number} - A value itself, min or max.\r\n */\n\nfunction between(value, m1, m2) {\n return Math.min(Math.max(value, m1 > m2 ? m2 : m1), m1 > m2 ? m1 : m2);\n}\n/**\r\n * The sprintf method with minimum functionality.\r\n *\r\n * @param {string} format - The string format.\r\n * @param {string|Array} replacements - Replacements accepting multiple arguments.\r\n *\r\n * @returns {string} - Converted string.\r\n */\n\nfunction sprintf(format, replacements) {\n var i = 0;\n return format.replace(/%s/g, function () {\n return toArray(replacements)[i++];\n });\n}\n/**\r\n * Append px unit to the given subject if necessary.\r\n *\r\n * @param {number|string} value - A value that may not include an unit.\r\n *\r\n * @return {string} - If the value is string, return itself.\r\n * If number, do value + \"px\". An empty string, otherwise.\r\n */\n\nfunction unit(value) {\n var type = typeof value;\n\n if (type === 'number' && value > 0) {\n return parseFloat(value) + 'px';\n }\n\n return type === 'string' ? value : '';\n}\n/**\r\n * Pad start with 0.\r\n *\r\n * @param {number} number - A number to be filled with 0.\r\n *\r\n * @return {string|number} - Padded number.\r\n */\n\nfunction pad(number) {\n return number < 10 ? '0' + number : number;\n}\n/**\r\n * Convert the given value to pixel.\r\n *\r\n * @param {Element} root - Root element where a dummy div is appended.\r\n * @param {string|number} value - CSS value to be converted, such as 10rem.\r\n *\r\n * @return {number} - Pixel.\r\n */\n\nfunction toPixel(root, value) {\n if (typeof value === 'string') {\n var div = create('div', {});\n applyStyle(div, {\n position: 'absolute',\n width: value\n });\n append(root, div);\n value = div.clientWidth;\n dom_remove(div);\n }\n\n return +value || 0;\n}\n;// CONCATENATED MODULE: ./src/js/utils/dom.js\n/**\r\n * Some utility functions related with DOM.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n/**\r\n * Find the first element matching the given selector.\r\n * Be aware that all selectors after a space are ignored.\r\n *\r\n * @param {Element|Node} elm - An ancestor element.\r\n * @param {string} selector - DOMString.\r\n *\r\n * @return {Element|null} - A found element or null.\r\n */\n\nfunction find(elm, selector) {\n return elm ? elm.querySelector(selector.split(' ')[0]) : null;\n}\n/**\r\n * Find a first child having the given tag or class name.\r\n *\r\n * @param {Element} parent - A parent element.\r\n * @param {string} tagOrClassName - A tag or class name.\r\n *\r\n * @return {Element|undefined} - A found element on success or undefined on failure.\r\n */\n\nfunction child(parent, tagOrClassName) {\n return children(parent, tagOrClassName)[0];\n}\n/**\r\n * Return chile elements that matches the provided tag or class name.\r\n *\r\n * @param {Element} parent - A parent element.\r\n * @param {string} tagOrClassName - A tag or class name.\r\n *\r\n * @return {Element[]} - Found elements.\r\n */\n\nfunction children(parent, tagOrClassName) {\n if (parent) {\n return values(parent.children).filter(function (child) {\n return hasClass(child, tagOrClassName.split(' ')[0]) || child.tagName === tagOrClassName;\n });\n }\n\n return [];\n}\n/**\r\n * Create an element with some optional attributes.\r\n *\r\n * @param {string} tag - A tag name.\r\n * @param {Object} attrs - An object any attribute pairs of name and value.\r\n *\r\n * @return {Element} - A created element.\r\n */\n\nfunction create(tag, attrs) {\n var elm = document.createElement(tag);\n each(attrs, function (value, key) {\n return setAttribute(elm, key, value);\n });\n return elm;\n}\n/**\r\n * Convert HTML string to DOM node.\r\n *\r\n * @param {string} html - HTML string.\r\n *\r\n * @return {Node} - A created node.\r\n */\n\nfunction domify(html) {\n var div = create('div', {});\n div.innerHTML = html;\n return div.firstChild;\n}\n/**\r\n * Remove a given element from a DOM tree.\r\n *\r\n * @param {Element|Element[]} elms - Element(s) to be removed.\r\n */\n\nfunction dom_remove(elms) {\n toArray(elms).forEach(function (elm) {\n if (elm) {\n var parent = elm.parentElement;\n parent && parent.removeChild(elm);\n }\n });\n}\n/**\r\n * Append a child to a given element.\r\n *\r\n * @param {Element} parent - A parent element.\r\n * @param {Element} child - An element to be appended.\r\n */\n\nfunction append(parent, child) {\n if (parent) {\n parent.appendChild(child);\n }\n}\n/**\r\n * Insert an element before the reference element.\r\n *\r\n * @param {Element|Node} ref - A reference element.\r\n * @param {Element} elm - An element to be inserted.\r\n */\n\nfunction before(elm, ref) {\n if (elm && ref) {\n var parent = ref.parentElement;\n parent && parent.insertBefore(elm, ref);\n }\n}\n/**\r\n * Apply styles to the given element.\r\n *\r\n * @param {Element} elm - An element where styles are applied.\r\n * @param {Object} styles - Object containing styles.\r\n */\n\nfunction applyStyle(elm, styles) {\n if (elm) {\n each(styles, function (value, prop) {\n if (value !== null) {\n elm.style[prop] = value;\n }\n });\n }\n}\n/**\r\n * Add or remove classes to/from the element.\r\n * This function is for internal usage.\r\n *\r\n * @param {Element} elm - An element where classes are added.\r\n * @param {string|string[]} classes - Class names being added.\r\n * @param {boolean} remove - Whether to remove or add classes.\r\n */\n\nfunction addOrRemoveClasses(elm, classes, remove) {\n if (elm) {\n toArray(classes).forEach(function (name) {\n if (name) {\n elm.classList[remove ? 'remove' : 'add'](name);\n }\n });\n }\n}\n/**\r\n * Add classes to the element.\r\n *\r\n * @param {Element} elm - An element where classes are added.\r\n * @param {string|string[]} classes - Class names being added.\r\n */\n\n\nfunction addClass(elm, classes) {\n addOrRemoveClasses(elm, classes, false);\n}\n/**\r\n * Remove a class from the element.\r\n *\r\n * @param {Element} elm - An element where classes are removed.\r\n * @param {string|string[]} classes - A class name being removed.\r\n */\n\nfunction removeClass(elm, classes) {\n addOrRemoveClasses(elm, classes, true);\n}\n/**\r\n * Verify if the provided element has the class or not.\r\n *\r\n * @param {Element} elm - An element.\r\n * @param {string} className - A class name.\r\n *\r\n * @return {boolean} - True if the element has the class or false if not.\r\n */\n\nfunction hasClass(elm, className) {\n return !!elm && elm.classList.contains(className);\n}\n/**\r\n * Set attribute to the given element.\r\n *\r\n * @param {Element} elm - An element where an attribute is assigned.\r\n * @param {string} name - Attribute name.\r\n * @param {string|number|boolean} value - Attribute value.\r\n */\n\nfunction setAttribute(elm, name, value) {\n if (elm) {\n elm.setAttribute(name, value);\n }\n}\n/**\r\n * Get attribute from the given element.\r\n *\r\n * @param {Element} elm - An element where an attribute is assigned.\r\n * @param {string} name - Attribute name.\r\n *\r\n * @return {string} - The value of the given attribute if available. An empty string if not.\r\n */\n\nfunction getAttribute(elm, name) {\n return elm ? elm.getAttribute(name) : '';\n}\n/**\r\n * Remove attribute from the given element.\r\n *\r\n * @param {Element|Element[]} elms - An element where an attribute is removed.\r\n * @param {string|string[]} names - Attribute name.\r\n */\n\nfunction removeAttribute(elms, names) {\n toArray(names).forEach(function (name) {\n toArray(elms).forEach(function (elm) {\n return elm && elm.removeAttribute(name);\n });\n });\n}\n/**\r\n * Return the Rect object of the provided object.\r\n *\r\n * @param {Element} elm - An element.\r\n *\r\n * @return {ClientRect|DOMRect} - A rect object.\r\n */\n\nfunction getRect(elm) {\n return elm.getBoundingClientRect();\n}\n/**\r\n * Trigger the given callback after all images contained by the element are loaded.\r\n *\r\n * @param {Element} elm - Element that may contain images.\r\n * @param {Function} callback - Callback function fired right after all images are loaded.\r\n */\n\nfunction loaded(elm, callback) {\n var images = elm.querySelectorAll('img');\n var length = images.length;\n\n if (length) {\n var count = 0;\n each(images, function (img) {\n img.onload = img.onerror = function () {\n if (++count === length) {\n callback();\n }\n };\n });\n } else {\n // Trigger the callback immediately if there is no image.\n callback();\n }\n}\n;// CONCATENATED MODULE: ./src/js/constants/types.js\n/**\r\n * Export slider types.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Normal slider.\r\n *\r\n * @type {string}\r\n */\nvar SLIDE = 'slide';\n/**\r\n * Loop after the last slide and before the first one.\r\n *\r\n * @type {string}\r\n */\n\nvar LOOP = 'loop';\n/**\r\n * The track doesn't move.\r\n *\r\n * @type {string}\r\n */\n\nvar FADE = 'fade';\n;// CONCATENATED MODULE: ./src/js/transitions/slide/index.js\n/**\r\n * The component for general slide effect transition.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n/**\r\n * The component for general slide effect transition.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const slide = (function (Splide, Components) {\n /**\r\n * Hold the list element.\r\n *\r\n * @type {Element}\r\n */\n var list;\n /**\r\n * Hold the onEnd callback function.\r\n *\r\n * @type {function}\r\n */\n\n var endCallback;\n return {\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n list = Components.Elements.list;\n Splide.on('transitionend', function (e) {\n if (e.target === list && endCallback) {\n endCallback();\n }\n }, list);\n },\n\n /**\r\n * Start transition.\r\n *\r\n * @param {number} destIndex - Destination slide index that might be clone's.\r\n * @param {number} newIndex - New index.\r\n * @param {number} prevIndex - Previous index.\r\n * @param {Object} coord - Destination coordinates.\r\n * @param {function} done - Callback function must be invoked when transition is completed.\r\n */\n start: function start(destIndex, newIndex, prevIndex, coord, done) {\n var options = Splide.options;\n var edgeIndex = Components.Controller.edgeIndex;\n var speed = options.speed;\n endCallback = done;\n\n if (Splide.is(SLIDE)) {\n if (prevIndex === 0 && newIndex >= edgeIndex || prevIndex >= edgeIndex && newIndex === 0) {\n speed = options.rewindSpeed || speed;\n }\n }\n\n applyStyle(list, {\n transition: \"transform \" + speed + \"ms \" + options.easing,\n transform: \"translate(\" + coord.x + \"px,\" + coord.y + \"px)\"\n });\n }\n };\n});\n;// CONCATENATED MODULE: ./src/js/transitions/fade/index.js\n/**\r\n * The component for fade transition.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n/**\r\n * The component for fade transition.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const fade = (function (Splide, Components) {\n var Fade = {\n /**\r\n * Called when the component is mounted.\r\n * Apply transition style to the first slide.\r\n */\n mount: function mount() {\n apply(Splide.index);\n },\n\n /**\r\n * Start transition.\r\n *\r\n * @param {number} destIndex - Destination slide index that might be clone's.\r\n * @param {number} newIndex - New index.\r\n * @param {number} prevIndex - Previous index.\r\n * @param {Object} coord - Destination coordinates.\r\n * @param {function} done - Callback function must be invoked when transition is completed.\r\n */\n start: function start(destIndex, newIndex, prevIndex, coord, done) {\n var track = Components.Elements.track;\n applyStyle(track, {\n height: unit(track.clientHeight)\n });\n apply(newIndex);\n setTimeout(function () {\n done();\n applyStyle(track, {\n height: ''\n });\n });\n }\n };\n /**\r\n * Apply transition style to the slide specified by the given index.\r\n *\r\n * @param {number} index - A slide index.\r\n */\n\n function apply(index) {\n var options = Splide.options;\n applyStyle(Components.Elements.slides[index], {\n transition: \"opacity \" + options.speed + \"ms \" + options.easing\n });\n }\n\n return Fade;\n});\n;// CONCATENATED MODULE: ./src/js/transitions/index.js\n/**\r\n * Export transition components.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n;// CONCATENATED MODULE: ./src/js/core/composer.js\n/**\r\n * Provide a function for composing components.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n/**\r\n * Compose components.\r\n *\r\n * @param {Splide} Splide - Splide instance.\r\n * @param {Object} Components - Additional components.\r\n * @param {function} Transition - Change component for transition.\r\n *\r\n * @return {Object} - An object containing all components.\r\n */\n\nfunction compose(Splide, Components, Transition) {\n var components = {};\n each(Components, function (Component, name) {\n components[name] = Component(Splide, components, name.toLowerCase());\n });\n\n if (!Transition) {\n Transition = Splide.is(FADE) ? fade : slide;\n }\n\n components.Transition = Transition(Splide, components);\n return components;\n}\n;// CONCATENATED MODULE: ./src/js/utils/error.js\n/**\r\n * Utility functions for outputting logs.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Prefix of an error massage.\r\n *\r\n * @type {string}\r\n */\nvar MESSAGE_PREFIX = '[SPLIDE]';\n/**\r\n * Display an error message on the browser console.\r\n *\r\n * @param {string} message - An error message.\r\n */\n\nfunction error(message) {\n console.error(MESSAGE_PREFIX + \" \" + message);\n}\n/**\r\n * Check existence of the given object and throw an error if it doesn't.\r\n *\r\n * @throws {Error}\r\n *\r\n * @param {*} subject - A subject to be confirmed.\r\n * @param {string} message - An error message.\r\n */\n\nfunction exist(subject, message) {\n if (!subject) {\n throw new Error(message);\n }\n}\n;// CONCATENATED MODULE: ./src/js/constants/classes.js\n/**\r\n * Export class names.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * A root class name.\r\n *\r\n * @type {string}\r\n */\nvar ROOT = 'splide';\n/**\r\n * The definition table of all classes for elements.\r\n * They might be modified by options.\r\n *\r\n * @type {Object}\r\n */\n\nvar ELEMENT_CLASSES = {\n root: ROOT,\n slider: ROOT + \"__slider\",\n track: ROOT + \"__track\",\n list: ROOT + \"__list\",\n slide: ROOT + \"__slide\",\n container: ROOT + \"__slide__container\",\n arrows: ROOT + \"__arrows\",\n arrow: ROOT + \"__arrow\",\n prev: ROOT + \"__arrow--prev\",\n next: ROOT + \"__arrow--next\",\n pagination: ROOT + \"__pagination\",\n page: ROOT + \"__pagination__page\",\n clone: ROOT + \"__slide--clone\",\n progress: ROOT + \"__progress\",\n bar: ROOT + \"__progress__bar\",\n autoplay: ROOT + \"__autoplay\",\n play: ROOT + \"__play\",\n pause: ROOT + \"__pause\",\n spinner: ROOT + \"__spinner\",\n sr: ROOT + \"__sr\"\n};\n/**\r\n * Definitions of status classes.\r\n *\r\n * @type {Object}\r\n */\n\nvar STATUS_CLASSES = {\n active: 'is-active',\n visible: 'is-visible',\n loading: 'is-loading'\n};\n;// CONCATENATED MODULE: ./src/js/constants/i18n.js\n/**\r\n * Export i18n texts as object.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Texts for i18n.\r\n *\r\n * @type {Object}\r\n */\nvar I18N = {\n prev: 'Previous slide',\n next: 'Next slide',\n first: 'Go to first slide',\n last: 'Go to last slide',\n slideX: 'Go to slide %s',\n pageX: 'Go to page %s',\n play: 'Start autoplay',\n pause: 'Pause autoplay'\n};\n;// CONCATENATED MODULE: ./src/js/constants/defaults.js\n/**\r\n * Export default options.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\nvar DEFAULTS = {\n /**\r\n * Determine a slider type.\r\n * - 'slide': Regular slider.\r\n * - 'loop' : Carousel slider.\r\n * - 'fade' : Change slides with fade transition. perPage, drag options are ignored.\r\n *\r\n * @type {string}\r\n */\n type: 'slide',\n\n /**\r\n * Whether to rewind a slider before the first slide or after the last one.\r\n * In \"loop\" mode, this option is ignored.\r\n *\r\n * @type {boolean}\r\n */\n rewind: false,\n\n /**\r\n * Transition speed in milliseconds.\r\n *\r\n * @type {number}\r\n */\n speed: 400,\n\n /**\r\n * Transition speed on rewind in milliseconds.\r\n *\r\n * @type {number}\r\n */\n rewindSpeed: 0,\n\n /**\r\n * Whether to prevent any actions while a slider is transitioning.\r\n * If false, navigation, drag and swipe work while the slider is running.\r\n * Even so, it will be forced to wait for transition in some cases in the loop mode to shift a slider.\r\n *\r\n * @type {boolean}\r\n */\n waitForTransition: true,\n\n /**\r\n * Define slider max width.\r\n *\r\n * @type {number}\r\n */\n width: 0,\n\n /**\r\n * Define slider height.\r\n *\r\n * @type {number}\r\n */\n height: 0,\n\n /**\r\n * Fix width of slides. CSS format is allowed such as 10em, 80% or 80vw.\r\n * perPage number will be ignored when this option is falsy.\r\n *\r\n * @type {number|string}\r\n */\n fixedWidth: 0,\n\n /**\r\n * Fix height of slides. CSS format is allowed such as 10em, 80vh but % unit is not accepted.\r\n * heightRatio option will be ignored when this option is falsy.\r\n *\r\n * @type {number|string}\r\n */\n fixedHeight: 0,\n\n /**\r\n * Determine height of slides by ratio to a slider width.\r\n * This will be ignored when the fixedHeight is provided.\r\n *\r\n * @type {number}\r\n */\n heightRatio: 0,\n\n /**\r\n * If true, slide width will be determined by the element width itself.\r\n * - perPage/perMove should be 1.\r\n *\r\n * @type {boolean}\r\n */\n autoWidth: false,\n\n /**\r\n * If true, slide height will be determined by the element width itself.\r\n * - perPage/perMove should be 1.\r\n *\r\n * @type {boolean}\r\n */\n autoHeight: false,\n\n /**\r\n * Determine how many slides should be displayed per page.\r\n *\r\n * @type {number}\r\n */\n perPage: 1,\n\n /**\r\n * Determine how many slides should be moved when a slider goes to next or perv.\r\n *\r\n * @type {number}\r\n */\n perMove: 0,\n\n /**\r\n * Determine manually how many clones should be generated on the left and right side.\r\n * The total number of clones will be twice of this number.\r\n *\r\n * @type {number}\r\n */\n clones: 0,\n\n /**\r\n * Start index.\r\n *\r\n * @type {number}\r\n */\n start: 0,\n\n /**\r\n * Determine which slide should be focused if there are multiple slides in a page.\r\n * A string \"center\" is acceptable for centering slides.\r\n *\r\n * @type {boolean|number|string}\r\n */\n focus: false,\n\n /**\r\n * Gap between slides. CSS format is allowed such as 1em.\r\n *\r\n * @type {number|string}\r\n */\n gap: 0,\n\n /**\r\n * Set padding-left/right in horizontal mode or padding-top/bottom in vertical one.\r\n * Give a single value to set a same size for both sides or\r\n * do an object for different sizes.\r\n * Also, CSS format is allowed such as 1em.\r\n *\r\n * @example\r\n * - 10: Number\r\n * - '1em': CSS format.\r\n * - { left: 0, right: 20 }: Object for different sizes in horizontal mode.\r\n * - { top: 0, bottom: 20 }: Object for different sizes in vertical mode.\r\n *\r\n * @type {number|string|Object}\r\n */\n padding: 0,\n\n /**\r\n * Whether to append arrows.\r\n *\r\n * @type {boolean}\r\n */\n arrows: true,\n\n /**\r\n * Change the arrow SVG path like 'm7.61 0.807-2.12...'.\r\n *\r\n * @type {string}\r\n */\n arrowPath: '',\n\n /**\r\n * Whether to append pagination(indicator dots) or not.\r\n *\r\n * @type {boolean}\r\n */\n pagination: true,\n\n /**\r\n * Activate autoplay.\r\n *\r\n * @type {boolean}\r\n */\n autoplay: false,\n\n /**\r\n * Autoplay interval in milliseconds.\r\n *\r\n * @type {number}\r\n */\n interval: 5000,\n\n /**\r\n * Whether to stop autoplay when a slider is hovered.\r\n *\r\n * @type {boolean}\r\n */\n pauseOnHover: true,\n\n /**\r\n * Whether to stop autoplay when a slider elements are focused.\r\n * True is recommended for accessibility.\r\n *\r\n * @type {boolean}\r\n */\n pauseOnFocus: true,\n\n /**\r\n * Whether to reset progress of the autoplay timer when resumed.\r\n *\r\n * @type {boolean}\r\n */\n resetProgress: true,\n\n /**\r\n * Loading images lazily.\r\n * Image src must be provided by a data-splide-lazy attribute.\r\n *\r\n * - false: Do nothing.\r\n * - 'nearby': Only images around an active slide will be loaded.\r\n * - 'sequential': All images will be sequentially loaded.\r\n *\r\n * @type {boolean|string}\r\n */\n lazyLoad: false,\n\n /**\r\n * This option works only when a lazyLoad option is \"nearby\".\r\n * Determine how many pages(not slides) around an active slide should be loaded beforehand.\r\n *\r\n * @type {number}\r\n */\n preloadPages: 1,\n\n /**\r\n * Easing for CSS transition. For example, linear, ease or cubic-bezier().\r\n *\r\n * @type {string}\r\n */\n easing: 'cubic-bezier(.42,.65,.27,.99)',\n\n /**\r\n * Whether to enable keyboard shortcuts\r\n * - true or 'global': Listen to keydown event of the document.\r\n * - 'focused': Listen to the keydown event of the slider root element. tabindex=\"0\" will be added to the element.\r\n * - false: Disable keyboard shortcuts.\r\n *\r\n * @type {boolean|string}\r\n */\n keyboard: 'global',\n\n /**\r\n * Whether to allow mouse drag and touch swipe.\r\n *\r\n * @type {boolean}\r\n */\n drag: true,\n\n /**\r\n * The angle threshold for drag.\r\n * The slider starts moving only when the drag angle is less than this threshold.\r\n *\r\n * @type {number}\r\n */\n dragAngleThreshold: 30,\n\n /**\r\n * Distance threshold for determining if the action is \"flick\" or \"swipe\".\r\n * When a drag distance is over this value, the action will be treated as \"swipe\", not \"flick\".\r\n *\r\n * @type {number}\r\n */\n swipeDistanceThreshold: 150,\n\n /**\r\n * Velocity threshold for determining if the action is \"flick\" or \"swipe\".\r\n * Around 0.5 is recommended.\r\n *\r\n * @type {number}\r\n */\n flickVelocityThreshold: .6,\n\n /**\r\n * Determine power of flick. The larger number this is, the farther a slider runs by flick.\r\n * Around 500 is recommended.\r\n *\r\n * @type {number}\r\n */\n flickPower: 600,\n\n /**\r\n * Limit a number of pages to move by flick.\r\n *\r\n * @type {number}\r\n */\n flickMaxPages: 1,\n\n /**\r\n * Slider direction.\r\n * - 'ltr': Left to right.\r\n * - 'rtl': Right to left.\r\n * - 'ttb': Top to bottom.\r\n *\r\n * @type {string}\r\n */\n direction: 'ltr',\n\n /**\r\n * Set img src to background-image of its parent element.\r\n * Images with various sizes can be displayed as same dimension without cropping work.\r\n * fixedHeight or heightRatio is required.\r\n *\r\n * @type {boolean}\r\n */\n cover: false,\n\n /**\r\n * Whether to enable accessibility(aria and screen reader texts) or not.\r\n *\r\n * @type {boolean}\r\n */\n accessibility: true,\n\n /**\r\n * Whether to add tabindex=\"0\" to visible slides or not.\r\n *\r\n * @type {boolean}\r\n */\n slideFocus: true,\n\n /**\r\n * Determine if a slider is navigation for another.\r\n * Use \"sync\" API to synchronize two sliders.\r\n *\r\n * @type {boolean}\r\n */\n isNavigation: false,\n\n /**\r\n * Whether to trim spaces before the fist slide or after the last one when \"focus\" is not 0.\r\n *\r\n * @type {boolean}\r\n */\n trimSpace: true,\n\n /**\r\n * The \"is-active\" class is added after transition as default.\r\n * If true, it will be added before move.\r\n *\r\n * @type {boolean}\r\n */\n updateOnMove: false,\n\n /**\r\n * Throttle duration in milliseconds for the resize event.\r\n *\r\n * @type {number}\r\n */\n throttle: 100,\n\n /**\r\n * Whether to destroy a slider or not.\r\n *\r\n * @type {boolean}\r\n */\n destroy: false,\n\n /**\r\n * Options for specific breakpoints.\r\n *\r\n * @example\r\n * {\r\n * 1000: {\r\n * perPage: 3,\r\n * gap: 20\r\n * },\r\n * 600: {\r\n * perPage: 1,\r\n * gap: 5,\r\n * }\r\n * }\r\n *\r\n * @type {boolean|Object}\r\n */\n breakpoints: false,\n\n /**\r\n * Collection of class names.\r\n *\r\n * @see ./classes.js\r\n *\r\n * @type {Object}\r\n */\n classes: ELEMENT_CLASSES,\n\n /**\r\n * Collection of i18n texts.\r\n *\r\n * @see ./i18n.js\r\n *\r\n * @type {Object}\r\n */\n i18n: I18N\n};\n;// CONCATENATED MODULE: ./src/js/constants/states.js\n/**\r\n * Export state constants.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Splide has been just created.\r\n *\r\n * @type {number}\r\n */\nvar CREATED = 1;\n/**\r\n * All components have been mounted and initialized.\r\n *\r\n * @type {number}\r\n */\n\nvar MOUNTED = 2;\n/**\r\n * Splide is ready for transition.\r\n *\r\n * @type {number}\r\n */\n\nvar IDLE = 3;\n/**\r\n * Splide is moving.\r\n *\r\n * @type {number}\r\n */\n\nvar MOVING = 4;\n/**\r\n * Splide is moving.\r\n *\r\n * @type {number}\r\n */\n\nvar DESTROYED = 5;\n;// CONCATENATED MODULE: ./src/js/splide.js\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\r\n * The main class for applying Splide to an element.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n\n\n\n\n\n/**\r\n * The main class for applying Splide to an element,\r\n * providing some APIs to control the behavior.\r\n */\n\nvar Splide = /*#__PURE__*/function () {\n /**\r\n * Splide constructor.\r\n *\r\n * @throws {Error} When the given root element or selector is invalid.\r\n *\r\n * @param {Element|string} root - A selector for a root element or an element itself.\r\n * @param {Object} options - Optional. Options to change default behaviour.\r\n * @param {Object} Components - Optional. Components.\r\n */\n function Splide(root, options, Components) {\n if (options === void 0) {\n options = {};\n }\n\n if (Components === void 0) {\n Components = {};\n }\n\n this.root = root instanceof Element ? root : document.querySelector(root);\n exist(this.root, 'An invalid element/selector was given.');\n this.Components = null;\n this.Event = core_event();\n this.State = state(CREATED);\n this.STATES = states_namespaceObject;\n this._o = merge(DEFAULTS, options);\n this._i = 0;\n this._c = Components;\n this._e = {}; // Extensions\n\n this._t = null; // Transition\n }\n /**\r\n * Compose and mount components.\r\n *\r\n * @param {Object} Extensions - Optional. Additional components.\r\n * @param {function} Transition - Optional. Set a custom transition component.\r\n *\r\n * @return {Splide|undefined} - This instance or undefined if an exception occurred.\r\n */\n\n\n var _proto = Splide.prototype;\n\n _proto.mount = function mount(Extensions, Transition) {\n var _this = this;\n\n if (Extensions === void 0) {\n Extensions = this._e;\n }\n\n if (Transition === void 0) {\n Transition = this._t;\n }\n\n // Reset the state.\n this.State.set(CREATED);\n this._e = Extensions;\n this._t = Transition;\n this.Components = compose(this, merge(this._c, Extensions), Transition);\n\n try {\n each(this.Components, function (component, key) {\n var required = component.required;\n\n if (required === undefined || required) {\n component.mount && component.mount();\n } else {\n delete _this.Components[key];\n }\n });\n } catch (e) {\n error(e.message);\n return;\n }\n\n var State = this.State;\n State.set(MOUNTED);\n each(this.Components, function (component) {\n component.mounted && component.mounted();\n });\n this.emit('mounted');\n State.set(IDLE);\n this.emit('ready');\n applyStyle(this.root, {\n visibility: 'visible'\n });\n this.on('move drag', function () {\n return State.set(MOVING);\n }).on('moved dragged', function () {\n return State.set(IDLE);\n });\n return this;\n }\n /**\r\n * Set sync target.\r\n *\r\n * @param {Splide} splide - A Splide instance.\r\n *\r\n * @return {Splide} - This instance.\r\n */\n ;\n\n _proto.sync = function sync(splide) {\n this.sibling = splide;\n return this;\n }\n /**\r\n * Register callback fired on the given event(s).\r\n *\r\n * @param {string} events - An event name. Use space to separate multiple events.\r\n * Also, namespace is accepted by dot, such as 'resize.{namespace}'.\r\n * @param {function} handler - A callback function.\r\n * @param {Element} elm - Optional. Native event will be listened to when this arg is provided.\r\n * @param {Object} options - Optional. Options for addEventListener.\r\n *\r\n * @return {Splide} - This instance.\r\n */\n ;\n\n _proto.on = function on(events, handler, elm, options) {\n if (elm === void 0) {\n elm = null;\n }\n\n if (options === void 0) {\n options = {};\n }\n\n this.Event.on(events, handler, elm, options);\n return this;\n }\n /**\r\n * Unsubscribe the given event.\r\n *\r\n * @param {string} events - A event name.\r\n * @param {Element} elm - Optional. removeEventListener() will be called when this arg is provided.\r\n *\r\n * @return {Splide} - This instance.\r\n */\n ;\n\n _proto.off = function off(events, elm) {\n if (elm === void 0) {\n elm = null;\n }\n\n this.Event.off(events, elm);\n return this;\n }\n /**\r\n * Emit an event.\r\n *\r\n * @param {string} event - An event name.\r\n * @param {*} args - Any number of arguments passed to handlers.\r\n */\n ;\n\n _proto.emit = function emit(event) {\n var _this$Event;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_this$Event = this.Event).emit.apply(_this$Event, [event].concat(args));\n\n return this;\n }\n /**\r\n * Go to the slide specified by the given control.\r\n *\r\n * @param {string|number} control - A control pattern.\r\n * @param {boolean} wait - Optional. Whether to wait for transition.\r\n */\n ;\n\n _proto.go = function go(control, wait) {\n if (wait === void 0) {\n wait = this.options.waitForTransition;\n }\n\n if (this.State.is(IDLE) || this.State.is(MOVING) && !wait) {\n this.Components.Controller.go(control, false);\n }\n\n return this;\n }\n /**\r\n * Verify whether the slider type is the given one or not.\r\n *\r\n * @param {string} type - A slider type.\r\n *\r\n * @return {boolean} - True if the slider type is the provided type or false if not.\r\n */\n ;\n\n _proto.is = function is(type) {\n return type === this._o.type;\n }\n /**\r\n * Insert a slide.\r\n *\r\n * @param {Element|string} slide - A slide element to be added.\r\n * @param {number} index - A slide will be added at the position.\r\n */\n ;\n\n _proto.add = function add(slide, index) {\n if (index === void 0) {\n index = -1;\n }\n\n this.Components.Elements.add(slide, index, this.refresh.bind(this));\n return this;\n }\n /**\r\n * Remove the slide designated by the index.\r\n *\r\n * @param {number} index - A slide index.\r\n */\n ;\n\n _proto.remove = function remove(index) {\n this.Components.Elements.remove(index);\n this.refresh();\n return this;\n }\n /**\r\n * Destroy all Slide objects and clones and recreate them again.\r\n */\n ;\n\n _proto.refresh = function refresh() {\n this.emit('refresh:before').emit('refresh').emit('resize');\n return this;\n }\n /**\r\n * Destroy the Splide.\r\n * \"Completely\" boolean is mainly for breakpoints.\r\n *\r\n * @param {boolean} completely - Destroy completely.\r\n */\n ;\n\n _proto.destroy = function destroy(completely) {\n var _this2 = this;\n\n if (completely === void 0) {\n completely = true;\n }\n\n // Postpone destroy because it should be done after mount.\n if (this.State.is(CREATED)) {\n this.on('ready', function () {\n return _this2.destroy(completely);\n });\n return;\n }\n\n values(this.Components).reverse().forEach(function (component) {\n component.destroy && component.destroy(completely);\n });\n this.emit('destroy', completely); // Destroy all event handlers, including ones for native events.\n\n this.Event.destroy();\n this.State.set(DESTROYED);\n return this;\n }\n /**\r\n * Return the current slide index.\r\n *\r\n * @return {number} - The current slide index.\r\n // */\n ;\n\n _createClass(Splide, [{\n key: \"index\",\n get: function get() {\n return this._i;\n }\n /**\r\n * Set the current slide index.\r\n *\r\n * @param {number|string} index - A new index.\r\n */\n ,\n set: function set(index) {\n this._i = parseInt(index);\n }\n /**\r\n * Return length of slides.\r\n * This is an alias of Elements.length.\r\n *\r\n * @return {number} - A number of slides.\r\n */\n\n }, {\n key: \"length\",\n get: function get() {\n return this.Components.Elements.length;\n }\n /**\r\n * Return options.\r\n *\r\n * @return {Object} - Options object.\r\n */\n\n }, {\n key: \"options\",\n get: function get() {\n return this._o;\n }\n /**\r\n * Set options with merging the given object to the current one.\r\n *\r\n * @param {Object} options - New options.\r\n */\n ,\n set: function set(options) {\n var created = this.State.is(CREATED);\n\n if (!created) {\n this.emit('update');\n }\n\n this._o = merge(this._o, options);\n\n if (!created) {\n this.emit('updated', this._o);\n }\n }\n /**\r\n * Return the class list.\r\n * This is an alias of Splide.options.classList.\r\n *\r\n * @return {Object} - An object containing all class list.\r\n */\n\n }, {\n key: \"classes\",\n get: function get() {\n return this._o.classes;\n }\n /**\r\n * Return the i18n strings.\r\n * This is an alias of Splide.options.i18n.\r\n *\r\n * @return {Object} - An object containing all i18n strings.\r\n */\n\n }, {\n key: \"i18n\",\n get: function get() {\n return this._o.i18n;\n }\n }]);\n\n return Splide;\n}();\n\n\n;// CONCATENATED MODULE: ./src/js/components/options/index.js\n/**\r\n * The component for initializing options.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n/**\r\n * The component for initializing options.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const options = (function (Splide) {\n /**\r\n * Retrieve options from the data attribute.\r\n * Note that IE10 doesn't support dataset property.\r\n *\r\n * @type {string}\r\n */\n var options = getAttribute(Splide.root, 'data-splide');\n\n if (options) {\n try {\n Splide.options = JSON.parse(options);\n } catch (e) {\n error(e.message);\n }\n }\n\n return {\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n if (Splide.State.is(CREATED)) {\n Splide.index = Splide.options.start;\n }\n }\n };\n});\n;// CONCATENATED MODULE: ./src/js/constants/directions.js\n/**\r\n * Export layout modes.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Enumerate slides from left to right.\r\n *\r\n * @type {string}\r\n */\nvar LTR = 'ltr';\n/**\r\n * Enumerate slides from right to left.\r\n *\r\n * @type {string}\r\n */\n\nvar RTL = 'rtl';\n/**\r\n * Enumerate slides in a col.\r\n *\r\n * @type {string}\r\n */\n\nvar TTB = 'ttb';\n;// CONCATENATED MODULE: ./src/js/components/elements/slide.js\n/**\r\n * The sub component for handling each slide.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n\n\n\n/**\r\n * Events for restoring original styles.\r\n *\r\n * @type {string}\r\n */\n\nvar STYLE_RESTORE_EVENTS = 'update.slide';\n/**\r\n * The sub component for handling each slide.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {number} index - An unique slide index.\r\n * @param {number} realIndex - Clones should pass a real slide index.\r\n * @param {Element} slide - A slide element.\r\n *\r\n * @return {Object} - The sub component object.\r\n */\n\n/* harmony default export */ const elements_slide = (function (Splide, index, realIndex, slide) {\n /**\r\n * Whether to update \"is-active\" class before or after transition.\r\n *\r\n * @type {boolean}\r\n */\n var updateOnMove = Splide.options.updateOnMove;\n /**\r\n * Events when the slide status is updated.\r\n * Append a namespace to remove listeners later.\r\n *\r\n * @type {string}\r\n */\n\n var STATUS_UPDATE_EVENTS = 'ready.slide updated.slide resized.slide moved.slide' + (updateOnMove ? ' move.slide' : '');\n /**\r\n * Slide sub component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Slide = {\n /**\r\n * Slide element.\r\n *\r\n * @type {Element}\r\n */\n slide: slide,\n\n /**\r\n * Slide index.\r\n *\r\n * @type {number}\r\n */\n index: index,\n\n /**\r\n * Real index for clones.\r\n *\r\n * @type {number}\r\n */\n realIndex: realIndex,\n\n /**\r\n * Container element if available.\r\n *\r\n * @type {Element|undefined}\r\n */\n container: child(slide, Splide.classes.container),\n\n /**\r\n * Whether this is a cloned slide or not.\r\n *\r\n * @type {boolean}\r\n */\n isClone: realIndex > -1,\n\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n var _this = this;\n\n if (!this.isClone) {\n slide.id = Splide.root.id + \"-slide\" + pad(index + 1);\n }\n\n Splide.on(STATUS_UPDATE_EVENTS, function () {\n return _this.update();\n }).on(STYLE_RESTORE_EVENTS, restoreStyles).on('click', function () {\n return Splide.emit('click', _this);\n }, slide);\n /*\r\n * Add \"is-active\" class to a clone element temporarily\r\n * and it will be removed on \"moved\" event.\r\n */\n\n if (updateOnMove) {\n Splide.on('move.slide', function (newIndex) {\n if (newIndex === realIndex) {\n _update(true, false);\n }\n });\n } // Make sure the slide is shown.\n\n\n applyStyle(slide, {\n display: ''\n }); // Hold the original styles.\n\n this.styles = getAttribute(slide, 'style') || '';\n },\n\n /**\r\n * Destroy.\r\n */\n destroy: function destroy() {\n Splide.off(STATUS_UPDATE_EVENTS).off(STYLE_RESTORE_EVENTS).off('click', slide);\n removeClass(slide, values(STATUS_CLASSES));\n restoreStyles();\n removeAttribute(this.container, 'style');\n },\n\n /**\r\n * Update active and visible status.\r\n */\n update: function update() {\n _update(this.isActive(), false);\n\n _update(this.isVisible(), true);\n },\n\n /**\r\n * Check whether this slide is active or not.\r\n *\r\n * @return {boolean} - True if the slide is active or false if not.\r\n */\n isActive: function isActive() {\n return Splide.index === index;\n },\n\n /**\r\n * Check whether this slide is visible in the viewport or not.\r\n *\r\n * @return {boolean} - True if the slide is visible or false if not.\r\n */\n isVisible: function isVisible() {\n var active = this.isActive();\n\n if (Splide.is(FADE) || active) {\n return active;\n }\n\n var ceil = Math.ceil;\n var trackRect = getRect(Splide.Components.Elements.track);\n var slideRect = getRect(slide);\n\n if (Splide.options.direction === TTB) {\n return trackRect.top <= slideRect.top && slideRect.bottom <= ceil(trackRect.bottom);\n }\n\n return trackRect.left <= slideRect.left && slideRect.right <= ceil(trackRect.right);\n },\n\n /**\r\n * Calculate how far this slide is from another slide and\r\n * return true if the distance is within the given number.\r\n *\r\n * @param {number} from - Index of a target slide.\r\n * @param {number} within - True if the slide is within this number.\r\n *\r\n * @return {boolean} - True if the slide is within the number or false otherwise.\r\n */\n isWithin: function isWithin(from, within) {\n var diff = Math.abs(from - index);\n\n if (!Splide.is(SLIDE) && !this.isClone) {\n diff = Math.min(diff, Splide.length - diff);\n }\n\n return diff < within;\n }\n };\n /**\r\n * Update classes for activity or visibility.\r\n *\r\n * @param {boolean} active - Is active/visible or not.\r\n * @param {boolean} forVisibility - Toggle classes for activity or visibility.\r\n */\n\n function _update(active, forVisibility) {\n var type = forVisibility ? 'visible' : 'active';\n var className = STATUS_CLASSES[type];\n\n if (active) {\n addClass(slide, className);\n Splide.emit(\"\" + type, Slide);\n } else {\n if (hasClass(slide, className)) {\n removeClass(slide, className);\n Splide.emit(\"\" + (forVisibility ? 'hidden' : 'inactive'), Slide);\n }\n }\n }\n /**\r\n * Restore the original styles.\r\n */\n\n\n function restoreStyles() {\n setAttribute(slide, 'style', Slide.styles);\n }\n\n return Slide;\n});\n;// CONCATENATED MODULE: ./src/js/components/elements/index.js\n/**\r\n * The component for main elements.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n\n\n/**\r\n * The property name for UID stored in a window object.\r\n *\r\n * @type {string}\r\n */\n\nvar UID_NAME = 'uid';\n/**\r\n * The component for main elements.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const components_elements = (function (Splide, Components) {\n /**\r\n * Hold the root element.\r\n *\r\n * @type {Element}\r\n */\n var root = Splide.root;\n /**\r\n * Hold the class list.\r\n *\r\n * @type {Object}\r\n */\n\n var classes = Splide.classes;\n /**\r\n * Store Slide objects.\r\n *\r\n * @type {Array}\r\n */\n\n var Slides = [];\n /*\r\n * Assign unique ID to the root element if it doesn't have the one.\r\n * Note that IE doesn't support padStart() to fill the uid by 0.\r\n */\n\n if (!root.id) {\n window.splide = window.splide || {};\n var uid = window.splide[UID_NAME] || 0;\n window.splide[UID_NAME] = ++uid;\n root.id = \"splide\" + pad(uid);\n }\n /**\r\n * Elements component object.\r\n *\r\n * @type {Object}\r\n */\n\n\n var Elements = {\n /**\r\n * Called when the component is mounted.\r\n * Collect main elements and store them as member properties.\r\n */\n mount: function mount() {\n var _this = this;\n\n this.init();\n Splide.on('refresh', function () {\n _this.destroy();\n\n _this.init();\n }).on('updated', function () {\n removeClass(root, getClasses());\n addClass(root, getClasses());\n });\n },\n\n /**\r\n * Destroy.\r\n */\n destroy: function destroy() {\n Slides.forEach(function (Slide) {\n Slide.destroy();\n });\n Slides = [];\n removeClass(root, getClasses());\n },\n\n /**\r\n * Initialization.\r\n */\n init: function init() {\n var _this2 = this;\n\n collect();\n addClass(root, getClasses());\n this.slides.forEach(function (slide, index) {\n _this2.register(slide, index, -1);\n });\n },\n\n /**\r\n * Register a slide to create a Slide object and handle its behavior.\r\n *\r\n * @param {Element} slide - A slide element.\r\n * @param {number} index - A unique index. This can be negative.\r\n * @param {number} realIndex - A real index for clones. Set -1 for real slides.\r\n */\n register: function register(slide, index, realIndex) {\n var SlideObject = elements_slide(Splide, index, realIndex, slide);\n SlideObject.mount();\n Slides.push(SlideObject);\n },\n\n /**\r\n * Return the Slide object designated by the index.\r\n * Note that \"find\" is not supported by IE.\r\n *\r\n * @return {Object|undefined} - A Slide object if available. Undefined if not.\r\n */\n getSlide: function getSlide(index) {\n return Slides.filter(function (Slide) {\n return Slide.index === index;\n })[0];\n },\n\n /**\r\n * Return all Slide objects.\r\n *\r\n * @param {boolean} includeClones - Whether to include cloned slides or not.\r\n *\r\n * @return {Object[]} - Slide objects.\r\n */\n getSlides: function getSlides(includeClones) {\n return includeClones ? Slides : Slides.filter(function (Slide) {\n return !Slide.isClone;\n });\n },\n\n /**\r\n * Return Slide objects belonging to the given page.\r\n *\r\n * @param {number} page - A page number.\r\n *\r\n * @return {Object[]} - An array containing Slide objects.\r\n */\n getSlidesByPage: function getSlidesByPage(page) {\n var idx = Components.Controller.toIndex(page);\n var options = Splide.options;\n var max = options.focus !== false ? 1 : options.perPage;\n return Slides.filter(function (_ref) {\n var index = _ref.index;\n return idx <= index && index < idx + max;\n });\n },\n\n /**\r\n * Insert a slide to a slider.\r\n * Need to refresh Splide after adding a slide.\r\n *\r\n * @param {Node|string} slide - A slide element to be added.\r\n * @param {number} index - A slide will be added at the position.\r\n * @param {Function} callback - Called right after the slide is added to the DOM tree.\r\n */\n add: function add(slide, index, callback) {\n if (typeof slide === 'string') {\n slide = domify(slide);\n }\n\n if (slide instanceof Element) {\n var ref = this.slides[index]; // This will be removed in mount() of a Slide component.\n\n applyStyle(slide, {\n display: 'none'\n });\n\n if (ref) {\n before(slide, ref);\n this.slides.splice(index, 0, slide);\n } else {\n append(this.list, slide);\n this.slides.push(slide);\n }\n\n loaded(slide, function () {\n callback && callback(slide);\n });\n }\n },\n\n /**\r\n * Remove a slide from a slider.\r\n * Need to refresh Splide after removing a slide.\r\n *\r\n * @param index - Slide index.\r\n */\n remove: function remove(index) {\n dom_remove(this.slides.splice(index, 1)[0]);\n },\n\n /**\r\n * Trigger the provided callback for each Slide object.\r\n *\r\n * @param {Function} callback - A callback function. The first argument will be the Slide object.\r\n */\n each: function each(callback) {\n Slides.forEach(callback);\n },\n\n /**\r\n * Return slides length without clones.\r\n *\r\n * @return {number} - Slide length.\r\n */\n get length() {\n return this.slides.length;\n },\n\n /**\r\n * Return \"SlideObjects\" length including clones.\r\n *\r\n * @return {number} - Slide length including clones.\r\n */\n get total() {\n return Slides.length;\n }\n\n };\n /**\r\n * Collect elements.\r\n */\n\n function collect() {\n Elements.slider = child(root, classes.slider);\n Elements.track = find(root, \".\" + classes.track);\n Elements.list = child(Elements.track, classes.list);\n exist(Elements.track && Elements.list, 'Track or list was not found.');\n Elements.slides = children(Elements.list, classes.slide);\n var arrows = findParts(classes.arrows);\n Elements.arrows = {\n prev: find(arrows, \".\" + classes.prev),\n next: find(arrows, \".\" + classes.next)\n };\n var autoplay = findParts(classes.autoplay);\n Elements.bar = find(findParts(classes.progress), \".\" + classes.bar);\n Elements.play = find(autoplay, \".\" + classes.play);\n Elements.pause = find(autoplay, \".\" + classes.pause);\n Elements.track.id = Elements.track.id || root.id + \"-track\";\n Elements.list.id = Elements.list.id || root.id + \"-list\";\n }\n /**\r\n * Return class names for the root element.\r\n */\n\n\n function getClasses() {\n var rootClass = classes.root;\n var options = Splide.options;\n return [rootClass + \"--\" + options.type, rootClass + \"--\" + options.direction, options.drag ? rootClass + \"--draggable\" : '', options.isNavigation ? rootClass + \"--nav\" : '', STATUS_CLASSES.active];\n }\n /**\r\n * Find parts only from children of the root or track.\r\n *\r\n * @return {Element} - A found element or undefined.\r\n */\n\n\n function findParts(className) {\n return child(root, className) || child(Elements.slider, className);\n }\n\n return Elements;\n});\n;// CONCATENATED MODULE: ./src/js/components/controller/index.js\n/**\r\n * The component for controlling the track.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\nvar floor = Math.floor;\n/**\r\n * The component for controlling the track.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const controller = (function (Splide, Components) {\n /**\r\n * Store current options.\r\n *\r\n * @type {Object}\r\n */\n var options;\n /**\r\n * True if the slide is LOOP mode.\r\n *\r\n * @type {boolean}\r\n */\n\n var isLoop;\n /**\r\n * Controller component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Controller = {\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n options = Splide.options;\n isLoop = Splide.is(LOOP);\n bind();\n },\n\n /**\r\n * Make track run by the given control.\r\n * - \"+{i}\" : Increment the slide index by i.\r\n * - \"-{i}\" : Decrement the slide index by i.\r\n * - \"{i}\" : Go to the slide whose index is i.\r\n * - \">\" : Go to next page.\r\n * - \"<\" : Go to prev page.\r\n * - \">{i}\" : Go to page i.\r\n *\r\n * @param {string|number} control - A control pattern.\r\n * @param {boolean} silently - Go to the destination without event emission.\r\n */\n go: function go(control, silently) {\n var destIndex = this.trim(this.parse(control));\n Components.Track.go(destIndex, this.rewind(destIndex), silently);\n },\n\n /**\r\n * Parse the given control and return the destination index for the track.\r\n *\r\n * @param {string} control - A control target pattern.\r\n *\r\n * @return {number} - A parsed target.\r\n */\n parse: function parse(control) {\n var index = Splide.index;\n var matches = String(control).match(/([+\\-<>]+)(\\d+)?/);\n var indicator = matches ? matches[1] : '';\n var number = matches ? parseInt(matches[2]) : 0;\n\n switch (indicator) {\n case '+':\n index += number || 1;\n break;\n\n case '-':\n index -= number || 1;\n break;\n\n case '>':\n case '<':\n index = parsePage(number, index, indicator === '<');\n break;\n\n default:\n index = parseInt(control);\n }\n\n return index;\n },\n\n /**\r\n * Compute index from the given page number.\r\n *\r\n * @param {number} page - Page number.\r\n *\r\n * @return {number} - A computed page number.\r\n */\n toIndex: function toIndex(page) {\n if (hasFocus()) {\n return page;\n }\n\n var length = Splide.length;\n var perPage = options.perPage;\n var index = page * perPage;\n index = index - (this.pageLength * perPage - length) * floor(index / length); // Adjustment for the last page.\n\n if (length - perPage <= index && index < length) {\n index = length - perPage;\n }\n\n return index;\n },\n\n /**\r\n * Compute page number from the given slide index.\r\n *\r\n * @param {number} index - Slide index.\r\n *\r\n * @return {number} - A computed page number.\r\n */\n toPage: function toPage(index) {\n if (hasFocus()) {\n return index;\n }\n\n var length = Splide.length;\n var perPage = options.perPage; // Make the last \"perPage\" number of slides belong to the last page.\n\n if (length - perPage <= index && index < length) {\n return floor((length - 1) / perPage);\n }\n\n return floor(index / perPage);\n },\n\n /**\r\n * Trim the given index according to the current mode.\r\n * Index being returned could be less than 0 or greater than the length in Loop mode.\r\n *\r\n * @param {number} index - An index being trimmed.\r\n *\r\n * @return {number} - A trimmed index.\r\n */\n trim: function trim(index) {\n if (!isLoop) {\n index = options.rewind ? this.rewind(index) : between(index, 0, this.edgeIndex);\n }\n\n return index;\n },\n\n /**\r\n * Rewind the given index if it's out of range.\r\n *\r\n * @param {number} index - An index.\r\n *\r\n * @return {number} - A rewound index.\r\n */\n rewind: function rewind(index) {\n var edge = this.edgeIndex;\n\n if (isLoop) {\n while (index > edge) {\n index -= edge + 1;\n }\n\n while (index < 0) {\n index += edge + 1;\n }\n } else {\n if (index > edge) {\n index = 0;\n } else if (index < 0) {\n index = edge;\n }\n }\n\n return index;\n },\n\n /**\r\n * Check if the direction is \"rtl\" or not.\r\n *\r\n * @return {boolean} - True if \"rtl\" or false if not.\r\n */\n isRtl: function isRtl() {\n return options.direction === RTL;\n },\n\n /**\r\n * Return the page length.\r\n *\r\n * @return {number} - Max page number.\r\n */\n get pageLength() {\n var length = Splide.length;\n return hasFocus() ? length : Math.ceil(length / options.perPage);\n },\n\n /**\r\n * Return the edge index.\r\n *\r\n * @return {number} - Edge index.\r\n */\n get edgeIndex() {\n var length = Splide.length;\n\n if (!length) {\n return 0;\n }\n\n if (hasFocus() || options.isNavigation || isLoop) {\n return length - 1;\n }\n\n return length - options.perPage;\n },\n\n /**\r\n * Return the index of the previous slide.\r\n *\r\n * @return {number} - The index of the previous slide if available. -1 otherwise.\r\n */\n get prevIndex() {\n var prev = Splide.index - 1;\n\n if (isLoop || options.rewind) {\n prev = this.rewind(prev);\n }\n\n return prev > -1 ? prev : -1;\n },\n\n /**\r\n * Return the index of the next slide.\r\n *\r\n * @return {number} - The index of the next slide if available. -1 otherwise.\r\n */\n get nextIndex() {\n var next = Splide.index + 1;\n\n if (isLoop || options.rewind) {\n next = this.rewind(next);\n }\n\n return Splide.index < next && next <= this.edgeIndex || next === 0 ? next : -1;\n }\n\n };\n /**\r\n * Listen to some events.\r\n */\n\n function bind() {\n Splide.on('move', function (newIndex) {\n Splide.index = newIndex;\n }).on('updated refresh', function (newOptions) {\n options = newOptions || options;\n Splide.index = between(Splide.index, 0, Controller.edgeIndex);\n });\n }\n /**\r\n * Verify if the focus option is available or not.\r\n *\r\n * @return {boolean} - True if a slider has the focus option.\r\n */\n\n\n function hasFocus() {\n return options.focus !== false;\n }\n /**\r\n * Return the next or previous page index computed by the page number and current index.\r\n *\r\n * @param {number} number - Specify the page number.\r\n * @param {number} index - Current index.\r\n * @param {boolean} prev - Prev or next.\r\n *\r\n * @return {number} - Slide index.\r\n */\n\n\n function parsePage(number, index, prev) {\n if (number > -1) {\n return Controller.toIndex(number);\n }\n\n var perMove = options.perMove;\n var sign = prev ? -1 : 1;\n\n if (perMove) {\n return index + perMove * sign;\n }\n\n return Controller.toIndex(Controller.toPage(index) + sign);\n }\n\n return Controller;\n});\n;// CONCATENATED MODULE: ./src/js/components/track/index.js\n/**\r\n * The component for moving list in the track.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n\n\nvar abs = Math.abs;\n/**\r\n * The component for moving list in the track.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const track = (function (Splide, Components) {\n /**\r\n * Hold the Layout component.\r\n *\r\n * @type {Object}\r\n */\n var Layout;\n /**\r\n * Hold the Layout component.\r\n *\r\n * @type {Object}\r\n */\n\n var Elements;\n /**\r\n * Store the list element.\r\n *\r\n * @type {Element}\r\n */\n\n var list;\n /**\r\n * Whether the current direction is vertical or not.\r\n *\r\n * @type {boolean}\r\n */\n\n var isVertical = Splide.options.direction === TTB;\n /**\r\n * Whether the slider type is FADE or not.\r\n *\r\n * @type {boolean}\r\n */\n\n var isFade = Splide.is(FADE);\n /**\r\n * Whether the slider direction is RTL or not.\r\n *\r\n * @type {boolean}\r\n */\n\n var isRTL = Splide.options.direction === RTL;\n /**\r\n * This will be true while transitioning from the last index to the first one.\r\n *\r\n * @type {boolean}\r\n */\n\n var isLoopPending = false;\n /**\r\n * Sign for the direction. Only RTL mode uses the positive sign.\r\n *\r\n * @type {number}\r\n */\n\n var sign = isRTL ? 1 : -1;\n /**\r\n * Track component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Track = {\n /**\r\n * Make public the sign defined locally.\r\n *\r\n * @type {number}\r\n */\n sign: sign,\n\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n Elements = Components.Elements;\n Layout = Components.Layout;\n list = Elements.list;\n },\n\n /**\r\n * Called after the component is mounted.\r\n * The resize event must be registered after the Layout's one is done.\r\n */\n mounted: function mounted() {\n var _this = this;\n\n if (!isFade) {\n this.jump(0);\n Splide.on('mounted resize updated', function () {\n _this.jump(Splide.index);\n });\n }\n },\n\n /**\r\n * Go to the given destination index.\r\n * After arriving there, the track is jump to the new index without animation, mainly for loop mode.\r\n *\r\n * @param {number} destIndex - A destination index.\r\n * This can be negative or greater than slides length for reaching clones.\r\n * @param {number} newIndex - An actual new index. They are always same in Slide and Rewind mode.\r\n * @param {boolean} silently - If true, suppress emitting events.\r\n */\n go: function go(destIndex, newIndex, silently) {\n var newPosition = getTrimmedPosition(destIndex);\n var prevIndex = Splide.index; // Prevent any actions while transitioning from the last index to the first one for jump.\n\n if (Splide.State.is(MOVING) && isLoopPending) {\n return;\n }\n\n isLoopPending = destIndex !== newIndex;\n\n if (!silently) {\n Splide.emit('move', newIndex, prevIndex, destIndex);\n }\n\n if (Math.abs(newPosition - this.position) >= 1 || isFade) {\n Components.Transition.start(destIndex, newIndex, prevIndex, this.toCoord(newPosition), function () {\n onTransitionEnd(destIndex, newIndex, prevIndex, silently);\n });\n } else {\n if (destIndex !== prevIndex && Splide.options.trimSpace === 'move') {\n Components.Controller.go(destIndex + destIndex - prevIndex, silently);\n } else {\n onTransitionEnd(destIndex, newIndex, prevIndex, silently);\n }\n }\n },\n\n /**\r\n * Move the track to the specified index.\r\n *\r\n * @param {number} index - A destination index where the track jumps.\r\n */\n jump: function jump(index) {\n this.translate(getTrimmedPosition(index));\n },\n\n /**\r\n * Set the list position by CSS translate property.\r\n *\r\n * @param {number} position - A new position value.\r\n */\n translate: function translate(position) {\n applyStyle(list, {\n transform: \"translate\" + (isVertical ? 'Y' : 'X') + \"(\" + position + \"px)\"\n });\n },\n\n /**\r\n * Cancel the transition and set the list position.\r\n * Also, loop the slider if necessary.\r\n */\n cancel: function cancel() {\n if (Splide.is(LOOP)) {\n this.shift();\n } else {\n // Ensure the current position.\n this.translate(this.position);\n }\n\n applyStyle(list, {\n transition: ''\n });\n },\n\n /**\r\n * Shift the slider if it exceeds borders on the edge.\r\n */\n shift: function shift() {\n var position = abs(this.position);\n var left = abs(this.toPosition(0));\n var right = abs(this.toPosition(Splide.length));\n var innerSize = right - left;\n\n if (position < left) {\n position += innerSize;\n } else if (position > right) {\n position -= innerSize;\n }\n\n this.translate(sign * position);\n },\n\n /**\r\n * Trim redundant spaces on the left or right edge if necessary.\r\n *\r\n * @param {number} position - Position value to be trimmed.\r\n *\r\n * @return {number} - Trimmed position.\r\n */\n trim: function trim(position) {\n if (!Splide.options.trimSpace || Splide.is(LOOP)) {\n return position;\n }\n\n var edge = sign * (Layout.totalSize() - Layout.size - Layout.gap);\n return between(position, edge, 0);\n },\n\n /**\r\n * Calculate the closest slide index from the given position.\r\n *\r\n * @param {number} position - A position converted to an slide index.\r\n *\r\n * @return {number} - The closest slide index.\r\n */\n toIndex: function toIndex(position) {\n var _this2 = this;\n\n var index = 0;\n var minDistance = Infinity;\n Elements.getSlides(true).forEach(function (Slide) {\n var slideIndex = Slide.index;\n var distance = abs(_this2.toPosition(slideIndex) - position);\n\n if (distance < minDistance) {\n minDistance = distance;\n index = slideIndex;\n }\n });\n return index;\n },\n\n /**\r\n * Return coordinates object by the given position.\r\n *\r\n * @param {number} position - A position value.\r\n *\r\n * @return {Object} - A coordinates object.\r\n */\n toCoord: function toCoord(position) {\n return {\n x: isVertical ? 0 : position,\n y: isVertical ? position : 0\n };\n },\n\n /**\r\n * Calculate the track position by a slide index.\r\n *\r\n * @param {number} index - Slide index.\r\n *\r\n * @return {Object} - Calculated position.\r\n */\n toPosition: function toPosition(index) {\n var position = Layout.totalSize(index) - Layout.slideSize(index) - Layout.gap;\n return sign * (position + this.offset(index));\n },\n\n /**\r\n * Return the current offset value, considering direction.\r\n *\r\n * @return {number} - Offset amount.\r\n */\n offset: function offset(index) {\n var focus = Splide.options.focus;\n var slideSize = Layout.slideSize(index);\n\n if (focus === 'center') {\n return -(Layout.size - slideSize) / 2;\n }\n\n return -(parseInt(focus) || 0) * (slideSize + Layout.gap);\n },\n\n /**\r\n * Return the current position.\r\n * This returns the correct position even while transitioning by CSS.\r\n *\r\n * @return {number} - Current position.\r\n */\n get position() {\n var prop = isVertical ? 'top' : isRTL ? 'right' : 'left';\n return getRect(list)[prop] - (getRect(Elements.track)[prop] - Layout.padding[prop] * sign);\n }\n\n };\n /**\r\n * Called whenever slides arrive at a destination.\r\n *\r\n * @param {number} destIndex - A destination index.\r\n * @param {number} newIndex - A new index.\r\n * @param {number} prevIndex - A previous index.\r\n * @param {boolean} silently - If true, suppress emitting events.\r\n */\n\n function onTransitionEnd(destIndex, newIndex, prevIndex, silently) {\n applyStyle(list, {\n transition: ''\n });\n isLoopPending = false;\n\n if (!isFade) {\n Track.jump(newIndex);\n }\n\n if (!silently) {\n Splide.emit('moved', newIndex, prevIndex, destIndex);\n }\n }\n /**\r\n * Convert index to the trimmed position.\r\n *\r\n * @return {number} - Trimmed position.\r\n */\n\n\n function getTrimmedPosition(index) {\n return Track.trim(Track.toPosition(index));\n }\n\n return Track;\n});\n;// CONCATENATED MODULE: ./src/js/components/clones/index.js\n/**\r\n * The component for cloning some slides for \"loop\" mode of the track.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n\n/**\r\n * The component for cloning some slides for \"loop\" mode of the track.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const clones = (function (Splide, Components) {\n /**\r\n * Store information of all clones.\r\n *\r\n * @type {Array}\r\n */\n var clones = [];\n /**\r\n * Store the current clone count on one side.\r\n *\r\n * @type {number}\r\n */\n\n var cloneCount = 0;\n /**\r\n * Keep Elements component.\r\n *\r\n * @type {Object}\r\n */\n\n var Elements = Components.Elements;\n /**\r\n * Clones component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Clones = {\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n var _this = this;\n\n if (Splide.is(LOOP)) {\n init();\n Splide.on('refresh:before', function () {\n _this.destroy();\n }).on('refresh', init).on('resize', function () {\n if (cloneCount !== getCloneCount()) {\n // Destroy before refresh not to collect clones by the Elements component.\n _this.destroy();\n\n Splide.refresh();\n }\n });\n }\n },\n\n /**\r\n * Destroy.\r\n */\n destroy: function destroy() {\n dom_remove(clones);\n clones = [];\n },\n\n /**\r\n * Return all clones.\r\n *\r\n * @return {Element[]} - Cloned elements.\r\n */\n get clones() {\n return clones;\n },\n\n /**\r\n * Return clone length.\r\n *\r\n * @return {number} - A length of clones.\r\n */\n get length() {\n return clones.length;\n }\n\n };\n /**\r\n * Initialization.\r\n */\n\n function init() {\n Clones.destroy();\n cloneCount = getCloneCount();\n generateClones(cloneCount);\n }\n /**\r\n * Generate and append/prepend clones.\r\n *\r\n * @param {number} count - The half number of clones.\r\n */\n\n\n function generateClones(count) {\n var length = Elements.length,\n register = Elements.register;\n\n if (length) {\n var slides = Elements.slides;\n\n while (slides.length < count) {\n slides = slides.concat(slides);\n } // Clones after the last element.\n\n\n slides.slice(0, count).forEach(function (elm, index) {\n var clone = cloneDeeply(elm);\n append(Elements.list, clone);\n clones.push(clone);\n register(clone, index + length, index % length);\n }); // Clones before the first element.\n\n slides.slice(-count).forEach(function (elm, index) {\n var clone = cloneDeeply(elm);\n before(clone, slides[0]);\n clones.push(clone);\n register(clone, index - count, (length + index - count % length) % length);\n });\n }\n }\n /**\r\n * Return half count of clones to be generated.\r\n * Clone count is determined by:\r\n * - \"clones\" value in the options.\r\n * - Number of slides that can be placed in a view in \"fixed\" mode.\r\n * - Max pages a flick action can move.\r\n * - Whether the slide length is enough for perPage.\r\n *\r\n * @return {number} - Count for clones.\r\n */\n\n\n function getCloneCount() {\n var options = Splide.options;\n\n if (options.clones) {\n return options.clones;\n } // Use the slide length in autoWidth mode because the number cannot be calculated.\n\n\n var baseCount = options.autoWidth || options.autoHeight ? Elements.length : options.perPage;\n var dimension = options.direction === TTB ? 'Height' : 'Width';\n var fixedSize = toPixel(Splide.root, options[\"fixed\" + dimension]);\n\n if (fixedSize) {\n // Roughly calculate the count. This needs not to be strict.\n baseCount = Math.ceil(Elements.track[\"client\" + dimension] / fixedSize);\n }\n\n return baseCount * (options.drag ? options.flickMaxPages + 1 : 1);\n }\n /**\r\n * Clone deeply the given element.\r\n *\r\n * @param {Element} elm - An element being duplicated.\r\n *\r\n * @return {Node} - A cloned node(element).\r\n */\n\n\n function cloneDeeply(elm) {\n var clone = elm.cloneNode(true);\n addClass(clone, Splide.classes.clone); // ID should not be duplicated.\n\n removeAttribute(clone, 'id');\n return clone;\n }\n\n return Clones;\n});\n;// CONCATENATED MODULE: ./src/js/components/layout/directions/horizontal.js\n/**\r\n * The resolver component for horizontal layout.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n/**\r\n * The resolver component for horizontal layout.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The resolver object.\r\n */\n\n/* harmony default export */ const horizontal = (function (Splide, Components) {\n /**\r\n * Keep the Elements component.\r\n *\r\n * @type {string}\r\n */\n var Elements = Components.Elements;\n /**\r\n * Keep the root element.\r\n *\r\n * @type {Element}\r\n */\n\n var root = Splide.root;\n /**\r\n * Keep the track element.\r\n *\r\n * @type {Element}\r\n */\n\n var track;\n /**\r\n * Keep the latest options.\r\n *\r\n * @type {Element}\r\n */\n\n var options = Splide.options;\n return {\n /**\r\n * Margin property name.\r\n *\r\n * @type {string}\r\n */\n margin: 'margin' + (options.direction === RTL ? 'Left' : 'Right'),\n\n /**\r\n * Always 0 because the height will be determined by inner contents.\r\n *\r\n * @type {number}\r\n */\n height: 0,\n\n /**\r\n * Initialization.\r\n */\n init: function init() {\n this.resize();\n },\n\n /**\r\n * Resize gap and padding.\r\n * This must be called on init.\r\n */\n resize: function resize() {\n options = Splide.options;\n track = Elements.track;\n this.gap = toPixel(root, options.gap);\n var padding = options.padding;\n var left = toPixel(root, padding.left || padding);\n var right = toPixel(root, padding.right || padding);\n this.padding = {\n left: left,\n right: right\n };\n applyStyle(track, {\n paddingLeft: unit(left),\n paddingRight: unit(right)\n });\n },\n\n /**\r\n * Return total width from the left of the list to the right of the slide specified by the provided index.\r\n *\r\n * @param {number} index - Optional. A slide index. If undefined, total width of the slider will be returned.\r\n *\r\n * @return {number} - Total width to the right side of the specified slide, or 0 for an invalid index.\r\n */\n totalWidth: function totalWidth(index) {\n if (index === void 0) {\n index = Splide.length - 1;\n }\n\n var Slide = Elements.getSlide(index);\n var width = 0;\n\n if (Slide) {\n var slideRect = getRect(Slide.slide);\n var listRect = getRect(Elements.list);\n\n if (options.direction === RTL) {\n width = listRect.right - slideRect.left;\n } else {\n width = slideRect.right - listRect.left;\n }\n\n width += this.gap;\n }\n\n return width;\n },\n\n /**\r\n * Return the slide width in px.\r\n *\r\n * @param {number} index - Slide index.\r\n *\r\n * @return {number} - The slide width.\r\n */\n slideWidth: function slideWidth(index) {\n if (options.autoWidth) {\n var Slide = Elements.getSlide(index);\n return Slide ? Slide.slide.offsetWidth : 0;\n }\n\n var width = options.fixedWidth || (this.width + this.gap) / options.perPage - this.gap;\n return toPixel(root, width);\n },\n\n /**\r\n * Return the slide height in px.\r\n *\r\n * @return {number} - The slide height.\r\n */\n slideHeight: function slideHeight() {\n var height = options.height || options.fixedHeight || this.width * options.heightRatio;\n return toPixel(root, height);\n },\n\n /**\r\n * Return slider width without padding.\r\n *\r\n * @return {number} - Current slider width.\r\n */\n get width() {\n return track.clientWidth - this.padding.left - this.padding.right;\n }\n\n };\n});\n;// CONCATENATED MODULE: ./src/js/components/layout/directions/vertical.js\n/**\r\n * The resolver component for vertical layout.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n/**\r\n * The resolver component for vertical layout.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The resolver object.\r\n */\n\n/* harmony default export */ const vertical = (function (Splide, Components) {\n /**\r\n * Keep the Elements component.\r\n *\r\n * @type {string}\r\n */\n var Elements = Components.Elements;\n /**\r\n * Keep the root element.\r\n *\r\n * @type {Element}\r\n */\n\n var root = Splide.root;\n /**\r\n * Keep the track element.\r\n *\r\n * @type {Element}\r\n */\n\n var track;\n /**\r\n * Keep the latest options.\r\n *\r\n * @type {Element}\r\n */\n\n var options;\n return {\n /**\r\n * Margin property name.\r\n *\r\n * @type {string}\r\n */\n margin: 'marginBottom',\n\n /**\r\n * Initialization.\r\n */\n init: function init() {\n this.resize();\n },\n\n /**\r\n * Resize gap and padding.\r\n * This must be called on init.\r\n */\n resize: function resize() {\n options = Splide.options;\n track = Elements.track;\n this.gap = toPixel(root, options.gap);\n var padding = options.padding;\n var top = toPixel(root, padding.top || padding);\n var bottom = toPixel(root, padding.bottom || padding);\n this.padding = {\n top: top,\n bottom: bottom\n };\n applyStyle(track, {\n paddingTop: unit(top),\n paddingBottom: unit(bottom)\n });\n },\n\n /**\r\n * Return total height from the top of the list to the bottom of the slide specified by the provided index.\r\n *\r\n * @param {number} index - Optional. A slide index. If undefined, total height of the slider will be returned.\r\n *\r\n * @return {number} - Total height to the bottom of the specified slide, or 0 for an invalid index.\r\n */\n totalHeight: function totalHeight(index) {\n if (index === void 0) {\n index = Splide.length - 1;\n }\n\n var Slide = Elements.getSlide(index);\n\n if (Slide) {\n return getRect(Slide.slide).bottom - getRect(Elements.list).top + this.gap;\n }\n\n return 0;\n },\n\n /**\r\n * Return the slide width in px.\r\n *\r\n * @return {number} - The slide width.\r\n */\n slideWidth: function slideWidth() {\n return toPixel(root, options.fixedWidth || this.width);\n },\n\n /**\r\n * Return the slide height in px.\r\n *\r\n * @param {number} index - Slide index.\r\n *\r\n * @return {number} - The slide height.\r\n */\n slideHeight: function slideHeight(index) {\n if (options.autoHeight) {\n var Slide = Elements.getSlide(index);\n return Slide ? Slide.slide.offsetHeight : 0;\n }\n\n var height = options.fixedHeight || (this.height + this.gap) / options.perPage - this.gap;\n return toPixel(root, height);\n },\n\n /**\r\n * Return slider width without padding.\r\n *\r\n * @return {number} - Current slider width.\r\n */\n get width() {\n return track.clientWidth;\n },\n\n /**\r\n * Return slide height without padding.\r\n *\r\n * @return {number} - Slider height.\r\n */\n get height() {\n var height = options.height || this.width * options.heightRatio;\n exist(height, '\"height\" or \"heightRatio\" is missing.');\n return toPixel(root, height) - this.padding.top - this.padding.bottom;\n }\n\n };\n});\n;// CONCATENATED MODULE: ./src/js/utils/time.js\n/**\r\n * A package of utility functions related with time.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Simple throttle function that controls how often the given function is executed.\r\n *\r\n * @param {function} func - A function to be throttled.\r\n * @param {number} wait - Time in millisecond for interval of execution.\r\n *\r\n * @return {Function} - A debounced function.\r\n */\nfunction throttle(func, wait) {\n var timeout; // Declare function by the \"function\" keyword to prevent \"this\" from being inherited.\n\n return function () {\n if (!timeout) {\n timeout = setTimeout(function () {\n func();\n timeout = null;\n }, wait);\n }\n };\n}\n/**\r\n * Custom setInterval function that provides progress rate as callback.\r\n *\r\n * @param {function} callback - A callback function fired every time the interval time passes.\r\n * @param {number} interval - Interval duration in milliseconds.\r\n * @param {function} progress - A callback function fired whenever the progress goes.\r\n *\r\n * @return {Object} - An object containing play() and pause() functions.\r\n */\n\nfunction createInterval(callback, interval, progress) {\n var _window = window,\n requestAnimationFrame = _window.requestAnimationFrame;\n var start,\n elapse,\n rate,\n _pause = true;\n\n var step = function step(timestamp) {\n if (!_pause) {\n if (!start) {\n start = timestamp;\n\n if (rate && rate < 1) {\n start -= rate * interval;\n }\n }\n\n elapse = timestamp - start;\n rate = elapse / interval;\n\n if (elapse >= interval) {\n start = 0;\n rate = 1;\n callback();\n }\n\n if (progress) {\n progress(rate);\n }\n\n requestAnimationFrame(step);\n }\n };\n\n return {\n pause: function pause() {\n _pause = true;\n start = 0;\n },\n play: function play(reset) {\n start = 0;\n\n if (reset) {\n rate = 0;\n }\n\n if (_pause) {\n _pause = false;\n requestAnimationFrame(step);\n }\n }\n };\n}\n;// CONCATENATED MODULE: ./src/js/components/layout/index.js\n/**\r\n * The component for handing slide layouts and their sizes.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n\n\n\n\n/**\r\n * The component for handing slide layouts and their sizes.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const layout = (function (Splide, Components) {\n /**\r\n * Keep the Elements component.\r\n *\r\n * @type {string}\r\n */\n var Elements = Components.Elements;\n /**\r\n * Whether the slider is vertical or not.\r\n *\r\n * @type {boolean}\r\n */\n\n var isVertical = Splide.options.direction === TTB;\n /**\r\n * Layout component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Layout = object_assign({\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n bind();\n init(); // The word \"size\" means width for a horizontal slider and height for a vertical slider.\n\n this.totalSize = isVertical ? this.totalHeight : this.totalWidth;\n this.slideSize = isVertical ? this.slideHeight : this.slideWidth;\n },\n\n /**\r\n * Destroy the component.\r\n */\n destroy: function destroy() {\n removeAttribute([Elements.list, Elements.track], 'style');\n },\n\n /**\r\n * Return the slider height on the vertical mode or width on the horizontal mode.\r\n *\r\n * @return {number}\r\n */\n get size() {\n return isVertical ? this.height : this.width;\n }\n\n }, isVertical ? vertical(Splide, Components) : horizontal(Splide, Components));\n /**\r\n * Init slider styles according to options.\r\n */\n\n function init() {\n Layout.init();\n applyStyle(Splide.root, {\n maxWidth: unit(Splide.options.width)\n });\n Elements.each(function (Slide) {\n Slide.slide.style[Layout.margin] = unit(Layout.gap);\n });\n resize();\n }\n /**\r\n * Listen the resize native event with throttle.\r\n * Initialize when the component is mounted or options are updated.\r\n */\n\n\n function bind() {\n Splide.on('resize load', throttle(function () {\n Splide.emit('resize');\n }, Splide.options.throttle), window).on('resize', resize).on('updated refresh', init);\n }\n /**\r\n * Resize the track and slide elements.\r\n */\n\n\n function resize() {\n var options = Splide.options;\n Layout.resize();\n applyStyle(Elements.track, {\n height: unit(Layout.height)\n });\n var slideHeight = options.autoHeight ? null : unit(Layout.slideHeight());\n Elements.each(function (Slide) {\n applyStyle(Slide.container, {\n height: slideHeight\n });\n applyStyle(Slide.slide, {\n width: options.autoWidth ? null : unit(Layout.slideWidth(Slide.index)),\n height: Slide.container ? null : slideHeight\n });\n });\n Splide.emit('resized');\n }\n\n return Layout;\n});\n;// CONCATENATED MODULE: ./src/js/components/drag/index.js\n/**\r\n * The component for supporting mouse drag and swipe.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n\n\nvar drag_abs = Math.abs;\n/**\r\n * If the absolute velocity is greater thant this value,\r\n * a slider always goes to a different slide after drag, not allowed to stay on a current slide.\r\n */\n\nvar MIN_VELOCITY = 0.1;\n/**\r\n * Adjust how much the track can be pulled on the first or last page.\r\n * The larger number this is, the farther the track moves.\r\n * This should be around 5 - 9.\r\n *\r\n * @type {number}\r\n */\n\nvar FRICTION_REDUCER = 7;\n/**\r\n * The component supporting mouse drag and swipe.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const drag = (function (Splide, Components) {\n /**\r\n * Store the Move component.\r\n *\r\n * @type {Object}\r\n */\n var Track = Components.Track;\n /**\r\n * Store the Controller component.\r\n *\r\n * @type {Object}\r\n */\n\n var Controller = Components.Controller;\n /**\r\n * Coordinate of the track on starting drag.\r\n *\r\n * @type {Object}\r\n */\n\n var startCoord;\n /**\r\n * Analyzed info on starting drag.\r\n *\r\n * @type {Object|null}\r\n */\n\n var startInfo;\n /**\r\n * Analyzed info being updated while dragging/swiping.\r\n *\r\n * @type {Object}\r\n */\n\n var currentInfo;\n /**\r\n * Determine whether slides are being dragged or not.\r\n *\r\n * @type {boolean}\r\n */\n\n var isDragging;\n /**\r\n * Whether the slider direction is vertical or not.\r\n *\r\n * @type {boolean}\r\n */\n\n var isVertical = Splide.options.direction === TTB;\n /**\r\n * Axis for the direction.\r\n *\r\n * @type {string}\r\n */\n\n var axis = isVertical ? 'y' : 'x';\n /**\r\n * Drag component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Drag = {\n /**\r\n * Whether dragging is disabled or not.\r\n *\r\n * @type {boolean}\r\n */\n disabled: false,\n\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n var _this = this;\n\n var Elements = Components.Elements;\n var track = Elements.track;\n Splide.on('touchstart mousedown', start, track).on('touchmove mousemove', move, track, {\n passive: false\n }).on('touchend touchcancel mouseleave mouseup dragend', end, track).on('mounted refresh', function () {\n // Prevent dragging an image or anchor itself.\n each(Elements.list.querySelectorAll('img, a'), function (elm) {\n Splide.off('dragstart', elm).on('dragstart', function (e) {\n e.preventDefault();\n }, elm, {\n passive: false\n });\n });\n }).on('mounted updated', function () {\n _this.disabled = !Splide.options.drag;\n });\n }\n };\n /**\r\n * Called when the track starts to be dragged.\r\n *\r\n * @param {TouchEvent|MouseEvent} e - TouchEvent or MouseEvent object.\r\n */\n\n function start(e) {\n if (!Drag.disabled && !isDragging) {\n // These prams are used to evaluate whether the slider should start moving.\n init(e);\n }\n }\n /**\r\n * Initialize parameters.\r\n *\r\n * @param {TouchEvent|MouseEvent} e - TouchEvent or MouseEvent object.\r\n */\n\n\n function init(e) {\n startCoord = Track.toCoord(Track.position);\n startInfo = analyze(e, {});\n currentInfo = startInfo;\n }\n /**\r\n * Called while the track being dragged.\r\n *\r\n * @param {TouchEvent|MouseEvent} e - TouchEvent or MouseEvent object.\r\n */\n\n\n function move(e) {\n if (startInfo) {\n currentInfo = analyze(e, startInfo);\n\n if (isDragging) {\n if (e.cancelable) {\n e.preventDefault();\n }\n\n if (!Splide.is(FADE)) {\n var position = startCoord[axis] + currentInfo.offset[axis];\n Track.translate(resist(position));\n }\n } else {\n if (shouldMove(currentInfo)) {\n Splide.emit('drag', startInfo);\n isDragging = true;\n Track.cancel(); // These params are actual drag data.\n\n init(e);\n }\n }\n }\n }\n /**\r\n * Determine whether to start moving the track or not by drag angle.\r\n *\r\n * @param {Object} info - An information object.\r\n *\r\n * @return {boolean} - True if the track should be moved or false if not.\r\n */\n\n\n function shouldMove(_ref) {\n var offset = _ref.offset;\n\n if (Splide.State.is(MOVING) && Splide.options.waitForTransition) {\n return false;\n }\n\n var angle = Math.atan(drag_abs(offset.y) / drag_abs(offset.x)) * 180 / Math.PI;\n\n if (isVertical) {\n angle = 90 - angle;\n }\n\n return angle < Splide.options.dragAngleThreshold;\n }\n /**\r\n * Resist dragging the track on the first/last page because there is no more.\r\n *\r\n * @param {number} position - A position being applied to the track.\r\n *\r\n * @return {Object} - Adjusted position.\r\n */\n\n\n function resist(position) {\n if (Splide.is(SLIDE)) {\n var sign = Track.sign;\n\n var _start = sign * Track.trim(Track.toPosition(0));\n\n var _end = sign * Track.trim(Track.toPosition(Controller.edgeIndex));\n\n position *= sign;\n\n if (position < _start) {\n position = _start - FRICTION_REDUCER * Math.log(_start - position);\n } else if (position > _end) {\n position = _end + FRICTION_REDUCER * Math.log(position - _end);\n }\n\n position *= sign;\n }\n\n return position;\n }\n /**\r\n * Called when dragging ends.\r\n */\n\n\n function end() {\n startInfo = null;\n\n if (isDragging) {\n Splide.emit('dragged', currentInfo);\n go(currentInfo);\n isDragging = false;\n }\n }\n /**\r\n * Go to the slide determined by the analyzed data.\r\n *\r\n * @param {Object} info - An info object.\r\n */\n\n\n function go(info) {\n var velocity = info.velocity[axis];\n var absV = drag_abs(velocity);\n\n if (absV > 0) {\n var options = Splide.options;\n var index = Splide.index;\n var sign = velocity < 0 ? -1 : 1;\n var destIndex = index;\n\n if (!Splide.is(FADE)) {\n var destination = Track.position;\n\n if (absV > options.flickVelocityThreshold && drag_abs(info.offset[axis]) < options.swipeDistanceThreshold) {\n destination += sign * Math.min(absV * options.flickPower, Components.Layout.size * (options.flickMaxPages || 1));\n }\n\n destIndex = Track.toIndex(destination);\n }\n /*\r\n * Do not allow the track to go to a previous position if there is enough velocity.\r\n * Always use the adjacent index for the fade mode.\r\n */\n\n\n if (destIndex === index && absV > MIN_VELOCITY) {\n destIndex = index + sign * Track.sign;\n }\n\n if (Splide.is(SLIDE)) {\n destIndex = between(destIndex, 0, Controller.edgeIndex);\n }\n\n Controller.go(destIndex, options.isNavigation);\n }\n }\n /**\r\n * Analyze the given event object and return important information for handling swipe behavior.\r\n *\r\n * @param {Event} e - Touch or Mouse event object.\r\n * @param {Object} startInfo - Information analyzed on start for calculating difference from the current one.\r\n *\r\n * @return {Object} - An object containing analyzed information, such as offset, velocity, etc.\r\n */\n\n\n function analyze(e, startInfo) {\n var timeStamp = e.timeStamp,\n touches = e.touches;\n\n var _ref2 = touches ? touches[0] : e,\n clientX = _ref2.clientX,\n clientY = _ref2.clientY;\n\n var _ref3 = startInfo.to || {},\n _ref3$x = _ref3.x,\n fromX = _ref3$x === void 0 ? clientX : _ref3$x,\n _ref3$y = _ref3.y,\n fromY = _ref3$y === void 0 ? clientY : _ref3$y;\n\n var startTime = startInfo.time || 0;\n var offset = {\n x: clientX - fromX,\n y: clientY - fromY\n };\n var duration = timeStamp - startTime;\n var velocity = {\n x: offset.x / duration,\n y: offset.y / duration\n };\n return {\n to: {\n x: clientX,\n y: clientY\n },\n offset: offset,\n time: timeStamp,\n velocity: velocity\n };\n }\n\n return Drag;\n});\n;// CONCATENATED MODULE: ./src/js/components/click/index.js\n/**\r\n * The component for handling a click event.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * The component for handling a click event.\r\n * Click should be disabled during drag/swipe.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n/* harmony default export */ const click = (function (Splide, Components) {\n /**\r\n * Whether click is disabled or not.\r\n *\r\n * @type {boolean}\r\n */\n var disabled = false;\n /**\r\n * Click component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Click = {\n /**\r\n * Mount only when the drag is activated and the slide type is not \"fade\".\r\n *\r\n * @type {boolean}\r\n */\n required: Splide.options.drag,\n\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n Splide.on('click', onClick, Components.Elements.track, {\n capture: true\n }).on('drag', function () {\n disabled = true;\n }).on('dragged', function () {\n // Make sure the flag is released after the click event is fired.\n setTimeout(function () {\n disabled = false;\n });\n });\n }\n };\n /**\r\n * Called when a track element is clicked.\r\n *\r\n * @param {Event} e - A click event.\r\n */\n\n function onClick(e) {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n\n return Click;\n});\n;// CONCATENATED MODULE: ./src/js/components/autoplay/index.js\n/**\r\n * The component for playing slides automatically.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n/**\r\n * Set of pause flags.\r\n */\n\nvar PAUSE_FLAGS = {\n HOVER: 1,\n FOCUS: 2,\n MANUAL: 3\n};\n/**\r\n * The component for playing slides automatically.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n * @param {string} name - A component name as a lowercase string.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const autoplay = (function (Splide, Components, name) {\n /**\r\n * Store pause flags.\r\n *\r\n * @type {Array}\r\n */\n var flags = [];\n /**\r\n * Store an interval object.\r\n *\r\n * @type {Object};\r\n */\n\n var interval;\n /**\r\n * Keep the Elements component.\r\n *\r\n * @type {string}\r\n */\n\n var Elements = Components.Elements;\n /**\r\n * Autoplay component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Autoplay = {\n /**\r\n * Required only when the autoplay option is true.\r\n *\r\n * @type {boolean}\r\n */\n required: Splide.options.autoplay,\n\n /**\r\n * Called when the component is mounted.\r\n * Note that autoplay starts only if there are slides over perPage number.\r\n */\n mount: function mount() {\n var options = Splide.options;\n\n if (Elements.slides.length > options.perPage) {\n interval = createInterval(function () {\n Splide.go('>');\n }, options.interval, function (rate) {\n Splide.emit(name + \":playing\", rate);\n\n if (Elements.bar) {\n applyStyle(Elements.bar, {\n width: rate * 100 + \"%\"\n });\n }\n });\n bind();\n this.play();\n }\n },\n\n /**\r\n * Start autoplay.\r\n *\r\n * @param {number} flag - A pause flag to be removed.\r\n */\n play: function play(flag) {\n if (flag === void 0) {\n flag = 0;\n }\n\n flags = flags.filter(function (f) {\n return f !== flag;\n });\n\n if (!flags.length) {\n Splide.emit(name + \":play\");\n interval.play(Splide.options.resetProgress);\n }\n },\n\n /**\r\n * Pause autoplay.\r\n * Note that Array.includes is not supported by IE.\r\n *\r\n * @param {number} flag - A pause flag to be added.\r\n */\n pause: function pause(flag) {\n if (flag === void 0) {\n flag = 0;\n }\n\n interval.pause();\n\n if (flags.indexOf(flag) === -1) {\n flags.push(flag);\n }\n\n if (flags.length === 1) {\n Splide.emit(name + \":pause\");\n }\n }\n };\n /**\r\n * Listen some events.\r\n */\n\n function bind() {\n var options = Splide.options;\n var sibling = Splide.sibling;\n var elms = [Splide.root, sibling ? sibling.root : null];\n\n if (options.pauseOnHover) {\n switchOn(elms, 'mouseleave', PAUSE_FLAGS.HOVER, true);\n switchOn(elms, 'mouseenter', PAUSE_FLAGS.HOVER, false);\n }\n\n if (options.pauseOnFocus) {\n switchOn(elms, 'focusout', PAUSE_FLAGS.FOCUS, true);\n switchOn(elms, 'focusin', PAUSE_FLAGS.FOCUS, false);\n }\n\n if (Elements.play) {\n Splide.on('click', function () {\n // Need to be removed a focus flag at first.\n Autoplay.play(PAUSE_FLAGS.FOCUS);\n Autoplay.play(PAUSE_FLAGS.MANUAL);\n }, Elements.play);\n }\n\n if (Elements.pause) {\n switchOn([Elements.pause], 'click', PAUSE_FLAGS.MANUAL, false);\n }\n\n Splide.on('move refresh', function () {\n Autoplay.play();\n }) // Rewind the timer.\n .on('destroy', function () {\n Autoplay.pause();\n });\n }\n /**\r\n * Play or pause on the given event.\r\n *\r\n * @param {Element[]} elms - Elements.\r\n * @param {string} event - An event name or names.\r\n * @param {number} flag - A pause flag defined on the top.\r\n * @param {boolean} play - Determine whether to play or pause.\r\n */\n\n\n function switchOn(elms, event, flag, play) {\n elms.forEach(function (elm) {\n Splide.on(event, function () {\n Autoplay[play ? 'play' : 'pause'](flag);\n }, elm);\n });\n }\n\n return Autoplay;\n});\n;// CONCATENATED MODULE: ./src/js/components/cover/index.js\n/**\r\n * The component for change an img element to background image of its wrapper.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * The component for change an img element to background image of its wrapper.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const cover = (function (Splide, Components) {\n /**\r\n * Hold options.\r\n *\r\n * @type {Object}\r\n */\n var options = Splide.options;\n /**\r\n * Cover component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Cover = {\n /**\r\n * Required only when \"cover\" option is true.\r\n *\r\n * @type {boolean}\r\n */\n required: options.cover,\n\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n Splide.on('lazyload:loaded', function (img) {\n cover(img, false);\n });\n Splide.on('mounted updated refresh', function () {\n return apply(false);\n });\n },\n\n /**\r\n * Destroy.\r\n */\n destroy: function destroy() {\n apply(true);\n }\n };\n /**\r\n * Apply \"cover\" to all slides.\r\n *\r\n * @param {boolean} uncover - If true, \"cover\" will be clear.\r\n */\n\n function apply(uncover) {\n Components.Elements.each(function (Slide) {\n var img = child(Slide.slide, 'IMG') || child(Slide.container, 'IMG');\n\n if (img && img.src) {\n cover(img, uncover);\n }\n });\n }\n /**\r\n * Set background image of the parent element, using source of the given image element.\r\n *\r\n * @param {Element} img - An image element.\r\n * @param {boolean} uncover - Reset \"cover\".\r\n */\n\n\n function cover(img, uncover) {\n applyStyle(img.parentElement, {\n background: uncover ? '' : \"center/cover no-repeat url(\\\"\" + img.src + \"\\\")\"\n });\n applyStyle(img, {\n display: uncover ? '' : 'none'\n });\n }\n\n return Cover;\n});\n;// CONCATENATED MODULE: ./src/js/components/arrows/path.js\n/**\r\n * Export vector path for an arrow.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Namespace definition for SVG element.\r\n *\r\n * @type {string}\r\n */\nvar XML_NAME_SPACE = 'http://www.w3.org/2000/svg';\n/**\r\n * The arrow vector path.\r\n *\r\n * @type {number}\r\n */\n\nvar PATH = 'm15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z';\n/**\r\n * SVG width and height.\r\n *\r\n * @type {number}\r\n */\n\nvar SIZE = 40;\n;// CONCATENATED MODULE: ./src/js/components/arrows/index.js\n/**\r\n * The component for appending prev/next arrows.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n/**\r\n * The component for appending prev/next arrows.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n * @param {string} name - A component name as a lowercase string.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const arrows = (function (Splide, Components, name) {\n /**\r\n * Previous arrow element.\r\n *\r\n * @type {Element|undefined}\r\n */\n var prev;\n /**\r\n * Next arrow element.\r\n *\r\n * @type {Element|undefined}\r\n */\n\n var next;\n /**\r\n * Store the class list.\r\n *\r\n * @type {Object}\r\n */\n\n var classes = Splide.classes;\n /**\r\n * Hold the root element.\r\n *\r\n * @type {Element}\r\n */\n\n var root = Splide.root;\n /**\r\n * Whether arrows are created programmatically or not.\r\n *\r\n * @type {boolean}\r\n */\n\n var created;\n /**\r\n * Hold the Elements component.\r\n *\r\n * @type {Object}\r\n */\n\n var Elements = Components.Elements;\n /**\r\n * Arrows component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Arrows = {\n /**\r\n * Required when the arrows option is true.\r\n *\r\n * @type {boolean}\r\n */\n required: Splide.options.arrows,\n\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n // Attempt to get arrows from HTML source.\n prev = Elements.arrows.prev;\n next = Elements.arrows.next; // If arrows were not found in HTML, let's generate them.\n\n if ((!prev || !next) && Splide.options.arrows) {\n prev = createArrow(true);\n next = createArrow(false);\n created = true;\n appendArrows();\n }\n\n if (prev && next) {\n bind();\n }\n\n this.arrows = {\n prev: prev,\n next: next\n };\n },\n\n /**\r\n * Called after all components are mounted.\r\n */\n mounted: function mounted() {\n Splide.emit(name + \":mounted\", prev, next);\n },\n\n /**\r\n * Destroy.\r\n */\n destroy: function destroy() {\n removeAttribute([prev, next], 'disabled');\n\n if (created) {\n dom_remove(prev.parentElement);\n }\n }\n };\n /**\r\n * Listen to native and custom events.\r\n */\n\n function bind() {\n Splide.on('click', function () {\n Splide.go('<');\n }, prev).on('click', function () {\n Splide.go('>');\n }, next).on('mounted move updated refresh', updateDisabled);\n }\n /**\r\n * Update a disabled attribute.\r\n */\n\n\n function updateDisabled() {\n var _Components$Controlle = Components.Controller,\n prevIndex = _Components$Controlle.prevIndex,\n nextIndex = _Components$Controlle.nextIndex;\n var isEnough = Splide.length > Splide.options.perPage || Splide.is(LOOP);\n prev.disabled = prevIndex < 0 || !isEnough;\n next.disabled = nextIndex < 0 || !isEnough;\n Splide.emit(name + \":updated\", prev, next, prevIndex, nextIndex);\n }\n /**\r\n * Create a wrapper element and append arrows.\r\n */\n\n\n function appendArrows() {\n var wrapper = create('div', {\n \"class\": classes.arrows\n });\n append(wrapper, prev);\n append(wrapper, next);\n var slider = Elements.slider;\n var parent = Splide.options.arrows === 'slider' && slider ? slider : root;\n before(wrapper, parent.firstElementChild);\n }\n /**\r\n * Create an arrow element.\r\n *\r\n * @param {boolean} prev - Determine to create a prev arrow or next arrow.\r\n *\r\n * @return {Element} - A created arrow element.\r\n */\n\n\n function createArrow(prev) {\n var arrow = \"