{"version":3,"file":"js/704-fe3729f4cf6243f1cede.js","mappings":"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","sources":["webpack://app/./node_modules/@glidejs/glide/dist/glide.modular.esm.js","webpack://app/./node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","webpack://app/./node_modules/core-js/internals/a-callable.js","webpack://app/./node_modules/core-js/internals/an-object.js","webpack://app/./node_modules/core-js/internals/array-includes.js","webpack://app/./node_modules/core-js/internals/array-slice.js","webpack://app/./node_modules/core-js/internals/classof-raw.js","webpack://app/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://app/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://app/./node_modules/core-js/internals/create-property-descriptor.js","webpack://app/./node_modules/core-js/internals/descriptors.js","webpack://app/./node_modules/core-js/internals/document-create-element.js","webpack://app/./node_modules/core-js/internals/engine-is-ios.js","webpack://app/./node_modules/core-js/internals/engine-is-node.js","webpack://app/./node_modules/core-js/internals/engine-user-agent.js","webpack://app/./node_modules/core-js/internals/engine-v8-version.js","webpack://app/./node_modules/core-js/internals/enum-bug-keys.js","webpack://app/./node_modules/core-js/internals/export.js","webpack://app/./node_modules/core-js/internals/fails.js","webpack://app/./node_modules/core-js/internals/function-apply.js","webpack://app/./node_modules/core-js/internals/function-bind-context.js","webpack://app/./node_modules/core-js/internals/function-bind-native.js","webpack://app/./node_modules/core-js/internals/function-call.js","webpack://app/./node_modules/core-js/internals/function-name.js","webpack://app/./node_modules/core-js/internals/function-uncurry-this.js","webpack://app/./node_modules/core-js/internals/get-built-in.js","webpack://app/./node_modules/core-js/internals/get-method.js","webpack://app/./node_modules/core-js/internals/global.js","webpack://app/./node_modules/core-js/internals/has-own-property.js","webpack://app/./node_modules/core-js/internals/hidden-keys.js","webpack://app/./node_modules/core-js/internals/html.js","webpack://app/./node_modules/core-js/internals/ie8-dom-define.js","webpack://app/./node_modules/core-js/internals/indexed-object.js","webpack://app/./node_modules/core-js/internals/inspect-source.js","webpack://app/./node_modules/core-js/internals/internal-state.js","webpack://app/./node_modules/core-js/internals/is-callable.js","webpack://app/./node_modules/core-js/internals/is-forced.js","webpack://app/./node_modules/core-js/internals/is-object.js","webpack://app/./node_modules/core-js/internals/is-pure.js","webpack://app/./node_modules/core-js/internals/is-symbol.js","webpack://app/./node_modules/core-js/internals/length-of-array-like.js","webpack://app/./node_modules/core-js/internals/native-symbol.js","webpack://app/./node_modules/core-js/internals/native-weak-map.js","webpack://app/./node_modules/core-js/internals/object-define-property.js","webpack://app/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://app/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://app/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://app/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://app/./node_modules/core-js/internals/object-keys-internal.js","webpack://app/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://app/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://app/./node_modules/core-js/internals/own-keys.js","webpack://app/./node_modules/core-js/internals/redefine.js","webpack://app/./node_modules/core-js/internals/require-object-coercible.js","webpack://app/./node_modules/core-js/internals/set-global.js","webpack://app/./node_modules/core-js/internals/shared-key.js","webpack://app/./node_modules/core-js/internals/shared-store.js","webpack://app/./node_modules/core-js/internals/shared.js","webpack://app/./node_modules/core-js/internals/task.js","webpack://app/./node_modules/core-js/internals/to-absolute-index.js","webpack://app/./node_modules/core-js/internals/to-indexed-object.js","webpack://app/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://app/./node_modules/core-js/internals/to-length.js","webpack://app/./node_modules/core-js/internals/to-object.js","webpack://app/./node_modules/core-js/internals/to-primitive.js","webpack://app/./node_modules/core-js/internals/to-property-key.js","webpack://app/./node_modules/core-js/internals/try-to-string.js","webpack://app/./node_modules/core-js/internals/uid.js","webpack://app/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://app/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://app/./node_modules/core-js/internals/validate-arguments-length.js","webpack://app/./node_modules/core-js/internals/well-known-symbol.js","webpack://app/./node_modules/core-js/modules/web.clear-immediate.js","webpack://app/./node_modules/core-js/modules/web.immediate.js","webpack://app/./node_modules/core-js/modules/web.set-immediate.js","webpack://app/./node_modules/micromodal/dist/micromodal.es.js"],"sourcesContent":["/*!\n * Glide.js v3.5.2\n * (c) 2013-2021 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\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 = Array.prototype.slice.call(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 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 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.keyCode === 39) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n }\n\n if (event.keyCode === 37) {\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 Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run\n};\n\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 { anchors as Anchors, autoplay as Autoplay, breakpoints as Breakpoints, controls as Controls, images as Images, keyboard as Keyboard, swipe as Swipe, Glide as default };\n","/*\nTurbo 7.1.0\nCopyright © 2021 Basecamp, LLC\n */\n(function () {\n if (window.Reflect === undefined || window.customElements === undefined ||\n window.customElements.polyfillWrapFlushCallback) {\n return;\n }\n const BuiltInHTMLElement = HTMLElement;\n const wrapperForTheName = {\n 'HTMLElement': function HTMLElement() {\n return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n }\n };\n window.HTMLElement =\n wrapperForTheName['HTMLElement'];\n HTMLElement.prototype = BuiltInHTMLElement.prototype;\n HTMLElement.prototype.constructor = HTMLElement;\n Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(prototype) {\n if (typeof prototype.requestSubmit == \"function\") return\n\n prototype.requestSubmit = function(submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap;\nfunction findSubmitterFromClickTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n const candidate = element ? element.closest(\"input, button\") : null;\n return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n const submitter = findSubmitterFromClickTarget(event.target);\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n(function () {\n if (\"submitter\" in Event.prototype)\n return;\n let prototype;\n if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n prototype = window.SubmitEvent.prototype;\n }\n else if (\"SubmitEvent\" in window) {\n return;\n }\n else {\n prototype = window.Event.prototype;\n }\n addEventListener(\"click\", clickCaptured, true);\n Object.defineProperty(prototype, \"submitter\", {\n get() {\n if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n return submittersByForm.get(this.target);\n }\n }\n });\n})();\n\nvar FrameLoadingStyle;\n(function (FrameLoadingStyle) {\n FrameLoadingStyle[\"eager\"] = \"eager\";\n FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\nclass FrameElement extends HTMLElement {\n constructor() {\n super();\n this.loaded = Promise.resolve();\n this.delegate = new FrameElement.delegateConstructor(this);\n }\n static get observedAttributes() {\n return [\"disabled\", \"loading\", \"src\"];\n }\n connectedCallback() {\n this.delegate.connect();\n }\n disconnectedCallback() {\n this.delegate.disconnect();\n }\n reload() {\n const { src } = this;\n this.src = null;\n this.src = src;\n }\n attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n }\n else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n }\n else {\n this.delegate.disabledChanged();\n }\n }\n get src() {\n return this.getAttribute(\"src\");\n }\n set src(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n }\n else {\n this.removeAttribute(\"src\");\n }\n }\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n }\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n }\n else {\n this.removeAttribute(\"loading\");\n }\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n }\n else {\n this.removeAttribute(\"disabled\");\n }\n }\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\");\n }\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n }\n else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n get complete() {\n return !this.delegate.isLoading;\n }\n get isActive() {\n return this.ownerDocument === document && !this.isPreview;\n }\n get isPreview() {\n var _a, _b;\n return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n }\n}\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\": return FrameLoadingStyle.lazy;\n default: return FrameLoadingStyle.eager;\n }\n}\n\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1);\n }\n else if (anchorMatch = url.href.match(/#(.*)$/)) {\n return anchorMatch[1];\n }\n}\nfunction getAction(form, submitter) {\n const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n return expandURL(action);\n}\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n const prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null\n ? url.href.slice(0, -(anchor.length + 1))\n : url.href;\n}\nfunction toCacheKey(url) {\n return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n get succeeded() {\n return this.response.ok;\n }\n get failed() {\n return !this.succeeded;\n }\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499;\n }\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599;\n }\n get redirected() {\n return this.response.redirected;\n }\n get location() {\n return expandURL(this.response.url);\n }\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n }\n get statusCode() {\n return this.response.status;\n }\n get contentType() {\n return this.header(\"Content-Type\");\n }\n get responseText() {\n return this.response.clone().text();\n }\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text();\n }\n else {\n return Promise.resolve(undefined);\n }\n }\n header(name) {\n return this.response.headers.get(name);\n }\n}\n\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n const event = new CustomEvent(eventName, { cancelable, bubbles: true, detail });\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n }\n else {\n document.documentElement.dispatchEvent(event);\n }\n return event;\n}\nfunction nextAnimationFrame() {\n return new Promise(resolve => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n return new Promise(resolve => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n return Promise.resolve();\n}\nfunction parseHTMLDocument(html = \"\") {\n return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings, ...values) {\n const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map(line => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value;\n }, \"\");\n}\nfunction uuid() {\n return Array.apply(null, { length: 36 }).map((_, i) => {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\";\n }\n else if (i == 14) {\n return \"4\";\n }\n else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16);\n }\n else {\n return Math.floor(Math.random() * 15).toString(16);\n }\n }).join(\"\");\n}\nfunction getAttribute(attributeName, ...elements) {\n for (const value of elements.map(element => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n if (typeof value == \"string\")\n return value;\n }\n return null;\n}\nfunction markAsBusy(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\nfunction clearBusyState(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n element.removeAttribute(\"aria-busy\");\n }\n}\n\nvar FetchMethod;\n(function (FetchMethod) {\n FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\": return FetchMethod.get;\n case \"post\": return FetchMethod.post;\n case \"put\": return FetchMethod.put;\n case \"patch\": return FetchMethod.patch;\n case \"delete\": return FetchMethod.delete;\n }\n}\nclass FetchRequest {\n constructor(delegate, method, location, body = new URLSearchParams, target = null) {\n this.abortController = new AbortController;\n this.resolveRequestPromise = (value) => { };\n this.delegate = delegate;\n this.method = method;\n this.headers = this.defaultHeaders;\n this.body = body;\n this.url = location;\n this.target = target;\n }\n get location() {\n return this.url;\n }\n get params() {\n return this.url.searchParams;\n }\n get entries() {\n return this.body ? Array.from(this.body.entries()) : [];\n }\n cancel() {\n this.abortController.abort();\n }\n async perform() {\n var _a, _b;\n const { fetchOptions } = this;\n (_b = (_a = this.delegate).prepareHeadersForRequest) === null || _b === void 0 ? void 0 : _b.call(_a, this.headers, this);\n await this.allowRequestToBeIntercepted(fetchOptions);\n try {\n this.delegate.requestStarted(this);\n const response = await fetch(this.url.href, fetchOptions);\n return await this.receive(response);\n }\n catch (error) {\n if (error.name !== 'AbortError') {\n this.delegate.requestErrored(this, error);\n throw error;\n }\n }\n finally {\n this.delegate.requestFinished(this);\n }\n }\n async receive(response) {\n const fetchResponse = new FetchResponse(response);\n const event = dispatch(\"turbo:before-fetch-response\", { cancelable: true, detail: { fetchResponse }, target: this.target });\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n }\n else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n }\n else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n return fetchResponse;\n }\n get fetchOptions() {\n var _a;\n return {\n method: FetchMethod[this.method].toUpperCase(),\n credentials: \"same-origin\",\n headers: this.headers,\n redirect: \"follow\",\n body: this.isIdempotent ? null : this.body,\n signal: this.abortSignal,\n referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href\n };\n }\n get defaultHeaders() {\n return {\n \"Accept\": \"text/html, application/xhtml+xml\"\n };\n }\n get isIdempotent() {\n return this.method == FetchMethod.get;\n }\n get abortSignal() {\n return this.abortController.signal;\n }\n async allowRequestToBeIntercepted(fetchOptions) {\n const requestInterception = new Promise(resolve => this.resolveRequestPromise = resolve);\n const event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions,\n url: this.url,\n resume: this.resolveRequestPromise\n },\n target: this.target\n });\n if (event.defaultPrevented)\n await requestInterception;\n }\n}\n\nclass AppearanceObserver {\n constructor(delegate, element) {\n this.started = false;\n this.intersect = entries => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n };\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n}\n\nclass StreamMessage {\n constructor(html) {\n this.templateElement = document.createElement(\"template\");\n this.templateElement.innerHTML = html;\n }\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(message);\n }\n else {\n return message;\n }\n }\n get fragment() {\n const fragment = document.createDocumentFragment();\n for (const element of this.foreignElements) {\n fragment.appendChild(document.importNode(element, true));\n }\n return fragment;\n }\n get foreignElements() {\n return this.templateChildren.reduce((streamElements, child) => {\n if (child.tagName.toLowerCase() == \"turbo-stream\") {\n return [...streamElements, child];\n }\n else {\n return streamElements;\n }\n }, []);\n }\n get templateChildren() {\n return Array.from(this.templateElement.content.children);\n }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\n\nvar FormSubmissionState;\n(function (FormSubmissionState) {\n FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\nvar FormEnctype;\n(function (FormEnctype) {\n FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n FormEnctype[\"multipart\"] = \"multipart/form-data\";\n FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\nfunction formEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FormEnctype.multipart: return FormEnctype.multipart;\n case FormEnctype.plain: return FormEnctype.plain;\n default: return FormEnctype.urlEncoded;\n }\n}\nclass FormSubmission {\n constructor(delegate, formElement, submitter, mustRedirect = false) {\n this.state = FormSubmissionState.initialized;\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.formData = buildFormData(formElement, submitter);\n this.location = expandURL(this.action);\n if (this.method == FetchMethod.get) {\n mergeFormDataEntries(this.location, [...this.body.entries()]);\n }\n this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n this.mustRedirect = mustRedirect;\n }\n static confirmMethod(message, element) {\n return confirm(message);\n }\n get method() {\n var _a;\n const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n }\n get action() {\n var _a;\n const formElementAction = typeof this.formElement.action === 'string' ? this.formElement.action : null;\n return ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formaction\")) || this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n }\n get body() {\n if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n return new URLSearchParams(this.stringFormData);\n }\n else {\n return this.formData;\n }\n }\n get enctype() {\n var _a;\n return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n }\n get isIdempotent() {\n return this.fetchRequest.isIdempotent;\n }\n get stringFormData() {\n return [...this.formData].reduce((entries, [name, value]) => {\n return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n }, []);\n }\n get confirmationMessage() {\n return this.formElement.getAttribute(\"data-turbo-confirm\");\n }\n get needsConfirmation() {\n return this.confirmationMessage !== null;\n }\n async start() {\n const { initialized, requesting } = FormSubmissionState;\n if (this.needsConfirmation) {\n const answer = FormSubmission.confirmMethod(this.confirmationMessage, this.formElement);\n if (!answer) {\n return;\n }\n }\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform();\n }\n }\n stop() {\n const { stopping, stopped } = FormSubmissionState;\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true;\n }\n }\n prepareHeadersForRequest(headers, request) {\n if (!request.isIdempotent) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n headers[\"X-CSRF-Token\"] = token;\n }\n headers[\"Accept\"] = [StreamMessage.contentType, headers[\"Accept\"]].join(\", \");\n }\n }\n requestStarted(request) {\n var _a;\n this.state = FormSubmissionState.waiting;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n dispatch(\"turbo:submit-start\", { target: this.formElement, detail: { formSubmission: this } });\n this.delegate.formSubmissionStarted(this);\n }\n requestPreventedHandlingResponse(request, response) {\n this.result = { success: response.succeeded, fetchResponse: response };\n }\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n const error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n }\n else {\n this.state = FormSubmissionState.receiving;\n this.result = { success: true, fetchResponse: response };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n requestFailedWithResponse(request, response) {\n this.result = { success: false, fetchResponse: response };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n requestErrored(request, error) {\n this.result = { success: false, error };\n this.delegate.formSubmissionErrored(this, error);\n }\n requestFinished(request) {\n var _a;\n this.state = FormSubmissionState.stopped;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n dispatch(\"turbo:submit-end\", { target: this.formElement, detail: Object.assign({ formSubmission: this }, this.result) });\n this.delegate.formSubmissionFinished(this);\n }\n requestMustRedirect(request) {\n return !request.isIdempotent && this.mustRedirect;\n }\n}\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n if (name && value != null && formData.get(name) != value) {\n formData.append(name, value);\n }\n return formData;\n}\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n if (cookie) {\n const value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined;\n }\n }\n}\nfunction getMetaContent(name) {\n const element = document.querySelector(`meta[name=\"${name}\"]`);\n return element && element.content;\n}\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n const searchParams = new URLSearchParams;\n for (const [name, value] of entries) {\n if (value instanceof File)\n continue;\n searchParams.append(name, value);\n }\n url.search = searchParams.toString();\n return url;\n}\n\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n get children() {\n return [...this.element.children];\n }\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null;\n }\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n }\n get isConnected() {\n return this.element.isConnected;\n }\n get firstAutofocusableElement() {\n return this.element.querySelector(\"[autofocus]\");\n }\n get permanentElements() {\n return [...this.element.querySelectorAll(\"[id][data-turbo-permanent]\")];\n }\n getPermanentElementById(id) {\n return this.element.querySelector(`#${id}[data-turbo-permanent]`);\n }\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n for (const currentPermanentElement of this.permanentElements) {\n const { id } = currentPermanentElement;\n const newPermanentElement = snapshot.getPermanentElementById(id);\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n return permanentElementMap;\n }\n}\n\nclass FormInterceptor {\n constructor(delegate, element) {\n this.submitBubbled = ((event) => {\n const form = event.target;\n if (!event.defaultPrevented && form instanceof HTMLFormElement && form.closest(\"turbo-frame, html\") == this.element) {\n const submitter = event.submitter || undefined;\n const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.method;\n if (method != \"dialog\" && this.delegate.shouldInterceptFormSubmission(form, submitter)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmissionIntercepted(form, submitter);\n }\n }\n });\n this.delegate = delegate;\n this.element = element;\n }\n start() {\n this.element.addEventListener(\"submit\", this.submitBubbled);\n }\n stop() {\n this.element.removeEventListener(\"submit\", this.submitBubbled);\n }\n}\n\nclass View {\n constructor(delegate, element) {\n this.resolveRenderPromise = (value) => { };\n this.resolveInterceptionPromise = (value) => { };\n this.delegate = delegate;\n this.element = element;\n }\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n }\n else {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n }\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n scrollToElement(element) {\n element.scrollIntoView();\n }\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n }\n else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n scrollToPosition({ x, y }) {\n this.scrollRoot.scrollTo(x, y);\n }\n scrollToTop() {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n get scrollRoot() {\n return window;\n }\n async render(renderer) {\n const { isPreview, shouldRender, newSnapshot: snapshot } = renderer;\n if (shouldRender) {\n try {\n this.renderPromise = new Promise(resolve => this.resolveRenderPromise = resolve);\n this.renderer = renderer;\n this.prepareToRenderSnapshot(renderer);\n const renderInterception = new Promise(resolve => this.resolveInterceptionPromise = resolve);\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, this.resolveInterceptionPromise);\n if (!immediateRender)\n await renderInterception;\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n this.finishRenderingSnapshot(renderer);\n }\n finally {\n delete this.renderer;\n this.resolveRenderPromise(undefined);\n delete this.renderPromise;\n }\n }\n else {\n this.invalidate();\n }\n }\n invalidate() {\n this.delegate.viewInvalidated();\n }\n prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n renderer.prepareToRender();\n }\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n }\n else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\n\nclass FrameView extends View {\n invalidate() {\n this.element.innerHTML = \"\";\n }\n get snapshot() {\n return new Snapshot(this.element);\n }\n}\n\nclass LinkInterceptor {\n constructor(delegate, element) {\n this.clickBubbled = (event) => {\n if (this.respondsToEventTarget(event.target)) {\n this.clickEvent = event;\n }\n else {\n delete this.clickEvent;\n }\n };\n this.linkClicked = ((event) => {\n if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url)) {\n this.clickEvent.preventDefault();\n event.preventDefault();\n this.delegate.linkClickIntercepted(event.target, event.detail.url);\n }\n }\n delete this.clickEvent;\n });\n this.willVisit = () => {\n delete this.clickEvent;\n };\n this.delegate = delegate;\n this.element = element;\n }\n start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n respondsToEventTarget(target) {\n const element = target instanceof Element\n ? target\n : target instanceof Node\n ? target.parentElement\n : null;\n return element && element.closest(\"turbo-frame, html\") == this.element;\n }\n}\n\nclass Bardo {\n constructor(permanentElementMap) {\n this.permanentElementMap = permanentElementMap;\n }\n static preservingPermanentElements(permanentElementMap, callback) {\n const bardo = new this(permanentElementMap);\n bardo.enter();\n callback();\n bardo.leave();\n }\n enter() {\n for (const id in this.permanentElementMap) {\n const [, newPermanentElement] = this.permanentElementMap[id];\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n leave() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement] = this.permanentElementMap[id];\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n }\n }\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n }\n getPlaceholderById(id) {\n return this.placeholders.find(element => element.content == id);\n }\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n const element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element;\n}\n\nclass Renderer {\n constructor(currentSnapshot, newSnapshot, isPreview, willRender = true) {\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.promise = new Promise((resolve, reject) => this.resolvingFunctions = { resolve, reject });\n }\n get shouldRender() {\n return true;\n }\n prepareToRender() {\n return;\n }\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n createScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element;\n }\n else {\n const createdScriptElement = document.createElement(\"script\");\n if (this.cspNonce) {\n createdScriptElement.nonce = this.cspNonce;\n }\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement;\n }\n }\n preservingPermanentElements(callback) {\n Bardo.preservingPermanentElements(this.permanentElementMap, callback);\n }\n focusFirstAutofocusableElement() {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (elementIsFocusable(element)) {\n element.focus();\n }\n }\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n }\n get currentElement() {\n return this.currentSnapshot.element;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n }\n get cspNonce() {\n var _a;\n return (_a = document.head.querySelector('meta[name=\"csp-nonce\"]')) === null || _a === void 0 ? void 0 : _a.getAttribute(\"content\");\n }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const { name, value } of [...sourceElement.attributes]) {\n destinationElement.setAttribute(name, value);\n }\n}\nfunction elementIsFocusable(element) {\n return element && typeof element.focus == \"function\";\n}\n\nclass FrameRenderer extends Renderer {\n get shouldRender() {\n return true;\n }\n async render() {\n await nextAnimationFrame();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextAnimationFrame();\n this.focusFirstAutofocusableElement();\n await nextAnimationFrame();\n this.activateScriptElements();\n }\n loadFrameElement() {\n var _a;\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(this.currentElement);\n destinationRange.deleteContents();\n const frameElement = this.newElement;\n const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n this.currentElement.appendChild(sourceRange.extractContents());\n }\n }\n scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n const element = this.currentElement.firstElementChild;\n const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n if (element) {\n element.scrollIntoView({ block });\n return true;\n }\n }\n return false;\n }\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = this.createScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\");\n }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value;\n }\n else {\n return defaultValue;\n }\n}\n\nclass ProgressBar {\n constructor() {\n this.hiding = false;\n this.value = 0;\n this.visible = false;\n this.trickle = () => {\n this.setValue(this.value + Math.random() / 100);\n };\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n static get defaultCSS() {\n return unindent `\n .turbo-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 9999;\n transition:\n width ${ProgressBar.animationDuration}ms ease-out,\n opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n transform: translate3d(0, 0, 0);\n }\n `;\n }\n show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n hide() {\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(() => {\n this.uninstallProgressElement();\n this.stopTrickling();\n this.visible = false;\n this.hiding = false;\n });\n }\n }\n setValue(value) {\n this.value = value;\n this.refresh();\n }\n installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + (this.value * 90)}%`;\n });\n }\n createStylesheetElement() {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n return element;\n }\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element;\n }\n}\nProgressBar.animationDuration = 300;\n\nclass HeadSnapshot extends Snapshot {\n constructor() {\n super(...arguments);\n this.detailsByOuterHTML = this.children\n .filter((element) => !elementIsNoscript(element))\n .map((element) => elementWithoutNonce(element))\n .reduce((result, element) => {\n const { outerHTML } = element;\n const details = outerHTML in result\n ? result[outerHTML]\n : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: []\n };\n return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) });\n }, {});\n }\n get trackedElementSignature() {\n return Object.keys(this.detailsByOuterHTML)\n .filter(outerHTML => this.detailsByOuterHTML[outerHTML].tracked)\n .join(\"\");\n }\n getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n }\n getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n }\n getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n return Object.keys(this.detailsByOuterHTML)\n .filter(outerHTML => !(outerHTML in snapshot.detailsByOuterHTML))\n .map(outerHTML => this.detailsByOuterHTML[outerHTML])\n .filter(({ type }) => type == matchedType)\n .map(({ elements: [element] }) => element);\n }\n get provisionalElements() {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n if (type == null && !tracked) {\n return [...result, ...elements];\n }\n else if (elements.length > 1) {\n return [...result, ...elements.slice(1)];\n }\n else {\n return result;\n }\n }, []);\n }\n getMetaValue(name) {\n const element = this.findMetaElementByName(name);\n return element\n ? element.getAttribute(\"content\")\n : null;\n }\n findMetaElementByName(name) {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { elements: [element] } = this.detailsByOuterHTML[outerHTML];\n return elementIsMetaElementWithName(element, name) ? element : result;\n }, undefined);\n }\n}\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\";\n }\n else if (elementIsStylesheet(element)) {\n return \"stylesheet\";\n }\n}\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n const tagName = element.tagName.toLowerCase();\n return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n const tagName = element.tagName.toLowerCase();\n return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n const tagName = element.tagName.toLowerCase();\n return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\");\n}\nfunction elementIsMetaElementWithName(element, name) {\n const tagName = element.tagName.toLowerCase();\n return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n return element;\n}\n\nclass PageSnapshot extends Snapshot {\n constructor(element, headSnapshot) {\n super(element);\n this.headSnapshot = headSnapshot;\n }\n static fromHTMLString(html = \"\") {\n return this.fromDocument(parseHTMLDocument(html));\n }\n static fromElement(element) {\n return this.fromDocument(element.ownerDocument);\n }\n static fromDocument({ head, body }) {\n return new this(body, new HeadSnapshot(head));\n }\n clone() {\n return new PageSnapshot(this.element.cloneNode(true), this.headSnapshot);\n }\n get headElement() {\n return this.headSnapshot.element;\n }\n get rootLocation() {\n var _a;\n const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n get cacheControlValue() {\n return this.getSetting(\"cache-control\");\n }\n get isPreviewable() {\n return this.cacheControlValue != \"no-preview\";\n }\n get isCacheable() {\n return this.cacheControlValue != \"no-cache\";\n }\n get isVisitable() {\n return this.getSetting(\"visit-control\") != \"reload\";\n }\n getSetting(name) {\n return this.headSnapshot.getMetaValue(`turbo-${name}`);\n }\n}\n\nvar TimingMetric;\n(function (TimingMetric) {\n TimingMetric[\"visitStart\"] = \"visitStart\";\n TimingMetric[\"requestStart\"] = \"requestStart\";\n TimingMetric[\"requestEnd\"] = \"requestEnd\";\n TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\n(function (VisitState) {\n VisitState[\"initialized\"] = \"initialized\";\n VisitState[\"started\"] = \"started\";\n VisitState[\"canceled\"] = \"canceled\";\n VisitState[\"failed\"] = \"failed\";\n VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\nconst defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: () => { },\n willRender: true,\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n constructor(delegate, location, restorationIdentifier, options = {}) {\n this.identifier = uuid();\n this.timingMetrics = {};\n this.followedRedirect = false;\n this.historyChanged = false;\n this.scrolled = false;\n this.snapshotCached = false;\n this.state = VisitState.initialized;\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n const { action, historyChanged, referrer, snapshotHTML, response, visitCachedSnapshot, willRender } = Object.assign(Object.assign({}, defaultOptions), options);\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.scrolled = !willRender;\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n get restorationData() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n }\n get silent() {\n return this.isSamePage;\n }\n start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.state = VisitState.completed;\n this.adapter.visitCompleted(this);\n this.delegate.visitCompleted(this);\n this.followRedirect();\n }\n }\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n }\n }\n changeHistory() {\n var _a;\n if (!this.historyChanged) {\n const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n const method = this.getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n }\n else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n recordResponse(response = this.response) {\n this.response = response;\n if (response) {\n const { statusCode } = response;\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n }\n else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n loadResponse() {\n if (this.response) {\n const { statusCode, responseHTML } = this.response;\n this.render(async () => {\n this.cacheSnapshot();\n if (this.view.renderPromise)\n await this.view.renderPromise;\n if (isSuccessful(statusCode) && responseHTML != null) {\n await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender);\n this.adapter.visitRendered(this);\n this.complete();\n }\n else {\n await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML));\n this.adapter.visitRendered(this);\n this.fail();\n }\n });\n }\n }\n getCachedSnapshot() {\n const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot;\n }\n }\n }\n getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML);\n }\n }\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null;\n }\n loadCachedSnapshot() {\n const snapshot = this.getCachedSnapshot();\n if (snapshot) {\n const isPreview = this.shouldIssueRequest();\n this.render(async () => {\n this.cacheSnapshot();\n if (this.isSamePage) {\n this.adapter.visitRendered(this);\n }\n else {\n if (this.view.renderPromise)\n await this.view.renderPromise;\n await this.view.renderPage(snapshot, isPreview, this.willRender);\n this.adapter.visitRendered(this);\n if (!isPreview) {\n this.complete();\n }\n }\n });\n }\n }\n followRedirect() {\n var _a;\n if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: 'replace',\n response: this.response\n });\n this.followedRedirect = true;\n }\n }\n goToSamePageAnchor() {\n if (this.isSamePage) {\n this.render(async () => {\n this.cacheSnapshot();\n this.adapter.visitRendered(this);\n });\n }\n }\n requestStarted() {\n this.startRequest();\n }\n requestPreventedHandlingResponse(request, response) {\n }\n async requestSucceededWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({ statusCode: SystemStatusCode.contentTypeMismatch, redirected });\n }\n else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n async requestFailedWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({ statusCode: SystemStatusCode.contentTypeMismatch, redirected });\n }\n else {\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n requestErrored(request, error) {\n this.recordResponse({ statusCode: SystemStatusCode.networkFailure, redirected: false });\n }\n requestFinished() {\n this.finishRequest();\n }\n performScroll() {\n if (!this.scrolled) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n }\n else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n this.scrolled = true;\n }\n }\n scrollToRestoredPosition() {\n const { scrollPosition } = this.restorationData;\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true;\n }\n }\n scrollToAnchor() {\n const anchor = getAnchor(this.location);\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true;\n }\n }\n recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n getTimingMetrics() {\n return Object.assign({}, this.timingMetrics);\n }\n getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\": return history.replaceState;\n case \"advance\":\n case \"restore\": return history.pushState;\n }\n }\n hasPreloadedResponse() {\n return typeof this.response == \"object\";\n }\n shouldIssueRequest() {\n if (this.isSamePage) {\n return false;\n }\n else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot();\n }\n else {\n return this.willRender;\n }\n }\n cacheSnapshot() {\n if (!this.snapshotCached) {\n this.view.cacheSnapshot().then(snapshot => snapshot && this.visitCachedSnapshot(snapshot));\n this.snapshotCached = true;\n }\n }\n async render(callback) {\n this.cancelRender();\n await new Promise(resolve => {\n this.frame = requestAnimationFrame(() => resolve());\n });\n await callback();\n delete this.frame;\n this.performScroll();\n }\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300;\n}\n\nclass BrowserAdapter {\n constructor(session) {\n this.progressBar = new ProgressBar;\n this.showProgressBar = () => {\n this.progressBar.show();\n };\n this.session = session;\n }\n visitProposedToLocation(location, options) {\n this.navigator.startVisit(location, uuid(), options);\n }\n visitStarted(visit) {\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.changeHistory();\n visit.goToSamePageAnchor();\n }\n visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n }\n else {\n this.showProgressBar();\n }\n }\n visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload();\n default:\n return visit.loadResponse();\n }\n }\n visitRequestFinished(visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n visitCompleted(visit) {\n }\n pageInvalidated() {\n this.reload();\n }\n visitFailed(visit) {\n }\n visitRendered(visit) {\n }\n formSubmissionStarted(formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n formSubmissionFinished(formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n hideVisitProgressBar() {\n this.progressBar.hide();\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n hideFormProgressBar() {\n this.progressBar.hide();\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n reload() {\n window.location.reload();\n }\n get navigator() {\n return this.session.navigator;\n }\n}\n\nclass CacheObserver {\n constructor() {\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n }\n }\n removeStaleElements() {\n const staleElements = [...document.querySelectorAll('[data-turbo-cache=\"false\"]')];\n for (const element of staleElements) {\n element.remove();\n }\n }\n}\n\nclass FormSubmitObserver {\n constructor(delegate) {\n this.started = false;\n this.submitCaptured = () => {\n removeEventListener(\"submit\", this.submitBubbled, false);\n addEventListener(\"submit\", this.submitBubbled, false);\n };\n this.submitBubbled = ((event) => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n if (form) {\n const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n if (method != \"dialog\" && this.delegate.willSubmitForm(form, submitter)) {\n event.preventDefault();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n }\n });\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n}\n\nclass FrameRedirector {\n constructor(element) {\n this.element = element;\n this.linkInterceptor = new LinkInterceptor(this, element);\n this.formInterceptor = new FormInterceptor(this, element);\n }\n start() {\n this.linkInterceptor.start();\n this.formInterceptor.start();\n }\n stop() {\n this.linkInterceptor.stop();\n this.formInterceptor.stop();\n }\n shouldInterceptLinkClick(element, url) {\n return this.shouldRedirect(element);\n }\n linkClickIntercepted(element, url) {\n const frame = this.findFrameElement(element);\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url);\n }\n }\n shouldInterceptFormSubmission(element, submitter) {\n return this.shouldSubmit(element, submitter);\n }\n formSubmissionIntercepted(element, submitter) {\n const frame = this.findFrameElement(element, submitter);\n if (frame) {\n frame.removeAttribute(\"reloadable\");\n frame.delegate.formSubmissionIntercepted(element, submitter);\n }\n }\n shouldSubmit(form, submitter) {\n var _a;\n const action = getAction(form, submitter);\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n }\n shouldRedirect(element, submitter) {\n const frame = this.findFrameElement(element, submitter);\n return frame ? frame != element.closest(\"turbo-frame\") : false;\n }\n findFrameElement(element, submitter) {\n const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n if (id && id != \"_top\") {\n const frame = this.element.querySelector(`#${id}:not([disabled])`);\n if (frame instanceof FrameElement) {\n return frame;\n }\n }\n }\n}\n\nclass History {\n constructor(delegate) {\n this.restorationIdentifier = uuid();\n this.restorationData = {};\n this.started = false;\n this.pageLoaded = false;\n this.onPopState = (event) => {\n if (this.shouldHandlePopState()) {\n const { turbo } = event.state || {};\n if (turbo) {\n this.location = new URL(window.location.href);\n const { restorationIdentifier } = turbo;\n this.restorationIdentifier = restorationIdentifier;\n this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n }\n }\n };\n this.onPageLoad = async (event) => {\n await nextMicrotask();\n this.pageLoaded = true;\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n update(method, location, restorationIdentifier = uuid()) {\n const state = { turbo: { restorationIdentifier } };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {};\n }\n updateRestorationData(additionalData) {\n const { restorationIdentifier } = this;\n const restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n }\n assumeControlOfScrollRestoration() {\n var _a;\n if (!this.previousScrollRestoration) {\n this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n shouldHandlePopState() {\n return this.pageIsLoaded();\n }\n pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\";\n }\n}\n\nclass LinkClickObserver {\n constructor(delegate) {\n this.started = false;\n this.clickCaptured = () => {\n removeEventListener(\"click\", this.clickBubbled, false);\n addEventListener(\"click\", this.clickBubbled, false);\n };\n this.clickBubbled = (event) => {\n if (this.clickEventIsSignificant(event)) {\n const target = (event.composedPath && event.composedPath()[0]) || event.target;\n const link = this.findLinkFromClickTarget(target);\n if (link) {\n const location = this.getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n clickEventIsSignificant(event) {\n return !((event.target && event.target.isContentEditable)\n || event.defaultPrevented\n || event.which > 1\n || event.altKey\n || event.ctrlKey\n || event.metaKey\n || event.shiftKey);\n }\n findLinkFromClickTarget(target) {\n if (target instanceof Element) {\n return target.closest(\"a[href]:not([target^=_]):not([download])\");\n }\n }\n getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\");\n }\n}\n\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\n\nclass Navigator {\n constructor(delegate) {\n this.delegate = delegate;\n }\n proposeVisit(location, options = {}) {\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n this.delegate.visitProposedToLocation(location, options);\n }\n else {\n window.location.href = location.toString();\n }\n }\n }\n startVisit(locatable, restorationIdentifier, options = {}) {\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options));\n this.currentVisit.start();\n }\n submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n this.formSubmission.start();\n }\n stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n formSubmissionStarted(formSubmission) {\n if (typeof this.adapter.formSubmissionStarted === 'function') {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n if (formSubmission == this.formSubmission) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n if (formSubmission.method != FetchMethod.get) {\n this.view.clearSnapshotCache();\n }\n const { statusCode, redirected } = fetchResponse;\n const action = this.getActionForFormSubmission(formSubmission);\n const visitOptions = { action, response: { statusCode, responseHTML, redirected } };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n }\n }\n async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n if (fetchResponse.serverError) {\n await this.view.renderError(snapshot);\n }\n else {\n await this.view.renderPage(snapshot);\n }\n this.view.scrollToTop();\n this.view.clearSnapshotCache();\n }\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished(formSubmission) {\n if (typeof this.adapter.formSubmissionFinished === 'function') {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n }\n locationWithActionIsSamePage(location, action) {\n const anchor = getAnchor(location);\n const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n const isRestorationToTop = action === 'restore' && typeof anchor === 'undefined';\n return action !== \"replace\" &&\n getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n (isRestorationToTop || (anchor != null && anchor !== currentAnchor));\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n getActionForFormSubmission(formSubmission) {\n const { formElement, submitter } = formSubmission;\n const action = getAttribute(\"data-turbo-action\", submitter, formElement);\n return isAction(action) ? action : \"advance\";\n }\n}\n\nvar PageStage;\n(function (PageStage) {\n PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\nclass PageObserver {\n constructor(delegate) {\n this.stage = PageStage.initial;\n this.started = false;\n this.interpretReadyState = () => {\n const { readyState } = this;\n if (readyState == \"interactive\") {\n this.pageIsInteractive();\n }\n else if (readyState == \"complete\") {\n this.pageIsComplete();\n }\n };\n this.pageWillUnload = () => {\n this.delegate.pageWillUnload();\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n pageIsComplete() {\n this.pageIsInteractive();\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n get readyState() {\n return document.readyState;\n }\n}\n\nclass ScrollObserver {\n constructor(delegate) {\n this.started = false;\n this.onScroll = () => {\n this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n}\n\nclass StreamObserver {\n constructor(delegate) {\n this.sources = new Set;\n this.started = false;\n this.inspectFetchResponse = ((event) => {\n const response = fetchResponseFromEvent(event);\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n this.receiveMessageResponse(response);\n }\n });\n this.receiveMessageEvent = (event) => {\n if (this.started && typeof event.data == \"string\") {\n this.receiveMessageHTML(event.data);\n }\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n streamSourceIsConnected(source) {\n return this.sources.has(source);\n }\n async receiveMessageResponse(response) {\n const html = await response.responseHTML;\n if (html) {\n this.receiveMessageHTML(html);\n }\n }\n receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(new StreamMessage(html));\n }\n}\nfunction fetchResponseFromEvent(event) {\n var _a;\n const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse;\n }\n}\nfunction fetchResponseIsStream(response) {\n var _a;\n const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n return contentType.startsWith(StreamMessage.contentType);\n}\n\nclass ErrorRenderer extends Renderer {\n async render() {\n this.replaceHeadAndBody();\n this.activateScriptElements();\n }\n replaceHeadAndBody() {\n const { documentElement, head, body } = document;\n documentElement.replaceChild(this.newHead, head);\n documentElement.replaceChild(this.newElement, body);\n }\n activateScriptElements() {\n for (const replaceableElement of this.scriptElements) {\n const parentNode = replaceableElement.parentNode;\n if (parentNode) {\n const element = this.createScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n }\n get newHead() {\n return this.newSnapshot.headSnapshot.element;\n }\n get scriptElements() {\n return [...document.documentElement.querySelectorAll(\"script\")];\n }\n}\n\nclass PageRenderer extends Renderer {\n get shouldRender() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n }\n prepareToRender() {\n this.mergeHead();\n }\n async render() {\n if (this.willRender) {\n this.replaceBody();\n }\n }\n finishRendering() {\n super.finishRendering();\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n get currentHeadSnapshot() {\n return this.currentSnapshot.headSnapshot;\n }\n get newHeadSnapshot() {\n return this.newSnapshot.headSnapshot;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n mergeHead() {\n this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n this.removeCurrentHeadProvisionalElements();\n this.copyNewHeadProvisionalElements();\n }\n replaceBody() {\n this.preservingPermanentElements(() => {\n this.activateNewBody();\n this.assignNewBody();\n });\n }\n get trackedElementsAreIdentical() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n }\n copyNewHeadStylesheetElements() {\n for (const element of this.newHeadStylesheetElements) {\n document.head.appendChild(element);\n }\n }\n copyNewHeadScriptElements() {\n for (const element of this.newHeadScriptElements) {\n document.head.appendChild(this.createScriptElement(element));\n }\n }\n removeCurrentHeadProvisionalElements() {\n for (const element of this.currentHeadProvisionalElements) {\n document.head.removeChild(element);\n }\n }\n copyNewHeadProvisionalElements() {\n for (const element of this.newHeadProvisionalElements) {\n document.head.appendChild(element);\n }\n }\n activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n activateNewBodyScriptElements() {\n for (const inertScriptElement of this.newBodyScriptElements) {\n const activatedScriptElement = this.createScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n assignNewBody() {\n if (document.body && this.newElement instanceof HTMLBodyElement) {\n document.body.replaceWith(this.newElement);\n }\n else {\n document.documentElement.appendChild(this.newElement);\n }\n }\n get newHeadStylesheetElements() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get newHeadScriptElements() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get currentHeadProvisionalElements() {\n return this.currentHeadSnapshot.provisionalElements;\n }\n get newHeadProvisionalElements() {\n return this.newHeadSnapshot.provisionalElements;\n }\n get newBodyScriptElements() {\n return this.newElement.querySelectorAll(\"script\");\n }\n}\n\nclass SnapshotCache {\n constructor(size) {\n this.keys = [];\n this.snapshots = {};\n this.size = size;\n }\n has(location) {\n return toCacheKey(location) in this.snapshots;\n }\n get(location) {\n if (this.has(location)) {\n const snapshot = this.read(location);\n this.touch(location);\n return snapshot;\n }\n }\n put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot;\n }\n clear() {\n this.snapshots = {};\n }\n read(location) {\n return this.snapshots[toCacheKey(location)];\n }\n write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n touch(location) {\n const key = toCacheKey(location);\n const index = this.keys.indexOf(key);\n if (index > -1)\n this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n trim() {\n for (const key of this.keys.splice(this.size)) {\n delete this.snapshots[key];\n }\n }\n}\n\nclass PageView extends View {\n constructor() {\n super(...arguments);\n this.snapshotCache = new SnapshotCache(10);\n this.lastRenderedLocation = new URL(location.href);\n }\n renderPage(snapshot, isPreview = false, willRender = true) {\n const renderer = new PageRenderer(this.snapshot, snapshot, isPreview, willRender);\n return this.render(renderer);\n }\n renderError(snapshot) {\n const renderer = new ErrorRenderer(this.snapshot, snapshot, false);\n return this.render(renderer);\n }\n clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n async cacheSnapshot() {\n if (this.shouldCacheSnapshot) {\n this.delegate.viewWillCacheSnapshot();\n const { snapshot, lastRenderedLocation: location } = this;\n await nextEventLoopTick();\n const cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(location, cachedSnapshot);\n return cachedSnapshot;\n }\n }\n getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location);\n }\n get snapshot() {\n return PageSnapshot.fromElement(this.element);\n }\n get shouldCacheSnapshot() {\n return this.snapshot.isCacheable;\n }\n}\n\nclass Session {\n constructor() {\n this.navigator = new Navigator(this);\n this.history = new History(this);\n this.view = new PageView(this, document.documentElement);\n this.adapter = new BrowserAdapter(this);\n this.pageObserver = new PageObserver(this);\n this.cacheObserver = new CacheObserver();\n this.linkClickObserver = new LinkClickObserver(this);\n this.formSubmitObserver = new FormSubmitObserver(this);\n this.scrollObserver = new ScrollObserver(this);\n this.streamObserver = new StreamObserver(this);\n this.frameRedirector = new FrameRedirector(document.documentElement);\n this.drive = true;\n this.enabled = true;\n this.progressBarDelay = 500;\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.linkClickObserver.start();\n this.formSubmitObserver.start();\n this.scrollObserver.start();\n this.streamObserver.start();\n this.frameRedirector.start();\n this.history.start();\n this.started = true;\n this.enabled = true;\n }\n }\n disable() {\n this.enabled = false;\n }\n stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.started = false;\n }\n }\n registerAdapter(adapter) {\n this.adapter = adapter;\n }\n visit(location, options = {}) {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n renderStreamMessage(message) {\n document.documentElement.appendChild(StreamMessage.wrap(message).fragment);\n }\n clearCache() {\n this.view.clearSnapshotCache();\n }\n setProgressBarDelay(delay) {\n this.progressBarDelay = delay;\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, { action: \"restore\", historyChanged: true });\n }\n else {\n this.adapter.pageInvalidated();\n }\n }\n scrollPositionChanged(position) {\n this.history.updateRestorationData({ scrollPosition: position });\n }\n willFollowLinkToLocation(link, location) {\n return this.elementDriveEnabled(link)\n && locationIsVisitable(location, this.snapshot.rootLocation)\n && this.applicationAllowsFollowingLinkToLocation(link, location);\n }\n followedLinkToLocation(link, location) {\n const action = this.getActionForLink(link);\n this.convertLinkWithMethodClickToFormSubmission(link) || this.visit(location.href, { action });\n }\n convertLinkWithMethodClickToFormSubmission(link) {\n const linkMethod = link.getAttribute(\"data-turbo-method\");\n if (linkMethod) {\n const form = document.createElement(\"form\");\n form.method = linkMethod;\n form.action = link.getAttribute(\"href\") || \"undefined\";\n form.hidden = true;\n if (link.hasAttribute(\"data-turbo-confirm\")) {\n form.setAttribute(\"data-turbo-confirm\", link.getAttribute(\"data-turbo-confirm\"));\n }\n const frame = this.getTargetFrameForLink(link);\n if (frame) {\n form.setAttribute(\"data-turbo-frame\", frame);\n form.addEventListener(\"turbo:submit-start\", () => form.remove());\n }\n else {\n form.addEventListener(\"submit\", () => form.remove());\n }\n document.body.appendChild(form);\n return dispatch(\"submit\", { cancelable: true, target: form });\n }\n else {\n return false;\n }\n }\n allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n }\n visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n visitStarted(visit) {\n extendURLWithDeprecatedProperties(visit.location);\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n visitCompleted(visit) {\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action);\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n willSubmitForm(form, submitter) {\n const action = getAction(form, submitter);\n return this.elementDriveEnabled(form)\n && (!submitter || this.elementDriveEnabled(submitter))\n && locationIsVisitable(expandURL(action), this.snapshot.rootLocation);\n }\n formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n viewWillCacheSnapshot() {\n var _a;\n if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n allowsImmediateRender({ element }, resume) {\n const event = this.notifyApplicationBeforeRender(element, resume);\n return !event.defaultPrevented;\n }\n viewRenderedSnapshot(snapshot, isPreview) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender();\n }\n viewInvalidated() {\n this.adapter.pageInvalidated();\n }\n frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n applicationAllowsFollowingLinkToLocation(link, location) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(link, location);\n return !event.defaultPrevented;\n }\n applicationAllowsVisitingLocation(location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented;\n }\n notifyApplicationAfterClickingLinkToLocation(link, location) {\n return dispatch(\"turbo:click\", { target: link, detail: { url: location.href }, cancelable: true });\n }\n notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", { detail: { url: location.href }, cancelable: true });\n }\n notifyApplicationAfterVisitingLocation(location, action) {\n markAsBusy(document.documentElement);\n return dispatch(\"turbo:visit\", { detail: { url: location.href, action } });\n }\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\");\n }\n notifyApplicationBeforeRender(newBody, resume) {\n return dispatch(\"turbo:before-render\", { detail: { newBody, resume }, cancelable: true });\n }\n notifyApplicationAfterRender() {\n return dispatch(\"turbo:render\");\n }\n notifyApplicationAfterPageLoad(timing = {}) {\n clearBusyState(document.documentElement);\n return dispatch(\"turbo:load\", { detail: { url: this.location.href, timing } });\n }\n notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(new HashChangeEvent(\"hashchange\", { oldURL: oldURL.toString(), newURL: newURL.toString() }));\n }\n notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", { target: frame });\n }\n notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", { detail: { fetchResponse }, target: frame, cancelable: true });\n }\n elementDriveEnabled(element) {\n const container = element === null || element === void 0 ? void 0 : element.closest(\"[data-turbo]\");\n if (this.drive) {\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\";\n }\n else {\n return true;\n }\n }\n else {\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\";\n }\n else {\n return false;\n }\n }\n }\n getActionForLink(link) {\n const action = link.getAttribute(\"data-turbo-action\");\n return isAction(action) ? action : \"advance\";\n }\n getTargetFrameForLink(link) {\n const frame = link.getAttribute(\"data-turbo-frame\");\n if (frame) {\n return frame;\n }\n else {\n const container = link.closest(\"turbo-frame\");\n if (container) {\n return container.id;\n }\n }\n }\n get snapshot() {\n return this.view.snapshot;\n }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get() {\n return this.toString();\n }\n }\n};\n\nconst session = new Session;\nconst { navigator: navigator$1 } = session;\nfunction start() {\n session.start();\n}\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\nfunction clearCache() {\n session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n FormSubmission.confirmMethod = confirmMethod;\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\n start: start,\n registerAdapter: registerAdapter,\n visit: visit,\n connectStreamSource: connectStreamSource,\n disconnectStreamSource: disconnectStreamSource,\n renderStreamMessage: renderStreamMessage,\n clearCache: clearCache,\n setProgressBarDelay: setProgressBarDelay,\n setConfirmMethod: setConfirmMethod\n});\n\nclass FrameController {\n constructor(element) {\n this.fetchResponseLoaded = (fetchResponse) => { };\n this.currentFetchRequest = null;\n this.resolveVisitPromise = () => { };\n this.connected = false;\n this.hasBeenLoaded = false;\n this.settingSourceURL = false;\n this.element = element;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.formInterceptor = new FormInterceptor(this, this.element);\n }\n connect() {\n if (!this.connected) {\n this.connected = true;\n this.reloadable = false;\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n }\n this.linkInterceptor.start();\n this.formInterceptor.start();\n this.sourceURLChanged();\n }\n }\n disconnect() {\n if (this.connected) {\n this.connected = false;\n this.appearanceObserver.stop();\n this.linkInterceptor.stop();\n this.formInterceptor.stop();\n }\n }\n disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n this.loadSourceURL();\n }\n }\n sourceURLChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n this.loadSourceURL();\n }\n }\n loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n }\n else {\n this.appearanceObserver.stop();\n this.loadSourceURL();\n }\n }\n async loadSourceURL() {\n if (!this.settingSourceURL && this.enabled && this.isActive && (this.reloadable || this.sourceURL != this.currentURL)) {\n const previousURL = this.currentURL;\n this.currentURL = this.sourceURL;\n if (this.sourceURL) {\n try {\n this.element.loaded = this.visit(expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n await this.element.loaded;\n this.hasBeenLoaded = true;\n }\n catch (error) {\n this.currentURL = previousURL;\n throw error;\n }\n }\n }\n }\n async loadResponse(fetchResponse) {\n if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n this.sourceURL = fetchResponse.response.url;\n }\n try {\n const html = await fetchResponse.responseHTML;\n if (html) {\n const { body } = parseHTMLDocument(html);\n const snapshot = new Snapshot(await this.extractForeignFrameElement(body));\n const renderer = new FrameRenderer(this.view.snapshot, snapshot, false, false);\n if (this.view.renderPromise)\n await this.view.renderPromise;\n await this.view.render(renderer);\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n this.fetchResponseLoaded(fetchResponse);\n }\n }\n catch (error) {\n console.error(error);\n this.view.invalidate();\n }\n finally {\n this.fetchResponseLoaded = () => { };\n }\n }\n elementAppearedInViewport(element) {\n this.loadSourceURL();\n }\n shouldInterceptLinkClick(element, url) {\n if (element.hasAttribute(\"data-turbo-method\")) {\n return false;\n }\n else {\n return this.shouldInterceptNavigation(element);\n }\n }\n linkClickIntercepted(element, url) {\n this.reloadable = true;\n this.navigateFrame(element, url);\n }\n shouldInterceptFormSubmission(element, submitter) {\n return this.shouldInterceptNavigation(element, submitter);\n }\n formSubmissionIntercepted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n this.reloadable = false;\n this.formSubmission = new FormSubmission(this, element, submitter);\n const { fetchRequest } = this.formSubmission;\n this.prepareHeadersForRequest(fetchRequest.headers, fetchRequest);\n this.formSubmission.start();\n }\n prepareHeadersForRequest(headers, request) {\n headers[\"Turbo-Frame\"] = this.id;\n }\n requestStarted(request) {\n markAsBusy(this.element);\n }\n requestPreventedHandlingResponse(request, response) {\n this.resolveVisitPromise();\n }\n async requestSucceededWithResponse(request, response) {\n await this.loadResponse(response);\n this.resolveVisitPromise();\n }\n requestFailedWithResponse(request, response) {\n console.error(response);\n this.resolveVisitPromise();\n }\n requestErrored(request, error) {\n console.error(error);\n this.resolveVisitPromise();\n }\n requestFinished(request) {\n clearBusyState(this.element);\n }\n formSubmissionStarted({ formElement }) {\n markAsBusy(formElement, this.findFrameElement(formElement));\n }\n formSubmissionSucceededWithResponse(formSubmission, response) {\n const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n this.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n frame.delegate.loadResponse(response);\n }\n formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished({ formElement }) {\n clearBusyState(formElement, this.findFrameElement(formElement));\n }\n allowsImmediateRender(snapshot, resume) {\n return true;\n }\n viewRenderedSnapshot(snapshot, isPreview) {\n }\n viewInvalidated() {\n }\n async visit(url) {\n var _a;\n const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams, this.element);\n (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n this.currentFetchRequest = request;\n return new Promise(resolve => {\n this.resolveVisitPromise = () => {\n this.resolveVisitPromise = () => { };\n this.currentFetchRequest = null;\n resolve();\n };\n request.perform();\n });\n }\n navigateFrame(element, url, submitter) {\n const frame = this.findFrameElement(element, submitter);\n this.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n frame.setAttribute(\"reloadable\", \"\");\n frame.src = url;\n }\n proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n const action = getAttribute(\"data-turbo-action\", submitter, element, frame);\n if (isAction(action)) {\n const { visitCachedSnapshot } = new SnapshotSubstitution(frame);\n frame.delegate.fetchResponseLoaded = (fetchResponse) => {\n if (frame.src) {\n const { statusCode, redirected } = fetchResponse;\n const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n const response = { statusCode, redirected, responseHTML };\n session.visit(frame.src, { action, response, visitCachedSnapshot, willRender: false });\n }\n };\n }\n }\n findFrameElement(element, submitter) {\n var _a;\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n }\n async extractForeignFrameElement(container) {\n let element;\n const id = CSS.escape(this.id);\n try {\n if (element = activateElement(container.querySelector(`turbo-frame#${id}`), this.currentURL)) {\n return element;\n }\n if (element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.currentURL)) {\n await element.loaded;\n return await this.extractForeignFrameElement(element);\n }\n console.error(`Response has no matching element`);\n }\n catch (error) {\n console.error(error);\n }\n return new FrameElement();\n }\n formActionIsVisitable(form, submitter) {\n const action = getAction(form, submitter);\n return locationIsVisitable(expandURL(action), this.rootLocation);\n }\n shouldInterceptNavigation(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n return false;\n }\n if (!this.enabled || id == \"_top\") {\n return false;\n }\n if (id) {\n const frameElement = getFrameElementById(id);\n if (frameElement) {\n return !frameElement.disabled;\n }\n }\n if (!session.elementDriveEnabled(element)) {\n return false;\n }\n if (submitter && !session.elementDriveEnabled(submitter)) {\n return false;\n }\n return true;\n }\n get id() {\n return this.element.id;\n }\n get enabled() {\n return !this.element.disabled;\n }\n get sourceURL() {\n if (this.element.src) {\n return this.element.src;\n }\n }\n get reloadable() {\n const frame = this.findFrameElement(this.element);\n return frame.hasAttribute(\"reloadable\");\n }\n set reloadable(value) {\n const frame = this.findFrameElement(this.element);\n if (value) {\n frame.setAttribute(\"reloadable\", \"\");\n }\n else {\n frame.removeAttribute(\"reloadable\");\n }\n }\n set sourceURL(sourceURL) {\n this.settingSourceURL = true;\n this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n this.currentURL = this.element.src;\n this.settingSourceURL = false;\n }\n get loadingStyle() {\n return this.element.loading;\n }\n get isLoading() {\n return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n }\n get isActive() {\n return this.element.isActive && this.connected;\n }\n get rootLocation() {\n var _a;\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n}\nclass SnapshotSubstitution {\n constructor(element) {\n this.visitCachedSnapshot = ({ element }) => {\n var _a;\n const { id, clone } = this;\n (_a = element.querySelector(\"#\" + id)) === null || _a === void 0 ? void 0 : _a.replaceWith(clone);\n };\n this.clone = element.cloneNode(true);\n this.id = element.id;\n }\n}\nfunction getFrameElementById(id) {\n if (id != null) {\n const element = document.getElementById(id);\n if (element instanceof FrameElement) {\n return element;\n }\n }\n}\nfunction activateElement(element, currentURL) {\n if (element) {\n const src = element.getAttribute(\"src\");\n if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n throw new Error(`Matching element has a source URL which references itself`);\n }\n if (element.ownerDocument !== document) {\n element = document.importNode(element, true);\n }\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element;\n }\n }\n}\n\nconst StreamActions = {\n after() {\n this.targetElements.forEach(e => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling); });\n },\n append() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach(e => e.append(this.templateContent));\n },\n before() {\n this.targetElements.forEach(e => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e); });\n },\n prepend() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach(e => e.prepend(this.templateContent));\n },\n remove() {\n this.targetElements.forEach(e => e.remove());\n },\n replace() {\n this.targetElements.forEach(e => e.replaceWith(this.templateContent));\n },\n update() {\n this.targetElements.forEach(e => {\n e.innerHTML = \"\";\n e.append(this.templateContent);\n });\n }\n};\n\nclass StreamElement extends HTMLElement {\n async connectedCallback() {\n try {\n await this.render();\n }\n catch (error) {\n console.error(error);\n }\n finally {\n this.disconnect();\n }\n }\n async render() {\n var _a;\n return (_a = this.renderPromise) !== null && _a !== void 0 ? _a : (this.renderPromise = (async () => {\n if (this.dispatchEvent(this.beforeRenderEvent)) {\n await nextAnimationFrame();\n this.performAction();\n }\n })());\n }\n disconnect() {\n try {\n this.remove();\n }\n catch (_a) { }\n }\n removeDuplicateTargetChildren() {\n this.duplicateChildren.forEach(c => c.remove());\n }\n get duplicateChildren() {\n var _a;\n const existingChildren = this.targetElements.flatMap(e => [...e.children]).filter(c => !!c.id);\n const newChildrenIds = [...(_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children].filter(c => !!c.id).map(c => c.id);\n return existingChildren.filter(c => newChildrenIds.includes(c.id));\n }\n get performAction() {\n if (this.action) {\n const actionFunction = StreamActions[this.action];\n if (actionFunction) {\n return actionFunction;\n }\n this.raise(\"unknown action\");\n }\n this.raise(\"action attribute is missing\");\n }\n get targetElements() {\n if (this.target) {\n return this.targetElementsById;\n }\n else if (this.targets) {\n return this.targetElementsByQuery;\n }\n else {\n this.raise(\"target or targets attribute is missing\");\n }\n }\n get templateContent() {\n return this.templateElement.content.cloneNode(true);\n }\n get templateElement() {\n if (this.firstElementChild instanceof HTMLTemplateElement) {\n return this.firstElementChild;\n }\n this.raise(\"first child element must be a