PageSourceSearch

https://cars.volkswagen.kz/modules/system/assets/js/framework-bundle.js

js volkswagen.kz collected 2026-10-01 00:34:55 UTC 378,739 bytes, 10,064 lines download raw bytes

vendor: 112 bytes, lines 1-5
1/******/ (() => { // webpackBootstrap
2/******/ 	"use strict";
3/******/ 	var __webpack_modules__ = ({
4
5/***/ "./s
5rc/core/controller.js":
6/*!********************************!*\
7  !*** ./src/core/controller.js ***!
8  \********************************/
9/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10
11__webpack_require__.r(__webpack_exports__);
12/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13/* harmony export */   "Controller": () => (/* binding */ Controller)
14/* harmony export */ });
15/* harmony import */ var _util_events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/events */ "./src/util/events.js");
16/* harmony import */ var _request_builder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./request-builder */ "./src/core/request-builder.js");
17function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
18
19function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
20
21function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
22
23
24
25var Controller = /*#__PURE__*/function () {
26  function Controller() {
27    _classCallCheck(this, Controller);
28
29    this.started = false;
30    this.documentVisible = true;
31  }
32
33  _createClass(Controller, [{
34    key: "start",
35    value: function start() {
36      var _this = this;
37
38      if (!this.started) {
39        // Track unload event for request lib
40        window.onbeforeunload = this.documentOnBeforeUnload; // First page load
41
42        addEventListener('DOMContentLoaded', function () {
43          return _this.render();
44        }); // Again, after new scripts load
45
46        addEventListener('page:updated', function () {
47          return _this.render();
48        }); // Again after AJAX request
49
50        addEventListener('ajax:update-complete', function () {
51          return _this.render();
52        }); // Watching document visibility
53
54        addEventListener('visibilitychange', function () {
55          return _this.documentOnVisibilityChange();
56        }); // Submit form
57
58        _util_events__WEBPACK_IMPORTED_MODULE_0__.Events.on(document, 'submit', '[data-request]', this.documentOnSubmit); // Track input
59
60        _util_events__WEBPACK_IMPORTED_MODULE_0__.Events.on(document, 'input', 'input[data-request][data-track-input]', this.documentOnKeyup); // Change select, checkbox, radio, file input
61
62        _util_events__WEBPACK_IMPORTED_MODULE_0__.Events.on(document, 'change', 'select[data-request], input[type=radio][data-request], input[type=checkbox][data-request], input[type=file][data-request]', this.documentOnChange); // Press enter on orphan input
63
64        _util_events__WEBPACK_IMPORTED_MODULE_0__.Events.on(document, 'keydown', 'input[type=text][data-request], input[type=submit][data-request], input[type=password][data-request]', this.documentOnKeydown); // Click submit button or link
65
66        _util_events__WEBPACK_IMPORTED_MODULE_0__.Events.on(document, 'click', 'a[data-request], button[data-request], input[type=button][data-request], input[type=submit][data-request]', this.documentOnClick);
67        this.started = true;
68      }
69    }
70  }, {
71    key: "stop",
72    value: function stop() {
73      if (this.started) {
74        this.started = false;
75      }
76    }
77  }, {
78    key: "render",
79    value: function render(event) {
80      // Pre render event, used to move nodes around
81      _util_events__WEBPACK_IMPORTED_MODULE_0__.Events.dispatch('before-render'); // Render event, used to initialize controls
82
83      _util_events__WEBPACK_IMPORTED_MODULE_0__.Events.dispatch('render'); // Resize event to adjust all measurements
84
85      dispatchEvent(new Event('resize'));
86      this.documentOnRender(event);
87    }
88  }, {
89    key: "documentOnVisibilityChange",
90    value: function documentOnVisibilityChange(event) {
91      this.documentVisible = !document.hidden;
92
93      if (this.documentVisible) {
94        this.documentOnRender();
95      }
96    }
97  }, {
98    key: "documentOnRender",
99    value: function documentOnRender(event) {
100      if (!this.documentVisible) {
101        return;
102      }
103
104      document.querySelectorAll('[data-auto-submit]').forEach(function (el) {
105        var interval = el.dataset.autoSubmit || 0;
106        el.removeAttribute('data-auto-submit');
107        setTimeout(function () {
108          _request_builder__WEBPACK_IMPORTED_MODULE_1__.RequestBuilder.fromElement(el);
109        }, interval);
110      });
111    }
112  }, {
113    key: "documentOnSubmit",
114    value: function documentOnSubmit(event) {
115      event.preventDefault();
116      _request_builder__WEBPACK_IMPORTED_MODULE_1__.RequestBuilder.fromElement(event.target);
117    }
118  }, {
119    key: "documentOnClick",
120    value: function documentOnClick(event) {
121      event.preventDefault();
122      _request_builder__WEBPACK_IMPORTED_MODULE_1__.RequestBuilder.fromElement(event.target);
123    }
124  }, {
125    key: "documentOnChange",
126    value: function documentOnChange(event) {
127      _request_builder__WEBPACK_IMPORTED_MODULE_1__.RequestBuilder.fromElement(event.target);
128    }
129  }, {
130    key: "documentOnKeyup",
131    value: function documentOnKeyup(event) {
132      var el = event.target,
133          lastValue = el.dataset.ocLastValue;
134
135      if (['email', 'number', 'password', 'search', 'text'].indexOf(el.type) === -1) {
136        return;
137      }
138
139      if (lastValue !== undefined && lastValue == el.value) {
140        return;
141      }
142
143      el.dataset.ocLastValue = el.value;
144
145      if (this.dataTrackInputTimer !== undefined) {
146        clearTimeout(this.dataTrackInputTimer);
147      }
148
149      var interval = el.getAttribute('data-track-input');
150
151      if (!interval) {
152        interval = 300;
153      }
154
155      var self = this;
156      this.dataTrackInputTimer = setTimeout(function () {
157        if (self.lastDataTrackInputRequest) {
158          self.lastDataTrackInputRequest.abort();
159        }
160
161        self.lastDataTrackInputRequest = _request_builder__WEBPACK_IMPORTED_MODULE_1__.RequestBuilder.fromElement(el);
162      }, interval);
163    }
164  }, {
165    key: "documentOnKeydown",
166    value: function documentOnKeydown(event) {
167      if (event.key === 'Enter') {
168        event.preventDefault();
169
170        if (this.dataTrackInputTimer !== undefined) {
171          clearTimeout(this.dataTrackInputTimer);
172        }
173
174        _request_builder__WEBPACK_IMPORTED_MODULE_1__.RequestBuilder.fromElement(event.target);
175      }
176    }
177  }, {
178    key: "documentOnBeforeUnload",
179    value: function documentOnBeforeUnload(event) {
180      window.ocUnloading = true;
181    }
182  }]);
183
184  return Controller;
185}();
186
187/***/ }),
188
189/***/ "./src/core/index.js":
190/*!***************************!*\
191  !*** ./src/core/index.js ***!
192  \***************************/
193/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
194
195__webpack_require__.r(__webpack_exports__);
196/* harmony export */ __webpack_require__.d(__webpack_exports__, {
197/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
198/* harmony export */ });
199/* harmony import */ var _util_events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/events */ "./src/util/events.js");
200/* harmony import */ var _util_wait__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/wait */ "./src/util/wait.js");
201/* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./namespace */ "./src/core/namespace.js");
202function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
203
204
205
206
207/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_namespace__WEBPACK_IMPORTED_MODULE_2__["default"]);
208
209if (!window.oc) {
210  window.oc = {};
211}
212
213if (!window.oc.AjaxFramework) {
214  // Namespace
215  window.oc.AjaxFramework = _namespace__WEBPACK_IMPORTED_MODULE_2__["default"]; // Request on element with builder
216
217  window.oc.request = _namespace__WEBPACK_IMPORTED_MODULE_2__["default"].requestElement; // JSON parser
218
219  window.oc.parseJSON = _namespace__WEBPACK_IMPORTED_MODULE_2__["default"].parseJSON; // Form serializer
220
221  window.oc.serializeJSON = _namespace__WEBPACK_IMPORTED_MODULE_2__["default"].serializeJSON; // Selector events
222
223  window.oc.Events = _util_events__WEBPACK_IMPORTED_MODULE_0__.Events; // Wait for a variable to exist
224
225  window.oc.waitFor = _util_wait__WEBPACK_IMPORTED_MODULE_1__.waitFor; // Fallback for turbo
226
227  window.oc.pageReady = _util_wait__WEBPACK_IMPORTED_MODULE_1__.domReady; // Fallback for turbo
228
229  window.oc.visit = function (url) {
230    return window.location.assign(url);
231  }; // Boot controller
232
233
234  if (!isAMD() && !isCommonJS()) {
235    _namespace__WEBPACK_IMPORTED_MODULE_2__["default"].start();
236  }
237}
238
239function isAMD() {
240  return typeof define == "function" && __webpack_require__.amdO;
241}
242
243function isCommonJS() {
244  return (typeof exports === "undefined" ? "undefined" : _typeof(exports)) == "object" && "object" != "undefined";
245}
246
247/***/ }),
248
249/***/ "./src/core/migrate.js":
250/*!*****************************!*\
251  !*** ./src/core/migrate.js ***!
252  \*****************************/
253/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
254
255__webpack_require__.r(__webpack_exports__);
256/* harmony export */ __webpack_require__.d(__webpack_exports__, {
257/* harmony export */   "Migrate": () => (/* binding */ Migrate)
258/* harmony export */ });
259/* harmony import */ var _core_request_builder__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/request-builder */ "./src/core/request-builder.js");
260/* harmony import */ var _util_json_parser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/json-parser */ "./src/util/json-parser.js");
261function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
262
263function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
264
265function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
266
267function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
268
269
270
271var Migrate = /*#__PURE__*/function () {
272  function Migrate() {
273    _classCallCheck(this, Migrate);
274  }
275
276  _createClass(Migrate, [{
277    key: "bind",
278    value: function bind() {
279      this.bindRequestFunc();
280      this.bindRenderFunc();
281      this.bindjQueryEvents();
282    }
283  }, {
284    key: "bindRequestFunc",
285    value: function bindRequestFunc() {
286      var old = $.fn.request;
287
288      $.fn.request = function (handler, option) {
289        var options = _typeof(option) === 'object' ? option : {};
290        return new _core_request_builder__WEBPACK_IMPORTED_MODULE_0__.RequestBuilder(this.get(0), handler, options);
291      };
292
293      $.fn.request.Constructor = _core_request_builder__WEBPACK_IMPORTED_MODULE_0__.RequestBuilder; // Basic function
294
295      $.request = function (handler, option) {
296        return $(document).request(handler, option);
297      }; // No conflict
298
299
300      $.fn.request.noConflict = function () {
301        $.fn.request = old;
302        return this;
303      };
304    }
305  }, {
306    key: "bindRenderFunc",
307    value: function bindRenderFunc() {
308      $.fn.render = function (callback) {
309        $(document).on('render', callback);
310      };
311    }
312  }, {
313    key: "bindjQueryEvents",
314    value: function bindjQueryEvents() {
315      // Element
316      this.migratejQueryEvent(document, 'ajax:setup', 'ajaxSetup', ['context']);
317      this.migratejQueryEvent(document, 'ajax:promise', 'ajaxPromise', ['context']);
318      this.migratejQueryEvent(document, 'ajax:fail', 'ajaxFail', ['context', 'data', 'responseCode', 'xhr']);
319      this.migratejQueryEvent(document, 'ajax:done', 'ajaxDone', ['context', 'data', 'responseCode', 'xhr']);
320      this.migratejQueryEvent(document, 'ajax:always', 'ajaxAlways', ['context', 'data', 'responseCode', 'xhr']);
321      this.migratejQueryEvent(document, 'ajax:before-redirect', 'ajaxRedirect'); // Updated Element
322
323      this.migratejQueryEvent(document, 'ajax:update', 'ajaxUpdate', ['context', 'data', 'responseCode', 'xhr']);
324      this.migratejQueryEvent(document, 'ajax:before-replace', 'ajaxBeforeReplace'); // Trigger Element
325
326      this.migratejQueryEvent(document, 'ajax:before-request', 'oc.beforeRequest', ['context']);
327      this.migratejQueryEvent(document, 'ajax:before-update', 'ajaxBeforeUpdate', ['context', 'data', 'responseCode', 'x
327hr']);
328      this.migratejQueryEvent(document, 'ajax:request-success', 'ajaxSuccess', ['context', 'data', 'responseCode', 'xhr']);
329      this.migratejQueryEvent(document, 'ajax:request-complete', 'ajaxComplete', ['context', 'data', 'responseCode', 'xhr']);
330      this.migratejQueryEvent(document, 'ajax:request-error', 'ajaxError', ['context', 'message', 'responseCode', 'xhr']);
331      this.migratejQueryEvent(document, 'ajax:before-validate', 'ajaxValidation', ['context', 'message', 'fields']); // Window
332
333      this.migratejQueryEvent(window, 'ajax:before-send', 'ajaxBeforeSend', ['context']);
334      this.migratejQueryEvent(window, 'ajax:update-complete', 'ajaxUpdateComplete', ['context', 'data', 'responseCode', 'xhr']);
335      this.migratejQueryEvent(window, 'ajax:invalid-field', 'ajaxInvalidField', ['element', 'fieldName', 'errorMsg', 'isFirst']);
336      this.migratejQueryEvent(window, 'ajax:confirm-message', 'ajaxConfirmMessage', ['message', 'promise']);
337      this.migratejQueryEvent(window, 'ajax:error-message', 'ajaxErrorMessage', ['message']); // Data adapter
338
339      this.migratejQueryAttachData(document, 'ajax:setup', 'a[data-request], button[data-request], form[data-request], a[data-handler], button[data-handler]');
340    } // Private
341
342  }, {
343    key: "migratejQueryEvent",
344    value: function migratejQueryEvent(target, jsName, jqName) {
345      var detailNames = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
346      var self = this;
347      $(target).on(jsName, function (ev) {
348        self.triggerjQueryEvent(ev.originalEvent, jqName, detailNames);
349      });
350    }
351  }, {
352    key: "triggerjQueryEvent",
353    value: function triggerjQueryEvent(ev, eventName) {
354      var detailNames = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
355      var jQueryEvent = $.Event(eventName),
356          args = this.buildDetailArgs(ev, detailNames);
357      $(ev.target).trigger(jQueryEvent, args);
358
359      if (jQueryEvent.isDefaultPrevented()) {
360        ev.preventDefault();
361      }
362    }
363  }, {
364    key: "buildDetailArgs",
365    value: function buildDetailArgs(ev, detailNames) {
366      var args = [];
367      detailNames.forEach(function (name) {
368        args.push(ev.detail[name]);
369      });
370      return args;
371    } // For instances where data() is populated in the jQ instance
372
373  }, {
374    key: "migratejQueryAttachData",
375    value: function migratejQueryAttachData(target, eventName, selector) {
376      $(target).on(eventName, selector, function (event) {
377        var dataObj = $(this).data('request-data');
378
379        if (!dataObj) {
380          return;
381        }
382
383        var options = event.detail.context.options;
384
385        if (dataObj.constructor === {}.constructor) {
386          Object.assign(options.data, dataObj);
387        } else if (typeof dataObj === 'string') {
388          Object.assign(options.data, _util_json_parser__WEBPACK_IMPORTED_MODULE_1__.JsonParser.paramToObj('request-data', dataObj));
389        }
390      });
391    }
392  }]);
393
394  return Migrate;
395}();
396
397/***/ }),
398
399/***/ "./src/core/namespace.js":
400/*!*******************************!*\
401  !*** ./src/core/namespace.js ***!
402  \*******************************/
403/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
404
405__webpack_require__.r(__webpack_exports__);
406/* harmony export */ __webpack_require__.d(__webpack_exports__, {
407/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
408/* harmony export */ });
409/* harmony import */ var _controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./controller */ "./src/core/controller.js");
410/* harmony import */ var _migrate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./migrate */ "./src/core/migrate.js");
411/* harmony import */ var _request_builder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./request-builder */ "./src/core/request-builder.js");
412/* harmony import */ var _util_json_parser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/json-parser */ "./src/util/json-parser.js");
413/* harmony import */ var _util_form_serializer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/form-serializer */ "./src/util/form-serializer.js");
414
415
416
417
418
419var controller = new _controller__WEBPACK_IMPORTED_MODULE_0__.Controller();
420/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
421  controller: controller,
422  parseJSON: _util_json_parser__WEBPACK_IMPORTED_MODULE_3__.JsonParser.parseJSON,
423  serializeJSON: _util_form_serializer__WEBPACK_IMPORTED_MODULE_4__.FormSerializer.serializeJSON,
424  requestElement: _request_builder__WEBPACK_IMPORTED_MODULE_2__.RequestBuilder.fromElement,
425  start: function start() {
426    controller.start();
427
428    if (window.jQuery) {
429      new _migrate__WEBPACK_IMPORTED_MODULE_1__.Migrate().bind();
430    }
431  },
432  stop: function stop() {
433    controller.stop();
434  }
435});
436
437/***/ }),
438
439/***/ "./src/core/request-builder.js":
440/*!*************************************!*\
441  !*** ./src/core/request-builder.js ***!
442  \*************************************/
443/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
444
445__webpack_require__.r(__webpack_exports__);
446/* harmony export */ __webpack_require__.d(__webpack_exports__, {
447/* harmony export */   "RequestBuilder": () => (/* binding */ RequestBuilder)
448/* harmony export */ });
449/* harmony import */ var _request_namespace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../request/namespace */ "./src/request/namespace.js");
450/* harmony import */ var _util_json_parser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/json-parser */ "./src/util/json-parser.js");
451function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
452
453function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
454
455function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
456
457function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
458
459function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
460
461function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
462
463
464
465var RequestBuilder = /*#__PURE__*/function () {
466  function RequestBuilder(element, handler, options) {
467    _classCallCheck(this, RequestBuilder);
468
469    this.options = options || {};
470    this.ogElement = element;
471    this.element = this.findElement(element);
472
473    if (!this.element) {
474      return _request_namespace__WEBPACK_IMPORTED_MODULE_0__["default"].send(handler, this.options);
475    }
476
477    this.assignAsEval('beforeUpdateFunc', 'requestBeforeUpdate');
478    this.assignAsEval('afterUpdateFunc', 'requestAfterUpdate');
479    this.assignAsEval('successFunc', 'requestSuccess');
480    this.assignAsEval('errorFunc', 'requestError');
481    this.assignAsEval('cancelFunc', 'requestCancel');
482    this.assignAsEval('completeFunc', 'requestComplete');
483    this.assignAsData('progressBar', 'requestProgressBar');
484    this.assignAsData('message', 'requestMessage');
485    this.assignAsData('confirm', 'requestConfirm');
486    this.assignAsData('redirect', 'requestRedirect');
487    this.assignAsData('loading', 'requestLoading');
488    this.assignAsData('form', 'requestForm');
489    this.assignAsData('url', 'requestUrl');
490    this.assignAsData('bulk', 'requestBulk', {
491      emptyAsTrue: true
492    });
493    this.assignAsData('files', 'requestFiles', {
494      emptyAsTrue: true
495    });
496    this.assignAsData('flash', 'requestFlash', {
497      emptyAsTrue: true
498    });
499    this.assignAsData('download', 'requestDownload', {
500      emptyAsTrue: true
501    });
502    this.assignAsData('update', 'requestUpdate', {
503      parseJson: true
504    });
505    this.assignAsData('query', 'requestQuery', {
506      emptyAsTrue: true,
507      parseJson: true
508    });
509    this.assignAsData('browserTarget', 'browserTarget');
510    this.assignAsData('browserValidate', 'browserValidate', {
511      emptyAsTrue: true
512    });
513    this.assignAsData('browserRedirectBack', 'browserRedirectBack', {
514      emptyAsTrue: true
515    });
516    this.assignAsMetaData('update', 'ajaxRequestUpdate', {
517      parseJson: true,
518      mergeValue: true
519    });
520    this.assignRequestData();
521
522    if (!handler) {
523      handler = this.getHandlerName();
524    }
525
526    return _request_namespace__WEBPACK_IMPORTED_MODULE_0__["default"].sendElement(this.element, handler, this.options);
527  }
528
529  _createClass(RequestBuilder, [{
530    key: "findElement",
531    value: // Event target may some random node inside the data-request container
532    // so it should bubble up but also capture the ogElement in case it is
533    // a button that contains data-request-data.
534    function findElement(element) {
535      if (!element || element === document) {
536        return null;
537      }
538
539      if (element.matches('[data-request]')) {
540        return element;
541      }
542
543      var parentEl = element.closest('[data-request]');
544
545      if (parentEl) {
546        return parentEl;
547      }
548
549      return element;
550    }
551  }, {
552    key: "getHandlerName",
553    value: function getHandlerName() {
554      if (this.element.dataset.dataRequest) {
555        return this.element.dataset.dataRequest;
556      }
557
558      return this.element.getAttribute('data-request');
559    }
560  }, {
561    key: "assignAsEval",
562    value: function assignAsEval(optionName, name) {
563      if (this.options[optionName] !== undefined) {
564        return;
565      }
566
567      var attrVal;
568
569      if (this.element.dataset[name]) {
570        attrVal = this.element.dataset[name];
571      } else {
572        attrVal = this.element.getAttribute('data-' + normalizeDataKey(name));
573      }
574
575      if (!attrVal) {
576        return;
577      }
578
579      this.options[optionName] = function (element, data) {
580        return new Function('data', attrVal).apply(element, [data]);
581      };
582    }
583  }, {
584    key: "assignAsData",
585    value: function assignAsData(optionName, name) {
586      var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
587          _ref$parseJson = _ref.parseJson,
588          parseJson = _ref$parseJson === void 0 ? false : _ref$parseJson,
589          _ref$emptyAsTrue = _ref.emptyAsTrue,
590          emptyAsTrue = _ref$emptyAsTrue === void 0 ? false : _ref$emptyAsTrue;
591
592      if (this.options[optionName] !== undefined) {
593        return;
594      }
595
596      var attrVal;
597
598      if (this.element.dataset[name]) {
599        attrVal = this.element.dataset[name];
600      } else {
601        attrVal = this.element.getAttribute('data-' + normalizeDataKey(name));
602      }
603
604      if (attrVal === null) {
605        return;
606      }
607
608      attrVal = this.castAttrToOption(attrVal, emptyAsTrue);
609
610      if (parseJson && typeof attrVal === 'string') {
611        attrVal = _util_json_parser__WEBPACK_IMPORTED_MODULE_1__.JsonParser.paramToObj('data-' + normalizeDataKey(name), attrVal);
612      }
613
614      this.options[optionName] = attrVal;
615    }
616  }, {
617    key: "assignAsMetaData",
618    value: function assignAsMetaData(optionName, name) {
619      var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
620          _ref2$mergeValue = _ref2.mergeValue,
621          mergeValue = _ref2$mergeValue === void 0 ? true : _ref2$mergeValue,
622          _ref2$parseJson = _ref2.parseJson,
623          parseJson = _ref2$parseJson === void 0 ? false : _ref2$parseJson,
624          _ref2$emptyAsTrue = _ref2.emptyAsTrue,
625          emptyAsTrue = _ref2$emptyAsTrue === void 0 ? false : _ref2$emptyAsTrue;
626
627      var meta = document.documentElement.querySelector('head meta[name="' + normalizeDataKey(name) + '"]');
628
629      if (!meta) {
630        return;
631      }
632
633      var attrVal = meta.getAttribute('content');
634
635      if (parseJson) {
636        attrVal = _util_json_parser__WEBPACK_IMPORTED_MODULE_1__.JsonParser.paramToObj(normalizeDataKey(name), attrVal);
637      } else {
638        attrVal = this.castAttrToOption(attrVal, emptyAsTrue);
639      }
640
641      if (mergeValue) {
642        this.options[optionName] = _objectSpread(_objectSpread({}, this.options[optionName] || {}), attrVal);
643      } else {
644        this.options[optionName] = attrVal;
645      }
646    }
647  }, {
648    key: "castAttrToOption",
649    value: function castAttrToOption(val, emptyAsTrue) {
650      if (emptyAsTrue && val === '') {
651        return true;
652      }
653
654      if (val === 'true' || val === '1') {
655        return true;
656      }
657
658      if (val === 'false' || val === '0') {
659        return false;
660      }
661
662      return val;
663    }
664  }, {
665    key: "assignRequestData",
666    value: function assignRequestData() {
667      var data = {};
668
669      if (this.options.data) {
670        Object.assign(data, this.options.data);
671      }
672
673      var attr = this.ogElement.getAttribute('data-request-data');
674
675      if (attr) {
676        Object.assign(data, _util_json_parser__WEBPACK_IMPORTED_MODULE_1__.JsonParser.paramToObj('data-request-data', attr));
677      }
678
679      elementParents(this.ogElement, '[data-request-data]').reverse().forEach(function (el) {
680        Object.assign(data, _util_json_parser__WEBPACK_IMPORTED_MODULE_1__.JsonParser.paramToObj('data-request-data', el.getAttribute('data-request-data')));
681      });
682      this.options.data = data;
683    }
684  }], [{
685    key: "fromElement",
686    value: function fromElement(element, handler, options) {
687      if (typeof element === 'string') {
688        element = document.querySelector(element);
689      }
690
691      return new RequestBuilder(element, handler, options);
692    }
693  }]);
694
695  return RequestBuilder;
696}();
697
698function elementParents(element, selector) {
699  var parents = [];
700
701  if (!element.parentNode) {
702    return parents;
703  }
704
705  var ancestor = element.parentNode.closest(selector);
706
707  while (ancestor) {
708    parents.push(ancestor);
709    ancestor = ancestor.parentNode.closest(selector);
710  }
711
712  return parents;
713}
714
715function normalizeDataKey(key) {
716  return key.replace(/[A-Z]/g, function (chr) {
717    return "-".concat(chr.toLowerCase());
718  });
719}
720
721/***/ }),
722
723/***/ "./src/extras/attach-loader.js":
724/*!*************************************!*\
725  !*** ./src/extras/attach-loader.js ***!
726  \*************************************/
727/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
728
729__webpack_require__.r(__webpack_exports__);
730/* harmony export */ __webpack_require__.d(__webpack_exports__, {
731/* harmony export */   "AttachLoader": () => (/* binding */ AttachLoader)
732/* harmony export */ });
733/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ "./src/util/index.js");
734var _templateObject;
735
736function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
737
738function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
739
740function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
741
742function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
743
744function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
745
746
747var AttachLoader = /*#__PURE__*/function () {
748  function AttachLoader() {
749    _classCallCheck(this, AttachLoader);
750
751    this.stylesheetElement = this.createStylesheetElement();
752  }
753
754  _createClass(AttachLoader, [{
755    key: "show",
756    value: // Public
757    function show(el) {
758      this.installStylesheetElement();
759
760      if (isElementInput(el)) {
761        var loadEl = document.createElement('span');
762        loadEl.className = 'oc-attach-loader is-inline';
763        el.parentNode.insertBefore(loadEl, el.nextSibling); // insertAfter
764      } else {
765        el.classList.add('oc-attach-loader');
766        el.disabled = true;
767      }
768    }
769  }, {
770    key: "hide",
771    value: function hide(el) {
772      if (isElementInput(el)) {
773        if (el.nextElementSibling && el.nextElementSibling.classList.contains('oc-attach-loader')) {
774          el.nextElementSibling.remove();
775        }
776      } else {
777        el.classList.remove('oc-attach-loader');
778        el.disabled = false;
779      }
780    }
781  }, {
782    key: "hideAll",
783    value: function hideAll() {
784      document.querySelectorAll('.oc-attach-loader.is-inline').forEach(function (el) {
785        el.remove();
786      });
787      document.querySelectorAll('.oc-attach-loader').forEach(function (el) {
788        el.classList.remove('oc-attach-loader');
789        el.disabled = false;
790      });
791    }
792  }, {
793    key: "showForm",
794    value: function showForm(el) {
795      if (el.dataset.attachLoading !== undefined) {
796        this.show(el);
797      }
798
799      if (el.matches('form')) {
800        var self = this;
801        el.querySelectorAll('[data-attach-loading][type=submit]').forEach(function (otherEl) {
802          if (!isElementInput(otherEl)) {
803            self.show(otherEl);
804          }
805        });
806      }
807    }
808  }, {
809    key: "hideForm",
810    value: function hideForm(el) {
811      if (el.dataset.attachLoading !== undefined) {
812        this.hide(el);
813      }
814
815      if (el.matches('form')) {
816        var self = this;
817        el.querySelectorAll('[data-attach-loading]').forEach(function (otherEl) {
818          if (!isElementInput(otherEl)) {
819            self.hide(otherEl);
820          }
821        });
822      }
823    } // Private
824
825  }, {
826    key: "installStylesheetElement",
827    value: function installStylesheetElement() {
828      if (!AttachLoader.stylesheetReady) {
829        document.head.insertBefore(this.stylesheetElement, document.head.firstChild);
830        AttachLoader.stylesheetReady = true;
831      }
832    }
833  }, {
834    key: "createStylesheetElement",
835    value: function createStylesheetElement() {
836      var element = document.createElement('style');
837      element.textContent = AttachLoader.defaultCSS;
838      return element;
839    }
840  }], [{
841    key: "defaultCSS",
842    get: function get() {
843      return (0,_util__WEBPACK_IMPORTED_MODULE_0__.unindent)(_templateOb
843ject || (_templateObject = _taggedTemplateLiteral(["\n        .oc-attach-loader:after {\n            content: '';\n            display: inline-block;\n            vertical-align: middle;\n            margin-left: .4em;\n            height: 1em;\n            width: 1em;\n            animation: oc-rotate-loader 0.8s infinite linear;\n            border: .2em solid currentColor;\n            border-right-color: transparent;\n            border-radius: 50%;\n            opacity: .5;\n        }\n        @keyframes oc-rotate-loader {\n            0% { transform: rotate(0deg); }\n            100%  { transform: rotate(360deg); }\n        }\n    "])));
844    }
845  }, {
846    key: "attachLoader",
847    get: function get() {
848      return {
849        show: function show(el) {
850          new AttachLoader().show(resolveElement(el));
851        },
852        hide: function hide(el) {
853          new AttachLoader().hide(resolveElement(el));
854        },
855        hideAll: function hideAll() {
856          new AttachLoader().hideAll();
857        }
858      };
859    }
860  }]);
861
862  return AttachLoader;
863}();
864
865_defineProperty(AttachLoader, "stylesheetReady", false);
866
867function isElementInput(el) {
868  return ['input', 'select', 'textarea'].includes((el.tagName || '').toLowerCase());
869}
870
871function resolveElement(el) {
872  if (typeof el === 'string') {
873    el = document.querySelector(el);
874  }
875
876  if (!el) {
877    throw new Error("Invalid element for attach loader.");
878  }
879
880  return el;
881}
882
883/***/ }),
884
885/***/ "./src/extras/controller.js":
886/*!**********************************!*\
887  !*** ./src/extras/controller.js ***!
888  \**********************************/
889/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
890
891__webpack_require__.r(__webpack_exports__);
892/* harmony export */ __webpack_require__.d(__webpack_exports__, {
893/* harmony export */   "Controller": () => (/* binding */ Controller)
894/* harmony export */ });
895/* harmony import */ var _validator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validator */ "./src/extras/validator.js");
896/* harmony import */ var _attach_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./attach-loader */ "./src/extras/attach-loader.js");
897/* harmony import */ var _flash_message__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./flash-message */ "./src/extras/flash-message.js");
898/* harmony import */ var _util_events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/events */ "./src/util/events.js");
899/* harmony import */ var _util_referrer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/referrer */ "./src/util/referrer.js");
900function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
901
902function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
903
904function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
905
906
907
908
909
910
911var Controller = /*#__PURE__*/function () {
912  function Controller() {
913    var _this = this;
914
915    _classCallCheck(this, Controller);
916
917    this.started = false; // Progress bar default value
918
919    this.enableProgressBar = function (event) {
920      var options = event.detail.context.options;
921
922      if (options.progressBar === null) {
923        options.progressBar = true;
924      }
925    }; // Attach loader
926
927
928    this.showAttachLoader = function (event) {
929      _this.attachLoader.showForm(event.target);
930    };
931
932    this.hideAttachLoader = function (event) {
933      _this.attachLoader.hideForm(event.target);
934    };
935
936    this.hideAllAttachLoaders = function (event) {
937      _this.attachLoader.hideAll();
938    }; // Validator
939
940
941    this.validatorSubmit = function (event) {
942      _this.validator.submit(event.target);
943    };
944
945    this.validatorValidate = function (event) {
946      _this.validator.validate(event.target, event.detail.fields, event.detail.message, shouldShowFlashMessage(event.detail.context.options.flash, 'validate'));
947    }; // Flash message
948
949
950    this.flashMessageBind = function (event) {
951      var options = event.detail.context.options;
952
953      if (options.flash) {
954        options.handleErrorMessage = function (message) {
955          if (message && shouldShowFlashMessage(options.flash, 'error') || shouldShowFlashMessage(options.flash, 'validate')) {
956            _this.flashMessage.show({
957              message: message,
958              type: 'error'
959            });
960          }
961        };
962
963        options.handleFlashMessage = function (message, type) {
964          if (message && shouldShowFlashMessage(options.flash, type)) {
965            _this.flashMessage.show({
966              message: message,
967              type: type
968            });
969          }
970        };
971      }
972
973      var context = event.detail;
974
975      options.handleProgressMessage = function (message, isDone) {
976        if (!isDone) {
977          context.progressMessageId = _this.flashMessage.show({
978            message: message,
979            type: 'loading',
980            interval: 10
981          });
982        } else {
983          _this.flashMessage.show(context.progressMessageId ? {
984            replace: context.progressMessageId
985          } : {
986            hideAll: true
987          });
988
989          context = null;
990        }
991      };
992    };
993
994    this.flashMessageRender = function (event) {
995      _this.flashMessage.render();
996    };
997
998    this.hideAllFlashMessages = function (event) {
999      _this.flashMessage.hideAll();
1000    }; // Browser redirect
1001
1002
1003    this.handleBrowserRedirect = function (event) {
1004      if (event.defaultPrevented) {
1005        return;
1006      }
1007
1008      var href = (0,_util_referrer__WEBPACK_IMPORTED_MODULE_4__.getReferrerUrl)();
1009
1010      if (!href) {
1011        return;
1012      }
1013
1014      event.preventDefault();
1015
1016      if (oc.useTurbo && oc.useTurbo()) {
1017        oc.visit(href);
1018      } else {
1019        location.assign(href);
1020      }
1021    };
1022  }
1023
1024  _createClass(Controller, [{
1025    key: "start",
1026    value: function start() {
1027      if (!this.started) {
1028        // Progress bar
1029        addEventListener('ajax:setup', this.enableProgressBar); // Attach loader
1030
1031        this.attachLoader = new _attach_loader__WEBPACK_IMPORTED_MODULE_1__.AttachLoader();
1032        _util_events__WEBPACK_IMPORTED_MODULE_3__.Events.on(document, 'ajax:promise', 'form, [data-attach-loading]', this.showAttachLoader);
1033        _util_events__WEBPACK_IMPORTED_MODULE_3__.Events.on(document, 'ajax:fail', 'form, [data-attach-loading]', this.hideAttachLoader);
1034        _util_events__WEBPACK_IMPORTED_MODULE_3__.Events.on(document, 'ajax:done', 'form, [data-attach-loading]', this.hideAttachLoader);
1035        addEventListener('page:before-cache', this.hideAllAttachLoaders); // Validator
1036
1037        this.validator = new _validator__WEBPACK_IMPORTED_MODULE_0__.Validator();
1038        _util_events__WEBPACK_IMPORTED_MODULE_3__.Events.on(document, 'ajax:before-validate', '[data-request-validate]', this.validatorValidate);
1039        _util_events__WEBPACK_IMPORTED_MODULE_3__.Events.on(document, 'ajax:promise', '[data-request-validate]', this.validatorSubmit); // Flash message
1040
1041        this.flashMessage = new _flash_message__WEBPACK_IMPORTED_MODULE_2__.FlashMessage();
1042        addEventListener('render', this.flashMessageRender);
1043        addEventListener('ajax:setup', this.flashMessageBind);
1044        addEventListener('page:before-cache', this.hideAllFlashMessages); // Browser redirect
1045
1046        _util_events__WEBPACK_IMPORTED_MODULE_3__.Events.on(document, 'click', '[data-browser-redirect-back]', this.handleBrowserRedirect);
1047        this.started = true;
1048      }
1049    }
1050  }, {
1051    key: "stop",
1052    value: function stop() {
1053      if (this.started) {
1054        // Progress bar
1055        removeEventListener('ajax:setup', this.enableProgressBar); // Attach loader
1056
1057        this.attachLoader = null;
1058        _util_events__WEBPACK_IMPORTED_MODULE_3__.Events.off(document, 'ajax:promise', 'form, [data-attach-loading]', this.showAttachLoader);
1059        _util_events__WEBPACK_IMPORTED_MODULE_3__.Events.off(document, 'ajax:fail', 'form, [data-attach-loading]', this.hideAttachLoader);
1060        _util_events__WEBPACK_IMPORTED_MODULE_3__.Events.off(document, 'ajax:done', 'form, [data-attach-loading]', this.hideAttachLoader);
1061        removeEventListener('page:before-cache', this.hideAllAttachLoaders); // Validator
1062
1063        this.validator = null;
1064        _util_events__WEBPACK_IMPORTED_MODULE_3__.Events.off(document, 'ajax:before-validate', '[data-request-validate]', this.validatorValidate);
1065        _util_events__WEBPACK_IMPORTED_MODULE_3__.Events.off(document, 'ajax:promise', '[data-request-validate]', this.validatorSubmit); // Flash message
1066
1067        this.flashMessage = null;
1068        removeEventListener('render', this.flashMessageRender);
1069        removeEventListener('ajax:setup', this.flashMessageBind);
1070        removeEventListener('page:before-cache', this.hideAllFlashMessages); // Browser redirect
1071
1072        _util_events__WEBPACK_IMPORTED_MODULE_3__.Events.off(document, 'click', '[data-browser-redirect-back]', this.handleBrowserRedirect);
1073        this.started = false;
1074      }
1075    }
1076  }]);
1077
1078  return Controller;
1079}();
1080
1081function shouldShowFlashMessage(value, type) {
1082  // Validation messages are not included by default
1083  if (value === true && type !== 'validate') {
1084    return true;
1085  }
1086
1087  if (typeof value !== 'string') {
1088    return false;
1089  }
1090
1091  if (value === '*') {
1092    return true;
1093  }
1094
1095  var result = false;
1096  value.split(',').forEach(function (validType) {
1097    if (validType.trim() === type) {
1098      result = true;
1099    }
1100  });
1101  return result;
1102}
1103
1104/***/ }),
1105
1106/***/ "./src/extras/flash-message.js":
1107/*!*************************************!*\
1108  !*** ./src/extras/flash-message.js ***!
1109  \*************************************/
1110/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1111
1112__webpack_require__.r(__webpack_exports__);
1113/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1114/* harmony export */   "FlashMessage": () => (/* binding */ FlashMessage)
1115/* harmony export */ });
1116/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ "./src/util/index.js");
1117var _templateObject;
1118
1119function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
1120
1121function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1122
1123function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1124
1125function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1126
1127function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
1128
1129function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
1130
1131function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1132
1133
1134var FlashMessage = /*#__PURE__*/function () {
1135  function FlashMessage() {
1136    _classCallCheck(this, FlashMessage);
1137
1138    this.queue = [];
1139    this.lastUniqueId = 0;
1140    this.displayedMessage = null;
1141    this.stylesheetElement = this.createStylesheetElement();
1142  }
1143
1144  _createClass(FlashMessage, [{
1145    key: "runQueue",
1146    value: function runQueue() {
1147      if (this.displayedMessage) {
1148        return;
1149      }
1150
1151      var options = this.queue.shift();
1152
1153      if (options === undefined) {
1154        return;
1155      }
1156
1157      this.buildFlashMessage(options);
1158    }
1159  }, {
1160    key: "clearQueue",
1161    value: function clearQueue() {
1162      this.queue = [];
1163
1164      if (this.displayedMessage && this.displayedMessage.uniqueId) {
1165        this.hide(this.displayedMessage.uniqueId, true);
1166      }
1167    }
1168  }, {
1169    key: "removeFromQueue",
1170    value: function removeFromQueue(uniqueId) {
1171      for (var index = 0; index < this.queue.length; index++) {
1172        if (this.queue[index].uniqueId == uniqueId) {
1173          this.queue.splice(index, 1);
1174          return;
1175        }
1176      }
1177    }
1178  }, {
1179    key: "show",
1180    value: function show() {
1181      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1182      this.installStylesheetElement();
1183      var _options$message = options.message,
1184          message = _options$message === void 0 ? '' : _options$message,
1185          _options$type = options.type,
1186          type = _options$type === void 0 ? 'info' : _options$type,
1187          _options$replace = options.replace,
1188          replace = _options$replace === void 0 ? null : _options$replace,
1189          _options$hideAll = options.hideAll,
1190          hideAll = _options$hideAll === void 0 ? false : _options$hideAll; // Legacy API
1191
1192      if (options.text) message = options.text;
1193      if (options["class"]) type = options["class"]; // Clear all messages
1194
1195      if (hideAll || type === 'error' || type === 'loading') {
1196        this.clearQueue();
1197      } // Replace or remove a message
1198
1199
1200      if (replace) {
1201        if (this.displayedMessage && replace === this.displayedMessage.uniqueId) {
1202          this.hide(replace, true);
1203        } else {
1204          this.removeFromQueue(replace);
1205        }
1206      } // Nothing to show
1207
1208
1209      if (!message) {
1210        return;
1211      }
1212
1213      var uniqueId = this.makeUniqueId();
1214      this.queue.push(_objectSpread(_objectSpread({}, options), {}, {
1215        uniqueId: uniqueId
1216      }));
1217      this.runQueue();
1218      return uniqueId;
1219    }
1220  }, {
1221    key: "makeUniqueId",
1222    value: function makeUniqueId() {
1223      return ++this.lastUniqueId;
1224    }
1225  }, {
1226    key: "buildFlashMessage",
1227    value: function buildFlashMessage() {
1228      var _this = this;
1229
1230      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1231      var _options$message2 = options.message,
1232          message = _options$message2 === void 0 ? '' : _options$message2,
1233          _options$type2 = options.type,
1234          type = _options$type2 === void 0 ? 'info' : _options$type2,
1235          _options$target = options.target,
1236          target = _options$target === void 0 ? null : _options$target,
1237          _options$interval = options.interval,
1238          interval = _options$interval === void 0 ? 3 : _options$interval; // Legacy API
1239
1240      if (options.text) message = options.text;
1241      if (options["class"]) type = options["class"]; // Idempotence
1242
1243      if (target) {
1244        target.removeAttribute('data-control');
1245      } // Inject element
1246
1247
1248      var flashElement = this.createFlashElement(message, type);
1249      this.createMessagesElement().appendChild(flashElement);
1250      this.displayedMessage = {
1251        uniqueId: options.uniqueId,
1252        element: flashElement,
1253        options: options
1254      }; // Remove logic
1255
1256      var remove = function remove(event) {
1257        clearInterval(timer);
1258        flashElement.removeEventListener('click', pause);
1259        flashElement.removeEventListener('extras:flash-remove', remove);
1260        flashElement.querySelector('.flash-close').removeEventListener('click', remove);
1261        flashElement.classList.remove('flash-show');
1262
1263        if (event && event.detail.isReplace) {
1264          flashElement.remove();
1265          _this.displayedMessage = null;
1266
1267          _this.runQueue();
1268        } else {
1269          setTimeout(function () {
1270            flashElement.remove();
1271            _this.displayedMessage = null;
1272
1273            _this.runQueue();
1274          }, 600);
1275        }
1276      }; // Pause logic
1277
1278
1279      var pause = function pause() {
1280        clearInterval(timer);
1281      }; // Events
1282
1283
1284      flashElement.addEventListener('click', pause, {
1285        once: true
1286      });
1287      flashElement.addEventListener('extras:flash-remove', remove, {
1288        once: true
1289      });
1290      flashElement.querySelector('.flash-close').addEventListener('click', remove, {
1291        once: true
1292      }); // Timeout
1293
1294      var timer;
1295
1296      if (interval && interval !== 0) {
1297        timer = setTimeout(remove, interval * 1000);
1298      }
1299
1300      setTimeout(function () {
1301        flashElement.classList.add('flash-show');
1302      }, 20);
1303    }
1304  }, {
1305    key: "render",
1306    value: function render() {
1307      var _this2 = this;
1308
1309      document.querySelectorAll('[data-control=flash-message]').forEach(function (el) {
1310        _this2.show(_objectSpread(_objectSpread({}, el.dataset), {}, {
1311          target: el,
1312          message: el.innerHTML
1313        }));
1314
1315        el.remove();
1316      });
1317    }
1318  }, {
1319    key: "hide",
1320    value: function hide(uniqueId, isReplace) {
1321      if (this.displayedMessage && uniqueId === this.displayedMessage.uniqueId) {
1322        this.displayedMessage.element.dispatchEvent(new CustomEvent('extras:flash-remove', {
1323          detail: {
1324            isReplace: isReplace
1325          }
1326        }));
1327      }
1328    }
1329  }, {
1330    key: "hideAll",
1331    value: function hideAll() {
1332      this.clearQueue();
1333      this.displayedMessage = null;
1334      document.querySelectorAll('.oc-flash-message, [data-control=flash-message]').forEach(function (el) {
1335        el.remove();
1336      });
1337    }
1338  }, {
1339    key: "createFlashElement",
1340    value: function createFlashElement(message, type) {
1341      var element = document.createElement('div');
1342      var loadingHtml = type === 'loading' ? '<span class="flash-loader"></span>' : '';
1343      var closeHtml = '<a class="flash-close"></a>';
1344      element.className = 'oc-flash-message ' + type;
1345      element.innerHTML = loadingHtml + '<span class="flash-message">' + message + '</span>' + closeHtml;
1346      return element;
1347    } // Private
1348
1349  }, {
1350    key: "installStylesheetElement",
1351    value: function installStylesheetElement() {
1352      if (!FlashMessage.stylesheetReady) {
1353        document.head.insertBefore(this.stylesheetElement, document.head.firstChild);
1354        FlashMessage.stylesheetReady = true;
1355      }
1356    }
1357  }, {
1358    key: "createStylesheetElement",
1359    value: function createStylesheetElement() {
1360      var element = document.createElement('style');
1361      element.textContent = FlashMessage.defaultCSS;
1362      return element;
1363    }
1364  }, {
1365    key: "createMessagesElement",
1366    value: function createMessagesElement() {
1367      var found = document.querySelector('.oc-flash-messages');
1368
1369      if (found) {
1370        return found;
1371      }
1372
1373      var element = document.createElement('div');
1374      element.className = 'oc-flash-messages';
1375      document.body.appendChild(element);
1376      return element;
1377    }
1378  }], [{
1379    key: "defaultCSS",
1380    get: function get() {
1381      return (0,_util__WEBPACK_IMPORTED_MODULE_0__.unindent)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n        .oc-flash-message {\n            display: flex;\n            position: fixed;\n            z-index: 10300;\n            width: 500px;\n            left: 50%;\n            top: 50px;\n            margin-left: -250px;\n            color: #fff;\n            font-size: 1rem;\n            padding: 10px 15px;\n            border-radius: 5px;\n            opacity: 0;\n            transition: all 0.5s, width 0s;\n            transform: scale(0.9);\n        }\n        @media (max-width: 768px) {\n            .oc-flash-message {\n                left: 1rem;\n                right: 1rem;\n                top: 1rem;\n                margin-left: 0;\n                width: auto;\n            }\n        }\n        .oc-flash-message.flash-show {\n            opacity: 1;\n            transform: scale(1);\n        }\n        .oc-flash-message.loading {\n            transition: opacity 0.2s;\n            transform: scale(1);\n        }\n        .oc-flash-message.success {\n            background: #86cb43;\n        }\n        .oc-flash-message.error {\n            background: #cc3300;\n        }\n        .oc-flash-message.warning {\n            background: #f0ad4e;\n        }\n        .oc-flash-message.info, .oc-flash-message.loading {\n            background: #5fb6f5;\n        }\n        .oc-flash-message span.flash-message {\n            flex-grow: 1;\n        }\n        .oc-flash-message a.flash-close {\n            box-sizing: content-box;\n            width: 1em;\n            height: 1em;\n            padding: .25em .25em;\n            background: transparent url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23FFF'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e\") center/1em auto 
1381no-repeat;\n            border: 0;\n            border-radius: .25rem;\n            opacity: .5;\n            text-decoration: none;\n            cursor: pointer;\n        }\n        .oc-flash-message a.flash-close:hover,\n        .oc-flash-message a.flash-close:focus {\n            opacity: 1;\n        }\n        .oc-flash-message.loading a.flash-close {\n            display: none;\n        }\n        .oc-flash-message span.flash-loader {\n            margin-right: 1em;\n        }\n        .oc-flash-message span.flash-loader:after {\n            position: relative;\n            top: 2px;\n            content: '';\n            display: inline-block;\n            height: 1.2em;\n            width: 1.2em;\n            animation: oc-flash-loader 0.8s infinite linear;\n            border: .2em solid currentColor;\n            border-right-color: transparent;\n            border-radius: 50%;\n            opacity: .5;\n        }\n        html[data-turbo-preview] .oc-flash-message {\n            opacity: 0;\n        }\n        @keyframes oc-flash-loader {\n            0% { transform: rotate(0deg); }\n            100%  { transform: rotate(360deg); }\n        }\n    "])));
1382    }
1383  }, {
1384    key: "flashMsg",
1385    value: function flashMsg(options) {
1386      return getOrCreateInstance().show(options);
1387    }
1388  }]);
1389
1390  return FlashMessage;
1391}();
1392
1393_defineProperty(FlashMessage, "instance", null);
1394
1395_defineProperty(FlashMessage, "stylesheetReady", false);
1396
1397function getOrCreateInstance() {
1398  if (!FlashMessage.instance) {
1399    FlashMessage.instance = new FlashMessage();
1400  }
1401
1402  return FlashMessage.instance;
1403}
1404
1405/***/ }),
1406
1407/***/ "./src/extras/index.js":
1408/*!*****************************!*\
1409  !*** ./src/extras/index.js ***!
1410  \*****************************/
1411/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1412
1413__webpack_require__.r(__webpack_exports__);
1414/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1415/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1416/* harmony export */ });
1417/* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./namespace */ "./src/extras/namespace.js");
1418function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
1419
1420
1421/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_namespace__WEBPACK_IMPORTED_MODULE_0__["default"]);
1422
1423if (!window.oc) {
1424  window.oc = {};
1425}
1426
1427if (!window.oc.AjaxExtras) {
1428  // Namespace
1429  window.oc.AjaxExtras = _namespace__WEBPACK_IMPORTED_MODULE_0__["default"]; // Flash messages
1430
1431  window.oc.flashMsg = _namespace__WEBPACK_IMPORTED_MODULE_0__["default"].flashMsg; // Progress bar
1432
1433  window.oc.progressBar = _namespace__WEBPACK_IMPORTED_MODULE_0__["default"].progressBar; // Attach loader
1434
1435  window.oc.attachLoader = _namespace__WEBPACK_IMPORTED_MODULE_0__["default"].attachLoader; // Boot controller
1436
1437  if (!isAMD() && !isCommonJS()) {
1438    _namespace__WEBPACK_IMPORTED_MODULE_0__["default"].start();
1439  }
1440}
1441
1442function isAMD() {
1443  return typeof define == "function" && __webpack_require__.amdO;
1444}
1445
1446function isCommonJS() {
1447  return (typeof exports === "undefined" ? "undefined" : _typeof(exports)) == "object" && "object" != "undefined";
1448}
1449
1450/***/ }),
1451
1452/***/ "./src/extras/migrate.js":
1453/*!*******************************!*\
1454  !*** ./src/extras/migrate.js ***!
1455  \*******************************/
1456/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1457
1458__webpack_require__.r(__webpack_exports__);
1459/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1460/* harmony export */   "Migrate": () => (/* binding */ Migrate)
1461/* harmony export */ });
1462function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1463
1464function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
1465
1466function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
1467
1468var Migrate = /*#__PURE__*/function () {
1469  function Migrate() {
1470    _classCallCheck(this, Migrate);
1471  }
1472
1473  _createClass(Migrate, [{
1474    key: "bind",
1475    value: function bind() {
1476      if ($.oc === undefined) {
1477        $.oc = {};
1478      }
1479
1480      $.oc.flashMsg = window.oc.flashMsg;
1481      $.oc.stripeLoadIndicator = window.oc.progressBar;
1482    }
1483  }]);
1484
1485  return Migrate;
1486}();
1487
1488/***/ }),
1489
1490/***/ "./src/extras/namespace.js":
1491/*!*********************************!*\
1492  !*** ./src/extras/namespace.js ***!
1493  \*********************************/
1494/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1495
1496__webpack_require__.r(__webpack_exports__);
1497/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1498/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1499/* harmony export */ });
1500/* harmony import */ var _controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./controller */ "./src/extras/controller.js");
1501/* harmony import */ var _migrate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./migrate */ "./src/extras/migrate.js");
1502/* harmony import */ var _flash_message__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./flash-message */ "./src/extras/flash-message.js");
1503/* harmony import */ var _progress_bar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./progress-bar */ "./src/extras/progress-bar.js");
1504/* harmony import */ var _attach_loader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./attach-loader */ "./src/extras/attach-loader.js");
1505
1506
1507
1508
1509
1510var controller = new _controller__WEBPACK_IMPORTED_MODULE_0__.Controller();
1511/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
1512  controller: controller,
1513  flashMsg: _flash_message__WEBPACK_IMPORTED_MODULE_2__.FlashMessage.flashMsg,
1514  progressBar: _progress_bar__WEBPACK_IMPORTED_MODULE_3__.ProgressBar.progressBar,
1515  attachLoader: _attach_loader__WEBPACK_IMPORTED_MODULE_4__.AttachLoader.attachLoader,
1516  start: function start() {
1517    controller.start();
1518
1519    if (window.jQuery) {
1520      new _migrate__WEBPACK_IMPORTED_MODULE_1__.Migrate().bind();
1521    }
1522  },
1523  stop: function stop() {
1524    controller.stop();
1525  }
1526});
1527
1528/***/ }),
1529
1530/***/ "./src/extras/progress-bar.js":
1531/*!************************************!*\
1532  !*** ./src/extras/progress-bar.js ***!
1533  \************************************/
1534/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1535
1536__webpack_require__.r(__webpack_exports__);
1537/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1538/* harmony export */   "ProgressBar": () => (/* binding */ ProgressBar)
1539/* harmony export */ });
1540/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ "./src/util/index.js");
1541var _templateObject;
1542
1543function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
1544
1545function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1546
1547function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
1548
1549function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
1550
1551function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1552
1553
1554var ProgressBar = /*#__PURE__*/function () {
1555  function ProgressBar() {
1556    var _this = this;
1557
1558    _classCallCheck(this, ProgressBar);
1559
1560    this.stylesheetElement = this.createStylesheetElement();
1561    this.progressElement = this.createProgressElement();
1562    this.hiding = false;
1563    this.value = 0;
1564    this.visible = false;
1565
1566    this.trickle = function () {
1567      _this.setValue(_this.value + Math.random() / 100);
1568    };
1569  }
1570
1571  _createClass(ProgressBar, [{
1572    key: "show",
1573    value: function show() {
1574      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1575
1576      if (options.cssClass) {
1577        this.progressElement.classList.add(options.cssClass);
1578      }
1579
1580      if (!this.visible) {
1581        this.visible = true;
1582        this.installStylesheetElement();
1583        this.installProgressElement();
1584        this.startTrickling();
1585      }
1586    }
1587  }, {
1588    key: "hide",
1589    value: function hide() {
1590      var _this2 = this;
1591
1592      if (this.visible && !this.hiding) {
1593        this.hiding = true;
1594        this.fadeProgressElement(function () {
1595          _this2.uninstallProgressElement();
1596
1597          _this2.stopTrickling();
1598
1599          _this2.visible = false;
1600          _this2.hiding = false;
1601        });
1602      }
1603    }
1604  }, {
1605    key: "setValue",
1606    value: function setValue(value) {
1607      this.value = value;
1608      this.refresh();
1609    } // Private
1610
1611  }, {
1612    key: "installStylesheetElement",
1613    value: function installStylesheetElement() {
1614      if (!ProgressBar.stylesheetReady) {
1615        document.head.insertBefore(this.stylesheetElement, document.head.firstChild);
1616        ProgressBar.stylesheetReady = true;
1617      }
1618    }
1619  }, {
1620    key: "installProgressElement",
1621    value: function installProgressElement() {
1622      this.progressElement.style.width = "0";
1623      this.progressElement.style.opacity = "1";
1624      document.documentElement.insertBefore(this.progressElement, document.body);
1625      this.refresh();
1626    }
1627  }, {
1628    key: "fadeProgressElement",
1629    value: function fadeProgressElement(callback) {
1630      this.progressElement.style.opacity = "0";
1631      setTimeout(callback, ProgressBar.animationDuration * 1.5);
1632    }
1633  }, {
1634    key: "uninstallProgressElement",
1635    value: function uninstallProgressElement() {
1636      if (this.progressElement.parentNode) {
1637        document.documentElement.removeChild(this.progressElement);
1638      }
1639    }
1640  }, {
1641    key: "startTrickling",
1642    value: function startTrickling() {
1643      if (!this.trickleInterval) {
1644        this.trickleInterval = setInterval(this.trickle, ProgressBar.animationDuration);
1645      }
1646    }
1647  }, {
1648    key: "stopTrickling",
1649    value: function stopTrickling() {
1650      clearInterval(this.trickleInterval);
1651      delete this.trickleInterval;
1652    }
1653  }, {
1654    key: "refresh",
1655    value: function refresh() {
1656      var _this3 = this;
1657
1658      requestAnimationFrame(function () {
1659        _this3.progressElement.style.width = "".concat(10 + _this3.value * 90, "%");
1660      });
1661    }
1662  }, {
1663    key: "createStylesheetElement",
1664    value: function createStylesheetElement() {
1665      var element = document.createElement('style');
1666      element.textContent = ProgressBar.defaultCSS;
1667      return element;
1668    }
1669  }, {
1670    key: "createProgressElement",
1671    value: function createProgressElement() {
1672      var element = document.createElement('div');
1673      element.className = 'oc-progress-bar';
1674      return element;
1675    }
1676  }], [{
1677    key: "defaultCSS",
1678    get: function get() {
1679      return (0,_util__WEBPACK_IMPORTED_MODULE_0__.unindent)(_templateOb
1679ject || (_templateObject = _taggedTemplateLiteral(["\n        .oc-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 ", "ms ease-out,\n                opacity ", "ms ", "ms ease-in;\n            transform: translate3d(0, 0, 0);\n        }\n    "])), ProgressBar.animationDuration, ProgressBar.animationDuration / 2, ProgressBar.animationDuration / 2);
1680    }
1681  }, {
1682    key: "progressBar",
1683    get: function get() {
1684      return {
1685        show: function show() {
1686          var instance = getOrCreateInstance();
1687          instance.setValue(0);
1688          instance.show();
1689        },
1690        hide: function hide() {
1691          var instance = getOrCreateInstance();
1692          instance.setValue(100);
1693          instance.hide();
1694        }
1695      };
1696    }
1697  }]);
1698
1699  return ProgressBar;
1700}();
1701
1702_defineProperty(ProgressBar, "instance", null);
1703
1704_defineProperty(ProgressBar, "stylesheetReady", false);
1705
1706_defineProperty(ProgressBar, "animationDuration", 300);
1707
1708function getOrCreateInstance() {
1709  if (!ProgressBar.instance) {
1710    ProgressBar.instance = new ProgressBar();
1711  }
1712
1713  return ProgressBar.instance;
1714}
1715
1716/***/ }),
1717
1718/***/ "./src/extras/validator.js":
1719/*!*********************************!*\
1720  !*** ./src/extras/validator.js ***!
1721  \*********************************/
1722/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1723
1724__webpack_require__.r(__webpack_exports__);
1725/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1726/* harmony export */   "Validator": () => (/* binding */ Validator)
1727/* harmony export */ });
1728/* harmony import */ var _util_events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/events */ "./src/util/events.js");
1729function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
1730
1731function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1732
1733function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
1734
1735function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
1736
1737function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
1738
1739function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
1740
1741function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1742
1743function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
1744
1745function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
1746
1747
1748var Validator = /*#__PURE__*/function () {
1749  function Validator() {
1750    _classCallCheck(this, Validator);
1751  }
1752
1753  _createClass(Validator, [{
1754    key: "submit",
1755    value: function submit(el) {
1756      var form = el.closest('form');
1757
1758      if (!form) {
1759        return;
1760      }
1761
1762      form.querySelectorAll('[data-validate-for]').forEach(function (el) {
1763        el.classList.remove('oc-visible');
1764      });
1765      form.querySelectorAll('[data-validate-error]').forEach(function (el) {
1766        el.classList.remove('oc-visible');
1767      });
1768    }
1769  }, {
1770    key: "validate",
1771    value: function validate(el, fields, errorMsg, allowDefault) {
1772      var form = el.closest('form'),
1773          messages = [];
1774
1775      if (!form) {
1776        return;
1777      }
1778
1779      for (var fieldName in fields) {
1780        // Build messages
1781        var fieldMessages = fields[fieldName];
1782        messages = [].concat(_toConsumableArray(messages), _toConsumableArray(fieldMessages)); // Display message next to field
1783
1784        var field = form.querySelector('[data-validate-for="' + fieldName + '"]');
1785
1786        if (field) {
1787          if (!field.innerHTML || field.dataset.emptyMode) {
1788            field.dataset.emptyMode = true;
1789            field.innerHTML = fieldMessages.join(', ');
1790          }
1791
1792          field.classList.add('oc-visible');
1793        }
1794      }
1795
1796      var container = form.querySelector('[data-validate-error]');
1797
1798      if (container) {
1799        container.classList.add('oc-visible'); // Messages found inside the container
1800
1801        var oldMessages = container.querySelectorAll('[data-message]');
1802
1803        if (oldMessages.length > 0) {
1804          var clone = oldMessages[0];
1805          messages.forEach(function (message) {
1806            var newNode = clone.cloneNode(true);
1807            newNode.innerHTML = message; // Insert after
1808
1809            clone.parentNode.insertBefore(newNode, clone.nextSibling);
1810          });
1811          oldMessages.forEach(function (el) {
1812            el.remove();
1813          });
1814        } // Just use the container to set the value
1815        else {
1816          container.innerHTML = errorMsg;
1817        }
1818      } // Flash messages want a pass here
1819
1820
1821      if (allowDefault) {
1822        return;
1823      } // Prevent default error behavior
1824
1825
1826      _util_events__WEBPACK_IMPORTED_MODULE_0__.Events.one(form, 'ajax:request-error', function (event) {
1827        event.preventDefault();
1828      });
1829    }
1830  }]);
1831
1832  return Validator;
1833}();
1834
1835/***/ }),
1836
1837/***/ "./src/observe/application.js":
1838/*!************************************!*\
1839  !*** ./src/observe/application.js ***!
1840  \************************************/
1841/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1842
1843__webpack_require__.r(__webpack_exports__);
1844/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1845/* harmony export */   "Application": () => (/* binding */ Application)
1846/* harmony export */ });
1847/* harmony import */ var _dispatcher__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dispatcher */ "./src/observe/dispatcher.js");
1848/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./src/observe/container.js");
1849/* harmony import */ var _util_wait__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/wait */ "./src/util/wait.js");
1850function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1851
1852function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
1853
1854function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
1855
1856
1857
1858
1859var Application = /*#__PURE__*/function () {
1860  function Application() {
1861    _classCallCheck(this, Application);
1862
1863    this.started = false;
1864    this.element = document.documentElement;
1865    this.dispatcher = new _dispatcher__WEBPACK_IMPORTED_MODULE_0__.Dispatcher(this);
1866    this.container = new _container__WEBPACK_IMPORTED_MODULE_1__.Container(this);
1867  }
1868
1869  _createClass(Application, [{
1870    key: "startAsync",
1871    value: function startAsync() {
1872      var _this = this;
1873
1874      (0,_util_wait__WEBPACK_IMPORTED_MODULE_2__.domReady)().then(function () {
1875        _this.start();
1876      });
1877    }
1878  }, {
1879    key: "start",
1880    value: function start() {
1881      if (!this.started) {
1882        this.started = true;
1883        this.dispatcher.start();
1884        this.container.start();
1885      }
1886    }
1887  }, {
1888    key: "stop",
1889    value: function stop() {
1890      if (this.started) {
1891        this.dispatcher.stop();
1892        this.container.stop();
1893        this.started = false;
1894      }
1895    }
1896  }, {
1897    key: "register",
1898    value: function register(identifier, controlConstructor) {
1899      this.load({
1900        identifier: identifier,
1901        controlConstructor: controlConstructor
1902      });
1903    }
1904  }, {
1905    key: "observe",
1906    value: function observe(element, identifier) {
1907      var observer = this.container.scopeObserver;
1908      observer.elementMatchedValue(element, observer.parseValueForToken({
1909        element: element,
1910        content: identifier
1911      }));
1912      var foundControl = this.getControlForElementAndIdentifier(element, identifier);
1913
1914      if (!element.matches("[data-control~=\"".concat(identifier, "\"]"))) {
1915        element.dataset.control = ((element.dataset.control || '') + ' ' + identifier).trim();
1916      }
1917
1918      return foundControl;
1919    }
1920  }, {
1921    key: "import",
1922    value: function _import(identifier) {
1923      var module = this.container.getModuleForIdentifier(identifier);
1924
1925      if (!module) {
1926        throw new Error("Control is not registered [".concat(identifier, "]"));
1927      }
1928
1929      return module.controlConstructor;
1930    }
1931  }, {
1932    key: "fetch",
1933    value: function fetch(element, identifier) {
1934      if (typeof element === 'string') {
1935        element = document.querySelector(element);
1936      }
1937
1938      if (!identifier) {
1939        identifier = element.dataset.control;
1940      }
1941
1942      return element ? this.getControlForElementAndIdentifier(element, identifier) : null;
1943    }
1944  }, {
1945    key: "fetchAll",
1946    value: function fetchAll(elements, identifier) {
1947      var _this2 = this;
1948
1949      if (typeof elements === 'string') {
1950        elements = document.querySelectorAll(elements);
1951      }
1952
1953      var result = [];
1954      elements.forEach(function (element) {
1955        var control = _this2.fetch(element, identifier);
1956
1957        if (control) {
1958          result.push(control);
1959        }
1960      });
1961      return result;
1962    }
1963  }, {
1964    key: "load",
1965    value: function load(head) {
1966      var _this3 = this;
1967
1968      for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1969        rest[_key - 1] = arguments[_key];
1970      }
1971
1972      var definitions = Array.isArray(head) ? head : [head].concat(rest);
1973      definitions.forEach(function (definition) {
1974        if (definition.controlConstructor.shouldLoad) {
1975          _this3.container.loadDefinition(definition);
1976        }
1977      });
1978    }
1979  }, {
1980    key: "unload",
1981    value: function unload(head) {
1982      var _this4 = this;
1983
1984      for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
1985        rest[_key2 - 1] = arguments[_key2];
1986      }
1987
1988      var identifiers = Array.isArray(head) ? head : [head].concat(rest);
1989      identifiers.forEach(function (identifier) {
1990        return _this4.container.unloadIdentifier(identifier);
1991      });
1992    } // Controls
1993
1994  }, {
1995    key: "controls",
1996    get: function get() {
1997      return this.container.contexts.map(function (context) {
1998        return context.control;
1999      });
2000    }
2001  }, {
2002    key: "getControlForElementAndIdentifier",
2003    value: function getControlForElementAndIdentifier(element, identifier) {
2004      var context = this.container.getContextForElementAndIdentifier(element, identifier);
2005      return context ? context.control : null;
2006    } // Error handling
2007
2008  }, {
2009    key: "handleError",
2010    value: function handleError(error, message, detail) {
2011      var _a;
2012
2013      console.error("%s\n\n%o\n\n%o", message, error, detail);
2014      (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, "", 0, 0, error);
2015    }
2016  }]);
2017
2018  return Application;
2019}();
2020
2021/***/ }),
2022
2023/***/ "./src/observe/container.js":
2024/*!**********************************!*\
2025  !*** ./src/observe/container.js ***!
2026  \**********************************/
2027/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2028
2029__webpack_require__.r(__webpack_exports__);
2030/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2031/* harmony export */   "Container": () => (/* binding */ Container)
2032/* harmony export */ });
2033/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./module */ "./src/observe/module.js");
2034/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scope */ "./src/observe/scope.js");
2035/* harmony import */ var _scope_observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scope-observer */ "./src/observe/scope-observer.js");
2036/* harmony import */ var _util_multimap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/multimap */ "./src/observe/util/multimap.js");
2037function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2038
2039function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
2040
2041function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
2042
2043
2044
2045
2046
2047var Container = /*#__PURE__*/function () {
2048  function Container(application) {
2049    _classCallCheck(this, Container);
2050
2051    this.application = application;
2052    this.scopeObserver = new _scope_observer__WEBPACK_IMPORTED_MODULE_2__.ScopeObserver(this.element, this);
2053    this.scopesByIdentifier = new _util_multimap__WEBPACK_IMPORTED_MODULE_3__.Multimap();
2054    this.modulesByIdentifier = new Map();
2055  }
2056
2057  _createClass(Container, [{
2058    key: "element",
2059    get: function get() {
2060      return this.application.element;
2061    }
2062  }, {
2063    key: "modules",
2064    get: function get() {
2065      return Array.from(this.modulesByIdentifier.values());
2066    }
2067  }, {
2068    key: "contexts",
2069    get: function get() {
2070      return this.modules.reduce(function (contexts, module) {
2071        return contexts.concat(module.contexts);
2072      }, []);
2073    }
2074  }, {
2075    key: "start",
2076    value: function start() {
2077      this.scopeObserver.start();
2078    }
2079  }, {
2080    key: "stop",
2081    value: function stop() {
2082      this.scopeObserver.stop();
2083    }
2084  }, {
2085    key: "loadDefinition",
2086    value: function loadDefinition(definition) {
2087      this.unloadIdentifier(definition.identifier);
2088      var module = new _module__WEBPACK_IMPORTED_MODULE_0__.Module(this.application, definition);
2089      this.connectModule(module);
2090      var afterLoad = definition.controlConstructor.afterLoad;
2091
2092      if (afterLoad) {
2093        afterLoad.call(definition.controlConstructor, definition.identifier, this.application);
2094      }
2095    }
2096  }, {
2097    key: "unloadIdentifier",
2098    value: function unloadIdentifier(identifier) {
2099      var module = this.modulesByIdentifier.get(identifier);
2100
2101      if (module) {
2102        this.disconnectModule(module);
2103      }
2104    }
2105  }, {
2106    key: "getModuleForIdentifier",
2107    value: function getModuleForIdentifier(identifier) {
2108      return this.modulesByIdentifier.get(identifier);
2109    }
2110  }, {
2111    key: "getContextForElementAndIdentifier",
2112    value: function getContextForElementAndIdentifier(element, identifier) {
2113      var module = this.modulesByIdentifier.get(identifier);
2114
2115      if (module) {
2116        return module.contexts.find(function (context) {
2117          return context.element == element;
2118        });
2119      }
2120    } // Error handler delegate
2121
2122  }, {
2123    key: "handleError",
2124    value: function handleError(error, message, detail) {
2125      this.application.handleError(error, message, detail);
2126    } // Scope observer delegate
2127
2128  }, {
2129    key: "createScopeForElementAndIdentifier",
2130    value: function createScopeForElementAndIdentifier(element, identifier) {
2131      return new _scope__WEBPACK_IMPORTED_MODULE_1__.Scope(element, identifier);
2132    }
2133  }, {
2134    key: "scopeConnected",
2135    value: function scopeConnected(scope) {
2136      this.scopesByIdentifier.add(scope.identifier, scope);
2137      var module = this.modulesByIdentifier.get(scope.identifier);
2138
2139      if (module) {
2140        module.connectContextForScope(scope);
2141      }
2142    }
2143  }, {
2144    key: "scopeDisconnected",
2145    value: function scopeDisconnected(scope) {
2146      this.scopesByIdentifier["delete"](scope.identifier, scope);
2147      var module = this.modulesByIdentifier.get(scope.identifier);
2148
2149      if (module) {
2150        module.disconnectContextForScope(scope);
2151      }
2152    } // Modules
2153
2154  }, {
2155    key: "connectModule",
2156    value: function connectModule(module) {
2157      this.modulesByIdentifier.set(module.identifier, module);
2158      var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);
2159      scopes.forEach(function (scope) {
2160        return module.connectContextForScope(scope);
2161      });
2162    }
2163  }, {
2164    key: "disconnectModule",
2165    value: function disconnectModule(module) {
2166      this.modulesByIdentifier["delete"](module.identifier);
2167      var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);
2168      scopes.forEach(function (scope) {
2169        return module.disconnectContextForScope(scope);
2170      });
2171    }
2172  }]);
2173
2174  return Container;
2175}();
2176
2177/***/ }),
2178
2179/***/ "./src/observe/context.js":
2180/*!********************************!*\
2181  !*** ./src/observe/context.js ***!
2182  \********************************/
2183/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2184
2185__webpack_require__.r(__webpack_exports__);
2186/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2187/* harmony export */   "Context": () => (/* binding */ Context)
2188/* harmony export */ });
2189function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2190
2191function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
2192
2193function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
2194
2195var Context = /*#__PURE__*/function () {
2196  function Context(module, scope) {
2197    _classCallCheck(this, Context);
2198
2199    this.module = module;
2200    this.scope = scope;
2201    this.control = new module.controlConstructor(this);
2202
2203    try {
2204      this.control.initBefore();
2205      this.control.init();
2206      this.control.initAfter();
2207    } catch (error) {
2208      this.handleError(error, 'initializing control');
2209    }
2210  }
2211
2212  _createClass(Context, [{
2213    key: "connect",
2214    value: function connect() {
2215      try {
2216        this.control.connectBefore();
2217        this.control.connect();
2218        this.control.connectAfter();
2219      } catch (error) {
2220        this.handleError(error, 'connecting control');
2221      }
2222    }
2223  }, {
2224    key: "refresh",
2225    value: function refresh() {}
2226  }, {
2227    key: "disconnect",
2228    value: function disconnect() {
2229      try {
2230        this.control.disconnectBefore();
2231        this.control.disconnect();
2232        this.control.disconnectAfter();
2233      } catch (error) {
2234        this.handleError(error, 'disconnecting control');
2235      }
2236    }
2237  }, {
2238    key: "application",
2239    get: function get() {
2240      return this.module.application;
2241    }
2242  }, {
2243    key: "identifier",
2244    get: function get() {
2245      return this.module.identifier;
2246    }
2247  }, {
2248    key: "dispatcher",
2249    get: function get() {
2250      return this.application.dispatcher;
2251    }
2252  }, {
2253    key: "element",
2254    get: function get() {
2255      return this.scope.element;
2256    }
2257  }, {
2258    key: "parentElement",
2259    get: function get() {
2260      return this.element.parentElement;
2261    } // Error handling
2262
2263  }, {
2264    key: "handleError",
2265    value: function handleError(error, message) {
2266      var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
2267      var identifier = this.identifier,
2268          control = this.control,
2269          element = this.element;
2270      detail = Object.assign({
2271        identifier: identifier,
2272        control: control,
2273        element: element
2274      }, detail);
2275      this.application.handleError(error, "Error ".concat(message), detail);
2276    }
2277  }]);
2278
2279  return Context;
2280}();
2281
2282/***/ }),
2283
2284/***/ "./src/observe/control-base.js":
2285/*!*************************************!*\
2286  !*** ./src/observe/control-base.js ***!
2287  \*************************************/
2288/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2289
2290__webpack_require__.r(__webpack_exports__);
2291/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2292/* harmony export */   "ControlBase": () => (/* binding */ ControlBase)
2293/* harmony export */ });
2294function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2295
2296function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
2297
2298function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
2299
2300function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
2301
2302function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
2303
2304function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
2305
2306function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2307
2308function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2309
2310function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2311
2312function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
2313
2314function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
2315
2316function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2317
2318var ControlBase = /*#__PURE__*/function () {
2319  function ControlBase(context) {
2320    _classCallCheck(this, ControlBase);
2321
2322    this.context = context;
2323    this.config = _objectSpread({}, context.scope.element.dataset || {});
2324  }
2325
2326  _createClass(ControlBase, [{
2327    key: "application",
2328    get: function get() {
2329      return this.context.application;
2330    }
2331  }, {
2332    key: "scope",
2333    get: function get() {
2334      return this.context.scope;
2335    }
2336  }, {
2337    key: "element",
2338    get: function get() {
2339      return this.scope.element;
2340    }
2341  }, {
2342    key: "identifier",
2343    get: function get() {
2344      return this.scope.identifier;
2345    }
2346  }, {
2347    key: "init",
2348    value: function init() {// Set up initial control state
2349    }
2350  }, {
2351    key: "connect",
2352    value: function connect() {// Control is connected to the DOM
2353    }
2354  }, {
2355    key: "disconnect",
2356    value: function disconnect() {// Control is disconnected from the DOM
2357    } // Internal events avoid the need to call parent logic
2358
2359  }, {
2360    key: "initBefore",
2361    value: function initBefore() {
2362      this.proxiedEvents = {};
2363      this.proxiedMethods = {};
2364    }
2365  }, {
2366    key: "initAfter",
2367    value: function initAfter() {}
2368  }, {
2369    key: "connectBefore",
2370    value: function connectBefore() {}
2371  }, {
2372    key: "connectAfter",
2373    value: function connectAfter() {}
2374  }, {
2375    key: "disconnectBefore",
2376    value: function disconnectBefore() {}
2377  }, {
2378    key: "disconnectAfter",
2379    value: function disconnectAfter() {
2380      for (var key in this.proxiedEvents) {
2381        this.forget.apply(this, _toConsumableArray(this.proxiedEvents[key]));
2382        delete this.proxiedEvents[key];
2383      }
2384
2385      for (var _key in this.proxiedMethods) {
2386        this.proxiedMethods[_key] = undefined;
2387      }
2388    } // Events
2389
2390  }, {
2391    key: "listen",
2392    value: function listen(eventName, targetOrHandler, handlerOrOptions, options) {
2393      if (typeof targetOrHandler === 'string') {
2394        oc.Events.on(this.element, eventName, targetOrHandler, this.proxy(handlerOrOptions), options);
2395      } else if (targetOrHandler instanceof Element) {
2396        oc.Events.on(targetOrHandler, eventName, this.proxy(handlerOrOptions), options);
2397      } else {
2398        oc.Events.on(this.element, eventName, this.proxy(targetOrHandler), handlerOrOptions);
2399      } // Automatic unbinding
2400
2401
2402      ControlBase.proxyCounter++;
2403      this.proxiedEvents[ControlBase.proxyCounter] = arguments;
2404    }
2405  }, {
2406    key: "forget",
2407    value: function forget(eventName, targetOrHandler, handlerOrOptions, options) {
2408      if (typeof targetOrHandler === 'string') {
2409        oc.Events.off(this.element, eventName, targetOrHandler, this.proxy(handlerOrOptions), options);
2410      } else if (targetOrHandler instanceof Element) {
2411        oc.Events.off(targetOrHandler, eventName, this.proxy(handlerOrOptions), options);
2412      } else {
2413        oc.Events.off(this.element, eventName, this.proxy(targetOrHandler), handlerOrOptions);
2414      } // Fills JS gap
2415
2416
2417      var compareArrays = function compareArrays(a, b) {
2418        if (a.length === b.length) {
2419          for (var i = 0; i < a.length; i++) {
2420            if (a[i] === b[i]) {
2421              return true;
2422            }
2423          }
2424        }
2425
2426        return false;
2427      }; // Seeking GC
2428
2429
2430      for (var key in this.proxiedEvents) {
2431        if (compareArrays(arguments, this.proxiedEvents[key])) {
2432          delete this.proxiedEvents[key];
2433        }
2434      }
2435    }
2436  }, {
2437    key: "dispatch",
2438    value: function dispatch(eventName) {
2439      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
2440          _ref$target = _ref.target,
2441          target = _ref$target === void 0 ? this.element : _ref$target,
2442          _ref$detail = _ref.detail,
2443          detail = _ref$detail === void 0 ? {} : _ref$detail,
2444          _ref$prefix = _ref.prefix,
2445          prefix = _ref$prefix === void 0 ? this.identifier : _ref$prefix,
2446          _ref$bubbles = _ref.bubbles,
2447          bubbles = _ref$bubbles === void 0 ? true : _ref$bubbles,
2448          _ref$cancelable = _ref.cancelable,
2449          cancelable = _ref$cancelable === void 0 ? true : _ref$cancelable;
2450
2451      var type = prefix ? "".concat(prefix, ":").concat(eventName) : eventName;
2452      var event = new CustomEvent(type, {
2453        detail: detail,
2454        bubbles: bubbles,
2455        cancelable: cancelable
2456      });
2457      target.dispatchEvent(event);
2458      return event;
2459    }
2460  }, {
2461    key: "proxy",
2462    value: function proxy(method) {
2463      if (method.ocProxyId === undefined) {
2464        ControlBase.proxyCounter++;
2465        method.ocProxyId = ControlBase.proxyCounter;
2466      }
2467
2468      if (this.proxiedMethods[method.ocProxyId] !== undefined) {
2469        return this.proxiedMethods[method.ocProxyId];
2470      }
2471
2472      this.proxiedMethods[method.ocProxyId] = method.bind(this);
2473      return this.proxiedMethods[method.ocProxyId];
2474    }
2475  }], [{
2476    key: "shouldLoad",
2477    get: function get() {
2478      return true;
2479    }
2480  }, {
2481    key: "afterLoad",
2482    value: function afterLoad(_identifier, _application) {
2483      return;
2484    }
2485  }]);
2486
2487  return ControlBase;
2488}();
2489
2490_defineProperty(ControlBase, "proxyCounter", 0);
2491
2492
2493
2494/***/ }),
2495
2496/***/ "./src/observe/dispatcher.js":
2497/*!***********************************!*\
2498  !*** ./src/observe/dispatcher.js ***!
2499  \***********************************/
2500/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2501
2502__webpack_require__.r(__webpack_exports__);
2503/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2504/* harmony export */   "Dispatcher": () => (/* binding */ Dispatcher)
2505/* harmony export */ });
2506/* harmony import */ var _event_listener__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./event-listener */ "./src/observe/event-listener.js");
2507function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2508
2509function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
2510
2511function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
2512
2513
2514var Dispatcher = /*#__PURE__*/function () {
2515  function Dispatcher(application) {
2516    _classCallCheck(this, Dispatcher);
2517
2518    this.application = application;
2519    this.eventListenerMaps = new Map();
2520    this.started = false;
2521  }
2522
2523  _createClass(Dispatcher, [{
2524    key: "start",
2525    value: function start() {
2526      if (!this.started) {
2527        this.started = true;
2528        this.eventListeners.forEach(function (eventListener) {
2529          return eventListener.connect();
2530        });
2531      }
2532    }
2533  }, {
2534    key: "stop",
2535    value: function stop() {
2536      if (this.started) {
2537        this.started = false;
2538        this.eventListeners.forEach(function (eventListener) {
2539          return eventListener.disconnect();
2540        });
2541      }
2542    }
2543  }, {
2544    key: "eventListeners",
2545    get: function get() {
2546      return Array.from(this.eventListenerMaps.values()).reduce(function (listeners, map) {
2547        return listeners.concat(Array.from(map.values()));
2548      }, []);
2549    } // Binding observer delegate
2550
2551  }, {
2552    key: "bindingConnected",
2553    value: function bindingConnected(binding) {
2554      this.fetchEventListenerForBinding(binding).bindingConnected(binding);
2555    }
2556  }, {
2557    key: "bindingDisconnected",
2558    value: function bindingDisconnected(binding) {
2559      var clearEventListeners = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
2560      this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);
2561      if (clearEventListeners) this.clearEventListenersForBinding(binding);
2562    } // Error handling
2563
2564  }, {
2565    key: "handleError",
2566    value: function handleError(error, message) {
2567      var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
2568      this.application.handleError(error, "Error ".concat(message), detail);
2569    }
2570  }, {
2571    key: "clearEventListenersForBinding",
2572    value: function clearEventListenersForBinding(binding) {
2573      var eventListener = this.fetchEventListenerForBinding(binding);
2574
2575      if (!eventListener.hasBindings()) {
2576        eventListener.disconnect();
2577        this.removeMappedEventListenerFor(binding);
2578      }
2579    }
2580  }, {
2581    key: "removeMappedEventListenerFor",
2582    value: function removeMappedEventListenerFor(binding) {
2583      var eventTarget = binding.eventTarget,
2584          eventName = binding.eventName,
2585          eventOptions = binding.eventOptions;
2586      var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);
2587      var cacheKey = this.cacheKey(eventName, eventOptions);
2588      eventListenerMap["delete"](cacheKey);
2589
2590      if (eventListenerMap.size == 0) {
2591        this.eventListenerMaps["delete"](eventTarget);
2592      }
2593    }
2594  }, {
2595    key: "fetchEventListenerForBinding",
2596    value: function fetchEventListenerForBinding(binding) {
2597      var eventTarget = binding.eventTarget,
2598          eventName = binding.eventName,
2599          eventOptions = binding.eventOptions;
2600      return this.fetchEventListener(eventTarget, eventName, eventOptions);
2601    }
2602  }, {
2603    key: "fetchEventListener",
2604    value: function fetchEventListener(eventTarget, eventName, eventOptions) {
2605      var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);
2606      var cacheKey = this.cacheKey(eventName, eventOptions);
2607      var eventListener = eventListenerMap.get(cacheKey);
2608
2609      if (!eventListener) {
2610        eventListener = this.createEventListener(eventTarget, eventName, eventOptions);
2611        eventListenerMap.set(cacheKey, eventListener);
2612      }
2613
2614      return eventListener;
2615    }
2616  }, {
2617    key: "createEventListener",
2618    value: function createEventListener(eventTarget, eventName, eventOptions) {
2619      var eventListener = new _event_listener__WEBPACK_IMPORTED_MODULE_0__.EventListener(eventTarget, eventName, eventOptions);
2620
2621      if (this.started) {
2622        eventListener.connect();
2623      }
2624
2625      return eventListener;
2626    }
2627  }, {
2628    key: "fetchEventListenerMapForEventTarget",
2629    value: function fetchEventListenerMapForEventTarget(eventTarget) {
2630      var eventListenerMap = this.eventListenerMaps.get(eventTarget);
2631
2632      if (!eventListenerMap) {
2633        eventListenerMap = new Map();
2634        this.eventListenerMaps.set(eventTarget, eventListenerMap);
2635      }
2636
2637      return eventListenerMap;
2638    }
2639  }, {
2640    key: "cacheKey",
2641    value: function cacheKey(eventName, eventOptions) {
2642      var parts = [eventName];
2643      Object.keys(eventOptions).sort().forEach(function (key) {
2644        parts.push("".concat(eventOptions[key] ? "" : "!").concat(key));
2645      });
2646      return parts.join(":");
2647    }
2648  }]);
2649
2650  return Dispatcher;
2651}();
2652
2653/***/ }),
2654
2655/***/ "./src/observe/event-listener.js":
2656/*!***************************************!*\
2657  !*** ./src/observe/event-listener.js ***!
2658  \***************************************/
2659/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2660
2661__webpack_require__.r(__webpack_exports__);
2662/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2663/* harmony export */   "EventListener": () => (/* binding */ EventListener)
2664/* harmony export */ });
2665function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
2666
2667function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
2668
2669function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
2670
2671function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2672
2673function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
2674
2675function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
2676
2677var EventListener = /*#__PURE__*/function () {
2678  function EventListener(eventTarget, eventName, eventOptions) {
2679    _classCallCheck(this, EventListener);
2680
2681    this.eventTarget = eventTarget;
2682    this.eventName = eventName;
2683    this.eventOptions = eventOptions;
2684    this.unorderedBindings = new Set();
2685  }
2686
2687  _createClass(EventListener, [{
2688    key: "connect",
2689    value: function connect() {
2690      this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);
2691    }
2692  }, {
2693    key: "disconnect",
2694    value: function disconnect() {
2695      this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);
2696    } // Binding observer delegate
2697
2698  }, {
2699    key: "bindingConnected",
2700    value: function bindingConnected(binding) {
2701      this.unorderedBindings.add(binding);
2702    }
2703  }, {
2704    key: "bindingDisconnected",
2705    value: function bindingDisconnected(binding) {
2706      this.unorderedBindings["delete"](binding);
2707    }
2708  }, {
2709    key: "handleEvent",
2710    value: function handleEvent(event) {
2711      var extendedEvent = extendEvent(event);
2712
2713      var _iterator = _createForOfIteratorHelper(this.bindings),
2714          _step;
2715
2716      try {
2717        for (_iterator.s(); !(_step = _iterator.n()).done;) {
2718          var binding = _step.value;
2719
2720          if (extendedEvent.immediatePropagationStopped) {
2721            break;
2722          } else {
2723            binding.handleEvent(extendedEvent);
2724          }
2725        }
2726      } catch (err) {
2727        _iterator.e(err);
2728      } finally {
2729        _iterator.f();
2730      }
2731    }
2732  }, {
2733    key: "hasBindings",
2734    value: function hasBindings() {
2735      return this.unorderedBindings.size > 0;
2736    }
2737  }, {
2738    key: "bindings",
2739    get: function get() {
2740      return Array.from(this.unorderedBindings).sort(function (left, right) {
2741        var leftIndex = left.index,
2742            rightIndex = right.index;
2743        return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;
2744      });
2745    }
2746  }]);
2747
2748  return EventListener;
2749}();
2750
2751function extendEvent(event) {
2752  if ('immediatePropagationStopped' in event) {
2753    return event;
2754  } else {
2755    var _stopImmediatePropagation = event.stopImmediatePropagation;
2756    return Object.assign(event, {
2757      immediatePropagationStopped: false,
2758      stopImmediatePropagation: function stopImmediatePropagation() {
2759        this.immediatePropagationStopped = true;
2760
2761        _stopImmediatePropagation.call(this);
2762      }
2763    });
2764  }
2765}
2766
2767/***/ }),
2768
2769/***/ "./src/observe/index.js":
2770/*!******************************!*\
2771  !*** ./src/observe/index.js ***!
2772  \******************************/
2773/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2774
2775__webpack_require__.r(__webpack_exports__);
2776/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2777/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2778/* harmony export */ });
2779/* harmony import */ var _control_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./control-base */ "./src/observe/control-base.js");
2780/* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./namespace */ "./src/observe/namespace.js");
2781function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2782
2783
2784
2785/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_namespace__WEBPACK_IMPORTED_MODULE_1__["default"]);
2786
2787if (!window.oc) {
2788  window.oc = {};
2789}
2790
2791if (!window.oc.AjaxObserve) {
2792  // Namespace
2793  window.oc.AjaxObserve = _namespace__WEBPACK_IMPORTED_MODULE_1__["default"]; // Control API
2794
2795  window.oc.registerControl = _namespace__WEBPACK_IMPORTED_MODULE_1__["default"].registerControl;
2796  window.oc.importControl = _namespace__WEBPACK_IMPORTED_MODULE_1__["default"].importControl;
2797  window.oc.observeControl = _namespace__WEBPACK_IMPORTED_MODULE_1__["default"].observeControl;
2798  window.oc.fetchControl = _namespace__WEBPACK_IMPORTED_MODULE_1__["default"].fetchControl;
2799  window.oc.fetchControls = _namespace__WEBPACK_IMPORTED_MODULE_1__["default"].fetchControls; // Control base class
2800
2801  window.oc.ControlBase = _control_base__WEBPACK_IMPORTED_MODULE_0__.ControlBase; // Boot controller
2802
2803  if (!isAMD() && !isCommonJS()) {
2804    _namespace__WEBPACK_IMPORTED_MODULE_1__["default"].start();
2805  }
2806}
2807
2808function isAMD() {
2809  return typeof define == "function" && __webpack_require__.amdO;
2810}
2811
2812function isCommonJS() {
2813  return (typeof exports === "undefined" ? "undefined" : _typeof(exports)) == "object" && "object" != "undefined";
2814}
2815
2816/***/ }),
2817
2818/***/ "./src/observe/module.js":
2819/*!*******************************!*\
2820  !*** ./src/observe/module.js ***!
2821  \*******************************/
2822/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2823
2824__webpack_require__.r(__webpack_exports__);
2825/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2826/* harmony export */   "Module": () => (/* binding */ Module)
2827/* harmony export */ });
2828/* harmony import */ var _context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./context */ "./src/observe/context.js");
2829function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2830
2831function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
2832
2833function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
2834
2835
2836var Module = /*#__PURE__*/function () {
2837  function Module(application, definition) {
2838    _classCallCheck(this, Module);
2839
2840    this.application = application;
2841    this.definition = blessDefinition(definition);
2842    this.contextsByScope = new WeakMap();
2843    this.connectedContexts = new Set();
2844  }
2845
2846  _createClass(Module, [{
2847    key: "identifier",
2848    get: function get() {
2849      return this.definition.identifier;
2850    }
2851  }, {
2852    key: "controlConstructor",
2853    get: function get() {
2854      return this.definition.controlConstructor;
2855    }
2856  }, {
2857    key: "contexts",
2858    get: function get() {
2859      return Array.from(this.connectedContexts);
2860    }
2861  }, {
2862    key: "connectContextForScope",
2863    value: function connectContextForScope(scope) {
2864      var context = this.fetchContextForScope(scope);
2865      this.connectedContexts.add(context);
2866      context.connect();
2867    }
2868  }, {
2869    key: "disconnectContextForScope",
2870    value: function disconnectContextForScope(scope) {
2871      var context = this.contextsByScope.get(scope);
2872
2873      if (context) {
2874        this.connectedContexts["delete"](context);
2875        context.disconnect();
2876      }
2877    }
2878  }, {
2879    key: "fetchContextForScope",
2880    value: function fetchContextForScope(scope) {
2881      var context = this.contextsByScope.get(scope);
2882
2883      if (!context) {
2884        context = new _context__WEBPACK_IMPORTED_MODULE_0__.Context(this, scope);
2885        this.contextsByScope.set(scope, context);
2886      }
2887
2888      return context;
2889    }
2890  }]);
2891
2892  return Module;
2893}();
2894
2895function blessDefinition(definition) {
2896  return {
2897    identifier: definition.identifier,
2898    controlConstructor: definition.controlConstructor
2899  };
2900}
2901
2902/***/ }),
2903
2904/***/ "./src/observe/mutation/attribute-observer.js":
2905/*!****************************************************!*\
2906  !*** ./src/observe/mutation/attribute-observer.js ***!
2907  \****************************************************/
2908/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2909
2910__webpack_require__.r(__webpack_exports__);
2911/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2912/* harmony export */   "AttributeObserver": () => (/* binding */ AttributeObserver)
2913/* harmony export */ });
2914/* harmony import */ var _element_observer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element-observer */ "./src/observe/mutation/element-observer.js");
2915function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2916
2917function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
2918
2919function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
2920
2921
2922var AttributeObserver = /*#__PURE__*/function () {
2923  function AttributeObserver(element, attributeName, delegate) {
2924    _classCallCheck(this, AttributeObserver);
2925
2926    this.delegate = delegate;
2927    this.attributeName = attributeName;
2928    this.elementObserver = new _element_observer__WEBPACK_IMPORTED_MODULE_0__.ElementObserver(element, this);
2929  }
2930
2931  _createClass(AttributeObserver, [{
2932    key: "element",
2933    get: function get() {
2934      return this.elementObserver.element;
2935    }
2936  }, {
2937    key: "selector",
2938    get: function get() {
2939      return "[".concat(this.attributeName, "]");
2940    }
2941  }, {
2942    key: "start",
2943    value: function start() {
2944      this.elementObserver.start();
2945    }
2946  }, {
2947    key: "pause",
2948    value: function pause(callback) {
2949      this.elementObserver.pause(callback);
2950    }
2951  }, {
2952    key: "stop",
2953    value: function stop() {
2954      this.elementObserver.stop();
2955    }
2956  }, {
2957    key: "refresh",
2958    value: function refresh() {
2959      this.elementObserver.refresh();
2960    }
2961  }, {
2962    key: "started",
2963    get: function get() {
2964      return this.elementObserver.started;
2965    } // Element observer delegate
2966
2967  }, {
2968    key: "matchElement",
2969    value: function matchElement(element) {
2970      return element.hasAttribute(this.attributeName);
2971    }
2972  }, {
2973    key: "matchElementsInTree",
2974    value: function matchElementsInTree(tree) {
2975      var match = this.matchElement(tree) ? [tree] : [];
2976      var matches = Array.from(tree.querySelectorAll(this.selector));
2977      return match.concat(matches);
2978    }
2979  }, {
2980    key: "elementMatched",
2981    value: function elementMatched(element) {
2982      if (this.delegate.elementMatchedAttribute) {
2983        this.delegate.elementMatchedAttribute(element, this.attributeName);
2984      }
2985    }
2986  }, {
2987    key: "elementUnmatched",
2988    value: function elementUnmatched(element) {
2989      if (this.delegate.elementUnmatchedAttribute) {
2990        this.delegate.elementUnmatchedAttribute(element, this.attributeName);
2991      }
2992    }
2993  }, {
2994    key: "elementAttributeChanged",
2995    value: function elementAttributeChanged(element, attributeName) {
2996      if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {
2997        this.delegate.elementAttributeValueChanged(element, attributeName);
2998      }
2999    }
3000  }]);
3001
3002  return AttributeObserver;
3003}();
3004
3005/***/ }),
3006
vendor: 4,202 bytes, lines 3007-3079
3007/***/ "./src/observe/mutation/element-observer.js":
3008/*!**************************************************!*\
3009  !*** ./src/observe/mutation/element-observer.js ***!
3010  \**************************************************/
3011/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3012
3013__webpack_require__.r(__webpack_exports__);
3014/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3015/* harmony export */   "ElementObserver": () => (/* binding */ ElementObserver)
3016/* harmony export */ });
3017function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
3018
3019function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
3020
3021function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
3022
3023function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3024
3025function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
3026
3027function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
3028
3029var ElementObserver = /*#__PURE__*/function () {
3030  function ElementObserver(element, delegate) {
3031    var _this = this;
3032
3033    _classCallCheck(this, ElementObserver);
3034
3035    this.mutationObserverInit = {
3036      attributes: true,
3037      childList: true,
3038      subtree: true
3039    };
3040    this.element = element;
3041    this.started = false;
3042    this.delegate = delegate;
3043    this.elements = new Set();
3044    this.mutationObserver = new MutationObserver(function (mutations) {
3045      return _this.processMutations(mutations);
3046    });
3047  }
3048
3049  _createClass(ElementObserver, [{
3050    key: "start",
3051    value: function start() {
3052      if (!this.started) {
3053        this.started = true;
3054        this.mutationObserver.observe(this.element, this.mutationObserverInit);
3055        this.refresh();
3056      }
3057    }
3058  }, {
3059    key: "pause",
3060    value: function pause(callback) {
3061      if (this.started) {
3062        this.mutationObserver.disconnect();
3063        this.started = false;
3064      }
3065
3066      callback();
3067
3068      if (!this.started) {
3069        this.mutationObserver.observe(this.element, this.mutationObserverInit);
3070        this.started = true;
3071      }
3072    }
3073  }, {
3074    key: "stop",
3075    value: function stop() {
3076      if (this.started) {
3077        this.mutationObserver.takeRecords();
3078        this.mutationObserver.disconnect();
3079        this.started = false;
3080      }
3081    }
3082  }, {
3083    key: "refresh",
3084    value: function refresh() {
3085      if (this.started) {
3086        var matches = new Set(this.matchElementsInTree());
3087
3088        for (var _i = 0, _Array$from = Array.from(this.elements); _i < _Array$from.length; _i++) {
3089          var element = _Array$from[_i];
3090
3091          if (!matches.has(element)) {
3092            this.removeElement(element);
3093          }
3094        }
3095
3096        for (var _i2 = 0, _Array$from2 = Array.from(matches); _i2 < _Array$from2.length; _i2++) {
3097          var _element = _Array$from2[_i2];
3098          this.addElement(_element);
3099        }
3100      }
3101    } // Mutation record processing
3102
3103  }, {
3104    key: "processMutations",
3105    value: function processMutations(mutations) {
3106      if (this.started) {
3107        var _iterator = _createForOfIteratorHelper(mutations),
3108            _step;
3109
3110        try {
3111          for (_iterator.s(); !(_step = _iterator.n()).done;) {
3112            var mutation = _step.value;
3113            this.processMutation(mutation);
3114          }
3115        } catch (err) {
3116          _iterator.e(err);
3117        } finally {
3118          _iterator.f();
3119        }
3120      }
3121    }
3122  }, {
3123    key: "processMutation",
3124    value: function processMutation(mutation) {
3125      if (mutation.type == "attributes") {
3126        this.processAttributeChange(mutation.target, mutation.attributeName);
3127      } else if (mutation.type == "childList") {
3128        this.processRemovedNodes(mutation.removedNodes);
3129        this.processAddedNodes(mutation.addedNodes);
3130      }
3131    }
3132  }, {
3133    key: "processAttributeChange",
3134    value: function processAttributeChange(element, attributeName) {
3135      if (this.elements.has(element)) {
3136        if (this.delegate.elementAttributeChanged && this.matchElement(element)) {
3137          this.delegate.elementAttributeChanged(element, attributeName);
3138        } else {
3139          this.removeElement(element);
3140        }
3141      } else if (this.matchElement(element)) {
3142        this.addElement(element);
3143      }
3144    }
3145  }, {
3146    key: "processRemovedNodes",
3147    value: function processRemovedNodes(nodes) {
3148      for (var _i3 = 0, _Array$from3 = Array.from(nodes); _i3 < _Array$from3.length; _i3++) {
3149        var node = _Array$from3[_i3];
3150        var element = this.elementFromNode(node);
3151
3152        if (element) {
3153          this.processTree(element, this.removeElement);
3154        }
3155      }
3156    }
3157  }, {
3158    key: "processAddedNodes",
3159    value: function processAddedNodes(nodes) {
3160      for (var _i4 = 0, _Array$from4 = Array.from(nodes); _i4 < _Array$from4.length; _i4++) {
3161        var node = _Array$from4[_i4];
3162        var element = this.elementFromNode(node);
3163
3164        if (element && this.elementIsActive(element)) {
3165          this.processTree(element, this.addElement);
3166        }
3167      }
3168    } // Element matching
3169
3170  }, {
3171    key: "matchElement",
3172    value: function matchElement(element) {
3173      return this.delegate.matchElement(element);
3174    }
3175  }, {
3176    key: "matchElementsInTree",
3177    value: function matchElementsInTree() {
3178      var tree = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.element;
3179      return this.delegate.matchElementsInTree(tree);
3180    }
3181  }, {
3182    key: "processTree",
3183    value: function processTree(tree, processor) {
3184      var _iterator2 = _createForOfIteratorHelper(this.matchElementsInTree(tree)),
3185          _step2;
3186
3187      try {
3188        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
3189          var element = _step2.value;
3190          processor.call(this, element);
3191        }
3192      } catch (err) {
3193        _iterator2.e(err);
3194      } finally {
3195        _iterator2.f();
3196      }
3197    }
3198  }, {
3199    key: "elementFromNode",
3200    value: function elementFromNode(node) {
3201      if (node.nodeType == Node.ELEMENT_NODE) {
3202        return node;
3203      }
3204    }
3205  }, {
3206    key: "elementIsActive",
3207    value: function elementIsActive(element) {
3208      if (element.isConnected != this.element.isConnected) {
3209        return false;
3210      } else {
3211        return this.element.contains(element);
3212      }
3213    } // Element tracking
3214
3215  }, {
3216    key: "addElement",
3217    value: function addElement(element) {
3218      if (!this.elements.has(element)) {
3219        if (this.elementIsActive(element)) {
3220          this.elements.add(element);
3221
3222          if (this.delegate.elementMatched) {
3223            this.delegate.elementMatched(element);
3224          }
3225        }
3226      }
3227    }
3228  }, {
3229    key: "removeElement",
3230    value: function removeElement(element) {
3231      if (this.elements.has(element)) {
3232        this.elements["delete"](element);
3233
3234        if (this.delegate.elementUnmatched) {
3235          this.delegate.elementUnmatched(element);
3236        }
3237      }
3238    }
3239  }]);
3240
3241  return ElementObserver;
3242}();
3243
3244/***/ }),
3245
3246/***/ "./src/observe/mutation/index.js":
3247/*!***************************************!*\
3248  !*** ./src/observe/mutation/index.js ***!
3249  \***************************************/
3250/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3251
3252__webpack_require__.r(__webpack_exports__);
3253/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3254/* harmony export */   "AttributeObserver": () => (/* reexport safe */ _attribute_observer__WEBPACK_IMPORTED_MODULE_0__.AttributeObserver),
3255/* harmony export */   "ElementObserver": () => (/* reexport safe */ _element_observer__WEBPACK_IMPORTED_MODULE_1__.ElementObserver),
3256/* harmony export */   "SelectorObserver": () => (/* reexport safe */ _selector_observer__WEBPACK_IMPORTED_MODULE_2__.SelectorObserver),
3257/* harmony export */   "TokenListObserver": () => (/* reexport safe */ _token_list_observer__WEBPACK_IMPORTED_MODULE_3__.TokenListObserver),
3258/* harmony export */   "ValueListObserver": () => (/* reexport safe */ _value_list_observer__WEBPACK_IMPORTED_MODULE_4__.ValueListObserver)
3259/* harmony export */ });
3260/* harmony import */ var _attribute_observer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./attribute-observer */ "./src/observe/mutation/attribute-observer.js");
3261/* harmony import */ var _element_observer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element-observer */ "./src/observe/mutation/element-observer.js");
3262/* harmony import */ var _selector_observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./selector-observer */ "./src/observe/mutation/selector-observer.js");
3263/* harmony import */ var _token_list_observer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./token-list-observer */ "./src/observe/mutation/token-list-observer.js");
3264/* harmony import */ var _value_list_observer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./value-list-observer */ "./src/observe/mutation/value-list-observer.js");
3265
3266
3267
3268
3269
3270
3271/***/ }),
3272
vendor: 4,915 bytes, lines 3273-3364
3273/***/ "./src/observe/mutation/selector-observer.js":
3274/*!***************************************************!*\
3275  !*** ./src/observe/mutation/selector-observer.js ***!
3276  \***************************************************/
3277/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3278
3279__webpack_require__.r(__webpack_exports__);
3280/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3281/* harmony export */   "SelectorObserver": () => (/* binding */ SelectorObserver)
3282/* harmony export */ });
3283/* harmony import */ var _element_observer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element-observer */ "./src/observe/mutation/element-observer.js");
3284/* harmony import */ var _util_multimap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/multimap */ "./src/observe/util/multimap.js");
3285function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
3286
3287function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
3288
3289function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
3290
3291function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3292
3293function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
3294
3295function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
3296
3297
3298
3299var SelectorObserver = /*#__PURE__*/function () {
3300  function SelectorObserver(element, selector, delegate, details) {
3301    _classCallCheck(this, SelectorObserver);
3302
3303    this._selector = selector;
3304    this.details = details;
3305    this.elementObserver = new _element_observer__WEBPACK_IMPORTED_MODULE_0__.ElementObserver(element, this);
3306    this.delegate = delegate;
3307    this.matchesByElement = new _util_multimap__WEBPACK_IMPORTED_MODULE_1__.Multimap();
3308  }
3309
3310  _createClass(SelectorObserver, [{
3311    key: "started",
3312    get: function get() {
3313      return this.elementObserver.started;
3314    }
3315  }, {
3316    key: "selector",
3317    get: function get() {
3318      return this._selector;
3319    },
3320    set: function set(selector) {
3321      this._selector = selector;
3322      this.refresh();
3323    }
3324  }, {
3325    key: "start",
3326    value: function start() {
3327      this.elementObserver.start();
3328    }
3329  }, {
3330    key: "pause",
3331    value: function pause(callback) {
3332      this.elementObserver.pause(callback);
3333    }
3334  }, {
3335    key: "stop",
3336    value: function stop() {
3337      this.elementObserver.stop();
3338    }
3339  }, {
3340    key: "refresh",
3341    value: function refresh() {
3342      this.elementObserver.refresh();
3343    }
3344  }, {
3345    key: "element",
3346    get: function get() {
3347      return this.elementObserver.element;
3348    } // Element observer delegate
3349
3350  }, {
3351    key: "matchElement",
3352    value: function matchElement(element) {
3353      var selector = this.selector;
3354
3355      if (selector) {
3356        var matches = element.matches(selector);
3357
3358        if (this.delegate.selectorMatchElement) {
3359          return matches && this.delegate.selectorMatchElement(element, this.details);
3360        }
3361
3362        return matches;
3363      } else {
3364        return false;
3365      }
3366    }
3367  }, {
3368    key: "matchElementsInTree",
3369    value: function matchElementsInTree(tree) {
3370      var _this = this;
3371
3372      var selector = this.selector;
3373
3374      if (selector) {
3375        var match = this.matchElement(tree) ? [tree] : [];
3376        var matches = Array.from(tree.querySelectorAll(selector)).filter(function (match) {
3377          return _this.matchElement(match);
3378        });
3379        return match.concat(matches);
3380      } else {
3381        return [];
3382      }
3383    }
3384  }, {
3385    key: "elementMatched",
3386    value: function elementMatched(element) {
3387      var selector = this.selector;
3388
3389      if (selector) {
3390        this.selectorMatched(element, selector);
3391      }
3392    }
3393  }, {
3394    key: "elementUnmatched",
3395    value: function elementUnmatched(element) {
3396      var selectors = this.matchesByElement.getKeysForValue(element);
3397
3398      var _iterator = _createForOfIteratorHelper(selectors),
3399          _step;
3400
3401      try {
3402        for (_iterator.s(); !(_step = _iterator.n()).done;) {
3403          var selector = _step.value;
3404          this.selectorUnmatched(element, selector);
3405        }
3406      } catch (err) {
3407        _iterator.e(err);
3408      } finally {
3409        _iterator.f();
3410      }
3411    }
3412  }, {
3413    key: "elementAttributeChanged",
3414    value: function elementAttributeChanged(element, _attributeName) {
3415      var selector = this.selector;
3416
3417      if (selector) {
3418        var matches = this.matchElement(element);
3419        var matchedBefore = this.matchesByElement.has(selector, element);
3420
3421        if (matches && !matchedBefore) {
3422          this.selectorMatched(element, selector);
3423        } else if (!matches && matchedBefore) {
3424          this.selectorUnmatched(element, selector);
3425        }
3426      }
3427    } // Selector management
3428
3429  }, {
3430    key: "selectorMatched",
3431    value: function selectorMatched(element, selector) {
3432      this.delegate.selectorMatched(element, selector, this.details);
3433      this.matchesByElement.add(selector, element);
3434    }
3435  }, {
3436    key: "selectorUnmatched",
3437    value: function selectorUnmatched(element, selector) {
3438      this.delegate.selectorUnmatched(element, selector, this.details);
3439      this.matchesByElement["delete"](selector, element);
3440    }
3441  }]);
3442
3443  return SelectorObserver;
3444}();
3445
3446/***/ }),
3447
3448/***/ "./src/observe/mutation/token-list-observer.js":
3449/*!*****************************************************!*\
3450  !*** ./src/observe/mutation/token-list-observer.js ***!
3451  \*****************************************************/
3452/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3453
3454__webpack_require__.r(__webpack_exports__);
3455/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3456/* harmony export */   "TokenListObserver": () => (/* binding */ TokenListObserver)
3457/* harmony export */ });
3458/* harmony import */ var _attribute_observer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./attribute-observer */ "./src/observe/mutation/attribute-observer.js");
3459/* harmony import */ var _util_multimap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/multimap */ "./src/observe/util/multimap.js");
3460function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
3461
3462function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3463
3464function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
3465
3466function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
3467
3468function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
3469
3470function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
3471
3472function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3473
3474function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
3475
3476function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
3477
3478
3479
3480var TokenListObserver = /*#__PURE__*/function () {
3481  function TokenListObserver(element, attributeName, delegate) {
3482    _classCallCheck(this, TokenListObserver);
3483
3484    this.delegate = delegate;
3485    this.attributeObserver = new _attribute_observer__WEBPACK_IMPORTED_MODULE_0__.AttributeObserver(element, attributeName, this);
3486    this.tokensByElement = new _util_multimap__WEBPACK_IMPORTED_MODULE_1__.Multimap();
3487  }
3488
3489  _createClass(TokenListObserver, [{
3490    key: "started",
3491    get: function get() {
3492      return this.attributeObserver.started;
3493    }
3494  }, {
3495    key: "start",
3496    value: function start() {
3497      this.attributeObserver.start();
3498    }
3499  }, {
3500    key: "pause",
3501    value: function pause(callback) {
3502      this.attributeObserver.pause(callback);
3503    }
3504  }, {
3505    key: "stop",
3506    value: function stop() {
3507      this.attributeObserver.stop();
3508    }
3509  }, {
3510    key: "refresh",
3511    value: function refresh() {
3512      this.attributeObserver.refresh();
3513    }
3514  }, {
3515    key: "element",
3516    get: function get() {
3517      return this.attributeObserver.element;
3518    }
3519  }, {
3520    key: "attributeName",
3521    get: function get() {
3522      return this.attributeObserver.attributeName;
3523    } // Attribute observer delegate
3524
3525  }, {
3526    key: "elementMatchedAttribute",
3527    value: function elementMatchedAttribute(element) {
3528      this.tokensMatched(this.readTokensForElement(element));
3529    }
3530  }, {
3531    key: "elementAttributeValueChanged",
3532    value: function elementAttributeValueChanged(element) {
3533      var _this$refreshTokensFo = this.refreshTokensForElement(element),
3534          _this$refreshTokensFo2 = _slicedToArray(_this$refreshTokensFo, 2),
3535          unmatchedTokens = _this$refreshTokensFo2[0],
3536          matchedTokens = _this$refreshTokensFo2[1];
3537
3538      this.tokensUnmatched(unmatchedTokens);
3539      this.tokensMatched(matchedTokens);
3540    }
3541  }, {
3542    key: "elementUnmatchedAttribute",
3543    value: function elementUnmatchedAttribute(element) {
3544      this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));
3545    }
3546  }, {
3547    key: "tokensMatched",
3548    value: function tokensMatched(tokens) {
3549      var _this = this;
3550
3551      tokens.forEach(function (token) {
3552        return _this.tokenMatched(token);
3553      });
3554    }
3555  }, {
3556    key: "tokensUnmatched",
3557    value: function tokensUnmatched(tokens) {
3558      var _this2 = this;
3559
3560      tokens.forEach(function (token) {
3561        return _this2.tokenUnmatched(token);
3562      });
3563    }
3564  }, {
3565    key: "tokenMatched",
3566    value: function tokenMatched(token) {
3567      this.delegate.tokenMatched(token);
3568      this.tokensByElement.add(token.element, token);
3569    }
3570  }, {
3571    key: "tokenUnmatched",
3572    value: function tokenUnmatched(token) {
3573      this.delegate.tokenUnmatched(token);
3574      this.tokensByElement["delete"](token.element, token);
3575    }
3576  }, {
3577    key: "refreshTokensForElement",
3578    value: function refreshTokensForElement(element) {
3579      var previousTokens = this.tokensByElement.getValuesForKey(element);
3580      var currentTokens = this.readTokensForElement(element);
3581      var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_ref) {
3582        var _ref2 = _slicedToArray(_ref, 2),
3583            previousToken = _ref2[0],
3584            currentToken = _ref2[1];
3585
3586        return !tokensAreEqual(previousToken, currentToken);
3587      });
3588
3589      if (firstDifferingIndex == -1) {
3590        return [[], []];
3591      } else {
3592        return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];
3593      }
3594    }
3595  }, {
3596    key: "readTokensForElement",
3597    value: function readTokensForElement(element) {
3598      var attributeName = this.attributeName;
3599      var tokenString = element.getAttribute(attributeName) || "";
3600      return parseTokenString(tokenString, element, attributeName);
3601    }
3602  }]);
3603
3604  return TokenListObserver;
3605}();
3606
3607function parseTokenString(tokenString, element, attributeName) {
3608  return tokenString.trim().split(/\s+/).filter(function (content) {
3609    return content.length;
3610  }).map(function (content, index) {
3611    return {
3612      element: element,
3613      attributeName: attributeName,
3614      content: content,
3615      index: index
3616    };
3617  });
3618}
3619
3620function zip(left, right) {
3621  var length = Math.max(left.length, right.length);
3622  return Array.from({
3623    length: length
3624  }, function (_, index) {
3625    return [left[index], right[index]];
3626  });
3627}
3628
3629function tokensAreEqual(left, right) {
3630  return left && right && left.index == right.index && left.content == right.content;
3631}
vendor: 26 bytes, lines 3631-3635
3631
3632
3633/***/ }),
3634
3635/***/ "./src/
3635observe/mutation/value-list-observer.js":
3636/*!*****************************************************!*\
3637  !*** ./src/observe/mutation/value-list-observer.js ***!
3638  \*****************************************************/
3639/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3640
3641__webpack_require__.r(__webpack_exports__);
3642/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3643/* harmony export */   "ValueListObserver": () => (/* binding */ ValueListObserver)
3644/* harmony export */ });
3645/* harmony import */ var _token_list_observer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./token-list-observer */ "./src/observe/mutation/token-list-observer.js");
3646function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3647
3648function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
3649
3650function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
3651
3652
3653var ValueListObserver = /*#__PURE__*/function () {
3654  function ValueListObserver(element, attributeName, delegate) {
3655    _classCallCheck(this, ValueListObserver);
3656
3657    this.tokenListObserver = new _token_list_observer__WEBPACK_IMPORTED_MODULE_0__.TokenListObserver(element, attributeName, this);
3658    this.delegate = delegate;
3659    this.parseResultsByToken = new WeakMap();
3660    this.valuesByTokenByElement = new WeakMap();
3661  }
3662
3663  _createClass(ValueListObserver, [{
3664    key: "started",
3665    get: function get() {
3666      return this.tokenListObserver.started;
3667    }
3668  }, {
3669    key: "start",
3670    value: function start() {
3671      this.tokenListObserver.start();
3672    }
3673  }, {
3674    key: "stop",
3675    value: function stop() {
3676      this.tokenListObserver.stop();
3677    }
3678  }, {
3679    key: "refresh",
3680    value: function refresh() {
3681      this.tokenListObserver.refresh();
3682    }
3683  }, {
3684    key: "element",
3685    get: function get() {
3686      return this.tokenListObserver.element;
3687    }
3688  }, {
3689    key: "attributeName",
3690    get: function get() {
3691      return this.tokenListObserver.attributeName;
3692    }
3693  }, {
3694    key: "tokenMatched",
3695    value: function tokenMatched(token) {
3696      var element = token.element;
3697
3698      var _this$fetchParseResul = this.fetchParseResultForToken(token),
3699          value = _this$fetchParseResul.value;
3700
3701      if (value) {
3702        this.fetchValuesByTokenForElement(element).set(token, value);
3703        this.delegate.elementMatchedValue(element, value);
3704      }
3705    }
3706  }, {
3707    key: "tokenUnmatched",
3708    value: function tokenUnmatched(token) {
3709      var element = token.element;
3710
3711      var _this$fetchParseResul2 = this.fetchParseResultForToken(token),
3712          value = _this$fetchParseResul2.value;
3713
3714      if (value) {
3715        this.fetchValuesByTokenForElement(element)["delete"](token);
3716        this.delegate.elementUnmatchedValue(element, value);
3717      }
3718    }
3719  }, {
3720    key: "fetchParseResultForToken",
3721    value: function fetchParseResultForToken(token) {
3722      var parseResult = this.parseResultsByToken.get(token);
3723
3724      if (!parseResult) {
3725        parseResult = this.parseToken(token);
3726        this.parseResultsByToken.set(token, parseResult);
3727      }
3728
3729      return parseResult;
3730    }
3731  }, {
3732    key: "fetchValuesByTokenForElement",
3733    value: function fetchValuesByTokenForElement(element) {
3734      var valuesByToken = this.valuesByTokenByElement.get(element);
3735
3736      if (!valuesByToken) {
3737        valuesByToken = new Map();
3738        this.valuesByTokenByElement.set(element, valuesByToken);
3739      }
3740
3741      return valuesByToken;
3742    }
3743  }, {
3744    key: "parseToken",
3745    value: function parseToken(token) {
3746      try {
3747        var value = this.delegate.parseValueForToken(token);
3748        return {
3749          value: value
3750        };
3751      } catch (error) {
3752        return {
3753          error: error
3754        };
3755      }
3756    }
3757  }]);
3758
3759  return ValueListObserver;
3760}();
3761
3762/***/ }),
3763
3764/***/ "./src/observe/namespace.js":
3765/*!**********************************!*\
3766  !*** ./src/observe/namespace.js ***!
3767  \**********************************/
3768/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3769
3770__webpack_require__.r(__webpack_exports__);
3771/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3772/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
3773/* harmony export */ });
3774/* harmony import */ var _application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./application */ "./src/observe/application.js");
3775
3776var application = new _application__WEBPACK_IMPORTED_MODULE_0__.Application();
3777/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
3778  application: application,
3779  registerControl: function registerControl(id, control) {
3780    return application.register(id, control);
3781  },
3782  importControl: function importControl(id) {
3783    return application["import"](id);
3784  },
3785  observeControl: function observeControl(element, id) {
3786    return application.observe(element, id);
3787  },
3788  fetchControl: function fetchControl(element) {
3789    return application.fetch(element);
3790  },
3791  fetchControls: function fetchControls(elements) {
3792    return application.fetchAll(elements);
3793  },
3794  start: function start() {
3795    application.startAsync();
3796  },
3797  stop: function stop() {
3798    application.stop();
3799  }
3800});
3801
3802/***/ }),
3803
3804/***/ "./src/observe/scope-observer.js":
3805/*!***************************************!*\
3806  !*** ./src/observe/scope-observer.js ***!
3807  \***************************************/
3808/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3809
3810__webpack_require__.r(__webpack_exports__);
3811/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3812/* harmony export */   "ScopeObserver": () => (/* binding */ ScopeObserver)
3813/* harmony export */ });
3814/* harmony import */ var _mutation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mutation */ "./src/observe/mutation/index.js");
3815function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3816
3817function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
3818
3819function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
3820
3821
3822var ScopeObserver = /*#__PURE__*/function () {
3823  function ScopeObserver(element, delegate) {
3824    _classCallCheck(this, ScopeObserver);
3825
3826    this.element = element;
3827    this.delegate = delegate;
3828    this.valueListObserver = new _mutation__WEBPACK_IMPORTED_MODULE_0__.ValueListObserver(this.element, this.controlAttribute, this);
3829    this.scopesByIdentifierByElement = new WeakMap();
3830    this.scopeReferenceCounts = new WeakMap();
3831  }
3832
3833  _createClass(ScopeObserver, [{
3834    key: "start",
3835    value: function start() {
3836      this.valueListObserver.start();
3837    }
3838  }, {
3839    key: "stop",
3840    value: function stop() {
3841      this.valueListObserver.stop();
3842    }
3843  }, {
3844    key: "controlAttribute",
3845    get: function get() {
3846      return 'data-control';
3847    } // Value observer delegate
3848
3849  }, {
3850    key: "parseValueForToken",
3851    value: function parseValueForToken(token) {
3852      var element = token.element,
3853          identifier = token.content;
3854      var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);
3855      var scope = scopesByIdentifier.get(identifier);
3856
3857      if (!scope) {
3858        scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);
3859        scopesByIdentifier.set(identifier, scope);
3860      }
3861
3862      return scope;
3863    }
3864  }, {
3865    key: "elementMatchedValue",
3866    value: function elementMatchedValue(element, value) {
3867      var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;
3868      this.scopeReferenceCounts.set(value, referenceCount);
3869
3870      if (referenceCount == 1) {
3871        this.delegate.scopeConnected(value);
3872      }
3873    }
3874  }, {
3875    key: "elementUnmatchedValue",
3876    value: function elementUnmatchedValue(element, value) {
3877      var referenceCount = this.scopeReferenceCounts.get(value);
3878
3879      if (referenceCount) {
3880        this.scopeReferenceCounts.set(value, referenceCount - 1);
3881
3882        if (referenceCount == 1) {
3883          this.delegate.scopeDisconnected(value);
3884        }
3885      }
3886    }
3887  }, {
3888    key: "fetchScopesByIdentifierForElement",
3889    value: function fetchScopesByIdentifierForElement(element) {
3890      var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);
3891
3892      if (!scopesByIdentifier) {
3893        scopesByIdentifier = new Map();
3894        this.scopesByIdentifierByElement.set(element, scopesByIdentifier);
3895      }
3896
3897      return scopesByIdentifier;
3898    }
3899  }]);
3900
3901  return ScopeObserver;
3902}();
3903
3904/***/ }),
3905
3906/***/ "./src/observe/scope.js":
3907/*!******************************!*\
3908  !*** ./src/observe/scope.js ***!
3909  \******************************/
3910/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3911
3912__webpack_require__.r(__webpack_exports__);
3913/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3914/* harmony export */   "Scope": () => (/* binding */ Scope)
3915/* harmony export */ });
3916function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
3917
3918function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3919
3920function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
3921
3922function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
3923
3924function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
3925
3926function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
3927
3928function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3929
3930function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
3931
3932function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
3933
3934var Scope = /*#__PURE__*/function () {
3935  function Scope(element, identifier) {
3936    var _this = this;
3937
3938    _classCallCheck(this, Scope);
3939
3940    this.element = element;
3941    this.identifier = identifier;
3942
3943    this.containsElement = function (element) {
3944      return element.closest(_this.controlSelector) === _this.element;
3945    };
3946  }
3947
3948  _createClass(Scope, [{
3949    key: "findElement",
3950    value: function findElement(selector) {
3951      return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);
3952    }
3953  }, {
3954    key: "findAllElements",
3955    value: function findAllElements(selector) {
3956      return [].concat(_toConsumableArray(this.element.matches(selector) ? [this.element] : []), _toConsumableArray(this.queryElements(selector).filter(this.containsElement)));
3957    }
3958  }, {
3959    key: "queryElements",
3960    value: function queryElements(selector) {
3961      return Array.from(this.element.querySelectorAll(selector));
3962    }
3963  }, {
3964    key: "controlSelector",
3965    get: function get() {
3966      return attributeValueContainsToken('data-control', this.identifier);
3967    }
3968  }, {
3969    key: "isDocumentScope",
3970    get: function get() {
3971      return this.element === document.documentElement;
3972    }
3973  }, {
3974    key: "documentScope",
3975    get: function get() {
3976      return this.isDocumentScope ? this : new Scope(document.documentElement, this.identifier);
3977    }
3978  }]);
3979
3980  return Scope;
3981}();
3982
3983function attributeValueContainsToken(attributeName, token) {
3984  return "[".concat(attributeName, "~=\"").concat(token, "\"]");
3985}
3986
3987/***/ }),
3988
3989/***/ "./src/observe/util/multimap.js":
3990/*!**************************************!*\
3991  !*** ./src/observe/util/multimap.js ***!
3992  \**************************************/
3993/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3994
3995__webpack_require__.r(__webpack_exports__);
3996/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3997/* harmony export */   "Multimap": () => (/* binding */ Multimap)
3998/* harmony export */ });
3999/* harmony import */ var _set_operations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./set-operations */ "./src/observe/util/set-operations.js");
4000function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4001
4002function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4003
4004function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4005
4006function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
4007
4008function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
4009
4010function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
4011
4012function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4013
4014function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
4015
4016function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
4017
4018
4019var Multimap = /*#__PURE__*/function () {
4020  function Multimap() {
4021    _classCallCheck(this, Multimap);
4022
4023    this.valuesByKey = new Map();
4024  }
4025
4026  _createClass(Multimap, [{
4027    key: "keys",
4028    get: function get() {
4029      return Array.from(this.valuesByKey.keys());
4030    }
4031  }, {
4032    key: "values",
4033    get: function get() {
4034      var sets = Array.from(this.valuesByKey.values());
4035      return sets.reduce(function (values, set) {
4036        return values.concat(Array.from(set));
4037      }, React.createElement(V, null), [] > []);
4038    }
4039  }, {
4040    key: "size",
4041    get: function get() {
4042      var sets = Array.from(this.valuesByKey.values());
4043      return sets.reduce(function (size, set) {
4044        return size + set.size;
4045      }, 0);
4046    }
4047  }, {
4048    key: "add",
4049    value: function add(key, value) {
4050      (0,_set_operations__WEBPACK_IMPORTED_MODULE_0__.add)(this.valuesByKey, key, value);
4051    }
4052  }, {
4053    key: "delete",
4054    value: function _delete(key, value) {
4055      (0,_set_operations__WEBPACK_IMPORTED_MODULE_0__.del)(this.valuesByKey, key, value);
4056    }
4057  }, {
4058    key: "has",
4059    value: function has(key, value) {
4060      var values = this.valuesByKey.get(key);
4061      return values != null && values.has(value);
4062    }
4063  }, {
4064    key: "hasKey",
4065    value: function hasKey(key) {
4066      return this.valuesByKey.has(key);
4067    }
4068  }, {
4069    key: "hasValue",
4070    value: function hasValue(value) {
4071      var sets = Array.from(this.valuesByKey.values());
4072      return sets.some(function (set) {
4073        return set.has(value);
4074      });
4075    }
4076  }, {
4077    key: "getValuesForKey",
4078    value: function getValuesForKey(key) {
4079      var values = this.valuesByKey.get(key);
4080      return values ? Array.from(values) : [];
4081    }
4082  }, {
4083    key: "getKeysForValue",
4084    value: function getKeysForValue(value) {
4085      return Array.from(this.valuesByKey).filter(function (_ref) {
4086        var _ref2 = _slicedToArray(_ref, 2),
4087            _key = _ref2[0],
4088            values = _ref2[1];
4089
4090        return values.has(value);
4091      }).map(function (_ref3) {
4092        var _ref4 = _slicedToArray(_ref3, 2),
4093            key = _ref4[0],
4094            _values = _ref4[1];
4095
4096        return key;
4097      });
4098    }
4099  }]);
4100
4101  return Multimap;
4102}();
4103
4104/***/ }),
4105
4106/***/ "./src/observe/util/set-operations.js":
4107/*!********************************************!*\
4108  !*** ./src/observe/util/set-operations.js ***!
4109  \********************************************/
4110/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4111
4112__webpack_require__.r(__webpack_exports__);
4113/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4114/* harmony export */   "add": () => (/* binding */ add),
4115/* harmony export */   "del": () => (/* binding */ del),
4116/* harmony export */   "fetch": () => (/* binding */ fetch),
4117/* harmony export */   "prune": () => (/* binding */ prune)
4118/* harmony export */ });
4119function add(map, key, value) {
4120  fetch(map, key).add(value);
4121}
4122function del(map, key, value) {
4123  fetch(map, key)["delete"](value);
4124  prune(map, key);
4125}
4126function fetch(map, key) {
4127  var values = map.get(key);
4128
4129  if (!values) {
4130    values = new Set();
4131    map.set(key, values);
4132  }
4133
4134  return values;
4135}
4136function prune(map, key) {
4137  var values = map.get(key);
4138
4139  if (values != null && values.size == 0) {
4140    map["delete"](key);
4141  }
4142}
4143
4144/***/ }),
4145
4146/***/ "./src/request/actions.js":
4147/*!********************************!*\
4148  !*** ./src/request/actions.js ***!
4149  \********************************/
4150/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4151
4152__webpack_require__.r(__webpack_exports__);
4153/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4154/* harmony export */   "Actions": () => (/* binding */ Actions),
4155/* harmony export */   "ActionsUpdateMode": () => (/* binding */ ActionsUpdateMode)
4156/* harmony export */ });
4157/* harmony import */ var _asset_manager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./asset-manager */ "./src/request/asset-manager.js");
4158/* harmony import */ var _util_deferred__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/deferred */ "./src/util/deferred.js");
4159/* harmony import */ var _util_referrer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/referrer */ "./src/util/referrer.js");
4160function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4161
4162function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4163
4164function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4165
4166function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
4167
4168function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4169
4170function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4171
4172function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
4173
4174function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
4175
4176function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
4177
4178function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4179
4180function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
4181
4182function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
4183
4184
4185
4186
4187var ActionsUpdateMode = {
4188  replaceWith: 'replace',
4189  prepend: 'prepend',
4190  append: 'append',
4191  update: 'update'
4192};
4193var Actions = /*#__PURE__*/function () {
4194  function Actions(delegate, context, options) {
4195    _classCallCheck(this, Actions);
4196
4197    this.el = delegate.el;
4198    this.delegate = delegate;
4199    this.context = context;
4200    this.options = options; // Allow override to call parent logic
4201
4202    this.context.start = this.start.bind(this);
4203    this.context.success = this.success.bind(this);
4204    this.context.error = this.error.bind(this);
4205    this.context.complete = this.complete.bind(this);
4206    this.context.cancel = this.cancel.bind(this);
4207  } // Options can override all public methods in this class
4208
4209
4210  _createClass(Actions, [{
4211    key: "invoke",
4212    value: function invoke(method, args) {
4213      if (this.options[method]) {
4214        return this.options[method].apply(this.context, args);
4215      } // beforeUpdate and afterUpdate are not part of context
4216      // since they have no base logic and won't exist here
4217
4218
4219      if (this[method]) {
4220        return this[method].apply(this, _toConsumableArray(args));
4221      }
4222    } // Options can also specify a non-interference "func" method, typically
4223    // used by eval-based data attributes that takes minimal arguments
4224
4225  }, {
4226    key: "invokeFunc",
4227    value: function invokeFunc(method, data) {
4228      if (this.options[method]) {
4229        return this.options[method](this.el, data);
4230      }
4231    } // Public
4232
4233  }, {
4234    key: "start",
4235    value: function start(xhr) {
4236      this.invoke('markAsUpdating', [true]);
4237
4238      if (this.delegate.options.message) {
4239        this.invoke('handleProgressMessage', [this.delegate.options.message, false]);
4240      }
4241    }
4242  }, {
4243    key: "success",
4244    value: function success(data, responseCode, xhr) {
4245      var _this = this;
4246
4247      var updatePromise = new _util_deferred__WEBPACK_IMPORTED_MODULE_1__.Deferred(); // Halt here if beforeUpdate() or data-request-before-update returns false
4248
4249      if (this.invoke('beforeUpdate', [data, responseCode, xhr]) === false) {
4250        return updatePromise;
4251      } // Halt here if the error function returns false
4252
4253
4254      if (this.invokeFunc('beforeUpdateFunc', data) === false) {
4255        return updatePromise;
4256      } // Trigger 'ajaxBeforeUpdate' on the form, halt if event.preventDefault() is called
4257
4258
4259      if (!this.delegate.applicationAllowsUpdate(data, responseCode, xhr)) {
4260        return updatePromise;
4261      } // Download file and continue with success response here since data is unusable
4262
4263
4264      if (this.delegate.options.download && data instanceof Blob) {
4265        this.invoke('handleFileDownload', [data, xhr]);
4266        this.delegate.notifyApplicationRequestSuccess(data, responseCode, xhr);
4267        this.invokeFunc('successFunc', data);
4268        return updatePromise;
4269      } // Dispatch flash messages
4270
4271
4272      if (this.delegate.options.flash && data['X_OCTOBER_FLASH_MESSAGES']) {
4273        for (var type in data['X_OCTOBER_FLASH_MESSAGES']) {
4274          this.invoke('handleFlashMessage', [data['X_OCTOBER_FLASH_MESSAGES'][type], type]);
4275        }
4276      } // Browser event has halted the process
4277
4278
4279      if (data['X_OCTOBER_DISPATCHES'] && this.invoke('handleBrowserEvents', [data['X_OCTOBER_DISPATCHES']])) {
4280        return updatePromise;
4281      } // Proceed with the update process
4282
4283
4284      updatePromise = this.invoke('handleUpdateResponse', [data, responseCode, xhr]);
4285      updatePromise.done(function () {
4286        _this.delegate.notifyApplicationRequestSuccess(data, responseCode, xhr);
4287
4288        _this.invokeFunc('successFunc', data);
4289      });
4290      return updatePromise;
4291    }
4292  }, {
4293    key: "error",
4294    value: function error(data, responseCode, xhr) {
4295      var _this2 = this;
4296
4297      var errorMsg,
4298          updatePromise = new _util_deferred__WEBPACK_IMPORTED_MODULE_1__.Deferred();
4299
4300      if (window.ocUnloading !== undefined && window.ocUnloading) {
4301        return updatePromise;
4302      } // Disable redirects
4303
4304
4305      this.delegate.toggleRedirect(false); // Error 406 is a "smart error" that returns response object that is
4306      // processed in the same fashion as a successful response. The response
4307      // may also dispatch events which can halt the process
4308
4309      if (responseCode == 406 && data) {
4310        if (data['X_OCTOBER_DISPATCHES'] && this.invoke('handleBrowserEvents', [data['X_OCTOBER_DISPATCHES']])) {
4311          return updatePromise;
4312        }
4313
4314        errorMsg = data['X_OCTOBER_ERROR_MESSAGE'];
4315        updatePromise = this.invoke('handleUpdateResponse', [data, responseCode, xhr]);
4316      } // Standard error with standard response text
4317      else {
4318        errorMsg = data;
4319        updatePromise.resolve();
4320      }
4321
4322      updatePromise.done(function () {
4323        // Capture the error message on the node
4324        if (_this2.el !== document) {
4325          _this2.el.setAttribute('data-error-message', errorMsg);
4326        } // Trigger 'ajaxError' on the form, halt if event.preventDefault() is called
4327
4328
4329        if (!_this2.delegate.applicationAllowsError(data, responseCode, xhr)) {
4330          return;
4331        } // Halt here if the error function returns false
4332
4333
4334        if (_this2.invokeFunc('errorFunc', data) === false) {
4335          return;
4336        }
4337
4338        _this2.invoke('handleErrorMessage', [errorMsg]);
4339      });
4340      return updatePromise;
4341    }
4342  }, {
4343    key: "complete",
4344    value: function complete(data, responseCode, xhr) {
4345      this.delegate.notifyApplicationRequestComplete(data, responseCode, xhr);
4346      this.invokeFunc('completeFunc', data);
4347      this.invoke('markAsUpdating', [false]);
4348
4349      if (this.delegate.options.message) {
4350        this.invoke('handleProgressMessage', [null, true]);
4351      }
4352    }
4353  }, {
4354    key: "cancel",
4355    value: function cancel() {
4356      this.invokeFunc('cancelFunc');
4357    } // Custom function, requests confirmation from the user
4358
4359  }, {
4360    key: "handleConfirmMessage",
4361    value: function handleConfirmMessage(message) {
4362      var _this3 = this;
4363
4364      var promise = new _util_deferred__WEBPACK_IMPORTED_MODULE_1__.Deferred();
4365      promise.done(function () {
4366        _this3.delegate.sendInternal();
4367      }).fail(function () {
4368        _this3.invoke('cancel', []);
4369      });
4370      var event = this.delegate.notifyApplicationConfirmMessage(message, promise);
4371
4372      if (event.defaultPrevented) {
4373        return false;
4374      }
4375
4376      if (message) {
4377        var result = confirm(message);
4378
4379        if (!result) {
4380          this.invoke('cancel', []);
4381        }
4382
4383        return result;
4384      }
4385    } // Custom function, display a progress message to the user
4386
4387  }, {
4388    key: "handleProgressMessage",
4389    value: function handleProgressMessage(message, isDone) {} // Custom function, display a flash message to the user
4390
4391  }, {
4392    key: "handleFlashMessage",
4393    value: function handleFlashMessage(message, type) {} // Custom function, display an error message to the user
4394
4395  }, {
4396    key: "handleErrorMessage",
4397    value: function handleErrorMessage(message) {
4398      var event = this.delegate.notifyApplicationErrorMessage(message);
4399
4400      if (event.defaultPrevented) {
4401        return;
4402      }
4403
4404      if (message) {
4405        alert(message);
4406      }
4407    } // Custom function, focus fields with errors
4408
4409  }, {
4410    key: "handleValidationMessage",
4411    value: function handleValidationMessage(message, fields) {
4412      this.delegate.notifyApplicationBeforeValidate(message, fields);
4413
4414      if (!this.delegate.formEl) {
4415        return;
4416      }
4417
4418      var isFirstInvalidField = true;
4419
4420      for (var fieldName in fields) {
4421        var fieldCheck,
4422            fieldNameOptions = []; // field1[field2][field3]
4423
4424        fieldCheck = fieldName.replace(/\.(\w+)/g, '[$1]');
4425        fieldNameOptions.push('[name="' + fieldCheck + '"]:not([disabled])');
4426        fieldNameOptions.push('[name="' + fieldCheck + '[]"]:not([disabled])'); // [field1][field2][field3]
4427
4428        fieldCheck = ('.' + fieldName).replace(/\.(\w+)/g, '[$1]');
4429        fieldNameOptions.push('[name$="' + fieldCheck + '"]:not([disabled])');
4430        fieldNameOptions.push('[name$="' + fieldCheck + '[]"]:not([disabled])'); // field.0 → field[]
4431
4432        var fieldEmpty = fieldName.replace(/\.[0-9]+$/g, '');
4433
4434        if (fieldName !== fieldEmpty) {
4435          fieldCheck = fieldEmpty.replace(/\.(\w+)/g, '[$1]');
4436          fieldNameOptions.push('[name="' + fieldCheck + '[]"]:not([disabled])');
4437          fieldCheck = ('.' + fieldEmpty).replace(/\.(\w+)/g, '[$1]');
4438          fieldNameOptions.push('[name$="' + fieldCheck + '[]"]:not([disabled])');
4439        }
4440
4441        var fieldElement = this.delegate.formEl.querySelector(fieldNameOptions.join(', '));
4442
4443        if (fieldElement) {
4444          var event = this.delegate.notifyApplicationFieldInvalid(fieldElement, fieldName, fields[fieldName], isFirstInvalidField);
4445
4446          if (isFirstInvalidField) {
4447            if (!event.defaultPrevented) {
4448              fieldElement.focus();
4449            }
4450
4451            isFirstInvalidField = false;
4452          }
4453        }
4454      }
4455    } // Custom function, handle a browser event coming from the server
4456
4457  }, {
4458    key: "handleBrowserEvents",
4459    value: function handleBrowserEvents(events) {
4460      var _this4 = this;
4461
4462      if (!events || !events.length) {
4463        return false;
4464      }
4465
4466      var defaultPrevented = false;
4467      events.forEach(function (dispatched) {
4468        var event = _this4.delegate.notifyApplicationCustomEvent(dispatched.event, _objectSpread(_objectSpread({}, dispatched.data || {}), {}, {
4469          context: _this4.context
4470        }));
4471
4472        if (event.defaultPrevented) {
4473          defaultPrevented = true;
4474        }
4475      });
4476      return defaultPrevented;
4477    } // Custom function, redirect the browser to another location
4478
4479  }, {
4480    key: "handleRedirectResponse",
4481    value: function handleRedirectResponse(href) {
4482      var event = this.delegate.notifyApplicationBeforeRedirect();
4483
4484      if (event.defaultPrevented) {
4485        return;
4486      }
4487
4488      if (this.options.browserRedirectBack) {
4489        href = (0,_util_referrer__WEBPACK_IMPORTED_MODULE_2__.getReferrerUrl)() || href;
4490      }
4491
4492      if (oc.useTurbo && oc.useTurbo()) {
4493        oc.visit(href);
4494      } else {
4495        location.assign(href);
4496      }
4497    } // Mark known elements as being updated
4498
4499  }, {
4500    key: "markAsUpdating",
4501    value: function markAsUpdating(isUpdating) {
4502      var updateOptions = this.options.update || {};
4503
4504      for (var partial in updateOptions) {
4505        var selector = updateOptions[partial];
4506        var selectedEl = [];
4507
4508        if (updateOptions['_self'] && partial == this.options.partial && this.delegate.partialEl) {
4509          selector = updateOptions['_self'];
4510          selectedEl = [this.delegate.partialEl];
4511        } else {
4512          selectedEl = resolveSelectorResponse(selector, '[data-ajax-partial="' + partial + '"]');
4513        }
4514
4515        selectedEl.forEach(function (el) {
4516          if (isUpdating) {
4517            el.setAttribute('data-ajax-updating', '');
4518          } else {
4519            el.removeAttribute('data-ajax-updating');
4520          }
4521        });
4522      }
4523    } // Custom function, handle any application specific response values
4524    // Using a promissory object here in case injected assets need time to load
4525
4526  }, {
4527    key: "handleUpdateResponse",
4528    value: function handleUpdateResponse(data, responseCode, xhr) {
4529      var _this5 = this;
4530
4531      var updateOptions = this.options.update || {},
4532          updatePromise = new _util_deferred__WEBPACK_IMPORTED_MODULE_1__.Deferred(); // Update partials and finish request
4533
4534      updatePromise.done(function () {
4535        var _loop = function _loop() {
4536          // If a partial has been supplied on the client side that matches the server supplied key, look up
4537          // it's selector and use that. If not, we assume it is an explicit selector reference.
4538          var selector = updateOptions[partial] || partial;
4539          var selectedEl = []; // If the update options has a _self, values like true and '^' will resolve to the partial element,
4540          // these values are also used to make AJAX partial handlers available without performing an update
4541
4542          if (updateOptions['_self'] && partial == _this5.options.partial && _this5.delegate.partialEl) {
4543            selector = updateOptions['_self'];
4544            selectedEl = [_this5.delegate.partialEl];
4545          } else {
4546            selectedEl = resolveSelectorResponse(selector, '[data-ajax-partial="' + partial + '"]');
4547          }
4548
4549          selectedEl.forEach(function (el) {
4550            var updateMode = getSelectorUpdateMode(selector, el); // Replace With
4551
4552            if (updateMode === ActionsUpdateMode.replaceWith) {
4553              var parentNode = el.parentNode;
4554              el.insertAdjacentHTML('afterEnd', data[partial]);
4555              parentNode.removeChild(el);
4556              runScriptsOnFragment(parentNode, data[partial]);
4557            } // Append
4558            else if (updateMode === ActionsUpdateMode.append) {
4559              el.insertAdjacentHTML('beforeEnd', data[partial]);
4560              runScriptsOnFragment(el, data[partial]);
4561            } // Prepend
4562            else if (updateMode === ActionsUpdateMode.prepend) {
4563              el.insertAdjacentHTML('afterBegin', data[partial]);
4564              runScriptsOnFragment(el, data[partial]);
4565            } // Insert
4566            else {
4567              _this5.delegate.notifyApplicationBeforeReplace(el);
4568
4569              el.innerHTML = data[partial];
4570              runScriptsOnElement(el);
4571            }
4572
4573            _this5.delegate.notifyApplicationAjaxUpdate(el, data, responseCode, xhr);
4574          });
4575        };
4576
4577        for (var partial in data) {
4578          _loop();
4579        } // Wait for update method to finish rendering from partial updates
4580
4581
4582        setTimeout(function () {
4583          _this5.delegate.notifyApplicationUpdateComplete(data, responseCode, xhr);
4584
4585          _this5.invoke('afterUpdate', [data, responseCode, xhr]);
4586
4587          _this5.invokeFunc('afterUpdateFunc', data);
4588        }, 0);
4589      }); // Handle redirect
4590
4591      if (data['X_OCTOBER_REDIRECT']) {
4592        this.delegate.toggleRedirect(data['X_OCTOBER_REDIRECT']);
4593      }
4594
4595      if (this.delegate.isRedirect) {
4596        this.invoke('handleRedirectResponse', [this.delegate.options.redirect]);
4597      } // Handle validation
4598
4599
4600      if (data['X_OCTOBER_ERROR_FIELDS']) {
4601        this.invoke('handleValidationMessage', [data['X_OCTOBER_ERROR_MESSAGE'], data['X_OCTOBER_ERROR_FIELDS']]);
4602      } // Handle asset injection
4603
4604
4605      if (data['X_OCTOBER_ASSETS']) {
4606        _asset_manager__WEBPACK_IMPORTED_MODULE_0__.AssetManager.load(data['X_OCTOBER_ASSETS'], function () {
4607          return updatePromise.resolve();
4608        });
4609      } else {
4610        updatePromise.resolve();
4611      }
4612
4613      return updatePromise;
4614    } // Custom function, download a file response from the server
4615
4616  }, {
4617    key: "handleFileDownload",
4618    value: function handleFileDownload(data, xhr) {
4619      if (this.options.browserTarget) {
4620        window.open(window.URL.createObjectURL(data), this.options.browserTarget);
4621        return;
4622      }
4623
4624      var fileName = typeof this.options.download === 'string' ? this.options.download : getFilenameFromHttpResponse(xhr);
4625
4626      if (!fileName) {
4627        return;
4628      }
4629
4630      var anchor = document.createElement('a');
4631      anchor.href = window.URL.createObjectURL(data);
4632      anchor.download = fileName;
4633      anchor.target = '_blank';
4634      anchor.click();
4635      window.URL.revokeObjectURL(anchor.href);
4636    } // Custom function, adds query data to the current URL
4637
4638  }, {
4639    key: "applyQueryToUrl",
4640    value: function applyQueryToUrl(queryData) {
4641      var searchParams = new URLSearchParams(window.location.search);
4642
4643      var _loop2 = function _loop2() {
4644        var key = _Object$keys[_i];
4645        var value = queryData[key];
4646
4647        if (Array.isArray(value)) {
4648          searchParams["delete"](key);
4649          searchParams["delete"]("".concat(key, "[]"));
4650          value.forEach(function (val) {
4651            return searchParams.append("".concat(key, "[]"), val);
4652          });
4653        } else if (value === null) {
4654          searchParams["delete"](key);
4655          searchParams["delete"]("".concat(key, "[]"));
4656        } else {
4657          searchParams.set(key, value);
4658        }
4659      };
4660
4661      for (var _i = 0, _Object$keys = Object.keys(queryData); _i < _Object$keys.length; _i++) {
4662        _loop2();
4663      }
4664
4665      var newUrl = window.location.pathname,
4666          queryStr = searchParams.toString();
4667
4668      if (queryStr) {
4669        newUrl += '?' + queryStr.replaceAll('%5B%5D=', '[]=');
4670      }
4671
4672      if (oc.useTurbo && oc.useTurbo()) {
4673        oc.visit(newUrl, {
4674          action: 'swap',
4675          scroll: false
4676        });
4677      } else {
4678        history.replaceState(null, '', newUrl); // Tracking referrer since document.referrer will not update
4679
4680        localStorage.setItem('ocPushStateReferrer', newUrl);
4681      }
4682    }
4683  }]);
4684
4685  return Actions;
4686}();
4687
4688function resolveSelectorResponse(selector, partialSelector) {
4689  // Look for AJAX partial selectors
4690  if (selector === true) {
4691    return document.querySelectorAll(partialSelector);
4692  } // Selector is DOM element
4693
4694
4695  if (typeof selector !== 'string') {
4696    return [selector];
4697  } // Invalid selector
4698
4699
4700  if (['#', '.', '@', '^', '!', '='].indexOf(selector.charAt(0)) === -1) {
4701    return [];
4702  } // Append, prepend, replace with or custom selector
4703
4704
4705  if (['@', '^', '!', '='].indexOf(selector.charAt(0)) !== -1) {
4706    selector = selector.substring(1);
4707  } // Empty selector remains
4708
4709
4710  if (!selector) {
4711    selector = partialSelector;
4712  }
4713
4714  return document.querySelectorAll(selector);
4715}
4716
4717function getSelectorUpdateMode(selector, el) {
4718  // Look at selector prefix
4719  if (typeof selector === 'string') {
4720    if (selector.charAt(0) === '!') {
4721      return ActionsUpdateMode.replaceWith;
4722    }
4723
4724    if (selector.charAt(0) === '@') {
4725      return ActionsUpdateMode.append;
4726    }
4727
4728    if (selector.charAt(0) === '^') {
4729      return ActionsUpdateMode.prepend;
4730    }
4731  } // Look at element dataset
4732
4733
4734  if (el.dataset.ajaxUpdateMode !== undefined) {
4735    return el.dataset.ajaxUpdateMode;
4736  } // Default mode
4737
4738
4739  return ActionsUpdateMode.update;
4740}
4740 // Replaces blocked scripts with fresh nodes
4741
4742
4743function runScriptsOnElement(el) {
4744  Array.from(el.querySelectorAll('script')).forEach(function (oldScript) {
4745    var newScript = document.createElement('script');
4746    Array.from(oldScript.attributes).forEach(function (attr) {
4747      return newScript.setAttribute(attr.name, attr.value);
4748    });
4749    newScript.appendChild(document.createTextNode(oldScript.innerHTML));
4750    oldScript.parentNode.replaceChild(newScript, oldScript);
4751  });
4752} // Runs scripts on a fragment inside a container
4753
4754
4755function runScriptsOnFragment(container, html) {
4756  var div = document.createElement('div');
4757  div.innerHTML = html;
4758  Array.from(div.querySelectorAll('script')).forEach(function (oldScript) {
4759    var newScript = document.createElement('script');
4760    Array.from(oldScript.attributes).forEach(function (attr) {
4761      return newScript.setAttribute(attr.name, attr.value);
4762    });
4763    newScript.appendChild(document.createTextNode(oldScript.innerHTML));
4764    container.appendChild(newScript);
4765    container.removeChild(newScript);
4766  });
4767}
4768
4769function getFilenameFromHttpResponse(xhr) {
4770  var contentDisposition = xhr.getResponseHeader('Content-Disposition');
4771
4772  if (!contentDisposition) {
4773    return null;
4774  }
4775
4776  var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/g;
4777  var match = null;
4778  var tmpMatch = null;
4779
4780  while ((tmpMatch = filenameRegex.exec(contentDisposition)) !== null) {
4781    match = tmpMatch;
4782  }
4783
4784  if (match !== null && match[1]) {
4785    // Decide ASCII or UTF-8 file name
4786    return /filename[^;*=\n]*\*=[^']*''/.exec(match[0]) === null ? match[1].replace(/['"]/g, '') : decodeURIComponent(match[1].substring(match[1].indexOf("''") + 2));
4787  }
4788
4789  return null;
4790}
4791
4792/***/ }),
4793
4794/***/ "./src/request/asset-manager.js":
4795/*!**************************************!*\
4796  !*** ./src/request/asset-manager.js ***!
4797  \**************************************/
4798/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4799
4800__webpack_require__.r(__webpack_exports__);
4801/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4802/* harmony export */   "AssetManager": () => (/* binding */ AssetManager)
4803/* harmony export */ });
4804function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4805
4806function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
4807
4808function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
4809
4810var AssetManager = /*#__PURE__*/function () {
4811  function AssetManager() {
4812    _classCallCheck(this, AssetManager);
4813  }
4814
4815  _createClass(AssetManager, [{
4816    key: "loadCollection",
4817    value: function loadCollection(collection, callback) {
4818      var self = this,
4819          jsList = collection.js ? collection.js : [],
4820          cssList = collection.css ? collection.css : [],
4821          imgList = collection.img ? collection.img : [];
4822      jsList = assGrep(jsList, function (item) {
4823        return !document.querySelector('head script[src="' + item + '"]');
4824      });
4825      cssList = assGrep(cssList, function (item) {
4826        return !document.querySelector('head link[href="' + item + '"]');
4827      });
4828      var cssCounter = 0,
4829          jsLoaded = false,
4830          imgLoaded = false;
4831
4832      if (jsList.length === 0 && cssList.length === 0 && imgList.length === 0) {
4833        callback && callback();
4834        return;
4835      }
4836
4837      this.loadJavaScript(jsList, function () {
4838        jsLoaded = true;
4839        checkLoaded();
4840      });
4841      cssList.forEach(function (source) {
4842        self.loadStyleSheet(source, function () {
4843          cssCounter++;
4844          checkLoaded();
4845        });
4846      });
4847      this.loadImage(imgList, function () {
4848        imgLoaded = true;
4849        checkLoaded();
4850      });
4851
4852      function checkLoaded() {
4853        if (!imgLoaded) {
4854          return false;
4855        }
4856
4857        if (!jsLoaded) {
4858          return false;
4859        }
4860
4861        if (cssCounter < cssList.length) {
4862          return false;
4863        }
4864
4865        callback && callback();
4866      }
4867    } // Loads StyleSheet files
4868
4869  }, {
4870    key: "loadStyleSheet",
4871    value: function loadStyleSheet(source, callback) {
4872      var cssElement = document.createElement('link');
4873      cssElement.setAttribute('rel', 'stylesheet');
4874      cssElement.setAttribute('type', 'text/css');
4875      cssElement.setAttribute('href', source);
4876      cssElement.addEventListener('load', callback, false);
4877
4878      if (typeof cssElement != 'undefined') {
4879        document.getElementsByTagName('head')[0].appendChild(cssElement);
4880      }
4881
4882      return cssElement;
4883    } // Loads JavaScript files in sequence
4884
4885  }, {
4886    key: "loadJavaScript",
4887    value: function loadJavaScript(sources, callback) {
4888      if (sources.length <= 0) {
4889        return callback();
4890      }
4891
4892      var self = this,
4893          source = sources.shift(),
4894          jsElement = document.createElement('script');
4895      jsElement.setAttribute('type', 'text/javascript');
4896      jsElement.setAttribute('src', source);
4897      jsElement.addEventListener('load', function () {
4898        self.loadJavaScript(sources, callback);
4899      }, false);
4900
4901      if (typeof jsElement != 'undefined') {
4902        document.getElementsByTagName('head')[0].appendChild(jsElement);
4903      }
4904    } // Loads Image files
4905
4906  }, {
4907    key: "loadImage",
4908    value: function loadImage(sources, callback) {
4909      if (sources.length <= 0) {
4910        return callback();
4911      }
4912
4913      var loaded = 0;
4914      sources.forEach(function (source) {
4915        var img = new Image();
4916
4917        img.onload = function () {
4918          if (++loaded == sources.length && callback) {
4919            callback();
4920          }
4921        };
4922
4923        img.src = source;
4924      });
4925    }
4926  }], [{
4927    key: "load",
4928    value: function load(collection, callback) {
4929      return new AssetManager().loadCollection(collection, callback);
4930    }
4931  }]);
4932
4933  return AssetManager;
4934}();
4935
4936function assGrep(items, callback) {
4937  var filtered = [],
4938      len = items.length,
4939      i = 0;
4940
4941  for (i; i < len; i++) {
4942    if (callback(items[i])) {
4943      filtered.push(items[i]);
4944    }
4945  }
4946
4947  return filtered;
4948}
4949
4950/***/ }),
4951
4952/***/ "./src/request/data.js":
4953/*!*****************************!*\
4954  !*** ./src/request/data.js ***!
4955  \*****************************/
4956/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4957
4958__webpack_require__.r(__webpack_exports__);
4959/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4960/* harmony export */   "Data": () => (/* binding */ Data)
4961/* harmony export */ });
4962/* harmony import */ var _util_form_serializer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/form-serializer */ "./src/util/form-serializer.js");
4963function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4964
4965function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
4966
4967function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
4968
4969
4970var Data = /*#__PURE__*/function () {
4971  function Data(userData, targetEl, formEl) {
4972    _classCallCheck(this, Data);
4973
4974    this.userData = userData || {};
4975    this.targetEl = targetEl;
4976    this.formEl = formEl;
4977  } // Public
4978
4979
4980  _createClass(Data, [{
4981    key: "getRequestData",
4982    value: function getRequestData() {
4983      var requestData; // Serialize form
4984
4985      if (this.formEl) {
4986        requestData = new FormData(this.formEl);
4987      } else {
4988        requestData = new FormData();
4989      } // Add single input data
4990
4991
4992      this.appendSingleInputElement(requestData);
4993      return requestData;
4994    }
4995  }, {
4996    key: "getAsFormData",
4997    value: function getAsFormData() {
4998      return this.appendJsonToFormData(this.getRequestData(), this.userData);
4999    }
5000  }, {
5001    key: "getAsQueryString",
5002    value: function getAsQueryString() {
5003      return this.convertFormDataToQuery(this.getAsFormData());
5004    }
5005  }, {
5006    key: "getAsJsonData",
5007    value: function getAsJsonData() {
5008      return JSON.stringify(this.convertFormDataToJson(this.getAsFormData()));
5009    } // Private
5010
5011  }, {
5012    key: "appendSingleInputElement",
5013    value: function appendSingleInputElement(requestData) {
5014      // Has a form, no target element, or not a singular input
5015      if (this.formEl || !this.targetEl || !isElementInput(this.targetEl)) {
5016        return;
5017      } // No name or supplied by user data already
5018
5019
5020      var inputName = this.targetEl.name;
5021
5022      if (!inputName || this.userData[inputName] !== undefined) {
5023        return;
5024      } // Include files, if they are any
5025
5026
5027      if (this.targetEl.type === 'file') {
5028        this.targetEl.files.forEach(function (value) {
5029          requestData.append(inputName, value);
5030        });
5031      } else {
5032        requestData.append(inputName, this.targetEl.value);
5033      }
5034    }
5035  }, {
5036    key: "appendJsonToFormData",
5037    value: function appendJsonToFormData(formData, useJson, parentKey) {
5038      var self = this;
5039
5040      for (var key in useJson) {
5041        var fieldKey = key;
5042
5043        if (parentKey) {
5044          fieldKey = parentKey + '[' + key + ']';
5045        }
5046
5047        var value = useJson[key]; // Object
5048
5049        if (value && value.constructor === {}.constructor) {
5050          this.appendJsonToFormData(formData, value, fieldKey);
5051        } // Array
5052        else if (value && value.constructor === [].constructor) {
5053          value.forEach(function (v, i) {
5054            if (v.constructor === {}.constructor || v.constructor === [].constructor) {
5055              self.appendJsonToFormData(formData, v, fieldKey + '[' + i + ']');
5056            } else {
5057              formData.append(fieldKey + '[]', self.castJsonToFormData(v));
5058            }
5059          });
5060        } // Mixed
5061        else {
5062          formData.append(fieldKey, this.castJsonToFormData(value));
5063        }
5064      }
5065
5066      return formData;
5067    }
5068  }, {
5069    key: "convertFormDataToQuery",
5070    value: function convertFormDataToQuery(formData) {
5071      // Process to a flat object with array values
5072      var flatData = this.formDataToArray(formData); // Process HTML names to a query string
5073
5074      return Object.keys(flatData).map(function (key) {
5075        if (key.endsWith('[]')) {
5076          return flatData[key].map(function (val) {
5077            return encodeURIComponent(key) + '=' + encodeURIComponent(val);
5078          }).join('&');
5079        } else {
5080          return encodeURIComponent(key) + '=' + encodeURIComponent(flatData[key]);
5081        }
5082      }).join('&');
5083    }
5084  }, {
5085    key: "convertFormDataToJson",
5086    value: function convertFormDataToJson(formData) {
5087      // Process to a flat object with array values
5088      var flatData = this.formDataToArray(formData); // Process HTML names to a nested object
5089
5090      var jsonData = {};
5091
5092      for (var key in flatData) {
5093        _util_form_serializer__WEBPACK_IMPORTED_MODULE_0__.FormSerializer.assignToObj(jsonData, key, flatData[key]);
5094      }
5095
5096      return jsonData;
5097    }
5098  }, {
5099    key: "formDataToArray",
5100    value: function formDataToArray(formData) {
5101      return Object.fromEntries(Array.from(formData.keys()).map(function (key) {
5102        return [key, key.endsWith('[]') ? formData.getAll(key) : formData.getAll(key).pop()];
5103      }));
5104    }
5105  }, {
5106    key: "castJsonToFormData",
5107    value: function castJsonToFormData(val) {
5108      if (val === null) {
5109        return '';
5110      }
5111
5112      if (val === true) {
5113        return '1';
5114      }
5115
5116      if (val === false) {
5117        return '0';
5118      }
5119
5120      return val;
5121    }
5122  }]);
5123
5124  return Data;
5125}();
5126
5127function isElementInput(el) {
5128  return ['input', 'select', 'textarea'].includes((el.tagName || '').toLowerCase());
5129}
5130
5131/***/ }),
5132
5133/***/ "./src/request/index.js":
5134/*!******************************!*\
5135  !*** ./src/request/index.js ***!
5136  \******************************/
5137/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5138
5139__webpack_require__.r(__webpack_exports__);
5140/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5141/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5142/* harmony export */ });
5143/* harmony import */ var _asset_manager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./asset-manager */ "./src/request/asset-manager.js");
5144/* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./namespace */ "./src/request/namespace.js");
5145
5146
5147/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_namespace__WEBPACK_IMPORTED_MODULE_1__["default"]);
5148
5149if (!window.oc) {
5150  window.oc = {};
5151}
5152
5153if (!window.oc.AjaxRequest) {
5154  // Namespace
5155  window.oc.AjaxRequest = _namespace__WEBPACK_IMPORTED_MODULE_1__["default"]; // Asset manager
5156
5157  window.oc.AssetManager = _asset_manager__WEBPACK_IMPORTED_MODULE_0__.AssetManager; // Request without element
5158
5159  window.oc.ajax = _namespace__WEBPACK_IMPORTED_MODULE_1__["default"].send; // Request on element (framework can override)
5160
5161  if (!window.oc.request) {
5162    window.oc.request = _namespace__WEBPACK_IMPORTED_MODULE_1__["default"].sendElement;
5163  }
5164}
5165
5166/***/ }),
5167
5168/***/ "./src/request/namespace.js":
5169/*!**********************************!*\
5170  !*** ./src/request/namespace.js ***!
5171  \**********************************/
5172/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5173
5174__webpack_require__.r(__webpack_exports__);
5175/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5176/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5177/* harmony export */ });
5178/* harmony import */ var _request__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./request */ "./src/request/request.js");
5179
5180/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_request__WEBPACK_IMPORTED_MODULE_0__.Request);
5181
5182/***/ }),
5183
5184/***/ "./src/request/options.js":
5185/*!********************************!*\
5186  !*** ./src/request/options.js ***!
5187  \********************************/
5188/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5189
5190__webpack_require__.r(__webpack_exports__);
5191/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5192/* harmony export */   "Options": () => (/* binding */ Options)
5193/* harmony export */ });
5194function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
5195
5196function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5197
5198function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
5199
5200function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
5201
5202var Options = /*#__PURE__*/function () {
5203  function Options(handler, options) {
5204    _classCallCheck(this, Options);
5205
5206    if (!handler) {
5207      throw new Error('The request handler name is not specified.');
5208    }
5209
5210    if (!handler.match(/^(?:\w+\:{2})?on*/)) {
5211      throw new Error('Invalid handler name. The correct handler name format is: "onEvent".');
5212    }
5213
5214    if (typeof FormData === 'undefined') {
5215      throw new Error('The browser does not support the FormData interface.');
5216    }
5217
5218    this.options = options;
5219    this.handler = handler;
5220  }
5221
5222  _createClass(Options, [{
5223    key: "getRequestOptions",
5224    value: // Public
5225    function getRequestOptions() {
5226      return {
5227        method: 'POST',
5228        url: this.options.url ? this.options.url : window.location.href,
5229        headers: this.buildHeaders(),
5230        responseType: this.options.download === false ? '' : 'blob'
5231      };
5232    } // Private
5233
5234  }, {
5235    key: "buildHeaders",
5236    value: function buildHeaders() {
5237      var handler = this.handler,
5238          options = this.options;
5239      var headers = {
5240        'X-Requested-With': 'XMLHttpRequest',
5241        'X-OCTOBER-REQUEST-HANDLER': handler
5242      };
5243
5244      if (!options.files) {
5245        headers['Content-Type'] = options.bulk ? 'application/json' : 'application/x-www-form-urlencoded';
5246      }
5247
5248      if (options.flash) {
5249        headers['X-OCTOBER-REQUEST-FLASH'] = 1;
5250      }
5251
5252      if (options.partial) {
5253        headers['X-OCTOBER-REQUEST-PARTIAL'] = options.partial;
5254      }
5255
5256      var partials = this.extractPartials(options.update, options.partial);
5257
5258      if (partials) {
5259        headers['X-OCTOBER-REQUEST-PARTIALS'] = partials;
5260      }
5261
5262      var xsrfToken = this.getXSRFToken();
5263
5264      if (xsrfToken) {
5265        headers['X-XSRF-TOKEN'] = xsrfToken;
5266      }
5267
5268      var csrfToken = this.getCSRFToken();
5269
5270      if (csrfToken) {
5271        headers['X-CSRF-TOKEN'] = csrfToken;
5272      }
5273
5274      if (options.headers && options.headers.constructor === {}.constructor) {
5275        Object.assign(headers, options.headers);
5276      }
5277
5278      return headers;
5279    }
5280  }, {
5281    key: "extractPartials",
5282    value: function extractPartials() {
5283      var update = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5284      var selfPartial = arguments.length > 1 ? arguments[1] : undefined;
5285      var result = [];
5286
5287      if (update) {
5288        if (_typeof(update) !== 'object') {
5289          throw new Error('Invalid update value. The correct format is an object ({...})');
5290        }
5291
5292        for (var partial in update) {
5293          if (partial === '_self' && selfPartial) {
5294            result.push(selfPartial);
5295          } else {
5296            result.push(partial);
5297          }
5298        }
5299      }
5300
5301      return result.join('&');
5302    }
5303  }, {
5304    key: "getCSRFToken",
5305    value: function getCSRFToken() {
5306      var tag = document.querySelector('meta[name="csrf-token"]');
5307      return tag ? tag.getAttribute('content') : null;
5308    }
5309  }, {
5310    key: "getXSRFToken",
5311    value: function getXSRFToken() {
5312      var cookieValue = null;
5313
5314      if (document.cookie && document.cookie != '') {
5315        var cookies = document.cookie.split(';');
5316
5317        for (var i = 0; i < cookies.length; i++) {
5318          var cookie = cookies[i].replace(/^([\s]*)|([\s]*)$/g, '');
5319
5320          if (cookie.substring(0, 11) == 'XSRF-TOKEN' + '=') {
5321            cookieValue = decodeURIComponent(cookie.substring(11));
5322            break;
5323          }
5324        }
5325      }
5326
5327      return cookieValue;
5328    }
5329  }], [{
5330    key: "fetch",
5331    value: function fetch(handler, options) {
5332      return new this(handler, options).getRequestOptions();
5333    }
5334  }]);
5335
5336  return Options;
5337}();
5338
5339/***/ }),
5340
5341/***/ "./src/request/request.js":
5342/*!********************************!*\
5343  !*** ./src/request/request.js ***!
5344  \********************************/
5345/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5346
5347__webpack_require__.r(__webpack_exports__);
5348/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5349/* harmony export */   "Request": () => (/* binding */ Request)
5350/* harmony export */ });
5351/* harmony import */ var _options__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./options */ "./src/request/options.js");
5352/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./actions */ "./src/request/actions.js");
5353/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./data */ "./src/request/data.js");
5354/* harmony import */ var _util_http_request__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/http-request */ "./src/util/http-request.js");
5355/* harmony import */ var _util_deferred__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/deferred */ "./src/util/deferred.js");
5356/* harmony import */ var _extras_progress_bar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../extras/progress-bar */ "./src/extras/progress-bar.js");
5357/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util */ "./src/util/index.js");
5358function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5359
5360function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5361
5362function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5363
5364function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5365
5366function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
5367
5368function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
5369
5370
5371
5372
5373
5374
5375
5376
5377var Request = /*#__PURE__*/function () {
5378  function Request(element, handler, options) {
5379    var _this = this;
5380
5381    _classCallCheck(this, Request);
5382
5383    this.el = element;
5384    this.handler = handler;
5385    this.options = _objectSpread(_objectSpread({}, this.constructor.DEFAULTS), options || {});
5386    this.context = {
5387      el: element,
5388      handler: handler,
5389      options: this.options
5390    };
5391    this.progressBar = new _extras_progress_bar__WEBPACK_IMPORTED_MODULE_5__.ProgressBar();
5392
5393    this.showProgressBar = function () {
5394      _this.progressBar.show({
5395        cssClass: 'is-ajax'
5396      });
5397    };
5398  }
5399
5400  _createClass(Request, [{
5401    key: "start",
5402    value: function start() {
5403      // Setup
5404      if (!this.applicationAllowsSetup()) {
5405        return;
5406      }
5407
5408      this.initOtherElements();
5409      this.preprocessOptions(); // Prepare actions
5410
5411      this.actions = new _actions__WEBPACK_IMPORTED_MODULE_1__.Actions(this, this.context, this.options);
5412
5413      if (!this.validateClientSideForm() || !this.applicationAllowsRequest()) {
5414        return;
5415      } // Confirm before sending
5416
5417
5418      if (this.options.confirm && !this.actions.invoke('handleConfirmMessage', [this.options.confirm])) {
5419        return;
5420      } // Send request
5421
5422
5423      this.sendInternal();
5424      return this.options.async ? this.wrapInAsyncPromise(this.promise) : this.promise;
5425    }
5426  }, {
5427    key: "sendInternal",
5428    value: function sendInternal() {
5429      var _this2 = this;
5430
5431      // Prepare data
5432      var dataObj = new _data__WEBPACK_IMPORTED_MODULE_2__.Data(this.options.data, this.el, this.formEl);
5433      var data;
5434
5435      if (this.options.files) {
5436        data = dataObj.getAsFormData();
5437      } else if (this.options.bulk) {
5438        data = dataObj.getAsJsonData();
5439      } else {
5440        data = dataObj.getAsQueryString();
5441      } // Prepare query
5442
5443
5444      if (this.options.query) {
5445        this.actions.invoke('applyQueryToUrl', [this.options.query !== true ? this.options.query : JSON.parse(dataObj.getAsJsonData())]);
5446      } // Prepare request
5447
5448
5449      var _Options$fetch = _options__WEBPACK_IMPORTED_MODULE_0__.Options.fetch(this.handler, this.options),
5450          url = _Options$fetch.url,
5451          headers = _Options$fetch.headers,
5452          method = _Options$fetch.method,
5453          responseType = _Options$fetch.responseType;
5454
5455      this.request = new _util_http_request__WEBPACK_IMPORTED_MODULE_3__.HttpRequest(this, url, {
5456        method: method,
5457        headers: headers,
5458        responseType: responseType,
5459        data: data,
5460        trackAbort: true
5461      });
5462      this.promise = new _util_deferred__WEBPACK_IMPORTED_MODULE_4__.Deferred({
5463        delegate: this.request
5464      });
5465      this.isRedirect = this.options.redirect && this.options.redirect.length > 0; // Lifecycle events
5466
5467      this.notifyApplicationBeforeSend();
5468      this.notifyApplicationAjaxPromise();
5469      this.promise.fail(function (data, responseCode, xhr) {
5470        if (!_this2.isRedirect) {
5471          _this2.notifyApplicationAjaxFail(data, responseCode, xhr);
5472        }
5473      }).done(function (data, responseCode, xhr) {
5474        if (!_this2.isRedirect) {
5475          _this2.notifyApplicationAjaxDone(data, responseCode, xhr);
5476        }
5477      }).always(function (data, responseCode, xhr) {
5478        _this2.notifyApplicationAjaxAlways(data, responseCode, xhr);
5479      });
5480      this.request.send();
5481    }
5482  }, {
5483    key: "toggleRedirect",
5484    value: function toggleRedirect(redirectUrl) {
5485      if (!redirectUrl) {
5486        this.options.redirect = null;
5487        this.isRedirect = false;
5488      } else {
5489        this.options.redirect = redirectUrl;
5490        this.isRedirect = true;
5491      }
5492    }
5493  }, {
5494    key: "applicationAllowsSetup",
5495    value: function applicationAllowsSetup() {
5496      var event = this.notifyApplicationAjaxSetup();
5497      return !event.defaultPrevented;
5498    }
5499  }, {
5500    key: "applicationAllowsRequest",
5501    value: function applicationAllowsRequest() {
5502      var event = this.notifyApplicationBeforeRequest();
5503      return !event.defaultPrevented;
5504    }
5505  }, {
5506    key: "applicationAllowsUpdate",
5507    value: function applicationAllowsUpdate(data, responseCode, xhr) {
5508      var event = this.notifyApplicationBeforeUpdate(data, responseCode, xhr);
5509      return !event.defaultPrevented;
5510    }
5511  }, {
5512    key: "applicationAllowsError",
5513    value: function applicationAllowsError(message, responseCode, xhr) {
5514      var event = this.notifyApplicationRequestError(message, responseCode, xhr);
5515      return !event.defaultPrevented;
5516    } // Application events
5517
5518  }, {
5519    key: "notifyApplicationAjaxSetup",
5520    value: function notifyApplicationAjaxSetup() {
5521      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:setup', {
5522        target: this.el,
5523        detail: {
5524          context: this.context
5525        }
5526      });
5527    }
5528  }, {
5529    key: "notifyApplicationAjaxPromise",
5530    value: function notifyApplicationAjaxPromise() {
5531      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:promise', {
5532        target: this.el,
5533        detail: {
5534          context: this.context
5535        }
5536      });
5537    }
5538  }, {
5539    key: "notifyApplicationAjaxFail",
5540    value: function notifyApplicationAjaxFail(data, responseCode, xhr) {
5541      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:fail', {
5542        target: this.el,
5543        detail: {
5544          context: this.context,
5545          data: data,
5546          responseCode: responseCode,
5547          xhr: xhr
5548        }
5549      });
5550    }
5551  }, {
5552    key: "notifyApplicationAjaxDone",
5553    value: function notifyApplicationAjaxDone(data, responseCode, xhr) {
5554      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:done', {
5555        target: this.el,
5556        detail: {
5557          context: this.context,
5558          data: data,
5559          responseCode: responseCode,
5560          xhr: xhr
5561        }
5562      });
5563    }
5564  }, {
5565    key: "notifyApplicationAjaxAlways",
5566    value: function notifyApplicationAjaxAlways(data, responseCode, xhr) {
5567      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:always', {
5568        target: this.el,
5569        detail: {
5570          context: this.context,
5571          data: data,
5572          responseCode: responseCode,
5573          xhr: xhr
5574        }
5575      });
5576    }
5577  }, {
5578    key: "notifyApplicationAjaxUpdate",
5579    value: function notifyApplicationAjaxUpdate(target, data, responseCode, xhr) {
5580      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:update', {
5581        target: target,
5582        detail: {
5583          context: this.context,
5584          data: data,
5585          responseCode: responseCode,
5586          xhr: xhr
5587        }
5588      });
5589    }
5590  }, {
5591    key: "notifyApplicationBeforeRedirect",
5592    value: function notifyApplicationBeforeRedirect() {
5593      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:before-redirect', {
5594        target: this.el
5595      });
5596    }
5597  }, {
5598    key: "notifyApplicationBeforeRequest",
5599    value: function notifyApplicationBeforeRequest() {
5600      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:before-request', {
5601        target: this.triggerEl,
5602        detail: {
5603          context: this.context
5604        }
5605      });
5606    }
5607  }, {
5608    key: "notifyApplicationBeforeUpdate",
5609    value: function notifyApplicationBeforeUpdate(data, responseCode, xhr) {
5610      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:before-update', {
5611        target: this.triggerEl,
5612        detail: {
5613          context: this.context,
5614          data: data,
5615          responseCode: responseCode,
5616          xhr: xhr
5617        }
5618      });
5619    }
5620  }, {
5621    key: "notifyApplicationRequestSuccess",
5622    value: function notifyApplicationRequestSuccess(data, responseCode, xhr) {
5623      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:request-success', {
5624        target: this.triggerEl,
5625        detail: {
5626          context: this.context,
5627          data: data,
5628          responseCode: responseCode,
5629          xhr: xhr
5630        }
5631      });
5632    }
5633  }, {
5634    key: "notifyApplicationRequestError",
5635    value: function notifyApplicationRequestError(message, responseCode, xhr) {
5636      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:request-error', {
5637        target: this.triggerEl,
5638        detail: {
5639          context: this.context,
5640          message: message,
5641          responseCode: responseCode,
5642          xhr: xhr
5643        }
5644      });
5645    }
5646  }, {
5647    key: "notifyApplicationRequestComplete",
5648    value: function notifyApplicationRequestComplete(data, responseCode, xhr) {
5649      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:request-complete', {
5650        target: this.triggerEl,
5651        detail: {
5652          context: this.context,
5653          data: data,
5654          responseCode: responseCode,
5655          xhr: xhr
5656        }
5657      });
5658    }
5659  }, {
5660    key: "notifyApplicationBeforeValidate",
5661    value: function notifyApplicationBeforeValidate(message, fields) {
5662      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:before-validate', {
5663        target: this.triggerEl,
5664        detail: {
5665          context: this.context,
5666          message: message,
5667          fields: fields
5668        }
5669      });
5670    }
5671  }, {
5672    key: "notifyApplicationBeforeReplace",
5673    value: function notifyApplicationBeforeReplace(target) {
5674      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:before-replace', {
5675        target: target
5676      });
5677    } // Window-based events
5678
5679  }, {
5680    key: "notifyApplicationBeforeSend",
5681    value: function notifyApplicationBeforeSend() {
5682      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:before-send', {
5683        target: window,
5684        detail: {
5685          context: this.context
5686        }
5687      });
5688    }
5689  }, {
5690    key: "notifyApplicationUpdateComplete",
5691    value: function notifyApplicationUpdateComplete(data, responseCode, xhr) {
5692      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:update-complete', {
5693        target: window,
5694        detail: {
5695          context: this.context,
5696          data: data,
5697          responseCode: responseCode,
5698          xhr: xhr
5699        }
5700      });
5701    }
5702  }, {
5703    key: "notifyApplicationFieldInvalid",
5704    value: function notifyApplicationFieldInvalid(element, fieldName, errorMsg, isFirst) {
5705      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:invalid-field', {
5706        target: window,
5707        detail: {
5708          element: element,
5709          fieldName: fieldName,
5710          errorMsg: errorMsg,
5711          isFirst: isFirst
5712        }
5713      });
5714    }
5715  }, {
5716    key: "notifyApplicationConfirmMessage",
5717    value: function notifyApplicationConfirmMessage(message, promise) {
5718      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:confirm-message', {
5719        target: window,
5720        detail: {
5721          message: message,
5722          promise: promise
5723        }
5724      });
5725    }
5726  }, {
5727    key: "notifyApplicationErrorMessage",
5728    value: function notifyApplicationErrorMessage(message) {
5729      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)('ajax:error-message', {
5730        target: window,
5731        detail: {
5732          message: message
5733        }
5734      });
5735    }
5736  }, {
5737    key: "notifyApplicationCustomEvent",
5738    value: function notifyApplicationCustomEvent(name, data) {
5739      return (0,_util__WEBPACK_IMPORTED_MODULE_6__.dispatch)(name, {
5740        target: this.el,
5741        detail: data
5742      });
5743    } // HTTP request delegate
5744
5745  }, {
5746    key: "requestStarted",
5747    value: function requestStarted() {
5748      this.markAsProgress(true);
5749      this.toggleLoadingElement(true);
5750
5751      if (this.options.progressBar) {
5752        this.showProgressBarAfterDelay();
5753      }
5754
5755      this.actions.invoke('start', [this.request.xhr]);
5756    }
5757  }, {
5758    key: "requestProgressed",
5759    value: function requestProgressed(progress) {
5760      this.promise.notify(progress);
5761    }
5762  }, {
5763    key: "requestCompletedWithResponse",
5764    value: function requestCompletedWithResponse(response, statusCode) {
5765      this.actions.invoke('success', [response, statusCode, this.request.xhr]);
5766      this.actions.invoke('complete', [response, statusCode, this.request.xhr]);
5767      this.promise.resolve(response, statusCode, this.request.xhr);
5768    }
5769  }, {
5770    key: "requestFailedWithStatusCode",
5771    value: function requestFailedWithStatusCode(statusCode, response) {
5772      if (statusCode == _util_http_request__WEBPACK_IMPORTED_MODULE_3__.SystemStatusCode.userAborted) {
5773        this.actions.invoke('cancel', []);
5774      } else {
5775        this.actions.invoke('error', [response, statusCode, this.request.xhr]);
5776      }
5777
5778      this.actions.invoke('complete', [response, statusCode, this.request.xhr]);
5779      this.promise.reject(response, statusCode, this.request.xhr);
5780    }
5781  }, {
5782    key: "requestFinished",
5783    value: function requestFinished() {
5784      this.markAsProgress(false);
5785      this.toggleLoadingElement(false);
5786
5787      if (this.options.progressBar) {
5788        this.hideProgressBar();
5789      }
5790    } // Private
5791
5792  }, {
5793    key: "initOtherElements",
5794    value: function initOtherElements() {
5795      if (typeof this.options.form === 'string') {
5796        this.formEl = document.querySelector(this.options.form);
5797      } else if (this.options.form) {
5798        this.formEl = this.options.form;
5799      } else {
5800        this.formEl = this.el && this.el !== document ? this.el.closest('form') : null;
5801      }
5802
5803      this.triggerEl = this.formEl ? this.formEl : this.el;
5804      this.partialEl = this.el && this.el !== document ? this.el.closest('[data-ajax-partial]') : null;
5805      this.loadingEl = typeof this.options.loading === 'string' ? document.querySelector(this.options.loading) : this.options.loading;
5806    }
5807  }, {
5808    key: "preprocessOptions",
5809    value: function preprocessOptions() {
5810      // Partial mode
5811      if (this.options.partial === undefined && this.partialEl && this.partialEl.dataset.ajaxPartial !== undefined) {
5812        this.options.partial = this.partialEl.dataset.ajaxPartial || true;
5813      }
5814    }
5815  }, {
5816    key: "validateClientSideForm",
5817    value: function validateClientSideForm() {
5818      if (this.options.browserValidate && typeof document.createElement('input').reportValidity === 'function' && this.formEl && !this.formEl.checkValidity()) {
5819        this.formEl.reportValidity();
5820        return false;
5821      }
5822
5823      return true;
5824    }
5825  }, {
5826    key: "toggleLoadingElement",
5827    value: function toggleLoadingElement(isLoading) {
5828      if (!this.loadingEl) {
5829        return;
5830      }
5831
5832      if (typeof this.loadingEl.show !== 'function' || typeof this.loadingEl.hide !== 'function') {
5833        this.loadingEl.style.display = isLoading ? 'block' : 'none';
5834        return;
5835      }
5836
5837      if (isLoading) {
5838        this.loadingEl.show();
5839      } else {
5840        this.loadingEl.hide();
5841      }
5842    }
5843  }, {
5844    key: "showProgressBarAfterDelay",
5845    value: function showProgressBarAfterDelay() {
5846      this.progressBar.setValue(0);
5847      this.progressBarTimeout = window.setTimeout(this.showProgressBar, this.options.progressBarDelay);
5848    }
5849  }, {
5850    key: "hideProgressBar",
5851    value: function hideProgressBar() {
5852      this.progressBar.setValue(100);
5853      this.progressBar.hide();
5854
5855      if (this.progressBarTimeout != null) {
5856        window.clearTimeout(this.progressBarTimeout);
5857        delete this.progressBarTimeout;
5858      }
5859    }
5860  }, {
5861    key: "markAsProgress",
5862    value: function markAsProgress(isLoading) {
5863      if (isLoading) {
5864        document.documentElement.setAttribute('data-ajax-progress', '');
5865
5866        if (this.formEl) {
5867          this.formEl.setAttribute('data-ajax-progress', this.handler);
5868        }
5869      } else {
5870        document.documentElement.removeAttribute('data-ajax-progress');
5871
5872        if (this.formEl) {
5873          this.formEl.removeAttribute('data-ajax-progress');
5874        }
5875      }
5876    }
5877  }, {
5878    key: "wrapInAsyncPromise",
5879    value: function wrapInAsyncPromise(requestPromise) {
5880      return new Promise(function (resolve, reject, onCancel) {
5881        requestPromise.fail(function (data) {
5882          reject(data);
5883        }).done(function (data) {
5884          resolve(data);
5885        });
5886
5887        if (onCancel) {
5888          onCancel(function () {
5889            requestPromise.abort();
5890          });
5891        }
5892      });
5893    }
5894  }], [{
5895    key: "DEFAULTS",
5896    get: function get() {
5897      return {
5898        handler: null,
5899        update: {},
5900        files: false,
5901        bulk: false,
5902        download: false,
5903        browserTarget: null,
5904        browserValidate: false,
5905        browserRedirectBack: false,
5906        progressBarDelay: 500,
5907        progressBar: null
5908      };
5909    }
5910  }, {
5911    key: "send",
5912    value: function send(handler, options) {
5913      return new Request(document, handler, options).start();
5914    }
5915  }, {
5916    key: "sendElement",
5917    value: function sendElement(element, handler, options) {
5918      if (typeof element === 'string') {
5919        element = document.querySelector(element);
5920      }
5921
5922      return new Request(element, handler, options).start();
5923    }
5924  }]);
5925
5926  return Request;
5927}();
5928
5929/***/ }),
5930
5931/***/ "./src/turbo/browser-adapter.js":
5932/*!**************************************!*\
5933  !*** ./src/turbo/browser-adapter.js ***!
5934  \**************************************/
5935/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5936
5937__webpack_require__.r(__webpack_exports__);
5938/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5939/* harmony export */   "BrowserAdapter": () => (/* binding */ BrowserAdapter)
5940/* harmony export */ });
5941/* harmony import */ var _util_http_request__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/http-request */ "./src/util/http-request.js");
5942/* harmony import */ var _extras_progress_bar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../extras/progress-bar */ "./src/extras/progress-bar.js");
5943/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util */ "./src/util/index.js");
5944function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5945
5946function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
5947
5948function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
5949
5950
5951
5952
5953var BrowserAdapter = /*#__PURE__*/function () {
5954  function BrowserAdapter(controller) {
5955    var _this = this;
5956
5957    _classCallCheck(this, BrowserAdapter);
5958
5959    this.progressBar = new _extras_progress_bar__WEBPACK_IMPORTED_MODULE_1__.ProgressBar();
5960
5961    this.showProgressBar = function () {
5962      _this.progressBar.show({
5963        cssClass: 'is-turbo'
5964      });
5965    };
5966
5967    this.controller = controller;
5968  }
5969
5970  _createClass(BrowserAdapter, [{
5971    key: "visitProposedToLocationWithAction",
5972    value: function visitProposedToLocationWithAction(location, action) {
5973      var restorationIdentifier = (0,_util__WEBPACK_IMPORTED_MODULE_2__.uuid)();
5974      this.controller.startVisitToLocationWithAction(location, action, restorationIdentifier);
5975    }
5976  }, {
5977    key: "visitStarted",
5978    value: function visitStarted(visit) {
5979      visit.issueRequest();
5980      visit.changeHistory();
5981      visit.goToSamePageAnchor();
5982      visit.loadCachedSnapshot();
5983    }
5984  }, {
5985    key: "visitRequestStarted",
5986    value: function visitRequestStarted(visit) {
5987      this.progressBar.setValue(0);
5988
5989      if (visit.hasCachedSnapshot() || visit.action != 'restore') {
5990        this.showProgressBarAfterDelay();
5991      } else {
5992        this.showProgressBar();
5993      }
5994    }
5995  }, {
5996    key: "visitRequestProgressed",
5997    value: function visitRequestProgressed(visit) {
5998      this.progressBar.setValue(visit.progress);
5999    }
6000  }, {
6001    key: "visitRequestCompleted",
6002    value: function visitRequestCompleted(visit) {
6003      visit.loadResponse();
6004    }
6005  }, {
6006    key: "visitRequestFailedWithStatusCode",
6007    value: function visitRequestFailedWithStatusCode(visit, statusCode) {
6008      switch (statusCode) {
6009        case _util_http_request__WEBPACK_IMPORTED_MODULE_0__.SystemStatusCode.networkFailure:
6010        case _util_http_request__WEBPACK_IMPORTED_MODULE_0__.SystemStatusCode.timeoutFailure:
6011        case _util_http_request__WEBPACK_IMPORTED_MODULE_0__.SystemStatusCode.contentTypeMismatch:
6012        case _util_http_request__WEBPACK_IMPORTED_MODULE_0__.SystemStatusCode.userAborted:
6013          return this.reload();
6014
6015        default:
6016          return visit.loadResponse();
6017      }
6018    }
6019  }, {
6020    key: "visitRequestFinished",
6021    value: function visitRequestFinished(visit) {
6022      this.hideProgressBar();
6023    }
6024  }, {
6025    key: "visitCompleted",
6026    value: function visitCompleted(visit) {
6027      visit.followRedirect();
6028    }
6029  }, {
6030    key: "pageInvalidated",
6031    value: function pageInvalidated() {
6032      this.reload();
6033    }
6034  }, {
6035    key: "visitFailed",
6036    value: function visitFailed(visit) {}
6037  }, {
6038    key: "visitRendered",
6039    value: function visitRendered(visit) {} // Private
6040
6041  }, {
6042    key: "showProgressBarAfterDelay",
6043    value: function showProgressBarAfterDelay() {
6044      if (this.controller.progressBarVisible) {
6045        this.progressBarTimeout = window.setTimeout(this.showProgressBar, this.controller.progressBarDelay);
6046      }
6047    }
6048  }, {
6049    key: "hideProgressBar",
6050    value: function hideProgressBar() {
6051      if (this.controller.progressBarVisible) {
6052        this.progressBar.hide();
6053
6054        if (this.progressBarTimeout !== null) {
6055          window.clearTimeout(this.progressBarTimeout);
6056          delete this.progressBarTimeout;
6057        }
6058      }
6059    }
6060  }, {
6061    key: "reload",
6062    value: function reload() {
6063      window.location.reload();
6064    }
6065  }]);
6066
6067  return BrowserAdapter;
6068}();
6069
6070/***/ }),
6071
6072/***/ "./src/turbo/controller.js":
6073/*!*********************************!*\
6074  !*** ./src/turbo/controller.js ***!
6075  \*********************************/
6076/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6077
6078__webpack_require__.r(__webpack_exports__);
6079/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6080/* harmony export */   "Controller": () => (/* binding */ Controller)
6081/* harmony export */ });
6082/* harmony import */ var _browser_adapter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./browser-adapter */ "./src/turbo/browser-adapter.js");
6083/* harmony import */ var _history__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./history */ "./src/turbo/history.js");
6084/* harmony import */ var _location__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./location */ "./src/turbo/location.js");
6085/* harmony import */ var _scroll_manager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scroll-manager */ "./src/turbo/scroll-manager.js");
6086/* harmony import */ var _snapshot_cache__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./snapshot-cache */ "./src/turbo/snapshot-cache.js");
6087/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util */ "./src/util/index.js");
6088/* harmony import */ var _view__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./view */ "./src/turbo/view.js");
6089/* harmony import */ var _visit__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./visit */ "./src/turbo/visit.js");
6090function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6091
6092function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6093
6094function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6095
6096function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6097
6098function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6099
6100function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110var Controller = /*#__PURE__*/function () {
6111  function Controller() {
6112    var _this = this;
6113
6114    _classCallCheck(this, Controller);
6115
6116    this.adapter = new _browser_adapter__WEBPACK_IMPORTED_MODULE_0__.BrowserAdapter(this);
6117    this.history = new _history__WEBPACK_IMPORTED_MODULE_1__.History(this);
6118    this.restorationData = {};
6119    this.scrollManager = new _scroll_manager__WEBPACK_IMPORTED_MODULE_3__.ScrollManager(this);
6120    this.useScroll = true;
6121    this.view = new _view__WEBPACK_IMPORTED_MODULE_6__.View(this);
6122    this.cache = new _snapshot_cache__WEBPACK_IMPORTED_MODULE_4__.SnapshotCache(10);
6123    this.enabled = true;
6124    this.pendingAssets = 0;
6125    this.progressBarDelay = 500;
6126    this.progressBarVisible = true;
6127    this.started = false;
6128    this.uniqueInlineScripts = [];
6129    this.currentVisit = null;
6130    this.historyVisit = null;
6131    this.pageIsReady = false; // Event handlers
6132
6133    this.pageLoaded = function () {
6134      _this.pageIsReady = true;
6135      _this.lastRenderedLocation = _this.location;
6136
6137      _this.notifyApplicationAfterPageLoad();
6138
6139      _this.notifyApplicationAfterPageAndScriptsLoad();
6140
6141      _this.observeInlineScripts();
6142    };
6143
6144    this.clickCaptured = function () {
6145      removeEventListener('click', _this.clickBubbled, false);
6146      addEventListener('click', _this.clickBubbled, false);
6147    };
6148
6149    this.clickBubbled = function (event) {
6150      if (_this.enabled && _this.clickEventIsSignificant(event)) {
6151        var link = _this.getVisitableLinkForTarget(event.target);
6152
6153        if (link) {
6154          var location = _this.getVisitableLocationForLink(link);
6155
6156          if (location && _this.applicationAllowsFollowingLinkToLocation(link, location)) {
6157            event.preventDefault();
6158
6159            var action = _this.getActionForLink(link);
6160
6161            var scroll = _this.useScrollForLink(link);
6162
6163            _this.visit(location, {
6164              action: action,
6165              scroll: scroll
6166            });
6167          }
6168        }
6169      }
6170    };
6171  }
6172
6173  _createClass(Controller, [{
6174    key: "start",
6175    value: function start() {
6176      if (Controller.supported && !this.started) {
6177        addEventListener('click', this.clickCaptured, true);
6178        addEventListener('DOMContentLoaded', this.pageLoaded, false);
6179        this.scrollManager.start();
6180        this.startHistory();
6181        this.started = true;
6182        this.enabled = this.documentIsEnabled();
6183      }
6184    }
6185  }, {
6186    key: "disable",
6187    value: function disable() {
6188      this.enabled = false;
6189    }
6190  }, {
6191    key: "stop",
6192    value: function stop() {
6193      if (this.started) {
6194        removeEventListener('click', this.clickCaptured, true);
6195        removeEventListener('DOMContentLoaded', this.pageLoaded, false);
6196        this.scrollManager.stop();
6197        this.stopHistory();
6198        this.started = false;
6199      }
6200    }
6201  }, {
6202    key: "isEnabled",
6203    value: function isEnabled() {
6204      return this.started && this.enabled;
6205    }
6206  }, {
6207    key: "pageReady",
6208    value: function pageReady() {
6209      var _this2 = this;
6210
6211      return new Promise(function (resolve) {
6212        if (!_this2.pageIsReady) {
6213          addEventListener('render', function () {
6214            return resolve();
6215          }, {
6216            once: true
6217          });
6218        } else {
6219          resolve();
6220        }
6221      });
6222    }
6223  }, {
6224    key: "clearCache",
6225    value: function clearCache() {
6226      this.cache = new _snapshot_cache__WEBPACK_IMPORTED_MODULE_4__.SnapshotCache(10);
6227    }
6228  }, {
6229    key: "visit",
6230    value: function visit(location) {
6231      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
6232      location = _location__WEBPACK_IMPORTED_MODULE_2__.Location.wrap(location);
6233      var action = options.action || 'advance';
6234
6235      if (this.applicationAllowsVisitingLocation(location, action)) {
6236        if (this.locationIsVisitable(location)) {
6237          this.useScroll = options.scroll !== false;
6238          this.adapter.visitProposedToLocationWithAction(location, action);
6239        } else {
6240          window.location.href = location.toString();
6241        }
6242      }
6243    }
6244  }, {
6245    key: "startVisitToLocationWithAction",
6246    value: function startVisitToLocationWithAction(location, action, restorationIdentifier) {
6247      if (Controller.supported) {
6248        var restorationData = this.getRestorationDataForIdentifier(restorationIdentifier);
6249        this.startVisit(_location__WEBPACK_IMPORTED_MODULE_2__.Location.wrap(location), action, {
6250          restorationData: restorationData
6251        });
6252      } else {
6253        window.location.href = location.toString();
6254      }
6255    }
6256  }, {
6257    key: "setProgressBarVisible",
6258    value: function setProgressBarVisible(value) {
6259      this.progressBarVisible = value;
6260    }
6261  }, {
6262    key: "setProgressBarDelay",
6263    value: function setProgressBarDelay(delay) {
6264      this.progressBarDelay = delay;
6265    } // History
6266
6267  }, {
6268    key: "startHistory",
6269    value: function startHistory() {
6270      this.location = _location__WEBPACK_IMPORTED_MODULE_2__.Location.currentLocation;
6271      this.restorationIdentifier = (0,_util__WEBPACK_IMPORTED_MODULE_5__.uuid)();
6272      this.history.start();
6273      this.history.replace(this.location, this.restorationIdentifier);
6274    }
6275  }, {
6276    key: "stopHistory",
6277    value: function stopHistory() {
6278      this.history.stop();
6279    }
6280  }, {
6281    key: "getLastVisitUrl",
6282    value: function getLastVisitUrl() {
6283      if (this.historyVisit) {
6284        return this.historyVisit.referrer.absoluteURL;
6285      }
6286    }
6287  }, {
6288    key: "pushHistoryWithLocationAndRestorationIdentifier",
6289    value: function pushHistoryWithLocationAndRestorationIdentifier(locatable, restorationIdentifier) {
6290      this.historyVisit = this.currentVisit;
6291      this.location = _location__WEBPACK_IMPORTED_MODULE_2__.Location.wrap(locatable);
6292      this.restorationIdentifier = restorationIdentifier;
6293      this.history.push(this.location, this.restorationIdentifier);
6294    }
6295  }, {
6296    key: "replaceHistoryWithLocationAndRestorationIdentifier",
6297    value: function replaceHistoryWithLocationAndRestorationIdentifier(locatable, restorationIdentifier) {
6298      this.location = _location__WEBPACK_IMPORTED_MODULE_2__.Location.wrap(locatable);
6299      this.restorationIdentifier = restorationIdentifier;
6300      this.history.replace(this.location, this.restorationIdentifier);
6301    } // History delegate
6302
6303  }, {
6304    key: "historyPoppedToLocationWithRestorationIdentifier",
6305    value: function historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {
6306      if (this.enabled) {
6307        this.location = location;
6308        this.restorationIdentifier = restorationIdentifier;
6309        var restorationData = this.getRestorationDataForIdentifier(restorationIdentifier);
6310        this.startVisit(location, 'restore', {
6311          restorationIdentifier: restorationIdentifier,
6312          restorationData: restorationData,
6313          historyChanged: true
6314        });
6315      } else {
6316        this.adapter.pageInvalidated();
6317      }
6318    } // Snapshot cache
6319
6320  }, {
6321    key: "getCachedSnapshotForLocation",
6322    value: function getCachedSnapshotForLocation(location) {
6323      var snapshot = this.cache.get(location);
6324      return snapshot ? snapshot.clone() : snapshot;
6325    }
6326  }, {
6327    key: "shouldCacheSnapshot",
6328    value: function shouldCacheSnapshot() {
6329      return this.view.getSnapshot().isCacheable();
6330    }
6331  }, {
6332    key: "cacheSnapshot",
6333    value: function cacheSnapshot() {
6334      var _this3 = this;
6335
6336      if (this.shouldCacheSnapshot()) {
6337        this.notifyApplicationBeforeCachingSnapshot();
6338        var snapshot = this.view.getSnapshot();
6339        var location = this.lastRenderedLocation || _location__WEBPACK_IMPORTED_MODULE_2__.Location.currentLocation;
6340        (0,_util__WEBPACK_IMPORTED_MODULE_5__.defer)(function () {
6341          return _this3.cache.put(location, snapshot.clone());
6342        });
6343      }
6344    } // Scrolling
6345
6346  }, {
6347    key: "scrollToAnchor",
6348    value: function scrollToAnchor(anchor) {
6349      var element = this.view.getElementForAnchor(anchor);
6350
6351      if (element) {
6352        this.scrollToElement(element);
6353      } else {
6354        this.scrollToPosition({
6355          x: 0,
6356          y: 0
6357        });
6358      }
6359    }
6360  }, {
6361    key: "scrollToElement",
6362    value: function scrollToElement(element) {
6363      this.scrollManager.scrollToElement(element);
6364    }
6365  }, {
6366    key: "scrollToPosition",
6367    value: function scrollToPosition(position) {
6368      this.scrollManager.scrollToPosition(position);
6369    } // Scroll manager delegate
6370
6371  }, {
6372    key: "scrollPositionChanged",
6373    value: function scrollPositionChanged(position) {
6374      var restorationData = this.getCurrentRestorationData();
6375      restorationData.scrollPosition = position;
6376    } // Pending asset management
6377
6378  }, {
6379    key: "incrementPendingAsset",
6380    value: function incrementPendingAsset() {
6381      this.pendingAssets++;
6382    }
6383  }, {
6384    key: "decrementPendingAsset",
6385    value: function decrementPendingAsset() {
6386      this.pendingAssets--;
6387
6388      if (this.pendingAssets === 0) {
6389        this.pageIsReady = true;
6390        this.notifyApplicationAfterPageAndScriptsLoad();
6391        this.notifyApplicationAfterLoadScripts();
6392      }
6393    } // View
6394
6395  }, {
6396    key: "render",
6397    value: function render(options, callback) {
6398      this.view.render(options, callback);
6399    }
6400  }, {
6401    key: "viewInvalidated",
6402    value: function viewInvalidated() {
6403      this.adapter.pageInvalidated();
6404    }
6405  }, {
6406    key: "viewAllowsImmediateRender",
6407    value: function viewAllowsImmediateRender(newBody, options) {
6408      this.pageIsReady = false;
6409      this.notifyApplicationUnload();
6410      var event = this.notifyApplicationBeforeRender(newBody, options);
6411      return !event.defaultPrevented;
6412    }
6413  }, {
6414    key: "viewRendered",
6415    value: function viewRendered() {
6416      this.lastRenderedLocation = this.currentVisit.location;
6417      this.notifyApplicationAfterRender();
6418    } // Inline script monitoring
6419
6420  }, {
6421    key: "observeInlineScripts",
6422    value: function observeInlineScripts() {
6423      var _this4 = this;
6424
6425      document.documentElement.querySelectorAll('script[data-turbo-eval-once]').forEach(function (el) {
6426        return _this4.applicationHasSeenInlineScript(el);
6427      });
6428    }
6429  }, {
6430    key: "applicationHasSeenInlineScript",
6431    value: function applicationHasSeenInlineScript(element) {
6432      var uid = element.getAttribute('data-turbo-eval-once');
6433
6434      if (!uid) {
6435        return false;
6436      }
6437
6438      var hasSeen = !!this.uniqueInlineScripts[uid];
6439      this.uniqueInlineScripts[uid] = true;
6440      return hasSeen;
6441    } // Application events
6442
6443  }, {
6444    key: "applicationAllowsFollowingLinkToLocation",
6445    value: function applicationAllowsFollowingLinkToLocation(link, location) {
6446      var event = this.notifyApplicationAfterClickingLinkToLocation(link, location);
6447      return !event.defaultPrevented;
6448    }
6449  }, {
6450    key: "applicationAllowsVisitingLocation",
6451    value: function applicationAllowsVisitingLocation(location, action) {
6452      var event = this.notifyApplicationBeforeVisitingLocation(location, action);
6453      return !event.defaultPrevented;
6454    }
6455  }, {
6456    key: "notifyApplicationAfterClickingLinkToLocation",
6457    value: function notifyApplicationAfterClickingLinkToLocation(link, location) {
6458      return (0,_util__WEBPACK_IMPORTED_MODULE_5__.dispatch)('page:click', {
6459        target: link,
6460        detail: {
6461          url: location.absoluteURL
6462        }
6463      });
6464    }
6465  }, {
6466    key: "notifyApplicationBeforeVisitingLocation",
6467    value: function notifyApplicationBeforeVisitingLocation(location, action) {
6468      return (0,_util__WEBPACK_IMPORTED_MODULE_5__.dispatch)('page:before-visit', {
6469        detail: {
6470          url: location.absoluteURL,
6471          action: action
6472        }
6473      });
6474    }
6475  }, {
6476    key: "notifyApplicationAfterVisitingLocation",
6477    value: function notifyApplicationAfterVisitingLocation(location) {
6478      return (0,_util__WEBPACK_IMPORTED_MODULE_5__.dispatch)('page:visit', {
6479        detail: {
6480          url: location.absoluteURL
6481        },
6482        cancelable: false
6483      });
6484    }
6485  }, {
6486    key: "notifyApplicationBeforeCachingSnapshot",
6487    value: function notifyApplicationBeforeCachingSnapshot() {
6488      return (0,_util__WEBPACK_IMPORTED_MODULE_5__.dispatch)('page:before-cache', {
6489        cancelable: false
6490      });
6491    }
6492  }, {
6493    key: "notifyApplicationBeforeRender",
6494    value: function notifyApplicationBeforeRender(newBody, options) {
6495      return (0,_util__WEBPACK_IMPORTED_MODULE_5__.dispatch)('page:before-render', {
6496        detail: _objectSpread({
6497          newBody: newBody
6498        }, options)
6499      });
6500    }
6501  }, {
6502    key: "notifyApplicationAfterRender",
6503    value: function notifyApplicationAfterRender() {
6504      return (0,_util__WEBPACK_IMPORTED_MODULE_5__.dispatch)('page:render', {
6505        cancelable: false
6506      });
6507    }
6508  }, {
6509    key: "notifyApplicationAfterPageLoad",
6510    value: function notifyApplicationAfterPageLoad() {
6511      var timing = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6512      return (0,_util__WEBPACK_IMPORTED_MODULE_5__.dispatch)('page:load', {
6513        detail: {
6514          url: this.location.absoluteURL,
6515          timing: timing
6516        },
6517        cancelable: false
6518      });
6519    }
6520  }, {
6521    key: "notifyApplicationAfterPageAndScriptsLoad",
6522    value: function notifyApplicationAfterPageAndScriptsLoad() {
6523      return (0,_util__WEBPACK_IMPORTED_MODULE_5__.dispatch)('page:loaded', {
6524        cancelable: false
6525      });
6526    }
6527  }, {
6528    key: "notifyApplicationAfterLoadScripts",
6529    value: function notifyApplicationAfterLoadScripts() {
6530      return (0,_util__WEBPACK_IMPORTED_MODULE_5__.dispatch)('page:updated', {
6531        cancelable: false
6532      });
6533    }
6534  }, {
6535    key: "notifyApplicationUnload",
6536    value: function notifyApplicationUnload() {
6537      return (0,_util__WEBPACK_IMPORTED_MODULE_5__.dispatch)('page:unload', {
6538        cancelable: false
6539      });
6540    } // Private
6541
6542  }, {
6543    key: "startVisit",
6544    value: function startVisit(location, action, properties) {
6545      if (this.currentVisit) {
6546        this.currentVisit.cancel();
6547      }
6548
6549      this.currentVisit = this.createVisit(location, action, properties);
6550      this.currentVisit.scrolled = !this.useScroll;
6551      this.currentVisit.start();
6552      this.notifyApplicationAfterVisitingLocation(location);
6553    }
6554  }, {
6555    key: "createVisit",
6556    value: function createVisit(location, action, properties) {
6557      var visit = new _visit__WEBPACK_IMPORTED_MODULE_7__.Visit(this, location, action, properties.restorationIdentifier);
6558      visit.restorationData = Object.assign({}, properties.restorationData || {});
6559      visit.historyChanged = !!properties.historyChanged;
6560      visit.referrer = this.location;
6561      return visit;
6562    }
6563  }, {
6564    key: "visitCompleted",
6565    value: function visitCompleted(visit) {
6566      this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());
6567
6568      if (this.pendingAssets === 0) {
6569        this.pageIsReady = true;
6570        this.notifyApplicationAfterPageAndScriptsLoad();
6571        this.notifyApplicationAfterLoadScripts();
6572      }
6573    }
6574  }, {
6575    key: "clickEventIsSignificant",
6576    value: function clickEventIsSignificant(event) {
6577      return !(event.target && event.target.isContentEditable || event.defaultPrevented || event.which > 1 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey);
6578    }
6579  }, {
6580    key: "getVisitableLinkForTarget",
6581    value: function getVisitableLinkForTarget(target) {
6582      if (target instanceof Element && this.elementIsVisitable(target)) {
6583        var container = target.closest('a[href]:not([download])');
6584
6585        if (container && container.getAttribute('target') && container.getAttribute('target') != '_self') {
6586          return null;
6587        }
6588
6589        return container;
6590      }
6591    }
6592  }, {
6593    key: "getVisitableLocationForLink",
6594    value: function getVisitableLocationForLink(link) {
6595      var location = new _location__WEBPACK_IMPORTED_MODULE_2__.Location(link.getAttribute('href') || '');
6596
6597      if (this.locationIsVisitable(location)) {
6598        return location;
6599      }
6600    }
6601  }, {
6602    key: "getActionForLink",
6603    value: function getActionForLink(link) {
6604      var action = link.getAttribute('data-turbo-action');
6605      return this.isAction(action) ? action : 'advance';
6606    }
6607  }, {
6608    key: "useScrollForLink",
6609    value: function useScrollForLink(link) {
6610      return link.getAttribute('data-turbo-no-scroll') === null;
6611    }
6612  }, {
6613    key: "isAction",
6614    value: function isAction(action) {
6615      return action == 'advance' || action == 'replace' || action == 'restore' || action == 'swap';
6616    }
6617  }, {
6618    key: "documentIsEnabled",
6619    value: function documentIsEnabled() {
6620      var meta = document.documentElement.querySelector('head meta[name="turbo-visit-control"]');
6621
6622      if (meta) {
6623        return meta.getAttribute('content') != 'disable';
6624      }
6625
6626      return true;
6627    }
6628  }, {
6629    key: "elementIsVisitable",
6630    value: function elementIsVisitable(element) {
6631      var container = element.closest('[data-turbo]');
6632
6633      if (container) {
6634        return container.getAttribute('data-turbo') != 'false';
6635      } else {
6636        return true;
6637      }
6638    }
6639  }, {
6640    key: "locationIsVisitable",
6641    value: function locationIsVisitable(location) {
6642      return location.isPrefixedBy(this.view.getRootLocation()) && location.isHTML();
6643    }
6644  }, {
6645    key: "locationIsSamePageAnchor",
6646    value: function locationIsSamePageAnchor(location) {
6647      return typeof location.anchor != 'undefined' && location.requestURL == this.location.requestURL;
6648    }
6649  }, {
6650    key: "getCurrentRestorationData",
6651    value: function getCurrentRestorationData() {
6652      return this.getRestorationDataForIdentifier(this.restorationIdentifier);
6653    }
6654  }, {
6655    key: "getRestorationDataForIdentifier",
6656    value: function getRestorationDataForIdentifier(identifier) {
6657      if (!(identifier in this.restorationData)) {
6658        this.restorationData[identifier] = {};
6659      }
6660
6661      return this.restorationData[identifier];
6662    }
6663  }]);
6664
6665  return Controller;
6666}();
6667Controller.supported = !!(window.history.pushState && window.requestAnimationFrame && window.addEventListener);
6668
6669/***/ }),
6670
vendor: 5,292 bytes, lines 6671-6708
6671/***/ "./src/turbo/error-renderer.js":
6672/*!*************************************!*\
6673  !*** ./src/turbo/error-renderer.js ***!
6674  \*************************************/
6675/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6676
6677__webpack_require__.r(__webpack_exports__);
6678/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6679/* harmony export */   "ErrorRenderer": () => (/* binding */ ErrorRenderer)
6680/* harmony export */ });
6681/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderer */ "./src/turbo/renderer.js");
6682/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ "./src/util/index.js");
6683function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
6684
6685function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
6686
6687function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6688
6689function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
6690
6691function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6692
6693function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6694
6695function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
6696
6697function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
6698
6699function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
6700
6701function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
6702
6703function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
6704
6705function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
6706
6707function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
6708
6709function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
6710
6711
6712
6713var ErrorRenderer = /*#__PURE__*/function (_Renderer) {
6714  _inherits(ErrorRenderer, _Renderer);
6715
6716  var _super = _createSuper(ErrorRenderer);
6717
6718  function ErrorRenderer(delegate, html) {
6719    var _this;
6720
6721    _classCallCheck(this, ErrorRenderer);
6722
6723    _this = _super.call(this);
6724    _this.delegate = delegate;
6725
6726    _this.htmlElement = function () {
6727      var htmlElement = document.createElement('html');
6728      htmlElement.innerHTML = html;
6729      return htmlElement;
6730    }();
6731
6732    _this.newHead = _this.htmlElement.querySelector('head') || document.createElement('head');
6733    _this.newBody = _this.htmlElement.querySelector('body') || document.createElement('body');
6734    return _this;
6735  }
6736
6737  _createClass(ErrorRenderer, [{
6738    key: "render",
6739    value: function render(callback) {
6740      var _this2 = this;
6741
6742      this.renderView(function () {
6743        _this2.replaceHeadAndBody();
6744
6745        _this2.activateBodyScriptElements();
6746
6747        callback();
6748      });
6749    }
6750  }, {
6751    key: "replaceHeadAndBody",
6752    value: function replaceHeadAndBody() {
6753      var _document = document,
6754          documentElement = _document.documentElement,
6755          head = _document.head,
6756          body = _document.body;
6757      documentElement.replaceChild(this.newHead, head);
6758      documentElement.replaceChild(this.newBody, body);
6759    }
6760  }, {
6761    key: "activateBodyScriptElements",
6762    value: function activateBodyScriptElements() {
6763      var _iterator = _createForOfIteratorHelper(this.getScriptElements()),
6764          _step;
6765
6766      try {
6767        for (_iterator.s(); !(_step = _iterator.n()).done;) {
6768          var replaceableElement = _step.value;
6769          var parentNode = replaceableElement.parentNode;
6770
6771          if (parentNode) {
6772            var element = this.createScriptElement(replaceableElement);
6773            parentNode.replaceChild(element, replaceableElement);
6774          }
6775        }
6776      } catch (err) {
6777        _iterator.e(err);
6778      } finally {
6779        _iterator.f();
6780      }
6781    }
6782  }, {
6783    key: "getScriptElements",
6784    value: function getScriptElements() {
6785      return (0,_util__WEBPACK_IMPORTED_MODULE_1__.array)(document.documentElement.querySelectorAll('script'));
6786    }
6787  }], [{
6788    key: "render",
6789    value: function render(delegate, callback, html) {
6790      return new this(delegate, html).render(callback);
6791    }
6792  }]);
6793
6794  return ErrorRenderer;
6795}(_renderer__WEBPACK_IMPORTED_MODULE_0__.Renderer);
6796
6797/***/ }),
6798
6799/***/ "./src/turbo/head-details.js":
6800/*!***********************************!*\
6801  !*** ./src/turbo/head-details.js ***!
6802  \***********************************/
6803/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6804
6805__webpack_require__.r(__webpack_exports__);
6806/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6807/* harmony export */   "HeadDetails": () => (/* binding */ HeadDetails)
6808/* harmony export */ });
6809/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ "./src/util/index.js");
6810function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
6811
6812function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6813
6814function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
6815
6816function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
6817
6818function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6819
6820function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
6821
6822function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6823
6824function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6825
6826function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
6827
6828function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
6829
6830function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
6831
6832function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6833
6834function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6835
6836function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
6837
6838
6839var HeadDetails = /*#__PURE__*/function () {
6840  function HeadDetails(children) {
6841    _classCallCheck(this, HeadDetails);
6842
6843    this.detailsByOuterHTML = children.reduce(function (result, element) {
6844      var outerHTML = element.outerHTML;
6845      var details = outerHTML in result ? result[outerHTML] : {
6846        type: elementType(element),
6847        tracked: elementIsTracked(element),
6848        elements: []
6849      };
6850      return Object.assign(Object.assign({}, result), _defineProperty({}, outerHTML, Object.assign(Object.assign({}, details), {
6851        elements: [].concat(_toConsumableArray(details.elements), [element])
6852      })));
6853    }, {});
6854  }
6855
6856  _createClass(HeadDetails, [{
6857    key: "getTrackedElementSignature",
6858    value: function getTrackedElementSignature() {
6859      var _this = this;
6860
6861      return Object.keys(this.detailsByOuterHTML).filter(function (outerHTML) {
6862        return _this.detailsByOuterHTML[outerHTML].tracked;
6863      }).join("");
6864    }
6865  }, {
6866    key: "getScriptElementsNotInDetails",
6867    value: function getScriptElementsNotInDetails(headDetails) {
6868      return this.getElementsMatchingTypeNotInDetails('script', headDetails);
6869    }
6870  }, {
6871    key: "getStylesheetElementsNotInDetails",
6872    value: function getStylesheetElementsNotInDetails(headDetails) {
6873      return this.getElementsMatchingTypeNotInDetails('stylesheet', headDetails);
6874    }
6875  }, {
6876    key: "getElementsMatchingTypeNotInDetails",
6877    value: function getElementsMatchingTypeNotInDetails(matchedType, headDetails) {
6878      var _this2 = this;
6879
6880      return Object.keys(this.detailsByOuterHTML).filter(function (outerHTML) {
6881        return !(outerHTML in headDetails.detailsByOuterHTML);
6882      }).map(function (outerHTML) {
6883        return _this2.detailsByOuterHTML[outerHTML];
6884      }).filter(function (_ref) {
6885        var type = _ref.type;
6886        return type == matchedType;
6887      }).map(function (_ref2) {
6888        var _ref2$elements = _slicedToArray(_ref2.elements, 1),
6889            element = _ref2$elements[0];
6890
6891        return element;
6892      });
6893    }
6894  }, {
6895    key: "getProvisionalElements",
6896    value: function getProvisionalElements() {
6897      var _this3 = this;
6898
6899      return Object.keys(this.detailsByOuterHTML).reduce(function (result, outerHTML) {
6900        var _this3$detailsByOuter = _this3.detailsByOuterHTML[outerHTML],
6901            type = _this3$detailsByOuter.type,
6902            tracked = _this3$detailsByOuter.tracked,
6903            elements = _this3$detailsByOuter.elements;
6904
6905        if (type == null && !tracked) {
6906          return [].concat(_toConsumableArray(result), _toConsumableArray(elements));
6907        } else if (elements.length > 1) {
6908          return [].concat(_toConsumableArray(result), _toConsumableArray(elements.slice(1)));
6909        } else {
6910          return result;
6911        }
6912      }, []);
6913    }
6914  }, {
6915    key: "getMetaValue",
6916    value: function getMetaValue(name) {
6917      var element = this.findMetaElementByName(name);
6918      return element ? element.getAttribute('content') : null;
6919    }
6920  }, {
6921    key: "findMetaElementByName",
6922    value: function findMetaElementByName(name) {
6923      var _this4 = this;
6924
6925      return Object.keys(this.detailsByOuterHTML).reduce(function (result, outerHTML) {
6926        var _this4$detailsByOuter = _slicedToArray(_this4.detailsByOuterHTML[outerHTML].elements, 1),
6927            element = _this4$detailsByOuter[0];
6928
6929        return elementIsMetaElementWithName(element, name) ? element : result;
6930      }, undefined);
6931    }
6932  }], [{
6933    key: "fromHeadElement",
6934    value: function fromHeadElement(headElement) {
6935      var children = headElement ? (0,_util__WEBPACK_IMPORTED_MODULE_0__.array)(headElement.children) : [];
6936      return new this(children);
6937    }
6938  }]);
6939
6940  return HeadDetails;
6941}();
6942
6943function elementType(element) {
6944  if (elementIsScript(element)) {
6945    return 'script';
6946  } else if (elementIsStylesheet(element)) {
6947    return 'stylesheet';
6948  }
6949}
6950
6951function elementIsTracked(element) {
6952  return element.getAttribute('data-turbo-track') == 'reload';
6953}
6954
6955function elementIsScript(element) {
6956  var tagName = element.tagName.toLowerCase();
6957  return tagName == 'script';
6958}
6959
6960function elementIsStylesheet(element) {
6961  var tagName = element.tagName.toLowerCase();
6962  return tagName == 'style' || tagName == 'link' && element.getAttribute('rel') == 'stylesheet';
6963}
6964
6965function elementIsMetaElementWithName(element, name) {
6966  var tagName = element.tagName.toLowerCase();
6967  return tagName == 'meta' && element.getAttribute('name') == name;
6968}
vendor: 26 bytes, lines 6968-6972
6968
6969
6970/***/ }),
6971
6972/***/ "./src/
6972turbo/history.js":
6973/*!******************************!*\
6974  !*** ./src/turbo/history.js ***!
6975  \******************************/
6976/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6977
6978__webpack_require__.r(__webpack_exports__);
6979/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6980/* harmony export */   "History": () => (/* binding */ History)
6981/* harmony export */ });
6982/* harmony import */ var _location__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./location */ "./src/turbo/location.js");
6983/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ "./src/util/index.js");
6984function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6985
6986function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6987
6988function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
6989
6990
6991
6992var History = /*#__PURE__*/function () {
6993  function History(delegate) {
6994    var _this = this;
6995
6996    _classCallCheck(this, History);
6997
6998    this.started = false;
6999    this.pageLoaded = false; // Event handlers
7000
7001    this.onPopState = function (event) {
7002      if (!_this.shouldHandlePopState()) {
7003        return;
7004      }
7005
7006      if (!event.state || !event.state.ajaxTurbo) {
7007        return;
7008      }
7009
7010      var ajaxTurbo = event.state.ajaxTurbo;
7011      var location = _location__WEBPACK_IMPORTED_MODULE_0__.Location.currentLocation;
7012      var restorationIdentifier = ajaxTurbo.restorationIdentifier;
7013
7014      _this.delegate.historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier);
7015    };
7016
7017    this.onPageLoad = function (event) {
7018      (0,_util__WEBPACK_IMPORTED_MODULE_1__.defer)(function () {
7019        _this.pageLoaded = true;
7020      });
7021    };
7022
7023    this.delegate = delegate;
7024  }
7025
7026  _createClass(History, [{
7027    key: "start",
7028    value: function start() {
7029      if (!this.started) {
7030        addEventListener('popstate', this.onPopState, false);
7031        addEventListener('load', this.onPageLoad, false);
7032        this.started = true;
7033      }
7034    }
7035  }, {
7036    key: "stop",
7037    value: function stop() {
7038      if (this.started) {
7039        removeEventListener('popstate', this.onPopState, false);
7040        removeEventListener('load', this.onPageLoad, false);
7041        this.started = false;
7042      }
7043    }
7044  }, {
7045    key: "push",
7046    value: function push(location, restorationIdentifier) {
7047      this.update(history.pushState, location, restorationIdentifier);
7048    }
7049  }, {
7050    key: "replace",
7051    value: function replace(location, restorationIdentifier) {
7052      this.update(history.replaceState, location, restorationIdentifier);
7053    } // Private
7054
7055  }, {
7056    key: "shouldHandlePopState",
7057    value: function shouldHandlePopState() {
7058      // Safari dispatches a popstate event after window's load event, ignore it
7059      return this.pageIsLoaded();
7060    }
7061  }, {
7062    key: "pageIsLoaded",
7063    value: function pageIsLoaded() {
7064      return this.pageLoaded || document.readyState == 'complete';
7065    }
7066  }, {
7067    key: "update",
7068    value: function update(method, location, restorationIdentifier) {
7069      var state = {
7070        ajaxTurbo: {
7071          restorationIdentifier: restorationIdentifier
7072        }
7073      };
7074      method.call(history, state, '', location.absoluteURL);
7075    }
7076  }]);
7077
7078  return History;
7079}();
7080
7081/***/ }),
7082
7083/***/ "./src/turbo/index.js":
7084/*!****************************!*\
7085  !*** ./src/turbo/index.js ***!
7086  \****************************/
7087/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7088
7089__webpack_require__.r(__webpack_exports__);
7090/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7091/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
7092/* harmony export */ });
7093/* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./namespace */ "./src/turbo/namespace.js");
7094function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
7095
7096
7097/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_namespace__WEBPACK_IMPORTED_MODULE_0__["default"]);
7098
7099if (!window.oc) {
7100  window.oc = {};
7101}
7102
7103if (!window.oc.AjaxTurbo) {
7104  // Namespace
7105  window.oc.AjaxTurbo = _namespace__WEBPACK_IMPORTED_MODULE_0__["default"]; // Visit helper
7106
7107  window.oc.visit = _namespace__WEBPACK_IMPORTED_MODULE_0__["default"].visit; // Enabled helper
7108
7109  window.oc.useTurbo = _namespace__WEBPACK_IMPORTED_MODULE_0__["default"].isEnabled; // Page ready helper
7110
7111  window.oc.pageReady = _namespace__WEBPACK_IMPORTED_MODULE_0__["default"].pageReady; // Boot controller
7112
7113  if (!isAMD() && !isCommonJS()) {
7114    _namespace__WEBPACK_IMPORTED_MODULE_0__["default"].start();
7115  }
7116}
7117
7118function isAMD() {
7119  return typeof define == "function" && __webpack_require__.amdO;
7120}
7121
7122function isCommonJS() {
7123  return (typeof exports === "undefined" ? "undefined" : _typeof(exports)) == "object" && "object" != "undefined";
7124}
7125
7126/***/ }),
7127
7128/***/ "./src/turbo/location.js":
7129/*!*******************************!*\
7130  !*** ./src/turbo/location.js ***!
7131  \*******************************/
7132/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7133
7134__webpack_require__.r(__webpack_exports__);
7135/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7136/* harmony export */   "Location": () => (/* binding */ Location)
7137/* harmony export */ });
7138function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7139
7140function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
7141
7142function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
7143
7144var Location = /*#__PURE__*/function () {
7145  function Location(url) {
7146    _classCallCheck(this, Location);
7147
7148    var linkWithAnchor = document.createElement('a');
7149    linkWithAnchor.href = url;
7150    this.absoluteURL = linkWithAnchor.href;
7151    var anchorLength = linkWithAnchor.hash.length;
7152
7153    if (anchorLength < 2) {
7154      this.requestURL = this.absoluteURL;
7155    } else {
7156      this.requestURL = this.absoluteURL.slice(0, -anchorLength);
7157      this.anchor = linkWithAnchor.hash.slice(1);
7158    }
7159  }
7160
7161  _createClass(Location, [{
7162    key: "getOrigin",
7163    value: function getOrigin() {
7164      return this.absoluteURL.split("/", 3).join("/");
7165    }
7166  }, {
7167    key: "getPath",
7168    value: function getPath() {
7169      return (this.requestURL.match(/\/\/[^/]*(\/[^?;]*)/) || [])[1] || "/";
7170    }
7171  }, {
7172    key: "getPathComponents",
7173    value: function getPathComponents() {
7174      return this.getPath().split("/").slice(1);
7175    }
7176  }, {
7177    key: "getLastPathComponent",
7178    value: function getLastPathComponent() {
7179      return this.getPathComponents().slice(-1)[0];
7180    }
7181  }, {
7182    key: "getExtension",
7183    value: function getExtension() {
7184      return (this.getLastPathComponent().match(/\.[^.]*$/) || [])[0] || "";
7185    }
7186  }, {
7187    key: "isHTML",
7188    value: function isHTML() {
7189      return this.getExtension().match(/^(?:|\.(?:htm|html|xhtml))$/);
7190    }
7191  }, {
7192    key: "isPrefixedBy",
7193    value: function isPrefixedBy(location) {
7194      var prefixURL = getPrefixURL(location);
7195      return this.isEqualTo(location) || stringStartsWith(this.absoluteURL, prefixURL);
7196    }
7197  }, {
7198    key: "isEqualTo",
7199    value: function isEqualTo(location) {
7200      return location && this.absoluteURL === location.absoluteURL;
7201    }
7202  }, {
7203    key: "toCacheKey",
7204    value: function toCacheKey() {
7205      return this.requestURL;
7206    }
7207  }, {
7208    key: "toJSON",
7209    value: function toJSON() {
7210      return this.absoluteURL;
7211    }
7212  }, {
7213    key: "toString",
7214    value: function toString() {
7215      return this.absoluteURL;
7216    }
7217  }, {
7218    key: "valueOf",
7219    value: function valueOf() {
7220      return this.absoluteURL;
7221    }
7222  }], [{
7223    key: "currentLocation",
7224    get: function get() {
7225      return this.wrap(window.location.toString());
7226    }
7227  }, {
7228    key: "wrap",
7229    value: function wrap(locatable) {
7230      if (typeof locatable == 'string') {
7231        return new Location(locatable);
7232      } else if (locatable != null) {
7233        return locatable;
7234      }
7235    }
7236  }]);
7237
7238  return Location;
7239}();
7240
7241function getPrefixURL(location) {
7242  return addTrailingSlash(location.getOrigin() + location.getPath());
7243}
7244
7245function addTrailingSlash(url) {
7246  return stringEndsWith(url, "/") ? url : url + "/";
7247}
7248
7249function stringStartsWith(string, prefix) {
7250  return string.slice(0, prefix.length) === prefix;
7251}
7252
7253function stringEndsWith(string, suffix) {
7254  return string.slice(-suffix.length) === suffix;
7255}
7256
7257/***/ }),
7258
7259/***/ "./src/turbo/namespace.js":
7260/*!********************************!*\
7261  !*** ./src/turbo/namespace.js ***!
7262  \********************************/
7263/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7264
7265__webpack_require__.r(__webpack_exports__);
7266/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7267/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
7268/* harmony export */ });
7269/* harmony import */ var _controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./controller */ "./src/turbo/controller.js");
7270
7271var controller = new _controller__WEBPACK_IMPORTED_MODULE_0__.Controller();
7272/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
7273  get supported() {
7274    return _controller__WEBPACK_IMPORTED_MODULE_0__.Controller.supported;
7275  },
7276
7277  controller: controller,
7278  visit: function visit(location, options) {
7279    controller.visit(location, options);
7280  },
7281  clearCache: function clearCache() {
7282    controller.clearCache();
7283  },
7284  setProgressBarVisible: function setProgressBarVisible(value) {
7285    controller.setProgressBarVisible(value);
7286  },
7287  setProgressBarDelay: function setProgressBarDelay(delay) {
7288    controller.setProgressBarDelay(delay);
7289  },
7290  start: function start() {
7291    controller.start();
7292  },
7293  isEnabled: function isEnabled() {
7294    return controller.isEnabled();
7295  },
7296  pageReady: function pageReady() {
7297    return controller.pageReady();
7298  }
7299});
7300
7301/***/ }),
7302
vendor: 2,959 bytes, lines 7303-7327
7303/***/ "./src/turbo/renderer.js":
7304/*!*******************************!*\
7305  !*** ./src/turbo/renderer.js ***!
7306  \*******************************/
7307/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7308
7309__webpack_require__.r(__webpack_exports__);
7310/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7311/* harmony export */   "Renderer": () => (/* binding */ Renderer)
7312/* harmony export */ });
7313/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ "./src/util/index.js");
7314function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
7315
7316function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
7317
7318function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
7319
7320function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7321
7322function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
7323
7324function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
7325
7326
7327var Renderer = /*#__PURE__*/function () {
7328  function Renderer() {
7329    _classCallCheck(this, Renderer);
7330  }
7331
7332  _createClass(Renderer, [{
7333    key: "renderView",
7334    value: function renderView(callback) {
7335      var _this = this;
7336
7337      var renderInterception = function renderInterception() {
7338        callback();
7339
7340        _this.delegate.viewRendered(_this.newBody);
7341      };
7342
7343      var options = {
7344        resume: renderInterception
7345      };
7346      var immediateRender = this.delegate.viewAllowsImmediateRender(this.newBody, options);
7347
7348      if (immediateRender) {
7349        renderInterception();
7350      }
7351    }
7352  }, {
7353    key: "invalidateView",
7354    value: function invalidateView() {
7355      this.delegate.viewInvalidated();
7356    }
7357  }, {
7358    key: "createScriptElement",
7359    value: function createScriptElement(element) {
7360      if (element.getAttribute('data-turbo-eval') === 'false' || this.delegate.applicationHasSeenInlineScript(element)) {
7361        return element;
7362      }
7363
7364      var createdScriptElement = document.createElement('script');
7365      createdScriptElement.textContent = element.textContent;
7366      createdScriptElement.async = false;
7367      copyElementAttributes(createdScriptElement, element);
7368      return createdScriptElement;
7369    }
7370  }]);
7371
7372  return Renderer;
7373}();
7374
7375function copyElementAttributes(destinationElement, sourceElement) {
7376  var _iterator = _createForOfIteratorHelper((0,_util__WEBPACK_IMPORTED_MODULE_0__.array)(sourceElement.attributes)),
7377      _step;
7378
7379  try {
7380    for (_iterator.s(); !(_step = _iterator.n()).done;) {
7381      var _step$value = _step.value,
7382          name = _step$value.name,
7383          value = _step$value.value;
7384      destinationElement.setAttribute(name, value);
7385    }
7386  } catch (err) {
7387    _iterator.e(err);
7388  } finally {
7389    _iterator.f();
7390  }
7391}
7392
7393/***/ }),
7394
7395/***/ "./src/turbo/scroll-manager.js":
7396/*!*************************************!*\
7397  !*** ./src/turbo/scroll-manager.js ***!
7398  \*************************************/
7399/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7400
7401__webpack_require__.r(__webpack_exports__);
7402/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7403/* harmony export */   "ScrollManager": () => (/* binding */ ScrollManager)
7404/* harmony export */ });
7405function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7406
7407function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
7408
7409function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
7410
7411var ScrollManager = /*#__PURE__*/function () {
7412  function ScrollManager(delegate) {
7413    var _this = this;
7414
7415    _classCallCheck(this, ScrollManager);
7416
7417    this.started = false;
7418
7419    this.onScroll = function () {
7420      _this.updatePosition({
7421        x: window.pageXOffset,
7422        y: window.pageYOffset
7423      });
7424    };
7425
7426    this.delegate = delegate;
7427  }
7428
7429  _createClass(ScrollManager, [{
7430    key: "start",
7431    value: function start() {
7432      if (!this.started) {
7433        addEventListener('scroll', this.onScroll, false);
7434        this.onScroll();
7435        this.started = true;
7436      }
7437    }
7438  }, {
7439    key: "stop",
7440    value: function stop() {
7441      if (this.started) {
7442        removeEventListener('scroll', this.onScroll, false);
7443        this.started = false;
7444      }
7445    }
7446  }, {
7447    key: "scrollToElement",
7448    value: function scrollToElement(element) {
7449      element.scrollIntoView();
7450    }
7451  }, {
7452    key: "scrollToPosition",
7453    value: function scrollToPosition(_ref) {
7454      var x = _ref.x,
7455          y = _ref.y;
7456      window.scrollTo(x, y);
7457    } // Private
7458
7459  }, {
7460    key: "updatePosition",
7461    value: function updatePosition(position) {
7462      this.delegate.scrollPositionChanged(position);
7463    }
7464  }]);
7465
7466  return ScrollManager;
7467}();
7468
7469/***/ }),
7470
7471/***/ "./src/turbo/snapshot-cache.js":
7472/*!*************************************!*\
7473  !*** ./src/turbo/snapshot-cache.js ***!
7474  \*************************************/
7475/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7476
7477__webpack_require__.r(__webpack_exports__);
7478/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7479/* harmony export */   "SnapshotCache": () => (/* binding */ SnapshotCache)
7480/* harmony export */ });
7481function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
7482
7483function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
7484
7485function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
7486
7487function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7488
7489function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
7490
7491function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
7492
7493var SnapshotCache = /*#__PURE__*/function () {
7494  function SnapshotCache(size) {
7495    _classCallCheck(this, SnapshotCache);
7496
7497    this.keys = [];
7498    this.snapshots = {};
7499    this.size = size;
7500  }
7501
7502  _createClass(SnapshotCache, [{
7503    key: "has",
7504    value: function has(location) {
7505      return location.toCacheKey() in this.snapshots;
7506    }
7507  }, {
7508    key: "get",
7509    value: function get(location) {
7510      if (this.has(location)) {
7511        var snapshot = this.read(location);
7512        this.touch(location);
7513        return snapshot;
7514      }
7515    }
7516  }, {
7517    key: "put",
7518    value: function put(location, snapshot) {
7519      this.write(location, snapshot);
7520      this.touch(location);
7521      return snapshot;
7522    } // Private
7523
7524  }, {
7525    key: "read",
7526    value: function read(location) {
7527      return this.snapshots[location.toCacheKey()];
7528    }
7529  }, {
7530    key: "write",
7531    value: function write(location, snapshot) {
7532      this.snapshots[location.toCacheKey()] = snapshot;
7533    }
7534  }, {
7535    key: "touch",
7536    value: function touch(location) {
7537      var key = location.toCacheKey();
7538      var index = this.keys.indexOf(key);
7539      if (index > -1) this.keys.splice(index, 1);
7540      this.keys.unshift(key);
7541      this.trim();
7542    }
7543  }, {
7544    key: "trim",
7545    value: function trim() {
7546      var _iterator = _createForOfIteratorHelper(this.keys.splice(this.size)),
7547          _step;
7548
7549      try {
7550        for (_iterator.s(); !(_step = _iterator.n()).done;) {
7551          var key = _step.value;
7552          delete this.snapshots[key];
7553        }
7554      } catch (err) {
7555        _iterator.e(err);
7556      } finally {
7557        _iterator.f();
7558      }
7559    }
7560  }]);
7561
7562  return SnapshotCache;
7563}();
7564
7565/***/ }),
7566
vendor: 4,295 bytes, lines 7567-7601
7567/***/ "./src/turbo/snapshot-renderer.js":
7568/*!****************************************!*\
7569  !*** ./src/turbo/snapshot-renderer.js ***!
7570  \****************************************/
7571/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7572
7573__webpack_require__.r(__webpack_exports__);
7574/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7575/* harmony export */   "SnapshotRenderer": () => (/* binding */ SnapshotRenderer)
7576/* harmony export */ });
7577/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderer */ "./src/turbo/renderer.js");
7578/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ "./src/util/index.js");
7579function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
7580
7581function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
7582
7583function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7584
7585function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
7586
7587function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
7588
7589function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
7590
7591function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
7592
7593function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
7594
7595function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7596
7597function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
7598
7599function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
7600
7601function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { c
7601onstructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
7602
7603function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
7604
7605function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
7606
7607function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
7608
7609function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
7610
7611function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
7612
7613function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
7614
7615
7616
7617var SnapshotRenderer = /*#__PURE__*/function (_Renderer) {
7618  _inherits(SnapshotRenderer, _Renderer);
7619
7620  var _super = _createSuper(SnapshotRenderer);
7621
7622  function SnapshotRenderer(delegate, currentSnapshot, newSnapshot, isPreview) {
7623    var _this;
7624
7625    _classCallCheck(this, SnapshotRenderer);
7626
7627    _this = _super.call(this);
7628    _this.delegate = delegate;
7629    _this.currentSnapshot = currentSnapshot;
7630    _this.currentHeadDetails = currentSnapshot.headDetails;
7631    _this.newSnapshot = newSnapshot;
7632    _this.newHeadDetails = newSnapshot.headDetails;
7633    _this.newBody = newSnapshot.bodyElement;
7634    _this.isPreview = isPreview;
7635    return _this;
7636  }
7637
7638  _createClass(SnapshotRenderer, [{
7639    key: "render",
7640    value: function render(callback) {
7641      var _this2 = this;
7642
7643      if (this.shouldRender()) {
7644        this.mergeHead();
7645        this.renderView(function () {
7646          _this2.replaceBody();
7647
7648          if (!_this2.isPreview) {
7649            _this2.focusFirstAutofocusableElement();
7650          }
7651
7652          callback();
7653        });
7654      } else {
7655        this.invalidateView();
7656      }
7657    }
7658  }, {
7659    key: "mergeHead",
7660    value: function mergeHead() {
7661      this.copyNewHeadStylesheetElements();
7662      this.copyNewHeadScriptElements();
7663      this.removeCurrentHeadProvisionalElements();
7664      this.copyNewHeadProvisionalElements();
7665    }
7666  }, {
7667    key: "replaceBody",
7668    value: function replaceBody() {
7669      var placeholders = this.relocateCurrentBodyPermanentElements();
7670      this.activateNewBodyScriptElements();
7671      this.assignNewBody();
7672      this.replacePlaceholderElementsWithClonedPermanentElements(placeholders);
7673    }
7674  }, {
7675    key: "shouldRender",
7676    value: function shouldRender() {
7677      return this.currentSnapshot.isEnabled() && this.newSnapshot.isVisitable() && this.trackedElementsAreIdentical();
7678    }
7679  }, {
7680    key: "trackedElementsAreIdentical",
7681    value: function trackedElementsAreIdentical() {
7682      return this.currentHeadDetails.getTrackedElementSignature() == this.newHeadDetails.getTrackedElementSignature();
7683    }
7684  }, {
7685    key: "copyNewHeadStylesheetElements",
7686    value: function copyNewHeadStylesheetElements() {
7687      var _iterator = _createForOfIteratorHelper(this.getNewHeadStylesheetElements()),
7688          _step;
7689
7690      try {
7691        for (_iterator.s(); !(_step = _iterator.n()).done;) {
7692          var element = _step.value;
7693          document.head.appendChild(element);
7694        }
7695      } catch (err) {
7696        _iterator.e(err);
7697      } finally {
7698        _iterator.f();
7699      }
7700    }
7701  }, {
7702    key: "copyNewHeadScriptElements",
7703    value: function copyNewHeadScriptElements() {
7704      var _iterator2 = _createForOfIteratorHelper(this.getNewHeadScriptElements()),
7705          _step2;
7706
7707      try {
7708        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
7709          var element = _step2.value;
7710          document.head.appendChild(this.bindPendingAssetLoadedEventOnce(this.createScriptElement(element)));
7711        }
7712      } catch (err) {
7713        _iterator2.e(err);
7714      } finally {
7715        _iterator2.f();
7716      }
7717    }
7718  }, {
7719    key: "bindPendingAssetLoadedEventOnce",
7720    value: function bindPendingAssetLoadedEventOnce(element) {
7721      if (!element.hasAttribute('src')) {
7722        return element;
7723      }
7724
7725      var self = this,
7726          loadEvent = function loadEvent() {
7727        self.delegate.decrementPendingAsset();
7728        element.removeEventListener('load', loadEvent);
7729      };
7730
7731      element.addEventListener('load', loadEvent);
7732      this.delegate.incrementPendingAsset();
7733      return element;
7734    }
7735  }, {
7736    key: "removeCurrentHeadProvisionalElements",
7737    value: function removeCurrentHeadProvisionalElements() {
7738      var _iterator3 = _createForOfIteratorHelper(this.getCurrentHeadProvisionalElements()),
7739          _step3;
7740
7741      try {
7742        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
7743          var element = _step3.value;
7744          document.head.removeChild(element);
7745        }
7746      } catch (err) {
7747        _iterator3.e(err);
7748      } finally {
7749        _iterator3.f();
7750      }
7751    }
7752  }, {
7753    key: "copyNewHeadProvisionalElements",
7754    value: function copyNewHeadProvisionalElements() {
7755      var _iterator4 = _createForOfIteratorHelper(this.getNewHeadProvisionalElements()),
7756          _step4;
7757
7758      try {
7759        for (_iterator4.s();
7759 !(_step4 = _iterator4.n()).done;) {
7760          var element = _step4.value;
7761          document.head.appendChild(element);
7762        }
7763      } catch (err) {
7764        _iterator4.e(err);
7765      } finally {
7766        _iterator4.f();
7767      }
7768    }
7769  }, {
7770    key: "relocateCurrentBodyPermanentElements",
7771    value: function relocateCurrentBodyPermanentElements() {
7772      var _this3 = this;
7773
7774      return this.getCurrentBodyPermanentElements().reduce(function (placeholders, permanentElement) {
7775        var newElement = _this3.newSnapshot.getPermanentElementById(permanentElement.id);
7776
7777        if (newElement) {
7778          var placeholder = createPlaceholderForPermanentElement(permanentElement);
7779          replaceElementWithElement(permanentElement, placeholder.element);
7780          replaceElementWithElement(newElement, permanentElement);
7781          return [].concat(_toConsumableArray(placeholders), [placeholder]);
7782        } else {
7783          return placeholders;
7784        }
7785      }, []);
7786    }
7787  }, {
7788    key: "replacePlaceholderElementsWithClonedPermanentElements",
7789    value: function replacePlaceholderElementsWithClonedPermanentElements(placeholders) {
7790      var _iterator5 = _createForOfIteratorHelper(placeholders),
7791          _step5;
7792
7793      try {
7794        for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
7795          var _step5$value = _step5.value,
7796              element = _step5$value.element,
7797              permanentElement = _step5$value.permanentElement;
7798          var clonedElement = permanentElement.cloneNode(true);
7799          replaceElementWithElement(element, clonedElement);
7800        }
7801      } catch (err) {
7802        _iterator5.e(err);
7803      } finally {
7804        _iterator5.f();
7805      }
7806    }
7807  }, {
7808    key: "activateNewBodyScriptElements",
7809    value: function activateNewBodyScriptElements() {
7810      var _iterator6 = _createForOfIteratorHelper(this.getNewBodyScriptElements()),
7811          _step6;
7812
7813      try {
7814        for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
7815          var inertScriptElement = _step6.value;
7816          var activatedScriptElement = this.createScriptElement(inertScriptElement);
7817          replaceElementWithElement(inertScriptElement, activatedScriptElement);
7818        }
7819      } catch (err) {
7820        _iterator6.e(err);
7821      } finally {
7822        _iterator6.f();
7823      }
7824    }
7825  }, {
7826    key: "assignNewBody",
7827    value: function assignNewBody() {
7828      replaceElementWithElement(document.body, this.newBody);
7829    }
7830  }, {
7831    key: "focusFirstAutofocusableElement",
7832    value: function focusFirstAutofocusableElement() {
7833      var element = this.newSnapshot.findFirstAutofocusableElement();
7834
7835      if (elementIsFocusable(element)) {
7836        element.focus();
7837      }
7838    }
7839  }, {
7840    key: "getNewHeadStylesheetElements",
7841    value: function getNewHeadStylesheetElements() {
7842      return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails);
7843    }
7844  }, {
7845    key: "getNewHeadScriptElements",
7846    value: function getNewHeadScriptElements() {
7847      return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails);
7848    }
7849  }, {
7850    key: "getCurrentHeadProvisionalElements",
7851    value: function getCurrentHeadProvisionalElements() {
7852      return this.currentHeadDetails.getProvisionalElements();
7853    }
7854  }, {
7855    key: "getNewHeadProvisionalElements",
7856    value: function getNewHeadProvisionalElements() {
7857      return this.newHeadDetails.getProvisionalElements();
7858    }
7859  }, {
7860    key: "getCurrentBodyPermanentElements",
7861    value: function getCurrentBodyPermanentElements() {
7862      return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot);
7863    }
7864  }, {
7865    key: "getNewBodyScriptElements",
7866    value: function getNewBodyScriptElements() {
7867      return (0,_util__WEBPACK_IMPORTED_MODULE_1__.array)(this.newBody.querySelectorAll('script'));
7868    }
7869  }], [{
7870    key: "render",
7871    value: function render(delegate, callback, currentSnapshot, newSnapshot, isPreview) {
7872      return new this(delegate, currentSnapshot, newSnapshot, isPreview).render(callback);
7873    }
7874  }]);
7875
7876  return SnapshotRenderer;
7877}(_renderer__WEBPACK_IMPORTED_MODULE_0__.Renderer);
7878
7879function createPlaceholderForPermanentElement(permanentElement) {
7880  var element = document.createElement('meta');
7881  element.setAttribute('name', 'turbo-permanent-placeholder');
7882  element.setAttribute('content', permanentElement.id);
7883  return {
7884    element: element,
7885    permanentElement: permanentElement
7886  };
7887}
7888
7889function replaceElementWithElement(fromElement, toElement) {
7890  var parentElement = fromElement.parentElement;
7891
7892  if (parentElement) {
7893    return parentElement.replaceChild(toElement, fromElement);
7894  }
7895}
7896
7897function elementIsFocusable(element) {
7898  return element && typeof element.focus == 'function';
7899}
7900
7901/***/ }),
7902
7903/***/ "./src/turbo/snapshot.js":
7904/*!*******************************!*\
7905  !*** ./src/turbo/snapshot.js ***!
7906  \*******************************/
7907/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7908
7909__webpack_require__.r(__webpack_exports__);
7910/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7911/* harmony export */   "Snapshot": () => (/* binding */ Snapshot)
7912/* harmony export */ });
7913/* harmony import */ var _head_details__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./head-details */ "./src/turbo/head-details.js");
7914/* harmony import */ var _location__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./location */ "./src/turbo/location.js");
7915/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util */ "./src/util/index.js");
7916function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7917
7918function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
7919
7920function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
7921
7922
7923
7924
7925var Snapshot = /*#__PURE__*/function () {
7926  function Snapshot(headDetails, bodyElement) {
7927    _classCallCheck(this, Snapshot);
7928
7929    this.headDetails = headDetails;
7930    this.bodyElement = bodyElement;
7931  }
7932
7933  _createClass(Snapshot, [{
7934    key: "clone",
7935    value: function clone() {
7936      return new Snapshot(this.headDetails, this.bodyElement.cloneNode(true));
7937    }
7938  }, {
7939    key: "getRootLocation",
7940    value: function getRootLocation() {
7941      var root = this.getSetting('root', '/');
7942      return new _location__WEBPACK_IMPORTED_MODULE_1__.Location(root);
7943    }
7944  }, {
7945    key: "getCacheControlValue",
7946    value: function getCacheControlValue() {
7947      return this.getSetting('cache-control');
7948    }
7949  }, {
7950    key: "getElementForAnchor",
7951    value: function getElementForAnchor(anchor) {
7952      try {
7953        return this.bodyElement.querySelector("[id='".concat(anchor, "'], a[name='").concat(anchor, "']"));
7954      } catch (e) {
7955        return null;
7956      }
7957    }
7958  }, {
7959    key: "getPermanentElements",
7960    value: function getPermanentElements() {
7961      return (0,_util__WEBPACK_IMPORTED_MODULE_2__.array)(this.bodyElement.querySelectorAll('[id][data-turbo-permanent]'));
7962    }
7963  }, {
7964    key: "getPermanentElementById",
7965    value: function getPermanentElementById(id) {
7966      return this.bodyElement.querySelector("#".concat(id, "[data-turbo-permanent]"));
7967    }
7968  }, {
7969    key: "getPermanentElementsPresentInSnapshot",
7970    value: function getPermanentElementsPresentInSnapshot(snapshot) {
7971      return this.getPermanentElements().filter(function (_ref) {
7972        var id = _ref.id;
7973        return snapshot.getPermanentElementById(id);
7974      });
7975    }
7976  }, {
7977    key: "findFirstAutofocusableElement",
7978    value: function findFirstAutofocusableElement() {
7979      return this.bodyElement.querySelector('[autofocus]');
7980    }
7981  }, {
7982    key: "hasAnchor",
7983    value: function hasAnchor(anchor) {
7984      return this.getElementForAnchor(anchor) != null;
7985    }
7986  }, {
7987    key: "isPreviewable",
7988    value: function isPreviewable() {
7989      return this.getCacheControlValue() != 'no-preview';
7990    }
7991  }, {
7992    key: "isCacheable",
7993    value: function isCacheable() {
7994      return this.getCacheControlValue() != 'no-cache';
7995    }
7996  }, {
7997    key: "isNativeError",
7998    value: function isNativeError() {
7999      return this.getSetting('visit-control', false) != false;
8000    }
8001  }, {
8002    key: "isEnabled",
8003    value: function isEnabled() {
8004      return this.getSetting('visit-control') != 'disable';
8005    }
8006  }, {
8007    key: "isVisitable",
8008    value: function isVisitable() {
8009      return this.isEnabled() && this.getSetting('visit-control') != 'reload';
8010    }
8011  }, {
8012    key: "getSetting",
8013    value: function getSetting(name, defaultValue) {
8014      var value = this.headDetails.getMetaValue("turbo-".concat(name));
8015      return value == null ? defaultValue : value;
8016    }
8017  }], [{
8018    key: "wrap",
8019    value: function wrap(value) {
8020      if (value instanceof this) {
8021        return value;
8022      } else if (typeof value == 'string') {
8023        return this.fromHTMLString(value);
8024      } else {
8025        return this.fromHTMLElement(value);
8026      }
8027    }
8028  }, {
8029    key: "fromHTMLString",
8030    value: function fromHTMLString(html) {
8031      var element = document.createElement('html');
8032      element.innerHTML = html;
8033      return this.fromHTMLElement(element);
8034    }
8035  }, {
8036    key: "fromHTMLElement",
8037    value: function fromHTMLElement(htmlElement) {
8038      var headElement = htmlElement.querySelector('head');
8039      var bodyElement = htmlElement.querySelector('body') || document.createElement('body');
8040      var headDetails = _head_details__WEBPACK_IMPORTED_MODULE_0__.HeadDetails.fromHeadElement(headElement);
8041      return new this(headDetails, bodyElement);
8042    }
8043  }]);
8044
8045  return Snapshot;
8046}();
8047
8048/***/ }),
8049
8050/***/ "./src/turbo/view.js":
8051/*!***************************!*\
8052  !*** ./src/turbo/view.js ***!
8053  \***************************/
8054/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8055
8056__webpack_require__.r(__webpack_exports__);
8057/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8058/* harmony export */   "View": () => (/* binding */ View)
8059/* harmony export */ });
8060/* harmony import */ var _error_renderer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./error-renderer */ "./src/turbo/error-renderer.js");
8061/* harmony import */ var _snapshot__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./snapshot */ "./src/turbo/snapshot.js");
8062/* harmony import */ var _snapshot_renderer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./snapshot-renderer */ "./src/turbo/snapshot-renderer.js");
8063function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8064
8065function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
8066
8067function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
8068
8069
8070
8071
8072var View = /*#__PURE__*/function () {
8073  function View(delegate) {
8074    _classCallCheck(this, View);
8075
8076    this.htmlElement = document.documentElement;
8077    this.delegate = delegate;
8078  }
8079
8080  _createClass(View, [{
8081    key: "getRootLocation",
8082    value: function getRootLocation() {
8083      return this.getSnapshot().getRootLocation();
8084    }
8085  }, {
8086    key: "getElementForAnchor",
8087    value: function getElementForAnchor(anchor) {
8088      return this.getSnapshot().getElementForAnchor(anchor);
8089    }
8090  }, {
8091    key: "getSnapshot",
8092    value: function getSnapshot() {
8093      return _snapshot__WEBPACK_IMPORTED_MODULE_1__.Snapshot.fromHTMLElement(this.htmlElement);
8094    }
8095  }, {
8096    key: "render",
8097    value: function render(_ref, callback) {
8098      var snapshot = _ref.snapshot,
8099          error = _ref.error,
8100          isPreview = _ref.isPreview;
8101      this.markAsPreview(isPreview);
8102
8103      if (snapshot) {
8104        this.renderSnapshot(snapshot, isPreview, callback);
8105      } else {
8106        this.renderError(error, callback);
8107      }
8108    } // Private
8109
8110  }, {
8111    key: "markAsPreview",
8112    value: function markAsPreview(isPreview) {
8113      if (isPreview) {
8114        this.htmlElement.setAttribute('data-turbo-preview', '');
8115      } else {
8116        this.htmlElement.removeAttribute('data-turbo-preview');
8117      }
8118    }
8119  }, {
8120    key: "renderSnapshot",
8121    value: function renderSnapshot(snapshot, isPreview, callback) {
8122      _snapshot_renderer__WEBPACK_IMPORTED_MODULE_2__.SnapshotRenderer.render(this.delegate, callback, this.getSnapshot(), snapshot, isPreview || false);
8123    }
8124  }, {
8125    key: "renderError",
8126    value: function renderError(error, callback) {
8127      _error_renderer__WEBPACK_IMPORTED_MODULE_0__.ErrorRenderer.render(this.delegate, callback, error || '');
8128    }
8129  }]);
8130
8131  return View;
8132}();
8133
8134/***/ }),
8135
8136/***/ "./src/turbo/visit.js":
8137/*!****************************!*\
8138  !*** ./src/turbo/visit.js ***!
8139  \****************************/
8140/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8141
8142__webpack_require__.r(__webpack_exports__);
8143/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8144/* harmony export */   "TimingMetric": () => (/* binding */ TimingMetric),
8145/* harmony export */   "Visit": () => (/* binding */ Visit),
8146/* harmony export */   "VisitState": () => (/* binding */ VisitState)
8147/* harmony export */ });
8148/* harmony import */ var _util_http_request__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/http-request */ "./src/util/http-request.js");
8149/* harmony import */ var _location__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./location */ "./src/turbo/location.js");
8150/* harmony import */ var _snapshot__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./snapshot */ "./src/turbo/snapshot.js");
8151/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util */ "./src/util/index.js");
8152function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8153
8154function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
8155
8156function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
8157
8158
8159
8160
8161
8162var TimingMetric = {
8163  visitStart: 'visitStart',
8164  requestStart: 'requestStart',
8165  requestEnd: 'requestEnd',
8166  visitEnd: 'visitEnd'
8167};
8168var VisitState = {
8169  initialized: 'initialized',
8170  started: 'started',
8171  canceled: 'canceled',
8172  failed: 'failed',
8173  completed: 'completed'
8174};
8175var Visit = /*#__PURE__*/function () {
8176  function Visit(controller, location, action) {
8177    var _this = this;
8178
8179    var restorationIdentifier = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : (0,_util__WEBPACK_IMPORTED_MODULE_3__.uuid)();
8180
8181    _classCallCheck(this, Visit);
8182
8183    this.identifier = (0,_util__WEBPACK_IMPORTED_MODULE_3__.uuid)();
8184    this.timingMetrics = {};
8185    this.followedRedirect = false;
8186    this.historyChanged = false;
8187    this.progress = 0;
8188    this.scrolled = false;
8189    this.snapshotCached = action === 'swap';
8190    this.state = VisitState.initialized; // Scrolling
8191
8192    this.performScroll = function () {
8193      if (!_this.scrolled) {
8194        if (_this.action == 'restore') {
8195          _this.scrollToRestoredPosition() || _this.scrollToTop();
8196        } else {
8197          _this.scrollToAnchor() || _this.scrollToTop();
8198        }
8199
8200        _this.scrolled = true;
8201      }
8202    };
8203
8204    this.controller = controller;
8205    this.location = location;
8206    this.action = action;
8207    this.adapter = controller.adapter;
8208    this.restorationIdentifier = restorationIdentifier;
8209    this.isSamePage = this.locationChangeIsSamePage();
8210  }
8211
8212  _createClass(Visit, [{
8213    key: "start",
8214    value: function start() {
8215      if (this.state == VisitState.initialized) {
8216        this.recordTimingMetric(TimingMetric.visitStart);
8217        this.state = VisitState.started;
8218        this.adapter.visitStarted(this);
8219      }
8220    }
8221  }, {
8222    key: "cancel",
8223    value: function cancel() {
8224      if (this.state == VisitState.started) {
8225        if (this.request) {
8226          this.request.abort();
8227        }
8228
8229        this.cancelRender();
8230        this.state = VisitState.canceled;
8231      }
8232    }
8233  }, {
8234    key: "complete",
8235    value: function complete() {
8236      if (this.state == VisitState.started) {
8237        this.recordTimingMetric(TimingMetric.visitEnd);
8238        this.state = VisitState.completed;
8239        this.adapter.visitCompleted(this);
8240        this.controller.visitCompleted(this);
8241      }
8242    }
8243  }, {
8244    key: "fail",
8245    value: function fail() {
8246      if (this.state == VisitState.started) {
8247        this.state = VisitState.failed;
8248        this.adapter.visitFailed(this);
8249      }
8250    }
8251  }, {
8252    key: "changeHistory",
8253    value: function changeHistory() {
8254      if (!this.historyChanged) {
8255        var actionForHistory = this.location.isEqualTo(this.referrer) ? 'replace' : this.action;
8256        var method = this.getHistoryMethodForAction(actionForHistory);
8257        method.call(this.controller, this.location, this.restorationIdentifier);
8258        this.historyChanged = true;
8259      }
8260    }
8261  }, {
8262    key: "issueRequest",
8263    value: function issueRequest() {
8264      if (this.shouldIssueRequest() && !this.request) {
8265        var url = _location__WEBPACK_IMPORTED_MODULE_1__.Location.wrap(this.location).absoluteURL;
8266        var options = {
8267          method: 'GET',
8268          headers: {},
8269          htmlOnly: true,
8270          timeout: 240
8271        };
8272        options.headers['Accept'] = 'text/html, application/xhtml+xml';
8273        options.headers['X-PJAX'] = 1;
8274
8275        if (this.hasCachedSnapshot()) {
8276          options.headers['X-PJAX-CACHED'] = 1;
8277        }
8278
8279        if (this.referrer) {
8280          options.headers['X-PJAX-REFERRER'] = _location__WEBPACK_IMPORTED_MODULE_1__.Location.wrap(this.referrer).absoluteURL;
8281        }
8282
8283        this.progress = 0;
8284        this.request = new _util_http_request__WEBPACK_IMPORTED_MODULE_0__.HttpRequest(this, url, options);
8285        this.request.send();
8286      }
8287    }
8288  }, {
8289    key: "getCachedSnapshot",
8290    value: function getCachedSnapshot() {
8291      var snapshot = this.controller.getCachedSnapshotForLocation(this.location);
8292
8293      if (snapshot && (!this.location.anchor || snapshot.hasAnchor(this.location.anchor))) {
8294        if (this.action == 'restore' || snapshot.isPreviewable()) {
8295          return snapshot;
8296        }
8297      }
8298    }
8299  }, {
8300    key: "hasCachedSnapshot",
8301    value: function hasCachedSnapshot() {
8302      return this.getCachedSnapshot() != null;
8303    }
8304  }, {
8305    key: "loadCachedSnapshot",
8306    value: function loadCachedSnapshot() {
8307      var _this2 = this;
8308
8309      var snapshot = this.getCachedSnapshot();
8310
8311      if (snapshot) {
8312        var isPreview = this.shouldIssueRequest();
8313        this.render(function () {
8314          _this2.cacheSnapshot();
8315
8316          if (_this2.isSamePage) {
8317            _this2.performScroll();
8318
8319            _this2.adapter.visitRendered(_this2);
8320          } else {
8321            _this2.controller.render({
8322              snapshot: snapshot,
8323              isPreview: isPreview
8324            }, _this2.performScroll);
8325
8326            _this2.adapter.visitRendered(_this2);
8327
8328            if (!isPreview) {
8329              _this2.complete();
8330            }
8331          }
8332        });
8333      }
8334    }
8335  }, {
8336    key: "loadResponse",
8337    value: function loadResponse() {
8338      var _this3 = this;
8339
8340      var request = this.request,
8341          response = this.response;
8342
8343      if (request && response) {
8344        this.render(function () {
8345          var snapshot = _snapshot__WEBPACK_IMPORTED_MODULE_2__.Snapshot.fromHTMLString(response);
8346
8347          _this3.cacheSnapshot();
8348
8349          if (request.failed && !snapshot.isNativeError()) {
8350            _this3.controller.render({
8351              error: response
8352            }, _this3.performScroll);
8353
8354            _this3.adapter.visitRendered(_this3);
8355
8356            _this3.fail();
8357          } else {
8358            _this3.controller.render({
8359              snapshot: snapshot
8360            }, _this3.performScroll);
8361
8362            _this3.adapter.visitRendered(_this3);
8363
8364            _this3.complete();
8365          }
8366        });
8367      }
8368    }
8369  }, {
8370    key: "followRedirect",
8371    value: function followRedirect() {
8372      if (this.redirectedToLocation && !this.followedRedirect) {
8373        this.location = this.redirectedToLocation;
8374        this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation, this.restorationIdentifier);
8375        this.followedRedirect = true;
8376      }
8377    }
8378  }, {
8379    key: "goToSamePageAnchor",
8380    value: function goToSamePageAnchor() {
8381      var _this4 = this;
8382
8383      if (this.isSamePage) {
8384        this.render(function () {
8385          _this4.cacheSnapshot();
8386
8387          _this4.performScroll();
8388
8389          _this4.adapter.visitRendered(_this4);
8390        });
8391      }
8392    } // HTTP request delegate
8393
8394  }, {
8395    key: "requestStarted",
8396    value: function requestStarted() {
8397      this.recordTimingMetric(TimingMetric.requestStart);
8398      this.adapter.visitRequestStarted(this);
8399    }
8400  }, {
8401    key: "requestProgressed",
8402    value: function requestProgressed(progress) {
8403      this.progress = progress;
8404
8405      if (this.adapter.visitRequestProgressed) {
8406        this.adapter.visitRequestProgressed(this);
8407      }
8408    }
8409  }, {
8410    key: "requestCompletedWithResponse",
8411    value: function requestCompletedWithResponse(response, statusCode, redirectedToLocation) {
8412      this.response = response;
8413      this.redirectedToLocation = _location__WEBPACK_IMPORTED_MODULE_1__.Location.wrap(redirectedToLocation);
8414      this.adapter.visitRequestCompleted(this);
8415    }
8416  }, {
8417    key: "requestFailedWithStatusCode",
8418    value: function requestFailedWithStatusCode(statusCode, response) {
8419      this.response = response;
8420      this.adapter.visitRequestFailedWithStatusCode(this, statusCode);
8421    }
8422  }, {
8423    key: "requestFinished",
8424    value: function requestFinished() {
8425      this.recordTimingMetric(TimingMetric.requestEnd);
8426      this.adapter.visitRequestFinished(this);
8427    }
8428  }, {
8429    key: "scrollToRestoredPosition",
8430    value: function scrollToRestoredPosition() {
8431      var position = this.restorationData ? this.restorationData.scrollPosition : undefined;
8432
8433      if (position) {
8434        this.controller.scrollToPosition(position);
8435        return true;
8436      }
8437    }
8438  }, {
8439    key: "scrollToAnchor",
8440    value: function scrollToAnchor() {
8441      if (this.location.anchor != null) {
8442        this.controller.scrollToAnchor(this.location.anchor);
8443        return true;
8444      }
8445    }
8446  }, {
8447    key: "scrollToTop",
8448    value: function scrollToTop() {
8449      this.controller.scrollToPosition({
8450        x: 0,
8451        y: 0
8452      });
8453    } // Instrumentation
8454
8455  }, {
8456    key: "recordTimingMetric",
8457    value: function recordTimingMetric(metric) {
8458      this.timingMetrics[metric] = new Date().getTime();
8459    }
8460  }, {
8461    key: "getTimingMetrics",
8462    value: function getTimingMetrics() {
8463      return Object.assign({}, this.timingMetrics);
8464    } // Private
8465
8466  }, {
8467    key: "getHistoryMethodForAction",
8468    value: function getHistoryMethodForAction(action) {
8469      switch (action) {
8470        case 'swap':
8471        case 'replace':
8472          return this.controller.replaceHistoryWithLocationAndRestorationIdentifier;
8473
8474        case 'advance':
8475        case 'restore':
8476          return this.controller.pushHistoryWithLocationAndRestorationIdentifier;
8477      }
8478    }
8479  }, {
8480    key: "shouldIssueRequest",
8481    value: function shouldIssueRequest() {
8482      if (this.action == 'restore') {
8483        return !this.hasCachedSnapshot();
8484      } else if (this.isSamePage) {
8485        return false;
8486      } else {
8487        return true;
8488      }
8489    }
8490  }, {
8491    key: "locationChangeIsSamePage",
8492    value: function locationChangeIsSamePage() {
8493      if (this.action == 'swap') {
8494        return true;
8495      }
8496
8497      var lastLocation = this.action == 'restore' && this.controller.lastRenderedLocation;
8498      return this.controller.locationIsSamePageAnchor(lastLocation || this.location);
8499    }
8500  }, {
8501    key: "cacheSnapshot",
8502    value: function cacheSnapshot() {
8503      if (!this.snapshotCached) {
8504        this.controller.cacheSnapshot();
8505        this.snapshotCached = true;
8506      }
8507    }
8508  }, {
8509    key: "render",
8510    value: function render(callback) {
8511      var _this5 = this;
8512
8513      this.cancelRender();
8514      this.frame = requestAnimationFrame(function () {
8515        delete _this5.frame;
8516        callback.call(_this5);
8517      });
8518    }
8519  }, {
8520    key: "cancelRender",
8521    value: function cancelRender() {
8522      if (this.frame) {
8523        cancelAnimationFrame(this.frame);
8524        delete this.frame;
8525      }
8526    }
8527  }]);
8528
8529  return Visit;
8530}();
8531
8532/***/ }),
8533
8534/***/ "./src/util/deferred.js":
8535/*!******************************!*\
8536  !*** ./src/util/deferred.js ***!
8537  \******************************/
8538/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8539
8540__webpack_require__.r(__webpack_exports__);
8541/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8542/* harmony export */   "Deferred": () => (/* binding */ Deferred),
8543/* harmony export */   "DeferredState": () => (/* binding */ DeferredState)
8544/* harmony export */ });
8545function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8546
8547function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
8548
8549function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
8550
8551var DeferredState = {
8552  pending: 'pending',
8553  rejected: 'rejected',
8554  resolved: 'resolved'
8555};
8556var Deferred = /*#__PURE__*/function () {
8557  function Deferred(options) {
8558    _classCallCheck(this, Deferred);
8559
8560    this.options = options || {};
8561    this.stateStr = DeferredState.pending;
8562    this.successFuncs = [];
8563    this.failureFuncs = [];
8564    this.progressFuncs = [];
8565    this.resolveArgs = [];
8566    this.rejectArgs = [];
8567    this.progressArgs = [];
8568    this.isProgressNotified = false;
8569  } // Public
8570
8571
8572  _createClass(Deferred, [{
8573    key: "resolve",
8574    value: function resolve() {
8575      if (this.stateStr === DeferredState.pending) {
8576        this.resolveArgs = arguments;
8577        this.callFunction.call(this, this.successFuncs, this.resolveArgs);
8578        this.stateStr = DeferredState.resolved;
8579      }
8580
8581      return this;
8582    }
8583  }, {
8584    key: "reject",
8585    value: function reject() {
8586      if (this.stateStr === DeferredState.pending) {
8587        this.rejectArgs = arguments;
8588        this.callFunction.call(this, this.failureFuncs, this.rejectArgs);
8589        this.stateStr = DeferredState.rejected;
8590      }
8591
8592      return this;
8593    }
8594  }, {
8595    key: "notify",
8596    value: function notify() {
8597      if (this.stateStr === DeferredState.pending) {
8598        this.progressArgs = arguments;
8599        this.callFunction.call(this, this.progressFuncs, this.progressArgs);
8600        this.isProgressNotified = true;
8601      }
8602
8603      return this;
8604    }
8605  }, {
8606    key: "abort",
8607    value: function abort() {
8608      this.options.delegate && this.options.delegate.abort();
8609    }
8610  }, {
8611    key: "done",
8612    value: function done() {
8613      var argumentsArray = Array.prototype.slice.call(arguments);
8614      this.successFuncs = this.successFuncs.concat(argumentsArray);
8615
8616      if (this.stateStr === DeferredState.resolved) {
8617        this.callFunction.call(this, argumentsArray, this.resolveArgs);
8618      }
8619
8620      return this;
8621    }
8622  }, {
8623    key: "fail",
8624    value: function fail() {
8625      var argumentsArray = Array.prototype.slice.call(arguments);
8626      this.failureFuncs = this.failureFuncs.concat(argumentsArray);
8627
8628      if (this.stateStr === DeferredState.rejected) {
8629        this.callFunction.call(this, argumentsArray, this.rejectArgs);
8630      }
8631
8632      return this;
8633    }
8634  }, {
8635    key: "progress",
8636    value: function progress() {
8637      var argumentsArray = Array.prototype.slice.call(arguments);
8638      this.progressFuncs = this.progressFuncs.concat(argumentsArray);
8639
8640      if (this.stateStr === DeferredState.pending && this.isProgressNotified) {
8641        this.callFunction.call(this, argumentsArray, this.progressArgs);
8642      }
8643
8644      return this;
8645    }
8646  }, {
8647    key: "always",
8648    value: function always() {
8649      var argumentsArray = Array.prototype.slice.call(arguments);
8650      this.successFuncs = this.successFuncs.concat(argumentsArray);
8651      this.failureFuncs = this.failureFuncs.concat(argumentsArray);
8652
8653      if (this.stateStr !== DeferredState.pending) {
8654        this.callFunction.call(this, argumentsArray, this.resolveArgs || this.rejectArgs);
8655      }
8656
8657      return this;
8658    }
8659  }, {
8660    key: "then",
8661    value: function then() {
8662      var tempArgs = [];
8663
8664      for (var index in arguments) {
8665        var itemToPush;
8666
8667        if (Array.isArray(arguments[index])) {
8668          itemToPush = arguments[index];
8669        } else {
8670          itemToPush = [arguments[index]];
8671        }
8672
8673        tempArgs.push(itemToPush);
8674      }
8675
8676      this.done.apply(this, tempArgs[0]);
8677      this.fail.apply(this, tempArgs[1]);
8678      this.progress.apply(this, tempArgs[2]);
8679      return this;
8680    }
8681  }, {
8682    key: "promise",
8683    value: function promise() {
8684      var protectedNames = ['resolve', 'reject', 'promise', 'notify'];
8685      var result = {};
8686
8687      for (var key in this) {
8688        if (protectedNames.indexOf(key) === -1) {
8689          result[key] = this[key];
8690        }
8691      }
8692
8693      return result;
8694    }
8695  }, {
8696    key: "state",
8697    value: function state() {
8698      if (arguments.length > 0) {
8699        stateStr = arguments[0];
8700      }
8701
8702      return stateStr;
8703    } // Private
8704
8705  }, {
8706    key: "callFunction",
8707    value: function callFunction(functionDefinitionArray, functionArgumentArray, options) {
8708      options = options || {};
8709      var scope = options.scope || this;
8710
8711      for (var index in functionDefinitionArray) {
8712        var item = functionDefinitionArray[index];
8713
8714        if (typeof item === 'function') {
8715          item.apply(scope, functionArgumentArray);
8716        }
8717      }
8718    }
8719  }]);
8720
8721  return Deferred;
8722}();
8723
8724/***/ }),
8725
vendor: 4,306 bytes, lines 8726-8772
8726/***/ "./src/util/events.js":
8727/*!****************************!*\
8728  !*** ./src/util/events.js ***!
8729  \****************************/
8730/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8731
8732__webpack_require__.r(__webpack_exports__);
8733/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8734/* harmony export */   "Events": () => (/* binding */ Events)
8735/* harmony export */ });
8736/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ "./src/util/index.js");
8737function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
8738
8739function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8740
8741function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
8742
8743function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8744
8745function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8746
8747function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
8748
8749function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
8750
8751function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8752
8753function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
8754
8755function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
8756
8757
8758/**
8759 * Constants
8760 */
8761
8762var namespaceRegex = /[^.]*(?=\..*)\.|.*/;
8763var stripNameRegex = /\..*/;
8764var stripUidRegex = /::\d+$/;
8765var eventRegistry = {}; // Events storage
8766
8767var uidEvent = 1;
8768var customEvents = {
8769  mouseenter: 'mouseover',
8770  mouseleave: 'mouseout'
8771};
8772var nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'ke
8772ypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
8773var Events = /*#__PURE__*/function () {
8774  function Events() {
8775    _classCallCheck(this, Events);
8776  }
8777
8778  _createClass(Events, null, [{
8779    key: "on",
8780    value: function on(element, event, handler, delegationFunction, options) {
8781      addHandler(element, event, handler, delegationFunction, options, false);
8782    }
8783  }, {
8784    key: "one",
8785    value: function one(element, event, handler, delegationFunction, options) {
8786      addHandler(element, event, handler, delegationFunction, options, true);
8787    }
8788  }, {
8789    key: "off",
8790    value: function off(element, originalTypeEvent, handler, delegationFunction, options) {
8791      if (typeof originalTypeEvent !== 'string' || !element) {
8792        return;
8793      }
8794
8795      var _normalizeParameters = normalizeParameters(originalTypeEvent, handler, delegationFunction, options),
8796          _normalizeParameters2 = _slicedToArray(_normalizeParameters, 4),
8797          isDelegated = _normalizeParameters2[0],
8798          callable = _normalizeParameters2[1],
8799          typeEvent = _normalizeParameters2[2],
8800          opts = _normalizeParameters2[3];
8801
8802      var inNamespace = typeEvent !== originalTypeEvent;
8803      var events = getElementEvents(element);
8804      var storeElementEvent = events[typeEvent] || {};
8805      var isNamespace = originalTypeEvent.startsWith('.');
8806
8807      if (typeof callable !== 'undefined') {
8808        // Simplest case: handler is passed, remove that listener ONLY.
8809        if (!storeElementEvent) {
8810          return;
8811        }
8812
8813        removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null, opts);
8814        return;
8815      }
8816
8817      if (isNamespace) {
8818        for (var _i2 = 0, _Object$keys = Object.keys(events); _i2 < _Object$keys.length; _i2++) {
8819          var elementEvent = _Object$keys[_i2];
8820          removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
8821        }
8822      }
8823
8824      for (var _i3 = 0, _Object$keys2 = Object.keys(storeElementEvent); _i3 < _Object$keys2.length; _i3++) {
8825        var keyHandlers = _Object$keys2[_i3];
8826        var handlerKey = keyHandlers.replace(stripUidRegex, '');
8827
8828        if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
8829          var event = storeElementEvent[keyHandlers];
8830          removeHandler(element, events, typeEvent, event.callable, event.delegationSelector, opts);
8831        }
8832      }
8833    }
8834  }, {
8835    key: "dispatch",
8836    value: function dispatch(eventName) {
8837      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
8838          _ref$target = _ref.target,
8839          target = _ref$target === void 0 ? document : _ref$target,
8840          _ref$detail = _ref.detail,
8841          detail = _ref$detail === void 0 ? {} : _ref$detail,
8842          _ref$bubbles = _ref.bubbles,
8843          bubbles = _ref$bubbles === void 0 ? true : _ref$bubbles,
8844          _ref$cancelable = _ref.cancelable,
8845          cancelable = _ref$cancelable === void 0 ? true : _ref$cancelable;
8846
8847      return (0,_index__WEBPACK_IMPORTED_MODULE_0__.dispatch)(eventName, {
8848        target: target,
8849        detail: detail,
8850        bubbles: bubbles,
8851        cancelable: cancelable
8852      });
8853    }
8854  }]);
8855
8856  return Events;
8857}();
8858/**
8859 * Private methods
8860 */
8861
8862function makeEventUid(element, uid) {
8863  return uid && "".concat(uid, "::").concat(uidEvent++) || element.uidEvent || uidEvent++;
8864}
8865
8866function getElementEvents(element) {
8867  var uid = makeEventUid(element);
8868  element.uidEvent = uid;
8869  eventRegistry[uid] = eventRegistry[uid] || {};
8870  return eventRegistry[uid];
8871}
8872
8873function findHandler(events, callable) {
8874  var delegationSelector = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
8875  return Object.values(events).find(function (event) {
8876    return event.callable === callable && event.delegationSelector === delegationSelector;
8877  });
8878}
8879
8880function normalizeParameters(originalTypeEvent, handler, delegationFunction, options) {
8881  var isDelegated = typeof handler === 'string';
8882  var callable = isDelegated ? delegationFunction : handler;
8883  var opts = isDelegated ? options : delegationFunction;
8884  var typeEvent = getTypeEvent(originalTypeEvent);
8885
8886  if (!nativeEvents.has(typeEvent)) {
8887    typeEvent = originalTypeEvent;
8888  }
8889
8890  return [isDelegated, callable, typeEvent, opts];
8891}
8892
8893function addHandler(element, originalTypeEvent, handler, delegationFunction, options, oneOff) {
8894  if (typeof originalTypeEvent !== 'string' || !element) {
8895    return;
8896  }
8897
8898  var _normalizeParameters3 = normalizeParameters(originalTypeEvent, handler, delegationFunction, options),
8899      _normalizeParameters4 = _slicedToArray(_normalizeParameters3, 4),
8900      isDelegated = _normalizeParameters4[0],
8901      callable = _normalizeParameters4[1],
8902      typeEvent = _normalizeParameters4[2],
8903      opts = _normalizeParameters4[3]; // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
8904  // this prevents the handler from being dispatched the same way as mouseover or mouseout does
8905
8906
8907  if (originalTypeEvent in customEvents) {
8908    var wrapFunction = function wrapFunction(fn) {
8909      return function (event) {
8910        if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
8911          return fn.call(this, event);
8912        }
8913      };
8914    };
8915
8916    callable = wrapFunction(callable);
8917  }
8918
8919  var events = getElementEvents(element);
8920  var handlers = events[typeEvent] || (events[typeEvent] = {});
8921  var previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
8922
8923  if (previousFunction) {
8924    previousFunction.oneOff = previousFunction.oneOff && oneOff;
8925    return;
8926  }
8927
8928  var uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));
8929  var fn = isDelegated ? internalDelegationHandler(element, handler, callable) : internalHandler(element, callable);
8930  fn.delegationSelector = isDelegated ? handler : null;
8931  fn.callable = callable;
8932  fn.oneOff = oneOff;
8933  fn.uidEvent = uid;
8934  handlers[uid] = fn;
8935  element.addEventListener(typeEvent, fn, opts);
8936}
8937
8938function removeHandler(element, events, typeEvent, handler, delegationSelector, options) {
8939  var fn = findHandler(events[typeEvent], handler, delegationSelector);
8940
8941  if (!fn) {
8942    return;
8943  }
8944
8945  element.removeEventListener(typeEvent, fn, options);
8946  delete events[typeEvent][fn.uidEvent];
8947}
8948
8949function internalHandler(element, fn) {
8950  return function handler(event) {
8951    event.delegateTarget = element;
8952
8953    if (handler.oneOff) {
8954      Events.off(element, event.type, fn);
8955    }
8956
8957    return fn.apply(element, [event]);
8958  };
8959}
8960
8961function internalDelegationHandler(element, selector, fn) {
8962  return function handler(event) {
8963    var domElements = element.querySelectorAll(selector);
8964
8965    for (var target = event.target; target && target !== this; target = target.parentNode) {
8966      var _iterator = _createForOfIteratorHelper(domElements),
8967          _step;
8968
8969      try {
8970        for (_iterator.s(); !(_step = _iterator.n()).done;) {
8971          var domElement = _step.value;
8972
8973          if (domElement !== target) {
8974            continue;
8975          }
8976
8977          event.delegateTarget = target;
8978
8979          if (handler.oneOff) {
8980            Events.off(element, event.type, selector, fn);
8981          }
8982
8983          return fn.apply(target, [event]);
8984        }
8985      } catch (err) {
8986        _iterator.e(err);
8987      } finally {
8988        _iterator.f();
8989      }
8990    }
8991  };
8992}
8993
8994function removeNamespacedHandlers(element, events, typeEvent, namespace) {
8995  var storeElementEvent = events[typeEvent] || {};
8996
8997  for (var _i4 = 0, _Object$keys3 = Object.keys(storeElementEvent); _i4 < _Object$keys3.length; _i4++) {
8998    var handlerKey = _Object$keys3[_i4];
8999
9000    if (handlerKey.includes(namespace)) {
9001      var event = storeElementEvent[handlerKey];
9002      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
9003    }
9004  }
9005} // Allow to get the native events from namespaced events ('click.bs.button' --> 'click')
9006
9007
9008function getTypeEvent(event) {
9009  event = event.replace(stripNameRegex, '');
9010  return customEvents[event] || event;
9011}
9012
9013/***/ }),
9014
9015/***/ "./src/util/form-serializer.js":
9016/*!*************************************!*\
9017  !*** ./src/util/form-serializer.js ***!
9018  \*************************************/
9019/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9020
9021__webpack_require__.r(__webpack_exports__);
9022/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9023/* harmony export */   "FormSerializer": () => (/* binding */ FormSerializer)
9024/* harmony export */ });
9025function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9026
9027function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
9028
9029function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
9030
9031// FormSerializer serializes input elements to JSON
9032var FormSerializer = /*#__PURE__*/function () {
9033  function FormSerializer() {
9034    _classCallCheck(this, FormSerializer);
9035  }
9036
9037  _createClass(FormSerializer, [{
9038    key: "parseContainer",
9039    value: // Private
9040    function parseContainer(element) {
9041      var _this = this;
9042
9043      var jsonData = {};
9044      element.querySelectorAll('input, textarea, select').forEach(function (field) {
9045        if (!field.name || field.disabled || ['file', 'reset', 'submit', 'button'].indexOf(field.type) > -1) {
9046          return;
9047        }
9048
9049        if (['checkbox', 'radio'].indexOf(field.type) > -1 && !field.checked) {
9050          return;
9051        }
9052
9053        if (field.type === 'select-multiple') {
9054          var arr = [];
9055          Array.from(field.options).forEach(function (option) {
9056            if (option.selected) {
9057              arr.push({
9058                name: field.name,
9059                value: option.value
9060              });
9061            }
9062          });
9063
9064          _this.assignObjectInternal(jsonData, field.name, arr);
9065
9066          return;
9067        }
9068
9069        _this.assignObjectInternal(jsonData, field.name, field.value);
9070      });
9071      return jsonData;
9072    }
9073  }, {
9074    key: "assignObjectInternal",
9075    value: function assignObjectInternal(obj, fieldName, fieldValue) {
9076      this.assignObjectNested(obj, this.nameToArray(fieldName), fieldValue, fieldName.endsWith('[]'));
9077    }
9078  }, {
9079    key: "assignObjectNested",
9080    value: function assignObjectNested(obj, fieldArr, fieldValue, isArray) {
9081      var currentTarget = obj,
9082          lastIndex = fieldArr.length - 1;
9083      fieldArr.forEach(function (prop, index) {
9084        if (isArray && index === lastIndex) {
9085          if (!Array.isArray(currentTarget[prop])) {
9086            currentTarget[prop] = [];
9087          }
9088
9089          currentTarget[prop].push(fieldValue);
9090        } else {
9091          if (currentTarget[prop] === undefined || currentTarget[prop].constructor !== {}.constructor) {
9092            currentTarget[prop] = {};
9093          }
9094
9095          if (index === lastIndex) {
9096            currentTarget[prop] = fieldValue;
9097          }
9098
9099          currentTarget = currentTarget[prop];
9100        }
9101      });
9102    }
9103  }, {
9104    key: "nameToArray",
9105    value: function nameToArray(fieldName) {
9106      var expression = /([^\]\[]+)/g,
9107          elements = [],
9108          searchResult;
9109
9110      while (searchResult = expression.exec(fieldName)) {
9111        elements.push(searchResult[0]);
9112      }
9113
9114      return elements;
9115    }
9116  }], [{
9117    key: "assignToObj",
9118    value: // Public
9119    function assignToObj(obj, name, value) {
9120      new FormSerializer().assignObjectInternal(obj, name, value);
9121    }
9122  }, {
9123    key: "serializeJSON",
9124    value: function serializeJSON(element) {
9125      return new FormSerializer().parseContainer(element);
9126    }
9127  }]);
9128
9129  return FormSerializer;
9130}();
9131
9132/***/ }),
9133
9134/***/ "./src/util/http-request.js":
9135/*!**********************************!*\
9136  !*** ./src/util/http-request.js ***!
9137  \**********************************/
9138/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9139
9140__webpack_require__.r(__webpack_exports__);
9141/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9142/* harmony export */   "HttpRequest": () => (/* binding */ HttpRequest),
9143/* harmony export */   "SystemStatusCode": () => (/* binding */ SystemStatusCode)
9144/* harmony export */ });
9145/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./events */ "./src/util/events.js");
9146function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9147
9148function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
9149
9150function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
9151
9152
9153var SystemStatusCode = {
9154  networkFailure: 0,
9155  timeoutFailure: -1,
9156  contentTypeMismatch: -2,
9157  userAborted: -3
9158};
9159var HttpRequest = /*#__PURE__*/function () {
9160  function HttpRequest(delegate, url, options) {
9161    var _this = this;
9162
9163    _classCallCheck(this, HttpRequest);
9164
9165    this.failed = false;
9166    this.progress = 0;
9167    this.sent = false;
9168    this.delegate = delegate;
9169    this.url = url;
9170    this.options = options;
9171    this.headers = options.headers || {};
9172    this.method = options.method || 'GET';
9173    this.responseType = options.responseType || '';
9174    this.data = options.data;
9175    this.timeout = options.timeout || 0; // XMLHttpRequest events
9176
9177    this.requestProgressed = function (event) {
9178      if (event.lengthComputable) {
9179        _this.setProgress(event.loaded / event.total);
9180      }
9181    };
9182
9183    this.requestLoaded = function () {
9184      _this.endRequest(function (xhr) {
9185        _this.processResponseData(xhr, function (xhr, data) {
9186          var contentType = xhr.getResponseHeader('Content-Type');
9187          var responseData = contentTypeIsJSON(contentType) ? JSON.parse(data) : data;
9188
9189          if (_this.options.htmlOnly && !contentTypeIsHTML(contentType)) {
9190            _this.failed = true;
9191
9192            _this.delegate.requestFailedWithStatusCode(SystemStatusCode.contentTypeMismatch);
9193
9194            return;
9195          }
9196
9197          if (xhr.status >= 200 && xhr.status < 300) {
9198            _this.delegate.requestCompletedWithResponse(responseData, xhr.status, contentResponseIsRedirect(xhr, _this.url));
9199          } else {
9200            _this.failed = true;
9201
9202            _this.delegate.requestFailedWithStatusCode(xhr.status, responseData);
9203          }
9204        });
9205      });
9206    };
9207
9208    this.requestFailed = function () {
9209      _this.endRequest(function () {
9210        _this.failed = true;
9211
9212        _this.delegate.requestFailedWithStatusCode(SystemStatusCode.networkFailure);
9213      });
9214    };
9215
9216    this.requestTimedOut = function () {
9217      _this.endRequest(function () {
9218        _this.failed = true;
9219
9220        _this.delegate.requestFailedWithStatusCode(SystemStatusCode.timeoutFailure);
9221      });
9222    };
9223
9224    this.requestCanceled = function () {
9225      if (_this.options.trackAbort) {
9226        _this.endRequest(function () {
9227          _this.failed = true;
9228
9229          _this.delegate.requestFailedWithStatusCode(SystemStatusCode.userAborted);
9230        });
9231      } else {
9232        _this.endRequest();
9233      }
9234    };
9235
9236    this.createXHR();
9237  }
9238
9239  _createClass(HttpRequest, [{
9240    key: "send",
9241    value: function send() {
9242      if (this.xhr && !this.sent) {
9243        this.notifyApplicationBeforeRequestStart();
9244        this.setProgress(0);
9245        this.xhr.send(this.data || null);
9246        this.sent = true;
9247        this.delegate.requestStarted();
9248      }
9249    }
9250  }, {
9251    key: "abort",
9252    value: function abort() {
9253      if (this.xhr && this.sent) {
9254        this.xhr.abort();
9255      }
9256    } // Application events
9257
9258  }, {
9259    key: "notifyApplicationBeforeRequestStart",
9260    value: function notifyApplicationBeforeRequestStart() {
9261      _events__WEBPACK_IMPORTED_MODULE_0__.Events.dispatch('ajax:request-start', {
9262        detail: {
9263          url: this.url,
9264          xhr: this.xhr
9265        },
9266        cancelable: false
9267      });
9268    }
9269  }, {
9270    key: "notifyApplicationAfterRequestEnd",
9271    value: function notifyApplicationAfterRequestEnd() {
9272      _events__WEBPACK_IMPORTED_MODULE_0__.Events.dispatch('ajax:request-end', {
9273        detail: {
9274          url: this.url,
9275          xhr: this.xhr
9276        },
9277        cancelable: false
9278      });
9279    } // Private
9280
9281  }, {
9282    key: "createXHR",
9283    value: function createXHR() {
9284      var xhr = this.xhr = new XMLHttpRequest();
9285      xhr.open(this.method, this.url, true);
9286      xhr.responseType = this.responseType;
9287      xhr.onprogress = this.requestProgressed;
9288      xhr.onload = this.requestLoaded;
9289      xhr.onerror = this.requestFailed;
9290      xhr.ontimeout = this.requestTimedOut;
9291      xhr.onabort = this.requestCanceled;
9292
9293      if (this.timeout) {
9294        xhr.timeout = this.timeout * 1000;
9295      }
9296
9297      for (var i in this.headers) {
9298        xhr.setRequestHeader(i, this.headers[i]);
9299      }
9300
9301      return xhr;
9302    }
9303  }, {
9304    key: "endRequest",
9305    value: function endRequest() {
9306      var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};
9307
9308      if (this.xhr) {
9309        this.notifyApplicationAfterRequestEnd();
9310        callback(this.xhr);
9311        this.destroy();
9312      }
9313    }
9314  }, {
9315    key: "setProgress",
9316    value: function setProgress(progress) {
9317      this.progress = progress;
9318      this.delegate.requestProgressed(progress);
9319    }
9320  }, {
9321    key: "destroy",
9322    value: function destroy() {
9323      this.setProgress(1);
9324      this.delegate.requestFinished();
9325    }
9326  }, {
9327    key: "processResponseData",
9328    value: function processResponseData(xhr, callback) {
9329      if (this.responseType !== 'blob') {
9330        callback(xhr, xhr.responseText);
9331        return;
9332      } // Confirm response is a download
9333
9334
9335      var contentDisposition = xhr.getResponseHeader('Content-Disposition') || '';
9336
9337      if (contentDisposition.indexOf('attachment') === 0 || contentDisposition.indexOf('inline') === 0) {
9338        callback(xhr, xhr.response);
9339        return;
9340      } // Convert blob to text
9341
9342
9343      var reader = new FileReader();
9344      reader.addEventListener('load', function () {
9345        callback(xhr, reader.result);
9346      });
9347      reader.readAsText(xhr.response);
9348    }
9349  }]);
9350
9351  return HttpRequest;
9352}();
9353
9354function contentResponseIsRedirect(xhr, url) {
9355  if (xhr.getResponseHeader('X-OCTOBER-LOCATION')) {
9356    return xhr.getResponseHeader('X-OCTOBER-LOCATION');
9357  }
9358
9359  var anchorMatch = url.match(/^(.*)#/),
9360      wantUrl = anchorMatch ? anchorMatch[1] : url;
9361  return wantUrl !== xhr.responseURL ? xhr.responseURL : null;
9362}
9363
9364function contentTypeIsHTML(contentType) {
9365  return (contentType || '').match(/^text\/html|^application\/xhtml\+xml/);
9366}
9367
9368function contentTypeIsJSON(contentType) {
9369  return (contentType || '').includes('application/json');
9370}
9371
9372/***/ }),
9373
9374/***/ "./src/util/index.js":
9375/*!***************************!*\
9376  !*** ./src/util/index.js ***!
9377  \***************************/
9378/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9379
9380__webpack_require__.r(__webpack_exports__);
9381/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9382/* harmony export */   "array": () => (/* binding */ array),
9383/* harmony export */   "defer": () => (/* binding */ defer),
9384/* harmony export */   "dispatch": () => (/* binding */ dispatch),
9385/* harmony export */   "unindent": () => (/* binding */ unindent),
9386/* harmony export */   "uuid": () => (/* binding */ uuid)
9387/* harmony export */ });
9388function dispatch(eventName) {
9389  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
9390      _ref$target = _ref.target,
9391      target = _ref$target === void 0 ? document : _ref$target,
9392      _ref$detail = _ref.detail,
9393      detail = _ref$detail === void 0 ? {} : _ref$detail,
9394      _ref$bubbles = _ref.bubbles,
9395      bubbles = _ref$bubbles === void 0 ? true : _ref$bubbles,
9396      _ref$cancelable = _ref.cancelable,
9397      cancelable = _ref$cancelable === void 0 ? true : _ref$cancelable;
9398
9399  var event = new CustomEvent(eventName, {
9400    detail: detail,
9401    bubbles: bubbles,
9402    cancelable: cancelable
9403  });
9404  target.dispatchEvent(event);
9405  return event;
9406}
9407function defer(callback) {
9408  setTimeout(callback, 1);
9409}
9410function unindent(strings) {
9411  for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
9412    values[_key - 1] = arguments[_key];
9413  }
9414
9415  var lines = trimLeft(interpolate(strings, values)).split("\n");
9416  var match = lines[0].match(/^\s+/);
9417  var indent = match ? match[0].length : 0;
9418  return lines.map(function (line) {
9419    return line.slice(indent);
9420  }).join("\n");
9421}
9422
9423function trimLeft(string) {
9424  return string.replace(/^\n/, "");
9425}
9426
9427function interpolate(strings, values) {
9428  return strings.reduce(function (result, string, i) {
9429    var value = values[i] == undefined ? "" : values[i];
9430    return result + string + value;
9431  }, "");
9432}
9433
9434function array(values) {
9435  return Array.prototype.slice.call(values);
9436}
9437function uuid() {
9438  return Array.apply(null, {
9439    length: 36
9440  }).map(function (_, i) {
9441    if (i == 8 || i == 13 || i == 18 || i == 23) {
9442      return "-";
9443    } else if (i == 14) {
9444      return "4";
9445    } else if (i == 19) {
9446      return (Math.floor(Math.random() * 4) + 8).toString(16);
9447    } else {
9448      return Math.floor(Math.random() * 15).toString(16);
9449    }
9450  }).join("");
9451}
9452
9453/***/ }),
9454
9455/***/ "./src/util/json-parser.js":
9456/*!*********************************!*\
9457  !*** ./src/util/json-parser.js ***!
9458  \*********************************/
9459/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9460
9461__webpack_require__.r(__webpack_exports__);
9462/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9463/* harmony export */   "JsonParser": () => (/* binding */ JsonParser)
9464/* harmony export */ });
9465function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
9466
9467function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9468
9469function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
9470
9471function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
9472
9473// JsonParser serializes JS-syntax to JSON without using eval
9474var JsonParser = /*#__PURE__*/function () {
9475  function JsonParser() {
9476    _classCallCheck(this, JsonParser);
9477  }
9478
9479  _createClass(JsonParser, [{
9480    key: "parseString",
9481    value: // Private
9482    function parseString(str) {
9483      str = str.trim();
9484
9485      if (!str.length) {
9486        throw new Error("Broken JSON object.");
9487      }
9488
9489      var result = "";
9490      /*
9491       * the mistake ','
9492       */
9493
9494      while (str && str[0] === ",") {
9495        str = str.substr(1);
9496      }
9497      /*
9498       * string
9499       */
9500
9501
9502      if (str[0] === "\"" || str[0] === "'") {
9503        if (str[str.length - 1] !== str[0]) {
9504          throw new Error("Invalid string JSON object.");
9505        }
9506
9507        var body = "\"";
9508
9509        for (var i = 1; i < str.length; i++) {
9510          if (str[i] === "\\") {
9511            if (str[i + 1] === "'") {
9512              body += str[i + 1];
9513            } else {
9514              body += str[i];
9515              body += str[i + 1];
9516            }
9517
9518            i++;
9519          } else if (str[i] === str[0]) {
9520            body += "\"";
9521            return body;
9522          } else if (str[i] === "\"") {
9523            body += "\\\"";
9524          } else body += str[i];
9525        }
9526
9527        throw new Error("Invalid string JSON object.");
9528      }
9529      /*
9530       * boolean
9531       */
9532
9533
9534      if (str === "true" || str === "false") {
9535        return str;
9536      }
9537      /*
9538       * null
9539       */
9540
9541
9542      if (str === "null") {
9543        return "null";
9544      }
9545      /*
9546       * number
9547       */
9548
9549
9550      var num = parseFloat(str);
9551
9552      if (!isNaN(num)) {
9553        return num.toString();
9554      }
9555      /*
9556       * object
9557       */
9558
9559
9560      if (str[0] === "{") {
9561        var type = "needKey";
9562        var result = "{";
9563
9564        for (var i = 1; i < str.length; i++) {
9565          if (this.isBlankChar(str[i])) {
9566            continue;
9567          } else if (type === "needKey" && (str[i] === "\"" || str[i] === "'")) {
9568            var key = this.parseKey(str, i + 1, str[i]);
9569            result += "\"" + key + "\"";
9570            i += key.length;
9571            i += 1;
9572            type = "afterKey";
9573          } else if (type === "needKey" && this.canBeKeyHead(str[i])) {
9574            var key = this.parseKey(str, i);
9575            result += "\"";
9576            result += key;
9577            result += "\"";
9578            i += key.length - 1;
9579            type = "afterKey";
9580          } else if (type === "afterKey" && str[i] === ":") {
9581            result += ":";
9582            type = ":";
9583          } else if (type === ":") {
9584            var body = this.getBody(str, i);
9585            i = i + body.originLength - 1;
9586            result += this.parseString(body.body);
9587            type = "afterBody";
9588          } else if (type === "afterBody" || type === "needKey") {
9589            var last = i;
9590
9591            while (str[last] === "," || this.isBlankChar(str[last])) {
9592              last++;
9593            }
9594
9595            if (str[last] === "}" && last === str.length - 1) {
9596              while (result[result.length - 1] === ",") {
9597                result = result.substr(0, result.length - 1);
9598              }
9599
9600              result += "}";
9601              return result;
9602            } else if (last !== i && result !== "{") {
9603              result += ",";
9604              type = "needKey";
9605              i = last - 1;
9606            }
9607          }
9608        }
9609
9610        throw new Error("Broken JSON object near " + result);
9611      }
9612      /*
9613       * array
9614       */
9615
9616
9617      if (str[0] === "[") {
9618        var result = "[";
9619        var type = "needBody";
9620
9621        for (var i = 1; i < str.length; i++) {
9622          if (" " === str[i] || "\n" === str[i] || "\t" === str[i]) {
9623            continue;
9624          } else if (type === "needBody") {
9625            if (str[i] === ",") {
9626              result += "null,";
9627              continue;
9628            }
9629
9630            if (str[i] === "]" && i === str.length - 1) {
9631              if (result[result.length - 1] === ",") result = result.substr(0, result.length - 1);
9632              result += "]";
9633              return result;
9634            }
9635
9636            var body = this.getBody(str, i);
9637            i = i + body.originLength - 1;
9638            result += this.parseString(body.body);
9639            type = "afterBody";
9640          } else if (type === "afterBody") {
9641            if (str[i] === ",") {
9642              result += ",";
9643              type = "needBody"; // deal with mistake ","
9644
9645              while (str[i + 1] === "," || this.isBlankChar(str[i + 1])) {
9646                if (str[i + 1] === ",") result += "null,";
9647                i++;
9648              }
9649            } else if (str[i] === "]" && i === str.length - 1) {
9650              result += "]";
9651              return result;
9652            }
9653          }
9654        }
9655
9656        throw new Error("Broken JSON array near " + result);
9657      }
9658    }
9659  }, {
9660    key: "parseKey",
9661    value: function parseKey(str, pos, quote) {
9662      var key = "";
9663
9664      for (var i = pos; i < str.length; i++) {
9665        if (quote && quote === str[i]) {
9666          return key;
9667        } else if (!quote && (str[i] === " " || str[i] === ":")) {
9668          return key;
9669        }
9670
9671        key += str[i];
9672
9673        if (str[i] === "\\" && i + 1 < str.length) {
9674          key += str[i + 1];
9675          i++;
9676        }
9677      }
9678
9679      throw new Error("Broken JSON syntax near " + key);
9680    }
9681  }, {
9682    key: "getBody",
9683    value: function getBody(str, pos) {
9684      // parse string body
9685      if (str[pos] === "\"" || str[pos] === "'") {
9686        var body = str[pos];
9687
9688        for (var i = pos + 1; i < str.length; i++) {
9689          if (str[i] === "\\") {
9690            body += str[i];
9691            if (i + 1 < str.length) body += str[i + 1];
9692            i++;
9693          } else if (str[i] === str[pos]) {
9694            body += str[pos];
9695            return {
9696              originLength: body.length,
9697              body: body
9698            };
9699          } else body += str[i];
9700        }
9701
9702        throw new Error("Broken JSON string body near " + body);
9703      } // parse true / false
9704
9705
9706      if (str[pos] === "t") {
9707        if (str.indexOf("true", pos) === pos) {
9708          return {
9709            originLength: "true".length,
9710            body: "true"
9711          };
9712        }
9713
9714        throw new Error("Broken JSON boolean body near " + str.substr(0, pos + 10));
9715      }
9716
9717      if (str[pos] === "f") {
9718        if (str.indexOf("f", pos) === pos) {
9719          return {
9720            originLength: "false".length,
9721            body: "false"
9722          };
9723        }
9724
9725        throw new Error("Broken JSON boolean body near " + str.substr(0, pos + 10));
9726      } // parse null
9727
9728
9729      if (str[pos] === "n") {
9730        if (str.indexOf("null", pos) === pos) {
9731          return {
9732            originLength: "null".length,
9733            body: "null"
9734          };
9735        }
9736
9737        throw new Error("Broken JSON boolean body near " + str.substr(0, pos + 10));
9738      } // parse number
9739
9740
9741      if (str[pos] === "-" || str[pos] === "+" || str[pos] === "." || str[pos] >= "0" && str[pos] <= "9") {
9742        var body = "";
9743
9744        for (var i = pos; i < str.length; i++) {
9745          if (str[i] === "-" || str[i] === "+" || str[i] === "." || str[i] >= "0" && str[i] <= "9") {
9746            body += str[i];
9747          } else {
9748            return {
9749              originLength: body.length,
9750              body: body
9751            };
9752          }
9753        }
9754
9755        throw new Error("Broken JSON number body near " + body);
9756      } // parse object
9757
9758
9759      if (str[pos] === "{" || str[pos] === "[") {
9760        var stack = [str[pos]];
9761        var body = str[pos];
9762
9763        for (var i = pos + 1; i < str.length; i++) {
9764          body += str[i];
9765
9766          if (str[i] === "\\") {
9767            if (i + 1 < str.length) body += str[i + 1];
9768            i++;
9769          } else if (str[i] === "\"") {
9770            if (stack[stack.length - 1] === "\"") {
9771              stack.pop();
9772            } else if (stack[stack.length - 1] !== "'") {
9773              stack.push(str[i]);
9774            }
9775          } else if (str[i] === "'") {
9776            if (stack[stack.length - 1] === "'") {
9777              stack.pop();
9778            } else if (stack[stack.length - 1] !== "\"") {
9779              stack.push(str[i]);
9780            }
9781          } else if (stack[stack.length - 1] !== "\"" && stack[stack.length - 1] !== "'") {
9782            if (str[i] === "{") {
9783              stack.push("{");
9784            } else if (str[i] === "}") {
9785              if (stack[stack.length - 1] === "{") {
9786                stack.pop();
9787              } else {
9788                throw new Error("Broken JSON " + (str[pos] === "{" ? "object" : "array") + " body near " + body);
9789              }
9790            } else if (str[i] === "[") {
9791              stack.push("[");
9792            } else if (str[i] === "]") {
9793              if (stack[stack.length - 1] === "[") {
9794                stack.pop();
9795              } else {
9796                throw new Error("Broken JSON " + (str[pos] === "{" ? "object" : "array") + " body near " + body);
9797              }
9798            }
9799          }
9800
9801          if (!stack.length) {
9802            return {
9803              originLength: i - pos,
9804              body: body
9805            };
9806          }
9807        }
9808
9809        throw new Error("Broken JSON " + (str[pos] === "{" ? "object" : "array") + " body near " + body);
9810      }
9811
9812      throw new Error("Broken JSON body near " + str.substr(pos - 5 >= 0 ? pos - 5 : 0, 50));
9813    }
9814  }, {
9815    key: "canBeKeyHead",
9816    value: function canBeKeyHead(ch) {
9817      if (ch[0] === "\\") return false;
9818      if (ch[0] >= 'a' && ch[0] <= 'z' || ch[0] >= 'A' && ch[0] <= 'Z' || ch[0] === '_') return true;
9819      if (ch[0] >= '0' && ch[0] <= '9') return true;
9820      if (ch[0] === '$') return true;
9821      if (ch.charCodeAt(0) > 255) return true;
9822      return false;
9823    }
9824  }, {
9825    key: "isBlankChar",
9826    value: function isBlankChar(ch) {
9827      return ch === " " || ch === "\n" || ch === "\t";
9828    }
9829  }], [{
9830    key: "paramToObj",
9831    value: // Public
9832    function paramToObj(name, value) {
9833      if (value === undefined) {
9834        value = '';
9835      }
9836
9837      if (_typeof(value) === 'object') {
9838        return value;
9839      }
9840
9841      if (value.charAt(0) !== '{') {
9842        value = "{" + value + "}";
9843      }
9844
9845      try {
9846        return this.parseJSON(value);
9847      } catch (e) {
9848        throw new Error('Error parsing the ' + name + ' attribute value. ' + e);
9849      }
9850    }
9851  }, {
9852    key: "parseJSON",
9853    value: function parseJSON(json) {
9854      return JSON.parse(new JsonParser().parseString(json));
9855    }
9856  }]);
9857
9858  return JsonParser;
9859}();
9860
9861/***/ }),
9862
9863/***/ "./src/util/referrer.js":
9864/*!******************************!*\
9865  !*** ./src/util/referrer.js ***!
9866  \******************************/
9867/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9868
9869__webpack_require__.r(__webpack_exports__);
9870/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9871/* harmony export */   "getReferrerUrl": () => (/* binding */ getReferrerUrl)
9872/* harmony export */ });
9873/**
9874 * getReferrerUrl returns the last visited URL
9875 */
9876function getReferrerUrl() {
9877  var url = oc.useTurbo && oc.useTurbo() ? oc.AjaxTurbo.controller.getLastVisitUrl() : getReferrerFromSameOrigin();
9878
9879  if (!url || isSameBaseUrl(url)) {
9880    return null;
9881  }
9882
9883  return url;
9884}
9885
9886function getReferrerFromSameOrigin() {
9887  if (!document.referrer) {
9888    return null;
9889  } // Fallback when turbo router is not activated
9890
9891
9892  try {
9893    var referrer = new URL(document.referrer);
9894
9895    if (referrer.origin !== location.origin) {
9896      return null;
9897    }
9898
9899    var pushReferrer = localStorage.getItem('ocPushStateReferrer');
9900
9901    if (pushReferrer && pushReferrer.indexOf(referrer.pathname) === 0) {
9902      return pushReferrer;
9903    }
9904
9905    return document.referrer;
9906  } catch (e) {}
9907}
9908
9909function isSameBaseUrl(url) {
9910  var givenUrl = new URL(url, window.location.origin),
9911      currentUrl = new URL(window.location.href);
9912  return givenUrl.origin === currentUrl.origin && givenUrl.pathname === currentUrl.pathname;
9913}
9914
9915/***/ }),
9916
9917/***/ "./src/util/wait.js":
9918/*!**************************!*\
9919  !*** ./src/util/wait.js ***!
9920  \**************************/
9921/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9922
9923__webpack_require__.r(__webpack_exports__);
9924/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9925/* harmony export */   "domReady": () => (/* binding */ domReady),
9926/* harmony export */   "waitFor": () => (/* binding */ waitFor)
9927/* harmony export */ });
9928/**
9929 * Function to wait for predicates.
9930 * @param {function() : Boolean} predicate - A function that returns a bool
9931 * @param {Number} [timeout] - Optional maximum waiting time in ms after rejected
9932 */
9933function waitFor(predicate, timeout) {
9934  return new Promise(function (resolve, reject) {
9935    var check = function check() {
9936      if (!predicate()) {
9937        return;
9938      }
9939
9940      clearInterval(interval);
9941      resolve();
9942    };
9943
9944    var interval = setInterval(check, 100);
9945    check();
9946
9947    if (!timeout) {
9948      return;
9949    }
9950
9951    setTimeout(function () {
9952      clearInterval(interval);
9953      reject();
9954    }, timeout);
9955  });
9956}
9957/**
9958 * Function to wait for the DOM to be ready, if not already
9959 */
9960
9961function domReady() {
9962  return new Promise(function (resolve) {
9963    if (document.readyState === 'loading') {
9964      document.addEventListener('DOMContentLoaded', function () {
9965        return resolve();
9966      });
9967    } else {
9968      resolve();
9969    }
9970  });
9971}
9972
9973/***/ })
vendor: 3,728 bytes, lines 9973-10064
9973
9974
9975/******/ 	});
9976/************************************************************************/
9977/******/ 	// The module cache
9978/******/ 	var __webpack_module_cache__ = {};
9979/******/ 	
9980/******/ 	// The require function
9981/******/ 	function __webpack_require__(moduleId) {
9982/******/ 		// Check if module is in cache
9983/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
9984/******/ 		if (cachedModule !== undefined) {
9985/******/ 			return cachedModule.exports;
9986/******/ 		}
9987/******/ 		// Create a new module (and put it into the cache)
9988/******/ 		var module = __webpack_module_cache__[moduleId] = {
9989/******/ 			// no module.id needed
9990/******/ 			// no module.loaded needed
9991/******/ 			exports: {}
9992/******/ 		};
9993/******/ 	
9994/******/ 		// Execute the module function
9995/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
9996/******/ 	
9997/******/ 		// Return the exports of the module
9998/******/ 		return module.exports;
9999/******/ 	}
10000/******/ 	
10001/************************************************************************/
10002/******/ 	/* webpack/runtime/amd options */
10003/******/ 	(() => {
10004/******/ 		__webpack_require__.amdO = {};
10005/******/ 	})();
10006/******/ 	
10007/******/ 	/* webpack/runtime/define property getters */
10008/******/ 	(() => {
10009/******/ 		// define getter functions for harmony exports
10010/******/ 		__webpack_require__.d = (exports, definition) => {
10011/******/ 			for(var key in definition) {
10012/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
10013/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
10014/******/ 				}
10015/******/ 			}
10016/******/ 		};
10017/******/ 	})();
10018/******/ 	
10019/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
10020/******/ 	(() => {
10021/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
10022/******/ 	})();
10023/******/ 	
10024/******/ 	/* webpack/runtime/make namespace object */
10025/******/ 	(() => {
10026/******/ 		// define __esModule on exports
10027/******/ 		__webpack_require__.r = (exports) => {
10028/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
10029/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
10030/******/ 			}
10031/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
10032/******/ 		};
10033/******/ 	})();
10034/******/ 	
10035/************************************************************************/
10036var __webpack_exports__ = {};
10037// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
10038(() => {
10039/*!*********************************!*\
10040  !*** ./src/framework-bundle.js ***!
10041  \*********************************/
10042__webpack_require__.r(__webpack_exports__);
10043/* harmony import */ var _request__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./request */ "./src/request/index.js");
10044/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./core */ "./src/core/index.js");
10045/* harmony import */ var _extras__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./extras */ "./src/extras/index.js");
10046/* harmony import */ var _observe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./observe */ "./src/observe/index.js");
10047/* harmony import */ var _turbo__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./turbo */ "./src/turbo/index.js");
10048/**
10049 * --------------------------------------------------------------------------
10050 * October CMS: Frontend JavaScript Framework
10051 * https://octobercms.com
10052 * --------------------------------------------------------------------------
10053 * Copyright 2013-2023 Alexey Bobkov, Samuel Georges
10054 * --------------------------------------------------------------------------
10055 */
10056
10057
10058
10059
10060
10061})();
10062
10063/******/ })()
10064;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.