{"version":3,"file":"104.js","mappings":"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","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","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","call","result","Super","NewTarget","this","arguments","apply","_possibleConstructorReturn","self","_assertThisInitialized","ReferenceError","_get","get","property","receiver","base","_superPropBase","object","hasOwnProperty","desc","getOwnPropertyDescriptor","value","defaults","type","startAt","perView","focusAt","gap","autoplay","hoverpause","keyboard","bound","swipeThreshold","dragThreshold","perSwipe","touchRatio","touchAngle","animationDuration","rewind","rewindDuration","animationTimingFunc","waitForTransition","throttle","direction","peek","cloningRatio","breakpoints","classes","swipeable","dragging","ltr","rtl","slider","carousel","slide","clone","active","arrow","disabled","nav","warn","msg","console","error","concat","toInt","parseInt","isString","isObject","isFunction","isUndefined","isArray","Array","define","prop","definition","mergeOptions","settings","options","assign","EventsBus","events","undefined","hop","event","handler","index","push","remove","on","context","emit","forEach","item","Glide$1","Glide","selector","_c","_t","_e","extensions","mount","glide","components","name","_name","transformers","pattern","Run","make","distance","Transition","disable","Move","interval","_o","set","_i","_d","status","now","Date","getTime","func","wait","timeout","args","previous","later","leading","throttled","at","remaining","clearTimeout","trailing","setTimeout","cancel","MARGIN_TYPE","siblings","node","parentNode","n","firstChild","matched","nextSibling","nodeType","exist","window","HTMLElement","toArray","nodeList","slice","TRACK_SELECTOR","EventsBinder","listeners","el","closure","capture","addEventListener","removeEventListener","VALID_DIRECTIONS","FLIPED_MOVEMENTS","Rtl","Components","modify","translate","Direction","is","Gap","multiplier","Math","floor","Sizes","slideWidth","Gaps","Grow","Clones","grow","Peeking","Peek","before","Focusing","width","supportsPassive","opts","supportsPassive$1","START_EVENTS","MOVE_EVENTS","END_EVENTS","MOUSE_EVENTS","CONTROLS_SELECTOR","PREVIOUS_CONTROLS_SELECTOR","NEXT_CONTROLS_SELECTOR","sortBreakpoints","points","sortKeys","keys","sort","reduce","r","k","COMPONENTS","Html","Events","root","track","querySelector","collectSlides","slides","wrapper","children","filter","classList","contains","_r","document","t","Translate","transform","mutator","TRANSFORMERS","mutate","transformer","translate3d","style","mozTransform","webkitTransform","getStartIndex","isOffset","getTravelDistance","travelDistance","isType","movement","after","startWidth","compose","duration","transition","callback","enable","offset","resolve","token","split","join","addClass","add","removeClass","_v","indexOf","setupSlides","setupWrapper","wrapperSize","offsetWidth","reductor","len","marginLeft","marginRight","_this","items","collect","_Glide$settings","cloneCount","round","append","reverse","prepend","max","cloneNode","_clone","unshift","_Components$Html","half","appendChild","_i2","insertBefore","_i3","removeChild","Resize","Binder","bind","unbind","off","destroy","Build","typeClass","activeClass","sibling","removeClasses","_Glide$settings$class","move","calculate","isStart","isEnd","steps","viewSize","calculateForwardIndex","normalizeForwardIndex","isBound","_index","calculateBackwardIndex","ceil","normalizeBackwardIndex","_m","step","substr","Swipe","swipeSin","swipeStartX","swipeStartY","passive","bindSwipeStart","start","swipe","touches","pageX","pageY","bindSwipeMove","bindSwipeEnd","subExSx","subEySy","powEX","abs","powEY","swipeHypotenuse","sqrt","swipeCathetus","asin","PI","stopPropagation","toFloat","parseFloat","end","_Glide$settings2","threshold","swipeDistance","swipeDeg","unbindSwipeMove","unbindSwipeEnd","_Glide$settings3","unbindSwipeStart","_this2","_this3","changedTouches","Images","dragstart","preventDefault","Anchors","detached","prevented","_a","querySelectorAll","click","detach","draggable","attach","Controls","_n","_arrowControls","next","addBindings","setActive","removeActive","controls","setArrowState","resetArrowState","disableArrow","_len","lists","_key","list","element","_len2","_key2","removeBindings","elements","currentTarget","getAttribute","Keyboard","press","code","Autoplay","setInterval","stop","time","clearInterval","Breakpoints","match","matchMedia","point","matches","_Core","_inherits","subClass","superClass","create","_super","_c0","_c1","NgxGlideComponent_ng_container_12_Template","rf","ctx","i0","NgxGlideComponent_ng_container_14_Template","NgxGlideComponent_ng_container_16_button_1_Template","$implicit","NgxGlideComponent_ng_container_16_Template","ctx_r4","glideBullets","_c2","defaultSettings","perTouch","cloneSlide","activeNav","activeSlide","disabledArrow","NgxGlideComponent","changeDetectorRef","platformId","showArrows","showBullets","arrowLeftLabel","arrowLeftTemplate","arrowRightLabel","arrowRightTemplate","listenToEvents","mountedBefore","EventEmitter","mountedAfter","updated","played","paused","buildedBefore","buildedAfter","ranBefore","ran","ranAfter","ranOffset","runStarted","runEnded","moved","movedAfter","resized","swipeStarted","swipeMoved","swipeEnded","translateJumped","getGlideUpdateSettings","changes","change","previousValue","currentValue","ngOnChanges","isPlatformBrowser","update","ngAfterViewInit","ngOnDestroy","getStyleDisplay","condition","getIndex","getSettings","getType","isDisabled","detectChanges","go","pause","play","force","recreate","initGlideBullets","glideEl","nativeElement","getGlideInitSettings","initGlideEvents","glideSlidesEl","ɵfac","PLATFORM_ID","ɵcmp","selectors","viewQuery","first","inputs","outputs","standalone","features","ngContentSelectors","decls","vars","consts","template","dependencies","NgIf","NgForOf","NgTemplateOutlet","encapsulation","changeDetection","BannerSliderService","config","additionalPageRepository","banners$","promotions$","pipe","combineLatestWith","bannerUrls$","map","promotions","bannerUrls","bannerSlides","promotion","isShowBannerHomePage","bannerImageUrl","src","slug","priority","title","url","Infinity","a","b","static","i1","i2","core","Yz7","factory","providedIn","slide_r3","BannerSliderComponent_ng_container_0_div_2_source_3_Template","BannerSliderComponent_ng_container_0_div_2_a_5_Template","BannerSliderComponent_ng_container_0_div_2_Template","bannerSlides_r1","BannerSliderComponent","bannerSlider","breakPoint","bannerSlides$","Xpm","BannerSliderComponent_ng_container_0_Template","AsyncPipe","NgFor","NgClass","RouterLink","styles","additionalPagesStore","createStore","withProps","additionalPagesShortMap","additionalSlugToIdMap","promotionSlugToIdMap","promotionsShort","withRequestsStatus","AdditionalPagesRepository","router","additionalPagesApi","promotionsApi","errorService","legalServiceApi","additionalPageLoading$","selectIsRequestPending","promotionListLoading$","promotionLoading$","additionalPagesShortMap$","select","state","additionalSlugToIdMap$","switchMap","of","fetchPromotions","getAdditionalMaps","subscribe","additionalPagesNew$","pagesShort","tap","idToItemMap","slugToIdMap","page","id","setProp","getShortPageById","getPageShortBySlug","convertPersonalToAdditionalPage","content","isSystem","language","customCode","menuLabel","additionalPageRequest","ManualAdditionalPages","PersonalDataPolicy","v1LegalPersonalDataProcessingPolicyDocumentGet$Json","storeId","activeOutletId","response","personalDataProcessingPolicyDocument","PersonalDataConsent","v1LegalPersonalDataProcessingConsentDocumentGet$Json","personalDataProcessingConsentDocument","v1AdditionalPagesIdGet$Json","getAdditionalPageById","updateRequestStatus","catchError","handleError","Error","promotionCount$","currentLocale$","count","currentLocale","v1PromotionsGet$Json","Limit","Language","promotionList","fetchPromotionBySlug","navigate","fetchPromotionById","v1PromotionsIdGet$Json","i3","i4","i5","i6","_angular_core__WEBPACK_IMPORTED_MODULE_15__"],"sourceRoot":"webpack:///","sources":["./node_modules/@glidejs/glide/dist/glide.esm.js","./node_modules/ngx-glide/fesm2020/ngx-glide.mjs","./src/app/blocks/banner-slider/banner-slider.service.ts","./src/app/blocks/banner-slider/banner-slider.component.html","./src/app/blocks/banner-slider/banner-slider.component.ts","./src/app/shared/repositories/additional-pages.repository.ts"],"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 { isPlatformBrowser, NgIf, NgForOf, NgTemplateOutlet } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, Inject, Input, Output, ViewChild, NgModule } from '@angular/core';\nimport Glide from '@glidejs/glide';\n\nconst defaultExtraSettings = {\n showArrows: true,\n showBullets: true,\n arrowLeftLabel: 'left',\n arrowRightLabel: 'right',\n listenToEvents: false,\n};\n\nconst defaultSettings = {\n type: 'slider',\n startAt: 0,\n perView: 1,\n focusAt: 0,\n gap: 10,\n autoplay: false,\n hoverpause: true,\n keyboard: true,\n bound: false,\n swipeThreshold: 80,\n dragThreshold: 120,\n perTouch: false,\n touchRatio: 0.5,\n touchAngle: 45,\n animationDuration: 400,\n rewind: true,\n rewindDuration: 800,\n animationTimingFunc: 'cubic-bezier(0.165, 0.840, 0.440, 1.000)',\n direction: 'ltr',\n peek: 0,\n breakpoints: {},\n classes: {\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl',\n },\n slider: 'glide--slider',\n carousel: 'glide--carousel',\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n cloneSlide: 'glide__slide--clone',\n activeNav: 'glide__bullet--active',\n activeSlide: 'glide__slide--active',\n disabledArrow: 'glide__arrow--disabled',\n },\n throttle: 25,\n};\n\n// noinspection TypeScriptFieldCanBeMadeReadonly,DuplicatedCode\nclass NgxGlideComponent {\n constructor(changeDetectorRef, platformId) {\n this.changeDetectorRef = changeDetectorRef;\n this.platformId = platformId;\n this.showArrows = defaultExtraSettings.showArrows;\n this.showBullets = defaultExtraSettings.showBullets;\n this.arrowLeftLabel = defaultExtraSettings.arrowLeftLabel;\n this.arrowLeftTemplate = null;\n this.arrowRightLabel = defaultExtraSettings.arrowRightLabel;\n this.arrowRightTemplate = null;\n this.listenToEvents = defaultExtraSettings.listenToEvents;\n this.glideBullets = [];\n this.type = defaultSettings.type;\n this.startAt = defaultSettings.startAt;\n this.perView = defaultSettings.perView;\n this.focusAt = defaultSettings.focusAt;\n this.gap = defaultSettings.gap;\n this.autoplay = defaultSettings.autoplay;\n this.hoverpause = defaultSettings.hoverpause;\n this.keyboard = defaultSettings.keyboard;\n this.bound = defaultSettings.bound;\n this.swipeThreshold = defaultSettings.swipeThreshold;\n this.dragThreshold = defaultSettings.dragThreshold;\n this.perTouch = defaultSettings.perTouch;\n this.touchRatio = defaultSettings.touchRatio;\n this.touchAngle = defaultSettings.touchAngle;\n this.animationDuration = defaultSettings.animationDuration;\n this.rewind = defaultSettings.rewind;\n this.rewindDuration = defaultSettings.rewindDuration;\n this.animationTimingFunc = defaultSettings.animationTimingFunc;\n this.direction = defaultSettings.direction;\n this.peek = defaultSettings.peek;\n this.breakpoints = defaultSettings.breakpoints;\n this.classes = defaultSettings.classes;\n this.throttle = defaultSettings.throttle;\n this.mountedBefore = new EventEmitter();\n this.mountedAfter = new EventEmitter();\n this.updated = new EventEmitter();\n this.played = new EventEmitter();\n this.paused = new EventEmitter();\n this.buildedBefore = new EventEmitter();\n this.buildedAfter = new EventEmitter();\n this.ranBefore = new EventEmitter();\n this.ran = new EventEmitter();\n this.ranAfter = new EventEmitter();\n this.ranOffset = new EventEmitter();\n this.runStarted = new EventEmitter();\n this.runEnded = new EventEmitter();\n this.moved = new EventEmitter();\n this.movedAfter = new EventEmitter();\n this.resized = new EventEmitter();\n this.swipeStarted = new EventEmitter();\n this.swipeMoved = new EventEmitter();\n this.swipeEnded = new EventEmitter();\n this.translateJumped = new EventEmitter();\n }\n static getGlideUpdateSettings(changes) {\n const settings = {};\n for (const key in changes) {\n if (!Object.prototype.hasOwnProperty.call(changes, key)) {\n continue;\n }\n if (!Object.prototype.hasOwnProperty.call(defaultSettings, key)) {\n continue;\n }\n const change = changes[key];\n if (change.previousValue !== change.currentValue) {\n settings[key] = change.currentValue;\n }\n }\n return settings;\n }\n ngOnChanges(changes) {\n if (isPlatformBrowser(this.platformId) && changes && this.glide) {\n this.update(NgxGlideComponent.getGlideUpdateSettings(changes));\n }\n }\n ngAfterViewInit() {\n if (isPlatformBrowser(this.platformId) && Glide) {\n this.create();\n }\n }\n ngOnDestroy() {\n this.destroy();\n }\n getStyleDisplay(condition) {\n return condition ? 'block' : 'none';\n }\n getIndex() {\n return this.glide && this.glide.index;\n }\n // noinspection JSUnusedGlobalSymbols\n getSettings() {\n return this.glide && this.glide.settings;\n }\n // noinspection JSUnusedGlobalSymbols\n getType() {\n return this.glide && this.glide.type;\n }\n // noinspection JSUnusedGlobalSymbols\n isDisabled() {\n return this.glide && this.glide.disabled;\n }\n mount() {\n if (this.glide) {\n this.glide.mount();\n }\n }\n update(settings) {\n if (this.glide) {\n this.glide.update(settings);\n this.changeDetectorRef.detectChanges();\n }\n }\n destroy() {\n if (this.glide) {\n this.glide.destroy();\n }\n }\n // noinspection JSUnusedGlobalSymbols\n go(pattern) {\n if (this.glide) {\n this.glide.go(pattern);\n }\n }\n pause() {\n if (this.glide) {\n this.glide.pause();\n }\n }\n play(force) {\n if (this.glide) {\n if (typeof force === 'number') {\n this.glide.play(force);\n }\n else {\n this.glide.play();\n }\n }\n }\n // noinspection JSUnusedGlobalSymbols\n disable() {\n if (this.glide) {\n this.glide.disable();\n }\n }\n enable() {\n if (this.glide) {\n this.glide.enable();\n }\n }\n isType(type) {\n return this.glide && this.glide.isType(type);\n }\n recreate() {\n if (this.glide) {\n this.destroy();\n }\n this.create();\n }\n create() {\n this.initGlideBullets();\n this.glide = new Glide(this.glideEl?.nativeElement, this.getGlideInitSettings());\n this.initGlideEvents();\n this.mount();\n this.changeDetectorRef.detectChanges();\n }\n initGlideBullets() {\n const glideSlidesNativeElement = this.glideSlidesEl?.nativeElement;\n const childrenLength = glideSlidesNativeElement.children.length;\n this.glideBullets = [...new Array(childrenLength).keys()];\n this.changeDetectorRef.detectChanges();\n }\n initGlideEvents() {\n if (!this.glide || !this.listenToEvents) {\n return;\n }\n this.glide.on('mount.before', () => this.mountedBefore.emit());\n this.glide.on('mount.after', () => this.mountedAfter.emit());\n this.glide.on('update', () => this.updated.emit());\n this.glide.on('play', () => this.played.emit());\n this.glide.on('pause', () => this.paused.emit());\n this.glide.on('build.before', () => this.buildedBefore.emit());\n this.glide.on('build.after', () => this.buildedAfter.emit());\n this.glide.on('run.before', (move) => this.ranBefore.emit(move));\n this.glide.on('run', (move) => this.ran.emit(move));\n this.glide.on('run.after', (move) => this.ranAfter.emit(move));\n this.glide.on('run.offset', (move) => this.ranOffset.emit(move));\n this.glide.on('run.start', (move) => this.runStarted.emit(move));\n this.glide.on('run.end', (move) => this.runEnded.emit(move));\n this.glide.on('move', (movement) => this.moved.emit(movement));\n this.glide.on('move.after', (movement) => this.movedAfter.emit(movement));\n this.glide.on('resize', () => this.resized.emit());\n this.glide.on('swipe.start', () => this.swipeStarted.emit());\n this.glide.on('swipe.move', () => this.swipeMoved.emit());\n this.glide.on('swipe.end', () => this.swipeEnded.emit());\n this.glide.on('translate.jump', (movement) => this.translateJumped.emit(movement));\n }\n getGlideInitSettings() {\n return {\n type: this.type,\n startAt: this.startAt,\n perView: this.perView,\n focusAt: this.focusAt,\n gap: this.gap,\n autoplay: this.autoplay,\n hoverpause: this.hoverpause,\n keyboard: this.keyboard,\n bound: this.bound,\n swipeThreshold: this.swipeThreshold,\n dragThreshold: this.dragThreshold,\n perTouch: this.perTouch,\n touchRatio: this.touchRatio,\n touchAngle: this.touchAngle,\n animationDuration: this.animationDuration,\n rewind: this.rewind,\n rewindDuration: this.rewindDuration,\n animationTimingFunc: this.animationTimingFunc,\n direction: this.direction,\n peek: this.peek,\n breakpoints: this.breakpoints,\n classes: this.classes,\n throttle: this.throttle,\n };\n }\n}\nNgxGlideComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.1\", ngImport: i0, type: NgxGlideComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nNgxGlideComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.1.1\", type: NgxGlideComponent, isStandalone: true, selector: \"ngx-glide\", inputs: { showArrows: \"showArrows\", showBullets: \"showBullets\", arrowLeftLabel: \"arrowLeftLabel\", arrowLeftTemplate: \"arrowLeftTemplate\", arrowRightLabel: \"arrowRightLabel\", arrowRightTemplate: \"arrowRightTemplate\", listenToEvents: \"listenToEvents\", type: \"type\", startAt: \"startAt\", perView: \"perView\", focusAt: \"focusAt\", gap: \"gap\", autoplay: \"autoplay\", hoverpause: \"hoverpause\", keyboard: \"keyboard\", bound: \"bound\", swipeThreshold: \"swipeThreshold\", dragThreshold: \"dragThreshold\", perTouch: \"perTouch\", touchRatio: \"touchRatio\", touchAngle: \"touchAngle\", animationDuration: \"animationDuration\", rewind: \"rewind\", rewindDuration: \"rewindDuration\", animationTimingFunc: \"animationTimingFunc\", direction: \"direction\", peek: \"peek\", breakpoints: \"breakpoints\", classes: \"classes\", throttle: \"throttle\" }, outputs: { mountedBefore: \"mountedBefore\", mountedAfter: \"mountedAfter\", updated: \"updated\", played: \"played\", paused: \"paused\", buildedBefore: \"buildedBefore\", buildedAfter: \"buildedAfter\", ranBefore: \"ranBefore\", ran: \"ran\", ranAfter: \"ranAfter\", ranOffset: \"ranOffset\", runStarted: \"runStarted\", runEnded: \"runEnded\", moved: \"moved\", movedAfter: \"movedAfter\", resized: \"resized\", swipeStarted: \"swipeStarted\", swipeMoved: \"swipeMoved\", swipeEnded: \"swipeEnded\", translateJumped: \"translateJumped\" }, viewQueries: [{ propertyName: \"glideEl\", first: true, predicate: [\"glideEl\"], descendants: true }, { propertyName: \"glideSlidesEl\", first: true, predicate: [\"glideSlidesEl\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: \"