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.