{"version":3,"file":"js/vendor.js","mappings":"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","sources":["webpack://wp-plugin-cirrus-blocks/./node_modules/@glidejs/glide/dist/glide.esm.js","webpack://wp-plugin-cirrus-blocks/./node_modules/countup.js/dist/countUp.min.js"],"sourcesContent":["/*!\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","var t=function(){return t=Object.assign||function(t){for(var i,n=1,s=arguments.length;n<s;n++)for(var a in i=arguments[n])Object.prototype.hasOwnProperty.call(i,a)&&(t[a]=i[a]);return t},t.apply(this,arguments)},i=function(){function i(i,n,s){var a=this;this.endVal=n,this.options=s,this.version=\"2.8.0\",this.defaults={startVal:0,decimalPlaces:0,duration:2,useEasing:!0,useGrouping:!0,useIndianSeparators:!1,smartEasingThreshold:999,smartEasingAmount:333,separator:\",\",decimal:\".\",prefix:\"\",suffix:\"\",enableScrollSpy:!1,scrollSpyDelay:200,scrollSpyOnce:!1},this.finalEndVal=null,this.useEasing=!0,this.countDown=!1,this.error=\"\",this.startVal=0,this.paused=!0,this.once=!1,this.count=function(t){a.startTime||(a.startTime=t);var i=t-a.startTime;a.remaining=a.duration-i,a.useEasing?a.countDown?a.frameVal=a.startVal-a.easingFn(i,0,a.startVal-a.endVal,a.duration):a.frameVal=a.easingFn(i,a.startVal,a.endVal-a.startVal,a.duration):a.frameVal=a.startVal+(a.endVal-a.startVal)*(i/a.duration);var n=a.countDown?a.frameVal<a.endVal:a.frameVal>a.endVal;a.frameVal=n?a.endVal:a.frameVal,a.frameVal=Number(a.frameVal.toFixed(a.options.decimalPlaces)),a.printValue(a.frameVal),i<a.duration?a.rAF=requestAnimationFrame(a.count):null!==a.finalEndVal?a.update(a.finalEndVal):a.options.onCompleteCallback&&a.options.onCompleteCallback()},this.formatNumber=function(t){var i,n,s,e,o=t<0?\"-\":\"\";i=Math.abs(t).toFixed(a.options.decimalPlaces);var r=(i+=\"\").split(\".\");if(n=r[0],s=r.length>1?a.options.decimal+r[1]:\"\",a.options.useGrouping){e=\"\";for(var l=3,h=0,u=0,p=n.length;u<p;++u)a.options.useIndianSeparators&&4===u&&(l=2,h=1),0!==u&&h%l==0&&(e=a.options.separator+e),h++,e=n[p-u-1]+e;n=e}return a.options.numerals&&a.options.numerals.length&&(n=n.replace(/[0-9]/g,(function(t){return a.options.numerals[+t]})),s=s.replace(/[0-9]/g,(function(t){return a.options.numerals[+t]}))),o+a.options.prefix+n+s+a.options.suffix},this.easeOutExpo=function(t,i,n,s){return n*(1-Math.pow(2,-10*t/s))*1024/1023+i},this.options=t(t({},this.defaults),s),this.formattingFn=this.options.formattingFn?this.options.formattingFn:this.formatNumber,this.easingFn=this.options.easingFn?this.options.easingFn:this.easeOutExpo,this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.endVal=this.validateValue(n),this.options.decimalPlaces=Math.max(this.options.decimalPlaces),this.resetDuration(),this.options.separator=String(this.options.separator),this.useEasing=this.options.useEasing,\"\"===this.options.separator&&(this.options.useGrouping=!1),this.el=\"string\"==typeof i?document.getElementById(i):i,this.el?this.printValue(this.startVal):this.error=\"[CountUp] target is null or undefined\",\"undefined\"!=typeof window&&this.options.enableScrollSpy&&(this.error?console.error(this.error,i):(window.onScrollFns=window.onScrollFns||[],window.onScrollFns.push((function(){return a.handleScroll(a)})),window.onscroll=function(){window.onScrollFns.forEach((function(t){return t()}))},this.handleScroll(this)))}return i.prototype.handleScroll=function(t){if(t&&window&&!t.once){var i=window.innerHeight+window.scrollY,n=t.el.getBoundingClientRect(),s=n.top+window.pageYOffset,a=n.top+n.height+window.pageYOffset;a<i&&a>window.scrollY&&t.paused?(t.paused=!1,setTimeout((function(){return t.start()}),t.options.scrollSpyDelay),t.options.scrollSpyOnce&&(t.once=!0)):(window.scrollY>a||s>i)&&!t.paused&&t.reset()}},i.prototype.determineDirectionAndSmartEasing=function(){var t=this.finalEndVal?this.finalEndVal:this.endVal;this.countDown=this.startVal>t;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold&&this.options.useEasing){this.finalEndVal=t;var n=this.countDown?1:-1;this.endVal=t+n*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;null!==this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},i.prototype.start=function(t){this.error||(this.options.onStartCallback&&this.options.onStartCallback(),t&&(this.options.onCompleteCallback=t),this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},i.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},i.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},i.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,null==this.finalEndVal&&this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},i.prototype.printValue=function(t){var i;if(this.el){var n=this.formattingFn(t);if(null===(i=this.options.plugin)||void 0===i?void 0:i.render)this.options.plugin.render(this.el,n);else if(\"INPUT\"===this.el.tagName)this.el.value=n;else\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=n:this.el.innerHTML=n}},i.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},i.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \".concat(t),null)},i.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},i}();export{i as CountUp};\n"],"names":["ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","configurable","writable","_createClass","protoProps","staticProps","value","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","_possibleConstructorReturn","self","call","ReferenceError","_assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","e","_isNativeReflectConstruct","result","Super","NewTarget","this","_get","get","property","receiver","base","hasOwnProperty","_superPropBase","desc","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","warn","msg","console","error","concat","toInt","parseInt","isString","isObject","isFunction","isUndefined","isArray","Array","define","prop","definition","mergeOptions","settings","options","assign","EventsBus","events","undefined","hop","event","handler","index","remove","on","context","emit","item","Glide$1","Glide","selector","_c","_t","_e","extensions","glide","components","name","_name","mount","transformers","pattern","Run","make","distance","Transition","disable","Move","interval","_o","set","_i","_d","status","now","Date","getTime","func","wait","timeout","args","previous","later","leading","throttled","at","remaining","clearTimeout","trailing","setTimeout","cancel","MARGIN_TYPE","siblings","node","parentNode","n","firstChild","matched","nextSibling","nodeType","toArray","nodeList","slice","EventsBinder","listeners","el","closure","capture","addEventListener","removeEventListener","VALID_DIRECTIONS","FLIPED_MOVEMENTS","Rtl","Components","modify","translate","Direction","is","Gap","multiplier","Math","floor","Sizes","slideWidth","Gaps","Grow","Clones","grow","Peeking","Peek","before","Focusing","width","supportsPassive","opts","window","supportsPassive$1","START_EVENTS","MOVE_EVENTS","END_EVENTS","MOUSE_EVENTS","CONTROLS_SELECTOR","PREVIOUS_CONTROLS_SELECTOR","NEXT_CONTROLS_SELECTOR","sortBreakpoints","points","sort","reduce","r","k","COMPONENTS","Html","Events","root","track","querySelector","collectSlides","slides","wrapper","children","classList","contains","_r","document","t","Translate","transform","TRANSFORMERS","mutate","transformer","mutator","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","calculateForwardIndex","isBound","normalizeForwardIndex","_index","view","ceil","calculateBackwardIndex","normalizeBackwardIndex","_m","step","substr","Swipe","swipeSin","swipeStartX","swipeStartY","passive","bindSwipeStart","start","swipe","touches","pageX","pageY","bindSwipeMove","bindSwipeEnd","subExSx","subEySy","powEX","abs","powEY","swipeHypotenuse","sqrt","swipeCathetus","asin","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","ArrowRight","ArrowLeft","Autoplay","setInterval","stop","time","clearInterval","Breakpoints","match","matchMedia","point","matches","_Core","subClass","superClass","create","_inherits","_super","s","a","endVal","version","startVal","decimalPlaces","useEasing","useGrouping","useIndianSeparators","smartEasingThreshold","smartEasingAmount","separator","decimal","prefix","suffix","enableScrollSpy","scrollSpyDelay","scrollSpyOnce","finalEndVal","countDown","paused","once","count","startTime","frameVal","easingFn","Number","toFixed","printValue","rAF","requestAnimationFrame","update","onCompleteCallback","formatNumber","l","h","u","numerals","replace","easeOutExpo","pow","formattingFn","validateValue","resetDuration","String","getElementById","onScrollFns","handleScroll","onscroll","innerHeight","scrollY","getBoundingClientRect","top","pageYOffset","height","reset","determineDirectionAndSmartEasing","onStartCallback","pauseResume","cancelAnimationFrame","plugin","render","tagName","textContent","innerHTML","ensureNumber","isNaN"],"sourceRoot":""}