{"mappings":"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","sources":["<anon>","src/index.js","node_modules/@glidejs/glide/dist/glide.esm.js","node_modules/smooth-scroll/dist/smooth-scroll.polyfills.min.js"],"sourcesContent":["(() => {\n\nfunction $parcel$interopDefault(a) {\n  return a && a.__esModule ? a.default : a;\n}\n\n      var $parcel$global = globalThis;\n    /*!\n * Glide.js v3.7.1\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\nvar $a8e05d44f43b234a$exports = {};\n/*! smooth-scroll v16.1.3 | (c) 2020 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */ window.Element && !Element.prototype.closest && (Element.prototype.closest = function(e) {\n    var t, n = (this.document || this.ownerDocument).querySelectorAll(e), o = this;\n    do {\n        for(t = n.length; 0 <= --t && n.item(t) !== o;);\n    }while (t < 0 && (o = o.parentElement));\n    return o;\n}), function() {\n    if (\"function\" == typeof window.CustomEvent) return;\n    function e(e, t) {\n        t = t || {\n            bubbles: !1,\n            cancelable: !1,\n            detail: void 0\n        };\n        var n = document.createEvent(\"CustomEvent\");\n        return n.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), n;\n    }\n    e.prototype = window.Event.prototype, window.CustomEvent = e;\n}(), function() {\n    for(var r = 0, e = [\n        \"ms\",\n        \"moz\",\n        \"webkit\",\n        \"o\"\n    ], t = 0; t < e.length && !window.requestAnimationFrame; ++t)window.requestAnimationFrame = window[e[t] + \"RequestAnimationFrame\"], window.cancelAnimationFrame = window[e[t] + \"CancelAnimationFrame\"] || window[e[t] + \"CancelRequestAnimationFrame\"];\n    window.requestAnimationFrame || (window.requestAnimationFrame = function(e, t) {\n        var n = (new Date).getTime(), o = Math.max(0, 16 - (n - r)), a = window.setTimeout(function() {\n            e(n + o);\n        }, o);\n        return r = n + o, a;\n    }), window.cancelAnimationFrame || (window.cancelAnimationFrame = function(e) {\n        clearTimeout(e);\n    });\n}(), function(e, t) {\n    \"function\" == typeof define && define.amd ? define([], function() {\n        return t(e);\n    }) : $a8e05d44f43b234a$exports = t(e);\n}(\"undefined\" != typeof $parcel$global ? $parcel$global : \"undefined\" != typeof window ? window : $a8e05d44f43b234a$exports, function(M) {\n    \"use strict\";\n    var q = {\n        ignore: \"[data-scroll-ignore]\",\n        header: null,\n        topOnEmptyHash: !0,\n        speed: 500,\n        speedAsDuration: !1,\n        durationMax: null,\n        durationMin: null,\n        clip: !0,\n        offset: 0,\n        easing: \"easeInOutCubic\",\n        customEasing: null,\n        updateURL: !0,\n        popstate: !0,\n        emitEvents: !0\n    }, I = function() {\n        var n = {};\n        return Array.prototype.forEach.call(arguments, function(e) {\n            for(var t in e){\n                if (!e.hasOwnProperty(t)) return;\n                n[t] = e[t];\n            }\n        }), n;\n    }, r = function(e) {\n        \"#\" === e.charAt(0) && (e = e.substr(1));\n        for(var t, n = String(e), o = n.length, a = -1, r = \"\", i = n.charCodeAt(0); ++a < o;){\n            if (0 === (t = n.charCodeAt(a))) throw new InvalidCharacterError(\"Invalid character: the input contains U+0000.\");\n            1 <= t && t <= 31 || 127 == t || 0 === a && 48 <= t && t <= 57 || 1 === a && 48 <= t && t <= 57 && 45 === i ? r += \"\\\\\" + t.toString(16) + \" \" : r += 128 <= t || 45 === t || 95 === t || 48 <= t && t <= 57 || 65 <= t && t <= 90 || 97 <= t && t <= 122 ? n.charAt(a) : \"\\\\\" + n.charAt(a);\n        }\n        return \"#\" + r;\n    }, F = function() {\n        return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight, document.body.clientHeight, document.documentElement.clientHeight);\n    }, L = function(e) {\n        var t;\n        return e ? (t = e, parseInt(M.getComputedStyle(t).height, 10) + e.offsetTop) : 0;\n    }, x = function(e, t, n) {\n        0 === e && document.body.focus(), n || (e.focus(), document.activeElement !== e && (e.setAttribute(\"tabindex\", \"-1\"), e.focus(), e.style.outline = \"none\"), M.scrollTo(0, t));\n    }, H = function(e, t, n, o) {\n        if (t.emitEvents && \"function\" == typeof M.CustomEvent) {\n            var a = new CustomEvent(e, {\n                bubbles: !0,\n                detail: {\n                    anchor: n,\n                    toggle: o\n                }\n            });\n            document.dispatchEvent(a);\n        }\n    };\n    return function(o, e) {\n        var b, a, A, O, C = {};\n        C.cancelScroll = function(e) {\n            cancelAnimationFrame(O), O = null, e || H(\"scrollCancel\", b);\n        }, C.animateScroll = function(a, r, e) {\n            C.cancelScroll();\n            var i = I(b || q, e || {}), c = \"[object Number]\" === Object.prototype.toString.call(a), t = c || !a.tagName ? null : a;\n            if (c || t) {\n                var s = M.pageYOffset;\n                i.header && !A && (A = document.querySelector(i.header));\n                var n, o, u, l, m, d, f, h, p = L(A), g = c ? a : function(e, t, n, o) {\n                    var a = 0;\n                    if (e.offsetParent) for(; a += e.offsetTop, e = e.offsetParent;);\n                    return a = Math.max(a - t - n, 0), o && (a = Math.min(a, F() - M.innerHeight)), a;\n                }(t, p, parseInt(\"function\" == typeof i.offset ? i.offset(a, r) : i.offset, 10), i.clip), y = g - s, v = F(), w = 0, S = (n = y, u = (o = i).speedAsDuration ? o.speed : Math.abs(n / 1e3 * o.speed), o.durationMax && u > o.durationMax ? o.durationMax : o.durationMin && u < o.durationMin ? o.durationMin : parseInt(u, 10)), E = function(e) {\n                    var t, n, o;\n                    l || (l = e), w += e - l, d = s + y * (n = m = 1 < (m = 0 === S ? 0 : w / S) ? 1 : m, \"easeInQuad\" === (t = i).easing && (o = n * n), \"easeOutQuad\" === t.easing && (o = n * (2 - n)), \"easeInOutQuad\" === t.easing && (o = n < .5 ? 2 * n * n : (4 - 2 * n) * n - 1), \"easeInCubic\" === t.easing && (o = n * n * n), \"easeOutCubic\" === t.easing && (o = --n * n * n + 1), \"easeInOutCubic\" === t.easing && (o = n < .5 ? 4 * n * n * n : (n - 1) * (2 * n - 2) * (2 * n - 2) + 1), \"easeInQuart\" === t.easing && (o = n * n * n * n), \"easeOutQuart\" === t.easing && (o = 1 - --n * n * n * n), \"easeInOutQuart\" === t.easing && (o = n < .5 ? 8 * n * n * n * n : 1 - 8 * --n * n * n * n), \"easeInQuint\" === t.easing && (o = n * n * n * n * n), \"easeOutQuint\" === t.easing && (o = 1 + --n * n * n * n * n), \"easeInOutQuint\" === t.easing && (o = n < .5 ? 16 * n * n * n * n * n : 1 + 16 * --n * n * n * n * n), t.customEasing && (o = t.customEasing(n)), o || n), M.scrollTo(0, Math.floor(d)), function(e, t) {\n                        var n = M.pageYOffset;\n                        if (e == t || n == t || (s < t && M.innerHeight + n) >= v) return C.cancelScroll(!0), x(a, t, c), H(\"scrollStop\", i, a, r), O = l = null, true;\n                    }(d, g) || (O = M.requestAnimationFrame(E), l = e);\n                };\n                0 === M.pageYOffset && M.scrollTo(0, 0), f = a, h = i, c || history.pushState && h.updateURL && history.pushState({\n                    smoothScroll: JSON.stringify(h),\n                    anchor: f.id\n                }, document.title, f === document.documentElement ? \"#top\" : \"#\" + f.id), \"matchMedia\" in M && M.matchMedia(\"(prefers-reduced-motion)\").matches ? x(a, Math.floor(g), !1) : (H(\"scrollStart\", i, a, r), C.cancelScroll(!0), M.requestAnimationFrame(E));\n            }\n        };\n        var t = function(e) {\n            if (!e.defaultPrevented && !(0 !== e.button || e.metaKey || e.ctrlKey || e.shiftKey) && \"closest\" in e.target && (a = e.target.closest(o)) && \"a\" === a.tagName.toLowerCase() && !e.target.closest(b.ignore) && a.hostname === M.location.hostname && a.pathname === M.location.pathname && /#/.test(a.href)) {\n                var t, n;\n                try {\n                    t = r(decodeURIComponent(a.hash));\n                } catch (e) {\n                    t = r(a.hash);\n                }\n                if (\"#\" === t) {\n                    if (!b.topOnEmptyHash) return;\n                    n = document.documentElement;\n                } else n = document.querySelector(t);\n                (n = n || \"#top\" !== t ? n : document.documentElement) && (e.preventDefault(), function(e) {\n                    if (history.replaceState && e.updateURL && !history.state) {\n                        var t = M.location.hash;\n                        t = t || \"\", history.replaceState({\n                            smoothScroll: JSON.stringify(e),\n                            anchor: t || M.pageYOffset\n                        }, document.title, t || M.location.href);\n                    }\n                }(b), C.animateScroll(n, a));\n            }\n        }, n = function(e) {\n            if (null !== history.state && history.state.smoothScroll && history.state.smoothScroll === JSON.stringify(b)) {\n                var t = history.state.anchor;\n                \"string\" == typeof t && t && !(t = document.querySelector(r(history.state.anchor))) || C.animateScroll(t, null, {\n                    updateURL: !1\n                });\n            }\n        };\n        C.destroy = function() {\n            b && (document.removeEventListener(\"click\", t, !1), M.removeEventListener(\"popstate\", n, !1), C.cancelScroll(), O = A = a = b = null);\n        };\n        return function() {\n            if (!(\"querySelector\" in document && \"addEventListener\" in M && \"requestAnimationFrame\" in M && \"closest\" in M.Element.prototype)) throw \"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.\";\n            C.destroy(), b = I(q, e || {}), A = b.header ? document.querySelector(b.header) : null, document.addEventListener(\"click\", t, !1), b.updateURL && b.popstate && M.addEventListener(\"popstate\", n, !1);\n        }(), C;\n    };\n});\n\n\n\"use strict\";\n// Najde všechny elementy s třídou 'glide'\nconst $f9ccc1fa0d22629a$var$glideElements = document.querySelectorAll(\".glide\");\n// Vytvoří pole ID z těchto elementů\nconst $f9ccc1fa0d22629a$var$sliders = Array.from($f9ccc1fa0d22629a$var$glideElements).map((element)=>element.id);\n// Přidejte další ID, pokud máte více sliderů\nwindow.addEventListener(\"DOMContentLoaded\", ()=>{\n    $f9ccc1fa0d22629a$var$sliders.forEach((sliderId)=>{\n        new (0, $5137c3620ef83169$export$2e2bcd8739ae039)(`#${sliderId}`, {\n            type: \"carousel\",\n            startAt: 0,\n            perView: 1,\n            focusAt: \"center\",\n            gap: 0\n        }).mount();\n    });\n});\n/******* SLIDERS  */ /******* lightbox */ // GLightbox je načten z CDN v base.html\n// Inicializuj lightbox pouze pro elementy, které nejsou součástí galerie\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n    if (typeof GLightbox !== \"undefined\") {\n        const lightbox = GLightbox({\n            selector: '.glightbox:not([data-gallery=\"gallery\"])'\n        });\n    }\n});\n/******* paralax */ const $f9ccc1fa0d22629a$var$paralaxObserver = new IntersectionObserver((entries)=>{\n    entries.forEach((entry)=>{\n        if (entry.isIntersecting) {\n            entry.target.classList.add(entry.target.dataset.paralax);\n            $f9ccc1fa0d22629a$var$paralaxObserver.unobserve(entry.target);\n        }\n    });\n});\ndocument.addEventListener(\"DOMContentLoaded\", ()=>{\n    document.querySelectorAll(\".paraX\").forEach((elm)=>{\n        $f9ccc1fa0d22629a$var$paralaxObserver.observe(elm);\n    });\n});\nnew (0, (/*@__PURE__*/$parcel$interopDefault($a8e05d44f43b234a$exports)))('a[href*=\"#\"]', {\n    header: \"header\",\n    speed: 300,\n    speedAsDuration: true\n});\n// NodeList.prototype.forEach() polyfill\nif (window.NodeList && !NodeList.prototype.forEach) NodeList.prototype.forEach = Array.prototype.forEach;\n// clickToggleClass - BEGIN\nwindow.addEventListener(\"DOMContentLoaded\", ()=>{\n    document.querySelectorAll(\"*[data-click-toggle-class]\").forEach((elm)=>{\n        elm.addEventListener(\"click\", (event)=>{\n            event.preventDefault();\n            const classes = event.currentTarget.dataset.clickToggleClass.split(\"|\");\n            const targets = event.currentTarget.dataset.clickToggleTarget ? [\n                ...document.querySelectorAll(event.target.dataset.clickToggleTarget)\n            ] : [\n                event.target\n            ];\n            const toggledClases = targets[0].classList.contains(classes[0]) ? {\n                remove: classes[0],\n                add: classes[1]\n            } : {\n                remove: classes[1],\n                add: classes[0]\n            };\n            targets.forEach((elm)=>{\n                elm.classList.remove(toggledClases.remove);\n                elm.classList.add(toggledClases.add);\n            });\n        });\n    });\n});\n// clickToggleClass - END\n/* LANG SWICHER */ // Funkce pro zobrazení/skrytí menu\nfunction $f9ccc1fa0d22629a$var$toggleMenu() {\n    const menu = document.getElementById(\"header_barLangWrap\");\n    menu.style.display = menu.style.display === \"block\" ? \"none\" : \"block\";\n}\n// Otevření menu při kliknutí\ndocument.getElementById(\"header_barLang\").addEventListener(\"click\", $f9ccc1fa0d22629a$var$toggleMenu);\n// Zobrazení menu při najetí myší\ndocument.getElementById(\"header_barLang\").addEventListener(\"mouseenter\", function() {\n    document.getElementById(\"header_barLangWrap\").style.display = \"block\";\n});\n// Skrytí menu při odjetí myší\ndocument.getElementById(\"header_barLangWrap\").addEventListener(\"mouseleave\", function() {\n    document.getElementById(\"header_barLangWrap\").style.display = \"none\";\n});\n// Skrytí menu při opakovaném kliknutí\ndocument.getElementById(\"header_barLangWrap\").addEventListener(\"click\", $f9ccc1fa0d22629a$var$toggleMenu);\n/* LANG SWICHER KONEC */ /* MENU START */ window.addEventListener(\"DOMContentLoaded\", ()=>{\n    const openMenu = document.querySelector(\".menu-open\");\n    const closeMenu = document.querySelector(\".menu-close\");\n    const menuDiv = document.querySelector(\".ozmenu\");\n    const menu = document.querySelector(\".ozmenu-nav\");\n    if (!menu) return; // Menu element neexistuje, ukonči inicializaci\n    const dropDowns = menu.getElementsByClassName(\"nav-dropdown\");\n    const dropDownsChild = menu.querySelectorAll(\".dropdown .nav-dropdown\");\n    if (openMenu) openMenu.addEventListener(\"click\", menuToggle);\n    if (closeMenu) closeMenu.addEventListener(\"click\", menuToggle);\n    document.body.insertAdjacentHTML(\"beforeend\", \"<div id='menu-overlay'></div>\");\n    const menuOverlay = document.querySelector(\"#menu-overlay\");\n    if (menuOverlay) menuOverlay.addEventListener(\"click\", menuToggle);\n    function menuToggle() {\n        if (menuDiv) menuDiv.classList.toggle(\"active\");\n        document.body.classList.toggle(\"hide-scrolling\");\n        document.body.classList.toggle(\"mobile-menu-active\");\n        const overlay = document.getElementById(\"menu-overlay\");\n        if (overlay) overlay.classList.toggle(\"show\");\n    }\n    let i = 0;\n    for(i = 0; i < dropDownsChild.length; i++){\n        dropDownsChild[i].classList.add(\"child\");\n        dropDownsChild[i].dataset.clicked = \"false\"; // Inicializace stavu kliknutí\n        dropDownsChild[i].addEventListener(\"click\", function(e) {\n            if (this.dataset.clicked === \"false\") {\n                e.preventDefault(); // Zabránit prokliku při prvním kliknutí\n                this.dataset.clicked = \"true\"; // Nastavit, že uživatel kliknul poprvé\n            } else this.dataset.clicked = \"false\"; // Při dalším kliknutí obnovit na false\n            this.classList.toggle(\"opened\");\n        });\n    }\n    for(i = 0; i < dropDowns.length; i++)if (!dropDowns[i].classList.contains(\"child\")) {\n        dropDowns[i].classList.add(\"parent\");\n        dropDowns[i].dataset.clicked = \"false\"; // Inicializace stavu kliknutí\n        dropDowns[i].addEventListener(\"click\", function(e) {\n            if (this.dataset.clicked === \"false\") {\n                e.preventDefault(); // Zabránit prokliku při prvním kliknutí\n                this.dataset.clicked = \"true\"; // Nastavit, že uživatel kliknul poprvé\n            } else this.dataset.clicked = \"false\"; // Při dalším kliknutí obnovit na false\n            this.classList.toggle(\"opened\");\n        });\n    }\n});\n/* MENU END */ /* ČAS na BALI a v ČR START */ window.addEventListener(\"DOMContentLoaded\", ()=>{\n    function updateTimes() {\n        // Funkce na získání aktuálního času ve formátu H:i\n        function formatTime(date) {\n            const hours = date.getHours().toString().padStart(2, \"0\");\n            const minutes = date.getMinutes().toString().padStart(2, \"0\");\n            return `${hours}:${minutes}`;\n        }\n        // Získání aktuálního času v ČR (časové pásmo UTC+1 nebo UTC+2 při letním čase)\n        const czechTime = new Date(new Date().toLocaleString(\"en-US\", {\n            timeZone: \"Europe/Prague\"\n        }));\n        // Získání aktuálního času na Bali (časové pásmo UTC+8)\n        const baliTime = new Date(new Date().toLocaleString(\"en-US\", {\n            timeZone: \"Asia/Makassar\"\n        }));\n        // Aktualizace obsahu elementů\n        document.querySelectorAll(\".timeCS\").forEach((span)=>{\n            span.textContent = formatTime(czechTime);\n        });\n        document.querySelectorAll(\".timeBali\").forEach((span)=>{\n            span.textContent = formatTime(baliTime);\n        });\n    }\n    // Aktualizace při načtení stránky a každých 60 vteřin\n    updateTimes();\n    setInterval(updateTimes, 60000);\n}); /* ČAS na BALI a v ČR END */  /******* TIME-BASED BACKGROUND\n// Dynamické změna background-image podle denní doby\nfunction setTimeBasedBackground() {\n  // Zkontroluj, zda element .hp_header existuje v DOM\n  const headerElement = document.querySelector('.hp_header');\n  if (!headerElement) {\n    return; // Element neexistuje, ukonči funkci\n  }\n\n  const now = new Date();\n  const hour = now.getHours();\n\n  // Odstraň předchozí třídy\n  headerElement.classList.remove('hp_header_day', 'hp_header_night');\n\n  // Denní doba: 8:00 - 19:59 (přidá třídu hp_header_day)\n  // Noční doba: 20:00 - 7:59 (přidá třídu hp_header_night)\n  if (hour >= 8 && hour < 20) {\n    // Den\n    headerElement.classList.add('hp_header_day');\n  } else {\n    // Noc\n    headerElement.classList.add('hp_header_night');\n  }\n}\n\n// Spusť při načtení stránky\ndocument.addEventListener('DOMContentLoaded', function() {\n  setTimeBasedBackground();\n});\n\n// Volitelně: aktualizuj každou hodinu (pouze pokud element existuje)\nsetInterval(function() {\n  if (document.querySelector('.hp_header')) {\n    setTimeBasedBackground();\n  }\n}, 3600000); // 3600000 ms = 1 hodina\n*/ \n\n})();\n//# sourceMappingURL=index.js.map\n","\"use strict\";\n\n/******* SLIDERS */\nimport Glide from \"@glidejs/glide\";\n// Najde všechny elementy s třídou 'glide'\nconst glideElements = document.querySelectorAll(\".glide\");\n// Vytvoří pole ID z těchto elementů\nconst sliders = Array.from(glideElements).map((element) => element.id);\n// Přidejte další ID, pokud máte více sliderů\nwindow.addEventListener(\"DOMContentLoaded\", () => {\n  sliders.forEach((sliderId) => {\n    new Glide(`#${sliderId}`, {\n      type: \"carousel\",\n      startAt: 0,\n      perView: 1,\n      focusAt: \"center\",\n      gap: 0,\n    }).mount();\n  });\n});\n/******* SLIDERS  */\n\n/******* lightbox */\n// GLightbox je načten z CDN v base.html\n// Inicializuj lightbox pouze pro elementy, které nejsou součástí galerie\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  if (typeof GLightbox !== \"undefined\") {\n    const lightbox = GLightbox({\n      selector: '.glightbox:not([data-gallery=\"gallery\"])',\n    });\n  }\n});\n\n/******* paralax */\nconst paralaxObserver = new IntersectionObserver((entries) => {\n  entries.forEach((entry) => {\n    if (entry.isIntersecting) {\n      entry.target.classList.add(entry.target.dataset.paralax);\n      paralaxObserver.unobserve(entry.target);\n    }\n  });\n});\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  document.querySelectorAll(\".paraX\").forEach((elm) => {\n    paralaxObserver.observe(elm);\n  });\n});\n\n// SmoothScroll inicializace\nimport SmoothScroll from \"smooth-scroll\";\nnew SmoothScroll('a[href*=\"#\"]', {\n  header: \"header\",\n  speed: 300,\n  speedAsDuration: true,\n});\n\n// NodeList.prototype.forEach() polyfill\nif (window.NodeList && !NodeList.prototype.forEach) {\n  NodeList.prototype.forEach = Array.prototype.forEach;\n}\n\n// clickToggleClass - BEGIN\nwindow.addEventListener(\"DOMContentLoaded\", () => {\n  document.querySelectorAll(\"*[data-click-toggle-class]\").forEach((elm) => {\n    elm.addEventListener(\"click\", (event) => {\n      event.preventDefault();\n\n      const classes = event.currentTarget.dataset.clickToggleClass.split(\"|\");\n      const targets = event.currentTarget.dataset.clickToggleTarget\n        ? [...document.querySelectorAll(event.target.dataset.clickToggleTarget)]\n        : [event.target];\n      const toggledClases = targets[0].classList.contains(classes[0])\n        ? {\n            remove: classes[0],\n            add: classes[1],\n          }\n        : {\n            remove: classes[1],\n            add: classes[0],\n          };\n      targets.forEach((elm) => {\n        elm.classList.remove(toggledClases.remove);\n        elm.classList.add(toggledClases.add);\n      });\n    });\n  });\n});\n// clickToggleClass - END\n\n/* LANG SWICHER */\n// Funkce pro zobrazení/skrytí menu\nfunction toggleMenu() {\n  const menu = document.getElementById(\"header_barLangWrap\");\n  menu.style.display = menu.style.display === \"block\" ? \"none\" : \"block\";\n}\n\n// Otevření menu při kliknutí\ndocument.getElementById(\"header_barLang\").addEventListener(\"click\", toggleMenu);\n\n// Zobrazení menu při najetí myší\ndocument\n  .getElementById(\"header_barLang\")\n  .addEventListener(\"mouseenter\", function () {\n    document.getElementById(\"header_barLangWrap\").style.display = \"block\";\n  });\n\n// Skrytí menu při odjetí myší\ndocument\n  .getElementById(\"header_barLangWrap\")\n  .addEventListener(\"mouseleave\", function () {\n    document.getElementById(\"header_barLangWrap\").style.display = \"none\";\n  });\n\n// Skrytí menu při opakovaném kliknutí\ndocument\n  .getElementById(\"header_barLangWrap\")\n  .addEventListener(\"click\", toggleMenu);\n/* LANG SWICHER KONEC */\n\n/* MENU START */\nwindow.addEventListener(\"DOMContentLoaded\", () => {\n  const openMenu = document.querySelector(\".menu-open\");\n  const closeMenu = document.querySelector(\".menu-close\");\n  const menuDiv = document.querySelector(\".ozmenu\");\n  const menu = document.querySelector(\".ozmenu-nav\");\n\n  if (!menu) {\n    return; // Menu element neexistuje, ukonči inicializaci\n  }\n\n  const dropDowns = menu.getElementsByClassName(\"nav-dropdown\");\n  const dropDownsChild = menu.querySelectorAll(\".dropdown .nav-dropdown\");\n\n  if (openMenu) {\n    openMenu.addEventListener(\"click\", menuToggle);\n  }\n  if (closeMenu) {\n    closeMenu.addEventListener(\"click\", menuToggle);\n  }\n\n  document.body.insertAdjacentHTML(\"beforeend\", \"<div id='menu-overlay'></div>\");\n  const menuOverlay = document.querySelector(\"#menu-overlay\");\n  if (menuOverlay) {\n    menuOverlay.addEventListener(\"click\", menuToggle);\n  }\n\n  function menuToggle() {\n    if (menuDiv) {\n      menuDiv.classList.toggle(\"active\");\n    }\n    document.body.classList.toggle(\"hide-scrolling\");\n    document.body.classList.toggle(\"mobile-menu-active\");\n    const overlay = document.getElementById(\"menu-overlay\");\n    if (overlay) {\n      overlay.classList.toggle(\"show\");\n    }\n  }\n\n  let i = 0;\n\n  for (i = 0; i < dropDownsChild.length; i++) {\n    dropDownsChild[i].classList.add(\"child\");\n    dropDownsChild[i].dataset.clicked = \"false\"; // Inicializace stavu kliknutí\n\n    dropDownsChild[i].addEventListener(\"click\", function (e) {\n      if (this.dataset.clicked === \"false\") {\n        e.preventDefault(); // Zabránit prokliku při prvním kliknutí\n        this.dataset.clicked = \"true\"; // Nastavit, že uživatel kliknul poprvé\n      } else {\n        this.dataset.clicked = \"false\"; // Při dalším kliknutí obnovit na false\n      }\n      this.classList.toggle(\"opened\");\n    });\n  }\n\n  for (i = 0; i < dropDowns.length; i++) {\n    if (!dropDowns[i].classList.contains(\"child\")) {\n      dropDowns[i].classList.add(\"parent\");\n      dropDowns[i].dataset.clicked = \"false\"; // Inicializace stavu kliknutí\n\n      dropDowns[i].addEventListener(\"click\", function (e) {\n        if (this.dataset.clicked === \"false\") {\n          e.preventDefault(); // Zabránit prokliku při prvním kliknutí\n          this.dataset.clicked = \"true\"; // Nastavit, že uživatel kliknul poprvé\n        } else {\n          this.dataset.clicked = \"false\"; // Při dalším kliknutí obnovit na false\n        }\n        this.classList.toggle(\"opened\");\n      });\n    }\n  }\n});\n\n/* MENU END */\n\n/* ČAS na BALI a v ČR START */\n\nwindow.addEventListener(\"DOMContentLoaded\", () => {\n  function updateTimes() {\n    // Funkce na získání aktuálního času ve formátu H:i\n    function formatTime(date) {\n      const hours = date.getHours().toString().padStart(2, \"0\");\n      const minutes = date.getMinutes().toString().padStart(2, \"0\");\n      return `${hours}:${minutes}`;\n    }\n\n    // Získání aktuálního času v ČR (časové pásmo UTC+1 nebo UTC+2 při letním čase)\n    const czechTime = new Date(\n      new Date().toLocaleString(\"en-US\", { timeZone: \"Europe/Prague\" })\n    );\n\n    // Získání aktuálního času na Bali (časové pásmo UTC+8)\n    const baliTime = new Date(\n      new Date().toLocaleString(\"en-US\", { timeZone: \"Asia/Makassar\" })\n    );\n\n    // Aktualizace obsahu elementů\n    document.querySelectorAll(\".timeCS\").forEach((span) => {\n      span.textContent = formatTime(czechTime);\n    });\n    document.querySelectorAll(\".timeBali\").forEach((span) => {\n      span.textContent = formatTime(baliTime);\n    });\n  }\n\n  // Aktualizace při načtení stránky a každých 60 vteřin\n  updateTimes();\n  setInterval(updateTimes, 60000);\n});\n\n/* ČAS na BALI a v ČR END */\n\n/******* TIME-BASED BACKGROUND\n// Dynamické změna background-image podle denní doby\nfunction setTimeBasedBackground() {\n  // Zkontroluj, zda element .hp_header existuje v DOM\n  const headerElement = document.querySelector('.hp_header');\n  if (!headerElement) {\n    return; // Element neexistuje, ukonči funkci\n  }\n\n  const now = new Date();\n  const hour = now.getHours();\n\n  // Odstraň předchozí třídy\n  headerElement.classList.remove('hp_header_day', 'hp_header_night');\n\n  // Denní doba: 8:00 - 19:59 (přidá třídu hp_header_day)\n  // Noční doba: 20:00 - 7:59 (přidá třídu hp_header_night)\n  if (hour >= 8 && hour < 20) {\n    // Den\n    headerElement.classList.add('hp_header_day');\n  } else {\n    // Noc\n    headerElement.classList.add('hp_header_night');\n  }\n}\n\n// Spusť při načtení stránky\ndocument.addEventListener('DOMContentLoaded', function() {\n  setTimeBasedBackground();\n});\n\n// Volitelně: aktualizuj každou hodinu (pouze pokud element existuje)\nsetInterval(function() {\n  if (document.querySelector('.hp_header')) {\n    setTimeBasedBackground();\n  }\n}, 3600000); // 3600000 ms = 1 hodina\n*/\n","/*!\n * Glide.js v3.7.1\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","/*! smooth-scroll v16.1.3 | (c) 2020 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */\nwindow.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t,n=(this.document||this.ownerDocument).querySelectorAll(e),o=this;do{for(t=n.length;0<=--t&&n.item(t)!==o;);}while(t<0&&(o=o.parentElement));return o}),(function(){if(\"function\"==typeof window.CustomEvent)return;function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent(\"CustomEvent\");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e})(),(function(){for(var r=0,e=[\"ms\",\"moz\",\"webkit\",\"o\"],t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+\"RequestAnimationFrame\"],window.cancelAnimationFrame=window[e[t]+\"CancelAnimationFrame\"]||window[e[t]+\"CancelRequestAnimationFrame\"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e,t){var n=(new Date).getTime(),o=Math.max(0,16-(n-r)),a=window.setTimeout((function(){e(n+o)}),o);return r=n+o,a}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})})(),(function(e,t){\"function\"==typeof define&&define.amd?define([],(function(){return t(e)})):\"object\"==typeof exports?module.exports=t(e):e.SmoothScroll=t(e)})(\"undefined\"!=typeof global?global:\"undefined\"!=typeof window?window:this,(function(M){\"use strict\";var q={ignore:\"[data-scroll-ignore]\",header:null,topOnEmptyHash:!0,speed:500,speedAsDuration:!1,durationMax:null,durationMin:null,clip:!0,offset:0,easing:\"easeInOutCubic\",customEasing:null,updateURL:!0,popstate:!0,emitEvents:!0},I=function(){var n={};return Array.prototype.forEach.call(arguments,(function(e){for(var t in e){if(!e.hasOwnProperty(t))return;n[t]=e[t]}})),n},r=function(e){\"#\"===e.charAt(0)&&(e=e.substr(1));for(var t,n=String(e),o=n.length,a=-1,r=\"\",i=n.charCodeAt(0);++a<o;){if(0===(t=n.charCodeAt(a)))throw new InvalidCharacterError(\"Invalid character: the input contains U+0000.\");1<=t&&t<=31||127==t||0===a&&48<=t&&t<=57||1===a&&48<=t&&t<=57&&45===i?r+=\"\\\\\"+t.toString(16)+\" \":r+=128<=t||45===t||95===t||48<=t&&t<=57||65<=t&&t<=90||97<=t&&t<=122?n.charAt(a):\"\\\\\"+n.charAt(a)}return\"#\"+r},F=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},L=function(e){return e?(t=e,parseInt(M.getComputedStyle(t).height,10)+e.offsetTop):0;var t},x=function(e,t,n){0===e&&document.body.focus(),n||(e.focus(),document.activeElement!==e&&(e.setAttribute(\"tabindex\",\"-1\"),e.focus(),e.style.outline=\"none\"),M.scrollTo(0,t))},H=function(e,t,n,o){if(t.emitEvents&&\"function\"==typeof M.CustomEvent){var a=new CustomEvent(e,{bubbles:!0,detail:{anchor:n,toggle:o}});document.dispatchEvent(a)}};return function(o,e){var b,a,A,O,C={};C.cancelScroll=function(e){cancelAnimationFrame(O),O=null,e||H(\"scrollCancel\",b)},C.animateScroll=function(a,r,e){C.cancelScroll();var i=I(b||q,e||{}),c=\"[object Number]\"===Object.prototype.toString.call(a),t=c||!a.tagName?null:a;if(c||t){var s=M.pageYOffset;i.header&&!A&&(A=document.querySelector(i.header));var n,o,u,l,m,d,f,h,p=L(A),g=c?a:(function(e,t,n,o){var a=0;if(e.offsetParent)for(;a+=e.offsetTop,e=e.offsetParent;);return a=Math.max(a-t-n,0),o&&(a=Math.min(a,F()-M.innerHeight)),a})(t,p,parseInt(\"function\"==typeof i.offset?i.offset(a,r):i.offset,10),i.clip),y=g-s,v=F(),w=0,S=(n=y,u=(o=i).speedAsDuration?o.speed:Math.abs(n/1e3*o.speed),o.durationMax&&u>o.durationMax?o.durationMax:o.durationMin&&u<o.durationMin?o.durationMin:parseInt(u,10)),E=function(e){var t,n,o;l||(l=e),w+=e-l,d=s+y*(n=m=1<(m=0===S?0:w/S)?1:m,\"easeInQuad\"===(t=i).easing&&(o=n*n),\"easeOutQuad\"===t.easing&&(o=n*(2-n)),\"easeInOutQuad\"===t.easing&&(o=n<.5?2*n*n:(4-2*n)*n-1),\"easeInCubic\"===t.easing&&(o=n*n*n),\"easeOutCubic\"===t.easing&&(o=--n*n*n+1),\"easeInOutCubic\"===t.easing&&(o=n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1),\"easeInQuart\"===t.easing&&(o=n*n*n*n),\"easeOutQuart\"===t.easing&&(o=1- --n*n*n*n),\"easeInOutQuart\"===t.easing&&(o=n<.5?8*n*n*n*n:1-8*--n*n*n*n),\"easeInQuint\"===t.easing&&(o=n*n*n*n*n),\"easeOutQuint\"===t.easing&&(o=1+--n*n*n*n*n),\"easeInOutQuint\"===t.easing&&(o=n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n),t.customEasing&&(o=t.customEasing(n)),o||n),M.scrollTo(0,Math.floor(d)),(function(e,t){var n=M.pageYOffset;if(e==t||n==t||(s<t&&M.innerHeight+n)>=v)return C.cancelScroll(!0),x(a,t,c),H(\"scrollStop\",i,a,r),!(O=l=null)})(d,g)||(O=M.requestAnimationFrame(E),l=e)};0===M.pageYOffset&&M.scrollTo(0,0),f=a,h=i,c||history.pushState&&h.updateURL&&history.pushState({smoothScroll:JSON.stringify(h),anchor:f.id},document.title,f===document.documentElement?\"#top\":\"#\"+f.id),\"matchMedia\"in M&&M.matchMedia(\"(prefers-reduced-motion)\").matches?x(a,Math.floor(g),!1):(H(\"scrollStart\",i,a,r),C.cancelScroll(!0),M.requestAnimationFrame(E))}};var t=function(e){if(!e.defaultPrevented&&!(0!==e.button||e.metaKey||e.ctrlKey||e.shiftKey)&&\"closest\"in e.target&&(a=e.target.closest(o))&&\"a\"===a.tagName.toLowerCase()&&!e.target.closest(b.ignore)&&a.hostname===M.location.hostname&&a.pathname===M.location.pathname&&/#/.test(a.href)){var t,n;try{t=r(decodeURIComponent(a.hash))}catch(e){t=r(a.hash)}if(\"#\"===t){if(!b.topOnEmptyHash)return;n=document.documentElement}else n=document.querySelector(t);(n=n||\"#top\"!==t?n:document.documentElement)&&(e.preventDefault(),(function(e){if(history.replaceState&&e.updateURL&&!history.state){var t=M.location.hash;t=t||\"\",history.replaceState({smoothScroll:JSON.stringify(e),anchor:t||M.pageYOffset},document.title,t||M.location.href)}})(b),C.animateScroll(n,a))}},n=function(e){if(null!==history.state&&history.state.smoothScroll&&history.state.smoothScroll===JSON.stringify(b)){var t=history.state.anchor;\"string\"==typeof t&&t&&!(t=document.querySelector(r(history.state.anchor)))||C.animateScroll(t,null,{updateURL:!1})}};C.destroy=function(){b&&(document.removeEventListener(\"click\",t,!1),M.removeEventListener(\"popstate\",n,!1),C.cancelScroll(),O=A=a=b=null)};return (function(){if(!(\"querySelector\"in document&&\"addEventListener\"in M&&\"requestAnimationFrame\"in M&&\"closest\"in M.Element.prototype))throw\"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.\";C.destroy(),b=I(q,e||{}),A=b.header?document.querySelector(b.header):null,document.addEventListener(\"click\",t,!1),b.updateURL&&b.popstate&&M.addEventListener(\"popstate\",n,!1)})(),C}}));"],"names":["e","t","a","$parcel$global","globalThis","$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","obj","value","defineProperty","configurable","writable","getOwnPropertyDescriptors","defineProperties","$5137c3620ef83169$var$_typeof","Symbol","iterator","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","$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","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","$5137c3620ef83169$export$2e2bcd8739ae039","_Core","superClass","subClass","create","hasNativeReflectConstruct","_super","$5137c3620ef83169$var$_isNativeReflectConstruct","construct","sham","Proxy","Boolean","valueOf","Super","self","ReferenceError","$a8e05d44f43b234a$exports","Element","closest","ownerDocument","parentElement","CustomEvent","Event","bubbles","cancelable","detail","createEvent","initCustomEvent","requestAnimationFrame","cancelAnimationFrame","M","q","ignore","header","topOnEmptyHash","speed","speedAsDuration","durationMax","durationMin","clip","easing","customEasing","updateURL","popstate","emitEvents","I","charAt","String","charCodeAt","InvalidCharacterError","toString","F","body","scrollHeight","documentElement","offsetHeight","clientHeight","x","focus","activeElement","setAttribute","outline","scrollTo","H","anchor","toggle","dispatchEvent","b","A","O","C","cancelScroll","animateScroll","c","tagName","s","pageYOffset","u","l","m","d","getComputedStyle","height","offsetTop","g","offsetParent","min","innerHeight","y","v","w","S","E","history","pushState","h","smoothScroll","JSON","stringify","f","id","title","defaultPrevented","button","metaKey","ctrlKey","shiftKey","toLowerCase","hostname","location","pathname","test","href","decodeURIComponent","hash","replaceState","state","define","amd","$f9ccc1fa0d22629a$var$sliders","from","map","sliderId","GLightbox","$f9ccc1fa0d22629a$var$paralaxObserver","IntersectionObserver","entries","entry","isIntersecting","dataset","paralax","unobserve","$f9ccc1fa0d22629a$var$toggleMenu","menu","getElementById","display","elm","observe","__esModule","default","NodeList","clickToggleClass","targets","clickToggleTarget","toggledClases","openMenu","closeMenu","menuDiv","dropDowns","getElementsByClassName","dropDownsChild","menuToggle","insertAdjacentHTML","menuOverlay","overlay","clicked","updateTimes","formatTime","date","hours","getHours","padStart","minutes","getMinutes","czechTime","toLocaleString","timeZone","baliTime","span","textContent"],"version":3,"file":"index.js.map"}