@nebularstreams/libmui 0.1.22 → 2.0.0
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/libui.esm.js +1 -1
- package/dist/libui.esm.js.map +1 -1
- package/package.json +4 -8
package/dist/libui.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t,n;function r(){if(n)return t;function e(e,t,n,r,a,l){return{tag:e,key:t,attrs:n,children:r,text:a,dom:l,domSize:void 0,state:void 0,events:void 0,instance:void 0}}return n=1,e.normalize=function(t){return Array.isArray(t)?e("[",void 0,void 0,e.normalizeChildren(t),void 0,void 0):null==t||"boolean"==typeof t?null:"object"==typeof t?t:e("#",void 0,void 0,String(t),void 0,void 0)},e.normalizeChildren=function(t){var n=[];if(t.length){for(var r=null!=t[0]&&null!=t[0].key,a=1;a<t.length;a++)if((null!=t[a]&&null!=t[a].key)!==r)throw new TypeError(!r||null==t[a]&&"boolean"!=typeof t[a]?"In fragments, vnodes must either all have keys or none have keys.":"In fragments, vnodes must either all have keys or none have keys. You may wish to consider using an explicit keyed empty fragment, m.fragment({key: ...}), instead of a hole.");for(a=0;a<t.length;a++)n[a]=e.normalize(t[a])}return n},t=e}var a,l,o=r(),i=function(){var e,t=arguments[this],n=this+1;if(null==t?t={}:("object"!=typeof t||null!=t.tag||Array.isArray(t))&&(t={},n=this),arguments.length===n+1)e=arguments[n],Array.isArray(e)||(e=[e]);else for(e=[];n<arguments.length;)e.push(arguments[n++]);return o("",t.key,t,e)};function s(){return l?a:(l=1,a={}.hasOwnProperty)}var c=r(),u=i,d=s(),f=/(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g,p=Object.create(null);function h(e){for(var t,n="div",r=[],a={};t=f.exec(e);){var l=t[1],o=t[2];if(""===l&&""!==o)n=o;else if("#"===l)a.id=o;else if("."===l)r.push(o);else if("["===t[3][0]){var i=t[6];i&&(i=i.replace(/\\(["'])/g,"$1").replace(/\\\\/g,"\\")),"class"===t[4]?r.push(i):a[t[4]]=""===i?i:i||!0}}return r.length>0&&(a.className=r.join(" ")),function(e){for(var t in e)if(d.call(e,t))return!1;return!0}(a)&&(a=null),p[e]={tag:n,attrs:a}}var v=function(e){if(null==e||"string"!=typeof e&&"function"!=typeof e&&"function"!=typeof e.view)throw Error("The selector must be either a string or a component.");var t=u.apply(1,arguments);return"string"==typeof e&&(t.children=c.normalizeChildren(t.children),"["!==e)?function(e,t){var n=t.attrs,r=d.call(n,"class"),a=r?n.class:n.className;return t.tag=e.tag,null!=e.attrs?(n=Object.assign({},e.attrs,n),null==a&&null==e.attrs.className||(n.className=null!=a?null!=e.attrs.className?String(e.attrs.className)+" "+String(a):a:null!=e.attrs.className?e.attrs.className:null)):null!=a&&(n.className=a),r&&(n.class=null),"input"===e.tag&&d.call(n,"type")&&(n=Object.assign({type:n.type},n)),t.attrs=n,t}(p[e]||h(e),t):(t.tag=e,t)},g=r(),y=r(),w=i,b=v;b.trust=function(e){return null==e&&(e=""),g("<",void 0,void 0,e,void 0,void 0)},b.fragment=function(){var e=w.apply(0,arguments);return e.tag="[",e.children=y.normalizeChildren(e.children),e};var x=b,k=new WeakMap;var C,E,S,M,I={delayedRemoval:k,domFor:function*(e,t={}){var n=e.dom,r=e.domSize,a=t.generation;if(null!=n)do{var l=n.nextSibling;k.get(n)===a&&(yield n,r--),n=l}while(r)}};function T(){if(E)return C;E=1;var e=r(),t=I.delayedRemoval,n=I.domFor;return C=function(){var r,a,l={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"};function o(e){return e.ownerDocument}function i(e){return e.attrs&&e.attrs.xmlns||l[e.tag]}function s(e,t){if(e.state!==t)throw new Error("'vnode.state' must not be modified.")}function c(e){var t=e.state;try{return this.apply(t,arguments)}finally{s(e,t)}}function u(e){try{return o(e).activeElement}catch(e){return null}}function d(e,t,n,r,a,l,o){for(var i=n;i<r;i++){var s=t[i];null!=s&&f(e,s,a,o,l)}}function f(t,n,r,a,l){var s=n.tag;if("string"==typeof s)switch(n.state={},null!=n.attrs&&P(n.attrs,n,r),s){case"#":!function(e,t,n){t.dom=o(e).createTextNode(t.children),k(e,t.dom,n)}(t,n,l);break;case"<":p(t,n,a,l);break;case"[":!function(e,t,n,r,a){var l=o(e).createDocumentFragment();if(null!=t.children){var i=t.children;d(l,i,0,i.length,n,null,r)}t.dom=l.firstChild,t.domSize=l.childNodes.length,k(e,l,a)}(t,n,r,a,l);break;default:!function(e,t,n,r,a){var l=t.tag,s=t.attrs,c=s&&s.is;r=i(t)||r;var u=r?c?o(e).createElementNS(r,l,{is:c}):o(e).createElementNS(r,l):c?o(e).createElement(l,{is:c}):o(e).createElement(l);t.dom=u,null!=s&&function(e,t,n){for(var r in t)T(e,r,null,t[r],n)}(t,s,r);if(k(e,u,a),!C(t)&&null!=t.children){var f=t.children;d(u,f,0,f.length,n,null,r),"select"===t.tag&&null!=s&&function(e,t){if("value"in t)if(null===t.value)-1!==e.dom.selectedIndex&&(e.dom.value=null);else{var n=""+t.value;e.dom.value===n&&-1!==e.dom.selectedIndex||(e.dom.value=n)}"selectedIndex"in t&&T(e,"selectedIndex",null,t.selectedIndex,void 0)}(t,s)}}(t,n,r,a,l)}else!function(t,n,r,a,l){(function(t,n){var r;if("function"==typeof t.tag.view){if(t.state=Object.create(t.tag),null!=(r=t.state.view).$$reentrantLock$$)return;r.$$reentrantLock$$=!0}else{if(t.state=void 0,null!=(r=t.tag).$$reentrantLock$$)return;r.$$reentrantLock$$=!0,t.state=null!=t.tag.prototype&&"function"==typeof t.tag.prototype.view?new t.tag(t):t.tag(t)}P(t.state,t,n),null!=t.attrs&&P(t.attrs,t,n);if(t.instance=e.normalize(c.call(t.state.view,t)),t.instance===t)throw Error("A view cannot return the vnode it received as argument");r.$$reentrantLock$$=null})(n,r),null!=n.instance?(f(t,n.instance,r,a,l),n.dom=n.instance.dom,n.domSize=null!=n.dom?n.instance.domSize:0):n.domSize=0}(t,n,r,a,l)}var m={caption:"table",thead:"table",tbody:"table",tfoot:"table",tr:"tbody",th:"tr",td:"tr",colgroup:"table",col:"colgroup"};function p(e,t,n,r){var a=t.children.match(/^\s*?<(\w+)/im)||[],l=o(e).createElement(m[a[1]]||"div");"http://www.w3.org/2000/svg"===n?(l.innerHTML='<svg xmlns="http://www.w3.org/2000/svg">'+t.children+"</svg>",l=l.firstChild):l.innerHTML=t.children,t.dom=l.firstChild,t.domSize=l.childNodes.length;for(var i,s=o(e).createDocumentFragment();i=l.firstChild;)s.appendChild(i);k(e,s,r)}function h(e,t,n,r,a,l){if(t!==n&&(null!=t||null!=n))if(null==t||0===t.length)d(e,n,0,n.length,r,a,l);else if(null==n||0===n.length)E(e,t,0,t.length);else{var o=null!=t[0]&&null!=t[0].key,i=null!=n[0]&&null!=n[0].key,s=0,c=0;if(!o)for(;c<t.length&&null==t[c];)c++;if(!i)for(;s<n.length&&null==n[s];)s++;if(o!==i)E(e,t,c,t.length),d(e,n,s,n.length,r,a,l);else if(i){for(var u,m,p,h,y,k=t.length-1,C=n.length-1;k>=c&&C>=s&&(p=t[k],h=n[C],p.key===h.key);)p!==h&&v(e,p,h,r,a,l),null!=h.dom&&(a=h.dom),k--,C--;for(;k>=c&&C>=s&&(u=t[c],m=n[s],u.key===m.key);)c++,s++,u!==m&&v(e,u,m,r,b(t,c,a),l);for(;k>=c&&C>=s&&s!==C&&u.key===h.key&&p.key===m.key;)x(e,p,y=b(t,c,a)),p!==m&&v(e,p,m,r,y,l),++s<=--C&&x(e,u,a),u!==h&&v(e,u,h,r,a,l),null!=h.dom&&(a=h.dom),c++,p=t[--k],h=n[C],u=t[c],m=n[s];for(;k>=c&&C>=s&&p.key===h.key;)p!==h&&v(e,p,h,r,a,l),null!=h.dom&&(a=h.dom),C--,p=t[--k],h=n[C];if(s>C)E(e,t,c,k+1);else if(c>k)d(e,n,s,C+1,r,a,l);else{var M,I,T=a,z=C-s+1,L=new Array(z),O=0,N=0,j=2147483647,A=0;for(N=0;N<z;N++)L[N]=-1;for(N=C;N>=s;N--){null==M&&(M=g(t,c,k+1));var P=M[(h=n[N]).key];null!=P&&(j=P<j?P:-1,L[N-s]=P,p=t[P],t[P]=null,p!==h&&v(e,p,h,r,a,l),null!=h.dom&&(a=h.dom),A++)}if(a=T,A!==k-c+1&&E(e,t,c,k+1),0===A)d(e,n,s,C+1,r,a,l);else if(-1===j)for(I=function(e){var t=[0],n=0,r=0,a=0,l=w.length=e.length;for(a=0;a<l;a++)w[a]=e[a];for(a=0;a<l;++a)if(-1!==e[a]){var o=t[t.length-1];if(e[o]<e[a])w[a]=o,t.push(a);else{for(n=0,r=t.length-1;n<r;){var i=(n>>>1)+(r>>>1)+(n&r&1);e[t[i]]<e[a]?n=i+1:r=i}e[a]<e[t[n]]&&(n>0&&(w[a]=t[n-1]),t[n]=a)}}n=t.length,r=t[n-1];for(;n-- >0;)t[n]=r,r=w[r];return w.length=0,t}(L),O=I.length-1,N=C;N>=s;N--)m=n[N],-1===L[N-s]?f(e,m,r,l,a):I[O]===N-s?O--:x(e,m,a),null!=m.dom&&(a=n[N].dom);else for(N=C;N>=s;N--)m=n[N],-1===L[N-s]&&f(e,m,r,l,a),null!=m.dom&&(a=n[N].dom)}}else{var D=t.length<n.length?t.length:n.length;for(s=s<c?s:c;s<D;s++)(u=t[s])===(m=n[s])||null==u&&null==m||(null==u?f(e,m,r,l,b(t,s+1,a)):null==m?S(e,u):v(e,u,m,r,b(t,s+1,a),l));t.length>D&&E(e,t,s,t.length),n.length>D&&d(e,n,s,n.length,r,a,l)}}}function v(t,n,r,a,l,o){var s=n.tag;if(s===r.tag){if(r.state=n.state,r.events=n.events,function(e,t){do{var n;if(null!=e.attrs&&"function"==typeof e.attrs.onbeforeupdate)if(void 0!==(n=c.call(e.attrs.onbeforeupdate,e,t))&&!n)break;if("string"!=typeof e.tag&&"function"==typeof e.state.onbeforeupdate)if(void 0!==(n=c.call(e.state.onbeforeupdate,e,t))&&!n)break;return!1}while(0);return e.dom=t.dom,e.domSize=t.domSize,e.instance=t.instance,e.attrs=t.attrs,e.children=t.children,e.text=t.text,!0}(r,n))return;if("string"==typeof s)switch(null!=r.attrs&&D(r.attrs,r,a),s){case"#":!function(e,t){e.children.toString()!==t.children.toString()&&(e.dom.nodeValue=t.children);t.dom=e.dom}(n,r);break;case"<":!function(e,t,n,r,a){t.children!==n.children?(M(e,t,void 0),p(e,n,r,a)):(n.dom=t.dom,n.domSize=t.domSize)}(t,n,r,o,l);break;case"[":!function(e,t,n,r,a,l){h(e,t.children,n.children,r,a,l);var o=0,i=n.children;if(n.dom=null,null!=i){for(var s=0;s<i.length;s++){var c=i[s];null!=c&&null!=c.dom&&(null==n.dom&&(n.dom=c.dom),o+=c.domSize||1)}1!==o&&(n.domSize=o)}}(t,n,r,a,l,o);break;default:!function(e,t,n,r){var a=t.dom=e.dom;r=i(t)||r,function(e,t,n,r){t&&t===n&&console.warn("Don't reuse attrs object, use new object for every redraw, this will throw in next major");if(null!=n)for(var a in n)T(e,a,t&&t[a],n[a],r);var l;if(null!=t)for(var a in t)null==(l=t[a])||null!=n&&null!=n[a]||z(e,a,l,r)}(t,e.attrs,t.attrs,r),C(t)||h(a,e.children,t.children,n,null,r)}(n,r,a,o)}else!function(t,n,r,a,l,o){if(r.instance=e.normalize(c.call(r.state.view,r)),r.instance===r)throw Error("A view cannot return the vnode it received as argument");D(r.state,r,a),null!=r.attrs&&D(r.attrs,r,a);null!=r.instance?(null==n.instance?f(t,r.instance,a,o,l):v(t,n.instance,r.instance,a,l,o),r.dom=r.instance.dom,r.domSize=r.instance.domSize):null!=n.instance?(S(t,n.instance),r.dom=void 0,r.domSize=0):(r.dom=n.dom,r.domSize=n.domSize)}(t,n,r,a,l,o)}else S(t,n),f(t,r,a,o,l)}function g(e,t,n){for(var r=Object.create(null);t<n;t++){var a=e[t];if(null!=a){var l=a.key;null!=l&&(r[l]=t)}}return r}var y,w=[];function b(e,t,n){for(;t<e.length;t++)if(null!=e[t]&&null!=e[t].dom)return e[t].dom;return n}function x(e,t,r){if(null!=t.dom){var a;if(null==t.domSize)a=t.dom;else for(var l of(a=o(e).createDocumentFragment(),n(t)))a.appendChild(l);k(e,a,r)}}function k(e,t,n){null!=n?e.insertBefore(t,n):e.appendChild(t)}function C(e){if(null==e.attrs||null==e.attrs.contenteditable&&null==e.attrs.contentEditable)return!1;var t=e.children;if(null!=t&&1===t.length&&"<"===t[0].tag){var n=t[0].children;e.dom.innerHTML!==n&&(e.dom.innerHTML=n)}else if(null!=t&&0!==t.length)throw new Error("Child node of a contenteditable must be trusted.");return!0}function E(e,t,n,r){for(var a=n;a<r;a++){var l=t[a];null!=l&&S(e,l)}}function S(e,r){var l,o,i,u,d=0,f=r.state;"string"!=typeof r.tag&&"function"==typeof r.state.onbeforeremove&&(null!=(i=c.call(r.state.onbeforeremove,r))&&"function"==typeof i.then&&(d=1,l=i));r.attrs&&"function"==typeof r.attrs.onbeforeremove&&(null!=(i=c.call(r.attrs.onbeforeremove,r))&&"function"==typeof i.then&&(d|=2,o=i));if(s(r,f),d){for(var m of(u=a,n(r)))t.set(m,u);null!=l&&l.finally((function(){1&d&&((d&=2)||(s(r,f),I(r),M(e,r,u)))})),null!=o&&o.finally((function(){2&d&&((d&=1)||(s(r,f),I(r),M(e,r,u)))}))}else I(r),M(e,r,u)}function M(e,r,a){if(null!=r.dom)if(null==r.domSize)t.get(r.dom)===a&&e.removeChild(r.dom);else for(var l of n(r,{generation:a}))e.removeChild(l)}function I(e){if("string"!=typeof e.tag&&"function"==typeof e.state.onremove&&c.call(e.state.onremove,e),e.attrs&&"function"==typeof e.attrs.onremove&&c.call(e.attrs.onremove,e),"string"!=typeof e.tag)null!=e.instance&&I(e.instance);else{var t=e.children;if(Array.isArray(t))for(var n=0;n<t.length;n++){var r=t[n];null!=r&&I(r)}}}function T(e,t,n,r,a){if("key"!==t&&"is"!==t&&null!=r&&!L(t)&&(n!==r||function(e,t){return"value"===t||"checked"===t||"selectedIndex"===t||"selected"===t&&e.dom===u(e.dom)||"option"===e.tag&&e.dom.parentNode===u(e.dom)}(e,t)||"object"==typeof r)){if("o"===t[0]&&"n"===t[1])return A(e,t,r);if("xlink:"===t.slice(0,6))e.dom.setAttributeNS("http://www.w3.org/1999/xlink",t.slice(6),r);else if("style"===t)N(e.dom,n,r);else if(O(e,t,a)){if("value"===t){var l="input"===e.tag&&"file"===e.attrs.type;if(("input"===e.tag||"textarea"===e.tag)&&e.dom.value===""+r&&(l||e.dom===u(e.dom)))return;if("select"===e.tag&&null!==n&&e.dom.value===""+r)return;if("option"===e.tag&&null!==n&&e.dom.value===""+r)return;if(l&&""+r!="")return void console.error("`value` is read-only on file inputs!")}"input"===e.tag&&"type"===t?e.dom.setAttribute(t,r):e.dom[t]=r}else"boolean"==typeof r?r?e.dom.setAttribute(t,""):e.dom.removeAttribute(t):e.dom.setAttribute("className"===t?"class":t,r)}}function z(e,t,n,r){if("key"!==t&&"is"!==t&&null!=n&&!L(t))if("o"===t[0]&&"n"===t[1])A(e,t,void 0);else if("style"===t)N(e.dom,n,null);else if(!O(e,t,r)||"className"===t||"title"===t||"value"===t&&("option"===e.tag||"select"===e.tag&&-1===e.dom.selectedIndex&&e.dom===u(e.dom))||"input"===e.tag&&"type"===t){var a=t.indexOf(":");-1!==a&&(t=t.slice(a+1)),!1!==n&&e.dom.removeAttribute("className"===t?"class":t)}else e.dom[t]=null}function L(e){return"oninit"===e||"oncreate"===e||"onupdate"===e||"onremove"===e||"onbeforeremove"===e||"onbeforeupdate"===e}function O(e,t,n){return void 0===n&&(e.tag.indexOf("-")>-1||null!=e.attrs&&e.attrs.is||"href"!==t&&"list"!==t&&"form"!==t&&"width"!==t&&"height"!==t)&&t in e.dom}function N(e,t,n){if(t===n);else if(null==n)e.style="";else if("object"!=typeof n)e.style=n;else if(null==t||"object"!=typeof t)for(var r in e.style.cssText="",n){null!=(a=n[r])&&(r.includes("-")?e.style.setProperty(r,String(a)):e.style[r]=String(a))}else{for(var r in n){var a;null!=(a=n[r])&&(a=String(a))!==String(t[r])&&(r.includes("-")?e.style.setProperty(r,a):e.style[r]=a)}for(var r in t)null!=t[r]&&null==n[r]&&(r.includes("-")?e.style.removeProperty(r):e.style[r]="")}}function j(){this._=r}function A(e,t,n){if(null!=e.events){if(e.events._=r,e.events[t]===n)return;null==n||"function"!=typeof n&&"object"!=typeof n?(null!=e.events[t]&&e.dom.removeEventListener(t.slice(2),e.events,!1),e.events[t]=void 0):(null==e.events[t]&&e.dom.addEventListener(t.slice(2),e.events,!1),e.events[t]=n)}else null==n||"function"!=typeof n&&"object"!=typeof n||(e.events=new j,e.dom.addEventListener(t.slice(2),e.events,!1),e.events[t]=n)}function P(e,t,n){"function"==typeof e.oninit&&c.call(e.oninit,t),"function"==typeof e.oncreate&&n.push(c.bind(e.oncreate,t))}function D(e,t,n){"function"==typeof e.onupdate&&n.push(c.bind(e.onupdate,t))}return j.prototype=Object.create(null),j.prototype.handleEvent=function(e){var t,n=this["on"+e.type];"function"==typeof n?t=n.call(e.currentTarget,e):"function"==typeof n.handleEvent&&n.handleEvent(e),this._&&!1!==e.redraw&&(0,this._)(),!1===t&&(e.preventDefault(),e.stopPropagation())},function(t,n,l){if(!t)throw new TypeError("DOM element being rendered to does not exist.");if(null!=y&&t.contains(y))throw new TypeError("Node is currently being rendered to and thus is locked.");var o=r,i=y,s=[],c=u(t),d=t.namespaceURI;y=t,r="function"==typeof l?l:void 0,a={};try{null==t.vnodes&&(t.textContent=""),n=e.normalizeChildren(Array.isArray(n)?n:[n]),h(t,t.vnodes,n,s,null,"http://www.w3.org/1999/xhtml"===d?void 0:d),t.vnodes=n,null!=c&&u(t)!==c&&"function"==typeof c.focus&&c.focus();for(var f=0;f<s.length;f++)s[f]()}finally{r=o,y=i}}},C}function z(){return M?S:(M=1,S=T()("undefined"!=typeof window?window:null))}var L,O,N,j,A=r(),P=function(e,t,n){var r=[],a=!1,l=-1;function o(){for(l=0;l<r.length;l+=2)try{e(r[l],A(r[l+1]),i)}catch(e){n.error(e)}l=-1}function i(){a||(a=!0,t((function(){a=!1,o()})))}return i.sync=o,{mount:function(t,n){if(null!=n&&null==n.view&&"function"!=typeof n)throw new TypeError("m.mount expects a component, not a vnode.");var a=r.indexOf(t);a>=0&&(r.splice(a,2),a<=l&&(l-=2),e(t,[])),null!=n&&(r.push(t,n),e(t,A(n),i))},redraw:i}}(z(),"undefined"!=typeof requestAnimationFrame?requestAnimationFrame:null,"undefined"!=typeof console?console:null);function D(){return O?L:(O=1,L=function(e){if("[object Object]"!==Object.prototype.toString.call(e))return"";var t=[];for(var n in e)r(n,e[n]);return t.join("&");function r(e,n){if(Array.isArray(n))for(var a=0;a<n.length;a++)r(e+"["+a+"]",n[a]);else if("[object Object]"===Object.prototype.toString.call(n))for(var a in n)r(e+"["+a+"]",n[a]);else t.push(encodeURIComponent(e)+(null!=n&&""!==n?"="+encodeURIComponent(n):""))}})}function $(){if(j)return N;j=1;var e=D();return N=function(t,n){if(/:([^\/\.-]+)(\.{3})?:/.test(t))throw new SyntaxError("Template parameter names must be separated by either a '/', '-', or '.'.");if(null==n)return t;var r=t.indexOf("?"),a=t.indexOf("#"),l=a<0?t.length:a,o=r<0?l:r,i=t.slice(0,o),s={};Object.assign(s,n);var c=i.replace(/:([^\/\.-]+)(\.{3})?/g,(function(e,t,r){return delete s[t],null==n[t]?e:r?n[t]:encodeURIComponent(String(n[t]))})),u=c.indexOf("?"),d=c.indexOf("#"),f=d<0?c.length:d,m=u<0?f:u,p=c.slice(0,m);r>=0&&(p+=t.slice(r,l)),u>=0&&(p+=(r<0?"?":"&")+c.slice(u,f));var h=e(s);return h&&(p+=(r<0&&u<0?"?":"&")+h),a>=0&&(p+=t.slice(a)),d>=0&&(p+=(a<0?"":"&")+c.slice(d)),p}}var R,F,H,_,K,V,q,U,B,Y,X,J,W=$(),G=s(),Q=function(e,t){function n(e){return new Promise(e)}function r(e,t){for(var n in e.headers)if(G.call(e.headers,n)&&n.toLowerCase()===t)return!0;return!1}return n.prototype=Promise.prototype,n.__proto__=Promise,{request:function(a,l){"string"!=typeof a?(l=a,a=a.url):null==l&&(l={});var o=function(t,n){return new Promise((function(a,l){t=W(t,n.params);var o,i=null!=n.method?n.method.toUpperCase():"GET",s=n.body,c=(null==n.serialize||n.serialize===JSON.serialize)&&!(s instanceof e.FormData||s instanceof e.URLSearchParams),u=n.responseType||("function"==typeof n.extract?"":"json"),d=new e.XMLHttpRequest,f=!1,m=!1,p=d,h=d.abort;for(var v in d.abort=function(){f=!0,h.call(this)},d.open(i,t,!1!==n.async,"string"==typeof n.user?n.user:void 0,"string"==typeof n.password?n.password:void 0),c&&null!=s&&!r(n,"content-type")&&d.setRequestHeader("Content-Type","application/json; charset=utf-8"),"function"==typeof n.deserialize||r(n,"accept")||d.setRequestHeader("Accept","application/json, text/*"),n.withCredentials&&(d.withCredentials=n.withCredentials),n.timeout&&(d.timeout=n.timeout),d.responseType=u,n.headers)G.call(n.headers,v)&&d.setRequestHeader(v,n.headers[v]);d.onreadystatechange=function(e){if(!f&&4===e.target.readyState)try{var r,o=e.target.status>=200&&e.target.status<300||304===e.target.status||/^file:\/\//i.test(t),i=e.target.response;if("json"===u){if(!e.target.responseType&&"function"!=typeof n.extract)try{i=JSON.parse(e.target.responseText)}catch(e){i=null}}else u&&"text"!==u||null==i&&(i=e.target.responseText);if("function"==typeof n.extract?(i=n.extract(e.target,n),o=!0):"function"==typeof n.deserialize&&(i=n.deserialize(i)),o){if("function"==typeof n.type)if(Array.isArray(i))for(var s=0;s<i.length;s++)i[s]=new n.type(i[s]);else i=new n.type(i);a(i)}else{var c=function(){try{r=e.target.responseText}catch(e){r=i}var t=new Error(r);t.code=e.target.status,t.response=i,l(t)};0===d.status?setTimeout((function(){m||c()})):c()}}catch(e){l(e)}},d.ontimeout=function(e){m=!0;var t=new Error("Request timed out");t.code=e.target.status,l(t)},"function"==typeof n.config&&(d=n.config(d,n,t)||d)!==p&&(o=d.abort,d.abort=function(){f=!0,o.call(this)}),null==s?d.send():"function"==typeof n.serialize?d.send(n.serialize(s)):s instanceof e.FormData||s instanceof e.URLSearchParams?d.send(s):d.send(JSON.stringify(s))}))}(a,l);if(!0===l.background)return o;var i=0;function s(){0==--i&&"function"==typeof t&&t()}return function e(t){var r=t.then;return t.constructor=n,t.then=function(){i++;var n=r.apply(t,arguments);return n.then(s,(function(e){if(s(),0===i)throw e})),e(n)},t}(o)}}}("undefined"!=typeof window?window:null,P.redraw);function Z(){if(F)return R;function e(e){try{return decodeURIComponent(e)}catch(t){return e}}return F=1,R=function(t){if(""===t||null==t)return{};"?"===t.charAt(0)&&(t=t.slice(1));for(var n=t.split("&"),r={},a={},l=0;l<n.length;l++){var o=n[l].split("="),i=e(o[0]),s=2===o.length?e(o[1]):"";"true"===s?s=!0:"false"===s&&(s=!1);var c=i.split(/\]\[?|\[/),u=a;i.indexOf("[")>-1&&c.pop();for(var d=0;d<c.length;d++){var f=c[d],m=c[d+1],p=""==m||!isNaN(parseInt(m,10));if(""===f)null==r[i=c.slice(0,d).join()]&&(r[i]=Array.isArray(u)?u.length:0),f=r[i]++;else if("__proto__"===f)break;if(d===c.length-1)u[f]=s;else{var h=Object.getOwnPropertyDescriptor(u,f);null!=h&&(h=h.value),null==h&&(u[f]=h=p?[]:{}),u=h}}}return a}}function ee(){if(_)return H;_=1;var e=Z();return H=function(t){var n=t.indexOf("?"),r=t.indexOf("#"),a=r<0?t.length:r,l=n<0?a:n,o=t.slice(0,l).replace(/\/{2,}/g,"/");return o?"/"!==o[0]&&(o="/"+o):o="/",{path:o,params:n<0?{}:e(t.slice(n+1,a))}}}function te(){if(V)return K;V=1;var e=ee();return K=function(t){var n=e(t),r=Object.keys(n.params),a=[],l=new RegExp("^"+n.path.replace(/:([^\/.-]+)(\.{3}|\.(?!\.)|-)?|[\\^$*+.()|\[\]{}]/g,(function(e,t,n){return null==t?"\\"+e:(a.push({k:t,r:"..."===n}),"..."===n?"(.*)":"."===n?"([^/]+)\\.":"([^/]+)"+(n||""))}))+"$");return function(e){for(var t=0;t<r.length;t++)if(n.params[r[t]]!==e.params[r[t]])return!1;if(!a.length)return l.test(e.path);var o=l.exec(e.path);if(null==o)return!1;for(t=0;t<a.length;t++)e.params[a[t].k]=a[t].r?o[t+1]:decodeURIComponent(o[t+1]);return!0}}}function ne(){if(U)return q;U=1;var e=s(),t=new RegExp("^(?:key|oninit|oncreate|onbeforeupdate|onupdate|onbeforeremove|onremove)$");return q=function(n,r){var a={};if(null!=r)for(var l in n)e.call(n,l)&&!t.test(l)&&r.indexOf(l)<0&&(a[l]=n[l]);else for(var l in n)e.call(n,l)&&!t.test(l)&&(a[l]=n[l]);return a}}var re=x,ae=Q,le=P,oe=I,ie=function(){return re.apply(this,arguments)};ie.m=re,ie.trust=re.trust,ie.fragment=re.fragment,ie.Fragment="[",ie.mount=le.mount,ie.route=function(){if(J)return X;J=1;var e=P;return X=function(){if(Y)return B;Y=1;var e=r(),t=v,n=$(),a=ee(),l=te(),o=ne(),i={};function s(e){try{return decodeURIComponent(e)}catch(t){return e}}return B=function(r,c){var u,d,f,m,p,h,v=null==r?null:"function"==typeof r.setImmediate?r.setImmediate:r.setTimeout,g=Promise.resolve(),y=!1,w=!1,b=0,x=i,k={onbeforeupdate:function(){return!(!(b=b?2:1)||i===x)},onremove:function(){r.removeEventListener("popstate",S,!1),r.removeEventListener("hashchange",E,!1)},view:function(){if(b&&i!==x){var t=[e(f,m.key,m)];return x&&(t=x.render(t[0])),t}}},C=I.SKIP={};function E(){y=!1;var e=r.location.hash;"#"!==I.prefix[0]&&(e=r.location.search+e,"?"!==I.prefix[0]&&"/"!==(e=r.location.pathname+e)[0]&&(e="/"+e));var t=e.concat().replace(/(?:%[a-f89][a-f0-9])+/gim,s).slice(I.prefix.length),n=a(t);function l(e){console.error(e),M(d,null,{replace:!0})}Object.assign(n.params,r.history.state),function e(r){for(;r<u.length;r++)if(u[r].check(n)){var a=u[r].component,o=u[r].route,i=a,s=h=function(l){if(s===h){if(l===C)return e(r+1);f=null==l||"function"!=typeof l.view&&"function"!=typeof l?"div":l,m=n.params,p=t,h=null,x=a.render?a:null,2===b?c.redraw():(b=2,c.redraw.sync())}};return void(a.view||"function"==typeof a?(a={},s(i)):a.onmatch?g.then((function(){return a.onmatch(n.params,t,o)})).then(s,t===d?null:l):s("div"))}if(t===d)throw new Error("Could not resolve default route "+d+".");M(d,null,{replace:!0})}(0)}function S(){y||(y=!0,v(E))}function M(e,t,a){if(e=n(e,t),w){S();var l=a?a.state:null,o=a?a.title:null;a&&a.replace?r.history.replaceState(l,o,I.prefix+e):r.history.pushState(l,o,I.prefix+e)}else r.location.href=I.prefix+e}function I(e,t,n){if(!e)throw new TypeError("DOM element being rendered to does not exist.");if(u=Object.keys(n).map((function(e){if("/"!==e[0])throw new SyntaxError("Routes must start with a '/'.");if(/:([^\/\.-]+)(\.{3})?:/.test(e))throw new SyntaxError("Route parameter names must be separated with either '/', '.', or '-'.");return{route:e,component:n[e],check:l(e)}})),d=t,null!=t){var o=a(t);if(!u.some((function(e){return e.check(o)})))throw new ReferenceError("Default route doesn't match any known routes.")}"function"==typeof r.history.pushState?r.addEventListener("popstate",S,!1):"#"===I.prefix[0]&&r.addEventListener("hashchange",E,!1),w=!0,c.mount(e,k),E()}return I.set=function(e,t,n){null!=h&&((n=n||{}).replace=!0),h=null,M(e,t,n)},I.get=function(){return p},I.prefix="#!",I.Link={view:function(e){var r,a,l,i=t(e.attrs.selector||"a",o(e.attrs,["options","params","selector","onclick"]),e.children);return(i.attrs.disabled=Boolean(i.attrs.disabled))?(i.attrs.href=null,i.attrs["aria-disabled"]="true"):(r=e.attrs.options,a=e.attrs.onclick,l=n(i.attrs.href,e.attrs.params),i.attrs.href=I.prefix+l,i.attrs.onclick=function(e){var t;"function"==typeof a?t=a.call(e.currentTarget,e):null==a||"object"!=typeof a||"function"==typeof a.handleEvent&&a.handleEvent(e),!1===t||e.defaultPrevented||0!==e.button&&0!==e.which&&1!==e.which||e.currentTarget.target&&"_self"!==e.currentTarget.target||e.ctrlKey||e.metaKey||e.shiftKey||e.altKey||(e.preventDefault(),e.redraw=!1,I.set(l,null,r))}),i}},I.param=function(e){return m&&null!=e?m[e]:m},I},B}()("undefined"!=typeof window?window:null,e),X}(),ie.render=z(),ie.redraw=le.redraw,ie.request=ae.request,ie.parseQueryString=Z(),ie.buildQueryString=D(),ie.parsePathname=ee(),ie.buildPathname=$(),ie.vnode=r(),ie.censor=ne(),ie.domFor=oe.domFor;var se=e(ie);function ce(e,t,n){const r=("function"==typeof e?e(t):e)||{};return n&&(r.initialParams=n),r}const ue=({currentIndex:e},t)=>e===t,de={view:({attrs:e})=>se(`i.icon.${e.pack||"fas"}.fa-${e.icon||"cog"}${e.size?".fa-"+e.size+"x":""}`,{title:e.icontitle||void 0,role:"presentation",onclick:e.onclick||null,...e.iconClass&&{class:e.iconClass}})},fe={view:({attrs:e,state:t,children:n})=>se(e.download||e.link?"a.button":"button",{...e.link&&{href:e.link},...e.download&&{download:e.download},...e.target&&{target:e.target},"aria-label":e["aria-label"]||e.title||e.text,title:e.title||e["aria-label"],class:(e.class||"")+(t.busy?" busy":""),...t.error&&{"data-error":t.error.message},...e.onclick&&{onclick:n=>{clearTimeout(t.debounce),t.debounce=setTimeout((()=>{const r=e.onclick(n,e);r&&r.then&&r.catch&&(t.busy=!0,se.redraw(),r.then((()=>{t.busy=!1,se.redraw()})).catch((e=>{t.busy=!1,t.error=e,se.redraw()})))}),25)}}},[...e.icon&&!e.right?[se(de,e)]:[],...e.text?[se("span.pad-1.pad-h",{class:e.textClass||null},e.text)]:[],...e.icon&&e.right?[se(de,e)]:[],...n])},me={view:({attrs:e,state:t,children:n})=>se(e.download||e.link?"a.button":"button",{...e.link&&{href:e.link},...e.download&&{rel:"nofollow",download:e.download},...e.target&&{target:e.target},"aria-label":e["aria-label"]||e.title||e.text,title:e.title||e["aria-label"],class:(e.class||"")+(t.busy?" busy":""),...t.error&&{"data-error":t.error.message},...e.onClick&&{onclick:n=>{clearTimeout(t.debounce),t.debounce=setTimeout((()=>{const r=e.onClick(n,e);r&&r.then&&r.catch&&(t.busy=!0,se.redraw(),r.then((()=>{t.busy=!1,se.redraw()})).catch((e=>{t.busy=!1,t.error=e,se.redraw()})))}),25)}}},[...e.icon&&!e.right?[se(de,e)]:[],...e.text?[se("span.pad-1.pad-h",{class:e.textClass||null},e.text)]:[],...e.icon&&e.right?[se(de,e)]:[],...n])},pe={view:({attrs:e,children:t})=>se(".flexcol.flexcenter.al-center.grows.emptywidget",{...e.class&&{class:e.class},...e.key&&{key:e.key},role:"presentation"},[se(de,e),...e.message?[se(".marg-2.marg-v",{role:"status",class:e.size>4?"font-150":"font-100","aria-label":e.message},e.message.split("\n").map(((e,t,n)=>1===n.length?e:se("p.msg"+t,e))))]:[],...t?[se(".flexcol.additional",t)]:[]])},he=(e,t,n,r)=>{const a=t.currentIndex,l=t.currentParams;-1===n?Object.assign(t,{current:null,currentIndex:-1,currentParams:[]}):Object.assign(t,{current:e.items[n]||null,currentIndex:t.current?n:-1,currentParams:r||[]}),e.onSelected&&e.onSelected(t.current,t.currentParams,t.currentIndex!==a,l),se.redraw()},ve={oninit:({attrs:e,state:t})=>{(t=e.state||t).setItem=(n,...r)=>he(e,e.state||t,n,r);const n=!isNaN(t.currentIndex)?t.currentIndex:e.selected,r=e.items&&e.items.length?void 0!==n&&e.items[n]?n:e.noinitial?-1:0:-1,a=-1!==r?e.items[r]:null;Object.assign(t,{currentIndex:r,current:a})},onupdate:({attrs:e,state:t})=>{(e.state||t).setItem=(n,...r)=>he(e,e.state||t,n,r)},view:({attrs:e,state:t})=>{t=e.state||t;const{current:n}=t;return se((e.element||"widget")+".selector"+(e.horizontal?".flexrow":".flexcol")+(e.className?"."+e.className:""),{...e.key&&{key:e.key},class:(t.current?"hascurrent":"empty")+(e.class?" "+e.class:"")},[...e.hideonly&&!(e.items.length>1)||e.hidesel?[]:[se("nav.toolbar.fullwidth"+(e.horizontal?".flexcol":".flexrow"),{"aria-label":e["aria-label"]||e.title||"selector",class:e.toolbarClass},e.items.map(((e,n)=>se(fe,{class:(e.class?e.class+" ":"")+(ue(t,n)?"accent":"nel"),icon:e.icon||null,...e.title&&{title:e.title},...e["aria-label"]&&{"aria-label":e["aria-label"]},...e.text&&{text:e.text},onclick:()=>{Date.now()-t.clickts<200||(t.clickts=Date.now(),t.bodyHidden=!1,t.setItem(n))}}))))],...n?[...e.toggle&&!t.bodyHidden?[se(me,{class:"selectornotch "+(t.bodyHidden?"bodyhidden":"bodyshown"),icon:t.bodyHidden?"caret-up":"caret-down",title:t.bodyHidden?"expand panel":"contract panel",onClick:()=>{t.bodyHidden=!t.bodyHidden,se.redraw()}})]:[],...e.toggle&&t.bodyHidden?[]:[se(".grows.flexcol.ohidden",{class:e.bodyClass,role:"presentation"},[se(n.widget,ce(n.attrs,e,t.currentParams),n.children)])],...e.closeButton?[se(fe,{class:"closebutton absolute toright",icon:"times",onclick:()=>{t.setItem(-1)},"aria-label":"close item"})]:[]]:se(pe,e)])}},ge={info:"info",error:"exclamation-triangle",success:"check"};const ye=new function(e=5e3,t){let n,r=[];function a(){const l=t||document.getElementById("notification-container");if(r.length){const t=r.splice(0,1)[0];!function(e,t){se.render(e,se(fe,{class:"notification "+t.type,text:t.text,icon:ge[t.type]||"info",size:1,role:"status",onclick:a}))}(l,t),clearTimeout(n),n=setTimeout(a,t.timer||e)}else se.render(l,""),n=null}return{add:(e,t)=>{r.push({text:e,type:t}),n||a()},clear:()=>{r=[],a()}}};function we(e,t,n,r,a){return{...e&&{view:e},...t&&{oninit:t},...n&&{oncreate:n},...a&&{onupdate:a},...r&&{onremove:r}}}const be={};const xe=we((({attrs:e,state:t,children:n})=>{const{nofold:r,cardid:a,size:l,title:o,action:i,collapsedAction:s,collapsedClass:c,expandedClass:u,cols:d,element:f,busy:m,expandedView:p,collapsedView:h,titleWidget:v,titleAttrs:g,titleClass:y,bodyClass:w,titleExpanded:b,titleCollapsed:x}=e,k=!r&&(a?!be[a]:!!t.collapsed),C=k?h?h(e,t):[]:p?p(e,t):n||[],E=v?se(v,g||{}):o?se("span.ellipsis.ohidden.unfold",o):void 0,S=m?"fa-sync":"fa-caret-down "+(k?"iscollapsed":"isexpanded");return C.length||!e.skipEmpty?se(f||"ul",{class:"cardie ohidden noshrink "+(d?"flexcol ":"flexrow wrap ")+(e.class?" "+e.class:"")+(r?" expanded":" "+(k?"collapsed "+(c||""):"expanded "+(u||"")))+(l?" marg-"+l:" marg-2")+(v?" withwidget":"")+(m?" busycard":"")},[...E?[se(".title.grows.fabf.flexrow.pointer.unfold",r?{class:y||"pad-2"}:{class:`${y||"pad-2"} ${S||""}`,title:k?x||"Click to expand the options":b||x||"Click to collapse the options",onclick:n=>{n.target.classList.contains("unfold")&&(n.shiftKey&&e.onShiftOpen?e.onShiftOpen():e.cardid?function(e,t=0){if(e){const[n,r]=e.split("-");t&&n&&r&&Object.keys(be).forEach((e=>{e.startsWith(n+"-")&&(be[e]=0)})),be[e]=t}}(a,k):t.collapsed=!t.collapsed,se.redraw())}},!i||!r&&k?s&&k?[se(me,s),E]:E:[se(me,i),E])]:[],...C.length?[se(".flexbreak"),se(".cardiebody.fadein-filter.grows",{class:(d?"flexcol ":"flexrow wrap")+" "+(w||"")},...C)]:[],...e.alwaysView?[e.alwaysView({attrs:e,state:t})]:[]]):[]}),(({attrs:e,state:t})=>{e.cardid||(t.collapsed=!e.nofold&&(e.cardid?!be[e.cardid]:!!e.collapsed))}),void 0,void 0,void 0),ke=(e,t,n=!1)=>{if(n||"number"===e.type){const n=e.float?Number.parseFloat(t):Number.parseInt(t,10);return Number.isNaN(n)?void 0:n}return t},Ce=(e,t,n)=>{const r=t.hasOwnProperty("value")?t.value:e.value;return ke(e,r,n)},Ee={view:e=>{const{attrs:t,state:n}=e;return n.attrs=t,se(".input-static.w-100.ellipsis",{class:(t.onDrag?"withdrag ":"")+(t.staticClass||"grows"),...t.staticTitle&&{title:t.staticTitle},...t.onDrag||{onclick:t.onClick},oncreate:({dom:n,state:r})=>{if(t.onDrag&&!t.readonly){const t=r.hammer=new Hammer.Manager(n,{touchAction:"pan-y"}),a=new Hammer.Pan({direction:Hammer.DIRECTION_VERTICAL}),l=new Hammer.Tap;t.add([a,l]),t.on("tap",(()=>e.state.attrs.onClick())),t.on("panup",(t=>e.state.attrs.onDrag(-1,t.srcEvent))),t.on("pandown",(t=>e.state.attrs.onDrag(1,t.srcEvent))),t.on("panend pancancel",(t=>e.state.attrs.onDrag(0,t.srcEvent)))}t.focus&&n.focus()},onremove:({state:e})=>{e.hammer&&e.hammer.destroy()}},t.value)}},Se={view:({attrs:e,state:t})=>{const n=e=>{t.value&&t.showInput&&delete t.showInput,delete t.value,e&&se.redraw()};return se(".textfield.flexcol.relative",{class:(e.label?"witharia":"")+(e.containerClass?" "+e.containerClass:""),...e.label&&{"aria-label":e.label}},[!e.staticField||!e.readonly&&t.showInput?!t.multi&&!e.alwaysmulti||e.type&&"text"!==e.type?se("input.w-100",{...e.id&&{id:e.id},type:e.type||"text",...void 0!==e.max&&{max:e.max},...void 0!==e.min&&{min:e.min},...e.step>0&&{step:e.step},...e.maxlength&&{maxlength:e.maxlength},class:(e.class||"")+(e.validator?t.isValid?" bg-ok":" bg-error":""),...e.title&&{title:e.title},value:Ce(e,t),placeholder:e.hint||"",oninput:n=>{t.value=ke(e,n.target.value),n.fromoninput=!0,e.validator&&(t.isValid=e.validator(t.value)),e.onchange&&(e.oninput||e.onchange)(t.value,n)},onchange:r=>{e.onchange&&(e.validator&&(t.isValid=e.validator(t.value)),r.enterPressed=t.enterPressed,delete t.enterPressed,e.onchange(ke(e,r.target.value),r),e.staticField?n(!0):delete t.value)},onblur:()=>{t.showInput&&n(!0)},onkeyup:r=>{t.showInput&&("Escape"===r.key?n(!0):"Enter"===r.key&&(t.value!==e.value&&t.value||(e.onchange(e.value,r),n(!0))))},onkeypress:n=>{t.showInput||"Enter"!==n.key||e.onenter&&e.onenter(n.target.value,n)}}):se("textarea.w-100",{class:e.class,value:Ce(e,t),...e.title&&{title:e.title},placeholder:e.hint||"",oninput:n=>{t.value=ke(e,n.target.value),e.validator&&(t.isValid=e.validator(t.value)),e.onchange&&(e.oninput||e.onchange)(t.value,n,!0)},onchange:r=>{if(e.onchange){e.validator&&(t.isValid=e.validator(t.value));const a=ke(e,r.target.value);n(!1),e.onchange(a,r,!0)}},onblur:()=>{t.showInput&&n(!0)},onkeyup:e=>{"Escape"===e.key&&t.showInput&&n(!1)}}):se(Ee,{readonly:e.readonly,staticClass:(t.dragging?"accent ":"")+(e.staticClass||""),staticTitle:e.staticTitle||e.draginc&&"Click then drag up and down to modify value, or just click to enter a custom value",value:e.displayTitle||Ce(e,t),focus:e.focus,...e.draginc&&!e.readonly&&{onDrag:(n,r)=>{if(n){t.dragging=!0;let a=Ce(e,t,!0);if(Number.isNaN(a)||void 0===a)return;a+=n*e.draginc,void 0!==e.max&&a>e.max&&(a=e.max),void 0!==e.min&&a<e.min&&(a=e.min),t.value="number"===e.type?a:String(a),e.onchange(t.value,r)}else delete t.dragging,delete t.value,se.redraw()}},...e.readonly||{onClick:()=>{t.showInput=!0,t.value=e.value,se.redraw()}}}),se(".span.actions.absolute.right.bottom",[...!e.multi||e.alwaysmulti||e.type&&"text"!==e.type?[]:[se(me,{icon:t.multi?"angle-double-up":"angle-double-down",class:"pad-2 transp",onClick:()=>{t.multi=!t.multi,se.redraw()}})],...e.actions?e.actions.map((e=>se(me,{...e,class:"transp pad-2"}))):[],...e.action?[se(me,{...e.action,class:"transp pad-2"})]:[]])])},oninit:({attrs:e,state:t})=>{if(e.staticField&&e.draginc){const n=Ce(e,t,!0);t.showInput=Number.isNaN(n)||null==n}}},Me=we((({attrs:e,children:t})=>t.length?se(".notice.cardie.flexcol.pad-3",{class:e.class||"marg-2 font-75"},se(".flexrow",[...e.icon?[se(de,e)]:[],se(".pad-2.pad-h",e.text)]),...t):se(".notice.cardie.flexrow.pad-3",{class:e.class||"marg-2 font-75",onclick:e.onClick},[...e.icon?[se(de,e)]:[],se(".pad-2.pad-h",e.text)]))),Ie=we((({attrs:e,state:t})=>se((e.unit||"")+".flexrow"+(e.subline?" withsubline":""),{class:e.class,text:e.text,title:e.title||null,onclick:()=>{t.checked=!t.checked,e.onchange&&e.onchange(t.checked),se.redraw()}},e.right?[...e.text?[se("span.grows.caption",e.subline?{"data-subline":e.subline}:{},e.text)]:[],se(de,{iconClass:"pad-2 pad-h",icon:t.checked?"toggle-on":"toggle-off"})]:[se(de,{iconClass:"pad-2 pad-h",icon:t.checked?"toggle-on":"toggle-off"}),...e.text?[se("span.grows.caption",e.subline?{"data-subline":e.subline}:{},e.text)]:[]])),(({attrs:e,state:t})=>{t.checked=t.original=e.checked}),null,null,(({attrs:e,state:t})=>{e.checked!==t.original&&(t.checked=t.original=e.checked,se.redraw())}));let Te;function ze(e){"function"==typeof Te&&(Te(),Te=void 0),e.style.display="none",delete Le.redraw}function Le(e,t=!1,n=".modal-content"){const r=document.getElementById("modal-container");if(r.classList.toggle("iscustom",".modal-content"!==n),t&&(Te=t,r.onclick=e=>{"modal-container"===e.target.id&&ze(r)}),!e)return delete Le.redraw,void(null===e?r.style.display="none":ze(r));r.style.display="flex",Le.redraw=()=>{se.render(r,se(n,{role:"alertdialog","aria-labelledby":"modaltitle","aria-modal":!0},["function"==typeof e?e():e]))},Le.redraw()}function Oe(){const e=document.getElementById("modal-container");return"none"!==e.style.display&&(ze(e),!0)}function Ne(e,t,n,r){return new Promise((a=>{function l(e){Le(null);try{a(e)}catch(e){}}const o=((e,t)=>{const n=[];if(t)for(const e of Object.keys(t))t[e]&&n.push("."+e);return(e||"")+n.join("")})(".popup.flexcol",{".favlist":(r=r||{}).favlist,".isfav":e&&e.classList.contains("isfav"),".isplay":e&&e.classList.contains("selected")});Le(se({view:()=>se(o,{onclick:n=>{if("INPUT"===n.target.nodeName)return;const r=n.target.getAttribute("data-action");r?l({domItem:e,item:t,action:r}):Le(null)}},[...t.title?[se("h3",{id:"modaltitle"},t.title)]:[],...n.map((n=>"text"===n.type?se("input.action",{value:n.value||"",type:"text",placeholder:n.hint||"",oncreate:({dom:e})=>e.focus(),onkeyup:r=>{27===r.keyCode&&l({domItem:e,item:t,action:n})},onchange:r=>{r.target.blur(),l({domItem:e,item:t,action:n,value:r.target.value})}}):se(fe,{...n,onclick:()=>l({domItem:e,item:t,action:n})},n.caption)))])}),!0)}))}const je=window.structuredClone?window.structuredClone:e=>JSON.parse(JSON.stringify(e));function Ae(e,t,n,r,a={}){setTimeout((()=>Ne(document.body,{title:e},[{type:"text",hint:n,value:t}]).then((({value:e})=>(a.refreshKey=String(Date.now()),r(e))))),100)}const Pe=[["Lights and Fog",null,["amblight","l0","l1","l2","l3","fog"],0],["Face and Accessories",null,["facekit"],1],["Particle settings",null,["particles"],2],["Video Segmentation","common",["segcam","mask","green"],3,!0],["Video Effects",null,["fxconfig"],9],["Video Plane","val",["xvideo","yvideo","zvideo","rvideo","svideo","video"],4],["Main Camera","val",["ypos","xpos","zoom","yaw","pitch","roll","ai"],5],["Drone Camera","val",["free"],6],["Followed Agent","val",["track"],10],["Game Camera","val",["orbit","track","ocam"],7,void 0,!0],["Transition Speed","val",["spd"],8]],De=we((({attrs:e})=>se("h2.marg-2.no-marg-bottom",e.title))),$e=we((({attrs:e})=>{const{type:t="changes",meta:n,onInput:r,title:a,options:l}=e,o=n.title?.trim().length&&n.description?.trim().length,i=l&&l.embedded;return se(".flexcol.grows.ohidden.fadein",[...e.title?[se(De,{title:a})]:[],se(".flexrow.wrap.grows.pad-3.propsgroup.scrolly",[...e.notice?[se(Me,{class:"marg-1 marg-v withbottommargin font-75 col-12",size:1,icon:"info-circle",text:e.notice})]:[],se(".witharia.col-12.pad-1.pad-v",{"aria-label":t+" name"},se(Se,{class:"pad-2 pad-xh "+(o?"valid":"invalid"),value:n.title,maxlength:64,onchange:e=>{n.title=e,se.redraw()}})),...i?[]:[se(".col-12.witharia.pad-1.pad-v",{"aria-label":"description"},se(Se,{class:"pad-2 pad-xh "+(n.description?"valid":"invalid"),value:n.description,maxlength:240,multi:!0,alwaysmulti:!0,onchange:e=>{n.description=e,se.redraw()}})),se(".col-8.witharia.pad-1.pad-v",{"aria-label":"tags"},se(Se,{class:"pad-2 pad-xh",value:n.tags,maxlength:128,onchange:e=>{n.tags=e.toLowerCase().split(" ").join(",").split(",").filter((e=>e.length)).join(",")}})),se(".col-4.witharia.pad-1.pad-v",{"aria-label":"youtube video"},se(Se,{class:"pad-2 pad-xh",value:n.ytref||"",hint:"YouTube ID",maxlength:16,onchange:e=>{(e=e.trim())?-1===e.indexOf(" ")&&(n.ytref=e.trim()):delete n.ytref}}))],se(".col-4.witharia.pad-1.pad-v",{"aria-label":"content attribution"},se(Se,{class:"pad-2 pad-xh",value:n.author,hint:"author name",maxlength:128,onchange:e=>{n.author=e}})),se(".col-4.witharia.pad-1.pad-v",{"aria-label":"license or author link"},se(Se,{class:"pad-2 pad-xh",hint:"https://...",value:n.link,maxlength:128,onchange:e=>{n.link=e}})),se(".col-4.witharia.pad-1.pad-v",{"aria-label":"source domain"},se(Se,{class:"pad-2 pad-xh",value:n.source,hint:"example.com",maxlength:128,onchange:e=>{n.source=e}})),se(".col-12.al-right.marg-2.marg-v",se(me,{class:"noshrink accentbutton unitheightsmall col-4",text:"save "+t,onClick:()=>{n.title?.trim().length&&(i||n.description?.trim().length)?(Le(null),r(n)):ye.add("Information is incomplete or invalid")}}))])])})),Re=we((({attrs:e})=>{const{parameters:t,preset:n,presetComponents:r,types:a,globalData:l,fetcher:o}=e,i=[],s=[],c=a?Pe:Pe.filter((e=>{const[,r,a,o,c]=e,u=r?n[r]:n,d=c?l:t,f=r?d[r]:d;let m=!1;if(a.length){for(const e of a)u&&void 0!==u[e]&&(m=i[o]=!0),void 0!==f[e]&&(m=s[o]=!0);return m}return m=!0,s[o]=!!f,i[o]=!!u,m}));return se("ul.flexrow.wrap.userdialog",c.length?c.map((c=>{const[u,d,f,m,p,h]=c,v=a?void 0:d?n[d]:n,g=p?l:t,y=a?void 0:d?g[d]:g,w=a||i[m],b=s[m];return[...r?[se(Ie,{title:`Include ${c[0]} in snapshots`,class:"grows unitheightsmall"+(r[m]?" accent":""),checked:!!r[m],onchange:t=>{r[m]=!r[m],se.redraw(),e.redraw&&e.redraw()}}),se(".grows",{class:w?"avail":"unavail"},u)]:[],...e.types?[]:[se(me,{class:"col-3"+(b?"avail":"unavail"),icon:"sync",title:`Copy ${u} from current state`,onClick:()=>{if(f.length){d&&!n[d]&&(n[d]={});const e=d?n[d]:n;for(const t of f)if(void 0!==y[t]){const n=h&&o?o(e[t],m):y[t];e[t]=je(n)}}else if(0===f.length&&d&&void 0!==y){const e=h&&o?o(y,m):y;n[d]=je(e)}e.redraw&&e.redraw(),ye.add(`updated ${u} from current scene`)}}),se(me,{class:"col-3 "+(w?"":"disabled text-lo"),icon:"trash",title:`Delete ${u} in preset`,onClick:()=>w&&(()=>{if(f.length)for(const e of f)delete v[e];else 0===f.length&&d&&delete n[d];e.redraw&&e.redraw()})()})],se(".flexbreak")]})):se("h3","Preset is Empty"))}));var Fe=Object.freeze({__proto__:null,choose:function(e,t={icon:"circle",onSelect:()=>{}}){const{icon:n,title:r,field:a,onSelect:l,parser:o=e=>e}=t,i=e.map(((e,t)=>({icon:a&&e.icon||n,caption:o(a?e[a]:e,e),onClick:n=>l(e,n,t)})));Array.isArray(e)&&!e.length?ye.add("No items available"):Ne(document.body,{title:r},i).then((({action:e})=>e.onClick()))},promptEntity:(e,t,n,r={})=>new Promise(((a,l)=>{Le(se($e,{meta:e,type:n,title:t,options:r,onInput:e=>a(e)}),(()=>{l(new Error("cancelled"))}))})),promptName:Ae,promptOptions:function(e,t,n={}){const{title:r,field:a,icon:l,textNew:o,textHint:i,resolve:s}=n,c=Array.isArray(e)?e.map((e=>({icon:l,caption:a?e[a]:e,onClick:n=>t(e,n)}))):Object.keys(e).map((n=>({icon:e[n].icon||l,caption:e[n].caption||n,onClick:r=>t(s&&void 0!==e[n].value?e[n].value:e[n],r)})));Array.isArray(e)&&!e.length?ye.add("No items available"):Ne(document.body,{title:r},[...o&&!a?[{icon:"plus",caption:o,onClick:()=>Ae(o,"",i,(e=>{e&&e&&e.trim()&&(t(e),se.redraw())}))}]:[],...c]).then((({action:e})=>e.onClick())).finally((()=>{}))},promptPreset:(e,t,n={})=>new Promise(((r,a)=>{Le((()=>se(Re,{...n,preset:e,parameters:t,redraw:()=>Le.redraw()})),(()=>{a(new Error("cancelled"))}))}))});const He=we((({attrs:e,children:t})=>se(".separator",{class:e.class||"mini",...e.onClick&&{onclick:e.onClick}},[se("span.grows",e.text),...t||[]]))),_e=!!navigator.userAgent.match(/iPhone|iPad|iPod/i);let Ke,Ve=!1;function qe(e,t,n){return Math.min(Math.max(e,t),n)}function Ue(e,t,n,r){if(n-t<=0)return t;if(r<=0)return qe(e,t,n);const a=Math.ceil((n-t)/r);return qe(t+Math.round(a*(e-t)/(n-t))*r,t,n)}function Be(){let e,t,n,r,a,l,o,i,s,c=0,u=!1,d=!1,f=4,m=1,p=0,h=10,v=0,g=1,y="horizontal";function w(e,t){let n,r;"vertical"===y?(n=l.bottom-l.top,r=l.bottom-t):(n=l.right-l.left,r=e-l.left),r=qe(r,0,n);const a=Ue(r/n*(h-p)+p,p,h,g);return N(a),a}function b(e,n,r){return d?function(e,n){u=o=!0,l=t.getBoundingClientRect();const r=w(e,n);r!==v&&(v=r,s&&!1!==s(v)&&se.redraw())}(e,n):(a=r,u=!0,o=!1,l=t.getBoundingClientRect(),void(i||a.target.requestPointerLock()));var a,i}function x(e,t,n){return o?w(e,t):function(e,t,n){const r=n.shiftKey?f:n.metaKey||n.ctrlKey?4*f:m;let a,l;a="vertical"===y?n.movementY||0:n.movementX||0;let o=g>0?g:(h-p)/100;if(a<0)l=Math.max(v+o*r*a,p);else{if(!(a>0))return v;l=Math.min(v+o*r*a,h)}return l=Ue(l,p,h,g),N(l),l}(0,0,n)}function k(e){2!==c&&(c=1,0===e.button&&(window.addEventListener("mousemove",C),window.addEventListener("mouseup",E),b(e.clientX,e.clientY,e)))}function C(e){e.preventDefault(),z(e.clientX,e.clientY,e)}function E(e){window.removeEventListener("mousemove",C),window.removeEventListener("mouseup",E),L(e.clientX,e.clientY,e)}function S(t){if(1===c)return;e.addEventListener("touchmove",M),e.addEventListener("touchend",I);const n=t.changedTouches[0];b(n.clientX,n.clientY,t)}function M(e){e.preventDefault();const t=e.changedTouches[0];z(t.clientX,t.clientY,e)}function I(t){e.removeEventListener("touchmove",M),e.removeEventListener("touchend",I);const n=t.changedTouches[0];L(n.clientX,n.clientY,n)}function T(e){const t=e.keyCode;let n;if(33===t){e.preventDefault();let t=Math.max((h-p)/10,g);t<=0&&(t=1),n=Ue(v+t,p,h,g)}else if(34===t){e.preventDefault();let t=Math.max((h-p)/10,g);t<=0&&(t=1),n=Ue(v-t,p,h,g)}else if(35===t)e.preventDefault(),n=h;else if(36===t)e.preventDefault(),n=p;else if(37===t||40===t){e.preventDefault();let t=(g>0?g:(h-p)/10)*(e.shiftKey?.25:e.ctrlKey||e.metaKey?4:1);n=Math.max(v-t,p)}else if(38===t||39===t){e.preventDefault();let t=(g>0?g:(h-p)/10)*(e.shiftKey?.25:e.ctrlKey||e.metaKey?4:1);n=Math.min(v+t,h)}else 48===t&&(n=(h+p)/2);"number"==typeof n&&n!==v&&(v=n,N(v),i&&!1!==i(v)&&se.redraw())}function z(e,t,n){if(!u)return;const r=x(e,t,n);r!==v&&(v=r,s&&!1!==s(v)&&se.redraw())}function L(e,t,n){u&&(u=!1,v=x(e,t,n),i&&!1!==i(v)&&se.redraw(),o||document.exitPointerLock(),setTimeout((function(){u||(c=0)}),350))}function O(e){let t=(e-p)/(h-p);return"vertical"===y&&(t=1-t),String(100*t)+"%"}function N(e){const t=O(e),l=O(h-e+p);"vertical"===y?(a.style.top=t,n.style.height=t,r.style.height=l):(a.style.left=t,n.style.width=l,r.style.width=t)}function j(e){p=e.min,h=e.max,g="number"!=typeof e.step||Number.isNaN(e.step)?1:qe(e.step,0,h-p),y="vertical"===e.orientation?"vertical":"horizontal",i=e.onchange,s=e.ondrag,"number"==typeof e.value&&(v=qe(e.value,p,h)),d=!e.relative,f=e.factor&&e.factor[0]||4,m=e.factor&&e.factor[1]||1}return{oncreate:({attrs:l,dom:o})=>{_e&&!Ve&&(window.addEventListener("touchmove",(function(){})),Ve=!0),j(l),e=o,t=e.querySelector(".mithril-range-bar"),n=t.querySelector(".mithril-range-bar-0"),r=t.querySelector(".mithril-range-bar-1"),a=t.querySelector(".mithril-range-handle"),e.addEventListener("mousedown",k),e.addEventListener("touchstart",S),e.addEventListener("keydown",T)},onremove:function(){window.removeEventListener("mousemove",C),window.removeEventListener("mouseup",E),e.removeEventListener("mousedown",k),e.removeEventListener("touchstart",S),e.removeEventListener("touchmove",M),e.removeEventListener("touchend",I),e.removeEventListener("keydown",T)},view:function({attrs:e,children:t}){j(e),v=Ue(v,p,h,g);const n={class:"mithril-range nokey"+(e.relative?" isrelative ":" ")+(0===v?"atzero":v<0?"belowzero":"overzero")+(null!=e.class?" "+e.class:""),tabIndex:"0",role:"slider","aria-valuemin":String(p),"aria-valuemax":String(h),"aria-valuenow":String(v),"aria-orientation":y};e.id&&(n.id=e.id),e.ariaLabelledby&&(n["aria-labelledby"]=e.ariaLabelledby),e.disabled&&(n.style={pointerEvents:"none"},n["aria-disabled"]="true");const r=O(v),a=O(h-v+p);let l,o,i;return"vertical"===y?(l={top:r},o={height:r},i={height:a}):(l={left:r},o={width:a},i={width:r}),se("div",n,se("div",{class:"mithril-range-bar nokey"},se("div",{class:"mithril-range-bar-0 nokey",style:o}),se("div",{class:"mithril-range-bar-1 nokey",style:i}),se("div",{class:"mithril-range-handle nokey",style:l},t)),!!e.name&&se("input",{type:"hidden",name:e.name,value:String(v)}))}}}const Ye=e=>{const t=e.value>e.curMax?Math.ceil(e.value/e.curMax):1,n=e.curMin<0&&e.value<e.curMin?Math.abs(Math.ceil(e.value/e.curMin)):1,r=Math.min(Math.max(n,t),e.maxMultiplier);e.curMultiplier!==r&&(e.curMultiplier=r,se.redraw())},Xe=e=>e.value>=e.curMax*e.curMultiplier*.9&&e.maxMultiplier>1&&e.curMultiplier<=e.maxMultiplier-1?(e.curMultiplier++,!0):e.curMin<0?Je(e):void 0,Je=e=>{if(e.value<=e.curMin*e.curMultiplier*.9&&e.maxMultiplier>1&&e.curMultiplier<=e.maxMultiplier-1)return e.curMultiplier++,!0},We={oninit:({attrs:e,state:t})=>{Object.assign(t,{value:e.value||0,initial:e.value||0,curMax:e.max,curMin:e.min,curMultiplier:1,maxMultiplier:e.multiplier||1,id:"I"+Date.now()}),t.maxMultiplier>1&&(t.value>e.max?t.curMultiplier=Math.ceil(t.value/e.max):e.min<0&&t.value<e.min&&(t.curMultiplier=Math.abs(Math.ceil(t.value/e.min))))},onupdate:({attrs:e,state:t})=>{const n=e.multiplier||1,r=e.value||0;t.curMax!==e.max||t.maxMultiplier!==n?(Object.assign(t,{curMax:e.max,curMin:e.min,maxMultiplier:n,value:e.value,initial:r}),Xe(t)||(clearTimeout(t.timer),t.timer=setTimeout(Ye,1e3,t)),se.redraw()):t.initial!==r&&(Object.assign(t,{value:r,initial:r}),clearTimeout(Ke),Ke=setTimeout((()=>se.redraw()),50))},view:({attrs:e,state:t})=>se(".range.flexcol.control.relative"+(e.multiplier>1?".withmultiplier":""),{...e.class&&{class:e.class},title:e.hint||"Click, then use arrows to finetune value if needed"},[...e.title?[se("label",{class:"rangelabel",htmlFor:t.id},e.title)]:[],se(Be,{onchange:n=>{t.value=n;!Xe(t)&&t.curMultiplier>1&&(clearTimeout(t.timer),t.timer=setTimeout(Ye,1e3,t)),e.onchange?e.onchange(n):se.redraw()},ondrag:n=>n!==t.value&&(t.value=n,e.ondrag&&e.ondrag(n),!0),value:t.value||0,min:(e.min||0)*t.curMultiplier,max:t.curMax*t.curMultiplier||100,step:e.step||1,relative:e.relative,factor:e.factor},[se(".currentval",e.parser?e.parser(t.value,e.step<1):t.value?e.step<1?t.value.toFixed(2):""+Math.floor(t.value):"")])])},Ge={view:({attrs:e,state:t})=>se(We,{value:e.value||0,min:e.min||0,max:e.max||100,step:e.step||.1,class:(e.disabled?"disabled ":"")+(e.class||""),title:e.title,multiplier:e.multiplier,hint:e.hint,parser:e.parser,relative:e.relative,factor:e.factor,getLabel:e=>e?""+e:"default",ondrag:n=>(t.changed=!0,t.value=n,e.onchange&&e.onchange(n,!0),!0),onchange:n=>(e.auto0?n=0:e.autoValue&&(n=e.autoValue),t.changed=!0,t.value=n,e.onchange&&e.onchange(n,!1),!0)})};function Qe(e,t){m.route(document.getElementById(e),t.default||"/",t.routes)}export{fe as Button,me as ButtonNew,xe as CardieWidget,pe as Empty,de as Icon,Se as InputWidget,Me as NoticeWidget,Fe as OverflowUtils,Ge as RangeWidget,ve as Selector,He as Separator,Ie as SwitchWidget,Oe as clearModal,we as defineWidget,se as m,Le as popupMessage,Qe as startApp};
|
|
1
|
+
import e from"mithril";function t(e,t,a){const n=("function"==typeof e?e(t):e)||{};return a&&(n.initialParams=a),n}const a=({currentIndex:e},t)=>e===t,n={view:({attrs:t})=>e(`i.icon.${t.pack||"fas"}.fa-${t.icon||"cog"}${t.size?".fa-"+t.size+"x":""}`,{title:t.icontitle||void 0,role:"presentation",onclick:t.onclick||null,...t.iconClass&&{class:t.iconClass}})},i={view:({attrs:t,state:a,children:i})=>e(t.download||t.link?"a.button":"button",{...t.link&&{href:t.link},...t.download&&{download:t.download},...t.target&&{target:t.target},"aria-label":t["aria-label"]||t.title||t.text,title:t.title||t["aria-label"],class:(t.class||"")+(a.busy?" busy":""),...a.error&&{"data-error":a.error.message},...t.onclick&&{onclick:n=>{clearTimeout(a.debounce),a.debounce=setTimeout((()=>{const i=t.onclick(n,t);i&&i.then&&i.catch&&(a.busy=!0,e.redraw(),i.then((()=>{a.busy=!1,e.redraw()})).catch((t=>{a.busy=!1,a.error=t,e.redraw()})))}),25)}}},[...t.icon&&!t.right?[e(n,t)]:[],...t.text?[e("span.pad-1.pad-h",{class:t.textClass||null},t.text)]:[],...t.icon&&t.right?[e(n,t)]:[],...i])},l={view:({attrs:t,state:a,children:i})=>e(t.download||t.link?"a.button":"button",{...t.link&&{href:t.link},...t.download&&{rel:"nofollow",download:t.download},...t.target&&{target:t.target},"aria-label":t["aria-label"]||t.title||t.text,title:t.title||t["aria-label"],class:(t.class||"")+(a.busy?" busy":""),...a.error&&{"data-error":a.error.message},...t.onClick&&{onclick:n=>{clearTimeout(a.debounce),a.debounce=setTimeout((()=>{const i=t.onClick(n,t);i&&i.then&&i.catch&&(a.busy=!0,e.redraw(),i.then((()=>{a.busy=!1,e.redraw()})).catch((t=>{a.busy=!1,a.error=t,e.redraw()})))}),25)}}},[...t.icon&&!t.right?[e(n,t)]:[],...t.text?[e("span.pad-1.pad-h",{class:t.textClass||null},t.text)]:[],...t.icon&&t.right?[e(n,t)]:[],...i])},r={view:({attrs:t,children:a})=>e(".flexcol.flexcenter.al-center.grows.emptywidget",{...t.class&&{class:t.class},...t.key&&{key:t.key},role:"presentation"},[e(n,t),...t.message?[e(".marg-2.marg-v",{role:"status",class:t.size>4?"font-150":"font-100","aria-label":t.message},t.message.split("\n").map(((t,a,n)=>1===n.length?t:e("p.msg"+a,t))))]:[],...a?[e(".flexcol.additional",a)]:[]])},o=(t,a,n,i)=>{const l=a.currentIndex,r=a.currentParams;-1===n?Object.assign(a,{current:null,currentIndex:-1,currentParams:[]}):Object.assign(a,{current:t.items[n]||null,currentIndex:a.current?n:-1,currentParams:i||[]}),t.onSelected&&t.onSelected(a.current,a.currentParams,a.currentIndex!==l,r),e.redraw()},s={oninit:({attrs:e,state:t})=>{(t=e.state||t).setItem=(a,...n)=>o(e,e.state||t,a,n);const a=!isNaN(t.currentIndex)?t.currentIndex:e.selected,n=e.items&&e.items.length?void 0!==a&&e.items[a]?a:e.noinitial?-1:0:-1,i=-1!==n?e.items[n]:null;Object.assign(t,{currentIndex:n,current:i})},onupdate:({attrs:e,state:t})=>{(e.state||t).setItem=(a,...n)=>o(e,e.state||t,a,n)},view:({attrs:n,state:o})=>{o=n.state||o;const{current:s}=o;return e((n.element||"widget")+".selector"+(n.horizontal?".flexrow":".flexcol")+(n.className?"."+n.className:""),{...n.key&&{key:n.key},class:(o.current?"hascurrent":"empty")+(n.class?" "+n.class:"")},[...n.hideonly&&!(n.items.length>1)||n.hidesel?[]:[e("nav.toolbar.fullwidth"+(n.horizontal?".flexcol":".flexrow"),{"aria-label":n["aria-label"]||n.title||"selector",class:n.toolbarClass},n.items.map(((t,n)=>e(i,{class:(t.class?t.class+" ":"")+(a(o,n)?"accent":"nel"),icon:t.icon||null,...t.title&&{title:t.title},...t["aria-label"]&&{"aria-label":t["aria-label"]},...t.text&&{text:t.text},onclick:()=>{Date.now()-o.clickts<200||(o.clickts=Date.now(),o.bodyHidden=!1,o.setItem(n))}}))))],...s?[...n.toggle&&!o.bodyHidden?[e(l,{class:"selectornotch "+(o.bodyHidden?"bodyhidden":"bodyshown"),icon:o.bodyHidden?"caret-up":"caret-down",title:o.bodyHidden?"expand panel":"contract panel",onClick:()=>{o.bodyHidden=!o.bodyHidden,e.redraw()}})]:[],...n.toggle&&o.bodyHidden?[]:[e(".grows.flexcol.ohidden",{class:n.bodyClass,role:"presentation"},[e(s.widget,t(s.attrs,n,o.currentParams),s.children)])],...n.closeButton?[e(i,{class:"closebutton absolute toright",icon:"times",onclick:()=>{o.setItem(-1)},"aria-label":"close item"})]:[]]:e(r,n)])}},c={info:"info",error:"exclamation-triangle",success:"check"};const d=new function(t=5e3,a){let n,l=[];function r(){const o=a||document.getElementById("notification-container");if(l.length){const a=l.splice(0,1)[0];!function(t,a){e.render(t,e(i,{class:"notification "+a.type,text:a.text,icon:c[a.type]||"info",size:1,role:"status",onclick:r}))}(o,a),clearTimeout(n),n=setTimeout(r,a.timer||t)}else e.render(o,""),n=null}return{add:(e,t)=>{l.push({text:e,type:t}),n||r()},clear:()=>{l=[],r()}}};function u(e,t,a,n,i){return{...e&&{view:e},...t&&{oninit:t},...a&&{oncreate:a},...i&&{onupdate:i},...n&&{onremove:n}}}const p={};const h=u((({attrs:t,state:a,children:n})=>{const{nofold:i,cardid:r,size:o,title:s,action:c,collapsedAction:d,collapsedClass:u,expandedClass:m,cols:h,element:v,busy:g,expandedView:f,collapsedView:w,titleWidget:y,titleAttrs:b,titleClass:x,bodyClass:k,titleExpanded:M,titleCollapsed:C}=t,I=!i&&(r?!p[r]:!!a.collapsed),E=I?w?w(t,a):[]:f?f(t,a):n||[],L=y?e(y,b||{}):s?e("span.ellipsis.ohidden.unfold",s):void 0,T=g?"fa-sync":"fa-caret-down "+(I?"iscollapsed":"isexpanded");return E.length||!t.skipEmpty?e(v||"ul",{class:"cardie ohidden noshrink "+(h?"flexcol ":"flexrow wrap ")+(t.class?" "+t.class:"")+(i?" expanded":" "+(I?"collapsed "+(u||""):"expanded "+(m||"")))+(o?" marg-"+o:" marg-2")+(y?" withwidget":"")+(g?" busycard":"")},[...L?[e(".title.grows.fabf.flexrow.pointer.unfold",i?{class:x||"pad-2"}:{class:`${x||"pad-2"} ${T||""}`,title:I?C||"Click to expand the options":M||C||"Click to collapse the options",onclick:n=>{n.target.classList.contains("unfold")&&(n.shiftKey&&t.onShiftOpen?t.onShiftOpen():t.cardid?function(e,t=0){if(e){const[a,n]=e.split("-");t&&a&&n&&Object.keys(p).forEach((e=>{e.startsWith(a+"-")&&(p[e]=0)})),p[e]=t}}(r,I):a.collapsed=!a.collapsed,e.redraw())}},!c||!i&&I?d&&I?[e(l,d),L]:L:[e(l,c),L])]:[],...E.length?[e(".flexbreak"),e(".cardiebody.fadein-filter.grows",{class:(h?"flexcol ":"flexrow wrap")+" "+(k||"")},...E)]:[],...t.alwaysView?[t.alwaysView({attrs:t,state:a})]:[]]):[]}),(({attrs:e,state:t})=>{e.cardid||(t.collapsed=!e.nofold&&(e.cardid?!p[e.cardid]:!!e.collapsed))}),void 0,void 0,void 0),v=(e,t,a=!1)=>{if(a||"number"===e.type){const a=e.float?Number.parseFloat(t):Number.parseInt(t,10);return Number.isNaN(a)?void 0:a}return t},g=(e,t,a)=>{const n=t.hasOwnProperty("value")?t.value:e.value;return v(e,n,a)},f={view:t=>{const{attrs:a,state:n}=t;return n.attrs=a,e(".input-static.w-100.ellipsis",{class:(a.onDrag?"withdrag ":"")+(a.staticClass||"grows"),...a.staticTitle&&{title:a.staticTitle},...a.onDrag||{onclick:a.onClick},oncreate:({dom:e,state:n})=>{if(a.onDrag&&!a.readonly){const a=n.hammer=new Hammer.Manager(e,{touchAction:"pan-y"}),i=new Hammer.Pan({direction:Hammer.DIRECTION_VERTICAL}),l=new Hammer.Tap;a.add([i,l]),a.on("tap",(()=>t.state.attrs.onClick())),a.on("panup",(e=>t.state.attrs.onDrag(-1,e.srcEvent))),a.on("pandown",(e=>t.state.attrs.onDrag(1,e.srcEvent))),a.on("panend pancancel",(e=>t.state.attrs.onDrag(0,e.srcEvent)))}a.focus&&e.focus()},onremove:({state:e})=>{e.hammer&&e.hammer.destroy()}},a.value)}},w={view:({attrs:t,state:a})=>{const n=t=>{a.value&&a.showInput&&delete a.showInput,delete a.value,t&&e.redraw()};return e(".textfield.flexcol.relative",{class:(t.label?"witharia":"")+(t.containerClass?" "+t.containerClass:""),...t.label&&{"aria-label":t.label}},[!t.staticField||!t.readonly&&a.showInput?!a.multi&&!t.alwaysmulti||t.type&&"text"!==t.type?e("input.w-100",{...t.id&&{id:t.id},type:t.type||"text",...void 0!==t.max&&{max:t.max},...void 0!==t.min&&{min:t.min},...t.step>0&&{step:t.step},...t.maxlength&&{maxlength:t.maxlength},class:(t.class||"")+(t.validator?a.isValid?" bg-ok":" bg-error":""),...t.title&&{title:t.title},value:g(t,a),placeholder:t.hint||"",oninput:e=>{a.value=v(t,e.target.value),e.fromoninput=!0,t.validator&&(a.isValid=t.validator(a.value)),t.onchange&&(t.oninput||t.onchange)(a.value,e)},onchange:e=>{t.onchange&&(t.validator&&(a.isValid=t.validator(a.value)),e.enterPressed=a.enterPressed,delete a.enterPressed,t.onchange(v(t,e.target.value),e),t.staticField?n(!0):delete a.value)},onblur:()=>{a.showInput&&n(!0)},onkeyup:e=>{a.showInput&&("Escape"===e.key?n(!0):"Enter"===e.key&&(a.value!==t.value&&a.value||(t.onchange(t.value,e),n(!0))))},onkeypress:e=>{a.showInput||"Enter"!==e.key||t.onenter&&t.onenter(e.target.value,e)}}):e("textarea.w-100",{class:t.class,value:g(t,a),...t.title&&{title:t.title},placeholder:t.hint||"",oninput:e=>{a.value=v(t,e.target.value),t.validator&&(a.isValid=t.validator(a.value)),t.onchange&&(t.oninput||t.onchange)(a.value,e,!0)},onchange:e=>{if(t.onchange){t.validator&&(a.isValid=t.validator(a.value));const i=v(t,e.target.value);n(!1),t.onchange(i,e,!0)}},onblur:()=>{a.showInput&&n(!0)},onkeyup:e=>{"Escape"===e.key&&a.showInput&&n(!1)}}):e(f,{readonly:t.readonly,staticClass:(a.dragging?"accent ":"")+(t.staticClass||""),staticTitle:t.staticTitle||t.draginc&&"Click then drag up and down to modify value, or just click to enter a custom value",value:t.displayTitle||g(t,a),focus:t.focus,...t.draginc&&!t.readonly&&{onDrag:(n,i)=>{if(n){a.dragging=!0;let e=g(t,a,!0);if(Number.isNaN(e)||void 0===e)return;e+=n*t.draginc,void 0!==t.max&&e>t.max&&(e=t.max),void 0!==t.min&&e<t.min&&(e=t.min),a.value="number"===t.type?e:String(e),t.onchange(a.value,i)}else delete a.dragging,delete a.value,e.redraw()}},...t.readonly||{onClick:()=>{a.showInput=!0,a.value=t.value,e.redraw()}}}),e(".span.actions.absolute.right.bottom",[...!t.multi||t.alwaysmulti||t.type&&"text"!==t.type?[]:[e(l,{icon:a.multi?"angle-double-up":"angle-double-down",class:"pad-2 transp",onClick:()=>{a.multi=!a.multi,e.redraw()}})],...t.actions?t.actions.map((t=>e(l,{...t,class:"transp pad-2"}))):[],...t.action?[e(l,{...t.action,class:"transp pad-2"})]:[]])])},oninit:({attrs:e,state:t})=>{if(e.staticField&&e.draginc){const a=g(e,t,!0);t.showInput=Number.isNaN(a)||null==a}}},y=u((({attrs:t,children:a})=>a.length?e(".notice.cardie.flexcol.pad-3",{class:t.class||"marg-2 font-75"},e(".flexrow",[...t.icon?[e(n,t)]:[],e(".pad-2.pad-h",t.text)]),...a):e(".notice.cardie.flexrow.pad-3",{class:t.class||"marg-2 font-75",onclick:t.onClick},[...t.icon?[e(n,t)]:[],e(".pad-2.pad-h",t.text)]))),b=u((({attrs:t,state:a})=>e((t.unit||"")+".flexrow"+(t.subline?" withsubline":""),{class:t.class,text:t.text,title:t.title||null,onclick:()=>{a.checked=!a.checked,t.onchange&&t.onchange(a.checked),e.redraw()}},t.right?[...t.text?[e("span.grows.caption",t.subline?{"data-subline":t.subline}:{},t.text)]:[],e(n,{iconClass:"pad-2 pad-h",icon:a.checked?"toggle-on":"toggle-off"})]:[e(n,{iconClass:"pad-2 pad-h",icon:a.checked?"toggle-on":"toggle-off"}),...t.text?[e("span.grows.caption",t.subline?{"data-subline":t.subline}:{},t.text)]:[]])),(({attrs:e,state:t})=>{t.checked=t.original=e.checked}),null,null,(({attrs:t,state:a})=>{t.checked!==a.original&&(a.checked=a.original=t.checked,e.redraw())}));let x;function k(e){"function"==typeof x&&(x(),x=void 0),e.style.display="none",delete M.redraw}function M(t,a=!1,n=".modal-content"){const i=document.getElementById("modal-container");if(i.classList.toggle("iscustom",".modal-content"!==n),a&&(x=a,i.onclick=e=>{"modal-container"===e.target.id&&k(i)}),!t)return delete M.redraw,void(null===t?i.style.display="none":k(i));i.style.display="flex",M.redraw=()=>{e.render(i,e(n,{role:"alertdialog","aria-labelledby":"modaltitle","aria-modal":!0},["function"==typeof t?t():t]))},M.redraw()}function C(){const e=document.getElementById("modal-container");return"none"!==e.style.display&&(k(e),!0)}function I(t,a,n,l){return new Promise((r=>{function o(e){M(null);try{r(e)}catch(e){}}const s=((e,t)=>{const a=[];if(t)for(const e of Object.keys(t))t[e]&&a.push("."+e);return(e||"")+a.join("")})(".popup.flexcol",{".favlist":(l=l||{}).favlist,".isfav":t&&t.classList.contains("isfav"),".isplay":t&&t.classList.contains("selected")});M(e({view:()=>e(s,{onclick:e=>{if("INPUT"===e.target.nodeName)return;const n=e.target.getAttribute("data-action");n?o({domItem:t,item:a,action:n}):M(null)}},[...a.title?[e("h3",{id:"modaltitle"},a.title)]:[],...n.map((n=>"text"===n.type?e("input.action",{value:n.value||"",type:"text",placeholder:n.hint||"",oncreate:({dom:e})=>e.focus(),onkeyup:e=>{27===e.keyCode&&o({domItem:t,item:a,action:n})},onchange:e=>{e.target.blur(),o({domItem:t,item:a,action:n,value:e.target.value})}}):e(i,{...n,onclick:()=>o({domItem:t,item:a,action:n})},n.caption)))])}),!0)}))}const E=window.structuredClone?window.structuredClone:e=>JSON.parse(JSON.stringify(e));function L(e,t,a,n,i={}){setTimeout((()=>I(document.body,{title:e},[{type:"text",hint:a,value:t}]).then((({value:e})=>(i.refreshKey=String(Date.now()),n(e))))),100)}const T=[["Lights and Fog",null,["amblight","l0","l1","l2","l3","fog"],0],["Face and Accessories",null,["facekit"],1],["Particle settings",null,["particles"],2],["Video Segmentation","common",["segcam","mask","green"],3,!0],["Video Effects",null,["fxconfig"],9],["Video Plane","val",["xvideo","yvideo","zvideo","rvideo","svideo","video"],4],["Main Camera","val",["ypos","xpos","zoom","yaw","pitch","roll","ai"],5],["Drone Camera","val",["free"],6],["Followed Agent","val",["track"],10],["Game Camera","val",["orbit","track","ocam"],7,void 0,!0],["Transition Speed","val",["spd"],8]],N=u((({attrs:t})=>e("h2.marg-2.no-marg-bottom",t.title))),D=u((({attrs:t})=>{const{type:a="changes",meta:n,onInput:i,title:r,options:o}=t,s=n.title?.trim().length&&n.description?.trim().length,c=o&&o.embedded;return e(".flexcol.grows.ohidden.fadein",[...t.title?[e(N,{title:r})]:[],e(".flexrow.wrap.grows.pad-3.propsgroup.scrolly",[...t.notice?[e(y,{class:"marg-1 marg-v withbottommargin font-75 col-12",size:1,icon:"info-circle",text:t.notice})]:[],e(".witharia.col-12.pad-1.pad-v",{"aria-label":a+" name"},e(w,{class:"pad-2 pad-xh "+(s?"valid":"invalid"),value:n.title,maxlength:64,onchange:t=>{n.title=t,e.redraw()}})),...c?[]:[e(".col-12.witharia.pad-1.pad-v",{"aria-label":"description"},e(w,{class:"pad-2 pad-xh "+(n.description?"valid":"invalid"),value:n.description,maxlength:240,multi:!0,alwaysmulti:!0,onchange:t=>{n.description=t,e.redraw()}})),e(".col-8.witharia.pad-1.pad-v",{"aria-label":"tags"},e(w,{class:"pad-2 pad-xh",value:n.tags,maxlength:128,onchange:e=>{n.tags=e.toLowerCase().split(" ").join(",").split(",").filter((e=>e.length)).join(",")}})),e(".col-4.witharia.pad-1.pad-v",{"aria-label":"youtube video"},e(w,{class:"pad-2 pad-xh",value:n.ytref||"",hint:"YouTube ID",maxlength:16,onchange:e=>{(e=e.trim())?-1===e.indexOf(" ")&&(n.ytref=e.trim()):delete n.ytref}}))],e(".col-4.witharia.pad-1.pad-v",{"aria-label":"content attribution"},e(w,{class:"pad-2 pad-xh",value:n.author,hint:"author name",maxlength:128,onchange:e=>{n.author=e}})),e(".col-4.witharia.pad-1.pad-v",{"aria-label":"license or author link"},e(w,{class:"pad-2 pad-xh",hint:"https://...",value:n.link,maxlength:128,onchange:e=>{n.link=e}})),e(".col-4.witharia.pad-1.pad-v",{"aria-label":"source domain"},e(w,{class:"pad-2 pad-xh",value:n.source,hint:"example.com",maxlength:128,onchange:e=>{n.source=e}})),e(".col-12.al-right.marg-2.marg-v",e(l,{class:"noshrink accentbutton unitheightsmall col-4",text:"save "+a,onClick:()=>{n.title?.trim().length&&(c||n.description?.trim().length)?(M(null),i(n)):d.add("Information is incomplete or invalid")}}))])])})),P=u((({attrs:t})=>{const{parameters:a,preset:n,presetComponents:i,types:r,globalData:o,fetcher:s}=t,c=[],u=[],m=r?T:T.filter((e=>{const[,t,i,l,r]=e,s=t?n[t]:n,d=r?o:a,m=t?d[t]:d;let p=!1;if(i.length){for(const e of i)s&&void 0!==s[e]&&(p=c[l]=!0),void 0!==m[e]&&(p=u[l]=!0);return p}return p=!0,u[l]=!!m,c[l]=!!s,p}));return e("ul.flexrow.wrap.userdialog",m.length?m.map((m=>{const[p,h,v,g,f,w]=m,y=r?void 0:h?n[h]:n,x=f?o:a,k=r?void 0:h?x[h]:x,M=r||c[g],C=u[g];return[...i?[e(b,{title:`Include ${m[0]} in snapshots`,class:"grows unitheightsmall"+(i[g]?" accent":""),checked:!!i[g],onchange:a=>{i[g]=!i[g],e.redraw(),t.redraw&&t.redraw()}}),e(".grows",{class:M?"avail":"unavail"},p)]:[],...t.types?[]:[e(l,{class:"col-3"+(C?"avail":"unavail"),icon:"sync",title:`Copy ${p} from current state`,onClick:()=>{if(v.length){h&&!n[h]&&(n[h]={});const e=h?n[h]:n;for(const t of v)if(void 0!==k[t]){const a=w&&s?s(e[t],g):k[t];e[t]=E(a)}}else if(0===v.length&&h&&void 0!==k){const e=w&&s?s(k,g):k;n[h]=E(e)}t.redraw&&t.redraw(),d.add(`updated ${p} from current scene`)}}),e(l,{class:"col-3 "+(M?"":"disabled text-lo"),icon:"trash",title:`Delete ${p} in preset`,onClick:()=>M&&(()=>{if(v.length)for(const e of v)delete y[e];else 0===v.length&&h&&delete n[h];t.redraw&&t.redraw()})()})],e(".flexbreak")]})):e("h3","Preset is Empty"))}));var S=Object.freeze({__proto__:null,choose:function(e,t={icon:"circle",onSelect:()=>{}}){const{icon:a,title:n,field:i,onSelect:l,parser:r=e=>e}=t,o=e.map(((e,t)=>({icon:i&&e.icon||a,caption:r(i?e[i]:e,e),onClick:a=>l(e,a,t)})));Array.isArray(e)&&!e.length?d.add("No items available"):I(document.body,{title:n},o).then((({action:e})=>e.onClick()))},promptEntity:(t,a,n,i={})=>new Promise(((l,r)=>{M(e(D,{meta:t,type:n,title:a,options:i,onInput:e=>l(e)}),(()=>{r(new Error("cancelled"))}))})),promptName:L,promptOptions:function(t,a,n={}){const{title:i,field:l,icon:r,textNew:o,textHint:s,resolve:c}=n,u=Array.isArray(t)?t.map((e=>({icon:r,caption:l?e[l]:e,onClick:t=>a(e,t)}))):Object.keys(t).map((e=>({icon:t[e].icon||r,caption:t[e].caption||e,onClick:n=>a(c&&void 0!==t[e].value?t[e].value:t[e],n)})));Array.isArray(t)&&!t.length?d.add("No items available"):I(document.body,{title:i},[...o&&!l?[{icon:"plus",caption:o,onClick:()=>L(o,"",s,(t=>{t&&t&&t.trim()&&(a(t),e.redraw())}))}]:[],...u]).then((({action:e})=>e.onClick())).finally((()=>{}))},promptPreset:(t,a,n={})=>new Promise(((i,l)=>{M((()=>e(P,{...n,preset:t,parameters:a,redraw:()=>M.redraw()})),(()=>{l(new Error("cancelled"))}))}))});const O=u((({attrs:t,children:a})=>e(".separator",{class:t.class||"mini",...t.onClick&&{onclick:t.onClick}},[e("span.grows",t.text),...a||[]]))),z=!!navigator.userAgent.match(/iPhone|iPad|iPod/i);let V,j=!1;function A(e,t,a){return Math.min(Math.max(e,t),a)}function H(e,t,a,n){if(a-t<=0)return t;if(n<=0)return A(e,t,a);const i=Math.ceil((a-t)/n);return A(t+Math.round(i*(e-t)/(a-t))*n,t,a)}function K(){let t,a,n,i,l,r,o,s,c,d=0,u=!1,m=!1,p=4,h=1,v=0,g=10,f=0,w=1,y="horizontal";function b(e,t){let a,n;"vertical"===y?(a=r.bottom-r.top,n=r.bottom-t):(a=r.right-r.left,n=e-r.left),n=A(n,0,a);const i=H(n/a*(g-v)+v,v,g,w);return O(i),i}function x(t,n,i){return m?function(t,n){u=o=!0,r=a.getBoundingClientRect();const i=b(t,n);i!==f&&(f=i,c&&!1!==c(f)&&e.redraw())}(t,n):(l=i,u=!0,o=!1,r=a.getBoundingClientRect(),void(s||l.target.requestPointerLock()));var l,s}function k(e,t,a){return o?b(e,t):function(e,t,a){const n=a.shiftKey?p:a.metaKey||a.ctrlKey?4*p:h;let i,l;i="vertical"===y?a.movementY||0:a.movementX||0;let r=w>0?w:(g-v)/100;if(i<0)l=Math.max(f+r*n*i,v);else{if(!(i>0))return f;l=Math.min(f+r*n*i,g)}return l=H(l,v,g,w),O(l),l}(0,0,a)}function M(e){2!==d&&(d=1,0===e.button&&(window.addEventListener("mousemove",C),window.addEventListener("mouseup",I),x(e.clientX,e.clientY,e)))}function C(e){e.preventDefault(),D(e.clientX,e.clientY,e)}function I(e){window.removeEventListener("mousemove",C),window.removeEventListener("mouseup",I),P(e.clientX,e.clientY,e)}function E(e){if(1===d)return;t.addEventListener("touchmove",L),t.addEventListener("touchend",T);const a=e.changedTouches[0];x(a.clientX,a.clientY,e)}function L(e){e.preventDefault();const t=e.changedTouches[0];D(t.clientX,t.clientY,e)}function T(e){t.removeEventListener("touchmove",L),t.removeEventListener("touchend",T);const a=e.changedTouches[0];P(a.clientX,a.clientY,a)}function N(t){const a=t.keyCode;let n;if(33===a){t.preventDefault();let e=Math.max((g-v)/10,w);e<=0&&(e=1),n=H(f+e,v,g,w)}else if(34===a){t.preventDefault();let e=Math.max((g-v)/10,w);e<=0&&(e=1),n=H(f-e,v,g,w)}else if(35===a)t.preventDefault(),n=g;else if(36===a)t.preventDefault(),n=v;else if(37===a||40===a){t.preventDefault();let e=(w>0?w:(g-v)/10)*(t.shiftKey?.25:t.ctrlKey||t.metaKey?4:1);n=Math.max(f-e,v)}else if(38===a||39===a){t.preventDefault();let e=(w>0?w:(g-v)/10)*(t.shiftKey?.25:t.ctrlKey||t.metaKey?4:1);n=Math.min(f+e,g)}else 48===a&&(n=(g+v)/2);"number"==typeof n&&n!==f&&(f=n,O(f),s&&!1!==s(f)&&e.redraw())}function D(t,a,n){if(!u)return;const i=k(t,a,n);i!==f&&(f=i,c&&!1!==c(f)&&e.redraw())}function P(t,a,n){u&&(u=!1,f=k(t,a,n),s&&!1!==s(f)&&e.redraw(),o||document.exitPointerLock(),setTimeout((function(){u||(d=0)}),350))}function S(e){let t=(e-v)/(g-v);return"vertical"===y&&(t=1-t),String(100*t)+"%"}function O(e){const t=S(e),a=S(g-e+v);"vertical"===y?(l.style.top=t,n.style.height=t,i.style.height=a):(l.style.left=t,n.style.width=a,i.style.width=t)}function V(e){v=e.min,g=e.max,w="number"!=typeof e.step||Number.isNaN(e.step)?1:A(e.step,0,g-v),y="vertical"===e.orientation?"vertical":"horizontal",s=e.onchange,c=e.ondrag,"number"==typeof e.value&&(f=A(e.value,v,g)),m=!e.relative,p=e.factor&&e.factor[0]||4,h=e.factor&&e.factor[1]||1}return{oncreate:({attrs:e,dom:r})=>{z&&!j&&(window.addEventListener("touchmove",(function(){})),j=!0),V(e),t=r,a=t.querySelector(".mithril-range-bar"),n=a.querySelector(".mithril-range-bar-0"),i=a.querySelector(".mithril-range-bar-1"),l=a.querySelector(".mithril-range-handle"),t.addEventListener("mousedown",M),t.addEventListener("touchstart",E),t.addEventListener("keydown",N)},onremove:function(){window.removeEventListener("mousemove",C),window.removeEventListener("mouseup",I),t.removeEventListener("mousedown",M),t.removeEventListener("touchstart",E),t.removeEventListener("touchmove",L),t.removeEventListener("touchend",T),t.removeEventListener("keydown",N)},view:function({attrs:t,children:a}){V(t),f=H(f,v,g,w);const n={class:"mithril-range nokey"+(t.relative?" isrelative ":" ")+(0===f?"atzero":f<0?"belowzero":"overzero")+(null!=t.class?" "+t.class:""),tabIndex:"0",role:"slider","aria-valuemin":String(v),"aria-valuemax":String(g),"aria-valuenow":String(f),"aria-orientation":y};t.id&&(n.id=t.id),t.ariaLabelledby&&(n["aria-labelledby"]=t.ariaLabelledby),t.disabled&&(n.style={pointerEvents:"none"},n["aria-disabled"]="true");const i=S(f),l=S(g-f+v);let r,o,s;return"vertical"===y?(r={top:i},o={height:i},s={height:l}):(r={left:i},o={width:l},s={width:i}),e("div",n,e("div",{class:"mithril-range-bar nokey"},e("div",{class:"mithril-range-bar-0 nokey",style:o}),e("div",{class:"mithril-range-bar-1 nokey",style:s}),e("div",{class:"mithril-range-handle nokey",style:r},a)),!!t.name&&e("input",{type:"hidden",name:t.name,value:String(f)}))}}}const F=t=>{const a=t.value>t.curMax?Math.ceil(t.value/t.curMax):1,n=t.curMin<0&&t.value<t.curMin?Math.abs(Math.ceil(t.value/t.curMin)):1,i=Math.min(Math.max(n,a),t.maxMultiplier);t.curMultiplier!==i&&(t.curMultiplier=i,e.redraw())},$=e=>e.value>=e.curMax*e.curMultiplier*.9&&e.maxMultiplier>1&&e.curMultiplier<=e.maxMultiplier-1?(e.curMultiplier++,!0):e.curMin<0?Y(e):void 0,Y=e=>{if(e.value<=e.curMin*e.curMultiplier*.9&&e.maxMultiplier>1&&e.curMultiplier<=e.maxMultiplier-1)return e.curMultiplier++,!0},B={oninit:({attrs:e,state:t})=>{Object.assign(t,{value:e.value||0,initial:e.value||0,curMax:e.max,curMin:e.min,curMultiplier:1,maxMultiplier:e.multiplier||1,id:"I"+Date.now()}),t.maxMultiplier>1&&(t.value>e.max?t.curMultiplier=Math.ceil(t.value/e.max):e.min<0&&t.value<e.min&&(t.curMultiplier=Math.abs(Math.ceil(t.value/e.min))))},onupdate:({attrs:t,state:a})=>{const n=t.multiplier||1,i=t.value||0;a.curMax!==t.max||a.maxMultiplier!==n?(Object.assign(a,{curMax:t.max,curMin:t.min,maxMultiplier:n,value:t.value,initial:i}),$(a)||(clearTimeout(a.timer),a.timer=setTimeout(F,1e3,a)),e.redraw()):a.initial!==i&&(Object.assign(a,{value:i,initial:i}),clearTimeout(V),V=setTimeout((()=>e.redraw()),50))},view:({attrs:t,state:a})=>e(".range.flexcol.control.relative"+(t.multiplier>1?".withmultiplier":""),{...t.class&&{class:t.class},title:t.hint||"Click, then use arrows to finetune value if needed"},[...t.title?[e("label",{class:"rangelabel",htmlFor:a.id},t.title)]:[],e(K,{onchange:n=>{a.value=n;!$(a)&&a.curMultiplier>1&&(clearTimeout(a.timer),a.timer=setTimeout(F,1e3,a)),t.onchange?t.onchange(n):e.redraw()},ondrag:e=>e!==a.value&&(a.value=e,t.ondrag&&t.ondrag(e),!0),value:a.value||0,min:(t.min||0)*a.curMultiplier,max:a.curMax*a.curMultiplier||100,step:t.step||1,relative:t.relative,factor:t.factor},[e(".currentval",t.parser?t.parser(a.value,t.step<1):a.value?t.step<1?a.value.toFixed(2):""+Math.floor(a.value):"")])])},X={view:({attrs:t,state:a})=>e(B,{value:t.value||0,min:t.min||0,max:t.max||100,step:t.step||.1,class:(t.disabled?"disabled ":"")+(t.class||""),title:t.title,multiplier:t.multiplier,hint:t.hint,parser:t.parser,relative:t.relative,factor:t.factor,getLabel:e=>e?""+e:"default",ondrag:e=>(a.changed=!0,a.value=e,t.onchange&&t.onchange(e,!0),!0),onchange:e=>(t.auto0?e=0:t.autoValue&&(e=t.autoValue),a.changed=!0,a.value=e,t.onchange&&t.onchange(e,!1),!0)})};function q(e,t){m.route(document.getElementById(e),t.default||"/",t.routes)}export{i as Button,l as ButtonNew,h as CardieWidget,r as Empty,n as Icon,w as InputWidget,y as NoticeWidget,S as OverflowUtils,X as RangeWidget,s as Selector,O as Separator,b as SwitchWidget,C as clearModal,u as defineWidget,M as popupMessage,q as startApp};
|
|
2
2
|
//# sourceMappingURL=libui.esm.js.map
|
package/dist/libui.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libui.esm.js","sources":["../node_modules/mithril/render/vnode.js","../node_modules/mithril/render/hyperscriptVnode.js","../node_modules/mithril/util/hasOwn.js","../node_modules/mithril/render/hyperscript.js","../node_modules/mithril/render/trust.js","../node_modules/mithril/render/fragment.js","../node_modules/mithril/hyperscript.js","../node_modules/mithril/render/domFor.js","../node_modules/mithril/render/render.js","../node_modules/mithril/render.js","../node_modules/mithril/api/mount-redraw.js","../node_modules/mithril/mount-redraw.js","../node_modules/mithril/querystring/build.js","../node_modules/mithril/pathname/build.js","../node_modules/mithril/request/request.js","../node_modules/mithril/request.js","../node_modules/mithril/querystring/parse.js","../node_modules/mithril/pathname/parse.js","../node_modules/mithril/pathname/compileTemplate.js","../node_modules/mithril/util/censor.js","../node_modules/mithril/index.js","../node_modules/mithril/route.js","../node_modules/mithril/api/router.js","../src/widgets/Basic.js","../src/util/widgets.utils.js","../src/widgets/CardieWidget.js","../src/widgets/InputWidget.js","../src/widgets/NoticeWidget.js","../src/widgets/SwitchWidget.js","../src/util/widgets.js","../src/util/widgets.core.js","../src/util/util.clone.js","../src/widgets/OverflowUtils.js","../src/widgets/Separator.js","../src/util/mithril-range.js","../src/widgets/RangeWidget.js","../src/app/app.js"],"sourcesContent":["\"use strict\"\n\nfunction Vnode(tag, key, attrs, children, text, dom) {\n\treturn {tag: tag, key: key, attrs: attrs, children: children, text: text, dom: dom, domSize: undefined, state: undefined, events: undefined, instance: undefined}\n}\nVnode.normalize = function(node) {\n\tif (Array.isArray(node)) return Vnode(\"[\", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)\n\tif (node == null || typeof node === \"boolean\") return null\n\tif (typeof node === \"object\") return node\n\treturn Vnode(\"#\", undefined, undefined, String(node), undefined, undefined)\n}\nVnode.normalizeChildren = function(input) {\n\tvar children = []\n\tif (input.length) {\n\t\tvar isKeyed = input[0] != null && input[0].key != null\n\t\t// Note: this is a *very* perf-sensitive check.\n\t\t// Fun fact: merging the loop like this is somehow faster than splitting\n\t\t// it, noticeably so.\n\t\tfor (var i = 1; i < input.length; i++) {\n\t\t\tif ((input[i] != null && input[i].key != null) !== isKeyed) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\tisKeyed && (input[i] != null || typeof input[i] === \"boolean\")\n\t\t\t\t\t\t? \"In fragments, vnodes must either all have keys or none have keys. You may wish to consider using an explicit keyed empty fragment, m.fragment({key: ...}), instead of a hole.\"\n\t\t\t\t\t\t: \"In fragments, vnodes must either all have keys or none have keys.\"\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < input.length; i++) {\n\t\t\tchildren[i] = Vnode.normalize(input[i])\n\t\t}\n\t}\n\treturn children\n}\n\nmodule.exports = Vnode\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\n// Call via `hyperscriptVnode.apply(startOffset, arguments)`\n//\n// The reason I do it this way, forwarding the arguments and passing the start\n// offset in `this`, is so I don't have to create a temporary array in a\n// performance-critical path.\n//\n// In native ES6, I'd instead add a final `...args` parameter to the\n// `hyperscript` and `fragment` factories and define this as\n// `hyperscriptVnode(...args)`, since modern engines do optimize that away. But\n// ES5 (what Mithril.js requires thanks to IE support) doesn't give me that luxury,\n// and engines aren't nearly intelligent enough to do either of these:\n//\n// 1. Elide the allocation for `[].slice.call(arguments, 1)` when it's passed to\n// another function only to be indexed.\n// 2. Elide an `arguments` allocation when it's passed to any function other\n// than `Function.prototype.apply` or `Reflect.apply`.\n//\n// In ES6, it'd probably look closer to this (I'd need to profile it, though):\n// module.exports = function(attrs, ...children) {\n// if (attrs == null || typeof attrs === \"object\" && attrs.tag == null && !Array.isArray(attrs)) {\n// if (children.length === 1 && Array.isArray(children[0])) children = children[0]\n// } else {\n// children = children.length === 0 && Array.isArray(attrs) ? attrs : [attrs, ...children]\n// attrs = undefined\n// }\n//\n// if (attrs == null) attrs = {}\n// return Vnode(\"\", attrs.key, attrs, children)\n// }\nmodule.exports = function() {\n\tvar attrs = arguments[this], start = this + 1, children\n\n\tif (attrs == null) {\n\t\tattrs = {}\n\t} else if (typeof attrs !== \"object\" || attrs.tag != null || Array.isArray(attrs)) {\n\t\tattrs = {}\n\t\tstart = this\n\t}\n\n\tif (arguments.length === start + 1) {\n\t\tchildren = arguments[start]\n\t\tif (!Array.isArray(children)) children = [children]\n\t} else {\n\t\tchildren = []\n\t\twhile (start < arguments.length) children.push(arguments[start++])\n\t}\n\n\treturn Vnode(\"\", attrs.key, attrs, children)\n}\n","// This exists so I'm only saving it once.\n\"use strict\"\n\nmodule.exports = {}.hasOwnProperty\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\nvar hasOwn = require(\"../util/hasOwn\")\n\nvar selectorParser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\nvar selectorCache = Object.create(null)\n\nfunction isEmpty(object) {\n\tfor (var key in object) if (hasOwn.call(object, key)) return false\n\treturn true\n}\n\nfunction compileSelector(selector) {\n\tvar match, tag = \"div\", classes = [], attrs = {}\n\twhile (match = selectorParser.exec(selector)) {\n\t\tvar type = match[1], value = match[2]\n\t\tif (type === \"\" && value !== \"\") tag = value\n\t\telse if (type === \"#\") attrs.id = value\n\t\telse if (type === \".\") classes.push(value)\n\t\telse if (match[3][0] === \"[\") {\n\t\t\tvar attrValue = match[6]\n\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\").replace(/\\\\\\\\/g, \"\\\\\")\n\t\t\tif (match[4] === \"class\") classes.push(attrValue)\n\t\t\telse attrs[match[4]] = attrValue === \"\" ? attrValue : attrValue || true\n\t\t}\n\t}\n\tif (classes.length > 0) attrs.className = classes.join(\" \")\n\tif (isEmpty(attrs)) attrs = null\n\treturn selectorCache[selector] = {tag: tag, attrs: attrs}\n}\n\nfunction execSelector(state, vnode) {\n\tvar attrs = vnode.attrs\n\tvar hasClass = hasOwn.call(attrs, \"class\")\n\tvar className = hasClass ? attrs.class : attrs.className\n\n\tvnode.tag = state.tag\n\n\tif (state.attrs != null) {\n\t\tattrs = Object.assign({}, state.attrs, attrs)\n\n\t\tif (className != null || state.attrs.className != null) attrs.className =\n\t\t\tclassName != null\n\t\t\t\t? state.attrs.className != null\n\t\t\t\t\t? String(state.attrs.className) + \" \" + String(className)\n\t\t\t\t\t: className\n\t\t\t\t: state.attrs.className != null\n\t\t\t\t\t? state.attrs.className\n\t\t\t\t\t: null\n\t} else {\n\t\tif (className != null) attrs.className = className\n\t}\n\n\tif (hasClass) attrs.class = null\n\n\t// workaround for #2622 (reorder keys in attrs to set \"type\" first)\n\t// The DOM does things to inputs based on the \"type\", so it needs set first.\n\t// See: https://github.com/MithrilJS/mithril.js/issues/2622\n\tif (state.tag === \"input\" && hasOwn.call(attrs, \"type\")) {\n\t\tattrs = Object.assign({type: attrs.type}, attrs)\n\t}\n\n\tvnode.attrs = attrs\n\n\treturn vnode\n}\n\nfunction hyperscript(selector) {\n\tif (selector == null || typeof selector !== \"string\" && typeof selector !== \"function\" && typeof selector.view !== \"function\") {\n\t\tthrow Error(\"The selector must be either a string or a component.\");\n\t}\n\n\tvar vnode = hyperscriptVnode.apply(1, arguments)\n\n\tif (typeof selector === \"string\") {\n\t\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\t\tif (selector !== \"[\") return execSelector(selectorCache[selector] || compileSelector(selector), vnode)\n\t}\n\n\tvnode.tag = selector\n\treturn vnode\n}\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(html) {\n\tif (html == null) html = \"\"\n\treturn Vnode(\"<\", undefined, undefined, html, undefined, undefined)\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\n\nmodule.exports = function() {\n\tvar vnode = hyperscriptVnode.apply(0, arguments)\n\n\tvnode.tag = \"[\"\n\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\treturn vnode\n}\n","\"use strict\"\n\nvar hyperscript = require(\"./render/hyperscript\")\n\nhyperscript.trust = require(\"./render/trust\")\nhyperscript.fragment = require(\"./render/fragment\")\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar delayedRemoval = new WeakMap\n\nfunction *domFor(vnode, object = {}) {\n\t// To avoid unintended mangling of the internal bundler,\n\t// parameter destructuring is not used here.\n\tvar dom = vnode.dom\n\tvar domSize = vnode.domSize\n\tvar generation = object.generation\n\tif (dom != null) do {\n\t\tvar nextSibling = dom.nextSibling\n\n\t\tif (delayedRemoval.get(dom) === generation) {\n\t\t\tyield dom\n\t\t\tdomSize--\n\t\t}\n\n\t\tdom = nextSibling\n\t}\n\twhile (domSize)\n}\n\nmodule.exports = {\n\tdelayedRemoval: delayedRemoval,\n\tdomFor: domFor,\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar df = require(\"../render/domFor\")\nvar delayedRemoval = df.delayedRemoval\nvar domFor = df.domFor\n\nmodule.exports = function() {\n\tvar nameSpace = {\n\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\tmath: \"http://www.w3.org/1998/Math/MathML\"\n\t}\n\n\tvar currentRedraw\n\tvar currentRender\n\n\tfunction getDocument(dom) {\n\t\treturn dom.ownerDocument;\n\t}\n\n\tfunction getNameSpace(vnode) {\n\t\treturn vnode.attrs && vnode.attrs.xmlns || nameSpace[vnode.tag]\n\t}\n\n\t//sanity check to discourage people from doing `vnode.state = ...`\n\tfunction checkState(vnode, original) {\n\t\tif (vnode.state !== original) throw new Error(\"'vnode.state' must not be modified.\")\n\t}\n\n\t//Note: the hook is passed as the `this` argument to allow proxying the\n\t//arguments without requiring a full array allocation to do so. It also\n\t//takes advantage of the fact the current `vnode` is the first argument in\n\t//all lifecycle methods.\n\tfunction callHook(vnode) {\n\t\tvar original = vnode.state\n\t\ttry {\n\t\t\treturn this.apply(original, arguments)\n\t\t} finally {\n\t\t\tcheckState(vnode, original)\n\t\t}\n\t}\n\n\t// IE11 (at least) throws an UnspecifiedError when accessing document.activeElement when\n\t// inside an iframe. Catch and swallow this error, and heavy-handidly return null.\n\tfunction activeElement(dom) {\n\t\ttry {\n\t\t\treturn getDocument(dom).activeElement\n\t\t} catch (e) {\n\t\t\treturn null\n\t\t}\n\t}\n\t//create\n\tfunction createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t}\n\tfunction createNode(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tif (typeof tag === \"string\") {\n\t\t\tvnode.state = {}\n\t\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tswitch (tag) {\n\t\t\t\tcase \"#\": createText(parent, vnode, nextSibling); break\n\t\t\t\tcase \"<\": createHTML(parent, vnode, ns, nextSibling); break\n\t\t\t\tcase \"[\": createFragment(parent, vnode, hooks, ns, nextSibling); break\n\t\t\t\tdefault: createElement(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t\telse createComponent(parent, vnode, hooks, ns, nextSibling)\n\t}\n\tfunction createText(parent, vnode, nextSibling) {\n\t\tvnode.dom = getDocument(parent).createTextNode(vnode.children)\n\t\tinsertDOM(parent, vnode.dom, nextSibling)\n\t}\n\tvar possibleParents = {caption: \"table\", thead: \"table\", tbody: \"table\", tfoot: \"table\", tr: \"tbody\", th: \"tr\", td: \"tr\", colgroup: \"table\", col: \"colgroup\"}\n\tfunction createHTML(parent, vnode, ns, nextSibling) {\n\t\tvar match = vnode.children.match(/^\\s*?<(\\w+)/im) || []\n\t\t// not using the proper parent makes the child element(s) vanish.\n\t\t// var div = document.createElement(\"div\")\n\t\t// div.innerHTML = \"<td>i</td><td>j</td>\"\n\t\t// console.log(div.innerHTML)\n\t\t// --> \"ij\", no <td> in sight.\n\t\tvar temp = getDocument(parent).createElement(possibleParents[match[1]] || \"div\")\n\t\tif (ns === \"http://www.w3.org/2000/svg\") {\n\t\t\ttemp.innerHTML = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\">\" + vnode.children + \"</svg>\"\n\t\t\ttemp = temp.firstChild\n\t\t} else {\n\t\t\ttemp.innerHTML = vnode.children\n\t\t}\n\t\tvnode.dom = temp.firstChild\n\t\tvnode.domSize = temp.childNodes.length\n\t\t// Capture nodes to remove, so we don't confuse them.\n\t\tvar fragment = getDocument(parent).createDocumentFragment()\n\t\tvar child\n\t\twhile (child = temp.firstChild) {\n\t\t\tfragment.appendChild(child)\n\t\t}\n\t\tinsertDOM(parent, fragment, nextSibling)\n\t}\n\tfunction createFragment(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar fragment = getDocument(parent).createDocumentFragment()\n\t\tif (vnode.children != null) {\n\t\t\tvar children = vnode.children\n\t\t\tcreateNodes(fragment, children, 0, children.length, hooks, null, ns)\n\t\t}\n\t\tvnode.dom = fragment.firstChild\n\t\tvnode.domSize = fragment.childNodes.length\n\t\tinsertDOM(parent, fragment, nextSibling)\n\t}\n\tfunction createElement(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tvar attrs = vnode.attrs\n\t\tvar is = attrs && attrs.is\n\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tvar element = ns ?\n\t\t\tis ? getDocument(parent).createElementNS(ns, tag, {is: is}) : getDocument(parent).createElementNS(ns, tag) :\n\t\t\tis ? getDocument(parent).createElement(tag, {is: is}) : getDocument(parent).createElement(tag)\n\t\tvnode.dom = element\n\n\t\tif (attrs != null) {\n\t\t\tsetAttrs(vnode, attrs, ns)\n\t\t}\n\n\t\tinsertDOM(parent, element, nextSibling)\n\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tif (vnode.children != null) {\n\t\t\t\tvar children = vnode.children\n\t\t\t\tcreateNodes(element, children, 0, children.length, hooks, null, ns)\n\t\t\t\tif (vnode.tag === \"select\" && attrs != null) setLateSelectAttrs(vnode, attrs)\n\t\t\t}\n\t\t}\n\t}\n\tfunction initComponent(vnode, hooks) {\n\t\tvar sentinel\n\t\tif (typeof vnode.tag.view === \"function\") {\n\t\t\tvnode.state = Object.create(vnode.tag)\n\t\t\tsentinel = vnode.state.view\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t} else {\n\t\t\tvnode.state = void 0\n\t\t\tsentinel = vnode.tag\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t\tvnode.state = (vnode.tag.prototype != null && typeof vnode.tag.prototype.view === \"function\") ? new vnode.tag(vnode) : vnode.tag(vnode)\n\t\t}\n\t\tinitLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tsentinel.$$reentrantLock$$ = null\n\t}\n\tfunction createComponent(parent, vnode, hooks, ns, nextSibling) {\n\t\tinitComponent(vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tcreateNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0\n\t\t}\n\t\telse {\n\t\t\tvnode.domSize = 0\n\t\t}\n\t}\n\n\t//update\n\t/**\n\t * @param {Element|Fragment} parent - the parent element\n\t * @param {Vnode[] | null} old - the list of vnodes of the last `render()` call for\n\t * this part of the tree\n\t * @param {Vnode[] | null} vnodes - as above, but for the current `render()` call.\n\t * @param {Function[]} hooks - an accumulator of post-render hooks (oncreate/onupdate)\n\t * @param {Element | null} nextSibling - the next DOM node if we're dealing with a\n\t * fragment that is not the last item in its\n\t * parent\n\t * @param {'svg' | 'math' | String | null} ns) - the current XML namespace, if any\n\t * @returns void\n\t */\n\t// This function diffs and patches lists of vnodes, both keyed and unkeyed.\n\t//\n\t// We will:\n\t//\n\t// 1. describe its general structure\n\t// 2. focus on the diff algorithm optimizations\n\t// 3. discuss DOM node operations.\n\n\t// ## Overview:\n\t//\n\t// The updateNodes() function:\n\t// - deals with trivial cases\n\t// - determines whether the lists are keyed or unkeyed based on the first non-null node\n\t// of each list.\n\t// - diffs them and patches the DOM if needed (that's the brunt of the code)\n\t// - manages the leftovers: after diffing, are there:\n\t// - old nodes left to remove?\n\t// \t - new nodes to insert?\n\t// \t deal with them!\n\t//\n\t// The lists are only iterated over once, with an exception for the nodes in `old` that\n\t// are visited in the fourth part of the diff and in the `removeNodes` loop.\n\n\t// ## Diffing\n\t//\n\t// Reading https://github.com/localvoid/ivi/blob/ddc09d06abaef45248e6133f7040d00d3c6be853/packages/ivi/src/vdom/implementation.ts#L617-L837\n\t// may be good for context on longest increasing subsequence-based logic for moving nodes.\n\t//\n\t// In order to diff keyed lists, one has to\n\t//\n\t// 1) match nodes in both lists, per key, and update them accordingly\n\t// 2) create the nodes present in the new list, but absent in the old one\n\t// 3) remove the nodes present in the old list, but absent in the new one\n\t// 4) figure out what nodes in 1) to move in order to minimize the DOM operations.\n\t//\n\t// To achieve 1) one can create a dictionary of keys => index (for the old list), then iterate\n\t// over the new list and for each new vnode, find the corresponding vnode in the old list using\n\t// the map.\n\t// 2) is achieved in the same step: if a new node has no corresponding entry in the map, it is new\n\t// and must be created.\n\t// For the removals, we actually remove the nodes that have been updated from the old list.\n\t// The nodes that remain in that list after 1) and 2) have been performed can be safely removed.\n\t// The fourth step is a bit more complex and relies on the longest increasing subsequence (LIS)\n\t// algorithm.\n\t//\n\t// the longest increasing subsequence is the list of nodes that can remain in place. Imagine going\n\t// from `1,2,3,4,5` to `4,5,1,2,3` where the numbers are not necessarily the keys, but the indices\n\t// corresponding to the keyed nodes in the old list (keyed nodes `e,d,c,b,a` => `b,a,e,d,c` would\n\t// match the above lists, for example).\n\t//\n\t// In there are two increasing subsequences: `4,5` and `1,2,3`, the latter being the longest. We\n\t// can update those nodes without moving them, and only call `insertNode` on `4` and `5`.\n\t//\n\t// @localvoid adapted the algo to also support node deletions and insertions (the `lis` is actually\n\t// the longest increasing subsequence *of old nodes still present in the new list*).\n\t//\n\t// It is a general algorithm that is fireproof in all circumstances, but it requires the allocation\n\t// and the construction of a `key => oldIndex` map, and three arrays (one with `newIndex => oldIndex`,\n\t// the `LIS` and a temporary one to create the LIS).\n\t//\n\t// So we cheat where we can: if the tails of the lists are identical, they are guaranteed to be part of\n\t// the LIS and can be updated without moving them.\n\t//\n\t// If two nodes are swapped, they are guaranteed not to be part of the LIS, and must be moved (with\n\t// the exception of the last node if the list is fully reversed).\n\t//\n\t// ## Finding the next sibling.\n\t//\n\t// `updateNode()` and `createNode()` expect a nextSibling parameter to perform DOM operations.\n\t// When the list is being traversed top-down, at any index, the DOM nodes up to the previous\n\t// vnode reflect the content of the new list, whereas the rest of the DOM nodes reflect the old\n\t// list. The next sibling must be looked for in the old list using `getNextSibling(... oldStart + 1 ...)`.\n\t//\n\t// In the other scenarios (swaps, upwards traversal, map-based diff),\n\t// the new vnodes list is traversed upwards. The DOM nodes at the bottom of the list reflect the\n\t// bottom part of the new vnodes list, and we can use the `v.dom` value of the previous node\n\t// as the next sibling (cached in the `nextSibling` variable).\n\n\n\t// ## DOM node moves\n\t//\n\t// In most scenarios `updateNode()` and `createNode()` perform the DOM operations. However,\n\t// this is not the case if the node moved (second and fourth part of the diff algo). We move\n\t// the old DOM nodes before updateNode runs because it enables us to use the cached `nextSibling`\n\t// variable rather than fetching it using `getNextSibling()`.\n\n\tfunction updateNodes(parent, old, vnodes, hooks, nextSibling, ns) {\n\t\tif (old === vnodes || old == null && vnodes == null) return\n\t\telse if (old == null || old.length === 0) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns)\n\t\telse if (vnodes == null || vnodes.length === 0) removeNodes(parent, old, 0, old.length)\n\t\telse {\n\t\t\tvar isOldKeyed = old[0] != null && old[0].key != null\n\t\t\tvar isKeyed = vnodes[0] != null && vnodes[0].key != null\n\t\t\tvar start = 0, oldStart = 0\n\t\t\tif (!isOldKeyed) while (oldStart < old.length && old[oldStart] == null) oldStart++\n\t\t\tif (!isKeyed) while (start < vnodes.length && vnodes[start] == null) start++\n\t\t\tif (isOldKeyed !== isKeyed) {\n\t\t\t\tremoveNodes(parent, old, oldStart, old.length)\n\t\t\t\tcreateNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else if (!isKeyed) {\n\t\t\t\t// Don't index past the end of either list (causes deopts).\n\t\t\t\tvar commonLength = old.length < vnodes.length ? old.length : vnodes.length\n\t\t\t\t// Rewind if necessary to the first non-null index on either side.\n\t\t\t\t// We could alternatively either explicitly create or remove nodes when `start !== oldStart`\n\t\t\t\t// but that would be optimizing for sparse lists which are more rare than dense ones.\n\t\t\t\tstart = start < oldStart ? start : oldStart\n\t\t\t\tfor (; start < commonLength; start++) {\n\t\t\t\t\to = old[start]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o === v || o == null && v == null) continue\n\t\t\t\t\telse if (o == null) createNode(parent, v, hooks, ns, getNextSibling(old, start + 1, nextSibling))\n\t\t\t\t\telse if (v == null) removeNode(parent, o)\n\t\t\t\t\telse updateNode(parent, o, v, hooks, getNextSibling(old, start + 1, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\tif (old.length > commonLength) removeNodes(parent, old, start, old.length)\n\t\t\t\tif (vnodes.length > commonLength) createNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else {\n\t\t\t\t// keyed diff\n\t\t\t\tvar oldEnd = old.length - 1, end = vnodes.length - 1, map, o, v, oe, ve, topSibling\n\n\t\t\t\t// bottom-up\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t}\n\t\t\t\t// top-down\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o.key !== v.key) break\n\t\t\t\t\toldStart++, start++\n\t\t\t\t\tif (o !== v) updateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\t// swaps and list reversals\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (start === end) break\n\t\t\t\t\tif (o.key !== ve.key || oe.key !== v.key) break\n\t\t\t\t\ttopSibling = getNextSibling(old, oldStart, nextSibling)\n\t\t\t\t\tmoveDOM(parent, oe, topSibling)\n\t\t\t\t\tif (oe !== v) updateNode(parent, oe, v, hooks, topSibling, ns)\n\t\t\t\t\tif (++start <= --end) moveDOM(parent, o, nextSibling)\n\t\t\t\t\tif (o !== ve) updateNode(parent, o, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldStart++; oldEnd--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t}\n\t\t\t\t// bottom up once again\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t}\n\t\t\t\tif (start > end) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\telse if (oldStart > oldEnd) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\telse {\n\t\t\t\t\t// inspired by ivi https://github.com/ivijs/ivi/ by Boris Kaul\n\t\t\t\t\tvar originalNextSibling = nextSibling, vnodesLength = end - start + 1, oldIndices = new Array(vnodesLength), li=0, i=0, pos = 2147483647, matched = 0, map, lisIndices\n\t\t\t\t\tfor (i = 0; i < vnodesLength; i++) oldIndices[i] = -1\n\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\tif (map == null) map = getKeyMap(old, oldStart, oldEnd + 1)\n\t\t\t\t\t\tve = vnodes[i]\n\t\t\t\t\t\tvar oldIndex = map[ve.key]\n\t\t\t\t\t\tif (oldIndex != null) {\n\t\t\t\t\t\t\tpos = (oldIndex < pos) ? oldIndex : -1 // becomes -1 if nodes were re-ordered\n\t\t\t\t\t\t\toldIndices[i-start] = oldIndex\n\t\t\t\t\t\t\toe = old[oldIndex]\n\t\t\t\t\t\t\told[oldIndex] = null\n\t\t\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\t\t\tmatched++\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnextSibling = originalNextSibling\n\t\t\t\t\tif (matched !== oldEnd - oldStart + 1) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\t\tif (matched === 0) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (pos === -1) {\n\t\t\t\t\t\t\t// the indices of the indices of the items that are part of the\n\t\t\t\t\t\t\t// longest increasing subsequence in the oldIndices list\n\t\t\t\t\t\t\tlisIndices = makeLisIndices(oldIndices)\n\t\t\t\t\t\t\tli = lisIndices.length - 1\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (lisIndices[li] === i - start) li--\n\t\t\t\t\t\t\t\t\telse moveDOM(parent, v, nextSibling)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction updateNode(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvar oldTag = old.tag, tag = vnode.tag\n\t\tif (oldTag === tag) {\n\t\t\tvnode.state = old.state\n\t\t\tvnode.events = old.events\n\t\t\tif (shouldNotUpdate(vnode, old)) return\n\t\t\tif (typeof oldTag === \"string\") {\n\t\t\t\tif (vnode.attrs != null) {\n\t\t\t\t\tupdateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t}\n\t\t\t\tswitch (oldTag) {\n\t\t\t\t\tcase \"#\": updateText(old, vnode); break\n\t\t\t\t\tcase \"<\": updateHTML(parent, old, vnode, ns, nextSibling); break\n\t\t\t\t\tcase \"[\": updateFragment(parent, old, vnode, hooks, nextSibling, ns); break\n\t\t\t\t\tdefault: updateElement(old, vnode, hooks, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse updateComponent(parent, old, vnode, hooks, nextSibling, ns)\n\t\t}\n\t\telse {\n\t\t\tremoveNode(parent, old)\n\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t}\n\t}\n\tfunction updateText(old, vnode) {\n\t\tif (old.children.toString() !== vnode.children.toString()) {\n\t\t\told.dom.nodeValue = vnode.children\n\t\t}\n\t\tvnode.dom = old.dom\n\t}\n\tfunction updateHTML(parent, old, vnode, ns, nextSibling) {\n\t\tif (old.children !== vnode.children) {\n\t\t\tremoveDOM(parent, old, undefined)\n\t\t\tcreateHTML(parent, vnode, ns, nextSibling)\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t}\n\t}\n\tfunction updateFragment(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tupdateNodes(parent, old.children, vnode.children, hooks, nextSibling, ns)\n\t\tvar domSize = 0, children = vnode.children\n\t\tvnode.dom = null\n\t\tif (children != null) {\n\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\tvar child = children[i]\n\t\t\t\tif (child != null && child.dom != null) {\n\t\t\t\t\tif (vnode.dom == null) vnode.dom = child.dom\n\t\t\t\t\tdomSize += child.domSize || 1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (domSize !== 1) vnode.domSize = domSize\n\t\t}\n\t}\n\tfunction updateElement(old, vnode, hooks, ns) {\n\t\tvar element = vnode.dom = old.dom\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tupdateAttrs(vnode, old.attrs, vnode.attrs, ns)\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tupdateNodes(element, old.children, vnode.children, hooks, null, ns)\n\t\t}\n\t}\n\tfunction updateComponent(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tupdateLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) updateLifecycle(vnode.attrs, vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tif (old.instance == null) createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\telse updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, ns)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.instance.domSize\n\t\t}\n\t\telse if (old.instance != null) {\n\t\t\tremoveNode(parent, old.instance)\n\t\t\tvnode.dom = undefined\n\t\t\tvnode.domSize = 0\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t}\n\t}\n\tfunction getKeyMap(vnodes, start, end) {\n\t\tvar map = Object.create(null)\n\t\tfor (; start < end; start++) {\n\t\t\tvar vnode = vnodes[start]\n\t\t\tif (vnode != null) {\n\t\t\t\tvar key = vnode.key\n\t\t\t\tif (key != null) map[key] = start\n\t\t\t}\n\t\t}\n\t\treturn map\n\t}\n\t// Lifted from ivi https://github.com/ivijs/ivi/\n\t// takes a list of unique numbers (-1 is special and can\n\t// occur multiple times) and returns an array with the indices\n\t// of the items that are part of the longest increasing\n\t// subsequence\n\tvar lisTemp = []\n\tfunction makeLisIndices(a) {\n\t\tvar result = [0]\n\t\tvar u = 0, v = 0, i = 0\n\t\tvar il = lisTemp.length = a.length\n\t\tfor (var i = 0; i < il; i++) lisTemp[i] = a[i]\n\t\tfor (var i = 0; i < il; ++i) {\n\t\t\tif (a[i] === -1) continue\n\t\t\tvar j = result[result.length - 1]\n\t\t\tif (a[j] < a[i]) {\n\t\t\t\tlisTemp[i] = j\n\t\t\t\tresult.push(i)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tu = 0\n\t\t\tv = result.length - 1\n\t\t\twhile (u < v) {\n\t\t\t\t// Fast integer average without overflow.\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tvar c = (u >>> 1) + (v >>> 1) + (u & v & 1)\n\t\t\t\tif (a[result[c]] < a[i]) {\n\t\t\t\t\tu = c + 1\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tv = c\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (a[i] < a[result[u]]) {\n\t\t\t\tif (u > 0) lisTemp[i] = result[u - 1]\n\t\t\t\tresult[u] = i\n\t\t\t}\n\t\t}\n\t\tu = result.length\n\t\tv = result[u - 1]\n\t\twhile (u-- > 0) {\n\t\t\tresult[u] = v\n\t\t\tv = lisTemp[v]\n\t\t}\n\t\tlisTemp.length = 0\n\t\treturn result\n\t}\n\n\tfunction getNextSibling(vnodes, i, nextSibling) {\n\t\tfor (; i < vnodes.length; i++) {\n\t\t\tif (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom\n\t\t}\n\t\treturn nextSibling\n\t}\n\n\t// This handles fragments with zombie children (removed from vdom, but persisted in DOM through onbeforeremove)\n\tfunction moveDOM(parent, vnode, nextSibling) {\n\t\tif (vnode.dom != null) {\n\t\t\tvar target\n\t\t\tif (vnode.domSize == null) {\n\t\t\t\t// don't allocate for the common case\n\t\t\t\ttarget = vnode.dom\n\t\t\t} else {\n\t\t\t\ttarget = getDocument(parent).createDocumentFragment()\n\t\t\t\tfor (var dom of domFor(vnode)) target.appendChild(dom)\n\t\t\t}\n\t\t\tinsertDOM(parent, target, nextSibling)\n\t\t}\n\t}\n\n\tfunction insertDOM(parent, dom, nextSibling) {\n\t\tif (nextSibling != null) parent.insertBefore(dom, nextSibling)\n\t\telse parent.appendChild(dom)\n\t}\n\n\tfunction maybeSetContentEditable(vnode) {\n\t\tif (vnode.attrs == null || (\n\t\t\tvnode.attrs.contenteditable == null && // attribute\n\t\t\tvnode.attrs.contentEditable == null // property\n\t\t)) return false\n\t\tvar children = vnode.children\n\t\tif (children != null && children.length === 1 && children[0].tag === \"<\") {\n\t\t\tvar content = children[0].children\n\t\t\tif (vnode.dom.innerHTML !== content) vnode.dom.innerHTML = content\n\t\t}\n\t\telse if (children != null && children.length !== 0) throw new Error(\"Child node of a contenteditable must be trusted.\")\n\t\treturn true\n\t}\n\n\t//remove\n\tfunction removeNodes(parent, vnodes, start, end) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) removeNode(parent, vnode)\n\t\t}\n\t}\n\tfunction removeNode(parent, vnode) {\n\t\tvar mask = 0\n\t\tvar original = vnode.state\n\t\tvar stateResult, attrsResult\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode.state.onbeforeremove, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\tmask = 1\n\t\t\t\tstateResult = result\n\t\t\t}\n\t\t}\n\t\tif (vnode.attrs && typeof vnode.attrs.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode.attrs.onbeforeremove, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tmask |= 2\n\t\t\t\tattrsResult = result\n\t\t\t}\n\t\t}\n\t\tcheckState(vnode, original)\n\t\tvar generation\n\t\t// If we can, try to fast-path it and avoid all the overhead of awaiting\n\t\tif (!mask) {\n\t\t\tonremove(vnode)\n\t\t\tremoveDOM(parent, vnode, generation)\n\t\t} else {\n\t\t\tgeneration = currentRender\n\t\t\tfor (var dom of domFor(vnode)) delayedRemoval.set(dom, generation)\n\t\t\tif (stateResult != null) {\n\t\t\t\tstateResult.finally(function () {\n\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\tif (mask & 1) {\n\t\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\t\tmask &= 2\n\t\t\t\t\t\tif (!mask) {\n\t\t\t\t\t\t\tcheckState(vnode, original)\n\t\t\t\t\t\t\tonremove(vnode)\n\t\t\t\t\t\t\tremoveDOM(parent, vnode, generation)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (attrsResult != null) {\n\t\t\t\tattrsResult.finally(function () {\n\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\tif (mask & 2) {\n\t\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\t\tmask &= 1\n\t\t\t\t\t\tif (!mask) {\n\t\t\t\t\t\t\tcheckState(vnode, original)\n\t\t\t\t\t\t\tonremove(vnode)\n\t\t\t\t\t\t\tremoveDOM(parent, vnode, generation)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\tfunction removeDOM(parent, vnode, generation) {\n\t\tif (vnode.dom == null) return\n\t\tif (vnode.domSize == null) {\n\t\t\t// don't allocate for the common case\n\t\t\tif (delayedRemoval.get(vnode.dom) === generation) parent.removeChild(vnode.dom)\n\t\t} else {\n\t\t\tfor (var dom of domFor(vnode, {generation})) parent.removeChild(dom)\n\t\t}\n\t}\n\n\tfunction onremove(vnode) {\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onremove === \"function\") callHook.call(vnode.state.onremove, vnode)\n\t\tif (vnode.attrs && typeof vnode.attrs.onremove === \"function\") callHook.call(vnode.attrs.onremove, vnode)\n\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\tif (vnode.instance != null) onremove(vnode.instance)\n\t\t} else {\n\t\t\tvar children = vnode.children\n\t\t\tif (Array.isArray(children)) {\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tvar child = children[i]\n\t\t\t\t\tif (child != null) onremove(child)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//attrs\n\tfunction setAttrs(vnode, attrs, ns) {\n\t\tfor (var key in attrs) {\n\t\t\tsetAttr(vnode, key, null, attrs[key], ns)\n\t\t}\n\t}\n\tfunction setAttr(vnode, key, old, value, ns) {\n\t\tif (key === \"key\" || key === \"is\" || value == null || isLifecycleMethod(key) || (old === value && !isFormAttribute(vnode, key)) && typeof value !== \"object\") return\n\t\tif (key[0] === \"o\" && key[1] === \"n\") return updateEvent(vnode, key, value)\n\t\tif (key.slice(0, 6) === \"xlink:\") vnode.dom.setAttributeNS(\"http://www.w3.org/1999/xlink\", key.slice(6), value)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, value)\n\t\telse if (hasPropertyKey(vnode, key, ns)) {\n\t\t\tif (key === \"value\") {\n\t\t\t\t// Only do the coercion if we're actually going to check the value.\n\t\t\t\t/* eslint-disable no-implicit-coercion */\n\t\t\t\tvar isFileInput = vnode.tag === \"input\" && vnode.attrs.type === \"file\"\n\t\t\t\t//setting input[value] to same value by typing on focused element moves cursor to end in Chrome\n\t\t\t\t//setting input[type=file][value] to same value causes an error to be generated if it's non-empty\n\t\t\t\tif ((vnode.tag === \"input\" || vnode.tag === \"textarea\") && vnode.dom.value === \"\" + value && (isFileInput || vnode.dom === activeElement(vnode.dom))) return\n\t\t\t\t//setting select[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"select\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t//setting option[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"option\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t//setting input[type=file][value] to different value is an error if it's non-empty\n\t\t\t\t// Not ideal, but it at least works around the most common source of uncaught exceptions for now.\n\t\t\t\tif (isFileInput && \"\" + value !== \"\") { console.error(\"`value` is read-only on file inputs!\"); return }\n\t\t\t\t/* eslint-enable no-implicit-coercion */\n\t\t\t}\n\t\t\t// If you assign an input type that is not supported by IE 11 with an assignment expression, an error will occur.\n\t\t\tif (vnode.tag === \"input\" && key === \"type\") vnode.dom.setAttribute(key, value)\n\t\t\telse vnode.dom[key] = value\n\t\t} else {\n\t\t\tif (typeof value === \"boolean\") {\n\t\t\t\tif (value) vnode.dom.setAttribute(key, \"\")\n\t\t\t\telse vnode.dom.removeAttribute(key)\n\t\t\t}\n\t\t\telse vnode.dom.setAttribute(key === \"className\" ? \"class\" : key, value)\n\t\t}\n\t}\n\tfunction removeAttr(vnode, key, old, ns) {\n\t\tif (key === \"key\" || key === \"is\" || old == null || isLifecycleMethod(key)) return\n\t\tif (key[0] === \"o\" && key[1] === \"n\") updateEvent(vnode, key, undefined)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, null)\n\t\telse if (\n\t\t\thasPropertyKey(vnode, key, ns)\n\t\t\t&& key !== \"className\"\n\t\t\t&& key !== \"title\" // creates \"null\" as title\n\t\t\t&& !(key === \"value\" && (\n\t\t\t\tvnode.tag === \"option\"\n\t\t\t\t|| vnode.tag === \"select\" && vnode.dom.selectedIndex === -1 && vnode.dom === activeElement(vnode.dom)\n\t\t\t))\n\t\t\t&& !(vnode.tag === \"input\" && key === \"type\")\n\t\t) {\n\t\t\tvnode.dom[key] = null\n\t\t} else {\n\t\t\tvar nsLastIndex = key.indexOf(\":\")\n\t\t\tif (nsLastIndex !== -1) key = key.slice(nsLastIndex + 1)\n\t\t\tif (old !== false) vnode.dom.removeAttribute(key === \"className\" ? \"class\" : key)\n\t\t}\n\t}\n\tfunction setLateSelectAttrs(vnode, attrs) {\n\t\tif (\"value\" in attrs) {\n\t\t\tif(attrs.value === null) {\n\t\t\t\tif (vnode.dom.selectedIndex !== -1) vnode.dom.value = null\n\t\t\t} else {\n\t\t\t\tvar normalized = \"\" + attrs.value // eslint-disable-line no-implicit-coercion\n\t\t\t\tif (vnode.dom.value !== normalized || vnode.dom.selectedIndex === -1) {\n\t\t\t\t\tvnode.dom.value = normalized\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (\"selectedIndex\" in attrs) setAttr(vnode, \"selectedIndex\", null, attrs.selectedIndex, undefined)\n\t}\n\tfunction updateAttrs(vnode, old, attrs, ns) {\n\t\tif (old && old === attrs) {\n\t\t\tconsole.warn(\"Don't reuse attrs object, use new object for every redraw, this will throw in next major\")\n\t\t}\n\t\tif (attrs != null) {\n\t\t\tfor (var key in attrs) {\n\t\t\t\tsetAttr(vnode, key, old && old[key], attrs[key], ns)\n\t\t\t}\n\t\t}\n\t\tvar val\n\t\tif (old != null) {\n\t\t\tfor (var key in old) {\n\t\t\t\tif (((val = old[key]) != null) && (attrs == null || attrs[key] == null)) {\n\t\t\t\t\tremoveAttr(vnode, key, val, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction isFormAttribute(vnode, attr) {\n\t\treturn attr === \"value\" || attr === \"checked\" || attr === \"selectedIndex\" || attr === \"selected\" && vnode.dom === activeElement(vnode.dom) || vnode.tag === \"option\" && vnode.dom.parentNode === activeElement(vnode.dom)\n\t}\n\tfunction isLifecycleMethod(attr) {\n\t\treturn attr === \"oninit\" || attr === \"oncreate\" || attr === \"onupdate\" || attr === \"onremove\" || attr === \"onbeforeremove\" || attr === \"onbeforeupdate\"\n\t}\n\tfunction hasPropertyKey(vnode, key, ns) {\n\t\t// Filter out namespaced keys\n\t\treturn ns === undefined && (\n\t\t\t// If it's a custom element, just keep it.\n\t\t\tvnode.tag.indexOf(\"-\") > -1 || vnode.attrs != null && vnode.attrs.is ||\n\t\t\t// If it's a normal element, let's try to avoid a few browser bugs.\n\t\t\tkey !== \"href\" && key !== \"list\" && key !== \"form\" && key !== \"width\" && key !== \"height\"// && key !== \"type\"\n\t\t\t// Defer the property check until *after* we check everything.\n\t\t) && key in vnode.dom\n\t}\n\n\t//style\n\tfunction updateStyle(element, old, style) {\n\t\tif (old === style) {\n\t\t\t// Styles are equivalent, do nothing.\n\t\t} else if (style == null) {\n\t\t\t// New style is missing, just clear it.\n\t\t\telement.style = \"\"\n\t\t} else if (typeof style !== \"object\") {\n\t\t\t// New style is a string, let engine deal with patching.\n\t\t\telement.style = style\n\t\t} else if (old == null || typeof old !== \"object\") {\n\t\t\t// `old` is missing or a string, `style` is an object.\n\t\t\telement.style.cssText = \"\"\n\t\t\t// Add new style properties\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null) {\n\t\t\t\t\tif (key.includes(\"-\")) element.style.setProperty(key, String(value))\n\t\t\t\t\telse element.style[key] = String(value)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Both old & new are (different) objects.\n\t\t\t// Update style properties that have changed\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null && (value = String(value)) !== String(old[key])) {\n\t\t\t\t\tif (key.includes(\"-\")) element.style.setProperty(key, value)\n\t\t\t\t\telse element.style[key] = value\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Remove style properties that no longer exist\n\t\t\tfor (var key in old) {\n\t\t\t\tif (old[key] != null && style[key] == null) {\n\t\t\t\t\tif (key.includes(\"-\")) element.style.removeProperty(key)\n\t\t\t\t\telse element.style[key] = \"\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Here's an explanation of how this works:\n\t// 1. The event names are always (by design) prefixed by `on`.\n\t// 2. The EventListener interface accepts either a function or an object\n\t// with a `handleEvent` method.\n\t// 3. The object does not inherit from `Object.prototype`, to avoid\n\t// any potential interference with that (e.g. setters).\n\t// 4. The event name is remapped to the handler before calling it.\n\t// 5. In function-based event handlers, `ev.target === this`. We replicate\n\t// that below.\n\t// 6. In function-based event handlers, `return false` prevents the default\n\t// action and stops event propagation. We replicate that below.\n\tfunction EventDict() {\n\t\t// Save this, so the current redraw is correctly tracked.\n\t\tthis._ = currentRedraw\n\t}\n\tEventDict.prototype = Object.create(null)\n\tEventDict.prototype.handleEvent = function (ev) {\n\t\tvar handler = this[\"on\" + ev.type]\n\t\tvar result\n\t\tif (typeof handler === \"function\") result = handler.call(ev.currentTarget, ev)\n\t\telse if (typeof handler.handleEvent === \"function\") handler.handleEvent(ev)\n\t\tif (this._ && ev.redraw !== false) (0, this._)()\n\t\tif (result === false) {\n\t\t\tev.preventDefault()\n\t\t\tev.stopPropagation()\n\t\t}\n\t}\n\n\t//event\n\tfunction updateEvent(vnode, key, value) {\n\t\tif (vnode.events != null) {\n\t\t\tvnode.events._ = currentRedraw\n\t\t\tif (vnode.events[key] === value) return\n\t\t\tif (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\t\tif (vnode.events[key] == null) vnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = value\n\t\t\t} else {\n\t\t\t\tif (vnode.events[key] != null) vnode.dom.removeEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = undefined\n\t\t\t}\n\t\t} else if (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\tvnode.events = new EventDict()\n\t\t\tvnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\tvnode.events[key] = value\n\t\t}\n\t}\n\n\t//lifecycle\n\tfunction initLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.oninit === \"function\") callHook.call(source.oninit, vnode)\n\t\tif (typeof source.oncreate === \"function\") hooks.push(callHook.bind(source.oncreate, vnode))\n\t}\n\tfunction updateLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.onupdate === \"function\") hooks.push(callHook.bind(source.onupdate, vnode))\n\t}\n\tfunction shouldNotUpdate(vnode, old) {\n\t\tdo {\n\t\t\tif (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.attrs.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.state.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\treturn false\n\t\t} while (false); // eslint-disable-line no-constant-condition\n\t\tvnode.dom = old.dom\n\t\tvnode.domSize = old.domSize\n\t\tvnode.instance = old.instance\n\t\t// One would think having the actual latest attributes would be ideal,\n\t\t// but it doesn't let us properly diff based on our current internal\n\t\t// representation. We have to save not only the old DOM info, but also\n\t\t// the attributes used to create it, as we diff *that*, not against the\n\t\t// DOM directly (with a few exceptions in `setAttr`). And, of course, we\n\t\t// need to save the children and text as they are conceptually not\n\t\t// unlike special \"attributes\" internally.\n\t\tvnode.attrs = old.attrs\n\t\tvnode.children = old.children\n\t\tvnode.text = old.text\n\t\treturn true\n\t}\n\n\tvar currentDOM\n\n\treturn function(dom, vnodes, redraw) {\n\t\tif (!dom) throw new TypeError(\"DOM element being rendered to does not exist.\")\n\t\tif (currentDOM != null && dom.contains(currentDOM)) {\n\t\t\tthrow new TypeError(\"Node is currently being rendered to and thus is locked.\")\n\t\t}\n\t\tvar prevRedraw = currentRedraw\n\t\tvar prevDOM = currentDOM\n\t\tvar hooks = []\n\t\tvar active = activeElement(dom)\n\t\tvar namespace = dom.namespaceURI\n\n\t\tcurrentDOM = dom\n\t\tcurrentRedraw = typeof redraw === \"function\" ? redraw : undefined\n\t\tcurrentRender = {}\n\t\ttry {\n\t\t\t// First time rendering into a node clears it out\n\t\t\tif (dom.vnodes == null) dom.textContent = \"\"\n\t\t\tvnodes = Vnode.normalizeChildren(Array.isArray(vnodes) ? vnodes : [vnodes])\n\t\t\tupdateNodes(dom, dom.vnodes, vnodes, hooks, null, namespace === \"http://www.w3.org/1999/xhtml\" ? undefined : namespace)\n\t\t\tdom.vnodes = vnodes\n\t\t\t// `document.activeElement` can return null: https://html.spec.whatwg.org/multipage/interaction.html#dom-document-activeelement\n\t\t\tif (active != null && activeElement(dom) !== active && typeof active.focus === \"function\") active.focus()\n\t\t\tfor (var i = 0; i < hooks.length; i++) hooks[i]()\n\t\t} finally {\n\t\t\tcurrentRedraw = prevRedraw\n\t\t\tcurrentDOM = prevDOM\n\t\t}\n\t}\n}\n","\"use strict\"\n\nmodule.exports = require(\"./render/render\")(typeof window !== \"undefined\" ? window : null)\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(render, schedule, console) {\n\tvar subscriptions = []\n\tvar pending = false\n\tvar offset = -1\n\n\tfunction sync() {\n\t\tfor (offset = 0; offset < subscriptions.length; offset += 2) {\n\t\t\ttry { render(subscriptions[offset], Vnode(subscriptions[offset + 1]), redraw) }\n\t\t\tcatch (e) { console.error(e) }\n\t\t}\n\t\toffset = -1\n\t}\n\n\tfunction redraw() {\n\t\tif (!pending) {\n\t\t\tpending = true\n\t\t\tschedule(function() {\n\t\t\t\tpending = false\n\t\t\t\tsync()\n\t\t\t})\n\t\t}\n\t}\n\n\tredraw.sync = sync\n\n\tfunction mount(root, component) {\n\t\tif (component != null && component.view == null && typeof component !== \"function\") {\n\t\t\tthrow new TypeError(\"m.mount expects a component, not a vnode.\")\n\t\t}\n\n\t\tvar index = subscriptions.indexOf(root)\n\t\tif (index >= 0) {\n\t\t\tsubscriptions.splice(index, 2)\n\t\t\tif (index <= offset) offset -= 2\n\t\t\trender(root, [])\n\t\t}\n\n\t\tif (component != null) {\n\t\t\tsubscriptions.push(root, component)\n\t\t\trender(root, Vnode(component), redraw)\n\t\t}\n\t}\n\n\treturn {mount: mount, redraw: redraw}\n}\n","\"use strict\"\n\nvar render = require(\"./render\")\n\nmodule.exports = require(\"./api/mount-redraw\")(render, typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : null, typeof console !== \"undefined\" ? console : null)\n","\"use strict\"\n\nmodule.exports = function(object) {\n\tif (Object.prototype.toString.call(object) !== \"[object Object]\") return \"\"\n\n\tvar args = []\n\tfor (var key in object) {\n\t\tdestructure(key, object[key])\n\t}\n\n\treturn args.join(\"&\")\n\n\tfunction destructure(key, value) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse if (Object.prototype.toString.call(value) === \"[object Object]\") {\n\t\t\tfor (var i in value) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse args.push(encodeURIComponent(key) + (value != null && value !== \"\" ? \"=\" + encodeURIComponent(value) : \"\"))\n\t}\n}\n","\"use strict\"\n\nvar buildQueryString = require(\"../querystring/build\")\n\n// Returns `path` from `template` + `params`\nmodule.exports = function(template, params) {\n\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(template)) {\n\t\tthrow new SyntaxError(\"Template parameter names must be separated by either a '/', '-', or '.'.\")\n\t}\n\tif (params == null) return template\n\tvar queryIndex = template.indexOf(\"?\")\n\tvar hashIndex = template.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? template.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = template.slice(0, pathEnd)\n\tvar query = {}\n\n\tObject.assign(query, params)\n\n\tvar resolved = path.replace(/:([^\\/\\.-]+)(\\.{3})?/g, function(m, key, variadic) {\n\t\tdelete query[key]\n\t\t// If no such parameter exists, don't interpolate it.\n\t\tif (params[key] == null) return m\n\t\t// Escape normal parameters, but not variadic ones.\n\t\treturn variadic ? params[key] : encodeURIComponent(String(params[key]))\n\t})\n\n\t// In case the template substitution adds new query/hash parameters.\n\tvar newQueryIndex = resolved.indexOf(\"?\")\n\tvar newHashIndex = resolved.indexOf(\"#\")\n\tvar newQueryEnd = newHashIndex < 0 ? resolved.length : newHashIndex\n\tvar newPathEnd = newQueryIndex < 0 ? newQueryEnd : newQueryIndex\n\tvar result = resolved.slice(0, newPathEnd)\n\n\tif (queryIndex >= 0) result += template.slice(queryIndex, queryEnd)\n\tif (newQueryIndex >= 0) result += (queryIndex < 0 ? \"?\" : \"&\") + resolved.slice(newQueryIndex, newQueryEnd)\n\tvar querystring = buildQueryString(query)\n\tif (querystring) result += (queryIndex < 0 && newQueryIndex < 0 ? \"?\" : \"&\") + querystring\n\tif (hashIndex >= 0) result += template.slice(hashIndex)\n\tif (newHashIndex >= 0) result += (hashIndex < 0 ? \"\" : \"&\") + resolved.slice(newHashIndex)\n\treturn result\n}\n","\"use strict\"\n\nvar buildPathname = require(\"../pathname/build\")\nvar hasOwn = require(\"../util/hasOwn\")\n\nmodule.exports = function($window, oncompletion) {\n\tfunction PromiseProxy(executor) {\n\t\treturn new Promise(executor)\n\t}\n\n\tfunction makeRequest(url, args) {\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\turl = buildPathname(url, args.params)\n\t\t\tvar method = args.method != null ? args.method.toUpperCase() : \"GET\"\n\t\t\tvar body = args.body\n\t\t\tvar assumeJSON = (args.serialize == null || args.serialize === JSON.serialize) && !(body instanceof $window.FormData || body instanceof $window.URLSearchParams)\n\t\t\tvar responseType = args.responseType || (typeof args.extract === \"function\" ? \"\" : \"json\")\n\n\t\t\tvar xhr = new $window.XMLHttpRequest(), aborted = false, isTimeout = false\n\t\t\tvar original = xhr, replacedAbort\n\t\t\tvar abort = xhr.abort\n\n\t\t\txhr.abort = function() {\n\t\t\t\taborted = true\n\t\t\t\tabort.call(this)\n\t\t\t}\n\n\t\t\txhr.open(method, url, args.async !== false, typeof args.user === \"string\" ? args.user : undefined, typeof args.password === \"string\" ? args.password : undefined)\n\n\t\t\tif (assumeJSON && body != null && !hasHeader(args, \"content-type\")) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\")\n\t\t\t}\n\t\t\tif (typeof args.deserialize !== \"function\" && !hasHeader(args, \"accept\")) {\n\t\t\t\txhr.setRequestHeader(\"Accept\", \"application/json, text/*\")\n\t\t\t}\n\t\t\tif (args.withCredentials) xhr.withCredentials = args.withCredentials\n\t\t\tif (args.timeout) xhr.timeout = args.timeout\n\t\t\txhr.responseType = responseType\n\n\t\t\tfor (var key in args.headers) {\n\t\t\t\tif (hasOwn.call(args.headers, key)) {\n\t\t\t\t\txhr.setRequestHeader(key, args.headers[key])\n\t\t\t\t}\n\t\t\t}\n\n\t\t\txhr.onreadystatechange = function(ev) {\n\t\t\t\t// Don't throw errors on xhr.abort().\n\t\t\t\tif (aborted) return\n\n\t\t\t\tif (ev.target.readyState === 4) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar success = (ev.target.status >= 200 && ev.target.status < 300) || ev.target.status === 304 || (/^file:\\/\\//i).test(url)\n\t\t\t\t\t\t// When the response type isn't \"\" or \"text\",\n\t\t\t\t\t\t// `xhr.responseText` is the wrong thing to use.\n\t\t\t\t\t\t// Browsers do the right thing and throw here, and we\n\t\t\t\t\t\t// should honor that and do the right thing by\n\t\t\t\t\t\t// preferring `xhr.response` where possible/practical.\n\t\t\t\t\t\tvar response = ev.target.response, message\n\n\t\t\t\t\t\tif (responseType === \"json\") {\n\t\t\t\t\t\t\t// For IE and Edge, which don't implement\n\t\t\t\t\t\t\t// `responseType: \"json\"`.\n\t\t\t\t\t\t\tif (!ev.target.responseType && typeof args.extract !== \"function\") {\n\t\t\t\t\t\t\t\t// Handle no-content which will not parse.\n\t\t\t\t\t\t\t\ttry { response = JSON.parse(ev.target.responseText) }\n\t\t\t\t\t\t\t\tcatch (e) { response = null }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!responseType || responseType === \"text\") {\n\t\t\t\t\t\t\t// Only use this default if it's text. If a parsed\n\t\t\t\t\t\t\t// document is needed on old IE and friends (all\n\t\t\t\t\t\t\t// unsupported), the user should use a custom\n\t\t\t\t\t\t\t// `config` instead. They're already using this at\n\t\t\t\t\t\t\t// their own risk.\n\t\t\t\t\t\t\tif (response == null) response = ev.target.responseText\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof args.extract === \"function\") {\n\t\t\t\t\t\t\tresponse = args.extract(ev.target, args)\n\t\t\t\t\t\t\tsuccess = true\n\t\t\t\t\t\t} else if (typeof args.deserialize === \"function\") {\n\t\t\t\t\t\t\tresponse = args.deserialize(response)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (success) {\n\t\t\t\t\t\t\tif (typeof args.type === \"function\") {\n\t\t\t\t\t\t\t\tif (Array.isArray(response)) {\n\t\t\t\t\t\t\t\t\tfor (var i = 0; i < response.length; i++) {\n\t\t\t\t\t\t\t\t\t\tresponse[i] = new args.type(response[i])\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse response = new args.type(response)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tresolve(response)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvar completeErrorResponse = function() {\n\t\t\t\t\t\t\t\ttry { message = ev.target.responseText }\n\t\t\t\t\t\t\t\tcatch (e) { message = response }\n\t\t\t\t\t\t\t\tvar error = new Error(message)\n\t\t\t\t\t\t\t\terror.code = ev.target.status\n\t\t\t\t\t\t\t\terror.response = response\n\t\t\t\t\t\t\t\treject(error)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (xhr.status === 0) {\n\t\t\t\t\t\t\t\t// Use setTimeout to push this code block onto the event queue\n\t\t\t\t\t\t\t\t// This allows `xhr.ontimeout` to run in the case that there is a timeout\n\t\t\t\t\t\t\t\t// Without this setTimeout, `xhr.ontimeout` doesn't have a chance to reject\n\t\t\t\t\t\t\t\t// as `xhr.onreadystatechange` will run before it\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tif (isTimeout) return\n\t\t\t\t\t\t\t\t\tcompleteErrorResponse()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t} else completeErrorResponse()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\treject(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\txhr.ontimeout = function (ev) {\n\t\t\t\tisTimeout = true\n\t\t\t\tvar error = new Error(\"Request timed out\")\n\t\t\t\terror.code = ev.target.status\n\t\t\t\treject(error)\n\t\t\t}\n\n\t\t\tif (typeof args.config === \"function\") {\n\t\t\t\txhr = args.config(xhr, args, url) || xhr\n\n\t\t\t\t// Propagate the `abort` to any replacement XHR as well.\n\t\t\t\tif (xhr !== original) {\n\t\t\t\t\treplacedAbort = xhr.abort\n\t\t\t\t\txhr.abort = function() {\n\t\t\t\t\t\taborted = true\n\t\t\t\t\t\treplacedAbort.call(this)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (body == null) xhr.send()\n\t\t\telse if (typeof args.serialize === \"function\") xhr.send(args.serialize(body))\n\t\t\telse if (body instanceof $window.FormData || body instanceof $window.URLSearchParams) xhr.send(body)\n\t\t\telse xhr.send(JSON.stringify(body))\n\t\t})\n\t}\n\n\t// In case the global Promise is some userland library's where they rely on\n\t// `foo instanceof this.constructor`, `this.constructor.resolve(value)`, or\n\t// similar. Let's *not* break them.\n\tPromiseProxy.prototype = Promise.prototype\n\tPromiseProxy.__proto__ = Promise // eslint-disable-line no-proto\n\n\tfunction hasHeader(args, name) {\n\t\tfor (var key in args.headers) {\n\t\t\tif (hasOwn.call(args.headers, key) && key.toLowerCase() === name) return true\n\t\t}\n\t\treturn false\n\t}\n\n\treturn {\n\t\trequest: function(url, args) {\n\t\t\tif (typeof url !== \"string\") { args = url; url = url.url }\n\t\t\telse if (args == null) args = {}\n\t\t\tvar promise = makeRequest(url, args)\n\t\t\tif (args.background === true) return promise\n\t\t\tvar count = 0\n\t\t\tfunction complete() {\n\t\t\t\tif (--count === 0 && typeof oncompletion === \"function\") oncompletion()\n\t\t\t}\n\n\t\t\treturn wrap(promise)\n\n\t\t\tfunction wrap(promise) {\n\t\t\t\tvar then = promise.then\n\t\t\t\t// Set the constructor, so engines know to not await or resolve\n\t\t\t\t// this as a native promise. At the time of writing, this is\n\t\t\t\t// only necessary for V8, but their behavior is the correct\n\t\t\t\t// behavior per spec. See this spec issue for more details:\n\t\t\t\t// https://github.com/tc39/ecma262/issues/1577. Also, see the\n\t\t\t\t// corresponding comment in `request/tests/test-request.js` for\n\t\t\t\t// a bit more background on the issue at hand.\n\t\t\t\tpromise.constructor = PromiseProxy\n\t\t\t\tpromise.then = function() {\n\t\t\t\t\tcount++\n\t\t\t\t\tvar next = then.apply(promise, arguments)\n\t\t\t\t\tnext.then(complete, function(e) {\n\t\t\t\t\t\tcomplete()\n\t\t\t\t\t\tif (count === 0) throw e\n\t\t\t\t\t})\n\t\t\t\t\treturn wrap(next)\n\t\t\t\t}\n\t\t\t\treturn promise\n\t\t\t}\n\t\t}\n\t}\n}\n","\"use strict\"\n\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./request/request\")(typeof window !== \"undefined\" ? window : null, mountRedraw.redraw)\n","\"use strict\"\n\nfunction decodeURIComponentSave(str) {\n\ttry {\n\t\treturn decodeURIComponent(str)\n\t} catch(err) {\n\t\treturn str\n\t}\n}\n\nmodule.exports = function(string) {\n\tif (string === \"\" || string == null) return {}\n\tif (string.charAt(0) === \"?\") string = string.slice(1)\n\n\tvar entries = string.split(\"&\"), counters = {}, data = {}\n\tfor (var i = 0; i < entries.length; i++) {\n\t\tvar entry = entries[i].split(\"=\")\n\t\tvar key = decodeURIComponentSave(entry[0])\n\t\tvar value = entry.length === 2 ? decodeURIComponentSave(entry[1]) : \"\"\n\n\t\tif (value === \"true\") value = true\n\t\telse if (value === \"false\") value = false\n\n\t\tvar levels = key.split(/\\]\\[?|\\[/)\n\t\tvar cursor = data\n\t\tif (key.indexOf(\"[\") > -1) levels.pop()\n\t\tfor (var j = 0; j < levels.length; j++) {\n\t\t\tvar level = levels[j], nextLevel = levels[j + 1]\n\t\t\tvar isNumber = nextLevel == \"\" || !isNaN(parseInt(nextLevel, 10))\n\t\t\tif (level === \"\") {\n\t\t\t\tvar key = levels.slice(0, j).join()\n\t\t\t\tif (counters[key] == null) {\n\t\t\t\t\tcounters[key] = Array.isArray(cursor) ? cursor.length : 0\n\t\t\t\t}\n\t\t\t\tlevel = counters[key]++\n\t\t\t}\n\t\t\t// Disallow direct prototype pollution\n\t\t\telse if (level === \"__proto__\") break\n\t\t\tif (j === levels.length - 1) cursor[level] = value\n\t\t\telse {\n\t\t\t\t// Read own properties exclusively to disallow indirect\n\t\t\t\t// prototype pollution\n\t\t\t\tvar desc = Object.getOwnPropertyDescriptor(cursor, level)\n\t\t\t\tif (desc != null) desc = desc.value\n\t\t\t\tif (desc == null) cursor[level] = desc = isNumber ? [] : {}\n\t\t\t\tcursor = desc\n\t\t\t}\n\t\t}\n\t}\n\treturn data\n}\n","\"use strict\"\n\nvar parseQueryString = require(\"../querystring/parse\")\n\n// Returns `{path, params}` from `url`\nmodule.exports = function(url) {\n\tvar queryIndex = url.indexOf(\"?\")\n\tvar hashIndex = url.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? url.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = url.slice(0, pathEnd).replace(/\\/{2,}/g, \"/\")\n\n\tif (!path) path = \"/\"\n\telse {\n\t\tif (path[0] !== \"/\") path = \"/\" + path\n\t}\n\treturn {\n\t\tpath: path,\n\t\tparams: queryIndex < 0\n\t\t\t? {}\n\t\t\t: parseQueryString(url.slice(queryIndex + 1, queryEnd)),\n\t}\n}\n","\"use strict\"\n\nvar parsePathname = require(\"./parse\")\n\n// Compiles a template into a function that takes a resolved path (without query\n// strings) and returns an object containing the template parameters with their\n// parsed values. This expects the input of the compiled template to be the\n// output of `parsePathname`. Note that it does *not* remove query parameters\n// specified in the template.\nmodule.exports = function(template) {\n\tvar templateData = parsePathname(template)\n\tvar templateKeys = Object.keys(templateData.params)\n\tvar keys = []\n\tvar regexp = new RegExp(\"^\" + templateData.path.replace(\n\t\t// I escape literal text so people can use things like `:file.:ext` or\n\t\t// `:lang-:locale` in routes. This is all merged into one pass so I\n\t\t// don't also accidentally escape `-` and make it harder to detect it to\n\t\t// ban it from template parameters.\n\t\t/:([^\\/.-]+)(\\.{3}|\\.(?!\\.)|-)?|[\\\\^$*+.()|\\[\\]{}]/g,\n\t\tfunction(m, key, extra) {\n\t\t\tif (key == null) return \"\\\\\" + m\n\t\t\tkeys.push({k: key, r: extra === \"...\"})\n\t\t\tif (extra === \"...\") return \"(.*)\"\n\t\t\tif (extra === \".\") return \"([^/]+)\\\\.\"\n\t\t\treturn \"([^/]+)\" + (extra || \"\")\n\t\t}\n\t) + \"$\")\n\treturn function(data) {\n\t\t// First, check the params. Usually, there isn't any, and it's just\n\t\t// checking a static set.\n\t\tfor (var i = 0; i < templateKeys.length; i++) {\n\t\t\tif (templateData.params[templateKeys[i]] !== data.params[templateKeys[i]]) return false\n\t\t}\n\t\t// If no interpolations exist, let's skip all the ceremony\n\t\tif (!keys.length) return regexp.test(data.path)\n\t\tvar values = regexp.exec(data.path)\n\t\tif (values == null) return false\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tdata.params[keys[i].k] = keys[i].r ? values[i + 1] : decodeURIComponent(values[i + 1])\n\t\t}\n\t\treturn true\n\t}\n}\n","\"use strict\"\n\n// Note: this is mildly perf-sensitive.\n//\n// It does *not* use `delete` - dynamic `delete`s usually cause objects to bail\n// out into dictionary mode and just generally cause a bunch of optimization\n// issues within engines.\n//\n// Ideally, I would've preferred to do this, if it weren't for the optimization\n// issues:\n//\n// ```js\n// const hasOwn = require(\"./hasOwn\")\n// const magic = [\n// \"key\", \"oninit\", \"oncreate\", \"onbeforeupdate\", \"onupdate\",\n// \"onbeforeremove\", \"onremove\",\n// ]\n// module.exports = (attrs, extras) => {\n// const result = Object.assign(Object.create(null), attrs)\n// for (const key of magic) delete result[key]\n// if (extras != null) for (const key of extras) delete result[key]\n// return result\n// }\n// ```\n\nvar hasOwn = require(\"./hasOwn\")\n// Words in RegExp literals are sometimes mangled incorrectly by the internal bundler, so use RegExp().\nvar magic = new RegExp(\"^(?:key|oninit|oncreate|onbeforeupdate|onupdate|onbeforeremove|onremove)$\")\n\nmodule.exports = function(attrs, extras) {\n\tvar result = {}\n\n\tif (extras != null) {\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key) && !magic.test(key) && extras.indexOf(key) < 0) {\n\t\t\t\tresult[key] = attrs[key]\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key) && !magic.test(key)) {\n\t\t\t\tresult[key] = attrs[key]\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result\n}\n","\"use strict\"\n\nvar hyperscript = require(\"./hyperscript\")\nvar request = require(\"./request\")\nvar mountRedraw = require(\"./mount-redraw\")\nvar domFor = require(\"./render/domFor\")\n\nvar m = function m() { return hyperscript.apply(this, arguments) }\nm.m = hyperscript\nm.trust = hyperscript.trust\nm.fragment = hyperscript.fragment\nm.Fragment = \"[\"\nm.mount = mountRedraw.mount\nm.route = require(\"./route\")\nm.render = require(\"./render\")\nm.redraw = mountRedraw.redraw\nm.request = request.request\nm.parseQueryString = require(\"./querystring/parse\")\nm.buildQueryString = require(\"./querystring/build\")\nm.parsePathname = require(\"./pathname/parse\")\nm.buildPathname = require(\"./pathname/build\")\nm.vnode = require(\"./render/vnode\")\nm.censor = require(\"./util/censor\")\nm.domFor = domFor.domFor\n\nmodule.exports = m\n","\"use strict\"\n\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./api/router\")(typeof window !== \"undefined\" ? window : null, mountRedraw)\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar m = require(\"../render/hyperscript\")\n\nvar buildPathname = require(\"../pathname/build\")\nvar parsePathname = require(\"../pathname/parse\")\nvar compileTemplate = require(\"../pathname/compileTemplate\")\nvar censor = require(\"../util/censor\")\n\nvar sentinel = {}\n\nfunction decodeURIComponentSave(component) {\n\ttry {\n\t\treturn decodeURIComponent(component)\n\t} catch(e) {\n\t\treturn component\n\t}\n}\n\nmodule.exports = function($window, mountRedraw) {\n\tvar callAsync = $window == null\n\t\t// In case Mithril.js' loaded globally without the DOM, let's not break\n\t\t? null\n\t\t: typeof $window.setImmediate === \"function\" ? $window.setImmediate : $window.setTimeout\n\tvar p = Promise.resolve()\n\n\tvar scheduled = false\n\n\t// state === 0: init\n\t// state === 1: scheduled\n\t// state === 2: done\n\tvar ready = false\n\tvar state = 0\n\n\tvar compiled, fallbackRoute\n\n\tvar currentResolver = sentinel, component, attrs, currentPath, lastUpdate\n\n\tvar RouterRoot = {\n\t\tonbeforeupdate: function() {\n\t\t\tstate = state ? 2 : 1\n\t\t\treturn !(!state || sentinel === currentResolver)\n\t\t},\n\t\tonremove: function() {\n\t\t\t$window.removeEventListener(\"popstate\", fireAsync, false)\n\t\t\t$window.removeEventListener(\"hashchange\", resolveRoute, false)\n\t\t},\n\t\tview: function() {\n\t\t\tif (!state || sentinel === currentResolver) return\n\t\t\t// Wrap in a fragment to preserve existing key semantics\n\t\t\tvar vnode = [Vnode(component, attrs.key, attrs)]\n\t\t\tif (currentResolver) vnode = currentResolver.render(vnode[0])\n\t\t\treturn vnode\n\t\t},\n\t}\n\n\tvar SKIP = route.SKIP = {}\n\n\tfunction resolveRoute() {\n\t\tscheduled = false\n\t\t// Consider the pathname holistically. The prefix might even be invalid,\n\t\t// but that's not our problem.\n\t\tvar prefix = $window.location.hash\n\t\tif (route.prefix[0] !== \"#\") {\n\t\t\tprefix = $window.location.search + prefix\n\t\t\tif (route.prefix[0] !== \"?\") {\n\t\t\t\tprefix = $window.location.pathname + prefix\n\t\t\t\tif (prefix[0] !== \"/\") prefix = \"/\" + prefix\n\t\t\t}\n\t\t}\n\t\t// This seemingly useless `.concat()` speeds up the tests quite a bit,\n\t\t// since the representation is consistently a relatively poorly\n\t\t// optimized cons string.\n\t\tvar path = prefix.concat()\n\t\t\t.replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponentSave)\n\t\t\t.slice(route.prefix.length)\n\t\tvar data = parsePathname(path)\n\n\t\tObject.assign(data.params, $window.history.state)\n\n\t\tfunction reject(e) {\n\t\t\tconsole.error(e)\n\t\t\tsetPath(fallbackRoute, null, {replace: true})\n\t\t}\n\n\t\tloop(0)\n\t\tfunction loop(i) {\n\t\t\t// state === 0: init\n\t\t\t// state === 1: scheduled\n\t\t\t// state === 2: done\n\t\t\tfor (; i < compiled.length; i++) {\n\t\t\t\tif (compiled[i].check(data)) {\n\t\t\t\t\tvar payload = compiled[i].component\n\t\t\t\t\tvar matchedRoute = compiled[i].route\n\t\t\t\t\tvar localComp = payload\n\t\t\t\t\tvar update = lastUpdate = function(comp) {\n\t\t\t\t\t\tif (update !== lastUpdate) return\n\t\t\t\t\t\tif (comp === SKIP) return loop(i + 1)\n\t\t\t\t\t\tcomponent = comp != null && (typeof comp.view === \"function\" || typeof comp === \"function\")? comp : \"div\"\n\t\t\t\t\t\tattrs = data.params, currentPath = path, lastUpdate = null\n\t\t\t\t\t\tcurrentResolver = payload.render ? payload : null\n\t\t\t\t\t\tif (state === 2) mountRedraw.redraw()\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tstate = 2\n\t\t\t\t\t\t\tmountRedraw.redraw.sync()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// There's no understating how much I *wish* I could\n\t\t\t\t\t// use `async`/`await` here...\n\t\t\t\t\tif (payload.view || typeof payload === \"function\") {\n\t\t\t\t\t\tpayload = {}\n\t\t\t\t\t\tupdate(localComp)\n\t\t\t\t\t}\n\t\t\t\t\telse if (payload.onmatch) {\n\t\t\t\t\t\tp.then(function () {\n\t\t\t\t\t\t\treturn payload.onmatch(data.params, path, matchedRoute)\n\t\t\t\t\t\t}).then(update, path === fallbackRoute ? null : reject)\n\t\t\t\t\t}\n\t\t\t\t\telse update(\"div\")\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (path === fallbackRoute) {\n\t\t\t\tthrow new Error(\"Could not resolve default route \" + fallbackRoute + \".\")\n\t\t\t}\n\t\t\tsetPath(fallbackRoute, null, {replace: true})\n\t\t}\n\t}\n\n\t// Set it unconditionally so `m.route.set` and `m.route.Link` both work,\n\t// even if neither `pushState` nor `hashchange` are supported. It's\n\t// cleared if `hashchange` is used, since that makes it automatically\n\t// async.\n\tfunction fireAsync() {\n\t\tif (!scheduled) {\n\t\t\tscheduled = true\n\t\t\t// TODO: just do `mountRedraw.redraw()` here and elide the timer\n\t\t\t// dependency. Note that this will muck with tests a *lot*, so it's\n\t\t\t// not as easy of a change as it sounds.\n\t\t\tcallAsync(resolveRoute)\n\t\t}\n\t}\n\n\tfunction setPath(path, data, options) {\n\t\tpath = buildPathname(path, data)\n\t\tif (ready) {\n\t\t\tfireAsync()\n\t\t\tvar state = options ? options.state : null\n\t\t\tvar title = options ? options.title : null\n\t\t\tif (options && options.replace) $window.history.replaceState(state, title, route.prefix + path)\n\t\t\telse $window.history.pushState(state, title, route.prefix + path)\n\t\t}\n\t\telse {\n\t\t\t$window.location.href = route.prefix + path\n\t\t}\n\t}\n\n\tfunction route(root, defaultRoute, routes) {\n\t\tif (!root) throw new TypeError(\"DOM element being rendered to does not exist.\")\n\n\t\tcompiled = Object.keys(routes).map(function(route) {\n\t\t\tif (route[0] !== \"/\") throw new SyntaxError(\"Routes must start with a '/'.\")\n\t\t\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(route)) {\n\t\t\t\tthrow new SyntaxError(\"Route parameter names must be separated with either '/', '.', or '-'.\")\n\t\t\t}\n\t\t\treturn {\n\t\t\t\troute: route,\n\t\t\t\tcomponent: routes[route],\n\t\t\t\tcheck: compileTemplate(route),\n\t\t\t}\n\t\t})\n\t\tfallbackRoute = defaultRoute\n\t\tif (defaultRoute != null) {\n\t\t\tvar defaultData = parsePathname(defaultRoute)\n\n\t\t\tif (!compiled.some(function (i) { return i.check(defaultData) })) {\n\t\t\t\tthrow new ReferenceError(\"Default route doesn't match any known routes.\")\n\t\t\t}\n\t\t}\n\n\t\tif (typeof $window.history.pushState === \"function\") {\n\t\t\t$window.addEventListener(\"popstate\", fireAsync, false)\n\t\t} else if (route.prefix[0] === \"#\") {\n\t\t\t$window.addEventListener(\"hashchange\", resolveRoute, false)\n\t\t}\n\n\t\tready = true\n\t\tmountRedraw.mount(root, RouterRoot)\n\t\tresolveRoute()\n\t}\n\troute.set = function(path, data, options) {\n\t\tif (lastUpdate != null) {\n\t\t\toptions = options || {}\n\t\t\toptions.replace = true\n\t\t}\n\t\tlastUpdate = null\n\t\tsetPath(path, data, options)\n\t}\n\troute.get = function() {return currentPath}\n\troute.prefix = \"#!\"\n\troute.Link = {\n\t\tview: function(vnode) {\n\t\t\t// Omit the used parameters from the rendered element - they are\n\t\t\t// internal. Also, censor the various lifecycle methods.\n\t\t\t//\n\t\t\t// We don't strip the other parameters because for convenience we\n\t\t\t// let them be specified in the selector as well.\n\t\t\tvar child = m(\n\t\t\t\tvnode.attrs.selector || \"a\",\n\t\t\t\tcensor(vnode.attrs, [\"options\", \"params\", \"selector\", \"onclick\"]),\n\t\t\t\tvnode.children\n\t\t\t)\n\t\t\tvar options, onclick, href\n\n\t\t\t// Let's provide a *right* way to disable a route link, rather than\n\t\t\t// letting people screw up accessibility on accident.\n\t\t\t//\n\t\t\t// The attribute is coerced so users don't get surprised over\n\t\t\t// `disabled: 0` resulting in a button that's somehow routable\n\t\t\t// despite being visibly disabled.\n\t\t\tif (child.attrs.disabled = Boolean(child.attrs.disabled)) {\n\t\t\t\tchild.attrs.href = null\n\t\t\t\tchild.attrs[\"aria-disabled\"] = \"true\"\n\t\t\t\t// If you *really* do want add `onclick` on a disabled link, use\n\t\t\t\t// an `oncreate` hook to add it.\n\t\t\t} else {\n\t\t\t\toptions = vnode.attrs.options\n\t\t\t\tonclick = vnode.attrs.onclick\n\t\t\t\t// Easier to build it now to keep it isomorphic.\n\t\t\t\thref = buildPathname(child.attrs.href, vnode.attrs.params)\n\t\t\t\tchild.attrs.href = route.prefix + href\n\t\t\t\tchild.attrs.onclick = function(e) {\n\t\t\t\t\tvar result\n\t\t\t\t\tif (typeof onclick === \"function\") {\n\t\t\t\t\t\tresult = onclick.call(e.currentTarget, e)\n\t\t\t\t\t} else if (onclick == null || typeof onclick !== \"object\") {\n\t\t\t\t\t\t// do nothing\n\t\t\t\t\t} else if (typeof onclick.handleEvent === \"function\") {\n\t\t\t\t\t\tonclick.handleEvent(e)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Adapted from React Router's implementation:\n\t\t\t\t\t// https://github.com/ReactTraining/react-router/blob/520a0acd48ae1b066eb0b07d6d4d1790a1d02482/packages/react-router-dom/modules/Link.js\n\t\t\t\t\t//\n\t\t\t\t\t// Try to be flexible and intuitive in how we handle links.\n\t\t\t\t\t// Fun fact: links aren't as obvious to get right as you\n\t\t\t\t\t// would expect. There's a lot more valid ways to click a\n\t\t\t\t\t// link than this, and one might want to not simply click a\n\t\t\t\t\t// link, but right click or command-click it to copy the\n\t\t\t\t\t// link target, etc. Nope, this isn't just for blind people.\n\t\t\t\t\tif (\n\t\t\t\t\t\t// Skip if `onclick` prevented default\n\t\t\t\t\t\tresult !== false && !e.defaultPrevented &&\n\t\t\t\t\t\t// Ignore everything but left clicks\n\t\t\t\t\t\t(e.button === 0 || e.which === 0 || e.which === 1) &&\n\t\t\t\t\t\t// Let the browser handle `target=_blank`, etc.\n\t\t\t\t\t\t(!e.currentTarget.target || e.currentTarget.target === \"_self\") &&\n\t\t\t\t\t\t// No modifier keys\n\t\t\t\t\t\t!e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey\n\t\t\t\t\t) {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\te.redraw = false\n\t\t\t\t\t\troute.set(href, null, options)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn child\n\t\t},\n\t}\n\troute.param = function(key) {\n\t\treturn attrs && key != null ? attrs[key] : attrs\n\t}\n\n\treturn route\n}\n","import m from \"mithril\";\n\n// ------------------------------------------------------------------------\n\nfunction getAttrs(attrs, parentAttrs, panelInitialParams) {\n const data = ((typeof attrs === \"function\") ? attrs(parentAttrs) : attrs) || {};\n if (panelInitialParams) data.initialParams = panelInitialParams;\n return data;\n}\n\nconst\n\n isCurrent = ({currentIndex}, index) => currentIndex === index,\n\n Icon = {\n view: ({attrs}) => m(\n `i.icon.${attrs.pack || \"fas\"}.fa-${attrs.icon || \"cog\"}${attrs.size ? \".fa-\" + attrs.size + \"x\" : \"\"}`,\n {\n title: attrs.icontitle || undefined,\n role: \"presentation\",\n onclick: attrs.onclick || null, ...attrs.iconClass && {class: attrs.iconClass}\n }\n )\n },\n\n Button = {\n view: ({attrs, state, children}) => m((attrs.download || attrs.link) ? \"a.button\" : \"button\", {\n ...attrs.link && {href: attrs.link},\n ...attrs.download && {download: attrs.download},\n ...attrs.target && {target: attrs.target},\n \"aria-label\": attrs[\"aria-label\"] || attrs.title || attrs.text,\n title: attrs.title || attrs[\"aria-label\"],\n class: (attrs.class || \"\") + (state.busy ? \" busy\" : \"\"),\n ...state.error && {\"data-error\": state.error.message},\n ...attrs.onclick && {\n onclick: (event) => {\n clearTimeout(state.debounce);\n state.debounce = setTimeout(() => {\n const result = attrs.onclick(event, attrs);\n if (result && result.then && result.catch) {\n state.busy = true;\n m.redraw();\n result\n .then(() => {\n state.busy = false;\n m.redraw();\n })\n .catch((error) => {\n state.busy = false;\n state.error = error;\n m.redraw();\n });\n }\n }, 25);\n }\n }\n }, [\n ...(attrs.icon && !attrs.right) ? [m(Icon, attrs)] : [],\n ...attrs.text ? [m(\"span.pad-1.pad-h\", {class: attrs.textClass || null}, attrs.text)] : [],\n ...(attrs.icon && attrs.right) ? [m(Icon, attrs)] : [],\n ...children\n ])\n },\n\n ButtonNew = {\n view: ({attrs, state, children}) => m((attrs.download || attrs.link) ? \"a.button\" : \"button\", {\n ...attrs.link && {href: attrs.link},\n ...attrs.download && {rel: \"nofollow\", download: attrs.download},\n ...attrs.target && {target: attrs.target},\n \"aria-label\": attrs[\"aria-label\"] || attrs.title || attrs.text,\n title: attrs.title || attrs[\"aria-label\"],\n class: (attrs.class || \"\") + (state.busy ? \" busy\" : \"\"),\n ...state.error && {\"data-error\": state.error.message},\n ...attrs.onClick && {\n onclick: (event) => {\n clearTimeout(state.debounce);\n state.debounce = setTimeout(() => {\n const result = attrs.onClick(event, attrs);\n if (result && result.then && result.catch) {\n state.busy = true;\n m.redraw();\n result\n .then(() => {\n state.busy = false;\n m.redraw();\n })\n .catch((error) => {\n state.busy = false;\n state.error = error;\n m.redraw();\n });\n }\n }, 25);\n }\n }\n }, [\n ...(attrs.icon && !attrs.right) ? [m(Icon, attrs)] : [],\n ...attrs.text ? [m(\"span.pad-1.pad-h\", {class: attrs.textClass || null}, attrs.text)] : [],\n ...(attrs.icon && attrs.right) ? [m(Icon, attrs)] : [],\n ...children\n ])\n },\n\n Empty = {\n\n view: ({attrs, children}) => m(\n \".flexcol.flexcenter.al-center.grows.emptywidget\",\n {\n ...attrs.class && {class: attrs.class},\n ...attrs.key && {key: attrs.key},\n role: \"presentation\"\n },\n [\n m(Icon, attrs),\n ...attrs.message\n ? [\n m(\".marg-2.marg-v\",\n {\n role: \"status\",\n class: attrs.size > 4 ? \"font-150\" : \"font-100\",\n \"aria-label\": attrs.message\n },\n attrs.message.split(\"\\n\")\n .map((str, idx, all) => all.length === 1 ? str : m(\"p.msg\" + idx, str))\n )\n ]\n : [],\n ...children\n ? [m(\".flexcol.additional\", children)]\n : []\n ]\n )\n },\n\n setItem = (attrs, state, index, params) => {\n\n\n const\n lastIndex = state.currentIndex,\n lastParams = state.currentParams;\n\n if (index === -1) {\n Object.assign(state, {\n current: null,\n currentIndex: -1,\n currentParams: []\n });\n } else {\n Object.assign(state, {\n current: attrs.items[index] || null,\n currentIndex: state.current ? index : -1,\n currentParams: params || []\n });\n }\n\n if (attrs.onSelected) attrs.onSelected(state.current, state.currentParams, state.currentIndex !== lastIndex, lastParams);\n\n m.redraw();\n },\n\n Selector = {\n\n oninit: ({attrs, state}) => {\n\n state = attrs.state || state;\n state.setItem = (index, ...params) => setItem(attrs, attrs.state || state, index, params);\n\n const\n hasState = !isNaN(state.currentIndex),\n selected = hasState ? state.currentIndex : attrs.selected,\n currentIndex = (attrs.items && attrs.items.length)\n ? (selected !== undefined && attrs.items[selected])\n ? selected\n : attrs.noinitial ? -1 : 0\n : -1,\n current = currentIndex !== -1 ? attrs.items[currentIndex] : null;\n\n Object.assign(state, {currentIndex, current});\n\n },\n\n onupdate: ({attrs, state}) => {\n (attrs.state || state).setItem = (index, ...params) => setItem(attrs, attrs.state || state, index, params);\n },\n\n view: ({attrs, state}) => {\n\n state = attrs.state || state;\n const {current} = state;\n\n return m(\n (attrs.element || \"widget\") + \".selector\" + (attrs.horizontal ? \".flexrow\" : \".flexcol\") + (attrs.className ? \".\" + attrs.className : \"\"),\n {\n ...attrs.key && {key: attrs.key},\n class: (state.current ? \"hascurrent\" : \"empty\") + (attrs.class ? \" \" + attrs.class : \"\")\n },\n [\n ...((!attrs.hideonly || (attrs.items.length > 1)) && (!attrs.hidesel))\n ? [\n /** navigation bar */\n m(\n \"nav.toolbar.fullwidth\" + (attrs.horizontal ? \".flexcol\" : \".flexrow\"),\n {\n \"aria-label\": attrs[\"aria-label\"] || attrs.title || \"selector\",\n class: attrs.toolbarClass\n },\n attrs.items.map((item, index) => m(Button, {\n class: (item.class ? item.class + \" \" : \"\") + (isCurrent(state, index) ? \"accent\" : \"nel\"),\n icon: item.icon || null,\n ...item.title && {title: item.title},\n ...item[\"aria-label\"] && {\"aria-label\": item[\"aria-label\"]},\n ...item.text && {text: item.text},\n onclick: () => {\n const t = Date.now();\n if (t - state.clickts < 200) return;\n state.clickts = Date.now();\n state.bodyHidden = false;\n state.setItem(index);\n }\n }))\n )]\n : [],\n ...current\n ? [\n ...(attrs.toggle && !state.bodyHidden)\n ? [\n m(ButtonNew, {\n class: \"selectornotch \" + (state.bodyHidden ? \"bodyhidden\" : \"bodyshown\"),\n icon: state.bodyHidden ? \"caret-up\" : \"caret-down\",\n title: state.bodyHidden ? \"expand panel\" : \"contract panel\",\n onClick: () => {\n state.bodyHidden = !state.bodyHidden;\n m.redraw();\n }\n })\n ] : [],\n ...(!attrs.toggle || !state.bodyHidden)\n ? [\n /** body */\n m(\".grows.flexcol.ohidden\", {class: attrs.bodyClass, role: \"presentation\"}, [\n m(\n current.widget,\n getAttrs(current.attrs, attrs, state.currentParams),\n current.children\n )\n ])\n ]\n : [],\n ...attrs.closeButton\n ? [\n m(Button, {\n class: \"closebutton absolute toright\",\n icon: \"times\",\n onclick: () => {\n state.setItem(-1);\n },\n \"aria-label\": \"close item\"\n })] : []\n ]\n : m(Empty, attrs)\n ]\n );\n }\n };\n\nconst ICONS = {\n info: \"info\",\n error: \"exclamation-triangle\",\n success: \"check\"\n};\n\nfunction Notifications(TOAST_SHORT = 5000, altContainer) {\n\n let\n mNotifications = [],\n mTimer;\n\n function render(container, n) {\n m.render(\n container, m(\n Button, {\n class: \"notification \" + n.type,\n text: n.text,\n icon: ICONS[n.type] || \"info\",\n size: 1,\n role: \"status\",\n // eslint-disable-next-line no-use-before-define\n onclick: next\n }\n )\n );\n }\n\n function next() {\n\n const\n container = altContainer || document.getElementById(\"notification-container\");\n\n if (mNotifications.length) {\n const n = mNotifications.splice(0, 1)[0];\n render(container, n);\n clearTimeout(mTimer);\n mTimer = setTimeout(next, n.timer || TOAST_SHORT);\n } else {\n m.render(container, \"\");\n mTimer = null;\n }\n }\n\n return {\n add: (text, type) => {\n mNotifications.push({\n text,\n type\n });\n if (!mTimer) next();\n },\n clear: () => {\n mNotifications = [];\n next();\n }\n\n };\n}\n\nconst Notification = new Notifications();\n\nexport {\n Empty,\n Icon,\n Selector,\n Button,\n ButtonNew,\n Notification\n}\n","export default function defineWidget (view, oninit, oncreate, onremove, onupdate) {\n return {\n ...view && {view},\n ...oninit && {oninit},\n ...oncreate && {oncreate},\n ...onupdate && {onupdate},\n ...onremove && {onremove}\n }\n}\n\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\nimport {ButtonNew} from \"./Basic\";\n\nconst\n globalState = {},\n CARDIE_CLOSED = 0;\n\nfunction setCardStatus(cardid, expanded = CARDIE_CLOSED) {\n if (cardid) {\n const [uniq, subname] = cardid.split(\"-\");\n if (expanded && uniq && subname) {\n Object.keys(globalState)\n .forEach((key) => {\n if (key.startsWith(uniq + \"-\")) {\n globalState[key] = CARDIE_CLOSED;\n }\n });\n }\n globalState[cardid] = expanded;\n }\n}\n\nconst CardieWidget = defineWidget(\n ({attrs, state, children}) => {\n\n const\n\n {\n nofold,\n cardid,\n size,\n title,\n action,\n collapsedAction,\n collapsedClass,\n expandedClass,\n cols,\n element,\n busy,\n expandedView,\n collapsedView,\n titleWidget: titWidget,\n titleAttrs,\n titleClass,\n bodyClass,\n titleExpanded,\n titleCollapsed\n } = attrs,\n\n collapsed = nofold\n ? false\n : cardid\n ? !globalState[cardid]\n : !!state.collapsed,\n\n items = (!collapsed)\n ? (\n expandedView\n ? expandedView(attrs, state)\n : (children || [])\n )\n : collapsedView ? collapsedView(attrs, state) : [],\n\n titleWidget = titWidget\n ? m(titWidget, titleAttrs || {})\n : title ? m(\"span.ellipsis.ohidden.unfold\", title) : undefined,\n\n buttonClass = busy\n ? \"fa-sync\"\n : `fa-caret-down ${collapsed ? \"iscollapsed\" : \"isexpanded\"}`;\n\n return items.length || !attrs.skipEmpty\n ? m(\n (element || \"ul\"),\n {\n class: \"cardie ohidden noshrink \"\n + (cols ? \"flexcol \" : \"flexrow wrap \")\n + (attrs.class ? \" \" + attrs.class : \"\")\n + (nofold\n ? \" expanded\"\n : ` ${collapsed ? \"collapsed \" + (collapsedClass || \"\") : \"expanded \" + (expandedClass || \"\")}`)\n + (size ? \" marg-\" + size : \" marg-2\")\n + (titWidget ? \" withwidget\" : \"\")\n + (busy ? \" busycard\" : \"\")\n },\n [\n\n ...titleWidget\n ? [\n m(\n \".title.grows.fabf.flexrow.pointer.unfold\",\n nofold\n ? {\n class: titleClass || \"pad-2\"\n }\n : {\n class: `${titleClass || \"pad-2\"} ${buttonClass || \"\"}`,\n\n title: collapsed\n ? (titleCollapsed || \"Click to expand the options\")\n : (titleExpanded || titleCollapsed || \"Click to collapse the options\"),\n\n onclick: (e) => {\n\n if (e.target.classList.contains(\"unfold\")) {\n if (e.shiftKey && attrs.onShiftOpen) {\n attrs.onShiftOpen();\n } else if (attrs.cardid) {\n setCardStatus(cardid, collapsed); // !state\n } else {\n state.collapsed = !state.collapsed;\n }\n\n m.redraw();\n }\n }\n },\n action && (nofold || !collapsed)\n ? [\n m(ButtonNew, action),\n titleWidget\n ]\n : collapsedAction && collapsed\n ? [\n m(ButtonNew, collapsedAction),\n titleWidget\n ]\n : titleWidget\n )\n ]\n : [],\n\n ...items.length\n ? [\n m(\".flexbreak\"),\n m(\n \".cardiebody.fadein-filter.grows\",\n {\n class: (cols ? \"flexcol \" : \"flexrow wrap\") + \" \" + (bodyClass || \"\")\n },\n ...items\n )\n ] : [],\n\n ...(attrs.alwaysView\n ? [attrs.alwaysView({attrs, state})]\n : [])\n\n ]\n ) : [];\n },\n ({attrs, state}) => {\n if (!attrs.cardid) {\n state.collapsed = attrs.nofold\n ? false\n : attrs.cardid\n ? !globalState[attrs.cardid]\n : !!attrs.collapsed;\n }\n },\n undefined,\n undefined,\n undefined,\n {setCardStatus}\n);\n\nexport default CardieWidget;","import m from \"mithril\";\nimport {ButtonNew} from \"./Basic\";\n\n/* eslint-disable no-prototype-builtins,no-nested-ternary */\n/* global m, Hammer */\n\nconst\n\n getInput = (attrs, value, parse = false) => {\n if (parse || attrs.type === \"number\") {\n const val = attrs.float ? Number.parseFloat(value) : Number.parseInt(value, 10);\n return Number.isNaN(val) ? undefined : val;\n }\n return value;\n },\n getValue = (attrs, state, parse) => {\n const lastVal = state.hasOwnProperty(\"value\") ? state.value : attrs.value;\n return getInput(attrs, lastVal, parse);\n },\n /*\n hammer = new Hammer.Manager(dom, { touchAction: \"pan-y\" }),\n panner = new Hammer.Pan({ direction: Hammer.DIRECTION_VERTICAL }),\n singleTap = listenTap && new Hammer.Tap();\n\n hammer.add(listenTap ? [panner, singleTap] : [panner]);\n hammer.on(\"panstart\", (e) => {\n\n */\n\n StaticFieldWidget = {\n view: (vnode) => {\n const {attrs, state} = vnode;\n // este vnode NO es el mismo que el del hammer, pero su estado SI !\n state.attrs = attrs; // guardamos una copia de los ultimos attrs en el estado\n\n return m(\n \".input-static.w-100.ellipsis\",\n {\n class: (attrs.onDrag ? \"withdrag \" : \"\") + (attrs.staticClass || \"grows\"),\n ...attrs.staticTitle && {title: attrs.staticTitle},\n ...attrs.onDrag || {onclick: attrs.onClick},\n oncreate: ({dom, state}) => {\n\n if (attrs.onDrag && !attrs.readonly) {\n\n const\n hammer = state.hammer = new Hammer.Manager(dom, {touchAction: \"pan-y\"}),\n panner = new Hammer.Pan({direction: Hammer.DIRECTION_VERTICAL}),\n singleTap = new Hammer.Tap();\n\n hammer.add([panner, singleTap]);\n hammer.on(\"tap\", () => vnode.state.attrs.onClick());\n hammer.on(\"panup\", (e) => vnode.state.attrs.onDrag(-1, e.srcEvent));\n hammer.on(\"pandown\", (e) => vnode.state.attrs.onDrag(1, e.srcEvent));\n hammer.on(\"panend pancancel\", (e) => vnode.state.attrs.onDrag(0, e.srcEvent));\n }\n if (attrs.focus) {\n dom.focus();\n }\n },\n onremove: ({state}) => {\n state.hammer && state.hammer.destroy();\n }\n },\n attrs.value\n );\n }\n },\n InputWidget = {\n view: ({attrs, state}) => {\n const reset = (redraw) => {\n // if (state.value !== undefined && state.showInput) delete state.showInput;\n if (state.value && state.showInput) delete state.showInput;\n delete state.value;\n if (redraw) m.redraw();\n };\n return m(\n \".textfield.flexcol.relative\",\n {\n class: (attrs.label ? \"witharia\" : \"\") + (attrs.containerClass ? \" \" + attrs.containerClass : \"\"),\n ...attrs.label && {\"aria-label\": attrs.label}\n },\n [\n (attrs.staticField && (attrs.readonly || !state.showInput))\n ? m(StaticFieldWidget, {\n readonly: attrs.readonly,\n staticClass: (state.dragging ? \"accent \" : \"\") + (attrs.staticClass || \"\"),\n staticTitle: attrs.staticTitle || attrs.draginc && \"Click then drag up and down to modify value, or just click to enter a custom value\",\n value: attrs.displayTitle || getValue(attrs, state),\n focus: attrs.focus,\n ...attrs.draginc && !attrs.readonly && {\n onDrag: (direction, event) => {\n if (direction) {\n state.dragging = true;\n let value = getValue(attrs, state, true);\n if (Number.isNaN(value) || value === undefined) return;\n value += direction * attrs.draginc;\n if (attrs.max !== undefined && value > attrs.max) value = attrs.max;\n if (attrs.min !== undefined && value < attrs.min) value = attrs.min;\n state.value = attrs.type === \"number\" ? value : String(value);\n attrs.onchange(state.value, event);\n } else {\n delete state.dragging;\n delete state.value;\n m.redraw();\n }\n }\n },\n ...attrs.readonly || {\n onClick: () => {\n state.showInput = true;\n state.value = attrs.value;\n m.redraw();\n }\n }\n })\n\n : ((state.multi || attrs.alwaysmulti) && (!attrs.type || attrs.type === \"text\"))\n ? m(\"textarea.w-100\", {\n class: attrs.class,\n value: getValue(attrs, state),\n ...attrs.title && {title: attrs.title},\n placeholder: attrs.hint || \"\",\n oninput: (event) => {\n state.value = getInput(attrs, event.target.value);\n if (attrs.validator) state.isValid = attrs.validator(state.value);\n if (attrs.onchange) {\n (attrs.oninput || attrs.onchange)(state.value, event, true);\n }\n },\n onchange: (event) => {\n if (attrs.onchange) {\n if (attrs.validator) state.isValid = attrs.validator(state.value);\n const value = getInput(attrs, event.target.value);\n reset(false);\n attrs.onchange(value, event, true);\n }\n },\n onblur: () => {\n if (state.showInput) {\n reset(true);\n }\n },\n onkeyup: (event) => {\n if (event.key === \"Escape\" && state.showInput) {\n reset(false);\n }\n }\n })\n : m(\"input.w-100\", {\n ...attrs.id && {id: attrs.id},\n type: attrs.type || \"text\",\n ...attrs.max !== undefined && {max: attrs.max},\n ...attrs.min !== undefined && {min: attrs.min},\n ...attrs.step > 0 && {step: attrs.step},\n ...attrs.maxlength && {maxlength: attrs.maxlength},\n class: (attrs.class || \"\") + (attrs.validator ? state.isValid ? \" bg-ok\" : \" bg-error\" : \"\"),\n ...attrs.title && {title: attrs.title},\n value: getValue(attrs, state),\n placeholder: attrs.hint || \"\",\n oninput: (event) => {\n state.value = getInput(attrs, event.target.value);\n event.fromoninput = true;\n if (attrs.validator) state.isValid = attrs.validator(state.value);\n if (attrs.onchange) {\n (attrs.oninput || attrs.onchange)(state.value, event);\n }\n },\n onchange: (event) => {\n if (attrs.onchange) {\n if (attrs.validator) state.isValid = attrs.validator(state.value);\n event.enterPressed = state.enterPressed;\n delete state.enterPressed;\n attrs.onchange(getInput(attrs, event.target.value), event);\n if (attrs.staticField) {\n reset(true);\n } else {\n delete state.value;\n }\n }\n },\n onblur: () => {\n if (state.showInput) {\n reset(true);\n }\n },\n onkeyup: (event) => {\n if (state.showInput) {\n if (event.key === \"Escape\") {\n reset(true);\n } else if (event.key === \"Enter\") {\n if (state.value === attrs.value || !state.value) {\n attrs.onchange(attrs.value, event);\n reset(true);\n }\n }\n }\n },\n onkeypress: (event) => {\n if (!state.showInput && event.key === \"Enter\") {\n attrs.onenter && attrs.onenter(event.target.value, event);\n }\n }\n }),\n\n m(\".span.actions.absolute.right.bottom\", [\n ...(attrs.multi && !attrs.alwaysmulti && (!attrs.type || attrs.type === \"text\"))\n ? [\n m(ButtonNew, {\n icon: state.multi ? \"angle-double-up\" : \"angle-double-down\",\n class: \"pad-2 transp\",\n onClick: () => {\n state.multi = !state.multi;\n m.redraw();\n }\n })\n ]\n : [],\n ...attrs.actions ? attrs.actions.map((action) => m(ButtonNew, {\n ...action,\n class: \"transp pad-2\"\n })) : [],\n ...attrs.action\n ? [\n m(ButtonNew, {...attrs.action, class: \"transp pad-2\"})\n ] : []\n ])\n ]);\n },\n oninit: ({attrs, state}) => {\n if (attrs.staticField && attrs.draginc) {\n const value = getValue(attrs, state, true);\n state.showInput = (Number.isNaN(value) || value === undefined || value === null);\n }\n }\n };\n\nexport default InputWidget;\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\nimport {Icon} from \"./Basic\";\n\nconst\n NoticeWidget = defineWidget(\n ({attrs, children}) => (\n children.length\n ? m(\n \".notice.cardie.flexcol.pad-3\",\n {class: attrs.class || \"marg-2 font-75\"},\n m(\n \".flexrow\",\n [\n ...attrs.icon ? [m(Icon, attrs)] : [],\n m(\".pad-2.pad-h\", attrs.text)\n ]\n ),\n ...children\n )\n : m(\n \".notice.cardie.flexrow.pad-3\",\n {class: attrs.class || \"marg-2 font-75\", onclick: attrs.onClick},\n [\n ...attrs.icon ? [m(Icon, attrs)] : [],\n m(\".pad-2.pad-h\", attrs.text)\n ]\n )\n )\n );\n\nexport default NoticeWidget;\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\nimport {Icon} from \"./Basic\";\n\nconst\n SwitchWidget = defineWidget(\n ({attrs, state}) => m((attrs.unit || \"\") + \".flexrow\" + (attrs.subline ? \" withsubline\" : \"\"),\n {\n class: attrs.class,\n text: attrs.text,\n title: attrs.title || null,\n onclick: () => {\n state.checked = !state.checked;\n if (attrs.onchange) {\n attrs.onchange(state.checked);\n }\n m.redraw();\n }\n },\n attrs.right\n ? [\n ...attrs.text ? [m(\"span.grows.caption\", attrs.subline ? {\"data-subline\": attrs.subline} : {}, attrs.text)] : [],\n m(Icon, {iconClass: \"pad-2 pad-h\", icon: state.checked ? \"toggle-on\" : \"toggle-off\"})\n ]\n : [\n m(Icon, {iconClass: \"pad-2 pad-h\", icon: state.checked ? \"toggle-on\" : \"toggle-off\"}),\n ...attrs.text ? [m(\"span.grows.caption\", attrs.subline ? {\"data-subline\": attrs.subline} : {}, attrs.text)] : []\n ]),\n ({attrs, state}) => {\n state.checked = state.original = attrs.checked;\n },\n null,\n null,\n ({attrs, state}) => {\n if (attrs.checked !== state.original) {\n state.checked = state.original = attrs.checked;\n m.redraw();\n }\n }\n );\n\nexport default SwitchWidget;","import m from \"mithril\";\n\nlet\n\tmCurrentCancelable;\n\nfunction runCancelable(container) {\n\tif (typeof mCurrentCancelable === \"function\") {\n\t\tmCurrentCancelable();\n\t\tmCurrentCancelable = undefined;\n\t}\n\tcontainer.style.display = \"none\";\n\tdelete popupMessage.redraw;\n}\n\n// There are ways of doing this inside m.route but it is probably\n// cleaner and faster when kept outside of the main auto\n// rendering system\n\nfunction popupMessage(message, cancelable = false, contentClass = \".modal-content\") {\n\n\tconst container = document.getElementById(\"modal-container\");\n\tcontainer.classList.toggle(\"iscustom\", contentClass !== \".modal-content\");\n\n\tif (cancelable) {\n\n\t\tmCurrentCancelable = cancelable;\n\n\t\tcontainer.onclick = (event) => {\n\t\t\tif (event.target.id === \"modal-container\") {\n\t\t\t\trunCancelable(container);\n\t\t\t}\n\t\t};\n\t}\n\n\tif (!message) {\n\t\tdelete popupMessage.redraw;\n\t\tif (message === null)\n\t\t\tcontainer.style.display = \"none\";\n\t\telse\n\t\t\trunCancelable(container);\n\n\t\treturn;\n\t}\n\n\tcontainer.style.display = \"flex\";\n\n\tpopupMessage.redraw = () => {\n\t\tm.render(\n\t\t\tcontainer,\n\t\t\tm(contentClass, {\n\t\t\t\trole: \"alertdialog\",\n\t\t\t\t\"aria-labelledby\": \"modaltitle\",\n\t\t\t\t\"aria-modal\": true\n\t\t\t}, [\n\t\t\t\ttypeof message === \"function\" ? message() : message\n\t\t\t])\n\t\t);\n\t};\n\n\tpopupMessage.redraw();\n}\n\nfunction clearModal() {\n\tconst container = document.getElementById(\"modal-container\");\n\tif (container.style.display !== \"none\") {\n\t\trunCancelable(container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport { popupMessage, clearModal };\n","/* eslint-disable no-nested-ternary */\n/**\n * Basic Mithril Widget functions\n * Provides some utilities and basic UI functions like an Alert or a Confirmation dialog\n *\n * @author Rodolfo Lopez Pintor, 2020 <rlp@nebular.tv>\n * @module apps.widgets.basic\n *\n */\nimport m from \"mithril\";\nimport * as widget from \"./widgets\";\nimport * as Tokenizer from \"./util.tokenizer\";\nimport {Button, Empty} from \"../widgets/Basic\";\n\n/**\n *\n * Computes a Class String\n *\n * @param {string} initials INitial CSS Classes\n * @param {Object<string, boolean>} clases New classes dictionary\n * @return {string} The CSS Class expression like .class1.class2.class3\n * @public\n * @static\n */\n\nconst packClassString = (initials, clases) => {\n const finals = [];\n if (clases) for (const cla of Object.keys(clases)) if (clases[cla]) finals.push(\".\" + cla);\n return (initials || \"\") + finals.join(\"\");\n};\n\n\nconst packClass = (initials, clases) => {\n const finals = initials ? [initials] : [];\n if (clases) for (const cla of Object.keys(clases)) if (clases[cla]) finals.push(cla);\n return finals.join(\" \");\n};\n\n/**\n * Shows a modal confirm dialog\n * @param {string} title The dialog title\n * @param {string} message The dialog message\n * @param {Array} buttons Buttons to display\n * @param {Object=} options noCancel: dialog is uncanellable\n * @public\n * @static\n */\n\nfunction Confirm(title, message,\n buttons = [\"CANCEL\", \"OK\"], options = {}\n) {\n widget.popupMessage(\n m(\n {\n view: () => [\n ...title ? [m(\"h3\", title)] : [],\n ...message ? [m(\"h4\", message)] : [],\n m(\".container\",\n buttons.map(\n option => m(\n \"button\",\n {\n onclick: () => {\n document.getElementById(\"modal-container\").style.display = \"none\";\n if (option.onclick) option.onclick(option.caption);\n }\n },\n option.caption || \"OK\"\n )\n ))\n ]\n },\n {}\n ),\n options.onCancel || !options.noCancel\n );\n}\n\nfunction ConfirmPromise(title, message, actions, isModal = false) {\n\n let onCancel = undefined;\n\n if (typeof isModal === \"function\") {\n onCancel = isModal;\n isModal = false;\n }\n\n return new Promise((resolve) => {\n\n const opts = actions.map((name, idx) => ({\n caption: name,\n onclick: () => resolve({\n idx,\n name\n })\n }));\n\n Confirm(title, message, opts, {\n onCancel,\n noCancel: isModal\n });\n });\n}\n\n/**\n * Shows An Alert Modal Dialog\n * @param {string} title Dialog Title\n * @param {string} message Dialog Message\n * @param {string?} caption Button caption\n * @param {function?} onclick On press handler\n * @public\n * @static\n */\n\nfunction Alert(title, message, caption, onclick) {\n return Confirm(title, message, [{caption, onclick}]);\n}\n\n\nfunction OverflowMenu(domItem, item, actions, options) {\n\n return new Promise((resolve) => {\n\n options = options || {};\n\n function closeResolve(value) {\n widget.popupMessage(null);\n try {\n resolve(value);\n } catch (e) {\n //\n }\n }\n\n const\n classes = packClassString(\".popup.flexcol\", {\n \".favlist\": options.favlist,\n \".isfav\": domItem && domItem.classList.contains(\"isfav\"),\n \".isplay\": domItem && domItem.classList.contains(\"selected\")\n });\n\n widget.popupMessage(\n m({\n view: () => m(\n classes,\n {\n onclick: (event) => {\n\n if (event.target.nodeName === \"INPUT\") {\n return;\n }\n\n const\n action = event.target.getAttribute(\"data-action\");\n\n if (action) {\n closeResolve({\n domItem,\n item,\n action\n });\n } else {\n widget.popupMessage(null);\n }\n }\n },\n [\n ...item.title ? [m(\"h3\", {id: \"modaltitle\"}, item.title)] : [],\n ...actions.map(action => (action.type === \"text\"\n ? m(\n \"input.action\",\n {\n value: action.value || \"\",\n type: \"text\",\n placeholder: action.hint || \"\",\n oncreate: ({dom}) => dom.focus(),\n onkeyup: (ev) => {\n if (ev.keyCode === 27) {\n closeResolve({domItem, item, action});\n }\n },\n onchange: (ev) => {\n ev.target.blur();\n closeResolve({\n domItem,\n item,\n action,\n value: ev.target.value\n });\n }\n }\n )\n : m(\n Button,\n {\n ...action,\n onclick: () => closeResolve({\n domItem,\n item,\n action\n })\n },\n action.caption\n )))\n ]\n )\n }),\n true\n );\n });\n}\n\n/**\n * Creates an HTML UL/LI structure with the object properties\n * @param {Object} object An object to render\n * @param {RenderOptions?} options\n * @param {Object[]} children additional vnodes\n * @param {string} recurse parent key\n * @param isArrayChild\n * @return {m} The rendered view\n * @public\n * @static\n */\n\nfunction RenderObject(object, options, children, recurse, isArrayChild = false) {\n\n // noinspection JSValidateTypes\n options = options || {};\n const {arrayClass = \"isarray\", arrayChildClass = \"ischildren\", objectClass = \"isobject\"} = options;\n\n return m(\n \"ul\",\n {\n ...(options.attrs || {}),\n class: options.class\n },\n object\n ? [\n ...(options.keys || Object.keys(object))\n .map((key) => {\n\n const\n value = object[key] || null,\n isObject = value !== null && (typeof value === \"object\"),\n isArray = isObject && value.length,\n fullkey = (recurse ? recurse + \"_\" : \"\") + key;\n\n return m(\n \"li.field_\" + (options.start || \"\") + fullkey,\n {\n class: (isArray ? arrayClass : isObject ? (objectClass + \" \") : \"\") + (isArrayChild ? arrayChildClass : \"\"),\n \"data-title\": options.titles ? options.titles[key] || key : key,\n ...(options.itemAttrs || {})\n },\n // eslint-disable-next-line\n isObject\n ? [\n m(\".subvalues\",\n RenderObject(\n value,\n {\n ...options,\n keys: null\n },\n null,\n (recurse ? recurse + \"_\" : \"\") + key,\n isArray\n ))]\n : (\n (options.renderer && options.renderer[fullkey])\n ? options.renderer[fullkey](value)\n : m(\"span.value\", object[key])\n )\n );\n }),\n ...children || []\n ]\n : [\n m(\".empty\", {})\n ]\n );\n\n}\n\n\nconst\n JSONWidget = {\n view:\n ({attrs, children}) => {\n let object;\n try {\n object = attrs.pointer\n ? Tokenizer.getPointedData(attrs.object, attrs.pointer)\n : attrs.object;\n } catch (e) {\n return m(Empty, {message: e.message, ...attrs});\n }\n\n return object\n ? RenderObject(object, attrs, children)\n : m(Empty, attrs);\n }\n };\n\n// noinspection JSUnusedGlobalSymbols\nexport {\n Alert,\n Confirm,\n ConfirmPromise,\n RenderObject,\n OverflowMenu,\n JSONWidget,\n packClass\n}\n","const\n ENABLE_SCLONE = true, // atm SLOWER than JSON\n softClone = (o) => JSON.parse(JSON.stringify(o)),\n clone = window.structuredClone && ENABLE_SCLONE\n ? window.structuredClone\n : softClone;\n\nexport default clone;\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\nimport * as widget from \"../util/widgets\";\nimport {Icon, Notification, ButtonNew} from \"./Basic\"\nimport {OverflowMenu} from \"../util/widgets.core\";\nimport SwitchWidget from \"../widgets/SwitchWidget\";\nimport InputWidget from \"../widgets/InputWidget\";\nimport Notice from \"../widgets/NoticeWidget\";\nimport clone from \"../util/util.clone\"\n\nfunction choose(items, config = {\n icon: \"circle\", onSelect: () => {\n }\n}) {\n\n const\n {icon, title, field, onSelect, parser = (v) => v} = config,\n options = items.map((item, index) => ({\n icon: field && item.icon || icon,\n // WARNING !!!!!\n caption: parser(field ? item[field] : item, item),\n // caption: idField ? item[idField] : item,\n onClick: (e) => onSelect(item, e, index)\n }));\n\n if (Array.isArray(items) && !items.length) {\n Notification.add(\"No items available\");\n } else {\n OverflowMenu(\n document.body,\n {title},\n options\n )\n .then(({action}) => action.onClick());\n }\n}\n\nfunction promptOptions(items, onchange, options = {}) {\n\n const\n {title, field, icon, textNew, textHint, resolve} = options,\n dialogOptions = Array.isArray(items)\n ? items.map((item) => ({\n icon,\n // WARNING !!!!!\n caption: field ? item[field] : item,\n // caption: idField ? item[idField] : item,\n onClick: (e) => onchange(item, e)\n }))\n : Object.keys(items)\n .map((key) => ({\n icon: items[key].icon || icon,\n caption: items[key].caption || key,\n onClick: (e) => onchange(\n resolve && items[key].value !== undefined\n ? items[key].value\n : items[key],\n e)\n }));\n\n if (Array.isArray(items) && !items.length) {\n Notification.add(\"No items available\");\n } else {\n OverflowMenu(\n document.body,\n {title},\n [\n ...textNew && !field\n ? [\n {\n icon: \"plus\",\n caption: textNew,\n onClick: () => promptName(\n textNew,\n \"\",\n textHint,\n (value) => {\n if (value) {\n if (value && value.trim()) {\n onchange(value);\n m.redraw();\n }\n }\n }\n )\n }\n ]\n : [],\n ...dialogOptions\n ]\n )\n .then(({action}) => action.onClick())\n .finally(() => {\n });\n }\n}\n\nfunction promptName(title, value, hint, action, state = {}) {\n setTimeout(() => OverflowMenu(\n document.body,\n {title},\n [\n {\n type: \"text\",\n hint,\n value\n }\n ]\n )\n .then(({value: val}) => {\n state.refreshKey = String(Date.now());\n return action(val);\n }), 100);\n}\n\nconst\n WHAT_DO_UPDATE_LIGHTS = 0, // 0\n WHAT_DO_UPDATE_FACE = 1, // 1\n WHAT_DO_UPDATE_PARTICLES = 2, // 4\n WHAT_DO_UPDATE_SEGMENTATION = 3,\n WHAT_DO_UPDATE_VAL_VPLANE = 4,\n WHAT_DO_UPDATE_VAL_PANO = 5,\n WHAT_DO_UPDATE_VAL_FREE = 6,\n WHAT_DO_UPDATE_VAL_DRONE = 7,\n WHAT_DO_UPDATE_VAL_TRANSITION = 8,\n WHAT_DO_UPDATE_TVFX = 9,\n WHAT_DO_UPDATE_VAL_FOLLOW = 10,\n\n PROPERTIES = [\n [\"Lights and Fog\", null, [\"amblight\", \"l0\", \"l1\", \"l2\", \"l3\", \"fog\"], WHAT_DO_UPDATE_LIGHTS],\n [\"Face and Accessories\", null, [\"facekit\"], WHAT_DO_UPDATE_FACE],\n [\"Particle settings\", null, [\"particles\"], WHAT_DO_UPDATE_PARTICLES],\n [\"Video Segmentation\", \"common\", [\"segcam\", \"mask\", \"green\"], WHAT_DO_UPDATE_SEGMENTATION, true],\n [\"Video Effects\", null, [\"fxconfig\"], WHAT_DO_UPDATE_TVFX],\n [\"Video Plane\", \"val\", [\"xvideo\", \"yvideo\", \"zvideo\", \"rvideo\", \"svideo\", \"video\"], WHAT_DO_UPDATE_VAL_VPLANE],\n [\"Main Camera\", \"val\", [\"ypos\", \"xpos\", \"zoom\", \"yaw\", \"pitch\", \"roll\", \"ai\"], WHAT_DO_UPDATE_VAL_PANO],\n [\"Drone Camera\", \"val\", [\"free\"], WHAT_DO_UPDATE_VAL_FREE],\n [\"Followed Agent\", \"val\", [\"track\"], WHAT_DO_UPDATE_VAL_FOLLOW],\n [\"Game Camera\", \"val\", [\"orbit\", \"track\", \"ocam\"], WHAT_DO_UPDATE_VAL_DRONE, undefined, true],\n [\"Transition Speed\", \"val\", [\"spd\"], WHAT_DO_UPDATE_VAL_TRANSITION]\n ],\n\n TitleBarWidget = defineWidget(\n ({attrs}) => m(\"h2.marg-2.no-marg-bottom\", attrs.title)\n ),\n EntityTemplates = defineWidget(\n ({attrs}) => {\n\n const\n {type = \"changes\", meta, onInput, title, options} = attrs,\n valid = meta.title?.trim().length && meta.description?.trim().length,\n embedded = options && options.embedded;\n\n return m(\".flexcol.grows.ohidden.fadein\", [\n ...attrs.title ? [\n m(TitleBarWidget, {\n title\n })] : [],\n m(\".flexrow.wrap.grows.pad-3.propsgroup.scrolly\", [\n ...attrs.notice ? [\n m(Notice, {\n class: \"marg-1 marg-v withbottommargin font-75 col-12\",\n size: 1,\n icon: \"info-circle\",\n text: attrs.notice\n })\n ] : [],\n m(\n \".witharia.col-12.pad-1.pad-v\",\n {\"aria-label\": type + \" name\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh \" + (valid ? \"valid\" : \"invalid\"),\n value: meta.title,\n maxlength: 64,\n onchange: (newvalue) => {\n meta.title = newvalue;\n m.redraw();\n }\n })\n ),\n ...embedded ? []\n : [\n m(\n \".col-12.witharia.pad-1.pad-v\",\n {\"aria-label\": \"description\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh \" + (meta.description ? \"valid\" : \"invalid\"),\n value: meta.description,\n maxlength: 240,\n multi: true,\n alwaysmulti: true,\n onchange: (newvalue) => {\n meta.description = newvalue;\n m.redraw();\n }\n })\n ),\n m(\n \".col-8.witharia.pad-1.pad-v\",\n {\"aria-label\": \"tags\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n value: meta.tags,\n maxlength: 128,\n onchange: (newvalue) => {\n meta.tags = newvalue.toLowerCase()\n .split(\" \")\n .join(\",\")\n .split(\",\")\n .filter((tag) => tag.length)\n .join(\",\");\n }\n })\n ),\n m(\n \".col-4.witharia.pad-1.pad-v\",\n {\"aria-label\": \"youtube video\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n value: meta.ytref || \"\",\n hint: \"YouTube ID\",\n maxlength: 16,\n onchange: (newvalue) => {\n newvalue = newvalue.trim();\n if (newvalue) {\n if (newvalue.indexOf(\" \") === -1) {\n meta.ytref = newvalue.trim();\n }\n } else {\n delete meta.ytref;\n }\n }\n })\n )\n ],\n m(\n \".col-4.witharia.pad-1.pad-v\",\n {\"aria-label\": \"content attribution\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n value: meta.author,\n hint: \"author name\",\n maxlength: 128,\n onchange: (newvalue) => {\n meta.author = newvalue;\n }\n })\n ),\n\n m(\n \".col-4.witharia.pad-1.pad-v\",\n {\"aria-label\": \"license or author link\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n hint: \"https://...\",\n value: meta.link,\n maxlength: 128,\n onchange: (newvalue) => {\n meta.link = newvalue;\n }\n })\n ),\n m(\n \".col-4.witharia.pad-1.pad-v\",\n {\"aria-label\": \"source domain\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n value: meta.source,\n hint: \"example.com\",\n maxlength: 128,\n onchange: (newvalue) => {\n meta.source = newvalue;\n }\n })\n ),\n\n m(\n \".col-12.al-right.marg-2.marg-v\",\n m(ButtonNew, {\n class: \"noshrink accentbutton unitheightsmall col-4\",\n text: \"save \" + type,\n onClick: () => {\n\n const isValid = meta.title?.trim().length && (embedded || meta.description?.trim().length);\n\n if (isValid) {\n widget.popupMessage(null);\n onInput(meta);\n } else {\n Notification.add(\"Information is incomplete or invalid\");\n }\n }\n })\n )\n ])\n ]);\n }\n ),\n promptEntity = (meta, title, type, options = {}) => new Promise((resolve, reject) => {\n widget.popupMessage(\n m(EntityTemplates, {\n meta,\n type,\n title,\n options,\n onInput: (newMeta) => resolve(newMeta)\n }),\n () => {\n reject(new Error(\"cancelled\"));\n }\n );\n }),\n PresetTemplate = defineWidget(\n ({attrs}) => {\n\n const\n\n {parameters, preset, presetComponents, types, globalData, fetcher} = attrs,\n available = [],\n sourceAvailable = [],\n items = types\n ? PROPERTIES\n : PROPERTIES.filter((cosa) => {\n\n const\n [, primaryTarget, elements, index, globalSource] = cosa,\n target = primaryTarget ? preset[primaryTarget] : preset,\n rootSource = globalSource ? globalData : parameters,\n source = primaryTarget ? rootSource[primaryTarget] : rootSource;\n\n let found = false;\n\n if (elements.length) {\n\n for (const element of elements) {\n if (target && target[element] !== undefined) {\n found = available[index] = true;\n }\n if (source[element] !== undefined) {\n found = sourceAvailable[index] = true;\n }\n }\n return found;\n } else {\n found = true;\n sourceAvailable[index] = !!source;\n available[index] = !!target;\n }\n return found;\n\n });\n\n return m(\n \"ul.flexrow.wrap.userdialog\",\n items.length\n ? items.map((cosa) => {\n\n const\n [title, primaryTarget, elements, cosaIndex, globalSource, fetchLive] = cosa,\n target = types ? undefined : primaryTarget ? preset[primaryTarget] : preset,\n rootSource = globalSource ? globalData : parameters,\n source = types ? undefined : primaryTarget ? rootSource[primaryTarget] : rootSource,\n deleteCurrent = () => {\n if (elements.length) {\n for (const field of elements) {\n delete target[field];\n }\n } else if (elements.length === 0 && primaryTarget) {\n delete preset[primaryTarget];\n }\n attrs.redraw && attrs.redraw();\n },\n updateCurrent = () => {\n if (elements.length) {\n if (primaryTarget && !preset[primaryTarget]) preset[primaryTarget] = {};\n const updatedTarget = primaryTarget ? preset[primaryTarget] : preset;\n for (const field of elements) {\n if (source[field] !== undefined) {\n const finalSource = fetchLive && fetcher ? fetcher(updatedTarget[field], cosaIndex) : source[field];\n updatedTarget[field] = clone(finalSource);\n }\n }\n } else if (elements.length === 0 && primaryTarget) {\n if (source !== undefined) {\n const finalSource = fetchLive && fetcher ? fetcher(source, cosaIndex) : source;\n preset[primaryTarget] = clone(finalSource);\n }\n }\n attrs.redraw && attrs.redraw();\n Notification.add(`updated ${title} from current scene`);\n },\n isAvailable = types || available[cosaIndex],\n isSourceAvailable = sourceAvailable[cosaIndex];\n\n return [\n ...presetComponents ? [\n m(SwitchWidget, {\n title: `Include ${cosa[0]} in snapshots`,\n class: \"grows unitheightsmall\" + (presetComponents[cosaIndex] ? \" accent\" : \"\"),\n checked: !!presetComponents[cosaIndex],\n onchange: (status) => {\n presetComponents[cosaIndex] = !presetComponents[cosaIndex];\n m.redraw();\n attrs.redraw && attrs.redraw();\n }\n }),\n m(\".grows\", {class: isAvailable ? \"avail\" : \"unavail\"}, title)\n ] : [],\n ...!attrs.types ? [\n m(ButtonNew, {\n class: \"col-3\" + (isSourceAvailable ? \"avail\" : \"unavail\"),\n icon: \"sync\", title: `Copy ${title} from current state`,\n onClick: updateCurrent\n }),\n m(ButtonNew, {\n class: \"col-3 \" + (isAvailable ? \"\" : \"disabled text-lo\"),\n icon: \"trash\", title: `Delete ${title} in preset`,\n onClick: () => isAvailable && deleteCurrent()\n })\n ] : [],\n m(\".flexbreak\")\n ];\n\n })\n : m(\"h3\", \"Preset is Empty\")\n );\n }\n ),\n promptPreset = (preset, parameters, options = {}) => new Promise((resolve, reject) => {\n widget.popupMessage(\n () => m(PresetTemplate, {\n ...options,\n preset,\n parameters,\n redraw: () => widget.popupMessage.redraw()\n }),\n () => {\n reject(new Error(\"cancelled\"));\n }\n );\n });\n\nexport {\n promptName,\n promptEntity,\n promptPreset,\n promptOptions,\n choose\n};\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\n\n\nconst\n\n\tSeparator = defineWidget(\n\t\t({ attrs, children }) => m(\n\t\t\t\".separator\",\n\t\t\t{\n\t\t\t\tclass: attrs.class || \"mini\",\n\t\t\t\t...attrs.onClick && { onclick: attrs.onClick }\n\t\t\t},\n\t\t\t[\n\t\t\t\tm(\"span.grows\", attrs.text),\n\t\t\t\t...(children || [])\n\t\t\t]\n\t\t)\n\t);\n\nexport default Separator;\n","import m from \"mithril\";\n\n\n///////////////////////////////////////////////\n// Mithril Range\n// (c) 2017-2018 by Mike Linkovich\n// https://github.com/spacejack/mithril-range\n// License: MIT\n///////////////////////////////////////////////\nconst\n\n NONE = 0,\n MOUSE = 1,\n TOUCH = 2,\n\n // So we aren't triggered by echoed mouse events (some mobile browsers)\n DEVICE_DELAY = 350,\n\n isIOS = !!navigator.userAgent.match(/iPhone|iPad|iPod/i);\n\n// This is some unbelievable stone-age nonsense.\n// Workaround for webkit bug where event.preventDefault\n// within touchmove handler fails to prevent scrolling.\n\nlet\n iOSHackApplied = false;\n\n/** Clamp number to range */\nfunction clamp(n, min, max) {\n return Math.min(Math.max(n, min), max);\n}\n\nfunction applyIOSHack() {\n // Only apply this hack if iOS, haven't yet applied it,\n // and only if a component is actually created\n if (!isIOS || iOSHackApplied) {\n return;\n }\n window.addEventListener(\"touchmove\", function () {\n });\n iOSHackApplied = true;\n}\n\nexport function quantize(val, min, max, step) {\n if (max - min <= 0) {\n return min;\n }\n if (step <= 0) {\n return clamp(val, min, max);\n }\n const\n steps = Math.ceil((max - min) / step),\n v = min + Math.round(steps * (val - min) / (max - min)) * step;\n return clamp(v, min, max);\n}\n\n\n/** Range Component */\nfunction MithrilRange() {\n let\n elHit,\n elBar,\n elBar0,\n elBar1,\n elHandle,\n rcBar,\n device = NONE,\n pressed = false,\n\n useAbsolute = false,\n factorCoarse = 4,\n factorFine = 1,\n absolute,\n lastRead,\n\n // Attrs we need to cache\n min = 0,\n max = 10,\n value = 0,\n startValue = 0,\n step = 1,\n orientation = \"horizontal\",\n onchange,\n ondrag;\n\n // App handlers\n function onPressAbsolute(x, y) {\n startValue = value;\n pressed = absolute = true;\n rcBar = elBar.getBoundingClientRect();\n const val = moveHandleAbsolute(x, y);\n if (val !== value) {\n value = val;\n if (ondrag && ondrag(value) !== false) {\n m.redraw();\n }\n }\n }\n\n function onPressDelta(x, y, e, isTouch) {\n startValue = value;\n pressed = true;\n absolute = false;\n rcBar = elBar.getBoundingClientRect();\n lastRead = (orientation === \"vertical\") ? y : x;\n if (!isTouch) e.target.requestPointerLock();\n }\n\n function moveHandleAbsolute(x, y) {\n\n let\n barLength,\n delta;\n\n if (orientation === \"vertical\") {\n\n barLength = rcBar.bottom - rcBar.top;\n delta = rcBar.bottom - y;\n\n } else {\n barLength = rcBar.right - rcBar.left;\n delta = x - rcBar.left;\n }\n\n delta = clamp(delta, 0, barLength);\n const val = quantize((delta / barLength) * (max - min) + min, min, max, step);\n setStyles(val);\n return val;\n }\n\n function moveHandleDelta(x, y, event) {\n\n const\n factor = event.shiftKey\n ? factorCoarse\n : (event.metaKey || event.ctrlKey)\n ? 4 * factorCoarse\n : factorFine;\n\n let\n delta;\n\n if (orientation === \"vertical\") {\n delta = event.movementY || 0;\n } else {\n delta = event.movementX || 0;\n }\n\n let newVal;\n let s = step > 0 ? step : (max - min) / 100;\n\n if (delta < 0) {\n newVal = Math.max(value + s * factor * delta, min);\n } else if (delta > 0) { // right/up\n newVal = Math.min(value + s * factor * delta, max);\n } else {\n return value;\n }\n\n newVal = quantize(newVal, min, max, step);\n\n setStyles(newVal);\n return newVal;\n\n }\n\n function onPress(x, y, event) {\n return useAbsolute\n ? onPressAbsolute(x, y, event)\n : onPressDelta(x, y, event);\n }\n\n function moveHandle(x, y, event) {\n return absolute\n ? moveHandleAbsolute(x, y, event)\n : moveHandleDelta(x, y, event);\n }\n\n // Event handlers\n function onMouseDown(e) {\n if (device === TOUCH) {\n return;\n }\n device = MOUSE;\n if (e.button !== 0) {\n return;\n }\n window.addEventListener(\"mousemove\", onMouseMove);\n window.addEventListener(\"mouseup\", onMouseUp);\n onPress(e.clientX, e.clientY, e);\n }\n\n function onMouseMove(e) {\n e.preventDefault();\n onMove(e.clientX, e.clientY, e);\n }\n\n function onMouseUp(e) {\n window.removeEventListener(\"mousemove\", onMouseMove);\n window.removeEventListener(\"mouseup\", onMouseUp);\n onRelease(e.clientX, e.clientY, e);\n }\n\n function onTouchStart(e) {\n if (device === MOUSE) {\n return;\n }\n elHit.addEventListener(\"touchmove\", onTouchMove);\n elHit.addEventListener(\"touchend\", onTouchEnd);\n const t = e.changedTouches[0];\n onPress(t.clientX, t.clientY, e, true);\n }\n\n function onTouchMove(e) {\n e.preventDefault();\n const t = e.changedTouches[0];\n onMove(t.clientX, t.clientY, e);\n }\n\n function onTouchEnd(e) {\n elHit.removeEventListener(\"touchmove\", onTouchMove);\n elHit.removeEventListener(\"touchend\", onTouchEnd);\n const t = e.changedTouches[0];\n onRelease(t.clientX, t.clientY, t);\n }\n\n function onKeyDown(e) {\n\n const k = e.keyCode;\n let newVal;\n\n if (k === 33) { // pgup\n e.preventDefault();\n let s = Math.max((max - min) / 10, step);\n if (s <= 0) {\n s = 1;\n }\n newVal = quantize(value + s, min, max, step);\n } else if (k === 34) { // pgdown\n e.preventDefault();\n let s = Math.max((max - min) / 10, step);\n if (s <= 0) {\n s = 1;\n }\n newVal = quantize(value - s, min, max, step);\n } else if (k === 35) { // end\n e.preventDefault();\n newVal = max;\n } else if (k === 36) { // home\n e.preventDefault();\n newVal = min;\n } else if (k === 37 || k === 40) { // left/down\n e.preventDefault();\n let s = (step > 0 ? step : (max - min) / 10) * (e.shiftKey ? 0.25 : (e.ctrlKey || e.metaKey) ? 4 : 1);\n newVal = Math.max(value - s, min);\n } else if (k === 38 || k === 39) { // right/up\n e.preventDefault();\n let s = (step > 0 ? step : (max - min) / 10) * (e.shiftKey ? 0.25 : (e.ctrlKey || e.metaKey) ? 4 : 1);\n newVal = Math.min(value + s, max);\n } else if (k === 48) { // 0\n newVal = (max + min) / 2;\n }\n if (typeof newVal !== \"number\" || newVal === value) {\n return; // no change to make\n }\n value = newVal;\n setStyles(value);\n if (onchange && onchange(value) !== false) {\n m.redraw();\n }\n }\n\n function onMove(x, y, event) {\n if (!pressed) {\n return;\n }\n\n const val = moveHandle(x, y, event);\n if (val !== value) {\n value = val;\n if (ondrag && ondrag(value) !== false) {\n m.redraw();\n }\n }\n }\n\n function onRelease(x, y, e) {\n\n if (!pressed) {\n return;\n }\n\n pressed = false;\n value = moveHandle(x, y, e);\n\n if (onchange && onchange(value) !== false) {\n m.redraw();\n }\n\n /*\n if (value !== startValue) {\n if (onchange && onchange(value) !== false) {\n m.redraw();\n }\n }\n */\n\n if (!absolute) document.exitPointerLock();\n\n setTimeout(function () {\n if (!pressed) {\n device = NONE;\n }\n }, DEVICE_DELAY);\n }\n\n /** Compute handle position style */\n function positionStyle(val) {\n let s = (val - min) / (max - min);\n if (orientation === \"vertical\") {\n s = 1.0 - s;\n }\n return String(100 * s) + \"%\";\n }\n\n /** Set styles for movable parts */\n function setStyles(value) {\n const\n ps = positionStyle(value),\n rps = positionStyle(max - value + min);\n\n if (orientation === \"vertical\") {\n elHandle.style.top = ps;\n elBar0.style.height = ps;\n elBar1.style.height = rps;\n } else {\n elHandle.style.left = ps;\n elBar0.style.width = rps;\n elBar1.style.width = ps;\n }\n }\n\n /** Some attrs need to be cached (and updated) so that they are current in event handlers */\n function updateAttrs(attrs) {\n min = attrs.min;\n max = attrs.max;\n step = (typeof attrs.step === \"number\" && !Number.isNaN(attrs.step))\n ? clamp(attrs.step, 0, max - min) : 1;\n orientation = attrs.orientation === \"vertical\" ? \"vertical\" : \"horizontal\";\n onchange = attrs.onchange;\n ondrag = attrs.ondrag;\n if (typeof attrs.value === \"number\") {\n value = clamp(attrs.value, min, max);\n }\n useAbsolute = !attrs.relative;\n factorCoarse = (attrs.factor && attrs.factor[0]) || 4;\n factorFine = (attrs.factor && attrs.factor[1]) || 1;\n\n }\n\n /** Return mithril component hooks object */\n return {\n oncreate: ({attrs, dom}) => {\n applyIOSHack();\n updateAttrs(attrs);\n elHit = dom;\n elBar = elHit.querySelector(\".mithril-range-bar\");\n elBar0 = elBar.querySelector(\".mithril-range-bar-0\");\n elBar1 = elBar.querySelector(\".mithril-range-bar-1\");\n elHandle = elBar.querySelector(\".mithril-range-handle\");\n elHit.addEventListener(\"mousedown\", onMouseDown);\n elHit.addEventListener(\"touchstart\", onTouchStart);\n elHit.addEventListener(\"keydown\", onKeyDown);\n },\n onremove: function () {\n window.removeEventListener(\"mousemove\", onMouseMove);\n window.removeEventListener(\"mouseup\", onMouseUp);\n elHit.removeEventListener(\"mousedown\", onMouseDown);\n elHit.removeEventListener(\"touchstart\", onTouchStart);\n elHit.removeEventListener(\"touchmove\", onTouchMove);\n elHit.removeEventListener(\"touchend\", onTouchEnd);\n elHit.removeEventListener(\"keydown\", onKeyDown);\n },\n view: function ({attrs, children}) {\n\n updateAttrs(attrs);\n value = quantize(value, min, max, step);\n const a = {\n class: \"mithril-range nokey\" + (attrs.relative ? \" isrelative \" : \" \") + (value === 0 ? \"atzero\" : value < 0 ? \"belowzero\" : \"overzero\") + (attrs.class != null ? \" \" + attrs.class : \"\"),\n tabIndex: \"0\",\n role: \"slider\",\n \"aria-valuemin\": String(min),\n \"aria-valuemax\": String(max),\n \"aria-valuenow\": String(value),\n \"aria-orientation\": orientation\n };\n if (attrs.id) {\n a.id = attrs.id;\n }\n // noinspection JSUnresolvedVariable\n if (attrs.ariaLabelledby) {\n a[\"aria-labelledby\"] = attrs.ariaLabelledby;\n }\n if (attrs.disabled) {\n a.style = {pointerEvents: \"none\"};\n a[\"aria-disabled\"] = \"true\";\n }\n const\n ps = positionStyle(value),\n rps = positionStyle(max - value + min);\n let\n handleStyle,\n bar0Style,\n bar1Style;\n\n if (orientation === \"vertical\") {\n handleStyle = {top: ps};\n bar0Style = {height: ps};\n bar1Style = {height: rps};\n } else {\n handleStyle = {left: ps};\n bar0Style = {width: rps};\n bar1Style = {width: ps};\n }\n return m(\"div\", a, m(\"div\", {class: \"mithril-range-bar nokey\"}, m(\"div\", {\n class: \"mithril-range-bar-0 nokey\",\n style: bar0Style\n }), m(\"div\", {\n class: \"mithril-range-bar-1 nokey\",\n style: bar1Style\n }), m(\"div\", {\n class: \"mithril-range-handle nokey\",\n style: handleStyle\n }, children)), !!attrs.name && m(\"input\", {\n type: \"hidden\",\n name: attrs.name,\n value: String(value)\n }));\n }\n };\n}\n\nexport default MithrilRange;\n","import m from \"mithril\";\nimport MithrilRange from \"../util/mithril-range\";\n\nlet\n __timer;\n\nconst\n resetMultiplier = (state) => {\n /*\n if (state.curMultiplier > 1 && state.value < state.curMax * (state.curMultiplier - 1)) {\n state.curMultiplier = Math.ceil(state.value / state.curMax);\n m.redraw();\n }\n */\n\n const\n // req multiplier to show value within negative bounds\n maxMultiplier = state.value > state.curMax ? Math.ceil(state.value / state.curMax) : 1,\n // req multiplier to show value within positive bounds\n minMultiplier = (state.curMin < 0 && state.value < state.curMin) ? Math.abs(Math.ceil(state.value / state.curMin)) : 1,\n // chosen\n multiplier = Math.min(Math.max(minMultiplier, maxMultiplier), state.maxMultiplier);\n\n if (state.curMultiplier !== multiplier) {\n state.curMultiplier = multiplier;\n m.redraw();\n }\n },\n increaseMultiplier = (state) => {\n if (\n state.value >= (state.curMax * state.curMultiplier) * 0.9\n && state.maxMultiplier > 1\n && state.curMultiplier <= state.maxMultiplier - 1\n ) {\n state.curMultiplier++;\n return true;\n }\n if (state.curMin < 0) return increaseMinMultiplier(state);\n },\n increaseMinMultiplier = (state) => {\n if (state.value <= (state.curMin * state.curMultiplier) * 0.9\n && state.maxMultiplier > 1\n && state.curMultiplier <= state.maxMultiplier - 1\n ) {\n state.curMultiplier++;\n return true;\n }\n },\n RangeSlider = {\n\n oninit: ({attrs, state}) => {\n Object.assign(state, {\n value: attrs.value || 0,\n initial: attrs.value || 0,\n curMax: attrs.max,\n curMin: attrs.min,\n curMultiplier: 1,\n maxMultiplier: attrs.multiplier || 1,\n id: \"I\" + Date.now()\n });\n // adjust initial multiplier\n if (state.maxMultiplier > 1) {\n if (state.value > attrs.max) {\n state.curMultiplier = Math.ceil(state.value / attrs.max);\n } else if (attrs.min < 0 && state.value < attrs.min) {\n state.curMultiplier = Math.abs(Math.ceil(state.value / attrs.min));\n }\n }\n },\n onupdate: ({attrs, state}) => {\n const\n attrsMultiplier = attrs.multiplier || 1,\n attrsValue = attrs.value || 0;\n\n if (state.curMax !== attrs.max || state.maxMultiplier !== attrsMultiplier) {\n\n Object.assign(state, {\n curMax: attrs.max,\n curMin: attrs.min,\n maxMultiplier: attrsMultiplier,\n value: attrs.value,\n initial: attrsValue\n });\n if (!increaseMultiplier(state)) {\n clearTimeout(state.timer);\n state.timer = setTimeout(resetMultiplier, 1000, state);\n }\n\n m.redraw();\n\n } else if (state.initial !== attrsValue) {\n\n Object.assign(state, {\n value: attrsValue,\n initial: attrsValue\n });\n\n clearTimeout(__timer);\n __timer = setTimeout(() => m.redraw(), 50);\n\n /*\n if (!increaseMultiplier(state)) {\n state.timer = setTimeout(resetMultiplier, 1000, state);\n clearTimeout(state.timer);\n }\n */\n }\n },\n view: ({attrs, state}) => m(\n \".range.flexcol.control.relative\" + (attrs.multiplier > 1 ? \".withmultiplier\" : \"\"),\n {\n ...attrs.class && {class: attrs.class},\n title: attrs.hint || \"Click, then use arrows to finetune value if needed\"\n },\n [\n ...attrs.title ? [m(\"label\", {class: \"rangelabel\", htmlFor: state.id}, attrs.title)] : [],\n m(MithrilRange, {\n onchange: (value) => {\n\n state.value = value;\n\n const increased = increaseMultiplier(state);\n\n if (!increased && state.curMultiplier > 1) {\n clearTimeout(state.timer);\n state.timer = setTimeout(resetMultiplier, 1000, state);\n }\n\n if (attrs.onchange) {\n attrs.onchange(value);\n } else {\n m.redraw();\n }\n },\n ondrag: (value) => {\n if (value !== state.value) {\n state.value = value;\n if (attrs.ondrag) attrs.ondrag(value);\n return true;\n }\n return false;\n },\n value: state.value || 0,\n min: (attrs.min || 0) * state.curMultiplier,\n max: (state.curMax * state.curMultiplier) || 100,\n step: attrs.step || 1,\n relative: attrs.relative,\n factor: attrs.factor\n }, [\n m(\".currentval\", attrs.parser\n ? attrs.parser(state.value, attrs.step < 1)\n : state.value\n ? attrs.step < 1\n ? state.value.toFixed(2)\n : (\"\" + Math.floor(state.value)) : \"\")\n ])\n /*\n m(\".datalist.flexrow\", [\n m(\"div\", attrs.getLabel(0)),\n m(\".ismax\", attrs.getLabel(attrs.max || 100))\n ])\n */\n ]\n )\n },\n RangeWidget = {\n view: ({attrs, state}) => m(RangeSlider, {\n value: attrs.value || 0,\n min: attrs.min || 0,\n max: attrs.max || 100,\n step: attrs.step || 0.1,\n class: (attrs.disabled ? \"disabled \" : \"\") + (attrs.class || \"\"),\n title: attrs.title,\n multiplier: attrs.multiplier,\n hint: attrs.hint,\n parser: attrs.parser,\n relative: attrs.relative,\n factor: attrs.factor,\n\n // values: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n getLabel: (value) => (value ? \"\" + value : \"default\"),\n ondrag: (value) => {\n state.changed = true;\n state.value = value;\n if (attrs.onchange) attrs.onchange(value, true);\n return true;\n },\n onchange: (value) => {\n if (attrs.auto0) {\n value = 0;\n } else if (attrs.autoValue) value = attrs.autoValue;\n state.changed = true;\n state.value = value;\n if (attrs.onchange) attrs.onchange(value, false);\n return true;\n }\n })\n };\n\nexport default RangeWidget;\n","function startApp(target, appMetadata) {\n m.route(\n document.getElementById(target),\n appMetadata.default || \"/\",\n appMetadata.routes\n );\n}\n\nexport default startApp;"],"names":["Vnode","tag","key","attrs","children","text","dom","domSize","undefined","state","events","instance","normalize","node","Array","isArray","normalizeChildren","String","input","length","isKeyed","i","TypeError","vnode","require$$0","hyperscriptVnode","arguments","this","start","push","hasOwn","hasOwnProperty","require$$1","require$$2","selectorParser","selectorCache","Object","create","compileSelector","selector","match","classes","exec","type","value","id","attrValue","replace","className","join","object","call","isEmpty","hyperscript_1","view","Error","apply","hasClass","class","assign","execSelector","hyperscript","trust","html","fragment","delayedRemoval","WeakMap","domFor_1","domFor","generation","nextSibling","get","render","currentRedraw","currentRender","nameSpace","svg","math","getDocument","ownerDocument","getNameSpace","xmlns","checkState","original","callHook","activeElement","e","createNodes","parent","vnodes","end","hooks","ns","createNode","initLifecycle","createTextNode","insertDOM","createText","createHTML","createDocumentFragment","firstChild","childNodes","createFragment","is","element","createElementNS","createElement","setAttr","setAttrs","maybeSetContentEditable","selectedIndex","normalized","setLateSelectAttrs","sentinel","$$reentrantLock$$","prototype","initComponent","createComponent","possibleParents","caption","thead","tbody","tfoot","tr","th","td","colgroup","col","temp","innerHTML","child","appendChild","updateNodes","old","removeNodes","isOldKeyed","oldStart","o","v","oe","ve","topSibling","oldEnd","updateNode","getNextSibling","moveDOM","map","lisIndices","originalNextSibling","vnodesLength","oldIndices","li","pos","matched","getKeyMap","oldIndex","a","result","u","il","lisTemp","j","c","makeLisIndices","commonLength","removeNode","oldTag","force","onbeforeupdate","shouldNotUpdate","updateLifecycle","toString","nodeValue","updateText","removeDOM","updateHTML","updateFragment","console","warn","val","removeAttr","updateAttrs","updateElement","updateComponent","currentDOM","target","insertBefore","contenteditable","contentEditable","content","stateResult","attrsResult","mask","onbeforeremove","then","set","finally","onremove","removeChild","isLifecycleMethod","attr","parentNode","isFormAttribute","updateEvent","slice","setAttributeNS","updateStyle","hasPropertyKey","isFileInput","error","setAttribute","removeAttribute","nsLastIndex","indexOf","style","cssText","includes","setProperty","removeProperty","EventDict","_","removeEventListener","addEventListener","source","oninit","oncreate","bind","onupdate","handleEvent","ev","handler","currentTarget","redraw","preventDefault","stopPropagation","contains","prevRedraw","prevDOM","active","namespace","namespaceURI","textContent","focus","window","mountRedraw","schedule","subscriptions","pending","offset","sync","mount","root","component","index","splice","requestAnimationFrame","build","args","destructure","encodeURIComponent","buildQueryString","template","params","test","SyntaxError","queryIndex","hashIndex","queryEnd","pathEnd","path","query","resolved","m","variadic","newQueryIndex","newHashIndex","newQueryEnd","newPathEnd","querystring","buildPathname","request","$window","oncompletion","PromiseProxy","executor","Promise","hasHeader","name","headers","toLowerCase","__proto__","url","promise","resolve","reject","replacedAbort","method","toUpperCase","body","assumeJSON","serialize","JSON","FormData","URLSearchParams","responseType","extract","xhr","XMLHttpRequest","aborted","isTimeout","abort","open","async","user","password","setRequestHeader","deserialize","withCredentials","timeout","onreadystatechange","readyState","message","success","status","response","parse","responseText","completeErrorResponse","code","setTimeout","ontimeout","config","send","stringify","makeRequest","background","count","complete","wrap","constructor","next","decodeURIComponentSave","str","decodeURIComponent","err","string","charAt","entries","split","counters","data","entry","levels","cursor","pop","level","nextLevel","isNumber","isNaN","parseInt","desc","getOwnPropertyDescriptor","parseQueryString","parsePathname","compileTemplate","templateData","templateKeys","keys","regexp","RegExp","extra","k","r","values","magic","censor","extras","require$$3","Fragment","route","require$$4","require$$5","router","compiled","fallbackRoute","currentPath","lastUpdate","callAsync","setImmediate","p","scheduled","ready","currentResolver","RouterRoot","fireAsync","resolveRoute","SKIP","prefix","location","hash","search","pathname","concat","setPath","history","loop","check","payload","matchedRoute","localComp","update","comp","onmatch","options","title","replaceState","pushState","href","defaultRoute","routes","defaultData","some","ReferenceError","Link","onclick","disabled","Boolean","defaultPrevented","button","which","ctrlKey","metaKey","shiftKey","altKey","param","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","getAttrs","parentAttrs","panelInitialParams","initialParams","isCurrent","currentIndex","Icon","pack","icon","size","icontitle","role","iconClass","Button","download","link","busy","event","clearTimeout","debounce","catch","right","textClass","ButtonNew","rel","onClick","Empty","idx","all","setItem","lastIndex","lastParams","currentParams","current","items","onSelected","Selector","selected","noinitial","horizontal","hideonly","hidesel","toolbarClass","item","Date","now","clickts","bodyHidden","toggle","bodyClass","widget","closeButton","ICONS","info","Notification","TOAST_SHORT","altContainer","mTimer","mNotifications","container","document","getElementById","n","timer","add","clear","defineWidget","globalState","CardieWidget","nofold","cardid","action","collapsedAction","collapsedClass","expandedClass","cols","expandedView","collapsedView","titleWidget","titWidget","titleAttrs","titleClass","titleExpanded","titleCollapsed","collapsed","buttonClass","skipEmpty","classList","onShiftOpen","expanded","uniq","subname","forEach","startsWith","setCardStatus","alwaysView","getInput","float","Number","parseFloat","getValue","lastVal","StaticFieldWidget","onDrag","staticClass","staticTitle","readonly","hammer","Hammer","Manager","touchAction","panner","Pan","direction","DIRECTION_VERTICAL","singleTap","Tap","on","srcEvent","destroy","InputWidget","reset","showInput","label","containerClass","staticField","multi","alwaysmulti","max","min","step","maxlength","validator","isValid","placeholder","hint","oninput","fromoninput","onchange","enterPressed","onblur","onkeyup","onkeypress","onenter","dragging","draginc","displayTitle","actions","NoticeWidget","SwitchWidget","unit","subline","checked","mCurrentCancelable","runCancelable","display","popupMessage","cancelable","contentClass","clearModal","OverflowMenu","domItem","closeResolve","widget.popupMessage","initials","clases","finals","cla","packClassString","favlist","nodeName","getAttribute","keyCode","blur","clone","structuredClone","promptName","refreshKey","PROPERTIES","TitleBarWidget","EntityTemplates","meta","onInput","valid","trim","description","embedded","notice","Notice","newvalue","tags","filter","ytref","author","PresetTemplate","parameters","preset","presetComponents","types","globalData","fetcher","available","sourceAvailable","cosa","primaryTarget","elements","globalSource","rootSource","found","cosaIndex","fetchLive","isAvailable","isSourceAvailable","updatedTarget","field","finalSource","deleteCurrent","onSelect","parser","newMeta","textNew","textHint","dialogOptions","Separator","isIOS","navigator","userAgent","__timer","iOSHackApplied","clamp","Math","quantize","steps","ceil","round","MithrilRange","elHit","elBar","elBar0","elBar1","elHandle","rcBar","absolute","ondrag","device","pressed","useAbsolute","factorCoarse","factorFine","orientation","moveHandleAbsolute","x","y","barLength","delta","bottom","top","left","setStyles","onPress","getBoundingClientRect","onPressAbsolute","isTouch","requestPointerLock","moveHandle","factor","newVal","movementY","movementX","s","moveHandleDelta","onMouseDown","onMouseMove","onMouseUp","clientX","clientY","onMove","onRelease","onTouchStart","onTouchMove","onTouchEnd","t","changedTouches","onKeyDown","exitPointerLock","positionStyle","ps","rps","height","width","relative","querySelector","tabIndex","ariaLabelledby","pointerEvents","handleStyle","bar0Style","bar1Style","resetMultiplier","maxMultiplier","curMax","minMultiplier","curMin","abs","multiplier","curMultiplier","increaseMultiplier","increaseMinMultiplier","RangeSlider","initial","attrsMultiplier","attrsValue","htmlFor","toFixed","floor","RangeWidget","getLabel","changed","auto0","autoValue","startApp","appMetadata","default"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]}
|
|
1
|
+
{"version":3,"file":"libui.esm.js","sources":["../src/widgets/Basic.js","../src/util/widgets.utils.js","../src/widgets/CardieWidget.js","../src/widgets/InputWidget.js","../src/widgets/NoticeWidget.js","../src/widgets/SwitchWidget.js","../src/util/widgets.js","../src/util/widgets.core.js","../src/util/util.clone.js","../src/widgets/OverflowUtils.js","../src/widgets/Separator.js","../src/util/mithril-range.js","../src/widgets/RangeWidget.js","../src/app/app.js"],"sourcesContent":["import m from \"mithril\";\n\n// ------------------------------------------------------------------------\n\nfunction getAttrs(attrs, parentAttrs, panelInitialParams) {\n const data = ((typeof attrs === \"function\") ? attrs(parentAttrs) : attrs) || {};\n if (panelInitialParams) data.initialParams = panelInitialParams;\n return data;\n}\n\nconst\n\n isCurrent = ({currentIndex}, index) => currentIndex === index,\n\n Icon = {\n view: ({attrs}) => m(\n `i.icon.${attrs.pack || \"fas\"}.fa-${attrs.icon || \"cog\"}${attrs.size ? \".fa-\" + attrs.size + \"x\" : \"\"}`,\n {\n title: attrs.icontitle || undefined,\n role: \"presentation\",\n onclick: attrs.onclick || null, ...attrs.iconClass && {class: attrs.iconClass}\n }\n )\n },\n\n Button = {\n view: ({attrs, state, children}) => m((attrs.download || attrs.link) ? \"a.button\" : \"button\", {\n ...attrs.link && {href: attrs.link},\n ...attrs.download && {download: attrs.download},\n ...attrs.target && {target: attrs.target},\n \"aria-label\": attrs[\"aria-label\"] || attrs.title || attrs.text,\n title: attrs.title || attrs[\"aria-label\"],\n class: (attrs.class || \"\") + (state.busy ? \" busy\" : \"\"),\n ...state.error && {\"data-error\": state.error.message},\n ...attrs.onclick && {\n onclick: (event) => {\n clearTimeout(state.debounce);\n state.debounce = setTimeout(() => {\n const result = attrs.onclick(event, attrs);\n if (result && result.then && result.catch) {\n state.busy = true;\n m.redraw();\n result\n .then(() => {\n state.busy = false;\n m.redraw();\n })\n .catch((error) => {\n state.busy = false;\n state.error = error;\n m.redraw();\n });\n }\n }, 25);\n }\n }\n }, [\n ...(attrs.icon && !attrs.right) ? [m(Icon, attrs)] : [],\n ...attrs.text ? [m(\"span.pad-1.pad-h\", {class: attrs.textClass || null}, attrs.text)] : [],\n ...(attrs.icon && attrs.right) ? [m(Icon, attrs)] : [],\n ...children\n ])\n },\n\n ButtonNew = {\n view: ({attrs, state, children}) => m((attrs.download || attrs.link) ? \"a.button\" : \"button\", {\n ...attrs.link && {href: attrs.link},\n ...attrs.download && {rel: \"nofollow\", download: attrs.download},\n ...attrs.target && {target: attrs.target},\n \"aria-label\": attrs[\"aria-label\"] || attrs.title || attrs.text,\n title: attrs.title || attrs[\"aria-label\"],\n class: (attrs.class || \"\") + (state.busy ? \" busy\" : \"\"),\n ...state.error && {\"data-error\": state.error.message},\n ...attrs.onClick && {\n onclick: (event) => {\n clearTimeout(state.debounce);\n state.debounce = setTimeout(() => {\n const result = attrs.onClick(event, attrs);\n if (result && result.then && result.catch) {\n state.busy = true;\n m.redraw();\n result\n .then(() => {\n state.busy = false;\n m.redraw();\n })\n .catch((error) => {\n state.busy = false;\n state.error = error;\n m.redraw();\n });\n }\n }, 25);\n }\n }\n }, [\n ...(attrs.icon && !attrs.right) ? [m(Icon, attrs)] : [],\n ...attrs.text ? [m(\"span.pad-1.pad-h\", {class: attrs.textClass || null}, attrs.text)] : [],\n ...(attrs.icon && attrs.right) ? [m(Icon, attrs)] : [],\n ...children\n ])\n },\n\n Empty = {\n\n view: ({attrs, children}) => m(\n \".flexcol.flexcenter.al-center.grows.emptywidget\",\n {\n ...attrs.class && {class: attrs.class},\n ...attrs.key && {key: attrs.key},\n role: \"presentation\"\n },\n [\n m(Icon, attrs),\n ...attrs.message\n ? [\n m(\".marg-2.marg-v\",\n {\n role: \"status\",\n class: attrs.size > 4 ? \"font-150\" : \"font-100\",\n \"aria-label\": attrs.message\n },\n attrs.message.split(\"\\n\")\n .map((str, idx, all) => all.length === 1 ? str : m(\"p.msg\" + idx, str))\n )\n ]\n : [],\n ...children\n ? [m(\".flexcol.additional\", children)]\n : []\n ]\n )\n },\n\n setItem = (attrs, state, index, params) => {\n\n\n const\n lastIndex = state.currentIndex,\n lastParams = state.currentParams;\n\n if (index === -1) {\n Object.assign(state, {\n current: null,\n currentIndex: -1,\n currentParams: []\n });\n } else {\n Object.assign(state, {\n current: attrs.items[index] || null,\n currentIndex: state.current ? index : -1,\n currentParams: params || []\n });\n }\n\n if (attrs.onSelected) attrs.onSelected(state.current, state.currentParams, state.currentIndex !== lastIndex, lastParams);\n\n m.redraw();\n },\n\n Selector = {\n\n oninit: ({attrs, state}) => {\n\n state = attrs.state || state;\n state.setItem = (index, ...params) => setItem(attrs, attrs.state || state, index, params);\n\n const\n hasState = !isNaN(state.currentIndex),\n selected = hasState ? state.currentIndex : attrs.selected,\n currentIndex = (attrs.items && attrs.items.length)\n ? (selected !== undefined && attrs.items[selected])\n ? selected\n : attrs.noinitial ? -1 : 0\n : -1,\n current = currentIndex !== -1 ? attrs.items[currentIndex] : null;\n\n Object.assign(state, {currentIndex, current});\n\n },\n\n onupdate: ({attrs, state}) => {\n (attrs.state || state).setItem = (index, ...params) => setItem(attrs, attrs.state || state, index, params);\n },\n\n view: ({attrs, state}) => {\n\n state = attrs.state || state;\n const {current} = state;\n\n return m(\n (attrs.element || \"widget\") + \".selector\" + (attrs.horizontal ? \".flexrow\" : \".flexcol\") + (attrs.className ? \".\" + attrs.className : \"\"),\n {\n ...attrs.key && {key: attrs.key},\n class: (state.current ? \"hascurrent\" : \"empty\") + (attrs.class ? \" \" + attrs.class : \"\")\n },\n [\n ...((!attrs.hideonly || (attrs.items.length > 1)) && (!attrs.hidesel))\n ? [\n /** navigation bar */\n m(\n \"nav.toolbar.fullwidth\" + (attrs.horizontal ? \".flexcol\" : \".flexrow\"),\n {\n \"aria-label\": attrs[\"aria-label\"] || attrs.title || \"selector\",\n class: attrs.toolbarClass\n },\n attrs.items.map((item, index) => m(Button, {\n class: (item.class ? item.class + \" \" : \"\") + (isCurrent(state, index) ? \"accent\" : \"nel\"),\n icon: item.icon || null,\n ...item.title && {title: item.title},\n ...item[\"aria-label\"] && {\"aria-label\": item[\"aria-label\"]},\n ...item.text && {text: item.text},\n onclick: () => {\n const t = Date.now();\n if (t - state.clickts < 200) return;\n state.clickts = Date.now();\n state.bodyHidden = false;\n state.setItem(index);\n }\n }))\n )]\n : [],\n ...current\n ? [\n ...(attrs.toggle && !state.bodyHidden)\n ? [\n m(ButtonNew, {\n class: \"selectornotch \" + (state.bodyHidden ? \"bodyhidden\" : \"bodyshown\"),\n icon: state.bodyHidden ? \"caret-up\" : \"caret-down\",\n title: state.bodyHidden ? \"expand panel\" : \"contract panel\",\n onClick: () => {\n state.bodyHidden = !state.bodyHidden;\n m.redraw();\n }\n })\n ] : [],\n ...(!attrs.toggle || !state.bodyHidden)\n ? [\n /** body */\n m(\".grows.flexcol.ohidden\", {class: attrs.bodyClass, role: \"presentation\"}, [\n m(\n current.widget,\n getAttrs(current.attrs, attrs, state.currentParams),\n current.children\n )\n ])\n ]\n : [],\n ...attrs.closeButton\n ? [\n m(Button, {\n class: \"closebutton absolute toright\",\n icon: \"times\",\n onclick: () => {\n state.setItem(-1);\n },\n \"aria-label\": \"close item\"\n })] : []\n ]\n : m(Empty, attrs)\n ]\n );\n }\n };\n\nconst ICONS = {\n info: \"info\",\n error: \"exclamation-triangle\",\n success: \"check\"\n};\n\nfunction Notifications(TOAST_SHORT = 5000, altContainer) {\n\n let\n mNotifications = [],\n mTimer;\n\n function render(container, n) {\n m.render(\n container, m(\n Button, {\n class: \"notification \" + n.type,\n text: n.text,\n icon: ICONS[n.type] || \"info\",\n size: 1,\n role: \"status\",\n // eslint-disable-next-line no-use-before-define\n onclick: next\n }\n )\n );\n }\n\n function next() {\n\n const\n container = altContainer || document.getElementById(\"notification-container\");\n\n if (mNotifications.length) {\n const n = mNotifications.splice(0, 1)[0];\n render(container, n);\n clearTimeout(mTimer);\n mTimer = setTimeout(next, n.timer || TOAST_SHORT);\n } else {\n m.render(container, \"\");\n mTimer = null;\n }\n }\n\n return {\n add: (text, type) => {\n mNotifications.push({\n text,\n type\n });\n if (!mTimer) next();\n },\n clear: () => {\n mNotifications = [];\n next();\n }\n\n };\n}\n\nconst Notification = new Notifications();\n\nexport {\n Empty,\n Icon,\n Selector,\n Button,\n ButtonNew,\n Notification\n}\n","export default function defineWidget (view, oninit, oncreate, onremove, onupdate) {\n return {\n ...view && {view},\n ...oninit && {oninit},\n ...oncreate && {oncreate},\n ...onupdate && {onupdate},\n ...onremove && {onremove}\n }\n}\n\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\nimport {ButtonNew} from \"./Basic\";\n\nconst\n globalState = {},\n CARDIE_CLOSED = 0;\n\nfunction setCardStatus(cardid, expanded = CARDIE_CLOSED) {\n if (cardid) {\n const [uniq, subname] = cardid.split(\"-\");\n if (expanded && uniq && subname) {\n Object.keys(globalState)\n .forEach((key) => {\n if (key.startsWith(uniq + \"-\")) {\n globalState[key] = CARDIE_CLOSED;\n }\n });\n }\n globalState[cardid] = expanded;\n }\n}\n\nconst CardieWidget = defineWidget(\n ({attrs, state, children}) => {\n\n const\n\n {\n nofold,\n cardid,\n size,\n title,\n action,\n collapsedAction,\n collapsedClass,\n expandedClass,\n cols,\n element,\n busy,\n expandedView,\n collapsedView,\n titleWidget: titWidget,\n titleAttrs,\n titleClass,\n bodyClass,\n titleExpanded,\n titleCollapsed\n } = attrs,\n\n collapsed = nofold\n ? false\n : cardid\n ? !globalState[cardid]\n : !!state.collapsed,\n\n items = (!collapsed)\n ? (\n expandedView\n ? expandedView(attrs, state)\n : (children || [])\n )\n : collapsedView ? collapsedView(attrs, state) : [],\n\n titleWidget = titWidget\n ? m(titWidget, titleAttrs || {})\n : title ? m(\"span.ellipsis.ohidden.unfold\", title) : undefined,\n\n buttonClass = busy\n ? \"fa-sync\"\n : `fa-caret-down ${collapsed ? \"iscollapsed\" : \"isexpanded\"}`;\n\n return items.length || !attrs.skipEmpty\n ? m(\n (element || \"ul\"),\n {\n class: \"cardie ohidden noshrink \"\n + (cols ? \"flexcol \" : \"flexrow wrap \")\n + (attrs.class ? \" \" + attrs.class : \"\")\n + (nofold\n ? \" expanded\"\n : ` ${collapsed ? \"collapsed \" + (collapsedClass || \"\") : \"expanded \" + (expandedClass || \"\")}`)\n + (size ? \" marg-\" + size : \" marg-2\")\n + (titWidget ? \" withwidget\" : \"\")\n + (busy ? \" busycard\" : \"\")\n },\n [\n\n ...titleWidget\n ? [\n m(\n \".title.grows.fabf.flexrow.pointer.unfold\",\n nofold\n ? {\n class: titleClass || \"pad-2\"\n }\n : {\n class: `${titleClass || \"pad-2\"} ${buttonClass || \"\"}`,\n\n title: collapsed\n ? (titleCollapsed || \"Click to expand the options\")\n : (titleExpanded || titleCollapsed || \"Click to collapse the options\"),\n\n onclick: (e) => {\n\n if (e.target.classList.contains(\"unfold\")) {\n if (e.shiftKey && attrs.onShiftOpen) {\n attrs.onShiftOpen();\n } else if (attrs.cardid) {\n setCardStatus(cardid, collapsed); // !state\n } else {\n state.collapsed = !state.collapsed;\n }\n\n m.redraw();\n }\n }\n },\n action && (nofold || !collapsed)\n ? [\n m(ButtonNew, action),\n titleWidget\n ]\n : collapsedAction && collapsed\n ? [\n m(ButtonNew, collapsedAction),\n titleWidget\n ]\n : titleWidget\n )\n ]\n : [],\n\n ...items.length\n ? [\n m(\".flexbreak\"),\n m(\n \".cardiebody.fadein-filter.grows\",\n {\n class: (cols ? \"flexcol \" : \"flexrow wrap\") + \" \" + (bodyClass || \"\")\n },\n ...items\n )\n ] : [],\n\n ...(attrs.alwaysView\n ? [attrs.alwaysView({attrs, state})]\n : [])\n\n ]\n ) : [];\n },\n ({attrs, state}) => {\n if (!attrs.cardid) {\n state.collapsed = attrs.nofold\n ? false\n : attrs.cardid\n ? !globalState[attrs.cardid]\n : !!attrs.collapsed;\n }\n },\n undefined,\n undefined,\n undefined,\n {setCardStatus}\n);\n\nexport default CardieWidget;","import m from \"mithril\";\nimport {ButtonNew} from \"./Basic\";\n\n/* eslint-disable no-prototype-builtins,no-nested-ternary */\n/* global m, Hammer */\n\nconst\n\n getInput = (attrs, value, parse = false) => {\n if (parse || attrs.type === \"number\") {\n const val = attrs.float ? Number.parseFloat(value) : Number.parseInt(value, 10);\n return Number.isNaN(val) ? undefined : val;\n }\n return value;\n },\n getValue = (attrs, state, parse) => {\n const lastVal = state.hasOwnProperty(\"value\") ? state.value : attrs.value;\n return getInput(attrs, lastVal, parse);\n },\n /*\n hammer = new Hammer.Manager(dom, { touchAction: \"pan-y\" }),\n panner = new Hammer.Pan({ direction: Hammer.DIRECTION_VERTICAL }),\n singleTap = listenTap && new Hammer.Tap();\n\n hammer.add(listenTap ? [panner, singleTap] : [panner]);\n hammer.on(\"panstart\", (e) => {\n\n */\n\n StaticFieldWidget = {\n view: (vnode) => {\n const {attrs, state} = vnode;\n // este vnode NO es el mismo que el del hammer, pero su estado SI !\n state.attrs = attrs; // guardamos una copia de los ultimos attrs en el estado\n\n return m(\n \".input-static.w-100.ellipsis\",\n {\n class: (attrs.onDrag ? \"withdrag \" : \"\") + (attrs.staticClass || \"grows\"),\n ...attrs.staticTitle && {title: attrs.staticTitle},\n ...attrs.onDrag || {onclick: attrs.onClick},\n oncreate: ({dom, state}) => {\n\n if (attrs.onDrag && !attrs.readonly) {\n\n const\n hammer = state.hammer = new Hammer.Manager(dom, {touchAction: \"pan-y\"}),\n panner = new Hammer.Pan({direction: Hammer.DIRECTION_VERTICAL}),\n singleTap = new Hammer.Tap();\n\n hammer.add([panner, singleTap]);\n hammer.on(\"tap\", () => vnode.state.attrs.onClick());\n hammer.on(\"panup\", (e) => vnode.state.attrs.onDrag(-1, e.srcEvent));\n hammer.on(\"pandown\", (e) => vnode.state.attrs.onDrag(1, e.srcEvent));\n hammer.on(\"panend pancancel\", (e) => vnode.state.attrs.onDrag(0, e.srcEvent));\n }\n if (attrs.focus) {\n dom.focus();\n }\n },\n onremove: ({state}) => {\n state.hammer && state.hammer.destroy();\n }\n },\n attrs.value\n );\n }\n },\n InputWidget = {\n view: ({attrs, state}) => {\n const reset = (redraw) => {\n // if (state.value !== undefined && state.showInput) delete state.showInput;\n if (state.value && state.showInput) delete state.showInput;\n delete state.value;\n if (redraw) m.redraw();\n };\n return m(\n \".textfield.flexcol.relative\",\n {\n class: (attrs.label ? \"witharia\" : \"\") + (attrs.containerClass ? \" \" + attrs.containerClass : \"\"),\n ...attrs.label && {\"aria-label\": attrs.label}\n },\n [\n (attrs.staticField && (attrs.readonly || !state.showInput))\n ? m(StaticFieldWidget, {\n readonly: attrs.readonly,\n staticClass: (state.dragging ? \"accent \" : \"\") + (attrs.staticClass || \"\"),\n staticTitle: attrs.staticTitle || attrs.draginc && \"Click then drag up and down to modify value, or just click to enter a custom value\",\n value: attrs.displayTitle || getValue(attrs, state),\n focus: attrs.focus,\n ...attrs.draginc && !attrs.readonly && {\n onDrag: (direction, event) => {\n if (direction) {\n state.dragging = true;\n let value = getValue(attrs, state, true);\n if (Number.isNaN(value) || value === undefined) return;\n value += direction * attrs.draginc;\n if (attrs.max !== undefined && value > attrs.max) value = attrs.max;\n if (attrs.min !== undefined && value < attrs.min) value = attrs.min;\n state.value = attrs.type === \"number\" ? value : String(value);\n attrs.onchange(state.value, event);\n } else {\n delete state.dragging;\n delete state.value;\n m.redraw();\n }\n }\n },\n ...attrs.readonly || {\n onClick: () => {\n state.showInput = true;\n state.value = attrs.value;\n m.redraw();\n }\n }\n })\n\n : ((state.multi || attrs.alwaysmulti) && (!attrs.type || attrs.type === \"text\"))\n ? m(\"textarea.w-100\", {\n class: attrs.class,\n value: getValue(attrs, state),\n ...attrs.title && {title: attrs.title},\n placeholder: attrs.hint || \"\",\n oninput: (event) => {\n state.value = getInput(attrs, event.target.value);\n if (attrs.validator) state.isValid = attrs.validator(state.value);\n if (attrs.onchange) {\n (attrs.oninput || attrs.onchange)(state.value, event, true);\n }\n },\n onchange: (event) => {\n if (attrs.onchange) {\n if (attrs.validator) state.isValid = attrs.validator(state.value);\n const value = getInput(attrs, event.target.value);\n reset(false);\n attrs.onchange(value, event, true);\n }\n },\n onblur: () => {\n if (state.showInput) {\n reset(true);\n }\n },\n onkeyup: (event) => {\n if (event.key === \"Escape\" && state.showInput) {\n reset(false);\n }\n }\n })\n : m(\"input.w-100\", {\n ...attrs.id && {id: attrs.id},\n type: attrs.type || \"text\",\n ...attrs.max !== undefined && {max: attrs.max},\n ...attrs.min !== undefined && {min: attrs.min},\n ...attrs.step > 0 && {step: attrs.step},\n ...attrs.maxlength && {maxlength: attrs.maxlength},\n class: (attrs.class || \"\") + (attrs.validator ? state.isValid ? \" bg-ok\" : \" bg-error\" : \"\"),\n ...attrs.title && {title: attrs.title},\n value: getValue(attrs, state),\n placeholder: attrs.hint || \"\",\n oninput: (event) => {\n state.value = getInput(attrs, event.target.value);\n event.fromoninput = true;\n if (attrs.validator) state.isValid = attrs.validator(state.value);\n if (attrs.onchange) {\n (attrs.oninput || attrs.onchange)(state.value, event);\n }\n },\n onchange: (event) => {\n if (attrs.onchange) {\n if (attrs.validator) state.isValid = attrs.validator(state.value);\n event.enterPressed = state.enterPressed;\n delete state.enterPressed;\n attrs.onchange(getInput(attrs, event.target.value), event);\n if (attrs.staticField) {\n reset(true);\n } else {\n delete state.value;\n }\n }\n },\n onblur: () => {\n if (state.showInput) {\n reset(true);\n }\n },\n onkeyup: (event) => {\n if (state.showInput) {\n if (event.key === \"Escape\") {\n reset(true);\n } else if (event.key === \"Enter\") {\n if (state.value === attrs.value || !state.value) {\n attrs.onchange(attrs.value, event);\n reset(true);\n }\n }\n }\n },\n onkeypress: (event) => {\n if (!state.showInput && event.key === \"Enter\") {\n attrs.onenter && attrs.onenter(event.target.value, event);\n }\n }\n }),\n\n m(\".span.actions.absolute.right.bottom\", [\n ...(attrs.multi && !attrs.alwaysmulti && (!attrs.type || attrs.type === \"text\"))\n ? [\n m(ButtonNew, {\n icon: state.multi ? \"angle-double-up\" : \"angle-double-down\",\n class: \"pad-2 transp\",\n onClick: () => {\n state.multi = !state.multi;\n m.redraw();\n }\n })\n ]\n : [],\n ...attrs.actions ? attrs.actions.map((action) => m(ButtonNew, {\n ...action,\n class: \"transp pad-2\"\n })) : [],\n ...attrs.action\n ? [\n m(ButtonNew, {...attrs.action, class: \"transp pad-2\"})\n ] : []\n ])\n ]);\n },\n oninit: ({attrs, state}) => {\n if (attrs.staticField && attrs.draginc) {\n const value = getValue(attrs, state, true);\n state.showInput = (Number.isNaN(value) || value === undefined || value === null);\n }\n }\n };\n\nexport default InputWidget;\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\nimport {Icon} from \"./Basic\";\n\nconst\n NoticeWidget = defineWidget(\n ({attrs, children}) => (\n children.length\n ? m(\n \".notice.cardie.flexcol.pad-3\",\n {class: attrs.class || \"marg-2 font-75\"},\n m(\n \".flexrow\",\n [\n ...attrs.icon ? [m(Icon, attrs)] : [],\n m(\".pad-2.pad-h\", attrs.text)\n ]\n ),\n ...children\n )\n : m(\n \".notice.cardie.flexrow.pad-3\",\n {class: attrs.class || \"marg-2 font-75\", onclick: attrs.onClick},\n [\n ...attrs.icon ? [m(Icon, attrs)] : [],\n m(\".pad-2.pad-h\", attrs.text)\n ]\n )\n )\n );\n\nexport default NoticeWidget;\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\nimport {Icon} from \"./Basic\";\n\nconst\n SwitchWidget = defineWidget(\n ({attrs, state}) => m((attrs.unit || \"\") + \".flexrow\" + (attrs.subline ? \" withsubline\" : \"\"),\n {\n class: attrs.class,\n text: attrs.text,\n title: attrs.title || null,\n onclick: () => {\n state.checked = !state.checked;\n if (attrs.onchange) {\n attrs.onchange(state.checked);\n }\n m.redraw();\n }\n },\n attrs.right\n ? [\n ...attrs.text ? [m(\"span.grows.caption\", attrs.subline ? {\"data-subline\": attrs.subline} : {}, attrs.text)] : [],\n m(Icon, {iconClass: \"pad-2 pad-h\", icon: state.checked ? \"toggle-on\" : \"toggle-off\"})\n ]\n : [\n m(Icon, {iconClass: \"pad-2 pad-h\", icon: state.checked ? \"toggle-on\" : \"toggle-off\"}),\n ...attrs.text ? [m(\"span.grows.caption\", attrs.subline ? {\"data-subline\": attrs.subline} : {}, attrs.text)] : []\n ]),\n ({attrs, state}) => {\n state.checked = state.original = attrs.checked;\n },\n null,\n null,\n ({attrs, state}) => {\n if (attrs.checked !== state.original) {\n state.checked = state.original = attrs.checked;\n m.redraw();\n }\n }\n );\n\nexport default SwitchWidget;","import m from \"mithril\";\n\nlet\n\tmCurrentCancelable;\n\nfunction runCancelable(container) {\n\tif (typeof mCurrentCancelable === \"function\") {\n\t\tmCurrentCancelable();\n\t\tmCurrentCancelable = undefined;\n\t}\n\tcontainer.style.display = \"none\";\n\tdelete popupMessage.redraw;\n}\n\n// There are ways of doing this inside m.route but it is probably\n// cleaner and faster when kept outside of the main auto\n// rendering system\n\nfunction popupMessage(message, cancelable = false, contentClass = \".modal-content\") {\n\n\tconst container = document.getElementById(\"modal-container\");\n\tcontainer.classList.toggle(\"iscustom\", contentClass !== \".modal-content\");\n\n\tif (cancelable) {\n\n\t\tmCurrentCancelable = cancelable;\n\n\t\tcontainer.onclick = (event) => {\n\t\t\tif (event.target.id === \"modal-container\") {\n\t\t\t\trunCancelable(container);\n\t\t\t}\n\t\t};\n\t}\n\n\tif (!message) {\n\t\tdelete popupMessage.redraw;\n\t\tif (message === null)\n\t\t\tcontainer.style.display = \"none\";\n\t\telse\n\t\t\trunCancelable(container);\n\n\t\treturn;\n\t}\n\n\tcontainer.style.display = \"flex\";\n\n\tpopupMessage.redraw = () => {\n\t\tm.render(\n\t\t\tcontainer,\n\t\t\tm(contentClass, {\n\t\t\t\trole: \"alertdialog\",\n\t\t\t\t\"aria-labelledby\": \"modaltitle\",\n\t\t\t\t\"aria-modal\": true\n\t\t\t}, [\n\t\t\t\ttypeof message === \"function\" ? message() : message\n\t\t\t])\n\t\t);\n\t};\n\n\tpopupMessage.redraw();\n}\n\nfunction clearModal() {\n\tconst container = document.getElementById(\"modal-container\");\n\tif (container.style.display !== \"none\") {\n\t\trunCancelable(container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport { popupMessage, clearModal };\n","/* eslint-disable no-nested-ternary */\n/**\n * Basic Mithril Widget functions\n * Provides some utilities and basic UI functions like an Alert or a Confirmation dialog\n *\n * @author Rodolfo Lopez Pintor, 2020 <rlp@nebular.tv>\n * @module apps.widgets.basic\n *\n */\nimport m from \"mithril\";\nimport * as widget from \"./widgets\";\nimport * as Tokenizer from \"./util.tokenizer\";\nimport {Button, Empty} from \"../widgets/Basic\";\n\n/**\n *\n * Computes a Class String\n *\n * @param {string} initials INitial CSS Classes\n * @param {Object<string, boolean>} clases New classes dictionary\n * @return {string} The CSS Class expression like .class1.class2.class3\n * @public\n * @static\n */\n\nconst packClassString = (initials, clases) => {\n const finals = [];\n if (clases) for (const cla of Object.keys(clases)) if (clases[cla]) finals.push(\".\" + cla);\n return (initials || \"\") + finals.join(\"\");\n};\n\n\nconst packClass = (initials, clases) => {\n const finals = initials ? [initials] : [];\n if (clases) for (const cla of Object.keys(clases)) if (clases[cla]) finals.push(cla);\n return finals.join(\" \");\n};\n\n/**\n * Shows a modal confirm dialog\n * @param {string} title The dialog title\n * @param {string} message The dialog message\n * @param {Array} buttons Buttons to display\n * @param {Object=} options noCancel: dialog is uncanellable\n * @public\n * @static\n */\n\nfunction Confirm(title, message,\n buttons = [\"CANCEL\", \"OK\"], options = {}\n) {\n widget.popupMessage(\n m(\n {\n view: () => [\n ...title ? [m(\"h3\", title)] : [],\n ...message ? [m(\"h4\", message)] : [],\n m(\".container\",\n buttons.map(\n option => m(\n \"button\",\n {\n onclick: () => {\n document.getElementById(\"modal-container\").style.display = \"none\";\n if (option.onclick) option.onclick(option.caption);\n }\n },\n option.caption || \"OK\"\n )\n ))\n ]\n },\n {}\n ),\n options.onCancel || !options.noCancel\n );\n}\n\nfunction ConfirmPromise(title, message, actions, isModal = false) {\n\n let onCancel = undefined;\n\n if (typeof isModal === \"function\") {\n onCancel = isModal;\n isModal = false;\n }\n\n return new Promise((resolve) => {\n\n const opts = actions.map((name, idx) => ({\n caption: name,\n onclick: () => resolve({\n idx,\n name\n })\n }));\n\n Confirm(title, message, opts, {\n onCancel,\n noCancel: isModal\n });\n });\n}\n\n/**\n * Shows An Alert Modal Dialog\n * @param {string} title Dialog Title\n * @param {string} message Dialog Message\n * @param {string?} caption Button caption\n * @param {function?} onclick On press handler\n * @public\n * @static\n */\n\nfunction Alert(title, message, caption, onclick) {\n return Confirm(title, message, [{caption, onclick}]);\n}\n\n\nfunction OverflowMenu(domItem, item, actions, options) {\n\n return new Promise((resolve) => {\n\n options = options || {};\n\n function closeResolve(value) {\n widget.popupMessage(null);\n try {\n resolve(value);\n } catch (e) {\n //\n }\n }\n\n const\n classes = packClassString(\".popup.flexcol\", {\n \".favlist\": options.favlist,\n \".isfav\": domItem && domItem.classList.contains(\"isfav\"),\n \".isplay\": domItem && domItem.classList.contains(\"selected\")\n });\n\n widget.popupMessage(\n m({\n view: () => m(\n classes,\n {\n onclick: (event) => {\n\n if (event.target.nodeName === \"INPUT\") {\n return;\n }\n\n const\n action = event.target.getAttribute(\"data-action\");\n\n if (action) {\n closeResolve({\n domItem,\n item,\n action\n });\n } else {\n widget.popupMessage(null);\n }\n }\n },\n [\n ...item.title ? [m(\"h3\", {id: \"modaltitle\"}, item.title)] : [],\n ...actions.map(action => (action.type === \"text\"\n ? m(\n \"input.action\",\n {\n value: action.value || \"\",\n type: \"text\",\n placeholder: action.hint || \"\",\n oncreate: ({dom}) => dom.focus(),\n onkeyup: (ev) => {\n if (ev.keyCode === 27) {\n closeResolve({domItem, item, action});\n }\n },\n onchange: (ev) => {\n ev.target.blur();\n closeResolve({\n domItem,\n item,\n action,\n value: ev.target.value\n });\n }\n }\n )\n : m(\n Button,\n {\n ...action,\n onclick: () => closeResolve({\n domItem,\n item,\n action\n })\n },\n action.caption\n )))\n ]\n )\n }),\n true\n );\n });\n}\n\n/**\n * Creates an HTML UL/LI structure with the object properties\n * @param {Object} object An object to render\n * @param {RenderOptions?} options\n * @param {Object[]} children additional vnodes\n * @param {string} recurse parent key\n * @param isArrayChild\n * @return {m} The rendered view\n * @public\n * @static\n */\n\nfunction RenderObject(object, options, children, recurse, isArrayChild = false) {\n\n // noinspection JSValidateTypes\n options = options || {};\n const {arrayClass = \"isarray\", arrayChildClass = \"ischildren\", objectClass = \"isobject\"} = options;\n\n return m(\n \"ul\",\n {\n ...(options.attrs || {}),\n class: options.class\n },\n object\n ? [\n ...(options.keys || Object.keys(object))\n .map((key) => {\n\n const\n value = object[key] || null,\n isObject = value !== null && (typeof value === \"object\"),\n isArray = isObject && value.length,\n fullkey = (recurse ? recurse + \"_\" : \"\") + key;\n\n return m(\n \"li.field_\" + (options.start || \"\") + fullkey,\n {\n class: (isArray ? arrayClass : isObject ? (objectClass + \" \") : \"\") + (isArrayChild ? arrayChildClass : \"\"),\n \"data-title\": options.titles ? options.titles[key] || key : key,\n ...(options.itemAttrs || {})\n },\n // eslint-disable-next-line\n isObject\n ? [\n m(\".subvalues\",\n RenderObject(\n value,\n {\n ...options,\n keys: null\n },\n null,\n (recurse ? recurse + \"_\" : \"\") + key,\n isArray\n ))]\n : (\n (options.renderer && options.renderer[fullkey])\n ? options.renderer[fullkey](value)\n : m(\"span.value\", object[key])\n )\n );\n }),\n ...children || []\n ]\n : [\n m(\".empty\", {})\n ]\n );\n\n}\n\n\nconst\n JSONWidget = {\n view:\n ({attrs, children}) => {\n let object;\n try {\n object = attrs.pointer\n ? Tokenizer.getPointedData(attrs.object, attrs.pointer)\n : attrs.object;\n } catch (e) {\n return m(Empty, {message: e.message, ...attrs});\n }\n\n return object\n ? RenderObject(object, attrs, children)\n : m(Empty, attrs);\n }\n };\n\n// noinspection JSUnusedGlobalSymbols\nexport {\n Alert,\n Confirm,\n ConfirmPromise,\n RenderObject,\n OverflowMenu,\n JSONWidget,\n packClass\n}\n","const\n ENABLE_SCLONE = true, // atm SLOWER than JSON\n softClone = (o) => JSON.parse(JSON.stringify(o)),\n clone = window.structuredClone && ENABLE_SCLONE\n ? window.structuredClone\n : softClone;\n\nexport default clone;\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\nimport * as widget from \"../util/widgets\";\nimport {Icon, Notification, ButtonNew} from \"./Basic\"\nimport {OverflowMenu} from \"../util/widgets.core\";\nimport SwitchWidget from \"../widgets/SwitchWidget\";\nimport InputWidget from \"../widgets/InputWidget\";\nimport Notice from \"../widgets/NoticeWidget\";\nimport clone from \"../util/util.clone\"\n\nfunction choose(items, config = {\n icon: \"circle\", onSelect: () => {\n }\n}) {\n\n const\n {icon, title, field, onSelect, parser = (v) => v} = config,\n options = items.map((item, index) => ({\n icon: field && item.icon || icon,\n // WARNING !!!!!\n caption: parser(field ? item[field] : item, item),\n // caption: idField ? item[idField] : item,\n onClick: (e) => onSelect(item, e, index)\n }));\n\n if (Array.isArray(items) && !items.length) {\n Notification.add(\"No items available\");\n } else {\n OverflowMenu(\n document.body,\n {title},\n options\n )\n .then(({action}) => action.onClick());\n }\n}\n\nfunction promptOptions(items, onchange, options = {}) {\n\n const\n {title, field, icon, textNew, textHint, resolve} = options,\n dialogOptions = Array.isArray(items)\n ? items.map((item) => ({\n icon,\n // WARNING !!!!!\n caption: field ? item[field] : item,\n // caption: idField ? item[idField] : item,\n onClick: (e) => onchange(item, e)\n }))\n : Object.keys(items)\n .map((key) => ({\n icon: items[key].icon || icon,\n caption: items[key].caption || key,\n onClick: (e) => onchange(\n resolve && items[key].value !== undefined\n ? items[key].value\n : items[key],\n e)\n }));\n\n if (Array.isArray(items) && !items.length) {\n Notification.add(\"No items available\");\n } else {\n OverflowMenu(\n document.body,\n {title},\n [\n ...textNew && !field\n ? [\n {\n icon: \"plus\",\n caption: textNew,\n onClick: () => promptName(\n textNew,\n \"\",\n textHint,\n (value) => {\n if (value) {\n if (value && value.trim()) {\n onchange(value);\n m.redraw();\n }\n }\n }\n )\n }\n ]\n : [],\n ...dialogOptions\n ]\n )\n .then(({action}) => action.onClick())\n .finally(() => {\n });\n }\n}\n\nfunction promptName(title, value, hint, action, state = {}) {\n setTimeout(() => OverflowMenu(\n document.body,\n {title},\n [\n {\n type: \"text\",\n hint,\n value\n }\n ]\n )\n .then(({value: val}) => {\n state.refreshKey = String(Date.now());\n return action(val);\n }), 100);\n}\n\nconst\n WHAT_DO_UPDATE_LIGHTS = 0, // 0\n WHAT_DO_UPDATE_FACE = 1, // 1\n WHAT_DO_UPDATE_PARTICLES = 2, // 4\n WHAT_DO_UPDATE_SEGMENTATION = 3,\n WHAT_DO_UPDATE_VAL_VPLANE = 4,\n WHAT_DO_UPDATE_VAL_PANO = 5,\n WHAT_DO_UPDATE_VAL_FREE = 6,\n WHAT_DO_UPDATE_VAL_DRONE = 7,\n WHAT_DO_UPDATE_VAL_TRANSITION = 8,\n WHAT_DO_UPDATE_TVFX = 9,\n WHAT_DO_UPDATE_VAL_FOLLOW = 10,\n\n PROPERTIES = [\n [\"Lights and Fog\", null, [\"amblight\", \"l0\", \"l1\", \"l2\", \"l3\", \"fog\"], WHAT_DO_UPDATE_LIGHTS],\n [\"Face and Accessories\", null, [\"facekit\"], WHAT_DO_UPDATE_FACE],\n [\"Particle settings\", null, [\"particles\"], WHAT_DO_UPDATE_PARTICLES],\n [\"Video Segmentation\", \"common\", [\"segcam\", \"mask\", \"green\"], WHAT_DO_UPDATE_SEGMENTATION, true],\n [\"Video Effects\", null, [\"fxconfig\"], WHAT_DO_UPDATE_TVFX],\n [\"Video Plane\", \"val\", [\"xvideo\", \"yvideo\", \"zvideo\", \"rvideo\", \"svideo\", \"video\"], WHAT_DO_UPDATE_VAL_VPLANE],\n [\"Main Camera\", \"val\", [\"ypos\", \"xpos\", \"zoom\", \"yaw\", \"pitch\", \"roll\", \"ai\"], WHAT_DO_UPDATE_VAL_PANO],\n [\"Drone Camera\", \"val\", [\"free\"], WHAT_DO_UPDATE_VAL_FREE],\n [\"Followed Agent\", \"val\", [\"track\"], WHAT_DO_UPDATE_VAL_FOLLOW],\n [\"Game Camera\", \"val\", [\"orbit\", \"track\", \"ocam\"], WHAT_DO_UPDATE_VAL_DRONE, undefined, true],\n [\"Transition Speed\", \"val\", [\"spd\"], WHAT_DO_UPDATE_VAL_TRANSITION]\n ],\n\n TitleBarWidget = defineWidget(\n ({attrs}) => m(\"h2.marg-2.no-marg-bottom\", attrs.title)\n ),\n EntityTemplates = defineWidget(\n ({attrs}) => {\n\n const\n {type = \"changes\", meta, onInput, title, options} = attrs,\n valid = meta.title?.trim().length && meta.description?.trim().length,\n embedded = options && options.embedded;\n\n return m(\".flexcol.grows.ohidden.fadein\", [\n ...attrs.title ? [\n m(TitleBarWidget, {\n title\n })] : [],\n m(\".flexrow.wrap.grows.pad-3.propsgroup.scrolly\", [\n ...attrs.notice ? [\n m(Notice, {\n class: \"marg-1 marg-v withbottommargin font-75 col-12\",\n size: 1,\n icon: \"info-circle\",\n text: attrs.notice\n })\n ] : [],\n m(\n \".witharia.col-12.pad-1.pad-v\",\n {\"aria-label\": type + \" name\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh \" + (valid ? \"valid\" : \"invalid\"),\n value: meta.title,\n maxlength: 64,\n onchange: (newvalue) => {\n meta.title = newvalue;\n m.redraw();\n }\n })\n ),\n ...embedded ? []\n : [\n m(\n \".col-12.witharia.pad-1.pad-v\",\n {\"aria-label\": \"description\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh \" + (meta.description ? \"valid\" : \"invalid\"),\n value: meta.description,\n maxlength: 240,\n multi: true,\n alwaysmulti: true,\n onchange: (newvalue) => {\n meta.description = newvalue;\n m.redraw();\n }\n })\n ),\n m(\n \".col-8.witharia.pad-1.pad-v\",\n {\"aria-label\": \"tags\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n value: meta.tags,\n maxlength: 128,\n onchange: (newvalue) => {\n meta.tags = newvalue.toLowerCase()\n .split(\" \")\n .join(\",\")\n .split(\",\")\n .filter((tag) => tag.length)\n .join(\",\");\n }\n })\n ),\n m(\n \".col-4.witharia.pad-1.pad-v\",\n {\"aria-label\": \"youtube video\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n value: meta.ytref || \"\",\n hint: \"YouTube ID\",\n maxlength: 16,\n onchange: (newvalue) => {\n newvalue = newvalue.trim();\n if (newvalue) {\n if (newvalue.indexOf(\" \") === -1) {\n meta.ytref = newvalue.trim();\n }\n } else {\n delete meta.ytref;\n }\n }\n })\n )\n ],\n m(\n \".col-4.witharia.pad-1.pad-v\",\n {\"aria-label\": \"content attribution\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n value: meta.author,\n hint: \"author name\",\n maxlength: 128,\n onchange: (newvalue) => {\n meta.author = newvalue;\n }\n })\n ),\n\n m(\n \".col-4.witharia.pad-1.pad-v\",\n {\"aria-label\": \"license or author link\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n hint: \"https://...\",\n value: meta.link,\n maxlength: 128,\n onchange: (newvalue) => {\n meta.link = newvalue;\n }\n })\n ),\n m(\n \".col-4.witharia.pad-1.pad-v\",\n {\"aria-label\": \"source domain\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n value: meta.source,\n hint: \"example.com\",\n maxlength: 128,\n onchange: (newvalue) => {\n meta.source = newvalue;\n }\n })\n ),\n\n m(\n \".col-12.al-right.marg-2.marg-v\",\n m(ButtonNew, {\n class: \"noshrink accentbutton unitheightsmall col-4\",\n text: \"save \" + type,\n onClick: () => {\n\n const isValid = meta.title?.trim().length && (embedded || meta.description?.trim().length);\n\n if (isValid) {\n widget.popupMessage(null);\n onInput(meta);\n } else {\n Notification.add(\"Information is incomplete or invalid\");\n }\n }\n })\n )\n ])\n ]);\n }\n ),\n promptEntity = (meta, title, type, options = {}) => new Promise((resolve, reject) => {\n widget.popupMessage(\n m(EntityTemplates, {\n meta,\n type,\n title,\n options,\n onInput: (newMeta) => resolve(newMeta)\n }),\n () => {\n reject(new Error(\"cancelled\"));\n }\n );\n }),\n PresetTemplate = defineWidget(\n ({attrs}) => {\n\n const\n\n {parameters, preset, presetComponents, types, globalData, fetcher} = attrs,\n available = [],\n sourceAvailable = [],\n items = types\n ? PROPERTIES\n : PROPERTIES.filter((cosa) => {\n\n const\n [, primaryTarget, elements, index, globalSource] = cosa,\n target = primaryTarget ? preset[primaryTarget] : preset,\n rootSource = globalSource ? globalData : parameters,\n source = primaryTarget ? rootSource[primaryTarget] : rootSource;\n\n let found = false;\n\n if (elements.length) {\n\n for (const element of elements) {\n if (target && target[element] !== undefined) {\n found = available[index] = true;\n }\n if (source[element] !== undefined) {\n found = sourceAvailable[index] = true;\n }\n }\n return found;\n } else {\n found = true;\n sourceAvailable[index] = !!source;\n available[index] = !!target;\n }\n return found;\n\n });\n\n return m(\n \"ul.flexrow.wrap.userdialog\",\n items.length\n ? items.map((cosa) => {\n\n const\n [title, primaryTarget, elements, cosaIndex, globalSource, fetchLive] = cosa,\n target = types ? undefined : primaryTarget ? preset[primaryTarget] : preset,\n rootSource = globalSource ? globalData : parameters,\n source = types ? undefined : primaryTarget ? rootSource[primaryTarget] : rootSource,\n deleteCurrent = () => {\n if (elements.length) {\n for (const field of elements) {\n delete target[field];\n }\n } else if (elements.length === 0 && primaryTarget) {\n delete preset[primaryTarget];\n }\n attrs.redraw && attrs.redraw();\n },\n updateCurrent = () => {\n if (elements.length) {\n if (primaryTarget && !preset[primaryTarget]) preset[primaryTarget] = {};\n const updatedTarget = primaryTarget ? preset[primaryTarget] : preset;\n for (const field of elements) {\n if (source[field] !== undefined) {\n const finalSource = fetchLive && fetcher ? fetcher(updatedTarget[field], cosaIndex) : source[field];\n updatedTarget[field] = clone(finalSource);\n }\n }\n } else if (elements.length === 0 && primaryTarget) {\n if (source !== undefined) {\n const finalSource = fetchLive && fetcher ? fetcher(source, cosaIndex) : source;\n preset[primaryTarget] = clone(finalSource);\n }\n }\n attrs.redraw && attrs.redraw();\n Notification.add(`updated ${title} from current scene`);\n },\n isAvailable = types || available[cosaIndex],\n isSourceAvailable = sourceAvailable[cosaIndex];\n\n return [\n ...presetComponents ? [\n m(SwitchWidget, {\n title: `Include ${cosa[0]} in snapshots`,\n class: \"grows unitheightsmall\" + (presetComponents[cosaIndex] ? \" accent\" : \"\"),\n checked: !!presetComponents[cosaIndex],\n onchange: (status) => {\n presetComponents[cosaIndex] = !presetComponents[cosaIndex];\n m.redraw();\n attrs.redraw && attrs.redraw();\n }\n }),\n m(\".grows\", {class: isAvailable ? \"avail\" : \"unavail\"}, title)\n ] : [],\n ...!attrs.types ? [\n m(ButtonNew, {\n class: \"col-3\" + (isSourceAvailable ? \"avail\" : \"unavail\"),\n icon: \"sync\", title: `Copy ${title} from current state`,\n onClick: updateCurrent\n }),\n m(ButtonNew, {\n class: \"col-3 \" + (isAvailable ? \"\" : \"disabled text-lo\"),\n icon: \"trash\", title: `Delete ${title} in preset`,\n onClick: () => isAvailable && deleteCurrent()\n })\n ] : [],\n m(\".flexbreak\")\n ];\n\n })\n : m(\"h3\", \"Preset is Empty\")\n );\n }\n ),\n promptPreset = (preset, parameters, options = {}) => new Promise((resolve, reject) => {\n widget.popupMessage(\n () => m(PresetTemplate, {\n ...options,\n preset,\n parameters,\n redraw: () => widget.popupMessage.redraw()\n }),\n () => {\n reject(new Error(\"cancelled\"));\n }\n );\n });\n\nexport {\n promptName,\n promptEntity,\n promptPreset,\n promptOptions,\n choose\n};\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\n\n\nconst\n\n\tSeparator = defineWidget(\n\t\t({ attrs, children }) => m(\n\t\t\t\".separator\",\n\t\t\t{\n\t\t\t\tclass: attrs.class || \"mini\",\n\t\t\t\t...attrs.onClick && { onclick: attrs.onClick }\n\t\t\t},\n\t\t\t[\n\t\t\t\tm(\"span.grows\", attrs.text),\n\t\t\t\t...(children || [])\n\t\t\t]\n\t\t)\n\t);\n\nexport default Separator;\n","import m from \"mithril\";\n\n\n///////////////////////////////////////////////\n// Mithril Range\n// (c) 2017-2018 by Mike Linkovich\n// https://github.com/spacejack/mithril-range\n// License: MIT\n///////////////////////////////////////////////\nconst\n\n NONE = 0,\n MOUSE = 1,\n TOUCH = 2,\n\n // So we aren't triggered by echoed mouse events (some mobile browsers)\n DEVICE_DELAY = 350,\n\n isIOS = !!navigator.userAgent.match(/iPhone|iPad|iPod/i);\n\n// This is some unbelievable stone-age nonsense.\n// Workaround for webkit bug where event.preventDefault\n// within touchmove handler fails to prevent scrolling.\n\nlet\n iOSHackApplied = false;\n\n/** Clamp number to range */\nfunction clamp(n, min, max) {\n return Math.min(Math.max(n, min), max);\n}\n\nfunction applyIOSHack() {\n // Only apply this hack if iOS, haven't yet applied it,\n // and only if a component is actually created\n if (!isIOS || iOSHackApplied) {\n return;\n }\n window.addEventListener(\"touchmove\", function () {\n });\n iOSHackApplied = true;\n}\n\nexport function quantize(val, min, max, step) {\n if (max - min <= 0) {\n return min;\n }\n if (step <= 0) {\n return clamp(val, min, max);\n }\n const\n steps = Math.ceil((max - min) / step),\n v = min + Math.round(steps * (val - min) / (max - min)) * step;\n return clamp(v, min, max);\n}\n\n\n/** Range Component */\nfunction MithrilRange() {\n let\n elHit,\n elBar,\n elBar0,\n elBar1,\n elHandle,\n rcBar,\n device = NONE,\n pressed = false,\n\n useAbsolute = false,\n factorCoarse = 4,\n factorFine = 1,\n absolute,\n lastRead,\n\n // Attrs we need to cache\n min = 0,\n max = 10,\n value = 0,\n startValue = 0,\n step = 1,\n orientation = \"horizontal\",\n onchange,\n ondrag;\n\n // App handlers\n function onPressAbsolute(x, y) {\n startValue = value;\n pressed = absolute = true;\n rcBar = elBar.getBoundingClientRect();\n const val = moveHandleAbsolute(x, y);\n if (val !== value) {\n value = val;\n if (ondrag && ondrag(value) !== false) {\n m.redraw();\n }\n }\n }\n\n function onPressDelta(x, y, e, isTouch) {\n startValue = value;\n pressed = true;\n absolute = false;\n rcBar = elBar.getBoundingClientRect();\n lastRead = (orientation === \"vertical\") ? y : x;\n if (!isTouch) e.target.requestPointerLock();\n }\n\n function moveHandleAbsolute(x, y) {\n\n let\n barLength,\n delta;\n\n if (orientation === \"vertical\") {\n\n barLength = rcBar.bottom - rcBar.top;\n delta = rcBar.bottom - y;\n\n } else {\n barLength = rcBar.right - rcBar.left;\n delta = x - rcBar.left;\n }\n\n delta = clamp(delta, 0, barLength);\n const val = quantize((delta / barLength) * (max - min) + min, min, max, step);\n setStyles(val);\n return val;\n }\n\n function moveHandleDelta(x, y, event) {\n\n const\n factor = event.shiftKey\n ? factorCoarse\n : (event.metaKey || event.ctrlKey)\n ? 4 * factorCoarse\n : factorFine;\n\n let\n delta;\n\n if (orientation === \"vertical\") {\n delta = event.movementY || 0;\n } else {\n delta = event.movementX || 0;\n }\n\n let newVal;\n let s = step > 0 ? step : (max - min) / 100;\n\n if (delta < 0) {\n newVal = Math.max(value + s * factor * delta, min);\n } else if (delta > 0) { // right/up\n newVal = Math.min(value + s * factor * delta, max);\n } else {\n return value;\n }\n\n newVal = quantize(newVal, min, max, step);\n\n setStyles(newVal);\n return newVal;\n\n }\n\n function onPress(x, y, event) {\n return useAbsolute\n ? onPressAbsolute(x, y, event)\n : onPressDelta(x, y, event);\n }\n\n function moveHandle(x, y, event) {\n return absolute\n ? moveHandleAbsolute(x, y, event)\n : moveHandleDelta(x, y, event);\n }\n\n // Event handlers\n function onMouseDown(e) {\n if (device === TOUCH) {\n return;\n }\n device = MOUSE;\n if (e.button !== 0) {\n return;\n }\n window.addEventListener(\"mousemove\", onMouseMove);\n window.addEventListener(\"mouseup\", onMouseUp);\n onPress(e.clientX, e.clientY, e);\n }\n\n function onMouseMove(e) {\n e.preventDefault();\n onMove(e.clientX, e.clientY, e);\n }\n\n function onMouseUp(e) {\n window.removeEventListener(\"mousemove\", onMouseMove);\n window.removeEventListener(\"mouseup\", onMouseUp);\n onRelease(e.clientX, e.clientY, e);\n }\n\n function onTouchStart(e) {\n if (device === MOUSE) {\n return;\n }\n elHit.addEventListener(\"touchmove\", onTouchMove);\n elHit.addEventListener(\"touchend\", onTouchEnd);\n const t = e.changedTouches[0];\n onPress(t.clientX, t.clientY, e, true);\n }\n\n function onTouchMove(e) {\n e.preventDefault();\n const t = e.changedTouches[0];\n onMove(t.clientX, t.clientY, e);\n }\n\n function onTouchEnd(e) {\n elHit.removeEventListener(\"touchmove\", onTouchMove);\n elHit.removeEventListener(\"touchend\", onTouchEnd);\n const t = e.changedTouches[0];\n onRelease(t.clientX, t.clientY, t);\n }\n\n function onKeyDown(e) {\n\n const k = e.keyCode;\n let newVal;\n\n if (k === 33) { // pgup\n e.preventDefault();\n let s = Math.max((max - min) / 10, step);\n if (s <= 0) {\n s = 1;\n }\n newVal = quantize(value + s, min, max, step);\n } else if (k === 34) { // pgdown\n e.preventDefault();\n let s = Math.max((max - min) / 10, step);\n if (s <= 0) {\n s = 1;\n }\n newVal = quantize(value - s, min, max, step);\n } else if (k === 35) { // end\n e.preventDefault();\n newVal = max;\n } else if (k === 36) { // home\n e.preventDefault();\n newVal = min;\n } else if (k === 37 || k === 40) { // left/down\n e.preventDefault();\n let s = (step > 0 ? step : (max - min) / 10) * (e.shiftKey ? 0.25 : (e.ctrlKey || e.metaKey) ? 4 : 1);\n newVal = Math.max(value - s, min);\n } else if (k === 38 || k === 39) { // right/up\n e.preventDefault();\n let s = (step > 0 ? step : (max - min) / 10) * (e.shiftKey ? 0.25 : (e.ctrlKey || e.metaKey) ? 4 : 1);\n newVal = Math.min(value + s, max);\n } else if (k === 48) { // 0\n newVal = (max + min) / 2;\n }\n if (typeof newVal !== \"number\" || newVal === value) {\n return; // no change to make\n }\n value = newVal;\n setStyles(value);\n if (onchange && onchange(value) !== false) {\n m.redraw();\n }\n }\n\n function onMove(x, y, event) {\n if (!pressed) {\n return;\n }\n\n const val = moveHandle(x, y, event);\n if (val !== value) {\n value = val;\n if (ondrag && ondrag(value) !== false) {\n m.redraw();\n }\n }\n }\n\n function onRelease(x, y, e) {\n\n if (!pressed) {\n return;\n }\n\n pressed = false;\n value = moveHandle(x, y, e);\n\n if (onchange && onchange(value) !== false) {\n m.redraw();\n }\n\n /*\n if (value !== startValue) {\n if (onchange && onchange(value) !== false) {\n m.redraw();\n }\n }\n */\n\n if (!absolute) document.exitPointerLock();\n\n setTimeout(function () {\n if (!pressed) {\n device = NONE;\n }\n }, DEVICE_DELAY);\n }\n\n /** Compute handle position style */\n function positionStyle(val) {\n let s = (val - min) / (max - min);\n if (orientation === \"vertical\") {\n s = 1.0 - s;\n }\n return String(100 * s) + \"%\";\n }\n\n /** Set styles for movable parts */\n function setStyles(value) {\n const\n ps = positionStyle(value),\n rps = positionStyle(max - value + min);\n\n if (orientation === \"vertical\") {\n elHandle.style.top = ps;\n elBar0.style.height = ps;\n elBar1.style.height = rps;\n } else {\n elHandle.style.left = ps;\n elBar0.style.width = rps;\n elBar1.style.width = ps;\n }\n }\n\n /** Some attrs need to be cached (and updated) so that they are current in event handlers */\n function updateAttrs(attrs) {\n min = attrs.min;\n max = attrs.max;\n step = (typeof attrs.step === \"number\" && !Number.isNaN(attrs.step))\n ? clamp(attrs.step, 0, max - min) : 1;\n orientation = attrs.orientation === \"vertical\" ? \"vertical\" : \"horizontal\";\n onchange = attrs.onchange;\n ondrag = attrs.ondrag;\n if (typeof attrs.value === \"number\") {\n value = clamp(attrs.value, min, max);\n }\n useAbsolute = !attrs.relative;\n factorCoarse = (attrs.factor && attrs.factor[0]) || 4;\n factorFine = (attrs.factor && attrs.factor[1]) || 1;\n\n }\n\n /** Return mithril component hooks object */\n return {\n oncreate: ({attrs, dom}) => {\n applyIOSHack();\n updateAttrs(attrs);\n elHit = dom;\n elBar = elHit.querySelector(\".mithril-range-bar\");\n elBar0 = elBar.querySelector(\".mithril-range-bar-0\");\n elBar1 = elBar.querySelector(\".mithril-range-bar-1\");\n elHandle = elBar.querySelector(\".mithril-range-handle\");\n elHit.addEventListener(\"mousedown\", onMouseDown);\n elHit.addEventListener(\"touchstart\", onTouchStart);\n elHit.addEventListener(\"keydown\", onKeyDown);\n },\n onremove: function () {\n window.removeEventListener(\"mousemove\", onMouseMove);\n window.removeEventListener(\"mouseup\", onMouseUp);\n elHit.removeEventListener(\"mousedown\", onMouseDown);\n elHit.removeEventListener(\"touchstart\", onTouchStart);\n elHit.removeEventListener(\"touchmove\", onTouchMove);\n elHit.removeEventListener(\"touchend\", onTouchEnd);\n elHit.removeEventListener(\"keydown\", onKeyDown);\n },\n view: function ({attrs, children}) {\n\n updateAttrs(attrs);\n value = quantize(value, min, max, step);\n const a = {\n class: \"mithril-range nokey\" + (attrs.relative ? \" isrelative \" : \" \") + (value === 0 ? \"atzero\" : value < 0 ? \"belowzero\" : \"overzero\") + (attrs.class != null ? \" \" + attrs.class : \"\"),\n tabIndex: \"0\",\n role: \"slider\",\n \"aria-valuemin\": String(min),\n \"aria-valuemax\": String(max),\n \"aria-valuenow\": String(value),\n \"aria-orientation\": orientation\n };\n if (attrs.id) {\n a.id = attrs.id;\n }\n // noinspection JSUnresolvedVariable\n if (attrs.ariaLabelledby) {\n a[\"aria-labelledby\"] = attrs.ariaLabelledby;\n }\n if (attrs.disabled) {\n a.style = {pointerEvents: \"none\"};\n a[\"aria-disabled\"] = \"true\";\n }\n const\n ps = positionStyle(value),\n rps = positionStyle(max - value + min);\n let\n handleStyle,\n bar0Style,\n bar1Style;\n\n if (orientation === \"vertical\") {\n handleStyle = {top: ps};\n bar0Style = {height: ps};\n bar1Style = {height: rps};\n } else {\n handleStyle = {left: ps};\n bar0Style = {width: rps};\n bar1Style = {width: ps};\n }\n return m(\"div\", a, m(\"div\", {class: \"mithril-range-bar nokey\"}, m(\"div\", {\n class: \"mithril-range-bar-0 nokey\",\n style: bar0Style\n }), m(\"div\", {\n class: \"mithril-range-bar-1 nokey\",\n style: bar1Style\n }), m(\"div\", {\n class: \"mithril-range-handle nokey\",\n style: handleStyle\n }, children)), !!attrs.name && m(\"input\", {\n type: \"hidden\",\n name: attrs.name,\n value: String(value)\n }));\n }\n };\n}\n\nexport default MithrilRange;\n","import m from \"mithril\";\nimport MithrilRange from \"../util/mithril-range\";\n\nlet\n __timer;\n\nconst\n resetMultiplier = (state) => {\n /*\n if (state.curMultiplier > 1 && state.value < state.curMax * (state.curMultiplier - 1)) {\n state.curMultiplier = Math.ceil(state.value / state.curMax);\n m.redraw();\n }\n */\n\n const\n // req multiplier to show value within negative bounds\n maxMultiplier = state.value > state.curMax ? Math.ceil(state.value / state.curMax) : 1,\n // req multiplier to show value within positive bounds\n minMultiplier = (state.curMin < 0 && state.value < state.curMin) ? Math.abs(Math.ceil(state.value / state.curMin)) : 1,\n // chosen\n multiplier = Math.min(Math.max(minMultiplier, maxMultiplier), state.maxMultiplier);\n\n if (state.curMultiplier !== multiplier) {\n state.curMultiplier = multiplier;\n m.redraw();\n }\n },\n increaseMultiplier = (state) => {\n if (\n state.value >= (state.curMax * state.curMultiplier) * 0.9\n && state.maxMultiplier > 1\n && state.curMultiplier <= state.maxMultiplier - 1\n ) {\n state.curMultiplier++;\n return true;\n }\n if (state.curMin < 0) return increaseMinMultiplier(state);\n },\n increaseMinMultiplier = (state) => {\n if (state.value <= (state.curMin * state.curMultiplier) * 0.9\n && state.maxMultiplier > 1\n && state.curMultiplier <= state.maxMultiplier - 1\n ) {\n state.curMultiplier++;\n return true;\n }\n },\n RangeSlider = {\n\n oninit: ({attrs, state}) => {\n Object.assign(state, {\n value: attrs.value || 0,\n initial: attrs.value || 0,\n curMax: attrs.max,\n curMin: attrs.min,\n curMultiplier: 1,\n maxMultiplier: attrs.multiplier || 1,\n id: \"I\" + Date.now()\n });\n // adjust initial multiplier\n if (state.maxMultiplier > 1) {\n if (state.value > attrs.max) {\n state.curMultiplier = Math.ceil(state.value / attrs.max);\n } else if (attrs.min < 0 && state.value < attrs.min) {\n state.curMultiplier = Math.abs(Math.ceil(state.value / attrs.min));\n }\n }\n },\n onupdate: ({attrs, state}) => {\n const\n attrsMultiplier = attrs.multiplier || 1,\n attrsValue = attrs.value || 0;\n\n if (state.curMax !== attrs.max || state.maxMultiplier !== attrsMultiplier) {\n\n Object.assign(state, {\n curMax: attrs.max,\n curMin: attrs.min,\n maxMultiplier: attrsMultiplier,\n value: attrs.value,\n initial: attrsValue\n });\n if (!increaseMultiplier(state)) {\n clearTimeout(state.timer);\n state.timer = setTimeout(resetMultiplier, 1000, state);\n }\n\n m.redraw();\n\n } else if (state.initial !== attrsValue) {\n\n Object.assign(state, {\n value: attrsValue,\n initial: attrsValue\n });\n\n clearTimeout(__timer);\n __timer = setTimeout(() => m.redraw(), 50);\n\n /*\n if (!increaseMultiplier(state)) {\n state.timer = setTimeout(resetMultiplier, 1000, state);\n clearTimeout(state.timer);\n }\n */\n }\n },\n view: ({attrs, state}) => m(\n \".range.flexcol.control.relative\" + (attrs.multiplier > 1 ? \".withmultiplier\" : \"\"),\n {\n ...attrs.class && {class: attrs.class},\n title: attrs.hint || \"Click, then use arrows to finetune value if needed\"\n },\n [\n ...attrs.title ? [m(\"label\", {class: \"rangelabel\", htmlFor: state.id}, attrs.title)] : [],\n m(MithrilRange, {\n onchange: (value) => {\n\n state.value = value;\n\n const increased = increaseMultiplier(state);\n\n if (!increased && state.curMultiplier > 1) {\n clearTimeout(state.timer);\n state.timer = setTimeout(resetMultiplier, 1000, state);\n }\n\n if (attrs.onchange) {\n attrs.onchange(value);\n } else {\n m.redraw();\n }\n },\n ondrag: (value) => {\n if (value !== state.value) {\n state.value = value;\n if (attrs.ondrag) attrs.ondrag(value);\n return true;\n }\n return false;\n },\n value: state.value || 0,\n min: (attrs.min || 0) * state.curMultiplier,\n max: (state.curMax * state.curMultiplier) || 100,\n step: attrs.step || 1,\n relative: attrs.relative,\n factor: attrs.factor\n }, [\n m(\".currentval\", attrs.parser\n ? attrs.parser(state.value, attrs.step < 1)\n : state.value\n ? attrs.step < 1\n ? state.value.toFixed(2)\n : (\"\" + Math.floor(state.value)) : \"\")\n ])\n /*\n m(\".datalist.flexrow\", [\n m(\"div\", attrs.getLabel(0)),\n m(\".ismax\", attrs.getLabel(attrs.max || 100))\n ])\n */\n ]\n )\n },\n RangeWidget = {\n view: ({attrs, state}) => m(RangeSlider, {\n value: attrs.value || 0,\n min: attrs.min || 0,\n max: attrs.max || 100,\n step: attrs.step || 0.1,\n class: (attrs.disabled ? \"disabled \" : \"\") + (attrs.class || \"\"),\n title: attrs.title,\n multiplier: attrs.multiplier,\n hint: attrs.hint,\n parser: attrs.parser,\n relative: attrs.relative,\n factor: attrs.factor,\n\n // values: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n getLabel: (value) => (value ? \"\" + value : \"default\"),\n ondrag: (value) => {\n state.changed = true;\n state.value = value;\n if (attrs.onchange) attrs.onchange(value, true);\n return true;\n },\n onchange: (value) => {\n if (attrs.auto0) {\n value = 0;\n } else if (attrs.autoValue) value = attrs.autoValue;\n state.changed = true;\n state.value = value;\n if (attrs.onchange) attrs.onchange(value, false);\n return true;\n }\n })\n };\n\nexport default RangeWidget;\n","function startApp(target, appMetadata) {\n m.route(\n document.getElementById(target),\n appMetadata.default || \"/\",\n appMetadata.routes\n );\n}\n\nexport default startApp;"],"names":["getAttrs","attrs","parentAttrs","panelInitialParams","data","initialParams","isCurrent","currentIndex","index","Icon","view","m","pack","icon","size","title","icontitle","undefined","role","onclick","iconClass","class","Button","state","children","download","link","href","target","text","busy","error","message","event","clearTimeout","debounce","setTimeout","result","then","catch","redraw","right","textClass","ButtonNew","rel","onClick","Empty","key","split","map","str","idx","all","length","setItem","params","lastIndex","lastParams","currentParams","Object","assign","current","items","onSelected","Selector","oninit","selected","isNaN","noinitial","onupdate","element","horizontal","className","hideonly","hidesel","toolbarClass","item","Date","now","clickts","bodyHidden","toggle","bodyClass","widget","closeButton","ICONS","info","success","Notification","TOAST_SHORT","altContainer","mTimer","mNotifications","next","container","document","getElementById","n","splice","render","type","timer","add","push","clear","defineWidget","oncreate","onremove","globalState","CardieWidget","nofold","cardid","action","collapsedAction","collapsedClass","expandedClass","cols","expandedView","collapsedView","titleWidget","titWidget","titleAttrs","titleClass","titleExpanded","titleCollapsed","collapsed","buttonClass","skipEmpty","e","classList","contains","shiftKey","onShiftOpen","expanded","uniq","subname","keys","forEach","startsWith","setCardStatus","alwaysView","getInput","value","parse","val","float","Number","parseFloat","parseInt","getValue","lastVal","hasOwnProperty","StaticFieldWidget","vnode","onDrag","staticClass","staticTitle","dom","readonly","hammer","Hammer","Manager","touchAction","panner","Pan","direction","DIRECTION_VERTICAL","singleTap","Tap","on","srcEvent","focus","destroy","InputWidget","reset","showInput","label","containerClass","staticField","multi","alwaysmulti","id","max","min","step","maxlength","validator","isValid","placeholder","hint","oninput","fromoninput","onchange","enterPressed","onblur","onkeyup","onkeypress","onenter","dragging","draginc","displayTitle","String","actions","NoticeWidget","SwitchWidget","unit","subline","checked","original","mCurrentCancelable","runCancelable","style","display","popupMessage","cancelable","contentClass","clearModal","OverflowMenu","domItem","options","Promise","resolve","closeResolve","widget.popupMessage","classes","initials","clases","finals","cla","join","packClassString","favlist","nodeName","getAttribute","ev","keyCode","blur","caption","clone","window","structuredClone","o","JSON","stringify","promptName","body","refreshKey","PROPERTIES","TitleBarWidget","EntityTemplates","meta","onInput","valid","trim","description","embedded","notice","Notice","newvalue","tags","toLowerCase","filter","tag","ytref","indexOf","author","source","PresetTemplate","parameters","preset","presetComponents","types","globalData","fetcher","available","sourceAvailable","cosa","primaryTarget","elements","globalSource","rootSource","found","cosaIndex","fetchLive","isAvailable","isSourceAvailable","status","updatedTarget","field","finalSource","deleteCurrent","config","onSelect","parser","v","Array","isArray","reject","newMeta","Error","textNew","textHint","dialogOptions","finally","Separator","isIOS","navigator","userAgent","match","__timer","iOSHackApplied","clamp","Math","quantize","steps","ceil","round","MithrilRange","elHit","elBar","elBar0","elBar1","elHandle","rcBar","absolute","ondrag","device","pressed","useAbsolute","factorCoarse","factorFine","orientation","moveHandleAbsolute","x","y","barLength","delta","bottom","top","left","setStyles","onPress","getBoundingClientRect","onPressAbsolute","isTouch","requestPointerLock","moveHandle","factor","metaKey","ctrlKey","newVal","movementY","movementX","s","moveHandleDelta","onMouseDown","button","addEventListener","onMouseMove","onMouseUp","clientX","clientY","preventDefault","onMove","removeEventListener","onRelease","onTouchStart","onTouchMove","onTouchEnd","t","changedTouches","onKeyDown","k","exitPointerLock","positionStyle","ps","rps","height","width","updateAttrs","relative","querySelector","a","tabIndex","ariaLabelledby","disabled","pointerEvents","handleStyle","bar0Style","bar1Style","name","resetMultiplier","maxMultiplier","curMax","minMultiplier","curMin","abs","multiplier","curMultiplier","increaseMultiplier","increaseMinMultiplier","RangeSlider","initial","attrsMultiplier","attrsValue","htmlFor","toFixed","floor","RangeWidget","getLabel","changed","auto0","autoValue","startApp","appMetadata","route","default","routes"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nebularstreams/libmui",
|
|
3
|
-
"description": "Micro UI based on
|
|
4
|
-
"version": "0.
|
|
5
|
-
"author": "Rodolfo Lopez Pintor - Nebular Streams",
|
|
6
|
-
"module": "dist/libmui.esm.js",
|
|
3
|
+
"description": "Micro UI based on Mithril",
|
|
4
|
+
"version": "2.0.0",
|
|
7
5
|
"type": "module",
|
|
8
|
-
"
|
|
6
|
+
"main": "src/index.js",
|
|
9
7
|
"scripts": {
|
|
10
8
|
"build": "rollup -c"
|
|
11
9
|
},
|
|
@@ -23,7 +21,5 @@
|
|
|
23
21
|
},
|
|
24
22
|
"publishConfig": {
|
|
25
23
|
"access": "public"
|
|
26
|
-
}
|
|
27
|
-
"external":["mithril"],
|
|
28
|
-
"main": "src/index.js"
|
|
24
|
+
}
|
|
29
25
|
}
|