jails-js 4.2.1 → 5.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/jails.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("jails",[],t):"object"==typeof exports?exports.jails=t():e.jails=t()}(self,(function(){return(()=>{var e={857:function(e){e.exports=function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}));var o=n(3);Object.defineProperty(t,"pandora",{enumerable:!0,get:function(){return function(e){return e&&e.__esModule?e:{default:e}}(o).default}})},function(e,t,n){(function(e){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.log=function(t){return function(n){return e&&"production"!==e.env.NODE_ENV&&(console.groupCollapsed(t+" / INITIAL STATE"),console.log("+ state",n.getState()),console.groupEnd(),n.subscribe((function(e,n){var r=n.action,o=n.payload,i=JSON.parse(JSON.stringify(e));console.groupCollapsed(t+" / ACTION => "+(r||"SET")),console.log("+ payload",o),console.log("+ state",i),console.groupEnd()}))),n}}}).call(t,n(2))},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(e){if(u===setTimeout)return setTimeout(e,0);if((u===n||!u)&&setTimeout)return u=setTimeout,setTimeout(e,0);try{return u(e,0)}catch(t){try{return u.call(null,e,0)}catch(t){return u.call(this,e,0)}}}function i(){m&&f&&(m=!1,f.length?p=f.concat(p):v=-1,p.length&&a())}function a(){if(!m){var e=o(i);m=!0;for(var t=p.length;t;){for(f=p,p=[];++v<t;)f&&f[v].run();v=-1,t=p.length}f=null,m=!1,function(e){if(c===clearTimeout)return clearTimeout(e);if((c===r||!c)&&clearTimeout)return c=clearTimeout,clearTimeout(e);try{c(e)}catch(t){try{return c.call(null,e)}catch(t){return c.call(this,e)}}}(e)}}function s(e,t){this.fun=e,this.array=t}function l(){}var u,c,d=e.exports={};!function(){try{u="function"==typeof setTimeout?setTimeout:n}catch(e){u=n}try{c="function"==typeof clearTimeout?clearTimeout:r}catch(e){c=r}}();var f,p=[],m=!1,v=-1;d.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];p.push(new s(e,t)),1!==p.length||m||o(a)},s.prototype.run=function(){this.fun.apply(null,this.array)},d.title="browser",d.browser=!0,d.env={},d.argv=[],d.version="",d.versions={},d.on=l,d.addListener=l,d.once=l,d.off=l,d.removeListener=l,d.removeAllListeners=l,d.emit=l,d.prependListener=l,d.prependOnceListener=l,d.listeners=function(e){return[]},d.binding=function(e){throw new Error("process.binding is not supported")},d.cwd=function(){return"/"},d.chdir=function(e){throw new Error("process.chdir is not supported")},d.umask=function(){return 0}},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.model,n=void 0===t?{}:t,r=e.actions,o=void 0===r?{}:r,i=e.middlewares,a=void 0===i?[]:i,s=e.autostart,l=void 0===s||s,u=e.callback,c=[],d=[],f=JSON.parse(JSON.stringify(n)),p="undefined"!=typeof window&&window.document&&window.document.createElement?requestAnimationFrame||setTimeout:function(e){return e()},m=function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).autostart,n=void 0!==t&&t;e&&(e.call?(e.ref=e,d.push(e),n&&e(Object.assign({},f),{action:null,payload:null,haschanged:!0})):Object.keys(e).forEach((function(t){var r=e[t],o=function(t,n){n.action in e&&e[n.action](t,n)};o.ref=r,d.push(o),n&&o(Object.assign({},f),{action:t,payload:null,haschanged:!0})})))},v=function(e){d=d.filter((function(t){return t.ref!=e}))},_=function(e,t,n){var r=!1;if(e in o){var i=Object.assign({},f),a=o[e](i,t,h);a&&(f=Object.assign(f,a),r=!0)}if(c.shift(),!c.length){var s={action:e,payload:t,haschanged:r};d.forEach((function(e){return e(f,s)})),n(f,s)}},h={set:function(e){e(f),d.forEach((function(e){return e(f,{haschanged:!0})}))},when:function(e){return new Promise((function(t){m(function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},e,(function e(n,r){var o=r.payload;t(Object.assign({},n,o)),v(e)})))}))},getState:function(){return Object.assign({},f)},dispatch:function(e,t){return new Promise((function(n){c.push({action:e,payload:t}),1==c.length&&p((function(){for(;c.length;)_(c[0].action,c[0].payload,n)}))}))},subscribe:m,unsubscribe:v,getActions:function(){return o},setActions:function(e){o=e}};return u&&(m((function(e,t){return t.haschanged?u(e,t):null})),l&&u(f)),a.forEach((function(e){return e(h)})),h}}])},17:function(e){var t;t=function(){return 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}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get: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=3)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=n(1),a=n(2);function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var l="undefined"!=typeof document?document:{},u=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"soda-";s(this,e),this._prefix=t}return o(e,[{key:"setDocument",value:function(e){l=e}},{key:"run",value:function(e,t){var n=this,r=l.createElement("div");l.documentMode<9&&(r.style.display="none",l.body.appendChild(r)),r.innerHTML=e,(0,a.nodes2Arr)(r.childNodes).map((function(e){n.compileNode(e,t)}));var o=r.innerHTML;return l.documentMode<9&&l.body.removeChild(r),o}},{key:"prefix",value:function(e){this._prefix=e}},{key:"_getPrefixReg",value:function(){return new RegExp("^"+this._prefix)}},{key:"_getPrefixedDirectiveMap",value:function(){var t=this,n={};return e.sodaDirectives.map((function(e){var r=t._prefix+e.name;n[r]=e})),n}},{key:"_removeSodaMark",value:function(e,t){e.removeAttribute(t)}},{key:"compileNode",value:function(t,n){var o=this,s=this._getPrefixReg(),u=e.sodaDirectives,c=this._getPrefixedDirectiveMap();!function e(t,n){t.nodeType===(t.TEXT_NODE||3)&&(t.nodeValue=t.nodeValue.replace(i.VALUE_OUT_REG,(function(e,t){var i=o.parseSodaExpression(t,n);return"object"===(void 0===i?"undefined":r(i))&&(i=JSON.stringify(i,null,2)),i}))),t.attributes&&t.attributes.length&&(u.map((function(e){var r=e.name,i=e.opt,s=o._prefix+r;if((0,a.exist)(t.getAttribute(s))){var u=t.getAttribute(s);i.link.bind(o)({expression:u,scope:n,el:t,parseSodaExpression:o.parseSodaExpression.bind(o),getValue:o.getValue.bind(o),compileNode:o.compileNode.bind(o),document:l}),o._removeSodaMark(t,s)}})),(0,a.nodes2Arr)(t.attributes).filter((function(e){return!c[e.name]})).map((function(e){if(s.test(e.name)){var r=e.name.replace(s,"");if(r&&(0,a.exist)(e.value)){var i=o.parseComplexExpression(e.value,n);!1!==i&&(0,a.exist)(i)&&t.setAttribute(r,i),o._removeSodaMark(t,e.name)}}else(0,a.exist)(e.value)&&(e.value=o.parseComplexExpression(e.value,n))}))),(0,a.nodes2Arr)(t.childNodes).map((function(t){e(t,n)}))}(t,n)}},{key:"getEvalFunc",value:function(t){return new Function("getValue","sodaFilterMap","return function sodaExp(scope){ return "+t+"}")(this.getValue,e.sodaFilterMap)}},{key:"getValue",value:function(e,t){return i.CONST_REGG.lastIndex=0,t.replace(i.CONST_REGG,(function(t){return void 0===e[t]?t:e[t]})),"true"===t||"false"!==t&&function t(n,r){var o=r.indexOf(".");if(o>-1){var a=r.substr(0,o);return r=r.substr(o+1),void 0!==e[a]&&i.CONST_REG.test(a)&&(a=e[a]),void 0!==n[a]&&null!==n[a]?t(n[a],r):""}return r=r.trim(),void 0!==e[r]&&i.CONST_REG.test(r)&&(r=e[r]),void 0!==n[r]?n[r]:""}(e,t)}},{key:"parseComplexExpression",value:function(e,t){var n=this,r=i.ONLY_VALUE_OUT_REG.exec(e);if(r){var o=r[1];return this.parseSodaExpression(o,t)}return e.replace(i.VALUE_OUT_REG,(function(e,r){return n.parseSodaExpression(r,t)}))}},{key:"parseSodaExpression",value:function(e,t){var n=this;e=(e=e.replace(i.STRING_REG,(function(e,n,r){var o=(0,a.getRandom)();return t[o]=n||r,o}))).replace(i.OR_REG,i.OR_REPLACE).split("|");for(var r=0;r<e.length;r++)e[r]=(e[r].replace(new RegExp(i.OR_REPLACE,"g"),"||")||"").trim();for(var o=e[0]||"",s=e.slice(1);i.ATTR_REG_NG.test(o);)i.ATTR_REG.lastIndex=0,o=o.replace(i.ATTR_REG,(function(e,r){var o=(0,a.getAttrVarKey)(),i=n.parseSodaExpression(r,t);return t[o]=i,"."+o}));return o=o.replace(i.OBJECT_REG,(function(e){return"getValue(scope,'"+e.trim()+"')"})),o=this.parseFilter(s,o),this.getEvalFunc(o)(t)}},{key:"parseFilter",value:function(t,n){var r=e.sodaFilterMap;return function e(){if(o=t.shift()){for(var o,a=(o=o.split(":")).slice(1)||[],s=(o[0]||"").trim(),l=0;l<a.length;l++)i.OBJECT_REG_NG.test(a[l])&&(a[l]="getValue(scope,'"+a[l]+"')");r[s]&&(a.unshift(n),a=a.join(","),n="sodaFilterMap['"+s+"']("+a+")"),e()}}(),n}}],[{key:"filter",value:function(e,t){this.sodaFilterMap[e]=t}},{key:"getFilter",value:function(e){return this.sodaFilterMap[e]}},{key:"directive",value:function(e,t){var n=t.priority,r=void 0===n?0:n,o=void 0;for(o=0;o<this.sodaDirectives.length;o++){var i=this.sodaDirectives[o].opt.priority,a=void 0===i?0:i;if(r<a);else if(r>=a)break}this.sodaDirectives.splice(o,0,{name:e,opt:t})}},{key:"discribe",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{compile:!0};this.template[e]={funcOrStr:t,option:n}}},{key:"getTmpl",value:function(e,t){var n=this.template[e],r=n.funcOrStr,o=n.option,i=void 0===o?{}:o;return{template:"function"==typeof r?r.apply(null,t):r,option:i}}}]),e}();u.sodaDirectives=[],u.sodaFilterMap={},u.template={},t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IDENTOR_REG=/[a-zA-Z_\$]+[\w\$]*/g,t.STRING_REG=/"([^"]*)"|'([^']*)'/g,t.NUMBER_REG=/\d+|\d*\.\d+/g,t.OBJECT_REG=/[a-zA-Z_\$]+[\w\$]*(?:\s*\.\s*(?:[a-zA-Z_\$]+[\w\$]*|\d+))*/g,t.OBJECT_REG_NG=/[a-zA-Z_\$]+[\w\$]*(?:\s*\.\s*(?:[a-zA-Z_\$]+[\w\$]*|\d+))*/,t.ATTR_REG=/\[([^\[\]]*)\]/g,t.ATTR_REG_NG=/\[([^\[\]]*)\]/,t.ATTR_REG_DOT=/\.([a-zA-Z_\$]+[\w\$]*)/g,t.NOT_ATTR_REG=/[^\.|]([a-zA-Z_\$]+[\w\$]*)/g,t.OR_REG=/\|\|/g,t.OR_REPLACE="OR_OPERATOR",t.CONST_PRIFIX="_$C$_",t.CONST_REG=/^_\$C\$_/,t.CONST_REGG=/_\$C\$_[^\.]+/g,t.VALUE_OUT_REG=/\{\{([^\}]*)\}\}/g,t.ONLY_VALUE_OUT_REG=/^\{\{([^\}]*)\}\}$/},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assign=t.nodes2Arr=t.exist=t.getRandom=t.getAttrVarKey=void 0;var r=n(1),o=(t.getAttrVarKey=function(){return r.CONST_PRIFIX+~~(1e6*Math.random())},t.getRandom=function(){return"$$"+~~(1e6*Math.random())},t.exist=function(e){return null!=e&&""!==e&&void 0!==e},t.nodes2Arr=function(e){for(var t=[],n=0;n<e.length;n++)t.push(e[n]);return t},Object.getOwnPropertySymbols),i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,s=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)};t.assign=Object.assign||function(e,t){for(var n,r,l=s(e),u=1;u<arguments.length;u++){for(var c in n=Object(arguments[u]))i.call(n,c)&&(l[c]=n[c]);if(o){r=o(n);for(var d=0;d<r.length;d++)a.call(n,r[d])&&(l[r[d]]=n[r[d]])}}return l}},function(e,t,n){"use strict";var r,o=(r=n(0))&&r.__esModule?r:{default:r},i=n(2);n(4),n(5),n(6),n(7),n(8),n(9),n(10);var a=new o.default,s={prefix:function(e){a.prefix(e)},filter:function(e,t){o.default.filter(e,t)},directive:function(e,t){o.default.directive(e,t)},setDocument:function(e){a.setDocument(e)},discribe:function(e,t,n){o.default.discribe(e,t,n)},Soda:o.default},l=(0,i.assign)((function(e,t){return a.run(e,t)}),s);e.exports=l},function(e,t,n){"use strict";var r;((r=n(0))&&r.__esModule?r:{default:r}).default.directive("repeat",{priority:10,link:function(e){var t,n,r,o=this,i=e.scope,a=e.el,s=e.expression,l=e.getValue,u=(e.parseSodaExpression,e.compileNode),c=s.replace(/\s+by\s+([^\s]+)$/,(function(e,t){return t&&(r=(t||"").trim()),""})),d=/([^\s]+)\s+in\s+([^\s]+)|\(([^,]+)\s*,\s*([^)]+)\)\s+in\s+([^\s]+)/.exec(c);if(d){if(d[1]&&d[2]){if(t=(d[1]||"").trim(),n=(d[2]||"").trim(),!t||!n)return}else d[3]&&d[4]&&d[5]&&(r=(d[3]||"").trim(),t=(d[4]||"").trim(),n=(d[5]||"").trim());r=r||"$index";var f=l(i,n)||[],p=function(e){var n=a.cloneNode(!0),s=Object.create(i);s[r]=e,s[t]=f[e],n.removeAttribute(o._prefix+"repeat"),a.parentNode.insertBefore(n,a),u(n,s)};if("length"in f)for(var m=0;m<f.length;m++)p(m);else for(var m in f)f.hasOwnProperty(m)&&p(m);a.parentNode.removeChild(a),a.childNodes&&a.childNodes.length&&(a.innerHTML="")}}})},function(e,t,n){"use strict";var r;((r=n(0))&&r.__esModule?r:{default:r}).default.directive("if",{priority:9,link:function(e){var t=e.expression,n=e.parseSodaExpression,r=e.scope,o=e.el;n(t,r)||(o.parentNode&&o.parentNode.removeChild(o),o.innerHTML="")}})},function(e,t,n){"use strict";var r,o=(r=n(0))&&r.__esModule?r:{default:r};o.default.directive("class",{link:function(e){var t=e.scope,n=e.el,r=e.expression,o=(0,e.parseSodaExpression)(r,t);o&&function(e,t){e.className?e.className.match(function(e){return new RegExp("(^|\\s+)"+e+"(\\s+|$)","g")}(t))||(e.className+=" "+t):e.className=t}(n,o)}})},function(e,t,n){"use strict";var r;((r=n(0))&&r.__esModule?r:{default:r}).default.directive("html",{link:function(e){var t=e.expression,n=e.scope,r=e.el,o=(0,e.parseSodaExpression)(t,n);o&&(r.innerHTML=o)}})},function(e,t,n){"use strict";var r;((r=n(0))&&r.__esModule?r:{default:r}).default.directive("replace",{link:function(e){var t=e.scope,n=e.el,r=e.expression,o=e.parseSodaExpression,i=e.document,a=o(r,t);if(a){var s=i.createElement("div");if(s.innerHTML=a,n.parentNode)for(;s.childNodes[0];)n.parentNode.insertBefore(s.childNodes[0],n)}n.parentNode&&n.parentNode.removeChild(n)}})},function(e,t,n){"use strict";var r;((r=n(0))&&r.__esModule?r:{default:r}).default.directive("style",{link:function(e){var t=e.scope,n=e.el,r=e.expression,o=(0,e.parseSodaExpression)(r,t),i=function(e,t){return/opacity|z-index/.test(e)?parseFloat(t):isNaN(t)?t:t+"px"};if(o){var a=[];for(var s in o)if(o.hasOwnProperty(s)){var l=i(s,o[s]);a.push([s,l].join(":"))}var u=n.style;for(s=0;s<u.length;s++){var c=u[s];o[c]||a.push([c,u[c]].join(":"))}var d=a.join(";");n.setAttribute("style",d)}}})},function(e,t,n){"use strict";var r,o=(r=n(0))&&r.__esModule?r:{default:r};o.default.directive("include",{priority:8,link:function(e){var t=e.scope,n=e.el,r=e.parseSodaExpression,i=e.expression.replace(/\{\{([^\}]*)\}\}/g,(function(e,n){return r(n,t)})),a=(i=i.split(":"))[0],s=i.slice(1),l=o.default.getTmpl(a,s),u=l.template,c=l.option;u&&((void 0===c?{}:c).compile?n.outerHTML=this.run(u,t):n.outerHTML=u)}})}])},e.exports=t()},968:(e,t,n)=>{"use strict";var r;n.r(t),n.d(t,{default:()=>q});var o="undefined"==typeof document?void 0:document,i=!!o&&"content"in o.createElement("template"),a=!!o&&o.createRange&&"createContextualFragment"in o.createRange();function s(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 l(e,t,n){e[n]!==t[n]&&(e[n]=t[n],e[n]?e.setAttribute(n,""):e.removeAttribute(n))}var u={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)}l(e,t,"selected")},INPUT:function(e,t){l(e,t,"checked"),l(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,a=e.firstChild;a;)if("OPTGROUP"===(r=a.nodeName&&a.nodeName.toUpperCase()))a=(n=a).firstChild;else{if("OPTION"===r){if(a.hasAttribute("selected")){o=i;break}i++}!(a=a.nextSibling)&&n&&(a=n.nextSibling,n=null)}e.selectedIndex=o}}};function c(){}function d(e){if(e)return e.getAttribute&&e.getAttribute("id")||e.id}const f=function(e,t,n){if(n||(n={}),"string"==typeof t)if("#document"===e.nodeName||"HTML"===e.nodeName||"BODY"===e.nodeName){var l=t;(t=o.createElement("html")).innerHTML=l}else f=(f=t).trim(),t=i?function(e){var t=o.createElement("template");return t.innerHTML=e,t.content.childNodes[0]}(f):a?function(e){return r||(r=o.createRange()).selectNode(o.body),r.createContextualFragment(e).childNodes[0]}(f):function(e){var t=o.createElement("body");return t.innerHTML=e,t.childNodes[0]}(f);var f,p=n.getNodeKey||d,m=n.onBeforeNodeAdded||c,v=n.onNodeAdded||c,_=n.onBeforeElUpdated||c,h=n.onElUpdated||c,g=n.onBeforeNodeDiscarded||c,y=n.onNodeDiscarded||c,b=n.onBeforeElChildrenUpdated||c,E=!0===n.childrenOnly,x=Object.create(null),T=[];function N(e){T.push(e)}function A(e,t){if(1===e.nodeType)for(var n=e.firstChild;n;){var r=void 0;t&&(r=p(n))?N(r):(y(n),n.firstChild&&A(n,t)),n=n.nextSibling}}function O(e,t,n){!1!==g(e)&&(t&&t.removeChild(e),y(e),A(e,n))}function S(e){v(e);for(var t=e.firstChild;t;){var n=t.nextSibling,r=p(t);if(r){var o=x[r];o&&s(t,o)?(t.parentNode.replaceChild(o,t),w(o,t)):S(t)}else S(t);t=n}}function w(e,t,n){var r=p(t);if(r&&delete x[r],!n){if(!1===_(e,t))return;if(function(e,t){var n,r,o,i,a=t.attributes;if(11!==t.nodeType&&11!==e.nodeType){for(var s=a.length-1;s>=0;s--)r=(n=a[s]).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,u=l.length-1;u>=0;u--)r=(n=l[u]).name,(o=n.namespaceURI)?(r=n.localName||r,t.hasAttributeNS(o,r)||e.removeAttributeNS(o,r)):t.hasAttribute(r)||e.removeAttribute(r)}}(e,t),h(e),!1===b(e,t))return}"TEXTAREA"!==e.nodeName?function(e,t){var n,r,i,a,l,c=t.firstChild,d=e.firstChild;e:for(;c;){for(a=c.nextSibling,n=p(c);d;){if(i=d.nextSibling,c.isSameNode&&c.isSameNode(d)){c=a,d=i;continue e}r=p(d);var f=d.nodeType,v=void 0;if(f===c.nodeType&&(1===f?(n?n!==r&&((l=x[n])?i===l?v=!1:(e.insertBefore(l,d),r?N(r):O(d,e,!0),d=l):v=!1):r&&(v=!1),(v=!1!==v&&s(d,c))&&w(d,c)):3!==f&&8!=f||(v=!0,d.nodeValue!==c.nodeValue&&(d.nodeValue=c.nodeValue))),v){c=a,d=i;continue e}r?N(r):O(d,e,!0),d=i}if(n&&(l=x[n])&&s(l,c))e.appendChild(l),w(l,c);else{var _=m(c);!1!==_&&(_&&(c=_),c.actualize&&(c=c.actualize(e.ownerDocument||o)),e.appendChild(c),S(c))}c=a,d=i}!function(e,t,n){for(;t;){var r=t.nextSibling;(n=p(t))?N(n):O(t,e,!0),t=r}}(e,d,r);var h=u[e.nodeName];h&&h(e,t)}(e,t):u.TEXTAREA(e,t)}!function e(t){if(1===t.nodeType||11===t.nodeType)for(var n=t.firstChild;n;){var r=p(n);r&&(x[r]=n),e(n),n=n.nextSibling}}(e);var R,C,M=e,j=M.nodeType,L=t.nodeType;if(!E)if(1===j)1===L?s(e,t)||(y(e),M=function(e,t){for(var n=e.firstChild;n;){var r=n.nextSibling;t.appendChild(n),n=r}return t}(e,(R=t.nodeName,(C=t.namespaceURI)&&"http://www.w3.org/1999/xhtml"!==C?o.createElementNS(C,R):o.createElement(R)))):M=t;else if(3===j||8===j){if(L===j)return M.nodeValue!==t.nodeValue&&(M.nodeValue=t.nodeValue),M;M=t}if(M===t)y(e);else{if(t.isSameNode&&t.isSameNode(M))return;if(w(M,t,E),T)for(var $=0,k=T.length;$<k;$++){var P=x[T[$]];P&&O(P,P.parentNode,!1)}}return!E&&M!==e&&e.parentNode&&(M.actualize&&(M=M.actualize(e.ownerDocument||o)),e.parentNode.replaceChild(M,e)),M};var p=n(17),m=n.n(p);const v=e=>{(requestAnimationFrame||setTimeout)(e,1e3/60)},_=e=>{v((()=>v(e)))},h=e=>t=>{t.split(/\s/).map((t=>e.classList.add(t)))},g=e=>t=>{t.split(/\s/).map((t=>e.classList.remove(t)))},y=e=>{for(let t in e)if(t in document.body.style)return e[t]},b=y({animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"animationend",WebkitAnimation:"webkitAnimationEnd"}),E=y({transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"}),x=()=>"xxxxxxxx".replace(/[xy]/g,(e=>{const t=8*Math.random()|0;return("x"==e?t:3&t|8).toString(8)})),T=(e,t)=>{const n=x();return t.setAttribute("data-reactor-id",n),e[n]=t.outerHTML.replace(/<(x-)?template*.>|<\/(x-)?template>/g,""),e},N=(e,t)=>{const n=`${t}-enter`,r=`${t}-enter-active`;h(e)(`${n} ${r}`)},A=(e,t)=>{const n=`${t}-enter`,r=`${t}-enter-active`,o=`${t}-enter-to`,i=g(e),a=h(e),s=()=>{i(`${n} ${r} ${o}`),e.removeEventListener(E,s),e.removeEventListener(b,s)};e.addEventListener(E,s),e.addEventListener(b,s),_((()=>{a(o),i(n)}))},O=(e,t)=>{const n=`${t}-leave`,r=`${t}-leave-active`,o=`${t}-leave-to`,i=g(e),a=h(e);let s=window.getComputedStyle(e).transitionProperty.split(",").length;const l=t=>{"transitionend"==t.type?t.target==e&&(s-=1,s<=1&&(i(`${r} ${o}`),e.removeEventListener(E,l),e.parentNode&&e.parentNode.removeChild(e))):(i(`${r} ${o}`),e.removeEventListener(b,l),e.parentNode&&e.parentNode.removeChild(e))};e.addEventListener(E,l),e.addEventListener(b,l),a(`${n} ${r}`),_((()=>{i(n),a(o)}))},S=(e,t)=>{const n=1==e.nodeType?Array.prototype.slice.call(e.querySelectorAll("[data-animation]")):[],r=e.dataset&&e.dataset.animation?[e].concat(n):n;return r.forEach((e=>t(e,e.dataset.animation))),r.length>0},w=({sodajs:e,models:t})=>{e.directive("repeat",{priority:10,link({scope:e,el:n,expression:r,getValue:o,compileNode:i}){let a,s,l;const u=r.replace(/\s+by\s+([^\s]+)$/,((e,t)=>(t&&(l=(t||"").trim()),""))),c=/([^\s]+)\s+in\s+([^\s]+)|\(([^,]+)\s*,\s*([^)]+)\)\s+in\s+([^\s]+)/.exec(u);if(!c)return;if(c[1]&&c[2]){if(a=(c[1]||"").trim(),s=(c[2]||"").trim(),!a||!s)return}else c[3]&&c[4]&&c[5]&&(l=(c[3]||"").trim(),a=(c[4]||"").trim(),s=(c[5]||"").trim());l=l||"$index";const d=o(e,s)||[],f=r=>{const o=n.cloneNode(!0),s=Object.create(e);s[l]=r,s[a]=d[r],function(e){const t=e.getAttribute("data-component")?[e]:[],n=Array.prototype.slice.call(e.querySelectorAll("[data-component]"));return t.concat(n)}(o).forEach((e=>{const n=x();e.setAttribute("data-model-id",n),t[n]=s})),o.removeAttribute(`${this._prefix}repeat`),n.parentNode.insertBefore(o,n),i(o,s)};if("length"in d)for(var p=0;p<d.length;p++)f(p);else for(var p in d)d.hasOwnProperty(p)&&f(p);n.parentNode.removeChild(n),n.childNodes&&n.childNodes.length&&(n.innerHTML="")}})},R="[data-component]";const C=e=>{const t=new MutationObserver((t=>t.forEach(M(e))));return t.observe(document.body,{childList:!0,subtree:!0}),t},M=e=>t=>{"childList"===t.type&&(t.addedNodes.length?e.onAdd(j()):t.removedNodes.length&&e.onRemove(t.removedNodes))},j=()=>Array.from(document.querySelectorAll(R)).reverse(),L=(e,t,n)=>({getNodeKey:e=>1===e.nodeType&&(e.dataset.key||e.dataset.reactorId),onBeforeElUpdated:r=>$(e,t,n,r),onBeforeElChildrenUpdated:(r,o)=>$(e,t,n,r),onNodeAdded(e){S(e,A)},onBeforeNodeAdded(e){S(e,N)},onBeforeNodeDiscarded:e=>!S(e,O)}),$=(e,t,n,r)=>{if(1===r.nodeType){if("static"in r.dataset)return!1;if(r!==e&&r.dataset.component&&r.__update__){const e=Object.assign(n,t);return r.__update__(e),Array.from(r.querySelectorAll(R)).forEach((t=>{t.dataset.component&&t.__update__&&t.__update__(e)})),!1}}};var k=n(857);const P="CustomEvent"in window&&"function"==typeof window.CustomEvent?(e,t)=>new CustomEvent(e,t):(e,t)=>{const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,!0,!0,t),n},G=(e,t)=>function(n){const r=this,o=n.detail||{};e.__events[t].forEach((e=>{e.handler.apply(r,[n].concat(o.args))}))},V=(e,t)=>{e.__events[t]&&e.__events[t].listener&&(e.removeEventListener(t,e.__events[t].listener,"focus"==t||"blur"==t||"mouseenter"==t||"mouseleave"==t),delete e.__events[t])},U=(e,t,n)=>function(r){const o=this,i=r.detail||{};let a=r.target;for(;a&&(a.matches(t)&&(r.delegateTarget=a,n.apply(o,[r].concat(i.args))),a!==e);)a=a.parentNode},I=(e,t,n)=>{e.dispatchEvent(P(t,{bubbles:!0,detail:n}))},D={},F={},B=(e,t)=>{F[e]=Object.assign({},F[e],t),D[e]&&D[e].forEach((e=>e(t)))},H=e=>{D[e.name]=(D[e.name]||[]).filter((t=>t!=e.method)),D[e.name].length||(delete D[e.name],delete F[e.name])};const z=({element:e,name:t,module:n,view:r})=>{const o=n.view?n.view:e=>e,i=r.models[e.dataset.modelId],a=Object.assign({},n.model,i),s=t.charAt(0).toUpperCase()+t.substring(1),l="development"===r.mode?[(0,k.log)(`Component ${s}`)]:[],u=n.actions||{},c=(0,k.pandora)({model:a,actions:u,middlewares:l,autostart:!1,callback(t){r.update(e,o(t))}});return n.model&&Object.keys(n.model).length&&r.update(e,o(a)),c},J={},q={register(e,t,n){J[e]={name:e,module:t,dependencies:n}},start(){const e=Z();e.mode="production",e.observe()},devStart(){console.time("jails");const e=Z();e.mode="development",e.observe(),console.timeEnd("jails")}},Z=()=>{const e=function(e){const t=document.body,{templates:n,html:r}=((e,t="div")=>{const n=document.createElement(t);return n.innerHTML=e.replace(/<template*.>/g,"<x-template>").replace(/<\/template>/g,"</x-template>"),{templates:Array.from(n.querySelectorAll("[data-component]:not([data-reactor-id])")).reverse().reduce(T,{}),html:n.innerHTML.replace(/<x-template*.>/g,"<template>").replace(/<\/x-template>/g,"</template>")}})(t.innerHTML,"html"),o={},i={};return m().prefix("v-"),w({sodajs:m(),models:o}),{mode:"production",templates:n,models:o,SST:i,update(e,t){if(e){const o=e.dataset.reactorId,a=n[o],s=Object.assign({},e.__model__,(r=t,JSON.parse(JSON.stringify(r)))),l=m()(a,s);f(e,l,L(e,t,i)),e.__model__&&Object.assign(e.__model__,s)}var r},observe(){const n=C(e);return t.innerHTML=m()(r,{}),n},setNewElement(e){T(n,e)}}}({onAdd(t){t.filter((e=>!Boolean(e.__instances__))).forEach((t=>(({element:e,view:t,modules:n})=>{e.__instances__={},e.__model__={};const r=e.dataset.component.split(/\s/);e.dataset.reactorId||t.setNewElement(e),r.forEach((r=>{if(r in n&&!e.__instances__[r]){const o=n[r];_((n=>{const i=function({name:e,element:t,view:n,component:r}){const o=r.module,i=z({name:e,element:t,module:o,view:n}),a=[],s=[];let l,u=new Promise((e=>l=e)),c=()=>null;const d={name:e,injection:r.dependencies,elm:t,msg:i,publish:B,unsubscribe:H,__initialize(e){l(e),e.destroy((e=>{a.forEach((e=>H(e))),s.forEach((e=>t.removeEventListener(":destroy",e)))}))},main(e){u.then((()=>e().forEach((e=>e(d)))))},render(e){n.update(t,e)},expose(n){t.__instances__[e].methods=n},update(e){if(e.apply){const n=((e,t)=>{let n=e.parentNode;for(;n&&n!==document;n=n.parentNode)if(n.matches("[data-component]"))return n;return null})(t);c=e,c(n.__model__)}else c(e)},destroy(e){s.push(e),t.addEventListener(":destroy",e)},on(e,n,r){((e,t,n,r)=>{if(e.__events=e.__events||{},e.__events[t]=e.__events[t]||[],!e.__events[t].length){const n=G(e,t);e.addEventListener(t,n,"focus"==t||"blur"==t||"mouseenter"==t||"mouseleave"==t),e.__events[t].listener=n}n.call?e.__events[t].push({handler:n,callback:n}):e.__events[t].push({handler:U(e,n,r),callback:r})})(t,e,n,r)},off(e,n){((e,t,n)=>{if(n&&e.__events[t]&&e.__events[t].length){var r=e.__events[t];e.__events[t]=e.__events[t].filter((function(e){return e.callback!=n})),e.__events[t].listener=r.listener,e.__events[t].length||V(e,t)}else V(e,t)})(t,e,n)},trigger(e,n,r){n.constructor===String?I(t.querySelector(n),e,{args:r}):I(t,e,{args:n})},emit(e,n){const r=Array.prototype.slice.call(arguments);I(t,r.shift(),{args:r})},get:(e,n)=>function(){const r=Array.prototype.slice.call(arguments),o=r.shift(),i=`[data-component*=${e}]`;if(n=n?i+n:i,Array.from(t.querySelectorAll(n)).forEach((t=>{const n=t.__instances__[e];n&&o in n.methods&&n.methods[o].apply(null,r)})),t.matches(n)){const n=t.__instances__[e];n&&o in n.methods&&n.methods[o].apply(null,r)}},subscribe(e,t){a.push({name:e,method:t}),((e,t)=>{D[e]=D[e]||[],D[e].push(t),e in F&&t(F[e])})(e,t)}};return d}({name:r,element:e,view:t,component:o});e.__instances__[r]={base:i,methods:{}},e.__update__=t=>{for(let n in e.__instances__)e.__instances__[n].base.update(t)},o.module.default(i),i.__initialize(i),delete i.__initialize}))}}))})({element:t,view:e,modules:J})))},onRemove(e){e.forEach((e=>{1===e.nodeType&&Array.from(e.querySelectorAll("[data-component]")).concat(e.dataset.component?e:[]).filter((e=>!document.body.contains(e))).forEach((e=>(({element:e})=>{I(e,":destroy");for(let t in e.__events)e.removeEventListener(t,e.__events[t].listener);delete e.__events,delete e.__instances__,delete e.__model__})({element:e})))}))}});return e}}},t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,n),o.exports}return n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n(968)})()}));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("jails",[],t):"object"==typeof exports?exports.jails=t():e.jails=t()}(self,(function(){return(()=>{var e={17:function(e){var t;t=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get: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=3)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(1),a=n(2);function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var l="undefined"!=typeof document?document:{},u=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"soda-";s(this,e),this._prefix=t}return i(e,[{key:"setDocument",value:function(e){l=e}},{key:"run",value:function(e,t){var n=this,r=l.createElement("div");l.documentMode<9&&(r.style.display="none",l.body.appendChild(r)),r.innerHTML=e,(0,a.nodes2Arr)(r.childNodes).map((function(e){n.compileNode(e,t)}));var i=r.innerHTML;return l.documentMode<9&&l.body.removeChild(r),i}},{key:"prefix",value:function(e){this._prefix=e}},{key:"_getPrefixReg",value:function(){return new RegExp("^"+this._prefix)}},{key:"_getPrefixedDirectiveMap",value:function(){var t=this,n={};return e.sodaDirectives.map((function(e){var r=t._prefix+e.name;n[r]=e})),n}},{key:"_removeSodaMark",value:function(e,t){e.removeAttribute(t)}},{key:"compileNode",value:function(t,n){var i=this,s=this._getPrefixReg(),u=e.sodaDirectives,c=this._getPrefixedDirectiveMap();!function e(t,n){t.nodeType===(t.TEXT_NODE||3)&&(t.nodeValue=t.nodeValue.replace(o.VALUE_OUT_REG,(function(e,t){var o=i.parseSodaExpression(t,n);return"object"===(void 0===o?"undefined":r(o))&&(o=JSON.stringify(o,null,2)),o}))),t.attributes&&t.attributes.length&&(u.map((function(e){var r=e.name,o=e.opt,s=i._prefix+r;if((0,a.exist)(t.getAttribute(s))){var u=t.getAttribute(s);o.link.bind(i)({expression:u,scope:n,el:t,parseSodaExpression:i.parseSodaExpression.bind(i),getValue:i.getValue.bind(i),compileNode:i.compileNode.bind(i),document:l}),i._removeSodaMark(t,s)}})),(0,a.nodes2Arr)(t.attributes).filter((function(e){return!c[e.name]})).map((function(e){if(s.test(e.name)){var r=e.name.replace(s,"");if(r&&(0,a.exist)(e.value)){var o=i.parseComplexExpression(e.value,n);!1!==o&&(0,a.exist)(o)&&t.setAttribute(r,o),i._removeSodaMark(t,e.name)}}else(0,a.exist)(e.value)&&(e.value=i.parseComplexExpression(e.value,n))}))),(0,a.nodes2Arr)(t.childNodes).map((function(t){e(t,n)}))}(t,n)}},{key:"getEvalFunc",value:function(t){return new Function("getValue","sodaFilterMap","return function sodaExp(scope){ return "+t+"}")(this.getValue,e.sodaFilterMap)}},{key:"getValue",value:function(e,t){return o.CONST_REGG.lastIndex=0,t.replace(o.CONST_REGG,(function(t){return void 0===e[t]?t:e[t]})),"true"===t||"false"!==t&&function t(n,r){var i=r.indexOf(".");if(i>-1){var a=r.substr(0,i);return r=r.substr(i+1),void 0!==e[a]&&o.CONST_REG.test(a)&&(a=e[a]),void 0!==n[a]&&null!==n[a]?t(n[a],r):""}return r=r.trim(),void 0!==e[r]&&o.CONST_REG.test(r)&&(r=e[r]),void 0!==n[r]?n[r]:""}(e,t)}},{key:"parseComplexExpression",value:function(e,t){var n=this,r=o.ONLY_VALUE_OUT_REG.exec(e);if(r){var i=r[1];return this.parseSodaExpression(i,t)}return e.replace(o.VALUE_OUT_REG,(function(e,r){return n.parseSodaExpression(r,t)}))}},{key:"parseSodaExpression",value:function(e,t){var n=this;e=(e=e.replace(o.STRING_REG,(function(e,n,r){var i=(0,a.getRandom)();return t[i]=n||r,i}))).replace(o.OR_REG,o.OR_REPLACE).split("|");for(var r=0;r<e.length;r++)e[r]=(e[r].replace(new RegExp(o.OR_REPLACE,"g"),"||")||"").trim();for(var i=e[0]||"",s=e.slice(1);o.ATTR_REG_NG.test(i);)o.ATTR_REG.lastIndex=0,i=i.replace(o.ATTR_REG,(function(e,r){var i=(0,a.getAttrVarKey)(),o=n.parseSodaExpression(r,t);return t[i]=o,"."+i}));return i=i.replace(o.OBJECT_REG,(function(e){return"getValue(scope,'"+e.trim()+"')"})),i=this.parseFilter(s,i),this.getEvalFunc(i)(t)}},{key:"parseFilter",value:function(t,n){var r=e.sodaFilterMap;return function e(){if(i=t.shift()){for(var i,a=(i=i.split(":")).slice(1)||[],s=(i[0]||"").trim(),l=0;l<a.length;l++)o.OBJECT_REG_NG.test(a[l])&&(a[l]="getValue(scope,'"+a[l]+"')");r[s]&&(a.unshift(n),a=a.join(","),n="sodaFilterMap['"+s+"']("+a+")"),e()}}(),n}}],[{key:"filter",value:function(e,t){this.sodaFilterMap[e]=t}},{key:"getFilter",value:function(e){return this.sodaFilterMap[e]}},{key:"directive",value:function(e,t){var n=t.priority,r=void 0===n?0:n,i=void 0;for(i=0;i<this.sodaDirectives.length;i++){var o=this.sodaDirectives[i].opt.priority,a=void 0===o?0:o;if(r<a);else if(r>=a)break}this.sodaDirectives.splice(i,0,{name:e,opt:t})}},{key:"discribe",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{compile:!0};this.template[e]={funcOrStr:t,option:n}}},{key:"getTmpl",value:function(e,t){var n=this.template[e],r=n.funcOrStr,i=n.option,o=void 0===i?{}:i;return{template:"function"==typeof r?r.apply(null,t):r,option:o}}}]),e}();u.sodaDirectives=[],u.sodaFilterMap={},u.template={},t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IDENTOR_REG=/[a-zA-Z_\$]+[\w\$]*/g,t.STRING_REG=/"([^"]*)"|'([^']*)'/g,t.NUMBER_REG=/\d+|\d*\.\d+/g,t.OBJECT_REG=/[a-zA-Z_\$]+[\w\$]*(?:\s*\.\s*(?:[a-zA-Z_\$]+[\w\$]*|\d+))*/g,t.OBJECT_REG_NG=/[a-zA-Z_\$]+[\w\$]*(?:\s*\.\s*(?:[a-zA-Z_\$]+[\w\$]*|\d+))*/,t.ATTR_REG=/\[([^\[\]]*)\]/g,t.ATTR_REG_NG=/\[([^\[\]]*)\]/,t.ATTR_REG_DOT=/\.([a-zA-Z_\$]+[\w\$]*)/g,t.NOT_ATTR_REG=/[^\.|]([a-zA-Z_\$]+[\w\$]*)/g,t.OR_REG=/\|\|/g,t.OR_REPLACE="OR_OPERATOR",t.CONST_PRIFIX="_$C$_",t.CONST_REG=/^_\$C\$_/,t.CONST_REGG=/_\$C\$_[^\.]+/g,t.VALUE_OUT_REG=/\{\{([^\}]*)\}\}/g,t.ONLY_VALUE_OUT_REG=/^\{\{([^\}]*)\}\}$/},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assign=t.nodes2Arr=t.exist=t.getRandom=t.getAttrVarKey=void 0;var r=n(1),i=(t.getAttrVarKey=function(){return r.CONST_PRIFIX+~~(1e6*Math.random())},t.getRandom=function(){return"$$"+~~(1e6*Math.random())},t.exist=function(e){return null!=e&&""!==e&&void 0!==e},t.nodes2Arr=function(e){for(var t=[],n=0;n<e.length;n++)t.push(e[n]);return t},Object.getOwnPropertySymbols),o=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,s=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)};t.assign=Object.assign||function(e,t){for(var n,r,l=s(e),u=1;u<arguments.length;u++){for(var c in n=Object(arguments[u]))o.call(n,c)&&(l[c]=n[c]);if(i){r=i(n);for(var d=0;d<r.length;d++)a.call(n,r[d])&&(l[r[d]]=n[r[d]])}}return l}},function(e,t,n){"use strict";var r,i=(r=n(0))&&r.__esModule?r:{default:r},o=n(2);n(4),n(5),n(6),n(7),n(8),n(9),n(10);var a=new i.default,s={prefix:function(e){a.prefix(e)},filter:function(e,t){i.default.filter(e,t)},directive:function(e,t){i.default.directive(e,t)},setDocument:function(e){a.setDocument(e)},discribe:function(e,t,n){i.default.discribe(e,t,n)},Soda:i.default},l=(0,o.assign)((function(e,t){return a.run(e,t)}),s);e.exports=l},function(e,t,n){"use strict";var r;((r=n(0))&&r.__esModule?r:{default:r}).default.directive("repeat",{priority:10,link:function(e){var t,n,r,i=this,o=e.scope,a=e.el,s=e.expression,l=e.getValue,u=(e.parseSodaExpression,e.compileNode),c=s.replace(/\s+by\s+([^\s]+)$/,(function(e,t){return t&&(r=(t||"").trim()),""})),d=/([^\s]+)\s+in\s+([^\s]+)|\(([^,]+)\s*,\s*([^)]+)\)\s+in\s+([^\s]+)/.exec(c);if(d){if(d[1]&&d[2]){if(t=(d[1]||"").trim(),n=(d[2]||"").trim(),!t||!n)return}else d[3]&&d[4]&&d[5]&&(r=(d[3]||"").trim(),t=(d[4]||"").trim(),n=(d[5]||"").trim());r=r||"$index";var f=l(o,n)||[],p=function(e){var n=a.cloneNode(!0),s=Object.create(o);s[r]=e,s[t]=f[e],n.removeAttribute(i._prefix+"repeat"),a.parentNode.insertBefore(n,a),u(n,s)};if("length"in f)for(var v=0;v<f.length;v++)p(v);else for(var v in f)f.hasOwnProperty(v)&&p(v);a.parentNode.removeChild(a),a.childNodes&&a.childNodes.length&&(a.innerHTML="")}}})},function(e,t,n){"use strict";var r;((r=n(0))&&r.__esModule?r:{default:r}).default.directive("if",{priority:9,link:function(e){var t=e.expression,n=e.parseSodaExpression,r=e.scope,i=e.el;n(t,r)||(i.parentNode&&i.parentNode.removeChild(i),i.innerHTML="")}})},function(e,t,n){"use strict";var r,i=(r=n(0))&&r.__esModule?r:{default:r};i.default.directive("class",{link:function(e){var t=e.scope,n=e.el,r=e.expression,i=(0,e.parseSodaExpression)(r,t);i&&function(e,t){e.className?e.className.match(function(e){return new RegExp("(^|\\s+)"+e+"(\\s+|$)","g")}(t))||(e.className+=" "+t):e.className=t}(n,i)}})},function(e,t,n){"use strict";var r;((r=n(0))&&r.__esModule?r:{default:r}).default.directive("html",{link:function(e){var t=e.expression,n=e.scope,r=e.el,i=(0,e.parseSodaExpression)(t,n);i&&(r.innerHTML=i)}})},function(e,t,n){"use strict";var r;((r=n(0))&&r.__esModule?r:{default:r}).default.directive("replace",{link:function(e){var t=e.scope,n=e.el,r=e.expression,i=e.parseSodaExpression,o=e.document,a=i(r,t);if(a){var s=o.createElement("div");if(s.innerHTML=a,n.parentNode)for(;s.childNodes[0];)n.parentNode.insertBefore(s.childNodes[0],n)}n.parentNode&&n.parentNode.removeChild(n)}})},function(e,t,n){"use strict";var r;((r=n(0))&&r.__esModule?r:{default:r}).default.directive("style",{link:function(e){var t=e.scope,n=e.el,r=e.expression,i=(0,e.parseSodaExpression)(r,t),o=function(e,t){return/opacity|z-index/.test(e)?parseFloat(t):isNaN(t)?t:t+"px"};if(i){var a=[];for(var s in i)if(i.hasOwnProperty(s)){var l=o(s,i[s]);a.push([s,l].join(":"))}var u=n.style;for(s=0;s<u.length;s++){var c=u[s];i[c]||a.push([c,u[c]].join(":"))}var d=a.join(";");n.setAttribute("style",d)}}})},function(e,t,n){"use strict";var r,i=(r=n(0))&&r.__esModule?r:{default:r};i.default.directive("include",{priority:8,link:function(e){var t=e.scope,n=e.el,r=e.parseSodaExpression,o=e.expression.replace(/\{\{([^\}]*)\}\}/g,(function(e,n){return r(n,t)})),a=(o=o.split(":"))[0],s=o.slice(1),l=i.default.getTmpl(a,s),u=l.template,c=l.option;u&&((void 0===c?{}:c).compile?n.outerHTML=this.run(u,t):n.outerHTML=u)}})}])},e.exports=t()}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,n),o.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";n.r(r),n.d(r,{default:()=>M});var e,t={};n.r(t),n.d(t,{publish:()=>_,subscribe:()=>g,unsubscribe:()=>y});var i="undefined"==typeof document?void 0:document,o=!!i&&"content"in i.createElement("template"),a=!!i&&i.createRange&&"createContextualFragment"in i.createRange();function s(e,t){var n,r,i=e.nodeName,o=t.nodeName;return i===o||(n=i.charCodeAt(0),r=o.charCodeAt(0),n<=90&&r>=97?i===o.toUpperCase():r<=90&&n>=97&&o===i.toUpperCase())}function l(e,t,n){e[n]!==t[n]&&(e[n]=t[n],e[n]?e.setAttribute(n,""):e.removeAttribute(n))}var u={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)}l(e,t,"selected")},INPUT:function(e,t){l(e,t,"checked"),l(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 i=r.nodeValue;if(i==n||!n&&i==e.placeholder)return;r.nodeValue=n}},SELECT:function(e,t){if(!t.hasAttribute("multiple")){for(var n,r,i=-1,o=0,a=e.firstChild;a;)if("OPTGROUP"===(r=a.nodeName&&a.nodeName.toUpperCase()))a=(n=a).firstChild;else{if("OPTION"===r){if(a.hasAttribute("selected")){i=o;break}o++}!(a=a.nextSibling)&&n&&(a=n.nextSibling,n=null)}e.selectedIndex=i}}};function c(){}function d(e){if(e)return e.getAttribute&&e.getAttribute("id")||e.id}const f=function(t,n,r){if(r||(r={}),"string"==typeof n)if("#document"===t.nodeName||"HTML"===t.nodeName||"BODY"===t.nodeName){var l=n;(n=i.createElement("html")).innerHTML=l}else f=(f=n).trim(),n=o?function(e){var t=i.createElement("template");return t.innerHTML=e,t.content.childNodes[0]}(f):a?function(t){return e||(e=i.createRange()).selectNode(i.body),e.createContextualFragment(t).childNodes[0]}(f):function(e){var t=i.createElement("body");return t.innerHTML=e,t.childNodes[0]}(f);var f,p=r.getNodeKey||d,v=r.onBeforeNodeAdded||c,m=r.onNodeAdded||c,h=r.onBeforeElUpdated||c,b=r.onElUpdated||c,_=r.onBeforeNodeDiscarded||c,g=r.onNodeDiscarded||c,y=r.onBeforeElChildrenUpdated||c,E=!0===r.childrenOnly,x=Object.create(null),N=[];function A(e){N.push(e)}function T(e,t){if(1===e.nodeType)for(var n=e.firstChild;n;){var r=void 0;t&&(r=p(n))?A(r):(g(n),n.firstChild&&T(n,t)),n=n.nextSibling}}function O(e,t,n){!1!==_(e)&&(t&&t.removeChild(e),g(e),T(e,n))}function S(e){m(e);for(var t=e.firstChild;t;){var n=t.nextSibling,r=p(t);if(r){var i=x[r];i&&s(t,i)?(t.parentNode.replaceChild(i,t),R(i,t)):S(t)}else S(t);t=n}}function R(e,t,n){var r=p(t);if(r&&delete x[r],!n){if(!1===h(e,t))return;if(function(e,t){var n,r,i,o,a=t.attributes;if(11!==t.nodeType&&11!==e.nodeType){for(var s=a.length-1;s>=0;s--)r=(n=a[s]).name,i=n.namespaceURI,o=n.value,i?(r=n.localName||r,e.getAttributeNS(i,r)!==o&&("xmlns"===n.prefix&&(r=n.name),e.setAttributeNS(i,r,o))):e.getAttribute(r)!==o&&e.setAttribute(r,o);for(var l=e.attributes,u=l.length-1;u>=0;u--)r=(n=l[u]).name,(i=n.namespaceURI)?(r=n.localName||r,t.hasAttributeNS(i,r)||e.removeAttributeNS(i,r)):t.hasAttribute(r)||e.removeAttribute(r)}}(e,t),b(e),!1===y(e,t))return}"TEXTAREA"!==e.nodeName?function(e,t){var n,r,o,a,l,c=t.firstChild,d=e.firstChild;e:for(;c;){for(a=c.nextSibling,n=p(c);d;){if(o=d.nextSibling,c.isSameNode&&c.isSameNode(d)){c=a,d=o;continue e}r=p(d);var f=d.nodeType,m=void 0;if(f===c.nodeType&&(1===f?(n?n!==r&&((l=x[n])?o===l?m=!1:(e.insertBefore(l,d),r?A(r):O(d,e,!0),d=l):m=!1):r&&(m=!1),(m=!1!==m&&s(d,c))&&R(d,c)):3!==f&&8!=f||(m=!0,d.nodeValue!==c.nodeValue&&(d.nodeValue=c.nodeValue))),m){c=a,d=o;continue e}r?A(r):O(d,e,!0),d=o}if(n&&(l=x[n])&&s(l,c))e.appendChild(l),R(l,c);else{var h=v(c);!1!==h&&(h&&(c=h),c.actualize&&(c=c.actualize(e.ownerDocument||i)),e.appendChild(c),S(c))}c=a,d=o}!function(e,t,n){for(;t;){var r=t.nextSibling;(n=p(t))?A(n):O(t,e,!0),t=r}}(e,d,r);var b=u[e.nodeName];b&&b(e,t)}(e,t):u.TEXTAREA(e,t)}!function e(t){if(1===t.nodeType||11===t.nodeType)for(var n=t.firstChild;n;){var r=p(n);r&&(x[r]=n),e(n),n=n.nextSibling}}(t);var C,M,w=t,G=w.nodeType,j=n.nodeType;if(!E)if(1===G)1===j?s(t,n)||(g(t),w=function(e,t){for(var n=e.firstChild;n;){var r=n.nextSibling;t.appendChild(n),n=r}return t}(t,(C=n.nodeName,(M=n.namespaceURI)&&"http://www.w3.org/1999/xhtml"!==M?i.createElementNS(M,C):i.createElement(C)))):w=n;else if(3===G||8===G){if(j===G)return w.nodeValue!==n.nodeValue&&(w.nodeValue=n.nodeValue),w;w=n}if(w===n)g(t);else{if(n.isSameNode&&n.isSameNode(w))return;if(R(w,n,E),N)for(var P=0,k=N.length;P<k;P++){var L=x[N[P]];L&&O(L,L.parentNode,!1)}}return!E&&w!==t&&t.parentNode&&(w.actualize&&(w=w.actualize(t.ownerDocument||i)),t.parentNode.replaceChild(w,t)),w};var p=n(17),v=n.n(p);const m=e=>{(requestAnimationFrame||setTimeout)(e,1e3/60)},h={},b={},_=(e,t)=>{b[e]=Object.assign({},b[e],t),h[e]&&h[e].forEach((e=>e(t)))},g=(e,t)=>{h[e]=h[e]||[],h[e].push(t),e in b&&t(b[e])},y=e=>{h[e.name]=(h[e.name]||[]).filter((t=>t!=e.method)),h[e.name].length||(delete h[e.name],delete b[e.name])},E="CustomEvent"in window&&"function"==typeof window.CustomEvent?(e,t)=>new CustomEvent(e,t):(e,t)=>{const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,!0,!0,t),n},x=(e,t)=>function(n){const r=this,i=n.detail||{};e.__events[t].forEach((e=>{e.handler.apply(r,[n].concat(i.args))}))},N=(e,t)=>{e.__events[t]&&e.__events[t].listener&&(e.removeEventListener(t,e.__events[t].listener,"focus"==t||"blur"==t||"mouseenter"==t||"mouseleave"==t),delete e.__events[t])},A=(e,t,n)=>function(r){const i=this,o=r.detail||{};let a=r.target;for(;a&&(a.matches(t)&&(r.delegateTarget=a,n.apply(i,[r].concat(o.args))),a!==e);)a=a.parentNode},T=(e,t,n)=>{e.dispatchEvent(E(t,{bubbles:!0,detail:n}))};var O;(O=v()).prefix("v-"),O.directive("repeat",{priority:10,link({scope:e,el:t,expression:n,getValue:r,compileNode:i}){let o,a,s;const l=n.replace(/\s+by\s+([^\s]+)$/,((e,t)=>(t&&(s=(t||"").trim()),""))),u=/([^\s]+)\s+in\s+([^\s]+)|\(([^,]+)\s*,\s*([^)]+)\)\s+in\s+([^\s]+)/.exec(l);if(!u)return;if(u[1]&&u[2]){if(o=(u[1]||"").trim(),a=(u[2]||"").trim(),!o||!a)return}else u[3]&&u[4]&&u[5]&&(s=(u[3]||"").trim(),o=(u[4]||"").trim(),a=(u[5]||"").trim());s=s||"$index";const c=r(e,a)||[],d=n=>{const r=t.cloneNode(!0),a=Object.create(e);a[s]=n,a[o]=c[n],r.removeAttribute(`${this._prefix}repeat`),t.parentNode.insertBefore(r,t),Array.from(r.querySelectorAll("[data-component]")).forEach((e=>e.setAttribute("initialState",JSON.stringify(a)))),i(r,a)};if("length"in c)for(var f=0;f<c.length;f++)d(f);else for(var f in c)c.hasOwnProperty(f)&&d(f);t.parentNode.removeChild(t),t.childNodes&&t.childNodes.length&&(t.innerHTML="")}});let S={},R=[];const C={},M={start(){w.start(),w.observe()},register(e,t,n={}){C[e]={name:e,module:t,dependencies:n}}},w={start(){var e;e=document.body,Array.from(e.querySelectorAll("template")).forEach((e=>{e.parentNode.replaceChild(e.content,e)})),w.scan(document.body,G)},scan(e,t){if(1===e.nodeType){const n=Array.from(e.querySelectorAll("[data-component]"));(e.dataset.component?[e].concat(n):n).reverse().forEach(t)}},observe(){new MutationObserver((e=>e.forEach((e=>{"childList"===e.type&&(e.addedNodes.length?Array.from(e.addedNodes).forEach((e=>w.scan(e,G))):e.removedNodes.length&&Array.from(e.removedNodes).forEach((e=>w.scan(e,w.remove))))})))).observe(document.body,{childList:!0,subtree:!0})},remove(e){const t=R.find((t=>t.element==e));t&&t.dispose()}},G=e=>{let n,r;e.getAttribute("tplid")?(n=e.getAttribute("tplid"),r=R.find((e=>e.tplid==n)).template):(n="xxxxxxxx".replace(/[xy]/g,(e=>{const t=8*Math.random()|0;return("x"==e?t:3&t|8).toString(8)})),e.setAttribute("tplid",n),r=j(e.outerHTML));const i={tplid:n,element:e,template:r,instances:{},destroyers:[],promises:[],view:e=>e,parentUpdate:e=>null,dispose(){i.promises.length?Promise.all(i.promises).then((e=>{this.destroyers.forEach((e=>e(i)))})):this.destroyers.forEach((e=>e(i)))},model:Object.assign({},JSON.parse(e.getAttribute("initialState"))),update(t,n=!1){this.model=Object.assign({global:S},this.model,t),S=P(t),n&&this.parentUpdate(this.model);const r=JSON.parse(JSON.stringify(this.model));f(e,v()(this.template,this.view(r)),{onNodeDiscarded:e=>(w.scan(e,w.remove),!0),onBeforeElUpdated:(e,t)=>!(e.isEqualNode(t)||1==e.nodeType&&"static"in e.dataset)}),m((t=>{Array.from(e.querySelectorAll("[data-component]")).forEach((e=>{const t=JSON.parse(e.getAttribute("initialState"))||{},n=R.find((t=>t.element==e)),{global:r,parent:i,...o}=this.model;if(n){const e=Object.assign(t,{parent:o,global:S});n.update(e,!0)}}))}))}};R.push(i),e.dataset.component.split(/\s/).forEach((n=>{const r=C[n];if(!r)return void console.warn(`Jails - Module ${n} not registered`);const{module:o,dependencies:a}=r;i.model=Object.assign({},o.model,i.model);const s=function({name:e,element:t,dependencies:n,Pubsub:r,ElementInterface:i,AST:o}){const a=[];let s,l=[],u=new Promise((e=>s=e));const c={name:e,dependencies:n,elm:t,publish:r.publish,unsubscribe:r.unsubscribe,__initialize(){s(c)},main(e){u.then((t=>e().forEach((e=>e(c))))).catch((e=>console.error(e)))},expose(t){i.instances[e].methods=t},state:{set(e){if(e.constructor===Function){const t=i.model;e(t),i.update(t)}else i.update(e);return l.forEach((e=>e(i.model))),new Promise((e=>m(e)))},get:()=>i.model,subscribe(e){l.push(e)},unsubscribe(e){l=l.filter((t=>t!==e))}},destroy(e){i.destroyers.push(e)},on(e,n,r){((e,t,n,r)=>{if(e.__events=e.__events||{},e.__events[t]=e.__events[t]||[],!e.__events[t].length){const n=x(e,t);e.addEventListener(t,n,"focus"==t||"blur"==t||"mouseenter"==t||"mouseleave"==t),e.__events[t].listener=n}n.call?e.__events[t].push({handler:n,callback:n}):e.__events[t].push({handler:A(e,n,r),callback:r})})(t,e,n,r)},off(e,n){((e,t,n)=>{if(n&&e.__events[t]&&e.__events[t].length){var r=e.__events[t];e.__events[t]=e.__events[t].filter((function(e){return e.callback!=n})),e.__events[t].listener=r.listener,e.__events[t].length||N(e,t)}else N(e,t)})(t,e,n)},trigger(e,n,r){n.constructor===String?T(t.querySelector(n),e,{args:r}):T(t,e,{args:n})},emit(e,n){const r=Array.prototype.slice.call(arguments);T(t,r.shift(),{args:r})},update(e){i.parentUpdate=e},get:(e,n)=>function(){m((r=>{const i=Array.prototype.slice.call(arguments),a=i.shift(),s=`[data-component*=${e}]`;if(n=n?s+n:s,Array.from(t.querySelectorAll(n)).forEach((t=>{const n=o.find((e=>e.element==t));if(n){const t=n.instances[e];t&&a in t.methods&&t.methods[a].apply(null,i)}})),t.matches(n)){const n=o.find((e=>e.element==t)).instances[e];n&&a in n.methods&&n.methods[a].apply(null,i)}}))},subscribe(e,t){a.push({name:e,method:t}),r.subscribe(e,t)}};return c}({name:n,element:e,dependencies:a,Pubsub:t,ElementInterface:i,AST:R}),l=o.default(s);l&&l.then&&i.promises.push(l),s.__initialize(),i.view=o.view||i.view,i.instances[n]={methods:{}}})),i.update()},j=e=>{const t=(e=>e.replace(/<template.*?>|<\/template>/g,""))(e),n=document.createElement("div");return n.innerHTML=t,Array.from(n.querySelectorAll("[data-component]")).forEach((e=>{const t=R.find((t=>t.tplid===e.getAttribute("tplid")));t&&(e.outerHTML=t.template)})),n.innerHTML},P=e=>(Object.assign(S,e),delete S.parent,delete S.global,S)})(),r})()}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jails-js",
3
- "version": "4.2.1",
3
+ "version": "5.0.0-beta.2",
4
4
  "description": "A Modern Javascript Library",
