{"version":3,"file":"js/247-a1f5cfa74b5eee97e6f5.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/regexp-flags.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/es.regexp.flags.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