{"version":3,"sources":["webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./src/store/settings/country/moduleCountryState.js","webpack:///./src/store/settings/country/moduleCountryMutations.js","webpack:///./src/store/settings/country/moduleCountryActions.js","webpack:///./src/store/settings/country/moduleCountryGetters.js","webpack:///./src/store/settings/country/moduleCountry.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@splidejs/splide/dist/js/splide.esm.js","webpack:///./src/assets/images/country.jpg","webpack:///./node_modules/@splidejs/vue-splide/src/js/components/Splide.vue","webpack:///./node_modules/@splidejs/vue-splide/src/js/constants/events.js","webpack:///node_modules/@splidejs/vue-splide/src/js/components/Splide.vue","webpack:///./node_modules/@splidejs/vue-splide/src/js/components/Splide.vue?62b8","webpack:///./node_modules/@splidejs/vue-splide/src/js/components/Splide.vue?eb62","webpack:///./node_modules/@splidejs/vue-splide/src/js/components/SplideSlide.vue","webpack:///node_modules/@splidejs/vue-splide/src/js/components/SplideSlide.vue","webpack:///./node_modules/@splidejs/vue-splide/src/js/components/SplideSlide.vue?9f44","webpack:///./node_modules/@splidejs/vue-splide/src/js/components/SplideSlide.vue?2f5f","webpack:///./node_modules/@splidejs/vue-splide/src/js/index.js","webpack:///./src/assets/images/HospitalPlaceHolder.png","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./src/components/image_lazy.vue?ea5d","webpack:///./src/components/image_lazy.vue","webpack:///src/components/image_lazy.vue","webpack:///./src/components/image_lazy.vue?43af","webpack:///./src/components/image_lazy.vue?b3aa","webpack:///./src/assets/images/patient.jpg","webpack:///./src/assets/images/DoctorPlaceHolder.png","webpack:///./src/assets/images/face.png"],"names":["_unsupportedIterableToArray","r","a","t","toString","call","slice","constructor","name","Array","from","test","countries","topDestinations","doctorCountries","hospitals","hospitalCountries","ADD_ITEM","state","item","unshift","SET_Country","SET_DoctorCountry","SET_HospitalCountry","SET_TopDestinations","SET_Hospitals","UPDATE_Country","Country","CountryIndex","findIndex","p","ID","Object","assign","REMOVE_ITEM","itemId","ItemIndex","splice","AddCountry","_ref","commit","Promise","resolve","reject","axios","post","then","response","data","Data","catch","error","GetAllCountries","_ref2","get","GetAllAppointmentCountries","_ref3","model","GetAllAppointmentSurgeryCountries","_ref4","GetAlMedicalPackagesCountries","_ref5","GetAllDoctorCountries","_ref6","GetAllHospitalSurgeryCountries","_ref7","getCountries","_this","fetch","res","json","patientModel","NameEN","country","GetDoctorCountry","_ref8","GetAllHospitalCountries","_ref9","GetTopDestinations","_ref10","UpdateCountry","_ref11","GetCountry","_ref12","itemid","DeleteCountry","_ref13","delete","SearchHospitals","_ref14","namespaced","mutations","actions","getters","_arrayWithHoles","isArray","_iterableToArrayLimit","l","Symbol","iterator","e","n","i","u","f","o","next","done","push","value","length","_nonIterableRest","TypeError","_slicedToArray","unsupportedIterableToArray","root","factory","module","exports","self","__webpack_modules__","311","__unused_webpack_module","__webpack_exports__","__webpack_require__","d","module_Splide","states_namespaceObject","CREATED","DESTROYED","IDLE","MOUNTED","MOVING","core_event","Event","on","events","handler","elm","options","split","forEach","event","addEventListener","off","filter","unsubscribe","emit","_len","arguments","args","_key","apply","destroy","removeEventListener","initialState","curr","set","is","_extends","target","source","key","prototype","hasOwnProperty","this","keys","each","obj","callback","some","index","values","map","isObject","subject","merge","to","object_assign","defineProperty","getOwnPropertyDescriptor","toArray","between","m1","m2","Math","min","max","sprintf","format","replacements","replace","unit","type","parseFloat","pad","number","toPixel","div","create","applyStyle","position","width","append","clientWidth","dom_remove","find","selector","querySelector","child","parent","tagOrClassName","children","hasClass","tagName","tag","attrs","document","createElement","setAttribute","domify","html","innerHTML","firstChild","elms","parentElement","removeChild","appendChild","before","ref","insertBefore","styles","prop","style","addOrRemoveClasses","classes","remove","classList","addClass","removeClass","className","contains","getAttribute","removeAttribute","names","getRect","getBoundingClientRect","loaded","images","querySelectorAll","count","img","onload","onerror","SLIDE","LOOP","FADE","slide","Splide","Components","list","endCallback","mount","Elements","start","destIndex","newIndex","prevIndex","coord","edgeIndex","Controller","speed","rewindSpeed","transition","easing","transform","x","y","fade","Fade","track","height","clientHeight","setTimeout","slides","compose","Transition","components","Component","toLowerCase","MESSAGE_PREFIX","message","console","exist","Error","ROOT","ELEMENT_CLASSES","slider","container","arrows","arrow","prev","pagination","page","clone","progress","bar","autoplay","play","pause","spinner","sr","STATUS_CLASSES","active","visible","loading","I18N","first","last","slideX","pageX","DEFAULTS","rewind","waitForTransition","fixedWidth","fixedHeight","heightRatio","autoWidth","autoHeight","perPage","perMove","clones","focus","gap","padding","arrowPath","interval","pauseOnHover","pauseOnFocus","resetProgress","lazyLoad","preloadPages","keyboard","drag","dragAngleThreshold","swipeDistanceThreshold","flickVelocityThreshold","flickPower","flickMaxPages","direction","cover","accessibility","slideFocus","isNavigation","trimSpace","updateOnMove","throttle","breakpoints","i18n","_defineProperties","props","descriptor","enumerable","configurable","writable","_createClass","Constructor","protoProps","staticProps","Element","State","STATES","_o","_i","_c","_e","_t","_proto","Extensions","component","required","undefined","mounted","visibility","sync","splide","sibling","_this$Event","concat","go","control","wait","add","refresh","bind","completely","_this2","reverse","parseInt","created","JSON","parse","RTL","TTB","STYLE_RESTORE_EVENTS","elements_slide","realIndex","STATUS_UPDATE_EVENTS","Slide","isClone","id","update","restoreStyles","_update","display","isActive","isVisible","ceil","trackRect","slideRect","top","bottom","left","right","isWithin","within","diff","abs","forVisibility","UID_NAME","components_elements","Slides","window","uid","init","getClasses","collect","register","SlideObject","getSlide","getSlides","includeClones","getSlidesByPage","idx","toIndex","findParts","rootClass","floor","controller","isLoop","silently","trim","Track","matches","String","match","indicator","parsePage","hasFocus","pageLength","toPage","edge","isRtl","newOptions","sign","Layout","isVertical","isFade","isRTL","isLoopPending","jump","newPosition","getTrimmedPosition","toCoord","onTransitionEnd","translate","cancel","shift","toPosition","innerSize","totalSize","size","minDistance","Infinity","slideIndex","distance","slideSize","offset","cloneCount","Clones","getCloneCount","generateClones","cloneDeeply","baseCount","dimension","fixedSize","cloneNode","horizontal","margin","resize","paddingLeft","paddingRight","totalWidth","listRect","slideWidth","offsetWidth","slideHeight","vertical","paddingTop","paddingBottom","totalHeight","offsetHeight","func","timeout","createInterval","elapse","rate","_window","requestAnimationFrame","_pause","step","timestamp","reset","layout","maxWidth","drag_abs","MIN_VELOCITY","FRICTION_REDUCER","startCoord","startInfo","currentInfo","isDragging","axis","Drag","disabled","move","passive","end","preventDefault","analyze","cancelable","resist","shouldMove","angle","atan","PI","_start","_end","log","info","velocity","absV","destination","timeStamp","touches","clientX","clientY","_ref3$x","fromX","_ref3$y","fromY","startTime","time","duration","click","Click","onClick","capture","stopPropagation","stopImmediatePropagation","PAUSE_FLAGS","HOVER","FOCUS","MANUAL","flags","Autoplay","flag","indexOf","switchOn","Cover","uncover","src","background","XML_NAME_SPACE","PATH","SIZE","Arrows","createArrow","appendArrows","updateDisabled","_Components$Controlle","nextIndex","isEnough","wrapper","firstElementChild","ATTRIBUTES_UPDATE_EVENT","UPDATE_EVENT","Pagination","createPagination","updateAttributes","getItem","items","button","li","SRC_DATA_NAME","SRCSET_DATA_NAME","lazyload","isSequential","Lazyload","srcset","loadNext","check","isNaN","image","load","ARIA_CURRENRT","ARIA_CONTROLS","ARIA_LABEL","ARIA_HIDDEN","TAB_INDEX","KEY_MAP","ltr","ArrowLeft","ArrowRight","Left","Right","rtl","ttb","ArrowUp","ArrowDown","Up","Down","a11y","allAttributes","A11y","updateSlide","initArrows","updateArrows","initPagination","updatePagination","initNavigation","updateNavigation","initAutoplay","controls","prevLabel","nextLabel","activeItem","text","label","join","isButton","main","mainSlide","SYNC_EVENT","CLICK_EVENTS","TRIGGER_KEYS","Sync","syncMain","syncSibling","moveSibling","THROTTLE","initialOptions","prevPoint","throttledCheck","Breakpoints","matchMedia","sort","m","point","mql","getPoint","COMPLETE","Options","LazyLoad","Keyboard","_inheritsLoose","subClass","superClass","__proto__","_Core","__webpack_module_cache__","moduleId","definition","toStringTag","render","_vm","_self","staticClass","hasSliderWrapper","staticRenderFns","EVENTS","default","Boolean","extensions","Function","$el","beforeDestroy","watch","remount","computed","methods","$emit","$nextTick","Vue","SplideSlide","_arrayLikeToArray","dataUrl","includes","class","imageClass","staticStyle","_b","imageStyle","placeholderImage","$attrs","alt","inheritAttrs","placeholder","placeHolderType","_this$$attrs","w","canvas","toDataURL","require","timeOut","observer","IntersectionObserver","entry","isIntersecting","disconnect","observe","$once","clearTimeout","beforeMount","beforeCreate"],"mappings":"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","file":"js/chunk-08812b54.11e347be.js","sourcesContent":["import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","/*=========================================================================================\r\n File Name: moduleActivityState.js\r\n Description: Activity Module State\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n\r\nexport default {\r\n countries: [],\r\n topDestinations: [],\r\n doctorCountries: [],\r\n hospitals: [],\r\n hospitalCountries:[]\r\n};\r\n","/*=========================================================================================\r\n File Name: moduleCountryMutations.js\r\n Description: Country Module Mutations\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n \r\nexport default {\r\n ADD_ITEM(state, item) {\r\n state.countries.unshift(item);\r\n },\r\n SET_Country(state, countries) {\r\n state.countries = countries;\r\n },\r\n SET_DoctorCountry(state, doctorCountries) {\r\n state.doctorCountries = doctorCountries;\r\n },\r\n \r\n SET_HospitalCountry(state, doctorCountries) {\r\n state.hospitalCountries = doctorCountries;\r\n },\r\n SET_TopDestinations(state, topDestinations) {\r\n state.topDestinations = topDestinations;\r\n },\r\n SET_Hospitals(state, hospitals) {\r\n state.hospitals = hospitals;\r\n },\r\n UPDATE_Country(state, Country) {\r\n const CountryIndex = state.countries.findIndex(p => p.ID == Country.ID);\r\n Object.assign(state.countries[CountryIndex], Country);\r\n },\r\n REMOVE_ITEM(state, itemId) {\r\n const ItemIndex = state.countries.findIndex(p => p.ID == itemId);\r\n state.countries.splice(ItemIndex, 1);\r\n }\r\n};\r\n","/*=========================================================================================\r\n File Name: moduleCountryActions.js\r\n Description: Country Module Actions\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n\r\nimport axios from \"@/axios.js\";\r\n\r\nexport default {\r\n AddCountry({ commit }, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"api/Country/AddCountry\", item)\r\n .then(response => {\r\n commit(\r\n \"ADD_ITEM\",\r\n Object.assign(item, { ID: response.data.Data.ID })\r\n );\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n GetAllCountries({ commit }) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\"api/Country/GetAllCountries\")\r\n .then(response => {\r\n commit(\"SET_Country\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetAllAppointmentCountries({ commit },model) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"api/Country/GetAllAppointmentCountries\",model)\r\n .then(response => {\r\n commit(\"SET_Country\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetAllAppointmentSurgeryCountries({ commit },model) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"api/Country/GetAllAppointmentSurgeryCountries\",model)\r\n .then(response => {\r\n commit(\"SET_Country\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetAlMedicalPackagesCountries({ commit },model) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"api/Country/GetAlMedicalPackagesCountries\",model)\r\n .then(response => {\r\n commit(\"SET_Country\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n GetAllDoctorCountries({ commit }) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\"api/Country/GetAllDoctorCountries\")\r\n .then(response => {\r\n commit(\"SET_Country\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n \r\n GetAllHospitalSurgeryCountries({ commit }) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\"api/Country/GetAllHospitalSurgeryCountries\")\r\n .then(response => {\r\n commit(\"SET_Country\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n getCountries() {\r\n fetch('https://extreme-ip-lookup.com/json/').then(res => res.json())\r\n .then(response => {\r\n this.patientModel.NameEN == response.country;\r\n })\r\n },\r\n\r\n GetDoctorCountry({ commit }) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"api/Country/SearchCountries\", { \"IsAvailableToDoctors\": true })\r\n .then(response => {\r\n commit(\"SET_DoctorCountry\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n GetAllHospitalCountries({ commit }) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(\"api/Country/GetAllHospitalCountries\")\r\n .then(response => {\r\n commit(\"SET_HospitalCountry\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n \r\n GetTopDestinations({ commit }) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"api/Country/SearchCountries\", { \"IsTopDestinations\": true })\r\n .then(response => {\r\n commit(\"SET_TopDestinations\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n UpdateCountry({ commit }, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"api/Country/UpdateCountry\", item)\r\n .then(response => {\r\n commit(\"UPDATE_Country\", item);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n GetCountry({ commit }, itemid) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"api/Country/GetCountry\", itemid)\r\n .then(response => {\r\n commit(\"UPDATE_Country\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n DeleteCountry({ commit }, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .delete(\"api/Country/DeleteCountry?ID=\" + item.ID)\r\n .then(response => {\r\n commit(\"REMOVE_ITEM\", item.ID);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n SearchHospitals({ commit }, item) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\"/API/Hospital/SearchHospitals\", item)\r\n .then(response => {\r\n commit(\"SET_Hospitals\", response.data.Data);\r\n resolve(response);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n};","/*=========================================================================================\r\n File Name: moduleCategoryAssessmentGetters.js\r\n Description: CategoryAssessment Module Getters\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n\r\n\r\nexport default {\r\n \r\n}\r\n","/*=========================================================================================\r\n File Name: moduleCountry.js\r\n Description: Country Module\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n\r\n\r\nimport state from './moduleCountryState.js'\r\nimport mutations from './moduleCountryMutations.js'\r\nimport actions from './moduleCountryActions.js'\r\nimport getters from './moduleCountryGetters.js'\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n state: state,\r\n mutations: mutations,\r\n actions: actions,\r\n getters: getters\r\n}\r\n","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","/*!\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 = \"