{"version":3,"names":["_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","protoProps","staticProps","_inherits","subClass","superClass","create","value","_setPrototypeOf","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","p","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","call","e","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","_createSuper","Derived","hasNativeReflectConstruct","_createSuperInternal","Super","result","NewTarget","this","arguments","apply","_superPropBase","object","property","hasOwnProperty","_get","get","receiver","base","desc","getOwnPropertyDescriptor","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","toFloat","parseFloat","isString","isObject","isFunction","isUndefined","isArray","Array","mount","glide","extensions","events","components","name","_name","define","prop","definition","sortKeys","keys","sort","reduce","r","k","mergeOptions","settings","options","assign","EventsBus","undefined","hop","on","event","handler","index","push","remove","emit","context","forEach","item","Glide$1","Glide","selector","_c","_t","_e","mount$1","mutate","transformers","update","go","pattern","Run","make","move","distance","Transition","disable","Move","destroy","play","interval","pause","enable","isType","_o","set","_i","_d","status","Components","Events","_this","calculate","after","isStart","isEnd","isOffset","steps","viewSize","calculateForwardIndex","normalizeForwardIndex","_index","calculateBackwardIndex","normalizeBackwardIndex","isBound","Math","floor","view","ceil","_m","step","substr","Html","slides","now","Date","getTime","func","wait","timeout","args","previous","later","leading","throttled","at","remaining","clearTimeout","trailing","setTimeout","cancel","MARGIN_TYPE","Gaps","len","style","Direction","marginLeft","marginRight","Sizes","wrapper","children","siblings","node","parentNode","n","firstChild","matched","nextSibling","nodeType","exist","window","HTMLElement","toArray","nodeList","slice","TRACK_SELECTOR","root","track","querySelector","collectSlides","filter","classList","contains","_r","document","t","Peek","_v","before","offset","movement","slideWidth","translate","is","setupSlides","width","setupWrapper","wrapperSize","offsetWidth","grow","Clones","reductor","Build","typeClass","activeClass","add","sibling","removeClasses","_Glide$settings$class","items","collect","_Glide$settings","peekIncrementer","cloneCount","round","append","reverse","prepend","max","cloneNode","_clone","unshift","_Components$Html","half","appendChild","_i2","insertBefore","_i3","removeChild","EventsBinder","listeners","el","closure","capture","addEventListener","off","removeEventListener","Resize","Binder","bind","unbind","VALID_DIRECTIONS","FLIPED_MOVEMENTS","resolve","token","split","join","addClass","removeClass","indexOf","Rtl","modify","Gap","multiplier","Grow","Peeking","Focusing","mutator","TRANSFORMERS","transformer","Translate","transform","translate3d","mozTransform","webkitTransform","getStartIndex","getTravelDistance","travelDistance","startWidth","compose","duration","transition","callback","supportsPassive","opts","supportsPassive$1","START_EVENTS","MOVE_EVENTS","END_EVENTS","MOUSE_EVENTS","Swipe","swipeSin","swipeStartX","swipeStartY","passive","bindSwipeStart","start","swipe","touches","pageX","pageY","bindSwipeMove","bindSwipeEnd","subExSx","subEySy","powEX","abs","powEY","swipeHypotenuse","sqrt","swipeCathetus","asin","PI","stopPropagation","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","NAV_SELECTOR","CONTROLS_SELECTOR","PREVIOUS_CONTROLS_SELECTOR","NEXT_CONTROLS_SELECTOR","Controls","_n","_arrowControls","next","addBindings","setActive","removeActive","controls","setArrowState","resetArrowState","disableArrow","_len","lists","_key","list","element","_len2","_key2","removeBindings","elements","currentTarget","getAttribute","Keyboard","press","code","Autoplay","setInterval","stop","time","clearInterval","sortBreakpoints","points","Breakpoints","match","matchMedia","point","matches","COMPONENTS","_Core","_super","kdxCarouselCss","StCarousel","id","guid","initialRenderComplete","imagesLazyLoaded","slideCount","componentDidRender","getElementById","setUp","setAttribute","isOnScreen","renderLazyImages","hideOrShowArrows","totalSlides","innerWidth","notEnoughItemsForArrows","perSlide","perSlideTablet","perSlideMobile","componentWillLoad","leftArrow","_BREAKPOINTS_","sm","leftArrowIcon","leftArrowIconMobile","rightArrow","rightArrowIcon","rightArrowIconMobile","componentDidLoad","globalThis","imageLoader","initialize","resizeHandler","bulletsWrapper","innerHTML","autoPlay","carouselType","centerFocus","autoPlayDuration","peekTablet","gapTablet","peekMobile","gapMobile","centerFocusMobile","styles","styleSheet","createElement","textContent","head","hideArrows","paused","cardsSlider","setCountText","adjustableHeightOnMobile","slideHeight","clientHeight","glideTrack","newHeight","height","scrollIntoView","behavior","block","countText","low","heigh","min","innerText","togglePause","images","lazyImage","srcSet","render","h","class","cssClasses","fullWidth","icon","bulletNav","displayBulletNavExternally","onClick","playText","pauseText"],"sources":["node_modules/@glidejs/glide/dist/glide.esm.js","src/components/shared/kdx-carousel/kdx-carousel.scss?tag=kdx-carousel","src/components/shared/kdx-carousel/kdx-carousel.tsx"],"sourcesContent":["/*!\n * Glide.js v3.6.0\n * (c) 2013-2022 Jędrzej Chałubek (https://github.com/jedrzejchalubek/)\n * Released under the MIT License.\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 _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\n if (settings.classes.hasOwnProperty('direction')) {\n options.classes.direction = Object.assign({}, defaults.classes.direction, settings.classes.direction);\n }\n\n if (settings.classes.hasOwnProperty('type')) {\n options.classes.type = Object.assign({}, defaults.classes.type, settings.classes.type);\n }\n\n if (settings.classes.hasOwnProperty('slide')) {\n options.classes.slide = Object.assign({}, defaults.classes.slide, settings.classes.slide);\n }\n\n if (settings.classes.hasOwnProperty('arrow')) {\n options.classes.arrow = Object.assign({}, defaults.classes.arrow, settings.classes.arrow);\n }\n\n if (settings.classes.hasOwnProperty('nav')) {\n options.classes.nav = Object.assign({}, defaults.classes.nav, settings.classes.nav);\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, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n\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 * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\n\nfunction exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\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 (exist(r)) {\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 if (exist(t)) {\n Html._t = t;\n } else {\n warn(\"Could not find track element. Please use \".concat(TRACK_SELECTOR, \" attribute.\"));\n }\n }\n });\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n /**\n * 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, \" \").concat(this.duration, \"ms \").concat(settings.animationTimingFunc);\n }\n\n return \"\".concat(property, \" 0ms \").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 if (item) {\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 /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.remove(Glide.settings.classes.nav.active);\n }\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\n if (event.code === 'ArrowRight') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n }\n\n if (event.code === 'ArrowLeft') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\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","@import 'node_modules/@glidejs/glide/src/assets/sass/glide.core';\r\n\r\n.kdx-carousel {\r\n position: relative;\r\n\r\n .st-carousel__showing {\r\n display: none;\r\n text-align: center;\r\n padding-bottom: 10px;\r\n }\r\n\r\n .st-carousel-inner {\r\n position: relative;\r\n }\r\n\r\n .glide__slides {\r\n white-space: normal;\r\n }\r\n\r\n .controls {\r\n button {\r\n position: absolute;\r\n background: $carouselArrowBG;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n\t\t\tborder: 1px solid transparent;\r\n width: 44px;\r\n height: 44px;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 3;\r\n transition: background .2s ease-in-out;\r\n\r\n &:hover, &:focus {\r\n background: $carouselArrowBGHover;\r\n\t\t\t\tborder: 1px solid $carouselArrowBGHover;\r\n\r\n svg { fill: $carouselArrowSvgColorHover; }\r\n }\r\n svg {\r\n @include svg-format(16px, 22px, $carouselArrowSvgColor);\r\n svg { transform: translate(-1px, -1px); }\r\n }\r\n &.left-btn {\r\n left: 24px;\r\n\r\n svg { transform: translate(-2px, -2px); }\r\n }\r\n &.right-btn {\r\n right: 24px;\r\n\r\n svg { transform: translate(2px, -2px); }\r\n }\r\n &[disabled] {\r\n background-color: $gray-lite;\r\n }\r\n }\r\n }\r\n &.-cards-slider {\r\n width: calc(100% - 170px);\r\n margin: 0 auto;\r\n\r\n .glide__slides {\r\n // Add padding so box shadows aren't cut off\r\n padding: 20px 0;\r\n }\r\n\r\n .controls {\r\n button {\r\n left: -60px;\r\n\r\n &.right-btn {\r\n left: auto;\r\n right: -60px;\r\n }\r\n }\r\n }\r\n }\r\n &.full-width {\r\n width: 100%;\r\n\r\n &::before, &::after {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n width: 65px;\r\n height: 100%;\r\n z-index: 2;\r\n }\r\n &::before {\r\n left: 0;\r\n background: transparent linear-gradient(270deg, #FFFFFF00 0%, #FFFFFFA1 33%, #FFF 100%) 0% 0% no-repeat padding-box;\r\n }\r\n &::after {\r\n right: 0;\r\n background: transparent linear-gradient(90deg, #FFFFFF00 0%, #FFFFFFA1 33%, #FFF 100%) 0% 0% no-repeat padding-box;\r\n }\r\n .controls button {\r\n left: 24px;\r\n\r\n &.right-btn {\r\n left: auto;\r\n right: 24px;\r\n }\r\n }\r\n }\r\n .bullets-wrapper {\r\n display: flex;\r\n align-items: center;\r\n\r\n &.internal {\r\n position: absolute;\r\n bottom: 30px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n }\r\n\r\n &.external {\r\n justify-content: center;\r\n margin-top: 10px;\r\n\r\n .glide__bullets button {\r\n background: $pagingActive;\r\n }\r\n .pause-action {\r\n color: $primary;\r\n border-bottom: 1px solid transparent;\r\n\r\n &:hover, &:focus { border-bottom: 1px solid $gray-dark; }\r\n }\r\n }\r\n\r\n button {\r\n // reset default btn style\r\n border: none;\r\n outline: none;\r\n box-shadow: none;\r\n transition: all 350ms;\r\n }\r\n\r\n .glide__bullets button {\r\n margin: 0 7px;\r\n padding: 0;\r\n width: 7px;\r\n height: 7px;\r\n border-radius: 50%;\r\n background: #fff;\r\n\r\n &:hover,\r\n &:focus {\r\n transform: scale(1.5);\r\n }\r\n\r\n &.glide__bullet--active {\r\n background: $pagingActive;\r\n transform: scale(2.4);\r\n }\r\n }\r\n .pause-action {\r\n background: none;\r\n color: #FFF;\r\n transition: all .3s ease-in-out;\r\n\r\n svg {\r\n @include svg-format(14px, 14px, currentColor);\r\n transform: translateY(-2px);\r\n }\r\n &:hover, &:focus {\r\n color: #000;\r\n transform: none;\r\n text-transform: underline;\r\n background: #FFF;\r\n\r\n svg {\r\n color: $primary;\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n.sfPageEditor.zeContentMode {\r\n .st-carousel .controls button {\r\n display: none !important;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n@include media-breakpoint-down(lg) {\r\n .kdx-carousel {\r\n\r\n .controls {\r\n button {\r\n width: 36px;\r\n height: 36px;\r\n\r\n svg {\r\n transform: translate(-2px, -2px);\r\n @include svg-format(16px, 18px, currentColor);\r\n }\r\n &.right-btn {\r\n svg { transform: translate(0, -2px); }\r\n }\r\n }\r\n }\r\n &.-cards-slider {\r\n width: calc(100% - 120px);\r\n padding: 0;\r\n\r\n .controls {\r\n button {\r\n left: -50px;\r\n\r\n &.right-btn {\r\n left: auto;\r\n right: -50px;\r\n }\r\n }\r\n }\r\n }\r\n &.full-width {\r\n &::before { left: -30px; }\r\n &::after { right: -30px; }\r\n .controls button {\r\n left: 8px;\r\n\r\n &.right-btn {\r\n left: auto;\r\n right: 8px;\r\n }\r\n }\r\n &.-cards-slider {\r\n\r\n .controls button {\r\n left: 8px;\r\n\r\n &.right-btn {\r\n left: auto;\r\n right: 8px;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, h, Element, Listen, Prop, State } from '@stencil/core';\r\nimport { isOnScreen, guid, _BREAKPOINTS_ } from 'utils';\r\nimport Glide from '@glidejs/glide';\r\n\r\n@Component({\r\n\ttag: 'kdx-carousel',\r\n\tstyleUrl: 'kdx-carousel.scss'\r\n})\r\nexport class StCarousel {\r\n\r\n\t@Element() root: HTMLElement;\r\n\r\n /**\r\n * glideJS type. Caorusel (seemless) or slider (rewinds)\r\n */\r\n @Prop() carouselType: string = \"slider\";\r\n\r\n /**\r\n * Display flag for showing the bullet navigation. Pass true to show.\r\n */\r\n @Prop() bulletNav: boolean;\r\n\r\n /* On multi item slides, set focus to middle item.\r\n */\r\n @Prop() centerFocus: boolean;\r\n @Prop() centerFocusMobile: boolean = false;\r\n\r\n /*\r\n * arrows Icons\r\n */\r\n @Prop() hideArrows: boolean = false;\r\n @Prop() leftArrowIcon: string = 'chevron-left';\r\n @Prop() leftArrowIconMobile: string = 'chevron-left';\r\n @Prop() rightArrowIcon: string = 'chevron-right';\r\n @Prop() rightArrowIconMobile: string = 'chevron-right';\r\n \r\n /**\r\n * If true, bullet nav will display below slides. Default will show bullet\r\n * nav within slides area.\r\n */\r\n @Prop() displayBulletNavExternally: boolean;\r\n\r\n /**\r\n * Amount of items to display per slide. Default will show 1 item per slide.\r\n */\r\n @Prop() perSlide: string = \"1\";\r\n @Prop() perSlideTablet: string = \"1\";\r\n @Prop() perSlideMobile: string = \"1\";\r\n\r\n /**\r\n * shows some of next card\r\n */\r\n @Prop() peek: number = 0; // use to add peek anytime\r\n @Prop() peekTablet: number = 0; // show peek on tablet\r\n @Prop() peekMobile: number = 0; // show peek on mobile\r\n\r\n /**\r\n * If set, slides will autoplay and a play/pause button will appear.\r\n */\r\n @Prop() autoPlay: boolean;\r\n\r\n /** \r\n * If set, the pause/play icon will also have text next to it. ex: || Pause \r\n */\r\n @Prop() pauseText: string;\r\n @Prop() playText: string;\r\n\r\n /**\r\n * Override the default duration for slide times while on autoplay.\r\n */\r\n @Prop() autoPlayDuration: string = '8000';\r\n\r\n /**\r\n * Provide styling and support for the slider showing cards.\r\n */\r\n @Prop() cardsSlider: boolean;\r\n\r\n /**\r\n * Provide styling if carousel goes full width with no container\r\n */\r\n @Prop() fullWidth: boolean;\r\n\r\n /** \r\n * default gap between items\r\n */\r\n @Prop() gap: number = 32;\r\n @Prop() gapTablet: number = 32;\r\n @Prop() gapMobile: number = 16;\r\n\r\n /**\r\n * Additional CSS classes on section tag\r\n */\r\n @Prop() cssClasses: string;\r\n\r\n /**\r\n * Adjustable Height - when set, this will resize slider to the height of active slide\r\n */ \r\n @Prop() adjustableHeightOnMobile: boolean;\r\n\r\n /**\r\n * Controls paused/autoplay state of carousel.\r\n */\r\n @State() paused: boolean = false;\r\n\r\n /**\r\n * Determins which left/right arrows to use based off screen\r\n */\r\n @State() leftArrow: string;\r\n @State() rightArrow: string;\r\n\r\n @State() notEnoughItemsForArrows: boolean = false;\r\n\r\n private id: string = 'kdx-carousel-' + guid();\r\n private initialRenderComplete = false;\r\n private imagesLazyLoaded = false;\r\n private carousel: any = null;\r\n private slideCount = 0;\r\n\r\n componentDidRender() {\r\n if (document.querySelector('.is-editing.sfPageEditor')) {\r\n return;\r\n }\r\n\r\n const instance = document.getElementById(this.id);\r\n\r\n if (!this.initialRenderComplete) {\r\n this.setUp(instance);\r\n const slides = instance.querySelector('.glide__slides');\r\n\r\n if (slides) {\r\n slides.setAttribute('id', this.id + '-slides');\r\n }\r\n }\r\n\r\n if (isOnScreen(instance)) {\r\n this.renderLazyImages(instance);\r\n }\r\n\r\n window.addEventListener('scroll', () => {\r\n if (isOnScreen(instance)) {\r\n this.renderLazyImages(instance);\r\n }\r\n });\r\n }\r\n\r\n hideOrShowArrows() {\r\n let totalSlides = this.root.querySelector('.glide__slides').children.length;\r\n this.slideCount = totalSlides;\r\n\r\n if (window.innerWidth >= 981) {\r\n\r\n this.notEnoughItemsForArrows = totalSlides <= parseInt(this.perSlide, 10) ? true : false;\r\n }\r\n\r\n if (window.innerWidth <= 980 && window.innerWidth >= 721) {\r\n this.notEnoughItemsForArrows = totalSlides <= parseInt(this.perSlideTablet, 10) ? true : false;\r\n }\r\n\r\n if (window.innerWidth <= 720) {\r\n this.notEnoughItemsForArrows = totalSlides <= parseInt(this.perSlideMobile, 10) ? true : false;\r\n }\r\n }\r\n\r\n componentWillLoad() {\r\n this.leftArrow = window.innerWidth > _BREAKPOINTS_.sm ? this.leftArrowIcon : this.leftArrowIconMobile;\r\n this.rightArrow = window.innerWidth > _BREAKPOINTS_.sm ? this.rightArrowIcon : this.rightArrowIconMobile;\r\n\r\n this.hideOrShowArrows();\r\n }\r\n\r\n componentDidLoad() {\r\n // Has difficulty finding lazy loaded bg images. re initialize lazy load observer\r\n globalThis.imageLoader?.initialize(); \r\n this.hideOrShowArrows(); \r\n }\r\n\r\n @Listen('resize', { target: 'window' })\r\n resizeHandler() {\r\n this.leftArrow = window.innerWidth > _BREAKPOINTS_.sm ? this.leftArrowIcon : this.leftArrowIconMobile;\r\n this.rightArrow = window.innerWidth > _BREAKPOINTS_.sm ? this.rightArrowIcon : this.rightArrowIconMobile;\r\n\r\n this.hideOrShowArrows();\r\n }\r\n\r\n private setUp(instance) {\r\n const bulletsWrapper = instance.querySelector('.glide__bullets');\r\n\r\n if (bulletsWrapper) {\r\n for (let i = 0; i < this.slideCount; i++) {\r\n bulletsWrapper.innerHTML += ``;\r\n }\r\n }\r\n\r\n this.autoPlay = !this.notEnoughItemsForArrows;\r\n\r\n if (this.perSlide) {\r\n this.carousel = new Glide(`#${this.id}`, {\r\n type: this.carouselType,\r\n perView: parseInt(this.perSlide, 10),\r\n perSwipe: '|',\r\n focusAt: this.centerFocus ? 'center' : '',\r\n autoplay: this.autoPlay ? parseInt(this.autoPlayDuration, 10) : null,\r\n hoverpause: this.notEnoughItemsForArrows,\r\n peek: this.peek,\r\n gap: this.gap,\r\n breakpoints: {\r\n 980: {\r\n perView: parseInt(this.perSlideTablet, 10),\r\n peek: this.peekTablet,\r\n gap: this.gapTablet\r\n },\r\n 720: {\r\n perView: parseInt(this.perSlideMobile, 10),\r\n peek: this.peekMobile,\r\n gap: this.gapMobile,\r\n focusAt: this.centerFocusMobile ? 'center' : '',\r\n },\r\n },\r\n }).mount();\r\n } else {\r\n this.carousel = new Glide(`#${this.id}`, {\r\n autoplay: this.autoPlay ? parseInt(this.autoPlayDuration, 10) : null,\r\n hoverpause: false,\r\n }).mount();\r\n }\r\n if (this.notEnoughItemsForArrows) {\r\n var styles = \"kdx-logo-carousel .slide-item.glide__slide--clone, kdx-carousel .glide__slide--clone { visibility: hidden; }\";\r\n var styleSheet = document.createElement(\"style\");\r\n styleSheet.textContent = styles;\r\n document.head.appendChild(styleSheet);\r\n this.hideArrows = true;\r\n }\r\n this.carousel.on('move.after', () => {\r\n\r\n if (this.paused) {\r\n this.carousel.pause();\r\n setTimeout(() => {\r\n this.carousel.pause();\r\n }, 1000);\r\n } else {\r\n this.carousel.play();\r\n }\r\n }); \r\n\r\n\r\n if (this.cardsSlider) {\r\n this.setCountText();\r\n\r\n this.carousel.on(['run.after', 'resize'], () => {\r\n this.setCountText();\r\n });\r\n }\r\n\r\n // adjustable height. Change height to active slide height, and scrolls to top of slide. good for mobile with variable height slides\r\n if (this.adjustableHeightOnMobile && window.innerWidth <= _BREAKPOINTS_['md']) {\r\n\r\n this.carousel.on('build.after', ()=> {\r\n let slideHeight = this.root.querySelector('.glide__slide--active .row').clientHeight;\r\n let glideTrack = this.root.querySelector('.glide__track').clientHeight;\r\n \r\n if (slideHeight != glideTrack) {\r\n let newHeight = slideHeight;\r\n (this.root.querySelector('.glide__track') as HTMLElement).style.height = newHeight+'px';\r\n this.root.querySelector('.glide__track').scrollIntoView({behavior: \"smooth\", block: \"start\"});\r\n }\r\n });\r\n \r\n this.carousel.on('run.after', ()=> {\r\n var slideHeight = this.root.querySelector('.glide__slide--active .row').clientHeight;\r\n var glideTrack = this.root.querySelector('.glide__track').clientHeight;\r\n \r\n if (slideHeight != glideTrack) {\r\n var newHeight = slideHeight;\r\n (this.root.querySelector('.glide__track') as HTMLElement).style.height = newHeight+'px';\r\n this.root.querySelector('.glide__track').scrollIntoView({behavior: \"smooth\", block: \"start\"});\r\n }\r\n });\r\n }\r\n\r\n this.carousel.on('mount.after', () => {\r\n globalThis.imageLoader?.initialize(); \r\n });\r\n\r\n this.initialRenderComplete = true;\r\n }\r\n\r\n setCountText() {\r\n const instance = document.getElementById(this.id);\r\n const countText = instance.querySelector('.st-carousel__showing') as HTMLElement;\r\n\r\n const start = this.carousel.index;\r\n const perView = this.carousel.settings.perView;\r\n const max = this.slideCount;\r\n\r\n const low = start + 1;\r\n const heigh = Math.min(start + perView, max);\r\n\r\n if (low != heigh) {\r\n countText.innerText = `${low}-${heigh} of ${this.slideCount}`;\r\n } else {\r\n countText.innerText = `${low} of ${this.slideCount}`;\r\n }\r\n }\r\n\r\n private togglePause(e: Event) {\r\n e.preventDefault();\r\n this.paused = !this.paused;\r\n\r\n if (this.paused) {\r\n this.carousel.pause();\r\n } else {\r\n this.carousel.play();\r\n }\r\n }\r\n\r\n /**\r\n * Load any lazy images within carousel. Avoids images loading while slides transition.\r\n */\r\n renderLazyImages(instance: HTMLElement) {\r\n if (this.imagesLazyLoaded) {\r\n return;\r\n }\r\n\r\n const images = instance.querySelectorAll('.img-load-lazy');\r\n\r\n images.forEach(lazyImage => {\r\n const src = lazyImage.getAttribute('data-src');\r\n const srcSet = lazyImage.getAttribute('data-srcset');\r\n\r\n if (src) {\r\n }\r\n if (srcSet) {\r\n lazyImage.setAttribute('srcset', srcSet);\r\n }\r\n lazyImage.classList.remove('img-load-lazy');\r\n });\r\n\r\n this.imagesLazyLoaded = true;\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n\r\n \r\n\r\n {this.cardsSlider && }\r\n\r\n {this.bulletNav && !this.notEnoughItemsForArrows && (\r\n
\r\n
\r\n {this.autoPlay && (\r\n
\r\n {\r\n this.togglePause(e);\r\n }}\r\n >\r\n {\r\n this.paused && \r\n \r\n \r\n {this.playText && {this.playText}}\r\n \r\n }\r\n {!this.paused && \r\n \r\n \r\n {this.pauseText && {this.pauseText}}\r\n \r\n }\r\n \r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n }\r\n\r\n}\r\n"],"mappings":"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"}