{"mappings":"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","sources":["","static/js/home.js","node_modules/@glidejs/glide/dist/glide.esm.js"],"sourcesContent":["(() => {\n/*!\n * Glide.js v3.6.2\n * (c) 2013-2024 Jędrzej Chałubek (https://github.com/jedrzejchalubek/)\n * Released under the MIT License.\n */ function $5137c3620ef83169$var$ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction $5137c3620ef83169$var$_objectSpread2(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) $5137c3620ef83169$var$ownKeys(Object(source), true).forEach(function(key) {\n $5137c3620ef83169$var$_defineProperty(target, key, source[key]);\n });\n else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else $5137c3620ef83169$var$ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction $5137c3620ef83169$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $5137c3620ef83169$var$_typeof = function(obj) {\n return typeof obj;\n };\n else $5137c3620ef83169$var$_typeof = function(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $5137c3620ef83169$var$_typeof(obj);\n}\nfunction $5137c3620ef83169$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $5137c3620ef83169$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $5137c3620ef83169$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $5137c3620ef83169$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $5137c3620ef83169$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $5137c3620ef83169$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nfunction $5137c3620ef83169$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $5137c3620ef83169$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $5137c3620ef83169$var$_getPrototypeOf(o) {\n $5137c3620ef83169$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $5137c3620ef83169$var$_getPrototypeOf(o);\n}\nfunction $5137c3620ef83169$var$_setPrototypeOf(o, p) {\n $5137c3620ef83169$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $5137c3620ef83169$var$_setPrototypeOf(o, p);\n}\nfunction $5137c3620ef83169$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $5137c3620ef83169$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $5137c3620ef83169$var$_possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) return call;\n else if (call !== void 0) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return $5137c3620ef83169$var$_assertThisInitialized(self);\n}\nfunction $5137c3620ef83169$var$_createSuper(Derived) {\n var hasNativeReflectConstruct = $5137c3620ef83169$var$_isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = $5137c3620ef83169$var$_getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = $5137c3620ef83169$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $5137c3620ef83169$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $5137c3620ef83169$var$_superPropBase(object, property) {\n while(!Object.prototype.hasOwnProperty.call(object, property)){\n object = $5137c3620ef83169$var$_getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction $5137c3620ef83169$var$_get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) $5137c3620ef83169$var$_get = Reflect.get;\n else $5137c3620ef83169$var$_get = function _get(target, property, receiver) {\n var base = $5137c3620ef83169$var$_superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) return desc.get.call(arguments.length < 3 ? target : receiver);\n return desc.value;\n };\n return $5137c3620ef83169$var$_get.apply(this, arguments);\n}\nvar $5137c3620ef83169$var$defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */ type: \"slider\",\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */ startAt: 0,\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */ perView: 1,\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */ focusAt: 0,\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */ gap: 10,\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */ autoplay: false,\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */ hoverpause: true,\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */ keyboard: true,\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */ bound: false,\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */ swipeThreshold: 80,\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */ dragThreshold: 120,\n /**\n * A number of slides moved on single swipe.\n *\n * Available types:\n * `` - Moves slider by one slide per swipe\n * `|` - Moves slider between views per swipe (number of slides defined in `perView` options)\n *\n * @type {String}\n */ perSwipe: \"\",\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */ touchRatio: 0.5,\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */ touchAngle: 45,\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */ animationDuration: 400,\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */ rewind: true,\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */ rewindDuration: 800,\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */ animationTimingFunc: \"cubic-bezier(.165, .840, .440, 1)\",\n /**\n * Wait for the animation to finish until the next user input can be processed\n *\n * @type {boolean}\n */ waitForTransition: true,\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */ throttle: 10,\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */ direction: \"ltr\",\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */ peek: 0,\n /**\n * Defines how many clones of current viewport will be generated.\n *\n * @type {Number}\n */ cloningRatio: 1,\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */ breakpoints: {},\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */ classes: {\n swipeable: \"glide--swipeable\",\n dragging: \"glide--dragging\",\n direction: {\n ltr: \"glide--ltr\",\n rtl: \"glide--rtl\"\n },\n type: {\n slider: \"glide--slider\",\n carousel: \"glide--carousel\"\n },\n slide: {\n clone: \"glide__slide--clone\",\n active: \"glide__slide--active\"\n },\n arrow: {\n disabled: \"glide__arrow--disabled\"\n },\n nav: {\n active: \"glide__bullet--active\"\n }\n }\n};\n/**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */ function $5137c3620ef83169$var$warn(msg) {\n console.error(\"[Glide warn]: \".concat(msg));\n}\n/**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */ function $5137c3620ef83169$var$toInt(value) {\n return parseInt(value);\n}\n/**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */ function $5137c3620ef83169$var$toFloat(value) {\n return parseFloat(value);\n}\n/**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */ function $5137c3620ef83169$var$isString(value) {\n return typeof value === \"string\";\n}\n/**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */ function $5137c3620ef83169$var$isObject(value) {\n var type = $5137c3620ef83169$var$_typeof(value);\n return type === \"function\" || type === \"object\" && !!value; // eslint-disable-line no-mixed-operators\n}\n/**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */ function $5137c3620ef83169$var$isFunction(value) {\n return typeof value === \"function\";\n}\n/**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */ function $5137c3620ef83169$var$isUndefined(value) {\n return typeof value === \"undefined\";\n}\n/**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */ function $5137c3620ef83169$var$isArray(value) {\n return value.constructor === Array;\n}\n/**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */ function $5137c3620ef83169$var$mount(glide, extensions, events) {\n var components = {};\n for(var name in extensions)if ($5137c3620ef83169$var$isFunction(extensions[name])) components[name] = extensions[name](glide, components, events);\n else $5137c3620ef83169$var$warn(\"Extension must be a function\");\n for(var _name in components)if ($5137c3620ef83169$var$isFunction(components[_name].mount)) components[_name].mount();\n return components;\n}\n/**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */ function $5137c3620ef83169$var$define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n}\n/**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */ function $5137c3620ef83169$var$sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function(r, k) {\n r[k] = obj[k];\n return r[k], r;\n }, {});\n}\n/**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */ function $5137c3620ef83169$var$mergeOptions(defaults, settings) {\n var options = Object.assign({}, defaults, settings); // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n if (settings.hasOwnProperty(\"classes\")) {\n options.classes = Object.assign({}, defaults.classes, settings.classes);\n var properties = [\n \"direction\",\n \"type\",\n \"slide\",\n \"arrow\",\n \"nav\"\n ];\n properties.forEach(function(property) {\n if (settings.classes.hasOwnProperty(property)) options.classes[property] = $5137c3620ef83169$var$_objectSpread2($5137c3620ef83169$var$_objectSpread2({}, defaults.classes[property]), settings.classes[property]);\n });\n }\n if (settings.hasOwnProperty(\"breakpoints\")) options.breakpoints = Object.assign({}, defaults.breakpoints, settings.breakpoints);\n return options;\n}\nvar $5137c3620ef83169$var$EventsBus = /*#__PURE__*/ function() {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */ function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n $5137c3620ef83169$var$_classCallCheck(this, EventsBus);\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */ $5137c3620ef83169$var$_createClass(EventsBus, [\n {\n key: \"on\",\n value: function on(event, handler) {\n if ($5137c3620ef83169$var$isArray(event)) {\n for(var i = 0; i < event.length; i++)this.on(event[i], handler);\n return;\n } // Create the event's object if not yet created\n if (!this.hop.call(this.events, event)) this.events[event] = [];\n // Add the handler to queue\n var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n },\n {\n key: \"emit\",\n value: function emit(event, context) {\n if ($5137c3620ef83169$var$isArray(event)) {\n for(var i = 0; i < event.length; i++)this.emit(event[i], context);\n return;\n } // If the event doesn't exist, or there's no handlers in queue, just leave\n if (!this.hop.call(this.events, event)) return;\n // Cycle through events queue, fire!\n this.events[event].forEach(function(item) {\n item(context || {});\n });\n }\n }\n ]);\n return EventsBus;\n}();\nvar $5137c3620ef83169$var$Glide$1 = /*#__PURE__*/ function() {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */ function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n $5137c3620ef83169$var$_classCallCheck(this, Glide);\n this._c = {};\n this._t = [];\n this._e = new $5137c3620ef83169$var$EventsBus();\n this.disabled = false;\n this.selector = selector;\n this.settings = $5137c3620ef83169$var$mergeOptions($5137c3620ef83169$var$defaults, options);\n this.index = this.settings.startAt;\n }\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */ $5137c3620ef83169$var$_createClass(Glide, [\n {\n key: \"mount\",\n value: function mount$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this._e.emit(\"mount.before\");\n if ($5137c3620ef83169$var$isObject(extensions)) this._c = $5137c3620ef83169$var$mount(this, extensions, this._e);\n else $5137c3620ef83169$var$warn(\"You need to provide a object on `mount()`\");\n this._e.emit(\"mount.after\");\n return this;\n }\n },\n {\n key: \"mutate\",\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n if ($5137c3620ef83169$var$isArray(transformers)) this._t = transformers;\n else $5137c3620ef83169$var$warn(\"You need to provide a array on `mutate()`\");\n return this;\n }\n },\n {\n key: \"update\",\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.settings = $5137c3620ef83169$var$mergeOptions(this.settings, settings);\n if (settings.hasOwnProperty(\"startAt\")) this.index = settings.startAt;\n this._e.emit(\"update\");\n return this;\n }\n },\n {\n key: \"go\",\n value: function go(pattern) {\n this._c.Run.make(pattern);\n return this;\n }\n },\n {\n key: \"move\",\n value: function move(distance) {\n this._c.Transition.disable();\n this._c.Move.make(distance);\n return this;\n }\n },\n {\n key: \"destroy\",\n value: function destroy() {\n this._e.emit(\"destroy\");\n return this;\n }\n },\n {\n key: \"play\",\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (interval) this.settings.autoplay = interval;\n this._e.emit(\"play\");\n return this;\n }\n },\n {\n key: \"pause\",\n value: function pause() {\n this._e.emit(\"pause\");\n return this;\n }\n },\n {\n key: \"disable\",\n value: function disable() {\n this.disabled = true;\n return this;\n }\n },\n {\n key: \"enable\",\n value: function enable() {\n this.disabled = false;\n return this;\n }\n },\n {\n key: \"on\",\n value: function on(event, handler) {\n this._e.on(event, handler);\n return this;\n }\n },\n {\n key: \"isType\",\n value: function isType(name) {\n return this.settings.type === name;\n }\n },\n {\n key: \"settings\",\n get: function get() {\n return this._o;\n },\n set: function set(o) {\n if ($5137c3620ef83169$var$isObject(o)) this._o = o;\n else $5137c3620ef83169$var$warn(\"Options must be an `object` instance.\");\n }\n },\n {\n key: \"index\",\n get: function get() {\n return this._i;\n },\n set: function set(i) {\n this._i = $5137c3620ef83169$var$toInt(i);\n }\n },\n {\n key: \"type\",\n get: function get() {\n return this.settings.type;\n }\n },\n {\n key: \"disabled\",\n get: function get() {\n return this._d;\n },\n set: function set(status) {\n this._d = !!status;\n }\n }\n ]);\n return Glide;\n}();\nfunction $5137c3620ef83169$var$Run(Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */ mount: function mount() {\n this._o = false;\n },\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */ make: function make(move) {\n var _this = this;\n if (!Glide.disabled) {\n !Glide.settings.waitForTransition || Glide.disable();\n this.move = move;\n Events.emit(\"run.before\", this.move);\n this.calculate();\n Events.emit(\"run\", this.move);\n Components.Transition.after(function() {\n if (_this.isStart()) Events.emit(\"run.start\", _this.move);\n if (_this.isEnd()) Events.emit(\"run.end\", _this.move);\n if (_this.isOffset()) {\n _this._o = false;\n Events.emit(\"run.offset\", _this.move);\n }\n Events.emit(\"run.after\", _this.move);\n Glide.enable();\n });\n }\n },\n /**\n * Calculates current index based on defined move.\n *\n * @return {Number|Undefined}\n */ calculate: function calculate() {\n var move = this.move, length = this.length;\n var steps = move.steps, direction = move.direction; // By default assume that size of view is equal to one slide\n var viewSize = 1; // While direction is `=` we want jump to\n // a specified index described in steps.\n if (direction === \"=\") {\n // Check if bound is true, \n // as we want to avoid whitespaces.\n if (Glide.settings.bound && $5137c3620ef83169$var$toInt(steps) > length) {\n Glide.index = length;\n return;\n }\n Glide.index = steps;\n return;\n } // When pattern is equal to `>>` we want\n // fast forward to the last slide.\n if (direction === \">\" && steps === \">\") {\n Glide.index = length;\n return;\n } // When pattern is equal to `<<` we want\n // fast forward to the first slide.\n if (direction === \"<\" && steps === \"<\") {\n Glide.index = 0;\n return;\n } // pagination movement\n if (direction === \"|\") viewSize = Glide.settings.perView || 1;\n // we are moving forward\n if (direction === \">\" || direction === \"|\" && steps === \">\") {\n var index = calculateForwardIndex(viewSize);\n if (index > length) this._o = true;\n Glide.index = normalizeForwardIndex(index, viewSize);\n return;\n } // we are moving backward\n if (direction === \"<\" || direction === \"|\" && steps === \"<\") {\n var _index = calculateBackwardIndex(viewSize);\n if (_index < 0) this._o = true;\n Glide.index = normalizeBackwardIndex(_index, viewSize);\n return;\n }\n $5137c3620ef83169$var$warn(\"Invalid direction pattern [\".concat(direction).concat(steps, \"] has been used\"));\n },\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */ isStart: function isStart() {\n return Glide.index <= 0;\n },\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */ isEnd: function isEnd() {\n return Glide.index >= this.length;\n },\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */ isOffset: function isOffset() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n if (!direction) return this._o;\n if (!this._o) return false;\n // did we view to the right?\n if (direction === \"|>\") return this.move.direction === \"|\" && this.move.steps === \">\";\n // did we view to the left?\n if (direction === \"|<\") return this.move.direction === \"|\" && this.move.steps === \"<\";\n return this.move.direction === direction;\n },\n /**\n * Checks if bound mode is active\n *\n * @return {Boolean}\n */ isBound: function isBound() {\n return Glide.isType(\"slider\") && Glide.settings.focusAt !== \"center\" && Glide.settings.bound;\n }\n };\n /**\n * Returns index value to move forward/to the right\n *\n * @param viewSize\n * @returns {Number}\n */ function calculateForwardIndex(viewSize) {\n var index = Glide.index;\n if (Glide.isType(\"carousel\")) return index + viewSize;\n return index + (viewSize - index % viewSize);\n }\n /**\n * Normalizes the given forward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {Number}\n */ function normalizeForwardIndex(index, viewSize) {\n var length = Run.length;\n if (index <= length) return index;\n if (Glide.isType(\"carousel\")) return index - (length + 1);\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on the last possible index value given by bound\n if (Run.isBound() && !Run.isEnd()) return length;\n return 0;\n }\n if (Run.isBound()) return length;\n return Math.floor(length / viewSize) * viewSize;\n }\n /**\n * Calculates index value to move backward/to the left\n *\n * @param viewSize\n * @returns {Number}\n */ function calculateBackwardIndex(viewSize) {\n var index = Glide.index;\n if (Glide.isType(\"carousel\")) return index - viewSize;\n // ensure our back navigation results in the same index as a forward navigation\n // to experience a homogeneous paging\n var view = Math.ceil(index / viewSize);\n return (view - 1) * viewSize;\n }\n /**\n * Normalizes the given backward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {*}\n */ function normalizeBackwardIndex(index, viewSize) {\n var length = Run.length;\n if (index >= 0) return index;\n if (Glide.isType(\"carousel\")) return index + (length + 1);\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on first possible index value before we to rewind to the length given by bound\n if (Run.isBound() && Run.isStart()) return length;\n return Math.floor(length / viewSize) * viewSize;\n }\n return 0;\n }\n $5137c3620ef83169$var$define(Run, \"move\", {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */ get: function get() {\n return this._m;\n },\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */ set: function set(value) {\n var step = value.substr(1);\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? $5137c3620ef83169$var$toInt(step) ? $5137c3620ef83169$var$toInt(step) : step : 0\n };\n }\n });\n $5137c3620ef83169$var$define(Run, \"length\", {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */ get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length; // If the `bound` option is active, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n if (this.isBound()) return length - 1 - ($5137c3620ef83169$var$toInt(settings.perView) - 1) + $5137c3620ef83169$var$toInt(settings.focusAt);\n return length - 1;\n }\n });\n $5137c3620ef83169$var$define(Run, \"offset\", {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */ get: function get() {\n return this._o;\n }\n });\n return Run;\n}\n/**\n * Returns a current time.\n *\n * @return {Number}\n */ function $5137c3620ef83169$var$now() {\n return new Date().getTime();\n}\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */ function $5137c3620ef83169$var$throttle(func, wait) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var timeout, context, args, result;\n var previous = 0;\n var later = function later() {\n previous = options.leading === false ? 0 : $5137c3620ef83169$var$now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n var throttled = function throttled() {\n var at = $5137c3620ef83169$var$now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) timeout = setTimeout(later, remaining);\n return result;\n };\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n return throttled;\n}\nvar $5137c3620ef83169$var$MARGIN_TYPE = {\n ltr: [\n \"marginLeft\",\n \"marginRight\"\n ],\n rtl: [\n \"marginRight\",\n \"marginLeft\"\n ]\n};\nfunction $5137c3620ef83169$var$Gaps(Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */ apply: function apply(slides) {\n for(var i = 0, len = slides.length; i < len; i++){\n var style = slides[i].style;\n var direction = Components.Direction.value;\n if (i !== 0) style[$5137c3620ef83169$var$MARGIN_TYPE[direction][0]] = \"\".concat(this.value / 2, \"px\");\n else style[$5137c3620ef83169$var$MARGIN_TYPE[direction][0]] = \"\";\n if (i !== slides.length - 1) style[$5137c3620ef83169$var$MARGIN_TYPE[direction][1]] = \"\".concat(this.value / 2, \"px\");\n else style[$5137c3620ef83169$var$MARGIN_TYPE[direction][1]] = \"\";\n }\n },\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */ remove: function remove(slides) {\n for(var i = 0, len = slides.length; i < len; i++){\n var style = slides[i].style;\n style.marginLeft = \"\";\n style.marginRight = \"\";\n }\n }\n };\n $5137c3620ef83169$var$define(Gaps, \"value\", {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */ get: function get() {\n return $5137c3620ef83169$var$toInt(Glide.settings.gap);\n }\n });\n $5137c3620ef83169$var$define(Gaps, \"grow\", {\n /**\n * Gets additional dimensions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */ get: function get() {\n return Gaps.value * Components.Sizes.length;\n }\n });\n $5137c3620ef83169$var$define(Gaps, \"reductor\", {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */ get: function get() {\n var perView = Glide.settings.perView;\n return Gaps.value * (perView - 1) / perView;\n }\n });\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */ Events.on([\n \"build.after\",\n \"update\"\n ], $5137c3620ef83169$var$throttle(function() {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */ Events.on(\"destroy\", function() {\n Gaps.remove(Components.Html.wrapper.children);\n });\n return Gaps;\n}\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */ function $5137c3620ef83169$var$siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n for(; n; n = n.nextSibling)if (n.nodeType === 1 && n !== node) matched.push(n);\n return matched;\n }\n return [];\n}\n/**\n * Coerces a NodeList to an Array.\n *\n * @param {NodeList} nodeList\n * @return {Array}\n */ function $5137c3620ef83169$var$toArray(nodeList) {\n return Array.prototype.slice.call(nodeList);\n}\nvar $5137c3620ef83169$var$TRACK_SELECTOR = '[data-glide-el=\"track\"]';\nfunction $5137c3620ef83169$var$Html(Glide, Components, Events) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */ mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector($5137c3620ef83169$var$TRACK_SELECTOR);\n this.collectSlides();\n },\n /**\n * Collect slides\n */ collectSlides: function collectSlides() {\n this.slides = $5137c3620ef83169$var$toArray(this.wrapper.children).filter(function(slide) {\n return !slide.classList.contains(Glide.settings.classes.slide.clone);\n });\n }\n };\n $5137c3620ef83169$var$define(Html, \"root\", {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */ get: function get() {\n return Html._r;\n },\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */ set: function set(r) {\n if ($5137c3620ef83169$var$isString(r)) r = document.querySelector(r);\n if (r !== null) Html._r = r;\n else $5137c3620ef83169$var$warn(\"Root element must be a existing Html node\");\n }\n });\n $5137c3620ef83169$var$define(Html, \"track\", {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */ get: function get() {\n return Html._t;\n },\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */ set: function set(t) {\n Html._t = t;\n }\n });\n $5137c3620ef83169$var$define(Html, \"wrapper\", {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */ get: function get() {\n return Html.track.children[0];\n }\n });\n /**\n * Add/remove/reorder dynamic slides\n */ Events.on(\"update\", function() {\n Html.collectSlides();\n });\n return Html;\n}\nfunction $5137c3620ef83169$var$Peek(Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */ mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n $5137c3620ef83169$var$define(Peek, \"value\", {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */ get: function get() {\n return Peek._v;\n },\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */ set: function set(value) {\n if ($5137c3620ef83169$var$isObject(value)) {\n value.before = $5137c3620ef83169$var$toInt(value.before);\n value.after = $5137c3620ef83169$var$toInt(value.after);\n } else value = $5137c3620ef83169$var$toInt(value);\n Peek._v = value;\n }\n });\n $5137c3620ef83169$var$define(Peek, \"reductor\", {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */ get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n if ($5137c3620ef83169$var$isObject(value)) return value.before / perView + value.after / perView;\n return value * 2 / perView;\n }\n });\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */ Events.on([\n \"resize\",\n \"update\"\n ], function() {\n Peek.mount();\n });\n return Peek;\n}\nfunction $5137c3620ef83169$var$Move(Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */ mount: function mount() {\n this._o = 0;\n },\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */ make: function make() {\n var _this = this;\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.offset = offset;\n Events.emit(\"move\", {\n movement: this.value\n });\n Components.Transition.after(function() {\n Events.emit(\"move.after\", {\n movement: _this.value\n });\n });\n }\n };\n $5137c3620ef83169$var$define(Move, \"offset\", {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */ get: function get() {\n return Move._o;\n },\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */ set: function set(value) {\n Move._o = !$5137c3620ef83169$var$isUndefined(value) ? $5137c3620ef83169$var$toInt(value) : 0;\n }\n });\n $5137c3620ef83169$var$define(Move, \"translate\", {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */ get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n $5137c3620ef83169$var$define(Move, \"value\", {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */ get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n if (Components.Direction.is(\"rtl\")) return translate + offset;\n return translate - offset;\n }\n });\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */ Events.on([\n \"build.before\",\n \"run\"\n ], function() {\n Move.make();\n });\n return Move;\n}\nfunction $5137c3620ef83169$var$Sizes(Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimensions of slides.\n *\n * @return {Void}\n */ setupSlides: function setupSlides() {\n var width = \"\".concat(this.slideWidth, \"px\");\n var slides = Components.Html.slides;\n for(var i = 0; i < slides.length; i++)slides[i].style.width = width;\n },\n /**\n * Setups dimensions of slides wrapper.\n *\n * @return {Void}\n */ setupWrapper: function setupWrapper() {\n Components.Html.wrapper.style.width = \"\".concat(this.wrapperSize, \"px\");\n },\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */ remove: function remove() {\n var slides = Components.Html.slides;\n for(var i = 0; i < slides.length; i++)slides[i].style.width = \"\";\n Components.Html.wrapper.style.width = \"\";\n }\n };\n $5137c3620ef83169$var$define(Sizes, \"length\", {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */ get: function get() {\n return Components.Html.slides.length;\n }\n });\n $5137c3620ef83169$var$define(Sizes, \"width\", {\n /**\n * Gets width value of the slider (visible area).\n *\n * @return {Number}\n */ get: function get() {\n return Components.Html.track.offsetWidth;\n }\n });\n $5137c3620ef83169$var$define(Sizes, \"wrapperSize\", {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */ get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n $5137c3620ef83169$var$define(Sizes, \"slideWidth\", {\n /**\n * Gets width value of a single slide.\n *\n * @return {Number}\n */ get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimensions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */ Events.on([\n \"build.before\",\n \"resize\",\n \"update\"\n ], function() {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */ Events.on(\"destroy\", function() {\n Sizes.remove();\n });\n return Sizes;\n}\nfunction $5137c3620ef83169$var$Build(Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */ mount: function mount() {\n Events.emit(\"build.before\");\n this.typeClass();\n this.activeClass();\n Events.emit(\"build.after\");\n },\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */ typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes.type[Glide.settings.type]);\n },\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */ activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n if (slide) {\n slide.classList.add(classes.slide.active);\n $5137c3620ef83169$var$siblings(slide).forEach(function(sibling) {\n sibling.classList.remove(classes.slide.active);\n });\n }\n },\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */ removeClasses: function removeClasses() {\n var _Glide$settings$class = Glide.settings.classes, type = _Glide$settings$class.type, slide = _Glide$settings$class.slide;\n Components.Html.root.classList.remove(type[Glide.settings.type]);\n Components.Html.slides.forEach(function(sibling) {\n sibling.classList.remove(slide.active);\n });\n }\n };\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */ Events.on([\n \"destroy\",\n \"update\"\n ], function() {\n Build.removeClasses();\n });\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimensions\n * - on updating settings via API\n */ Events.on([\n \"resize\",\n \"update\"\n ], function() {\n Build.mount();\n });\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */ Events.on(\"move.after\", function() {\n Build.activeClass();\n });\n return Build;\n}\nfunction $5137c3620ef83169$var$Clones(Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */ mount: function mount() {\n this.items = [];\n if (Glide.isType(\"carousel\")) this.items = this.collect();\n },\n /**\n * Collect clones with pattern.\n *\n * @return {[]}\n */ collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings, perView = _Glide$settings.perView, classes = _Glide$settings.classes, cloningRatio = _Glide$settings.cloningRatio;\n if (slides.length > 0) {\n var peekIncrementer = +!!Glide.settings.peek;\n var cloneCount = perView + peekIncrementer + Math.round(perView / 2);\n var append = slides.slice(0, cloneCount).reverse();\n var prepend = slides.slice(cloneCount * -1);\n for(var r = 0; r < Math.max(cloningRatio, Math.floor(perView / slides.length)); r++){\n for(var i = 0; i < append.length; i++){\n var clone = append[i].cloneNode(true);\n clone.classList.add(classes.slide.clone);\n items.push(clone);\n }\n for(var _i = 0; _i < prepend.length; _i++){\n var _clone = prepend[_i].cloneNode(true);\n _clone.classList.add(classes.slide.clone);\n items.unshift(_clone);\n }\n }\n }\n return items;\n },\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */ append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html, wrapper = _Components$Html.wrapper, slides = _Components$Html.slides;\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half * -1).reverse();\n var width = \"\".concat(Components.Sizes.slideWidth, \"px\");\n for(var i = 0; i < append.length; i++)wrapper.appendChild(append[i]);\n for(var _i2 = 0; _i2 < prepend.length; _i2++)wrapper.insertBefore(prepend[_i2], slides[0]);\n for(var _i3 = 0; _i3 < items.length; _i3++)items[_i3].style.width = width;\n },\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */ remove: function remove() {\n var items = this.items;\n for(var i = 0; i < items.length; i++)Components.Html.wrapper.removeChild(items[i]);\n }\n };\n $5137c3620ef83169$var$define(Clones, \"grow\", {\n /**\n * Gets additional dimensions value caused by clones.\n *\n * @return {Number}\n */ get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */ Events.on(\"update\", function() {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */ Events.on(\"build.before\", function() {\n if (Glide.isType(\"carousel\")) Clones.append();\n });\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */ Events.on(\"destroy\", function() {\n Clones.remove();\n });\n return Clones;\n}\nvar $5137c3620ef83169$var$EventsBinder = /*#__PURE__*/ function() {\n /**\n * Construct a EventsBinder instance.\n */ function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n $5137c3620ef83169$var$_classCallCheck(this, EventsBinder);\n this.listeners = listeners;\n }\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */ $5137c3620ef83169$var$_createClass(EventsBinder, [\n {\n key: \"on\",\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if ($5137c3620ef83169$var$isString(events)) events = [\n events\n ];\n for(var i = 0; i < events.length; i++){\n this.listeners[events[i]] = closure;\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n },\n {\n key: \"off\",\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if ($5137c3620ef83169$var$isString(events)) events = [\n events\n ];\n for(var i = 0; i < events.length; i++)el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n },\n {\n key: \"destroy\",\n value: function destroy() {\n delete this.listeners;\n }\n }\n ]);\n return EventsBinder;\n}();\nfunction $5137c3620ef83169$var$Resize(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */ var Binder = new $5137c3620ef83169$var$EventsBinder();\n var Resize = {\n /**\n * Initializes window bindings.\n */ mount: function mount() {\n this.bind();\n },\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */ bind: function bind() {\n Binder.on(\"resize\", window, $5137c3620ef83169$var$throttle(function() {\n Events.emit(\"resize\");\n }, Glide.settings.throttle));\n },\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */ unbind: function unbind() {\n Binder.off(\"resize\", window);\n }\n };\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */ Events.on(\"destroy\", function() {\n Resize.unbind();\n Binder.destroy();\n });\n return Resize;\n}\nvar $5137c3620ef83169$var$VALID_DIRECTIONS = [\n \"ltr\",\n \"rtl\"\n];\nvar $5137c3620ef83169$var$FLIPED_MOVEMENTS = {\n \">\": \"<\",\n \"<\": \">\",\n \"=\": \"=\"\n};\nfunction $5137c3620ef83169$var$Direction(Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */ mount: function mount() {\n this.value = Glide.settings.direction;\n },\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */ resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n if (this.is(\"rtl\")) return pattern.split(token).join($5137c3620ef83169$var$FLIPED_MOVEMENTS[token]);\n return pattern;\n },\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */ is: function is(direction) {\n return this.value === direction;\n },\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */ addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */ removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n $5137c3620ef83169$var$define(Direction, \"value\", {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */ get: function get() {\n return Direction._v;\n },\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */ set: function set(value) {\n if ($5137c3620ef83169$var$VALID_DIRECTIONS.indexOf(value) > -1) Direction._v = value;\n else $5137c3620ef83169$var$warn(\"Direction value must be `ltr` or `rtl`\");\n }\n });\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */ Events.on([\n \"destroy\",\n \"update\"\n ], function() {\n Direction.removeClass();\n });\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */ Events.on(\"update\", function() {\n Direction.mount();\n });\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */ Events.on([\n \"build.before\",\n \"update\"\n ], function() {\n Direction.addClass();\n });\n return Direction;\n}\n/**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */ function $5137c3620ef83169$var$Rtl(Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */ modify: function modify(translate) {\n if (Components.Direction.is(\"rtl\")) return -translate;\n return translate;\n }\n };\n}\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */ function $5137c3620ef83169$var$Gap(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */ modify: function modify(translate) {\n var multiplier = Math.floor(translate / Components.Sizes.slideWidth);\n return translate + Components.Gaps.value * multiplier;\n }\n };\n}\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */ function $5137c3620ef83169$var$Grow(Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */ modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n}\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */ function $5137c3620ef83169$var$Peeking(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */ modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n if ($5137c3620ef83169$var$isObject(peek)) return translate - peek.before;\n return translate - peek;\n }\n return translate;\n }\n };\n}\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */ function $5137c3620ef83169$var$Focusing(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */ modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n if (focusAt === \"center\") return translate - (width / 2 - slideWidth / 2);\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n}\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */ function $5137c3620ef83169$var$mutator(Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */ var TRANSFORMERS = [\n $5137c3620ef83169$var$Gap,\n $5137c3620ef83169$var$Grow,\n $5137c3620ef83169$var$Peeking,\n $5137c3620ef83169$var$Focusing\n ].concat(Glide._t, [\n $5137c3620ef83169$var$Rtl\n ]);\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */ mutate: function mutate(translate) {\n for(var i = 0; i < TRANSFORMERS.length; i++){\n var transformer = TRANSFORMERS[i];\n if ($5137c3620ef83169$var$isFunction(transformer) && $5137c3620ef83169$var$isFunction(transformer().modify)) translate = transformer(Glide, Components, Events).modify(translate);\n else $5137c3620ef83169$var$warn(\"Transformer should be a function that returns an object with `modify()` method\");\n }\n return translate;\n }\n };\n}\nfunction $5137c3620ef83169$var$Translate(Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */ set: function set(value) {\n var transform = $5137c3620ef83169$var$mutator(Glide, Components).mutate(value);\n var translate3d = \"translate3d(\".concat(-1 * transform, \"px, 0px, 0px)\");\n Components.Html.wrapper.style.mozTransform = translate3d; // needed for supported Firefox 10-15\n Components.Html.wrapper.style.webkitTransform = translate3d; // needed for supported Chrome 10-35, Safari 5.1-8, and Opera 15-22\n Components.Html.wrapper.style.transform = translate3d;\n },\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */ remove: function remove() {\n Components.Html.wrapper.style.transform = \"\";\n },\n /**\n * @return {number}\n */ getStartIndex: function getStartIndex() {\n var length = Components.Sizes.length;\n var index = Glide.index;\n var perView = Glide.settings.perView;\n if (Components.Run.isOffset(\">\") || Components.Run.isOffset(\"|>\")) return length + (index - perView);\n // \"modulo length\" converts an index that equals length to zero\n return (index + perView) % length;\n },\n /**\n * @return {number}\n */ getTravelDistance: function getTravelDistance() {\n var travelDistance = Components.Sizes.slideWidth * Glide.settings.perView;\n if (Components.Run.isOffset(\">\") || Components.Run.isOffset(\"|>\")) // reverse travel distance so that we don't have to change subtract operations\n return travelDistance * -1;\n return travelDistance;\n }\n };\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */ Events.on(\"move\", function(context) {\n if (!Glide.isType(\"carousel\") || !Components.Run.isOffset()) return Translate.set(context.movement);\n Components.Transition.after(function() {\n Events.emit(\"translate.jump\");\n Translate.set(Components.Sizes.slideWidth * Glide.index);\n });\n var startWidth = Components.Sizes.slideWidth * Components.Translate.getStartIndex();\n return Translate.set(startWidth - Components.Translate.getTravelDistance());\n });\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */ Events.on(\"destroy\", function() {\n Translate.remove();\n });\n return Translate;\n}\nfunction $5137c3620ef83169$var$Transition(Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */ var disabled = false;\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */ compose: function compose(property) {\n var settings = Glide.settings;\n if (disabled) return \"\".concat(property, \" 0ms \").concat(settings.animationTimingFunc);\n return \"\".concat(property, \" \").concat(this.duration, \"ms \").concat(settings.animationTimingFunc);\n },\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */ set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"transform\";\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */ remove: function remove() {\n Components.Html.wrapper.style.transition = \"\";\n },\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */ after: function after(callback) {\n setTimeout(function() {\n callback();\n }, this.duration);\n },\n /**\n * Enable transition.\n *\n * @return {Void}\n */ enable: function enable() {\n disabled = false;\n this.set();\n },\n /**\n * Disable transition.\n *\n * @return {Void}\n */ disable: function disable() {\n disabled = true;\n this.set();\n }\n };\n $5137c3620ef83169$var$define(Transition, \"duration\", {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */ get: function get() {\n var settings = Glide.settings;\n if (Glide.isType(\"slider\") && Components.Run.offset) return settings.rewindDuration;\n return settings.animationDuration;\n }\n });\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */ Events.on(\"move\", function() {\n Transition.set();\n });\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimensions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */ Events.on([\n \"build.before\",\n \"resize\",\n \"translate.jump\"\n ], function() {\n Transition.disable();\n });\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */ Events.on(\"run\", function() {\n Transition.enable();\n });\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */ Events.on(\"destroy\", function() {\n Transition.remove();\n });\n return Transition;\n}\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */ var $5137c3620ef83169$var$supportsPassive = false;\ntry {\n var $5137c3620ef83169$var$opts = Object.defineProperty({}, \"passive\", {\n get: function get() {\n $5137c3620ef83169$var$supportsPassive = true;\n }\n });\n window.addEventListener(\"testPassive\", null, $5137c3620ef83169$var$opts);\n window.removeEventListener(\"testPassive\", null, $5137c3620ef83169$var$opts);\n} catch (e) {}\nvar $5137c3620ef83169$var$supportsPassive$1 = $5137c3620ef83169$var$supportsPassive;\nvar $5137c3620ef83169$var$START_EVENTS = [\n \"touchstart\",\n \"mousedown\"\n];\nvar $5137c3620ef83169$var$MOVE_EVENTS = [\n \"touchmove\",\n \"mousemove\"\n];\nvar $5137c3620ef83169$var$END_EVENTS = [\n \"touchend\",\n \"touchcancel\",\n \"mouseup\",\n \"mouseleave\"\n];\nvar $5137c3620ef83169$var$MOUSE_EVENTS = [\n \"mousedown\",\n \"mousemove\",\n \"mouseup\",\n \"mouseleave\"\n];\nfunction $5137c3620ef83169$var$Swipe(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */ var Binder = new $5137c3620ef83169$var$EventsBinder();\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = $5137c3620ef83169$var$supportsPassive$1 ? {\n passive: true\n } : false;\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */ mount: function mount() {\n this.bindSwipeStart();\n },\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */ start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n var swipe = this.touches(event);\n swipeSin = null;\n swipeStartX = $5137c3620ef83169$var$toInt(swipe.pageX);\n swipeStartY = $5137c3620ef83169$var$toInt(swipe.pageY);\n this.bindSwipeMove();\n this.bindSwipeEnd();\n Events.emit(\"swipe.start\");\n }\n },\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */ move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings, touchAngle = _Glide$settings.touchAngle, touchRatio = _Glide$settings.touchRatio, classes = _Glide$settings.classes;\n var swipe = this.touches(event);\n var subExSx = $5137c3620ef83169$var$toInt(swipe.pageX) - swipeStartX;\n var subEySy = $5137c3620ef83169$var$toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n Components.Move.make(subExSx * $5137c3620ef83169$var$toFloat(touchRatio));\n Components.Html.root.classList.add(classes.dragging);\n Events.emit(\"swipe.move\");\n } else return false;\n }\n },\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */ end: function end(event) {\n if (!Glide.disabled) {\n var _Glide$settings2 = Glide.settings, perSwipe = _Glide$settings2.perSwipe, touchAngle = _Glide$settings2.touchAngle, classes = _Glide$settings2.classes;\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n this.enable();\n if (swipeDistance > threshold && swipeDeg < touchAngle) Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n else if (swipeDistance < -threshold && swipeDeg < touchAngle) Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n else // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n Components.Html.root.classList.remove(classes.dragging);\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n Events.emit(\"swipe.end\");\n }\n },\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */ bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n var _Glide$settings3 = Glide.settings, swipeThreshold = _Glide$settings3.swipeThreshold, dragThreshold = _Glide$settings3.dragThreshold;\n if (swipeThreshold) Binder.on($5137c3620ef83169$var$START_EVENTS[0], Components.Html.wrapper, function(event) {\n _this.start(event);\n }, capture);\n if (dragThreshold) Binder.on($5137c3620ef83169$var$START_EVENTS[1], Components.Html.wrapper, function(event) {\n _this.start(event);\n }, capture);\n },\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */ unbindSwipeStart: function unbindSwipeStart() {\n Binder.off($5137c3620ef83169$var$START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off($5137c3620ef83169$var$START_EVENTS[1], Components.Html.wrapper, capture);\n },\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */ bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n Binder.on($5137c3620ef83169$var$MOVE_EVENTS, Components.Html.wrapper, $5137c3620ef83169$var$throttle(function(event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */ unbindSwipeMove: function unbindSwipeMove() {\n Binder.off($5137c3620ef83169$var$MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */ bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n Binder.on($5137c3620ef83169$var$END_EVENTS, Components.Html.wrapper, function(event) {\n _this3.end(event);\n });\n },\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */ unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off($5137c3620ef83169$var$END_EVENTS, Components.Html.wrapper);\n },\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */ touches: function touches(event) {\n if ($5137c3620ef83169$var$MOUSE_EVENTS.indexOf(event.type) > -1) return event;\n return event.touches[0] || event.changedTouches[0];\n },\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */ threshold: function threshold(event) {\n var settings = Glide.settings;\n if ($5137c3620ef83169$var$MOUSE_EVENTS.indexOf(event.type) > -1) return settings.dragThreshold;\n return settings.swipeThreshold;\n },\n /**\n * Enables swipe event.\n *\n * @return {self}\n */ enable: function enable() {\n disabled = false;\n Components.Transition.enable();\n return this;\n },\n /**\n * Disables swipe event.\n *\n * @return {self}\n */ disable: function disable() {\n disabled = true;\n Components.Transition.disable();\n return this;\n }\n };\n /**\n * Add component class:\n * - after initial building\n */ Events.on(\"build.after\", function() {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */ Events.on(\"destroy\", function() {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n return Swipe;\n}\nfunction $5137c3620ef83169$var$Images(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */ var Binder = new $5137c3620ef83169$var$EventsBinder();\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */ mount: function mount() {\n this.bind();\n },\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */ bind: function bind() {\n Binder.on(\"dragstart\", Components.Html.wrapper, this.dragstart);\n },\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */ unbind: function unbind() {\n Binder.off(\"dragstart\", Components.Html.wrapper);\n },\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */ dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */ Events.on(\"destroy\", function() {\n Images.unbind();\n Binder.destroy();\n });\n return Images;\n}\nfunction $5137c3620ef83169$var$Anchors(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */ var Binder = new $5137c3620ef83169$var$EventsBinder();\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */ var detached = false;\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */ var prevented = false;\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */ mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */ this._a = Components.Html.wrapper.querySelectorAll(\"a\");\n this.bind();\n },\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */ bind: function bind() {\n Binder.on(\"click\", Components.Html.wrapper, this.click);\n },\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */ unbind: function unbind() {\n Binder.off(\"click\", Components.Html.wrapper);\n },\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */ click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */ detach: function detach() {\n prevented = true;\n if (!detached) {\n for(var i = 0; i < this.items.length; i++)this.items[i].draggable = false;\n detached = true;\n }\n return this;\n },\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */ attach: function attach() {\n prevented = false;\n if (detached) {\n for(var i = 0; i < this.items.length; i++)this.items[i].draggable = true;\n detached = false;\n }\n return this;\n }\n };\n $5137c3620ef83169$var$define(Anchors, \"items\", {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */ get: function get() {\n return Anchors._a;\n }\n });\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */ Events.on(\"swipe.move\", function() {\n Anchors.detach();\n });\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */ Events.on(\"swipe.end\", function() {\n Components.Transition.after(function() {\n Anchors.attach();\n });\n });\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */ Events.on(\"destroy\", function() {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n return Anchors;\n}\nvar $5137c3620ef83169$var$NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar $5137c3620ef83169$var$CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\nvar $5137c3620ef83169$var$PREVIOUS_CONTROLS_SELECTOR = \"\".concat($5137c3620ef83169$var$CONTROLS_SELECTOR, ' [data-glide-dir*=\"<\"]');\nvar $5137c3620ef83169$var$NEXT_CONTROLS_SELECTOR = \"\".concat($5137c3620ef83169$var$CONTROLS_SELECTOR, ' [data-glide-dir*=\">\"]');\nfunction $5137c3620ef83169$var$Controls(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */ var Binder = new $5137c3620ef83169$var$EventsBinder();\n var capture = $5137c3620ef83169$var$supportsPassive$1 ? {\n passive: true\n } : false;\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */ mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */ this._n = Components.Html.root.querySelectorAll($5137c3620ef83169$var$NAV_SELECTOR);\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */ this._c = Components.Html.root.querySelectorAll($5137c3620ef83169$var$CONTROLS_SELECTOR);\n /**\n * Collection of arrow control HTML elements.\n *\n * @private\n * @type {Object}\n */ this._arrowControls = {\n previous: Components.Html.root.querySelectorAll($5137c3620ef83169$var$PREVIOUS_CONTROLS_SELECTOR),\n next: Components.Html.root.querySelectorAll($5137c3620ef83169$var$NEXT_CONTROLS_SELECTOR)\n };\n this.addBindings();\n },\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */ setActive: function setActive() {\n for(var i = 0; i < this._n.length; i++)this.addClass(this._n[i].children);\n },\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */ removeActive: function removeActive() {\n for(var i = 0; i < this._n.length; i++)this.removeClass(this._n[i].children);\n },\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */ addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n if (!item) return;\n item.classList.add(settings.classes.nav.active);\n $5137c3620ef83169$var$siblings(item).forEach(function(sibling) {\n sibling.classList.remove(settings.classes.nav.active);\n });\n },\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */ removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n item === null || item === void 0 || item.classList.remove(Glide.settings.classes.nav.active);\n },\n /**\n * Calculates, removes or adds `Glide.settings.classes.disabledArrow` class on the control arrows\n */ setArrowState: function setArrowState() {\n if (Glide.settings.rewind) return;\n var next = Controls._arrowControls.next;\n var previous = Controls._arrowControls.previous;\n this.resetArrowState(next, previous);\n if (Glide.index === 0) this.disableArrow(previous);\n if (Glide.index === Components.Run.length) this.disableArrow(next);\n },\n /**\n * Removes `Glide.settings.classes.disabledArrow` from given NodeList elements\n *\n * @param {NodeList[]} lists\n */ resetArrowState: function resetArrowState() {\n var settings = Glide.settings;\n for(var _len = arguments.length, lists = new Array(_len), _key = 0; _key < _len; _key++)lists[_key] = arguments[_key];\n lists.forEach(function(list) {\n $5137c3620ef83169$var$toArray(list).forEach(function(element) {\n element.classList.remove(settings.classes.arrow.disabled);\n });\n });\n },\n /**\n * Adds `Glide.settings.classes.disabledArrow` to given NodeList elements\n *\n * @param {NodeList[]} lists\n */ disableArrow: function disableArrow() {\n var settings = Glide.settings;\n for(var _len2 = arguments.length, lists = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++)lists[_key2] = arguments[_key2];\n lists.forEach(function(list) {\n $5137c3620ef83169$var$toArray(list).forEach(function(element) {\n element.classList.add(settings.classes.arrow.disabled);\n });\n });\n },\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */ addBindings: function addBindings() {\n for(var i = 0; i < this._c.length; i++)this.bind(this._c[i].children);\n },\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */ removeBindings: function removeBindings() {\n for(var i = 0; i < this._c.length; i++)this.unbind(this._c[i].children);\n },\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */ bind: function bind(elements) {\n for(var i = 0; i < elements.length; i++){\n Binder.on(\"click\", elements[i], this.click);\n Binder.on(\"touchstart\", elements[i], this.click, capture);\n }\n },\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */ unbind: function unbind(elements) {\n for(var i = 0; i < elements.length; i++)Binder.off([\n \"click\",\n \"touchstart\"\n ], elements[i]);\n },\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in direction given via the\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {void}\n */ click: function click(event) {\n if (!$5137c3620ef83169$var$supportsPassive$1 && event.type === \"touchstart\") event.preventDefault();\n var direction = event.currentTarget.getAttribute(\"data-glide-dir\");\n Components.Run.make(Components.Direction.resolve(direction));\n }\n };\n $5137c3620ef83169$var$define(Controls, \"items\", {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */ get: function get() {\n return Controls._c;\n }\n });\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */ Events.on([\n \"mount.after\",\n \"move.after\"\n ], function() {\n Controls.setActive();\n });\n /**\n * Add or remove disabled class of arrow elements\n */ Events.on([\n \"mount.after\",\n \"run\"\n ], function() {\n Controls.setArrowState();\n });\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */ Events.on(\"destroy\", function() {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n return Controls;\n}\nfunction $5137c3620ef83169$var$Keyboard(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */ var Binder = new $5137c3620ef83169$var$EventsBinder();\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */ mount: function mount() {\n if (Glide.settings.keyboard) this.bind();\n },\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */ bind: function bind() {\n Binder.on(\"keyup\", document, this.press);\n },\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */ unbind: function unbind() {\n Binder.off(\"keyup\", document);\n },\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */ press: function press(event) {\n var perSwipe = Glide.settings.perSwipe;\n var arrowSymbols = {\n ArrowRight: \">\",\n ArrowLeft: \"<\"\n };\n if ([\n \"ArrowRight\",\n \"ArrowLeft\"\n ].includes(event.code)) Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe).concat(arrowSymbols[event.code])));\n }\n };\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */ Events.on([\n \"destroy\",\n \"update\"\n ], function() {\n Keyboard.unbind();\n });\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */ Events.on(\"update\", function() {\n Keyboard.mount();\n });\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */ Events.on(\"destroy\", function() {\n Binder.destroy();\n });\n return Keyboard;\n}\nfunction $5137c3620ef83169$var$Autoplay(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */ var Binder = new $5137c3620ef83169$var$EventsBinder();\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */ mount: function mount() {\n this.enable();\n this.start();\n if (Glide.settings.hoverpause) this.bind();\n },\n /**\n * Enables autoplaying\n *\n * @returns {Void}\n */ enable: function enable() {\n this._e = true;\n },\n /**\n * Disables autoplaying.\n *\n * @returns {Void}\n */ disable: function disable() {\n this._e = false;\n },\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */ start: function start() {\n var _this = this;\n if (!this._e) return;\n this.enable();\n if (Glide.settings.autoplay) {\n if ($5137c3620ef83169$var$isUndefined(this._i)) this._i = setInterval(function() {\n _this.stop();\n Components.Run.make(\">\");\n _this.start();\n Events.emit(\"autoplay\");\n }, this.time);\n }\n },\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */ stop: function stop() {\n this._i = clearInterval(this._i);\n },\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */ bind: function bind() {\n var _this2 = this;\n Binder.on(\"mouseover\", Components.Html.root, function() {\n if (_this2._e) _this2.stop();\n });\n Binder.on(\"mouseout\", Components.Html.root, function() {\n if (_this2._e) _this2.start();\n });\n },\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */ unbind: function unbind() {\n Binder.off([\n \"mouseover\",\n \"mouseout\"\n ], Components.Html.root);\n }\n };\n $5137c3620ef83169$var$define(Autoplay, \"time\", {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */ get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute(\"data-glide-autoplay\");\n if (autoplay) return $5137c3620ef83169$var$toInt(autoplay);\n return $5137c3620ef83169$var$toInt(Glide.settings.autoplay);\n }\n });\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */ Events.on([\n \"destroy\",\n \"update\"\n ], function() {\n Autoplay.unbind();\n });\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */ Events.on([\n \"run.before\",\n \"swipe.start\",\n \"update\"\n ], function() {\n Autoplay.stop();\n });\n Events.on([\n \"pause\",\n \"destroy\"\n ], function() {\n Autoplay.disable();\n Autoplay.stop();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */ Events.on([\n \"run.after\",\n \"swipe.end\"\n ], function() {\n Autoplay.start();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */ Events.on([\n \"play\"\n ], function() {\n Autoplay.enable();\n Autoplay.start();\n });\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */ Events.on(\"update\", function() {\n Autoplay.mount();\n });\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */ Events.on(\"destroy\", function() {\n Binder.destroy();\n });\n return Autoplay;\n}\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */ function $5137c3620ef83169$var$sortBreakpoints(points) {\n if ($5137c3620ef83169$var$isObject(points)) return $5137c3620ef83169$var$sortKeys(points);\n else $5137c3620ef83169$var$warn(\"Breakpoints option must be an object\");\n return {};\n}\nfunction $5137c3620ef83169$var$Breakpoints(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */ var Binder = new $5137c3620ef83169$var$EventsBinder();\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */ var settings = Glide.settings;\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */ var points = $5137c3620ef83169$var$sortBreakpoints(settings.breakpoints);\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */ var defaults = Object.assign({}, settings);\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */ match: function match(points) {\n if (typeof window.matchMedia !== \"undefined\") {\n for(var point in points)if (points.hasOwnProperty(point)) {\n if (window.matchMedia(\"(max-width: \".concat(point, \"px)\")).matches) return points[point];\n }\n }\n return defaults;\n }\n };\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */ Object.assign(settings, Breakpoints.match(points));\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */ Binder.on(\"resize\", window, $5137c3620ef83169$var$throttle(function() {\n Glide.settings = $5137c3620ef83169$var$mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */ Events.on(\"update\", function() {\n points = $5137c3620ef83169$var$sortBreakpoints(points);\n defaults = Object.assign({}, settings);\n });\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */ Events.on(\"destroy\", function() {\n Binder.off(\"resize\", window);\n });\n return Breakpoints;\n}\nvar $5137c3620ef83169$var$COMPONENTS = {\n // Required\n Html: $5137c3620ef83169$var$Html,\n Translate: $5137c3620ef83169$var$Translate,\n Transition: $5137c3620ef83169$var$Transition,\n Direction: $5137c3620ef83169$var$Direction,\n Peek: $5137c3620ef83169$var$Peek,\n Sizes: $5137c3620ef83169$var$Sizes,\n Gaps: $5137c3620ef83169$var$Gaps,\n Move: $5137c3620ef83169$var$Move,\n Clones: $5137c3620ef83169$var$Clones,\n Resize: $5137c3620ef83169$var$Resize,\n Build: $5137c3620ef83169$var$Build,\n Run: $5137c3620ef83169$var$Run,\n // Optional\n Swipe: $5137c3620ef83169$var$Swipe,\n Images: $5137c3620ef83169$var$Images,\n Anchors: $5137c3620ef83169$var$Anchors,\n Controls: $5137c3620ef83169$var$Controls,\n Keyboard: $5137c3620ef83169$var$Keyboard,\n Autoplay: $5137c3620ef83169$var$Autoplay,\n Breakpoints: $5137c3620ef83169$var$Breakpoints\n};\nvar $5137c3620ef83169$export$2e2bcd8739ae039 = /*#__PURE__*/ function(_Core) {\n $5137c3620ef83169$var$_inherits(Glide, _Core);\n var _super = $5137c3620ef83169$var$_createSuper(Glide);\n function Glide() {\n $5137c3620ef83169$var$_classCallCheck(this, Glide);\n return _super.apply(this, arguments);\n }\n $5137c3620ef83169$var$_createClass(Glide, [\n {\n key: \"mount\",\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return $5137c3620ef83169$var$_get($5137c3620ef83169$var$_getPrototypeOf(Glide.prototype), \"mount\", this).call(this, Object.assign({}, $5137c3620ef83169$var$COMPONENTS, extensions));\n }\n }\n ]);\n return Glide;\n}($5137c3620ef83169$var$Glide$1);\n\n\nnew (0, $5137c3620ef83169$export$2e2bcd8739ae039)(\".glide\", {\n type: \"carousel\",\n autoplay: 6000,\n animationDuration: 1000\n}).mount();\n\n})();\n//# sourceMappingURL=home.js.map\n","import Glide from '@glidejs/glide'\n\nnew Glide('.glide', {\n\ttype: 'carousel',\n\tautoplay: 6000,\n\tanimationDuration: 1000\n}).mount();","/*!\n * Glide.js v3.6.2\n * (c) 2013-2024 Jędrzej Chałubek (https://github.com/jedrzejchalubek/)\n * Released under the MIT License.\n */\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}\n\nvar defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */\n type: 'slider',\n\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */\n startAt: 0,\n\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */\n perView: 1,\n\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */\n focusAt: 0,\n\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */\n gap: 10,\n\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */\n autoplay: false,\n\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */\n hoverpause: true,\n\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */\n keyboard: true,\n\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */\n bound: false,\n\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */\n swipeThreshold: 80,\n\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */\n dragThreshold: 120,\n\n /**\n * A number of slides moved on single swipe.\n *\n * Available types:\n * `` - Moves slider by one slide per swipe\n * `|` - Moves slider between views per swipe (number of slides defined in `perView` options)\n *\n * @type {String}\n */\n perSwipe: '',\n\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */\n touchRatio: 0.5,\n\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */\n touchAngle: 45,\n\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */\n animationDuration: 400,\n\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */\n rewind: true,\n\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */\n rewindDuration: 800,\n\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */\n animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n /**\n * Wait for the animation to finish until the next user input can be processed\n *\n * @type {boolean}\n */\n waitForTransition: true,\n\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */\n throttle: 10,\n\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */\n direction: 'ltr',\n\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */\n peek: 0,\n\n /**\n * Defines how many clones of current viewport will be generated.\n *\n * @type {Number}\n */\n cloningRatio: 1,\n\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */\n breakpoints: {},\n\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */\n classes: {\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n type: {\n slider: 'glide--slider',\n carousel: 'glide--carousel'\n },\n slide: {\n clone: 'glide__slide--clone',\n active: 'glide__slide--active'\n },\n arrow: {\n disabled: 'glide__arrow--disabled'\n },\n nav: {\n active: 'glide__bullet--active'\n }\n }\n};\n\n/**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\nfunction warn(msg) {\n console.error(\"[Glide warn]: \".concat(msg));\n}\n\n/**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toInt(value) {\n return parseInt(value);\n}\n/**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\n\nfunction toFloat(value) {\n return parseFloat(value);\n}\n/**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isString(value) {\n return typeof value === 'string';\n}\n/**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction isObject(value) {\n var type = _typeof(value);\n\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n}\n/**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\n/**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isArray(value) {\n return value.constructor === Array;\n}\n\n/**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\n\nfunction mount(glide, extensions, events) {\n var components = {};\n\n for (var name in extensions) {\n if (isFunction(extensions[name])) {\n components[name] = extensions[name](glide, components, events);\n } else {\n warn('Extension must be a function');\n }\n }\n\n for (var _name in components) {\n if (isFunction(components[_name].mount)) {\n components[_name].mount();\n }\n }\n\n return components;\n}\n\n/**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */\nfunction define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n}\n/**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\n\nfunction sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n return r[k], r;\n }, {});\n}\n/**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */\n\nfunction mergeOptions(defaults, settings) {\n var options = Object.assign({}, defaults, settings); // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n\n if (settings.hasOwnProperty('classes')) {\n options.classes = Object.assign({}, defaults.classes, settings.classes);\n var properties = ['direction', 'type', 'slide', 'arrow', 'nav'];\n properties.forEach(function (property) {\n if (settings.classes.hasOwnProperty(property)) {\n options.classes[property] = _objectSpread2(_objectSpread2({}, defaults.classes[property]), settings.classes[property]);\n }\n });\n }\n\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = Object.assign({}, defaults.breakpoints, settings.breakpoints);\n }\n\n return options;\n}\n\nvar EventsBus = /*#__PURE__*/function () {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */\n function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBus);\n\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n _createClass(EventsBus, [{\n key: \"on\",\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n\n return;\n } // Create the event's object if not yet created\n\n\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n } // Add the handler to queue\n\n\n var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: \"emit\",\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n\n return;\n } // If the event doesn't exist, or there's no handlers in queue, just leave\n\n\n if (!this.hop.call(this.events, event)) {\n return;\n } // Cycle through events queue, fire!\n\n\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n\n return EventsBus;\n}();\n\nvar Glide$1 = /*#__PURE__*/function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Glide);\n\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after');\n\n return this;\n }\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n\n }, {\n key: \"mutate\",\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"update\",\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n * `|>` - Move one viewport forward\r\n * `|<` - Move one viewport backward\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"go\",\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"move\",\n value: function move(distance) {\n this._c.Transition.disable();\n\n this._c.Move.make(distance);\n\n return this;\n }\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"play\",\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"pause\",\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"disable\",\n value: function disable() {\n this.disabled = true;\n return this;\n }\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"enable\",\n value: function enable() {\n this.disabled = false;\n return this;\n }\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"isType\",\n value: function isType(name) {\n return this.settings.type === name;\n }\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"settings\",\n get: function get() {\n return this._o;\n }\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */\n ,\n set: function set(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"index\",\n get: function get() {\n return this._i;\n }\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */\n ,\n set: function set(i) {\n this._i = toInt(i);\n }\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n\n }, {\n key: \"type\",\n get: function get() {\n return this.settings.type;\n }\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"disabled\",\n get: function get() {\n return this._d;\n }\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n ,\n set: function set(status) {\n this._d = !!status;\n }\n }]);\n\n return Glide;\n}();\n\nfunction Run (Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n !Glide.settings.waitForTransition || Glide.disable();\n this.move = move;\n Events.emit('run.before', this.move);\n this.calculate();\n Events.emit('run', this.move);\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n\n if (_this.isOffset()) {\n _this._o = false;\n Events.emit('run.offset', _this.move);\n }\n\n Events.emit('run.after', _this.move);\n Glide.enable();\n });\n }\n },\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Number|Undefined}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction; // By default assume that size of view is equal to one slide\n\n var viewSize = 1; // While direction is `=` we want jump to\n // a specified index described in steps.\n\n if (direction === '=') {\n // Check if bound is true, \n // as we want to avoid whitespaces.\n if (Glide.settings.bound && toInt(steps) > length) {\n Glide.index = length;\n return;\n }\n\n Glide.index = steps;\n return;\n } // When pattern is equal to `>>` we want\n // fast forward to the last slide.\n\n\n if (direction === '>' && steps === '>') {\n Glide.index = length;\n return;\n } // When pattern is equal to `<<` we want\n // fast forward to the first slide.\n\n\n if (direction === '<' && steps === '<') {\n Glide.index = 0;\n return;\n } // pagination movement\n\n\n if (direction === '|') {\n viewSize = Glide.settings.perView || 1;\n } // we are moving forward\n\n\n if (direction === '>' || direction === '|' && steps === '>') {\n var index = calculateForwardIndex(viewSize);\n\n if (index > length) {\n this._o = true;\n }\n\n Glide.index = normalizeForwardIndex(index, viewSize);\n return;\n } // we are moving backward\n\n\n if (direction === '<' || direction === '|' && steps === '<') {\n var _index = calculateBackwardIndex(viewSize);\n\n if (_index < 0) {\n this._o = true;\n }\n\n Glide.index = normalizeBackwardIndex(_index, viewSize);\n return;\n }\n\n warn(\"Invalid direction pattern [\".concat(direction).concat(steps, \"] has been used\"));\n },\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index <= 0;\n },\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index >= this.length;\n },\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n if (!direction) {\n return this._o;\n }\n\n if (!this._o) {\n return false;\n } // did we view to the right?\n\n\n if (direction === '|>') {\n return this.move.direction === '|' && this.move.steps === '>';\n } // did we view to the left?\n\n\n if (direction === '|<') {\n return this.move.direction === '|' && this.move.steps === '<';\n }\n\n return this.move.direction === direction;\n },\n\n /**\n * Checks if bound mode is active\n *\n * @return {Boolean}\n */\n isBound: function isBound() {\n return Glide.isType('slider') && Glide.settings.focusAt !== 'center' && Glide.settings.bound;\n }\n };\n /**\n * Returns index value to move forward/to the right\n *\n * @param viewSize\n * @returns {Number}\n */\n\n function calculateForwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index + viewSize;\n }\n\n return index + (viewSize - index % viewSize);\n }\n /**\n * Normalizes the given forward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {Number}\n */\n\n\n function normalizeForwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index <= length) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index - (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on the last possible index value given by bound\n if (Run.isBound() && !Run.isEnd()) {\n return length;\n }\n\n return 0;\n }\n\n if (Run.isBound()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n /**\n * Calculates index value to move backward/to the left\n *\n * @param viewSize\n * @returns {Number}\n */\n\n\n function calculateBackwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index - viewSize;\n } // ensure our back navigation results in the same index as a forward navigation\n // to experience a homogeneous paging\n\n\n var view = Math.ceil(index / viewSize);\n return (view - 1) * viewSize;\n }\n /**\n * Normalizes the given backward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {*}\n */\n\n\n function normalizeBackwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index >= 0) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index + (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on first possible index value before we to rewind to the length given by bound\n if (Run.isBound() && Run.isStart()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n\n return 0;\n }\n\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length; // If the `bound` option is active, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (this.isBound()) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n return Run;\n}\n\n/**\n * Returns a current time.\n *\n * @return {Number}\n */\nfunction now() {\n return new Date().getTime();\n}\n\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction throttle(func, wait) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var timeout, context, args, result;\n var previous = 0;\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\nvar MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n};\nfunction Gaps (Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n define(Gaps, 'grow', {\n /**\n * Gets additional dimensions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * Components.Sizes.length;\n }\n });\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n return Gaps.value * (perView - 1) / perView;\n }\n });\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n return Gaps;\n}\n\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\nfunction siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n}\n/**\n * Coerces a NodeList to an Array.\n *\n * @param {NodeList} nodeList\n * @return {Array}\n */\n\nfunction toArray(nodeList) {\n return Array.prototype.slice.call(nodeList);\n}\n\nvar TRACK_SELECTOR = '[data-glide-el=\"track\"]';\nfunction Html (Glide, Components, Events) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.collectSlides();\n },\n\n /**\n * Collect slides\n */\n collectSlides: function collectSlides() {\n this.slides = toArray(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.slide.clone);\n });\n }\n };\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (r !== null) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n Html._t = t;\n }\n });\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n /**\n * Add/remove/reorder dynamic slides\n */\n\n Events.on('update', function () {\n Html.collectSlides();\n });\n return Html;\n}\n\nfunction Peek (Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n return Peek;\n}\n\nfunction Move (Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.offset = offset;\n Events.emit('move', {\n movement: this.value\n });\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n return Move;\n}\n\nfunction Sizes (Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimensions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = \"\".concat(this.slideWidth, \"px\");\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n /**\n * Setups dimensions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper() {\n Components.Html.wrapper.style.width = \"\".concat(this.wrapperSize, \"px\");\n },\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n define(Sizes, 'width', {\n /**\n * Gets width value of the slider (visible area).\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.track.offsetWidth;\n }\n });\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of a single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimensions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Sizes.remove();\n });\n return Sizes;\n}\n\nfunction Build (Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n this.typeClass();\n this.activeClass();\n Events.emit('build.after');\n },\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes.type[Glide.settings.type]);\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.slide.active);\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.slide.active);\n });\n }\n },\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var _Glide$settings$class = Glide.settings.classes,\n type = _Glide$settings$class.type,\n slide = _Glide$settings$class.slide;\n Components.Html.root.classList.remove(type[Glide.settings.type]);\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(slide.active);\n });\n }\n };\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimensions\n * - on updating settings via API\n */\n\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n\n Events.on('move.after', function () {\n Build.activeClass();\n });\n return Build;\n}\n\nfunction Clones (Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n /**\n * Collect clones with pattern.\n *\n * @return {[]}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes,\n cloningRatio = _Glide$settings.cloningRatio;\n\n if (slides.length > 0) {\n var peekIncrementer = +!!Glide.settings.peek;\n var cloneCount = perView + peekIncrementer + Math.round(perView / 2);\n var append = slides.slice(0, cloneCount).reverse();\n var prepend = slides.slice(cloneCount * -1);\n\n for (var r = 0; r < Math.max(cloningRatio, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < append.length; i++) {\n var clone = append[i].cloneNode(true);\n clone.classList.add(classes.slide.clone);\n items.push(clone);\n }\n\n for (var _i = 0; _i < prepend.length; _i++) {\n var _clone = prepend[_i].cloneNode(true);\n\n _clone.classList.add(classes.slide.clone);\n\n items.unshift(_clone);\n }\n }\n }\n\n return items;\n },\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half * -1).reverse();\n var width = \"\".concat(Components.Sizes.slideWidth, \"px\");\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n define(Clones, 'grow', {\n /**\n * Gets additional dimensions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n\n Events.on('destroy', function () {\n Clones.remove();\n });\n return Clones;\n}\n\nvar EventsBinder = /*#__PURE__*/function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBinder);\n\n this.listeners = listeners;\n }\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n _createClass(EventsBinder, [{\n key: \"on\",\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: \"off\",\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n\n return EventsBinder;\n}();\n\nfunction Resize (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n return Resize;\n}\n\nvar VALID_DIRECTIONS = ['ltr', 'rtl'];\nvar FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n};\nfunction Direction (Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n\n Events.on('update', function () {\n Direction.mount();\n });\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n return Direction;\n}\n\n/**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Rtl (Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Gap (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var multiplier = Math.floor(translate / Components.Sizes.slideWidth);\n return translate + Components.Gaps.value * multiplier;\n }\n };\n}\n\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Grow (Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n}\n\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\nfunction Peeking (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Focusing (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n}\n\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\nfunction mutator (Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n}\n\nfunction Translate (Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n var translate3d = \"translate3d(\".concat(-1 * transform, \"px, 0px, 0px)\");\n Components.Html.wrapper.style.mozTransform = translate3d; // needed for supported Firefox 10-15\n\n Components.Html.wrapper.style.webkitTransform = translate3d; // needed for supported Chrome 10-35, Safari 5.1-8, and Opera 15-22\n\n Components.Html.wrapper.style.transform = translate3d;\n },\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n },\n\n /**\n * @return {number}\n */\n getStartIndex: function getStartIndex() {\n var length = Components.Sizes.length;\n var index = Glide.index;\n var perView = Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n return length + (index - perView);\n } // \"modulo length\" converts an index that equals length to zero\n\n\n return (index + perView) % length;\n },\n\n /**\n * @return {number}\n */\n getTravelDistance: function getTravelDistance() {\n var travelDistance = Components.Sizes.slideWidth * Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n // reverse travel distance so that we don't have to change subtract operations\n return travelDistance * -1;\n }\n\n return travelDistance;\n }\n };\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n\n Events.on('move', function (context) {\n if (!Glide.isType('carousel') || !Components.Run.isOffset()) {\n return Translate.set(context.movement);\n }\n\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(Components.Sizes.slideWidth * Glide.index);\n });\n var startWidth = Components.Sizes.slideWidth * Components.Translate.getStartIndex();\n return Translate.set(startWidth - Components.Translate.getTravelDistance());\n });\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Translate.remove();\n });\n return Translate;\n}\n\nfunction Transition (Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (disabled) {\n return \"\".concat(property, \" 0ms \").concat(settings.animationTimingFunc);\n }\n\n return \"\".concat(property, \" \").concat(this.duration, \"ms \").concat(settings.animationTimingFunc);\n },\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n this.set();\n },\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n this.set();\n }\n };\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n\n Events.on('move', function () {\n Transition.set();\n });\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimensions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n\n Events.on('run', function () {\n Transition.enable();\n });\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Transition.remove();\n });\n return Transition;\n}\n\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\nvar supportsPassive = false;\n\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\n\nvar supportsPassive$1 = supportsPassive;\n\nvar START_EVENTS = ['touchstart', 'mousedown'];\nvar MOVE_EVENTS = ['touchmove', 'mousemove'];\nvar END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\nvar MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\nfunction Swipe (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n var swipe = this.touches(event);\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n this.bindSwipeMove();\n this.bindSwipeEnd();\n Events.emit('swipe.start');\n }\n },\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n var swipe = this.touches(event);\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n Components.Move.make(subExSx * toFloat(touchRatio));\n Components.Html.root.classList.add(classes.dragging);\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var _Glide$settings2 = Glide.settings,\n perSwipe = _Glide$settings2.perSwipe,\n touchAngle = _Glide$settings2.touchAngle,\n classes = _Glide$settings2.classes;\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n } else if (swipeDistance < -threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(classes.dragging);\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n Events.emit('swipe.end');\n }\n },\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var _Glide$settings3 = Glide.settings,\n swipeThreshold = _Glide$settings3.swipeThreshold,\n dragThreshold = _Glide$settings3.dragThreshold;\n\n if (swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n Components.Transition.enable();\n return this;\n },\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n Components.Transition.disable();\n return this;\n }\n };\n /**\n * Add component class:\n * - after initial building\n */\n\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n return Swipe;\n}\n\nfunction Images (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n return Images;\n}\n\nfunction Anchors (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n\n var detached = false;\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n\n var prevented = false;\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n this.bind();\n },\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n }\n\n detached = true;\n }\n\n return this;\n },\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n return Anchors;\n}\n\nvar NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\nvar PREVIOUS_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\"<\\\"]\");\nvar NEXT_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\">\\\"]\");\nfunction Controls (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n /**\n * Collection of arrow control HTML elements.\n *\n * @private\n * @type {Object}\n */\n\n this._arrowControls = {\n previous: Components.Html.root.querySelectorAll(PREVIOUS_CONTROLS_SELECTOR),\n next: Components.Html.root.querySelectorAll(NEXT_CONTROLS_SELECTOR)\n };\n this.addBindings();\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (!item) {\n return;\n }\n\n item.classList.add(settings.classes.nav.active);\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.nav.active);\n });\n },\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n item === null || item === void 0 ? void 0 : item.classList.remove(Glide.settings.classes.nav.active);\n },\n\n /**\n * Calculates, removes or adds `Glide.settings.classes.disabledArrow` class on the control arrows\n */\n setArrowState: function setArrowState() {\n if (Glide.settings.rewind) {\n return;\n }\n\n var next = Controls._arrowControls.next;\n var previous = Controls._arrowControls.previous;\n this.resetArrowState(next, previous);\n\n if (Glide.index === 0) {\n this.disableArrow(previous);\n }\n\n if (Glide.index === Components.Run.length) {\n this.disableArrow(next);\n }\n },\n\n /**\n * Removes `Glide.settings.classes.disabledArrow` from given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n resetArrowState: function resetArrowState() {\n var settings = Glide.settings;\n\n for (var _len = arguments.length, lists = new Array(_len), _key = 0; _key < _len; _key++) {\n lists[_key] = arguments[_key];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.remove(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds `Glide.settings.classes.disabledArrow` to given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n disableArrow: function disableArrow() {\n var settings = Glide.settings;\n\n for (var _len2 = arguments.length, lists = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n lists[_key2] = arguments[_key2];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.add(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in direction given via the\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {void}\n */\n click: function click(event) {\n if (!supportsPassive$1 && event.type === 'touchstart') {\n event.preventDefault();\n }\n\n var direction = event.currentTarget.getAttribute('data-glide-dir');\n Components.Run.make(Components.Direction.resolve(direction));\n }\n };\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n /**\n * Add or remove disabled class of arrow elements\n */\n\n Events.on(['mount.after', 'run'], function () {\n Controls.setArrowState();\n });\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n return Controls;\n}\n\nfunction Keyboard (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n var perSwipe = Glide.settings.perSwipe;\n var arrowSymbols = {\n ArrowRight: '>',\n ArrowLeft: '<'\n };\n\n if (['ArrowRight', 'ArrowLeft'].includes(event.code)) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe).concat(arrowSymbols[event.code])));\n }\n }\n };\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n\n Events.on('update', function () {\n Keyboard.mount();\n });\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Keyboard;\n}\n\nfunction Autoplay (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.enable();\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n /**\n * Enables autoplaying\n *\n * @returns {Void}\n */\n enable: function enable() {\n this._e = true;\n },\n\n /**\n * Disables autoplaying.\n *\n * @returns {Void}\n */\n disable: function disable() {\n this._e = false;\n },\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (!this._e) {\n return;\n }\n\n this.enable();\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n\n Events.emit('autoplay');\n }, this.time);\n }\n }\n },\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n if (_this2._e) {\n _this2.stop();\n }\n });\n Binder.on('mouseout', Components.Html.root, function () {\n if (_this2._e) {\n _this2.start();\n }\n });\n },\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['run.before', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n Events.on(['pause', 'destroy'], function () {\n Autoplay.disable();\n Autoplay.stop();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['run.after', 'swipe.end'], function () {\n Autoplay.start();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['play'], function () {\n Autoplay.enable();\n Autoplay.start();\n });\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n\n Events.on('update', function () {\n Autoplay.mount();\n });\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Autoplay;\n}\n\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n\nfunction sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn(\"Breakpoints option must be an object\");\n }\n\n return {};\n}\n\nfunction Breakpoints (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n\n var settings = Glide.settings;\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n\n var points = sortBreakpoints(settings.breakpoints);\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n\n var defaults = Object.assign({}, settings);\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia(\"(max-width: \".concat(point, \"px)\")).matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n\n Object.assign(settings, Breakpoints.match(points));\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n\n Events.on('update', function () {\n points = sortBreakpoints(points);\n defaults = Object.assign({}, settings);\n });\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n return Breakpoints;\n}\n\nvar COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n};\n\nvar Glide = /*#__PURE__*/function (_Core) {\n _inherits(Glide, _Core);\n\n var _super = _createSuper(Glide);\n\n function Glide() {\n _classCallCheck(this, Glide);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _get(_getPrototypeOf(Glide.prototype), \"mount\", this).call(this, Object.assign({}, COMPONENTS, extensions));\n }\n }]);\n\n return Glide;\n}(Glide$1);\n\nexport { Glide as default };\n"],"names":["$5137c3620ef83169$var$ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","$5137c3620ef83169$var$_objectSpread2","target","i","arguments","length","source","forEach","key","value","defineProperty","configurable","writable","obj","getOwnPropertyDescriptors","defineProperties","$5137c3620ef83169$var$_typeof","Symbol","iterator","constructor","prototype","$5137c3620ef83169$var$_classCallCheck","instance","Constructor","TypeError","$5137c3620ef83169$var$_defineProperties","props","descriptor","$5137c3620ef83169$var$_createClass","protoProps","staticProps","$5137c3620ef83169$var$_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","$5137c3620ef83169$var$_setPrototypeOf","p","$5137c3620ef83169$var$_get","Reflect","get","property","receiver","base","$5137c3620ef83169$var$_superPropBase","hasOwnProperty","call","desc","$5137c3620ef83169$var$defaults","type","startAt","perView","focusAt","gap","autoplay","hoverpause","keyboard","bound","swipeThreshold","dragThreshold","perSwipe","touchRatio","touchAngle","animationDuration","rewind","rewindDuration","animationTimingFunc","waitForTransition","throttle","direction","peek","cloningRatio","breakpoints","classes","swipeable","dragging","ltr","rtl","slider","carousel","slide","clone","active","arrow","disabled","nav","$5137c3620ef83169$var$warn","msg","console","error","concat","$5137c3620ef83169$var$toInt","parseInt","$5137c3620ef83169$var$isString","$5137c3620ef83169$var$isObject","$5137c3620ef83169$var$isFunction","$5137c3620ef83169$var$isArray","Array","$5137c3620ef83169$var$define","prop","definition","$5137c3620ef83169$var$mergeOptions","defaults","settings","options","assign","properties","$5137c3620ef83169$var$EventsBus","EventsBus","events","undefined","hop","event","handler","on","index","remove","context","emit","item","$5137c3620ef83169$var$Glide$1","Glide","selector","_c","_t","_e","extensions","$5137c3620ef83169$var$mount","glide","components","name","_name","mount","transformers","pattern","Run","make","distance","Transition","disable","Move","interval","_o","set","_i","_d","status","$5137c3620ef83169$var$now","Date","getTime","$5137c3620ef83169$var$throttle","func","wait","timeout","args","result","previous","later","leading","throttled","at","remaining","clearTimeout","trailing","setTimeout","cancel","$5137c3620ef83169$var$MARGIN_TYPE","$5137c3620ef83169$var$siblings","node","parentNode","n","firstChild","matched","nextSibling","nodeType","$5137c3620ef83169$var$toArray","nodeList","slice","$5137c3620ef83169$var$EventsBinder","EventsBinder","listeners","el","closure","capture","addEventListener","removeEventListener","$5137c3620ef83169$var$VALID_DIRECTIONS","$5137c3620ef83169$var$FLIPED_MOVEMENTS","$5137c3620ef83169$var$Rtl","Components","modify","translate","Direction","is","$5137c3620ef83169$var$Gap","multiplier","Math","floor","Sizes","slideWidth","Gaps","$5137c3620ef83169$var$Grow","Clones","grow","$5137c3620ef83169$var$Peeking","Peek","before","$5137c3620ef83169$var$Focusing","width","$5137c3620ef83169$var$supportsPassive","$5137c3620ef83169$var$opts","window","e","$5137c3620ef83169$var$supportsPassive$1","$5137c3620ef83169$var$MOVE_EVENTS","$5137c3620ef83169$var$END_EVENTS","$5137c3620ef83169$var$MOUSE_EVENTS","$5137c3620ef83169$var$CONTROLS_SELECTOR","$5137c3620ef83169$var$PREVIOUS_CONTROLS_SELECTOR","$5137c3620ef83169$var$NEXT_CONTROLS_SELECTOR","$5137c3620ef83169$var$sortBreakpoints","points","sort","reduce","r","k","$5137c3620ef83169$var$COMPONENTS","Html","Events","root","track","querySelector","collectSlides","slides","wrapper","children","classList","contains","_r","document","t","Translate","TRANSFORMERS","transform","$5137c3620ef83169$var$mutator","mutate","transformer","translate3d","style","mozTransform","webkitTransform","getStartIndex","isOffset","getTravelDistance","travelDistance","isType","movement","after","startWidth","compose","duration","transition","callback","enable","offset","resolve","token","split","join","addClass","add","removeClass","_v","indexOf","setupSlides","setupWrapper","wrapperSize","offsetWidth","reductor","len","marginLeft","marginRight","_this","items","collect","_Glide$settings","cloneCount","round","append","reverse","prepend","max","cloneNode","_clone","unshift","_Components$Html","half","appendChild","_i2","insertBefore","_i3","removeChild","Resize","Binder","bind","unbind","off","destroy","Build","typeClass","activeClass","sibling","removeClasses","_Glide$settings$class","move","calculate","isStart","isEnd","steps","viewSize","isBound","_index","view","ceil","_m","step","substr","Swipe","swipeSin","swipeStartX","swipeStartY","passive","bindSwipeStart","start","swipe","touches","pageX","pageY","bindSwipeMove","bindSwipeEnd","subExSx","powEY","abs","subEySy","swipeHypotenuse","sqrt","powEX","asin","swipeCathetus","PI","stopPropagation","parseFloat","end","_Glide$settings2","threshold","swipeDistance","swipeDeg","unbindSwipeMove","unbindSwipeEnd","_Glide$settings3","unbindSwipeStart","_this2","_this3","changedTouches","Images","dragstart","preventDefault","Anchors","detached","prevented","_a","querySelectorAll","click","detach","draggable","attach","Controls","_n","_arrowControls","next","addBindings","setActive","removeActive","controls","setArrowState","resetArrowState","disableArrow","_len","lists","_key","list","element","_len2","_key2","removeBindings","elements","currentTarget","getAttribute","Keyboard","press","includes","code","arrowSymbols","ArrowRight","ArrowLeft","Autoplay","setInterval","stop","time","clearInterval","Breakpoints","match","matchMedia","point","matches","_Core","$5137c3620ef83169$var$_inherits","subClass","superClass","create","hasNativeReflectConstruct","_super","$5137c3620ef83169$var$_isNativeReflectConstruct","construct","sham","Proxy","Boolean","valueOf","Super","$5137c3620ef83169$var$_possibleConstructorReturn","self","$5137c3620ef83169$var$_assertThisInitialized","ReferenceError"],"version":3,"file":"home.js.map"}