From 571e4108b298a480c791846eddd16147e3e0f594 Mon Sep 17 00:00:00 2001 From: Jonathan Sundqvist Date: Sun, 25 Jul 2021 21:10:01 +0200 Subject: [PATCH 1/4] Make it possible to use our own initialize and some other improvements A couple of improvements are introduced here. - Be able to pin what version of StimulusReflex we are using. The tradeoff is that we need to maintain a fork that is lightly touched to allow for that functionality. - Be able to decouple from how rails expect the identifier would look like - The javascript code for actioncable is no longer a dependency. --- javascript/stimulus-websocket/index.js | 42 +++++++++++++++++++ package-lock.json | 25 ++++------- package.json | 9 ++-- sockpuppet/js/sockpuppet.js | 4 +- sockpuppet/static/sockpuppet/sockpuppet.js | 4 +- .../static/sockpuppet/sockpuppet.js.map | 2 +- tasks.py | 4 -- tests/example/javascript/example.js | 3 +- 8 files changed, 62 insertions(+), 31 deletions(-) diff --git a/javascript/stimulus-websocket/index.js b/javascript/stimulus-websocket/index.js index 634bbc3..589fe55 100644 --- a/javascript/stimulus-websocket/index.js +++ b/javascript/stimulus-websocket/index.js @@ -1,4 +1,9 @@ import ReconnectingWebSocket from "reconnecting-websocket" +import { Controller } from 'stimulus' +import StimulusReflex from "stimulus_reflex" +import actionCable from 'stimulus_reflex/javascript/transports/action_cable' +import { reflexControllerMethods } from "stimulus_reflex/javascript/reflexes" + // read up on the default options that actioncable has for websockets. @@ -106,6 +111,43 @@ class Subscriptions { } } +class StimulusReflexController extends Controller { + constructor (...args) { + super(...args) + register(this) + } +} + + +const register = (controller, options = {}) => { + const channel = 'StimulusReflex::Channel' + controller.StimulusReflex = { ...options, channel } + actionCable.createSubscription(controller) + Object.assign(controller, reflexControllerMethods) +} + +const initialize = (application, { + controller = StimulusReflexController, + consumer, + debug, + params, + isolate, + deprecate +} = {}) => { + let options = {consumer, controller, debug, params, isolate, deprecate} + StimulusReflex.initialize(application, options) +} + + +const Sockpuppet = { + initialize: initialize, + register: register, +} + +export { + Sockpuppet +} + export default class WebsocketConsumer { constructor(url, options = {}) { this._url = url diff --git a/package-lock.json b/package-lock.json index 42837c8..1dff98e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1176,12 +1176,6 @@ } } }, - "@rails/actioncable": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@rails/actioncable/-/actioncable-6.1.3.tgz", - "integrity": "sha512-m02524MR9cTnUNfGz39Lkx9jVvuL0tle4O7YgvouJ7H83FILxzG1nQ5jw8pAjLAr9XQGu+P1sY4SKE3zyhCNjw==", - "dev": true - }, "@rollup/plugin-node-resolve": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.1.tgz", @@ -5577,8 +5571,7 @@ "morphdom": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/morphdom/-/morphdom-2.6.1.tgz", - "integrity": "sha512-Y8YRbAEP3eKykroIBWrjcfMw7mmwJfjhqdpSvoqinu8Y702nAwikpXcNFDiIkyvfCLxLM9Wu95RZqo4a9jFBaA==", - "dev": true + "integrity": "sha512-Y8YRbAEP3eKykroIBWrjcfMw7mmwJfjhqdpSvoqinu8Y702nAwikpXcNFDiIkyvfCLxLM9Wu95RZqo4a9jFBaA==" }, "move-concurrently": { "version": "1.0.1", @@ -7152,20 +7145,16 @@ } }, "stimulus_reflex": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/stimulus_reflex/-/stimulus_reflex-3.4.1.tgz", - "integrity": "sha512-YbFcuE4HndNe9RBQvF/Vu+7GDt0zLGdhQTXuGfLDVti1qggPG3kPgV1YBZ9volzBTGUmLp2PQbxG9j5AIyYp5A==", - "dev": true, + "version": "github:jonathan-s/stimulus_reflex#0de8d7e3892d2bbd560729fe03c26ff60e45cf65", + "from": "github:jonathan-s/stimulus_reflex#sockpuppet", "requires": { - "@rails/actioncable": ">= 6.0", - "cable_ready": ">= 4.5.0" + "cable_ready": "5.0.0-pre1" }, "dependencies": { "cable_ready": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/cable_ready/-/cable_ready-4.5.0.tgz", - "integrity": "sha512-9bom1DuYe1teBdRckgKWjg+rWRLWrkOvkhzlXkhb33X+Pfu/QK9e4vGk6hGK9PVKVr0SYZC41dByFGknW4spLg==", - "dev": true, + "version": "5.0.0-pre1", + "resolved": "https://registry.npmjs.org/cable_ready/-/cable_ready-5.0.0-pre1.tgz", + "integrity": "sha512-rwF/jZfh/5Zsab2G567o8A8sEerNotUNiAi+i3N2FGMuaCOp0WpLKo2DhVRU9qrT6fZzFYMnoDiBoKdijPDw+A==", "requires": { "morphdom": "^2.6.1" } diff --git a/package.json b/package.json index e23260b..a2e562d 100644 --- a/package.json +++ b/package.json @@ -32,14 +32,17 @@ "rollup-plugin-babel": "^4.4.0", "rollup-plugin-terser": "^7.0.2", "stimulus": ">=1.1", - "stimulus_reflex": ">=3.4.1", "webpack": "^4.43.0", "webpack-bundle-analyzer": "^3.7.0", "webpack-cli": "^3.3.11", "cable_ready": ">= 4.4" }, + "peerDependencies": { + "stimulus": ">= 1.1" + }, "dependencies": { - "reconnecting-websocket": "^4.4.0" + "reconnecting-websocket": "^4.4.0", + "stimulus_reflex": "jonathan-s/stimulus_reflex#sockpuppet" }, "files": [ "javascript/stimulus-websocket/index.js" @@ -54,4 +57,4 @@ "cypress:open": "cypress open", "cypress:run": "cypress run" } -} \ No newline at end of file +} diff --git a/sockpuppet/js/sockpuppet.js b/sockpuppet/js/sockpuppet.js index 32eb471..9f37063 100644 --- a/sockpuppet/js/sockpuppet.js +++ b/sockpuppet/js/sockpuppet.js @@ -1,11 +1,11 @@ import { Application } from 'stimulus' -import StimulusReflex from 'stimulus_reflex' // because travis had issues with 'sockpuppet-js' we had to do this. import WebsocketConsumer from '../../javascript/stimulus-websocket/index' +import { Sockpuppet } from '../../javascript/stimulus-websocket/index' const application = Application.start() const consumer = new WebsocketConsumer( `${location.protocol=='https:'?'wss':'ws'}://${window.location.host}/ws/sockpuppet-sync`, {debug: false} ) -StimulusReflex.initialize(application, { consumer }) +Sockpuppet.initialize(application, { consumer }) diff --git a/sockpuppet/static/sockpuppet/sockpuppet.js b/sockpuppet/static/sockpuppet/sockpuppet.js index 4c8d7bb..957c0f9 100644 --- a/sockpuppet/static/sockpuppet/sockpuppet.js +++ b/sockpuppet/static/sockpuppet/sockpuppet.js @@ -1,4 +1,4 @@ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){!function(e){"use strict";var t={logger:self.console,WebSocket:self.WebSocket},n={log:function(){if(this.enabled){for(var e,n=arguments.length,r=Array(n),o=0;othis.constructor.staleThreshold},e.prototype.disconnectedRecently=function(){return this.disconnectedAt&&c(this.disconnectedAt)0&&void 0!==arguments[0]?arguments[0]:{allowReconnect:!0},t=e.allowReconnect;if(t||this.monitor.stop(),this.isActive())return this.webSocket.close()},e.prototype.reopen=function(){if(n.log("Reopening WebSocket, current state is "+this.getState()),!this.isActive())return this.open();try{return this.close()}catch(e){n.log("Failed to reopen WebSocket",e)}finally{n.log("Reopening WebSocket in "+this.constructor.reopenDelay+"ms"),setTimeout(this.open,this.constructor.reopenDelay)}},e.prototype.getProtocol=function(){if(this.webSocket)return this.webSocket.protocol},e.prototype.isOpen=function(){return this.isState("open")},e.prototype.isActive=function(){return this.isState("open","connecting")},e.prototype.isProtocolSupported=function(){return p.call(d,this.getProtocol())>=0},e.prototype.isState=function(){for(var e=arguments.length,t=Array(e),n=0;n=0},e.prototype.getState=function(){if(this.webSocket)for(var e in t.WebSocket)if(t.WebSocket[e]===this.webSocket.readyState)return e.toLowerCase();return null},e.prototype.installEventHandlers=function(){for(var e in this.events){var t=this.events[e].bind(this);this.webSocket["on"+e]=t}},e.prototype.uninstallEventHandlers=function(){for(var e in this.events)this.webSocket["on"+e]=function(){}},e}();h.reopenDelay=500,h.prototype.events={message:function(e){if(this.isProtocolSupported()){var t=JSON.parse(e.data),r=t.identifier,o=t.message,i=t.reason,s=t.reconnect;switch(t.type){case u.welcome:return this.monitor.recordConnect(),this.subscriptions.reload();case u.disconnect:return n.log("Disconnecting. Reason: "+i),this.close({allowReconnect:s});case u.ping:return this.monitor.recordPing();case u.confirmation:return this.subscriptions.notify(r,"connected");case u.rejection:return this.subscriptions.reject(r);default:return this.subscriptions.notify(r,"received",o)}}},open:function(){if(n.log("WebSocket onopen event, using '"+this.getProtocol()+"' subprotocol"),this.disconnected=!1,!this.isProtocolSupported())return n.log("Protocol is unsupported. Stopping monitor and disconnecting."),this.close({allowReconnect:!1})},close:function(e){if(n.log("WebSocket onclose event"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll("disconnected",{willAttemptReconnect:this.monitor.isRunning()})},error:function(){n.log("WebSocket onerror event")}};var m=function(e,t){if(null!=t)for(var n in t){var r=t[n];e[n]=r}return e},y=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments[2];o(this,e),this.consumer=t,this.identifier=JSON.stringify(n),m(this,r)}return e.prototype.perform=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.action=e,this.send(t)},e.prototype.send=function(e){return this.consumer.send({command:"message",identifier:this.identifier,data:JSON.stringify(e)})},e.prototype.unsubscribe=function(){return this.consumer.subscriptions.remove(this)},e}(),b=function(){function e(t){o(this,e),this.consumer=t,this.subscriptions=[]}return e.prototype.create=function(e,t){var n=e,o="object"===(void 0===n?"undefined":r(n))?n:{channel:n},i=new y(this.consumer,o,t);return this.add(i)},e.prototype.add=function(e){return this.subscriptions.push(e),this.consumer.ensureActiveConnection(),this.notify(e,"initialized"),this.sendCommand(e,"subscribe"),e},e.prototype.remove=function(e){return this.forget(e),this.findAll(e.identifier).length||this.sendCommand(e,"unsubscribe"),e},e.prototype.reject=function(e){var t=this;return this.findAll(e).map((function(e){return t.forget(e),t.notify(e,"rejected"),e}))},e.prototype.forget=function(e){return this.subscriptions=this.subscriptions.filter((function(t){return t!==e})),e},e.prototype.findAll=function(e){return this.subscriptions.filter((function(t){return t.identifier===e}))},e.prototype.reload=function(){var e=this;return this.subscriptions.map((function(t){return e.sendCommand(t,"subscribe")}))},e.prototype.notifyAll=function(e){for(var t=this,n=arguments.length,r=Array(n>1?n-1:0),o=1;o2?n-2:0),o=2;o0&&void 0!==arguments[0]?arguments[0]:A("url")||l.default_mount_path;return new g(e)},e.getConfig=A,Object.defineProperty(e,"__esModule",{value:!0})}(t)},function(e,t,n){"use strict";n.r(t);var r=function(){function e(e,t){this.eventTarget=e,this.eventName=t,this.unorderedBindings=new Set}return e.prototype.connect=function(){this.eventTarget.addEventListener(this.eventName,this,!1)},e.prototype.disconnect=function(){this.eventTarget.removeEventListener(this.eventName,this,!1)},e.prototype.bindingConnected=function(e){this.unorderedBindings.add(e)},e.prototype.bindingDisconnected=function(e){this.unorderedBindings.delete(e)},e.prototype.handleEvent=function(e){for(var t=function(e){if("immediatePropagationStopped"in e)return e;var t=e.stopImmediatePropagation;return Object.assign(e,{immediatePropagationStopped:!1,stopImmediatePropagation:function(){this.immediatePropagationStopped=!0,t.call(this)}})}(e),n=0,r=this.bindings;nr?1:0}))},enumerable:!0,configurable:!0}),e}();var o=function(){function e(e){this.application=e,this.eventListenerMaps=new Map,this.started=!1}return e.prototype.start=function(){this.started||(this.started=!0,this.eventListeners.forEach((function(e){return e.connect()})))},e.prototype.stop=function(){this.started&&(this.started=!1,this.eventListeners.forEach((function(e){return e.disconnect()})))},Object.defineProperty(e.prototype,"eventListeners",{get:function(){return Array.from(this.eventListenerMaps.values()).reduce((function(e,t){return e.concat(Array.from(t.values()))}),[])},enumerable:!0,configurable:!0}),e.prototype.bindingConnected=function(e){this.fetchEventListenerForBinding(e).bindingConnected(e)},e.prototype.bindingDisconnected=function(e){this.fetchEventListenerForBinding(e).bindingDisconnected(e)},e.prototype.handleError=function(e,t,n){void 0===n&&(n={}),this.application.handleError(e,"Error "+t,n)},e.prototype.fetchEventListenerForBinding=function(e){var t=e.eventTarget,n=e.eventName;return this.fetchEventListener(t,n)},e.prototype.fetchEventListener=function(e,t){var n=this.fetchEventListenerMapForEventTarget(e),r=n.get(t);return r||(r=this.createEventListener(e,t),n.set(t,r)),r},e.prototype.createEventListener=function(e,t){var n=new r(e,t);return this.started&&n.connect(),n},e.prototype.fetchEventListenerMapForEventTarget=function(e){var t=this.eventListenerMaps.get(e);return t||(t=new Map,this.eventListenerMaps.set(e,t)),t},e}(),i=/^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;var s=function(){function e(e,t,n){this.element=e,this.index=t,this.eventTarget=n.eventTarget||e,this.eventName=n.eventName||function(e){var t=e.tagName.toLowerCase();if(t in c)return c[t](e)}(e)||a("missing event name"),this.identifier=n.identifier||a("missing identifier"),this.methodName=n.methodName||a("missing method name")}return e.forToken=function(e){return new this(e.element,e.index,(n=e.content,r=n.trim().match(i)||[],{eventTarget:(t=r[4],"window"==t?window:"document"==t?document:void 0),eventName:r[2],identifier:r[5],methodName:r[7]}));var t,n,r},e.prototype.toString=function(){var e=this.eventTargetName?"@"+this.eventTargetName:"";return""+this.eventName+e+"->"+this.identifier+"#"+this.methodName},Object.defineProperty(e.prototype,"eventTargetName",{get:function(){return(e=this.eventTarget)==window?"window":e==document?"document":void 0;var e},enumerable:!0,configurable:!0}),e}(),c={a:function(e){return"click"},button:function(e){return"click"},form:function(e){return"submit"},input:function(e){return"submit"==e.getAttribute("type")?"click":"change"},select:function(e){return"change"},textarea:function(e){return"change"}};function a(e){throw new Error(e)}var l=function(){function e(e,t){this.context=e,this.action=t}return Object.defineProperty(e.prototype,"index",{get:function(){return this.action.index},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"eventTarget",{get:function(){return this.action.eventTarget},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"identifier",{get:function(){return this.context.identifier},enumerable:!0,configurable:!0}),e.prototype.handleEvent=function(e){this.willBeInvokedByEvent(e)&&this.invokeWithEvent(e)},Object.defineProperty(e.prototype,"eventName",{get:function(){return this.action.eventName},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"method",{get:function(){var e=this.controller[this.methodName];if("function"==typeof e)return e;throw new Error('Action "'+this.action+'" references undefined method "'+this.methodName+'"')},enumerable:!0,configurable:!0}),e.prototype.invokeWithEvent=function(e){try{this.method.call(this.controller,e)}catch(n){var t={identifier:this.identifier,controller:this.controller,element:this.element,index:this.index,event:e};this.context.handleError(n,'invoking action "'+this.action+'"',t)}},e.prototype.willBeInvokedByEvent=function(e){var t=e.target;return this.element===t||(!(t instanceof Element&&this.element.contains(t))||this.scope.containsElement(t))},Object.defineProperty(e.prototype,"controller",{get:function(){return this.context.controller},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"methodName",{get:function(){return this.action.methodName},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"element",{get:function(){return this.scope.element},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"scope",{get:function(){return this.context.scope},enumerable:!0,configurable:!0}),e}(),u=function(){function e(e,t){var n=this;this.element=e,this.started=!1,this.delegate=t,this.elements=new Set,this.mutationObserver=new MutationObserver((function(e){return n.processMutations(e)}))}return e.prototype.start=function(){this.started||(this.started=!0,this.mutationObserver.observe(this.element,{attributes:!0,childList:!0,subtree:!0}),this.refresh())},e.prototype.stop=function(){this.started&&(this.mutationObserver.takeRecords(),this.mutationObserver.disconnect(),this.started=!1)},e.prototype.refresh=function(){if(this.started){for(var e=new Set(this.matchElementsInTree()),t=0,n=Array.from(this.elements);t0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=97?o===i.toUpperCase():r<=90&&n>=97&&i===o.toUpperCase())}function z(e,t,n){e[n]!==t[n]&&(e[n]=t[n],e[n]?e.setAttribute(n,""):e.removeAttribute(n))}var W={OPTION:function(e,t){var n=e.parentNode;if(n){var r=n.nodeName.toUpperCase();"OPTGROUP"===r&&(r=(n=n.parentNode)&&n.nodeName.toUpperCase()),"SELECT"!==r||n.hasAttribute("multiple")||(e.hasAttribute("selected")&&!t.selected&&(e.setAttribute("selected","selected"),e.removeAttribute("selected")),n.selectedIndex=-1)}z(e,t,"selected")},INPUT:function(e,t){z(e,t,"checked"),z(e,t,"disabled"),e.value!==t.value&&(e.value=t.value),t.hasAttribute("value")||e.removeAttribute("value")},TEXTAREA:function(e,t){var n=t.value;e.value!==n&&(e.value=n);var r=e.firstChild;if(r){var o=r.nodeValue;if(o==n||!n&&o==e.placeholder)return;r.nodeValue=n}},SELECT:function(e,t){if(!t.hasAttribute("multiple")){for(var n,r,o=-1,i=0,s=e.firstChild;s;)if("OPTGROUP"===(r=s.nodeName&&s.nodeName.toUpperCase()))s=(n=s).firstChild;else{if("OPTION"===r){if(s.hasAttribute("selected")){o=i;break}i++}!(s=s.nextSibling)&&n&&(s=n.nextSibling,n=null)}e.selectedIndex=o}}};function q(){}function K(e){if(e)return e.getAttribute&&e.getAttribute("id")||e.id}var H=function(e){return function(t,n,r){if(r||(r={}),"string"==typeof n)if("#document"===t.nodeName||"HTML"===t.nodeName||"BODY"===t.nodeName){var o=n;(n=B.createElement("html")).innerHTML=o}else n=U(n);var i=r.getNodeKey||K,s=r.onBeforeNodeAdded||q,c=r.onNodeAdded||q,a=r.onBeforeElUpdated||q,l=r.onElUpdated||q,u=r.onBeforeNodeDiscarded||q,f=r.onNodeDiscarded||q,d=r.onBeforeElChildrenUpdated||q,p=!0===r.childrenOnly,h=Object.create(null),m=[];function y(e){m.push(e)}function b(e,t,n){!1!==u(e)&&(t&&t.removeChild(e),f(e),function e(t,n){if(1===t.nodeType)for(var r=t.firstChild;r;){var o=void 0;n&&(o=i(r))?y(o):(f(r),r.firstChild&&e(r,n)),r=r.nextSibling}}(e,n))}function g(e){c(e);for(var t=e.firstChild;t;){var n=t.nextSibling,r=i(t);if(r){var o=h[r];o&&$(t,o)?(t.parentNode.replaceChild(o,t),v(o,t)):g(t)}else g(t);t=n}}function v(t,n,r){var o=i(n);if(o&&delete h[o],!r){if(!1===a(t,n))return;if(e(t,n),l(t),!1===d(t,n))return}"TEXTAREA"!==t.nodeName?function(e,t){var n,r,o,c,a,l=t.firstChild,u=e.firstChild;e:for(;l;){for(c=l.nextSibling,n=i(l);u;){if(o=u.nextSibling,l.isSameNode&&l.isSameNode(u)){l=c,u=o;continue e}r=i(u);var f=u.nodeType,d=void 0;if(f===l.nodeType&&(1===f?(n?n!==r&&((a=h[n])?o===a?d=!1:(e.insertBefore(a,u),r?y(r):b(u,e,!0),u=a):d=!1):r&&(d=!1),(d=!1!==d&&$(u,l))&&v(u,l)):3!==f&&8!=f||(d=!0,u.nodeValue!==l.nodeValue&&(u.nodeValue=l.nodeValue))),d){l=c,u=o;continue e}r?y(r):b(u,e,!0),u=o}if(n&&(a=h[n])&&$(a,l))e.appendChild(a),v(a,l);else{var p=s(l);!1!==p&&(p&&(l=p),l.actualize&&(l=l.actualize(e.ownerDocument||B)),e.appendChild(l),g(l))}l=c,u=o}!function(e,t,n){for(;t;){var r=t.nextSibling;(n=i(t))?y(n):b(t,e,!0),t=r}}(e,u,r);var m=W[e.nodeName];m&&m(e,t)}(t,n):W.TEXTAREA(t,n)}!function e(t){if(1===t.nodeType||11===t.nodeType)for(var n=t.firstChild;n;){var r=i(n);r&&(h[r]=n),e(n),n=n.nextSibling}}(t);var A,x,E=t,w=E.nodeType,O=n.nodeType;if(!p)if(1===w)1===O?$(t,n)||(f(t),E=function(e,t){for(var n=e.firstChild;n;){var r=n.nextSibling;t.appendChild(n),n=r}return t}(t,(A=n.nodeName,(x=n.namespaceURI)&&"http://www.w3.org/1999/xhtml"!==x?B.createElementNS(x,A):B.createElement(A)))):E=n;else if(3===w||8===w){if(O===w)return E.nodeValue!==n.nodeValue&&(E.nodeValue=n.nodeValue),E;E=n}if(E===n)f(t);else{if(n.isSameNode&&n.isSameNode(E))return;if(v(E,n,p),m)for(var _=0,S=m.length;_=0;c--)r=(n=s[c]).name,o=n.namespaceURI,i=n.value,o?(r=n.localName||r,e.getAttributeNS(o,r)!==i&&("xmlns"===n.prefix&&(r=n.name),e.setAttributeNS(o,r,i))):e.getAttribute(r)!==i&&e.setAttribute(r,i);for(var a=e.attributes,l=a.length-1;l>=0;l--)r=(n=a[l]).name,(o=n.namespaceURI)?(r=n.localName||r,t.hasAttributeNS(o,r)||e.removeAttributeNS(o,r)):t.hasAttribute(r)||e.removeAttribute(r)}}));const G={INPUT:!0,TEXTAREA:!0,SELECT:!0},Q={INPUT:!0,TEXTAREA:!0,OPTION:!0},J={"datetime-local":!0,"select-multiple":!0,"select-one":!0,color:!0,date:!0,datetime:!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,textarea:!0,time:!0,url:!0,week:!0},X=e=>{const t=(e&&e.nodeType===Node.ELEMENT_NODE?e:document.querySelector(e))||te;t&&t.focus&&t.focus()},Y=(e,t,n={})=>{const r=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e.dispatchEvent(r),window.jQuery&&window.jQuery(e).trigger(t,n)},Z=e=>Array(e).flat(),ee=(e,t)=>{Array.from(e.selectAll?e.element:[e.element]).forEach(t)};let te;const ne=[(e,t,n)=>!(!Q[t.tagName]&&t.isEqualNode(n)),(e,t,n)=>{const{permanentAttributeName:r}=e;if(!r)return!0;const o=t.closest(`[${r}]`);if(!o&&(G[(i=t).tagName]&&J[i.type])&&t===te){const e={value:!0};return Array.from(n.attributes).forEach(n=>{e[n.name]||t.setAttribute(n.name,n.value)}),!1}var i;return!o}],re=[],oe=e=>(t,n)=>!ne.map(r=>"function"!=typeof r||r(e,t,n)).includes(!1),ie=e=>t=>{re.forEach(n=>{"function"==typeof n&&n(e,t)})},se={append:e=>{ee(e,t=>{Y(t,"cable-ready:before-append",e);const{html:n,focusSelector:r}=e;e.cancel||(t.insertAdjacentHTML("beforeend",n),X(r)),Y(t,"cable-ready:after-append",e)})},graft:e=>{ee(e,t=>{Y(t,"cable-ready:before-graft",e);const{parent:n,focusSelector:r}=e,o=document.querySelector(n);!e.cancel&&o&&(o.appendChild(t),X(r)),Y(t,"cable-ready:after-graft",e)})},innerHtml:e=>{ee(e,t=>{Y(t,"cable-ready:before-inner-html",e);const{html:n,focusSelector:r}=e;e.cancel||(t.innerHTML=n,X(r)),Y(t,"cable-ready:after-inner-html",e)})},insertAdjacentHtml:e=>{ee(e,t=>{Y(t,"cable-ready:before-insert-adjacent-html",e);const{html:n,position:r,focusSelector:o}=e;e.cancel||(t.insertAdjacentHTML(r||"beforeend",n),X(o)),Y(t,"cable-ready:after-insert-adjacent-html",e)})},insertAdjacentText:e=>{ee(e,t=>{Y(t,"cable-ready:before-insert-adjacent-text",e);const{text:n,position:r,focusSelector:o}=e;e.cancel||(t.insertAdjacentText(r||"beforeend",n),X(o)),Y(t,"cable-ready:after-insert-adjacent-text",e)})},morph:e=>{ee(e,t=>{const{html:n}=e,r=document.createElement("template");r.innerHTML=String(n).trim(),e.content=r.content,Y(t,"cable-ready:before-morph",e);const{childrenOnly:o,focusSelector:i}=e,s=t.parentElement,c=Array.from(s.children).indexOf(t);e.cancel||(H(t,o?r.content:r.innerHTML,{childrenOnly:!!o,onBeforeElUpdated:oe(e),onElUpdated:ie(e)}),X(i)),Y(s.children[c],"cable-ready:after-morph",e)})},outerHtml:e=>{ee(e,t=>{Y(t,"cable-ready:before-outer-html",e);const{html:n,focusSelector:r}=e,o=t.parentElement,i=Array.from(o.children).indexOf(t);e.cancel||(t.outerHTML=n,X(r)),Y(o.children[i],"cable-ready:after-outer-html",e)})},prepend:e=>{ee(e,t=>{Y(t,"cable-ready:before-prepend",e);const{html:n,focusSelector:r}=e;e.cancel||(t.insertAdjacentHTML("afterbegin",n),X(r)),Y(t,"cable-ready:after-prepend",e)})},remove:e=>{ee(e,t=>{Y(t,"cable-ready:before-remove",e);const{focusSelector:n}=e;e.cancel||(t.remove(),X(n)),Y(document,"cable-ready:after-remove",e)})},replace:e=>{ee(e,t=>{Y(t,"cable-ready:before-replace",e);const{html:n,focusSelector:r}=e,o=t.parentElement,i=Array.from(o.children).indexOf(t);e.cancel||(t.outerHTML=n,X(r)),Y(o.children[i],"cable-ready:after-replace",e)})},textContent:e=>{ee(e,t=>{Y(t,"cable-ready:before-text-content",e);const{text:n,focusSelector:r}=e;e.cancel||(t.textContent=n,X(r)),Y(t,"cable-ready:after-text-content",e)})},addCssClass:e=>{ee(e,t=>{Y(t,"cable-ready:before-add-css-class",e);const{name:n}=e;e.cancel||t.classList.add(...Z(n)),Y(t,"cable-ready:after-add-css-class",e)})},removeAttribute:e=>{ee(e,t=>{Y(t,"cable-ready:before-remove-attribute",e);const{name:n}=e;e.cancel||t.removeAttribute(n),Y(t,"cable-ready:after-remove-attribute",e)})},removeCssClass:e=>{ee(e,t=>{Y(t,"cable-ready:before-remove-css-class",e);const{name:n}=e;e.cancel||t.classList.remove(...Z(n)),Y(t,"cable-ready:after-remove-css-class",e)})},setAttribute:e=>{ee(e,t=>{Y(t,"cable-ready:before-set-attribute",e);const{name:n,value:r}=e;e.cancel||t.setAttribute(n,r),Y(t,"cable-ready:after-set-attribute",e)})},setDatasetProperty:e=>{ee(e,t=>{Y(t,"cable-ready:before-set-dataset-property",e);const{name:n,value:r}=e;e.cancel||(t.dataset[n]=r),Y(t,"cable-ready:after-set-dataset-property",e)})},setProperty:e=>{ee(e,t=>{Y(t,"cable-ready:before-set-property",e);const{name:n,value:r}=e;!e.cancel&&n in t&&(t[n]=r),Y(t,"cable-ready:after-set-property",e)})},setStyle:e=>{ee(e,t=>{Y(t,"cable-ready:before-set-style",e);const{name:n,value:r}=e;e.cancel||(t.style[n]=r),Y(t,"cable-ready:after-set-style",e)})},setStyles:e=>{ee(e,t=>{Y(t,"cable-ready:before-set-styles",e);const{styles:n}=e;for(let[r,o]of Object.entries(n))e.cancel||(t.style[r]=o);Y(t,"cable-ready:after-set-styles",e)})},setValue:e=>{ee(e,t=>{Y(t,"cable-ready:before-set-value",e);const{value:n}=e;e.cancel||(t.value=n),Y(t,"cable-ready:after-set-value",e)})},dispatchEvent:e=>{ee(e,t=>{const{name:n,detail:r}=e;Y(t,n,r)})},clearStorage:e=>{Y(document,"cable-ready:before-clear-storage",e);const{type:t}=e,n="session"===t?sessionStorage:localStorage;e.cancel||n.clear(),Y(document,"cable-ready:after-clear-storage",e)},go:e=>{Y(window,"cable-ready:before-go",e);const{delta:t}=e;e.cancel||history.go(t),Y(window,"cable-ready:after-go",e)},pushState:e=>{Y(window,"cable-ready:before-push-state",e);const{state:t,title:n,url:r}=e;e.cancel||history.pushState(t||{},n||"",r),Y(window,"cable-ready:after-push-state",e)},removeStorageItem:e=>{Y(document,"cable-ready:before-remove-storage-item",e);const{key:t,type:n}=e,r="session"===n?sessionStorage:localStorage;e.cancel||r.removeItem(t),Y(document,"cable-ready:after-remove-storage-item",e)},replaceState:e=>{Y(window,"cable-ready:before-replace-state",e);const{state:t,title:n,url:r}=e;e.cancel||history.replaceState(t||{},n||"",r),Y(window,"cable-ready:after-replace-state",e)},scrollIntoView:e=>{const{element:t}=e;Y(t,"cable-ready:before-scroll-into-view",e),e.cancel||t.scrollIntoView(e),Y(t,"cable-ready:after-scroll-into-view",e)},setCookie:e=>{Y(document,"cable-ready:before-set-cookie",e);const{cookie:t}=e;e.cancel||(document.cookie=t),Y(document,"cable-ready:after-set-cookie",e)},setFocus:e=>{const{element:t}=e;Y(t,"cable-ready:before-set-focus",e),e.cancel||X(t),Y(t,"cable-ready:after-set-focus",e)},setStorageItem:e=>{Y(document,"cable-ready:before-set-storage-item",e);const{key:t,value:n,type:r}=e,o="session"===r?sessionStorage:localStorage;e.cancel||o.setItem(t,n),Y(document,"cable-ready:after-set-storage-item",e)},consoleLog:e=>{const{message:t,level:n}=e;n&&["warn","info","error"].includes(n)?console[n](t):console.log(t)},notification:e=>{Y(document,"cable-ready:before-notification",e);const{title:t,options:n}=e;e.cancel||Notification.requestPermission().then(r=>{e.permission=r,"granted"===r&&new Notification(t||"",n)}),Y(document,"cable-ready:after-notification",e)},playSound:e=>{Y(document,"cable-ready:before-play-sound",e);const{src:t}=e;if(e.cancel)Y(document,"cable-ready:after-play-sound",e);else{const n=()=>{document.audio.removeEventListener("canplaythrough",n),document.audio.play()},r=()=>{document.audio.removeEventListener("ended",n),Y(document,"cable-ready:after-play-sound",e)};document.audio.addEventListener("canplaythrough",n),document.audio.addEventListener("ended",r),document.audio.src=t,document.audio.play()}}},ce=(e,t={emitMissingElementWarnings:!0})=>{for(let r in e)if(e.hasOwnProperty(r)){const o=e[r];for(let e=0;e{document.body.removeEventListener("click",e),document.body.removeEventListener("touchstart",e),document.audio.play().then(()=>{}).catch(()=>{})};document.body.addEventListener("click",e),document.body.addEventListener("touchstart",e)}}));var ae=ce;const le={reflexAttribute:"data-reflex",reflexPermanentAttribute:"data-reflex-permanent",reflexRootAttribute:"data-reflex-root",reflexDatasetAttribute:"data-reflex-dataset"};var ue=n(0);function fe(){return function e(t,n=0){return t?n>3?null:function(e){if(e)try{return"Consumer"===e.constructor.name&&e.connect&&e.disconnect&&e.send}catch(e){}return!1}(t)?t:Object.values(t).map(t=>e(t,n+1)).find(e=>e):null}(window)||Object(ue.createConsumer)()}const de=(e,t=!0)=>"string"!=typeof e?"":(e=e.replace(/[\s_](.)/g,e=>e.toUpperCase()).replace(/[\s_]/g,"").replace(/^(.)/,e=>e.toLowerCase()),t&&(e=e.substr(0,1).toUpperCase()+e.substr(1)),e),pe=(e,t)=>{document.dispatchEvent(new CustomEvent(e,{bubbles:!0,cancelable:!1,detail:t})),window.jQuery&&window.jQuery(document).trigger(e,t)},he=e=>{if(""!==e.id)return"//*[@id='"+e.id+"']";if(e===document.body)return"/html/body";let t=0;const n=e.parentNode.childNodes;for(var r=0;rdocument.evaluate(e,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;let ye=!1;var be={get enabled(){return ye},get disabled(){return!ye},get value(){return ye},set(e){ye=!!e},set debug(e){ye=!!e}};const ge=(e,t,n,r)=>{if(!n||!n.reflexData[r])return;const o=n.reflexController[r],i=n.reflexData[r].target,s=i.split("#")[1],c=o[["before","after","finalize"].includes(e)?`${e}${de(s)}`:`${de(s,!1)}${de(e)}`],a=o[["before","after","finalize"].includes(e)?`${e}Reflex`:`reflex${de(e)}`];"function"==typeof c&&c.call(o,t,i,n.reflexError[r],r),"function"==typeof a&&a.call(o,t,i,n.reflexError[r],r),reflexes[r]&&e===reflexes[r].finalStage&&(Reflect.deleteProperty(n.reflexController,r),Reflect.deleteProperty(n.reflexData,r),Reflect.deleteProperty(n.reflexError,r),Reflect.deleteProperty(reflexes,r))};document.addEventListener("stimulus-reflex:before",e=>ge("before",e.detail.element,e.detail.controller.element,e.detail.reflexId),!0),document.addEventListener("stimulus-reflex:success",e=>{ge("success",e.detail.element,e.detail.controller.element,e.detail.reflexId),ve("after",e.detail.element,e.detail.controller.element,e.detail.reflexId)},!0),document.addEventListener("stimulus-reflex:nothing",e=>{ge("success",e.detail.element,e.detail.controller.element,e.detail.reflexId),ve("after",e.detail.element,e.detail.controller.element,e.detail.reflexId)},!0),document.addEventListener("stimulus-reflex:error",e=>{ge("error",e.detail.element,e.detail.controller.element,e.detail.reflexId),ve("after",e.detail.element,e.detail.controller.element,e.detail.reflexId)},!0),document.addEventListener("stimulus-reflex:halted",e=>ge("halted",e.detail.element,e.detail.controller.element,e.detail.reflexId),!0),document.addEventListener("stimulus-reflex:after",e=>ge("after",e.detail.element,e.detail.controller.element,e.detail.reflexId),!0),document.addEventListener("stimulus-reflex:finalize",e=>ge("finalize",e.detail.element,e.detail.controller.element,e.detail.reflexId),!0);const ve=(e,t,n,r)=>{if(!n)return void(be.enabled&&!reflexes[r].warned&&(console.warn(`StimulusReflex was not able execute callbacks or emit events for "${e}" or later life-cycle stages for this Reflex. The StimulusReflex Controller Element is no longer present in the DOM. Could you move the StimulusReflex Controller to an element higher in your DOM?`),reflexes[r].warned=!0));if(!n.reflexController||n.reflexController&&!n.reflexController[r])return void(be.enabled&&!reflexes[r].warned&&(console.warn(`StimulusReflex detected that the StimulusReflex Controller responsible for this Reflex has been replaced with a new instance. Callbacks and events for "${e}" or later life-cycle stages cannot be executed.`),reflexes[r].warned=!0));const{target:o}=n.reflexData[r]||{},i=`stimulus-reflex:${e}`,s={reflex:o,controller:n.reflexController[r]||{},reflexId:r,element:t};n.dispatchEvent(new CustomEvent(i,{bubbles:!0,cancelable:!1,detail:s})),window.jQuery&&window.jQuery(n).trigger(i,s)},Ae=(e=[])=>{const t=e.filter(e=>e&&String(e).length).map(e=>e.trim()).join(" ").trim();return t.length?t:null},xe=e=>e&&e.length?e.split(" ").filter(e=>e.trim().length):[],Ee=e=>{let t=Array.from(e.attributes).reduce((e,t)=>(e[t.name]=t.value,e),{});if(t.checked=!!e.checked,t.selected=!!e.selected,t.tag_name=e.tagName,e.tagName.match(/select/i)||(e=>!!["checkbox","radio"].includes(e.type)&&document.querySelectorAll(`input[type="${e.type}"][name="${e.name}"]`).length>1)(e)){const n=(e=>Array.from(e.querySelectorAll("option:checked")).concat(Array.from(document.querySelectorAll(`input[type="${e.type}"][name="${e.name}"]`)).filter(e=>e.checked)).map(e=>e.value))(e);t.values=n,t.value=n.join(",")}else t.value=e.value;return t},we=e=>{let t={};return e&&e.attributes&&Array.from(e.attributes).forEach(e=>{e.name.startsWith("data-")&&(t[e.name]=e.value)}),t},Oe=(e,t)=>xe(t.getAttribute(e.schema.controllerAttribute)).reduce((n,r)=>{const o=e.getControllerForElementAndIdentifier(t,r);return o&&o.StimulusReflex&&n.push(o),n},[]);var _e={request:function(e,t,n,r,o,i){reflexes[e].timestamp=new Date,console.log(`↑ stimulus ↑ ${t}`,{reflexId:e,args:n,controller:r,element:o,controllerElement:i})},success:function(e){const{detail:t}=e||{},{selector:n}=t||{},{reflexId:r,target:o,morph:i,serverMessage:s}=t.stimulusReflex||{},c=reflexes[r],a=c.totalOperations>1?` ${c.completedOperations}/${c.totalOperations}`:"",l=c.timestamp?`in ${new Date-c.timestamp}ms`:"CLONED",u=e.type.split(":")[1].split("-").slice(1).join("_"),f=s&&"halted"===s.subject||!1;console.log(`↓ reflex ↓ ${o} → ${n||"∞"}${a} ${l}`,{reflexId:r,morph:i,operation:u,halted:f})},error:function(e){const{detail:t}=e||{},{reflexId:n,target:r,serverMessage:o}=t.stimulusReflex||{},i=reflexes[n],s=i.timestamp?`in ${new Date-i.timestamp}ms`:"CLONED",c=t.stimulusReflex;console.log(`↓ reflex ↓ ${r} ${s} %cERROR: ${o.body}`,"color: #f00;",{reflexId:n,payload:c})}};const Se=()=>{};let Ce,Te,Ne,Pe,Le=!1;window.reflexes={};const je=e=>{Object.assign(e,{isActionCableConnectionOpen(){return this.StimulusReflex.subscription.consumer.connection.isOpen()},stimulate(){const e=location.href,t=Array.from(arguments),n=t.shift()||"StimulusReflex::Reflex#default_reflex",r=this.element,o=t[0]&&t[0].nodeType===Node.ELEMENT_NODE?t.shift():r;if("number"===o.type&&o.validity&&o.validity.badInput)return void(be.enabled&&console.warn("Reflex aborted: invalid numeric input"));const i={};if(t[0]&&"object"==typeof t[0]&&Object.keys(t[0]).filter(e=>["attrs","selectors","reflexId","resolveLate","serializeForm"].includes(e)).length){const e=t.shift();Object.keys(e).forEach(t=>i[t]=e[t])}const s=i.attrs||Ee(o),c=i.reflexId||(()=>{const e=window.crypto||window.msCrypto;return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,t=>(t^e.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16))})();let a=i.selectors||Be(o);"string"==typeof a&&(a=[a]);const l=i.resolveLate||!1,u=Ce.schema.reflexDatasetAttribute,f=((e,t=null)=>{let n=we(e)||{};const r=t&&e.attributes[t];if(r&&"combined"===r.value){let t=e.parentElement;for(;t;)n={...we(t),...n},t=t.parentElement}return n})(o,u),d=he(r),p=he(o),h={target:n,args:t,url:e,attrs:s,dataset:f,selectors:a,reflexId:c,resolveLate:l,xpathController:d,xpathElement:p,reflexController:this.identifier,permanentAttributeName:Ce.schema.reflexPermanentAttribute},{subscription:m}=this.StimulusReflex;if(!this.isActionCableConnectionOpen())throw"The ActionCable connection is not open! `this.isActionCableConnectionOpen()` must return true before calling `this.stimulate()`";if(!Le)throw"The ActionCable channel subscription for StimulusReflex was rejected.";r.reflexController=r.reflexController||{},r.reflexData=r.reflexData||{},r.reflexError=r.reflexError||{},r.reflexController[c]=this,r.reflexData[c]=h,ve("before",o,r,c),setTimeout(()=>{const{params:e}=r.reflexData[c]||{},t=!1===i.serializeForm?"":((e,t={})=>{if(!e)return"";const n=t.w||window,{element:r}=t,o=new n.FormData(e),i=Array.from(o,e=>e.map(encodeURIComponent).join("=")),s=e.querySelector("input[type=submit]");return r&&r.name&&"INPUT"===r.nodeName&&"submit"===r.type?i.push(`${encodeURIComponent(r.name)}=${encodeURIComponent(r.value)}`):s&&s.name&&i.push(`${encodeURIComponent(s.name)}=${encodeURIComponent(s.value)}`),Array.from(new Set(i)).join("&")})(o.closest("form"),{element:o});r.reflexData[c]={...h,params:e,formData:t},m.send(r.reflexData[c])});const y=ke(h);return be.enabled&&_e.request(c,n,t,this.context.scope.identifier,o,r),y},__perform(e){let t,n=e.target;for(;n&&!t;)t=n.getAttribute(Ce.schema.reflexAttribute),t&&t.trim().length||(n=n.parentElement);const r=xe(t).find(t=>t.split("->")[0]===e.type);r&&(e.preventDefault(),e.stopPropagation(),this.stimulate(r.split("->")[1],n))}})},ke=e=>{const{reflexId:t}=e;reflexes[t]={finalStage:"finalize"};const n=new Promise((n,r)=>{reflexes[t].promise={resolve:n,reject:r,data:e}});return n.reflexId=t,be.enabled&&n.catch(Se),n},Re=(e,t={})=>{e.StimulusReflex={...t,channel:"StimulusReflex::Channel"},(e=>{Te=Te||fe();const{channel:t}=e.StimulusReflex,n={channel:t,...Ne},r=JSON.stringify(n);e.StimulusReflex.subscription=Te.subscriptions.findAll(r)[0]||Te.subscriptions.create(n,{received:e=>{if(!e.cableReady)return;let t={};for(let n in e.operations)if(e.operations.hasOwnProperty(n)){for(let r=e.operations[n].length-1;r>=0;r--)(e.operations[n][r].stimulusReflex||e.operations[n][r].detail&&e.operations[n][r].detail.stimulusReflex)&&(t[n]=t[n]||[],t[n].push(e.operations[n][r]),e.operations[n].splice(r,1));e.operations[n].length||Reflect.deleteProperty(e.operations,n)}let n,r=0;if([t.dispatchEvent,t.morph,t.innerHtml].forEach(e=>{if(e&&e.length){const t=Array.from(new Set(e.map(e=>e.detail?e.detail.stimulusReflex.url:e.stimulusReflex.url)));if(1!==t.length||t[0]!==location.href)return;r+=e.length,n||(n=e[0].detail?e[0].detail.stimulusReflex:e[0].stimulusReflex)}}),n){const{reflexId:e}=n;if(!reflexes[e]&&!Pe){const t=me(n.xpathController),r=me(n.xpathElement);t.reflexController=t.reflexController||{},t.reflexData=t.reflexData||{},t.reflexError=t.reflexError||{},t.reflexController[e]=Ce.getControllerForElementAndIdentifier(t,n.reflexController),t.reflexData[e]=n,ve("before",r,t,e),ke(n)}reflexes[e]&&(reflexes[e].totalOperations=r,reflexes[e].pendingOperations=r,reflexes[e].completedOperations=0,ae(t))}ae(e.operations)},connected:()=>{Le=!0,pe("stimulus-reflex:connected")},rejected:()=>{Le=!1,pe("stimulus-reflex:rejected"),be.enabled&&console.warn("Channel subscription was rejected.")},disconnected:e=>{Le=!1,pe("stimulus-reflex:disconnected",e)}})})(e),je(e)};class Ie extends V{constructor(...e){super(...e),Re(this)}}const Me=((e,t=250)=>{let n;return(...r)=>{clearTimeout(n),n=setTimeout(()=>{n=null,e(...r)},t)}})(()=>{document.querySelectorAll(`[${Ce.schema.reflexAttribute}]`).forEach(e=>{const t=xe(e.getAttribute(Ce.schema.controllerAttribute)),n=xe(e.getAttribute(Ce.schema.reflexAttribute)),r=xe(e.getAttribute(Ce.schema.actionAttribute));n.forEach(n=>{const o=Ve(n,((e,t)=>{let n=[];for(;t;)n=n.concat(Oe(e,t)),t=t.parentElement;return n})(Ce,e));let i;o?(i=`${n.split("->")[0]}->${o.identifier}#__perform`,r.includes(i)||r.push(i)):(i=`${n.split("->")[0]}->stimulus-reflex#__perform`,t.includes("stimulus-reflex")||t.push("stimulus-reflex"),r.includes(i)||r.push(i))});const o=Ae(t),i=Ae(r);o&&e.getAttribute(Ce.schema.controllerAttribute)!=o&&e.setAttribute(Ce.schema.controllerAttribute,o),i&&e.getAttribute(Ce.schema.actionAttribute)!=i&&e.setAttribute(Ce.schema.actionAttribute,i)}),pe("stimulus-reflex:ready")},20),Ve=(e,t)=>t.find(t=>{if(t.identifier)return(e=>{const t=e.match(/(?:.*->)?(.*?)(?:Reflex)?#/);return t?t[1]:""})(e).toLowerCase()===t.identifier.toLowerCase()})||t[0],Be=e=>{let t=[];for(;0===t.length&&e;){const n=e.getAttribute(Ce.schema.reflexRootAttribute);if(n){0===n.length&&e.id&&(n=`#${e.id}`);const r=n.split(",").filter(e=>e.trim().length);0===r.length&&console.error(`No value found for ${Ce.schema.reflexRootAttribute}. Add an #id to the element or provide a value for ${Ce.schema.reflexRootAttribute}.`,e),t=t.concat(r.filter(e=>document.querySelector(e)))}e=e.parentElement?e.parentElement.closest(`[${Ce.schema.reflexRootAttribute}]`):null}return t};if(!document.stimulusReflexInitialized){document.stimulusReflexInitialized=!0,window.addEventListener("load",()=>{Me(),new MutationObserver(Me).observe(document.documentElement,{attributes:!0,childList:!0,subtree:!0})});const e=e=>{const{stimulusReflex:t}=e.detail||{};if(!t)return;const{reflexId:n,xpathElement:r,xpathController:o}=t,i=me(o),s=me(r),c=reflexes[n],a=c.promise;c.pendingOperations--,c.pendingOperations>0||(t.resolveLate||setTimeout(()=>a.resolve({element:s,event:e,data:a.data})),setTimeout(()=>ve("success",s,i,n)))};document.addEventListener("cable-ready:before-inner-html",e),document.addEventListener("cable-ready:before-morph",e);const t=e=>{const{stimulusReflex:t}=e.detail||{};if(!t)return;const{reflexId:n,xpathElement:r,xpathController:o}=t,i=me(o),s=me(r),c=reflexes[n],a=c.promise;c.completedOperations++,be.enabled&&_e.success(e),c.completedOperationsa.resolve({element:s,event:e,data:a.data})),setTimeout(()=>ve("finalize",s,i,n)))};document.addEventListener("cable-ready:after-inner-html",t),document.addEventListener("cable-ready:after-morph",t),document.addEventListener("stimulus-reflex:server-message",e=>{const{reflexId:t,serverMessage:n,xpathController:r,xpathElement:o}=e.detail.stimulusReflex||{},{subject:i,body:s}=n,c=me(r),a=me(o),l=reflexes[t].promise;c.reflexError=c.reflexError||{},c&&"error"===i&&(c.reflexError[t]=s),l["error"===i?"reject":"resolve"]({data:l.data,element:a,event:e,toString:()=>s}),reflexes[t].finalStage="halted"===i?"halted":"after",be.enabled&&_e["error"===i?"error":"success"](e),{error:!0,halted:!0,nothing:!0,success:!0}[i]&&ve(i,a,c,t)})}var De={initialize:(e,t={})=>{const{controller:n,consumer:r,debug:o,params:i,isolate:s}=t;Te=r,Ne=i,Pe=!!s,Ce=e,Ce.schema={...le,...e.schema},Ce.register("stimulus-reflex",n||Ie),be.set(!!o)},register:Re,get debug(){return be.value},set debug(e){be.set(!!e)}},Fe=function(e,t){return(Fe=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)}; +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t);var r=function(){function e(e,t){this.eventTarget=e,this.eventName=t,this.unorderedBindings=new Set}return e.prototype.connect=function(){this.eventTarget.addEventListener(this.eventName,this,!1)},e.prototype.disconnect=function(){this.eventTarget.removeEventListener(this.eventName,this,!1)},e.prototype.bindingConnected=function(e){this.unorderedBindings.add(e)},e.prototype.bindingDisconnected=function(e){this.unorderedBindings.delete(e)},e.prototype.handleEvent=function(e){for(var t=function(e){if("immediatePropagationStopped"in e)return e;var t=e.stopImmediatePropagation;return Object.assign(e,{immediatePropagationStopped:!1,stopImmediatePropagation:function(){this.immediatePropagationStopped=!0,t.call(this)}})}(e),n=0,r=this.bindings;nr?1:0}))},enumerable:!0,configurable:!0}),e}();var o=function(){function e(e){this.application=e,this.eventListenerMaps=new Map,this.started=!1}return e.prototype.start=function(){this.started||(this.started=!0,this.eventListeners.forEach((function(e){return e.connect()})))},e.prototype.stop=function(){this.started&&(this.started=!1,this.eventListeners.forEach((function(e){return e.disconnect()})))},Object.defineProperty(e.prototype,"eventListeners",{get:function(){return Array.from(this.eventListenerMaps.values()).reduce((function(e,t){return e.concat(Array.from(t.values()))}),[])},enumerable:!0,configurable:!0}),e.prototype.bindingConnected=function(e){this.fetchEventListenerForBinding(e).bindingConnected(e)},e.prototype.bindingDisconnected=function(e){this.fetchEventListenerForBinding(e).bindingDisconnected(e)},e.prototype.handleError=function(e,t,n){void 0===n&&(n={}),this.application.handleError(e,"Error "+t,n)},e.prototype.fetchEventListenerForBinding=function(e){var t=e.eventTarget,n=e.eventName;return this.fetchEventListener(t,n)},e.prototype.fetchEventListener=function(e,t){var n=this.fetchEventListenerMapForEventTarget(e),r=n.get(t);return r||(r=this.createEventListener(e,t),n.set(t,r)),r},e.prototype.createEventListener=function(e,t){var n=new r(e,t);return this.started&&n.connect(),n},e.prototype.fetchEventListenerMapForEventTarget=function(e){var t=this.eventListenerMaps.get(e);return t||(t=new Map,this.eventListenerMaps.set(e,t)),t},e}(),i=/^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;var s=function(){function e(e,t,n){this.element=e,this.index=t,this.eventTarget=n.eventTarget||e,this.eventName=n.eventName||function(e){var t=e.tagName.toLowerCase();if(t in a)return a[t](e)}(e)||l("missing event name"),this.identifier=n.identifier||l("missing identifier"),this.methodName=n.methodName||l("missing method name")}return e.forToken=function(e){return new this(e.element,e.index,(n=e.content,r=n.trim().match(i)||[],{eventTarget:(t=r[4],"window"==t?window:"document"==t?document:void 0),eventName:r[2],identifier:r[5],methodName:r[7]}));var t,n,r},e.prototype.toString=function(){var e=this.eventTargetName?"@"+this.eventTargetName:"";return""+this.eventName+e+"->"+this.identifier+"#"+this.methodName},Object.defineProperty(e.prototype,"eventTargetName",{get:function(){return(e=this.eventTarget)==window?"window":e==document?"document":void 0;var e},enumerable:!0,configurable:!0}),e}(),a={a:function(e){return"click"},button:function(e){return"click"},form:function(e){return"submit"},input:function(e){return"submit"==e.getAttribute("type")?"click":"change"},select:function(e){return"change"},textarea:function(e){return"change"}};function l(e){throw new Error(e)}var c=function(){function e(e,t){this.context=e,this.action=t}return Object.defineProperty(e.prototype,"index",{get:function(){return this.action.index},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"eventTarget",{get:function(){return this.action.eventTarget},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"identifier",{get:function(){return this.context.identifier},enumerable:!0,configurable:!0}),e.prototype.handleEvent=function(e){this.willBeInvokedByEvent(e)&&this.invokeWithEvent(e)},Object.defineProperty(e.prototype,"eventName",{get:function(){return this.action.eventName},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"method",{get:function(){var e=this.controller[this.methodName];if("function"==typeof e)return e;throw new Error('Action "'+this.action+'" references undefined method "'+this.methodName+'"')},enumerable:!0,configurable:!0}),e.prototype.invokeWithEvent=function(e){try{this.method.call(this.controller,e)}catch(n){var t={identifier:this.identifier,controller:this.controller,element:this.element,index:this.index,event:e};this.context.handleError(n,'invoking action "'+this.action+'"',t)}},e.prototype.willBeInvokedByEvent=function(e){var t=e.target;return this.element===t||(!(t instanceof Element&&this.element.contains(t))||this.scope.containsElement(t))},Object.defineProperty(e.prototype,"controller",{get:function(){return this.context.controller},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"methodName",{get:function(){return this.action.methodName},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"element",{get:function(){return this.scope.element},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"scope",{get:function(){return this.context.scope},enumerable:!0,configurable:!0}),e}(),u=function(){function e(e,t){var n=this;this.element=e,this.started=!1,this.delegate=t,this.elements=new Set,this.mutationObserver=new MutationObserver((function(e){return n.processMutations(e)}))}return e.prototype.start=function(){this.started||(this.started=!0,this.mutationObserver.observe(this.element,{attributes:!0,childList:!0,subtree:!0}),this.refresh())},e.prototype.stop=function(){this.started&&(this.mutationObserver.takeRecords(),this.mutationObserver.disconnect(),this.started=!1)},e.prototype.refresh=function(){if(this.started){for(var e=new Set(this.matchElementsInTree()),t=0,n=Array.from(this.elements);t0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s}function ze(){for(var e=[],t=0;t=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}(r),i=o.next();!i.done;i=o.next()){var s=i.value;this._callEventListener(e,s)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}return!0},e.prototype.removeEventListener=function(e,t){this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter((function(e){return e!==t})))},e.prototype._debug=function(){for(var e=[],t=0;t"],e))},e.prototype._getNextDelay=function(){var e=this._options,t=e.reconnectionDelayGrowFactor,n=void 0===t?Ge.reconnectionDelayGrowFactor:t,r=e.minReconnectionDelay,o=void 0===r?Ge.minReconnectionDelay:r,i=e.maxReconnectionDelay,s=void 0===i?Ge.maxReconnectionDelay:i,c=0;return this._retryCount>0&&(c=o*Math.pow(n,this._retryCount-1))>s&&(c=s),this._debug("next delay",c),c},e.prototype._wait=function(){var e=this;return new Promise((function(t){setTimeout(t,e._getNextDelay())}))},e.prototype._getNextUrl=function(e){if("string"==typeof e)return Promise.resolve(e);if("function"==typeof e){var t=e();if("string"==typeof t)return Promise.resolve(t);if(t.then)return t}throw Error("Invalid URL")},e.prototype._connect=function(){var e=this;if(!this._connectLock&&this._shouldReconnect){this._connectLock=!0;var t=this._options,n=t.maxRetries,r=void 0===n?Ge.maxRetries:n,o=t.connectionTimeout,i=void 0===o?Ge.connectionTimeout:o,s=t.WebSocket,c=void 0===s?He():s;if(this._retryCount>=r)this._debug("max retries reached",this._retryCount,">=",r);else{if(this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),void 0===(a=c)||!a||2!==a.CLOSING)throw Error("No valid WebSocket class provided");var a;this._wait().then((function(){return e._getNextUrl(e._url)})).then((function(t){e._closeCalled||(e._debug("connect",{url:t,protocols:e._protocols}),e._ws=e._protocols?new c(t,e._protocols):new c(t),e._ws.binaryType=e._binaryType,e._connectLock=!1,e._addListeners(),e._connectTimeout=setTimeout((function(){return e._handleTimeout()}),i))}))}}},e.prototype._handleTimeout=function(){this._debug("timeout event"),this._handleError(new qe(Error("TIMEOUT"),this))},e.prototype._disconnect=function(e,t){if(void 0===e&&(e=1e3),this._clearTimeouts(),this._ws){this._removeListeners();try{this._ws.close(e,t),this._handleClose(new Ke(e,t,this))}catch(e){}}},e.prototype._acceptOpen=function(){this._debug("accept open"),this._retryCount=0},e.prototype._callEventListener=function(e,t){"handleEvent"in t?t.handleEvent(e):t(e)},e.prototype._removeListeners=function(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))},e.prototype._addListeners=function(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))},e.prototype._clearTimeouts=function(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)},e}();class Je{constructor(e,t={},n){this.consumer=e,this.identifier=JSON.stringify(t),function(e,t){if(null!=t)for(let n in t){const r=t[n];e[n]=r}}(this,n)}send(e){return this.consumer.send(e,this.identifier)}unsubscribe(){return this.consumer.subscriptions.remove(this)}}class Xe{constructor(e){this.consumer=e,this.subscriptions=[]}findAll(e){return this.subscriptions.filter(t=>t.identifier===e)}add(e){return this.subscriptions.push(e),this.consumer.connection.send(JSON.stringify({type:"subscribe",channelName:e.identifier})),e}create(e,t){const n="object"==typeof e?e:{channel:e},r=new Je(this.consumer,n,t);return this.add(r)}forget(e){return this.subscriptions=this.subscriptions.filter(t=>t!==e),e}remove(e){return this.forget(e),0==this.findAll(e.identifier).length&&this.consumer.connection.send(JSON.stringify({type:"unsubscribe",channelName:e.identifier})),e}notify(e,t,...n){let r;return r="string"==typeof e?this.findAll(e):[e],r.map(e=>"function"==typeof e[t]?e[t](...n):void 0)}notifyAll(e,...t){return this.subscriptions.map(n=>this.notify(n,e,...t))}}const Ye=R.start(),Ze=new class{constructor(e,t={}){this._url=e,this.subscriptions=new Xe(this),t={maxRetries:3,...t},this.connection=new Qe(e,[],t),this.connection.isOpen=function(){return this.readyState===Qe.OPEN},document.addEventListener("beforeunload",()=>{this.disconnect()}),this.connection.addEventListener("open",e=>{var t=this;let n=function(){t.subscriptions.notifyAll("connected")};t.subscriptions.subscriptions.map(e=>e.identifier).join().includes("StimulusReflex::Channel")?n():setTimeout(n,200)}),this.connection.addEventListener("message",e=>{let t=JSON.parse(e.data);"cookie"!==t.meta_type?this.subscriptions.notify(t.identifier,"received",t):document.cookie=`${t.key}=${t.value||""}; max-age=${t.max_age}; path=/`})}get url(){return function(e){if("function"==typeof e&&(e=e()),e&&!/^wss?:/i.test(e)){const t=document.createElement("a");return t.href=e,t.href=t.href,t.protocol=t.protocol.replace("http","ws"),t.href}return e}(this._url)}send(e,t){return e.identifier=t,this.connection.send(JSON.stringify(e))}connect(){return this.connection.open()}disconnect(){return this.connection.close()}}(`${"https:"==location.protocol?"wss":"ws"}://${window.location.host}/ws/sockpuppet-sync`,{debug:!1});De.initialize(Ye,{consumer:Ze})}]); +***************************************************************************** */function D(e,t){function n(){this.constructor=e}B(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function F(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s}function $(){for(var e=[],t=0;t=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}(r),i=o.next();!i.done;i=o.next()){var s=i.value;this._callEventListener(e,s)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}return!0},e.prototype.removeEventListener=function(e,t){this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter((function(e){return e!==t})))},e.prototype._debug=function(){for(var e=[],t=0;t"],e))},e.prototype._getNextDelay=function(){var e=this._options,t=e.reconnectionDelayGrowFactor,n=void 0===t?K.reconnectionDelayGrowFactor:t,r=e.minReconnectionDelay,o=void 0===r?K.minReconnectionDelay:r,i=e.maxReconnectionDelay,s=void 0===i?K.maxReconnectionDelay:i,a=0;return this._retryCount>0&&(a=o*Math.pow(n,this._retryCount-1))>s&&(a=s),this._debug("next delay",a),a},e.prototype._wait=function(){var e=this;return new Promise((function(t){setTimeout(t,e._getNextDelay())}))},e.prototype._getNextUrl=function(e){if("string"==typeof e)return Promise.resolve(e);if("function"==typeof e){var t=e();if("string"==typeof t)return Promise.resolve(t);if(t.then)return t}throw Error("Invalid URL")},e.prototype._connect=function(){var e=this;if(!this._connectLock&&this._shouldReconnect){this._connectLock=!0;var t=this._options,n=t.maxRetries,r=void 0===n?K.maxRetries:n,o=t.connectionTimeout,i=void 0===o?K.connectionTimeout:o,s=t.WebSocket,a=void 0===s?q():s;if(this._retryCount>=r)this._debug("max retries reached",this._retryCount,">=",r);else{if(this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),void 0===(l=a)||!l||2!==l.CLOSING)throw Error("No valid WebSocket class provided");var l;this._wait().then((function(){return e._getNextUrl(e._url)})).then((function(t){e._closeCalled||(e._debug("connect",{url:t,protocols:e._protocols}),e._ws=e._protocols?new a(t,e._protocols):new a(t),e._ws.binaryType=e._binaryType,e._connectLock=!1,e._addListeners(),e._connectTimeout=setTimeout((function(){return e._handleTimeout()}),i))}))}}},e.prototype._handleTimeout=function(){this._debug("timeout event"),this._handleError(new V(Error("TIMEOUT"),this))},e.prototype._disconnect=function(e,t){if(void 0===e&&(e=1e3),this._clearTimeouts(),this._ws){this._removeListeners();try{this._ws.close(e,t),this._handleClose(new z(e,t,this))}catch(e){}}},e.prototype._acceptOpen=function(){this._debug("accept open"),this._retryCount=0},e.prototype._callEventListener=function(e,t){"handleEvent"in t?t.handleEvent(e):t(e)},e.prototype._removeListeners=function(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))},e.prototype._addListeners=function(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))},e.prototype._clearTimeouts=function(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)},e}();const W={reflexAttribute:"data-reflex",reflexPermanentAttribute:"data-reflex-permanent",reflexRootAttribute:"data-reflex-root",reflexDatasetAttribute:"data-reflex-dataset",reflexDatasetAllAttribute:"data-reflex-dataset-all",reflexSerializeFormAttribute:"data-reflex-serialize-form"},G={INPUT:!0,TEXTAREA:!0,SELECT:!0},Q={INPUT:!0,TEXTAREA:!0,OPTION:!0},X={"datetime-local":!0,"select-multiple":!0,"select-one":!0,color:!0,date:!0,datetime:!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,textarea:!0,time:!0,url:!0,week:!0};let J;var Y={get element(){return J},set(e){J=e}};const Z=e=>{const t=(e&&e.nodeType===Node.ELEMENT_NODE?e:document.querySelector(e))||Y.element;t&&t.focus&&t.focus()},ee=(e,t,n={})=>{const r=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e.dispatchEvent(r),window.jQuery&&window.jQuery(e).trigger(t,n)},te=e=>Array(e).flat(),ne=(e,t)=>{Array.from(e.selectAll?e.element:[e.element]).forEach(t)},re=e=>e.split("").map((e,t)=>e.toUpperCase()===e?`${0!==t?"-":""}${e.toLowerCase()}`:e).join(""),oe=(e,t)=>!e.cancel&&(e.delay?setTimeout(t,e.delay):t(),!0),ie=(e,t,n)=>ee(e,`cable-ready:before-${re(t)}`,n),se=(e,t,n)=>ee(e,`cable-ready:after-${re(t)}`,n),ae=e=>(t,n)=>!ce.map(r=>"function"!=typeof r||r(e,t,n)).includes(!1),le=e=>t=>{ue.forEach(n=>{"function"==typeof n&&n(e,t)})},ce=[(e,t,n)=>!(!Q[t.tagName]&&t.isEqualNode(n)),(e,t,n)=>{const{permanentAttributeName:r}=e;if(!r)return!0;const o=t.closest(`[${r}]`);if(!o&&(G[(i=t).tagName]&&X[i.type])&&t===Y.element){const e={value:!0};return Array.from(n.attributes).forEach(n=>{e[n.name]||t.setAttribute(n.name,n.value)}),!1}var i;return!o}],ue=[];var de;var fe="undefined"==typeof document?void 0:document,pe=!!fe&&"content"in fe.createElement("template"),he=!!fe&&fe.createRange&&"createContextualFragment"in fe.createRange();function me(e){return e=e.trim(),pe?function(e){var t=fe.createElement("template");return t.innerHTML=e,t.content.childNodes[0]}(e):he?function(e){return de||(de=fe.createRange()).selectNode(fe.body),de.createContextualFragment(e).childNodes[0]}(e):function(e){var t=fe.createElement("body");return t.innerHTML=e,t.childNodes[0]}(e)}function ye(e,t){var n,r,o=e.nodeName,i=t.nodeName;return o===i||(n=o.charCodeAt(0),r=i.charCodeAt(0),n<=90&&r>=97?o===i.toUpperCase():r<=90&&n>=97&&i===o.toUpperCase())}function be(e,t,n){e[n]!==t[n]&&(e[n]=t[n],e[n]?e.setAttribute(n,""):e.removeAttribute(n))}var ge={OPTION:function(e,t){var n=e.parentNode;if(n){var r=n.nodeName.toUpperCase();"OPTGROUP"===r&&(r=(n=n.parentNode)&&n.nodeName.toUpperCase()),"SELECT"!==r||n.hasAttribute("multiple")||(e.hasAttribute("selected")&&!t.selected&&(e.setAttribute("selected","selected"),e.removeAttribute("selected")),n.selectedIndex=-1)}be(e,t,"selected")},INPUT:function(e,t){be(e,t,"checked"),be(e,t,"disabled"),e.value!==t.value&&(e.value=t.value),t.hasAttribute("value")||e.removeAttribute("value")},TEXTAREA:function(e,t){var n=t.value;e.value!==n&&(e.value=n);var r=e.firstChild;if(r){var o=r.nodeValue;if(o==n||!n&&o==e.placeholder)return;r.nodeValue=n}},SELECT:function(e,t){if(!t.hasAttribute("multiple")){for(var n,r,o=-1,i=0,s=e.firstChild;s;)if("OPTGROUP"===(r=s.nodeName&&s.nodeName.toUpperCase()))s=(n=s).firstChild;else{if("OPTION"===r){if(s.hasAttribute("selected")){o=i;break}i++}!(s=s.nextSibling)&&n&&(s=n.nextSibling,n=null)}e.selectedIndex=o}}};function ve(){}function xe(e){if(e)return e.getAttribute&&e.getAttribute("id")||e.id}var Ee=function(e){return function(t,n,r){if(r||(r={}),"string"==typeof n)if("#document"===t.nodeName||"HTML"===t.nodeName||"BODY"===t.nodeName){var o=n;(n=fe.createElement("html")).innerHTML=o}else n=me(n);var i=r.getNodeKey||xe,s=r.onBeforeNodeAdded||ve,a=r.onNodeAdded||ve,l=r.onBeforeElUpdated||ve,c=r.onElUpdated||ve,u=r.onBeforeNodeDiscarded||ve,d=r.onNodeDiscarded||ve,f=r.onBeforeElChildrenUpdated||ve,p=!0===r.childrenOnly,h=Object.create(null),m=[];function y(e){m.push(e)}function b(e,t,n){!1!==u(e)&&(t&&t.removeChild(e),d(e),function e(t,n){if(1===t.nodeType)for(var r=t.firstChild;r;){var o=void 0;n&&(o=i(r))?y(o):(d(r),r.firstChild&&e(r,n)),r=r.nextSibling}}(e,n))}function g(e){a(e);for(var t=e.firstChild;t;){var n=t.nextSibling,r=i(t);if(r){var o=h[r];o&&ye(t,o)?(t.parentNode.replaceChild(o,t),v(o,t)):g(t)}else g(t);t=n}}function v(t,n,r){var o=i(n);if(o&&delete h[o],!r){if(!1===l(t,n))return;if(e(t,n),c(t),!1===f(t,n))return}"TEXTAREA"!==t.nodeName?function(e,t){var n,r,o,a,l,c=t.firstChild,u=e.firstChild;e:for(;c;){for(a=c.nextSibling,n=i(c);u;){if(o=u.nextSibling,c.isSameNode&&c.isSameNode(u)){c=a,u=o;continue e}r=i(u);var d=u.nodeType,f=void 0;if(d===c.nodeType&&(1===d?(n?n!==r&&((l=h[n])?o===l?f=!1:(e.insertBefore(l,u),r?y(r):b(u,e,!0),u=l):f=!1):r&&(f=!1),(f=!1!==f&&ye(u,c))&&v(u,c)):3!==d&&8!=d||(f=!0,u.nodeValue!==c.nodeValue&&(u.nodeValue=c.nodeValue))),f){c=a,u=o;continue e}r?y(r):b(u,e,!0),u=o}if(n&&(l=h[n])&&ye(l,c))e.appendChild(l),v(l,c);else{var p=s(c);!1!==p&&(p&&(c=p),c.actualize&&(c=c.actualize(e.ownerDocument||fe)),e.appendChild(c),g(c))}c=a,u=o}!function(e,t,n){for(;t;){var r=t.nextSibling;(n=i(t))?y(n):b(t,e,!0),t=r}}(e,u,r);var m=ge[e.nodeName];m&&m(e,t)}(t,n):ge.TEXTAREA(t,n)}!function e(t){if(1===t.nodeType||11===t.nodeType)for(var n=t.firstChild;n;){var r=i(n);r&&(h[r]=n),e(n),n=n.nextSibling}}(t);var x,E,w=t,O=w.nodeType,A=n.nodeType;if(!p)if(1===O)1===A?ye(t,n)||(d(t),w=function(e,t){for(var n=e.firstChild;n;){var r=n.nextSibling;t.appendChild(n),n=r}return t}(t,(x=n.nodeName,(E=n.namespaceURI)&&"http://www.w3.org/1999/xhtml"!==E?fe.createElementNS(E,x):fe.createElement(x)))):w=n;else if(3===O||8===O){if(A===O)return w.nodeValue!==n.nodeValue&&(w.nodeValue=n.nodeValue),w;w=n}if(w===n)d(t);else{if(n.isSameNode&&n.isSameNode(w))return;if(v(w,n,p),m)for(var _=0,C=m.length;_=0;a--)r=(n=s[a]).name,o=n.namespaceURI,i=n.value,o?(r=n.localName||r,e.getAttributeNS(o,r)!==i&&("xmlns"===n.prefix&&(r=n.name),e.setAttributeNS(o,r,i))):e.getAttribute(r)!==i&&e.setAttribute(r,i);for(var l=e.attributes,c=l.length-1;c>=0;c--)r=(n=l[c]).name,(o=n.namespaceURI)?(r=n.localName||r,t.hasAttributeNS(o,r)||e.removeAttributeNS(o,r)):t.hasAttribute(r)||e.removeAttribute(r)}}));let we={append:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{html:t,focusSelector:r}=e;n.insertAdjacentHTML("beforeend",t||""),Z(r)}),se(n,t,e)})},graft:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{parent:t,focusSelector:r}=e,o=document.querySelector(t);o&&(o.appendChild(n),Z(r))}),se(n,t,e)})},innerHtml:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{html:t,focusSelector:r}=e;n.innerHTML=t||"",Z(r)}),se(n,t,e)})},insertAdjacentHtml:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{html:t,position:r,focusSelector:o}=e;n.insertAdjacentHTML(r||"beforeend",t||""),Z(o)}),se(n,t,e)})},insertAdjacentText:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{text:t,position:r,focusSelector:o}=e;n.insertAdjacentText(r||"beforeend",t||""),Z(o)}),se(n,t,e)})},morph:(e,t)=>{ne(e,n=>{const{html:r}=e,o=document.createElement("template");o.innerHTML=String(r).trim(),e.content=o.content;const i=n.parentElement,s=Array.from(i.children).indexOf(n);ie(n,t,e),oe(e,()=>{const{childrenOnly:t,focusSelector:r}=e;Ee(n,t?o.content:o.innerHTML,{childrenOnly:!!t,onBeforeElUpdated:ae(e),onElUpdated:le(e)}),Z(r)}),se(i.children[s],t,e)})},outerHtml:(e,t)=>{ne(e,n=>{const r=n.parentElement,o=Array.from(r.children).indexOf(n);ie(n,t,e),oe(e,()=>{const{html:t,focusSelector:r}=e;n.outerHTML=t||"",Z(r)}),se(r.children[o],t,e)})},prepend:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{html:t,focusSelector:r}=e;n.insertAdjacentHTML("afterbegin",t||""),Z(r)}),se(n,t,e)})},remove:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{focusSelector:t}=e;n.remove(),Z(t)}),se(document,t,e)})},replace:(e,t)=>{ne(e,n=>{const r=n.parentElement,o=Array.from(r.children).indexOf(n);ie(n,t,e),oe(e,()=>{const{html:t,focusSelector:r}=e;n.outerHTML=t||"",Z(r)}),se(r.children[o],t,e)})},textContent:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{text:t,focusSelector:r}=e;n.textContent=t||"",Z(r)}),se(n,t,e)})},addCssClass:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{name:t}=e;n.classList.add(...te(t||""))}),se(n,t,e)})},removeAttribute:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{name:t}=e;n.removeAttribute(t)}),se(n,t,e)})},removeCssClass:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{name:t}=e;n.classList.remove(...te(t))}),se(n,t,e)})},setAttribute:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{name:t,value:r}=e;n.setAttribute(t,r||"")}),se(n,t,e)})},setDatasetProperty:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{name:t,value:r}=e;n.dataset[t]=r||""}),se(n,t,e)})},setProperty:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{name:t,value:r}=e;t in n&&(n[t]=r||"")}),se(n,t,e)})},setStyle:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{name:t,value:r}=e;n.style[t]=r||""}),se(n,t,e)})},setStyles:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{styles:t}=e;for(let[e,r]of Object.entries(t))n.style[e]=r||""}),se(n,t,e)})},setValue:(e,t)=>{ne(e,n=>{ie(n,t,e),oe(e,()=>{const{value:t}=e;n.value=t||""}),se(n,t,e)})},dispatchEvent:(e,t)=>{ne(e,t=>{oe(e,()=>{const{name:n,detail:r}=e;ee(t,n,r)})})},setMeta:(e,t)=>{ie(document,t,e),oe(e,()=>{const{name:t,content:n}=e;let r=document.head.querySelector(`meta[name='${t}']`);r||(r=document.createElement("meta"),r.name=t,document.head.appendChild(r)),r.content=n}),se(document,t,e)},clearStorage:(e,t)=>{ie(document,t,e),oe(e,()=>{const{type:t}=e;("session"===t?sessionStorage:localStorage).clear()}),se(document,t,e)},go:(e,t)=>{ie(window,t,e),oe(e,()=>{const{delta:t}=e;history.go(t)}),se(window,t,e)},pushState:(e,t)=>{ie(window,t,e),oe(e,()=>{const{state:t,title:n,url:r}=e;history.pushState(t||{},n||"",r)}),se(window,t,e)},removeStorageItem:(e,t)=>{ie(document,t,e),oe(e,()=>{const{key:t,type:n}=e;("session"===n?sessionStorage:localStorage).removeItem(t)}),se(document,t,e)},replaceState:(e,t)=>{ie(window,t,e),oe(e,()=>{const{state:t,title:n,url:r}=e;history.replaceState(t||{},n||"",r)}),se(window,t,e)},scrollIntoView:(e,t)=>{const{element:n}=e;ie(n,t,e),oe(e,()=>{n.scrollIntoView(e)}),se(n,t,e)},setCookie:(e,t)=>{ie(document,t,e),oe(e,()=>{const{cookie:t}=e;document.cookie=t||""}),se(document,t,e)},setFocus:(e,t)=>{const{element:n}=e;ie(n,t,e),oe(e,()=>{Z(n)}),se(n,t,e)},setStorageItem:(e,t)=>{ie(document,t,e),oe(e,()=>{const{key:t,value:n,type:r}=e;("session"===r?sessionStorage:localStorage).setItem(t,n||"")}),se(document,t,e)},consoleLog:(e,t)=>{oe(e,()=>{const{message:t,level:n}=e;n&&["warn","info","error"].includes(n)?console[n](t||""):console.log(t||"")})},consoleTable:(e,t)=>{oe(e,()=>{const{data:t,columns:n}=e;console.table(t,n||[])})},notification:(e,t)=>{ie(document,t,e),oe(e,()=>{const{title:t,options:n}=e;Notification.requestPermission().then(r=>{e.permission=r,"granted"===r&&new Notification(t||"",n)})}),se(document,t,e)}};const Oe=e=>{we={...we,...e}};var Ae={get all(){return we}};let _e;var Ce={setConsumer(e){_e=e}};const Se=(e,t={emitMissingElementWarnings:!0})=>{for(let r in e)if(e.hasOwnProperty(r)){const o=e[r];for(let e=0;enew Promise((n,r)=>{try{n(Se(e,t))}catch(e){r(e)}}),shouldMorphCallbacks:ce,didMorphCallbacks:ue,initialize:(e={})=>{const{consumer:t}=e;Ce.setConsumer(t)},addOperation:(e,t)=>{const n={};n[e]=t,Oe(n)},addOperations:e=>{Oe(e)},get DOMOperations(){return console.warn("DEPRECATED: Please use `CableReady.operations.jazzHands = ...` instead of `CableReady.DOMOperations.jazzHands = ...`"),Ae.all},get operations(){return Ae.all}};let Pe=!1;var je={get enabled(){return Pe},get disabled(){return!Pe},get value(){return Pe},set(e){Pe=!!e},set debug(e){Pe=!!e}};const Le=()=>{const e=window.crypto||window.msCrypto;return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,t=>(t^e.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16))},Re=(e,t=!0)=>"string"!=typeof e?"":(e=e.replace(/[\s_](.)/g,e=>e.toUpperCase()).replace(/[\s_]/g,"").replace(/^(.)/,e=>e.toLowerCase()),t&&(e=e.substr(0,1).toUpperCase()+e.substr(1)),e),ke=(e,t)=>{document.dispatchEvent(new CustomEvent(e,{bubbles:!0,cancelable:!1,detail:t})),window.jQuery&&window.jQuery(document).trigger(e,t)},Ie=e=>{if(""!==e.id)return"//*[@id='"+e.id+"']";if(e===document.body)return"/html/body";let t=0;const n=e.parentNode.childNodes;for(var r=0;rdocument.evaluate(e,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,Be=(e,t=!1)=>{const n=document.evaluate(e,document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null),r=[];for(let e=0;e{if(!n||!n.reflexData[r])return;const i=n.reflexController[r],s=n.reflexData[r].target,a=s.split("#")[1],l=i[["before","after","finalize"].includes(e)?`${e}${Re(a)}`:`${Re(a,!1)}${Re(e)}`],c=i[["before","after","finalize"].includes(e)?`${e}Reflex`:`reflex${Re(e)}`];"function"==typeof l&&l.call(i,t,s,n.reflexError[r],r,o),"function"==typeof c&&c.call(i,t,s,n.reflexError[r],r,o),st[r]&&e===st[r].finalStage&&(Reflect.deleteProperty(n.reflexController,r),Reflect.deleteProperty(n.reflexData,r),Reflect.deleteProperty(n.reflexError,r))};document.addEventListener("stimulus-reflex:before",e=>De("before",e.detail.element,e.detail.controller.element,e.detail.reflexId,e.detail.payload),!0),document.addEventListener("stimulus-reflex:success",e=>{De("success",e.detail.element,e.detail.controller.element,e.detail.reflexId,e.detail.payload),Fe("after",e.detail.element,e.detail.controller.element,e.detail.reflexId,e.detail.payload)},!0),document.addEventListener("stimulus-reflex:nothing",e=>{De("success",e.detail.element,e.detail.controller.element,e.detail.reflexId,e.detail.payload),Fe("after",e.detail.element,e.detail.controller.element,e.detail.reflexId,e.detail.payload)},!0),document.addEventListener("stimulus-reflex:error",e=>{De("error",e.detail.element,e.detail.controller.element,e.detail.reflexId,e.detail.payload),Fe("after",e.detail.element,e.detail.controller.element,e.detail.reflexId,e.detail.payload)},!0),document.addEventListener("stimulus-reflex:halted",e=>De("halted",e.detail.element,e.detail.controller.element,e.detail.reflexId,e.detail.payload),!0),document.addEventListener("stimulus-reflex:after",e=>De("after",e.detail.element,e.detail.controller.element,e.detail.reflexId,e.detail.payload),!0),document.addEventListener("stimulus-reflex:finalize",e=>De("finalize",e.detail.element,e.detail.controller.element,e.detail.reflexId,e.detail.payload),!0);const Fe=(e,t,n,r,o)=>{if(!n)return void(je.enabled&&!st[r].warned&&(console.warn(`StimulusReflex was not able execute callbacks or emit events for "${e}" or later life-cycle stages for this Reflex. The StimulusReflex Controller Element is no longer present in the DOM. Could you move the StimulusReflex Controller to an element higher in your DOM?`),st[r].warned=!0));if(!n.reflexController||n.reflexController&&!n.reflexController[r])return void(je.enabled&&!st[r].warned&&(console.warn(`StimulusReflex detected that the StimulusReflex Controller responsible for this Reflex has been replaced with a new instance. Callbacks and events for "${e}" or later life-cycle stages cannot be executed.`),st[r].warned=!0));const{target:i}=n.reflexData[r]||{},s=`stimulus-reflex:${e}`,a={reflex:i,controller:n.reflexController[r]||{},reflexId:r,element:t,payload:o};n.dispatchEvent(new CustomEvent(s,{bubbles:!0,cancelable:!1,detail:a})),window.jQuery&&window.jQuery(n).trigger(s,a)};let $e,Ue,Ve;const ze=()=>{Ve=!0,ke("stimulus-reflex:connected")},qe=()=>{Ve=!1,ke("stimulus-reflex:rejected"),Debug.enabled&&console.warn("Channel subscription was rejected.")},Ke=e=>{Ve=!1,ke("stimulus-reflex:disconnected",e)};var He={consumer:$e,params:Ue,get subscriptionActive(){return Ve},createSubscription:e=>{$e=$e||e.application.consumer;const{channel:t}=e.StimulusReflex,n={channel:t,...Ue},r=JSON.stringify(n);e.StimulusReflex.subscription=$e.subscriptions.findAll(r)[0]||$e.subscriptions.create(n,{received:at,connected:ze,rejected:qe,disconnected:Ke})},connected:ze,rejected:qe,disconnected:Ke,set(e,t){$e=e,Ue=t}};let We=!0;var Ge={get enabled(){return We},get disabled(){return!We},get value(){return We},set(e){We=!!e},set deprecate(e){We=!!e}};const Qe=(e=[])=>{const t=e.filter(e=>e&&String(e).length).map(e=>e.trim()).join(" ").trim();return t.length?t:null},Xe=e=>e&&e.length?e.split(" ").filter(e=>e.trim().length):[],Je=e=>{let t=Array.from(e.attributes).reduce((e,t)=>(e[t.name]=t.value,e),{});if(t.checked=!!e.checked,t.selected=!!e.selected,t.tag_name=e.tagName,e.tagName.match(/select/i)||(e=>!!["checkbox","radio"].includes(e.type)&&document.querySelectorAll(`input[type="${e.type}"][name="${e.name}"]`).length>1)(e)){const n=(e=>Array.from(e.querySelectorAll("option:checked")).concat(Array.from(document.querySelectorAll(`input[type="${e.type}"][name="${e.name}"]`)).filter(e=>e.checked)).map(e=>e.value))(e);t.values=n,t.value=n.join(",")}else t.value=e.value;return t},Ye=(e,t)=>{if(!t||0===t.length)return[];let n=[e];const r=Ie(e);return t.forEach(e=>{try{switch(e){case"combined":Ge.enabled&&console.warn("In the next version of StimulusReflex, the 'combined' option to data-reflex-dataset will become 'ancestors'."),n=[...n,...Be(`${r}/ancestor::*`,!0)];break;case"ancestors":n=[...n,...Be(`${r}/ancestor::*`,!0)];break;case"parent":n=[...n,...Be(`${r}/parent::*`)];break;case"siblings":n=[...n,...Be(`${r}/preceding-sibling::*|${r}/following-sibling::*`)];break;case"children":n=[...n,...Be(`${r}/child::*`)];break;case"descendants":n=[...n,...Be(`${r}/descendant::*`)];break;default:n=[...n,...document.querySelectorAll(e)]}}catch(e){je.enabled&&console.error(e)}}),n},Ze=e=>{let t={};return e&&e.attributes&&Array.from(e.attributes).forEach(e=>{e.name.startsWith("data-")&&(t[e.name]=e.value)}),t},et=(e,t)=>Xe(t.getAttribute(e.schema.controllerAttribute)).reduce((n,r)=>{const o=e.getControllerForElementAndIdentifier(t,r);return o&&o.StimulusReflex&&n.push(o),n},[]);let tt=!1;var nt={get disabled(){return!tt},set(e){tt=e}};var rt={request:function(e,t,n,r,o,i){st[e].timestamp=new Date,console.log(`↑ stimulus ↑ ${t}`,{reflexId:e,args:n,controller:r,element:o,controllerElement:i})},success:function(e){const{detail:t}=e||{},{selector:n,payload:r}=t||{},{reflexId:o,target:i,morph:s,serverMessage:a}=t.stimulusReflex||{},l=st[o],c=l.totalOperations>1?` ${l.completedOperations}/${l.totalOperations}`:"",u=l.timestamp?`in ${new Date-l.timestamp}ms`:"CLONED",d=e.type.split(":")[1].split("-").slice(1).join("_"),f=a&&"halted"===a.subject||!1;console.log(`↓ reflex ↓ ${i} → ${n||"∞"}${c} ${u}`,{reflexId:o,morph:s,operation:d,halted:f,payload:r})},error:function(e){const{detail:t}=e||{},{reflexId:n,target:r,serverMessage:o}=t.stimulusReflex||{},i=st[n],s=i.timestamp?`in ${new Date-i.timestamp}ms`:"CLONED",a=t.stimulusReflex;console.log(`↓ reflex ↓ ${r} ${s} %cERROR: ${o.body}`,"color: #f00;",{reflexId:n,payload:a})}};const ot={},it=Le();var st=ot;const at=e=>{if(!e.cableReady)return;let t={};for(let n in e.operations)if(e.operations.hasOwnProperty(n)){for(let r=e.operations[n].length-1;r>=0;r--)(e.operations[n][r].stimulusReflex||e.operations[n][r].detail&&e.operations[n][r].detail.stimulusReflex)&&(t[n]=t[n]||[],t[n].push(e.operations[n][r]),e.operations[n].splice(r,1));e.operations[n].length||Reflect.deleteProperty(e.operations,n)}let n,r=0;if([t.dispatchEvent,t.morph,t.innerHtml].forEach(e=>{if(e&&e.length){const t=Array.from(new Set(e.map(e=>e.detail?e.detail.stimulusReflex.url:e.stimulusReflex.url)));if(1!==t.length||t[0]!==location.href)return;r+=e.length,n||(e[0].detail?(n=e[0].detail.stimulusReflex,n.payload=e[0].detail.payload,n.reflexId=e[0].detail.reflexId):(n=e[0].stimulusReflex,n.payload=e[0].payload))}}),n){const{reflexId:o,payload:i}=n;if(!ot[o]&&nt.disabled){const e=Me(n.xpathController),t=Me(n.xpathElement);e.reflexController=e.reflexController||{},e.reflexData=e.reflexData||{},e.reflexError=e.reflexError||{},e.reflexController[o]=ot.app.getControllerForElementAndIdentifier(e,n.reflexController),e.reflexData[o]=n,Fe("before",t,e,o,i),lt(n)}ot[o]&&(ot[o].totalOperations=r,ot[o].pendingOperations=r,ot[o].completedOperations=0,ot[o].piggybackOperations=e.operations,Ne.perform(t))}else{const t=Object.entries(e.operations);t.length&&ot[t[0][1][0].reflexId]&&Ne.perform(e.operations)}},lt=e=>{const{reflexId:t}=e;ot[t]={finalStage:"finalize"};const n=new Promise((n,r)=>{ot[t].promise={resolve:n,reject:r,data:e}});return n.reflexId=t,je.enabled&&n.catch(()=>{}),n},ct=((e,t=250)=>{let n;return(...r)=>{clearTimeout(n),n=setTimeout(()=>{n=null,e(...r)},t)}})(()=>{document.querySelectorAll(`[${ot.app.schema.reflexAttribute}]`).forEach(e=>{const t=Xe(e.getAttribute(ot.app.schema.controllerAttribute)),n=Xe(e.getAttribute(ot.app.schema.reflexAttribute)),r=Xe(e.getAttribute(ot.app.schema.actionAttribute));n.forEach(n=>{const o=((e,t)=>t.find(t=>{if(t.identifier)return(e=>{const t=e.match(/(?:.*->)?(.*?)(?:Reflex)?#/);return t?t[1]:""})(e).toLowerCase()===t.identifier.toLowerCase()})||t[0])(n,((e,t)=>{let n=[];for(;t;)n=n.concat(et(e,t)),t=t.parentElement;return n})(ot.app,e));let i;o?(i=`${n.split("->")[0]}->${o.identifier}#__perform`,r.includes(i)||r.push(i)):(i=`${n.split("->")[0]}->stimulus-reflex#__perform`,t.includes("stimulus-reflex")||t.push("stimulus-reflex"),r.includes(i)||r.push(i))});const o=Qe(t),i=Qe(r);o&&e.getAttribute(ot.app.schema.controllerAttribute)!=o&&e.setAttribute(ot.app.schema.controllerAttribute,o),i&&e.getAttribute(ot.app.schema.actionAttribute)!=i&&e.setAttribute(ot.app.schema.actionAttribute,i)}),ke("stimulus-reflex:ready")},20),ut={isActionCableConnectionOpen(){return this.StimulusReflex.subscription.consumer.connection.isOpen()},stimulate(){const e=location.href,t=Array.from(arguments),n=t.shift()||"StimulusReflex::Reflex#default_reflex",r=this.element,o=t[0]&&t[0].nodeType===Node.ELEMENT_NODE?t.shift():r;if("number"===o.type&&o.validity&&o.validity.badInput)return void(je.enabled&&console.warn("Reflex aborted: invalid numeric input"));const i={};if(t[0]&&"object"==typeof t[0]&&Object.keys(t[0]).filter(e=>["attrs","selectors","reflexId","resolveLate","serializeForm"].includes(e)).length){const e=t.shift();Object.keys(e).forEach(t=>i[t]=e[t])}const s=i.attrs||Je(o),a=i.reflexId||Le();let l=i.selectors||(e=>{let t=[];for(;0===t.length&&e;){let n=e.getAttribute(ot.app.schema.reflexRootAttribute);if(n){0===n.length&&e.id&&(n=`#${e.id}`);const r=n.split(",").filter(e=>e.trim().length);je.enabled&&0===r.length&&console.error(`No value found for ${ot.app.schema.reflexRootAttribute}. Add an #id to the element or provide a value for ${application.schema.reflexRootAttribute}.`,e),t=t.concat(r.filter(e=>document.querySelector(e)))}e=e.parentElement?e.parentElement.closest(`[${ot.app.schema.reflexRootAttribute}]`):null}return t})(o);"string"==typeof l&&(l=[l]);const c=i.resolveLate||!1,u=(e=>{const t=e.attributes[st.app.schema.reflexDatasetAttribute],n=e.attributes[st.app.schema.reflexDatasetAllAttribute],r=t&&t.value.split(" ")||[],o=n&&n.value.split(" ")||[],i=Ye(e,r),s=Ye(e,o),a=i.reduce((e,t)=>({...Ze(t),...e}),{}),l={dataset:{...Ze(e),...a},datasetAll:{}};return s.forEach(e=>{const t=Ze(e);Object.keys(t).forEach(e=>{const n=t[e];l.datasetAll[e]&&Array.isArray(l.datasetAll[e])?l.datasetAll[e].push(n):l.datasetAll[e]=[n]})}),l})(o),d=Ie(r),f=Ie(o),p={target:n,args:t,url:e,tabId:it,attrs:s,dataset:u,selectors:l,reflexId:a,resolveLate:c,xpathController:d,xpathElement:f,reflexController:this.identifier,permanentAttributeName:ot.app.schema.reflexPermanentAttribute},{subscription:h}=this.StimulusReflex;if(!this.isActionCableConnectionOpen())throw"The ActionCable connection is not open! `this.isActionCableConnectionOpen()` must return true before calling `this.stimulate()`";if(!He.subscriptionActive)throw"The ActionCable channel subscription for StimulusReflex was rejected.";r.reflexController=r.reflexController||{},r.reflexData=r.reflexData||{},r.reflexError=r.reflexError||{},r.reflexController[a]=this,r.reflexData[a]=p,Fe("before",o,r,a),setTimeout(()=>{const{params:e}=r.reflexData[a]||{},t=o.attributes[ot.app.schema.reflexSerializeFormAttribute];t&&(i.serializeForm=!1,"true"===t.value&&(i.serializeForm=!0));const n=o.closest("form");Ge.enabled&&void 0===i.serializeForm&&n&&console.warn(`Deprecation warning: the next version of StimulusReflex will not serialize forms by default.\nPlease set ${ot.app.schema.reflexSerializeFormAttribute}="true" on your Reflex Controller Element or pass { serializeForm: true } as an option to stimulate.`);const s=!1===i.serializeForm?"":((e,t={})=>{if(!e)return"";const n=t.w||window,{element:r}=t,o=new n.FormData(e),i=Array.from(o,e=>e.map(encodeURIComponent).join("=")),s=e.querySelector("input[type=submit]");return r&&r.name&&"INPUT"===r.nodeName&&"submit"===r.type?i.push(`${encodeURIComponent(r.name)}=${encodeURIComponent(r.value)}`):s&&s.name&&i.push(`${encodeURIComponent(s.name)}=${encodeURIComponent(s.value)}`),Array.from(new Set(i)).join("&")})(n,{element:o});r.reflexData[a]={...p,params:e,formData:s},h.send(r.reflexData[a])});const m=lt(p);return je.enabled&&rt.request(a,n,t,this.context.scope.identifier,o,r),m},__perform(e){let t,n=e.target;for(;n&&!t;)t=n.getAttribute(ot.app.schema.reflexAttribute),t&&t.trim().length||(n=n.parentElement);const r=Xe(t).find(t=>t.split("->")[0]===e.type);r&&(e.preventDefault(),e.stopPropagation(),this.stimulate(r.split("->")[1],n))}},dt=e=>{const{stimulusReflex:t}=e.detail||{};if(!t)return;const{reflexId:n,xpathElement:r,xpathController:o}=t,i=Me(o),s=Me(r),a=st[n],l=a.promise,c=e.detail.payload;a.pendingOperations--,a.pendingOperations>0||(t.resolveLate||setTimeout(()=>l.resolve({element:s,event:e,data:l.data,payload:c})),setTimeout(()=>Fe("success",s,i,n,c)))},ft=e=>{const{stimulusReflex:t}=e.detail||{};if(!t)return;const{reflexId:n,xpathElement:r,xpathController:o}=t,i=Me(o),s=Me(r),a=st[n],l=a.promise,c=e.detail.payload;a.completedOperations++,je.enabled&&rt.success(e),a.completedOperationsl.resolve({element:s,event:e,data:l.data,payload:c})),setTimeout(()=>Fe("finalize",s,i,n,c)),Ne.perform(a.piggybackOperations))};class pt extends M{constructor(...e){super(...e),ht(this)}}const ht=(e,t={})=>{e.StimulusReflex={...t,channel:"StimulusReflex::Channel"},He.createSubscription(e),Object.assign(e,ut)};document.addEventListener("stimulus-reflex:server-message",e=>{const{reflexId:t,serverMessage:n,xpathController:r,xpathElement:o}=e.detail.stimulusReflex||{},{subject:i,body:s}=n,a=Me(r),l=Me(o),c=st[t],u=c.promise,d=e.detail.payload;a&&(a.reflexError=a.reflexError||{},"error"===i&&(a.reflexError[t]=s)),u["error"===i?"reject":"resolve"]({data:u.data,element:l,event:e,toString:()=>s,payload:d}),c.finalStage="halted"===i?"halted":"after",je.enabled&&rt["error"===i?"error":"success"](e),{error:!0,halted:!0,nothing:!0,success:!0}[i]&&Fe(i,l,a,t,d),Ne.perform(c.piggybackOperations)}),document.addEventListener("cable-ready:before-inner-html",dt),document.addEventListener("cable-ready:before-morph",dt),document.addEventListener("cable-ready:after-inner-html",ft),document.addEventListener("cable-ready:after-morph",ft),window.addEventListener("load",ct);var mt={initialize:(e,{controller:t=pt,consumer:n,debug:r,params:o,isolate:i,deprecate:s}={})=>{He.set(n,o),setTimeout(()=>{Ge.enabled&&n&&console.warn("Deprecation warning: the next version of StimulusReflex will obtain a reference to consumer via the Stimulus application object.\nPlease add 'application.consumer = consumer' to your index.js after your Stimulus application has been established, and remove the consumer key from your StimulusReflex initialize() options object.")}),nt.set(!!i),setTimeout(()=>{Ge.enabled&&nt.disabled&&console.warn("Deprecation warning: the next version of StimulusReflex will standardize isolation mode, and the isolate option will be removed.\nPlease update your applications to assume that every tab will be isolated.")}),st.app=e,st.app.schema={...W,...e.schema},st.app.register("stimulus-reflex",t||pt),je.set(!!r),void 0!==s&&Ge.set(s),new MutationObserver(ct).observe(document.documentElement,{attributeFilter:[st.app.schema.reflexAttribute,st.app.schema.actionAttribute],childList:!0,subtree:!0})},register:ht,useReflex:(e,t={})=>{ht(e,t)},get debug(){return je.value},set debug(e){je.set(!!e)},get deprecate(){return Ge.value},set deprecate(e){Ge.set(!!e)}};class yt{constructor(e,t={},n){this.consumer=e,this.identifier=JSON.stringify(t),function(e,t){if(null!=t)for(let n in t){const r=t[n];e[n]=r}}(this,n)}send(e){return this.consumer.send(e,this.identifier)}unsubscribe(){return this.consumer.subscriptions.remove(this)}}class bt{constructor(e){this.consumer=e,this.subscriptions=[]}findAll(e){return this.subscriptions.filter(t=>t.identifier===e)}add(e){return this.subscriptions.push(e),this.consumer.connection.send(JSON.stringify({type:"subscribe",channelName:e.identifier})),e}create(e,t){const n="object"==typeof e?e:{channel:e},r=new yt(this.consumer,n,t);return this.add(r)}forget(e){return this.subscriptions=this.subscriptions.filter(t=>t!==e),e}remove(e){return this.forget(e),0==this.findAll(e.identifier).length&&this.consumer.connection.send(JSON.stringify({type:"unsubscribe",channelName:e.identifier})),e}notify(e,t,...n){let r;return r="string"==typeof e?this.findAll(e):[e],r.map(e=>"function"==typeof e[t]?e[t](...n):void 0)}notifyAll(e,...t){return this.subscriptions.map(n=>this.notify(n,e,...t))}}class gt extends M{constructor(...e){super(...e),vt(this)}}const vt=(e,t={})=>{e.StimulusReflex={...t,channel:"StimulusReflex::Channel"},He.createSubscription(e),Object.assign(e,ut)},xt=(e,{controller:t=gt,consumer:n,debug:r,params:o,isolate:i,deprecate:s}={})=>{let a={consumer:n,controller:t,debug:r,params:o,isolate:i,deprecate:s};mt.initialize(e,a)};xt(k.start(),{consumer:new class{constructor(e,t={}){this._url=e,this.subscriptions=new bt(this),t={maxRetries:3,...t},this.connection=new H(e,[],t),this.connection.isOpen=function(){return this.readyState===H.OPEN},document.addEventListener("beforeunload",()=>{this.disconnect()}),this.connection.addEventListener("open",e=>{var t=this;let n=function(){t.subscriptions.notifyAll("connected")};t.subscriptions.subscriptions.map(e=>e.identifier).join().includes("StimulusReflex::Channel")?n():setTimeout(n,200)}),this.connection.addEventListener("message",e=>{let t=JSON.parse(e.data);"cookie"!==t.meta_type?this.subscriptions.notify(t.identifier,"received",t):document.cookie=`${t.key}=${t.value||""}; max-age=${t.max_age}; path=/`})}get url(){return function(e){if("function"==typeof e&&(e=e()),e&&!/^wss?:/i.test(e)){const t=document.createElement("a");return t.href=e,t.href=t.href,t.protocol=t.protocol.replace("http","ws"),t.href}return e}(this._url)}send(e,t){return e.identifier=t,this.connection.send(JSON.stringify(e))}connect(){return this.connection.open()}disconnect(){return this.connection.close()}}(`${"https:"==location.protocol?"wss":"ws"}://${window.location.host}/ws/sockpuppet-sync`,{debug:!1})})}]); //# sourceMappingURL=/static/sockpuppet/sockpuppet.js.map \ No newline at end of file diff --git a/sockpuppet/static/sockpuppet/sockpuppet.js.map b/sockpuppet/static/sockpuppet/sockpuppet.js.map index cf5845e..a21f37d 100644 --- a/sockpuppet/static/sockpuppet/sockpuppet.js.map +++ b/sockpuppet/static/sockpuppet/sockpuppet.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@rails/actioncable/app/assets/javascripts/action_cable.js","webpack:///./node_modules/@stimulus/core/dist/src/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/src/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/src/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/src/action.js","webpack:///./node_modules/@stimulus/core/dist/src/binding.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","webpack:///./node_modules/@stimulus/multimap/dist/src/set_operations.js","webpack:///./node_modules/@stimulus/multimap/dist/src/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/src/indexed_multimap.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/context.js","webpack:///./node_modules/@stimulus/core/dist/src/definition.js","webpack:///./node_modules/@stimulus/core/dist/src/module.js","webpack:///./node_modules/@stimulus/core/dist/src/data_map.js","webpack:///./node_modules/@stimulus/core/dist/src/selectors.js","webpack:///./node_modules/@stimulus/core/dist/src/target_set.js","webpack:///./node_modules/@stimulus/core/dist/src/scope.js","webpack:///./node_modules/@stimulus/core/dist/src/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/router.js","webpack:///./node_modules/@stimulus/core/dist/src/schema.js","webpack:///./node_modules/@stimulus/core/dist/src/application.js","webpack:///./node_modules/@stimulus/core/dist/src/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/src/controller.js","webpack:///./node_modules/morphdom/dist/morphdom-esm.js","webpack:///./node_modules/stimulus_reflex/node_modules/cable_ready/javascript/enums.js","webpack:///./node_modules/stimulus_reflex/node_modules/cable_ready/javascript/utils.js","webpack:///./node_modules/stimulus_reflex/node_modules/cable_ready/javascript/cable_ready.js","webpack:///./node_modules/stimulus_reflex/node_modules/cable_ready/javascript/callbacks.js","webpack:///./node_modules/stimulus_reflex/javascript/schema.js","webpack:///./node_modules/stimulus_reflex/javascript/consumer.js","webpack:///./node_modules/stimulus_reflex/javascript/utils.js","webpack:///./node_modules/stimulus_reflex/javascript/debug.js","webpack:///./node_modules/stimulus_reflex/javascript/lifecycle.js","webpack:///./node_modules/stimulus_reflex/javascript/attributes.js","webpack:///./node_modules/stimulus_reflex/javascript/controllers.js","webpack:///./node_modules/stimulus_reflex/javascript/log.js","webpack:///./node_modules/stimulus_reflex/javascript/stimulus_reflex.js","webpack:///./node_modules/reconnecting-websocket/dist/reconnecting-websocket-mjs.js","webpack:///./javascript/stimulus-websocket/index.js","webpack:///./sockpuppet/js/sockpuppet.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","adapters","logger","self","console","WebSocket","log","this","enabled","_adapters$logger","_len","arguments","length","messages","Array","_key","push","Date","now","apply","concat","_typeof","iterator","obj","constructor","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","target","props","descriptor","configurable","writable","protoProps","staticProps","getTime","secondsSince","time","ConnectionMonitor","connection","visibilityDidChange","reconnectAttempts","start","isRunning","startedAt","stoppedAt","startPolling","addEventListener","getPollInterval","stop","stopPolling","removeEventListener","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","poll","clearTimeout","pollTimeout","_this","setTimeout","reconnectIfStale","_constructor$pollInte","pollInterval","min","max","interval","multiplier","Math","round","number","clamp","connectionIsStale","staleThreshold","disconnectedRecently","reopen","_this2","document","visibilityState","isOpen","INTERNAL","message_types","welcome","disconnect","ping","confirmation","rejection","disconnect_reasons","unauthorized","invalid_request","server_restart","default_mount_path","protocols","supportedProtocols","slice","indexOf","Connection","consumer","open","subscriptions","monitor","disconnected","send","data","webSocket","JSON","stringify","isActive","getState","uninstallEventHandlers","url","installEventHandlers","close","_ref","undefined","allowReconnect","error","reopenDelay","getProtocol","protocol","isState","isProtocolSupported","states","state","readyState","toLowerCase","eventName","events","handler","message","event","_JSON$parse","parse","identifier","reason","reconnect","type","reload","notify","reject","notifyAll","willAttemptReconnect","extend","properties","Subscription","params","mixin","perform","action","command","unsubscribe","remove","Subscriptions","channelName","channel","subscription","add","ensureActiveConnection","sendCommand","forget","findAll","map","filter","callbackName","_this3","args","_len2","_key2","Consumer","_url","connect","createWebSocketURL","test","a","createElement","href","replace","getConfig","element","head","querySelector","getAttribute","createConsumer","factory","EventListener","eventTarget","unorderedBindings","Set","bindingConnected","binding","bindingDisconnected","delete","handleEvent","extendedEvent","stopImmediatePropagation_1","stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","_i","_a","bindings","from","sort","left","right","leftIndex","index","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","eventListeners","forEach","eventListener","values","reduce","listeners","fetchEventListenerForBinding","handleError","detail","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","createEventListener","set","descriptorPattern","Action","tagName","defaultEventNames","getDefaultEventNameForElement","methodName","forToken","token","descriptorString","content","matches","trim","match","eventTargetName","window","toString","eventNameSuffix","e","Error","Binding","context","willBeInvokedByEvent","invokeWithEvent","method","controller","Element","contains","scope","containsElement","ElementObserver","delegate","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","attributes","childList","subtree","refresh","takeRecords","matchElementsInTree","has","removeElement","_b","_c","addElement","mutations_1","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","querySelectorAll","selector","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","size","prune","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","__extends","extendStatics","setPrototypeOf","__proto__","b","__","_super","IndexedMultimap","keysByValue","keys","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","_","findIndex","tokensAreEqual","tokenString","split","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","Context","controllerConstructor","bindingObserver","dispatcher","initialize","parentElement","blessControllerConstructor","bless","extendWithReflect","Controller","_newTarget","Reflect","construct","Module","definition","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","DataMap","getFormattedKey","setAttribute","removeAttribute","char","attributeValueContainsToken","TargetSet","targetName","find","targetNames","getSelectorForTargetNames","findElement","findAllElements","getSelectorForTargetName","join","targetDescriptor","targetAttribute","Scope","targets","tail","filterElements","closest","controllerSelector","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","contexts","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","fulfilled","step","next","rejected","result","done","then","__generator","body","f","y","g","label","sent","trys","ops","verb","v","op","pop","Application","documentElement","router","register","load","rest","definitions","isArray","unload","identifiers","getControllerForElementAndIdentifier","defineTargetProperties","ancestors","getPrototypeOf","getAncestorsForConstructor","getOwnTargetNamesForConstructor","getTargetNamesForConstructor","charAt","toUpperCase","capitalize","range","doc","HAS_TEMPLATE_SUPPORT","HAS_RANGE_SUPPORT","createRange","toElement","str","template","innerHTML","childNodes","createFragmentFromTemplate","selectNode","createContextualFragment","createFragmentFromRange","fragment","createFragmentFromWrap","compareNodeNames","fromEl","toEl","fromCodeStart","toCodeStart","fromNodeName","nodeName","toNodeName","charCodeAt","syncBooleanAttrProp","specialElHandlers","OPTION","parentNode","parentName","selected","selectedIndex","INPUT","TEXTAREA","newValue","firstChild","oldValue","nodeValue","placeholder","SELECT","optgroup","curChild","nextSibling","noop","defaultGetNodeKey","id","morphAttrs","fromNode","toNode","options","toNodeHtml","getNodeKey","onBeforeNodeAdded","onNodeAdded","onBeforeElUpdated","onElUpdated","onBeforeNodeDiscarded","onNodeDiscarded","onBeforeElChildrenUpdated","childrenOnly","fromNodesLookup","keyedRemovalList","addKeyedRemoval","removeNode","skipKeyedNodes","removeChild","walkDiscardedChildNodes","handleNodeAdded","el","unmatchedFromEl","replaceChild","morphEl","toElKey","curToNodeKey","curFromNodeKey","fromNextSibling","toNextSibling","matchingFromEl","curToNodeChild","curFromNodeChild","outer","isSameNode","curFromNodeType","isCompatible","insertBefore","appendChild","onBeforeNodeAddedResult","actualize","ownerDocument","cleanupFromEl","specialElHandler","morphChildren","indexTree","namespaceURI","morphedNode","morphedNodeType","toNodeType","nextChild","moveChildren","createElementNS","len","elToRemove","morphdomFactory","attr","attrName","attrNamespaceURI","attrValue","toNodeAttrs","localName","getAttributeNS","prefix","setAttributeNS","fromNodeAttrs","hasAttributeNS","removeAttributeNS","inputTags","mutableTags","textInputTypes","color","date","datetime","email","month","password","search","tel","text","textarea","week","assignFocus","focusElement","activeElement","focus","dispatch","evt","CustomEvent","bubbles","cancelable","dispatchEvent","jQuery","trigger","getClassNames","names","flat","processElements","operation","callback","selectAll","shouldMorphCallbacks","isEqualNode","permanentAttributeName","permanent","ignore","attribute","didMorphCallbacks","shouldMorph","includes","didMorph","DOMOperations","append","html","focusSelector","cancel","insertAdjacentHTML","graft","parent","innerHtml","insertAdjacentHtml","position","insertAdjacentText","morph","String","ordinal","children","outerHtml","outerHTML","prepend","textContent","addCssClass","classList","removeCssClass","setDatasetProperty","dataset","setProperty","setStyle","style","setStyles","styles","entries","setValue","clearStorage","storage","sessionStorage","localStorage","go","delta","history","pushState","title","removeStorageItem","removeItem","replaceState","scrollIntoView","setCookie","cookie","setFocus","setStorageItem","setItem","consoleLog","level","notification","Notification","requestPermission","permission","playSound","src","canplaythrough","audio","play","ended","operations","emitMissingElementWarnings","xpath","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","Audio","unlockAudio","catch","reflexAttribute","reflexPermanentAttribute","reflexRootAttribute","reflexDatasetAttribute","getConsumer","findConsumer","depth","isConsumer","camelize","uppercaseFirstLetter","$1","substr","emitEvent","elementToXPath","ix","siblings","sibling","XPathToElement","debugging","invokeLifecycleMethod","stage","reflexElement","controllerElement","reflexId","reflexData","reflexController","reflex","reflexMethodName","specificLifecycleMethod","genericLifecycleMethod","reflexError","reflexes","finalStage","deleteProperty","dispatchLifecycleEvent","warned","warn","attributeValue","attributeValues","extractElementAttributes","attrs","memo","checked","tag_name","multipleInstances","collectedOptions","elem","collectCheckedOptions","extractDataAttributes","startsWith","localReflexControllers","app","StimulusReflex","request","timestamp","success","serverMessage","stimulusReflex","progress","totalOperations","completedOperations","duration","halted","subject","payload","NOOP","stimulusApplication","actionCableConsumer","actionCableParams","isolationMode","actionCableSubscriptionActive","extendStimulusController","location","shift","validity","badInput","opts","crypto","msCrypto","getRandomValues","Uint8Array","uuidv4","selectors","getReflexRoots","resolveLate","datasetAttribute","extractElementDataset","xpathController","xpathElement","isActionCableConnectionOpen","formData","form","w","FormData","encodeURIComponent","submitButton","serializeForm","promise","registerReflex","preventDefault","stopPropagation","stimulate","received","cableReady","reflexOperations","splice","urls","pendingOperations","connected","createSubscription","super","setupDeclarativeReflexes","delay","timeoutId","debounce","controllers","reflexAttributeNames","actions","reflexName","findControllerByReflexName","allReflexControllers","controllerValue","actionValue","reflexString","extractReflexName","list","reflexRoot","stimulusReflexInitialized","beforeDOMUpdate","afterDOMUpdate","nothing","initializeOptions","debug","isolate","__read","ar","__spread","Event","ErrorEvent","CloseEvent","code","wasClean","getGlobalWebSocket","DEFAULT","maxReconnectionDelay","minReconnectionDelay","random","minUptime","reconnectionDelayGrowFactor","connectionTimeout","maxRetries","Infinity","maxEnqueuedMessages","startClosed","ReconnectingWebSocket","_listeners","_retryCount","_shouldReconnect","_connectLock","_binaryType","_closeCalled","_messageQueue","onclose","onerror","onmessage","onopen","_handleOpen","_debug","_options","_connectTimeout","_uptimeTimeout","_acceptOpen","_ws","binaryType","listener","_callEventListener","_handleMessage","_handleError","_disconnect","_connect","_handleClose","_clearTimeouts","_protocols","CONNECTING","OPEN","CLOSING","CLOSED","acc","Blob","byteLength","bufferedAmount","extensions","e_1","listeners_1","__values","listeners_1_1","e_1_1","return","_getNextDelay","_d","pow","_wait","_getNextUrl","urlProvider","_removeListeners","_addListeners","_handleTimeout","sub","meta_type","max_age","host"],"mappings":"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","file":"sockpuppet.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","(function(global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActionCable = {});\n})(this, function(exports) {\n \"use strict\";\n var adapters = {\n logger: self.console,\n WebSocket: self.WebSocket\n };\n var logger = {\n log: function log() {\n if (this.enabled) {\n var _adapters$logger;\n for (var _len = arguments.length, messages = Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n messages.push(Date.now());\n (_adapters$logger = adapters.logger).log.apply(_adapters$logger, [ \"[ActionCable]\" ].concat(messages));\n }\n }\n };\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n var classCallCheck = function(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n var createClass = function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n var now = function now() {\n return new Date().getTime();\n };\n var secondsSince = function secondsSince(time) {\n return (now() - time) / 1e3;\n };\n var clamp = function clamp(number, min, max) {\n return Math.max(min, Math.min(max, number));\n };\n var ConnectionMonitor = function() {\n function ConnectionMonitor(connection) {\n classCallCheck(this, ConnectionMonitor);\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n ConnectionMonitor.prototype.start = function start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor started. pollInterval = \" + this.getPollInterval() + \" ms\");\n }\n };\n ConnectionMonitor.prototype.stop = function stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n };\n ConnectionMonitor.prototype.isRunning = function isRunning() {\n return this.startedAt && !this.stoppedAt;\n };\n ConnectionMonitor.prototype.recordPing = function recordPing() {\n this.pingedAt = now();\n };\n ConnectionMonitor.prototype.recordConnect = function recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n };\n ConnectionMonitor.prototype.recordDisconnect = function recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n };\n ConnectionMonitor.prototype.startPolling = function startPolling() {\n this.stopPolling();\n this.poll();\n };\n ConnectionMonitor.prototype.stopPolling = function stopPolling() {\n clearTimeout(this.pollTimeout);\n };\n ConnectionMonitor.prototype.poll = function poll() {\n var _this = this;\n this.pollTimeout = setTimeout(function() {\n _this.reconnectIfStale();\n _this.poll();\n }, this.getPollInterval());\n };\n ConnectionMonitor.prototype.getPollInterval = function getPollInterval() {\n var _constructor$pollInte = this.constructor.pollInterval, min = _constructor$pollInte.min, max = _constructor$pollInte.max, multiplier = _constructor$pollInte.multiplier;\n var interval = multiplier * Math.log(this.reconnectAttempts + 1);\n return Math.round(clamp(interval, min, max) * 1e3);\n };\n ConnectionMonitor.prototype.reconnectIfStale = function reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \" + this.reconnectAttempts + \", pollInterval = \" + this.getPollInterval() + \" ms, time disconnected = \" + secondsSince(this.disconnectedAt) + \" s, stale threshold = \" + this.constructor.staleThreshold + \" s\");\n this.reconnectAttempts++;\n if (this.disconnectedRecently()) {\n logger.log(\"ConnectionMonitor skipping reopening recent disconnect\");\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n };\n ConnectionMonitor.prototype.connectionIsStale = function connectionIsStale() {\n return secondsSince(this.pingedAt ? this.pingedAt : this.startedAt) > this.constructor.staleThreshold;\n };\n ConnectionMonitor.prototype.disconnectedRecently = function disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n };\n ConnectionMonitor.prototype.visibilityDidChange = function visibilityDidChange() {\n var _this2 = this;\n if (document.visibilityState === \"visible\") {\n setTimeout(function() {\n if (_this2.connectionIsStale() || !_this2.connection.isOpen()) {\n logger.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = \" + document.visibilityState);\n _this2.connection.reopen();\n }\n }, 200);\n }\n };\n return ConnectionMonitor;\n }();\n ConnectionMonitor.pollInterval = {\n min: 3,\n max: 30,\n multiplier: 5\n };\n ConnectionMonitor.staleThreshold = 6;\n var INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\"\n },\n default_mount_path: \"/cable\",\n protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n };\n var message_types = INTERNAL.message_types, protocols = INTERNAL.protocols;\n var supportedProtocols = protocols.slice(0, protocols.length - 1);\n var indexOf = [].indexOf;\n var Connection = function() {\n function Connection(consumer) {\n classCallCheck(this, Connection);\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n Connection.prototype.send = function send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n };\n Connection.prototype.open = function open() {\n if (this.isActive()) {\n logger.log(\"Attempted to open WebSocket, but existing socket is \" + this.getState());\n return false;\n } else {\n logger.log(\"Opening WebSocket, current state is \" + this.getState() + \", subprotocols: \" + protocols);\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n };\n Connection.prototype.close = function close() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n allowReconnect: true\n }, allowReconnect = _ref.allowReconnect;\n if (!allowReconnect) {\n this.monitor.stop();\n }\n if (this.isActive()) {\n return this.webSocket.close();\n }\n };\n Connection.prototype.reopen = function reopen() {\n logger.log(\"Reopening WebSocket, current state is \" + this.getState());\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(\"Reopening WebSocket in \" + this.constructor.reopenDelay + \"ms\");\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n };\n Connection.prototype.getProtocol = function getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n };\n Connection.prototype.isOpen = function isOpen() {\n return this.isState(\"open\");\n };\n Connection.prototype.isActive = function isActive() {\n return this.isState(\"open\", \"connecting\");\n };\n Connection.prototype.isProtocolSupported = function isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n };\n Connection.prototype.isState = function isState() {\n for (var _len = arguments.length, states = Array(_len), _key = 0; _key < _len; _key++) {\n states[_key] = arguments[_key];\n }\n return indexOf.call(states, this.getState()) >= 0;\n };\n Connection.prototype.getState = function getState() {\n if (this.webSocket) {\n for (var state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n return null;\n };\n Connection.prototype.installEventHandlers = function installEventHandlers() {\n for (var eventName in this.events) {\n var handler = this.events[eventName].bind(this);\n this.webSocket[\"on\" + eventName] = handler;\n }\n };\n Connection.prototype.uninstallEventHandlers = function uninstallEventHandlers() {\n for (var eventName in this.events) {\n this.webSocket[\"on\" + eventName] = function() {};\n }\n };\n return Connection;\n }();\n Connection.reopenDelay = 500;\n Connection.prototype.events = {\n message: function message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n var _JSON$parse = JSON.parse(event.data), identifier = _JSON$parse.identifier, message = _JSON$parse.message, reason = _JSON$parse.reason, reconnect = _JSON$parse.reconnect, type = _JSON$parse.type;\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(\"Disconnecting. Reason: \" + reason);\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n return this.subscriptions.notify(identifier, \"connected\");\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open: function open() {\n logger.log(\"WebSocket onopen event, using '\" + this.getProtocol() + \"' subprotocol\");\n this.disconnected = false;\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close: function close(event) {\n logger.log(\"WebSocket onclose event\");\n if (this.disconnected) {\n return;\n }\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error: function error() {\n logger.log(\"WebSocket onerror event\");\n }\n };\n var extend = function extend(object, properties) {\n if (properties != null) {\n for (var key in properties) {\n var value = properties[key];\n object[key] = value;\n }\n }\n return object;\n };\n var Subscription = function() {\n function Subscription(consumer) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mixin = arguments[2];\n classCallCheck(this, Subscription);\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n Subscription.prototype.perform = function perform(action) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n data.action = action;\n return this.send(data);\n };\n Subscription.prototype.send = function send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n };\n Subscription.prototype.unsubscribe = function unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n };\n return Subscription;\n }();\n var Subscriptions = function() {\n function Subscriptions(consumer) {\n classCallCheck(this, Subscriptions);\n this.consumer = consumer;\n this.subscriptions = [];\n }\n Subscriptions.prototype.create = function create(channelName, mixin) {\n var channel = channelName;\n var params = (typeof channel === \"undefined\" ? \"undefined\" : _typeof(channel)) === \"object\" ? channel : {\n channel: channel\n };\n var subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n };\n Subscriptions.prototype.add = function add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.sendCommand(subscription, \"subscribe\");\n return subscription;\n };\n Subscriptions.prototype.remove = function remove(subscription) {\n this.forget(subscription);\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n return subscription;\n };\n Subscriptions.prototype.reject = function reject(identifier) {\n var _this = this;\n return this.findAll(identifier).map(function(subscription) {\n _this.forget(subscription);\n _this.notify(subscription, \"rejected\");\n return subscription;\n });\n };\n Subscriptions.prototype.forget = function forget(subscription) {\n this.subscriptions = this.subscriptions.filter(function(s) {\n return s !== subscription;\n });\n return subscription;\n };\n Subscriptions.prototype.findAll = function findAll(identifier) {\n return this.subscriptions.filter(function(s) {\n return s.identifier === identifier;\n });\n };\n Subscriptions.prototype.reload = function reload() {\n var _this2 = this;\n return this.subscriptions.map(function(subscription) {\n return _this2.sendCommand(subscription, \"subscribe\");\n });\n };\n Subscriptions.prototype.notifyAll = function notifyAll(callbackName) {\n var _this3 = this;\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return this.subscriptions.map(function(subscription) {\n return _this3.notify.apply(_this3, [ subscription, callbackName ].concat(args));\n });\n };\n Subscriptions.prototype.notify = function notify(subscription, callbackName) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n var subscriptions = void 0;\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [ subscription ];\n }\n return subscriptions.map(function(subscription) {\n return typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : undefined;\n });\n };\n Subscriptions.prototype.sendCommand = function sendCommand(subscription, command) {\n var identifier = subscription.identifier;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n };\n return Subscriptions;\n }();\n var Consumer = function() {\n function Consumer(url) {\n classCallCheck(this, Consumer);\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n }\n Consumer.prototype.send = function send(data) {\n return this.connection.send(data);\n };\n Consumer.prototype.connect = function connect() {\n return this.connection.open();\n };\n Consumer.prototype.disconnect = function disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n };\n Consumer.prototype.ensureActiveConnection = function ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n };\n createClass(Consumer, [ {\n key: \"url\",\n get: function get$$1() {\n return createWebSocketURL(this._url);\n }\n } ]);\n return Consumer;\n }();\n function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n if (url && !/^wss?:/i.test(url)) {\n var a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n }\n function createConsumer() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getConfig(\"url\") || INTERNAL.default_mount_path;\n return new Consumer(url);\n }\n function getConfig(name) {\n var element = document.head.querySelector(\"meta[name='action-cable-\" + name + \"']\");\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n exports.Connection = Connection;\n exports.ConnectionMonitor = ConnectionMonitor;\n exports.Consumer = Consumer;\n exports.INTERNAL = INTERNAL;\n exports.Subscription = Subscription;\n exports.Subscriptions = Subscriptions;\n exports.adapters = adapters;\n exports.createWebSocketURL = createWebSocketURL;\n exports.logger = logger;\n exports.createConsumer = createConsumer;\n exports.getConfig = getConfig;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});\n","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==","var DOCUMENT_FRAGMENT_NODE = 11;\n\nfunction morphAttrs(fromNode, toNode) {\n var toNodeAttrs = toNode.attributes;\n var attr;\n var attrName;\n var attrNamespaceURI;\n var attrValue;\n var fromValue;\n\n // document-fragments dont have attributes so lets not do anything\n if (toNode.nodeType === DOCUMENT_FRAGMENT_NODE || fromNode.nodeType === DOCUMENT_FRAGMENT_NODE) {\n return;\n }\n\n // update attributes on original DOM element\n for (var i = toNodeAttrs.length - 1; i >= 0; i--) {\n attr = toNodeAttrs[i];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n attrValue = attr.value;\n\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName);\n\n if (fromValue !== attrValue) {\n if (attr.prefix === 'xmlns'){\n attrName = attr.name; // It's not allowed to set an attribute with the XMLNS namespace without specifying the `xmlns` prefix\n }\n fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue);\n }\n } else {\n fromValue = fromNode.getAttribute(attrName);\n\n if (fromValue !== attrValue) {\n fromNode.setAttribute(attrName, attrValue);\n }\n }\n }\n\n // Remove any extra attributes found on the original DOM element that\n // weren't found on the target element.\n var fromNodeAttrs = fromNode.attributes;\n\n for (var d = fromNodeAttrs.length - 1; d >= 0; d--) {\n attr = fromNodeAttrs[d];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n\n if (!toNode.hasAttributeNS(attrNamespaceURI, attrName)) {\n fromNode.removeAttributeNS(attrNamespaceURI, attrName);\n }\n } else {\n if (!toNode.hasAttribute(attrName)) {\n fromNode.removeAttribute(attrName);\n }\n }\n }\n}\n\nvar range; // Create a range object for efficently rendering strings to elements.\nvar NS_XHTML = 'http://www.w3.org/1999/xhtml';\n\nvar doc = typeof document === 'undefined' ? undefined : document;\nvar HAS_TEMPLATE_SUPPORT = !!doc && 'content' in doc.createElement('template');\nvar HAS_RANGE_SUPPORT = !!doc && doc.createRange && 'createContextualFragment' in doc.createRange();\n\nfunction createFragmentFromTemplate(str) {\n var template = doc.createElement('template');\n template.innerHTML = str;\n return template.content.childNodes[0];\n}\n\nfunction createFragmentFromRange(str) {\n if (!range) {\n range = doc.createRange();\n range.selectNode(doc.body);\n }\n\n var fragment = range.createContextualFragment(str);\n return fragment.childNodes[0];\n}\n\nfunction createFragmentFromWrap(str) {\n var fragment = doc.createElement('body');\n fragment.innerHTML = str;\n return fragment.childNodes[0];\n}\n\n/**\n * This is about the same\n * var html = new DOMParser().parseFromString(str, 'text/html');\n * return html.body.firstChild;\n *\n * @method toElement\n * @param {String} str\n */\nfunction toElement(str) {\n str = str.trim();\n if (HAS_TEMPLATE_SUPPORT) {\n // avoid restrictions on content for things like `Hi` which\n // createContextualFragment doesn't support\n //