5
5
  "main": "dist/jails.js",
6
6
  "scripts": {
@@ -29,11 +29,10 @@
29
29
  "@babel/preset-env": "^7.2.3",
30
30
  "babel-loader": "^8.0.5",
31
31
  "babel-preset-env": "^1.7.0",
32
- "webpack": "^4.29.0",
32
+ "webpack": "^5.59.1",
33
33
  "webpack-cli": "^3.2.1"
34
34
  },
35
35
  "dependencies": {
36
- "jails.packages": "jails-org/packages.git",
37
36
  "morphdom": "^2.6.1",
38
37
  "sodajs": "^0.4.10"
39
38
  }
package/src/component.js CHANGED
@@ -1,61 +1,68 @@
1
- import { pandora, log } from 'jails.packages/pandora'
2
1
  import { on, off, trigger } from './utils/events'
3
- import * as Pubsub from './utils/pubsub'
4
- import { getParent } from './utils'
2
+ import { rAF } from './utils'
5
3
 
6
- export default function Component ({ name, element, view, component }) {
4
+ export default function Component ({
5
+ name,
6
+ element,
7
+ dependencies,
8
+ Pubsub,
9
+ ElementInterface,
10
+ AST
11
+ }) {
7
12
 
8
- const module = component.module
9
- const store = Store({ name, element, module, view })
10
13
  const subscriptions = []
11
- const destroyers = []
12
14
 
15
+ let stateSubscriptions = []
13
16
  let resolver
14
17
  let promise = new Promise(resolve => resolver = resolve)
15
- let updater = () => null
16
18
 
17
19
  const base = {
18
20
 
19
21
  name,
20
- injection: component.dependencies,
22
+ dependencies,
21
23
  elm: element,
22
- msg: store,
23
24
  publish: Pubsub.publish,
24
25
  unsubscribe: Pubsub.unsubscribe,
25
26
 
26
- __initialize(base) {
27
+ __initialize() {
27
28
  resolver(base)
28
- base.destroy( _ => {
29
- subscriptions.forEach(topic => Pubsub.unsubscribe(topic))
30
- destroyers.forEach(fn => element.removeEventListener(':destroy', fn))
31
- })
32
29
  },
33
30
 
34
31
  main(fn) {
35
- promise.then(() => fn().forEach(lambda => lambda(base)))
36
- },
37
-
38
- render(data) {
39
- view.update(element, data)
32
+ promise
33
+ .then( _ => fn().forEach(lambda => lambda(base)))
34
+ .catch( err => console.error( err) )
40
35
  },
41
36
 
42
37
  expose(methods) {
43
- element.__instances__[name].methods = methods
38
+ ElementInterface.instances[name].methods = methods
44
39
  },
45
40
 
46
- update(data) {
47
- if( data.apply ){
48
- const _parent = getParent(element, '[data-component]')
49
- updater = data
50
- updater( _parent.__model__ )
51
- }else {
52
- updater( data )
41
+ state: {
42
+ set( state ) {
43
+ if( state.constructor === Function ){
44
+ const model = ElementInterface.model
45
+ state(model)
46
+ ElementInterface.update(model)
47
+ } else {
48
+ ElementInterface.update(state)
49
+ }
50
+ stateSubscriptions.forEach( fn => fn(ElementInterface.model) )
51
+ return new Promise((resolve) => rAF(resolve))
52
+ },
53
+ get() {
54
+ return ElementInterface.model
55
+ },
56
+ subscribe(fn){
57
+ stateSubscriptions.push(fn)
58
+ },
59
+ unsubscribe(fn){
60
+ stateSubscriptions = stateSubscriptions.filter( item => item !== fn )
53
61
  }
54
62
  },
55
63
 
56
64
  destroy(callback) {
57
- destroyers.push(callback)
58
- element.addEventListener(':destroy', callback)
65
+ ElementInterface.destroyers.push(callback)
59
66
  },
60
67
 
61
68
  on(name, selectorOrCallback, callback) {
@@ -77,28 +84,36 @@ export default function Component ({ name, element, view, component }) {
77
84
  trigger(element, args.shift(), { args: args })
78
85
  },
79
86
 
87
+ update(fn) {
88
+ ElementInterface.parentUpdate = fn
89
+ },
90
+
80
91
  get(name, query) {
81
92
 
82
93
  return function () {
83
-
84
- const args = Array.prototype.slice.call(arguments),
94
+ rAF(_ => {
95
+ const args = Array.prototype.slice.call(arguments),
85
96
  method = args.shift(),
86
97
  selector = `[data-component*=${name}]`
87
-
88
- query = query ? selector + query : selector
89
-
90
- Array.from(element.querySelectorAll(query))
91
- .forEach(el => {
92
- const instance = el.__instances__[name]
93
- if (instance && (method in instance.methods))
98
+ query = query ? selector + query : selector
99
+
100
+ Array.from(element.querySelectorAll(query))
101
+ .forEach(el => {
102
+ const item = AST.find( item => item.element == el )
103
+ if( item ) {
104
+ const instance = item.instances[name]
105
+ if (instance && (method in instance.methods))
106
+ instance.methods[method].apply(null, args)
107
+ }
108
+ })
109
+
110
+ if (element.matches(query)) {
111
+ const item = AST.find( item => item.element == element )
112
+ const instance = item.instances[name]
113
+ if (instance && method in instance.methods)
94
114
  instance.methods[method].apply(null, args)
95
- })
96
-
97
- if (element.matches(query)) {
98
- const instance = element.__instances__[name]
99
- if (instance && method in instance.methods)
100
- instance.methods[method].apply(null, args)
101
- }
115
+ }
116
+ })
102
117
  }
103
118
  },
104
119
 
@@ -109,35 +124,4 @@ export default function Component ({ name, element, view, component }) {
109
124
  }
110
125
 
111
126
  return base
112
-
113
- }
114
-
115
- const Store = ({ element, name, module, view:View }) => {
116
-
117
- const view = module.view ? module.view : state => state
118
- const initialState = View.models[element.dataset.modelId]
119
- const model = Object.assign({}, module.model, initialState)
120
- const title = name.charAt(0).toUpperCase() + name.substring(1)
121
-
122
- const middlewares = View.mode === 'development'
123
- ? [log(`Component ${title}`)]
124
- : []
125
-
126
- const actions = module.actions || {}
127
-
128
- const store = pandora({
129
- model,
130
- actions,
131
- middlewares,
132
- autostart: false,
133
- callback(state) {
134
- View.update(element, view(state))
135
- }
136
- })
137
-
138
- if (module.model && Object.keys(module.model).length) {
139
- View.update(element, view(model))
140
- }
141
-
142
- return store
143
127
  }
package/src/index.js CHANGED
@@ -1,51 +1,187 @@
1
- import View from './view'
2
- import { ismounted, create, destroy } from './element'
1
+ import morphdom from 'morphdom'
2
+ import sodajs from 'sodajs'
3
3
 
4
- const modules = {}
4
+ import { uuid, stripTemplateTags, stripTemplateTag, rAF } from './utils'
5
+ import * as Pubsub from './utils/pubsub'
6
+ import sodaSetConfig from './soda-config'
7
+
8
+ import Component from './component'
9
+
10
+ sodaSetConfig( sodajs )
11
+
12
+ let SST = {}
13
+ let AST = []
14
+ const components = {}
5
15
 
6
16
  export default {
7
17
 
8
- register( name, module, dependencies ){
9
- modules[ name ] = { name, module, dependencies }
18
+ start() {
19
+ Template.start()
20
+ Template.observe()
21
+ },
22
+
23
+ register( name, module, dependencies = {} ) {
24
+ components[name] = { name, module, dependencies }
25
+ }
26
+ }
27
+
28
+ const Template = {
29
+
30
+ start() {
31
+ stripTemplateTag( document.body )
32
+ Template.scan( document.body, Element )
33
+ },
34
+
35
+ scan( root, callback ) {
36
+ if( root.nodeType === 1 ) {
37
+ const list = Array.from( root.querySelectorAll('[data-component]') )
38
+ const components = root.dataset.component? [root].concat(list) : list
39
+ components.reverse().forEach( callback )
40
+ }
10
41
  },
11
42
 
12
- start(){
13
- const view = getView()
14
- view.mode = 'production'
15
- view.observe()
43
+ observe() {
44
+ const observer = new MutationObserver(mutations => mutations.forEach( mutation => {
45
+ if (mutation.type === 'childList') {
46
+ if (mutation.addedNodes.length) {
47
+ Array.from(mutation.addedNodes).forEach( node => Template.scan(node, Element) )
48
+ } else if (mutation.removedNodes.length) {
49
+ Array.from(mutation.removedNodes).forEach( node => Template.scan(node, Template.remove) )
50
+ }
51
+ }
52
+ }))
53
+ observer.observe(document.body, { childList: true, subtree: true })
16
54
  },
17
55
 
18
- devStart(){
19
- console.time('jails')
20
- const view = getView()
21
- view.mode = 'development'
22
- view.observe()
23
- console.timeEnd('jails')
56
+ remove( node ) {
57
+ const item = AST.find( item => item.element == node )
58
+ if( item ){
59
+ item.dispose()
60
+ }
24
61
  }
25
62
  }
26
63
 
27
- const getView = () => {
64
+ const Element = ( element ) => {
65
+
66
+ let tplid
67
+ let template
28
68
 
29
- const view = View({
69
+ if( element.getAttribute('tplid') ) {
70
+ tplid = element.getAttribute('tplid')
71
+ const item = AST.find( item => item.tplid == tplid )
72
+ template = item.template
73
+ }else {
74
+ tplid = uuid()
75
+ element.setAttribute('tplid', tplid)
76
+ template = createTemplate(element.outerHTML)
77
+ }
30
78
 
31
- onAdd(elements) {
32
- elements
33
- .filter(el => !ismounted(el))
34
- .forEach(element => create({ element, view, modules }))
79
+ const ElementInterface = {
80
+ tplid,
81
+ element,
82
+ template,
83
+ instances:{},
84
+ destroyers:[],
85
+ promises: [],
86
+ view: data => data,
87
+ parentUpdate: data => null,
88
+ dispose(){
89
+ if( ElementInterface.promises.length ){
90
+ Promise.all(ElementInterface.promises).then(_ => {
91
+ this.destroyers.forEach( destroy => destroy(ElementInterface) )
92
+ })
93
+ }else {
94
+ this.destroyers.forEach( destroy => destroy(ElementInterface) )
95
+ }
35
96
  },
36
97
 
37
- onRemove(removedNodes) {
38
- removedNodes.forEach(removedNode => {
39
- if (removedNode.nodeType === 1) {
40
- const children = Array.from(removedNode.querySelectorAll('[data-component]'))
41
- children
42
- .concat(removedNode.dataset.component ? removedNode : [])
43
- .filter(element => !document.body.contains(element))
44
- .forEach(element => destroy({ element }))
98
+ model: Object.assign({}, JSON.parse(element.getAttribute('initialState'))),
99
+
100
+ update( data, isParentUpdate = false ) {
101
+
102
+ this.model = Object.assign( { global: SST }, this.model, data )
103
+ SST = saveGlobal(data)
104
+
105
+ if( isParentUpdate )
106
+ this.parentUpdate( this.model )
107
+
108
+ const dupdata = JSON.parse(JSON.stringify(this.model))
109
+
110
+ morphdom( element, sodajs( this.template, this.view(dupdata) ), {
111
+ onNodeDiscarded(node) {
112
+ Template.scan(node, Template.remove)
113
+ return true
114
+ },
115
+ onBeforeElUpdated(node, toEl) {
116
+ if (node.isEqualNode(toEl))
117
+ return false
118
+ if( node.nodeType == 1 && 'static' in node.dataset )
119
+ return false
120
+ return true
45
121
  }
46
122
  })
123
+
124
+ rAF(_ => {
125
+ const elements = Array.from(element.querySelectorAll('[data-component]'))
126
+ elements.forEach( node => {
127
+ const initialState = JSON.parse(node.getAttribute('initialState')) || {}
128
+ const item = AST.find( item => item.element == node )
129
+ const { global, parent, ...model } = this.model
130
+ if( item ) {
131
+ const newmodel = Object.assign(initialState, { parent:model, global: SST })
132
+ item.update( newmodel, true )
133
+ }
134
+ })
135
+ })
136
+ }
137
+ }
138
+
139
+ AST.push( ElementInterface )
140
+
141
+ element.dataset.component.split(/\s/).forEach( name => {
142
+
143
+ const C = components[name]
144
+
145
+ if( !C ) {
146
+ console.warn(`Jails - Module ${name} not registered`)
147
+ return
148
+ }
149
+
150
+ const { module, dependencies } = C
151
+ ElementInterface.model = Object.assign({}, module.model, ElementInterface.model )
152
+
153
+ const base = Component({ name, element, dependencies, Pubsub, ElementInterface, AST })
154
+
155
+ const promise = module.default(base)
156
+
157
+ if( promise && promise.then ) {
158
+ ElementInterface.promises.push(promise)
47
159
  }
160
+
161
+ base.__initialize()
162
+ ElementInterface.view = module.view || ElementInterface.view
163
+ ElementInterface.instances[name] = { methods: {} }
48
164
  })
49
165
 
50
- return view
166
+ ElementInterface.update()
167
+ }
168
+
169
+ const createTemplate = ( html ) => {
170
+ const vhtml = stripTemplateTags( html )
171
+ const vroot = document.createElement('div')
172
+ vroot.innerHTML = vhtml
173
+ const components = Array.from(vroot.querySelectorAll('[data-component]'))
174
+ components.forEach( c => {
175
+ const cache = AST.find( item => item.tplid === c.getAttribute('tplid') )
176
+ if( cache )
177
+ c.outerHTML = cache.template
178
+ })
179
+ return vroot.innerHTML
180
+ }
181
+
182
+ const saveGlobal = (data) => {
183
+ Object.assign(SST, data)
184
+ delete SST.parent
185
+ delete SST.global
186
+ return SST
51
187
  }
@@ -1,8 +1,8 @@
1
- import { uuid } from './utils'
1
+ export default function sodaSetConfig (sodajs) {
2
2
 
3
- export default ({ sodajs: soda, models }) => {
3
+ sodajs.prefix('v-')
4
4
 
5
- soda.directive('repeat', {
5
+ sodajs.directive('repeat', {
6
6
 
7
7
  priority: 10,
8
8
 
@@ -52,17 +52,12 @@ export default ({ sodajs: soda, models }) => {
52
52
  itemScope[trackName] = i
53
53
  itemScope[itemName] = repeatObj[i]
54
54
 
55
- const components = findComponents(itemNode)
56
-
57
- components.forEach(node => {
58
- const ID = uuid()
59
- node.setAttribute('data-model-id', ID)
60
- models[ID] = itemScope
61
- })
62
-
63
55
  itemNode.removeAttribute(`${this._prefix}repeat`)
64
56
  el.parentNode.insertBefore(itemNode, el)
65
57
 
58
+ Array.from(itemNode.querySelectorAll('[data-component]'))
59
+ .forEach(node => node.setAttribute('initialState', JSON.stringify(itemScope)))
60
+
66
61
  compileNode(itemNode, itemScope)
67
62
  }
68
63
 
@@ -85,10 +80,3 @@ export default ({ sodajs: soda, models }) => {
85
80
  }
86
81
  })
87
82
  }
88
-
89
- function findComponents(el) {
90
- const isComponent = el.getAttribute('data-component')
91
- const component = isComponent ? [el] : []
92
- const childComponents = Array.prototype.slice.call(el.querySelectorAll('[data-component]'))
93
- return component.concat(childComponents)
94
- }
@@ -7,34 +7,6 @@ export const nextFrame = (fn) => {
7
7
  rAF(() => rAF(fn))
8
8
  }
9
9
 
10
- export const addClass = (element) => (string) => {
11
- string.split(/\s/).map(item => element.classList.add(item))
12
- }
13
-
14
- export const removeClass = (element) => (string) => {
15
- string.split(/\s/).map(item => element.classList.remove(item))
16
- }
17
-
18
- export const getPrefix = (object) => {
19
- for (let key in object)
20
- if (key in document.body.style)
21
- return object[key]
22
- }
23
-
24
- export const animationEnd = getPrefix({
25
- animation: 'animationend',
26
- OAnimation: 'oAnimationEnd',
27
- MozAnimation: 'animationend',
28
- WebkitAnimation: 'webkitAnimationEnd'
29
- })
30
-
31
- export const transitionEnd = getPrefix({
32
- transition: 'transitionend',
33
- OTransition: 'oTransitionEnd',
34
- MozTransition: 'transitionend',
35
- WebkitTransition: 'webkitTransitionEnd'
36
- })
37
-
38
10
  export const uuid = () => {
39
11
  return 'xxxxxxxx'.replace(/[xy]/g, (c) => {
40
12
  const r = Math.random() * 8 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8)
@@ -42,36 +14,14 @@ export const uuid = () => {
42
14
  })
43
15
  }
44
16
 
45
- export const setIds = (acc, element) => {
46
- const id = uuid()
47
- element.setAttribute('data-reactor-id', id)
48
- acc[id] = element.outerHTML.replace(/<(x-)?template*.>|<\/(x-)?template>/g, '')
49
- return acc
17
+ export const stripTemplateTags = ( html ) => {
18
+ return html.replace(/<template.*?>|<\/template>/g, '')
50
19
  }
51
20
 
52
- export const createTemplates = ( html, type = 'div' ) => {
53
-
54
- const SELECTOR = '[data-component]:not([data-reactor-id])'
55
- const virtual = document.createElement(type)
56
- virtual.innerHTML = html.replace(/<template*.>/g, '<x-template>').replace(/<\/template>/g, '</x-template>')
57
-
58
- const elements = Array.from(virtual.querySelectorAll(SELECTOR))
59
- const templates = elements.reverse().reduce(setIds, {})
60
-
61
- return {
62
- templates,
63
- html: virtual.innerHTML.replace(/<x-template*.>/g, '<template>').replace(/<\/x-template>/g, '</template>')
64
- }
65
- }
66
-
67
- export const dup = (object) => {
68
- return JSON.parse(JSON.stringify(object))
69
- }
70
-
71
- export const getParent = (el, selector) => {
72
- let elem = el.parentNode
73
- for ( ; elem && elem !== document; elem = elem.parentNode ) {
74
- if ( elem.matches( selector ) ) return elem
75
- }
76
- return null
21
+ export const stripTemplateTag = ( element ) => {
22
+ const templates = Array.from(element.querySelectorAll('template'))
23
+ // https://gist.github.com/harmenjanssen/07e425248779c65bc5d11b02fb913274
24
+ templates.forEach( template => {
25
+ template.parentNode.replaceChild(template.content, template )
26
+ })
77
27
  }
package/src/animation.js DELETED
@@ -1,94 +0,0 @@
1
- import {
2
- addClass,
3
- removeClass,
4
- animationEnd,
5
- transitionEnd,
6
- nextFrame
7
- } from './utils'
8
-
9
- export const onBeforeAdd = (node, animation) => {
10
-
11
- const enter = `${animation}-enter`
12
- const enterActive = `${animation}-enter-active`
13
- const addClassNames = addClass(node)
14
-
15
- addClassNames(`${enter} ${enterActive}`)
16
- }
17
-
18
- export const onAdd = (node, animation) => {
19
-
20
- const enter = `${animation}-enter`
21
- const enterActive = `${animation}-enter-active`
22
- const enterTo = `${animation}-enter-to`
23
- const removeClassNames = removeClass(node)
24
- const addClassNames = addClass(node)
25
-
26
- const remove = () => {
27
- removeClassNames(`${enter} ${enterActive} ${enterTo}`)
28
- node.removeEventListener(transitionEnd, remove)
29
- node.removeEventListener(animationEnd, remove)
30
- }
31
-
32
- node.addEventListener(transitionEnd, remove)
33
- node.addEventListener(animationEnd, remove)
34
-
35
- nextFrame(() => {
36
- addClassNames(enterTo)
37
- removeClassNames(enter)
38
- })
39
- }
40
-
41
- export const onRemove = (node, animation) => {
42
-
43
- const leave = `${animation}-leave`
44
- const leaveActive = `${animation}-leave-active`
45
- const leaveTo = `${animation}-leave-to`
46
- const removeClassNames = removeClass(node)
47
- const addClassNames = addClass(node)
48
- const style = window.getComputedStyle(node)
49
-
50
- let transitionsLength = style.transitionProperty.split(',').length
51
-
52
- const remove = (e) => {
53
- if (e.type == 'transitionend') {
54
- if (e.target == node) {
55
- transitionsLength -= 1
56
- if (transitionsLength <= 1) {
57
- removeClassNames(`${leaveActive} ${leaveTo}`)
58
- node.removeEventListener(transitionEnd, remove)
59
- node.parentNode ? node.parentNode.removeChild(node) : null
60
- }
61
- }
62
- }
63
- else {
64
- removeClassNames(`${leaveActive} ${leaveTo}`)
65
- node.removeEventListener(animationEnd, remove)
66
- node.parentNode ? node.parentNode.removeChild(node) : null
67
- }
68
- }
69
-
70
- node.addEventListener(transitionEnd, remove)
71
- node.addEventListener(animationEnd, remove)
72
-
73
- addClassNames(`${leave} ${leaveActive}`)
74
-
75
- nextFrame(() => {
76
- removeClassNames(leave)
77
- addClassNames(leaveTo)
78
- })
79
- }
80
-
81
- export const animateNodes = (node, callback) => {
82
-
83
- const childnodes = node.nodeType == 1
84
- ? Array.prototype.slice.call(node.querySelectorAll('[data-animation]'))
85
- : []
86
-
87
- const list = node.dataset && node.dataset.animation
88
- ? [node].concat(childnodes)
89
- : childnodes
90
-
91
- list.forEach(n => callback(n, n.dataset.animation))
92
-
93
- return list.length > 0
94
- }
package/src/element.js DELETED
@@ -1,55 +0,0 @@
1
- import Component from './component'
2
- import { trigger } from './utils/events'
3
- import { nextFrame } from './utils'
4
-
5
- export const create = ({ element, view, modules }) => {
6
-
7
- element.__instances__ = {}
8
- element.__model__ = {}
9
-
10
- const names = element.dataset.component.split(/\s/)
11
-
12
- if(!element.dataset.reactorId){
13
- view.setNewElement(element)
14
- }
15
-
16
- names.forEach( name => {
17
-
18
- if( name in modules && (!element.__instances__[name]) ){
19
-
20
- const component = modules[name]
21
-
22
- nextFrame(_ => {
23
- const base = Component({ name, element, view, component })
24
-
25
- element.__instances__[name] = { base, methods: {} }
26
-
27
- element.__update__ = (state) => {
28
- for ( let name in element.__instances__ )
29
- element.__instances__[name].base.update(state)
30
- }
31
-
32
- component.module.default(base)
33
- base.__initialize(base)
34
- delete base.__initialize
35
- })
36
- }
37
- })
38
-
39
- }
40
-
41
- export const ismounted = (element) => {
42
- return Boolean( element.__instances__ )
43
- }
44
-
45
- export const destroy = ({ element }) => {
46
-
47
- trigger(element, ':destroy')
48
-
49
- for (let ev in element.__events)
50
- element.removeEventListener(ev, element.__events[ev].listener)
51
-
52
- delete element.__events
53
- delete element.__instances__
54
- delete element.__model__
55
- }
package/src/view.js DELETED
@@ -1,126 +0,0 @@
1
- import morphdom from 'morphdom'
2
- import sodajs from 'sodajs'
3
-
4
- import * as animation from './animation'
5
- import { dup, createTemplates, setIds } from './utils'
6
- import repeatDirective from './repeat'
7
-
8
- const STATIC = 'static'
9
- const COMPONENT = '[data-component]'
10
-
11
- export default function View( callback ) {
12
-
13
- const root = document.body
14
- const { templates, html } = createTemplates(root.innerHTML, 'html')
15
- const models = {}
16
- const SST = {}
17
-
18
- sodajs.prefix('v-')
19
- repeatDirective({ sodajs, models })
20
-
21
- return {
22
-
23
- mode : 'production',
24
- templates,
25
- models,
26
- SST,
27
-
28
- update( element, data ){
29
- if (element) {
30
- const id = element.dataset.reactorId
31
- const template = templates[id]
32
- const newstate = Object.assign({}, element.__model__, dup(data))
33
- const newhtml = sodajs(template, newstate)
34
- morphdom( element, newhtml, lifecycle(element, data, SST))
35
- if( element.__model__ ){
36
- Object.assign( element.__model__, newstate )
37
- }
38
- }
39
- },
40
-
41
- observe() {
42
- const observer = observe( callback )
43
- root.innerHTML = sodajs(html, {})
44
- return observer
45
- },
46
-
47
- setNewElement(element){
48
- setIds(templates, element)
49
- }
50
- }
51
- }
52
-
53
- const observe = ( callback ) => {
54
- const observer = new MutationObserver(mutations => mutations.forEach(onMutation(callback)))
55
- observer.observe(document.body, { childList: true, subtree: true })
56
- return observer;
57
- }
58
-
59
- const onMutation = (callback) => (mutation) => {
60
- if (mutation.type === 'childList') {
61
- if (mutation.addedNodes.length) {
62
- callback.onAdd(scan())
63
- } else if (mutation.removedNodes.length) {
64
- callback.onRemove(mutation.removedNodes)
65
- }
66
- }
67
- }
68
-
69
- const scan = () => {
70
- return Array
71
- .from( document.querySelectorAll(COMPONENT) )
72
- .reverse()
73
- }
74
-
75
- const lifecycle = (elm, data, SST) => ({
76
-
77
- getNodeKey(node) {
78
- if (node.nodeType === 1) {
79
- return node.dataset.key || node.dataset.reactorId
80
- }
81
- return false
82
- },
83
-
84
- onBeforeElUpdated(node) {
85
- return update( elm, data, SST, node )
86
- },
87
-
88
- onBeforeElChildrenUpdated(node, tonode) {
89
- return update( elm, data, SST, node )
90
- },
91
-
92
- onNodeAdded(node) {
93
- animation.animateNodes(node, animation.onAdd)
94
- },
95
-
96
- onBeforeNodeAdded(node) {
97
- animation.animateNodes(node, animation.onBeforeAdd)
98
- },
99
-
100
- onBeforeNodeDiscarded(node) {
101
- return !animation.animateNodes(node, animation.onRemove)
102
- }
103
- })
104
-
105
- const update = (elm, data, SST, node) => {
106
-
107
- if (node.nodeType === 1) {
108
- // If element has static property, don't update
109
- if ( STATIC in node.dataset )
110
- return false
111
-
112
- // If element is child and a component, don't update
113
- if (node !== elm && node.dataset.component && node.__update__) {
114
-
115
- const newdata = Object.assign(SST, data)
116
- node.__update__(newdata)
117
-
118
- Array.from(node.querySelectorAll(COMPONENT)).forEach(el => {
119
- if (el.dataset.component && el.__update__)
120
- el.__update__(newdata)
121
- })
122
-
123
- return false
124
- }
125
- }
126
- }