{"version":3,"file":"6824.js?v=afb2868336765e085274","mappings":"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","sources":["webpack://RdoWeb/./node_modules/@splidejs/vue-splide/node_modules/@splidejs/splide/dist/js/splide.esm.js","webpack://RdoWeb/./node_modules/@splidejs/vue-splide/src/js/components/Splide.vue?2d75","webpack://RdoWeb/./node_modules/@splidejs/vue-splide/src/js/constants/events.js","webpack://RdoWeb/./node_modules/@splidejs/vue-splide/src/js/components/Splide.vue?971a","webpack://RdoWeb/node_modules/@splidejs/vue-splide/src/js/components/Splide.vue","webpack://RdoWeb/./node_modules/@splidejs/vue-splide/src/js/components/Splide.vue","webpack://RdoWeb/./node_modules/@splidejs/vue-splide/src/js/components/SplideSlide.vue?eff8","webpack://RdoWeb/node_modules/@splidejs/vue-splide/src/js/components/SplideSlide.vue","webpack://RdoWeb/./node_modules/@splidejs/vue-splide/src/js/components/SplideSlide.vue?196a","webpack://RdoWeb/./node_modules/@splidejs/vue-splide/src/js/components/SplideSlide.vue","webpack://RdoWeb/./node_modules/vue-loader/lib/runtime/componentNormalizer.js"],"sourcesContent":["/*!\n * Splide.js\n * Version : 2.4.20\n * License : MIT\n * Copyright: 2020 Naotoshi Fujita\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Splide\"] = factory();\n\telse\n\t\troot[\"Splide\"] = factory();\n})(self, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 311:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": () => /* binding */ module_Splide\n});\n\n// NAMESPACE OBJECT: ./src/js/constants/states.js\nvar states_namespaceObject = {};\n__webpack_require__.r(states_namespaceObject);\n__webpack_require__.d(states_namespaceObject, {\n \"CREATED\": () => CREATED,\n \"DESTROYED\": () => DESTROYED,\n \"IDLE\": () => IDLE,\n \"MOUNTED\": () => MOUNTED,\n \"MOVING\": () => MOVING\n});\n\n;// CONCATENATED MODULE: ./src/js/core/event.js\n/**\r\n * The function for providing an Event object simply managing events.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * The function for providing an Event object simply managing events.\r\n */\n/* harmony default export */ const core_event = (function () {\n /**\r\n * Store all event data.\r\n *\r\n * @type {Array}\r\n */\n var data = [];\n var Event = {\n /**\r\n * Subscribe the given event(s).\r\n *\r\n * @param {string} events - An event name. Use space to separate multiple events.\r\n * Also, namespace is accepted by dot, such as 'resize.{namespace}'.\r\n * @param {function} handler - A callback function.\r\n * @param {Element} elm - Optional. Native event will be listened to when this arg is provided.\r\n * @param {Object} options - Optional. Options for addEventListener.\r\n */\n on: function on(events, handler, elm, options) {\n if (elm === void 0) {\n elm = null;\n }\n\n if (options === void 0) {\n options = {};\n }\n\n events.split(' ').forEach(function (event) {\n if (elm) {\n elm.addEventListener(event, handler, options);\n }\n\n data.push({\n event: event,\n handler: handler,\n elm: elm,\n options: options\n });\n });\n },\n\n /**\r\n * Unsubscribe the given event(s).\r\n *\r\n * @param {string} events - A event name or names split by space.\r\n * @param {Element} elm - Optional. removeEventListener() will be called when this arg is provided.\r\n */\n off: function off(events, elm) {\n if (elm === void 0) {\n elm = null;\n }\n\n events.split(' ').forEach(function (event) {\n data = data.filter(function (item) {\n if (item && item.event === event && item.elm === elm) {\n unsubscribe(item);\n return false;\n }\n\n return true;\n });\n });\n },\n\n /**\r\n * Emit an event.\r\n * This method is only for custom events.\r\n *\r\n * @param {string} event - An event name.\r\n * @param {*} args - Any number of arguments passed to handlers.\r\n */\n emit: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n data.forEach(function (item) {\n if (!item.elm && item.event.split('.')[0] === event) {\n item.handler.apply(item, args);\n }\n });\n },\n\n /**\r\n * Clear event data.\r\n */\n destroy: function destroy() {\n data.forEach(unsubscribe);\n data = [];\n }\n };\n /**\r\n * Remove the registered event listener.\r\n *\r\n * @param {Object} item - An object containing event data.\r\n */\n\n function unsubscribe(item) {\n if (item.elm) {\n item.elm.removeEventListener(item.event, item.handler, item.options);\n }\n }\n\n return Event;\n});\n;// CONCATENATED MODULE: ./src/js/core/state.js\n/**\r\n * The function providing a super simple state system.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * The function providing a super simple state system.\r\n *\r\n * @param {string|number} initialState - Provide the initial state value.\r\n */\n/* harmony default export */ const state = (function (initialState) {\n /**\r\n * Store the current state.\r\n *\r\n * @type {string|number}\r\n */\n var curr = initialState;\n return {\n /**\r\n * Change state.\r\n *\r\n * @param {string|number} state - A new state.\r\n */\n set: function set(state) {\n curr = state;\n },\n\n /**\r\n * Verify if the current state is given one or not.\r\n *\r\n * @param {string|number} state - A state name to be verified.\r\n *\r\n * @return {boolean} - True if the current state is the given one.\r\n */\n is: function is(state) {\n return state === curr;\n }\n };\n});\n;// CONCATENATED MODULE: ./src/js/utils/object.js\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/**\r\n * Some utility functions related with Object, supporting IE.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\nvar keys = Object.keys;\n/**\r\n * Iterate an object like Array.forEach.\r\n * IE doesn't support forEach of HTMLCollection.\r\n *\r\n * @param {Object} obj - An object.\r\n * @param {function} callback - A function handling each value. Arguments are value, property and index.\r\n */\n\nfunction each(obj, callback) {\n keys(obj).some(function (key, index) {\n return callback(obj[key], key, index);\n });\n}\n/**\r\n * Return values of the given object as an array.\r\n * IE doesn't support Object.values.\r\n *\r\n * @param {Object} obj - An object.\r\n *\r\n * @return {Array} - An array containing all values of the given object.\r\n */\n\nfunction values(obj) {\n return keys(obj).map(function (key) {\n return obj[key];\n });\n}\n/**\r\n * Check if the given subject is object or not.\r\n *\r\n * @param {*} subject - A subject to be verified.\r\n *\r\n * @return {boolean} - True if object, false otherwise.\r\n */\n\nfunction isObject(subject) {\n return typeof subject === 'object';\n}\n/**\r\n * Merge two objects deeply.\r\n *\r\n * @param {Object} to - An object where \"from\" is merged.\r\n * @param {Object} from - An object merged to \"to\".\r\n *\r\n * @return {Object} - A merged object.\r\n */\n\nfunction merge(_ref, from) {\n var to = _extends({}, _ref);\n\n each(from, function (value, key) {\n if (isObject(value)) {\n if (!isObject(to[key])) {\n to[key] = {};\n }\n\n to[key] = merge(to[key], value);\n } else {\n to[key] = value;\n }\n });\n return to;\n}\n/**\r\n * Assign all properties \"from\" to \"to\" object.\r\n *\r\n * @param {Object} to - An object where properties are assigned.\r\n * @param {Object} from - An object whose properties are assigned to \"to\".\r\n *\r\n * @return {Object} - An assigned object.\r\n */\n\nfunction object_assign(to, from) {\n keys(from).forEach(function (key) {\n if (!to[key]) {\n Object.defineProperty(to, key, Object.getOwnPropertyDescriptor(from, key));\n }\n });\n return to;\n}\n;// CONCATENATED MODULE: ./src/js/utils/utils.js\n/**\r\n * A package of some miscellaneous utility functions.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Convert the given value to array.\r\n *\r\n * @param {*} value - Any value.\r\n *\r\n * @return {*[]} - Array containing the given value.\r\n */\n\nfunction toArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n/**\r\n * Check if the given value is between min and max.\r\n * Min will be returned when the value is less than min or max will do when greater than max.\r\n *\r\n * @param {number} value - A number to be checked.\r\n * @param {number} m1 - Minimum or maximum number.\r\n * @param {number} m2 - Maximum or minimum number.\r\n *\r\n * @return {number} - A value itself, min or max.\r\n */\n\nfunction between(value, m1, m2) {\n return Math.min(Math.max(value, m1 > m2 ? m2 : m1), m1 > m2 ? m1 : m2);\n}\n/**\r\n * The sprintf method with minimum functionality.\r\n *\r\n * @param {string} format - The string format.\r\n * @param {string|Array} replacements - Replacements accepting multiple arguments.\r\n *\r\n * @returns {string} - Converted string.\r\n */\n\nfunction sprintf(format, replacements) {\n var i = 0;\n return format.replace(/%s/g, function () {\n return toArray(replacements)[i++];\n });\n}\n/**\r\n * Append px unit to the given subject if necessary.\r\n *\r\n * @param {number|string} value - A value that may not include an unit.\r\n *\r\n * @return {string} - If the value is string, return itself.\r\n * If number, do value + \"px\". An empty string, otherwise.\r\n */\n\nfunction unit(value) {\n var type = typeof value;\n\n if (type === 'number' && value > 0) {\n return parseFloat(value) + 'px';\n }\n\n return type === 'string' ? value : '';\n}\n/**\r\n * Pad start with 0.\r\n *\r\n * @param {number} number - A number to be filled with 0.\r\n *\r\n * @return {string|number} - Padded number.\r\n */\n\nfunction pad(number) {\n return number < 10 ? '0' + number : number;\n}\n/**\r\n * Convert the given value to pixel.\r\n *\r\n * @param {Element} root - Root element where a dummy div is appended.\r\n * @param {string|number} value - CSS value to be converted, such as 10rem.\r\n *\r\n * @return {number} - Pixel.\r\n */\n\nfunction toPixel(root, value) {\n if (typeof value === 'string') {\n var div = create('div', {});\n applyStyle(div, {\n position: 'absolute',\n width: value\n });\n append(root, div);\n value = div.clientWidth;\n dom_remove(div);\n }\n\n return +value || 0;\n}\n;// CONCATENATED MODULE: ./src/js/utils/dom.js\n/**\r\n * Some utility functions related with DOM.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n/**\r\n * Find the first element matching the given selector.\r\n * Be aware that all selectors after a space are ignored.\r\n *\r\n * @param {Element|Node} elm - An ancestor element.\r\n * @param {string} selector - DOMString.\r\n *\r\n * @return {Element|null} - A found element or null.\r\n */\n\nfunction find(elm, selector) {\n return elm ? elm.querySelector(selector.split(' ')[0]) : null;\n}\n/**\r\n * Find a first child having the given tag or class name.\r\n *\r\n * @param {Element} parent - A parent element.\r\n * @param {string} tagOrClassName - A tag or class name.\r\n *\r\n * @return {Element|undefined} - A found element on success or undefined on failure.\r\n */\n\nfunction child(parent, tagOrClassName) {\n return children(parent, tagOrClassName)[0];\n}\n/**\r\n * Return chile elements that matches the provided tag or class name.\r\n *\r\n * @param {Element} parent - A parent element.\r\n * @param {string} tagOrClassName - A tag or class name.\r\n *\r\n * @return {Element[]} - Found elements.\r\n */\n\nfunction children(parent, tagOrClassName) {\n if (parent) {\n return values(parent.children).filter(function (child) {\n return hasClass(child, tagOrClassName.split(' ')[0]) || child.tagName === tagOrClassName;\n });\n }\n\n return [];\n}\n/**\r\n * Create an element with some optional attributes.\r\n *\r\n * @param {string} tag - A tag name.\r\n * @param {Object} attrs - An object any attribute pairs of name and value.\r\n *\r\n * @return {Element} - A created element.\r\n */\n\nfunction create(tag, attrs) {\n var elm = document.createElement(tag);\n each(attrs, function (value, key) {\n return setAttribute(elm, key, value);\n });\n return elm;\n}\n/**\r\n * Convert HTML string to DOM node.\r\n *\r\n * @param {string} html - HTML string.\r\n *\r\n * @return {Node} - A created node.\r\n */\n\nfunction domify(html) {\n var div = create('div', {});\n div.innerHTML = html;\n return div.firstChild;\n}\n/**\r\n * Remove a given element from a DOM tree.\r\n *\r\n * @param {Element|Element[]} elms - Element(s) to be removed.\r\n */\n\nfunction dom_remove(elms) {\n toArray(elms).forEach(function (elm) {\n if (elm) {\n var parent = elm.parentElement;\n parent && parent.removeChild(elm);\n }\n });\n}\n/**\r\n * Append a child to a given element.\r\n *\r\n * @param {Element} parent - A parent element.\r\n * @param {Element} child - An element to be appended.\r\n */\n\nfunction append(parent, child) {\n if (parent) {\n parent.appendChild(child);\n }\n}\n/**\r\n * Insert an element before the reference element.\r\n *\r\n * @param {Element|Node} ref - A reference element.\r\n * @param {Element} elm - An element to be inserted.\r\n */\n\nfunction before(elm, ref) {\n if (elm && ref) {\n var parent = ref.parentElement;\n parent && parent.insertBefore(elm, ref);\n }\n}\n/**\r\n * Apply styles to the given element.\r\n *\r\n * @param {Element} elm - An element where styles are applied.\r\n * @param {Object} styles - Object containing styles.\r\n */\n\nfunction applyStyle(elm, styles) {\n if (elm) {\n each(styles, function (value, prop) {\n if (value !== null) {\n elm.style[prop] = value;\n }\n });\n }\n}\n/**\r\n * Add or remove classes to/from the element.\r\n * This function is for internal usage.\r\n *\r\n * @param {Element} elm - An element where classes are added.\r\n * @param {string|string[]} classes - Class names being added.\r\n * @param {boolean} remove - Whether to remove or add classes.\r\n */\n\nfunction addOrRemoveClasses(elm, classes, remove) {\n if (elm) {\n toArray(classes).forEach(function (name) {\n if (name) {\n elm.classList[remove ? 'remove' : 'add'](name);\n }\n });\n }\n}\n/**\r\n * Add classes to the element.\r\n *\r\n * @param {Element} elm - An element where classes are added.\r\n * @param {string|string[]} classes - Class names being added.\r\n */\n\n\nfunction addClass(elm, classes) {\n addOrRemoveClasses(elm, classes, false);\n}\n/**\r\n * Remove a class from the element.\r\n *\r\n * @param {Element} elm - An element where classes are removed.\r\n * @param {string|string[]} classes - A class name being removed.\r\n */\n\nfunction removeClass(elm, classes) {\n addOrRemoveClasses(elm, classes, true);\n}\n/**\r\n * Verify if the provided element has the class or not.\r\n *\r\n * @param {Element} elm - An element.\r\n * @param {string} className - A class name.\r\n *\r\n * @return {boolean} - True if the element has the class or false if not.\r\n */\n\nfunction hasClass(elm, className) {\n return !!elm && elm.classList.contains(className);\n}\n/**\r\n * Set attribute to the given element.\r\n *\r\n * @param {Element} elm - An element where an attribute is assigned.\r\n * @param {string} name - Attribute name.\r\n * @param {string|number|boolean} value - Attribute value.\r\n */\n\nfunction setAttribute(elm, name, value) {\n if (elm) {\n elm.setAttribute(name, value);\n }\n}\n/**\r\n * Get attribute from the given element.\r\n *\r\n * @param {Element} elm - An element where an attribute is assigned.\r\n * @param {string} name - Attribute name.\r\n *\r\n * @return {string} - The value of the given attribute if available. An empty string if not.\r\n */\n\nfunction getAttribute(elm, name) {\n return elm ? elm.getAttribute(name) : '';\n}\n/**\r\n * Remove attribute from the given element.\r\n *\r\n * @param {Element|Element[]} elms - An element where an attribute is removed.\r\n * @param {string|string[]} names - Attribute name.\r\n */\n\nfunction removeAttribute(elms, names) {\n toArray(names).forEach(function (name) {\n toArray(elms).forEach(function (elm) {\n return elm && elm.removeAttribute(name);\n });\n });\n}\n/**\r\n * Return the Rect object of the provided object.\r\n *\r\n * @param {Element} elm - An element.\r\n *\r\n * @return {ClientRect|DOMRect} - A rect object.\r\n */\n\nfunction getRect(elm) {\n return elm.getBoundingClientRect();\n}\n/**\r\n * Trigger the given callback after all images contained by the element are loaded.\r\n *\r\n * @param {Element} elm - Element that may contain images.\r\n * @param {Function} callback - Callback function fired right after all images are loaded.\r\n */\n\nfunction loaded(elm, callback) {\n var images = elm.querySelectorAll('img');\n var length = images.length;\n\n if (length) {\n var count = 0;\n each(images, function (img) {\n img.onload = img.onerror = function () {\n if (++count === length) {\n callback();\n }\n };\n });\n } else {\n // Trigger the callback immediately if there is no image.\n callback();\n }\n}\n;// CONCATENATED MODULE: ./src/js/constants/types.js\n/**\r\n * Export slider types.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Normal slider.\r\n *\r\n * @type {string}\r\n */\nvar SLIDE = 'slide';\n/**\r\n * Loop after the last slide and before the first one.\r\n *\r\n * @type {string}\r\n */\n\nvar LOOP = 'loop';\n/**\r\n * The track doesn't move.\r\n *\r\n * @type {string}\r\n */\n\nvar FADE = 'fade';\n;// CONCATENATED MODULE: ./src/js/transitions/slide/index.js\n/**\r\n * The component for general slide effect transition.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n/**\r\n * The component for general slide effect transition.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const slide = (function (Splide, Components) {\n /**\r\n * Hold the list element.\r\n *\r\n * @type {Element}\r\n */\n var list;\n /**\r\n * Hold the onEnd callback function.\r\n *\r\n * @type {function}\r\n */\n\n var endCallback;\n return {\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n list = Components.Elements.list;\n Splide.on('transitionend', function (e) {\n if (e.target === list && endCallback) {\n endCallback();\n }\n }, list);\n },\n\n /**\r\n * Start transition.\r\n *\r\n * @param {number} destIndex - Destination slide index that might be clone's.\r\n * @param {number} newIndex - New index.\r\n * @param {number} prevIndex - Previous index.\r\n * @param {Object} coord - Destination coordinates.\r\n * @param {function} done - Callback function must be invoked when transition is completed.\r\n */\n start: function start(destIndex, newIndex, prevIndex, coord, done) {\n var options = Splide.options;\n var edgeIndex = Components.Controller.edgeIndex;\n var speed = options.speed;\n endCallback = done;\n\n if (Splide.is(SLIDE)) {\n if (prevIndex === 0 && newIndex >= edgeIndex || prevIndex >= edgeIndex && newIndex === 0) {\n speed = options.rewindSpeed || speed;\n }\n }\n\n applyStyle(list, {\n transition: \"transform \" + speed + \"ms \" + options.easing,\n transform: \"translate(\" + coord.x + \"px,\" + coord.y + \"px)\"\n });\n }\n };\n});\n;// CONCATENATED MODULE: ./src/js/transitions/fade/index.js\n/**\r\n * The component for fade transition.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n/**\r\n * The component for fade transition.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const fade = (function (Splide, Components) {\n var Fade = {\n /**\r\n * Called when the component is mounted.\r\n * Apply transition style to the first slide.\r\n */\n mount: function mount() {\n apply(Splide.index);\n },\n\n /**\r\n * Start transition.\r\n *\r\n * @param {number} destIndex - Destination slide index that might be clone's.\r\n * @param {number} newIndex - New index.\r\n * @param {number} prevIndex - Previous index.\r\n * @param {Object} coord - Destination coordinates.\r\n * @param {function} done - Callback function must be invoked when transition is completed.\r\n */\n start: function start(destIndex, newIndex, prevIndex, coord, done) {\n var track = Components.Elements.track;\n applyStyle(track, {\n height: unit(track.clientHeight)\n });\n apply(newIndex);\n setTimeout(function () {\n done();\n applyStyle(track, {\n height: ''\n });\n });\n }\n };\n /**\r\n * Apply transition style to the slide specified by the given index.\r\n *\r\n * @param {number} index - A slide index.\r\n */\n\n function apply(index) {\n var options = Splide.options;\n applyStyle(Components.Elements.slides[index], {\n transition: \"opacity \" + options.speed + \"ms \" + options.easing\n });\n }\n\n return Fade;\n});\n;// CONCATENATED MODULE: ./src/js/transitions/index.js\n/**\r\n * Export transition components.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n;// CONCATENATED MODULE: ./src/js/core/composer.js\n/**\r\n * Provide a function for composing components.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n/**\r\n * Compose components.\r\n *\r\n * @param {Splide} Splide - Splide instance.\r\n * @param {Object} Components - Additional components.\r\n * @param {function} Transition - Change component for transition.\r\n *\r\n * @return {Object} - An object containing all components.\r\n */\n\nfunction compose(Splide, Components, Transition) {\n var components = {};\n each(Components, function (Component, name) {\n components[name] = Component(Splide, components, name.toLowerCase());\n });\n\n if (!Transition) {\n Transition = Splide.is(FADE) ? fade : slide;\n }\n\n components.Transition = Transition(Splide, components);\n return components;\n}\n;// CONCATENATED MODULE: ./src/js/utils/error.js\n/**\r\n * Utility functions for outputting logs.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Prefix of an error massage.\r\n *\r\n * @type {string}\r\n */\nvar MESSAGE_PREFIX = '[SPLIDE]';\n/**\r\n * Display an error message on the browser console.\r\n *\r\n * @param {string} message - An error message.\r\n */\n\nfunction error(message) {\n console.error(MESSAGE_PREFIX + \" \" + message);\n}\n/**\r\n * Check existence of the given object and throw an error if it doesn't.\r\n *\r\n * @throws {Error}\r\n *\r\n * @param {*} subject - A subject to be confirmed.\r\n * @param {string} message - An error message.\r\n */\n\nfunction exist(subject, message) {\n if (!subject) {\n throw new Error(message);\n }\n}\n;// CONCATENATED MODULE: ./src/js/constants/classes.js\n/**\r\n * Export class names.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * A root class name.\r\n *\r\n * @type {string}\r\n */\nvar ROOT = 'splide';\n/**\r\n * The definition table of all classes for elements.\r\n * They might be modified by options.\r\n *\r\n * @type {Object}\r\n */\n\nvar ELEMENT_CLASSES = {\n root: ROOT,\n slider: ROOT + \"__slider\",\n track: ROOT + \"__track\",\n list: ROOT + \"__list\",\n slide: ROOT + \"__slide\",\n container: ROOT + \"__slide__container\",\n arrows: ROOT + \"__arrows\",\n arrow: ROOT + \"__arrow\",\n prev: ROOT + \"__arrow--prev\",\n next: ROOT + \"__arrow--next\",\n pagination: ROOT + \"__pagination\",\n page: ROOT + \"__pagination__page\",\n clone: ROOT + \"__slide--clone\",\n progress: ROOT + \"__progress\",\n bar: ROOT + \"__progress__bar\",\n autoplay: ROOT + \"__autoplay\",\n play: ROOT + \"__play\",\n pause: ROOT + \"__pause\",\n spinner: ROOT + \"__spinner\",\n sr: ROOT + \"__sr\"\n};\n/**\r\n * Definitions of status classes.\r\n *\r\n * @type {Object}\r\n */\n\nvar STATUS_CLASSES = {\n active: 'is-active',\n visible: 'is-visible',\n loading: 'is-loading'\n};\n;// CONCATENATED MODULE: ./src/js/constants/i18n.js\n/**\r\n * Export i18n texts as object.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Texts for i18n.\r\n *\r\n * @type {Object}\r\n */\nvar I18N = {\n prev: 'Previous slide',\n next: 'Next slide',\n first: 'Go to first slide',\n last: 'Go to last slide',\n slideX: 'Go to slide %s',\n pageX: 'Go to page %s',\n play: 'Start autoplay',\n pause: 'Pause autoplay'\n};\n;// CONCATENATED MODULE: ./src/js/constants/defaults.js\n/**\r\n * Export default options.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\nvar DEFAULTS = {\n /**\r\n * Determine a slider type.\r\n * - 'slide': Regular slider.\r\n * - 'loop' : Carousel slider.\r\n * - 'fade' : Change slides with fade transition. perPage, drag options are ignored.\r\n *\r\n * @type {string}\r\n */\n type: 'slide',\n\n /**\r\n * Whether to rewind a slider before the first slide or after the last one.\r\n * In \"loop\" mode, this option is ignored.\r\n *\r\n * @type {boolean}\r\n */\n rewind: false,\n\n /**\r\n * Transition speed in milliseconds.\r\n *\r\n * @type {number}\r\n */\n speed: 400,\n\n /**\r\n * Transition speed on rewind in milliseconds.\r\n *\r\n * @type {number}\r\n */\n rewindSpeed: 0,\n\n /**\r\n * Whether to prevent any actions while a slider is transitioning.\r\n * If false, navigation, drag and swipe work while the slider is running.\r\n * Even so, it will be forced to wait for transition in some cases in the loop mode to shift a slider.\r\n *\r\n * @type {boolean}\r\n */\n waitForTransition: true,\n\n /**\r\n * Define slider max width.\r\n *\r\n * @type {number}\r\n */\n width: 0,\n\n /**\r\n * Define slider height.\r\n *\r\n * @type {number}\r\n */\n height: 0,\n\n /**\r\n * Fix width of slides. CSS format is allowed such as 10em, 80% or 80vw.\r\n * perPage number will be ignored when this option is falsy.\r\n *\r\n * @type {number|string}\r\n */\n fixedWidth: 0,\n\n /**\r\n * Fix height of slides. CSS format is allowed such as 10em, 80vh but % unit is not accepted.\r\n * heightRatio option will be ignored when this option is falsy.\r\n *\r\n * @type {number|string}\r\n */\n fixedHeight: 0,\n\n /**\r\n * Determine height of slides by ratio to a slider width.\r\n * This will be ignored when the fixedHeight is provided.\r\n *\r\n * @type {number}\r\n */\n heightRatio: 0,\n\n /**\r\n * If true, slide width will be determined by the element width itself.\r\n * - perPage/perMove should be 1.\r\n *\r\n * @type {boolean}\r\n */\n autoWidth: false,\n\n /**\r\n * If true, slide height will be determined by the element width itself.\r\n * - perPage/perMove should be 1.\r\n *\r\n * @type {boolean}\r\n */\n autoHeight: false,\n\n /**\r\n * Determine how many slides should be displayed per page.\r\n *\r\n * @type {number}\r\n */\n perPage: 1,\n\n /**\r\n * Determine how many slides should be moved when a slider goes to next or perv.\r\n *\r\n * @type {number}\r\n */\n perMove: 0,\n\n /**\r\n * Determine manually how many clones should be generated on the left and right side.\r\n * The total number of clones will be twice of this number.\r\n *\r\n * @type {number}\r\n */\n clones: 0,\n\n /**\r\n * Start index.\r\n *\r\n * @type {number}\r\n */\n start: 0,\n\n /**\r\n * Determine which slide should be focused if there are multiple slides in a page.\r\n * A string \"center\" is acceptable for centering slides.\r\n *\r\n * @type {boolean|number|string}\r\n */\n focus: false,\n\n /**\r\n * Gap between slides. CSS format is allowed such as 1em.\r\n *\r\n * @type {number|string}\r\n */\n gap: 0,\n\n /**\r\n * Set padding-left/right in horizontal mode or padding-top/bottom in vertical one.\r\n * Give a single value to set a same size for both sides or\r\n * do an object for different sizes.\r\n * Also, CSS format is allowed such as 1em.\r\n *\r\n * @example\r\n * - 10: Number\r\n * - '1em': CSS format.\r\n * - { left: 0, right: 20 }: Object for different sizes in horizontal mode.\r\n * - { top: 0, bottom: 20 }: Object for different sizes in vertical mode.\r\n *\r\n * @type {number|string|Object}\r\n */\n padding: 0,\n\n /**\r\n * Whether to append arrows.\r\n *\r\n * @type {boolean}\r\n */\n arrows: true,\n\n /**\r\n * Change the arrow SVG path like 'm7.61 0.807-2.12...'.\r\n *\r\n * @type {string}\r\n */\n arrowPath: '',\n\n /**\r\n * Whether to append pagination(indicator dots) or not.\r\n *\r\n * @type {boolean}\r\n */\n pagination: true,\n\n /**\r\n * Activate autoplay.\r\n *\r\n * @type {boolean}\r\n */\n autoplay: false,\n\n /**\r\n * Autoplay interval in milliseconds.\r\n *\r\n * @type {number}\r\n */\n interval: 5000,\n\n /**\r\n * Whether to stop autoplay when a slider is hovered.\r\n *\r\n * @type {boolean}\r\n */\n pauseOnHover: true,\n\n /**\r\n * Whether to stop autoplay when a slider elements are focused.\r\n * True is recommended for accessibility.\r\n *\r\n * @type {boolean}\r\n */\n pauseOnFocus: true,\n\n /**\r\n * Whether to reset progress of the autoplay timer when resumed.\r\n *\r\n * @type {boolean}\r\n */\n resetProgress: true,\n\n /**\r\n * Loading images lazily.\r\n * Image src must be provided by a data-splide-lazy attribute.\r\n *\r\n * - false: Do nothing.\r\n * - 'nearby': Only images around an active slide will be loaded.\r\n * - 'sequential': All images will be sequentially loaded.\r\n *\r\n * @type {boolean|string}\r\n */\n lazyLoad: false,\n\n /**\r\n * This option works only when a lazyLoad option is \"nearby\".\r\n * Determine how many pages(not slides) around an active slide should be loaded beforehand.\r\n *\r\n * @type {number}\r\n */\n preloadPages: 1,\n\n /**\r\n * Easing for CSS transition. For example, linear, ease or cubic-bezier().\r\n *\r\n * @type {string}\r\n */\n easing: 'cubic-bezier(.42,.65,.27,.99)',\n\n /**\r\n * Whether to enable keyboard shortcuts\r\n * - true or 'global': Listen to keydown event of the document.\r\n * - 'focused': Listen to the keydown event of the slider root element. tabindex=\"0\" will be added to the element.\r\n * - false: Disable keyboard shortcuts.\r\n *\r\n * @type {boolean|string}\r\n */\n keyboard: 'global',\n\n /**\r\n * Whether to allow mouse drag and touch swipe.\r\n *\r\n * @type {boolean}\r\n */\n drag: true,\n\n /**\r\n * The angle threshold for drag.\r\n * The slider starts moving only when the drag angle is less than this threshold.\r\n *\r\n * @type {number}\r\n */\n dragAngleThreshold: 30,\n\n /**\r\n * Distance threshold for determining if the action is \"flick\" or \"swipe\".\r\n * When a drag distance is over this value, the action will be treated as \"swipe\", not \"flick\".\r\n *\r\n * @type {number}\r\n */\n swipeDistanceThreshold: 150,\n\n /**\r\n * Velocity threshold for determining if the action is \"flick\" or \"swipe\".\r\n * Around 0.5 is recommended.\r\n *\r\n * @type {number}\r\n */\n flickVelocityThreshold: .6,\n\n /**\r\n * Determine power of flick. The larger number this is, the farther a slider runs by flick.\r\n * Around 500 is recommended.\r\n *\r\n * @type {number}\r\n */\n flickPower: 600,\n\n /**\r\n * Limit a number of pages to move by flick.\r\n *\r\n * @type {number}\r\n */\n flickMaxPages: 1,\n\n /**\r\n * Slider direction.\r\n * - 'ltr': Left to right.\r\n * - 'rtl': Right to left.\r\n * - 'ttb': Top to bottom.\r\n *\r\n * @type {string}\r\n */\n direction: 'ltr',\n\n /**\r\n * Set img src to background-image of its parent element.\r\n * Images with various sizes can be displayed as same dimension without cropping work.\r\n * fixedHeight or heightRatio is required.\r\n *\r\n * @type {boolean}\r\n */\n cover: false,\n\n /**\r\n * Whether to enable accessibility(aria and screen reader texts) or not.\r\n *\r\n * @type {boolean}\r\n */\n accessibility: true,\n\n /**\r\n * Whether to add tabindex=\"0\" to visible slides or not.\r\n *\r\n * @type {boolean}\r\n */\n slideFocus: true,\n\n /**\r\n * Determine if a slider is navigation for another.\r\n * Use \"sync\" API to synchronize two sliders.\r\n *\r\n * @type {boolean}\r\n */\n isNavigation: false,\n\n /**\r\n * Whether to trim spaces before the fist slide or after the last one when \"focus\" is not 0.\r\n *\r\n * @type {boolean}\r\n */\n trimSpace: true,\n\n /**\r\n * The \"is-active\" class is added after transition as default.\r\n * If true, it will be added before move.\r\n *\r\n * @type {boolean}\r\n */\n updateOnMove: false,\n\n /**\r\n * Throttle duration in milliseconds for the resize event.\r\n *\r\n * @type {number}\r\n */\n throttle: 100,\n\n /**\r\n * Whether to destroy a slider or not.\r\n *\r\n * @type {boolean}\r\n */\n destroy: false,\n\n /**\r\n * Options for specific breakpoints.\r\n *\r\n * @example\r\n * {\r\n * 1000: {\r\n * perPage: 3,\r\n * gap: 20\r\n * },\r\n * 600: {\r\n * perPage: 1,\r\n * gap: 5,\r\n * }\r\n * }\r\n *\r\n * @type {boolean|Object}\r\n */\n breakpoints: false,\n\n /**\r\n * Collection of class names.\r\n *\r\n * @see ./classes.js\r\n *\r\n * @type {Object}\r\n */\n classes: ELEMENT_CLASSES,\n\n /**\r\n * Collection of i18n texts.\r\n *\r\n * @see ./i18n.js\r\n *\r\n * @type {Object}\r\n */\n i18n: I18N\n};\n;// CONCATENATED MODULE: ./src/js/constants/states.js\n/**\r\n * Export state constants.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Splide has been just created.\r\n *\r\n * @type {number}\r\n */\nvar CREATED = 1;\n/**\r\n * All components have been mounted and initialized.\r\n *\r\n * @type {number}\r\n */\n\nvar MOUNTED = 2;\n/**\r\n * Splide is ready for transition.\r\n *\r\n * @type {number}\r\n */\n\nvar IDLE = 3;\n/**\r\n * Splide is moving.\r\n *\r\n * @type {number}\r\n */\n\nvar MOVING = 4;\n/**\r\n * Splide is moving.\r\n *\r\n * @type {number}\r\n */\n\nvar DESTROYED = 5;\n;// CONCATENATED MODULE: ./src/js/splide.js\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\r\n * The main class for applying Splide to an element.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n\n\n\n\n\n/**\r\n * The main class for applying Splide to an element,\r\n * providing some APIs to control the behavior.\r\n */\n\nvar Splide = /*#__PURE__*/function () {\n /**\r\n * Splide constructor.\r\n *\r\n * @throws {Error} When the given root element or selector is invalid.\r\n *\r\n * @param {Element|string} root - A selector for a root element or an element itself.\r\n * @param {Object} options - Optional. Options to change default behaviour.\r\n * @param {Object} Components - Optional. Components.\r\n */\n function Splide(root, options, Components) {\n if (options === void 0) {\n options = {};\n }\n\n if (Components === void 0) {\n Components = {};\n }\n\n this.root = root instanceof Element ? root : document.querySelector(root);\n exist(this.root, 'An invalid element/selector was given.');\n this.Components = null;\n this.Event = core_event();\n this.State = state(CREATED);\n this.STATES = states_namespaceObject;\n this._o = merge(DEFAULTS, options);\n this._i = 0;\n this._c = Components;\n this._e = {}; // Extensions\n\n this._t = null; // Transition\n }\n /**\r\n * Compose and mount components.\r\n *\r\n * @param {Object} Extensions - Optional. Additional components.\r\n * @param {function} Transition - Optional. Set a custom transition component.\r\n *\r\n * @return {Splide|undefined} - This instance or undefined if an exception occurred.\r\n */\n\n\n var _proto = Splide.prototype;\n\n _proto.mount = function mount(Extensions, Transition) {\n var _this = this;\n\n if (Extensions === void 0) {\n Extensions = this._e;\n }\n\n if (Transition === void 0) {\n Transition = this._t;\n }\n\n // Reset the state.\n this.State.set(CREATED);\n this._e = Extensions;\n this._t = Transition;\n this.Components = compose(this, merge(this._c, Extensions), Transition);\n\n try {\n each(this.Components, function (component, key) {\n var required = component.required;\n\n if (required === undefined || required) {\n component.mount && component.mount();\n } else {\n delete _this.Components[key];\n }\n });\n } catch (e) {\n error(e.message);\n return;\n }\n\n var State = this.State;\n State.set(MOUNTED);\n each(this.Components, function (component) {\n component.mounted && component.mounted();\n });\n this.emit('mounted');\n State.set(IDLE);\n this.emit('ready');\n applyStyle(this.root, {\n visibility: 'visible'\n });\n this.on('move drag', function () {\n return State.set(MOVING);\n }).on('moved dragged', function () {\n return State.set(IDLE);\n });\n return this;\n }\n /**\r\n * Set sync target.\r\n *\r\n * @param {Splide} splide - A Splide instance.\r\n *\r\n * @return {Splide} - This instance.\r\n */\n ;\n\n _proto.sync = function sync(splide) {\n this.sibling = splide;\n return this;\n }\n /**\r\n * Register callback fired on the given event(s).\r\n *\r\n * @param {string} events - An event name. Use space to separate multiple events.\r\n * Also, namespace is accepted by dot, such as 'resize.{namespace}'.\r\n * @param {function} handler - A callback function.\r\n * @param {Element} elm - Optional. Native event will be listened to when this arg is provided.\r\n * @param {Object} options - Optional. Options for addEventListener.\r\n *\r\n * @return {Splide} - This instance.\r\n */\n ;\n\n _proto.on = function on(events, handler, elm, options) {\n if (elm === void 0) {\n elm = null;\n }\n\n if (options === void 0) {\n options = {};\n }\n\n this.Event.on(events, handler, elm, options);\n return this;\n }\n /**\r\n * Unsubscribe the given event.\r\n *\r\n * @param {string} events - A event name.\r\n * @param {Element} elm - Optional. removeEventListener() will be called when this arg is provided.\r\n *\r\n * @return {Splide} - This instance.\r\n */\n ;\n\n _proto.off = function off(events, elm) {\n if (elm === void 0) {\n elm = null;\n }\n\n this.Event.off(events, elm);\n return this;\n }\n /**\r\n * Emit an event.\r\n *\r\n * @param {string} event - An event name.\r\n * @param {*} args - Any number of arguments passed to handlers.\r\n */\n ;\n\n _proto.emit = function emit(event) {\n var _this$Event;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_this$Event = this.Event).emit.apply(_this$Event, [event].concat(args));\n\n return this;\n }\n /**\r\n * Go to the slide specified by the given control.\r\n *\r\n * @param {string|number} control - A control pattern.\r\n * @param {boolean} wait - Optional. Whether to wait for transition.\r\n */\n ;\n\n _proto.go = function go(control, wait) {\n if (wait === void 0) {\n wait = this.options.waitForTransition;\n }\n\n if (this.State.is(IDLE) || this.State.is(MOVING) && !wait) {\n this.Components.Controller.go(control, false);\n }\n\n return this;\n }\n /**\r\n * Verify whether the slider type is the given one or not.\r\n *\r\n * @param {string} type - A slider type.\r\n *\r\n * @return {boolean} - True if the slider type is the provided type or false if not.\r\n */\n ;\n\n _proto.is = function is(type) {\n return type === this._o.type;\n }\n /**\r\n * Insert a slide.\r\n *\r\n * @param {Element|string} slide - A slide element to be added.\r\n * @param {number} index - A slide will be added at the position.\r\n */\n ;\n\n _proto.add = function add(slide, index) {\n if (index === void 0) {\n index = -1;\n }\n\n this.Components.Elements.add(slide, index, this.refresh.bind(this));\n return this;\n }\n /**\r\n * Remove the slide designated by the index.\r\n *\r\n * @param {number} index - A slide index.\r\n */\n ;\n\n _proto.remove = function remove(index) {\n this.Components.Elements.remove(index);\n this.refresh();\n return this;\n }\n /**\r\n * Destroy all Slide objects and clones and recreate them again.\r\n */\n ;\n\n _proto.refresh = function refresh() {\n this.emit('refresh:before').emit('refresh').emit('resize');\n return this;\n }\n /**\r\n * Destroy the Splide.\r\n * \"Completely\" boolean is mainly for breakpoints.\r\n *\r\n * @param {boolean} completely - Destroy completely.\r\n */\n ;\n\n _proto.destroy = function destroy(completely) {\n var _this2 = this;\n\n if (completely === void 0) {\n completely = true;\n }\n\n // Postpone destroy because it should be done after mount.\n if (this.State.is(CREATED)) {\n this.on('ready', function () {\n return _this2.destroy(completely);\n });\n return;\n }\n\n values(this.Components).reverse().forEach(function (component) {\n component.destroy && component.destroy(completely);\n });\n this.emit('destroy', completely); // Destroy all event handlers, including ones for native events.\n\n this.Event.destroy();\n this.State.set(DESTROYED);\n return this;\n }\n /**\r\n * Return the current slide index.\r\n *\r\n * @return {number} - The current slide index.\r\n // */\n ;\n\n _createClass(Splide, [{\n key: \"index\",\n get: function get() {\n return this._i;\n }\n /**\r\n * Set the current slide index.\r\n *\r\n * @param {number|string} index - A new index.\r\n */\n ,\n set: function set(index) {\n this._i = parseInt(index);\n }\n /**\r\n * Return length of slides.\r\n * This is an alias of Elements.length.\r\n *\r\n * @return {number} - A number of slides.\r\n */\n\n }, {\n key: \"length\",\n get: function get() {\n return this.Components.Elements.length;\n }\n /**\r\n * Return options.\r\n *\r\n * @return {Object} - Options object.\r\n */\n\n }, {\n key: \"options\",\n get: function get() {\n return this._o;\n }\n /**\r\n * Set options with merging the given object to the current one.\r\n *\r\n * @param {Object} options - New options.\r\n */\n ,\n set: function set(options) {\n var created = this.State.is(CREATED);\n\n if (!created) {\n this.emit('update');\n }\n\n this._o = merge(this._o, options);\n\n if (!created) {\n this.emit('updated', this._o);\n }\n }\n /**\r\n * Return the class list.\r\n * This is an alias of Splide.options.classList.\r\n *\r\n * @return {Object} - An object containing all class list.\r\n */\n\n }, {\n key: \"classes\",\n get: function get() {\n return this._o.classes;\n }\n /**\r\n * Return the i18n strings.\r\n * This is an alias of Splide.options.i18n.\r\n *\r\n * @return {Object} - An object containing all i18n strings.\r\n */\n\n }, {\n key: \"i18n\",\n get: function get() {\n return this._o.i18n;\n }\n }]);\n\n return Splide;\n}();\n\n\n;// CONCATENATED MODULE: ./src/js/components/options/index.js\n/**\r\n * The component for initializing options.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n/**\r\n * The component for initializing options.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const options = (function (Splide) {\n /**\r\n * Retrieve options from the data attribute.\r\n * Note that IE10 doesn't support dataset property.\r\n *\r\n * @type {string}\r\n */\n var options = getAttribute(Splide.root, 'data-splide');\n\n if (options) {\n try {\n Splide.options = JSON.parse(options);\n } catch (e) {\n error(e.message);\n }\n }\n\n return {\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n if (Splide.State.is(CREATED)) {\n Splide.index = Splide.options.start;\n }\n }\n };\n});\n;// CONCATENATED MODULE: ./src/js/constants/directions.js\n/**\r\n * Export layout modes.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Enumerate slides from left to right.\r\n *\r\n * @type {string}\r\n */\nvar LTR = 'ltr';\n/**\r\n * Enumerate slides from right to left.\r\n *\r\n * @type {string}\r\n */\n\nvar RTL = 'rtl';\n/**\r\n * Enumerate slides in a col.\r\n *\r\n * @type {string}\r\n */\n\nvar TTB = 'ttb';\n;// CONCATENATED MODULE: ./src/js/components/elements/slide.js\n/**\r\n * The sub component for handling each slide.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n\n\n\n/**\r\n * Events for restoring original styles.\r\n *\r\n * @type {string}\r\n */\n\nvar STYLE_RESTORE_EVENTS = 'update.slide';\n/**\r\n * The sub component for handling each slide.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {number} index - An unique slide index.\r\n * @param {number} realIndex - Clones should pass a real slide index.\r\n * @param {Element} slide - A slide element.\r\n *\r\n * @return {Object} - The sub component object.\r\n */\n\n/* harmony default export */ const elements_slide = (function (Splide, index, realIndex, slide) {\n /**\r\n * Whether to update \"is-active\" class before or after transition.\r\n *\r\n * @type {boolean}\r\n */\n var updateOnMove = Splide.options.updateOnMove;\n /**\r\n * Events when the slide status is updated.\r\n * Append a namespace to remove listeners later.\r\n *\r\n * @type {string}\r\n */\n\n var STATUS_UPDATE_EVENTS = 'ready.slide updated.slide resized.slide moved.slide' + (updateOnMove ? ' move.slide' : '');\n /**\r\n * Slide sub component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Slide = {\n /**\r\n * Slide element.\r\n *\r\n * @type {Element}\r\n */\n slide: slide,\n\n /**\r\n * Slide index.\r\n *\r\n * @type {number}\r\n */\n index: index,\n\n /**\r\n * Real index for clones.\r\n *\r\n * @type {number}\r\n */\n realIndex: realIndex,\n\n /**\r\n * Container element if available.\r\n *\r\n * @type {Element|undefined}\r\n */\n container: child(slide, Splide.classes.container),\n\n /**\r\n * Whether this is a cloned slide or not.\r\n *\r\n * @type {boolean}\r\n */\n isClone: realIndex > -1,\n\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n var _this = this;\n\n if (!this.isClone) {\n slide.id = Splide.root.id + \"-slide\" + pad(index + 1);\n }\n\n Splide.on(STATUS_UPDATE_EVENTS, function () {\n return _this.update();\n }).on(STYLE_RESTORE_EVENTS, restoreStyles).on('click', function () {\n return Splide.emit('click', _this);\n }, slide);\n /*\r\n * Add \"is-active\" class to a clone element temporarily\r\n * and it will be removed on \"moved\" event.\r\n */\n\n if (updateOnMove) {\n Splide.on('move.slide', function (newIndex) {\n if (newIndex === realIndex) {\n _update(true, false);\n }\n });\n } // Make sure the slide is shown.\n\n\n applyStyle(slide, {\n display: ''\n }); // Hold the original styles.\n\n this.styles = getAttribute(slide, 'style') || '';\n },\n\n /**\r\n * Destroy.\r\n */\n destroy: function destroy() {\n Splide.off(STATUS_UPDATE_EVENTS).off(STYLE_RESTORE_EVENTS).off('click', slide);\n removeClass(slide, values(STATUS_CLASSES));\n restoreStyles();\n removeAttribute(this.container, 'style');\n },\n\n /**\r\n * Update active and visible status.\r\n */\n update: function update() {\n _update(this.isActive(), false);\n\n _update(this.isVisible(), true);\n },\n\n /**\r\n * Check whether this slide is active or not.\r\n *\r\n * @return {boolean} - True if the slide is active or false if not.\r\n */\n isActive: function isActive() {\n return Splide.index === index;\n },\n\n /**\r\n * Check whether this slide is visible in the viewport or not.\r\n *\r\n * @return {boolean} - True if the slide is visible or false if not.\r\n */\n isVisible: function isVisible() {\n var active = this.isActive();\n\n if (Splide.is(FADE) || active) {\n return active;\n }\n\n var ceil = Math.ceil;\n var trackRect = getRect(Splide.Components.Elements.track);\n var slideRect = getRect(slide);\n\n if (Splide.options.direction === TTB) {\n return trackRect.top <= slideRect.top && slideRect.bottom <= ceil(trackRect.bottom);\n }\n\n return trackRect.left <= slideRect.left && slideRect.right <= ceil(trackRect.right);\n },\n\n /**\r\n * Calculate how far this slide is from another slide and\r\n * return true if the distance is within the given number.\r\n *\r\n * @param {number} from - Index of a target slide.\r\n * @param {number} within - True if the slide is within this number.\r\n *\r\n * @return {boolean} - True if the slide is within the number or false otherwise.\r\n */\n isWithin: function isWithin(from, within) {\n var diff = Math.abs(from - index);\n\n if (!Splide.is(SLIDE) && !this.isClone) {\n diff = Math.min(diff, Splide.length - diff);\n }\n\n return diff < within;\n }\n };\n /**\r\n * Update classes for activity or visibility.\r\n *\r\n * @param {boolean} active - Is active/visible or not.\r\n * @param {boolean} forVisibility - Toggle classes for activity or visibility.\r\n */\n\n function _update(active, forVisibility) {\n var type = forVisibility ? 'visible' : 'active';\n var className = STATUS_CLASSES[type];\n\n if (active) {\n addClass(slide, className);\n Splide.emit(\"\" + type, Slide);\n } else {\n if (hasClass(slide, className)) {\n removeClass(slide, className);\n Splide.emit(\"\" + (forVisibility ? 'hidden' : 'inactive'), Slide);\n }\n }\n }\n /**\r\n * Restore the original styles.\r\n */\n\n\n function restoreStyles() {\n setAttribute(slide, 'style', Slide.styles);\n }\n\n return Slide;\n});\n;// CONCATENATED MODULE: ./src/js/components/elements/index.js\n/**\r\n * The component for main elements.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n\n\n/**\r\n * The property name for UID stored in a window object.\r\n *\r\n * @type {string}\r\n */\n\nvar UID_NAME = 'uid';\n/**\r\n * The component for main elements.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const components_elements = (function (Splide, Components) {\n /**\r\n * Hold the root element.\r\n *\r\n * @type {Element}\r\n */\n var root = Splide.root;\n /**\r\n * Hold the class list.\r\n *\r\n * @type {Object}\r\n */\n\n var classes = Splide.classes;\n /**\r\n * Store Slide objects.\r\n *\r\n * @type {Array}\r\n */\n\n var Slides = [];\n /*\r\n * Assign unique ID to the root element if it doesn't have the one.\r\n * Note that IE doesn't support padStart() to fill the uid by 0.\r\n */\n\n if (!root.id) {\n window.splide = window.splide || {};\n var uid = window.splide[UID_NAME] || 0;\n window.splide[UID_NAME] = ++uid;\n root.id = \"splide\" + pad(uid);\n }\n /**\r\n * Elements component object.\r\n *\r\n * @type {Object}\r\n */\n\n\n var Elements = {\n /**\r\n * Called when the component is mounted.\r\n * Collect main elements and store them as member properties.\r\n */\n mount: function mount() {\n var _this = this;\n\n this.init();\n Splide.on('refresh', function () {\n _this.destroy();\n\n _this.init();\n }).on('updated', function () {\n removeClass(root, getClasses());\n addClass(root, getClasses());\n });\n },\n\n /**\r\n * Destroy.\r\n */\n destroy: function destroy() {\n Slides.forEach(function (Slide) {\n Slide.destroy();\n });\n Slides = [];\n removeClass(root, getClasses());\n },\n\n /**\r\n * Initialization.\r\n */\n init: function init() {\n var _this2 = this;\n\n collect();\n addClass(root, getClasses());\n this.slides.forEach(function (slide, index) {\n _this2.register(slide, index, -1);\n });\n },\n\n /**\r\n * Register a slide to create a Slide object and handle its behavior.\r\n *\r\n * @param {Element} slide - A slide element.\r\n * @param {number} index - A unique index. This can be negative.\r\n * @param {number} realIndex - A real index for clones. Set -1 for real slides.\r\n */\n register: function register(slide, index, realIndex) {\n var SlideObject = elements_slide(Splide, index, realIndex, slide);\n SlideObject.mount();\n Slides.push(SlideObject);\n },\n\n /**\r\n * Return the Slide object designated by the index.\r\n * Note that \"find\" is not supported by IE.\r\n *\r\n * @return {Object|undefined} - A Slide object if available. Undefined if not.\r\n */\n getSlide: function getSlide(index) {\n return Slides.filter(function (Slide) {\n return Slide.index === index;\n })[0];\n },\n\n /**\r\n * Return all Slide objects.\r\n *\r\n * @param {boolean} includeClones - Whether to include cloned slides or not.\r\n *\r\n * @return {Object[]} - Slide objects.\r\n */\n getSlides: function getSlides(includeClones) {\n return includeClones ? Slides : Slides.filter(function (Slide) {\n return !Slide.isClone;\n });\n },\n\n /**\r\n * Return Slide objects belonging to the given page.\r\n *\r\n * @param {number} page - A page number.\r\n *\r\n * @return {Object[]} - An array containing Slide objects.\r\n */\n getSlidesByPage: function getSlidesByPage(page) {\n var idx = Components.Controller.toIndex(page);\n var options = Splide.options;\n var max = options.focus !== false ? 1 : options.perPage;\n return Slides.filter(function (_ref) {\n var index = _ref.index;\n return idx <= index && index < idx + max;\n });\n },\n\n /**\r\n * Insert a slide to a slider.\r\n * Need to refresh Splide after adding a slide.\r\n *\r\n * @param {Node|string} slide - A slide element to be added.\r\n * @param {number} index - A slide will be added at the position.\r\n * @param {Function} callback - Called right after the slide is added to the DOM tree.\r\n */\n add: function add(slide, index, callback) {\n if (typeof slide === 'string') {\n slide = domify(slide);\n }\n\n if (slide instanceof Element) {\n var ref = this.slides[index]; // This will be removed in mount() of a Slide component.\n\n applyStyle(slide, {\n display: 'none'\n });\n\n if (ref) {\n before(slide, ref);\n this.slides.splice(index, 0, slide);\n } else {\n append(this.list, slide);\n this.slides.push(slide);\n }\n\n loaded(slide, function () {\n callback && callback(slide);\n });\n }\n },\n\n /**\r\n * Remove a slide from a slider.\r\n * Need to refresh Splide after removing a slide.\r\n *\r\n * @param index - Slide index.\r\n */\n remove: function remove(index) {\n dom_remove(this.slides.splice(index, 1)[0]);\n },\n\n /**\r\n * Trigger the provided callback for each Slide object.\r\n *\r\n * @param {Function} callback - A callback function. The first argument will be the Slide object.\r\n */\n each: function each(callback) {\n Slides.forEach(callback);\n },\n\n /**\r\n * Return slides length without clones.\r\n *\r\n * @return {number} - Slide length.\r\n */\n get length() {\n return this.slides.length;\n },\n\n /**\r\n * Return \"SlideObjects\" length including clones.\r\n *\r\n * @return {number} - Slide length including clones.\r\n */\n get total() {\n return Slides.length;\n }\n\n };\n /**\r\n * Collect elements.\r\n */\n\n function collect() {\n Elements.slider = child(root, classes.slider);\n Elements.track = find(root, \".\" + classes.track);\n Elements.list = child(Elements.track, classes.list);\n exist(Elements.track && Elements.list, 'Track or list was not found.');\n Elements.slides = children(Elements.list, classes.slide);\n var arrows = findParts(classes.arrows);\n Elements.arrows = {\n prev: find(arrows, \".\" + classes.prev),\n next: find(arrows, \".\" + classes.next)\n };\n var autoplay = findParts(classes.autoplay);\n Elements.bar = find(findParts(classes.progress), \".\" + classes.bar);\n Elements.play = find(autoplay, \".\" + classes.play);\n Elements.pause = find(autoplay, \".\" + classes.pause);\n Elements.track.id = Elements.track.id || root.id + \"-track\";\n Elements.list.id = Elements.list.id || root.id + \"-list\";\n }\n /**\r\n * Return class names for the root element.\r\n */\n\n\n function getClasses() {\n var rootClass = classes.root;\n var options = Splide.options;\n return [rootClass + \"--\" + options.type, rootClass + \"--\" + options.direction, options.drag ? rootClass + \"--draggable\" : '', options.isNavigation ? rootClass + \"--nav\" : '', STATUS_CLASSES.active];\n }\n /**\r\n * Find parts only from children of the root or track.\r\n *\r\n * @return {Element} - A found element or undefined.\r\n */\n\n\n function findParts(className) {\n return child(root, className) || child(Elements.slider, className);\n }\n\n return Elements;\n});\n;// CONCATENATED MODULE: ./src/js/components/controller/index.js\n/**\r\n * The component for controlling the track.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\nvar floor = Math.floor;\n/**\r\n * The component for controlling the track.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const controller = (function (Splide, Components) {\n /**\r\n * Store current options.\r\n *\r\n * @type {Object}\r\n */\n var options;\n /**\r\n * True if the slide is LOOP mode.\r\n *\r\n * @type {boolean}\r\n */\n\n var isLoop;\n /**\r\n * Controller component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Controller = {\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n options = Splide.options;\n isLoop = Splide.is(LOOP);\n bind();\n },\n\n /**\r\n * Make track run by the given control.\r\n * - \"+{i}\" : Increment the slide index by i.\r\n * - \"-{i}\" : Decrement the slide index by i.\r\n * - \"{i}\" : Go to the slide whose index is i.\r\n * - \">\" : Go to next page.\r\n * - \"<\" : Go to prev page.\r\n * - \">{i}\" : Go to page i.\r\n *\r\n * @param {string|number} control - A control pattern.\r\n * @param {boolean} silently - Go to the destination without event emission.\r\n */\n go: function go(control, silently) {\n var destIndex = this.trim(this.parse(control));\n Components.Track.go(destIndex, this.rewind(destIndex), silently);\n },\n\n /**\r\n * Parse the given control and return the destination index for the track.\r\n *\r\n * @param {string} control - A control target pattern.\r\n *\r\n * @return {number} - A parsed target.\r\n */\n parse: function parse(control) {\n var index = Splide.index;\n var matches = String(control).match(/([+\\-<>]+)(\\d+)?/);\n var indicator = matches ? matches[1] : '';\n var number = matches ? parseInt(matches[2]) : 0;\n\n switch (indicator) {\n case '+':\n index += number || 1;\n break;\n\n case '-':\n index -= number || 1;\n break;\n\n case '>':\n case '<':\n index = parsePage(number, index, indicator === '<');\n break;\n\n default:\n index = parseInt(control);\n }\n\n return index;\n },\n\n /**\r\n * Compute index from the given page number.\r\n *\r\n * @param {number} page - Page number.\r\n *\r\n * @return {number} - A computed page number.\r\n */\n toIndex: function toIndex(page) {\n if (hasFocus()) {\n return page;\n }\n\n var length = Splide.length;\n var perPage = options.perPage;\n var index = page * perPage;\n index = index - (this.pageLength * perPage - length) * floor(index / length); // Adjustment for the last page.\n\n if (length - perPage <= index && index < length) {\n index = length - perPage;\n }\n\n return index;\n },\n\n /**\r\n * Compute page number from the given slide index.\r\n *\r\n * @param {number} index - Slide index.\r\n *\r\n * @return {number} - A computed page number.\r\n */\n toPage: function toPage(index) {\n if (hasFocus()) {\n return index;\n }\n\n var length = Splide.length;\n var perPage = options.perPage; // Make the last \"perPage\" number of slides belong to the last page.\n\n if (length - perPage <= index && index < length) {\n return floor((length - 1) / perPage);\n }\n\n return floor(index / perPage);\n },\n\n /**\r\n * Trim the given index according to the current mode.\r\n * Index being returned could be less than 0 or greater than the length in Loop mode.\r\n *\r\n * @param {number} index - An index being trimmed.\r\n *\r\n * @return {number} - A trimmed index.\r\n */\n trim: function trim(index) {\n if (!isLoop) {\n index = options.rewind ? this.rewind(index) : between(index, 0, this.edgeIndex);\n }\n\n return index;\n },\n\n /**\r\n * Rewind the given index if it's out of range.\r\n *\r\n * @param {number} index - An index.\r\n *\r\n * @return {number} - A rewound index.\r\n */\n rewind: function rewind(index) {\n var edge = this.edgeIndex;\n\n if (isLoop) {\n while (index > edge) {\n index -= edge + 1;\n }\n\n while (index < 0) {\n index += edge + 1;\n }\n } else {\n if (index > edge) {\n index = 0;\n } else if (index < 0) {\n index = edge;\n }\n }\n\n return index;\n },\n\n /**\r\n * Check if the direction is \"rtl\" or not.\r\n *\r\n * @return {boolean} - True if \"rtl\" or false if not.\r\n */\n isRtl: function isRtl() {\n return options.direction === RTL;\n },\n\n /**\r\n * Return the page length.\r\n *\r\n * @return {number} - Max page number.\r\n */\n get pageLength() {\n var length = Splide.length;\n return hasFocus() ? length : Math.ceil(length / options.perPage);\n },\n\n /**\r\n * Return the edge index.\r\n *\r\n * @return {number} - Edge index.\r\n */\n get edgeIndex() {\n var length = Splide.length;\n\n if (!length) {\n return 0;\n }\n\n if (hasFocus() || options.isNavigation || isLoop) {\n return length - 1;\n }\n\n return length - options.perPage;\n },\n\n /**\r\n * Return the index of the previous slide.\r\n *\r\n * @return {number} - The index of the previous slide if available. -1 otherwise.\r\n */\n get prevIndex() {\n var prev = Splide.index - 1;\n\n if (isLoop || options.rewind) {\n prev = this.rewind(prev);\n }\n\n return prev > -1 ? prev : -1;\n },\n\n /**\r\n * Return the index of the next slide.\r\n *\r\n * @return {number} - The index of the next slide if available. -1 otherwise.\r\n */\n get nextIndex() {\n var next = Splide.index + 1;\n\n if (isLoop || options.rewind) {\n next = this.rewind(next);\n }\n\n return Splide.index < next && next <= this.edgeIndex || next === 0 ? next : -1;\n }\n\n };\n /**\r\n * Listen to some events.\r\n */\n\n function bind() {\n Splide.on('move', function (newIndex) {\n Splide.index = newIndex;\n }).on('updated refresh', function (newOptions) {\n options = newOptions || options;\n Splide.index = between(Splide.index, 0, Controller.edgeIndex);\n });\n }\n /**\r\n * Verify if the focus option is available or not.\r\n *\r\n * @return {boolean} - True if a slider has the focus option.\r\n */\n\n\n function hasFocus() {\n return options.focus !== false;\n }\n /**\r\n * Return the next or previous page index computed by the page number and current index.\r\n *\r\n * @param {number} number - Specify the page number.\r\n * @param {number} index - Current index.\r\n * @param {boolean} prev - Prev or next.\r\n *\r\n * @return {number} - Slide index.\r\n */\n\n\n function parsePage(number, index, prev) {\n if (number > -1) {\n return Controller.toIndex(number);\n }\n\n var perMove = options.perMove;\n var sign = prev ? -1 : 1;\n\n if (perMove) {\n return index + perMove * sign;\n }\n\n return Controller.toIndex(Controller.toPage(index) + sign);\n }\n\n return Controller;\n});\n;// CONCATENATED MODULE: ./src/js/components/track/index.js\n/**\r\n * The component for moving list in the track.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n\n\nvar abs = Math.abs;\n/**\r\n * The component for moving list in the track.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const track = (function (Splide, Components) {\n /**\r\n * Hold the Layout component.\r\n *\r\n * @type {Object}\r\n */\n var Layout;\n /**\r\n * Hold the Layout component.\r\n *\r\n * @type {Object}\r\n */\n\n var Elements;\n /**\r\n * Store the list element.\r\n *\r\n * @type {Element}\r\n */\n\n var list;\n /**\r\n * Whether the current direction is vertical or not.\r\n *\r\n * @type {boolean}\r\n */\n\n var isVertical = Splide.options.direction === TTB;\n /**\r\n * Whether the slider type is FADE or not.\r\n *\r\n * @type {boolean}\r\n */\n\n var isFade = Splide.is(FADE);\n /**\r\n * Whether the slider direction is RTL or not.\r\n *\r\n * @type {boolean}\r\n */\n\n var isRTL = Splide.options.direction === RTL;\n /**\r\n * This will be true while transitioning from the last index to the first one.\r\n *\r\n * @type {boolean}\r\n */\n\n var isLoopPending = false;\n /**\r\n * Sign for the direction. Only RTL mode uses the positive sign.\r\n *\r\n * @type {number}\r\n */\n\n var sign = isRTL ? 1 : -1;\n /**\r\n * Track component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Track = {\n /**\r\n * Make public the sign defined locally.\r\n *\r\n * @type {number}\r\n */\n sign: sign,\n\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n Elements = Components.Elements;\n Layout = Components.Layout;\n list = Elements.list;\n },\n\n /**\r\n * Called after the component is mounted.\r\n * The resize event must be registered after the Layout's one is done.\r\n */\n mounted: function mounted() {\n var _this = this;\n\n if (!isFade) {\n this.jump(0);\n Splide.on('mounted resize updated', function () {\n _this.jump(Splide.index);\n });\n }\n },\n\n /**\r\n * Go to the given destination index.\r\n * After arriving there, the track is jump to the new index without animation, mainly for loop mode.\r\n *\r\n * @param {number} destIndex - A destination index.\r\n * This can be negative or greater than slides length for reaching clones.\r\n * @param {number} newIndex - An actual new index. They are always same in Slide and Rewind mode.\r\n * @param {boolean} silently - If true, suppress emitting events.\r\n */\n go: function go(destIndex, newIndex, silently) {\n var newPosition = getTrimmedPosition(destIndex);\n var prevIndex = Splide.index; // Prevent any actions while transitioning from the last index to the first one for jump.\n\n if (Splide.State.is(MOVING) && isLoopPending) {\n return;\n }\n\n isLoopPending = destIndex !== newIndex;\n\n if (!silently) {\n Splide.emit('move', newIndex, prevIndex, destIndex);\n }\n\n if (Math.abs(newPosition - this.position) >= 1 || isFade) {\n Components.Transition.start(destIndex, newIndex, prevIndex, this.toCoord(newPosition), function () {\n onTransitionEnd(destIndex, newIndex, prevIndex, silently);\n });\n } else {\n if (destIndex !== prevIndex && Splide.options.trimSpace === 'move') {\n Components.Controller.go(destIndex + destIndex - prevIndex, silently);\n } else {\n onTransitionEnd(destIndex, newIndex, prevIndex, silently);\n }\n }\n },\n\n /**\r\n * Move the track to the specified index.\r\n *\r\n * @param {number} index - A destination index where the track jumps.\r\n */\n jump: function jump(index) {\n this.translate(getTrimmedPosition(index));\n },\n\n /**\r\n * Set the list position by CSS translate property.\r\n *\r\n * @param {number} position - A new position value.\r\n */\n translate: function translate(position) {\n applyStyle(list, {\n transform: \"translate\" + (isVertical ? 'Y' : 'X') + \"(\" + position + \"px)\"\n });\n },\n\n /**\r\n * Cancel the transition and set the list position.\r\n * Also, loop the slider if necessary.\r\n */\n cancel: function cancel() {\n if (Splide.is(LOOP)) {\n this.shift();\n } else {\n // Ensure the current position.\n this.translate(this.position);\n }\n\n applyStyle(list, {\n transition: ''\n });\n },\n\n /**\r\n * Shift the slider if it exceeds borders on the edge.\r\n */\n shift: function shift() {\n var position = abs(this.position);\n var left = abs(this.toPosition(0));\n var right = abs(this.toPosition(Splide.length));\n var innerSize = right - left;\n\n if (position < left) {\n position += innerSize;\n } else if (position > right) {\n position -= innerSize;\n }\n\n this.translate(sign * position);\n },\n\n /**\r\n * Trim redundant spaces on the left or right edge if necessary.\r\n *\r\n * @param {number} position - Position value to be trimmed.\r\n *\r\n * @return {number} - Trimmed position.\r\n */\n trim: function trim(position) {\n if (!Splide.options.trimSpace || Splide.is(LOOP)) {\n return position;\n }\n\n var edge = sign * (Layout.totalSize() - Layout.size - Layout.gap);\n return between(position, edge, 0);\n },\n\n /**\r\n * Calculate the closest slide index from the given position.\r\n *\r\n * @param {number} position - A position converted to an slide index.\r\n *\r\n * @return {number} - The closest slide index.\r\n */\n toIndex: function toIndex(position) {\n var _this2 = this;\n\n var index = 0;\n var minDistance = Infinity;\n Elements.getSlides(true).forEach(function (Slide) {\n var slideIndex = Slide.index;\n var distance = abs(_this2.toPosition(slideIndex) - position);\n\n if (distance < minDistance) {\n minDistance = distance;\n index = slideIndex;\n }\n });\n return index;\n },\n\n /**\r\n * Return coordinates object by the given position.\r\n *\r\n * @param {number} position - A position value.\r\n *\r\n * @return {Object} - A coordinates object.\r\n */\n toCoord: function toCoord(position) {\n return {\n x: isVertical ? 0 : position,\n y: isVertical ? position : 0\n };\n },\n\n /**\r\n * Calculate the track position by a slide index.\r\n *\r\n * @param {number} index - Slide index.\r\n *\r\n * @return {Object} - Calculated position.\r\n */\n toPosition: function toPosition(index) {\n var position = Layout.totalSize(index) - Layout.slideSize(index) - Layout.gap;\n return sign * (position + this.offset(index));\n },\n\n /**\r\n * Return the current offset value, considering direction.\r\n *\r\n * @return {number} - Offset amount.\r\n */\n offset: function offset(index) {\n var focus = Splide.options.focus;\n var slideSize = Layout.slideSize(index);\n\n if (focus === 'center') {\n return -(Layout.size - slideSize) / 2;\n }\n\n return -(parseInt(focus) || 0) * (slideSize + Layout.gap);\n },\n\n /**\r\n * Return the current position.\r\n * This returns the correct position even while transitioning by CSS.\r\n *\r\n * @return {number} - Current position.\r\n */\n get position() {\n var prop = isVertical ? 'top' : isRTL ? 'right' : 'left';\n return getRect(list)[prop] - (getRect(Elements.track)[prop] - Layout.padding[prop] * sign);\n }\n\n };\n /**\r\n * Called whenever slides arrive at a destination.\r\n *\r\n * @param {number} destIndex - A destination index.\r\n * @param {number} newIndex - A new index.\r\n * @param {number} prevIndex - A previous index.\r\n * @param {boolean} silently - If true, suppress emitting events.\r\n */\n\n function onTransitionEnd(destIndex, newIndex, prevIndex, silently) {\n applyStyle(list, {\n transition: ''\n });\n isLoopPending = false;\n\n if (!isFade) {\n Track.jump(newIndex);\n }\n\n if (!silently) {\n Splide.emit('moved', newIndex, prevIndex, destIndex);\n }\n }\n /**\r\n * Convert index to the trimmed position.\r\n *\r\n * @return {number} - Trimmed position.\r\n */\n\n\n function getTrimmedPosition(index) {\n return Track.trim(Track.toPosition(index));\n }\n\n return Track;\n});\n;// CONCATENATED MODULE: ./src/js/components/clones/index.js\n/**\r\n * The component for cloning some slides for \"loop\" mode of the track.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n\n/**\r\n * The component for cloning some slides for \"loop\" mode of the track.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const clones = (function (Splide, Components) {\n /**\r\n * Store information of all clones.\r\n *\r\n * @type {Array}\r\n */\n var clones = [];\n /**\r\n * Store the current clone count on one side.\r\n *\r\n * @type {number}\r\n */\n\n var cloneCount = 0;\n /**\r\n * Keep Elements component.\r\n *\r\n * @type {Object}\r\n */\n\n var Elements = Components.Elements;\n /**\r\n * Clones component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Clones = {\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n var _this = this;\n\n if (Splide.is(LOOP)) {\n init();\n Splide.on('refresh:before', function () {\n _this.destroy();\n }).on('refresh', init).on('resize', function () {\n if (cloneCount !== getCloneCount()) {\n // Destroy before refresh not to collect clones by the Elements component.\n _this.destroy();\n\n Splide.refresh();\n }\n });\n }\n },\n\n /**\r\n * Destroy.\r\n */\n destroy: function destroy() {\n dom_remove(clones);\n clones = [];\n },\n\n /**\r\n * Return all clones.\r\n *\r\n * @return {Element[]} - Cloned elements.\r\n */\n get clones() {\n return clones;\n },\n\n /**\r\n * Return clone length.\r\n *\r\n * @return {number} - A length of clones.\r\n */\n get length() {\n return clones.length;\n }\n\n };\n /**\r\n * Initialization.\r\n */\n\n function init() {\n Clones.destroy();\n cloneCount = getCloneCount();\n generateClones(cloneCount);\n }\n /**\r\n * Generate and append/prepend clones.\r\n *\r\n * @param {number} count - The half number of clones.\r\n */\n\n\n function generateClones(count) {\n var length = Elements.length,\n register = Elements.register;\n\n if (length) {\n var slides = Elements.slides;\n\n while (slides.length < count) {\n slides = slides.concat(slides);\n } // Clones after the last element.\n\n\n slides.slice(0, count).forEach(function (elm, index) {\n var clone = cloneDeeply(elm);\n append(Elements.list, clone);\n clones.push(clone);\n register(clone, index + length, index % length);\n }); // Clones before the first element.\n\n slides.slice(-count).forEach(function (elm, index) {\n var clone = cloneDeeply(elm);\n before(clone, slides[0]);\n clones.push(clone);\n register(clone, index - count, (length + index - count % length) % length);\n });\n }\n }\n /**\r\n * Return half count of clones to be generated.\r\n * Clone count is determined by:\r\n * - \"clones\" value in the options.\r\n * - Number of slides that can be placed in a view in \"fixed\" mode.\r\n * - Max pages a flick action can move.\r\n * - Whether the slide length is enough for perPage.\r\n *\r\n * @return {number} - Count for clones.\r\n */\n\n\n function getCloneCount() {\n var options = Splide.options;\n\n if (options.clones) {\n return options.clones;\n } // Use the slide length in autoWidth mode because the number cannot be calculated.\n\n\n var baseCount = options.autoWidth || options.autoHeight ? Elements.length : options.perPage;\n var dimension = options.direction === TTB ? 'Height' : 'Width';\n var fixedSize = toPixel(Splide.root, options[\"fixed\" + dimension]);\n\n if (fixedSize) {\n // Roughly calculate the count. This needs not to be strict.\n baseCount = Math.ceil(Elements.track[\"client\" + dimension] / fixedSize);\n }\n\n return baseCount * (options.drag ? options.flickMaxPages + 1 : 1);\n }\n /**\r\n * Clone deeply the given element.\r\n *\r\n * @param {Element} elm - An element being duplicated.\r\n *\r\n * @return {Node} - A cloned node(element).\r\n */\n\n\n function cloneDeeply(elm) {\n var clone = elm.cloneNode(true);\n addClass(clone, Splide.classes.clone); // ID should not be duplicated.\n\n removeAttribute(clone, 'id');\n return clone;\n }\n\n return Clones;\n});\n;// CONCATENATED MODULE: ./src/js/components/layout/directions/horizontal.js\n/**\r\n * The resolver component for horizontal layout.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n/**\r\n * The resolver component for horizontal layout.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The resolver object.\r\n */\n\n/* harmony default export */ const horizontal = (function (Splide, Components) {\n /**\r\n * Keep the Elements component.\r\n *\r\n * @type {string}\r\n */\n var Elements = Components.Elements;\n /**\r\n * Keep the root element.\r\n *\r\n * @type {Element}\r\n */\n\n var root = Splide.root;\n /**\r\n * Keep the track element.\r\n *\r\n * @type {Element}\r\n */\n\n var track;\n /**\r\n * Keep the latest options.\r\n *\r\n * @type {Element}\r\n */\n\n var options = Splide.options;\n return {\n /**\r\n * Margin property name.\r\n *\r\n * @type {string}\r\n */\n margin: 'margin' + (options.direction === RTL ? 'Left' : 'Right'),\n\n /**\r\n * Always 0 because the height will be determined by inner contents.\r\n *\r\n * @type {number}\r\n */\n height: 0,\n\n /**\r\n * Initialization.\r\n */\n init: function init() {\n this.resize();\n },\n\n /**\r\n * Resize gap and padding.\r\n * This must be called on init.\r\n */\n resize: function resize() {\n options = Splide.options;\n track = Elements.track;\n this.gap = toPixel(root, options.gap);\n var padding = options.padding;\n var left = toPixel(root, padding.left || padding);\n var right = toPixel(root, padding.right || padding);\n this.padding = {\n left: left,\n right: right\n };\n applyStyle(track, {\n paddingLeft: unit(left),\n paddingRight: unit(right)\n });\n },\n\n /**\r\n * Return total width from the left of the list to the right of the slide specified by the provided index.\r\n *\r\n * @param {number} index - Optional. A slide index. If undefined, total width of the slider will be returned.\r\n *\r\n * @return {number} - Total width to the right side of the specified slide, or 0 for an invalid index.\r\n */\n totalWidth: function totalWidth(index) {\n if (index === void 0) {\n index = Splide.length - 1;\n }\n\n var Slide = Elements.getSlide(index);\n var width = 0;\n\n if (Slide) {\n var slideRect = getRect(Slide.slide);\n var listRect = getRect(Elements.list);\n\n if (options.direction === RTL) {\n width = listRect.right - slideRect.left;\n } else {\n width = slideRect.right - listRect.left;\n }\n\n width += this.gap;\n }\n\n return width;\n },\n\n /**\r\n * Return the slide width in px.\r\n *\r\n * @param {number} index - Slide index.\r\n *\r\n * @return {number} - The slide width.\r\n */\n slideWidth: function slideWidth(index) {\n if (options.autoWidth) {\n var Slide = Elements.getSlide(index);\n return Slide ? Slide.slide.offsetWidth : 0;\n }\n\n var width = options.fixedWidth || (this.width + this.gap) / options.perPage - this.gap;\n return toPixel(root, width);\n },\n\n /**\r\n * Return the slide height in px.\r\n *\r\n * @return {number} - The slide height.\r\n */\n slideHeight: function slideHeight() {\n var height = options.height || options.fixedHeight || this.width * options.heightRatio;\n return toPixel(root, height);\n },\n\n /**\r\n * Return slider width without padding.\r\n *\r\n * @return {number} - Current slider width.\r\n */\n get width() {\n return track.clientWidth - this.padding.left - this.padding.right;\n }\n\n };\n});\n;// CONCATENATED MODULE: ./src/js/components/layout/directions/vertical.js\n/**\r\n * The resolver component for vertical layout.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n/**\r\n * The resolver component for vertical layout.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The resolver object.\r\n */\n\n/* harmony default export */ const vertical = (function (Splide, Components) {\n /**\r\n * Keep the Elements component.\r\n *\r\n * @type {string}\r\n */\n var Elements = Components.Elements;\n /**\r\n * Keep the root element.\r\n *\r\n * @type {Element}\r\n */\n\n var root = Splide.root;\n /**\r\n * Keep the track element.\r\n *\r\n * @type {Element}\r\n */\n\n var track;\n /**\r\n * Keep the latest options.\r\n *\r\n * @type {Element}\r\n */\n\n var options;\n return {\n /**\r\n * Margin property name.\r\n *\r\n * @type {string}\r\n */\n margin: 'marginBottom',\n\n /**\r\n * Initialization.\r\n */\n init: function init() {\n this.resize();\n },\n\n /**\r\n * Resize gap and padding.\r\n * This must be called on init.\r\n */\n resize: function resize() {\n options = Splide.options;\n track = Elements.track;\n this.gap = toPixel(root, options.gap);\n var padding = options.padding;\n var top = toPixel(root, padding.top || padding);\n var bottom = toPixel(root, padding.bottom || padding);\n this.padding = {\n top: top,\n bottom: bottom\n };\n applyStyle(track, {\n paddingTop: unit(top),\n paddingBottom: unit(bottom)\n });\n },\n\n /**\r\n * Return total height from the top of the list to the bottom of the slide specified by the provided index.\r\n *\r\n * @param {number} index - Optional. A slide index. If undefined, total height of the slider will be returned.\r\n *\r\n * @return {number} - Total height to the bottom of the specified slide, or 0 for an invalid index.\r\n */\n totalHeight: function totalHeight(index) {\n if (index === void 0) {\n index = Splide.length - 1;\n }\n\n var Slide = Elements.getSlide(index);\n\n if (Slide) {\n return getRect(Slide.slide).bottom - getRect(Elements.list).top + this.gap;\n }\n\n return 0;\n },\n\n /**\r\n * Return the slide width in px.\r\n *\r\n * @return {number} - The slide width.\r\n */\n slideWidth: function slideWidth() {\n return toPixel(root, options.fixedWidth || this.width);\n },\n\n /**\r\n * Return the slide height in px.\r\n *\r\n * @param {number} index - Slide index.\r\n *\r\n * @return {number} - The slide height.\r\n */\n slideHeight: function slideHeight(index) {\n if (options.autoHeight) {\n var Slide = Elements.getSlide(index);\n return Slide ? Slide.slide.offsetHeight : 0;\n }\n\n var height = options.fixedHeight || (this.height + this.gap) / options.perPage - this.gap;\n return toPixel(root, height);\n },\n\n /**\r\n * Return slider width without padding.\r\n *\r\n * @return {number} - Current slider width.\r\n */\n get width() {\n return track.clientWidth;\n },\n\n /**\r\n * Return slide height without padding.\r\n *\r\n * @return {number} - Slider height.\r\n */\n get height() {\n var height = options.height || this.width * options.heightRatio;\n exist(height, '\"height\" or \"heightRatio\" is missing.');\n return toPixel(root, height) - this.padding.top - this.padding.bottom;\n }\n\n };\n});\n;// CONCATENATED MODULE: ./src/js/utils/time.js\n/**\r\n * A package of utility functions related with time.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Simple throttle function that controls how often the given function is executed.\r\n *\r\n * @param {function} func - A function to be throttled.\r\n * @param {number} wait - Time in millisecond for interval of execution.\r\n *\r\n * @return {Function} - A debounced function.\r\n */\nfunction throttle(func, wait) {\n var timeout; // Declare function by the \"function\" keyword to prevent \"this\" from being inherited.\n\n return function () {\n if (!timeout) {\n timeout = setTimeout(function () {\n func();\n timeout = null;\n }, wait);\n }\n };\n}\n/**\r\n * Custom setInterval function that provides progress rate as callback.\r\n *\r\n * @param {function} callback - A callback function fired every time the interval time passes.\r\n * @param {number} interval - Interval duration in milliseconds.\r\n * @param {function} progress - A callback function fired whenever the progress goes.\r\n *\r\n * @return {Object} - An object containing play() and pause() functions.\r\n */\n\nfunction createInterval(callback, interval, progress) {\n var _window = window,\n requestAnimationFrame = _window.requestAnimationFrame;\n var start,\n elapse,\n rate,\n _pause = true;\n\n var step = function step(timestamp) {\n if (!_pause) {\n if (!start) {\n start = timestamp;\n\n if (rate && rate < 1) {\n start -= rate * interval;\n }\n }\n\n elapse = timestamp - start;\n rate = elapse / interval;\n\n if (elapse >= interval) {\n start = 0;\n rate = 1;\n callback();\n }\n\n if (progress) {\n progress(rate);\n }\n\n requestAnimationFrame(step);\n }\n };\n\n return {\n pause: function pause() {\n _pause = true;\n start = 0;\n },\n play: function play(reset) {\n start = 0;\n\n if (reset) {\n rate = 0;\n }\n\n if (_pause) {\n _pause = false;\n requestAnimationFrame(step);\n }\n }\n };\n}\n;// CONCATENATED MODULE: ./src/js/components/layout/index.js\n/**\r\n * The component for handing slide layouts and their sizes.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n\n\n\n\n/**\r\n * The component for handing slide layouts and their sizes.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const layout = (function (Splide, Components) {\n /**\r\n * Keep the Elements component.\r\n *\r\n * @type {string}\r\n */\n var Elements = Components.Elements;\n /**\r\n * Whether the slider is vertical or not.\r\n *\r\n * @type {boolean}\r\n */\n\n var isVertical = Splide.options.direction === TTB;\n /**\r\n * Layout component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Layout = object_assign({\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n bind();\n init(); // The word \"size\" means width for a horizontal slider and height for a vertical slider.\n\n this.totalSize = isVertical ? this.totalHeight : this.totalWidth;\n this.slideSize = isVertical ? this.slideHeight : this.slideWidth;\n },\n\n /**\r\n * Destroy the component.\r\n */\n destroy: function destroy() {\n removeAttribute([Elements.list, Elements.track], 'style');\n },\n\n /**\r\n * Return the slider height on the vertical mode or width on the horizontal mode.\r\n *\r\n * @return {number}\r\n */\n get size() {\n return isVertical ? this.height : this.width;\n }\n\n }, isVertical ? vertical(Splide, Components) : horizontal(Splide, Components));\n /**\r\n * Init slider styles according to options.\r\n */\n\n function init() {\n Layout.init();\n applyStyle(Splide.root, {\n maxWidth: unit(Splide.options.width)\n });\n Elements.each(function (Slide) {\n Slide.slide.style[Layout.margin] = unit(Layout.gap);\n });\n resize();\n }\n /**\r\n * Listen the resize native event with throttle.\r\n * Initialize when the component is mounted or options are updated.\r\n */\n\n\n function bind() {\n Splide.on('resize load', throttle(function () {\n Splide.emit('resize');\n }, Splide.options.throttle), window).on('resize', resize).on('updated refresh', init);\n }\n /**\r\n * Resize the track and slide elements.\r\n */\n\n\n function resize() {\n var options = Splide.options;\n Layout.resize();\n applyStyle(Elements.track, {\n height: unit(Layout.height)\n });\n var slideHeight = options.autoHeight ? null : unit(Layout.slideHeight());\n Elements.each(function (Slide) {\n applyStyle(Slide.container, {\n height: slideHeight\n });\n applyStyle(Slide.slide, {\n width: options.autoWidth ? null : unit(Layout.slideWidth(Slide.index)),\n height: Slide.container ? null : slideHeight\n });\n });\n Splide.emit('resized');\n }\n\n return Layout;\n});\n;// CONCATENATED MODULE: ./src/js/components/drag/index.js\n/**\r\n * The component for supporting mouse drag and swipe.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n\n\nvar drag_abs = Math.abs;\n/**\r\n * If the absolute velocity is greater thant this value,\r\n * a slider always goes to a different slide after drag, not allowed to stay on a current slide.\r\n */\n\nvar MIN_VELOCITY = 0.1;\n/**\r\n * Adjust how much the track can be pulled on the first or last page.\r\n * The larger number this is, the farther the track moves.\r\n * This should be around 5 - 9.\r\n *\r\n * @type {number}\r\n */\n\nvar FRICTION_REDUCER = 7;\n/**\r\n * The component supporting mouse drag and swipe.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const drag = (function (Splide, Components) {\n /**\r\n * Store the Move component.\r\n *\r\n * @type {Object}\r\n */\n var Track = Components.Track;\n /**\r\n * Store the Controller component.\r\n *\r\n * @type {Object}\r\n */\n\n var Controller = Components.Controller;\n /**\r\n * Coordinate of the track on starting drag.\r\n *\r\n * @type {Object}\r\n */\n\n var startCoord;\n /**\r\n * Analyzed info on starting drag.\r\n *\r\n * @type {Object|null}\r\n */\n\n var startInfo;\n /**\r\n * Analyzed info being updated while dragging/swiping.\r\n *\r\n * @type {Object}\r\n */\n\n var currentInfo;\n /**\r\n * Determine whether slides are being dragged or not.\r\n *\r\n * @type {boolean}\r\n */\n\n var isDragging;\n /**\r\n * Whether the slider direction is vertical or not.\r\n *\r\n * @type {boolean}\r\n */\n\n var isVertical = Splide.options.direction === TTB;\n /**\r\n * Axis for the direction.\r\n *\r\n * @type {string}\r\n */\n\n var axis = isVertical ? 'y' : 'x';\n /**\r\n * Drag component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Drag = {\n /**\r\n * Whether dragging is disabled or not.\r\n *\r\n * @type {boolean}\r\n */\n disabled: false,\n\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n var _this = this;\n\n var Elements = Components.Elements;\n var track = Elements.track;\n Splide.on('touchstart mousedown', start, track).on('touchmove mousemove', move, track, {\n passive: false\n }).on('touchend touchcancel mouseleave mouseup dragend', end, track).on('mounted refresh', function () {\n // Prevent dragging an image or anchor itself.\n each(Elements.list.querySelectorAll('img, a'), function (elm) {\n Splide.off('dragstart', elm).on('dragstart', function (e) {\n e.preventDefault();\n }, elm, {\n passive: false\n });\n });\n }).on('mounted updated', function () {\n _this.disabled = !Splide.options.drag;\n });\n }\n };\n /**\r\n * Called when the track starts to be dragged.\r\n *\r\n * @param {TouchEvent|MouseEvent} e - TouchEvent or MouseEvent object.\r\n */\n\n function start(e) {\n if (!Drag.disabled && !isDragging) {\n // These prams are used to evaluate whether the slider should start moving.\n init(e);\n }\n }\n /**\r\n * Initialize parameters.\r\n *\r\n * @param {TouchEvent|MouseEvent} e - TouchEvent or MouseEvent object.\r\n */\n\n\n function init(e) {\n startCoord = Track.toCoord(Track.position);\n startInfo = analyze(e, {});\n currentInfo = startInfo;\n }\n /**\r\n * Called while the track being dragged.\r\n *\r\n * @param {TouchEvent|MouseEvent} e - TouchEvent or MouseEvent object.\r\n */\n\n\n function move(e) {\n if (startInfo) {\n currentInfo = analyze(e, startInfo);\n\n if (isDragging) {\n if (e.cancelable) {\n e.preventDefault();\n }\n\n if (!Splide.is(FADE)) {\n var position = startCoord[axis] + currentInfo.offset[axis];\n Track.translate(resist(position));\n }\n } else {\n if (shouldMove(currentInfo)) {\n Splide.emit('drag', startInfo);\n isDragging = true;\n Track.cancel(); // These params are actual drag data.\n\n init(e);\n }\n }\n }\n }\n /**\r\n * Determine whether to start moving the track or not by drag angle.\r\n *\r\n * @param {Object} info - An information object.\r\n *\r\n * @return {boolean} - True if the track should be moved or false if not.\r\n */\n\n\n function shouldMove(_ref) {\n var offset = _ref.offset;\n\n if (Splide.State.is(MOVING) && Splide.options.waitForTransition) {\n return false;\n }\n\n var angle = Math.atan(drag_abs(offset.y) / drag_abs(offset.x)) * 180 / Math.PI;\n\n if (isVertical) {\n angle = 90 - angle;\n }\n\n return angle < Splide.options.dragAngleThreshold;\n }\n /**\r\n * Resist dragging the track on the first/last page because there is no more.\r\n *\r\n * @param {number} position - A position being applied to the track.\r\n *\r\n * @return {Object} - Adjusted position.\r\n */\n\n\n function resist(position) {\n if (Splide.is(SLIDE)) {\n var sign = Track.sign;\n\n var _start = sign * Track.trim(Track.toPosition(0));\n\n var _end = sign * Track.trim(Track.toPosition(Controller.edgeIndex));\n\n position *= sign;\n\n if (position < _start) {\n position = _start - FRICTION_REDUCER * Math.log(_start - position);\n } else if (position > _end) {\n position = _end + FRICTION_REDUCER * Math.log(position - _end);\n }\n\n position *= sign;\n }\n\n return position;\n }\n /**\r\n * Called when dragging ends.\r\n */\n\n\n function end() {\n startInfo = null;\n\n if (isDragging) {\n Splide.emit('dragged', currentInfo);\n go(currentInfo);\n isDragging = false;\n }\n }\n /**\r\n * Go to the slide determined by the analyzed data.\r\n *\r\n * @param {Object} info - An info object.\r\n */\n\n\n function go(info) {\n var velocity = info.velocity[axis];\n var absV = drag_abs(velocity);\n\n if (absV > 0) {\n var options = Splide.options;\n var index = Splide.index;\n var sign = velocity < 0 ? -1 : 1;\n var destIndex = index;\n\n if (!Splide.is(FADE)) {\n var destination = Track.position;\n\n if (absV > options.flickVelocityThreshold && drag_abs(info.offset[axis]) < options.swipeDistanceThreshold) {\n destination += sign * Math.min(absV * options.flickPower, Components.Layout.size * (options.flickMaxPages || 1));\n }\n\n destIndex = Track.toIndex(destination);\n }\n /*\r\n * Do not allow the track to go to a previous position if there is enough velocity.\r\n * Always use the adjacent index for the fade mode.\r\n */\n\n\n if (destIndex === index && absV > MIN_VELOCITY) {\n destIndex = index + sign * Track.sign;\n }\n\n if (Splide.is(SLIDE)) {\n destIndex = between(destIndex, 0, Controller.edgeIndex);\n }\n\n Controller.go(destIndex, options.isNavigation);\n }\n }\n /**\r\n * Analyze the given event object and return important information for handling swipe behavior.\r\n *\r\n * @param {Event} e - Touch or Mouse event object.\r\n * @param {Object} startInfo - Information analyzed on start for calculating difference from the current one.\r\n *\r\n * @return {Object} - An object containing analyzed information, such as offset, velocity, etc.\r\n */\n\n\n function analyze(e, startInfo) {\n var timeStamp = e.timeStamp,\n touches = e.touches;\n\n var _ref2 = touches ? touches[0] : e,\n clientX = _ref2.clientX,\n clientY = _ref2.clientY;\n\n var _ref3 = startInfo.to || {},\n _ref3$x = _ref3.x,\n fromX = _ref3$x === void 0 ? clientX : _ref3$x,\n _ref3$y = _ref3.y,\n fromY = _ref3$y === void 0 ? clientY : _ref3$y;\n\n var startTime = startInfo.time || 0;\n var offset = {\n x: clientX - fromX,\n y: clientY - fromY\n };\n var duration = timeStamp - startTime;\n var velocity = {\n x: offset.x / duration,\n y: offset.y / duration\n };\n return {\n to: {\n x: clientX,\n y: clientY\n },\n offset: offset,\n time: timeStamp,\n velocity: velocity\n };\n }\n\n return Drag;\n});\n;// CONCATENATED MODULE: ./src/js/components/click/index.js\n/**\r\n * The component for handling a click event.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * The component for handling a click event.\r\n * Click should be disabled during drag/swipe.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n/* harmony default export */ const click = (function (Splide, Components) {\n /**\r\n * Whether click is disabled or not.\r\n *\r\n * @type {boolean}\r\n */\n var disabled = false;\n /**\r\n * Click component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Click = {\n /**\r\n * Mount only when the drag is activated and the slide type is not \"fade\".\r\n *\r\n * @type {boolean}\r\n */\n required: Splide.options.drag,\n\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n Splide.on('click', onClick, Components.Elements.track, {\n capture: true\n }).on('drag', function () {\n disabled = true;\n }).on('dragged', function () {\n // Make sure the flag is released after the click event is fired.\n setTimeout(function () {\n disabled = false;\n });\n });\n }\n };\n /**\r\n * Called when a track element is clicked.\r\n *\r\n * @param {Event} e - A click event.\r\n */\n\n function onClick(e) {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n\n return Click;\n});\n;// CONCATENATED MODULE: ./src/js/components/autoplay/index.js\n/**\r\n * The component for playing slides automatically.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n/**\r\n * Set of pause flags.\r\n */\n\nvar PAUSE_FLAGS = {\n HOVER: 1,\n FOCUS: 2,\n MANUAL: 3\n};\n/**\r\n * The component for playing slides automatically.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n * @param {string} name - A component name as a lowercase string.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const autoplay = (function (Splide, Components, name) {\n /**\r\n * Store pause flags.\r\n *\r\n * @type {Array}\r\n */\n var flags = [];\n /**\r\n * Store an interval object.\r\n *\r\n * @type {Object};\r\n */\n\n var interval;\n /**\r\n * Keep the Elements component.\r\n *\r\n * @type {string}\r\n */\n\n var Elements = Components.Elements;\n /**\r\n * Autoplay component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Autoplay = {\n /**\r\n * Required only when the autoplay option is true.\r\n *\r\n * @type {boolean}\r\n */\n required: Splide.options.autoplay,\n\n /**\r\n * Called when the component is mounted.\r\n * Note that autoplay starts only if there are slides over perPage number.\r\n */\n mount: function mount() {\n var options = Splide.options;\n\n if (Elements.slides.length > options.perPage) {\n interval = createInterval(function () {\n Splide.go('>');\n }, options.interval, function (rate) {\n Splide.emit(name + \":playing\", rate);\n\n if (Elements.bar) {\n applyStyle(Elements.bar, {\n width: rate * 100 + \"%\"\n });\n }\n });\n bind();\n this.play();\n }\n },\n\n /**\r\n * Start autoplay.\r\n *\r\n * @param {number} flag - A pause flag to be removed.\r\n */\n play: function play(flag) {\n if (flag === void 0) {\n flag = 0;\n }\n\n flags = flags.filter(function (f) {\n return f !== flag;\n });\n\n if (!flags.length) {\n Splide.emit(name + \":play\");\n interval.play(Splide.options.resetProgress);\n }\n },\n\n /**\r\n * Pause autoplay.\r\n * Note that Array.includes is not supported by IE.\r\n *\r\n * @param {number} flag - A pause flag to be added.\r\n */\n pause: function pause(flag) {\n if (flag === void 0) {\n flag = 0;\n }\n\n interval.pause();\n\n if (flags.indexOf(flag) === -1) {\n flags.push(flag);\n }\n\n if (flags.length === 1) {\n Splide.emit(name + \":pause\");\n }\n }\n };\n /**\r\n * Listen some events.\r\n */\n\n function bind() {\n var options = Splide.options;\n var sibling = Splide.sibling;\n var elms = [Splide.root, sibling ? sibling.root : null];\n\n if (options.pauseOnHover) {\n switchOn(elms, 'mouseleave', PAUSE_FLAGS.HOVER, true);\n switchOn(elms, 'mouseenter', PAUSE_FLAGS.HOVER, false);\n }\n\n if (options.pauseOnFocus) {\n switchOn(elms, 'focusout', PAUSE_FLAGS.FOCUS, true);\n switchOn(elms, 'focusin', PAUSE_FLAGS.FOCUS, false);\n }\n\n if (Elements.play) {\n Splide.on('click', function () {\n // Need to be removed a focus flag at first.\n Autoplay.play(PAUSE_FLAGS.FOCUS);\n Autoplay.play(PAUSE_FLAGS.MANUAL);\n }, Elements.play);\n }\n\n if (Elements.pause) {\n switchOn([Elements.pause], 'click', PAUSE_FLAGS.MANUAL, false);\n }\n\n Splide.on('move refresh', function () {\n Autoplay.play();\n }) // Rewind the timer.\n .on('destroy', function () {\n Autoplay.pause();\n });\n }\n /**\r\n * Play or pause on the given event.\r\n *\r\n * @param {Element[]} elms - Elements.\r\n * @param {string} event - An event name or names.\r\n * @param {number} flag - A pause flag defined on the top.\r\n * @param {boolean} play - Determine whether to play or pause.\r\n */\n\n\n function switchOn(elms, event, flag, play) {\n elms.forEach(function (elm) {\n Splide.on(event, function () {\n Autoplay[play ? 'play' : 'pause'](flag);\n }, elm);\n });\n }\n\n return Autoplay;\n});\n;// CONCATENATED MODULE: ./src/js/components/cover/index.js\n/**\r\n * The component for change an img element to background image of its wrapper.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * The component for change an img element to background image of its wrapper.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const cover = (function (Splide, Components) {\n /**\r\n * Hold options.\r\n *\r\n * @type {Object}\r\n */\n var options = Splide.options;\n /**\r\n * Cover component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Cover = {\n /**\r\n * Required only when \"cover\" option is true.\r\n *\r\n * @type {boolean}\r\n */\n required: options.cover,\n\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n Splide.on('lazyload:loaded', function (img) {\n cover(img, false);\n });\n Splide.on('mounted updated refresh', function () {\n return apply(false);\n });\n },\n\n /**\r\n * Destroy.\r\n */\n destroy: function destroy() {\n apply(true);\n }\n };\n /**\r\n * Apply \"cover\" to all slides.\r\n *\r\n * @param {boolean} uncover - If true, \"cover\" will be clear.\r\n */\n\n function apply(uncover) {\n Components.Elements.each(function (Slide) {\n var img = child(Slide.slide, 'IMG') || child(Slide.container, 'IMG');\n\n if (img && img.src) {\n cover(img, uncover);\n }\n });\n }\n /**\r\n * Set background image of the parent element, using source of the given image element.\r\n *\r\n * @param {Element} img - An image element.\r\n * @param {boolean} uncover - Reset \"cover\".\r\n */\n\n\n function cover(img, uncover) {\n applyStyle(img.parentElement, {\n background: uncover ? '' : \"center/cover no-repeat url(\\\"\" + img.src + \"\\\")\"\n });\n applyStyle(img, {\n display: uncover ? '' : 'none'\n });\n }\n\n return Cover;\n});\n;// CONCATENATED MODULE: ./src/js/components/arrows/path.js\n/**\r\n * Export vector path for an arrow.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n/**\r\n * Namespace definition for SVG element.\r\n *\r\n * @type {string}\r\n */\nvar XML_NAME_SPACE = 'http://www.w3.org/2000/svg';\n/**\r\n * The arrow vector path.\r\n *\r\n * @type {number}\r\n */\n\nvar PATH = 'm15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z';\n/**\r\n * SVG width and height.\r\n *\r\n * @type {number}\r\n */\n\nvar SIZE = 40;\n;// CONCATENATED MODULE: ./src/js/components/arrows/index.js\n/**\r\n * The component for appending prev/next arrows.\r\n *\r\n * @author Naotoshi Fujita\r\n * @copyright Naotoshi Fujita. All rights reserved.\r\n */\n\n\n\n/**\r\n * The component for appending prev/next arrows.\r\n *\r\n * @param {Splide} Splide - A Splide instance.\r\n * @param {Object} Components - An object containing components.\r\n * @param {string} name - A component name as a lowercase string.\r\n *\r\n * @return {Object} - The component object.\r\n */\n\n/* harmony default export */ const arrows = (function (Splide, Components, name) {\n /**\r\n * Previous arrow element.\r\n *\r\n * @type {Element|undefined}\r\n */\n var prev;\n /**\r\n * Next arrow element.\r\n *\r\n * @type {Element|undefined}\r\n */\n\n var next;\n /**\r\n * Store the class list.\r\n *\r\n * @type {Object}\r\n */\n\n var classes = Splide.classes;\n /**\r\n * Hold the root element.\r\n *\r\n * @type {Element}\r\n */\n\n var root = Splide.root;\n /**\r\n * Whether arrows are created programmatically or not.\r\n *\r\n * @type {boolean}\r\n */\n\n var created;\n /**\r\n * Hold the Elements component.\r\n *\r\n * @type {Object}\r\n */\n\n var Elements = Components.Elements;\n /**\r\n * Arrows component object.\r\n *\r\n * @type {Object}\r\n */\n\n var Arrows = {\n /**\r\n * Required when the arrows option is true.\r\n *\r\n * @type {boolean}\r\n */\n required: Splide.options.arrows,\n\n /**\r\n * Called when the component is mounted.\r\n */\n mount: function mount() {\n // Attempt to get arrows from HTML source.\n prev = Elements.arrows.prev;\n next = Elements.arrows.next; // If arrows were not found in HTML, let's generate them.\n\n if ((!prev || !next) && Splide.options.arrows) {\n prev = createArrow(true);\n next = createArrow(false);\n created = true;\n appendArrows();\n }\n\n if (prev && next) {\n bind();\n }\n\n this.arrows = {\n prev: prev,\n next: next\n };\n },\n\n /**\r\n * Called after all components are mounted.\r\n */\n mounted: function mounted() {\n Splide.emit(name + \":mounted\", prev, next);\n },\n\n /**\r\n * Destroy.\r\n */\n destroy: function destroy() {\n removeAttribute([prev, next], 'disabled');\n\n if (created) {\n dom_remove(prev.parentElement);\n }\n }\n };\n /**\r\n * Listen to native and custom events.\r\n */\n\n function bind() {\n Splide.on('click', function () {\n Splide.go('<');\n }, prev).on('click', function () {\n Splide.go('>');\n }, next).on('mounted move updated refresh', updateDisabled);\n }\n /**\r\n * Update a disabled attribute.\r\n */\n\n\n function updateDisabled() {\n var _Components$Controlle = Components.Controller,\n prevIndex = _Components$Controlle.prevIndex,\n nextIndex = _Components$Controlle.nextIndex;\n var isEnough = Splide.length > Splide.options.perPage || Splide.is(LOOP);\n prev.disabled = prevIndex < 0 || !isEnough;\n next.disabled = nextIndex < 0 || !isEnough;\n Splide.emit(name + \":updated\", prev, next, prevIndex, nextIndex);\n }\n /**\r\n * Create a wrapper element and append arrows.\r\n */\n\n\n function appendArrows() {\n var wrapper = create('div', {\n \"class\": classes.arrows\n });\n append(wrapper, prev);\n append(wrapper, next);\n var slider = Elements.slider;\n var parent = Splide.options.arrows === 'slider' && slider ? slider : root;\n before(wrapper, parent.firstElementChild);\n }\n /**\r\n * Create an arrow element.\r\n *\r\n * @param {boolean} prev - Determine to create a prev arrow or next arrow.\r\n *\r\n * @return {Element} - A created arrow element.\r\n */\n\n\n function createArrow(prev) {\n var arrow = \"