native-document 1.0.50 → 1.0.52
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/native-document.dev.js +15 -21
- package/dist/native-document.dev.js.map +1 -1
- package/dist/native-document.min.js +1 -1
- package/index.js +0 -1
- package/package.json +1 -1
- package/src/utils/fetch/NativeFetch.js +7 -0
- package/types/native-fetch.d.ts +72 -0
- package/types/service.d.ts +13 -0
- package/utils.d.ts +3 -0
- package/utils.js +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
var NativeDocument=function(t){"use strict";let n={};n={log(){},warn(){},error(){},disable(){}};var r=n;const o=function(){let e=0;const t=new Map;return{register(n){const r=++e;return t.set(r,new WeakRef(n)),r},unregister(e){t.delete(e)},getObservableById:e=>t.get(e)?.deref(),cleanup(){for(const[e,n]of t){const e=n.deref();e&&e.cleanup()}t.clear()},cleanObservables(e){if(t.size<e)return;let n=0;for(const[e,r]of t)r.deref()||(t.delete(e),n++);n>0&&r.log("Memory Auto Clean",`🧹 Cleaned ${n} orphaned observables`)}}}();class s extends Error{constructor(e,t={}){super(e),this.name="NativeDocumentError",this.context=t,this.timestamp=(new Date).toISOString()}}function i(e,t){this.observable=e,this.checker=t,this.unSubscriptions=[]}i.prototype.__$isObservableChecker=!0,i.prototype.subscribe=function(e){const t=this.observable.subscribe(t=>{e&&e(this.checker(t))});return this.unSubscriptions.push(t),t},i.prototype.check=function(e){return this.observable.check(()=>e(this.val()))},i.prototype.val=function(){return this.checker&&this.checker(this.observable.val())},i.prototype.set=function(e){return this.observable.set(e)},i.prototype.trigger=function(){return this.observable.trigger()},i.prototype.cleanup=function(){return this.observable.cleanup()};const a=function(){const e=new Map,t=new Map;return{list:()=>t,add(n,r){if(!n||"object"!=typeof n)throw new Error(`Plugin ${r} must be an object`);if(!(r=r||n.name)||"string"!=typeof r)throw new Error("Please, provide a valid plugin name");if(!e.has(r)){n.$name=r,e.set(r,n),"function"==typeof n?.init&&n.init();for(const e in n)if(/^on[A-Z]/.test(e)){const r=e.replace(/^on/,"");t.has(r)||t.set(r,new Set),t.get(r).add(n)}}},remove(n){if(!e.has(n))return;const r=e.get(n);"function"==typeof r.cleanup&&r.cleanup();for(const[e,n]of t.entries())n.has(r)&&n.delete(r),0===n.size&&t.delete(e);e.delete(n)},emit(e,...n){if(!t.has(e))return;const o=t.get(e);for(const t of o){const o=t["on"+e];if("function"==typeof o)try{o.call(t,...n)}catch(n){r.error("Plugin Manager",`Error in plugin ${t.$name} for event ${e}`,n)}}}}}(),u=function(e,t){this.$target=t,this.$observer=e};function l(e){this.$previousValue=null,this.$currentValue=e,this.$isCleanedUp=!1,this.$listeners=null,this.$watchers=null,this.$memoryId=null,a.emit("CreateObservable",this)}u.prototype.__$isObservableWhen=!0,u.prototype.subscribe=function(e){return this.$observer.on(this.$target,e)},u.prototype.val=function(){return this.$observer.$currentValue===this.$target},u.prototype.isMath=function(){return this.$observer.$currentValue===this.$target},u.prototype.isActive=function(){return this.$observer.$currentValue===this.$target},Object.defineProperty(l.prototype,"$value",{get(){return this.$currentValue},set(e){this.set(e)},configurable:!0}),l.prototype.__$isObservable=!0;const c={},h=function(){};l.prototype.triggerFirstListener=function(e){this.$listeners[0](this.$currentValue,this.$previousValue,e||{})},l.prototype.triggerListeners=function(e){const t=this.$listeners,n=this.$previousValue,r=this.$currentValue;e=e||c;for(let o=0,s=t.length;o<s;o++)t[o](r,n,e)};const p=function(e,t){"function"!=typeof e?e.set?e.set(t):e.forEach(e=>{e.set?e.set(t):e(t)}):e(t)};l.prototype.triggerWatchers=function(){if(!this.$watchers)return;const e=this.$watchers,t=this.$previousValue,n=this.$currentValue;if(e.has(n)){const t=e.get(n);p(t,!0)}if(e.has(t)){const n=e.get(t);p(n,!1)}},l.prototype.triggerAll=function(e){this.triggerListeners(e),this.triggerWatchers()},l.prototype.triggerWatchersAndFirstListener=function(e){this.triggerListeners(e),this.triggerWatchers()},l.prototype.assocTrigger=function(){this.$watchers?.size&&this.$listeners?.length?this.trigger=1===this.$listeners.length?this.triggerWatchersAndFirstListener:this.triggerAll:this.$listeners?.length?this.trigger=1===this.$listeners.length?this.triggerFirstListener:this.triggerListeners:this.$watchers?.size?this.trigger=this.triggerWatchers:this.trigger=h},l.prototype.trigger=h,l.prototype.set=function(e){const t="function"==typeof e?e(this.$currentValue):e;this.$currentValue!==t&&(this.$previousValue=this.$currentValue,this.$currentValue=t,a.emit("ObservableBeforeChange",this),this.trigger(),this.$previousValue=null,a.emit("ObservableAfterChange",this))},l.prototype.val=function(){return this.$currentValue},l.prototype.disconnectAll=function(){if(this.$listeners?.splice(0),this.$previousValue=null,this.$currentValue=null,this.$watchers)for(const[e,t]of this.$watchers)I.isArray(t)&&t.splice(0);this.$watchers?.clear(),this.$listeners=null,this.$watchers=null,this.trigger=h},l.prototype.cleanup=function(){o.unregister(this.$memoryId),this.disconnectAll(),this.$isCleanedUp=!0,delete this.$value},l.prototype.subscribe=function(e,t=null){if(this.$listeners=this.$listeners??[],this.$isCleanedUp)return r.warn("Observable subscription","⚠️ Attempted to subscribe to a cleaned up observable."),()=>{};if("function"!=typeof e)throw new s("Callback must be a function");return this.$listeners.push(e),this.assocTrigger(),a.emit("ObservableSubscribe",this,t),()=>{this.unsubscribe(e),this.assocTrigger(),a.emit("ObservableUnsubscribe",this)}},l.prototype.on=function(e,t){this.$watchers=this.$watchers??new Map;let n=this.$watchers.get(e);if(n){if(!I.isArray(n))return n=[n],void this.$watchers.set(e,n);n.push(t)}else this.$watchers.set(e,t);return this.assocTrigger(),()=>{const r=n.indexOf(t);n?.splice(r,1),1===n.size?this.$watchers.set(e,n[0]):0===n.size&&(this.$watchers?.delete(e),n=null),this.assocTrigger()}},l.prototype.unsubscribe=function(e){const t=this.$listeners.indexOf(e);t>-1&&this.$listeners.splice(t,1),this.assocTrigger()},l.prototype.check=function(e){return new i(this,e)},l.prototype.get=function(e){const t=this.$currentValue[e];return I.isObservable(t)?t.val():t},l.prototype.when=function(e){return new u(this,e)},l.prototype.toString=function(){return this.$memoryId||o.register(this),"{{#ObItem::("+this.$memoryId+")}}"},l.prototype.equals=function(e){return I.isObservable(e)?this.$currentValue===e.$currentValue:this.$currentValue===e},l.prototype.toBool=function(){return!!this.$currentValue},l.prototype.toggle=function(){this.set(!this.$currentValue)};const d=(e,t,n)=>{if(I.isFunction(n))return n(e,t);if(I.isObservable(e)){const r=e.val();return r&&n?r[n]:t}return I.isObject(e)?e[n]?.val?.()??e[n]??t:e},f=function(e,t){return e.replace(new RegExp(`^[${t}]+|[${t}]+$`,"g"),"")},b={mounted:new WeakMap,mountedSupposedSize:0,unmounted:new WeakMap,unmountedSupposedSize:0,observer:null,checkMutation:function(e){for(const t of e){if(b.mountedSupposedSize>0)for(const e of t.addedNodes){const t=b.mounted.get(e);t&&(t.inDom=!0,t.mounted&&t.mounted(e))}if(b.unmountedSupposedSize>0)for(const e of t.removedNodes){const t=b.unmounted.get(e);t&&(t.inDom=!1,t.unmounted&&!0===t.unmounted(e)&&(t.disconnect(),e.nd?.remove()))}}},watch:function(e,t=!1){let n={inDom:t,mounted:null,unmounted:null,disconnect:()=>{b.mounted.delete(e),b.unmounted.delete(e),b.mountedSupposedSize--,b.unmountedSupposedSize--,n=null}};return{disconnect:n.disconnect,mounted:t=>{n.mounted=t,b.mounted.set(e,n),b.mountedSupposedSize++},unmounted:t=>{n.unmounted=t,b.unmounted.set(e,n),b.unmountedSupposedSize++}}}};b.observer=new MutationObserver(b.checkMutation),b.observer.observe(document.body,{childList:!0,subtree:!0});const m=["Click","DblClick","MouseDown","MouseEnter","MouseLeave","MouseMove","MouseOut","MouseOver","MouseUp","Wheel","KeyDown","KeyPress","KeyUp","Blur","Change","Focus","Input","Invalid","Reset","Search","Select","Submit","Drag","DragEnd","DragEnter","DragLeave","DragOver","DragStart","Drop","AfterPrint","BeforePrint","BeforeUnload","Error","HashChange","Load","Offline","Online","PageHide","PageShow","Resize","Scroll","Unload","Abort","CanPlay","CanPlayThrough","DurationChange","Emptied","Ended","LoadedData","LoadedMetadata","LoadStart","Pause","Play","Playing","Progress","RateChange","Seeked","Seeking","Stalled","Suspend","TimeUpdate","VolumeChange","Waiting","TouchCancel","TouchEnd","TouchMove","TouchStart","AnimationEnd","AnimationIteration","AnimationStart","TransitionEnd","Copy","Cut","Paste","FocusIn","FocusOut","ContextMenu"];function g(e){this.$element=e,this.$observer=null,a.emit("NDElementCreated",e,this)}g.prototype.__$isNDElement=!0,g.prototype.valueOf=function(){return this.$element},g.prototype.ref=function(e,t){return e[t]=this.$element,this},g.prototype.unmountChildren=function(){let e=this.$element;for(let t=0,n=e.children.length;t<n;t++){let n=e.children[t];n.$ndProx||n.nd?.remove(),n=null}return e=null,this},g.prototype.remove=function(){let e=this.$element;return e.nd.unmountChildren(),e.$ndProx=null,delete e.nd?.on?.prevent,delete e.nd?.on,delete e.nd,e=null,this},g.prototype.lifecycle=function(e){return this.$observer=this.$observer||b.watch(this.$element),e.mounted&&this.$observer.mounted(e.mounted),e.unmounted&&this.$observer.unmounted(e.unmounted),this},g.prototype.mounted=function(e){return this.lifecycle({mounted:e})},g.prototype.unmounted=function(e){return this.lifecycle({unmounted:e})},g.prototype.htmlElement=function(){return this.$element},g.prototype.node=g.prototype.htmlElement,g.prototype.shadow=function(e,t=null){const n=this.$element,r=Array.from(n.childNodes),o=n.attachShadow({mode:e});if(t){const e=document.createElement("style");e.textContent=t,o.appendChild(e)}return n.append=o.append.bind(o),n.appendChild=o.appendChild.bind(o),o.append(...r),this},g.prototype.openShadow=function(e=null){return this.shadow("open",e)},g.prototype.closedShadow=function(e=null){return this.shadow("closed",e)},g.prototype.attach=function(e){return e.$hydrate(this.$element),this.$element};const y={},v=function(e,t,n){if(!e)return;if(!y[t]){const r=new WeakMap;return y[t]=r,void r.set(e,n)}const r=y[t];if(!r.has(e))return void r.set(e,n);const o=r.get(e);I.isArray(o)?o.push(n):r.set(e,[store[t],n])},w=function(e,t,n){return e.addEventListener(t,t=>{t.preventDefault(),n&&n.call(e,t)}),this},$=function(e,t,n){return e.addEventListener(t,t=>{t.stopPropagation(),n&&n.call(e,t)}),this},C=function(e,t,n){return e.addEventListener(t,t=>{t.stopPropagation(),t.preventDefault(),n&&n.call(e,t)}),this},O=function(e,t,n){return n?(e.addEventListener(t,n),this):(function(e,t){e.addEventListener(t,n=>{const r=y[t];if(!r)return;let o=n.target;for(;o&&o!==e;){const e=r.get(o);if(e){if(I.isFunction(e))e.call(o,n);else for(let t=0;t<e.length;t++)e[t].call(o,n);return}o=o.parentElement}})}(e,t),this)};for(const e of m){const t=e.toLowerCase();g.prototype["on"+e]=function(e){return this.$element.addEventListener(t,e),this},g.prototype["onPrevent"+e]=function(e){return w(this.$element,t,e),this},g.prototype["onStop"+e]=function(e){return $(this.$element,t,e),this},g.prototype["onPreventStop"+e]=function(e){return C(this.$element,t,e),this},g.prototype["when"+e]=function(e){return v(this.$element,t,e),this},g.prototype["capture"+e]=function(e){return O(this.$element,t,e),this}}const S=1,A=3,E=8,x=11,I={isObservable:e=>e?.__$isObservable||e instanceof l||e instanceof i,isObservableWhenResult:e=>e&&(e.__$isObservableWhen||"object"==typeof e&&"$target"in e&&"$observer"in e),isArrayObservable:e=>e?.__$isObservableArray,isProxy:e=>e?.__isProxy__,isAnchor:e=>e?.__Anchor__,isObservableChecker:e=>e?.__$isObservableChecker||e instanceof i,isArray:e=>Array.isArray(e),isString:e=>"string"==typeof e,isNumber:e=>"number"==typeof e,isBoolean:e=>"boolean"==typeof e,isFunction:e=>"function"==typeof e,isAsyncFunction:e=>"function"==typeof e&&"AsyncFunction"===e.constructor.name,isObject:e=>"object"==typeof e,isJson:e=>"object"==typeof e&&null!==e&&!Array.isArray(e)&&"Object"===e.constructor.name,isElement:e=>e&&(e.nodeType===S||e.nodeType===A||e.nodeType===x||e.nodeType===E),isFragment:e=>e?.nodeType===x,isStringOrObservable(e){return this.isString(e)||this.isObservable(e)},isValidChild(e){return null===e||this.isElement(e)||this.isObservable(e)||this.isNDElement(e)||["string","number","boolean"].includes(typeof e)},isNDElement:e=>e?.__$isNDElement||e instanceof g,isValidChildren(e){Array.isArray(e)||(e=[e]);return 0===e.filter(e=>!this.isValidChild(e)).length},validateChildren(e){Array.isArray(e)||(e=[e]);const t=e.filter(e=>!this.isValidChild(e));if(t.length>0)throw new s(`Invalid children detected: ${t.map(e=>typeof e).join(", ")}`);return e},containsObservables:e=>!!e&&(I.isObject(e)&&Object.values(e).some(e=>I.isObservable(e))),containsObservableReference:e=>!(!e||"string"!=typeof e)&&/\{\{#ObItem::\([0-9]+\)\}\}/.test(e),validateAttributes(e){},validateEventCallback(e){if("function"!=typeof e)throw new s("Event callback must be a function")}};function k(e,t=!1){const n=document.createDocumentFragment();n.__Anchor__=!0;const o=document.createComment("Anchor Start : "+e),s=document.createComment("/ Anchor End "+e);n.appendChild(o),n.appendChild(s),n.nativeInsertBefore=n.insertBefore,n.nativeAppendChild=n.appendChild;const i=e=>t||e.firstChild===o&&e.lastChild===s;return n.appendElement=function(e,t=null){const r=o.parentNode,i=t||s;r!==n?r?.insertBefore(e,i):r.nativeInsertBefore(e,i)},n.appendChild=function(e,t=null){const o=s.parentNode;o?function(e,t,r){const o=I.isElement(t)?t:z.getChild(t);e!==n?i(e)&&r===s?e.append(o,r):e.insertBefore(o,r):e.nativeInsertBefore(o,r)}(o,e,t=t??s):r.error("Anchor","Anchor : parent not found",e)},n.append=function(...e){return n.appendChild(e)},n.removeChildren=function(){const e=s.parentNode;if(e===n)return;if(i(e))return void e.replaceChildren(o,s);let t,r=o.nextSibling;const a=document.createDocumentFragment();for(;r&&r!==s;)t=r.nextSibling,a.append(r),r=t;a.replaceChildren()},n.remove=function(){if(s.parentNode===n)return;let e,t=o.nextSibling;for(;t&&t!==s;)e=t.nextSibling,n.nativeAppendChild(t),t=e},n.removeWithAnchors=function(){n.removeChildren(),o.remove(),s.remove()},n.replaceContent=function(e){const t=s.parentNode;t&&(i(t)?t.replaceChildren(o,e,s):(n.removeChildren(),t.insertBefore(e,s)))},n.insertBefore=function(e,t=null){n.appendChild(e,t)},n.endElement=function(){return s},n.startElement=function(){return o},n.restore=function(){n.appendChild(n)},n.clear=n.remove,n.detach=n.remove,n.getByIndex=function(e){let t=o;for(let n=0;n<=e;n++){if(!t.nextSibling)return null;t=t.nextSibling}return t!==o?t:null},n}const N=["checked","selected","disabled","readonly","required","autofocus","multiple","autocomplete","hidden","contenteditable","spellcheck","translate","draggable","async","defer","autoplay","controls","loop","muted","download","reversed","open","default","formnovalidate","novalidate","scoped","itemscope","allowfullscreen","allowpaymentrequest","playsinline"];function P(e){return new l(e)}const F=P,T=P;function V(e,t,n){e.classes.toggle(t,n)}function D(e,t,n){e.style[t]=n}function R(e,t,n){I.isBoolean(n)?e[t]=n:e[t]=n===e.value}function M(e,t,n,r){I.isBoolean(n)?r.set(e[t]):r.set(e.value)}function L(e,t){for(let n in t){const r=t[n];I.isObservable(r)?(e.classes.toggle(n,r.val()),r.subscribe(V.bind(null,e,n))):I.isObservableWhenResult(r)?(e.classes.toggle(n,r.isMath()),r.subscribe(V.bind(null,e,n))):r.$hydrate?r.$hydrate(e,n):e.classes.toggle(n,r)}t=null}function _(e,t){for(let n in t){const r=t[n];I.isObservable(r)?(e.style[n]=r.val(),r.subscribe(D.bind(null,e,n))):e.style[n]=r}}function B(e,t,n){const r=I.isObservable(n)?n.val():n;I.isBoolean(r)?e[t]=r:e[t]=r===e.value,I.isObservable(n)&&(["checked"].includes(t)&&e.addEventListener("input",M.bind(null,e,t,r,n)),n.subscribe(R.bind(null,e,t)))}function j(e,t,n){const r=n=>{"value"!==t?e.setAttribute(t,n):e.value=n};r(n.val()),n.subscribe(r),"value"===t&&e.addEventListener("input",()=>n.set(e.value))}P.useValueProperty=function(e="value"){Object.defineProperty(l.prototype,e,{get(){return this.$currentValue},set(e){this.set(e)},configurable:!0})},P.getById=function(e){const t=o.getObservableById(parseInt(e));if(!t)throw new s("Observable.getById : No observable found with id "+e);return t},P.cleanup=function(e){e.cleanup()},P.autoCleanup=function(e=!1,t={}){if(!e)return;const{interval:n=6e4,threshold:r=100}=t;window.addEventListener("beforeunload",()=>{o.cleanup()}),setInterval(()=>o.cleanObservables(r),n)};const W=new Map;let q=null;const z={createTextNode:()=>(q||(q=document.createTextNode("")),q.cloneNode()),createObservableNode(e,t){const n=z.createTextNode();return t.subscribe(e=>n.nodeValue=e),n.nodeValue=t.val(),e&&e.appendChild(n),n},createHydratableNode(e,t){const n=z.createTextNode();return t.$hydrate(n),n},createStaticTextNode(e,t){let n=z.createTextNode();return n.nodeValue=t,e&&e.appendChild(n),n},createElement(e){if(e){if(W.has(e))return W.get(e).cloneNode();const t=document.createElement(e);return W.set(e,t),t.cloneNode()}return new k("Fragment")},processChildren(e,t){if(null!==e){if(a.emit("BeforeProcessChildren",t),Array.isArray(e))for(let n=0,r=e.length;n<r;n++){let r=this.getChild(e[n]);null!==r&&t.appendChild(r)}else{let n=this.getChild(e);n&&t.appendChild(n)}a.emit("AfterProcessChildren",t)}},getChild(e){if(null===e)return null;if(I.isString(e)&&(e=e.resolveObservableTemplate?e.resolveObservableTemplate():e,I.isString(e)))return z.createStaticTextNode(null,e);if(I.isElement(e))return e;if(I.isObservable(e))return z.createObservableNode(null,e);if(I.isNDElement(e))return e.$element??e.$build?.()??null;if(I.$element)return I.$element;if(I.isArray(e)){const t=document.createDocumentFragment();for(let n=0,r=e.length;n<r;n++)t.appendChild(this.getChild(e[n]));return t}return I.isFunction(e)?(a.emit("BeforeProcessComponent",e),this.getChild(e())):e?.$hydrate?z.createHydratableNode(null,e):z.createStaticTextNode(null,e)},processAttributes(e,t){I.isFragment(e)||t&&function(e,t){if(I.validateAttributes(t),!I.isObject(t))throw new s("Attributes must be an object");for(let n in t){const r=n.toLowerCase();let o=t[r];if(null!=o){if(I.isString(o)){if(o=o.resolveObservableTemplate?o.resolveObservableTemplate():o,I.isString(o)){e.setAttribute(r,o);continue}const t=o.filter(e=>I.isObservable(e));o=P.computed(()=>o.map(e=>I.isObservable(e)?e.val():e).join(" ")||" ",t)}"class"===r&&I.isObject(o)?L(e,o):"style"===r&&I.isObject(o)?_(e,o):N.includes(r)?B(e,r,o):I.isObservable(o)?j(e,r,o):o.$hydrate?o.$hydrate(e,r):e.setAttribute(r,o)}}}(e,t)},setup:(e,t,n)=>(a.emit("Setup",e,t,n),e)};Object.defineProperty(HTMLElement.prototype,"nd",{configurable:!0,get(){return new g(this)}});const H={getClasses(){return this.$element.className?.split(" ").filter(Boolean)},add(e){const t=this.getClasses();t.indexOf(e)>=0||(t.push(e),this.$element.className=t.join(" "))},remove(e){const t=this.getClasses(),n=t.indexOf(e);n<0||(t.splice(n,1),this.$element.className=t.join(" "))},toggle(e,t=void 0){const n=this.getClasses(),r=n.indexOf(e);if(r>=0){if(!0===t)return;n.splice(r,1)}else{if(!1===t)return;n.push(e)}this.$element.className=n.join(" ")},contains(e){return this.getClasses().indexOf(e)>=0}};Object.defineProperty(HTMLElement.prototype,"classes",{configurable:!0,get(){return{$element:this,...H}}});let U=e=>e;t.ArgTypes={},t.ArgTypes={string:()=>!0,number:()=>!0,boolean:()=>!0,observable:()=>!0,element:()=>!0,function:()=>!0,object:()=>!0,objectNotNull:()=>!0,children:()=>!0,attributes:()=>!0,optional:()=>!0,oneOf:()=>!0};const K=function(e,t=null){if(!I.isJson(e)||e?.$hydrate){const n=t;t=e,e=n}return{props:e,children:t}},J=function(e){return I.isObservable(e)?z.createObservableNode(null,e):z.createStaticTextNode(null,e)};function Q(e,t,n,r=null){let{props:o,children:s=null}=K(n,r),i=z.createElement(e),a=t&&"function"==typeof t?t(i):i;return o&&z.processAttributes(a,o),s&&z.processChildren(s,a),z.setup(a,o,t)}function Z(e,t){return Q.bind(null,e.toLowerCase(),t)}const G=new WeakMap;function X(e){let t=null,n=!1;const r=(e,t)=>{const n=G.get(e);if(3===e.nodeType)return n&&n.value?n.value(t):e.cloneNode(!0);const o=e.cloneNode(e.fullCloneNode);if(n&&(((e,t,n)=>{let r=null;if(t.attributes){r=r||{};for(const e in t.attributes)r[e]=t.attributes[e](...n)}if(t.classes){r=r||{},r.class={};for(const e in t.classes)r.class[e]=t.classes[e](...n)}if(t.styles){r=r||{},r.style={};for(const e in t.styles)r.style[e]=t.styles[e](...n)}r&&z.processAttributes(e,r)})(o,n,t),function(e,t,n){if(!t.attach)return null;t.attach(e,...n)}(o,n,t)),e.fullCloneNode)return o;const s=e.childNodes;for(let e=0,n=s.length;e<n;e++){const n=s[e],i=r(n,t);o.appendChild(i)}return o};this.clone=o=>{if(!t&&(t=e(this),!n)){const e=t.cloneNode(!0);return e.fullCloneNode=!0,e}return n?r(t,o):t.cloneNode(!0)};const o=(e,t)=>({$hydrate:(r,o)=>{n=!0,function(e,t,n,r){G.has(n)||G.set(n,{});const o=G.get(n);"value"!==t?"attach"!==t?(o[t]=o[t]||{},o[t][r]=e):o.attach=e:o.value=e}(e,t,r,o)}});this.style=e=>o(e,"styles"),this.class=e=>o(e,"classes"),this.property=e=>this.value(e),this.value=e=>o("function"!=typeof e?function(t){const n=t[0];return J(n[e])}:function(t){return J(e(...t))},"value"),this.attr=e=>o(e,"attributes"),this.attach=e=>o(e,"attach")}function Y(e){let t=null,n=null;this.render=r=>{if(t||(t=e(this)),!n)return t;for(const e in n){(0,n[e])(...r)}return t},this.createSection=(e,t)=>{n=n||{};const r=new k("Component "+e);return n[e]=function(...e){r.removeChildren(),t?r.appendChild(t(...e)):r.append(e)},r}}Function.prototype.args=function(...e){return this},Function.prototype.cached=function(...e){let t,n=()=>t;return()=>(t||(t=this.apply(this,e),t.cloneNode?n=()=>t.cloneNode(!0):t.$element&&(n=()=>new g(t.$element.cloneNode(!0)))),n())},Function.prototype.errorBoundary=function(e){return(...t)=>{try{return this.apply(this,t)}catch(t){return e(t)}}},String.prototype.use=function(e){const t=this;return P.computed(()=>t.replace(/\$\{(.*?)}/g,(t,n)=>{const r=e[n];return I.isObservable(r)?r.val():r}),Object.values(e))},String.prototype.resolveObservableTemplate=function(){return I.containsObservableReference(this)?this.split(/(\{\{#ObItem::\([0-9]+\)\}\})/g).filter(Boolean).map(e=>{if(!I.containsObservableReference(e))return e;const[t,n]=e.match(/\{\{#ObItem::\(([0-9]+)\)\}\}/);return P.getById(n)}):this.valueOf()};const ee=e=>{let t=null;return new Proxy({},{get:(n,r)=>(null===t&&(t=e()),t[r])})},te=e=>{const t=new Map;return new Proxy({},{get:(n,r)=>{if(!t.has(r)){if(e.length>0)return(...n)=>{const o=e(...n);return t.set(r,o),o};t.set(r,e())}return t.get(r)}})},ne={once:e=>ee(e),memoize:e=>te(e)},re=function(e,{propagation:t=!1,deep:n=!1}={}){if(!Array.isArray(e))throw new s("Observable.array : target must be an array");l.call(this,e),a.emit("CreateObservableArray",this)};(re.prototype=Object.create(l.prototype)).__$isObservableArray=!0,["push","pop","shift","unshift","reverse","sort","splice"].forEach(e=>{re.prototype[e]=function(...t){const n=this.$currentValue[e](...t);return this.trigger({action:e,args:t,result:n}),n}}),["map","forEach","filter","reduce","some","every","find","findIndex","concat","includes","indexOf"].forEach(e=>{re.prototype[e]=function(...t){return this.$currentValue[e](...t)}}),re.prototype.clear=function(){return this.$currentValue.length=0,this.trigger({action:"clear"}),!0},re.prototype.at=function(e){return this.$currentValue[e]},re.prototype.merge=function(e){this.$currentValue.push(...e),this.trigger({action:"merge",args:e})},re.prototype.count=function(e){let t=0;return this.$currentValue.forEach((n,r)=>{e(n,r)&&t++}),t},re.prototype.length=function(){return this.$currentValue.length},re.prototype.swap=function(e,t){const n=this.$currentValue,r=n.length;if(r<e||r<t)return!1;if(t<e){const n=e;e=t,t=n}const o=n[e],s=n[t];return n[e]=s,n[t]=o,this.trigger({action:"swap",args:[e,t],result:[o,s]}),!0},re.prototype.remove=function(e){const t=this.$currentValue.splice(e,1);return 0===t.length?[]:(this.trigger({action:"remove",args:[e],result:t[0]}),t)},re.prototype.removeItem=function(e){const t=this.$currentValue.indexOf(e);return this.remove(t)},re.prototype.isEmpty=function(){return 0===this.$currentValue.length},re.prototype.populateAndRender=function(e,t){this.trigger({action:"populate",args:[this.$currentValue,e,t]})},P.array=function(e){return new re(e)},P.batch=function(e){const t=P(0),n=function(){if(I.isAsyncFunction(e))return e(...arguments).then(()=>{t.trigger()}).catch(e=>{throw e});e(...arguments),t.trigger()};return n.$observer=t,n};P.init=function(e,{propagation:t=!1,deep:n=!0}={}){const r={};for(const o in e){const s=e[o];if(Array.isArray(s)){if(n){const e=s.map(e=>I.isJson(e)?P.json(e,{propagation:t,deep:n}):I.isArray(e)?P.array(e,{propagation:t,deep:n}):P(e));r[o]=P.array(e,{propagation:t});continue}r[o]=P.array(s,{propagation:t})}else I.isObservable(s)||I.isProxy(s)?r[o]=s:r[o]=P(s)}const o=()=>function(e){const t={};for(const n in e){const r=e[n];if(I.isObservable(r)){let e=r.val();Array.isArray(e)&&(e=e.map(e=>I.isObservable(e)?e.val():I.isProxy(e)?e.$value:e)),t[n]=e}else I.isProxy(r)?t[n]=r.$value:t[n]=r}return t}(r),s=()=>P.init(o(),{propagation:t,deep:n}),i=e=>{P.update(u,e)},a=e=>function(e,t){const n=e[t];return I.isObservable(n)?n.val():I.isProxy(n)?n.$value:n}(r,e),u=new Proxy(r,{get:(t,n)=>"__isProxy__"===n||("$value"===n?o():"$clone"===n?s:"$keys"===n?Object.keys(e):"$observables"===n?Object.values(t):"$set"===n||"$updateWith"===n?i:"$get"===n?a:"$val"===n?o:void 0!==t[n]?t[n]:void 0),set:(e,t,n)=>void 0===e[t]||(I.isObservable(n)?e[t].set(n.val()):e[t].set(n),!0)});return u},P.arrayOfObject=function(e){return e.map(e=>P.object(e))},P.value=function(e){if(I.isObservable(e))return e.val();if(I.isProxy(e))return e.$value;if(I.isArray(e)){const t=[];for(let n=0,r=e.length;n<r;n++){const r=e[n];t.push(P.value(r))}return t}return e},P.update=function(e,t){const n=I.isProxy(t)?t.$value:t;for(const r in n){const o=e[r],s=t[r],i=n[r];if(I.isObservable(o)){if(I.isArray(i)){const e=s.at(0);if(I.isObservable(e)||I.isProxy(e)){const t=i.map(t=>I.isProxy(e)?P.init(t):P(t));o.set(t);continue}o.set([...i]);continue}o.set(i)}else I.isProxy(o)?P.update(o,i):e[r]=i}},P.object=P.init,P.json=P.init,P.computed=function(e,t=[]){const n=new l(e()),r=()=>n.set(e());if(a.emit("CreateObservableComputed",n,t),I.isFunction(t)){if(!I.isObservable(t.$observer))throw new s("Observable.computed : dependencies must be valid batch function");return t.$observer.subscribe(r),n}return t.forEach(e=>{I.isProxy(e)?e.$observables.forEach(e=>{e.subscribe(r)}):e.subscribe(r)}),n};const oe=function(){const e=new Map;return{use(t){const{observer:n,subscribers:r}=e.get(t),o=P(n.val()),s=n.subscribe(e=>o.set(e)),i=o.subscribe(e=>n.set(e));return o.destroy=()=>{s(),i(),o.cleanup()},r.add(o),o},follow(e){return this.use(e)},create(t,n){const r=P(n);return e.set(t,{observer:r,subscribers:new Set}),r},get(t){const n=e.get(t);return n?n.observer:null},getWithSubscribers:t=>e.get(t),delete(t){const n=e.get(t);n&&(n.observer.cleanup(),n.subscribers.forEach(e=>e.destroy()),n.observer.clear())}}}();const se=function(e,t,{comment:n=null,shouldKeepInCache:o=!0}={}){if(!I.isObservable(e)&&!I.isObservableWhenResult(e))return r.warn("ShowIf","ShowIf : condition must be an Observable / "+n,e);const s=new k("Show if : "+(n||""));let i=null;const a=()=>(i&&o||(i=z.getChild(t),I.isFragment(i)&&(i=Array.from(i.childNodes))),i);return e.val()&&s.appendChild(a()),e.subscribe(e=>{e?s.appendChild(a()):s.remove()}),s},ie=function(e,t,n=!0){if(!I.isObservable(e))throw new s("Toggle : condition must be an Observable");const r=new k("Match"),o=new Map,i=function(e){if(n&&o.has(e))return o.get(e);let r=t[e];return r?(r=z.getChild(r),I.isFragment(r)&&(r=Array.from(r.children)),n&&o.set(e,r),r):null},a=e.val(),u=i(a);return u&&r.appendChild(u),e.subscribe(e=>{const t=i(e);r.remove(),t&&r.appendChild(t)}),r},ae=function(e,t,n){if(!I.isObservable(e))throw new s("Toggle : condition must be an Observable");return ie(e,{true:t,false:n})},ue=Z("div"),le=Z("span"),ce=Z("label"),he=Z("p"),pe=he,de=Z("strong"),fe=Z("h1"),be=Z("h2"),me=Z("h3"),ge=Z("h4"),ye=Z("h5"),ve=Z("h6"),we=Z("br"),$e=Z("a"),Ce=Z("pre"),Oe=Z("code"),Se=Z("blockquote"),Ae=Z("hr"),Ee=Z("em"),xe=Z("small"),Ie=Z("mark"),ke=Z("del"),Ne=Z("ins"),Pe=Z("sub"),Fe=Z("sup"),Te=Z("abbr"),Ve=Z("cite"),De=Z("q"),Re=Z("dl"),Me=Z("dt"),Le=Z("dd"),_e=Z("form",function(e){return e.submit=function(t){return"function"==typeof t?(e.onSubmit(e=>{e.preventDefault(),t(e)}),e):(this.setAttribute("action",t),e)},e.multipartFormData=function(){return this.setAttribute("enctype","multipart/form-data"),e},e.post=function(t){return this.setAttribute("method","post"),this.setAttribute("action",t),e},e.get=function(e){this.setAttribute("method","get"),this.setAttribute("action",e)},e}),Be=Z("input"),je=Z("textarea"),We=je,qe=Z("select"),ze=Z("fieldset"),He=Z("option"),Ue=Z("legend"),Ke=Z("datalist"),Je=Z("output"),Qe=Z("progress"),Ze=Z("meter"),Ge=Z("button"),Xe=Z("main"),Ye=Z("section"),et=Z("article"),tt=Z("aside"),nt=Z("nav"),rt=Z("figure"),ot=Z("figcaption"),st=Z("header"),it=Z("footer"),at=Z("img"),ut=function(e,t){return at({src:e,...t})},lt=Z("details"),ct=Z("summary"),ht=Z("dialog"),pt=Z("menu"),dt=Z("ol"),ft=Z("ul"),bt=Z("li"),mt=bt,gt=dt,yt=ft,vt=Z("audio"),wt=Z("video"),$t=Z("source"),Ct=Z("track"),Ot=Z("canvas"),St=Z("svg"),At=Z("time"),Et=Z("data"),xt=Z("address"),It=Z("kbd"),kt=Z("samp"),Nt=Z("var"),Pt=Z("wbr"),Ft=Z("caption"),Tt=Z("table"),Vt=Z("thead"),Dt=Z("tfoot"),Rt=Z("tbody"),Mt=Z("tr"),Lt=Mt,_t=Z("th"),Bt=_t,jt=_t,Wt=Z("td"),qt=Wt,zt=Z("");var Ht=Object.freeze({__proto__:null,Abbr:Te,Address:xt,Anchor:k,Article:et,Aside:tt,AsyncImg:function(e,t,n,r){const o=I.isObservable(e)?e.val():e,i=ut(t||o,n),a=new Image;return a.onload=()=>{I.isFunction(r)&&r(null,i),i.src=I.isObservable(e)?e.val():e},a.onerror=()=>{I.isFunction(r)&&r(new s("Image not found"))},I.isObservable(e)&&e.subscribe(e=>{a.src=e}),a.src=o,i},Audio:vt,BaseImage:at,Blockquote:Se,Br:we,Button:Ge,Canvas:Ot,Caption:Ft,Checkbox:e=>Be({type:"checkbox",...e}),Cite:Ve,Code:Oe,ColorInput:e=>Be({type:"color",...e}),Data:Et,Datalist:Ke,DateInput:e=>Be({type:"date",...e}),DateTimeInput:e=>Be({type:"datetime-local",...e}),Dd:Le,Del:ke,Details:lt,Dialog:ht,Div:ue,Dl:Re,Dt:Me,Em:Ee,EmailInput:e=>Be({type:"email",...e}),FieldSet:ze,FigCaption:ot,Figure:rt,FileInput:e=>Be({type:"file",...e}),Footer:it,ForEach:function(e,t,n,{shouldKeepItemsInCache:o=!1}={}){const i=new k("ForEach"),a=i.endElement();i.startElement();let u=new Map,l=null;const c=new Set,h=e=>{if(!o)for(const[t,n]of u.entries()){if(c.has(t))continue;const r=n.child?.deref();e&&r&&e.removeChild(r),n.indexObserver?.cleanup(),n.child=null,n.indexObserver=null,u.delete(n.keyId),l&&l.delete(n.keyId)}},p=(e,o)=>{const i=d(e,o,n);if(u.has(i)){const e=u.get(i);if(e.indexObserver?.set(o),e.isNew=!1,e.child?.deref())return i;u.delete(i)}try{const n=t.length>=2?P(o):null;let r=z.getChild(t(e,n));if(!r||I.isFragment(r))throw new s("ForEachArray child can't be null or undefined!");u.set(i,{keyId:i,isNew:!0,child:new WeakRef(r),indexObserver:n})}catch(e){throw r.error("ForEach",`Error creating element for key ${i}`,e),e}return i},f=()=>{const t=a.parentNode;if(!t)return;const n=I.isObservable(e)?e.val():e;if(c.clear(),Array.isArray(n))for(let e=0,t=n.length;e<t;e++){const t=p(n[e],e);c.add(t)}else for(const e in n){const t=p(n[e],e);c.add(t)}if(0===c.size)return i.removeChildren(),h(),void l?.clear();h(t),l&&0!==l.size?(()=>{let e=document.createDocumentFragment();const t=Array.from(c);Array.from(l);for(const n in t){const r=t[n],o=u.get(r);if(!o)continue;const s=o.child.deref();s&&e.appendChild(s)}i.replaceContent(e)})():(e=>{const t=document.createDocumentFragment();for(const e of c){const n=u.get(e);if(!n)continue;const r=n.child?.deref();r&&t.appendChild(r)}e.insertBefore(t,a)})(t),l?.clear(),l=new Set([...c])};return f(),I.isObservable(e)&&e.subscribe(f),i},ForEachArray:function(e,t,n,r={}){const o=new k("ForEach Array"),i=o.endElement(),a=o.startElement();let u=new Map,l=0;const c=t.length>=2,h=new WeakMap,p=()=>{o.removeChildren(),g(),l=0},f=(e,t)=>h.has(e)?h.get(e):d(e,t,n),b=e=>v(f(e)),m=(e,t=!0)=>{if(e){if(t){const t=e.child;t?.remove(),u.delete(e.keyId)}e.indexObserver?.deref()?.cleanup()}},g=()=>{if(!r.shouldKeepItemsInCache)if(c){for(const[e,t]of u.entries())m(t,!1);u.clear()}else u.clear()},y=(e,n)=>{const r=f(e,n);if(u.has(r)){const e=u.get(r);e.indexObserver?.deref()?.set(n);const t=e.child;if(t)return t;u.delete(r)}const o=c?P(n):null;let i=z.getChild(t(e,o));if(!i||I.isFragment(i))throw new s("ForEachArray child can't be null or undefined!");return u.set(r,{keyId:r,child:i,indexObserver:o?new WeakRef(o):null}),h.set(e,r),i},v=function(e){const t=u.get(e);if(!t)return null;const n=t.child;return n||(m(t,!1),null)},w=function(e,t){const n=u.get(e);if(!n)return null;const r=n.child;if(!r)return null;t?t.appendChild(r):r.remove()},$={toFragment(e,t=0){const n=document.createDocumentFragment();for(let t=0,r=e.length;t<r;t++)n.appendChild(y(e[t],l)),l++;return n},add(e,t=2){const n=$.toFragment(e);setTimeout(()=>{o.appendElement(n)},t)},replace(e){p(),$.add(e)},reOrder(e){let t=null;const n=document.createDocumentFragment();for(const r of e)t=b(r),t&&n.appendChild(t);t=null,o.appendElement(n,i)},removeOne(e,t){((e,t=!0)=>{m(u.get(e),t)})(f(e,t),!0)},clear:p,merge(e){$.add(e)},push(e){let t=0;r.pushDelay&&(t=r.pushDelay(e)??0),$.add(e,t)},populate([e,t,n]){const r=document.createDocumentFragment();for(let o=0;o<t;o++){const t=n(o);e.push(t),r.append(y(t,o)),l++}o.appendChild(r),r.replaceChildren()},unshift(e){o.insertBefore($.toFragment(e),a.nextSibling)},splice(e,t){const[n,r,...s]=e;let a=null;const u=document.createDocumentFragment();if(t.length>0){let e=f(t[0],n);if(1===t.length)w(e,u);else if(t.length>1){const r=v(e);a=r?.previousSibling;for(let e=0;e<t.length;e++){const r=f(t[e],n+e);w(r,u)}}}else a=i;u.replaceChildren(),s&&s.length&&a&&o.insertBefore($.toFragment(s),a.nextSibling)},reverse(e,t){$.reOrder(t)},sort(e,t){$.reOrder(t)},remove(e,t){$.removeOne(t)},pop(e,t){$.removeOne(t)},shift(e,t){$.removeOne(t)},swap(e,t){const n=i.parentNode;let r=b(t[0]),o=b(t[1]);if(!r||!o)return;const s=o.nextSibling;n.insertBefore(o,r),n.insertBefore(r,s),r=null,o=null}},C=(e,t,n)=>{if("clear"!==n.action&&e.length){if(n?.action)$[n.action]&&$[n.action](n.args,n.result);else{if(0===l)return void $.add(e);$.replace(e)}((e,t=0)=>{if(!c)return;let n=t;for(let r=t,o=e?.length;r<o;r++){const t=u.get(f(e[r],r));t&&(t.indexObserver?.deref()?.set(n),n++)}})(e,0)}else{if(0===l)return;p()}};return e.val().length&&C(e.val(),0,{action:null}),I.isObservable(e)&&e.subscribe(C),o},Form:_e,Fragment:zt,H1:fe,H2:be,H3:me,H4:ge,H5:ye,H6:ve,Header:st,HiddenInput:e=>Be({type:"hidden",...e}),HideIf:function(e,t,n){const r=P(!e.val());return e.subscribe(e=>r.set(!e)),se(r,t,n)},HideIfNot:function(e,t,n){return se(e,t,n)},Hr:Ae,Img:ut,Input:Be,Ins:Ne,Kbd:It,Label:ce,LazyImg:function(e,t){return ut(e,{...t,loading:"lazy"})},Legend:Ue,Li:mt,Link:$e,ListItem:bt,Main:Xe,Mark:Ie,Match:ie,Menu:pt,Meter:Ze,MonthInput:e=>Be({type:"month",...e}),NativeDocumentFragment:k,Nav:nt,NumberInput:e=>Be({type:"number",...e}),Ol:gt,Option:He,OrderedList:dt,Output:Je,P:he,Paragraph:pe,PasswordInput:e=>Be({type:"password",...e}),Pre:Ce,Progress:Qe,Quote:De,Radio:e=>Be({type:"radio",...e}),RangeInput:e=>Be({type:"range",...e}),ReadonlyInput:e=>Be({readonly:!0,...e}),Samp:kt,SearchInput:e=>Be({type:"search",...e}),Section:Ye,Select:qe,ShowIf:se,ShowWhen:function(){if(2===arguments.length){const[e,t]=arguments;if(!I.isObservableWhenResult(e))throw new s("showWhen observer must be an ObservableWhenResult",{data:e,help:"Use observer.when(target) to create an ObservableWhenResult"});return se(e,t)}if(3===arguments.length){const[e,t,n]=arguments;if(!I.isObservable(e))throw new s("showWhen observer must be an Observable",{data:e});return se(e.when(t),n)}throw new s("showWhen must have 2 or 3 arguments",{data:["showWhen(observer, target, view)","showWhen(observerWhenResult, view)"]})},SimpleButton:(e,t)=>Ge(e,{type:"button",...t}),Small:xe,Source:$t,Span:le,Strong:de,Sub:Pe,SubmitButton:(e,t)=>Ge(e,{type:"submit",...t}),Summary:ct,Sup:Fe,Svg:St,Switch:ae,TBody:Rt,TBodyCell:qt,TFoot:Dt,TFootCell:jt,THead:Vt,THeadCell:Bt,TRow:Lt,Table:Tt,Td:Wt,TelInput:e=>Be({type:"tel",...e}),TextArea:je,TextInput:We,Th:_t,Time:At,TimeInput:e=>Be({type:"time",...e}),Tr:Mt,Track:Ct,Ul:yt,UnorderedList:ft,UrlInput:e=>Be({type:"url",...e}),Var:Nt,Video:wt,Wbr:Pt,WeekInput:e=>Be({type:"week",...e}),When:function(e){if(!I.isObservable(e))throw new s("When : condition must be an Observable");let t=null,n=null;return{show(e){return t=e,this},otherwise:r=>(n=r,ae(e,t,n))}},createPortal:function(e,{parent:t,name:n="unnamed"}={}){const r=k("Portal "+n);return r.appendChild(z.getChild(e)),(t||document.body).appendChild(r),r}});const Ut={};function Kt(e,t,n={}){e="/"+f(e,"/").replace(/\/+/,"/");let r=null,o=n.name||null;const s=n.middlewares||[],i=n.shouldRebuild||!1,a=n.with||{},u=n.layout||null,l={},c=[],h=e=>{if(!e)return null;const[t,n]=e.split(":");let r=a[t];return!r&&n&&(r=Ut[n]),r||(r="[^/]+"),r=r.replace("(","(?:"),{name:t,pattern:`(${r})`}},p=()=>{if(r)return r;const t=e.replace(/\{(.*?)}/gi,(e,t)=>{const n=h(t);return n&&n.pattern?(l[n.name]=n.pattern,c.push(n.name),n.pattern):e});return r=new RegExp("^"+t+"$"),r};this.name=()=>o,this.component=()=>t,this.middlewares=()=>s,this.shouldRebuild=()=>i,this.path=()=>e,this.layout=()=>u,this.match=function(e){e="/"+f(e,"/");if(!p().exec(e))return!1;const t={};return p().exec(e).forEach((e,n)=>{if(n<1)return;const r=c[n-1];t[r]=e}),t},this.url=function(t){const n=e.replace(/\{(.*?)}/gi,(e,n)=>{const r=h(n);if(t.params&&t.params[r.name])return t.params[r.name];throw new Error(`Missing parameter '${r.name}'`)}),r="object"==typeof t.query?new URLSearchParams(t.query).toString():null;return(t.basePath?t.basePath:"")+(r?`${n}?${r}`:n)}}class Jt extends Error{constructor(e,t){super(e),this.context=t}}const Qt=(e,t)=>{const n=[];return e.forEach(e=>{n.push(f(e.suffix,"/"))}),n.push(f(t,"/")),n.join("/")},Zt=(e,t)=>{const n=[];return e.forEach(e=>{e.options.middlewares&&n.push(...e.options.middlewares)}),t&&n.push(...t),n},Gt=(e,t)=>{const n=[];return e.forEach(e=>{e.options?.name&&n.push(e.options.name)}),t&&n.push(t),n.join(".")},Xt=e=>{for(let t=e.length-1;t>=0;t--)if(e[t]?.options?.layout)return e[t].options.layout;return null};function Yt(){const e=[];let t=0;const n=n=>{const o=t+n;if(!e[o])return;t=o;const{route:s,params:i,query:a,path:u}=e[o];r(u)},r=e=>{window.location.replace(`${window.location.pathname}${window.location.search}#${e}`)},o=()=>window.location.hash.slice(1);this.push=function(n){const{route:s,params:i,query:a,path:u}=this.resolve(n);u!==o()&&(e.splice(t+1),e.push({route:s,params:i,query:a,path:u}),t++,r(u))},this.replace=function(n){const{route:r,params:s,query:i,path:a}=this.resolve(n);a!==o()&&(e[t]={route:r,params:s,query:i,path:a})},this.forward=function(){return t<e.length-1&&n(1)},this.back=function(){return t>0&&n(-1)},this.init=function(n){window.addEventListener("hashchange",()=>{const{route:e,params:t,query:n,path:r}=this.resolve(o());this.handleRouteChange(e,t,n,r)});const{route:r,params:s,query:i,path:a}=this.resolve(n||o());e.push({route:r,params:s,query:i,path:a}),t=0,this.handleRouteChange(r,s,i,a)}}function en(){this.push=function(e){try{const{route:t,path:n,params:r,query:o}=this.resolve(e);if(window.history.state&&window.history.state.path===n)return;window.history.pushState({name:t.name(),params:r,path:n},t.name()||n,n),this.handleRouteChange(t,r,o,n)}catch(e){r.error("HistoryRouter","Error in pushState",e)}},this.replace=function(e){const{route:t,path:n,params:o}=this.resolve(e);try{window.history.replaceState({name:t.name(),params:o,path:n},t.name()||n,n),this.handleRouteChange(t,o,{},n)}catch(e){r.error("HistoryRouter","Error in replaceState",e)}},this.forward=function(){window.history.forward()},this.back=function(){window.history.back()},this.init=function(e){window.addEventListener("popstate",e=>{try{if(!e.state||!e.state.path)return;const t=e.state.path,{route:n,params:r,query:o,path:s}=this.resolve(t);if(!n)return;this.handleRouteChange(n,r,o,s)}catch(e){r.error("HistoryRouter","Error in popstate event",e)}});const{route:t,params:n,query:o,path:s}=this.resolve(e||window.location.pathname+window.location.search);this.handleRouteChange(t,n,o,s)}}function tn(){const e=[];let t=0;const n=n=>{const r=t+n;if(!e[r])return;t=r;const{route:o,params:s,query:i,path:a}=e[r];this.handleRouteChange(o,s,i,a)};this.push=function(n){const{route:r,params:o,query:s,path:i}=this.resolve(n);e[t]&&e[t].path===i||(e.splice(t+1),e.push({route:r,params:o,query:s,path:i}),t++,this.handleRouteChange(r,o,s,i))},this.replace=function(n){const{route:r,params:o,query:s,path:i}=this.resolve(n);e[t]={route:r,params:o,query:s,path:i},this.handleRouteChange(r,o,s,i)},this.forward=function(){return t<e.length-1&&n(1)},this.back=function(){return t>0&&n(-1)},this.init=function(n){const r=n||window.location.pathname+window.location.search,{route:o,params:s,query:i,path:a}=this.resolve(r);e.push({route:o,params:s,query:i,path:a}),t=0,this.handleRouteChange(o,s,i,a)}}const nn="default";function rn(e={}){const t=[],n={},o=[],s=[],i={route:null,params:null,query:null,path:null,hash:null};if("hash"===e.mode)Yt.apply(this,[]);else if("history"===e.mode)en.apply(this,[]);else{if("memory"!==e.mode)throw new Jt("Invalid router mode "+e.mode);tn.apply(this,[])}const a=function(e,t){for(const n of s)try{n(e),t&&t(e)}catch(e){r.warn("Route Listener","Error in listener:",e)}};this.routes=()=>[...t],this.currentState=()=>({...i}),this.add=function(e,r,s){const i=new Kt(Qt(o,e),r,{...s,middlewares:Zt(o,s?.middlewares||[]),name:s?.name?Gt(o,s.name):null,layout:s?.layout||Xt(o)});return t.push(i),i.name()&&(n[i.name()]=i),this},this.group=function(e,t,n){if(!I.isFunction(n))throw new Jt("Callback must be a function");return o.push({suffix:e,options:t}),n(),o.pop(),this},this.generateUrl=function(e,t={},r={}){const o=n[e];if(!o)throw new Jt(`Route not found for name: ${e}`);return o.url({params:t,query:r})},this.resolve=function(e){if(I.isJson(e)){const t=n[e.name];if(!t)throw new Jt(`Route not found for name: ${e.name}`);return{route:t,params:e.params,query:e.query,path:t.url({...e})}}const[r,o]=e.split("?"),s="/"+f(r,"/");let i,a=null;for(const e of t)if(i=e.match(s),i){a=e;break}if(!a)throw new Jt(`Route not found for url: ${r}`);const u={};if(o){const e=new URLSearchParams(o).entries();for(const[t,n]of e)u[t]=n}return{route:a,params:i,query:u,path:e}},this.subscribe=function(e){if(!I.isFunction(e))throw new Jt("Listener must be a function");return s.push(e),()=>{s.splice(s.indexOf(e),1)}},this.handleRouteChange=function(e,t,n,r){i.route=e,i.params=t,i.query=n,i.path=r;const o=[...e.middlewares(),a];let s=0;const u={...i},l=e=>{if(s++,!(s>=o.length))return o[s](e||u,l)};return o[s](u,l)}}function on(e,t){const{to:n,href:r,...o}=e,s=n||r;if(I.isString(s)){const e=rn.get();return $e({...o,href:s},t).nd.onPreventClick(()=>{e.push(s)})}const i=s.router||nn,a=rn.get(i);if(!a)throw new Jt('Router not found "'+i+'" for link "'+s.name+'"');const u=a.generateUrl(s.name,s.params,s.query);return $e({...o,href:u},t).nd.onPreventClick(()=>{a.push(u)})}rn.routers={},rn.create=function(t,n){if(!I.isFunction(n))throw r.error("Router","Callback must be a function",e),new Jt("Callback must be a function");const o=new rn(t);return rn.routers[t.name||nn]=o,n(o),o.init(t.entry),o.mount=function(e){if(I.isString(e)){const t=document.querySelector(e);if(!t)throw new Jt(`Container not found for selector: ${e}`);e=t}else if(!I.isElement(e))throw new Jt("Container must be a string or an Element");return function(e,t){const n=new Map,r=function(e,n){t.innerHTML="";const r=n.layout();r?t.appendChild(r(e)):t.appendChild(e)},o=function(e){if(!e.route)return;const{route:t,params:o,query:s,path:i}=e;if(n.has(i)){const e=n.get(i);return void r(e,t)}const a=t.component()({params:o,query:s});n.set(i,a),r(a,t)};return e.subscribe(o),o(e.currentState()),t}(o,e)},o},rn.get=function(e){const t=rn.routers[e||nn];if(!t)throw new Jt(`Router not found for name: ${e}`);return t},rn.push=function(e,t=null){return rn.get(t).push(e)},rn.replace=function(e,t=null){return rn.get(t).replace(e)},rn.forward=function(e=null){return rn.get(e).forward()},rn.back=function(e=null){return rn.get(e).back()},on.blank=function(e,t){return $e({...e,target:"_blank"},t)};var sn=Object.freeze({__proto__:null,Link:on,RouteParamPatterns:Ut,Router:rn});return t.$=F,t.ElementCreator=z,t.HtmlElementWrapper=Z,t.NDElement=g,t.Observable=P,t.PluginsManager=a,t.Service=ne,t.SingletonView=Y,t.Store=oe,t.TemplateCloner=X,t.Validator=I,t.autoMemoize=te,t.autoOnce=ee,t.classPropertyAccumulator=function(e=[]){let t=I.isString(e)?e.split(" ").filter(Boolean):e;const n=I.isArray(t);return{add(e,r=!0){n?t.push(e):t[e]=r},value:()=>n?t.join(" "):{...t}}},t.createTextNode=J,t.cssPropertyAccumulator=function(e={}){let t=I.isString(e)?e.split(";").filter(Boolean):e;const n=I.isArray(t);return{add(e,r){n?t.push(e+" : "+r):t[e]=r},value:()=>n?t.join(";").concat(";"):{...t}}},t.elements=Ht,t.memoize=e=>{const t=new Map;return(...n)=>{const[r,...o]=n;return t.has(r)||t.set(r,e(...o)),t.get(r)}},t.normalizeComponentArgs=K,t.obs=T,t.once=e=>{let t=null;return(...n)=>(null===t&&(t=e(...n)),t)},t.router=sn,t.useCache=function(e){let t=null;const n=function(n){return t||(t=new X(e)),t.clone(n)};return e.length<2?function(...e){return n(e)}:function(e,t,...r){return n([e,t,...r])}},t.useSingleton=function(e){let t=null;return function(...n){return t||(t=new Y(e)),t.render(n)}},t.withValidation=U,t}({});
|
|
1
|
+
var NativeDocument=function(t){"use strict";let n={};n={log(){},warn(){},error(){},disable(){}};var r=n;const o=function(){let e=0;const t=new Map;return{register(n){const r=++e;return t.set(r,new WeakRef(n)),r},unregister(e){t.delete(e)},getObservableById:e=>t.get(e)?.deref(),cleanup(){for(const[e,n]of t){const e=n.deref();e&&e.cleanup()}t.clear()},cleanObservables(e){if(t.size<e)return;let n=0;for(const[e,r]of t)r.deref()||(t.delete(e),n++);n>0&&r.log("Memory Auto Clean",`🧹 Cleaned ${n} orphaned observables`)}}}();class s extends Error{constructor(e,t={}){super(e),this.name="NativeDocumentError",this.context=t,this.timestamp=(new Date).toISOString()}}function i(e,t){this.observable=e,this.checker=t,this.unSubscriptions=[]}i.prototype.__$isObservableChecker=!0,i.prototype.subscribe=function(e){const t=this.observable.subscribe(t=>{e&&e(this.checker(t))});return this.unSubscriptions.push(t),t},i.prototype.check=function(e){return this.observable.check(()=>e(this.val()))},i.prototype.val=function(){return this.checker&&this.checker(this.observable.val())},i.prototype.set=function(e){return this.observable.set(e)},i.prototype.trigger=function(){return this.observable.trigger()},i.prototype.cleanup=function(){return this.observable.cleanup()};const a=function(){const e=new Map,t=new Map;return{list:()=>t,add(n,r){if(!n||"object"!=typeof n)throw new Error(`Plugin ${r} must be an object`);if(!(r=r||n.name)||"string"!=typeof r)throw new Error("Please, provide a valid plugin name");if(!e.has(r)){n.$name=r,e.set(r,n),"function"==typeof n?.init&&n.init();for(const e in n)if(/^on[A-Z]/.test(e)){const r=e.replace(/^on/,"");t.has(r)||t.set(r,new Set),t.get(r).add(n)}}},remove(n){if(!e.has(n))return;const r=e.get(n);"function"==typeof r.cleanup&&r.cleanup();for(const[e,n]of t.entries())n.has(r)&&n.delete(r),0===n.size&&t.delete(e);e.delete(n)},emit(e,...n){if(!t.has(e))return;const o=t.get(e);for(const t of o){const o=t["on"+e];if("function"==typeof o)try{o.call(t,...n)}catch(n){r.error("Plugin Manager",`Error in plugin ${t.$name} for event ${e}`,n)}}}}}(),u=function(e,t){this.$target=t,this.$observer=e};function l(e){this.$previousValue=null,this.$currentValue=e,this.$isCleanedUp=!1,this.$listeners=null,this.$watchers=null,this.$memoryId=null,a.emit("CreateObservable",this)}u.prototype.__$isObservableWhen=!0,u.prototype.subscribe=function(e){return this.$observer.on(this.$target,e)},u.prototype.val=function(){return this.$observer.$currentValue===this.$target},u.prototype.isMath=function(){return this.$observer.$currentValue===this.$target},u.prototype.isActive=function(){return this.$observer.$currentValue===this.$target},Object.defineProperty(l.prototype,"$value",{get(){return this.$currentValue},set(e){this.set(e)},configurable:!0}),l.prototype.__$isObservable=!0;const c={},h=function(){};l.prototype.triggerFirstListener=function(e){this.$listeners[0](this.$currentValue,this.$previousValue,e||{})},l.prototype.triggerListeners=function(e){const t=this.$listeners,n=this.$previousValue,r=this.$currentValue;e=e||c;for(let o=0,s=t.length;o<s;o++)t[o](r,n,e)};const p=function(e,t){"function"!=typeof e?e.set?e.set(t):e.forEach(e=>{e.set?e.set(t):e(t)}):e(t)};l.prototype.triggerWatchers=function(){if(!this.$watchers)return;const e=this.$watchers,t=this.$previousValue,n=this.$currentValue;if(e.has(n)){const t=e.get(n);p(t,!0)}if(e.has(t)){const n=e.get(t);p(n,!1)}},l.prototype.triggerAll=function(e){this.triggerListeners(e),this.triggerWatchers()},l.prototype.triggerWatchersAndFirstListener=function(e){this.triggerListeners(e),this.triggerWatchers()},l.prototype.assocTrigger=function(){this.$watchers?.size&&this.$listeners?.length?this.trigger=1===this.$listeners.length?this.triggerWatchersAndFirstListener:this.triggerAll:this.$listeners?.length?this.trigger=1===this.$listeners.length?this.triggerFirstListener:this.triggerListeners:this.$watchers?.size?this.trigger=this.triggerWatchers:this.trigger=h},l.prototype.trigger=h,l.prototype.set=function(e){const t="function"==typeof e?e(this.$currentValue):e;this.$currentValue!==t&&(this.$previousValue=this.$currentValue,this.$currentValue=t,a.emit("ObservableBeforeChange",this),this.trigger(),this.$previousValue=null,a.emit("ObservableAfterChange",this))},l.prototype.val=function(){return this.$currentValue},l.prototype.disconnectAll=function(){if(this.$listeners?.splice(0),this.$previousValue=null,this.$currentValue=null,this.$watchers)for(const[e,t]of this.$watchers)I.isArray(t)&&t.splice(0);this.$watchers?.clear(),this.$listeners=null,this.$watchers=null,this.trigger=h},l.prototype.cleanup=function(){o.unregister(this.$memoryId),this.disconnectAll(),this.$isCleanedUp=!0,delete this.$value},l.prototype.subscribe=function(e,t=null){if(this.$listeners=this.$listeners??[],this.$isCleanedUp)return r.warn("Observable subscription","⚠️ Attempted to subscribe to a cleaned up observable."),()=>{};if("function"!=typeof e)throw new s("Callback must be a function");return this.$listeners.push(e),this.assocTrigger(),a.emit("ObservableSubscribe",this,t),()=>{this.unsubscribe(e),this.assocTrigger(),a.emit("ObservableUnsubscribe",this)}},l.prototype.on=function(e,t){this.$watchers=this.$watchers??new Map;let n=this.$watchers.get(e);if(n){if(!I.isArray(n))return n=[n],void this.$watchers.set(e,n);n.push(t)}else this.$watchers.set(e,t);return this.assocTrigger(),()=>{const r=n.indexOf(t);n?.splice(r,1),1===n.size?this.$watchers.set(e,n[0]):0===n.size&&(this.$watchers?.delete(e),n=null),this.assocTrigger()}},l.prototype.unsubscribe=function(e){const t=this.$listeners.indexOf(e);t>-1&&this.$listeners.splice(t,1),this.assocTrigger()},l.prototype.check=function(e){return new i(this,e)},l.prototype.get=function(e){const t=this.$currentValue[e];return I.isObservable(t)?t.val():t},l.prototype.when=function(e){return new u(this,e)},l.prototype.toString=function(){return this.$memoryId||o.register(this),"{{#ObItem::("+this.$memoryId+")}}"},l.prototype.equals=function(e){return I.isObservable(e)?this.$currentValue===e.$currentValue:this.$currentValue===e},l.prototype.toBool=function(){return!!this.$currentValue},l.prototype.toggle=function(){this.set(!this.$currentValue)};const d=(e,t,n)=>{if(I.isFunction(n))return n(e,t);if(I.isObservable(e)){const r=e.val();return r&&n?r[n]:t}return I.isObject(e)?e[n]?.val?.()??e[n]??t:e},f=function(e,t){return e.replace(new RegExp(`^[${t}]+|[${t}]+$`,"g"),"")},b={mounted:new WeakMap,mountedSupposedSize:0,unmounted:new WeakMap,unmountedSupposedSize:0,observer:null,checkMutation:function(e){for(const t of e){if(b.mountedSupposedSize>0)for(const e of t.addedNodes){const t=b.mounted.get(e);t&&(t.inDom=!0,t.mounted&&t.mounted(e))}if(b.unmountedSupposedSize>0)for(const e of t.removedNodes){const t=b.unmounted.get(e);t&&(t.inDom=!1,t.unmounted&&!0===t.unmounted(e)&&(t.disconnect(),e.nd?.remove()))}}},watch:function(e,t=!1){let n={inDom:t,mounted:null,unmounted:null,disconnect:()=>{b.mounted.delete(e),b.unmounted.delete(e),b.mountedSupposedSize--,b.unmountedSupposedSize--,n=null}};return{disconnect:n.disconnect,mounted:t=>{n.mounted=t,b.mounted.set(e,n),b.mountedSupposedSize++},unmounted:t=>{n.unmounted=t,b.unmounted.set(e,n),b.unmountedSupposedSize++}}}};b.observer=new MutationObserver(b.checkMutation),b.observer.observe(document.body,{childList:!0,subtree:!0});const m=["Click","DblClick","MouseDown","MouseEnter","MouseLeave","MouseMove","MouseOut","MouseOver","MouseUp","Wheel","KeyDown","KeyPress","KeyUp","Blur","Change","Focus","Input","Invalid","Reset","Search","Select","Submit","Drag","DragEnd","DragEnter","DragLeave","DragOver","DragStart","Drop","AfterPrint","BeforePrint","BeforeUnload","Error","HashChange","Load","Offline","Online","PageHide","PageShow","Resize","Scroll","Unload","Abort","CanPlay","CanPlayThrough","DurationChange","Emptied","Ended","LoadedData","LoadedMetadata","LoadStart","Pause","Play","Playing","Progress","RateChange","Seeked","Seeking","Stalled","Suspend","TimeUpdate","VolumeChange","Waiting","TouchCancel","TouchEnd","TouchMove","TouchStart","AnimationEnd","AnimationIteration","AnimationStart","TransitionEnd","Copy","Cut","Paste","FocusIn","FocusOut","ContextMenu"];function g(e){this.$element=e,this.$observer=null,a.emit("NDElementCreated",e,this)}g.prototype.__$isNDElement=!0,g.prototype.valueOf=function(){return this.$element},g.prototype.ref=function(e,t){return e[t]=this.$element,this},g.prototype.unmountChildren=function(){let e=this.$element;for(let t=0,n=e.children.length;t<n;t++){let n=e.children[t];n.$ndProx||n.nd?.remove(),n=null}return e=null,this},g.prototype.remove=function(){let e=this.$element;return e.nd.unmountChildren(),e.$ndProx=null,delete e.nd?.on?.prevent,delete e.nd?.on,delete e.nd,e=null,this},g.prototype.lifecycle=function(e){return this.$observer=this.$observer||b.watch(this.$element),e.mounted&&this.$observer.mounted(e.mounted),e.unmounted&&this.$observer.unmounted(e.unmounted),this},g.prototype.mounted=function(e){return this.lifecycle({mounted:e})},g.prototype.unmounted=function(e){return this.lifecycle({unmounted:e})},g.prototype.htmlElement=function(){return this.$element},g.prototype.node=g.prototype.htmlElement,g.prototype.shadow=function(e,t=null){const n=this.$element,r=Array.from(n.childNodes),o=n.attachShadow({mode:e});if(t){const e=document.createElement("style");e.textContent=t,o.appendChild(e)}return n.append=o.append.bind(o),n.appendChild=o.appendChild.bind(o),o.append(...r),this},g.prototype.openShadow=function(e=null){return this.shadow("open",e)},g.prototype.closedShadow=function(e=null){return this.shadow("closed",e)},g.prototype.attach=function(e){return e.$hydrate(this.$element),this.$element};const y={},v=function(e,t,n){if(!e)return;if(!y[t]){const r=new WeakMap;return y[t]=r,void r.set(e,n)}const r=y[t];if(!r.has(e))return void r.set(e,n);const o=r.get(e);I.isArray(o)?o.push(n):r.set(e,[store[t],n])},w=function(e,t,n){return e.addEventListener(t,t=>{t.preventDefault(),n&&n.call(e,t)}),this},$=function(e,t,n){return e.addEventListener(t,t=>{t.stopPropagation(),n&&n.call(e,t)}),this},C=function(e,t,n){return e.addEventListener(t,t=>{t.stopPropagation(),t.preventDefault(),n&&n.call(e,t)}),this},O=function(e,t,n){return n?(e.addEventListener(t,n),this):(function(e,t){e.addEventListener(t,n=>{const r=y[t];if(!r)return;let o=n.target;for(;o&&o!==e;){const e=r.get(o);if(e){if(I.isFunction(e))e.call(o,n);else for(let t=0;t<e.length;t++)e[t].call(o,n);return}o=o.parentElement}})}(e,t),this)};for(const e of m){const t=e.toLowerCase();g.prototype["on"+e]=function(e){return this.$element.addEventListener(t,e),this},g.prototype["onPrevent"+e]=function(e){return w(this.$element,t,e),this},g.prototype["onStop"+e]=function(e){return $(this.$element,t,e),this},g.prototype["onPreventStop"+e]=function(e){return C(this.$element,t,e),this},g.prototype["when"+e]=function(e){return v(this.$element,t,e),this},g.prototype["capture"+e]=function(e){return O(this.$element,t,e),this}}const S=1,A=3,E=8,x=11,I={isObservable:e=>e?.__$isObservable||e instanceof l||e instanceof i,isObservableWhenResult:e=>e&&(e.__$isObservableWhen||"object"==typeof e&&"$target"in e&&"$observer"in e),isArrayObservable:e=>e?.__$isObservableArray,isProxy:e=>e?.__isProxy__,isAnchor:e=>e?.__Anchor__,isObservableChecker:e=>e?.__$isObservableChecker||e instanceof i,isArray:e=>Array.isArray(e),isString:e=>"string"==typeof e,isNumber:e=>"number"==typeof e,isBoolean:e=>"boolean"==typeof e,isFunction:e=>"function"==typeof e,isAsyncFunction:e=>"function"==typeof e&&"AsyncFunction"===e.constructor.name,isObject:e=>"object"==typeof e,isJson:e=>"object"==typeof e&&null!==e&&!Array.isArray(e)&&"Object"===e.constructor.name,isElement:e=>e&&(e.nodeType===S||e.nodeType===A||e.nodeType===x||e.nodeType===E),isFragment:e=>e?.nodeType===x,isStringOrObservable(e){return this.isString(e)||this.isObservable(e)},isValidChild(e){return null===e||this.isElement(e)||this.isObservable(e)||this.isNDElement(e)||["string","number","boolean"].includes(typeof e)},isNDElement:e=>e?.__$isNDElement||e instanceof g,isValidChildren(e){Array.isArray(e)||(e=[e]);return 0===e.filter(e=>!this.isValidChild(e)).length},validateChildren(e){Array.isArray(e)||(e=[e]);const t=e.filter(e=>!this.isValidChild(e));if(t.length>0)throw new s(`Invalid children detected: ${t.map(e=>typeof e).join(", ")}`);return e},containsObservables:e=>!!e&&(I.isObject(e)&&Object.values(e).some(e=>I.isObservable(e))),containsObservableReference:e=>!(!e||"string"!=typeof e)&&/\{\{#ObItem::\([0-9]+\)\}\}/.test(e),validateAttributes(e){},validateEventCallback(e){if("function"!=typeof e)throw new s("Event callback must be a function")}};function k(e,t=!1){const n=document.createDocumentFragment();n.__Anchor__=!0;const o=document.createComment("Anchor Start : "+e),s=document.createComment("/ Anchor End "+e);n.appendChild(o),n.appendChild(s),n.nativeInsertBefore=n.insertBefore,n.nativeAppendChild=n.appendChild;const i=e=>t||e.firstChild===o&&e.lastChild===s;return n.appendElement=function(e,t=null){const r=o.parentNode,i=t||s;r!==n?r?.insertBefore(e,i):r.nativeInsertBefore(e,i)},n.appendChild=function(e,t=null){const o=s.parentNode;o?function(e,t,r){const o=I.isElement(t)?t:z.getChild(t);e!==n?i(e)&&r===s?e.append(o,r):e.insertBefore(o,r):e.nativeInsertBefore(o,r)}(o,e,t=t??s):r.error("Anchor","Anchor : parent not found",e)},n.append=function(...e){return n.appendChild(e)},n.removeChildren=function(){const e=s.parentNode;if(e===n)return;if(i(e))return void e.replaceChildren(o,s);let t,r=o.nextSibling;const a=document.createDocumentFragment();for(;r&&r!==s;)t=r.nextSibling,a.append(r),r=t;a.replaceChildren()},n.remove=function(){if(s.parentNode===n)return;let e,t=o.nextSibling;for(;t&&t!==s;)e=t.nextSibling,n.nativeAppendChild(t),t=e},n.removeWithAnchors=function(){n.removeChildren(),o.remove(),s.remove()},n.replaceContent=function(e){const t=s.parentNode;t&&(i(t)?t.replaceChildren(o,e,s):(n.removeChildren(),t.insertBefore(e,s)))},n.insertBefore=function(e,t=null){n.appendChild(e,t)},n.endElement=function(){return s},n.startElement=function(){return o},n.restore=function(){n.appendChild(n)},n.clear=n.remove,n.detach=n.remove,n.getByIndex=function(e){let t=o;for(let n=0;n<=e;n++){if(!t.nextSibling)return null;t=t.nextSibling}return t!==o?t:null},n}const N=["checked","selected","disabled","readonly","required","autofocus","multiple","autocomplete","hidden","contenteditable","spellcheck","translate","draggable","async","defer","autoplay","controls","loop","muted","download","reversed","open","default","formnovalidate","novalidate","scoped","itemscope","allowfullscreen","allowpaymentrequest","playsinline"];function P(e){return new l(e)}const F=P,T=P;function V(e,t,n){e.classes.toggle(t,n)}function D(e,t,n){e.style[t]=n}function R(e,t,n){I.isBoolean(n)?e[t]=n:e[t]=n===e.value}function M(e,t,n,r){I.isBoolean(n)?r.set(e[t]):r.set(e.value)}function L(e,t){for(let n in t){const r=t[n];I.isObservable(r)?(e.classes.toggle(n,r.val()),r.subscribe(V.bind(null,e,n))):I.isObservableWhenResult(r)?(e.classes.toggle(n,r.isMath()),r.subscribe(V.bind(null,e,n))):r.$hydrate?r.$hydrate(e,n):e.classes.toggle(n,r)}t=null}function _(e,t){for(let n in t){const r=t[n];I.isObservable(r)?(e.style[n]=r.val(),r.subscribe(D.bind(null,e,n))):e.style[n]=r}}function B(e,t,n){const r=I.isObservable(n)?n.val():n;I.isBoolean(r)?e[t]=r:e[t]=r===e.value,I.isObservable(n)&&(["checked"].includes(t)&&e.addEventListener("input",M.bind(null,e,t,r,n)),n.subscribe(R.bind(null,e,t)))}function j(e,t,n){const r=n=>{"value"!==t?e.setAttribute(t,n):e.value=n};r(n.val()),n.subscribe(r),"value"===t&&e.addEventListener("input",()=>n.set(e.value))}P.useValueProperty=function(e="value"){Object.defineProperty(l.prototype,e,{get(){return this.$currentValue},set(e){this.set(e)},configurable:!0})},P.getById=function(e){const t=o.getObservableById(parseInt(e));if(!t)throw new s("Observable.getById : No observable found with id "+e);return t},P.cleanup=function(e){e.cleanup()},P.autoCleanup=function(e=!1,t={}){if(!e)return;const{interval:n=6e4,threshold:r=100}=t;window.addEventListener("beforeunload",()=>{o.cleanup()}),setInterval(()=>o.cleanObservables(r),n)};const W=new Map;let q=null;const z={createTextNode:()=>(q||(q=document.createTextNode("")),q.cloneNode()),createObservableNode(e,t){const n=z.createTextNode();return t.subscribe(e=>n.nodeValue=e),n.nodeValue=t.val(),e&&e.appendChild(n),n},createHydratableNode(e,t){const n=z.createTextNode();return t.$hydrate(n),n},createStaticTextNode(e,t){let n=z.createTextNode();return n.nodeValue=t,e&&e.appendChild(n),n},createElement(e){if(e){if(W.has(e))return W.get(e).cloneNode();const t=document.createElement(e);return W.set(e,t),t.cloneNode()}return new k("Fragment")},processChildren(e,t){if(null!==e){if(a.emit("BeforeProcessChildren",t),Array.isArray(e))for(let n=0,r=e.length;n<r;n++){let r=this.getChild(e[n]);null!==r&&t.appendChild(r)}else{let n=this.getChild(e);n&&t.appendChild(n)}a.emit("AfterProcessChildren",t)}},getChild(e){if(null===e)return null;if(I.isString(e)&&(e=e.resolveObservableTemplate?e.resolveObservableTemplate():e,I.isString(e)))return z.createStaticTextNode(null,e);if(I.isElement(e))return e;if(I.isObservable(e))return z.createObservableNode(null,e);if(I.isNDElement(e))return e.$element??e.$build?.()??null;if(I.$element)return I.$element;if(I.isArray(e)){const t=document.createDocumentFragment();for(let n=0,r=e.length;n<r;n++)t.appendChild(this.getChild(e[n]));return t}return I.isFunction(e)?(a.emit("BeforeProcessComponent",e),this.getChild(e())):e?.$hydrate?z.createHydratableNode(null,e):z.createStaticTextNode(null,e)},processAttributes(e,t){I.isFragment(e)||t&&function(e,t){if(I.validateAttributes(t),!I.isObject(t))throw new s("Attributes must be an object");for(let n in t){const r=n.toLowerCase();let o=t[r];if(null!=o){if(I.isString(o)){if(o=o.resolveObservableTemplate?o.resolveObservableTemplate():o,I.isString(o)){e.setAttribute(r,o);continue}const t=o.filter(e=>I.isObservable(e));o=P.computed(()=>o.map(e=>I.isObservable(e)?e.val():e).join(" ")||" ",t)}"class"===r&&I.isObject(o)?L(e,o):"style"===r&&I.isObject(o)?_(e,o):N.includes(r)?B(e,r,o):I.isObservable(o)?j(e,r,o):o.$hydrate?o.$hydrate(e,r):e.setAttribute(r,o)}}}(e,t)},setup:(e,t,n)=>(a.emit("Setup",e,t,n),e)};Object.defineProperty(HTMLElement.prototype,"nd",{configurable:!0,get(){return new g(this)}});const H={getClasses(){return this.$element.className?.split(" ").filter(Boolean)},add(e){const t=this.getClasses();t.indexOf(e)>=0||(t.push(e),this.$element.className=t.join(" "))},remove(e){const t=this.getClasses(),n=t.indexOf(e);n<0||(t.splice(n,1),this.$element.className=t.join(" "))},toggle(e,t=void 0){const n=this.getClasses(),r=n.indexOf(e);if(r>=0){if(!0===t)return;n.splice(r,1)}else{if(!1===t)return;n.push(e)}this.$element.className=n.join(" ")},contains(e){return this.getClasses().indexOf(e)>=0}};Object.defineProperty(HTMLElement.prototype,"classes",{configurable:!0,get(){return{$element:this,...H}}});let U=e=>e;t.ArgTypes={},t.ArgTypes={string:()=>!0,number:()=>!0,boolean:()=>!0,observable:()=>!0,element:()=>!0,function:()=>!0,object:()=>!0,objectNotNull:()=>!0,children:()=>!0,attributes:()=>!0,optional:()=>!0,oneOf:()=>!0};const K=function(e,t=null){if(!I.isJson(e)||e?.$hydrate){const n=t;t=e,e=n}return{props:e,children:t}},J=function(e){return I.isObservable(e)?z.createObservableNode(null,e):z.createStaticTextNode(null,e)};function Q(e,t,n,r=null){let{props:o,children:s=null}=K(n,r),i=z.createElement(e),a=t&&"function"==typeof t?t(i):i;return o&&z.processAttributes(a,o),s&&z.processChildren(s,a),z.setup(a,o,t)}function Z(e,t){return Q.bind(null,e.toLowerCase(),t)}const G=new WeakMap;function X(e){let t=null,n=!1;const r=(e,t)=>{const n=G.get(e);if(3===e.nodeType)return n&&n.value?n.value(t):e.cloneNode(!0);const o=e.cloneNode(e.fullCloneNode);if(n&&(((e,t,n)=>{let r=null;if(t.attributes){r=r||{};for(const e in t.attributes)r[e]=t.attributes[e](...n)}if(t.classes){r=r||{},r.class={};for(const e in t.classes)r.class[e]=t.classes[e](...n)}if(t.styles){r=r||{},r.style={};for(const e in t.styles)r.style[e]=t.styles[e](...n)}r&&z.processAttributes(e,r)})(o,n,t),function(e,t,n){if(!t.attach)return null;t.attach(e,...n)}(o,n,t)),e.fullCloneNode)return o;const s=e.childNodes;for(let e=0,n=s.length;e<n;e++){const n=s[e],i=r(n,t);o.appendChild(i)}return o};this.clone=o=>{if(!t&&(t=e(this),!n)){const e=t.cloneNode(!0);return e.fullCloneNode=!0,e}return n?r(t,o):t.cloneNode(!0)};const o=(e,t)=>({$hydrate:(r,o)=>{n=!0,function(e,t,n,r){G.has(n)||G.set(n,{});const o=G.get(n);"value"!==t?"attach"!==t?(o[t]=o[t]||{},o[t][r]=e):o.attach=e:o.value=e}(e,t,r,o)}});this.style=e=>o(e,"styles"),this.class=e=>o(e,"classes"),this.property=e=>this.value(e),this.value=e=>o("function"!=typeof e?function(t){const n=t[0];return J(n[e])}:function(t){return J(e(...t))},"value"),this.attr=e=>o(e,"attributes"),this.attach=e=>o(e,"attach")}function Y(e){let t=null,n=null;this.render=r=>{if(t||(t=e(this)),!n)return t;for(const e in n){(0,n[e])(...r)}return t},this.createSection=(e,t)=>{n=n||{};const r=new k("Component "+e);return n[e]=function(...e){r.removeChildren(),t?r.appendChild(t(...e)):r.append(e)},r}}Function.prototype.args=function(...e){return this},Function.prototype.cached=function(...e){let t,n=()=>t;return()=>(t||(t=this.apply(this,e),t.cloneNode?n=()=>t.cloneNode(!0):t.$element&&(n=()=>new g(t.$element.cloneNode(!0)))),n())},Function.prototype.errorBoundary=function(e){return(...t)=>{try{return this.apply(this,t)}catch(t){return e(t)}}},String.prototype.use=function(e){const t=this;return P.computed(()=>t.replace(/\$\{(.*?)}/g,(t,n)=>{const r=e[n];return I.isObservable(r)?r.val():r}),Object.values(e))},String.prototype.resolveObservableTemplate=function(){return I.containsObservableReference(this)?this.split(/(\{\{#ObItem::\([0-9]+\)\}\})/g).filter(Boolean).map(e=>{if(!I.containsObservableReference(e))return e;const[t,n]=e.match(/\{\{#ObItem::\(([0-9]+)\)\}\}/);return P.getById(n)}):this.valueOf()};const ee=function(e,{propagation:t=!1,deep:n=!1}={}){if(!Array.isArray(e))throw new s("Observable.array : target must be an array");l.call(this,e),a.emit("CreateObservableArray",this)};(ee.prototype=Object.create(l.prototype)).__$isObservableArray=!0,["push","pop","shift","unshift","reverse","sort","splice"].forEach(e=>{ee.prototype[e]=function(...t){const n=this.$currentValue[e](...t);return this.trigger({action:e,args:t,result:n}),n}}),["map","forEach","filter","reduce","some","every","find","findIndex","concat","includes","indexOf"].forEach(e=>{ee.prototype[e]=function(...t){return this.$currentValue[e](...t)}}),ee.prototype.clear=function(){return this.$currentValue.length=0,this.trigger({action:"clear"}),!0},ee.prototype.at=function(e){return this.$currentValue[e]},ee.prototype.merge=function(e){this.$currentValue.push(...e),this.trigger({action:"merge",args:e})},ee.prototype.count=function(e){let t=0;return this.$currentValue.forEach((n,r)=>{e(n,r)&&t++}),t},ee.prototype.length=function(){return this.$currentValue.length},ee.prototype.swap=function(e,t){const n=this.$currentValue,r=n.length;if(r<e||r<t)return!1;if(t<e){const n=e;e=t,t=n}const o=n[e],s=n[t];return n[e]=s,n[t]=o,this.trigger({action:"swap",args:[e,t],result:[o,s]}),!0},ee.prototype.remove=function(e){const t=this.$currentValue.splice(e,1);return 0===t.length?[]:(this.trigger({action:"remove",args:[e],result:t[0]}),t)},ee.prototype.removeItem=function(e){const t=this.$currentValue.indexOf(e);return this.remove(t)},ee.prototype.isEmpty=function(){return 0===this.$currentValue.length},ee.prototype.populateAndRender=function(e,t){this.trigger({action:"populate",args:[this.$currentValue,e,t]})},P.array=function(e){return new ee(e)},P.batch=function(e){const t=P(0),n=function(){if(I.isAsyncFunction(e))return e(...arguments).then(()=>{t.trigger()}).catch(e=>{throw e});e(...arguments),t.trigger()};return n.$observer=t,n};P.init=function(e,{propagation:t=!1,deep:n=!0}={}){const r={};for(const o in e){const s=e[o];if(Array.isArray(s)){if(n){const e=s.map(e=>I.isJson(e)?P.json(e,{propagation:t,deep:n}):I.isArray(e)?P.array(e,{propagation:t,deep:n}):P(e));r[o]=P.array(e,{propagation:t});continue}r[o]=P.array(s,{propagation:t})}else I.isObservable(s)||I.isProxy(s)?r[o]=s:r[o]=P(s)}const o=()=>function(e){const t={};for(const n in e){const r=e[n];if(I.isObservable(r)){let e=r.val();Array.isArray(e)&&(e=e.map(e=>I.isObservable(e)?e.val():I.isProxy(e)?e.$value:e)),t[n]=e}else I.isProxy(r)?t[n]=r.$value:t[n]=r}return t}(r),s=()=>P.init(o(),{propagation:t,deep:n}),i=e=>{P.update(u,e)},a=e=>function(e,t){const n=e[t];return I.isObservable(n)?n.val():I.isProxy(n)?n.$value:n}(r,e),u=new Proxy(r,{get:(t,n)=>"__isProxy__"===n||("$value"===n?o():"$clone"===n?s:"$keys"===n?Object.keys(e):"$observables"===n?Object.values(t):"$set"===n||"$updateWith"===n?i:"$get"===n?a:"$val"===n?o:void 0!==t[n]?t[n]:void 0),set:(e,t,n)=>void 0===e[t]||(I.isObservable(n)?e[t].set(n.val()):e[t].set(n),!0)});return u},P.arrayOfObject=function(e){return e.map(e=>P.object(e))},P.value=function(e){if(I.isObservable(e))return e.val();if(I.isProxy(e))return e.$value;if(I.isArray(e)){const t=[];for(let n=0,r=e.length;n<r;n++){const r=e[n];t.push(P.value(r))}return t}return e},P.update=function(e,t){const n=I.isProxy(t)?t.$value:t;for(const r in n){const o=e[r],s=t[r],i=n[r];if(I.isObservable(o)){if(I.isArray(i)){const e=s.at(0);if(I.isObservable(e)||I.isProxy(e)){const t=i.map(t=>I.isProxy(e)?P.init(t):P(t));o.set(t);continue}o.set([...i]);continue}o.set(i)}else I.isProxy(o)?P.update(o,i):e[r]=i}},P.object=P.init,P.json=P.init,P.computed=function(e,t=[]){const n=new l(e()),r=()=>n.set(e());if(a.emit("CreateObservableComputed",n,t),I.isFunction(t)){if(!I.isObservable(t.$observer))throw new s("Observable.computed : dependencies must be valid batch function");return t.$observer.subscribe(r),n}return t.forEach(e=>{I.isProxy(e)?e.$observables.forEach(e=>{e.subscribe(r)}):e.subscribe(r)}),n};const te=function(){const e=new Map;return{use(t){const{observer:n,subscribers:r}=e.get(t),o=P(n.val()),s=n.subscribe(e=>o.set(e)),i=o.subscribe(e=>n.set(e));return o.destroy=()=>{s(),i(),o.cleanup()},r.add(o),o},follow(e){return this.use(e)},create(t,n){const r=P(n);return e.set(t,{observer:r,subscribers:new Set}),r},get(t){const n=e.get(t);return n?n.observer:null},getWithSubscribers:t=>e.get(t),delete(t){const n=e.get(t);n&&(n.observer.cleanup(),n.subscribers.forEach(e=>e.destroy()),n.observer.clear())}}}();const ne=function(e,t,{comment:n=null,shouldKeepInCache:o=!0}={}){if(!I.isObservable(e)&&!I.isObservableWhenResult(e))return r.warn("ShowIf","ShowIf : condition must be an Observable / "+n,e);const s=new k("Show if : "+(n||""));let i=null;const a=()=>(i&&o||(i=z.getChild(t),I.isFragment(i)&&(i=Array.from(i.childNodes))),i);return e.val()&&s.appendChild(a()),e.subscribe(e=>{e?s.appendChild(a()):s.remove()}),s},re=function(e,t,n=!0){if(!I.isObservable(e))throw new s("Toggle : condition must be an Observable");const r=new k("Match"),o=new Map,i=function(e){if(n&&o.has(e))return o.get(e);let r=t[e];return r?(r=z.getChild(r),I.isFragment(r)&&(r=Array.from(r.children)),n&&o.set(e,r),r):null},a=e.val(),u=i(a);return u&&r.appendChild(u),e.subscribe(e=>{const t=i(e);r.remove(),t&&r.appendChild(t)}),r},oe=function(e,t,n){if(!I.isObservable(e))throw new s("Toggle : condition must be an Observable");return re(e,{true:t,false:n})},se=Z("div"),ie=Z("span"),ae=Z("label"),ue=Z("p"),le=ue,ce=Z("strong"),he=Z("h1"),pe=Z("h2"),de=Z("h3"),fe=Z("h4"),be=Z("h5"),me=Z("h6"),ge=Z("br"),ye=Z("a"),ve=Z("pre"),we=Z("code"),$e=Z("blockquote"),Ce=Z("hr"),Oe=Z("em"),Se=Z("small"),Ae=Z("mark"),Ee=Z("del"),xe=Z("ins"),Ie=Z("sub"),ke=Z("sup"),Ne=Z("abbr"),Pe=Z("cite"),Fe=Z("q"),Te=Z("dl"),Ve=Z("dt"),De=Z("dd"),Re=Z("form",function(e){return e.submit=function(t){return"function"==typeof t?(e.onSubmit(e=>{e.preventDefault(),t(e)}),e):(this.setAttribute("action",t),e)},e.multipartFormData=function(){return this.setAttribute("enctype","multipart/form-data"),e},e.post=function(t){return this.setAttribute("method","post"),this.setAttribute("action",t),e},e.get=function(e){this.setAttribute("method","get"),this.setAttribute("action",e)},e}),Me=Z("input"),Le=Z("textarea"),_e=Le,Be=Z("select"),je=Z("fieldset"),We=Z("option"),qe=Z("legend"),ze=Z("datalist"),He=Z("output"),Ue=Z("progress"),Ke=Z("meter"),Je=Z("button"),Qe=Z("main"),Ze=Z("section"),Ge=Z("article"),Xe=Z("aside"),Ye=Z("nav"),et=Z("figure"),tt=Z("figcaption"),nt=Z("header"),rt=Z("footer"),ot=Z("img"),st=function(e,t){return ot({src:e,...t})},it=Z("details"),at=Z("summary"),ut=Z("dialog"),lt=Z("menu"),ct=Z("ol"),ht=Z("ul"),pt=Z("li"),dt=pt,ft=ct,bt=ht,mt=Z("audio"),gt=Z("video"),yt=Z("source"),vt=Z("track"),wt=Z("canvas"),$t=Z("svg"),Ct=Z("time"),Ot=Z("data"),St=Z("address"),At=Z("kbd"),Et=Z("samp"),xt=Z("var"),It=Z("wbr"),kt=Z("caption"),Nt=Z("table"),Pt=Z("thead"),Ft=Z("tfoot"),Tt=Z("tbody"),Vt=Z("tr"),Dt=Vt,Rt=Z("th"),Mt=Rt,Lt=Rt,_t=Z("td"),Bt=_t,jt=Z("");var Wt=Object.freeze({__proto__:null,Abbr:Ne,Address:St,Anchor:k,Article:Ge,Aside:Xe,AsyncImg:function(e,t,n,r){const o=I.isObservable(e)?e.val():e,i=st(t||o,n),a=new Image;return a.onload=()=>{I.isFunction(r)&&r(null,i),i.src=I.isObservable(e)?e.val():e},a.onerror=()=>{I.isFunction(r)&&r(new s("Image not found"))},I.isObservable(e)&&e.subscribe(e=>{a.src=e}),a.src=o,i},Audio:mt,BaseImage:ot,Blockquote:$e,Br:ge,Button:Je,Canvas:wt,Caption:kt,Checkbox:e=>Me({type:"checkbox",...e}),Cite:Pe,Code:we,ColorInput:e=>Me({type:"color",...e}),Data:Ot,Datalist:ze,DateInput:e=>Me({type:"date",...e}),DateTimeInput:e=>Me({type:"datetime-local",...e}),Dd:De,Del:Ee,Details:it,Dialog:ut,Div:se,Dl:Te,Dt:Ve,Em:Oe,EmailInput:e=>Me({type:"email",...e}),FieldSet:je,FigCaption:tt,Figure:et,FileInput:e=>Me({type:"file",...e}),Footer:rt,ForEach:function(e,t,n,{shouldKeepItemsInCache:o=!1}={}){const i=new k("ForEach"),a=i.endElement();i.startElement();let u=new Map,l=null;const c=new Set,h=e=>{if(!o)for(const[t,n]of u.entries()){if(c.has(t))continue;const r=n.child?.deref();e&&r&&e.removeChild(r),n.indexObserver?.cleanup(),n.child=null,n.indexObserver=null,u.delete(n.keyId),l&&l.delete(n.keyId)}},p=(e,o)=>{const i=d(e,o,n);if(u.has(i)){const e=u.get(i);if(e.indexObserver?.set(o),e.isNew=!1,e.child?.deref())return i;u.delete(i)}try{const n=t.length>=2?P(o):null;let r=z.getChild(t(e,n));if(!r||I.isFragment(r))throw new s("ForEachArray child can't be null or undefined!");u.set(i,{keyId:i,isNew:!0,child:new WeakRef(r),indexObserver:n})}catch(e){throw r.error("ForEach",`Error creating element for key ${i}`,e),e}return i},f=()=>{const t=a.parentNode;if(!t)return;const n=I.isObservable(e)?e.val():e;if(c.clear(),Array.isArray(n))for(let e=0,t=n.length;e<t;e++){const t=p(n[e],e);c.add(t)}else for(const e in n){const t=p(n[e],e);c.add(t)}if(0===c.size)return i.removeChildren(),h(),void l?.clear();h(t),l&&0!==l.size?(()=>{let e=document.createDocumentFragment();const t=Array.from(c);Array.from(l);for(const n in t){const r=t[n],o=u.get(r);if(!o)continue;const s=o.child.deref();s&&e.appendChild(s)}i.replaceContent(e)})():(e=>{const t=document.createDocumentFragment();for(const e of c){const n=u.get(e);if(!n)continue;const r=n.child?.deref();r&&t.appendChild(r)}e.insertBefore(t,a)})(t),l?.clear(),l=new Set([...c])};return f(),I.isObservable(e)&&e.subscribe(f),i},ForEachArray:function(e,t,n,r={}){const o=new k("ForEach Array"),i=o.endElement(),a=o.startElement();let u=new Map,l=0;const c=t.length>=2,h=new WeakMap,p=()=>{o.removeChildren(),g(),l=0},f=(e,t)=>h.has(e)?h.get(e):d(e,t,n),b=e=>v(f(e)),m=(e,t=!0)=>{if(e){if(t){const t=e.child;t?.remove(),u.delete(e.keyId)}e.indexObserver?.deref()?.cleanup()}},g=()=>{if(!r.shouldKeepItemsInCache)if(c){for(const[e,t]of u.entries())m(t,!1);u.clear()}else u.clear()},y=(e,n)=>{const r=f(e,n);if(u.has(r)){const e=u.get(r);e.indexObserver?.deref()?.set(n);const t=e.child;if(t)return t;u.delete(r)}const o=c?P(n):null;let i=z.getChild(t(e,o));if(!i||I.isFragment(i))throw new s("ForEachArray child can't be null or undefined!");return u.set(r,{keyId:r,child:i,indexObserver:o?new WeakRef(o):null}),h.set(e,r),i},v=function(e){const t=u.get(e);if(!t)return null;const n=t.child;return n||(m(t,!1),null)},w=function(e,t){const n=u.get(e);if(!n)return null;const r=n.child;if(!r)return null;t?t.appendChild(r):r.remove()},$={toFragment(e,t=0){const n=document.createDocumentFragment();for(let t=0,r=e.length;t<r;t++)n.appendChild(y(e[t],l)),l++;return n},add(e,t=2){const n=$.toFragment(e);setTimeout(()=>{o.appendElement(n)},t)},replace(e){p(),$.add(e)},reOrder(e){let t=null;const n=document.createDocumentFragment();for(const r of e)t=b(r),t&&n.appendChild(t);t=null,o.appendElement(n,i)},removeOne(e,t){((e,t=!0)=>{m(u.get(e),t)})(f(e,t),!0)},clear:p,merge(e){$.add(e)},push(e){let t=0;r.pushDelay&&(t=r.pushDelay(e)??0),$.add(e,t)},populate([e,t,n]){const r=document.createDocumentFragment();for(let o=0;o<t;o++){const t=n(o);e.push(t),r.append(y(t,o)),l++}o.appendChild(r),r.replaceChildren()},unshift(e){o.insertBefore($.toFragment(e),a.nextSibling)},splice(e,t){const[n,r,...s]=e;let a=null;const u=document.createDocumentFragment();if(t.length>0){let e=f(t[0],n);if(1===t.length)w(e,u);else if(t.length>1){const r=v(e);a=r?.previousSibling;for(let e=0;e<t.length;e++){const r=f(t[e],n+e);w(r,u)}}}else a=i;u.replaceChildren(),s&&s.length&&a&&o.insertBefore($.toFragment(s),a.nextSibling)},reverse(e,t){$.reOrder(t)},sort(e,t){$.reOrder(t)},remove(e,t){$.removeOne(t)},pop(e,t){$.removeOne(t)},shift(e,t){$.removeOne(t)},swap(e,t){const n=i.parentNode;let r=b(t[0]),o=b(t[1]);if(!r||!o)return;const s=o.nextSibling;n.insertBefore(o,r),n.insertBefore(r,s),r=null,o=null}},C=(e,t,n)=>{if("clear"!==n.action&&e.length){if(n?.action)$[n.action]&&$[n.action](n.args,n.result);else{if(0===l)return void $.add(e);$.replace(e)}((e,t=0)=>{if(!c)return;let n=t;for(let r=t,o=e?.length;r<o;r++){const t=u.get(f(e[r],r));t&&(t.indexObserver?.deref()?.set(n),n++)}})(e,0)}else{if(0===l)return;p()}};return e.val().length&&C(e.val(),0,{action:null}),I.isObservable(e)&&e.subscribe(C),o},Form:Re,Fragment:jt,H1:he,H2:pe,H3:de,H4:fe,H5:be,H6:me,Header:nt,HiddenInput:e=>Me({type:"hidden",...e}),HideIf:function(e,t,n){const r=P(!e.val());return e.subscribe(e=>r.set(!e)),ne(r,t,n)},HideIfNot:function(e,t,n){return ne(e,t,n)},Hr:Ce,Img:st,Input:Me,Ins:xe,Kbd:At,Label:ae,LazyImg:function(e,t){return st(e,{...t,loading:"lazy"})},Legend:qe,Li:dt,Link:ye,ListItem:pt,Main:Qe,Mark:Ae,Match:re,Menu:lt,Meter:Ke,MonthInput:e=>Me({type:"month",...e}),NativeDocumentFragment:k,Nav:Ye,NumberInput:e=>Me({type:"number",...e}),Ol:ft,Option:We,OrderedList:ct,Output:He,P:ue,Paragraph:le,PasswordInput:e=>Me({type:"password",...e}),Pre:ve,Progress:Ue,Quote:Fe,Radio:e=>Me({type:"radio",...e}),RangeInput:e=>Me({type:"range",...e}),ReadonlyInput:e=>Me({readonly:!0,...e}),Samp:Et,SearchInput:e=>Me({type:"search",...e}),Section:Ze,Select:Be,ShowIf:ne,ShowWhen:function(){if(2===arguments.length){const[e,t]=arguments;if(!I.isObservableWhenResult(e))throw new s("showWhen observer must be an ObservableWhenResult",{data:e,help:"Use observer.when(target) to create an ObservableWhenResult"});return ne(e,t)}if(3===arguments.length){const[e,t,n]=arguments;if(!I.isObservable(e))throw new s("showWhen observer must be an Observable",{data:e});return ne(e.when(t),n)}throw new s("showWhen must have 2 or 3 arguments",{data:["showWhen(observer, target, view)","showWhen(observerWhenResult, view)"]})},SimpleButton:(e,t)=>Je(e,{type:"button",...t}),Small:Se,Source:yt,Span:ie,Strong:ce,Sub:Ie,SubmitButton:(e,t)=>Je(e,{type:"submit",...t}),Summary:at,Sup:ke,Svg:$t,Switch:oe,TBody:Tt,TBodyCell:Bt,TFoot:Ft,TFootCell:Lt,THead:Pt,THeadCell:Mt,TRow:Dt,Table:Nt,Td:_t,TelInput:e=>Me({type:"tel",...e}),TextArea:Le,TextInput:_e,Th:Rt,Time:Ct,TimeInput:e=>Me({type:"time",...e}),Tr:Vt,Track:vt,Ul:bt,UnorderedList:ht,UrlInput:e=>Me({type:"url",...e}),Var:xt,Video:gt,Wbr:It,WeekInput:e=>Me({type:"week",...e}),When:function(e){if(!I.isObservable(e))throw new s("When : condition must be an Observable");let t=null,n=null;return{show(e){return t=e,this},otherwise:r=>(n=r,oe(e,t,n))}},createPortal:function(e,{parent:t,name:n="unnamed"}={}){const r=k("Portal "+n);return r.appendChild(z.getChild(e)),(t||document.body).appendChild(r),r}});const qt={};function zt(e,t,n={}){e="/"+f(e,"/").replace(/\/+/,"/");let r=null,o=n.name||null;const s=n.middlewares||[],i=n.shouldRebuild||!1,a=n.with||{},u=n.layout||null,l={},c=[],h=e=>{if(!e)return null;const[t,n]=e.split(":");let r=a[t];return!r&&n&&(r=qt[n]),r||(r="[^/]+"),r=r.replace("(","(?:"),{name:t,pattern:`(${r})`}},p=()=>{if(r)return r;const t=e.replace(/\{(.*?)}/gi,(e,t)=>{const n=h(t);return n&&n.pattern?(l[n.name]=n.pattern,c.push(n.name),n.pattern):e});return r=new RegExp("^"+t+"$"),r};this.name=()=>o,this.component=()=>t,this.middlewares=()=>s,this.shouldRebuild=()=>i,this.path=()=>e,this.layout=()=>u,this.match=function(e){e="/"+f(e,"/");if(!p().exec(e))return!1;const t={};return p().exec(e).forEach((e,n)=>{if(n<1)return;const r=c[n-1];t[r]=e}),t},this.url=function(t){const n=e.replace(/\{(.*?)}/gi,(e,n)=>{const r=h(n);if(t.params&&t.params[r.name])return t.params[r.name];throw new Error(`Missing parameter '${r.name}'`)}),r="object"==typeof t.query?new URLSearchParams(t.query).toString():null;return(t.basePath?t.basePath:"")+(r?`${n}?${r}`:n)}}class Ht extends Error{constructor(e,t){super(e),this.context=t}}const Ut=(e,t)=>{const n=[];return e.forEach(e=>{n.push(f(e.suffix,"/"))}),n.push(f(t,"/")),n.join("/")},Kt=(e,t)=>{const n=[];return e.forEach(e=>{e.options.middlewares&&n.push(...e.options.middlewares)}),t&&n.push(...t),n},Jt=(e,t)=>{const n=[];return e.forEach(e=>{e.options?.name&&n.push(e.options.name)}),t&&n.push(t),n.join(".")},Qt=e=>{for(let t=e.length-1;t>=0;t--)if(e[t]?.options?.layout)return e[t].options.layout;return null};function Zt(){const e=[];let t=0;const n=n=>{const o=t+n;if(!e[o])return;t=o;const{route:s,params:i,query:a,path:u}=e[o];r(u)},r=e=>{window.location.replace(`${window.location.pathname}${window.location.search}#${e}`)},o=()=>window.location.hash.slice(1);this.push=function(n){const{route:s,params:i,query:a,path:u}=this.resolve(n);u!==o()&&(e.splice(t+1),e.push({route:s,params:i,query:a,path:u}),t++,r(u))},this.replace=function(n){const{route:r,params:s,query:i,path:a}=this.resolve(n);a!==o()&&(e[t]={route:r,params:s,query:i,path:a})},this.forward=function(){return t<e.length-1&&n(1)},this.back=function(){return t>0&&n(-1)},this.init=function(n){window.addEventListener("hashchange",()=>{const{route:e,params:t,query:n,path:r}=this.resolve(o());this.handleRouteChange(e,t,n,r)});const{route:r,params:s,query:i,path:a}=this.resolve(n||o());e.push({route:r,params:s,query:i,path:a}),t=0,this.handleRouteChange(r,s,i,a)}}function Gt(){this.push=function(e){try{const{route:t,path:n,params:r,query:o}=this.resolve(e);if(window.history.state&&window.history.state.path===n)return;window.history.pushState({name:t.name(),params:r,path:n},t.name()||n,n),this.handleRouteChange(t,r,o,n)}catch(e){r.error("HistoryRouter","Error in pushState",e)}},this.replace=function(e){const{route:t,path:n,params:o}=this.resolve(e);try{window.history.replaceState({name:t.name(),params:o,path:n},t.name()||n,n),this.handleRouteChange(t,o,{},n)}catch(e){r.error("HistoryRouter","Error in replaceState",e)}},this.forward=function(){window.history.forward()},this.back=function(){window.history.back()},this.init=function(e){window.addEventListener("popstate",e=>{try{if(!e.state||!e.state.path)return;const t=e.state.path,{route:n,params:r,query:o,path:s}=this.resolve(t);if(!n)return;this.handleRouteChange(n,r,o,s)}catch(e){r.error("HistoryRouter","Error in popstate event",e)}});const{route:t,params:n,query:o,path:s}=this.resolve(e||window.location.pathname+window.location.search);this.handleRouteChange(t,n,o,s)}}function Xt(){const e=[];let t=0;const n=n=>{const r=t+n;if(!e[r])return;t=r;const{route:o,params:s,query:i,path:a}=e[r];this.handleRouteChange(o,s,i,a)};this.push=function(n){const{route:r,params:o,query:s,path:i}=this.resolve(n);e[t]&&e[t].path===i||(e.splice(t+1),e.push({route:r,params:o,query:s,path:i}),t++,this.handleRouteChange(r,o,s,i))},this.replace=function(n){const{route:r,params:o,query:s,path:i}=this.resolve(n);e[t]={route:r,params:o,query:s,path:i},this.handleRouteChange(r,o,s,i)},this.forward=function(){return t<e.length-1&&n(1)},this.back=function(){return t>0&&n(-1)},this.init=function(n){const r=n||window.location.pathname+window.location.search,{route:o,params:s,query:i,path:a}=this.resolve(r);e.push({route:o,params:s,query:i,path:a}),t=0,this.handleRouteChange(o,s,i,a)}}const Yt="default";function en(e={}){const t=[],n={},o=[],s=[],i={route:null,params:null,query:null,path:null,hash:null};if("hash"===e.mode)Zt.apply(this,[]);else if("history"===e.mode)Gt.apply(this,[]);else{if("memory"!==e.mode)throw new Ht("Invalid router mode "+e.mode);Xt.apply(this,[])}const a=function(e,t){for(const n of s)try{n(e),t&&t(e)}catch(e){r.warn("Route Listener","Error in listener:",e)}};this.routes=()=>[...t],this.currentState=()=>({...i}),this.add=function(e,r,s){const i=new zt(Ut(o,e),r,{...s,middlewares:Kt(o,s?.middlewares||[]),name:s?.name?Jt(o,s.name):null,layout:s?.layout||Qt(o)});return t.push(i),i.name()&&(n[i.name()]=i),this},this.group=function(e,t,n){if(!I.isFunction(n))throw new Ht("Callback must be a function");return o.push({suffix:e,options:t}),n(),o.pop(),this},this.generateUrl=function(e,t={},r={}){const o=n[e];if(!o)throw new Ht(`Route not found for name: ${e}`);return o.url({params:t,query:r})},this.resolve=function(e){if(I.isJson(e)){const t=n[e.name];if(!t)throw new Ht(`Route not found for name: ${e.name}`);return{route:t,params:e.params,query:e.query,path:t.url({...e})}}const[r,o]=e.split("?"),s="/"+f(r,"/");let i,a=null;for(const e of t)if(i=e.match(s),i){a=e;break}if(!a)throw new Ht(`Route not found for url: ${r}`);const u={};if(o){const e=new URLSearchParams(o).entries();for(const[t,n]of e)u[t]=n}return{route:a,params:i,query:u,path:e}},this.subscribe=function(e){if(!I.isFunction(e))throw new Ht("Listener must be a function");return s.push(e),()=>{s.splice(s.indexOf(e),1)}},this.handleRouteChange=function(e,t,n,r){i.route=e,i.params=t,i.query=n,i.path=r;const o=[...e.middlewares(),a];let s=0;const u={...i},l=e=>{if(s++,!(s>=o.length))return o[s](e||u,l)};return o[s](u,l)}}function tn(e,t){const{to:n,href:r,...o}=e,s=n||r;if(I.isString(s)){const e=en.get();return ye({...o,href:s},t).nd.onPreventClick(()=>{e.push(s)})}const i=s.router||Yt,a=en.get(i);if(!a)throw new Ht('Router not found "'+i+'" for link "'+s.name+'"');const u=a.generateUrl(s.name,s.params,s.query);return ye({...o,href:u},t).nd.onPreventClick(()=>{a.push(u)})}en.routers={},en.create=function(t,n){if(!I.isFunction(n))throw r.error("Router","Callback must be a function",e),new Ht("Callback must be a function");const o=new en(t);return en.routers[t.name||Yt]=o,n(o),o.init(t.entry),o.mount=function(e){if(I.isString(e)){const t=document.querySelector(e);if(!t)throw new Ht(`Container not found for selector: ${e}`);e=t}else if(!I.isElement(e))throw new Ht("Container must be a string or an Element");return function(e,t){const n=new Map,r=function(e,n){t.innerHTML="";const r=n.layout();r?t.appendChild(r(e)):t.appendChild(e)},o=function(e){if(!e.route)return;const{route:t,params:o,query:s,path:i}=e;if(n.has(i)){const e=n.get(i);return void r(e,t)}const a=t.component()({params:o,query:s});n.set(i,a),r(a,t)};return e.subscribe(o),o(e.currentState()),t}(o,e)},o},en.get=function(e){const t=en.routers[e||Yt];if(!t)throw new Ht(`Router not found for name: ${e}`);return t},en.push=function(e,t=null){return en.get(t).push(e)},en.replace=function(e,t=null){return en.get(t).replace(e)},en.forward=function(e=null){return en.get(e).forward()},en.back=function(e=null){return en.get(e).back()},tn.blank=function(e,t){return ye({...e,target:"_blank"},t)};var nn=Object.freeze({__proto__:null,Link:tn,RouteParamPatterns:qt,Router:en});return t.$=F,t.ElementCreator=z,t.HtmlElementWrapper=Z,t.NDElement=g,t.Observable=P,t.PluginsManager=a,t.SingletonView=Y,t.Store=te,t.TemplateCloner=X,t.Validator=I,t.autoMemoize=e=>{const t=new Map;return new Proxy({},{get:(n,r)=>{if(!t.has(r)){if(e.length>0)return(...n)=>{const o=e(...n);return t.set(r,o),o};t.set(r,e())}return t.get(r)}})},t.autoOnce=e=>{let t=null;return new Proxy({},{get:(n,r)=>(null===t&&(t=e()),t[r])})},t.classPropertyAccumulator=function(e=[]){let t=I.isString(e)?e.split(" ").filter(Boolean):e;const n=I.isArray(t);return{add(e,r=!0){n?t.push(e):t[e]=r},value:()=>n?t.join(" "):{...t}}},t.createTextNode=J,t.cssPropertyAccumulator=function(e={}){let t=I.isString(e)?e.split(";").filter(Boolean):e;const n=I.isArray(t);return{add(e,r){n?t.push(e+" : "+r):t[e]=r},value:()=>n?t.join(";").concat(";"):{...t}}},t.elements=Wt,t.memoize=e=>{const t=new Map;return(...n)=>{const[r,...o]=n;return t.has(r)||t.set(r,e(...o)),t.get(r)}},t.normalizeComponentArgs=K,t.obs=T,t.once=e=>{let t=null;return(...n)=>(null===t&&(t=e(...n)),t)},t.router=nn,t.useCache=function(e){let t=null;const n=function(n){return t||(t=new X(e)),t.clone(n)};return e.length<2?function(...e){return n(e)}:function(e,t,...r){return n([e,t,...r])}},t.useSingleton=function(e){let t=null;return function(...n){return t||(t=new Y(e)),t.render(n)}},t.withValidation=U,t}({});
|
package/index.js
CHANGED
|
@@ -11,7 +11,6 @@ import './src/utils/prototypes.js';
|
|
|
11
11
|
export * from './src/utils/property-accumulator';
|
|
12
12
|
export * from './src/utils/args-types';
|
|
13
13
|
export * from './src/utils/memoize';
|
|
14
|
-
export * from './src/utils/service';
|
|
15
14
|
export * from './src/data/Observable';
|
|
16
15
|
export * from './src/data/observable-helpers/array';
|
|
17
16
|
export * from './src/data/observable-helpers/batch';
|
package/package.json
CHANGED
|
@@ -15,6 +15,13 @@ export default function NativeFetch($baseUrl) {
|
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
this.fetch = async function(method, endpoint, params = {}, options = {}) {
|
|
18
|
+
if(options.formData) {
|
|
19
|
+
const formData = new FormData();
|
|
20
|
+
for(const key in params) {
|
|
21
|
+
formData.append(key, params[key]);
|
|
22
|
+
}
|
|
23
|
+
params = formData;
|
|
24
|
+
}
|
|
18
25
|
if(!endpoint.startsWith('http')) {
|
|
19
26
|
endpoint = ($baseUrl.endsWith('/') ? $baseUrl : $baseUrl+'/') + endpoint;
|
|
20
27
|
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
2
|
+
|
|
3
|
+
interface FetchConfig {
|
|
4
|
+
method: HttpMethod;
|
|
5
|
+
headers: Record<string, string>;
|
|
6
|
+
body?: string | FormData;
|
|
7
|
+
params?: Record<string, any>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface FetchOptions {
|
|
11
|
+
headers?: Record<string, string>;
|
|
12
|
+
formData?: boolean;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
type RequestInterceptor = (
|
|
16
|
+
config: FetchConfig,
|
|
17
|
+
endpoint: string
|
|
18
|
+
) => Promise<FetchConfig | void> | FetchConfig | void;
|
|
19
|
+
|
|
20
|
+
type ResponseInterceptor = (
|
|
21
|
+
response: Response,
|
|
22
|
+
endpoint: string
|
|
23
|
+
) => Promise<Response | void> | Response | void;
|
|
24
|
+
|
|
25
|
+
interface NativeFetchError extends Error {
|
|
26
|
+
status: number;
|
|
27
|
+
data: any;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
interface Interceptors {
|
|
31
|
+
request: (callback: RequestInterceptor) => void;
|
|
32
|
+
response: (callback: ResponseInterceptor) => void;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
declare class NativeFetch {
|
|
36
|
+
constructor(baseUrl: string);
|
|
37
|
+
|
|
38
|
+
interceptors: Interceptors;
|
|
39
|
+
|
|
40
|
+
fetch<T = any>(
|
|
41
|
+
method: HttpMethod,
|
|
42
|
+
endpoint: string,
|
|
43
|
+
params?: Record<string, any> | FormData,
|
|
44
|
+
options?: FetchOptions
|
|
45
|
+
): Promise<T>;
|
|
46
|
+
|
|
47
|
+
get<T = any>(
|
|
48
|
+
endpoint: string,
|
|
49
|
+
params?: Record<string, any>,
|
|
50
|
+
options?: FetchOptions
|
|
51
|
+
): Promise<T>;
|
|
52
|
+
|
|
53
|
+
post<T = any>(
|
|
54
|
+
endpoint: string,
|
|
55
|
+
params?: Record<string, any> | FormData,
|
|
56
|
+
options?: FetchOptions
|
|
57
|
+
): Promise<T>;
|
|
58
|
+
|
|
59
|
+
put<T = any>(
|
|
60
|
+
endpoint: string,
|
|
61
|
+
params?: Record<string, any> | FormData,
|
|
62
|
+
options?: FetchOptions
|
|
63
|
+
): Promise<T>;
|
|
64
|
+
|
|
65
|
+
delete<T = any>(
|
|
66
|
+
endpoint: string,
|
|
67
|
+
params?: Record<string, any>,
|
|
68
|
+
options?: FetchOptions
|
|
69
|
+
): Promise<T>;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export default NativeFetch;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type ServiceFactory<T> = () => T;
|
|
2
|
+
type MemoizedFactory<T, Args extends any[]> = (...args: Args) => T;
|
|
3
|
+
|
|
4
|
+
interface ServiceStatic {
|
|
5
|
+
|
|
6
|
+
once<T>(fn: ServiceFactory<T>): ServiceFactory<T>;
|
|
7
|
+
|
|
8
|
+
memoize<T, Args extends any[]>(
|
|
9
|
+
fn: MemoizedFactory<T, Args>
|
|
10
|
+
): MemoizedFactory<T, Args>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const Service: ServiceStatic;
|
package/utils.d.ts
CHANGED