{"version":3,"sources":["glide-custom.js"],"names":["global","factory","exports","_typeof2","module","define","amd","Glide","window","defaults","type","startAt","perView","focusAt","gap","autoplay","hoverpause","keyboard","bound","swipeThreshold","dragThreshold","perTouch","touchRatio","touchAngle","animationDuration","rewind","rewindDuration","animationTimingFunc","throttle","direction","peek","breakpoints","classes","ltr","rtl","controls","hideLeft","hideRight","slider","carousel","swipeable","dragging","cloneSlide","activeNav","preActiveSlide","activeSlide","transitionGlide","disabledArrow","warn","msg","console","error","classCallCheck","instance","Constructor","TypeError","_typeof","Symbol","iterator","obj","constructor","prototype","createClass","protoProps","staticProps","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","get","object","property","receiver","Function","desc","getOwnPropertyDescriptor","undefined","value","getter","call","parent","getPrototypeOf","_extends","assign","arguments","source","hasOwnProperty","toInt","parseInt","isString","isObject","isFunction","isUndefined","isArray","Array","prop","definition","mergeOptions","settings","options","EventsBus","event","handler","this","on","hop","events","index","push","remove","context","emit","forEach","item","extensions","_e","_c","glide","name","_name","components","mount","transformers","_t","pattern","Run","make","distance","Transition","disable","Move","interval","disabled","_o","set","o","_i","_d","status","selector","now","Date","getTime","func","wait","later","previous","leading","timeout","result","apply","args","throttled","at","remaining","clearTimeout","trailing","setTimeout","cancel","MARGIN_TYPE","siblings","node","parentNode","n","firstChild","matched","nextSibling","nodeType","exist","HTMLElement","TRACK_SELECTOR","EventsBinder","el","closure","capture","listeners","addEventListener","removeEventListener","VALID_DIRECTIONS","FLIPED_MOVEMENTS",">","<","=","Rtl","Components","modify","translate","Direction","is","mutator","Events","TRANSFORMERS","Gaps","Clones","grow","Peek","before","width","Sizes","slideWidth","concat","mutate","transformer","supportsPassive","opts","e","supportsPassive$1","START_EVENTS","MOVE_EVENTS","END_EVENTS","MOUSE_EVENTS","sortBreakpoints","points","keys","sort","reduce","r","k","COMPONENTS","Html","root","track","querySelector","slides","slice","wrapper","children","filter","slide","classList","contains","_r","document","t","Translate","transform","style","isType","isOffset","after","movement","compose","duration","transition","callback","enable","offset","resolve","token","split","join","addClass","add","removeClass","_v","indexOf","setupSlides","setupWrapper","dimention","wrapperSize","setupControls","useSmartNav","numVisibleSlides","offsetWidth","reductor","Math","floor","len","marginLeft","marginRight","_this","items","collect","_Glide$settings","part","start","end","max","clone","cloneNode","_clone","unshift","append","_Components$Html","half","prepend","reverse","appendChild","_i2","insertBefore","_i3","removeChild","Resize","Binder","bind","unbind","off","destroy","Build","typeClass","activeClass","sibling","transitionClass","removeClasses","move","calculate","isStart","isEnd","setControlStatus","steps","countableSteps","min","_m","step","substr","Swipe","swipeSin","swipeStartX","swipeStartY","passive","bindSwipeStart","swipe","touches","pageX","pageY","bindSwipeMove","bindSwipeEnd","subExSx","subEySy","powEX","abs","powEY","swipeHypotenuse","sqrt","swipeCathetus","asin","PI","stopPropagation","parseFloat","dispatchEvent","Event","swipeDistance","swipeDeg","threshold","round","unbindSwipeMove","unbindSwipeEnd","unbindSwipeStart","_this2","_this3","changedTouches","Images","dragstart","Anchors","detached","prevented","_a","querySelectorAll","click","detach","draggable","setAttribute","getAttribute","removeAttribute","attach","Controls","_n","addBindings","setActive","removeActive","removeBindings","elements","currentTarget","showLeft","showRight","showControls","hideControls","Keyboard","press","keyCode","Autoplay","setInterval","stop","time","clearInterval","Breakpoints","match","matchMedia","point","matches","subClass","Glide$$1","superClass","possibleConstructorReturn","self","__proto__","ReferenceError","create","setPrototypeOf"],"mappings":"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","file":"glide-custom.complete.min.js","sourcesContent":["/*!\n * Glide.js v3.4.1\n * (c) 2013-2019 Jędrzej Chałubek (http://jedrzejchalubek.com/)\n * Released under the MIT License.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Glide = factory());\n}(window, (function () {\n 'use strict';\n\n 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 */\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 maximum number of slides to which movement will be made on swiping or dragging. Use `false` for unlimited.\n *\n * @type {Number|Boolean}\n */\n perTouch: false,\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 * 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 * 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 direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n controls: {\n hideLeft: 'glide__control--hideleft',\n hideRight: 'glide__control--hideright'\n },\n slider: 'glide--slider',\n carousel: 'glide--carousel',\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n cloneSlide: 'glide__slide--clone',\n activeNav: 'glide__bullet--active',\n preActiveSlide: 'glide__slide--preactive', // custom classes to help style slides in transition\n activeSlide: 'glide__slide--active',\n transitionGlide: 'glide--transition', // custom classes to help style slides in transition\n disabledArrow: 'glide__arrow--disabled'\n }\n };\n\n /**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\n function warn(msg) {\n console.error(\"[Glide warn]: \" + msg);\n }\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n\n var createClass = function () {\n function 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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n var get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n };\n\n var possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n };\n\n /**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\n function toInt(value) {\n return parseInt(value);\n }\n\n /**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\n function toFloat(value) {\n return parseFloat(value);\n }\n\n /**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\n function isString(value) {\n return typeof value === 'string';\n }\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 function isObject(value) {\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n }\n\n /**\n * Indicates whether the specified value is a number.\n *\n * @param {*} value\n * @return {Boolean}\n */\n function isNumber(value) {\n return typeof value === 'number';\n }\n\n /**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\n function isFunction(value) {\n return typeof value === 'function';\n }\n\n /**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\n function isUndefined(value) {\n return typeof value === 'undefined';\n }\n\n /**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\n function 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 function 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 */\n function define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n }\n\n /**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\n function sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n\n return r[k], r;\n }, {});\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 function mergeOptions(defaults, settings) {\n var options = _extends({}, defaults, settings);\n\n // `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 = _extends({}, defaults.classes, settings.classes);\n\n if (settings.classes.hasOwnProperty('direction')) {\n options.classes.direction = _extends({}, defaults.classes.direction, settings.classes.direction);\n }\n }\n\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = _extends({}, defaults.breakpoints, settings.breakpoints);\n }\n\n return options;\n }\n\n var EventsBus = 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 classCallCheck(this, EventsBus);\n\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\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\n // Create the event's object if not yet created\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n }\n\n // Add the handler to queue\n var index = this.events[event].push(handler) - 1;\n\n // 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 * 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\n // If the event doesn't exist, or there's no handlers in queue, just leave\n if (!this.hop.call(this.events, event)) {\n return;\n }\n\n // Cycle through events queue, fire!\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n return EventsBus;\n }();\n\n var Glide = function () {\n /**\n * Construct glide.\n *\n * @param {String} selector\n * @param {Object} options\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, Glide);\n\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n\n /**\n * Initializes glide.\n *\n * @param {Object} extensions Collection of extensions to initialize.\n * @return {Glide}\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\n /**\n * Collects an instance `translate` transformers.\n *\n * @param {Array} transformers Collection of transformers.\n * @return {Void}\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\n /**\n * Updates glide with specified settings.\n *\n * @param {Object} settings\n * @return {Glide}\n */\n\n }, {\n key: 'update',\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\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\n /**\n * Change slide with specified pattern. A pattern must be in the special format:\n * `>` - Move one forward\n * `<` - Move one backward\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\n * `>>` - Rewinds to end (last slide)\n * `<<` - Rewinds to start (first slide)\n *\n * @param {String} pattern\n * @return {Glide}\n */\n\n }, {\n key: 'go',\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n\n /**\n * Move track by specified distance.\n *\n * @param {String} distance\n * @return {Glide}\n */\n\n }, {\n key: 'move',\n value: function move(distance) {\n this._c.Transition.disable();\n this._c.Move.make(distance);\n\n return this;\n }\n\n /**\n * Destroy instance and revert all changes done by this._c.\n *\n * @return {Glide}\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n\n /**\n * Start instance autoplaying.\n *\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Glide}\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\n /**\n * Stop instance autoplaying.\n *\n * @return {Glide}\n */\n\n }, {\n key: 'pause',\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n\n /**\n * Sets glide into a idle status.\n *\n * @return {Glide}\n */\n\n }, {\n key: 'disable',\n value: function disable() {\n this.disabled = true;\n\n return this;\n }\n\n /**\n * Sets glide into a active status.\n *\n * @return {Glide}\n */\n\n }, {\n key: 'enable',\n value: function enable() {\n this.disabled = false;\n\n return this;\n }\n\n /**\n * Adds cuutom event listener with handler.\n *\n * @param {String|Array} event\n * @param {Function} handler\n * @return {Glide}\n */\n\n }, {\n key: 'on',\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n\n /**\n * Checks if glide is a precised type.\n *\n * @param {String} name\n * @return {Boolean}\n */\n\n }, {\n key: 'isType',\n value: function isType(name) {\n return this.settings.type === name;\n }\n\n /**\n * Gets value of the core options.\n *\n * @return {Object}\n */\n\n }, {\n key: 'settings',\n get: function get$$1() {\n return this._o;\n }\n\n /**\n * Sets value of the core options.\n *\n * @param {Object} o\n * @return {Void}\n */\n ,\n set: function set$$1(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n\n /**\n * Gets current index of the slider.\n *\n * @return {Object}\n */\n\n }, {\n key: 'index',\n get: function get$$1() {\n return this._i;\n }\n\n /**\n * Sets current index a slider.\n *\n * @return {Object}\n */\n ,\n set: function set$$1(i) {\n this._i = toInt(i);\n }\n\n /**\n * Gets type name of the slider.\n *\n * @return {String}\n */\n\n }, {\n key: 'type',\n get: function get$$1() {\n return this.settings.type;\n }\n\n /**\n * Gets value of the idle status.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'disabled',\n get: function get$$1() {\n return this._d;\n }\n\n /**\n * Sets value of the idle status.\n *\n * @return {Boolean}\n */\n ,\n set: function set$$1(status) {\n this._d = !!status;\n }\n }]);\n return Glide;\n }();\n\n function 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 /**\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.disable();\n\n this.move = move;\n\n Events.emit('run.before', this.move);\n\n this.calculate();\n\n Events.emit('run', this.move);\n\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('<') || _this.isOffset('>')) {\n _this._o = false;\n\n Events.emit('run.offset', _this.move);\n }\n\n _this.setControlStatus.apply(_this);\n\n Events.emit('run.after', _this.move);\n\n Glide.enable();\n });\n }\n },\n\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Void}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction;\n\n\n var countableSteps = isNumber(toInt(steps)) && toInt(steps) !== 0;\n\n switch (direction) {\n case '>':\n if (steps === '>') {\n Glide.index = length;\n } else if (this.isEnd()) {\n if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n this._o = true;\n\n Glide.index = 0;\n }\n } else if (countableSteps) {\n Glide.index += Math.min(length - Glide.index, -toInt(steps));\n } else {\n Glide.index++;\n }\n break;\n\n case '<':\n if (steps === '<') {\n Glide.index = 0;\n } else if (this.isStart()) {\n if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n this._o = true;\n\n Glide.index = length;\n }\n } else if (countableSteps) {\n Glide.index -= Math.min(Glide.index, toInt(steps));\n } else {\n Glide.index--;\n }\n break;\n\n case '=':\n Glide.index = steps;\n break;\n\n default:\n warn('Invalid direction pattern [' + direction + steps + '] has been used');\n break;\n }\n },\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 /**\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 /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset(direction) {\n return this._o && this.move.direction === direction;\n },\n\n /**\n * Sets current status of control elements\n *\n */\n setControlStatus: function setControlStatus() {\n var _this = this;\n // when rewind is enabled, hide left arrow at first slide and right arrow at last slide\n if (!Glide.settings.rewind) {\n if (_this.isStart()) {\n Events.emit('controls.hide.left');\n } else if (!_this.isStart()) {\n Events.emit('controls.show.left');\n }\n\n if (_this.isEnd()) {\n Events.emit('controls.hide.right');\n } else if (!_this.isEnd()) {\n Events.emit('controls.show.right');\n }\n }\n }\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 /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\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;\n\n // If the `bound` option is acitve, 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 (Glide.isType('slider') && settings.focusAt !== 'center' && settings.bound) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\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\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 Events.on(['build.before'], function () {\n Run.make('=');\n });\n\n return Run;\n }\n\n /**\n * Returns a current time.\n *\n * @return {Number}\n */\n function 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 function throttle(func, wait, options) {\n var timeout = void 0,\n context = void 0,\n args = void 0,\n result = void 0;\n var previous = 0;\n if (!options) options = {};\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 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) {\n timeout = setTimeout(later, remaining);\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\n var MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n };\n\n function 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]] = 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]] = this.value / 2 + 'px';\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\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\n style.marginLeft = '';\n style.marginRight = '';\n }\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\n define(Gaps, 'grow', {\n /**\n * Gets additional dimentions 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 - 1);\n }\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\n return Gaps.value * (perView - 1) / perView;\n }\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 Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n\n return Gaps;\n }\n\n /**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\n function 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 /**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\n function exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\n }\n\n var TRACK_SELECTOR = '[data-glide-el=\"track\"]';\n\n function Html(Glide, Components) {\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.slides = Array.prototype.slice.call(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.cloneSlide);\n });\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 /**\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 (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\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 /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn('Could not find track element. Please use ' + TRACK_SELECTOR + ' attribute.');\n }\n }\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 return Html;\n }\n\n function 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\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 /**\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\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 /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n\n return Peek;\n }\n\n function 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 /**\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\n this.offset = offset;\n\n Events.emit('move', {\n movement: this.value\n });\n\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\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 /**\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\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\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 /**\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 Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n\n return Move;\n }\n\n function Sizes(Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimentions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = 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 /**\n * Setups dimentions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper(dimention) {\n Components.Html.wrapper.style.width = this.wrapperSize + 'px';\n },\n\n /**\n * Shows/hides controls based on number of visible slides\n *\n * @return {Void}\n */\n setupControls: function setupControls() {\n var slides = Components.Html.slides;\n\n if (Glide.settings.rewind && Glide.settings.useSmartNav) {\n if (Sizes.numVisibleSlides < slides.length) {\n Events.emit('controls.show.all');\n } else {\n Events.emit('controls.hide.all');\n }\n }\n },\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\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\n define(Sizes, 'width', {\n /**\n * Gets width value of the glide.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.root.offsetWidth;\n }\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\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of the single slide.\n *\n * @return {Number}\n */\n get: function get() { // allow fixed slide widths (MB:2020-3-10)\n return Glide.settings.slideWidth > 0 ? Glide.settings.slideWidth : Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n\n define(Sizes, 'numVisibleSlides', {\n /**\n * Gets number of slides that are fully visible\n * @return {Number}\n */\n get: function get() {\n return Math.floor(Sizes.width / Sizes.slideWidth);\n }\n });\n\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimentions (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 Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n\n Events.on(['mount.after', 'resize'], function() {\n Sizes.setupControls();\n });\n\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Sizes.remove();\n });\n\n return Sizes;\n }\n\n function 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\n this.typeClass();\n this.activeClass();\n\n Events.emit('build.after');\n },\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[Glide.settings.type]);\n },\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 Components.Html.root.classList.remove(classes.transitionGlide);\n if (slide) {\n slide.classList.add(classes.activeSlide);\n slide.classList.remove(classes.preActiveSlide);\n\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.activeSlide);\n sibling.classList.remove(classes.preActiveSlide);\n });\n }\n },\n\n /**\n * Sets transition class to current slide.\n *\n * @return {Void}\n */\n transitionClass: function transitionClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n Components.Html.root.classList.add(classes.transitionGlide);\n if (slide) {\n slide.classList.add(classes.preActiveSlide);\n }\n },\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var classes = Glide.settings.classes;\n\n Components.Html.root.classList.remove(classes[Glide.settings.type]);\n\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(classes.activeSlide);\n });\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 Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimentions\n * - on updating settings via API\n */\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n\n /**\n * Swap transition class of current slide:\n * - after each move to the new index\n */\n Events.on('move.before', function () {\n Build.transitionClass();\n });\n\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n Events.on('move.after', function () {\n Build.activeClass();\n });\n\n return Build;\n }\n\n function 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 /**\n * Collect clones with pattern.\n *\n * @return {Void}\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\n\n var peekIncrementer = +!!Glide.settings.peek;\n var part = perView + peekIncrementer;\n var start = slides.slice(0, part);\n var end = slides.slice(-part);\n\n for (var r = 0; r < Math.max(1, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < start.length; i++) {\n var clone = start[i].cloneNode(true);\n\n clone.classList.add(classes.cloneSlide);\n\n items.push(clone);\n }\n\n for (var _i = 0; _i < end.length; _i++) {\n var _clone = end[_i].cloneNode(true);\n\n _clone.classList.add(classes.cloneSlide);\n\n items.unshift(_clone);\n }\n }\n\n return items;\n },\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\n\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half, items.length);\n var width = 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 /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n\n define(Clones, 'grow', {\n /**\n * Gets additional dimentions 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 /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n Events.on('destroy', function () {\n Clones.remove();\n });\n\n return Clones;\n }\n\n var EventsBinder = function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, EventsBinder);\n\n this.listeners = listeners;\n }\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\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\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 /**\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 return EventsBinder;\n }();\n\n function Resize(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\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 /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n\n return Resize;\n }\n\n var VALID_DIRECTIONS = ['ltr', 'rtl'];\n var FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n };\n\n function 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 /**\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 /**\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 /**\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 /**\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\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 /**\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 /**\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 Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n Events.on('update', function () {\n Direction.mount();\n });\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 Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\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 */\n function 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 */\n function 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 return translate + Components.Gaps.value * Glide.index;\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 */\n function 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 function 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 */\n function 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 function 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\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\n function 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\n Components.Html.wrapper.style.transform = 'translate3d(' + -1 * transform + 'px, 0px, 0px)';\n },\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 /**\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 Events.on('move', function (context) {\n Events.emit('move.before'); // custom: fire pre-move event\n\n var gap = Components.Gaps.value;\n var length = Components.Sizes.length;\n var width = Components.Sizes.slideWidth;\n\n if (Glide.isType('carousel') && Components.Run.isOffset('<')) {\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n\n Translate.set(width * (length - 1));\n });\n\n return Translate.set(-width - gap * length);\n }\n\n if (Glide.isType('carousel') && Components.Run.isOffset('>')) {\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n\n Translate.set(0);\n });\n\n return Translate.set(width * length + gap * length);\n }\n\n return Translate.set(context.movement);\n });\n\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Translate.remove();\n });\n\n return Translate;\n }\n\n function 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\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 property + ' ' + this.duration + 'ms ' + settings.animationTimingFunc;\n }\n\n return property + ' 0ms ' + settings.animationTimingFunc;\n },\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\n Components.Html.wrapper.style.transition = this.compose(property);\n },\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 /**\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 /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n\n this.set();\n },\n\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n\n this.set();\n }\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 /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n Events.on('move', function () {\n Transition.set();\n });\n\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimentions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n Events.on('run', function () {\n Transition.enable();\n });\n\n /**\n * Enable transition:\n * - when the first slide is hit\n */\n Events.on('run.start', function () {\n });\n\n /**\n * Enable transition:\n * - when the last slide is hit\n */\n Events.on('run.end', function () {\n });\n\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Transition.remove();\n });\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 */\n\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) { }\n\n var supportsPassive$1 = supportsPassive;\n\n var START_EVENTS = ['touchstart', 'mousedown'];\n var MOVE_EVENTS = ['touchmove', 'mousemove'];\n var END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\n var MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\n\n function Swipe(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? { passive: true } : false;\n\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\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\n var swipe = this.touches(event);\n\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n\n this.bindSwipeMove();\n this.bindSwipeEnd();\n\n Events.emit('swipe.start');\n }\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\n\n var swipe = this.touches(event);\n\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\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n\n Components.Move.make(subExSx * toFloat(touchRatio));\n\n Components.Html.root.classList.add(classes.dragging);\n\n Events.emit('swipe.move');\n\n Components.Html.root.dispatchEvent(new Event('glide-swipe'));\n } else {\n return false;\n }\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 settings = Glide.settings;\n\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n var steps = Math.round(swipeDistance / Components.Sizes.slideWidth);\n\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < settings.touchAngle) {\n // While swipe is positive and greater than threshold move backward.\n if (settings.perTouch) {\n steps = Math.min(steps, toInt(settings.perTouch));\n }\n\n if (Components.Direction.is('rtl')) {\n steps = -steps;\n }\n\n Components.Run.make(Components.Direction.resolve('<' + steps));\n } else if (swipeDistance < -threshold && swipeDeg < settings.touchAngle) {\n // While swipe is negative and lower than negative threshold move forward.\n if (settings.perTouch) {\n steps = Math.max(steps, -toInt(settings.perTouch));\n }\n\n if (Components.Direction.is('rtl')) {\n steps = -steps;\n }\n\n Components.Run.make(Components.Direction.resolve('>' + steps));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(settings.classes.dragging);\n\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n\n Events.emit('swipe.end');\n }\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 settings = Glide.settings;\n\n if (settings.swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (settings.dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\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 /**\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 /**\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 /**\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 /**\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 /**\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 /**\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 /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n\n Components.Transition.enable();\n\n return this;\n },\n\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n\n Components.Transition.disable();\n\n return this;\n }\n };\n\n /**\n * Add component class:\n * - after initial building\n */\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n\n return Swipe;\n }\n\n function Images(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\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 /**\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 /**\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 /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n // disabling this to prevent js errors in chrome. Can't preventDefault in passive listener\n //event.preventDefault();\n }\n };\n\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n\n return Images;\n }\n\n function 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 /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n var detached = false;\n\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n var prevented = false;\n\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\n this.bind();\n },\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 /**\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 /**\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 /**\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 this.items[i].setAttribute('data-href', this.items[i].getAttribute('href'));\n\n this.items[i].removeAttribute('href');\n }\n\n detached = true;\n }\n\n return this;\n },\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 this.items[i].setAttribute('href', this.items[i].getAttribute('data-href'));\n }\n\n detached = false;\n }\n\n return this;\n }\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 /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n\n return Anchors;\n }\n\n var NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\n var CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\n\n function Controls(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var capture = supportsPassive$1 ? { passive: true } : false;\n\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 /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n\n this.addBindings();\n },\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 /**\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 /**\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 item.classList.add(settings.classes.activeNav);\n\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.activeNav);\n });\n }\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\n if (item) {\n item.classList.remove(Glide.settings.classes.activeNav);\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 /**\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 /**\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 /**\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 /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in driection precised in\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n //event.preventDefault();\n\n Components.Run.make(Components.Direction.resolve(event.currentTarget.getAttribute('data-glide-dir')));\n },\n\n hideLeft: function hideLeftControl() {\n for (var i = 0; i < this._c.length; i++) {\n this._c[i].classList.add(Glide.settings.classes.controls.hideLeft);\n }\n },\n\n showLeft: function showLeftControl() {\n for (var i = 0; i < this._c.length; i++) {\n this._c[i].classList.remove(Glide.settings.classes.controls.hideLeft);\n }\n },\n\n hideRight: function hideRightControl() {\n for (var i = 0; i < this._c.length; i++) {\n this._c[i].classList.add(Glide.settings.classes.controls.hideRight);\n }\n },\n\n showRight: function showRightControl() {\n for (var i = 0; i < this._c.length; i++) {\n this._c[i].classList.remove(Glide.settings.classes.controls.hideRight);\n }\n },\n\n showControls: function showControls() {\n for (var i = 0; i < this._c.length; i++) {\n this._c[i].classList.remove(Glide.settings.classes.controls.hideRight);\n this._c[i].classList.remove(Glide.settings.classes.controls.hideLeft);\n }\n },\n\n hideControls: function showControls() {\n for (var i = 0; i < this._c.length; i++) {\n this._c[i].classList.add(Glide.settings.classes.controls.hideRight);\n this._c[i].classList.add(Glide.settings.classes.controls.hideLeft);\n }\n }\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 /**\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 Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n\n Events.on('controls.hide.left', function () {\n Controls.hideLeft();\n });\n\n Events.on('controls.show.left', function () {\n Controls.showLeft();\n });\n\n Events.on('controls.hide.right', function () {\n Controls.hideRight();\n });\n\n Events.on('controls.show.right', function () {\n Controls.showRight();\n });\n\n Events.on('controls.hide.all', function () {\n Controls.hideControls();\n });\n\n Events.on('controls.show.all', function () {\n Controls.showControls();\n });\n\n return Controls;\n }\n\n function Keyboard(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\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 /**\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 /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\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 if (event.keyCode === 39) {\n Components.Run.make(Components.Direction.resolve('>'));\n }\n\n if (event.keyCode === 37) {\n Components.Run.make(Components.Direction.resolve('<'));\n }\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 Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n Events.on('update', function () {\n Keyboard.mount();\n });\n\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n Events.on('destroy', function () {\n Binder.destroy();\n });\n\n return Keyboard;\n }\n\n function Autoplay(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\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 (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 }, this.time);\n }\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 /**\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 _this2.stop();\n });\n\n Binder.on('mouseout', Components.Html.root, function () {\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\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 /**\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 Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\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 Events.on(['run.before', 'pause', 'destroy', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n Events.on(['run.after', 'play', 'swipe.end'], function () {\n Autoplay.start();\n });\n\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n Events.on('update', function () {\n Autoplay.mount();\n });\n\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n Events.on('destroy', function () {\n Binder.destroy();\n });\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 function 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\n function 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 /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n var settings = Glide.settings;\n\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 var points = sortBreakpoints(settings.breakpoints);\n\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n var defaults = _extends({}, settings);\n\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: ' + point + 'px)').matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n _extends(settings, Breakpoints.match(points));\n\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n Events.on('update', function () {\n points = sortBreakpoints(points);\n\n defaults = _extends({}, settings);\n });\n\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n\n return Breakpoints;\n }\n\n var 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\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\n var Glide$1 = function (_Core) {\n inherits(Glide$$1, _Core);\n\n function Glide$$1() {\n classCallCheck(this, Glide$$1);\n return possibleConstructorReturn(this, (Glide$$1.__proto__ || Object.getPrototypeOf(Glide$$1)).apply(this, arguments));\n }\n\n createClass(Glide$$1, [{\n key: 'mount',\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return get(Glide$$1.prototype.__proto__ || Object.getPrototypeOf(Glide$$1.prototype), 'mount', this).call(this, _extends({}, COMPONENTS, extensions));\n }\n }]);\n return Glide$$1;\n }(Glide);\n\n return Glide$1;\n\n})));\n"]}