{"version":3,"file":"index-0e9e4664.js","sources":["../../../node_modules/@stimulus/core/dist/src/event_listener.js","../../../node_modules/@stimulus/core/dist/src/dispatcher.js","../../../node_modules/@stimulus/core/dist/src/action_descriptor.js","../../../node_modules/@stimulus/core/dist/src/action.js","../../../node_modules/@stimulus/core/dist/src/binding.js","../../../node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","../../../node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","../../../node_modules/@stimulus/multimap/dist/src/set_operations.js","../../../node_modules/@stimulus/multimap/dist/src/multimap.js","../../../node_modules/@stimulus/multimap/dist/src/indexed_multimap.js","../../../node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","../../../node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js","../../../node_modules/@stimulus/core/dist/src/binding_observer.js","../../../node_modules/@stimulus/core/dist/src/context.js","../../../node_modules/@stimulus/core/dist/src/definition.js","../../../node_modules/@stimulus/core/dist/src/module.js","../../../node_modules/@stimulus/core/dist/src/data_map.js","../../../node_modules/@stimulus/core/dist/src/selectors.js","../../../node_modules/@stimulus/core/dist/src/target_set.js","../../../node_modules/@stimulus/core/dist/src/scope.js","../../../node_modules/@stimulus/core/dist/src/scope_observer.js","../../../node_modules/@stimulus/core/dist/src/router.js","../../../node_modules/@stimulus/core/dist/src/schema.js","../../../node_modules/@stimulus/core/dist/src/application.js","../../../node_modules/@stimulus/core/dist/src/target_properties.js","../../../node_modules/@stimulus/core/dist/src/controller.js","../../../node_modules/core-js/fn/array/includes.js","../../../node_modules/core-js/fn/array/flat-map.js","../../../node_modules/core-js/fn/string/pad-start.js","../../../node_modules/core-js/fn/string/pad-end.js","../../../node_modules/core-js/fn/string/trim-start.js","../../../node_modules/core-js/fn/string/trim-end.js","../../../node_modules/core-js/fn/symbol/async-iterator.js","../../../node_modules/core-js/fn/object/get-own-property-descriptors.js","../../../node_modules/core-js/fn/object/values.js","../../../node_modules/core-js/fn/object/entries.js","../../../node_modules/core-js/fn/promise/finally.js","../../../node_modules/regenerator-runtime/runtime.js","../../../node_modules/core-js/library/modules/_global.js","../../../node_modules/core-js/library/modules/_core.js","../../../node_modules/core-js/library/modules/_a-function.js","../../../node_modules/core-js/library/modules/_ctx.js","../../../node_modules/core-js/library/modules/_is-object.js","../../../node_modules/core-js/library/modules/_an-object.js","../../../node_modules/core-js/library/modules/_fails.js","../../../node_modules/core-js/library/modules/_descriptors.js","../../../node_modules/core-js/library/modules/_dom-create.js","../../../node_modules/core-js/library/modules/_ie8-dom-define.js","../../../node_modules/core-js/library/modules/_to-primitive.js","../../../node_modules/core-js/library/modules/_object-dp.js","../../../node_modules/core-js/library/modules/_property-desc.js","../../../node_modules/core-js/library/modules/_hide.js","../../../node_modules/core-js/library/modules/_has.js","../../../node_modules/core-js/library/modules/_export.js","../../../node_modules/core-js/library/modules/es7.global.js","../../../node_modules/core-js/library/fn/global.js","../../../node_modules/@babel/polyfill/lib/index.js","../../../node_modules/whatwg-fetch/fetch.js","../../../node_modules/flatpickr/dist/esm/types/options.js","../../../node_modules/flatpickr/dist/esm/l10n/default.js","../../../node_modules/flatpickr/dist/esm/utils/index.js","../../../node_modules/flatpickr/dist/esm/utils/dom.js","../../../node_modules/flatpickr/dist/esm/utils/formatting.js","../../../node_modules/flatpickr/dist/esm/utils/dates.js","../../../node_modules/flatpickr/dist/esm/utils/polyfills.js","../../../node_modules/flatpickr/dist/esm/index.js","../../../app/assets/javascripts/helpers/acima/fetch_init_helper.js","../../../node_modules/stimulus-vite-helpers/dist/index.js"],"sourcesContent":["var EventListener = /** @class */ (function () {\n function EventListener(eventTarget, eventName) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.unorderedBindings = new Set;\n }\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, false);\n };\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, false);\n };\n // Binding observer delegate\n /** @hidden */\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n /** @hidden */\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings.delete(binding);\n };\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function () {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n },\n enumerable: true,\n configurable: true\n });\n return EventListener;\n}());\nexport { EventListener };\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function () {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfbGlzdGVuZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRfbGlzdGVuZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7SUFLRSx1QkFBWSxXQUF3QixFQUFFLFNBQWlCO1FBQ3JELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsK0JBQU8sR0FBUDtRQUNFLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDaEUsQ0FBQztJQUVELGtDQUFVLEdBQVY7UUFDRSxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFFRCw0QkFBNEI7SUFFNUIsY0FBYztJQUNkLHdDQUFnQixHQUFoQixVQUFpQixPQUFnQjtRQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFRCxjQUFjO0lBQ2QsMkNBQW1CLEdBQW5CLFVBQW9CLE9BQWdCO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVELG1DQUFXLEdBQVgsVUFBWSxLQUFZO1FBQ3RCLElBQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4QyxLQUFzQixVQUFhLEVBQWIsS0FBQSxJQUFJLENBQUMsUUFBUSxFQUFiLGNBQWEsRUFBYixJQUFhLEVBQUU7WUFBaEMsSUFBTSxPQUFPLFNBQUE7WUFDaEIsSUFBSSxhQUFhLENBQUMsMkJBQTJCLEVBQUU7Z0JBQzdDLE1BQUs7YUFDTjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFBO2FBQ25DO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsc0JBQUksbUNBQVE7YUFBWjtZQUNFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxJQUFJLEVBQUUsS0FBSztnQkFDekQsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQTtnQkFDdEQsT0FBTyxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDckUsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDOzs7T0FBQTtJQUNILG9CQUFDO0FBQUQsQ0FBQyxBQWhERCxJQWdEQzs7QUFFRCxxQkFBcUIsS0FBWTtJQUMvQixJQUFJLDZCQUE2QixJQUFJLEtBQUssRUFBRTtRQUMxQyxPQUFPLEtBQUssQ0FBQTtLQUNiO1NBQU07UUFDRyxJQUFBLDJEQUF3QixDQUFVO1FBQzFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDMUIsMkJBQTJCLEVBQUUsS0FBSztZQUNsQyx3QkFBd0I7Z0JBQ3RCLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUE7Z0JBQ3ZDLDBCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNyQyxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0tBQ0g7QUFDSCxDQUFDIn0=","import { EventListener } from \"./event_listener\";\nvar Dispatcher = /** @class */ (function () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map;\n this.started = false;\n }\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) { return eventListener.connect(); });\n }\n };\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) { return eventListener.disconnect(); });\n }\n };\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function () {\n return Array.from(this.eventListenerMaps.values())\n .reduce(function (listeners, map) { return listeners.concat(Array.from(map.values())); }, []);\n },\n enumerable: true,\n configurable: true\n });\n // Binding observer delegate\n /** @hidden */\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n /** @hidden */\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n };\n // Error handling\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) { detail = {}; }\n this.application.handleError(error, \"Error \" + message, detail);\n };\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget, eventName = binding.eventName;\n return this.fetchEventListener(eventTarget, eventName);\n };\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var eventListener = eventListenerMap.get(eventName);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName);\n eventListenerMap.set(eventName, eventListener);\n }\n return eventListener;\n };\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName) {\n var eventListener = new EventListener(eventTarget, eventName);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n };\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map;\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n };\n return Dispatcher;\n}());\nexport { Dispatcher };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVoRDtJQUtFLG9CQUFZLFdBQXdCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBQTtRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtJQUN0QixDQUFDO0lBRUQsMEJBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQUEsYUFBYSxJQUFJLE9BQUEsYUFBYSxDQUFDLE9BQU8sRUFBRSxFQUF2QixDQUF1QixDQUFDLENBQUE7U0FDdEU7SUFDSCxDQUFDO0lBRUQseUJBQUksR0FBSjtRQUNFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtZQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFBLGFBQWEsSUFBSSxPQUFBLGFBQWEsQ0FBQyxVQUFVLEVBQUUsRUFBMUIsQ0FBMEIsQ0FBQyxDQUFBO1NBQ3pFO0lBQ0gsQ0FBQztJQUVELHNCQUFJLHNDQUFjO2FBQWxCO1lBQ0UsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDL0MsTUFBTSxDQUFDLFVBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSyxPQUFBLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUExQyxDQUEwQyxFQUFFLEVBQXFCLENBQUMsQ0FBQTtRQUNsRyxDQUFDOzs7T0FBQTtJQUVELDRCQUE0QjtJQUU1QixjQUFjO0lBQ2QscUNBQWdCLEdBQWhCLFVBQWlCLE9BQWdCO1FBQy9CLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN0RSxDQUFDO0lBRUQsY0FBYztJQUNkLHdDQUFtQixHQUFuQixVQUFvQixPQUFnQjtRQUNsQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDekUsQ0FBQztJQUVELGlCQUFpQjtJQUVqQixnQ0FBVyxHQUFYLFVBQVksS0FBWSxFQUFFLE9BQWUsRUFBRSxNQUFtQjtRQUFuQix1QkFBQSxFQUFBLFdBQW1CO1FBQzVELElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFTLE9BQVMsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRU8saURBQTRCLEdBQXBDLFVBQXFDLE9BQWdCO1FBQzNDLElBQUEsaUNBQVcsRUFBRSw2QkFBUyxDQUFZO1FBQzFDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0lBRU8sdUNBQWtCLEdBQTFCLFVBQTJCLFdBQXdCLEVBQUUsU0FBaUI7UUFDcEUsSUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUNBQW1DLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDOUUsSUFBSSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ25ELElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUE7WUFDaEUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQTtTQUMvQztRQUNELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7SUFFTyx3Q0FBbUIsR0FBM0IsVUFBNEIsV0FBd0IsRUFBRSxTQUFpQjtRQUNyRSxJQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDL0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUN4QjtRQUNELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7SUFFTyx3REFBbUMsR0FBM0MsVUFBNEMsV0FBd0I7UUFDbEUsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzlELElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNyQixnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO1NBQzFEO1FBQ0QsT0FBTyxnQkFBZ0IsQ0FBQTtJQUN6QixDQUFDO0lBQ0gsaUJBQUM7QUFBRCxDQUFDLEFBL0VELElBK0VDIn0=","// capture nos.: 12 23 4 43 1 5 56 7 76\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;\nexport function parseDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n identifier: matches[5],\n methodName: matches[7]\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uX2Rlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9uX2Rlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsdUVBQXVFO0FBQ3ZFLElBQU0saUJBQWlCLEdBQUcsZ0RBQWdELENBQUE7QUFFMUUsTUFBTSxnQ0FBZ0MsZ0JBQXdCO0lBQzVELElBQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3RDLElBQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDckQsT0FBTztRQUNMLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsU0FBUyxFQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdkIsVUFBVSxFQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdkIsVUFBVSxFQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDeEIsQ0FBQTtBQUNILENBQUM7QUFFRCwwQkFBMEIsZUFBdUI7SUFDL0MsSUFBSSxlQUFlLElBQUksUUFBUSxFQUFFO1FBQy9CLE9BQU8sTUFBTSxDQUFBO0tBQ2Q7U0FBTSxJQUFJLGVBQWUsSUFBSSxVQUFVLEVBQUU7UUFDeEMsT0FBTyxRQUFRLENBQUE7S0FDaEI7QUFDSCxDQUFDO0FBRUQsTUFBTSwrQkFBK0IsV0FBd0I7SUFDM0QsSUFBSSxXQUFXLElBQUksTUFBTSxFQUFFO1FBQ3pCLE9BQU8sUUFBUSxDQUFBO0tBQ2hCO1NBQU0sSUFBSSxXQUFXLElBQUksUUFBUSxFQUFFO1FBQ2xDLE9BQU8sVUFBVSxDQUFBO0tBQ2xCO0FBQ0gsQ0FBQyJ9","import { parseDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\nvar Action = /** @class */ (function () {\n function Action(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseDescriptorString(token.content));\n };\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function () {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: true,\n configurable: true\n });\n return Action;\n}());\nexport { Action };\nvar defaultEventNames = {\n \"a\": function (e) { return \"click\"; },\n \"button\": function (e) { return \"click\"; },\n \"form\": function (e) { return \"submit\"; },\n \"input\": function (e) { return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"change\"; },\n \"select\": function (e) { return \"change\"; },\n \"textarea\": function (e) { return \"change\"; }\n};\nexport function getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFHbkc7SUFZRSxnQkFBWSxPQUFnQixFQUFFLEtBQWEsRUFBRSxVQUFxQztRQUNoRixJQUFJLENBQUMsT0FBTyxHQUFPLE9BQU8sQ0FBQTtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFTLEtBQUssQ0FBQTtRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFBO1FBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUssVUFBVSxDQUFDLFNBQVMsSUFBSSw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUNoSCxJQUFJLENBQUMsVUFBVSxHQUFJLFVBQVUsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFDdkUsSUFBSSxDQUFDLFVBQVUsR0FBSSxVQUFVLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFYTSxlQUFRLEdBQWYsVUFBZ0IsS0FBWTtRQUMxQixPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUNuRixDQUFDO0lBV0QseUJBQVEsR0FBUjtRQUNFLElBQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE1BQUksSUFBSSxDQUFDLGVBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUM5RSxPQUFPLEtBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLFVBQUssSUFBSSxDQUFDLFVBQVUsU0FBSSxJQUFJLENBQUMsVUFBWSxDQUFBO0lBQ3JGLENBQUM7SUFFRCxzQkFBWSxtQ0FBZTthQUEzQjtZQUNFLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQy9DLENBQUM7OztPQUFBO0lBQ0gsYUFBQztBQUFELENBQUMsQUE3QkQsSUE2QkM7O0FBRUQsSUFBTSxpQkFBaUIsR0FBd0Q7SUFDN0UsR0FBRyxFQUFTLFVBQUEsQ0FBQyxJQUFJLE9BQUEsT0FBTyxFQUFQLENBQU87SUFDeEIsUUFBUSxFQUFJLFVBQUEsQ0FBQyxJQUFJLE9BQUEsT0FBTyxFQUFQLENBQU87SUFDeEIsTUFBTSxFQUFNLFVBQUEsQ0FBQyxJQUFJLE9BQUEsUUFBUSxFQUFSLENBQVE7SUFDekIsT0FBTyxFQUFLLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUF2RCxDQUF1RDtJQUN4RSxRQUFRLEVBQUksVUFBQSxDQUFDLElBQUksT0FBQSxRQUFRLEVBQVIsQ0FBUTtJQUN6QixVQUFVLEVBQUUsVUFBQSxDQUFDLElBQUksT0FBQSxRQUFRLEVBQVIsQ0FBUTtDQUMxQixDQUFBO0FBRUQsTUFBTSx3Q0FBd0MsT0FBZ0I7SUFDNUQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM3QyxJQUFJLE9BQU8sSUFBSSxpQkFBaUIsRUFBRTtRQUNoQyxPQUFPLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQzNDO0FBQ0gsQ0FBQztBQUVELGVBQWUsT0FBZTtJQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQzFCLENBQUMifQ==","var Binding = /** @class */ (function () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function () {\n return this.action.index;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function () {\n return this.action.eventTarget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function () {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function () {\n return this.action.eventName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function () {\n var method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n },\n enumerable: true,\n configurable: true\n });\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n }\n catch (error) {\n var _a = this, identifier = _a.identifier, controller = _a.controller, element = _a.element, index = _a.index;\n var detail = { identifier: identifier, controller: controller, element: element, index: index, event: event };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return true;\n }\n };\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function () {\n return this.context.controller;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function () {\n return this.action.methodName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function () {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n return Binding;\n}());\nexport { Binding };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW5kaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBO0lBSUUsaUJBQVksT0FBZ0IsRUFBRSxNQUFjO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxzQkFBSSwwQkFBSzthQUFUO1lBQ0UsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQTtRQUMxQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLGdDQUFXO2FBQWY7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFBO1FBQ2hDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksK0JBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUE7UUFDaEMsQ0FBQzs7O09BQUE7SUFFRCw2QkFBVyxHQUFYLFVBQVksS0FBWTtRQUN0QixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQzVCO0lBQ0gsQ0FBQztJQUVELHNCQUFJLDhCQUFTO2FBQWI7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFBO1FBQzlCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksMkJBQU07YUFBVjtZQUNFLElBQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxVQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUN4RCxJQUFJLE9BQU8sTUFBTSxJQUFJLFVBQVUsRUFBRTtnQkFDL0IsT0FBTyxNQUFNLENBQUE7YUFDZDtZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBVyxJQUFJLENBQUMsTUFBTSx5Q0FBa0MsSUFBSSxDQUFDLFVBQVUsT0FBRyxDQUFDLENBQUE7UUFDN0YsQ0FBQzs7O09BQUE7SUFFTyxpQ0FBZSxHQUF2QixVQUF3QixLQUFZO1FBQ2xDLElBQUk7WUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQ3pDO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDUixJQUFBLFNBQWlELEVBQS9DLDBCQUFVLEVBQUUsMEJBQVUsRUFBRSxvQkFBTyxFQUFFLGdCQUFLLENBQVM7WUFDdkQsSUFBTSxNQUFNLEdBQUcsRUFBRSxVQUFVLFlBQUEsRUFBRSxVQUFVLFlBQUEsRUFBRSxPQUFPLFNBQUEsRUFBRSxLQUFLLE9BQUEsRUFBRSxLQUFLLE9BQUEsRUFBRSxDQUFBO1lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSx1QkFBb0IsSUFBSSxDQUFDLE1BQU0sT0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1NBQzVFO0lBQ0gsQ0FBQztJQUVPLHNDQUFvQixHQUE1QixVQUE2QixLQUFZO1FBQ3ZDLElBQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUE7UUFDaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsRUFBRTtZQUNoQyxPQUFPLElBQUksQ0FBQTtTQUNaO2FBQU0sSUFBSSxXQUFXLFlBQVksT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQy9FLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUE7U0FDL0M7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFBO1NBQ1o7SUFDSCxDQUFDO0lBRUQsc0JBQVksK0JBQVU7YUFBdEI7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFBO1FBQ2hDLENBQUM7OztPQUFBO0lBRUQsc0JBQVksK0JBQVU7YUFBdEI7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFBO1FBQy9CLENBQUM7OztPQUFBO0lBRUQsc0JBQVksNEJBQU87YUFBbkI7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBRUQsc0JBQVksMEJBQUs7YUFBakI7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBQ0gsY0FBQztBQUFELENBQUMsQUEzRUQsSUEyRUMifQ==","var ElementObserver = /** @class */ (function () {\n function ElementObserver(element, delegate) {\n var _this = this;\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set;\n this.mutationObserver = new MutationObserver(function (mutations) { return _this.processMutations(mutations); });\n }\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, childList: true, subtree: true });\n this.refresh();\n }\n };\n ElementObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n var element = _c[_b];\n this.addElement(element);\n }\n }\n };\n // Mutation record processing\n ElementObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n };\n ElementObserver.prototype.processRemovedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n };\n ElementObserver.prototype.processAddedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n };\n // Element matching\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) { tree = this.element; }\n return this.delegate.matchElementsInTree(tree);\n };\n ElementObserver.prototype.processTree = function (tree, processor) {\n for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n var element = _a[_i];\n processor.call(this, element);\n }\n };\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n };\n // Element tracking\n ElementObserver.prototype.addElement = function (element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n };\n ElementObserver.prototype.removeElement = function (element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n };\n return ElementObserver;\n}());\nexport { ElementObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudF9vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50X29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBO0lBUUUseUJBQVksT0FBZ0IsRUFBRSxRQUFpQztRQUEvRCxpQkFPQztRQU5DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBRXhCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUE7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQUMsVUFBQyxTQUFTLElBQUssT0FBQSxLQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQWhDLENBQWdDLENBQUMsQ0FBQTtJQUMvRixDQUFDO0lBRUQsK0JBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUNqRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDZjtJQUNILENBQUM7SUFFRCw4QkFBSSxHQUFKO1FBQ0UsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUE7WUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7U0FDckI7SUFDSCxDQUFDO0lB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","import { ElementObserver } from \"./element_observer\";\nvar AttributeObserver = /** @class */ (function () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function () {\n return this.elementObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function () {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: true,\n configurable: true\n });\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function () {\n return this.elementObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n // Element observer delegate\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\n AttributeObserver.prototype.matchElementsInTree = function (tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n };\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n };\n AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n };\n return AttributeObserver;\n}());\nexport { AttributeObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlX29ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F0dHJpYnV0ZV9vYnNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUEyQixNQUFNLG9CQUFvQixDQUFBO0FBUTdFO0lBTUUsMkJBQVksT0FBZ0IsRUFBRSxhQUFxQixFQUFFLFFBQW1DO1FBQ3RGLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBRXhCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCxzQkFBSSxzQ0FBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQTtRQUNyQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHVDQUFRO2FBQVo7WUFDRSxPQUFPLE1BQUksSUFBSSxDQUFDLGFBQWEsTUFBRyxDQUFBO1FBQ2xDLENBQUM7OztPQUFBO0lBRUQsaUNBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDOUIsQ0FBQztJQUVELGdDQUFJLEdBQUo7UUFDRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzdCLENBQUM7SUFFRCxtQ0FBTyxHQUFQO1FBQ0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsc0JBQUksc0NBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUE7UUFDckMsQ0FBQzs7O09BQUE7SUFFRCw0QkFBNEI7SUFFNUIsd0NBQVksR0FBWixVQUFhLE9BQWdCO1FBQzNCLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVELCtDQUFtQixHQUFuQixVQUFvQixJQUFhO1FBQy9CLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUNuRCxJQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUNoRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUVELDBDQUFjLEdBQWQsVUFBZSxPQUFnQjtRQUM3QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLEVBQUU7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1NBQ25FO0lBQ0gsQ0FBQztJQUVELDRDQUFnQixHQUFoQixVQUFpQixPQUFnQjtRQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMseUJBQXlCLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1NBQ3JFO0lBQ0gsQ0FBQztJQUVELG1EQUF1QixHQUF2QixVQUF3QixPQUFnQixFQUFFLGFBQXFCO1FBQzdELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyw0QkFBNEIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLGFBQWEsRUFBRTtZQUNyRixJQUFJLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQTtTQUNuRTtJQUNILENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUFsRUQsSUFrRUMifQ==","export function add(map, key, value) {\n fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nexport function fetch(map, key) {\n var values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0X29wZXJhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2V0X29wZXJhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxjQUFvQixHQUFtQixFQUFFLEdBQU0sRUFBRSxLQUFRO0lBQzdELEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzVCLENBQUM7QUFFRCxNQUFNLGNBQW9CLEdBQW1CLEVBQUUsR0FBTSxFQUFFLEtBQVE7SUFDN0QsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0IsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUNqQixDQUFDO0FBRUQsTUFBTSxnQkFBc0IsR0FBbUIsRUFBRSxHQUFNO0lBQ3JELElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ2xCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0tBQ3JCO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBRUQsTUFBTSxnQkFBc0IsR0FBbUIsRUFBRSxHQUFNO0lBQ3JELElBQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDM0IsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO1FBQ3RDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDaEI7QUFDSCxDQUFDIn0=","import { add, del } from \"./set_operations\";\nvar Multimap = /** @class */ (function () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function () {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) { return values.concat(Array.from(set)); }, []);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function () {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) { return size + set.size; }, 0);\n },\n enumerable: true,\n configurable: true\n });\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n Multimap.prototype.delete = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) { return set.has(value); });\n };\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey)\n .filter(function (_a) {\n var key = _a[0], values = _a[1];\n return values.has(value);\n })\n .map(function (_a) {\n var key = _a[0], values = _a[1];\n return key;\n });\n };\n return Multimap;\n}());\nexport { Multimap };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGltYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXVsdGltYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUUzQztJQUdFO1FBQ0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBYSxDQUFBO0lBQ3pDLENBQUM7SUFFRCxzQkFBSSw0QkFBTTthQUFWO1lBQ0UsSUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7WUFDbEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSyxPQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUE5QixDQUE4QixFQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQy9FLENBQUM7OztPQUFBO0lBRUQsc0JBQUksMEJBQUk7YUFBUjtZQUNFLElBQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1lBQ2xELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFDLElBQUksRUFBRSxHQUFHLElBQUssT0FBQSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBZixDQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDdkQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBRyxHQUFILFVBQUksR0FBTSxFQUFFLEtBQVE7UUFDbEIsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRCx5QkFBTSxHQUFOLFVBQU8sR0FBTSxFQUFFLEtBQVE7UUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRCxzQkFBRyxHQUFILFVBQUksR0FBTSxFQUFFLEtBQVE7UUFDbEIsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEMsT0FBTyxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDNUMsQ0FBQztJQUVELHlCQUFNLEdBQU4sVUFBTyxHQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsMkJBQVEsR0FBUixVQUFTLEtBQVE7UUFDZixJQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUNsRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFkLENBQWMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxrQ0FBZSxHQUFmLFVBQWdCLEdBQU07UUFDcEIsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUN6QyxDQUFDO0lBRUQsa0NBQWUsR0FBZixVQUFnQixLQUFRO1FBQ3RCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ2hDLE1BQU0sQ0FBQyxVQUFDLEVBQWE7Z0JBQVosV0FBRyxFQUFFLGNBQU07WUFBTSxPQUFBLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQWpCLENBQWlCLENBQUM7YUFDNUMsR0FBRyxDQUFDLFVBQUMsRUFBYTtnQkFBWixXQUFHLEVBQUUsY0FBTTtZQUFNLE9BQUEsR0FBRztRQUFILENBQUcsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFDSCxlQUFDO0FBQUQsQ0FBQyxBQWpERCxJQWlEQyJ9","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\nvar IndexedMultimap = /** @class */ (function (_super) {\n __extends(IndexedMultimap, _super);\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n _this.keysByValue = new Map;\n return _this;\n }\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function () {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: true,\n configurable: true\n });\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n add(this.keysByValue, value, key);\n };\n IndexedMultimap.prototype.delete = function (key, value) {\n _super.prototype.delete.call(this, key, value);\n del(this.keysByValue, value, key);\n };\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n return IndexedMultimap;\n}(Multimap));\nexport { IndexedMultimap };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZF9tdWx0aW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleGVkX211bHRpbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFM0M7SUFBMkMsbUNBQWM7SUFHdkQ7UUFBQSxZQUNFLGlCQUFPLFNBRVI7UUFEQyxLQUFJLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxDQUFBOztJQUM1QixDQUFDO0lBRUQsc0JBQUksbUNBQU07YUFBVjtZQUNFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFDNUMsQ0FBQzs7O09BQUE7SUFFRCw2QkFBRyxHQUFILFVBQUksR0FBTSxFQUFFLEtBQVE7UUFDbEIsaUJBQU0sR0FBRyxZQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNyQixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUVELGdDQUFNLEdBQU4sVUFBTyxHQUFNLEVBQUUsS0FBUTtRQUNyQixpQkFBTSxNQUFNLFlBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsa0NBQVEsR0FBUixVQUFTLEtBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCx5Q0FBZSxHQUFmLFVBQWdCLEtBQVE7UUFDdEIsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdkMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNuQyxDQUFDO0lBQ0gsc0JBQUM7QUFBRCxDQUFDLEFBOUJELENBQTJDLFFBQVEsR0E4QmxEIn0=","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\nvar TokenListObserver = /** @class */ (function () {\n function TokenListObserver(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap;\n }\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function () {\n return this.attributeObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function () {\n return this.attributeObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function () {\n return this.attributeObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n // Attribute observer delegate\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element), unmatchedTokens = _a[0], matchedTokens = _a[1];\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n tokens.forEach(function (token) { return _this.tokenMatched(token); });\n };\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n tokens.forEach(function (token) { return _this.tokenUnmatched(token); });\n };\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n };\n TokenListObserver.prototype.refreshTokensForElement = function (element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens)\n .findIndex(function (_a) {\n var previousToken = _a[0], currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n };\n TokenListObserver.prototype.readTokensForElement = function (element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n };\n return TokenListObserver;\n}());\nexport { TokenListObserver };\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) { return content.length; })\n .map(function (content, index) { return ({ element: element, attributeName: attributeName, content: content, index: index }); });\n}\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({ length: length }, function (_, index) { return [left[index], right[index]]; });\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fbGlzdF9vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbl9saXN0X29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBNkIsTUFBTSxzQkFBc0IsQ0FBQTtBQUNuRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFjN0M7SUFLRSwyQkFBWSxPQUFnQixFQUFFLGFBQXFCLEVBQUUsUUFBbUM7UUFDdEYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM1RSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksUUFBUSxDQUFBO0lBQ3JDLENBQUM7SUFFRCxzQkFBSSxzQ0FBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFBO1FBQ3ZDLENBQUM7OztPQUFBO0lBRUQsaUNBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsZ0NBQUksR0FBSjtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMvQixDQUFDO0lBRUQsbUNBQU8sR0FBUDtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsc0JBQUksc0NBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQTtRQUN2QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDRDQUFhO2FBQWpCO1lBQ0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFBO1FBQzdDLENBQUM7OztPQUFBO0lBRUQsOEJBQThCO0lB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","import { TokenListObserver } from \"./token_list_observer\";\nvar ValueListObserver = /** @class */ (function () {\n function ValueListObserver(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap;\n this.valuesByTokenByElement = new WeakMap;\n }\n Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function () {\n return this.tokenListObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function () {\n return this.tokenListObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function () {\n return this.tokenListObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n };\n ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map;\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n };\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return { value: value };\n }\n catch (error) {\n return { error: error };\n }\n };\n return ValueListObserver;\n}());\nexport { ValueListObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVfbGlzdF9vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWx1ZV9saXN0X29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUyxpQkFBaUIsRUFBNkIsTUFBTSx1QkFBdUIsQ0FBQTtBQWEzRjtJQU1FLDJCQUFZLE9BQWdCLEVBQUUsYUFBcUIsRUFBRSxRQUFzQztRQUN6RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzVFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLE9BQU8sQ0FBQTtRQUN0QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLENBQUE7SUFDM0MsQ0FBQztJQUVELHNCQUFJLHNDQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUE7UUFDdkMsQ0FBQzs7O09BQUE7SUFFRCxpQ0FBSyxHQUFMO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxnQ0FBSSxHQUFKO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQy9CLENBQUM7SUFFRCxtQ0FBTyxHQUFQO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxzQkFBSSxzQ0FBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFBO1FBQ3ZDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksNENBQWE7YUFBakI7WUFDRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUE7UUFDN0MsQ0FBQzs7O09BQUE7SUFFRCx3Q0FBWSxHQUFaLFVBQWEsS0FBWTtRQUNmLElBQUEsdUJBQU8sQ0FBVTtRQUNqQixJQUFBLGtEQUFLLENBQXlDO1FBQ3RELElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7U0FDbEQ7SUFDSCxDQUFDO0lBRUQsMENBQWMsR0FBZCxVQUFlLEtBQVk7UUFDakIsSUFBQSx1QkFBTyxDQUFVO1FBQ2pCLElBQUEsa0RBQUssQ0FBeUM7UUFDdEQsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQ3BEO0lBQ0gsQ0FBQztJQUVPLG9EQUF3QixHQUFoQyxVQUFpQyxLQUFZO1FBQzNDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDckQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQTtTQUNqRDtRQUNELE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFFTyx3REFBNEIsR0FBcEMsVUFBcUMsT0FBZ0I7UUFDbkQsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM1RCxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQTtZQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQTtTQUN4RDtRQUNELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7SUFFTyxzQ0FBVSxHQUFsQixVQUFtQixLQUFZO1FBQzdCLElBQUk7WUFDRixJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3JELE9BQU8sRUFBRSxLQUFLLE9BQUEsRUFBRSxDQUFBO1NBQ2pCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLEVBQUUsS0FBSyxPQUFBLEVBQUUsQ0FBQTtTQUNqQjtJQUNILENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUFqRkQsSUFpRkMifQ==","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\nvar BindingObserver = /** @class */ (function () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map;\n }\n BindingObserver.prototype.start = function () {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n };\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function () {\n return this.context.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function () {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function () {\n return this.schema.actionAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function () {\n return this.context.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function () {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: true,\n configurable: true\n });\n BindingObserver.prototype.connectAction = function (action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n };\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n this.bindings.forEach(function (binding) { return _this.delegate.bindingDisconnected(binding); });\n this.bindingsByAction.clear();\n };\n // Value observer delegate\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n return BindingObserver;\n}());\nexport { BindingObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZ19vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW5kaW5nX29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUluQyxPQUFPLEVBQVMsaUJBQWlCLEVBQTZCLE1BQU0sOEJBQThCLENBQUE7QUFPbEc7SUFNRSx5QkFBWSxPQUFnQixFQUFFLFFBQWlDO1FBQzdELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQTtJQUNqQyxDQUFDO0lBRUQsK0JBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3hGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtTQUMvQjtJQUNILENBQUM7SUFFRCw4QkFBSSxHQUFKO1FBQ0UsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFBO1lBQzdCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFBO1lBQzdCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFBO1NBQzVCO0lBQ0gsQ0FBQztJQUVELHNCQUFJLG9DQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFBO1FBQzdCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksdUNBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUE7UUFDaEMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw0Q0FBZTthQUFuQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUE7UUFDcEMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxtQ0FBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQTtRQUM1QixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHFDQUFRO2FBQVo7WUFDRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDbkQsQ0FBQzs7O09BQUE7SUFFTyx1Q0FBYSxHQUFyQixVQUFzQixNQUFjO1FBQ2xDLElBQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRU8sMENBQWdCLEdBQXhCLFVBQXlCLE1BQWM7UUFDckMsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNqRCxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtTQUMzQztJQUNILENBQUM7SUFFTyw4Q0FBb0IsR0FBNUI7UUFBQSxpQkFHQztRQUZDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsS0FBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBMUMsQ0FBMEMsQ0FBQyxDQUFBO1FBQzVFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUMvQixDQUFDO0lBRUQsMEJBQTBCO0lBRTFCLDRDQUFrQixHQUFsQixVQUFtQixLQUFZO1FBQzdCLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDckMsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDeEMsT0FBTyxNQUFNLENBQUE7U0FDZDtJQUNILENBQUM7SUFFRCw2Q0FBbUIsR0FBbkIsVUFBb0IsT0FBZ0IsRUFBRSxNQUFjO1FBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUVELCtDQUFxQixHQUFyQixVQUFzQixPQUFnQixFQUFFLE1BQWM7UUFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUFsRkQsSUFrRkMifQ==","import { BindingObserver } from \"./binding_observer\";\nvar Context = /** @class */ (function () {\n function Context(module, scope) {\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n try {\n this.controller.initialize();\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n try {\n this.controller.connect();\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.bindingObserver.stop();\n };\n Object.defineProperty(Context.prototype, \"application\", {\n get: function () {\n return this.module.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function () {\n return this.module.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function () {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function () {\n return this.application.dispatcher;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function () {\n return this.element.parentElement;\n },\n enumerable: true,\n configurable: true\n });\n // Error handling\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) { detail = {}; }\n var _a = this, identifier = _a.identifier, controller = _a.controller, element = _a.element;\n detail = Object.assign({ identifier: identifier, controller: controller, element: element }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n return Context;\n}());\nexport { Context };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQVFwRDtJQU1FLGlCQUFZLE1BQWMsRUFBRSxLQUFZO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDeEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRWpFLElBQUk7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFBO1NBQzdCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSx5QkFBeUIsQ0FBQyxDQUFBO1NBQ25EO0lBQ0gsQ0FBQztJQUVELHlCQUFPLEdBQVA7UUFDRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBRTVCLElBQUk7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFBO1NBQzFCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxDQUFBO1NBQ2pEO0lBQ0gsQ0FBQztJQUVELDRCQUFVLEdBQVY7UUFDRSxJQUFJO1lBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtTQUM3QjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsMEJBQTBCLENBQUMsQ0FBQTtTQUNwRDtRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVELHNCQUFJLGdDQUFXO2FBQWY7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFBO1FBQ2hDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksK0JBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUE7UUFDL0IsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwyQkFBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQTtRQUNoQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLCtCQUFVO2FBQWQ7WUFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFBO1FBQ3BDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksNEJBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUE7UUFDM0IsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxrQ0FBYTthQUFqQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUE7UUFDbkMsQ0FBQzs7O09BQUE7SUFFRCxpQkFBaUI7SUFFakIsNkJBQVcsR0FBWCxVQUFZLEtBQVksRUFBRSxPQUFlLEVBQUUsTUFBbUI7UUFBbkIsdUJBQUEsRUFBQSxXQUFtQjtRQUN0RCxJQUFBLFNBQTBDLEVBQXhDLDBCQUFVLEVBQUUsMEJBQVUsRUFBRSxvQkFBTyxDQUFTO1FBQ2hELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsVUFBVSxZQUFBLEVBQUUsVUFBVSxZQUFBLEVBQUUsT0FBTyxTQUFBLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNuRSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBUyxPQUFTLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDakUsQ0FBQztJQUNILGNBQUM7QUFBRCxDQUFDLEFBdEVELElBc0VDIn0=","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/** @hidden */\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: blessControllerConstructor(definition.controllerConstructor)\n };\n}\nfunction blessControllerConstructor(controllerConstructor) {\n var constructor = extend(controllerConstructor);\n constructor.bless();\n return constructor;\n}\nvar extend = (function () {\n function extendWithReflect(constructor) {\n function Controller() {\n var _newTarget = this && this instanceof Controller ? this.constructor : void 0;\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n Controller.prototype = Object.create(constructor.prototype, {\n constructor: { value: Controller }\n });\n Reflect.setPrototypeOf(Controller, constructor);\n return Controller;\n }\n function testReflectExtension() {\n var a = function () { this.a.call(this); };\n var b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b;\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return function (constructor) { return /** @class */ (function (_super) {\n __extends(Controller, _super);\n function Controller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Controller;\n }(constructor)); };\n }\n})();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFPQSxjQUFjO0FBQ2QsTUFBTSwwQkFBMEIsVUFBc0I7SUFDcEQsT0FBTztRQUNMLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtRQUNqQyxxQkFBcUIsRUFBRSwwQkFBMEIsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUM7S0FDcEYsQ0FBQTtBQUNILENBQUM7QUFFRCxvQ0FBb0MscUJBQTRDO0lBQzlFLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQ2pELFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNuQixPQUFPLFdBQVcsQ0FBQTtBQUNwQixDQUFDO0FBRUQsSUFBTSxNQUFNLEdBQUcsQ0FBQztJQUdkLDJCQUFzRCxXQUFjO1FBQ2xFOztZQUNFLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxhQUFhLENBQUE7UUFDOUQsQ0FBQztRQUVELFVBQVUsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFO1lBQzFELFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7U0FDbkMsQ0FBQyxDQUFBO1FBRUYsT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUE7UUFDL0MsT0FBTyxVQUFpQixDQUFBO0lBQzFCLENBQUM7SUFFRDtRQUNFLElBQU0sQ0FBQyxHQUFHLGNBQXNCLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBUSxDQUFBO1FBQzFELElBQU0sQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzlCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLGNBQVksQ0FBQyxDQUFBO1FBQzdCLE9BQU8sSUFBSSxDQUFDLENBQUE7SUFDZCxDQUFDO0lBRUQsSUFBSTtRQUNGLG9CQUFvQixFQUFFLENBQUE7UUFDdEIsT0FBTyxpQkFBaUIsQ0FBQTtLQUN6QjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsT0FBTyxVQUE0QixXQUFjLElBQUs7WUFBeUIsOEJBQVc7WUFBcEM7O1lBQXNDLENBQUM7WUFBRCxpQkFBQztRQUFELENBQUMsQUFBdkMsQ0FBeUIsV0FBVyxJQUFwQyxDQUF1QyxDQUFBO0tBQzlGO0FBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQSJ9","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\nvar Module = /** @class */ (function () {\n function Module(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap;\n this.connectedContexts = new Set;\n }\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function () {\n return this.definition.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function () {\n return this.definition.controllerConstructor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function () {\n return Array.from(this.connectedContexts);\n },\n enumerable: true,\n configurable: true\n });\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n };\n Module.prototype.fetchContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n };\n return Module;\n}());\nexport { Module };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRW5DLE9BQU8sRUFBYyxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHMUQ7SUFNRSxnQkFBWSxXQUF3QixFQUFFLFVBQXNCO1FBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzdDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxPQUFPLENBQUE7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFBO0lBQ2xDLENBQUM7SUFFRCxzQkFBSSw4QkFBVTthQUFkO1lBQ0UsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQTtRQUNuQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHlDQUFxQjthQUF6QjtZQUNFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQTtRQUM5QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDRCQUFRO2FBQVo7WUFDRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDM0MsQ0FBQzs7O09BQUE7SUFFRCx1Q0FBc0IsR0FBdEIsVUFBdUIsS0FBWTtRQUNqQyxJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDaEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNuQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVELDBDQUF5QixHQUF6QixVQUEwQixLQUFZO1FBQ3BDLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQy9DLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUN0QyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUE7U0FDckI7SUFDSCxDQUFDO0lBRU8scUNBQW9CLEdBQTVCLFVBQTZCLEtBQVk7UUFDdkMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQ3pDO1FBQ0QsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUNILGFBQUM7QUFBRCxDQUFDLEFBL0NELElBK0NDIn0=","var DataMap = /** @class */ (function () {\n function DataMap(scope) {\n this.scope = scope;\n }\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n DataMap.prototype.get = function (key) {\n key = this.getFormattedKey(key);\n return this.element.getAttribute(key);\n };\n DataMap.prototype.set = function (key, value) {\n key = this.getFormattedKey(key);\n this.element.setAttribute(key, value);\n return this.get(key);\n };\n DataMap.prototype.has = function (key) {\n key = this.getFormattedKey(key);\n return this.element.hasAttribute(key);\n };\n DataMap.prototype.delete = function (key) {\n if (this.has(key)) {\n key = this.getFormattedKey(key);\n this.element.removeAttribute(key);\n return true;\n }\n else {\n return false;\n }\n };\n DataMap.prototype.getFormattedKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n return DataMap;\n}());\nexport { DataMap };\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) { return \"-\" + char.toLowerCase(); });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YV9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7SUFHRSxpQkFBWSxLQUFZO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO0lBQ3BCLENBQUM7SUFFRCxzQkFBSSw0QkFBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUMzQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLCtCQUFVO2FBQWQ7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFBO1FBQzlCLENBQUM7OztPQUFBO0lBRUQscUJBQUcsR0FBSCxVQUFJLEdBQVc7UUFDYixHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMvQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFRCxxQkFBRyxHQUFILFVBQUksR0FBVyxFQUFFLEtBQWE7UUFDNUIsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN0QixDQUFDO0lBRUQscUJBQUcsR0FBSCxVQUFJLEdBQVc7UUFDYixHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMvQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFRCx3QkFBTSxHQUFOLFVBQU8sR0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakIsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDakMsT0FBTyxJQUFJLENBQUE7U0FDWjthQUFNO1lBQ0wsT0FBTyxLQUFLLENBQUE7U0FDYjtJQUNILENBQUM7SUFFTyxpQ0FBZSxHQUF2QixVQUF3QixHQUFXO1FBQ2pDLE9BQU8sVUFBUSxJQUFJLENBQUMsVUFBVSxTQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUcsQ0FBQTtJQUNwRCxDQUFDO0lBQ0gsY0FBQztBQUFELENBQUMsQUE1Q0QsSUE0Q0M7O0FBRUQsbUJBQW1CLEtBQWE7SUFDOUIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFDLENBQUMsRUFBRSxJQUFJLElBQUssT0FBQSxNQUFJLElBQUksQ0FBQyxXQUFXLEVBQUksRUFBeEIsQ0FBd0IsQ0FBQyxDQUFBO0FBQ3pFLENBQUMifQ==","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlbGVjdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBQ2QsTUFBTSxzQ0FBc0MsYUFBcUIsRUFBRSxLQUFhO0lBQzlFLE9BQU8sTUFBSSxhQUFhLFlBQU0sS0FBSyxRQUFJLENBQUE7QUFDekMsQ0FBQyJ9","import { attributeValueContainsToken } from \"./selectors\";\nvar TargetSet = /** @class */ (function () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function () {\n return this.scope.schema;\n },\n enumerable: true,\n configurable: true\n });\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n TargetSet.prototype.find = function () {\n var targetNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findElement(selector);\n };\n TargetSet.prototype.findAll = function () {\n var targetNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findAllElements(selector);\n };\n TargetSet.prototype.getSelectorForTargetNames = function (targetNames) {\n var _this = this;\n return targetNames.map(function (targetName) { return _this.getSelectorForTargetName(targetName); }).join(\", \");\n };\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n return TargetSet;\n}());\nexport { TargetSet };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0X3NldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXJnZXRfc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV6RDtJQUdFLG1CQUFZLEtBQVk7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDcEIsQ0FBQztJQUVELHNCQUFJLDhCQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksaUNBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUE7UUFDOUIsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw2QkFBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQTtRQUMxQixDQUFDOzs7T0FBQTtJQUVELHVCQUFHLEdBQUgsVUFBSSxVQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFBO0lBQ3RDLENBQUM7SUFFRCx3QkFBSSxHQUFKO1FBQUsscUJBQXdCO2FBQXhCLFVBQXdCLEVBQXhCLHFCQUF3QixFQUF4QixJQUF3QjtZQUF4QixnQ0FBd0I7O1FBQzNCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM1RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCwyQkFBTyxHQUFQO1FBQVEscUJBQXdCO2FBQXhCLFVBQXdCLEVBQXhCLHFCQUF3QixFQUF4QixJQUF3QjtZQUF4QixnQ0FBd0I7O1FBQzlCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM1RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFTyw2Q0FBeUIsR0FBakMsVUFBa0MsV0FBcUI7UUFBdkQsaUJBRUM7UUFEQyxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBQSxVQUFVLElBQUksT0FBQSxLQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLEVBQXpDLENBQXlDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDNUYsQ0FBQztJQUVPLDRDQUF3QixHQUFoQyxVQUFpQyxVQUFrQjtRQUNqRCxJQUFNLGdCQUFnQixHQUFNLElBQUksQ0FBQyxVQUFVLFNBQUksVUFBWSxDQUFBO1FBQzNELE9BQU8sMkJBQTJCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtJQUNuRixDQUFDO0lBQ0gsZ0JBQUM7QUFBRCxDQUFDLEFBekNELElBeUNDIn0=","import { DataMap } from \"./data_map\";\nimport { TargetSet } from \"./target_set\";\nimport { attributeValueContainsToken } from \"./selectors\";\nvar Scope = /** @class */ (function () {\n function Scope(schema, identifier, element) {\n this.schema = schema;\n this.identifier = identifier;\n this.element = element;\n this.targets = new TargetSet(this);\n this.data = new DataMap(this);\n }\n Scope.prototype.findElement = function (selector) {\n return this.findAllElements(selector)[0];\n };\n Scope.prototype.findAllElements = function (selector) {\n var head = this.element.matches(selector) ? [this.element] : [];\n var tail = this.filterElements(Array.from(this.element.querySelectorAll(selector)));\n return head.concat(tail);\n };\n Scope.prototype.filterElements = function (elements) {\n var _this = this;\n return elements.filter(function (element) { return _this.containsElement(element); });\n };\n Scope.prototype.containsElement = function (element) {\n return element.closest(this.controllerSelector) === this.element;\n };\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function () {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: true,\n configurable: true\n });\n return Scope;\n}());\nexport { Scope };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NvcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV6RDtJQU9FLGVBQVksTUFBYyxFQUFFLFVBQWtCLEVBQUUsT0FBZ0I7UUFDOUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFFRCwyQkFBVyxHQUFYLFVBQVksUUFBZ0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFDLENBQUM7SUFFRCwrQkFBZSxHQUFmLFVBQWdCLFFBQWdCO1FBQzlCLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQ2pFLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDMUIsQ0FBQztJQUVELDhCQUFjLEdBQWQsVUFBZSxRQUFtQjtRQUFsQyxpQkFFQztRQURDLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLEtBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQTdCLENBQTZCLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsK0JBQWUsR0FBZixVQUFnQixPQUFnQjtRQUM5QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNsRSxDQUFDO0lBRUQsc0JBQVkscUNBQWtCO2FBQTlCO1lBQ0UsT0FBTywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUN0RixDQUFDOzs7T0FBQTtJQUNILFlBQUM7QUFBRCxDQUFDLEFBcENELElBb0NDIn0=","import { Scope } from \"./scope\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\nvar ScopeObserver = /** @class */ (function () {\n function ScopeObserver(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap;\n this.scopeReferenceCounts = new WeakMap;\n }\n ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function () {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n // Value observer delegate\n /** @hidden */\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element, identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = new Scope(this.schema, identifier, element);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n };\n /** @hidden */\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n };\n /** @hidden */\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n };\n ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map;\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n };\n return ScopeObserver;\n}());\nexport { ScopeObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGVfb2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NvcGVfb2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUMvQixPQUFPLEVBQVMsaUJBQWlCLEVBQTZCLE1BQU0sOEJBQThCLENBQUE7QUFPbEc7SUFRRSx1QkFBWSxPQUFnQixFQUFFLE1BQWMsRUFBRSxRQUErQjtRQUMzRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM1RixJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxPQUFPLENBQUE7UUFDOUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksT0FBTyxDQUFBO0lBQ3pDLENBQUM7SUFFRCw2QkFBSyxHQUFMO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCw0QkFBSSxHQUFKO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQy9CLENBQUM7SUFFRCxzQkFBSSw4Q0FBbUI7YUFBdkI7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUE7UUFDeEMsQ0FBQzs7O09BQUE7SUFFRCwwQkFBMEI7SUFFMUIsY0FBYztJQUNkLDBDQUFrQixHQUFsQixVQUFtQixLQUFZO1FBQ3JCLElBQUEsdUJBQU8sRUFBRSwwQkFBbUIsQ0FBVTtRQUM5QyxJQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUUxRSxJQUFJLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUNuRCxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQzFDO1FBRUQsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsY0FBYztJQUNkLDJDQUFtQixHQUFuQixVQUFvQixPQUFnQixFQUFFLEtBQVk7UUFDaEQsSUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN0RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQTtRQUNwRCxJQUFJLGNBQWMsSUFBSSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDcEM7SUFDSCxDQUFDO0lBRUQsY0FBYztJQUNkLDZDQUFxQixHQUFyQixVQUFzQixPQUFnQixFQUFFLEtBQVk7UUFDbEQsSUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzRCxJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDeEQsSUFBSSxjQUFjLElBQUksQ0FBQyxFQUFFO2dCQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFBO2FBQ3ZDO1NBQ0Y7SUFDSCxDQUFDO0lBRU8seURBQWlDLEdBQXpDLFVBQTBDLE9BQWdCO1FBQ3hELElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN0RSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDdkIsa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUE7WUFDNUIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtTQUNsRTtRQUNELE9BQU8sa0JBQWtCLENBQUE7SUFDM0IsQ0FBQztJQUNILG9CQUFDO0FBQUQsQ0FBQyxBQXpFRCxJQXlFQyJ9","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { ScopeObserver } from \"./scope_observer\";\nvar Router = /** @class */ (function () {\n function Router(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap;\n this.modulesByIdentifier = new Map;\n }\n Object.defineProperty(Router.prototype, \"element\", {\n get: function () {\n return this.application.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function () {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function () {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function () {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function () {\n return this.modules.reduce(function (contexts, module) { return contexts.concat(module.contexts); }, []);\n },\n enumerable: true,\n configurable: true\n });\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\n Router.prototype.loadDefinition = function (definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n };\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n };\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(function (context) { return context.element == element; });\n }\n };\n // Error handler delegate\n /** @hidden */\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n };\n // Scope observer delegate\n /** @hidden */\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @hidden */\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n };\n // Modules\n Router.prototype.connectModule = function (module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) { return module.connectContextForScope(scope); });\n };\n Router.prototype.disconnectModule = function (module) {\n this.modulesByIdentifier.delete(module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) { return module.disconnectContextForScope(scope); });\n };\n return Router;\n}());\nexport { Router };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUc3QyxPQUFPLEVBQUUsYUFBYSxFQUF5QixNQUFNLGtCQUFrQixDQUFBO0FBRXZFO0lBTUUsZ0JBQVksV0FBd0I7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdkUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksUUFBUSxDQUFBO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsc0JBQUksMkJBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUE7UUFDakMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwwQkFBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQTtRQUNoQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHVDQUFtQjthQUF2QjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQTtRQUN4QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDJCQUFPO2FBQVg7WUFDRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDdEQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw0QkFBUTthQUFaO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FB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","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLENBQUMsSUFBTSxhQUFhLEdBQVc7SUFDbkMsbUJBQW1CLEVBQUUsaUJBQWlCO0lBQ3RDLGVBQWUsRUFBRSxhQUFhO0lBQzlCLGVBQWUsRUFBRSxhQUFhO0NBQy9CLENBQUEifQ==","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\nvar Application = /** @class */ (function () {\n function Application(element, schema) {\n if (element === void 0) { element = document.documentElement; }\n if (schema === void 0) { schema = defaultSchema; }\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\n Application.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, domReady()];\n case 1:\n _a.sent();\n this.router.start();\n this.dispatcher.start();\n return [2 /*return*/];\n }\n });\n });\n };\n Application.prototype.stop = function () {\n this.router.stop();\n this.dispatcher.stop();\n };\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({ identifier: identifier, controllerConstructor: controllerConstructor });\n };\n Application.prototype.load = function (head) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) { return _this.router.loadDefinition(definition); });\n };\n Application.prototype.unload = function (head) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) { return _this.router.unloadIdentifier(identifier); });\n };\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function () {\n return this.router.contexts.map(function (context) { return context.controller; });\n },\n enumerable: true,\n configurable: true\n });\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n };\n // Error handling\n Application.prototype.handleError = function (error, message, detail) {\n console.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n return Application;\n}());\nexport { Application };\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n }\n else {\n resolve();\n }\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFVLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUVoRDtJQVlFLHFCQUFZLE9BQTJDLEVBQUUsTUFBOEI7UUFBM0Usd0JBQUEsRUFBQSxVQUFtQixRQUFRLENBQUMsZUFBZTtRQUFFLHVCQUFBLEVBQUEsc0JBQThCO1FBQ3JGLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBWE0saUJBQUssR0FBWixVQUFhLE9BQWlCLEVBQUUsTUFBZTtRQUM3QyxJQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDcEQsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ25CLE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFTSywyQkFBSyxHQUFYOzs7OzRCQUNFLHFCQUFNLFFBQVEsRUFBRSxFQUFBOzt3QkFBaEIsU0FBZ0IsQ0FBQTt3QkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTt3QkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTs7Ozs7S0FDeEI7SUFFRCwwQkFBSSxHQUFKO1FB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","/** @hidden */\nexport function defineTargetProperties(constructor) {\n var prototype = constructor.prototype;\n var targetNames = getTargetNamesForConstructor(constructor);\n targetNames.forEach(function (name) {\n var _a;\n return defineLinkedProperties(prototype, (_a = {},\n _a[name + \"Target\"] = {\n get: function () {\n var target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n },\n _a[name + \"Targets\"] = {\n get: function () {\n return this.targets.findAll(name);\n }\n },\n _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function () {\n return this.targets.has(name);\n }\n },\n _a));\n });\n}\nfunction getTargetNamesForConstructor(constructor) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (targetNames, constructor) {\n getOwnTargetNamesForConstructor(constructor).forEach(function (name) { return targetNames.add(name); });\n return targetNames;\n }, new Set));\n}\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors;\n}\nfunction getOwnTargetNamesForConstructor(constructor) {\n var definition = constructor[\"targets\"];\n return Array.isArray(definition) ? definition : [];\n}\nfunction defineLinkedProperties(object, properties) {\n Object.keys(properties).forEach(function (name) {\n if (!(name in object)) {\n var descriptor = properties[name];\n Object.defineProperty(object, name, descriptor);\n }\n });\n}\nfunction capitalize(name) {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0X3Byb3BlcnRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFyZ2V0X3Byb3BlcnRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYztBQUNkLE1BQU0saUNBQWlDLFdBQXFCO0lBQzFELElBQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUE7SUFDdkMsSUFBTSxXQUFXLEdBQUcsNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDN0QsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUk7O1FBQUksT0FBQSxzQkFBc0IsQ0FBQyxTQUFTO1lBQzFELEdBQUksSUFBSSxXQUFRLElBQUc7Z0JBQ2pCLEdBQUc7b0JBQ0QsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQ3RDLElBQUksTUFBTSxFQUFFO3dCQUNWLE9BQU8sTUFBTSxDQUFBO3FCQUNkO3lCQUFNO3dCQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQTJCLElBQUksQ0FBQyxVQUFVLFNBQUksSUFBSSxPQUFHLENBQUMsQ0FBQTtxQkFDdkU7Z0JBQ0gsQ0FBQzthQUNGO1lBQ0QsR0FBSSxJQUFJLFlBQVMsSUFBRztnQkFDbEIsR0FBRztvQkFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNuQyxDQUFDO2FBQ0Y7WUFDRCxHQUFDLFFBQU0sVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFRLElBQUc7Z0JBQ2hDLEdBQUc7b0JBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDL0IsQ0FBQzthQUNGO2dCQUNEO0lBckIwQixDQXFCMUIsQ0FBQyxDQUFBO0FBQ0wsQ0FBQztBQUVELHNDQUFzQyxXQUFxQjtJQUN6RCxJQUFNLFNBQVMsR0FBRywwQkFBMEIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUN6RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFDLFdBQVcsRUFBRSxXQUFXO1FBQzFELCtCQUErQixDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUksSUFBSSxPQUFBLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQXJCLENBQXFCLENBQUMsQ0FBQTtRQUNuRixPQUFPLFdBQVcsQ0FBQTtJQUNwQixDQUFDLEVBQUUsSUFBSSxHQUFrQixDQUFDLENBQUMsQ0FBQTtBQUM3QixDQUFDO0FBRUQsb0NBQW9DLFdBQXFCO0lBQ3ZELElBQU0sU0FBUyxHQUFlLEVBQUUsQ0FBQTtJQUNoQyxPQUFPLFdBQVcsRUFBRTtRQUNsQixTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzNCLFdBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0tBQ2pEO0lBQ0QsT0FBTyxTQUFTLENBQUE7QUFDbEIsQ0FBQztBQUVELHlDQUF5QyxXQUFxQjtJQUM1RCxJQUFNLFVBQVUsR0FBSSxXQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2xELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFDcEQsQ0FBQztBQUVELGdDQUFnQyxNQUFXLEVBQUUsVUFBaUM7SUFDNUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJO1FBQ25DLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsRUFBRTtZQUNyQixJQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDbkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1NBQ2hEO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsb0JBQW9CLElBQVk7SUFDOUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDckQsQ0FBQyJ9","import { defineTargetProperties } from \"./target_properties\";\nvar Controller = /** @class */ (function () {\n function Controller(context) {\n this.context = context;\n }\n Controller.bless = function () {\n defineTargetProperties(this);\n };\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function () {\n return this.context.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function () {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function () {\n return this.scope.targets;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function () {\n return this.scope.data;\n },\n enumerable: true,\n configurable: true\n });\n Controller.prototype.initialize = function () {\n // Override in your subclass to set up initial controller state\n };\n Controller.prototype.connect = function () {\n // Override in your subclass to respond when the controller is connected to the DOM\n };\n Controller.prototype.disconnect = function () {\n // Override in your subclass to respond when the controller is disconnected from the DOM\n };\n Controller.targets = [];\n return Controller;\n}());\nexport { Controller };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBTzVEO0lBU0Usb0JBQVksT0FBZ0I7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDeEIsQ0FBQztJQU5NLGdCQUFLLEdBQVo7UUFDRSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBTUQsc0JBQUksbUNBQVc7YUFBZjtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUE7UUFDakMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw2QkFBSzthQUFUO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUMzQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLCtCQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksa0NBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUE7UUFDOUIsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwrQkFBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUMzQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDRCQUFJO2FBQVI7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFBO1FBQ3hCLENBQUM7OztPQUFBO0lBRUQsK0JBQVUsR0FBVjtRQUNFLCtEQUErRDtJQUNqRSxDQUFDO0lBRUQsNEJBQU8sR0FBUDtRQUNFLG1GQUFtRjtJQUNyRixDQUFDO0lBRUQsK0JBQVUsR0FBVjtRQUNFLHdGQUF3RjtJQUMxRixDQUFDO0lBOUNNLGtCQUFPLEdBQWEsRUFBRSxDQUFBO0lBK0MvQixpQkFBQztDQUFBLEFBaERELElBZ0RDO1NBaERZLFVBQVUifQ==","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","require('../../modules/es7.array.flat-map');\nmodule.exports = require('../../modules/_core').Array.flatMap;\n","require('../../modules/es7.string.pad-start');\nmodule.exports = require('../../modules/_core').String.padStart;\n","require('../../modules/es7.string.pad-end');\nmodule.exports = require('../../modules/_core').String.padEnd;\n","require('../../modules/es7.string.trim-left');\nmodule.exports = require('../../modules/_core').String.trimLeft;\n","require('../../modules/es7.string.trim-right');\nmodule.exports = require('../../modules/_core').String.trimRight;\n","require('../../modules/es7.symbol.async-iterator');\nmodule.exports = require('../../modules/_wks-ext').f('asyncIterator');\n","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","'use strict';\nrequire('../../modules/es6.promise');\nrequire('../../modules/es7.promise.finally');\nmodule.exports = require('../../modules/_core').Promise['finally'];\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","require('../modules/es7.global');\nmodule.exports = require('../modules/_core').global;\n","\"use strict\";\n\nrequire(\"./noConflict\");\n\nvar _global = _interopRequireDefault(require(\"core-js/library/fn/global\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nif (_global[\"default\"]._babelPolyfill && typeof console !== \"undefined\" && console.warn) {\n console.warn(\"@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended \" + \"and may have consequences if different versions of the polyfills are applied sequentially. \" + \"If you do need to load the polyfill more than once, use @babel/polyfill/noConflict \" + \"instead to bypass the warning.\");\n}\n\n_global[\"default\"]._babelPolyfill = true;","var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global)\n\nvar support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this)\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n }\n }\n }\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = global.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n })\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!global.fetch) {\n global.fetch = fetch\n global.Headers = Headers\n global.Request = Request\n global.Response = Response\n}\n","export const HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport const defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: (err) => typeof console !== \"undefined\" && console.warn(err),\n getWeek: (givenDate) => {\n const date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export const english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: (nth) => {\n const s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export const pad = (number, length = 2) => `000${number}`.slice(length * -1);\nexport const int = (bool) => (bool === true ? 1 : 0);\nexport function debounce(fn, wait) {\n let t;\n return function () {\n clearTimeout(t);\n t = setTimeout(() => fn.apply(this, arguments), wait);\n };\n}\nexport const arrayify = (obj) => obj instanceof Array ? obj : [obj];\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n const e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n const wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (const key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n const path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nconst doNothing = () => undefined;\nexport const monthToStr = (monthNumber, shorthand, locale) => locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber];\nexport const revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n H: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n J: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n K: (dateObj, amPM, locale) => {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: (_, unixSeconds) => new Date(parseFloat(unixSeconds) * 1000),\n W: function (dateObj, weekNum, locale) {\n const weekNumber = parseInt(weekNum);\n const date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: (dateObj, year) => {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: (_, ISODate) => new Date(ISODate),\n d: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n h: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n i: (dateObj, minutes) => {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: (_, unixMillSeconds) => new Date(parseFloat(unixMillSeconds)),\n w: doNothing,\n y: (dateObj, year) => {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport const tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport const formats = {\n Z: (date) => date.toISOString(),\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: (date) => pad(date.getHours()),\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: (date, locale) => locale.amPM[int(date.getHours() > 11)],\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: (date) => pad(date.getSeconds()),\n U: (date) => date.getTime() / 1000,\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: (date) => pad(date.getFullYear(), 4),\n d: (date) => pad(date.getDate()),\n h: (date) => (date.getHours() % 12 ? date.getHours() % 12 : 12),\n i: (date) => pad(date.getMinutes()),\n j: (date) => date.getDate(),\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: (date) => pad(date.getMonth() + 1),\n n: (date) => date.getMonth() + 1,\n s: (date) => date.getSeconds(),\n u: (date) => date.getTime(),\n w: (date) => date.getDay(),\n y: (date) => String(date.getFullYear()).substring(2),\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport const createDateFormatter = ({ config = defaults, l10n = english, isMobile = false, }) => (dateObj, frmt, overrideLocale) => {\n const locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map((c, i, arr) => formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\")\n .join(\"\");\n};\nexport const createDateParser = ({ config = defaults, l10n = english }) => (date, givenFormat, timeless, customLocale) => {\n if (date !== 0 && !date)\n return undefined;\n const locale = customLocale || l10n;\n let parsedDate;\n const dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n const format = givenFormat || (config || defaults).dateFormat;\n const datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr))\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n let matched, ops = [];\n for (let i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n const token = format[i];\n const isBackSlash = token === \"\\\\\";\n const escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n const match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n ops.forEach(({ fn, val }) => (parsedDate = fn(parsedDate, val, locale) || parsedDate));\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(`Invalid date provided: ${dateOrig}`));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n};\nexport function compareDates(date1, date2, timeless = true) {\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport const isBetween = (ts, ts1, ts2) => {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport const duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n let hours = config.defaultHour;\n let minutes = config.defaultMinute;\n let seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n const minHour = config.minDate.getHours();\n const minMinutes = config.minDate.getMinutes();\n const minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n const maxHr = config.maxDate.getHours();\n const maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours, minutes, seconds };\n}\n","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target, ...args) {\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n for (const source of args) {\n if (source) {\n Object.keys(source).forEach((key) => (target[key] = source[key]));\n }\n }\n return target;\n };\n}\n","import { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nconst DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n const self = {\n config: Object.assign(Object.assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth(month = self.currentMonth, yr = self.currentYear) {\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n const config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n const daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n const defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n const defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n const prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n let hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n const limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n const limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n const maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n const minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n const date = dateObj || self.latestSelectedDateObj;\n if (date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n const eventTarget = getEventTarget(event);\n const year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach((ev) => bind(element, ev, handler, options));\n if (element instanceof Array)\n return element.forEach((el) => bind(el, event, handler, options));\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: () => element.removeEventListener(event, handler),\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach((evt) => {\n Array.prototype.forEach.call(self.element.querySelectorAll(`[data-${evt}]`), (el) => bind(el, \"click\", self[evt]));\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n const debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", (e) => {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n const selText = (e) => getEventTarget(e).select();\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", () => self.secondElement && self.secondElement.select());\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", (e) => {\n updateTime(e);\n triggerChange();\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n const jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n const oldYear = self.currentYear;\n const oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n const eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n const target = e && getEventTarget(e);\n const input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n const event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n const fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n const { weekWrapper, weekNumbers } = buildWeeks();\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n const customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n const wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n const dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n const startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n for (let m = startMonth; m != endMonth; m += delta) {\n const month = self.daysContainer.children[m];\n const startIndex = delta > 0 ? 0 : month.children.length - 1;\n const endIndex = delta > 0 ? month.children.length : -1;\n for (let i = startIndex; i != endIndex; i += delta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n const givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n const loopDelta = delta > 0 ? 1 : -1;\n for (let m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n const month = self.daysContainer.children[m];\n const startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n const numMonthDays = month.children.length;\n for (let i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n const dayFocused = isInView(document.activeElement || document.body);\n const startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n const firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n const prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n const daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n let dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (let dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n const dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n const frag = document.createDocumentFragment();\n for (let i = 0; i < self.config.showMonths; i++) {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n const shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (let i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n const month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n const container = createElement(\"div\", \"flatpickr-month\");\n const monthNavFragment = window.document.createDocumentFragment();\n let monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", (e) => {\n const target = getEventTarget(e);\n const selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n const yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n const yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n const currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container,\n yearElement,\n monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (let m = self.config.showMonths; m--;) {\n const month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: () => self.__hidePrevMonthArrow,\n set(bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: () => self.__hideNextMonthArrow,\n set(bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n const defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n const separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n const hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n const minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n const secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (let i = self.config.showMonths; i--;) {\n const container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n const firstDayOfWeek = self.l10n.firstDayOfWeek;\n let weekdays = [...self.l10n.weekdays.shorthand];\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = [\n ...weekdays.splice(firstDayOfWeek, weekdays.length),\n ...weekdays.splice(0, firstDayOfWeek),\n ];\n }\n for (let i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = `\n \n ${weekdays.join(\"\")}\n \n `;\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n const weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n const weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper,\n weekNumbers,\n };\n }\n function changeMonth(value, isOffset = true) {\n const delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent = true, toInitial = true) {\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n const { hours, minutes, seconds } = getDefaultHours(self.config);\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (let i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n const wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach((k) => {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n const eventTarget = getEventTarget(e);\n const isCalendarElement = isCalendarElem(eventTarget);\n const isInput = eventTarget === self.input ||\n eventTarget === self.altInput ||\n self.element.contains(eventTarget) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n const lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n const isIgnored = !self.config.ignoredFocusElements.some((elem) => elem.contains(eventTarget));\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n const newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless = true) {\n var _a;\n const dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n const bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (let i = 0, d; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n const parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n const isInput = e.target === self._input;\n if (isInput &&\n (self.selectedDates.length > 0 || self._input.value.length > 0) &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n const eventTarget = getEventTarget(e);\n const isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n const allowInput = self.config.allowInput;\n const allowKeydown = self.isOpen && (!allowInput || !isInput);\n const allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n const isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n const delta = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta);\n else {\n e.stopPropagation();\n changeMonth(delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n const delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n const elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter((x) => x);\n const i = elems.indexOf(eventTarget);\n if (i !== -1) {\n const target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n const hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n let containsDisabled = false;\n let minRange = 0, maxRange = 0;\n for (let t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (let m = 0; m < self.config.showMonths; m++) {\n const month = self.daysContainer.children[m];\n for (let i = 0, l = month.children.length; i < l; i++) {\n const dayElem = month.children[i], date = dayElem.dateObj;\n const timestamp = date.getTime();\n const outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n continue;\n }\n else if (containsDisabled && !outOfRange)\n continue;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement = self._positionElement) {\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n const eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n const wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(() => self.hourElement.select(), 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return (date) => {\n const dateObj = (self.config[`_${type}Date`] = self.parseDate(date, self.config.dateFormat));\n const inverseDateObj = self.config[`_${type === \"min\" ? \"max\" : \"min\"}Date`];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter((d) => isEnabled(d));\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n const boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n const userConfig = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n const formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: () => self.config._enable,\n set: (dates) => {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: () => self.config._disable,\n set: (dates) => {\n self.config._disable = parseDateRules(dates);\n },\n });\n const timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n const defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n const defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + ` h:i${userConfig.enableSeconds ? \":S\" : \"\"} K`;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: () => self.config._minDate,\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: () => self.config._maxDate,\n set: minMaxDateSetter(\"max\"),\n });\n const minMaxTimeSetter = (type) => (val) => {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n };\n Object.defineProperty(self.config, \"minTime\", {\n get: () => self.config._minTime,\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: () => self.config._maxTime,\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (let i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter((hook) => self.config[hook] !== undefined).forEach((hook) => {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (let i = 0; i < self.config.plugins.length; i++) {\n const pluginConf = self.config.plugins[i](self) || {};\n for (const key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(`flatpickr: invalid locale ${self.config.locale}`));\n self.l10n = Object.assign(Object.assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = `(${self.l10n.amPM[0]}|${self.l10n.amPM[1]}|${self.l10n.amPM[0].toLowerCase()}|${self.l10n.amPM[1].toLowerCase()})`;\n const userConfig = Object.assign(Object.assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n const positionElement = customPositionElement || self._positionElement;\n const calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, ((acc, child) => acc + child.offsetHeight), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n const top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n let left = window.pageXOffset + inputBounds.left;\n let isCenter = false;\n let isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n const right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n const rightMost = left + calendarWidth > window.document.body.offsetWidth;\n const centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = `${top}px`;\n if (!rightMost) {\n self.calendarContainer.style.left = `${left}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = `${right}px`;\n }\n else {\n const doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n const bodyWidth = window.document.body.offsetWidth;\n const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n const centerBefore = \".flatpickr-calendar.centerMost:before\";\n const centerAfter = \".flatpickr-calendar.centerMost:after\";\n const centerIndex = doc.cssRules.length;\n const centerStyle = `{left:${inputBounds.left}px;right:auto;}`;\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(`${centerBefore},${centerAfter}${centerStyle}`, centerIndex);\n self.calendarContainer.style.left = `${centerLeft}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n let editableSheet = null;\n for (let i = 0; i < document.styleSheets.length; i++) {\n const sheet = document.styleSheets[i];\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n const isSelectable = (day) => day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n const t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n const target = t;\n const selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n const shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n const selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n const isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n const single = self.config.mode === \"single\" && !self.config.enableTime;\n const range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n const CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n clickOpens: [\n () => {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (const key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach((x) => x());\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach((x) => x());\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n let dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map((d) => self.parseDate(d, format));\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map((date) => self.parseDate(date, format));\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map((date) => self.parseDate(date, format));\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(inputDate)}`));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter((d) => d instanceof Date && isEnabled(d, false)));\n if (self.config.mode === \"range\")\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n function setDate(date, triggerChange = false, format = self.config.dateFormat) {\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map((rule) => {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter((x) => x);\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n const preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n const inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", (e) => {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n const hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (let i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n const e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (let i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach((yearElement, i) => {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map((dObj) => self.formatDate(dObj, format))\n .filter((d, i, arr) => self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i)\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange = true) {\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n const eventTarget = getEventTarget(e);\n const isPrevMonth = self.prevMonthNav.contains(eventTarget);\n const isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n const isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n const min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n let newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n const isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n const nodes = Array.prototype.slice\n .call(nodeList)\n .filter((x) => x instanceof HTMLElement);\n const instances = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: Object.assign({}, English),\n default: Object.assign({}, English),\n};\nflatpickr.localize = (l10n) => {\n flatpickr.l10ns.default = Object.assign(Object.assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = (config) => {\n flatpickr.defaultConfig = Object.assign(Object.assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","if (window.acima == undefined) {\n window.acima = {};\n}\nwindow.acima.fetchInit = function(newOptions) {\n var options = {\n credentials: newOptions.credentials || \"same-origin\",\n headers: new Headers(\n {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-CSRF-Token\":\n document.head.querySelector(\"meta[name=csrf-token]\").content,\n \"X-Fetch-Request\": true,\n }\n ),\n };\n var extendedOptions = Object.assign({}, newOptions, options);\n return extendedOptions;\n};\nwindow.acima.mpFetch = function(url, newOptions) {\n var options = {\n credentials: newOptions.credentials || \"same-origin\",\n headers: new Headers(\n {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-CSRF-Token\":\n document.head.querySelector(\"meta[name=csrf-token]\").content,\n \"X-Fetch-Request\": true,\n }\n ),\n };\n var extendedOptions = Object.assign({}, newOptions, options);\n return fetch(url, extendedOptions);\n};\n","// src/index.ts\nvar CONTROLLER_FILENAME_REGEX = /^(?:.*?(?:controllers|components)\\/|\\.?\\.\\/)?(.+)(?:[/_-]controller\\..+?)$/;\nfunction registerControllers(application, controllerModules) {\n application.load(definitionsFromGlob(controllerModules));\n}\nfunction definitionsFromGlob(controllerModules) {\n return Object.entries(controllerModules).map(definitionFromEntry).filter((value) => value);\n}\nfunction definitionFromEntry([name, controllerModule]) {\n const identifier = identifierForGlobKey(name);\n const controllerConstructor = controllerModule.default;\n if (identifier && typeof controllerConstructor === \"function\")\n return { identifier, controllerConstructor };\n}\nfunction identifierForGlobKey(key) {\n const logicalName = (key.match(CONTROLLER_FILENAME_REGEX) || [])[1];\n if (logicalName)\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n}\nexport {\n CONTROLLER_FILENAME_REGEX,\n definitionsFromGlob,\n identifierForGlobKey,\n registerControllers\n};\n"],"names":["EventListener","Dispatcher","error","Action","Binding","ElementObserver","AttributeObserver","fetch","Multimap","__extends","this","TokenListObserver","ValueListObserver","BindingObserver","Context","Controller","Module","DataMap","TargetSet","Scope","ScopeObserver","Router","resolve","Application","constructor","require$$1","require$$2","runtime","undefined","self","value","key","next","global","_globalModule","core","_coreModule","require$$0","isObject","document","dP","require$$3","require$$4","$export","Headers","defaultOptions","English","defaults","element","triggerChange","delta","formats"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,67]}