defuss 1.5.0 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{index-BeSVJRg4.d.ts → index-Cqaw1XMU.d.ts} +2 -2
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/render/client.d.cts +2 -2
- package/dist/render/client.d.ts +2 -2
- package/dist/render/index.d.cts +1 -1
- package/dist/render/index.d.ts +1 -1
- package/dist/render/server.d.cts +2 -2
- package/dist/render/server.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1237,8 +1237,8 @@ interface DequeryOptions {
|
|
|
1237
1237
|
}
|
|
1238
1238
|
declare const defaultConfig: DequeryOptions;
|
|
1239
1239
|
type ElementCreationOptions = JSX.HTMLAttributesLowerCase & JSX.HTMLAttributesLowerCase & {
|
|
1240
|
-
|
|
1241
|
-
|
|
1240
|
+
html?: string;
|
|
1241
|
+
text?: string;
|
|
1242
1242
|
};
|
|
1243
1243
|
declare const dequery: (selectorRefOrEl: Node | Element | Text | Ref<Node | Element | Text, any> | string, options?: DequeryOptions | ElementCreationOptions) => Dequery;
|
|
1244
1244
|
declare class Dequery {
|
package/dist/index.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var H=Object.defineProperty;var i=(t,e)=>H(t,"name",{value:e,configurable:!0});var c=require("./index-B8vV328V.cjs");const I=!0,T=i((t,e)=>{if(t===e)return!0;if(t.nodeType!==e.nodeType)return!1;if(t.nodeType===Node.ELEMENT_NODE){const r=t,s=e;if(r.tagName!==s.tagName)return!1;const n=r.attributes,o=s.attributes;if(n.length!==o.length)return!1;for(let h=0;h<n.length;h++){const a=n[h],u=s.getAttribute(a.name);if(a.value!==u)return!1}}return!(t.nodeType===Node.TEXT_NODE&&t.textContent!==e.textContent)},"areDomNodesEqual"),v=i((t,e)=>{if(!T(t,e)){t.parentNode?.replaceChild(e.cloneNode(!0),t);return}if(t.nodeType===Node.ELEMENT_NODE){const r=t.childNodes,s=e.childNodes,n=Math.max(r.length,s.length);for(let o=0;o<n;o++){const h=r[o],a=s[o];h&&a?v(h,a):a&&!h?t.appendChild(a.cloneNode(!0)):h&&!a&&t.removeChild(h)}}},"updateNode"),A=i((t,e)=>{const s=new DOMParser().parseFromString(e,"text/html"),n=Array.from(s.body.children);if(n.length===0){console.warn("No root elements found in the new HTML.");return}for(let o=0;o<n.length;o++){const h=n[o],a=t.children[o];a?v(a,h):t.appendChild(h.cloneNode(!0))}for(;t.children.length>n.length;)t.removeChild(t.lastChild)},"updateDom");function L(t){if(t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"||typeof t=="object"&&"type"in t)return t}i(L,"toValidChild");function N(t,e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return t.nodeType===Node.TEXT_NODE;if(e&&typeof e=="object"){if(t.nodeType!==Node.ELEMENT_NODE)return!1;const r=t.tagName.toLowerCase(),s=e.type.toLowerCase();return r===s}return!1}i(N,"areNodeAndChildMatching");function B(t,e,r){const s=c.getRenderer(r.window.document);if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"){const n=String(e);t.nodeValue!==n&&(t.nodeValue=n);return}if(t.nodeType===Node.ELEMENT_NODE&&e&&typeof e=="object"){const n=t,o=Array.from(n.attributes);for(const h of o){const{name:a}=h;!Object.prototype.hasOwnProperty.call(e.attributes,a)&&a!=="style"&&n.removeAttribute(a)}if(s.setAttributes(e,n),e.attributes?.dangerouslySetInnerHTML){n.innerHTML=e.attributes.dangerouslySetInnerHTML.__html;return}if(e.children)b(n,e.children,r);else for(;n.firstChild;)n.removeChild(n.firstChild)}}i(B,"patchDomInPlace");function j(t,e){const r=c.getRenderer(e.window.document);if(t==null)return;if(typeof t=="string"||typeof t=="number"||typeof t=="boolean")return e.window.document.createTextNode(String(t));let s=r.createElementOrElements(t);return s&&!Array.isArray(s)&&(s=[s]),s}i(j,"createDomFromChild");function b(t,e,r){console.log("updateDomWithVdom",e,t);let s=[];if(Array.isArray(e))s=e.map(L).filter(a=>a!==void 0);else if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")s=[e];else if(e){const a=L(e);a!==void 0&&(s=[a])}console.log("new children to render!",s);const n=s.map(a=>j(a,r)),o=Array.from(t.childNodes),h=Math.max(o.length,n.length);for(let a=0;a<h;a++){const u=o[a],f=n[a],d=s[a];if(u&&f!==void 0)if(Array.isArray(f))if(f.length===0)t.removeChild(u);else{const p=f[0];t.replaceChild(p,u),typeof p<"u"&&c.handleLifecycleEventsForOnMount(p);for(let m=1;m<f.length;m++)f[m]&&(t.insertBefore(f[m],p.nextSibling),typeof f[m]<"u"&&(console.log("inserBefore!"),c.handleLifecycleEventsForOnMount(f[m])))}else f&&(d&&N(u,d)?B(u,d,r):(t.replaceChild(f,u),c.handleLifecycleEventsForOnMount(f)));else!u&&f!==void 0?Array.isArray(f)?f.forEach(p=>{const m=p&&t.appendChild(p);return m&&c.handleLifecycleEventsForOnMount(p),m}):f&&(t.appendChild(f),c.handleLifecycleEventsForOnMount(f)):u&&f===void 0&&t.removeChild(u)}}i(b,"updateDomWithVdom");function _(t,e,r){for(;t.firstChild;)t.removeChild(t.firstChild);const n=c.getRenderer(r.window.document).createElementOrElements(e);if(Array.isArray(n))for(const o of n)o&&t.appendChild(o);else n&&t.appendChild(n)}i(_,"replaceDomWithVdom");const l=i(t=>{if(t instanceof HTMLElement)return t;let e="Expected an HTMLElement, but found: ";throw t?.nodeName?e+=t.nodeName:e+=t,new Error(e)},"elementGuard"),g={maxWaitMs:1e3},x=i((t,e=g)=>{if(!t)throw console.error("dequery: selector, ref, or element is required. Got nothing."),new Error("dequery: selector, ref, or element is required. Got nothing.");const r=new C({...g,...e});if(typeof t=="string"){const s=/^<(\w+)>$/,n=t.match(s);if(n){const o=document.createElement(n[1]),{innerHTML:h,textContent:a,...u}=e;Object.entries(u).forEach(([f,d])=>{o.setAttribute(f,String(d))}),h?o.innerHTML=h:a&&(o.textContent=a),r.elements=[o]}else r.query(t)}else c.isRef(t)?r.elements=[t.current]:t.nodeType===Node.ELEMENT_NODE&&(r.elements=[t]);return l(r.el),r},"dequery");class C{static{i(this,"Dequery")}constructor(e=g,r=[]){this.options=e,this.elements=r,this.options={...g,...e},this.elements=[]}get el(){return this.elements[0]}tap(e){return e(this.elements),this}query(e){return console.log("querying",e),this.elements=Array.from(document.querySelectorAll(e)),this}first(){return this.elements=[this.el],this}last(){const e=this.elements;return this.elements=[e[e.length-1]],this}next(){return this.elements=this.elements.map(e=>l(e).nextElementSibling).filter(Boolean),this}eq(e){return this.elements=[this.elements[e]],this}prev(){return this.elements=this.elements.map(e=>l(e).previousElementSibling).filter(Boolean),this}each(e){return this.elements.forEach(e),this}find(e){return this.elements=this.elements.flatMap(r=>Array.from(l(r).querySelectorAll(e))),this}parent(){return this.elements=this.elements.map(e=>e.parentElement).filter(Boolean),this}children(){return this.elements=this.elements.flatMap(e=>Array.from(l(e).children)),this}closest(e){return this.elements=this.elements.map(r=>l(r).closest(e)).filter(Boolean),this}filter(e){return this.elements=this.elements.filter(r=>l(r).matches(e)),this}attr(e,r){return r!==void 0?(this.elements.forEach(s=>l(s).setAttribute(e,r)),this):l(this.el)?.getAttribute(e)??null}empty(){return this.elements.forEach(e=>{l(e).innerHTML=""}),this}html(e){return e&&this.elements.forEach(r=>{A(l(r),e)}),this}jsx(e){return this.elements.forEach(r=>{b(l(r),e,globalThis)}),this}text(e){return e&&this.elements.forEach(r=>{l(r).textContent=e}),this}remove(){return this.elements.forEach(e=>l(e).remove()),this}replaceWithJsx(e){return this.elements.forEach(r=>{const s=e instanceof Node?e:c.renderIsomorphic(e,l(r),globalThis);r.parentNode?.replaceChild(s.cloneNode(!0),r)}),this}append(e){return this.elements.forEach(r=>{typeof e=="string"?l(r).innerHTML+=e:e instanceof C?e.elements.forEach(s=>{r.appendChild(l(s))}):r.appendChild(e)}),this}on(e,r){return this.elements.forEach(s=>s.addEventListener(e,r)),this}off(e,r){return this.elements.forEach(s=>s.removeEventListener(e,r)),this}css(e,r){return!r&&typeof e=="string"?l(this.el)?.style.getPropertyValue(e):!r&&typeof e=="object"?(this.elements.forEach(s=>{for(const n in e)l(s).style.setProperty(n,e[n])}),this):typeof r=="string"&&typeof e=="string"?(this.elements.forEach(s=>{l(s).style.setProperty(e,r)}),this):this}addClass(e){const r=Array.isArray(e)?e:[e];return this.elements.forEach(s=>l(s).classList.add(...r)),this}removeClass(e){const r=Array.isArray(e)?e:[e];return this.elements.forEach(s=>l(s).classList.remove(...r)),this}hasClass(e){return this.elements.every(r=>l(r).classList.contains(e))}toggleClass(e){return this.elements.forEach(r=>l(r).classList.toggle(e)),this}animateClass(e,r){return this.elements.forEach(s=>{l(s).classList.add(e),setTimeout(()=>l(s).classList.remove(e),r)}),this}click(){return this.elements.forEach(e=>l(e).click()),this}focus(){return this.elements.forEach(e=>l(e).focus()),this}blur(){return this.elements.forEach(e=>l(e).blur()),this}val(e){return typeof e<"u"?(this.elements.forEach(r=>{r instanceof HTMLInputElement&&(r.value=String(e))}),this):l(this.el)?.value}map(e){return this.elements.map(e)}prop(e,r){return typeof r<"u"?(this.elements.forEach(s=>{l(s)[e]=r}),this):l(this.el)[e]}data(e,r){return typeof r<"u"?(this.elements.forEach(s=>{l(s).dataset[e]=r}),this):l(this.el)?.dataset[e]}form(e){if(e)return Object.entries(e).forEach(([s,n])=>{this.elements.forEach(o=>{o instanceof HTMLInputElement&&(o.value=n)})}),this;const r={};return this.elements.forEach(s=>{s instanceof HTMLInputElement&&(r[s.name]=s.value)}),r}}const R=x,F=i(()=>{const t=new Map;return{clear:i(()=>{t.clear()},"clear"),getItem:i(e=>t.get(String(e))??null,"getItem"),removeItem:i(e=>{t.delete(String(e))},"removeItem"),setItem:i((e,r)=>{t.set(String(e),r)},"setItem")}},"newInMemoryGenericStorageBackend"),O=F();class E{static{i(this,"WebStorageProvider")}storage;constructor(e){this.storage=e||O}get(e,r,s){const n=this.storage.getItem(e);if(n===null)return r;let o=JSON.parse(n);return s&&(o=s(e,o)),o}set(e,r,s){s&&(r=s(e,r)),this.storage.setItem(e,JSON.stringify(r))}remove(e){this.storage.removeItem(e)}removeAll(){this.storage.clear()}get backendApi(){return this.storage}}const k=i((t,e)=>{switch(t){case"session":return new E(window.sessionStorage);case"local":return new E(window.localStorage)}return new E},"getPersistenceProvider$1"),V=i((t,e)=>new E,"getPersistenceProvider"),W=i(()=>typeof window>"u"||typeof window.document>"u","isServer"),$=i((t="local",e)=>W()?V():k(t),"webstorage"),G=/{([^}]*)}/g,J=i((t,e)=>t.replace(G,(r,s)=>e[s]||`{${s}}`),"interpolate"),S=i(()=>{const t=c.createStore({});let e="en";const r=[];return{language:e,changeLanguage(s){e=s,r.forEach(n=>n(s))},t(s,n={}){const o=t.get(`${e}.${s}`)||s;return typeof o!="string"?o:J(o,n)},load(s,n){t.set(s,{...t.get(s),...n})},subscribe(s){return r.push(s),()=>{const n=r.indexOf(s);n>=0&&r.splice(n,1)}}}},"createI18n"),w=S(),U=i(({path:t,replacements:e,tag:r,...s})=>{const n={};return w.subscribe(()=>{const o=w.t(t,e);console.log("new val",o)}),{tag:r||"span",attributes:{ref:n,...s},children:w.t(t,e)}},"Trans");class y{static{i(this,"Headers")}map;constructor(e={}){this.map=new Map,e instanceof y?e.forEach((r,s)=>this.map.set(s,r)):Object.entries(e).forEach(([r,s])=>this.map.set(r.toLowerCase(),s))}append(e,r){this.map.set(e.toLowerCase(),r)}get(e){return this.map.get(e.toLowerCase())||null}has(e){return this.map.has(e.toLowerCase())}forEach(e){this.map.forEach((r,s)=>e(r,s))}}class M extends EventTarget{static{i(this,"ProgressSignal")}_progress;constructor(){super(),this._progress={loaded:0,total:0}}get progress(){return this._progress}dispatchProgress(e){this._progress={loaded:e.loaded,total:e.total},this.dispatchEvent(new ProgressEvent("progress",{loaded:e.loaded,total:e.total}))}}class K{static{i(this,"ProgressController")}signal;constructor(){this.signal=new M}}function P(t){return t?t instanceof FormData||t instanceof Blob||t instanceof URLSearchParams||t instanceof ArrayBuffer||ArrayBuffer.isView(t)||typeof t=="string"?t:typeof t=="object"?JSON.stringify(t):String(t):null}i(P,"serializeBody");function q(t){const e=new y;return t.split(`\r
|
|
2
|
-
`).forEach(r=>{const[s,...n]=r.split(": ");s&&e.append(s,n.join(": "))}),e}i(q,"parseHeaders");async function D(t,e={}){return!e.progressSignal&&typeof globalThis.fetch=="function"?D(t,e):new Promise((r,s)=>{const n=new XMLHttpRequest,o=(e.method||"GET").toUpperCase(),
|
|
1
|
+
"use strict";var I=Object.defineProperty;var i=(t,e)=>I(t,"name",{value:e,configurable:!0});var h=require("./index-B8vV328V.cjs");const N=!0,T=i((t,e)=>{if(t===e)return!0;if(t.nodeType!==e.nodeType)return!1;if(t.nodeType===Node.ELEMENT_NODE){const r=t,s=e;if(r.tagName!==s.tagName)return!1;const n=r.attributes,o=s.attributes;if(n.length!==o.length)return!1;for(let c=0;c<n.length;c++){const a=n[c],u=s.getAttribute(a.name);if(a.value!==u)return!1}}return!(t.nodeType===Node.TEXT_NODE&&t.textContent!==e.textContent)},"areDomNodesEqual"),v=i((t,e)=>{if(!T(t,e)){t.parentNode?.replaceChild(e.cloneNode(!0),t);return}if(t.nodeType===Node.ELEMENT_NODE){const r=t.childNodes,s=e.childNodes,n=Math.max(r.length,s.length);for(let o=0;o<n;o++){const c=r[o],a=s[o];c&&a?v(c,a):a&&!c?t.appendChild(a.cloneNode(!0)):c&&!a&&t.removeChild(c)}}},"updateNode"),A=i((t,e)=>{const s=new DOMParser().parseFromString(e,"text/html"),n=Array.from(s.body.children);if(n.length===0){console.warn("No root elements found in the new HTML.");return}for(let o=0;o<n.length;o++){const c=n[o],a=t.children[o];a?v(a,c):t.appendChild(c.cloneNode(!0))}for(;t.children.length>n.length;)t.removeChild(t.lastChild)},"updateDom");function L(t){if(t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"||typeof t=="object"&&"type"in t)return t}i(L,"toValidChild");function H(t,e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return t.nodeType===Node.TEXT_NODE;if(e&&typeof e=="object"){if(t.nodeType!==Node.ELEMENT_NODE)return!1;const r=t.tagName.toLowerCase(),s=e.type.toLowerCase();return r===s}return!1}i(H,"areNodeAndChildMatching");function B(t,e,r){const s=h.getRenderer(r.window.document);if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"){const n=String(e);t.nodeValue!==n&&(t.nodeValue=n);return}if(t.nodeType===Node.ELEMENT_NODE&&e&&typeof e=="object"){const n=t,o=Array.from(n.attributes);for(const c of o){const{name:a}=c;!Object.prototype.hasOwnProperty.call(e.attributes,a)&&a!=="style"&&n.removeAttribute(a)}if(s.setAttributes(e,n),e.attributes?.dangerouslySetInnerHTML){n.innerHTML=e.attributes.dangerouslySetInnerHTML.__html;return}if(e.children)b(n,e.children,r);else for(;n.firstChild;)n.removeChild(n.firstChild)}}i(B,"patchDomInPlace");function j(t,e){const r=h.getRenderer(e.window.document);if(t==null)return;if(typeof t=="string"||typeof t=="number"||typeof t=="boolean")return e.window.document.createTextNode(String(t));let s=r.createElementOrElements(t);return s&&!Array.isArray(s)&&(s=[s]),s}i(j,"createDomFromChild");function b(t,e,r){console.log("updateDomWithVdom",e,t);let s=[];if(Array.isArray(e))s=e.map(L).filter(a=>a!==void 0);else if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")s=[e];else if(e){const a=L(e);a!==void 0&&(s=[a])}console.log("new children to render!",s);const n=s.map(a=>j(a,r)),o=Array.from(t.childNodes),c=Math.max(o.length,n.length);for(let a=0;a<c;a++){const u=o[a],f=n[a],d=s[a];if(u&&f!==void 0)if(Array.isArray(f))if(f.length===0)t.removeChild(u);else{const p=f[0];t.replaceChild(p,u),typeof p<"u"&&h.handleLifecycleEventsForOnMount(p);for(let m=1;m<f.length;m++)f[m]&&(t.insertBefore(f[m],p.nextSibling),typeof f[m]<"u"&&(console.log("inserBefore!"),h.handleLifecycleEventsForOnMount(f[m])))}else f&&(d&&H(u,d)?B(u,d,r):(t.replaceChild(f,u),h.handleLifecycleEventsForOnMount(f)));else!u&&f!==void 0?Array.isArray(f)?f.forEach(p=>{const m=p&&t.appendChild(p);return m&&h.handleLifecycleEventsForOnMount(p),m}):f&&(t.appendChild(f),h.handleLifecycleEventsForOnMount(f)):u&&f===void 0&&t.removeChild(u)}}i(b,"updateDomWithVdom");function _(t,e,r){for(;t.firstChild;)t.removeChild(t.firstChild);const n=h.getRenderer(r.window.document).createElementOrElements(e);if(Array.isArray(n))for(const o of n)o&&t.appendChild(o);else n&&t.appendChild(n)}i(_,"replaceDomWithVdom");const l=i(t=>{if(t instanceof HTMLElement)return t;let e="Expected an HTMLElement, but found: ";throw t?.nodeName?e+=t.nodeName:e+=t,new Error(e)},"elementGuard"),g={maxWaitMs:1e3},x=i((t,e=g)=>{if(!t)throw console.error("dequery: selector, ref, or element is required. Got nothing."),new Error("dequery: selector, ref, or element is required. Got nothing.");const r=new C({...g,...e});if(typeof t=="string"){const s=/^<(\w+)>$/,n=t.match(s);if(n){const o=document.createElement(n[1]),{text:c,html:a,...u}=e;Object.entries(u).forEach(([f,d])=>{o.setAttribute(f,String(d))}),a?o.innerHTML=a:c&&(o.textContent=c),r.elements=[o]}else r.query(t)}else h.isRef(t)?r.elements=[t.current]:t.nodeType===Node.ELEMENT_NODE&&(r.elements=[t]);return l(r.el),r},"dequery");class C{static{i(this,"Dequery")}constructor(e=g,r=[]){this.options=e,this.elements=r,this.options={...g,...e},this.elements=[]}get el(){return this.elements[0]}tap(e){return e(this.elements),this}query(e){return console.log("querying",e),this.elements=Array.from(document.querySelectorAll(e)),this}first(){return this.elements=[this.el],this}last(){const e=this.elements;return this.elements=[e[e.length-1]],this}next(){return this.elements=this.elements.map(e=>l(e).nextElementSibling).filter(Boolean),this}eq(e){return this.elements=[this.elements[e]],this}prev(){return this.elements=this.elements.map(e=>l(e).previousElementSibling).filter(Boolean),this}each(e){return this.elements.forEach(e),this}find(e){return this.elements=this.elements.flatMap(r=>Array.from(l(r).querySelectorAll(e))),this}parent(){return this.elements=this.elements.map(e=>e.parentElement).filter(Boolean),this}children(){return this.elements=this.elements.flatMap(e=>Array.from(l(e).children)),this}closest(e){return this.elements=this.elements.map(r=>l(r).closest(e)).filter(Boolean),this}filter(e){return this.elements=this.elements.filter(r=>l(r).matches(e)),this}attr(e,r){return r!==void 0?(this.elements.forEach(s=>l(s).setAttribute(e,r)),this):l(this.el)?.getAttribute(e)??null}empty(){return this.elements.forEach(e=>{l(e).innerHTML=""}),this}html(e){return e&&this.elements.forEach(r=>{A(l(r),e)}),this}jsx(e){return this.elements.forEach(r=>{b(l(r),e,globalThis)}),this}text(e){return e&&this.elements.forEach(r=>{l(r).textContent=e}),this}remove(){return this.elements.forEach(e=>l(e).remove()),this}replaceWithJsx(e){return this.elements.forEach(r=>{const s=e instanceof Node?e:h.renderIsomorphic(e,l(r),globalThis);r.parentNode?.replaceChild(s.cloneNode(!0),r)}),this}append(e){return typeof e>"u"||e===null?this:(this.elements.forEach(r=>{typeof e=="string"?l(r).innerHTML+=e:e instanceof C?e.elements.forEach(s=>{r.appendChild(l(s))}):r.appendChild(e)}),this)}on(e,r){return this.elements.forEach(s=>s.addEventListener(e,r)),this}off(e,r){return this.elements.forEach(s=>s.removeEventListener(e,r)),this}css(e,r){return!r&&typeof e=="string"?l(this.el)?.style.getPropertyValue(e):!r&&typeof e=="object"?(this.elements.forEach(s=>{for(const n in e)l(s).style.setProperty(n,e[n])}),this):typeof r=="string"&&typeof e=="string"?(this.elements.forEach(s=>{l(s).style.setProperty(e,r)}),this):this}addClass(e){const r=Array.isArray(e)?e:[e];return this.elements.forEach(s=>l(s).classList.add(...r)),this}removeClass(e){const r=Array.isArray(e)?e:[e];return this.elements.forEach(s=>l(s).classList.remove(...r)),this}hasClass(e){return this.elements.every(r=>l(r).classList.contains(e))}toggleClass(e){return this.elements.forEach(r=>l(r).classList.toggle(e)),this}animateClass(e,r){return this.elements.forEach(s=>{l(s).classList.add(e),setTimeout(()=>l(s).classList.remove(e),r)}),this}click(){return this.elements.forEach(e=>l(e).click()),this}focus(){return this.elements.forEach(e=>l(e).focus()),this}blur(){return this.elements.forEach(e=>l(e).blur()),this}val(e){return typeof e<"u"?(this.elements.forEach(r=>{r instanceof HTMLInputElement&&(r.value=String(e))}),this):l(this.el)?.value}map(e){return this.elements.map(e)}prop(e,r){return typeof r<"u"?(this.elements.forEach(s=>{l(s)[e]=r}),this):l(this.el)[e]}data(e,r){return typeof r<"u"?(this.elements.forEach(s=>{l(s).dataset[e]=r}),this):l(this.el)?.dataset[e]}form(e){if(e)return Object.entries(e).forEach(([s,n])=>{this.elements.forEach(o=>{o instanceof HTMLInputElement&&(o.value=n)})}),this;const r={};return this.elements.forEach(s=>{s instanceof HTMLInputElement&&(r[s.name]=s.value)}),r}}const R=x,F=i(()=>{const t=new Map;return{clear:i(()=>{t.clear()},"clear"),getItem:i(e=>t.get(String(e))??null,"getItem"),removeItem:i(e=>{t.delete(String(e))},"removeItem"),setItem:i((e,r)=>{t.set(String(e),r)},"setItem")}},"newInMemoryGenericStorageBackend"),O=F();class E{static{i(this,"WebStorageProvider")}storage;constructor(e){this.storage=e||O}get(e,r,s){const n=this.storage.getItem(e);if(n===null)return r;let o=JSON.parse(n);return s&&(o=s(e,o)),o}set(e,r,s){s&&(r=s(e,r)),this.storage.setItem(e,JSON.stringify(r))}remove(e){this.storage.removeItem(e)}removeAll(){this.storage.clear()}get backendApi(){return this.storage}}const k=i((t,e)=>{switch(t){case"session":return new E(window.sessionStorage);case"local":return new E(window.localStorage)}return new E},"getPersistenceProvider$1"),V=i((t,e)=>new E,"getPersistenceProvider"),W=i(()=>typeof window>"u"||typeof window.document>"u","isServer"),$=i((t="local",e)=>W()?V():k(t),"webstorage"),G=/{([^}]*)}/g,J=i((t,e)=>t.replace(G,(r,s)=>e[s]||`{${s}}`),"interpolate"),S=i(()=>{const t=h.createStore({});let e="en";const r=[];return{language:e,changeLanguage(s){e=s,r.forEach(n=>n(s))},t(s,n={}){const o=t.get(`${e}.${s}`)||s;return typeof o!="string"?o:J(o,n)},load(s,n){t.set(s,{...t.get(s),...n})},subscribe(s){return r.push(s),()=>{const n=r.indexOf(s);n>=0&&r.splice(n,1)}}}},"createI18n"),w=S(),U=i(({path:t,replacements:e,tag:r,...s})=>{const n={};return w.subscribe(()=>{const o=w.t(t,e);console.log("new val",o)}),{tag:r||"span",attributes:{ref:n,...s},children:w.t(t,e)}},"Trans");class y{static{i(this,"Headers")}map;constructor(e={}){this.map=new Map,e instanceof y?e.forEach((r,s)=>this.map.set(s,r)):Object.entries(e).forEach(([r,s])=>this.map.set(r.toLowerCase(),s))}append(e,r){this.map.set(e.toLowerCase(),r)}get(e){return this.map.get(e.toLowerCase())||null}has(e){return this.map.has(e.toLowerCase())}forEach(e){this.map.forEach((r,s)=>e(r,s))}}class M extends EventTarget{static{i(this,"ProgressSignal")}_progress;constructor(){super(),this._progress={loaded:0,total:0}}get progress(){return this._progress}dispatchProgress(e){this._progress={loaded:e.loaded,total:e.total},this.dispatchEvent(new ProgressEvent("progress",{loaded:e.loaded,total:e.total}))}}class K{static{i(this,"ProgressController")}signal;constructor(){this.signal=new M}}function P(t){return t?t instanceof FormData||t instanceof Blob||t instanceof URLSearchParams||t instanceof ArrayBuffer||ArrayBuffer.isView(t)||typeof t=="string"?t:typeof t=="object"?JSON.stringify(t):String(t):null}i(P,"serializeBody");function q(t){const e=new y;return t.split(`\r
|
|
2
|
+
`).forEach(r=>{const[s,...n]=r.split(": ");s&&e.append(s,n.join(": "))}),e}i(q,"parseHeaders");async function D(t,e={}){return!e.progressSignal&&typeof globalThis.fetch=="function"?D(t,e):new Promise((r,s)=>{const n=new XMLHttpRequest,o=(e.method||"GET").toUpperCase(),c=P(e.body||null),a=e.progressSignal,u=e.signal;if(u){const f=i(()=>{n.abort(),s(new DOMException("The operation was aborted.","AbortError"))},"abortHandler");u.addEventListener("abort",f,{once:!0})}n.open(o,t.toString(),!0),e.credentials==="include"?n.withCredentials=!0:e.credentials==="omit"&&(n.withCredentials=!1),e.headers instanceof y?e.headers.forEach((f,d)=>n.setRequestHeader(d,f)):e.headers&&Object.entries(e.headers).forEach(([f,d])=>{n.setRequestHeader(f,d)}),a&&(n.upload&&(n.upload.onprogress=f=>a.dispatchProgress(f)),n.onprogress=f=>a.dispatchProgress(f)),n.onload=()=>{const f={ok:n.status>=200&&n.status<300,status:n.status,statusText:n.statusText,headers:q(n.getAllResponseHeaders()),url:n.responseURL,text:i(()=>Promise.resolve(n.responseText),"text"),json:i(()=>Promise.resolve(JSON.parse(n.responseText)),"json"),blob:i(()=>Promise.resolve(new Blob([n.response])),"blob")};r(f)},n.onerror=()=>s(new TypeError("Network request failed")),n.ontimeout=()=>s(new TypeError("Network request timed out")),n.onabort=()=>s(new DOMException("The operation was aborted.","AbortError")),n.send(c)})}i(D,"fetch"),exports.Fragment=h.Fragment,exports.createInPlaceErrorMessageVNode=h.createInPlaceErrorMessageVNode,exports.createRef=h.createRef,exports.createStore=h.createStore,exports.ensureKey=h.ensureKey,exports.getAllKeysFromPath=h.getAllKeysFromPath,exports.getByPath=h.getByPath,exports.getRenderer=h.getRenderer,exports.handleLifecycleEventsForOnMount=h.handleLifecycleEventsForOnMount,exports.isRef=h.isRef,exports.jsx=h.jsx,exports.jsxDEV=h.jsxDEV,exports.jsxs=h.jsxs,exports.observeUnmount=h.observeUnmount,exports.renderIsomorphic=h.renderIsomorphic,exports.setByPath=h.setByPath,exports.$=R,exports.Dequery=C,exports.Headers=y,exports.ProgressController=K,exports.ProgressSignal=M,exports.Trans=U,exports.areDomNodesEqual=T,exports.createI18n=S,exports.defaultConfig=g,exports.dequery=x,exports.fetch=D,exports.i18n=w,exports.inDevMode=N,exports.parseHeaders=q,exports.replaceDomWithVdom=_,exports.serializeBody=P,exports.updateDom=A,exports.updateDomWithVdom=b,exports.webstorage=$;
|
|
3
3
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/common/devmode.ts","../src/common/dom.ts","../src/dequery/dequery.ts","../src/webstorage/isomporphic/memory.ts","../src/webstorage/client/index.ts","../src/webstorage/server/index.ts","../src/webstorage/runtime.ts","../src/webstorage/index.ts","../src/i18n/i18n.tsx","../src/i18n/trans.tsx","../src/net/fetch.ts"],"sourcesContent":["export const inDevMode = true;","import type { Globals, RenderInput, VNode, VNodeAttributes, VNodeChild } from \"defuss/jsx-runtime\";\nimport { getRenderer, handleLifecycleEventsForOnMount } from \"../render/isomorph.js\";\n\n/**\n * Compares two DOM nodes for equality with performance optimizations.\n * 1. Checks for reference equality.\n * 2. Compares node types.\n * 3. For Element nodes, compares tag names and attributes.\n * 4. For Text nodes, compares text content.\n */\nexport const areDomNodesEqual = (oldNode: Node, newNode: Node): boolean => {\n // return true if both references are identical\n if (oldNode === newNode) return true;\n\n // compare node types\n if (oldNode.nodeType !== newNode.nodeType) return false;\n\n // handle Element nodes\n if (oldNode.nodeType === Node.ELEMENT_NODE) {\n const oldElement = oldNode as Element;\n const newElement = newNode as Element;\n\n // compare tag names\n if (oldElement.tagName !== newElement.tagName) return false;\n\n const oldAttrs = oldElement.attributes;\n const newAttrs = newElement.attributes;\n\n // compare number of attributes\n if (oldAttrs.length !== newAttrs.length) return false;\n\n // iterate and compare each attribute's name and value\n for (let i = 0; i < oldAttrs.length; i++) {\n const oldAttr = oldAttrs[i];\n const newAttrValue = newElement.getAttribute(oldAttr.name);\n if (oldAttr.value !== newAttrValue) return false;\n }\n }\n\n // handle Text nodes\n if (oldNode.nodeType === Node.TEXT_NODE) {\n if (oldNode.textContent !== newNode.textContent) return false;\n }\n return true;\n};\n\n/**\n * Recursively updates oldNode with the structure of newNode:\n * - If they differ (tag/attrs/text), oldNode is replaced\n * - If same, we recurse on children\n */\nconst updateNode = (oldNode: Node, newNode: Node) => {\n // 1) If different, replace old with new\n if (!areDomNodesEqual(oldNode, newNode)) {\n oldNode.parentNode?.replaceChild(newNode.cloneNode(true), oldNode);\n return;\n }\n\n // 2) If they match and are elements, recurse on their children\n if (oldNode.nodeType === Node.ELEMENT_NODE) {\n const oldChildren = oldNode.childNodes;\n const newChildren = newNode.childNodes;\n const maxLength = Math.max(oldChildren.length, newChildren.length);\n\n for (let i = 0; i < maxLength; i++) {\n const oldChild = oldChildren[i];\n const newChild = newChildren[i];\n\n if (oldChild && newChild) {\n // both exist; recurse\n updateNode(oldChild, newChild);\n } else if (newChild && !oldChild) {\n // new child doesn't exist in old => append\n oldNode.appendChild(newChild.cloneNode(true));\n } else if (oldChild && !newChild) {\n // old child doesn't exist in new => remove\n oldNode.removeChild(oldChild);\n }\n }\n }\n};\n\n/**\n * Partially updates a DOM subtree by comparing `targetElement` to\n * newly parsed HTML. No `.innerHTML` is used here; we parse via DOMParser.\n */\nexport const updateDom = (targetElement: Element, newHTML: string): void => {\n // 1) Parse the new HTML string into a DocumentFragment-like structure\n const parser = new DOMParser();\n // 'text/html' => parse as a full HTML doc. We take the <body>'s children as our new nodes\n const doc = parser.parseFromString(newHTML, 'text/html');\n\n // 2) Extract the root child elements from the newly parsed doc\n // Typically, doc.body is where your HTML snippet content is placed.\n const newRoots = Array.from(doc.body.children);\n\n if (newRoots.length === 0) {\n console.warn('No root elements found in the new HTML.');\n return;\n }\n\n // 3) For each new root, see if there's an old corresponding child to update\n for (let i = 0; i < newRoots.length; i++) {\n const newRoot = newRoots[i];\n const oldChild = targetElement.children[i];\n\n if (oldChild) {\n // partial update\n updateNode(oldChild, newRoot);\n } else {\n // target has fewer children => just append\n targetElement.appendChild(newRoot.cloneNode(true));\n }\n }\n\n // 4) Remove any old leftover children that have no matching new root\n while (targetElement.children.length > newRoots.length) {\n targetElement.removeChild(targetElement.lastChild!);\n }\n};\n\n/********************************************************\n * 1) Define a \"valid\" child type & utility\n ********************************************************/\nexport type ValidChild =\n | string\n | number\n | boolean\n | null\n | undefined\n | VNode<VNodeAttributes>;\n\nfunction toValidChild(child: VNodeChild): ValidChild | undefined {\n if (child == null) return child; // null or undefined\n if (\n typeof child === \"string\" ||\n typeof child === \"number\" ||\n typeof child === \"boolean\"\n ) {\n return child;\n }\n if (typeof child === \"object\" && \"type\" in child) {\n return child as VNode<VNodeAttributes>;\n }\n // e.g. function or {} -> filter out\n return undefined;\n}\n\n/********************************************************\n * 2) Check if a DOM node and a ValidChild match by type\n ********************************************************/\nfunction areNodeAndChildMatching(domNode: Node, child: ValidChild): boolean {\n if (\n typeof child === \"string\" ||\n typeof child === \"number\" ||\n typeof child === \"boolean\"\n ) {\n // must be a text node\n return domNode.nodeType === Node.TEXT_NODE;\n } else if (child && typeof child === \"object\") {\n // must be same tag\n if (domNode.nodeType !== Node.ELEMENT_NODE) return false;\n const oldTag = (domNode as Element).tagName.toLowerCase();\n const newTag = child.type.toLowerCase();\n return oldTag === newTag;\n }\n // if child is null/undefined => definitely no match\n return false;\n}\n\n/********************************************************\n * 3) Patch a single DOM node in place (attributes, text, children)\n ********************************************************/\nfunction patchDomInPlace(domNode: Node, child: ValidChild, globals: Globals) {\n const renderer = getRenderer(globals.window.document);\n\n // textlike\n if (typeof child === \"string\" || typeof child === \"number\" || typeof child === \"boolean\") {\n const newText = String(child);\n if (domNode.nodeValue !== newText) {\n domNode.nodeValue = newText;\n }\n return;\n }\n\n // element\n if (domNode.nodeType === Node.ELEMENT_NODE && child && typeof child === \"object\") {\n // 1) update attributes\n // remove old attributes not present\n const el = domNode as Element;\n const existingAttrs = Array.from(el.attributes);\n for (const attr of existingAttrs) {\n const { name } = attr;\n if (!Object.prototype.hasOwnProperty.call(child.attributes, name) && name !== \"style\") {\n el.removeAttribute(name);\n }\n }\n // set new attributes\n renderer.setAttributes(child, el);\n\n // 2) dangerouslySetInnerHTML => skip child updates\n if (child.attributes?.dangerouslySetInnerHTML) {\n el.innerHTML = child.attributes.dangerouslySetInnerHTML.__html;\n return;\n }\n\n // 3) recursively do partial updates for children\n if (child.children) {\n updateDomWithVdom(el, child.children as any, globals);\n } else {\n // remove old children\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n }\n }\n}\n\n/********************************************************\n * 4) Create brand new DOM node from a ValidChild\n ********************************************************/\nfunction createDomFromChild(child: ValidChild, globals: Globals): Node | Node[] | undefined {\n const renderer = getRenderer(globals.window.document);\n\n if (child == null) return undefined;\n if (typeof child === \"string\" || typeof child === \"number\" || typeof child === \"boolean\") {\n return globals.window.document.createTextNode(String(child));\n }\n\n // else it's a VNode, create without parent as we don't know where it goes yet\n // therefore, we need to handle the onMount lifecycle event later too\n let renderResult = renderer.createElementOrElements(child) as Node | Node[] | undefined;\n\n if (renderResult && !Array.isArray(renderResult)) {\n renderResult = [renderResult];\n }\n return renderResult;\n}\n\n/********************************************************\n * 5) Main partial-update function (index-by-index approach)\n ********************************************************/\nexport function updateDomWithVdom(\n parentElement: Element,\n newVDOM: RenderInput,\n globals: Globals\n) {\n\n console.log('updateDomWithVdom', newVDOM, parentElement)\n \n // A) Convert newVDOM => array of \"valid\" children\n let newChildren: ValidChild[] = [];\n if (Array.isArray(newVDOM)) {\n newChildren = newVDOM.map(toValidChild).filter((c): c is ValidChild => c !== undefined);\n } else if (\n typeof newVDOM === \"string\" ||\n typeof newVDOM === \"number\" ||\n typeof newVDOM === \"boolean\"\n ) {\n newChildren = [newVDOM];\n } else if (newVDOM) {\n const child = toValidChild(newVDOM);\n if (child !== undefined) newChildren = [child];\n }\n\n console.log(\"new children to render!\", newChildren)\n\n // B) Generate brand-new DOM for each new child in an array\n // We'll compare them 1:1 with the old nodes.\n const newDomArray: (Node | Node[] | undefined)[] = newChildren.map((vdomChild) =>\n createDomFromChild(vdomChild, globals)\n );\n\n // C) Snapshot old children\n const oldNodes = Array.from(parentElement.childNodes);\n\n // D) Walk up to max length\n const maxLen = Math.max(oldNodes.length, newDomArray.length);\n for (let i = 0; i < maxLen; i++) {\n const oldNode = oldNodes[i];\n const newDom = newDomArray[i]; // might be a single Node or an array of Nodes\n const newChild = newChildren[i];\n\n if (oldNode && newDom !== undefined) {\n // Both old & new exist\n // 1) If newDom is an array (multiple root nodes?), we do a bigger replace\n // or partial approach. Typically we might place the 1st in oldNode's position\n // and then insert the rest right after it, then remove oldNode if needed.\n if (Array.isArray(newDom)) {\n if (newDom.length === 0) {\n // no new => remove old\n parentElement.removeChild(oldNode);\n } else {\n // We might keep the first node and replace oldNode\n const first = newDom[0];\n parentElement.replaceChild(first, oldNode);\n \n if (typeof first !== \"undefined\") {\n handleLifecycleEventsForOnMount(first as HTMLElement);\n }\n\n // Insert the rest\n for (let k = 1; k < newDom.length; k++) {\n if (newDom[k]) {\n parentElement.insertBefore(newDom[k]!, first.nextSibling);\n\n if (typeof newDom[k] !== \"undefined\") { \n console.log(\"inserBefore!\")\n handleLifecycleEventsForOnMount(newDom[k] as HTMLElement);\n }\n }\n }\n }\n } else if (newDom) {\n // single new node\n // 2) If old & new match => partial patch. Else => replace\n if (newChild && areNodeAndChildMatching(oldNode, newChild)) {\n // partial patch\n patchDomInPlace(oldNode, newChild, globals);\n } else {\n // replace\n parentElement.replaceChild(newDom, oldNode);\n\n handleLifecycleEventsForOnMount(newDom as HTMLElement);\n }\n }\n } else if (!oldNode && newDom !== undefined) {\n // we have more new nodes => append\n if (Array.isArray(newDom)) {\n newDom.forEach((newNode) => {\n const wasAdded = newNode && parentElement.appendChild(newNode);\n\n if (wasAdded) {\n handleLifecycleEventsForOnMount(newNode as HTMLElement)\n }\n return wasAdded;\n });\n } else if (newDom) {\n parentElement.appendChild(newDom);\n\n handleLifecycleEventsForOnMount(newDom as HTMLElement);\n }\n } else if (oldNode && newDom === undefined) {\n // we have leftover old => remove\n parentElement.removeChild(oldNode);\n }\n }\n}\n\n/**\n * Directly blow away all children in `parentElement` and create new DOM \n * from `newVDOM`. This never skips or leaves behind stale nodes, \n * at the cost of losing partial update performance.\n */\nexport function replaceDomWithVdom(parentElement: Element, newVDOM: RenderInput, globals: Globals) {\n // 1) Clear all existing DOM children\n while (parentElement.firstChild) {\n parentElement.removeChild(parentElement.firstChild);\n }\n\n // 2) Re-render from scratch\n const renderer = getRenderer(globals.window.document);\n\n // Possibly convert `newVDOM` to array if needed, \n // but `renderer.createElementOrElements` handles it either way:\n const newDom = renderer.createElementOrElements(newVDOM as VNode | undefined | Array<VNode | undefined | string>);\n\n // 3) Append the newly created node(s)\n if (Array.isArray(newDom)) {\n for (const node of newDom) {\n if (node) parentElement.appendChild(node);\n }\n } else if (newDom) {\n parentElement.appendChild(newDom);\n }\n}","import { updateDom, updateDomWithVdom } from \"../common/dom.js\";\nimport { isRef, renderIsomorphic, type CSSProperties, type Globals, type Ref, type RenderInput } from \"../render/index.js\";\n\nexport type NodeType = Node | Text | Element | Document | DocumentFragment;\n\nexport type FormFieldValue = string | Date | File | boolean | number;\n\nexport interface FormKeyValues {\n // key or path (object path x.y.z) to form field value\n [keyOrPath: string]: FormFieldValue;\n}\n\nconst elementGuard = <T = HTMLElement>(el: NodeType): T => {\n if (el instanceof HTMLElement) return el as T;\n\n let message = \"Expected an HTMLElement, but found: \";\n if (el?.nodeName) {\n message += el.nodeName\n } else {\n message += el\n }\n throw new Error(message);\n};\n\nexport interface DequeryOptions {\n maxWaitMs: number;\n}\n\nexport const defaultConfig: DequeryOptions = {\n maxWaitMs: 1000,\n};\n\nexport type ElementCreationOptions = JSX.HTMLAttributesLowerCase & JSX.HTMLAttributesLowerCase & { innerHTML?: string, textContent?: string };\n\nexport const dequery = (\n selectorRefOrEl: Node | Element | Text | Ref<Node | Element | Text, any> | string,\n options: DequeryOptions | ElementCreationOptions = defaultConfig\n): Dequery => {\n\n if (!selectorRefOrEl) {\n console.error(\"dequery: selector, ref, or element is required. Got nothing.\");\n throw new Error(\"dequery: selector, ref, or element is required. Got nothing.\");\n }\n\n const api = new Dequery({ ...defaultConfig, ...options });\n\n if (typeof selectorRefOrEl === \"string\") {\n const elementCreationRegex = /^<(\\w+)>$/; // regex to match element creation syntax like <div>\n const matchesCreateElementSyntax = selectorRefOrEl.match(elementCreationRegex);\n\n if (matchesCreateElementSyntax) {\n // create a new element if the string matches the element creation syntax\n const newElement = document.createElement(matchesCreateElementSyntax[1]);\n const { innerHTML, textContent, ...attributes } = options as ElementCreationOptions;\n\n // set attributes\n Object.entries(attributes).forEach(([key, value]) => {\n newElement.setAttribute(key, String(value));\n });\n\n // set innerHTML or textContent if provided\n if (innerHTML) {\n newElement.innerHTML = innerHTML;\n } else if (textContent) {\n newElement.textContent = textContent;\n }\n\n api.elements = [newElement];\n } else {\n // otherwise, treat it as a query selector\n api.query(selectorRefOrEl);\n }\n } else if (isRef(selectorRefOrEl)) {\n api.elements = [selectorRefOrEl.current];\n } else if ((selectorRefOrEl as Node).nodeType === Node.ELEMENT_NODE) {\n api.elements = [selectorRefOrEl as Node];\n }\n // throws if there is no element found\n elementGuard(api.el)\n return api;\n};\n\nexport class Dequery {\n\n constructor(\n public options: DequeryOptions = defaultConfig,\n public elements: Array<NodeType> = []\n ) {\n this.options = { ...defaultConfig, ...options }; // merge default options with user options\n this.elements = []; // elements found in the most recent operation\n }\n\n get el() {\n return this.elements[0];\n }\n\n // --- Traversal ---\n\n tap(cb: (el: NodeType | Array<NodeType>) => void): Dequery {\n cb(this.elements);\n return this;\n }\n\n query(selector: string): Dequery {\n console.log('querying', selector);\n this.elements = Array.from(document.querySelectorAll(selector));\n return this;\n }\n\n first(): Dequery {\n this.elements = [this.el];\n return this;\n }\n\n last(): Dequery {\n const els = this.elements;\n this.elements = [els[els.length - 1]];\n return this;\n }\n\n next(): Dequery {\n this.elements = this.elements\n .map((el) => elementGuard(el).nextElementSibling)\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n eq(idx: number): Dequery {\n this.elements = [this.elements[idx]];\n return this;\n }\n\n prev(): Dequery {\n this.elements = this.elements\n .map((el) => elementGuard(el).previousElementSibling)\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n each(cb: (el: NodeType, idx: number) => void): Dequery {\n this.elements.forEach(cb);\n return this;\n }\n\n find(selector: string): Dequery {\n this.elements = this.elements.flatMap((el) =>\n Array.from(elementGuard(el).querySelectorAll(selector))\n );\n return this;\n }\n\n parent(): Dequery {\n this.elements = this.elements\n .map((el) => el.parentElement)\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n children(): Dequery {\n this.elements = this.elements.flatMap((el) => Array.from(elementGuard(el).children));\n return this;\n }\n\n closest(selector: string): Dequery {\n this.elements = this.elements\n .map((el) => elementGuard(el).closest(selector))\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n filter(selector: string): Dequery {\n this.elements = this.elements.filter((el) => elementGuard(el).matches(selector));\n return this;\n }\n\n // --- Attributes ---\n\n attr(name: string): string | null;\n attr(name: string, value: string): Dequery;\n attr(name: string, value?: string): Dequery | string | null {\n if (value !== undefined) {\n this.elements.forEach((el) => elementGuard(el).setAttribute(name, value));\n return this;\n }\n // retrieve the attribute value from the first element\n return elementGuard(this.el)?.getAttribute(name) ?? null;\n }\n\n // --- Mutations ---\n\n empty(): Dequery {\n this.elements.forEach((el) => {\n elementGuard(el).innerHTML = \"\";\n });\n return this;\n }\n\n html(newInnerHtml?: string): Dequery {\n if (newInnerHtml) {\n this.elements.forEach((el) => {\n // partial update HTML sub-tree with new HTML (using DOMParser)\n updateDom(elementGuard(el), newInnerHtml);\n });\n }\n return this;\n }\n\n jsx(newJsxPartialDom: RenderInput): Dequery {\n this.elements.forEach((el) => {\n // partially update the DOM with new JSX (using renderIsomorphic) \n updateDomWithVdom(elementGuard(el), newJsxPartialDom, globalThis as Globals);\n });\n return this;\n }\n\n text(text?: string): Dequery {\n if (text) {\n this.elements.forEach((el) => {\n elementGuard(el).textContent = text;\n });\n }\n return this;\n }\n\n remove(): Dequery {\n this.elements.forEach((el) => elementGuard(el).remove());\n return this;\n }\n\n replaceWithJsx(vdomOrNode: RenderInput | NodeType): Dequery {\n this.elements.forEach((el) => {\n const newEl =\n vdomOrNode instanceof Node\n ? vdomOrNode\n : (renderIsomorphic(\n vdomOrNode,\n elementGuard(el),\n globalThis as Globals\n ) as Node);\n el.parentNode?.replaceChild(newEl.cloneNode(true), el);\n });\n return this;\n }\n\n append(content: string | NodeType | Dequery): Dequery {\n this.elements.forEach((el) => {\n if (typeof content === \"string\") {\n elementGuard(el).innerHTML += content;\n } else if (content instanceof Dequery) {\n content.elements.forEach((childEl) => {\n el.appendChild(elementGuard(childEl));\n });\n } else {\n el.appendChild(content);\n }\n });\n return this;\n }\n\n // --- Events ---\n\n on(eventName: string, handler: EventListener): Dequery {\n this.elements.forEach((el) =>\n el.addEventListener(eventName, handler)\n );\n return this;\n }\n\n off(eventName: string, handler: EventListener): Dequery {\n this.elements.forEach((el) =>\n el.removeEventListener(eventName, handler)\n );\n return this;\n }\n\n // --- CSS ---\n\n css(cssProps: string): string | undefined;\n css(cssProps: CSSProperties): Dequery;\n css(cssProps: string, value: string): Dequery;\n css(cssProps: CSSProperties | string, value?: string): Dequery | string | undefined {\n if (!value && typeof cssProps === \"string\") {\n // get a single CSS property value\n return elementGuard(this.el)?.style.getPropertyValue(cssProps);\n } else if (!value && typeof cssProps === \"object\") {\n // set multiple CSS properties\n this.elements.forEach((el) => {\n for (const key in cssProps) {\n elementGuard(el).style.setProperty(\n key,\n cssProps[key as keyof CSSProperties] as string\n );\n }\n });\n return this;\n } else if (typeof value === \"string\" && typeof cssProps === \"string\") {\n // set a single CSS property value\n this.elements.forEach((el) => {\n elementGuard(el).style.setProperty(cssProps, value);\n });\n return this;\n }\n return this;\n }\n\n addClass(className: Array<string> | string): Dequery {\n const classes = Array.isArray(className) ? className : [className];\n this.elements.forEach((el) => elementGuard(el).classList.add(...classes));\n return this;\n }\n\n removeClass(className: Array<string> | string): Dequery {\n const classes = Array.isArray(className) ? className : [className];\n this.elements.forEach((el) => elementGuard(el).classList.remove(...classes));\n return this;\n }\n\n hasClass(className: string): boolean {\n return this.elements.every((el) => elementGuard(el).classList.contains(className));\n }\n\n toggleClass(className: string): Dequery {\n this.elements.forEach((el) => elementGuard(el).classList.toggle(className));\n return this;\n }\n\n animateClass(className: string, duration: number): Dequery {\n this.elements.forEach((el) => {\n elementGuard(el).classList.add(className);\n setTimeout(() => elementGuard(el).classList.remove(className), duration);\n });\n return this;\n }\n\n // --- Interaction Simulation ---\n\n click(): Dequery {\n this.elements.forEach((el) => elementGuard(el).click());\n return this;\n }\n\n focus(): Dequery {\n this.elements.forEach((el) => elementGuard(el).focus());\n return this;\n }\n\n blur(): Dequery {\n this.elements.forEach((el) => elementGuard(el).blur());\n return this;\n }\n\n // --- Data extraction ---\n val(value: string | boolean): Dequery;\n val(): string | undefined;\n val(value?: string | boolean): Dequery | string | undefined {\n if (typeof value !== 'undefined') {\n this.elements.forEach((el) => {\n if (el instanceof HTMLInputElement) {\n el.value = String(value);\n }\n });\n return this;\n } else {\n return elementGuard<HTMLInputElement>(this.el)?.value;\n }\n }\n\n map<T = any>(cb: (el: NodeType, idx: number) => any): Array<T> {\n return this.elements.map(cb) as Array<T>;\n }\n\n prop<K extends keyof HTMLElement>(name: K, value: HTMLElement[K]): Dequery;\n prop<K extends keyof HTMLElement>(name: K): HTMLElement[K];\n prop<K extends keyof HTMLElement>(name: K, value?: HTMLElement[K]): Dequery | HTMLElement[K] {\n if (typeof value !== \"undefined\") {\n this.elements.forEach((el) => {\n elementGuard(el)[name] = value;\n });\n return this;\n }\n return elementGuard(this.el)[name];\n }\n\n data(name: string): string | undefined;\n data(name: string, value: string): Dequery;\n data(name: string, value?: string): Dequery | string | undefined {\n if (typeof value !== \"undefined\") {\n this.elements.forEach((el) => {\n elementGuard(el).dataset[name] = value;\n });\n return this;\n }\n return elementGuard(this.el)?.dataset[name];\n }\n\n // --- Form management ---\n\n form(): FormKeyValues;\n form(formData: FormKeyValues): Dequery;\n form(formData?: FormKeyValues): Dequery | FormKeyValues {\n if (formData) {\n Object.entries(formData).forEach(([key, value]) => {\n this.elements.forEach((el) => {\n if (el instanceof HTMLInputElement) {\n el.value = value as string;\n }\n });\n });\n return this;\n }\n\n const formFields: Record<string, string> = {};\n this.elements.forEach((el) => {\n if (el instanceof HTMLInputElement) {\n formFields[el.name] = el.value;\n }\n });\n return formFields;\n }\n}\n\n// for query-like syntax\nexport const $ = dequery;","import type { PersistenceProviderImpl } from '../provider.js'\nimport type { GenericLocalStorage } from './generic.js'\nimport type { MiddlewareFn } from '../provider.js'\n\nexport type MemoryProviderOptions = {}\n\nexport const newInMemoryGenericStorageBackend = <T = string>(): GenericLocalStorage<T> => {\n const cache = new Map<string, T>()\n return {\n clear: (): void => {\n cache.clear()\n },\n\n getItem: (key: string): T | null => {\n return cache.get(String(key)) ?? null\n },\n\n removeItem: (key: string): void => {\n cache.delete(String(key))\n },\n\n setItem: (key: string, value: T): void => {\n cache.set(String(key), value)\n },\n }\n}\n\n/** global in-memory storage backend */\nexport const memory = newInMemoryGenericStorageBackend()\n\n/** a simple, serverless and high-performance key/value storage engine */\nexport class WebStorageProvider<T> implements PersistenceProviderImpl<T> {\n protected storage: GenericLocalStorage<string>;\n\n constructor(storage?: GenericLocalStorage<string>) {\n this.storage = storage || memory;\n }\n\n get(key: string, defaultValue: T, middlewareFn?: MiddlewareFn<T>): T {\n const rawValue = this.storage.getItem(key);\n\n if (rawValue === null) return defaultValue;\n\n let value: T = JSON.parse(rawValue);\n\n if (middlewareFn) {\n value = middlewareFn(key, value);\n }\n return value;\n }\n\n set(key: string, value: T, middlewareFn?: MiddlewareFn<T>): void {\n if (middlewareFn) {\n value = middlewareFn(key, value);\n }\n this.storage.setItem(key, JSON.stringify(value));\n }\n\n remove(key: string): void {\n this.storage.removeItem(key);\n }\n\n removeAll(): void {\n this.storage.clear();\n }\n\n get backendApi(): GenericLocalStorage<string> {\n return this.storage;\n }\n}\n\nexport interface MemoryStorage<T> extends PersistenceProviderImpl<T> {\n backendApi: Omit<Omit<Storage, 'key'>, 'length'>\n}\n\nexport interface WebStorage<T> extends PersistenceProviderImpl<T> {\n backendApi: Storage\n}\n","import { WebStorageProvider } from '../isomporphic/memory.js'\nimport type { PersistenceProvider, PersistenceProviderImpl, PersistenceProviderOptions } from '../provider.js'\n\n/** returns the default persistence provider for each runtime environment */\nexport const getPersistenceProvider = <T>(\n provider: PersistenceProvider,\n _options?: PersistenceProviderOptions,\n): PersistenceProviderImpl<T> => {\n switch (provider) {\n case 'session':\n return new WebStorageProvider<T>(window.sessionStorage)\n case 'local':\n return new WebStorageProvider<T>(window.localStorage)\n }\n return new WebStorageProvider<T>() // memory\n}\n","import { WebStorageProvider } from '../isomporphic/memory.js'\nimport type { PersistenceProvider, PersistenceProviderImpl, PersistenceProviderOptions } from '../provider.js'\n\n/** returns the default persistence provider for each runtime environment */\nexport const getPersistenceProvider = <T>(\n _provider: PersistenceProvider,\n _options?: PersistenceProviderOptions,\n): PersistenceProviderImpl<T> => {\n return new WebStorageProvider<T>()\n}\n","//export const isBrowser = (): boolean => typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\nexport const isServer = (): boolean => typeof window === \"undefined\" || typeof window.document === \"undefined\";\n\n//export const isWebWorker = (): boolean => typeof self === \"object\" && self.constructor?.name === \"DedicatedWorkerGlobalScope\";","import type { PersistenceProvider, PersistenceProviderImpl, PersistenceProviderOptions } from './provider.js'\nimport { getPersistenceProvider as getPersistenceProviderClient } from './client/index.js'\nimport { getPersistenceProvider as getPersistenceProviderServer } from './server/index.js'\nimport { isServer } from './runtime.js'\n\n/** returns the persistence provider (isomorphic) */\nexport const webstorage = <T>(\n provider: PersistenceProvider = 'local',\n options?: PersistenceProviderOptions,\n): PersistenceProviderImpl<T> => {\n if (isServer()) {\n return getPersistenceProviderServer(provider, options)\n } else {\n return getPersistenceProviderClient(provider, options)\n }\n}\n\nexport * from './provider.js'\n","import type { VNode } from '@/render/types.js';\nimport { createStore, type Store } from '@/store/index.js';\n\nexport type TranslationObject = { [key: string]: string|VNode|TranslationObject };\nexport type Translations = { [language: string]: TranslationObject };\nexport type OnLanguageChangeListener = (newLanguage: string) => void;\nexport type Replacements = Record<string, string>;\n\nexport interface I18nStore {\n language: string;\n changeLanguage: (language: string) => void;\n t: (path: string, options?: Record<string, string>) => string;\n load: (language: string, translations: TranslationObject) => void;\n subscribe: (onLanguageChange: OnLanguageChangeListener) => void;\n}\n\n// example of placeholders: {name}, {age}, {city}\nconst VARIABLE_REGEX = /{([^}]*)}/g;\n\nconst interpolate = (template: string, replacements: Replacements): string =>\n template.replace(VARIABLE_REGEX, (_, key) => replacements[key] || `{${key}}`);\n\nexport const createI18n = (): I18nStore => {\n const translationsStore: Store<Translations> = createStore({});\n let language = 'en';\n\n const onLanguageChangeCallbacks: Array<OnLanguageChangeListener> = [];\n\n return {\n language,\n\n changeLanguage(newLanguage: string) {\n language = newLanguage;\n onLanguageChangeCallbacks.forEach(callback => callback(newLanguage));\n },\n\n // example usage of the t function with placeholders:\n // const translatedString = t('greeting', { name: 'John', age: '30' }, 'common');\n // this would replace placeholders {name} and {age} in the translation string with 'John' and '30' respectively.\n t(path: string, replacements: Record<string, string> = {}) {\n\n const template = translationsStore.get<string>(`${language}.${path}`) || path\n\n // VDOM (VNode)\n if (typeof template !== 'string') {\n return template;\n }\n // plaintext string or HTML\n return interpolate(template, replacements);\n },\n\n load(newLanguage: string, namespaceTranslations: TranslationObject) {\n translationsStore.set(newLanguage, {\n ...translationsStore.get<TranslationObject>(newLanguage),\n ...namespaceTranslations,\n });\n },\n\n subscribe(onLanguageChange: OnLanguageChangeListener) {\n onLanguageChangeCallbacks.push(onLanguageChange);\n return () => {\n const index = onLanguageChangeCallbacks.indexOf(onLanguageChange);\n if (index >= 0) onLanguageChangeCallbacks.splice(index, 1);\n };\n }\n };\n};\n\n// export singleton\nexport const i18n = createI18n();\n","import type { Props, VNodeChild } from \"@/render/types.js\";\nimport { type Replacements, i18n } from \"./i18n.js\";\n\nexport interface TransProps extends Props { \n path: string, \n tag?: string,\n replacements?: Replacements,\n class?: string,\n className?: string,\n style?: string,\n} \n\nexport const Trans = ({ path, replacements, tag, ...attrs }: TransProps): VNodeChild => {\n\n const ref = {}\n\n // re-render component on language change\n i18n.subscribe(() => {\n const value = i18n.t(path, replacements);\n console.log('new val', value);\n //$(ref).html(value);\n });\n\n return {\n tag: tag || 'span',\n attributes: {\n ref,\n ...attrs,\n },\n // initially render\n children: i18n.t(path, replacements),\n }\n}\n","\n/**\n * custom headers class to manage HTTP headers with case-insensitive keys.\n * simplifies header manipulation by providing utility methods.\n */\nexport class Headers {\n // internal map to store headers\n private map: Map<string, string>;\n\n /**\n * initializes the Headers instance with provided headers or another Headers object.\n * ensures all header keys are stored in lowercase for consistent access.\n * @param init initial headers as a record or another Headers instance\n */\n constructor(init: Record<string, string> | Headers = {}) {\n this.map = new Map();\n\n if (init instanceof Headers) {\n init.forEach((value, key) => this.map.set(key, value));\n } else {\n Object.entries(init).forEach(([key, value]) =>\n this.map.set(key.toLowerCase(), value)\n );\n }\n }\n\n /**\n * appends or sets the value for a specific header key.\n * stores the key in lowercase to maintain case-insensitivity.\n * @param key header name\n * @param value header value\n */\n append(key: string, value: string): void {\n this.map.set(key.toLowerCase(), value);\n }\n\n /**\n * retrieves the value of a specific header key.\n * @param key header name\n * @returns the header value or null if not found\n */\n get(key: string): string | null {\n return this.map.get(key.toLowerCase()) || null;\n }\n\n /**\n * checks if a specific header key exists.\n * @param key header name\n * @returns boolean indicating existence of the header\n */\n has(key: string): boolean {\n return this.map.has(key.toLowerCase());\n }\n\n /**\n * iterates over all headers and executes the provided callback for each.\n * @param callback function to execute for each header\n */\n forEach(callback: (value: string, key: string) => void): void {\n this.map.forEach((value, key) => callback(value, key));\n }\n}\n\n/**\n * ProgressSignal extends EventTarget to dispatch and track progress events.\n * useful for monitoring the progress of network requests.\n */\nexport class ProgressSignal extends EventTarget {\n // internal progress state\n private _progress: { loaded: number; total: number };\n\n /**\n * initializes the ProgressSignal with zero progress.\n */\n constructor() {\n super();\n this._progress = { loaded: 0, total: 0 };\n }\n\n /**\n * retrieves the current progress.\n * @returns an object containing loaded and total bytes\n */\n get progress(): { loaded: number; total: number } {\n return this._progress;\n }\n\n /**\n * dispatches a progress event with updated loaded and total bytes.\n * updates the internal progress state.\n * @param event the ProgressEvent containing progress information\n */\n dispatchProgress(event: ProgressEvent): void {\n this._progress = { loaded: event.loaded, total: event.total };\n this.dispatchEvent(\n new ProgressEvent('progress', { loaded: event.loaded, total: event.total })\n );\n }\n}\n\n/**\n * ProgressController manages a ProgressSignal for tracking request progress.\n * provides a centralized way to handle progress events.\n */\nexport class ProgressController {\n signal: ProgressSignal;\n\n /**\n * initializes the ProgressController with a new ProgressSignal.\n */\n constructor() {\n this.signal = new ProgressSignal();\n }\n}\n\n/**\n * serializes the request body into a format suitable for XMLHttpRequest.\n * handles various body types including JSON objects and FormData.\n * @param body the body to serialize\n * @returns the serialized body or null if no body is provided\n */\nexport function serializeBody(\n body: BodyInit | Record<string, unknown> | null | undefined\n): XMLHttpRequestBodyInit | Document | null {\n if (!body) return null;\n\n if (\n body instanceof FormData ||\n body instanceof Blob ||\n body instanceof URLSearchParams ||\n body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n typeof body === \"string\"\n ) {\n return body;\n }\n\n if (typeof body === \"object\") {\n return JSON.stringify(body); // convert object to JSON string for transmission\n }\n\n return String(body); // ensure fallback to string for unsupported types\n}\n\n/**\n * parses a raw header string from an XMLHttpRequest into a Headers instance.\n * @param headerStr the raw header string\n * @returns a Headers instance containing parsed headers\n */\nexport function parseHeaders(headerStr: string): Headers {\n const headers = new Headers();\n headerStr.split('\\r\\n').forEach((line) => {\n const [key, ...rest] = line.split(': ');\n if (key) headers.append(key, rest.join(': '));\n });\n return headers;\n}\n\n/**\n * extends the standard RequestInit to include an optional ProgressSignal.\n * allows tracking the progress of the network request.\n */\nexport interface FetchWithControllersInit extends RequestInit {\n progressSignal?: ProgressSignal;\n}\n\n/**\n * represents the response from a fetch operation, mirroring the native Response interface.\n * includes methods to access the response body in various formats.\n */\nexport interface FetchResponse {\n ok: boolean;\n status: number;\n statusText: string;\n headers: Headers;\n url: string;\n text: () => Promise<string>;\n json: () => Promise<unknown>;\n blob: () => Promise<Blob>;\n}\n\n/**\n * performs a network fetch request with support for progress tracking using XMLHttpRequest.\n * falls back to the native fetch implementation if no ProgressSignal is provided.\n * @param input the resource to fetch, typically a URL string\n * @param init optional configuration for the request, including method, headers, body, credentials, and progressSignal\n * @returns a promise resolving to a FetchResponse containing the response details\n */\nexport async function fetch(\n input: string | URL,\n init: FetchWithControllersInit = {}\n): Promise<FetchResponse> {\n // use native fetch if ProgressSignal is not provided for simplicity and efficiency\n if (!init.progressSignal && typeof globalThis.fetch === \"function\") {\n return fetch(input, init) as unknown as FetchResponse;\n }\n\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n const method = (init.method || 'GET').toUpperCase();\n const body = serializeBody(init.body || null);\n const progressSignal = init.progressSignal;\n const abortSignal = init.signal;\n\n // handle abort events to allow request cancellation\n if (abortSignal) {\n const abortHandler = () => {\n xhr.abort();\n reject(new DOMException('The operation was aborted.', 'AbortError'));\n };\n abortSignal.addEventListener('abort', abortHandler, { once: true });\n }\n\n xhr.open(method, input.toString(), true);\n\n // set credentials based on the init configuration\n if (init.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (init.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n // set request headers using the custom Headers class or raw headers\n if (init.headers instanceof Headers) {\n init.headers.forEach((value, key) => xhr.setRequestHeader(key, value));\n } else if (init.headers) {\n Object.entries(init.headers).forEach(([key, value]) => {\n xhr.setRequestHeader(key, value as string);\n });\n }\n\n // attach progress listeners if a ProgressSignal is provided\n if (progressSignal) {\n if (xhr.upload) {\n xhr.upload.onprogress = (event) => progressSignal.dispatchProgress(event);\n }\n xhr.onprogress = (event) => progressSignal.dispatchProgress(event);\n }\n\n // handle the response once the request is completed\n xhr.onload = () => {\n const response: FetchResponse = {\n ok: xhr.status >= 200 && xhr.status < 300,\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders()),\n url: xhr.responseURL,\n text: () => Promise.resolve(xhr.responseText),\n json: () => Promise.resolve(JSON.parse(xhr.responseText)),\n blob: () => Promise.resolve(new Blob([xhr.response])),\n };\n resolve(response);\n };\n\n // handle network errors\n xhr.onerror = () => reject(new TypeError('Network request failed'));\n xhr.ontimeout = () => reject(new TypeError('Network request timed out'));\n xhr.onabort = () => reject(new DOMException('The operation was aborted.', 'AbortError'));\n\n // send the serialized request body\n xhr.send(body);\n });\n}\n\n\n/*\n // example usage of fetch with upload tracking\n async function exampleFetchWithUploadTracking() {\n const url = 'https://example.com/upload';\n const data = new FormData();\n data.append('file', new Blob(['file content'], { type: 'text/plain' }), 'example.txt');\n\n const { signal: progressSignal } = new ProgressController();\n\n progressSignal.addEventListener('progress', (event: ProgressEvent) => {\n console.log(`Uploaded ${event.loaded} of ${event.total} bytes`);\n });\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n body: data,\n headers: {\n 'Accept': 'application/json'\n },\n credentials: 'include',\n progressSignal\n });\n\n if (response.ok) {\n const jsonResponse = await response.json();\n console.log('Upload successful:', jsonResponse);\n } else {\n console.error('Upload failed:', response.statusText);\n }\n } catch (error) {\n console.error('Error during fetch:', error);\n }\n }\n \n */"],"names":["getRenderer","handleLifecycleEventsForOnMount","isRef","renderIsomorphic","getPersistenceProvider","getPersistenceProviderServer","getPersistenceProviderClient","createStore"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/common/devmode.ts","../src/common/dom.ts","../src/dequery/dequery.ts","../src/webstorage/isomporphic/memory.ts","../src/webstorage/client/index.ts","../src/webstorage/server/index.ts","../src/webstorage/runtime.ts","../src/webstorage/index.ts","../src/i18n/i18n.tsx","../src/i18n/trans.tsx","../src/net/fetch.ts"],"sourcesContent":["export const inDevMode = true;","import type { Globals, RenderInput, VNode, VNodeAttributes, VNodeChild } from \"defuss/jsx-runtime\";\nimport { getRenderer, handleLifecycleEventsForOnMount } from \"../render/isomorph.js\";\n\n/**\n * Compares two DOM nodes for equality with performance optimizations.\n * 1. Checks for reference equality.\n * 2. Compares node types.\n * 3. For Element nodes, compares tag names and attributes.\n * 4. For Text nodes, compares text content.\n */\nexport const areDomNodesEqual = (oldNode: Node, newNode: Node): boolean => {\n // return true if both references are identical\n if (oldNode === newNode) return true;\n\n // compare node types\n if (oldNode.nodeType !== newNode.nodeType) return false;\n\n // handle Element nodes\n if (oldNode.nodeType === Node.ELEMENT_NODE) {\n const oldElement = oldNode as Element;\n const newElement = newNode as Element;\n\n // compare tag names\n if (oldElement.tagName !== newElement.tagName) return false;\n\n const oldAttrs = oldElement.attributes;\n const newAttrs = newElement.attributes;\n\n // compare number of attributes\n if (oldAttrs.length !== newAttrs.length) return false;\n\n // iterate and compare each attribute's name and value\n for (let i = 0; i < oldAttrs.length; i++) {\n const oldAttr = oldAttrs[i];\n const newAttrValue = newElement.getAttribute(oldAttr.name);\n if (oldAttr.value !== newAttrValue) return false;\n }\n }\n\n // handle Text nodes\n if (oldNode.nodeType === Node.TEXT_NODE) {\n if (oldNode.textContent !== newNode.textContent) return false;\n }\n return true;\n};\n\n/**\n * Recursively updates oldNode with the structure of newNode:\n * - If they differ (tag/attrs/text), oldNode is replaced\n * - If same, we recurse on children\n */\nconst updateNode = (oldNode: Node, newNode: Node) => {\n // 1) If different, replace old with new\n if (!areDomNodesEqual(oldNode, newNode)) {\n oldNode.parentNode?.replaceChild(newNode.cloneNode(true), oldNode);\n return;\n }\n\n // 2) If they match and are elements, recurse on their children\n if (oldNode.nodeType === Node.ELEMENT_NODE) {\n const oldChildren = oldNode.childNodes;\n const newChildren = newNode.childNodes;\n const maxLength = Math.max(oldChildren.length, newChildren.length);\n\n for (let i = 0; i < maxLength; i++) {\n const oldChild = oldChildren[i];\n const newChild = newChildren[i];\n\n if (oldChild && newChild) {\n // both exist; recurse\n updateNode(oldChild, newChild);\n } else if (newChild && !oldChild) {\n // new child doesn't exist in old => append\n oldNode.appendChild(newChild.cloneNode(true));\n } else if (oldChild && !newChild) {\n // old child doesn't exist in new => remove\n oldNode.removeChild(oldChild);\n }\n }\n }\n};\n\n/**\n * Partially updates a DOM subtree by comparing `targetElement` to\n * newly parsed HTML. No `.innerHTML` is used here; we parse via DOMParser.\n */\nexport const updateDom = (targetElement: Element, newHTML: string): void => {\n // 1) Parse the new HTML string into a DocumentFragment-like structure\n const parser = new DOMParser();\n // 'text/html' => parse as a full HTML doc. We take the <body>'s children as our new nodes\n const doc = parser.parseFromString(newHTML, 'text/html');\n\n // 2) Extract the root child elements from the newly parsed doc\n // Typically, doc.body is where your HTML snippet content is placed.\n const newRoots = Array.from(doc.body.children);\n\n if (newRoots.length === 0) {\n console.warn('No root elements found in the new HTML.');\n return;\n }\n\n // 3) For each new root, see if there's an old corresponding child to update\n for (let i = 0; i < newRoots.length; i++) {\n const newRoot = newRoots[i];\n const oldChild = targetElement.children[i];\n\n if (oldChild) {\n // partial update\n updateNode(oldChild, newRoot);\n } else {\n // target has fewer children => just append\n targetElement.appendChild(newRoot.cloneNode(true));\n }\n }\n\n // 4) Remove any old leftover children that have no matching new root\n while (targetElement.children.length > newRoots.length) {\n targetElement.removeChild(targetElement.lastChild!);\n }\n};\n\n/********************************************************\n * 1) Define a \"valid\" child type & utility\n ********************************************************/\nexport type ValidChild =\n | string\n | number\n | boolean\n | null\n | undefined\n | VNode<VNodeAttributes>;\n\nfunction toValidChild(child: VNodeChild): ValidChild | undefined {\n if (child == null) return child; // null or undefined\n if (\n typeof child === \"string\" ||\n typeof child === \"number\" ||\n typeof child === \"boolean\"\n ) {\n return child;\n }\n if (typeof child === \"object\" && \"type\" in child) {\n return child as VNode<VNodeAttributes>;\n }\n // e.g. function or {} -> filter out\n return undefined;\n}\n\n/********************************************************\n * 2) Check if a DOM node and a ValidChild match by type\n ********************************************************/\nfunction areNodeAndChildMatching(domNode: Node, child: ValidChild): boolean {\n if (\n typeof child === \"string\" ||\n typeof child === \"number\" ||\n typeof child === \"boolean\"\n ) {\n // must be a text node\n return domNode.nodeType === Node.TEXT_NODE;\n } else if (child && typeof child === \"object\") {\n // must be same tag\n if (domNode.nodeType !== Node.ELEMENT_NODE) return false;\n const oldTag = (domNode as Element).tagName.toLowerCase();\n const newTag = child.type.toLowerCase();\n return oldTag === newTag;\n }\n // if child is null/undefined => definitely no match\n return false;\n}\n\n/********************************************************\n * 3) Patch a single DOM node in place (attributes, text, children)\n ********************************************************/\nfunction patchDomInPlace(domNode: Node, child: ValidChild, globals: Globals) {\n const renderer = getRenderer(globals.window.document);\n\n // textlike\n if (typeof child === \"string\" || typeof child === \"number\" || typeof child === \"boolean\") {\n const newText = String(child);\n if (domNode.nodeValue !== newText) {\n domNode.nodeValue = newText;\n }\n return;\n }\n\n // element\n if (domNode.nodeType === Node.ELEMENT_NODE && child && typeof child === \"object\") {\n // 1) update attributes\n // remove old attributes not present\n const el = domNode as Element;\n const existingAttrs = Array.from(el.attributes);\n for (const attr of existingAttrs) {\n const { name } = attr;\n if (!Object.prototype.hasOwnProperty.call(child.attributes, name) && name !== \"style\") {\n el.removeAttribute(name);\n }\n }\n // set new attributes\n renderer.setAttributes(child, el);\n\n // 2) dangerouslySetInnerHTML => skip child updates\n if (child.attributes?.dangerouslySetInnerHTML) {\n el.innerHTML = child.attributes.dangerouslySetInnerHTML.__html;\n return;\n }\n\n // 3) recursively do partial updates for children\n if (child.children) {\n updateDomWithVdom(el, child.children as any, globals);\n } else {\n // remove old children\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n }\n }\n}\n\n/********************************************************\n * 4) Create brand new DOM node from a ValidChild\n ********************************************************/\nfunction createDomFromChild(child: ValidChild, globals: Globals): Node | Node[] | undefined {\n const renderer = getRenderer(globals.window.document);\n\n if (child == null) return undefined;\n if (typeof child === \"string\" || typeof child === \"number\" || typeof child === \"boolean\") {\n return globals.window.document.createTextNode(String(child));\n }\n\n // else it's a VNode, create without parent as we don't know where it goes yet\n // therefore, we need to handle the onMount lifecycle event later too\n let renderResult = renderer.createElementOrElements(child) as Node | Node[] | undefined;\n\n if (renderResult && !Array.isArray(renderResult)) {\n renderResult = [renderResult];\n }\n return renderResult;\n}\n\n/********************************************************\n * 5) Main partial-update function (index-by-index approach)\n ********************************************************/\nexport function updateDomWithVdom(\n parentElement: Element,\n newVDOM: RenderInput,\n globals: Globals\n) {\n\n console.log('updateDomWithVdom', newVDOM, parentElement)\n \n // A) Convert newVDOM => array of \"valid\" children\n let newChildren: ValidChild[] = [];\n if (Array.isArray(newVDOM)) {\n newChildren = newVDOM.map(toValidChild).filter((c): c is ValidChild => c !== undefined);\n } else if (\n typeof newVDOM === \"string\" ||\n typeof newVDOM === \"number\" ||\n typeof newVDOM === \"boolean\"\n ) {\n newChildren = [newVDOM];\n } else if (newVDOM) {\n const child = toValidChild(newVDOM);\n if (child !== undefined) newChildren = [child];\n }\n\n console.log(\"new children to render!\", newChildren)\n\n // B) Generate brand-new DOM for each new child in an array\n // We'll compare them 1:1 with the old nodes.\n const newDomArray: (Node | Node[] | undefined)[] = newChildren.map((vdomChild) =>\n createDomFromChild(vdomChild, globals)\n );\n\n // C) Snapshot old children\n const oldNodes = Array.from(parentElement.childNodes);\n\n // D) Walk up to max length\n const maxLen = Math.max(oldNodes.length, newDomArray.length);\n for (let i = 0; i < maxLen; i++) {\n const oldNode = oldNodes[i];\n const newDom = newDomArray[i]; // might be a single Node or an array of Nodes\n const newChild = newChildren[i];\n\n if (oldNode && newDom !== undefined) {\n // Both old & new exist\n // 1) If newDom is an array (multiple root nodes?), we do a bigger replace\n // or partial approach. Typically we might place the 1st in oldNode's position\n // and then insert the rest right after it, then remove oldNode if needed.\n if (Array.isArray(newDom)) {\n if (newDom.length === 0) {\n // no new => remove old\n parentElement.removeChild(oldNode);\n } else {\n // We might keep the first node and replace oldNode\n const first = newDom[0];\n parentElement.replaceChild(first, oldNode);\n \n if (typeof first !== \"undefined\") {\n handleLifecycleEventsForOnMount(first as HTMLElement);\n }\n\n // Insert the rest\n for (let k = 1; k < newDom.length; k++) {\n if (newDom[k]) {\n parentElement.insertBefore(newDom[k]!, first.nextSibling);\n\n if (typeof newDom[k] !== \"undefined\") { \n console.log(\"inserBefore!\")\n handleLifecycleEventsForOnMount(newDom[k] as HTMLElement);\n }\n }\n }\n }\n } else if (newDom) {\n // single new node\n // 2) If old & new match => partial patch. Else => replace\n if (newChild && areNodeAndChildMatching(oldNode, newChild)) {\n // partial patch\n patchDomInPlace(oldNode, newChild, globals);\n } else {\n // replace\n parentElement.replaceChild(newDom, oldNode);\n\n handleLifecycleEventsForOnMount(newDom as HTMLElement);\n }\n }\n } else if (!oldNode && newDom !== undefined) {\n // we have more new nodes => append\n if (Array.isArray(newDom)) {\n newDom.forEach((newNode) => {\n const wasAdded = newNode && parentElement.appendChild(newNode);\n\n if (wasAdded) {\n handleLifecycleEventsForOnMount(newNode as HTMLElement)\n }\n return wasAdded;\n });\n } else if (newDom) {\n parentElement.appendChild(newDom);\n\n handleLifecycleEventsForOnMount(newDom as HTMLElement);\n }\n } else if (oldNode && newDom === undefined) {\n // we have leftover old => remove\n parentElement.removeChild(oldNode);\n }\n }\n}\n\n/**\n * Directly blow away all children in `parentElement` and create new DOM \n * from `newVDOM`. This never skips or leaves behind stale nodes, \n * at the cost of losing partial update performance.\n */\nexport function replaceDomWithVdom(parentElement: Element, newVDOM: RenderInput, globals: Globals) {\n // 1) Clear all existing DOM children\n while (parentElement.firstChild) {\n parentElement.removeChild(parentElement.firstChild);\n }\n\n // 2) Re-render from scratch\n const renderer = getRenderer(globals.window.document);\n\n // Possibly convert `newVDOM` to array if needed, \n // but `renderer.createElementOrElements` handles it either way:\n const newDom = renderer.createElementOrElements(newVDOM as VNode | undefined | Array<VNode | undefined | string>);\n\n // 3) Append the newly created node(s)\n if (Array.isArray(newDom)) {\n for (const node of newDom) {\n if (node) parentElement.appendChild(node);\n }\n } else if (newDom) {\n parentElement.appendChild(newDom);\n }\n}","import { updateDom, updateDomWithVdom } from \"../common/dom.js\";\nimport { isRef, renderIsomorphic, type CSSProperties, type Globals, type Ref, type RenderInput } from \"../render/index.js\";\n\nexport type NodeType = Node | Text | Element | Document | DocumentFragment;\n\nexport type FormFieldValue = string | Date | File | boolean | number;\n\nexport interface FormKeyValues {\n // key or path (object path x.y.z) to form field value\n [keyOrPath: string]: FormFieldValue;\n}\n\nconst elementGuard = <T = HTMLElement>(el: NodeType): T => {\n if (el instanceof HTMLElement) return el as T;\n\n let message = \"Expected an HTMLElement, but found: \";\n if (el?.nodeName) {\n message += el.nodeName\n } else {\n message += el\n }\n throw new Error(message);\n};\n\nexport interface DequeryOptions {\n maxWaitMs: number;\n}\n\nexport const defaultConfig: DequeryOptions = {\n maxWaitMs: 1000,\n};\n\nexport type ElementCreationOptions = JSX.HTMLAttributesLowerCase & JSX.HTMLAttributesLowerCase & { html?: string, text?: string };\n\nexport const dequery = (\n selectorRefOrEl: Node | Element | Text | Ref<Node | Element | Text, any> | string,\n options: DequeryOptions | ElementCreationOptions = defaultConfig\n): Dequery => {\n\n if (!selectorRefOrEl) {\n console.error(\"dequery: selector, ref, or element is required. Got nothing.\");\n throw new Error(\"dequery: selector, ref, or element is required. Got nothing.\");\n }\n\n const api = new Dequery({ ...defaultConfig, ...options });\n\n if (typeof selectorRefOrEl === \"string\") {\n const elementCreationRegex = /^<(\\w+)>$/; // regex to match element creation syntax like <div>\n const matchesCreateElementSyntax = selectorRefOrEl.match(elementCreationRegex);\n\n if (matchesCreateElementSyntax) {\n // create a new element if the string matches the element creation syntax\n const newElement = document.createElement(matchesCreateElementSyntax[1]);\n const { text, html, ...attributes } = options as ElementCreationOptions;\n\n // set attributes\n Object.entries(attributes).forEach(([key, value]) => {\n newElement.setAttribute(key, String(value));\n });\n\n // set innerHTML or textContent if provided\n if (html) {\n newElement.innerHTML = html;\n } else if (text) {\n newElement.textContent = text;\n }\n\n api.elements = [newElement];\n } else {\n // otherwise, treat it as a query selector\n api.query(selectorRefOrEl);\n }\n } else if (isRef(selectorRefOrEl)) {\n api.elements = [selectorRefOrEl.current];\n } else if ((selectorRefOrEl as Node).nodeType === Node.ELEMENT_NODE) {\n api.elements = [selectorRefOrEl as Node];\n }\n // throws if there is no element found\n elementGuard(api.el)\n return api;\n};\n\nexport class Dequery {\n\n constructor(\n public options: DequeryOptions = defaultConfig,\n public elements: Array<NodeType> = []\n ) {\n this.options = { ...defaultConfig, ...options }; // merge default options with user options\n this.elements = []; // elements found in the most recent operation\n }\n\n get el() {\n return this.elements[0];\n }\n\n // --- Traversal ---\n\n tap(cb: (el: NodeType | Array<NodeType>) => void): Dequery {\n cb(this.elements);\n return this;\n }\n\n query(selector: string): Dequery {\n console.log('querying', selector);\n this.elements = Array.from(document.querySelectorAll(selector));\n return this;\n }\n\n first(): Dequery {\n this.elements = [this.el];\n return this;\n }\n\n last(): Dequery {\n const els = this.elements;\n this.elements = [els[els.length - 1]];\n return this;\n }\n\n next(): Dequery {\n this.elements = this.elements\n .map((el) => elementGuard(el).nextElementSibling)\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n eq(idx: number): Dequery {\n this.elements = [this.elements[idx]];\n return this;\n }\n\n prev(): Dequery {\n this.elements = this.elements\n .map((el) => elementGuard(el).previousElementSibling)\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n each(cb: (el: NodeType, idx: number) => void): Dequery {\n this.elements.forEach(cb);\n return this;\n }\n\n find(selector: string): Dequery {\n this.elements = this.elements.flatMap((el) =>\n Array.from(elementGuard(el).querySelectorAll(selector))\n );\n return this;\n }\n\n parent(): Dequery {\n this.elements = this.elements\n .map((el) => el.parentElement)\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n children(): Dequery {\n this.elements = this.elements.flatMap((el) => Array.from(elementGuard(el).children));\n return this;\n }\n\n closest(selector: string): Dequery {\n this.elements = this.elements\n .map((el) => elementGuard(el).closest(selector))\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n filter(selector: string): Dequery {\n this.elements = this.elements.filter((el) => elementGuard(el).matches(selector));\n return this;\n }\n\n // --- Attributes ---\n\n attr(name: string): string | null;\n attr(name: string, value: string): Dequery;\n attr(name: string, value?: string): Dequery | string | null {\n if (value !== undefined) {\n this.elements.forEach((el) => elementGuard(el).setAttribute(name, value));\n return this;\n }\n // retrieve the attribute value from the first element\n return elementGuard(this.el)?.getAttribute(name) ?? null;\n }\n\n // --- Mutations ---\n\n empty(): Dequery {\n this.elements.forEach((el) => {\n elementGuard(el).innerHTML = \"\";\n });\n return this;\n }\n\n html(newInnerHtml?: string): Dequery {\n if (newInnerHtml) {\n this.elements.forEach((el) => {\n // partial update HTML sub-tree with new HTML (using DOMParser)\n updateDom(elementGuard(el), newInnerHtml);\n });\n }\n return this;\n }\n\n jsx(newJsxPartialDom: RenderInput): Dequery {\n this.elements.forEach((el) => {\n // partially update the DOM with new JSX (using renderIsomorphic) \n updateDomWithVdom(elementGuard(el), newJsxPartialDom, globalThis as Globals);\n });\n return this;\n }\n\n text(text?: string): Dequery {\n if (text) {\n this.elements.forEach((el) => {\n elementGuard(el).textContent = text;\n });\n }\n return this;\n }\n\n remove(): Dequery {\n this.elements.forEach((el) => elementGuard(el).remove());\n return this;\n }\n\n replaceWithJsx(vdomOrNode: RenderInput | NodeType): Dequery {\n this.elements.forEach((el) => {\n const newEl =\n vdomOrNode instanceof Node\n ? vdomOrNode\n : (renderIsomorphic(\n vdomOrNode,\n elementGuard(el),\n globalThis as Globals\n ) as Node);\n el.parentNode?.replaceChild(newEl.cloneNode(true), el);\n });\n return this;\n }\n\n append(content: string | NodeType | Dequery): Dequery {\n if (typeof content === \"undefined\" || content === null) {\n return this;\n }\n\n this.elements.forEach((el) => {\n if (typeof content === \"string\") {\n elementGuard(el).innerHTML += content;\n } else if (content instanceof Dequery) {\n content.elements.forEach((childEl) => {\n el.appendChild(elementGuard(childEl));\n });\n } else {\n el.appendChild(content);\n }\n });\n return this;\n }\n\n // --- Events ---\n\n on(eventName: string, handler: EventListener): Dequery {\n this.elements.forEach((el) =>\n el.addEventListener(eventName, handler)\n );\n return this;\n }\n\n off(eventName: string, handler: EventListener): Dequery {\n this.elements.forEach((el) =>\n el.removeEventListener(eventName, handler)\n );\n return this;\n }\n\n // --- CSS ---\n\n css(cssProps: string): string | undefined;\n css(cssProps: CSSProperties): Dequery;\n css(cssProps: string, value: string): Dequery;\n css(cssProps: CSSProperties | string, value?: string): Dequery | string | undefined {\n if (!value && typeof cssProps === \"string\") {\n // get a single CSS property value\n return elementGuard(this.el)?.style.getPropertyValue(cssProps);\n } else if (!value && typeof cssProps === \"object\") {\n // set multiple CSS properties\n this.elements.forEach((el) => {\n for (const key in cssProps) {\n elementGuard(el).style.setProperty(\n key,\n cssProps[key as keyof CSSProperties] as string\n );\n }\n });\n return this;\n } else if (typeof value === \"string\" && typeof cssProps === \"string\") {\n // set a single CSS property value\n this.elements.forEach((el) => {\n elementGuard(el).style.setProperty(cssProps, value);\n });\n return this;\n }\n return this;\n }\n\n addClass(className: Array<string> | string): Dequery {\n const classes = Array.isArray(className) ? className : [className];\n this.elements.forEach((el) => elementGuard(el).classList.add(...classes));\n return this;\n }\n\n removeClass(className: Array<string> | string): Dequery {\n const classes = Array.isArray(className) ? className : [className];\n this.elements.forEach((el) => elementGuard(el).classList.remove(...classes));\n return this;\n }\n\n hasClass(className: string): boolean {\n return this.elements.every((el) => elementGuard(el).classList.contains(className));\n }\n\n toggleClass(className: string): Dequery {\n this.elements.forEach((el) => elementGuard(el).classList.toggle(className));\n return this;\n }\n\n animateClass(className: string, duration: number): Dequery {\n this.elements.forEach((el) => {\n elementGuard(el).classList.add(className);\n setTimeout(() => elementGuard(el).classList.remove(className), duration);\n });\n return this;\n }\n\n // --- Interaction Simulation ---\n\n click(): Dequery {\n this.elements.forEach((el) => elementGuard(el).click());\n return this;\n }\n\n focus(): Dequery {\n this.elements.forEach((el) => elementGuard(el).focus());\n return this;\n }\n\n blur(): Dequery {\n this.elements.forEach((el) => elementGuard(el).blur());\n return this;\n }\n\n // --- Data extraction ---\n val(value: string | boolean): Dequery;\n val(): string | undefined;\n val(value?: string | boolean): Dequery | string | undefined {\n if (typeof value !== 'undefined') {\n this.elements.forEach((el) => {\n if (el instanceof HTMLInputElement) {\n el.value = String(value);\n }\n });\n return this;\n } else {\n return elementGuard<HTMLInputElement>(this.el)?.value;\n }\n }\n\n map<T = any>(cb: (el: NodeType, idx: number) => any): Array<T> {\n return this.elements.map(cb) as Array<T>;\n }\n\n prop<K extends keyof HTMLElement>(name: K, value: HTMLElement[K]): Dequery;\n prop<K extends keyof HTMLElement>(name: K): HTMLElement[K];\n prop<K extends keyof HTMLElement>(name: K, value?: HTMLElement[K]): Dequery | HTMLElement[K] {\n if (typeof value !== \"undefined\") {\n this.elements.forEach((el) => {\n elementGuard(el)[name] = value;\n });\n return this;\n }\n return elementGuard(this.el)[name];\n }\n\n data(name: string): string | undefined;\n data(name: string, value: string): Dequery;\n data(name: string, value?: string): Dequery | string | undefined {\n if (typeof value !== \"undefined\") {\n this.elements.forEach((el) => {\n elementGuard(el).dataset[name] = value;\n });\n return this;\n }\n return elementGuard(this.el)?.dataset[name];\n }\n\n // --- Form management ---\n\n form(): FormKeyValues;\n form(formData: FormKeyValues): Dequery;\n form(formData?: FormKeyValues): Dequery | FormKeyValues {\n if (formData) {\n Object.entries(formData).forEach(([key, value]) => {\n this.elements.forEach((el) => {\n if (el instanceof HTMLInputElement) {\n el.value = value as string;\n }\n });\n });\n return this;\n }\n\n const formFields: Record<string, string> = {};\n this.elements.forEach((el) => {\n if (el instanceof HTMLInputElement) {\n formFields[el.name] = el.value;\n }\n });\n return formFields;\n }\n}\n\n// for query-like syntax\nexport const $ = dequery;","import type { PersistenceProviderImpl } from '../provider.js'\nimport type { GenericLocalStorage } from './generic.js'\nimport type { MiddlewareFn } from '../provider.js'\n\nexport type MemoryProviderOptions = {}\n\nexport const newInMemoryGenericStorageBackend = <T = string>(): GenericLocalStorage<T> => {\n const cache = new Map<string, T>()\n return {\n clear: (): void => {\n cache.clear()\n },\n\n getItem: (key: string): T | null => {\n return cache.get(String(key)) ?? null\n },\n\n removeItem: (key: string): void => {\n cache.delete(String(key))\n },\n\n setItem: (key: string, value: T): void => {\n cache.set(String(key), value)\n },\n }\n}\n\n/** global in-memory storage backend */\nexport const memory = newInMemoryGenericStorageBackend()\n\n/** a simple, serverless and high-performance key/value storage engine */\nexport class WebStorageProvider<T> implements PersistenceProviderImpl<T> {\n protected storage: GenericLocalStorage<string>;\n\n constructor(storage?: GenericLocalStorage<string>) {\n this.storage = storage || memory;\n }\n\n get(key: string, defaultValue: T, middlewareFn?: MiddlewareFn<T>): T {\n const rawValue = this.storage.getItem(key);\n\n if (rawValue === null) return defaultValue;\n\n let value: T = JSON.parse(rawValue);\n\n if (middlewareFn) {\n value = middlewareFn(key, value);\n }\n return value;\n }\n\n set(key: string, value: T, middlewareFn?: MiddlewareFn<T>): void {\n if (middlewareFn) {\n value = middlewareFn(key, value);\n }\n this.storage.setItem(key, JSON.stringify(value));\n }\n\n remove(key: string): void {\n this.storage.removeItem(key);\n }\n\n removeAll(): void {\n this.storage.clear();\n }\n\n get backendApi(): GenericLocalStorage<string> {\n return this.storage;\n }\n}\n\nexport interface MemoryStorage<T> extends PersistenceProviderImpl<T> {\n backendApi: Omit<Omit<Storage, 'key'>, 'length'>\n}\n\nexport interface WebStorage<T> extends PersistenceProviderImpl<T> {\n backendApi: Storage\n}\n","import { WebStorageProvider } from '../isomporphic/memory.js'\nimport type { PersistenceProvider, PersistenceProviderImpl, PersistenceProviderOptions } from '../provider.js'\n\n/** returns the default persistence provider for each runtime environment */\nexport const getPersistenceProvider = <T>(\n provider: PersistenceProvider,\n _options?: PersistenceProviderOptions,\n): PersistenceProviderImpl<T> => {\n switch (provider) {\n case 'session':\n return new WebStorageProvider<T>(window.sessionStorage)\n case 'local':\n return new WebStorageProvider<T>(window.localStorage)\n }\n return new WebStorageProvider<T>() // memory\n}\n","import { WebStorageProvider } from '../isomporphic/memory.js'\nimport type { PersistenceProvider, PersistenceProviderImpl, PersistenceProviderOptions } from '../provider.js'\n\n/** returns the default persistence provider for each runtime environment */\nexport const getPersistenceProvider = <T>(\n _provider: PersistenceProvider,\n _options?: PersistenceProviderOptions,\n): PersistenceProviderImpl<T> => {\n return new WebStorageProvider<T>()\n}\n","//export const isBrowser = (): boolean => typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\nexport const isServer = (): boolean => typeof window === \"undefined\" || typeof window.document === \"undefined\";\n\n//export const isWebWorker = (): boolean => typeof self === \"object\" && self.constructor?.name === \"DedicatedWorkerGlobalScope\";","import type { PersistenceProvider, PersistenceProviderImpl, PersistenceProviderOptions } from './provider.js'\nimport { getPersistenceProvider as getPersistenceProviderClient } from './client/index.js'\nimport { getPersistenceProvider as getPersistenceProviderServer } from './server/index.js'\nimport { isServer } from './runtime.js'\n\n/** returns the persistence provider (isomorphic) */\nexport const webstorage = <T>(\n provider: PersistenceProvider = 'local',\n options?: PersistenceProviderOptions,\n): PersistenceProviderImpl<T> => {\n if (isServer()) {\n return getPersistenceProviderServer(provider, options)\n } else {\n return getPersistenceProviderClient(provider, options)\n }\n}\n\nexport * from './provider.js'\n","import type { VNode } from '@/render/types.js';\nimport { createStore, type Store } from '@/store/index.js';\n\nexport type TranslationObject = { [key: string]: string|VNode|TranslationObject };\nexport type Translations = { [language: string]: TranslationObject };\nexport type OnLanguageChangeListener = (newLanguage: string) => void;\nexport type Replacements = Record<string, string>;\n\nexport interface I18nStore {\n language: string;\n changeLanguage: (language: string) => void;\n t: (path: string, options?: Record<string, string>) => string;\n load: (language: string, translations: TranslationObject) => void;\n subscribe: (onLanguageChange: OnLanguageChangeListener) => void;\n}\n\n// example of placeholders: {name}, {age}, {city}\nconst VARIABLE_REGEX = /{([^}]*)}/g;\n\nconst interpolate = (template: string, replacements: Replacements): string =>\n template.replace(VARIABLE_REGEX, (_, key) => replacements[key] || `{${key}}`);\n\nexport const createI18n = (): I18nStore => {\n const translationsStore: Store<Translations> = createStore({});\n let language = 'en';\n\n const onLanguageChangeCallbacks: Array<OnLanguageChangeListener> = [];\n\n return {\n language,\n\n changeLanguage(newLanguage: string) {\n language = newLanguage;\n onLanguageChangeCallbacks.forEach(callback => callback(newLanguage));\n },\n\n // example usage of the t function with placeholders:\n // const translatedString = t('greeting', { name: 'John', age: '30' }, 'common');\n // this would replace placeholders {name} and {age} in the translation string with 'John' and '30' respectively.\n t(path: string, replacements: Record<string, string> = {}) {\n\n const template = translationsStore.get<string>(`${language}.${path}`) || path\n\n // VDOM (VNode)\n if (typeof template !== 'string') {\n return template;\n }\n // plaintext string or HTML\n return interpolate(template, replacements);\n },\n\n load(newLanguage: string, namespaceTranslations: TranslationObject) {\n translationsStore.set(newLanguage, {\n ...translationsStore.get<TranslationObject>(newLanguage),\n ...namespaceTranslations,\n });\n },\n\n subscribe(onLanguageChange: OnLanguageChangeListener) {\n onLanguageChangeCallbacks.push(onLanguageChange);\n return () => {\n const index = onLanguageChangeCallbacks.indexOf(onLanguageChange);\n if (index >= 0) onLanguageChangeCallbacks.splice(index, 1);\n };\n }\n };\n};\n\n// export singleton\nexport const i18n = createI18n();\n","import type { Props, VNodeChild } from \"@/render/types.js\";\nimport { type Replacements, i18n } from \"./i18n.js\";\n\nexport interface TransProps extends Props { \n path: string, \n tag?: string,\n replacements?: Replacements,\n class?: string,\n className?: string,\n style?: string,\n} \n\nexport const Trans = ({ path, replacements, tag, ...attrs }: TransProps): VNodeChild => {\n\n const ref = {}\n\n // re-render component on language change\n i18n.subscribe(() => {\n const value = i18n.t(path, replacements);\n console.log('new val', value);\n //$(ref).html(value);\n });\n\n return {\n tag: tag || 'span',\n attributes: {\n ref,\n ...attrs,\n },\n // initially render\n children: i18n.t(path, replacements),\n }\n}\n","\n/**\n * custom headers class to manage HTTP headers with case-insensitive keys.\n * simplifies header manipulation by providing utility methods.\n */\nexport class Headers {\n // internal map to store headers\n private map: Map<string, string>;\n\n /**\n * initializes the Headers instance with provided headers or another Headers object.\n * ensures all header keys are stored in lowercase for consistent access.\n * @param init initial headers as a record or another Headers instance\n */\n constructor(init: Record<string, string> | Headers = {}) {\n this.map = new Map();\n\n if (init instanceof Headers) {\n init.forEach((value, key) => this.map.set(key, value));\n } else {\n Object.entries(init).forEach(([key, value]) =>\n this.map.set(key.toLowerCase(), value)\n );\n }\n }\n\n /**\n * appends or sets the value for a specific header key.\n * stores the key in lowercase to maintain case-insensitivity.\n * @param key header name\n * @param value header value\n */\n append(key: string, value: string): void {\n this.map.set(key.toLowerCase(), value);\n }\n\n /**\n * retrieves the value of a specific header key.\n * @param key header name\n * @returns the header value or null if not found\n */\n get(key: string): string | null {\n return this.map.get(key.toLowerCase()) || null;\n }\n\n /**\n * checks if a specific header key exists.\n * @param key header name\n * @returns boolean indicating existence of the header\n */\n has(key: string): boolean {\n return this.map.has(key.toLowerCase());\n }\n\n /**\n * iterates over all headers and executes the provided callback for each.\n * @param callback function to execute for each header\n */\n forEach(callback: (value: string, key: string) => void): void {\n this.map.forEach((value, key) => callback(value, key));\n }\n}\n\n/**\n * ProgressSignal extends EventTarget to dispatch and track progress events.\n * useful for monitoring the progress of network requests.\n */\nexport class ProgressSignal extends EventTarget {\n // internal progress state\n private _progress: { loaded: number; total: number };\n\n /**\n * initializes the ProgressSignal with zero progress.\n */\n constructor() {\n super();\n this._progress = { loaded: 0, total: 0 };\n }\n\n /**\n * retrieves the current progress.\n * @returns an object containing loaded and total bytes\n */\n get progress(): { loaded: number; total: number } {\n return this._progress;\n }\n\n /**\n * dispatches a progress event with updated loaded and total bytes.\n * updates the internal progress state.\n * @param event the ProgressEvent containing progress information\n */\n dispatchProgress(event: ProgressEvent): void {\n this._progress = { loaded: event.loaded, total: event.total };\n this.dispatchEvent(\n new ProgressEvent('progress', { loaded: event.loaded, total: event.total })\n );\n }\n}\n\n/**\n * ProgressController manages a ProgressSignal for tracking request progress.\n * provides a centralized way to handle progress events.\n */\nexport class ProgressController {\n signal: ProgressSignal;\n\n /**\n * initializes the ProgressController with a new ProgressSignal.\n */\n constructor() {\n this.signal = new ProgressSignal();\n }\n}\n\n/**\n * serializes the request body into a format suitable for XMLHttpRequest.\n * handles various body types including JSON objects and FormData.\n * @param body the body to serialize\n * @returns the serialized body or null if no body is provided\n */\nexport function serializeBody(\n body: BodyInit | Record<string, unknown> | null | undefined\n): XMLHttpRequestBodyInit | Document | null {\n if (!body) return null;\n\n if (\n body instanceof FormData ||\n body instanceof Blob ||\n body instanceof URLSearchParams ||\n body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n typeof body === \"string\"\n ) {\n return body;\n }\n\n if (typeof body === \"object\") {\n return JSON.stringify(body); // convert object to JSON string for transmission\n }\n\n return String(body); // ensure fallback to string for unsupported types\n}\n\n/**\n * parses a raw header string from an XMLHttpRequest into a Headers instance.\n * @param headerStr the raw header string\n * @returns a Headers instance containing parsed headers\n */\nexport function parseHeaders(headerStr: string): Headers {\n const headers = new Headers();\n headerStr.split('\\r\\n').forEach((line) => {\n const [key, ...rest] = line.split(': ');\n if (key) headers.append(key, rest.join(': '));\n });\n return headers;\n}\n\n/**\n * extends the standard RequestInit to include an optional ProgressSignal.\n * allows tracking the progress of the network request.\n */\nexport interface FetchWithControllersInit extends RequestInit {\n progressSignal?: ProgressSignal;\n}\n\n/**\n * represents the response from a fetch operation, mirroring the native Response interface.\n * includes methods to access the response body in various formats.\n */\nexport interface FetchResponse {\n ok: boolean;\n status: number;\n statusText: string;\n headers: Headers;\n url: string;\n text: () => Promise<string>;\n json: () => Promise<unknown>;\n blob: () => Promise<Blob>;\n}\n\n/**\n * performs a network fetch request with support for progress tracking using XMLHttpRequest.\n * falls back to the native fetch implementation if no ProgressSignal is provided.\n * @param input the resource to fetch, typically a URL string\n * @param init optional configuration for the request, including method, headers, body, credentials, and progressSignal\n * @returns a promise resolving to a FetchResponse containing the response details\n */\nexport async function fetch(\n input: string | URL,\n init: FetchWithControllersInit = {}\n): Promise<FetchResponse> {\n // use native fetch if ProgressSignal is not provided for simplicity and efficiency\n if (!init.progressSignal && typeof globalThis.fetch === \"function\") {\n return fetch(input, init) as unknown as FetchResponse;\n }\n\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n const method = (init.method || 'GET').toUpperCase();\n const body = serializeBody(init.body || null);\n const progressSignal = init.progressSignal;\n const abortSignal = init.signal;\n\n // handle abort events to allow request cancellation\n if (abortSignal) {\n const abortHandler = () => {\n xhr.abort();\n reject(new DOMException('The operation was aborted.', 'AbortError'));\n };\n abortSignal.addEventListener('abort', abortHandler, { once: true });\n }\n\n xhr.open(method, input.toString(), true);\n\n // set credentials based on the init configuration\n if (init.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (init.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n // set request headers using the custom Headers class or raw headers\n if (init.headers instanceof Headers) {\n init.headers.forEach((value, key) => xhr.setRequestHeader(key, value));\n } else if (init.headers) {\n Object.entries(init.headers).forEach(([key, value]) => {\n xhr.setRequestHeader(key, value as string);\n });\n }\n\n // attach progress listeners if a ProgressSignal is provided\n if (progressSignal) {\n if (xhr.upload) {\n xhr.upload.onprogress = (event) => progressSignal.dispatchProgress(event);\n }\n xhr.onprogress = (event) => progressSignal.dispatchProgress(event);\n }\n\n // handle the response once the request is completed\n xhr.onload = () => {\n const response: FetchResponse = {\n ok: xhr.status >= 200 && xhr.status < 300,\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders()),\n url: xhr.responseURL,\n text: () => Promise.resolve(xhr.responseText),\n json: () => Promise.resolve(JSON.parse(xhr.responseText)),\n blob: () => Promise.resolve(new Blob([xhr.response])),\n };\n resolve(response);\n };\n\n // handle network errors\n xhr.onerror = () => reject(new TypeError('Network request failed'));\n xhr.ontimeout = () => reject(new TypeError('Network request timed out'));\n xhr.onabort = () => reject(new DOMException('The operation was aborted.', 'AbortError'));\n\n // send the serialized request body\n xhr.send(body);\n });\n}\n\n\n/*\n // example usage of fetch with upload tracking\n async function exampleFetchWithUploadTracking() {\n const url = 'https://example.com/upload';\n const data = new FormData();\n data.append('file', new Blob(['file content'], { type: 'text/plain' }), 'example.txt');\n\n const { signal: progressSignal } = new ProgressController();\n\n progressSignal.addEventListener('progress', (event: ProgressEvent) => {\n console.log(`Uploaded ${event.loaded} of ${event.total} bytes`);\n });\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n body: data,\n headers: {\n 'Accept': 'application/json'\n },\n credentials: 'include',\n progressSignal\n });\n\n if (response.ok) {\n const jsonResponse = await response.json();\n console.log('Upload successful:', jsonResponse);\n } else {\n console.error('Upload failed:', response.statusText);\n }\n } catch (error) {\n console.error('Error during fetch:', error);\n }\n }\n \n */"],"names":["getRenderer","handleLifecycleEventsForOnMount","isRef","renderIsomorphic","getPersistenceProvider","getPersistenceProviderServer","getPersistenceProviderClient","createStore"],"mappings":"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"}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { e as VNode, d as VNodeAttributes, R as RenderInput, G as Globals, P as Props, k as VNodeChild } from './index-
|
|
2
|
-
export { $, C as CSSProperties, m as Children, D as Dequery, H as DequeryOptions, n as DomAbstractionImpl, J as ElementCreationOptions, F as FontFaceProperties, B as FormFieldValue, E as FormKeyValues, w as Fragment, K as KeyFrameProperties, M as Listener, N as NodeType, c as Ref, b as RefUpdateFn, o as RenderNodeInput, a as RenderResult, p as RenderResultNode, S as Store, V as VAttributes, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, O as createStore, I as defaultConfig, L as dequery, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from './index-
|
|
1
|
+
import { e as VNode, d as VNodeAttributes, R as RenderInput, G as Globals, P as Props, k as VNodeChild } from './index-Cqaw1XMU.js';
|
|
2
|
+
export { $, C as CSSProperties, m as Children, D as Dequery, H as DequeryOptions, n as DomAbstractionImpl, J as ElementCreationOptions, F as FontFaceProperties, B as FormFieldValue, E as FormKeyValues, w as Fragment, K as KeyFrameProperties, M as Listener, N as NodeType, c as Ref, b as RefUpdateFn, o as RenderNodeInput, a as RenderResult, p as RenderResultNode, S as Store, V as VAttributes, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, O as createStore, I as defaultConfig, L as dequery, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from './index-Cqaw1XMU.js';
|
|
3
3
|
import * as CSS from 'csstype';
|
|
4
4
|
export { CSS };
|
|
5
5
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { e as VNode, d as VNodeAttributes, R as RenderInput, G as Globals, P as Props, k as VNodeChild } from './index-
|
|
2
|
-
export { $, C as CSSProperties, m as Children, D as Dequery, H as DequeryOptions, n as DomAbstractionImpl, J as ElementCreationOptions, F as FontFaceProperties, B as FormFieldValue, E as FormKeyValues, w as Fragment, K as KeyFrameProperties, M as Listener, N as NodeType, c as Ref, b as RefUpdateFn, o as RenderNodeInput, a as RenderResult, p as RenderResultNode, S as Store, V as VAttributes, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, O as createStore, I as defaultConfig, L as dequery, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from './index-
|
|
1
|
+
import { e as VNode, d as VNodeAttributes, R as RenderInput, G as Globals, P as Props, k as VNodeChild } from './index-Cqaw1XMU.js';
|
|
2
|
+
export { $, C as CSSProperties, m as Children, D as Dequery, H as DequeryOptions, n as DomAbstractionImpl, J as ElementCreationOptions, F as FontFaceProperties, B as FormFieldValue, E as FormKeyValues, w as Fragment, K as KeyFrameProperties, M as Listener, N as NodeType, c as Ref, b as RefUpdateFn, o as RenderNodeInput, a as RenderResult, p as RenderResultNode, S as Store, V as VAttributes, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, O as createStore, I as defaultConfig, L as dequery, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from './index-Cqaw1XMU.js';
|
|
3
3
|
import * as CSS from 'csstype';
|
|
4
4
|
export { CSS };
|
|
5
5
|
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var j=Object.defineProperty;var i=(t,e)=>j(t,"name",{value:e,configurable:!0});import{h as p,g as E,i as A,r as v,e as L}from"./index-BDxEyjzN.mjs";import{F as se,c as ne,d as oe,k as ie,f as ae,l as le,j as fe,b as he,a as ce,o as ue,s as de}from"./index-BDxEyjzN.mjs";const D=!0,x=i((t,e)=>{if(t===e)return!0;if(t.nodeType!==e.nodeType)return!1;if(t.nodeType===Node.ELEMENT_NODE){const r=t,s=e;if(r.tagName!==s.tagName)return!1;const n=r.attributes,o=s.attributes;if(n.length!==o.length)return!1;for(let h=0;h<n.length;h++){const a=n[h],c=s.getAttribute(a.name);if(a.value!==c)return!1}}return!(t.nodeType===Node.TEXT_NODE&&t.textContent!==e.textContent)},"areDomNodesEqual"),S=i((t,e)=>{if(!x(t,e)){t.parentNode?.replaceChild(e.cloneNode(!0),t);return}if(t.nodeType===Node.ELEMENT_NODE){const r=t.childNodes,s=e.childNodes,n=Math.max(r.length,s.length);for(let o=0;o<n;o++){const h=r[o],a=s[o];h&&a?S(h,a):a&&!h?t.appendChild(a.cloneNode(!0)):h&&!a&&t.removeChild(h)}}},"updateNode"),M=i((t,e)=>{const s=new DOMParser().parseFromString(e,"text/html"),n=Array.from(s.body.children);if(n.length===0){console.warn("No root elements found in the new HTML.");return}for(let o=0;o<n.length;o++){const h=n[o],a=t.children[o];a?S(a,h):t.appendChild(h.cloneNode(!0))}for(;t.children.length>n.length;)t.removeChild(t.lastChild)},"updateDom");function P(t){if(t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"||typeof t=="object"&&"type"in t)return t}i(P,"toValidChild");function k(t,e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return t.nodeType===Node.TEXT_NODE;if(e&&typeof e=="object"){if(t.nodeType!==Node.ELEMENT_NODE)return!1;const r=t.tagName.toLowerCase(),s=e.type.toLowerCase();return r===s}return!1}i(k,"areNodeAndChildMatching");function R(t,e,r){const s=E(r.window.document);if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"){const n=String(e);t.nodeValue!==n&&(t.nodeValue=n);return}if(t.nodeType===Node.ELEMENT_NODE&&e&&typeof e=="object"){const n=t,o=Array.from(n.attributes);for(const h of o){const{name:a}=h;!Object.prototype.hasOwnProperty.call(e.attributes,a)&&a!=="style"&&n.removeAttribute(a)}if(s.setAttributes(e,n),e.attributes?.dangerouslySetInnerHTML){n.innerHTML=e.attributes.dangerouslySetInnerHTML.__html;return}if(e.children)T(n,e.children,r);else for(;n.firstChild;)n.removeChild(n.firstChild)}}i(R,"patchDomInPlace");function O(t,e){const r=E(e.window.document);if(t==null)return;if(typeof t=="string"||typeof t=="number"||typeof t=="boolean")return e.window.document.createTextNode(String(t));let s=r.createElementOrElements(t);return s&&!Array.isArray(s)&&(s=[s]),s}i(O,"createDomFromChild");function T(t,e,r){console.log("updateDomWithVdom",e,t);let s=[];if(Array.isArray(e))s=e.map(P).filter(a=>a!==void 0);else if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")s=[e];else if(e){const a=P(e);a!==void 0&&(s=[a])}console.log("new children to render!",s);const n=s.map(a=>O(a,r)),o=Array.from(t.childNodes),h=Math.max(o.length,n.length);for(let a=0;a<h;a++){const c=o[a],f=n[a],u=s[a];if(c&&f!==void 0)if(Array.isArray(f))if(f.length===0)t.removeChild(c);else{const m=f[0];t.replaceChild(m,c),typeof m<"u"&&p(m);for(let d=1;d<f.length;d++)f[d]&&(t.insertBefore(f[d],m.nextSibling),typeof f[d]<"u"&&(console.log("inserBefore!"),p(f[d])))}else f&&(u&&k(c,u)?R(c,u,r):(t.replaceChild(f,c),p(f)));else!c&&f!==void 0?Array.isArray(f)?f.forEach(m=>{const d=m&&t.appendChild(m);return d&&p(m),d}):f&&(t.appendChild(f),p(f)):c&&f===void 0&&t.removeChild(c)}}i(T,"updateDomWithVdom");function F(t,e,r){for(;t.firstChild;)t.removeChild(t.firstChild);const n=E(r.window.document).createElementOrElements(e);if(Array.isArray(n))for(const o of n)o&&t.appendChild(o);else n&&t.appendChild(n)}i(F,"replaceDomWithVdom");const l=i(t=>{if(t instanceof HTMLElement)return t;let e="Expected an HTMLElement, but found: ";throw t?.nodeName?e+=t.nodeName:e+=t,new Error(e)},"elementGuard"),g={maxWaitMs:1e3},H=i((t,e=g)=>{if(!t)throw console.error("dequery: selector, ref, or element is required. Got nothing."),new Error("dequery: selector, ref, or element is required. Got nothing.");const r=new b({...g,...e});if(typeof t=="string"){const s=/^<(\w+)>$/,n=t.match(s);if(n){const o=document.createElement(n[1]),{innerHTML:h,textContent:a,...c}=e;Object.entries(c).forEach(([f,u])=>{o.setAttribute(f,String(u))}),h?o.innerHTML=h:a&&(o.textContent=a),r.elements=[o]}else r.query(t)}else A(t)?r.elements=[t.current]:t.nodeType===Node.ELEMENT_NODE&&(r.elements=[t]);return l(r.el),r},"dequery");class b{static{i(this,"Dequery")}constructor(e=g,r=[]){this.options=e,this.elements=r,this.options={...g,...e},this.elements=[]}get el(){return this.elements[0]}tap(e){return e(this.elements),this}query(e){return console.log("querying",e),this.elements=Array.from(document.querySelectorAll(e)),this}first(){return this.elements=[this.el],this}last(){const e=this.elements;return this.elements=[e[e.length-1]],this}next(){return this.elements=this.elements.map(e=>l(e).nextElementSibling).filter(Boolean),this}eq(e){return this.elements=[this.elements[e]],this}prev(){return this.elements=this.elements.map(e=>l(e).previousElementSibling).filter(Boolean),this}each(e){return this.elements.forEach(e),this}find(e){return this.elements=this.elements.flatMap(r=>Array.from(l(r).querySelectorAll(e))),this}parent(){return this.elements=this.elements.map(e=>e.parentElement).filter(Boolean),this}children(){return this.elements=this.elements.flatMap(e=>Array.from(l(e).children)),this}closest(e){return this.elements=this.elements.map(r=>l(r).closest(e)).filter(Boolean),this}filter(e){return this.elements=this.elements.filter(r=>l(r).matches(e)),this}attr(e,r){return r!==void 0?(this.elements.forEach(s=>l(s).setAttribute(e,r)),this):l(this.el)?.getAttribute(e)??null}empty(){return this.elements.forEach(e=>{l(e).innerHTML=""}),this}html(e){return e&&this.elements.forEach(r=>{M(l(r),e)}),this}jsx(e){return this.elements.forEach(r=>{T(l(r),e,globalThis)}),this}text(e){return e&&this.elements.forEach(r=>{l(r).textContent=e}),this}remove(){return this.elements.forEach(e=>l(e).remove()),this}replaceWithJsx(e){return this.elements.forEach(r=>{const s=e instanceof Node?e:v(e,l(r),globalThis);r.parentNode?.replaceChild(s.cloneNode(!0),r)}),this}append(e){return this.elements.forEach(r=>{typeof e=="string"?l(r).innerHTML+=e:e instanceof b?e.elements.forEach(s=>{r.appendChild(l(s))}):r.appendChild(e)}),this}on(e,r){return this.elements.forEach(s=>s.addEventListener(e,r)),this}off(e,r){return this.elements.forEach(s=>s.removeEventListener(e,r)),this}css(e,r){return!r&&typeof e=="string"?l(this.el)?.style.getPropertyValue(e):!r&&typeof e=="object"?(this.elements.forEach(s=>{for(const n in e)l(s).style.setProperty(n,e[n])}),this):typeof r=="string"&&typeof e=="string"?(this.elements.forEach(s=>{l(s).style.setProperty(e,r)}),this):this}addClass(e){const r=Array.isArray(e)?e:[e];return this.elements.forEach(s=>l(s).classList.add(...r)),this}removeClass(e){const r=Array.isArray(e)?e:[e];return this.elements.forEach(s=>l(s).classList.remove(...r)),this}hasClass(e){return this.elements.every(r=>l(r).classList.contains(e))}toggleClass(e){return this.elements.forEach(r=>l(r).classList.toggle(e)),this}animateClass(e,r){return this.elements.forEach(s=>{l(s).classList.add(e),setTimeout(()=>l(s).classList.remove(e),r)}),this}click(){return this.elements.forEach(e=>l(e).click()),this}focus(){return this.elements.forEach(e=>l(e).focus()),this}blur(){return this.elements.forEach(e=>l(e).blur()),this}val(e){return typeof e<"u"?(this.elements.forEach(r=>{r instanceof HTMLInputElement&&(r.value=String(e))}),this):l(this.el)?.value}map(e){return this.elements.map(e)}prop(e,r){return typeof r<"u"?(this.elements.forEach(s=>{l(s)[e]=r}),this):l(this.el)[e]}data(e,r){return typeof r<"u"?(this.elements.forEach(s=>{l(s).dataset[e]=r}),this):l(this.el)?.dataset[e]}form(e){if(e)return Object.entries(e).forEach(([s,n])=>{this.elements.forEach(o=>{o instanceof HTMLInputElement&&(o.value=n)})}),this;const r={};return this.elements.forEach(s=>{s instanceof HTMLInputElement&&(r[s.name]=s.value)}),r}}const G=H,W=i(()=>{const t=new Map;return{clear:i(()=>{t.clear()},"clear"),getItem:i(e=>t.get(String(e))??null,"getItem"),removeItem:i(e=>{t.delete(String(e))},"removeItem"),setItem:i((e,r)=>{t.set(String(e),r)},"setItem")}},"newInMemoryGenericStorageBackend"),$=W();class w{static{i(this,"WebStorageProvider")}storage;constructor(e){this.storage=e||$}get(e,r,s){const n=this.storage.getItem(e);if(n===null)return r;let o=JSON.parse(n);return s&&(o=s(e,o)),o}set(e,r,s){s&&(r=s(e,r)),this.storage.setItem(e,JSON.stringify(r))}remove(e){this.storage.removeItem(e)}removeAll(){this.storage.clear()}get backendApi(){return this.storage}}const J=i((t,e)=>{switch(t){case"session":return new w(window.sessionStorage);case"local":return new w(window.localStorage)}return new w},"getPersistenceProvider$1"),V=i((t,e)=>new w,"getPersistenceProvider"),U=i(()=>typeof window>"u"||typeof window.document>"u","isServer"),X=i((t="local",e)=>U()?V():J(t),"webstorage"),K=/{([^}]*)}/g,z=i((t,e)=>t.replace(K,(r,s)=>e[s]||`{${s}}`),"interpolate"),N=i(()=>{const t=L({});let e="en";const r=[];return{language:e,changeLanguage(s){e=s,r.forEach(n=>n(s))},t(s,n={}){const o=t.get(`${e}.${s}`)||s;return typeof o!="string"?o:z(o,n)},load(s,n){t.set(s,{...t.get(s),...n})},subscribe(s){return r.push(s),()=>{const n=r.indexOf(s);n>=0&&r.splice(n,1)}}}},"createI18n"),C=N(),Q=i(({path:t,replacements:e,tag:r,...s})=>{const n={};return C.subscribe(()=>{const o=C.t(t,e);console.log("new val",o)}),{tag:r||"span",attributes:{ref:n,...s},children:C.t(t,e)}},"Trans");class y{static{i(this,"Headers")}map;constructor(e={}){this.map=new Map,e instanceof y?e.forEach((r,s)=>this.map.set(s,r)):Object.entries(e).forEach(([r,s])=>this.map.set(r.toLowerCase(),s))}append(e,r){this.map.set(e.toLowerCase(),r)}get(e){return this.map.get(e.toLowerCase())||null}has(e){return this.map.has(e.toLowerCase())}forEach(e){this.map.forEach((r,s)=>e(r,s))}}class q extends EventTarget{static{i(this,"ProgressSignal")}_progress;constructor(){super(),this._progress={loaded:0,total:0}}get progress(){return this._progress}dispatchProgress(e){this._progress={loaded:e.loaded,total:e.total},this.dispatchEvent(new ProgressEvent("progress",{loaded:e.loaded,total:e.total}))}}class Y{static{i(this,"ProgressController")}signal;constructor(){this.signal=new q}}function I(t){return t?t instanceof FormData||t instanceof Blob||t instanceof URLSearchParams||t instanceof ArrayBuffer||ArrayBuffer.isView(t)||typeof t=="string"?t:typeof t=="object"?JSON.stringify(t):String(t):null}i(I,"serializeBody");function _(t){const e=new y;return t.split(`\r
|
|
2
|
-
`).forEach(r=>{const[s,...n]=r.split(": ");s&&e.append(s,n.join(": "))}),e}i(_,"parseHeaders");async function B(t,e={}){return!e.progressSignal&&typeof globalThis.fetch=="function"?B(t,e):new Promise((r,s)=>{const n=new XMLHttpRequest,o=(e.method||"GET").toUpperCase(),h=I(e.body||null),a=e.progressSignal,c=e.signal;if(c){const f=i(()=>{n.abort(),s(new DOMException("The operation was aborted.","AbortError"))},"abortHandler");c.addEventListener("abort",f,{once:!0})}n.open(o,t.toString(),!0),e.credentials==="include"?n.withCredentials=!0:e.credentials==="omit"&&(n.withCredentials=!1),e.headers instanceof y?e.headers.forEach((f,u)=>n.setRequestHeader(u,f)):e.headers&&Object.entries(e.headers).forEach(([f,u])=>{n.setRequestHeader(f,u)}),a&&(n.upload&&(n.upload.onprogress=f=>a.dispatchProgress(f)),n.onprogress=f=>a.dispatchProgress(f)),n.onload=()=>{const f={ok:n.status>=200&&n.status<300,status:n.status,statusText:n.statusText,headers:_(n.getAllResponseHeaders()),url:n.responseURL,text:i(()=>Promise.resolve(n.responseText),"text"),json:i(()=>Promise.resolve(JSON.parse(n.responseText)),"json"),blob:i(()=>Promise.resolve(new Blob([n.response])),"blob")};r(f)},n.onerror=()=>s(new TypeError("Network request failed")),n.ontimeout=()=>s(new TypeError("Network request timed out")),n.onabort=()=>s(new DOMException("The operation was aborted.","AbortError")),n.send(h)})}i(B,"fetch");export{G as $,
|
|
1
|
+
var j=Object.defineProperty;var i=(t,e)=>j(t,"name",{value:e,configurable:!0});import{h as p,g as E,i as A,r as v,e as x}from"./index-BDxEyjzN.mjs";import{F as se,c as ne,d as oe,k as ie,f as ae,l as le,j as fe,b as he,a as ce,o as ue,s as de}from"./index-BDxEyjzN.mjs";const D=!0,L=i((t,e)=>{if(t===e)return!0;if(t.nodeType!==e.nodeType)return!1;if(t.nodeType===Node.ELEMENT_NODE){const r=t,s=e;if(r.tagName!==s.tagName)return!1;const n=r.attributes,o=s.attributes;if(n.length!==o.length)return!1;for(let h=0;h<n.length;h++){const a=n[h],c=s.getAttribute(a.name);if(a.value!==c)return!1}}return!(t.nodeType===Node.TEXT_NODE&&t.textContent!==e.textContent)},"areDomNodesEqual"),S=i((t,e)=>{if(!L(t,e)){t.parentNode?.replaceChild(e.cloneNode(!0),t);return}if(t.nodeType===Node.ELEMENT_NODE){const r=t.childNodes,s=e.childNodes,n=Math.max(r.length,s.length);for(let o=0;o<n;o++){const h=r[o],a=s[o];h&&a?S(h,a):a&&!h?t.appendChild(a.cloneNode(!0)):h&&!a&&t.removeChild(h)}}},"updateNode"),M=i((t,e)=>{const s=new DOMParser().parseFromString(e,"text/html"),n=Array.from(s.body.children);if(n.length===0){console.warn("No root elements found in the new HTML.");return}for(let o=0;o<n.length;o++){const h=n[o],a=t.children[o];a?S(a,h):t.appendChild(h.cloneNode(!0))}for(;t.children.length>n.length;)t.removeChild(t.lastChild)},"updateDom");function P(t){if(t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"||typeof t=="object"&&"type"in t)return t}i(P,"toValidChild");function k(t,e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return t.nodeType===Node.TEXT_NODE;if(e&&typeof e=="object"){if(t.nodeType!==Node.ELEMENT_NODE)return!1;const r=t.tagName.toLowerCase(),s=e.type.toLowerCase();return r===s}return!1}i(k,"areNodeAndChildMatching");function R(t,e,r){const s=E(r.window.document);if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"){const n=String(e);t.nodeValue!==n&&(t.nodeValue=n);return}if(t.nodeType===Node.ELEMENT_NODE&&e&&typeof e=="object"){const n=t,o=Array.from(n.attributes);for(const h of o){const{name:a}=h;!Object.prototype.hasOwnProperty.call(e.attributes,a)&&a!=="style"&&n.removeAttribute(a)}if(s.setAttributes(e,n),e.attributes?.dangerouslySetInnerHTML){n.innerHTML=e.attributes.dangerouslySetInnerHTML.__html;return}if(e.children)T(n,e.children,r);else for(;n.firstChild;)n.removeChild(n.firstChild)}}i(R,"patchDomInPlace");function O(t,e){const r=E(e.window.document);if(t==null)return;if(typeof t=="string"||typeof t=="number"||typeof t=="boolean")return e.window.document.createTextNode(String(t));let s=r.createElementOrElements(t);return s&&!Array.isArray(s)&&(s=[s]),s}i(O,"createDomFromChild");function T(t,e,r){console.log("updateDomWithVdom",e,t);let s=[];if(Array.isArray(e))s=e.map(P).filter(a=>a!==void 0);else if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")s=[e];else if(e){const a=P(e);a!==void 0&&(s=[a])}console.log("new children to render!",s);const n=s.map(a=>O(a,r)),o=Array.from(t.childNodes),h=Math.max(o.length,n.length);for(let a=0;a<h;a++){const c=o[a],f=n[a],u=s[a];if(c&&f!==void 0)if(Array.isArray(f))if(f.length===0)t.removeChild(c);else{const m=f[0];t.replaceChild(m,c),typeof m<"u"&&p(m);for(let d=1;d<f.length;d++)f[d]&&(t.insertBefore(f[d],m.nextSibling),typeof f[d]<"u"&&(console.log("inserBefore!"),p(f[d])))}else f&&(u&&k(c,u)?R(c,u,r):(t.replaceChild(f,c),p(f)));else!c&&f!==void 0?Array.isArray(f)?f.forEach(m=>{const d=m&&t.appendChild(m);return d&&p(m),d}):f&&(t.appendChild(f),p(f)):c&&f===void 0&&t.removeChild(c)}}i(T,"updateDomWithVdom");function F(t,e,r){for(;t.firstChild;)t.removeChild(t.firstChild);const n=E(r.window.document).createElementOrElements(e);if(Array.isArray(n))for(const o of n)o&&t.appendChild(o);else n&&t.appendChild(n)}i(F,"replaceDomWithVdom");const l=i(t=>{if(t instanceof HTMLElement)return t;let e="Expected an HTMLElement, but found: ";throw t?.nodeName?e+=t.nodeName:e+=t,new Error(e)},"elementGuard"),g={maxWaitMs:1e3},N=i((t,e=g)=>{if(!t)throw console.error("dequery: selector, ref, or element is required. Got nothing."),new Error("dequery: selector, ref, or element is required. Got nothing.");const r=new C({...g,...e});if(typeof t=="string"){const s=/^<(\w+)>$/,n=t.match(s);if(n){const o=document.createElement(n[1]),{text:h,html:a,...c}=e;Object.entries(c).forEach(([f,u])=>{o.setAttribute(f,String(u))}),a?o.innerHTML=a:h&&(o.textContent=h),r.elements=[o]}else r.query(t)}else A(t)?r.elements=[t.current]:t.nodeType===Node.ELEMENT_NODE&&(r.elements=[t]);return l(r.el),r},"dequery");class C{static{i(this,"Dequery")}constructor(e=g,r=[]){this.options=e,this.elements=r,this.options={...g,...e},this.elements=[]}get el(){return this.elements[0]}tap(e){return e(this.elements),this}query(e){return console.log("querying",e),this.elements=Array.from(document.querySelectorAll(e)),this}first(){return this.elements=[this.el],this}last(){const e=this.elements;return this.elements=[e[e.length-1]],this}next(){return this.elements=this.elements.map(e=>l(e).nextElementSibling).filter(Boolean),this}eq(e){return this.elements=[this.elements[e]],this}prev(){return this.elements=this.elements.map(e=>l(e).previousElementSibling).filter(Boolean),this}each(e){return this.elements.forEach(e),this}find(e){return this.elements=this.elements.flatMap(r=>Array.from(l(r).querySelectorAll(e))),this}parent(){return this.elements=this.elements.map(e=>e.parentElement).filter(Boolean),this}children(){return this.elements=this.elements.flatMap(e=>Array.from(l(e).children)),this}closest(e){return this.elements=this.elements.map(r=>l(r).closest(e)).filter(Boolean),this}filter(e){return this.elements=this.elements.filter(r=>l(r).matches(e)),this}attr(e,r){return r!==void 0?(this.elements.forEach(s=>l(s).setAttribute(e,r)),this):l(this.el)?.getAttribute(e)??null}empty(){return this.elements.forEach(e=>{l(e).innerHTML=""}),this}html(e){return e&&this.elements.forEach(r=>{M(l(r),e)}),this}jsx(e){return this.elements.forEach(r=>{T(l(r),e,globalThis)}),this}text(e){return e&&this.elements.forEach(r=>{l(r).textContent=e}),this}remove(){return this.elements.forEach(e=>l(e).remove()),this}replaceWithJsx(e){return this.elements.forEach(r=>{const s=e instanceof Node?e:v(e,l(r),globalThis);r.parentNode?.replaceChild(s.cloneNode(!0),r)}),this}append(e){return typeof e>"u"||e===null?this:(this.elements.forEach(r=>{typeof e=="string"?l(r).innerHTML+=e:e instanceof C?e.elements.forEach(s=>{r.appendChild(l(s))}):r.appendChild(e)}),this)}on(e,r){return this.elements.forEach(s=>s.addEventListener(e,r)),this}off(e,r){return this.elements.forEach(s=>s.removeEventListener(e,r)),this}css(e,r){return!r&&typeof e=="string"?l(this.el)?.style.getPropertyValue(e):!r&&typeof e=="object"?(this.elements.forEach(s=>{for(const n in e)l(s).style.setProperty(n,e[n])}),this):typeof r=="string"&&typeof e=="string"?(this.elements.forEach(s=>{l(s).style.setProperty(e,r)}),this):this}addClass(e){const r=Array.isArray(e)?e:[e];return this.elements.forEach(s=>l(s).classList.add(...r)),this}removeClass(e){const r=Array.isArray(e)?e:[e];return this.elements.forEach(s=>l(s).classList.remove(...r)),this}hasClass(e){return this.elements.every(r=>l(r).classList.contains(e))}toggleClass(e){return this.elements.forEach(r=>l(r).classList.toggle(e)),this}animateClass(e,r){return this.elements.forEach(s=>{l(s).classList.add(e),setTimeout(()=>l(s).classList.remove(e),r)}),this}click(){return this.elements.forEach(e=>l(e).click()),this}focus(){return this.elements.forEach(e=>l(e).focus()),this}blur(){return this.elements.forEach(e=>l(e).blur()),this}val(e){return typeof e<"u"?(this.elements.forEach(r=>{r instanceof HTMLInputElement&&(r.value=String(e))}),this):l(this.el)?.value}map(e){return this.elements.map(e)}prop(e,r){return typeof r<"u"?(this.elements.forEach(s=>{l(s)[e]=r}),this):l(this.el)[e]}data(e,r){return typeof r<"u"?(this.elements.forEach(s=>{l(s).dataset[e]=r}),this):l(this.el)?.dataset[e]}form(e){if(e)return Object.entries(e).forEach(([s,n])=>{this.elements.forEach(o=>{o instanceof HTMLInputElement&&(o.value=n)})}),this;const r={};return this.elements.forEach(s=>{s instanceof HTMLInputElement&&(r[s.name]=s.value)}),r}}const G=N,W=i(()=>{const t=new Map;return{clear:i(()=>{t.clear()},"clear"),getItem:i(e=>t.get(String(e))??null,"getItem"),removeItem:i(e=>{t.delete(String(e))},"removeItem"),setItem:i((e,r)=>{t.set(String(e),r)},"setItem")}},"newInMemoryGenericStorageBackend"),$=W();class w{static{i(this,"WebStorageProvider")}storage;constructor(e){this.storage=e||$}get(e,r,s){const n=this.storage.getItem(e);if(n===null)return r;let o=JSON.parse(n);return s&&(o=s(e,o)),o}set(e,r,s){s&&(r=s(e,r)),this.storage.setItem(e,JSON.stringify(r))}remove(e){this.storage.removeItem(e)}removeAll(){this.storage.clear()}get backendApi(){return this.storage}}const J=i((t,e)=>{switch(t){case"session":return new w(window.sessionStorage);case"local":return new w(window.localStorage)}return new w},"getPersistenceProvider$1"),V=i((t,e)=>new w,"getPersistenceProvider"),U=i(()=>typeof window>"u"||typeof window.document>"u","isServer"),X=i((t="local",e)=>U()?V():J(t),"webstorage"),K=/{([^}]*)}/g,z=i((t,e)=>t.replace(K,(r,s)=>e[s]||`{${s}}`),"interpolate"),q=i(()=>{const t=x({});let e="en";const r=[];return{language:e,changeLanguage(s){e=s,r.forEach(n=>n(s))},t(s,n={}){const o=t.get(`${e}.${s}`)||s;return typeof o!="string"?o:z(o,n)},load(s,n){t.set(s,{...t.get(s),...n})},subscribe(s){return r.push(s),()=>{const n=r.indexOf(s);n>=0&&r.splice(n,1)}}}},"createI18n"),b=q(),Q=i(({path:t,replacements:e,tag:r,...s})=>{const n={};return b.subscribe(()=>{const o=b.t(t,e);console.log("new val",o)}),{tag:r||"span",attributes:{ref:n,...s},children:b.t(t,e)}},"Trans");class y{static{i(this,"Headers")}map;constructor(e={}){this.map=new Map,e instanceof y?e.forEach((r,s)=>this.map.set(s,r)):Object.entries(e).forEach(([r,s])=>this.map.set(r.toLowerCase(),s))}append(e,r){this.map.set(e.toLowerCase(),r)}get(e){return this.map.get(e.toLowerCase())||null}has(e){return this.map.has(e.toLowerCase())}forEach(e){this.map.forEach((r,s)=>e(r,s))}}class H extends EventTarget{static{i(this,"ProgressSignal")}_progress;constructor(){super(),this._progress={loaded:0,total:0}}get progress(){return this._progress}dispatchProgress(e){this._progress={loaded:e.loaded,total:e.total},this.dispatchEvent(new ProgressEvent("progress",{loaded:e.loaded,total:e.total}))}}class Y{static{i(this,"ProgressController")}signal;constructor(){this.signal=new H}}function I(t){return t?t instanceof FormData||t instanceof Blob||t instanceof URLSearchParams||t instanceof ArrayBuffer||ArrayBuffer.isView(t)||typeof t=="string"?t:typeof t=="object"?JSON.stringify(t):String(t):null}i(I,"serializeBody");function _(t){const e=new y;return t.split(`\r
|
|
2
|
+
`).forEach(r=>{const[s,...n]=r.split(": ");s&&e.append(s,n.join(": "))}),e}i(_,"parseHeaders");async function B(t,e={}){return!e.progressSignal&&typeof globalThis.fetch=="function"?B(t,e):new Promise((r,s)=>{const n=new XMLHttpRequest,o=(e.method||"GET").toUpperCase(),h=I(e.body||null),a=e.progressSignal,c=e.signal;if(c){const f=i(()=>{n.abort(),s(new DOMException("The operation was aborted.","AbortError"))},"abortHandler");c.addEventListener("abort",f,{once:!0})}n.open(o,t.toString(),!0),e.credentials==="include"?n.withCredentials=!0:e.credentials==="omit"&&(n.withCredentials=!1),e.headers instanceof y?e.headers.forEach((f,u)=>n.setRequestHeader(u,f)):e.headers&&Object.entries(e.headers).forEach(([f,u])=>{n.setRequestHeader(f,u)}),a&&(n.upload&&(n.upload.onprogress=f=>a.dispatchProgress(f)),n.onprogress=f=>a.dispatchProgress(f)),n.onload=()=>{const f={ok:n.status>=200&&n.status<300,status:n.status,statusText:n.statusText,headers:_(n.getAllResponseHeaders()),url:n.responseURL,text:i(()=>Promise.resolve(n.responseText),"text"),json:i(()=>Promise.resolve(JSON.parse(n.responseText)),"json"),blob:i(()=>Promise.resolve(new Blob([n.response])),"blob")};r(f)},n.onerror=()=>s(new TypeError("Network request failed")),n.ontimeout=()=>s(new TypeError("Network request timed out")),n.onabort=()=>s(new DOMException("The operation was aborted.","AbortError")),n.send(h)})}i(B,"fetch");export{G as $,C as Dequery,se as Fragment,y as Headers,Y as ProgressController,H as ProgressSignal,Q as Trans,L as areDomNodesEqual,q as createI18n,ne as createInPlaceErrorMessageVNode,oe as createRef,x as createStore,g as defaultConfig,N as dequery,ie as ensureKey,B as fetch,ae as getAllKeysFromPath,le as getByPath,E as getRenderer,p as handleLifecycleEventsForOnMount,b as i18n,D as inDevMode,A as isRef,fe as jsx,he as jsxDEV,ce as jsxs,ue as observeUnmount,_ as parseHeaders,v as renderIsomorphic,F as replaceDomWithVdom,I as serializeBody,de as setByPath,M as updateDom,T as updateDomWithVdom,X as webstorage};
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/common/devmode.ts","../src/common/dom.ts","../src/dequery/dequery.ts","../src/webstorage/isomporphic/memory.ts","../src/webstorage/client/index.ts","../src/webstorage/server/index.ts","../src/webstorage/runtime.ts","../src/webstorage/index.ts","../src/i18n/i18n.tsx","../src/i18n/trans.tsx","../src/net/fetch.ts"],"sourcesContent":["export const inDevMode = true;","import type { Globals, RenderInput, VNode, VNodeAttributes, VNodeChild } from \"defuss/jsx-runtime\";\nimport { getRenderer, handleLifecycleEventsForOnMount } from \"../render/isomorph.js\";\n\n/**\n * Compares two DOM nodes for equality with performance optimizations.\n * 1. Checks for reference equality.\n * 2. Compares node types.\n * 3. For Element nodes, compares tag names and attributes.\n * 4. For Text nodes, compares text content.\n */\nexport const areDomNodesEqual = (oldNode: Node, newNode: Node): boolean => {\n // return true if both references are identical\n if (oldNode === newNode) return true;\n\n // compare node types\n if (oldNode.nodeType !== newNode.nodeType) return false;\n\n // handle Element nodes\n if (oldNode.nodeType === Node.ELEMENT_NODE) {\n const oldElement = oldNode as Element;\n const newElement = newNode as Element;\n\n // compare tag names\n if (oldElement.tagName !== newElement.tagName) return false;\n\n const oldAttrs = oldElement.attributes;\n const newAttrs = newElement.attributes;\n\n // compare number of attributes\n if (oldAttrs.length !== newAttrs.length) return false;\n\n // iterate and compare each attribute's name and value\n for (let i = 0; i < oldAttrs.length; i++) {\n const oldAttr = oldAttrs[i];\n const newAttrValue = newElement.getAttribute(oldAttr.name);\n if (oldAttr.value !== newAttrValue) return false;\n }\n }\n\n // handle Text nodes\n if (oldNode.nodeType === Node.TEXT_NODE) {\n if (oldNode.textContent !== newNode.textContent) return false;\n }\n return true;\n};\n\n/**\n * Recursively updates oldNode with the structure of newNode:\n * - If they differ (tag/attrs/text), oldNode is replaced\n * - If same, we recurse on children\n */\nconst updateNode = (oldNode: Node, newNode: Node) => {\n // 1) If different, replace old with new\n if (!areDomNodesEqual(oldNode, newNode)) {\n oldNode.parentNode?.replaceChild(newNode.cloneNode(true), oldNode);\n return;\n }\n\n // 2) If they match and are elements, recurse on their children\n if (oldNode.nodeType === Node.ELEMENT_NODE) {\n const oldChildren = oldNode.childNodes;\n const newChildren = newNode.childNodes;\n const maxLength = Math.max(oldChildren.length, newChildren.length);\n\n for (let i = 0; i < maxLength; i++) {\n const oldChild = oldChildren[i];\n const newChild = newChildren[i];\n\n if (oldChild && newChild) {\n // both exist; recurse\n updateNode(oldChild, newChild);\n } else if (newChild && !oldChild) {\n // new child doesn't exist in old => append\n oldNode.appendChild(newChild.cloneNode(true));\n } else if (oldChild && !newChild) {\n // old child doesn't exist in new => remove\n oldNode.removeChild(oldChild);\n }\n }\n }\n};\n\n/**\n * Partially updates a DOM subtree by comparing `targetElement` to\n * newly parsed HTML. No `.innerHTML` is used here; we parse via DOMParser.\n */\nexport const updateDom = (targetElement: Element, newHTML: string): void => {\n // 1) Parse the new HTML string into a DocumentFragment-like structure\n const parser = new DOMParser();\n // 'text/html' => parse as a full HTML doc. We take the <body>'s children as our new nodes\n const doc = parser.parseFromString(newHTML, 'text/html');\n\n // 2) Extract the root child elements from the newly parsed doc\n // Typically, doc.body is where your HTML snippet content is placed.\n const newRoots = Array.from(doc.body.children);\n\n if (newRoots.length === 0) {\n console.warn('No root elements found in the new HTML.');\n return;\n }\n\n // 3) For each new root, see if there's an old corresponding child to update\n for (let i = 0; i < newRoots.length; i++) {\n const newRoot = newRoots[i];\n const oldChild = targetElement.children[i];\n\n if (oldChild) {\n // partial update\n updateNode(oldChild, newRoot);\n } else {\n // target has fewer children => just append\n targetElement.appendChild(newRoot.cloneNode(true));\n }\n }\n\n // 4) Remove any old leftover children that have no matching new root\n while (targetElement.children.length > newRoots.length) {\n targetElement.removeChild(targetElement.lastChild!);\n }\n};\n\n/********************************************************\n * 1) Define a \"valid\" child type & utility\n ********************************************************/\nexport type ValidChild =\n | string\n | number\n | boolean\n | null\n | undefined\n | VNode<VNodeAttributes>;\n\nfunction toValidChild(child: VNodeChild): ValidChild | undefined {\n if (child == null) return child; // null or undefined\n if (\n typeof child === \"string\" ||\n typeof child === \"number\" ||\n typeof child === \"boolean\"\n ) {\n return child;\n }\n if (typeof child === \"object\" && \"type\" in child) {\n return child as VNode<VNodeAttributes>;\n }\n // e.g. function or {} -> filter out\n return undefined;\n}\n\n/********************************************************\n * 2) Check if a DOM node and a ValidChild match by type\n ********************************************************/\nfunction areNodeAndChildMatching(domNode: Node, child: ValidChild): boolean {\n if (\n typeof child === \"string\" ||\n typeof child === \"number\" ||\n typeof child === \"boolean\"\n ) {\n // must be a text node\n return domNode.nodeType === Node.TEXT_NODE;\n } else if (child && typeof child === \"object\") {\n // must be same tag\n if (domNode.nodeType !== Node.ELEMENT_NODE) return false;\n const oldTag = (domNode as Element).tagName.toLowerCase();\n const newTag = child.type.toLowerCase();\n return oldTag === newTag;\n }\n // if child is null/undefined => definitely no match\n return false;\n}\n\n/********************************************************\n * 3) Patch a single DOM node in place (attributes, text, children)\n ********************************************************/\nfunction patchDomInPlace(domNode: Node, child: ValidChild, globals: Globals) {\n const renderer = getRenderer(globals.window.document);\n\n // textlike\n if (typeof child === \"string\" || typeof child === \"number\" || typeof child === \"boolean\") {\n const newText = String(child);\n if (domNode.nodeValue !== newText) {\n domNode.nodeValue = newText;\n }\n return;\n }\n\n // element\n if (domNode.nodeType === Node.ELEMENT_NODE && child && typeof child === \"object\") {\n // 1) update attributes\n // remove old attributes not present\n const el = domNode as Element;\n const existingAttrs = Array.from(el.attributes);\n for (const attr of existingAttrs) {\n const { name } = attr;\n if (!Object.prototype.hasOwnProperty.call(child.attributes, name) && name !== \"style\") {\n el.removeAttribute(name);\n }\n }\n // set new attributes\n renderer.setAttributes(child, el);\n\n // 2) dangerouslySetInnerHTML => skip child updates\n if (child.attributes?.dangerouslySetInnerHTML) {\n el.innerHTML = child.attributes.dangerouslySetInnerHTML.__html;\n return;\n }\n\n // 3) recursively do partial updates for children\n if (child.children) {\n updateDomWithVdom(el, child.children as any, globals);\n } else {\n // remove old children\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n }\n }\n}\n\n/********************************************************\n * 4) Create brand new DOM node from a ValidChild\n ********************************************************/\nfunction createDomFromChild(child: ValidChild, globals: Globals): Node | Node[] | undefined {\n const renderer = getRenderer(globals.window.document);\n\n if (child == null) return undefined;\n if (typeof child === \"string\" || typeof child === \"number\" || typeof child === \"boolean\") {\n return globals.window.document.createTextNode(String(child));\n }\n\n // else it's a VNode, create without parent as we don't know where it goes yet\n // therefore, we need to handle the onMount lifecycle event later too\n let renderResult = renderer.createElementOrElements(child) as Node | Node[] | undefined;\n\n if (renderResult && !Array.isArray(renderResult)) {\n renderResult = [renderResult];\n }\n return renderResult;\n}\n\n/********************************************************\n * 5) Main partial-update function (index-by-index approach)\n ********************************************************/\nexport function updateDomWithVdom(\n parentElement: Element,\n newVDOM: RenderInput,\n globals: Globals\n) {\n\n console.log('updateDomWithVdom', newVDOM, parentElement)\n \n // A) Convert newVDOM => array of \"valid\" children\n let newChildren: ValidChild[] = [];\n if (Array.isArray(newVDOM)) {\n newChildren = newVDOM.map(toValidChild).filter((c): c is ValidChild => c !== undefined);\n } else if (\n typeof newVDOM === \"string\" ||\n typeof newVDOM === \"number\" ||\n typeof newVDOM === \"boolean\"\n ) {\n newChildren = [newVDOM];\n } else if (newVDOM) {\n const child = toValidChild(newVDOM);\n if (child !== undefined) newChildren = [child];\n }\n\n console.log(\"new children to render!\", newChildren)\n\n // B) Generate brand-new DOM for each new child in an array\n // We'll compare them 1:1 with the old nodes.\n const newDomArray: (Node | Node[] | undefined)[] = newChildren.map((vdomChild) =>\n createDomFromChild(vdomChild, globals)\n );\n\n // C) Snapshot old children\n const oldNodes = Array.from(parentElement.childNodes);\n\n // D) Walk up to max length\n const maxLen = Math.max(oldNodes.length, newDomArray.length);\n for (let i = 0; i < maxLen; i++) {\n const oldNode = oldNodes[i];\n const newDom = newDomArray[i]; // might be a single Node or an array of Nodes\n const newChild = newChildren[i];\n\n if (oldNode && newDom !== undefined) {\n // Both old & new exist\n // 1) If newDom is an array (multiple root nodes?), we do a bigger replace\n // or partial approach. Typically we might place the 1st in oldNode's position\n // and then insert the rest right after it, then remove oldNode if needed.\n if (Array.isArray(newDom)) {\n if (newDom.length === 0) {\n // no new => remove old\n parentElement.removeChild(oldNode);\n } else {\n // We might keep the first node and replace oldNode\n const first = newDom[0];\n parentElement.replaceChild(first, oldNode);\n \n if (typeof first !== \"undefined\") {\n handleLifecycleEventsForOnMount(first as HTMLElement);\n }\n\n // Insert the rest\n for (let k = 1; k < newDom.length; k++) {\n if (newDom[k]) {\n parentElement.insertBefore(newDom[k]!, first.nextSibling);\n\n if (typeof newDom[k] !== \"undefined\") { \n console.log(\"inserBefore!\")\n handleLifecycleEventsForOnMount(newDom[k] as HTMLElement);\n }\n }\n }\n }\n } else if (newDom) {\n // single new node\n // 2) If old & new match => partial patch. Else => replace\n if (newChild && areNodeAndChildMatching(oldNode, newChild)) {\n // partial patch\n patchDomInPlace(oldNode, newChild, globals);\n } else {\n // replace\n parentElement.replaceChild(newDom, oldNode);\n\n handleLifecycleEventsForOnMount(newDom as HTMLElement);\n }\n }\n } else if (!oldNode && newDom !== undefined) {\n // we have more new nodes => append\n if (Array.isArray(newDom)) {\n newDom.forEach((newNode) => {\n const wasAdded = newNode && parentElement.appendChild(newNode);\n\n if (wasAdded) {\n handleLifecycleEventsForOnMount(newNode as HTMLElement)\n }\n return wasAdded;\n });\n } else if (newDom) {\n parentElement.appendChild(newDom);\n\n handleLifecycleEventsForOnMount(newDom as HTMLElement);\n }\n } else if (oldNode && newDom === undefined) {\n // we have leftover old => remove\n parentElement.removeChild(oldNode);\n }\n }\n}\n\n/**\n * Directly blow away all children in `parentElement` and create new DOM \n * from `newVDOM`. This never skips or leaves behind stale nodes, \n * at the cost of losing partial update performance.\n */\nexport function replaceDomWithVdom(parentElement: Element, newVDOM: RenderInput, globals: Globals) {\n // 1) Clear all existing DOM children\n while (parentElement.firstChild) {\n parentElement.removeChild(parentElement.firstChild);\n }\n\n // 2) Re-render from scratch\n const renderer = getRenderer(globals.window.document);\n\n // Possibly convert `newVDOM` to array if needed, \n // but `renderer.createElementOrElements` handles it either way:\n const newDom = renderer.createElementOrElements(newVDOM as VNode | undefined | Array<VNode | undefined | string>);\n\n // 3) Append the newly created node(s)\n if (Array.isArray(newDom)) {\n for (const node of newDom) {\n if (node) parentElement.appendChild(node);\n }\n } else if (newDom) {\n parentElement.appendChild(newDom);\n }\n}","import { updateDom, updateDomWithVdom } from \"../common/dom.js\";\nimport { isRef, renderIsomorphic, type CSSProperties, type Globals, type Ref, type RenderInput } from \"../render/index.js\";\n\nexport type NodeType = Node | Text | Element | Document | DocumentFragment;\n\nexport type FormFieldValue = string | Date | File | boolean | number;\n\nexport interface FormKeyValues {\n // key or path (object path x.y.z) to form field value\n [keyOrPath: string]: FormFieldValue;\n}\n\nconst elementGuard = <T = HTMLElement>(el: NodeType): T => {\n if (el instanceof HTMLElement) return el as T;\n\n let message = \"Expected an HTMLElement, but found: \";\n if (el?.nodeName) {\n message += el.nodeName\n } else {\n message += el\n }\n throw new Error(message);\n};\n\nexport interface DequeryOptions {\n maxWaitMs: number;\n}\n\nexport const defaultConfig: DequeryOptions = {\n maxWaitMs: 1000,\n};\n\nexport type ElementCreationOptions = JSX.HTMLAttributesLowerCase & JSX.HTMLAttributesLowerCase & { innerHTML?: string, textContent?: string };\n\nexport const dequery = (\n selectorRefOrEl: Node | Element | Text | Ref<Node | Element | Text, any> | string,\n options: DequeryOptions | ElementCreationOptions = defaultConfig\n): Dequery => {\n\n if (!selectorRefOrEl) {\n console.error(\"dequery: selector, ref, or element is required. Got nothing.\");\n throw new Error(\"dequery: selector, ref, or element is required. Got nothing.\");\n }\n\n const api = new Dequery({ ...defaultConfig, ...options });\n\n if (typeof selectorRefOrEl === \"string\") {\n const elementCreationRegex = /^<(\\w+)>$/; // regex to match element creation syntax like <div>\n const matchesCreateElementSyntax = selectorRefOrEl.match(elementCreationRegex);\n\n if (matchesCreateElementSyntax) {\n // create a new element if the string matches the element creation syntax\n const newElement = document.createElement(matchesCreateElementSyntax[1]);\n const { innerHTML, textContent, ...attributes } = options as ElementCreationOptions;\n\n // set attributes\n Object.entries(attributes).forEach(([key, value]) => {\n newElement.setAttribute(key, String(value));\n });\n\n // set innerHTML or textContent if provided\n if (innerHTML) {\n newElement.innerHTML = innerHTML;\n } else if (textContent) {\n newElement.textContent = textContent;\n }\n\n api.elements = [newElement];\n } else {\n // otherwise, treat it as a query selector\n api.query(selectorRefOrEl);\n }\n } else if (isRef(selectorRefOrEl)) {\n api.elements = [selectorRefOrEl.current];\n } else if ((selectorRefOrEl as Node).nodeType === Node.ELEMENT_NODE) {\n api.elements = [selectorRefOrEl as Node];\n }\n // throws if there is no element found\n elementGuard(api.el)\n return api;\n};\n\nexport class Dequery {\n\n constructor(\n public options: DequeryOptions = defaultConfig,\n public elements: Array<NodeType> = []\n ) {\n this.options = { ...defaultConfig, ...options }; // merge default options with user options\n this.elements = []; // elements found in the most recent operation\n }\n\n get el() {\n return this.elements[0];\n }\n\n // --- Traversal ---\n\n tap(cb: (el: NodeType | Array<NodeType>) => void): Dequery {\n cb(this.elements);\n return this;\n }\n\n query(selector: string): Dequery {\n console.log('querying', selector);\n this.elements = Array.from(document.querySelectorAll(selector));\n return this;\n }\n\n first(): Dequery {\n this.elements = [this.el];\n return this;\n }\n\n last(): Dequery {\n const els = this.elements;\n this.elements = [els[els.length - 1]];\n return this;\n }\n\n next(): Dequery {\n this.elements = this.elements\n .map((el) => elementGuard(el).nextElementSibling)\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n eq(idx: number): Dequery {\n this.elements = [this.elements[idx]];\n return this;\n }\n\n prev(): Dequery {\n this.elements = this.elements\n .map((el) => elementGuard(el).previousElementSibling)\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n each(cb: (el: NodeType, idx: number) => void): Dequery {\n this.elements.forEach(cb);\n return this;\n }\n\n find(selector: string): Dequery {\n this.elements = this.elements.flatMap((el) =>\n Array.from(elementGuard(el).querySelectorAll(selector))\n );\n return this;\n }\n\n parent(): Dequery {\n this.elements = this.elements\n .map((el) => el.parentElement)\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n children(): Dequery {\n this.elements = this.elements.flatMap((el) => Array.from(elementGuard(el).children));\n return this;\n }\n\n closest(selector: string): Dequery {\n this.elements = this.elements\n .map((el) => elementGuard(el).closest(selector))\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n filter(selector: string): Dequery {\n this.elements = this.elements.filter((el) => elementGuard(el).matches(selector));\n return this;\n }\n\n // --- Attributes ---\n\n attr(name: string): string | null;\n attr(name: string, value: string): Dequery;\n attr(name: string, value?: string): Dequery | string | null {\n if (value !== undefined) {\n this.elements.forEach((el) => elementGuard(el).setAttribute(name, value));\n return this;\n }\n // retrieve the attribute value from the first element\n return elementGuard(this.el)?.getAttribute(name) ?? null;\n }\n\n // --- Mutations ---\n\n empty(): Dequery {\n this.elements.forEach((el) => {\n elementGuard(el).innerHTML = \"\";\n });\n return this;\n }\n\n html(newInnerHtml?: string): Dequery {\n if (newInnerHtml) {\n this.elements.forEach((el) => {\n // partial update HTML sub-tree with new HTML (using DOMParser)\n updateDom(elementGuard(el), newInnerHtml);\n });\n }\n return this;\n }\n\n jsx(newJsxPartialDom: RenderInput): Dequery {\n this.elements.forEach((el) => {\n // partially update the DOM with new JSX (using renderIsomorphic) \n updateDomWithVdom(elementGuard(el), newJsxPartialDom, globalThis as Globals);\n });\n return this;\n }\n\n text(text?: string): Dequery {\n if (text) {\n this.elements.forEach((el) => {\n elementGuard(el).textContent = text;\n });\n }\n return this;\n }\n\n remove(): Dequery {\n this.elements.forEach((el) => elementGuard(el).remove());\n return this;\n }\n\n replaceWithJsx(vdomOrNode: RenderInput | NodeType): Dequery {\n this.elements.forEach((el) => {\n const newEl =\n vdomOrNode instanceof Node\n ? vdomOrNode\n : (renderIsomorphic(\n vdomOrNode,\n elementGuard(el),\n globalThis as Globals\n ) as Node);\n el.parentNode?.replaceChild(newEl.cloneNode(true), el);\n });\n return this;\n }\n\n append(content: string | NodeType | Dequery): Dequery {\n this.elements.forEach((el) => {\n if (typeof content === \"string\") {\n elementGuard(el).innerHTML += content;\n } else if (content instanceof Dequery) {\n content.elements.forEach((childEl) => {\n el.appendChild(elementGuard(childEl));\n });\n } else {\n el.appendChild(content);\n }\n });\n return this;\n }\n\n // --- Events ---\n\n on(eventName: string, handler: EventListener): Dequery {\n this.elements.forEach((el) =>\n el.addEventListener(eventName, handler)\n );\n return this;\n }\n\n off(eventName: string, handler: EventListener): Dequery {\n this.elements.forEach((el) =>\n el.removeEventListener(eventName, handler)\n );\n return this;\n }\n\n // --- CSS ---\n\n css(cssProps: string): string | undefined;\n css(cssProps: CSSProperties): Dequery;\n css(cssProps: string, value: string): Dequery;\n css(cssProps: CSSProperties | string, value?: string): Dequery | string | undefined {\n if (!value && typeof cssProps === \"string\") {\n // get a single CSS property value\n return elementGuard(this.el)?.style.getPropertyValue(cssProps);\n } else if (!value && typeof cssProps === \"object\") {\n // set multiple CSS properties\n this.elements.forEach((el) => {\n for (const key in cssProps) {\n elementGuard(el).style.setProperty(\n key,\n cssProps[key as keyof CSSProperties] as string\n );\n }\n });\n return this;\n } else if (typeof value === \"string\" && typeof cssProps === \"string\") {\n // set a single CSS property value\n this.elements.forEach((el) => {\n elementGuard(el).style.setProperty(cssProps, value);\n });\n return this;\n }\n return this;\n }\n\n addClass(className: Array<string> | string): Dequery {\n const classes = Array.isArray(className) ? className : [className];\n this.elements.forEach((el) => elementGuard(el).classList.add(...classes));\n return this;\n }\n\n removeClass(className: Array<string> | string): Dequery {\n const classes = Array.isArray(className) ? className : [className];\n this.elements.forEach((el) => elementGuard(el).classList.remove(...classes));\n return this;\n }\n\n hasClass(className: string): boolean {\n return this.elements.every((el) => elementGuard(el).classList.contains(className));\n }\n\n toggleClass(className: string): Dequery {\n this.elements.forEach((el) => elementGuard(el).classList.toggle(className));\n return this;\n }\n\n animateClass(className: string, duration: number): Dequery {\n this.elements.forEach((el) => {\n elementGuard(el).classList.add(className);\n setTimeout(() => elementGuard(el).classList.remove(className), duration);\n });\n return this;\n }\n\n // --- Interaction Simulation ---\n\n click(): Dequery {\n this.elements.forEach((el) => elementGuard(el).click());\n return this;\n }\n\n focus(): Dequery {\n this.elements.forEach((el) => elementGuard(el).focus());\n return this;\n }\n\n blur(): Dequery {\n this.elements.forEach((el) => elementGuard(el).blur());\n return this;\n }\n\n // --- Data extraction ---\n val(value: string | boolean): Dequery;\n val(): string | undefined;\n val(value?: string | boolean): Dequery | string | undefined {\n if (typeof value !== 'undefined') {\n this.elements.forEach((el) => {\n if (el instanceof HTMLInputElement) {\n el.value = String(value);\n }\n });\n return this;\n } else {\n return elementGuard<HTMLInputElement>(this.el)?.value;\n }\n }\n\n map<T = any>(cb: (el: NodeType, idx: number) => any): Array<T> {\n return this.elements.map(cb) as Array<T>;\n }\n\n prop<K extends keyof HTMLElement>(name: K, value: HTMLElement[K]): Dequery;\n prop<K extends keyof HTMLElement>(name: K): HTMLElement[K];\n prop<K extends keyof HTMLElement>(name: K, value?: HTMLElement[K]): Dequery | HTMLElement[K] {\n if (typeof value !== \"undefined\") {\n this.elements.forEach((el) => {\n elementGuard(el)[name] = value;\n });\n return this;\n }\n return elementGuard(this.el)[name];\n }\n\n data(name: string): string | undefined;\n data(name: string, value: string): Dequery;\n data(name: string, value?: string): Dequery | string | undefined {\n if (typeof value !== \"undefined\") {\n this.elements.forEach((el) => {\n elementGuard(el).dataset[name] = value;\n });\n return this;\n }\n return elementGuard(this.el)?.dataset[name];\n }\n\n // --- Form management ---\n\n form(): FormKeyValues;\n form(formData: FormKeyValues): Dequery;\n form(formData?: FormKeyValues): Dequery | FormKeyValues {\n if (formData) {\n Object.entries(formData).forEach(([key, value]) => {\n this.elements.forEach((el) => {\n if (el instanceof HTMLInputElement) {\n el.value = value as string;\n }\n });\n });\n return this;\n }\n\n const formFields: Record<string, string> = {};\n this.elements.forEach((el) => {\n if (el instanceof HTMLInputElement) {\n formFields[el.name] = el.value;\n }\n });\n return formFields;\n }\n}\n\n// for query-like syntax\nexport const $ = dequery;","import type { PersistenceProviderImpl } from '../provider.js'\nimport type { GenericLocalStorage } from './generic.js'\nimport type { MiddlewareFn } from '../provider.js'\n\nexport type MemoryProviderOptions = {}\n\nexport const newInMemoryGenericStorageBackend = <T = string>(): GenericLocalStorage<T> => {\n const cache = new Map<string, T>()\n return {\n clear: (): void => {\n cache.clear()\n },\n\n getItem: (key: string): T | null => {\n return cache.get(String(key)) ?? null\n },\n\n removeItem: (key: string): void => {\n cache.delete(String(key))\n },\n\n setItem: (key: string, value: T): void => {\n cache.set(String(key), value)\n },\n }\n}\n\n/** global in-memory storage backend */\nexport const memory = newInMemoryGenericStorageBackend()\n\n/** a simple, serverless and high-performance key/value storage engine */\nexport class WebStorageProvider<T> implements PersistenceProviderImpl<T> {\n protected storage: GenericLocalStorage<string>;\n\n constructor(storage?: GenericLocalStorage<string>) {\n this.storage = storage || memory;\n }\n\n get(key: string, defaultValue: T, middlewareFn?: MiddlewareFn<T>): T {\n const rawValue = this.storage.getItem(key);\n\n if (rawValue === null) return defaultValue;\n\n let value: T = JSON.parse(rawValue);\n\n if (middlewareFn) {\n value = middlewareFn(key, value);\n }\n return value;\n }\n\n set(key: string, value: T, middlewareFn?: MiddlewareFn<T>): void {\n if (middlewareFn) {\n value = middlewareFn(key, value);\n }\n this.storage.setItem(key, JSON.stringify(value));\n }\n\n remove(key: string): void {\n this.storage.removeItem(key);\n }\n\n removeAll(): void {\n this.storage.clear();\n }\n\n get backendApi(): GenericLocalStorage<string> {\n return this.storage;\n }\n}\n\nexport interface MemoryStorage<T> extends PersistenceProviderImpl<T> {\n backendApi: Omit<Omit<Storage, 'key'>, 'length'>\n}\n\nexport interface WebStorage<T> extends PersistenceProviderImpl<T> {\n backendApi: Storage\n}\n","import { WebStorageProvider } from '../isomporphic/memory.js'\nimport type { PersistenceProvider, PersistenceProviderImpl, PersistenceProviderOptions } from '../provider.js'\n\n/** returns the default persistence provider for each runtime environment */\nexport const getPersistenceProvider = <T>(\n provider: PersistenceProvider,\n _options?: PersistenceProviderOptions,\n): PersistenceProviderImpl<T> => {\n switch (provider) {\n case 'session':\n return new WebStorageProvider<T>(window.sessionStorage)\n case 'local':\n return new WebStorageProvider<T>(window.localStorage)\n }\n return new WebStorageProvider<T>() // memory\n}\n","import { WebStorageProvider } from '../isomporphic/memory.js'\nimport type { PersistenceProvider, PersistenceProviderImpl, PersistenceProviderOptions } from '../provider.js'\n\n/** returns the default persistence provider for each runtime environment */\nexport const getPersistenceProvider = <T>(\n _provider: PersistenceProvider,\n _options?: PersistenceProviderOptions,\n): PersistenceProviderImpl<T> => {\n return new WebStorageProvider<T>()\n}\n","//export const isBrowser = (): boolean => typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\nexport const isServer = (): boolean => typeof window === \"undefined\" || typeof window.document === \"undefined\";\n\n//export const isWebWorker = (): boolean => typeof self === \"object\" && self.constructor?.name === \"DedicatedWorkerGlobalScope\";","import type { PersistenceProvider, PersistenceProviderImpl, PersistenceProviderOptions } from './provider.js'\nimport { getPersistenceProvider as getPersistenceProviderClient } from './client/index.js'\nimport { getPersistenceProvider as getPersistenceProviderServer } from './server/index.js'\nimport { isServer } from './runtime.js'\n\n/** returns the persistence provider (isomorphic) */\nexport const webstorage = <T>(\n provider: PersistenceProvider = 'local',\n options?: PersistenceProviderOptions,\n): PersistenceProviderImpl<T> => {\n if (isServer()) {\n return getPersistenceProviderServer(provider, options)\n } else {\n return getPersistenceProviderClient(provider, options)\n }\n}\n\nexport * from './provider.js'\n","import type { VNode } from '@/render/types.js';\nimport { createStore, type Store } from '@/store/index.js';\n\nexport type TranslationObject = { [key: string]: string|VNode|TranslationObject };\nexport type Translations = { [language: string]: TranslationObject };\nexport type OnLanguageChangeListener = (newLanguage: string) => void;\nexport type Replacements = Record<string, string>;\n\nexport interface I18nStore {\n language: string;\n changeLanguage: (language: string) => void;\n t: (path: string, options?: Record<string, string>) => string;\n load: (language: string, translations: TranslationObject) => void;\n subscribe: (onLanguageChange: OnLanguageChangeListener) => void;\n}\n\n// example of placeholders: {name}, {age}, {city}\nconst VARIABLE_REGEX = /{([^}]*)}/g;\n\nconst interpolate = (template: string, replacements: Replacements): string =>\n template.replace(VARIABLE_REGEX, (_, key) => replacements[key] || `{${key}}`);\n\nexport const createI18n = (): I18nStore => {\n const translationsStore: Store<Translations> = createStore({});\n let language = 'en';\n\n const onLanguageChangeCallbacks: Array<OnLanguageChangeListener> = [];\n\n return {\n language,\n\n changeLanguage(newLanguage: string) {\n language = newLanguage;\n onLanguageChangeCallbacks.forEach(callback => callback(newLanguage));\n },\n\n // example usage of the t function with placeholders:\n // const translatedString = t('greeting', { name: 'John', age: '30' }, 'common');\n // this would replace placeholders {name} and {age} in the translation string with 'John' and '30' respectively.\n t(path: string, replacements: Record<string, string> = {}) {\n\n const template = translationsStore.get<string>(`${language}.${path}`) || path\n\n // VDOM (VNode)\n if (typeof template !== 'string') {\n return template;\n }\n // plaintext string or HTML\n return interpolate(template, replacements);\n },\n\n load(newLanguage: string, namespaceTranslations: TranslationObject) {\n translationsStore.set(newLanguage, {\n ...translationsStore.get<TranslationObject>(newLanguage),\n ...namespaceTranslations,\n });\n },\n\n subscribe(onLanguageChange: OnLanguageChangeListener) {\n onLanguageChangeCallbacks.push(onLanguageChange);\n return () => {\n const index = onLanguageChangeCallbacks.indexOf(onLanguageChange);\n if (index >= 0) onLanguageChangeCallbacks.splice(index, 1);\n };\n }\n };\n};\n\n// export singleton\nexport const i18n = createI18n();\n","import type { Props, VNodeChild } from \"@/render/types.js\";\nimport { type Replacements, i18n } from \"./i18n.js\";\n\nexport interface TransProps extends Props { \n path: string, \n tag?: string,\n replacements?: Replacements,\n class?: string,\n className?: string,\n style?: string,\n} \n\nexport const Trans = ({ path, replacements, tag, ...attrs }: TransProps): VNodeChild => {\n\n const ref = {}\n\n // re-render component on language change\n i18n.subscribe(() => {\n const value = i18n.t(path, replacements);\n console.log('new val', value);\n //$(ref).html(value);\n });\n\n return {\n tag: tag || 'span',\n attributes: {\n ref,\n ...attrs,\n },\n // initially render\n children: i18n.t(path, replacements),\n }\n}\n","\n/**\n * custom headers class to manage HTTP headers with case-insensitive keys.\n * simplifies header manipulation by providing utility methods.\n */\nexport class Headers {\n // internal map to store headers\n private map: Map<string, string>;\n\n /**\n * initializes the Headers instance with provided headers or another Headers object.\n * ensures all header keys are stored in lowercase for consistent access.\n * @param init initial headers as a record or another Headers instance\n */\n constructor(init: Record<string, string> | Headers = {}) {\n this.map = new Map();\n\n if (init instanceof Headers) {\n init.forEach((value, key) => this.map.set(key, value));\n } else {\n Object.entries(init).forEach(([key, value]) =>\n this.map.set(key.toLowerCase(), value)\n );\n }\n }\n\n /**\n * appends or sets the value for a specific header key.\n * stores the key in lowercase to maintain case-insensitivity.\n * @param key header name\n * @param value header value\n */\n append(key: string, value: string): void {\n this.map.set(key.toLowerCase(), value);\n }\n\n /**\n * retrieves the value of a specific header key.\n * @param key header name\n * @returns the header value or null if not found\n */\n get(key: string): string | null {\n return this.map.get(key.toLowerCase()) || null;\n }\n\n /**\n * checks if a specific header key exists.\n * @param key header name\n * @returns boolean indicating existence of the header\n */\n has(key: string): boolean {\n return this.map.has(key.toLowerCase());\n }\n\n /**\n * iterates over all headers and executes the provided callback for each.\n * @param callback function to execute for each header\n */\n forEach(callback: (value: string, key: string) => void): void {\n this.map.forEach((value, key) => callback(value, key));\n }\n}\n\n/**\n * ProgressSignal extends EventTarget to dispatch and track progress events.\n * useful for monitoring the progress of network requests.\n */\nexport class ProgressSignal extends EventTarget {\n // internal progress state\n private _progress: { loaded: number; total: number };\n\n /**\n * initializes the ProgressSignal with zero progress.\n */\n constructor() {\n super();\n this._progress = { loaded: 0, total: 0 };\n }\n\n /**\n * retrieves the current progress.\n * @returns an object containing loaded and total bytes\n */\n get progress(): { loaded: number; total: number } {\n return this._progress;\n }\n\n /**\n * dispatches a progress event with updated loaded and total bytes.\n * updates the internal progress state.\n * @param event the ProgressEvent containing progress information\n */\n dispatchProgress(event: ProgressEvent): void {\n this._progress = { loaded: event.loaded, total: event.total };\n this.dispatchEvent(\n new ProgressEvent('progress', { loaded: event.loaded, total: event.total })\n );\n }\n}\n\n/**\n * ProgressController manages a ProgressSignal for tracking request progress.\n * provides a centralized way to handle progress events.\n */\nexport class ProgressController {\n signal: ProgressSignal;\n\n /**\n * initializes the ProgressController with a new ProgressSignal.\n */\n constructor() {\n this.signal = new ProgressSignal();\n }\n}\n\n/**\n * serializes the request body into a format suitable for XMLHttpRequest.\n * handles various body types including JSON objects and FormData.\n * @param body the body to serialize\n * @returns the serialized body or null if no body is provided\n */\nexport function serializeBody(\n body: BodyInit | Record<string, unknown> | null | undefined\n): XMLHttpRequestBodyInit | Document | null {\n if (!body) return null;\n\n if (\n body instanceof FormData ||\n body instanceof Blob ||\n body instanceof URLSearchParams ||\n body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n typeof body === \"string\"\n ) {\n return body;\n }\n\n if (typeof body === \"object\") {\n return JSON.stringify(body); // convert object to JSON string for transmission\n }\n\n return String(body); // ensure fallback to string for unsupported types\n}\n\n/**\n * parses a raw header string from an XMLHttpRequest into a Headers instance.\n * @param headerStr the raw header string\n * @returns a Headers instance containing parsed headers\n */\nexport function parseHeaders(headerStr: string): Headers {\n const headers = new Headers();\n headerStr.split('\\r\\n').forEach((line) => {\n const [key, ...rest] = line.split(': ');\n if (key) headers.append(key, rest.join(': '));\n });\n return headers;\n}\n\n/**\n * extends the standard RequestInit to include an optional ProgressSignal.\n * allows tracking the progress of the network request.\n */\nexport interface FetchWithControllersInit extends RequestInit {\n progressSignal?: ProgressSignal;\n}\n\n/**\n * represents the response from a fetch operation, mirroring the native Response interface.\n * includes methods to access the response body in various formats.\n */\nexport interface FetchResponse {\n ok: boolean;\n status: number;\n statusText: string;\n headers: Headers;\n url: string;\n text: () => Promise<string>;\n json: () => Promise<unknown>;\n blob: () => Promise<Blob>;\n}\n\n/**\n * performs a network fetch request with support for progress tracking using XMLHttpRequest.\n * falls back to the native fetch implementation if no ProgressSignal is provided.\n * @param input the resource to fetch, typically a URL string\n * @param init optional configuration for the request, including method, headers, body, credentials, and progressSignal\n * @returns a promise resolving to a FetchResponse containing the response details\n */\nexport async function fetch(\n input: string | URL,\n init: FetchWithControllersInit = {}\n): Promise<FetchResponse> {\n // use native fetch if ProgressSignal is not provided for simplicity and efficiency\n if (!init.progressSignal && typeof globalThis.fetch === \"function\") {\n return fetch(input, init) as unknown as FetchResponse;\n }\n\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n const method = (init.method || 'GET').toUpperCase();\n const body = serializeBody(init.body || null);\n const progressSignal = init.progressSignal;\n const abortSignal = init.signal;\n\n // handle abort events to allow request cancellation\n if (abortSignal) {\n const abortHandler = () => {\n xhr.abort();\n reject(new DOMException('The operation was aborted.', 'AbortError'));\n };\n abortSignal.addEventListener('abort', abortHandler, { once: true });\n }\n\n xhr.open(method, input.toString(), true);\n\n // set credentials based on the init configuration\n if (init.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (init.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n // set request headers using the custom Headers class or raw headers\n if (init.headers instanceof Headers) {\n init.headers.forEach((value, key) => xhr.setRequestHeader(key, value));\n } else if (init.headers) {\n Object.entries(init.headers).forEach(([key, value]) => {\n xhr.setRequestHeader(key, value as string);\n });\n }\n\n // attach progress listeners if a ProgressSignal is provided\n if (progressSignal) {\n if (xhr.upload) {\n xhr.upload.onprogress = (event) => progressSignal.dispatchProgress(event);\n }\n xhr.onprogress = (event) => progressSignal.dispatchProgress(event);\n }\n\n // handle the response once the request is completed\n xhr.onload = () => {\n const response: FetchResponse = {\n ok: xhr.status >= 200 && xhr.status < 300,\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders()),\n url: xhr.responseURL,\n text: () => Promise.resolve(xhr.responseText),\n json: () => Promise.resolve(JSON.parse(xhr.responseText)),\n blob: () => Promise.resolve(new Blob([xhr.response])),\n };\n resolve(response);\n };\n\n // handle network errors\n xhr.onerror = () => reject(new TypeError('Network request failed'));\n xhr.ontimeout = () => reject(new TypeError('Network request timed out'));\n xhr.onabort = () => reject(new DOMException('The operation was aborted.', 'AbortError'));\n\n // send the serialized request body\n xhr.send(body);\n });\n}\n\n\n/*\n // example usage of fetch with upload tracking\n async function exampleFetchWithUploadTracking() {\n const url = 'https://example.com/upload';\n const data = new FormData();\n data.append('file', new Blob(['file content'], { type: 'text/plain' }), 'example.txt');\n\n const { signal: progressSignal } = new ProgressController();\n\n progressSignal.addEventListener('progress', (event: ProgressEvent) => {\n console.log(`Uploaded ${event.loaded} of ${event.total} bytes`);\n });\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n body: data,\n headers: {\n 'Accept': 'application/json'\n },\n credentials: 'include',\n progressSignal\n });\n\n if (response.ok) {\n const jsonResponse = await response.json();\n console.log('Upload successful:', jsonResponse);\n } else {\n console.error('Upload failed:', response.statusText);\n }\n } catch (error) {\n console.error('Error during fetch:', error);\n }\n }\n \n */"],"names":["getPersistenceProvider","getPersistenceProviderServer","getPersistenceProviderClient"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/common/devmode.ts","../src/common/dom.ts","../src/dequery/dequery.ts","../src/webstorage/isomporphic/memory.ts","../src/webstorage/client/index.ts","../src/webstorage/server/index.ts","../src/webstorage/runtime.ts","../src/webstorage/index.ts","../src/i18n/i18n.tsx","../src/i18n/trans.tsx","../src/net/fetch.ts"],"sourcesContent":["export const inDevMode = true;","import type { Globals, RenderInput, VNode, VNodeAttributes, VNodeChild } from \"defuss/jsx-runtime\";\nimport { getRenderer, handleLifecycleEventsForOnMount } from \"../render/isomorph.js\";\n\n/**\n * Compares two DOM nodes for equality with performance optimizations.\n * 1. Checks for reference equality.\n * 2. Compares node types.\n * 3. For Element nodes, compares tag names and attributes.\n * 4. For Text nodes, compares text content.\n */\nexport const areDomNodesEqual = (oldNode: Node, newNode: Node): boolean => {\n // return true if both references are identical\n if (oldNode === newNode) return true;\n\n // compare node types\n if (oldNode.nodeType !== newNode.nodeType) return false;\n\n // handle Element nodes\n if (oldNode.nodeType === Node.ELEMENT_NODE) {\n const oldElement = oldNode as Element;\n const newElement = newNode as Element;\n\n // compare tag names\n if (oldElement.tagName !== newElement.tagName) return false;\n\n const oldAttrs = oldElement.attributes;\n const newAttrs = newElement.attributes;\n\n // compare number of attributes\n if (oldAttrs.length !== newAttrs.length) return false;\n\n // iterate and compare each attribute's name and value\n for (let i = 0; i < oldAttrs.length; i++) {\n const oldAttr = oldAttrs[i];\n const newAttrValue = newElement.getAttribute(oldAttr.name);\n if (oldAttr.value !== newAttrValue) return false;\n }\n }\n\n // handle Text nodes\n if (oldNode.nodeType === Node.TEXT_NODE) {\n if (oldNode.textContent !== newNode.textContent) return false;\n }\n return true;\n};\n\n/**\n * Recursively updates oldNode with the structure of newNode:\n * - If they differ (tag/attrs/text), oldNode is replaced\n * - If same, we recurse on children\n */\nconst updateNode = (oldNode: Node, newNode: Node) => {\n // 1) If different, replace old with new\n if (!areDomNodesEqual(oldNode, newNode)) {\n oldNode.parentNode?.replaceChild(newNode.cloneNode(true), oldNode);\n return;\n }\n\n // 2) If they match and are elements, recurse on their children\n if (oldNode.nodeType === Node.ELEMENT_NODE) {\n const oldChildren = oldNode.childNodes;\n const newChildren = newNode.childNodes;\n const maxLength = Math.max(oldChildren.length, newChildren.length);\n\n for (let i = 0; i < maxLength; i++) {\n const oldChild = oldChildren[i];\n const newChild = newChildren[i];\n\n if (oldChild && newChild) {\n // both exist; recurse\n updateNode(oldChild, newChild);\n } else if (newChild && !oldChild) {\n // new child doesn't exist in old => append\n oldNode.appendChild(newChild.cloneNode(true));\n } else if (oldChild && !newChild) {\n // old child doesn't exist in new => remove\n oldNode.removeChild(oldChild);\n }\n }\n }\n};\n\n/**\n * Partially updates a DOM subtree by comparing `targetElement` to\n * newly parsed HTML. No `.innerHTML` is used here; we parse via DOMParser.\n */\nexport const updateDom = (targetElement: Element, newHTML: string): void => {\n // 1) Parse the new HTML string into a DocumentFragment-like structure\n const parser = new DOMParser();\n // 'text/html' => parse as a full HTML doc. We take the <body>'s children as our new nodes\n const doc = parser.parseFromString(newHTML, 'text/html');\n\n // 2) Extract the root child elements from the newly parsed doc\n // Typically, doc.body is where your HTML snippet content is placed.\n const newRoots = Array.from(doc.body.children);\n\n if (newRoots.length === 0) {\n console.warn('No root elements found in the new HTML.');\n return;\n }\n\n // 3) For each new root, see if there's an old corresponding child to update\n for (let i = 0; i < newRoots.length; i++) {\n const newRoot = newRoots[i];\n const oldChild = targetElement.children[i];\n\n if (oldChild) {\n // partial update\n updateNode(oldChild, newRoot);\n } else {\n // target has fewer children => just append\n targetElement.appendChild(newRoot.cloneNode(true));\n }\n }\n\n // 4) Remove any old leftover children that have no matching new root\n while (targetElement.children.length > newRoots.length) {\n targetElement.removeChild(targetElement.lastChild!);\n }\n};\n\n/********************************************************\n * 1) Define a \"valid\" child type & utility\n ********************************************************/\nexport type ValidChild =\n | string\n | number\n | boolean\n | null\n | undefined\n | VNode<VNodeAttributes>;\n\nfunction toValidChild(child: VNodeChild): ValidChild | undefined {\n if (child == null) return child; // null or undefined\n if (\n typeof child === \"string\" ||\n typeof child === \"number\" ||\n typeof child === \"boolean\"\n ) {\n return child;\n }\n if (typeof child === \"object\" && \"type\" in child) {\n return child as VNode<VNodeAttributes>;\n }\n // e.g. function or {} -> filter out\n return undefined;\n}\n\n/********************************************************\n * 2) Check if a DOM node and a ValidChild match by type\n ********************************************************/\nfunction areNodeAndChildMatching(domNode: Node, child: ValidChild): boolean {\n if (\n typeof child === \"string\" ||\n typeof child === \"number\" ||\n typeof child === \"boolean\"\n ) {\n // must be a text node\n return domNode.nodeType === Node.TEXT_NODE;\n } else if (child && typeof child === \"object\") {\n // must be same tag\n if (domNode.nodeType !== Node.ELEMENT_NODE) return false;\n const oldTag = (domNode as Element).tagName.toLowerCase();\n const newTag = child.type.toLowerCase();\n return oldTag === newTag;\n }\n // if child is null/undefined => definitely no match\n return false;\n}\n\n/********************************************************\n * 3) Patch a single DOM node in place (attributes, text, children)\n ********************************************************/\nfunction patchDomInPlace(domNode: Node, child: ValidChild, globals: Globals) {\n const renderer = getRenderer(globals.window.document);\n\n // textlike\n if (typeof child === \"string\" || typeof child === \"number\" || typeof child === \"boolean\") {\n const newText = String(child);\n if (domNode.nodeValue !== newText) {\n domNode.nodeValue = newText;\n }\n return;\n }\n\n // element\n if (domNode.nodeType === Node.ELEMENT_NODE && child && typeof child === \"object\") {\n // 1) update attributes\n // remove old attributes not present\n const el = domNode as Element;\n const existingAttrs = Array.from(el.attributes);\n for (const attr of existingAttrs) {\n const { name } = attr;\n if (!Object.prototype.hasOwnProperty.call(child.attributes, name) && name !== \"style\") {\n el.removeAttribute(name);\n }\n }\n // set new attributes\n renderer.setAttributes(child, el);\n\n // 2) dangerouslySetInnerHTML => skip child updates\n if (child.attributes?.dangerouslySetInnerHTML) {\n el.innerHTML = child.attributes.dangerouslySetInnerHTML.__html;\n return;\n }\n\n // 3) recursively do partial updates for children\n if (child.children) {\n updateDomWithVdom(el, child.children as any, globals);\n } else {\n // remove old children\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n }\n }\n}\n\n/********************************************************\n * 4) Create brand new DOM node from a ValidChild\n ********************************************************/\nfunction createDomFromChild(child: ValidChild, globals: Globals): Node | Node[] | undefined {\n const renderer = getRenderer(globals.window.document);\n\n if (child == null) return undefined;\n if (typeof child === \"string\" || typeof child === \"number\" || typeof child === \"boolean\") {\n return globals.window.document.createTextNode(String(child));\n }\n\n // else it's a VNode, create without parent as we don't know where it goes yet\n // therefore, we need to handle the onMount lifecycle event later too\n let renderResult = renderer.createElementOrElements(child) as Node | Node[] | undefined;\n\n if (renderResult && !Array.isArray(renderResult)) {\n renderResult = [renderResult];\n }\n return renderResult;\n}\n\n/********************************************************\n * 5) Main partial-update function (index-by-index approach)\n ********************************************************/\nexport function updateDomWithVdom(\n parentElement: Element,\n newVDOM: RenderInput,\n globals: Globals\n) {\n\n console.log('updateDomWithVdom', newVDOM, parentElement)\n \n // A) Convert newVDOM => array of \"valid\" children\n let newChildren: ValidChild[] = [];\n if (Array.isArray(newVDOM)) {\n newChildren = newVDOM.map(toValidChild).filter((c): c is ValidChild => c !== undefined);\n } else if (\n typeof newVDOM === \"string\" ||\n typeof newVDOM === \"number\" ||\n typeof newVDOM === \"boolean\"\n ) {\n newChildren = [newVDOM];\n } else if (newVDOM) {\n const child = toValidChild(newVDOM);\n if (child !== undefined) newChildren = [child];\n }\n\n console.log(\"new children to render!\", newChildren)\n\n // B) Generate brand-new DOM for each new child in an array\n // We'll compare them 1:1 with the old nodes.\n const newDomArray: (Node | Node[] | undefined)[] = newChildren.map((vdomChild) =>\n createDomFromChild(vdomChild, globals)\n );\n\n // C) Snapshot old children\n const oldNodes = Array.from(parentElement.childNodes);\n\n // D) Walk up to max length\n const maxLen = Math.max(oldNodes.length, newDomArray.length);\n for (let i = 0; i < maxLen; i++) {\n const oldNode = oldNodes[i];\n const newDom = newDomArray[i]; // might be a single Node or an array of Nodes\n const newChild = newChildren[i];\n\n if (oldNode && newDom !== undefined) {\n // Both old & new exist\n // 1) If newDom is an array (multiple root nodes?), we do a bigger replace\n // or partial approach. Typically we might place the 1st in oldNode's position\n // and then insert the rest right after it, then remove oldNode if needed.\n if (Array.isArray(newDom)) {\n if (newDom.length === 0) {\n // no new => remove old\n parentElement.removeChild(oldNode);\n } else {\n // We might keep the first node and replace oldNode\n const first = newDom[0];\n parentElement.replaceChild(first, oldNode);\n \n if (typeof first !== \"undefined\") {\n handleLifecycleEventsForOnMount(first as HTMLElement);\n }\n\n // Insert the rest\n for (let k = 1; k < newDom.length; k++) {\n if (newDom[k]) {\n parentElement.insertBefore(newDom[k]!, first.nextSibling);\n\n if (typeof newDom[k] !== \"undefined\") { \n console.log(\"inserBefore!\")\n handleLifecycleEventsForOnMount(newDom[k] as HTMLElement);\n }\n }\n }\n }\n } else if (newDom) {\n // single new node\n // 2) If old & new match => partial patch. Else => replace\n if (newChild && areNodeAndChildMatching(oldNode, newChild)) {\n // partial patch\n patchDomInPlace(oldNode, newChild, globals);\n } else {\n // replace\n parentElement.replaceChild(newDom, oldNode);\n\n handleLifecycleEventsForOnMount(newDom as HTMLElement);\n }\n }\n } else if (!oldNode && newDom !== undefined) {\n // we have more new nodes => append\n if (Array.isArray(newDom)) {\n newDom.forEach((newNode) => {\n const wasAdded = newNode && parentElement.appendChild(newNode);\n\n if (wasAdded) {\n handleLifecycleEventsForOnMount(newNode as HTMLElement)\n }\n return wasAdded;\n });\n } else if (newDom) {\n parentElement.appendChild(newDom);\n\n handleLifecycleEventsForOnMount(newDom as HTMLElement);\n }\n } else if (oldNode && newDom === undefined) {\n // we have leftover old => remove\n parentElement.removeChild(oldNode);\n }\n }\n}\n\n/**\n * Directly blow away all children in `parentElement` and create new DOM \n * from `newVDOM`. This never skips or leaves behind stale nodes, \n * at the cost of losing partial update performance.\n */\nexport function replaceDomWithVdom(parentElement: Element, newVDOM: RenderInput, globals: Globals) {\n // 1) Clear all existing DOM children\n while (parentElement.firstChild) {\n parentElement.removeChild(parentElement.firstChild);\n }\n\n // 2) Re-render from scratch\n const renderer = getRenderer(globals.window.document);\n\n // Possibly convert `newVDOM` to array if needed, \n // but `renderer.createElementOrElements` handles it either way:\n const newDom = renderer.createElementOrElements(newVDOM as VNode | undefined | Array<VNode | undefined | string>);\n\n // 3) Append the newly created node(s)\n if (Array.isArray(newDom)) {\n for (const node of newDom) {\n if (node) parentElement.appendChild(node);\n }\n } else if (newDom) {\n parentElement.appendChild(newDom);\n }\n}","import { updateDom, updateDomWithVdom } from \"../common/dom.js\";\nimport { isRef, renderIsomorphic, type CSSProperties, type Globals, type Ref, type RenderInput } from \"../render/index.js\";\n\nexport type NodeType = Node | Text | Element | Document | DocumentFragment;\n\nexport type FormFieldValue = string | Date | File | boolean | number;\n\nexport interface FormKeyValues {\n // key or path (object path x.y.z) to form field value\n [keyOrPath: string]: FormFieldValue;\n}\n\nconst elementGuard = <T = HTMLElement>(el: NodeType): T => {\n if (el instanceof HTMLElement) return el as T;\n\n let message = \"Expected an HTMLElement, but found: \";\n if (el?.nodeName) {\n message += el.nodeName\n } else {\n message += el\n }\n throw new Error(message);\n};\n\nexport interface DequeryOptions {\n maxWaitMs: number;\n}\n\nexport const defaultConfig: DequeryOptions = {\n maxWaitMs: 1000,\n};\n\nexport type ElementCreationOptions = JSX.HTMLAttributesLowerCase & JSX.HTMLAttributesLowerCase & { html?: string, text?: string };\n\nexport const dequery = (\n selectorRefOrEl: Node | Element | Text | Ref<Node | Element | Text, any> | string,\n options: DequeryOptions | ElementCreationOptions = defaultConfig\n): Dequery => {\n\n if (!selectorRefOrEl) {\n console.error(\"dequery: selector, ref, or element is required. Got nothing.\");\n throw new Error(\"dequery: selector, ref, or element is required. Got nothing.\");\n }\n\n const api = new Dequery({ ...defaultConfig, ...options });\n\n if (typeof selectorRefOrEl === \"string\") {\n const elementCreationRegex = /^<(\\w+)>$/; // regex to match element creation syntax like <div>\n const matchesCreateElementSyntax = selectorRefOrEl.match(elementCreationRegex);\n\n if (matchesCreateElementSyntax) {\n // create a new element if the string matches the element creation syntax\n const newElement = document.createElement(matchesCreateElementSyntax[1]);\n const { text, html, ...attributes } = options as ElementCreationOptions;\n\n // set attributes\n Object.entries(attributes).forEach(([key, value]) => {\n newElement.setAttribute(key, String(value));\n });\n\n // set innerHTML or textContent if provided\n if (html) {\n newElement.innerHTML = html;\n } else if (text) {\n newElement.textContent = text;\n }\n\n api.elements = [newElement];\n } else {\n // otherwise, treat it as a query selector\n api.query(selectorRefOrEl);\n }\n } else if (isRef(selectorRefOrEl)) {\n api.elements = [selectorRefOrEl.current];\n } else if ((selectorRefOrEl as Node).nodeType === Node.ELEMENT_NODE) {\n api.elements = [selectorRefOrEl as Node];\n }\n // throws if there is no element found\n elementGuard(api.el)\n return api;\n};\n\nexport class Dequery {\n\n constructor(\n public options: DequeryOptions = defaultConfig,\n public elements: Array<NodeType> = []\n ) {\n this.options = { ...defaultConfig, ...options }; // merge default options with user options\n this.elements = []; // elements found in the most recent operation\n }\n\n get el() {\n return this.elements[0];\n }\n\n // --- Traversal ---\n\n tap(cb: (el: NodeType | Array<NodeType>) => void): Dequery {\n cb(this.elements);\n return this;\n }\n\n query(selector: string): Dequery {\n console.log('querying', selector);\n this.elements = Array.from(document.querySelectorAll(selector));\n return this;\n }\n\n first(): Dequery {\n this.elements = [this.el];\n return this;\n }\n\n last(): Dequery {\n const els = this.elements;\n this.elements = [els[els.length - 1]];\n return this;\n }\n\n next(): Dequery {\n this.elements = this.elements\n .map((el) => elementGuard(el).nextElementSibling)\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n eq(idx: number): Dequery {\n this.elements = [this.elements[idx]];\n return this;\n }\n\n prev(): Dequery {\n this.elements = this.elements\n .map((el) => elementGuard(el).previousElementSibling)\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n each(cb: (el: NodeType, idx: number) => void): Dequery {\n this.elements.forEach(cb);\n return this;\n }\n\n find(selector: string): Dequery {\n this.elements = this.elements.flatMap((el) =>\n Array.from(elementGuard(el).querySelectorAll(selector))\n );\n return this;\n }\n\n parent(): Dequery {\n this.elements = this.elements\n .map((el) => el.parentElement)\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n children(): Dequery {\n this.elements = this.elements.flatMap((el) => Array.from(elementGuard(el).children));\n return this;\n }\n\n closest(selector: string): Dequery {\n this.elements = this.elements\n .map((el) => elementGuard(el).closest(selector))\n .filter(Boolean) as Array<Element>;\n return this;\n }\n\n filter(selector: string): Dequery {\n this.elements = this.elements.filter((el) => elementGuard(el).matches(selector));\n return this;\n }\n\n // --- Attributes ---\n\n attr(name: string): string | null;\n attr(name: string, value: string): Dequery;\n attr(name: string, value?: string): Dequery | string | null {\n if (value !== undefined) {\n this.elements.forEach((el) => elementGuard(el).setAttribute(name, value));\n return this;\n }\n // retrieve the attribute value from the first element\n return elementGuard(this.el)?.getAttribute(name) ?? null;\n }\n\n // --- Mutations ---\n\n empty(): Dequery {\n this.elements.forEach((el) => {\n elementGuard(el).innerHTML = \"\";\n });\n return this;\n }\n\n html(newInnerHtml?: string): Dequery {\n if (newInnerHtml) {\n this.elements.forEach((el) => {\n // partial update HTML sub-tree with new HTML (using DOMParser)\n updateDom(elementGuard(el), newInnerHtml);\n });\n }\n return this;\n }\n\n jsx(newJsxPartialDom: RenderInput): Dequery {\n this.elements.forEach((el) => {\n // partially update the DOM with new JSX (using renderIsomorphic) \n updateDomWithVdom(elementGuard(el), newJsxPartialDom, globalThis as Globals);\n });\n return this;\n }\n\n text(text?: string): Dequery {\n if (text) {\n this.elements.forEach((el) => {\n elementGuard(el).textContent = text;\n });\n }\n return this;\n }\n\n remove(): Dequery {\n this.elements.forEach((el) => elementGuard(el).remove());\n return this;\n }\n\n replaceWithJsx(vdomOrNode: RenderInput | NodeType): Dequery {\n this.elements.forEach((el) => {\n const newEl =\n vdomOrNode instanceof Node\n ? vdomOrNode\n : (renderIsomorphic(\n vdomOrNode,\n elementGuard(el),\n globalThis as Globals\n ) as Node);\n el.parentNode?.replaceChild(newEl.cloneNode(true), el);\n });\n return this;\n }\n\n append(content: string | NodeType | Dequery): Dequery {\n if (typeof content === \"undefined\" || content === null) {\n return this;\n }\n\n this.elements.forEach((el) => {\n if (typeof content === \"string\") {\n elementGuard(el).innerHTML += content;\n } else if (content instanceof Dequery) {\n content.elements.forEach((childEl) => {\n el.appendChild(elementGuard(childEl));\n });\n } else {\n el.appendChild(content);\n }\n });\n return this;\n }\n\n // --- Events ---\n\n on(eventName: string, handler: EventListener): Dequery {\n this.elements.forEach((el) =>\n el.addEventListener(eventName, handler)\n );\n return this;\n }\n\n off(eventName: string, handler: EventListener): Dequery {\n this.elements.forEach((el) =>\n el.removeEventListener(eventName, handler)\n );\n return this;\n }\n\n // --- CSS ---\n\n css(cssProps: string): string | undefined;\n css(cssProps: CSSProperties): Dequery;\n css(cssProps: string, value: string): Dequery;\n css(cssProps: CSSProperties | string, value?: string): Dequery | string | undefined {\n if (!value && typeof cssProps === \"string\") {\n // get a single CSS property value\n return elementGuard(this.el)?.style.getPropertyValue(cssProps);\n } else if (!value && typeof cssProps === \"object\") {\n // set multiple CSS properties\n this.elements.forEach((el) => {\n for (const key in cssProps) {\n elementGuard(el).style.setProperty(\n key,\n cssProps[key as keyof CSSProperties] as string\n );\n }\n });\n return this;\n } else if (typeof value === \"string\" && typeof cssProps === \"string\") {\n // set a single CSS property value\n this.elements.forEach((el) => {\n elementGuard(el).style.setProperty(cssProps, value);\n });\n return this;\n }\n return this;\n }\n\n addClass(className: Array<string> | string): Dequery {\n const classes = Array.isArray(className) ? className : [className];\n this.elements.forEach((el) => elementGuard(el).classList.add(...classes));\n return this;\n }\n\n removeClass(className: Array<string> | string): Dequery {\n const classes = Array.isArray(className) ? className : [className];\n this.elements.forEach((el) => elementGuard(el).classList.remove(...classes));\n return this;\n }\n\n hasClass(className: string): boolean {\n return this.elements.every((el) => elementGuard(el).classList.contains(className));\n }\n\n toggleClass(className: string): Dequery {\n this.elements.forEach((el) => elementGuard(el).classList.toggle(className));\n return this;\n }\n\n animateClass(className: string, duration: number): Dequery {\n this.elements.forEach((el) => {\n elementGuard(el).classList.add(className);\n setTimeout(() => elementGuard(el).classList.remove(className), duration);\n });\n return this;\n }\n\n // --- Interaction Simulation ---\n\n click(): Dequery {\n this.elements.forEach((el) => elementGuard(el).click());\n return this;\n }\n\n focus(): Dequery {\n this.elements.forEach((el) => elementGuard(el).focus());\n return this;\n }\n\n blur(): Dequery {\n this.elements.forEach((el) => elementGuard(el).blur());\n return this;\n }\n\n // --- Data extraction ---\n val(value: string | boolean): Dequery;\n val(): string | undefined;\n val(value?: string | boolean): Dequery | string | undefined {\n if (typeof value !== 'undefined') {\n this.elements.forEach((el) => {\n if (el instanceof HTMLInputElement) {\n el.value = String(value);\n }\n });\n return this;\n } else {\n return elementGuard<HTMLInputElement>(this.el)?.value;\n }\n }\n\n map<T = any>(cb: (el: NodeType, idx: number) => any): Array<T> {\n return this.elements.map(cb) as Array<T>;\n }\n\n prop<K extends keyof HTMLElement>(name: K, value: HTMLElement[K]): Dequery;\n prop<K extends keyof HTMLElement>(name: K): HTMLElement[K];\n prop<K extends keyof HTMLElement>(name: K, value?: HTMLElement[K]): Dequery | HTMLElement[K] {\n if (typeof value !== \"undefined\") {\n this.elements.forEach((el) => {\n elementGuard(el)[name] = value;\n });\n return this;\n }\n return elementGuard(this.el)[name];\n }\n\n data(name: string): string | undefined;\n data(name: string, value: string): Dequery;\n data(name: string, value?: string): Dequery | string | undefined {\n if (typeof value !== \"undefined\") {\n this.elements.forEach((el) => {\n elementGuard(el).dataset[name] = value;\n });\n return this;\n }\n return elementGuard(this.el)?.dataset[name];\n }\n\n // --- Form management ---\n\n form(): FormKeyValues;\n form(formData: FormKeyValues): Dequery;\n form(formData?: FormKeyValues): Dequery | FormKeyValues {\n if (formData) {\n Object.entries(formData).forEach(([key, value]) => {\n this.elements.forEach((el) => {\n if (el instanceof HTMLInputElement) {\n el.value = value as string;\n }\n });\n });\n return this;\n }\n\n const formFields: Record<string, string> = {};\n this.elements.forEach((el) => {\n if (el instanceof HTMLInputElement) {\n formFields[el.name] = el.value;\n }\n });\n return formFields;\n }\n}\n\n// for query-like syntax\nexport const $ = dequery;","import type { PersistenceProviderImpl } from '../provider.js'\nimport type { GenericLocalStorage } from './generic.js'\nimport type { MiddlewareFn } from '../provider.js'\n\nexport type MemoryProviderOptions = {}\n\nexport const newInMemoryGenericStorageBackend = <T = string>(): GenericLocalStorage<T> => {\n const cache = new Map<string, T>()\n return {\n clear: (): void => {\n cache.clear()\n },\n\n getItem: (key: string): T | null => {\n return cache.get(String(key)) ?? null\n },\n\n removeItem: (key: string): void => {\n cache.delete(String(key))\n },\n\n setItem: (key: string, value: T): void => {\n cache.set(String(key), value)\n },\n }\n}\n\n/** global in-memory storage backend */\nexport const memory = newInMemoryGenericStorageBackend()\n\n/** a simple, serverless and high-performance key/value storage engine */\nexport class WebStorageProvider<T> implements PersistenceProviderImpl<T> {\n protected storage: GenericLocalStorage<string>;\n\n constructor(storage?: GenericLocalStorage<string>) {\n this.storage = storage || memory;\n }\n\n get(key: string, defaultValue: T, middlewareFn?: MiddlewareFn<T>): T {\n const rawValue = this.storage.getItem(key);\n\n if (rawValue === null) return defaultValue;\n\n let value: T = JSON.parse(rawValue);\n\n if (middlewareFn) {\n value = middlewareFn(key, value);\n }\n return value;\n }\n\n set(key: string, value: T, middlewareFn?: MiddlewareFn<T>): void {\n if (middlewareFn) {\n value = middlewareFn(key, value);\n }\n this.storage.setItem(key, JSON.stringify(value));\n }\n\n remove(key: string): void {\n this.storage.removeItem(key);\n }\n\n removeAll(): void {\n this.storage.clear();\n }\n\n get backendApi(): GenericLocalStorage<string> {\n return this.storage;\n }\n}\n\nexport interface MemoryStorage<T> extends PersistenceProviderImpl<T> {\n backendApi: Omit<Omit<Storage, 'key'>, 'length'>\n}\n\nexport interface WebStorage<T> extends PersistenceProviderImpl<T> {\n backendApi: Storage\n}\n","import { WebStorageProvider } from '../isomporphic/memory.js'\nimport type { PersistenceProvider, PersistenceProviderImpl, PersistenceProviderOptions } from '../provider.js'\n\n/** returns the default persistence provider for each runtime environment */\nexport const getPersistenceProvider = <T>(\n provider: PersistenceProvider,\n _options?: PersistenceProviderOptions,\n): PersistenceProviderImpl<T> => {\n switch (provider) {\n case 'session':\n return new WebStorageProvider<T>(window.sessionStorage)\n case 'local':\n return new WebStorageProvider<T>(window.localStorage)\n }\n return new WebStorageProvider<T>() // memory\n}\n","import { WebStorageProvider } from '../isomporphic/memory.js'\nimport type { PersistenceProvider, PersistenceProviderImpl, PersistenceProviderOptions } from '../provider.js'\n\n/** returns the default persistence provider for each runtime environment */\nexport const getPersistenceProvider = <T>(\n _provider: PersistenceProvider,\n _options?: PersistenceProviderOptions,\n): PersistenceProviderImpl<T> => {\n return new WebStorageProvider<T>()\n}\n","//export const isBrowser = (): boolean => typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\nexport const isServer = (): boolean => typeof window === \"undefined\" || typeof window.document === \"undefined\";\n\n//export const isWebWorker = (): boolean => typeof self === \"object\" && self.constructor?.name === \"DedicatedWorkerGlobalScope\";","import type { PersistenceProvider, PersistenceProviderImpl, PersistenceProviderOptions } from './provider.js'\nimport { getPersistenceProvider as getPersistenceProviderClient } from './client/index.js'\nimport { getPersistenceProvider as getPersistenceProviderServer } from './server/index.js'\nimport { isServer } from './runtime.js'\n\n/** returns the persistence provider (isomorphic) */\nexport const webstorage = <T>(\n provider: PersistenceProvider = 'local',\n options?: PersistenceProviderOptions,\n): PersistenceProviderImpl<T> => {\n if (isServer()) {\n return getPersistenceProviderServer(provider, options)\n } else {\n return getPersistenceProviderClient(provider, options)\n }\n}\n\nexport * from './provider.js'\n","import type { VNode } from '@/render/types.js';\nimport { createStore, type Store } from '@/store/index.js';\n\nexport type TranslationObject = { [key: string]: string|VNode|TranslationObject };\nexport type Translations = { [language: string]: TranslationObject };\nexport type OnLanguageChangeListener = (newLanguage: string) => void;\nexport type Replacements = Record<string, string>;\n\nexport interface I18nStore {\n language: string;\n changeLanguage: (language: string) => void;\n t: (path: string, options?: Record<string, string>) => string;\n load: (language: string, translations: TranslationObject) => void;\n subscribe: (onLanguageChange: OnLanguageChangeListener) => void;\n}\n\n// example of placeholders: {name}, {age}, {city}\nconst VARIABLE_REGEX = /{([^}]*)}/g;\n\nconst interpolate = (template: string, replacements: Replacements): string =>\n template.replace(VARIABLE_REGEX, (_, key) => replacements[key] || `{${key}}`);\n\nexport const createI18n = (): I18nStore => {\n const translationsStore: Store<Translations> = createStore({});\n let language = 'en';\n\n const onLanguageChangeCallbacks: Array<OnLanguageChangeListener> = [];\n\n return {\n language,\n\n changeLanguage(newLanguage: string) {\n language = newLanguage;\n onLanguageChangeCallbacks.forEach(callback => callback(newLanguage));\n },\n\n // example usage of the t function with placeholders:\n // const translatedString = t('greeting', { name: 'John', age: '30' }, 'common');\n // this would replace placeholders {name} and {age} in the translation string with 'John' and '30' respectively.\n t(path: string, replacements: Record<string, string> = {}) {\n\n const template = translationsStore.get<string>(`${language}.${path}`) || path\n\n // VDOM (VNode)\n if (typeof template !== 'string') {\n return template;\n }\n // plaintext string or HTML\n return interpolate(template, replacements);\n },\n\n load(newLanguage: string, namespaceTranslations: TranslationObject) {\n translationsStore.set(newLanguage, {\n ...translationsStore.get<TranslationObject>(newLanguage),\n ...namespaceTranslations,\n });\n },\n\n subscribe(onLanguageChange: OnLanguageChangeListener) {\n onLanguageChangeCallbacks.push(onLanguageChange);\n return () => {\n const index = onLanguageChangeCallbacks.indexOf(onLanguageChange);\n if (index >= 0) onLanguageChangeCallbacks.splice(index, 1);\n };\n }\n };\n};\n\n// export singleton\nexport const i18n = createI18n();\n","import type { Props, VNodeChild } from \"@/render/types.js\";\nimport { type Replacements, i18n } from \"./i18n.js\";\n\nexport interface TransProps extends Props { \n path: string, \n tag?: string,\n replacements?: Replacements,\n class?: string,\n className?: string,\n style?: string,\n} \n\nexport const Trans = ({ path, replacements, tag, ...attrs }: TransProps): VNodeChild => {\n\n const ref = {}\n\n // re-render component on language change\n i18n.subscribe(() => {\n const value = i18n.t(path, replacements);\n console.log('new val', value);\n //$(ref).html(value);\n });\n\n return {\n tag: tag || 'span',\n attributes: {\n ref,\n ...attrs,\n },\n // initially render\n children: i18n.t(path, replacements),\n }\n}\n","\n/**\n * custom headers class to manage HTTP headers with case-insensitive keys.\n * simplifies header manipulation by providing utility methods.\n */\nexport class Headers {\n // internal map to store headers\n private map: Map<string, string>;\n\n /**\n * initializes the Headers instance with provided headers or another Headers object.\n * ensures all header keys are stored in lowercase for consistent access.\n * @param init initial headers as a record or another Headers instance\n */\n constructor(init: Record<string, string> | Headers = {}) {\n this.map = new Map();\n\n if (init instanceof Headers) {\n init.forEach((value, key) => this.map.set(key, value));\n } else {\n Object.entries(init).forEach(([key, value]) =>\n this.map.set(key.toLowerCase(), value)\n );\n }\n }\n\n /**\n * appends or sets the value for a specific header key.\n * stores the key in lowercase to maintain case-insensitivity.\n * @param key header name\n * @param value header value\n */\n append(key: string, value: string): void {\n this.map.set(key.toLowerCase(), value);\n }\n\n /**\n * retrieves the value of a specific header key.\n * @param key header name\n * @returns the header value or null if not found\n */\n get(key: string): string | null {\n return this.map.get(key.toLowerCase()) || null;\n }\n\n /**\n * checks if a specific header key exists.\n * @param key header name\n * @returns boolean indicating existence of the header\n */\n has(key: string): boolean {\n return this.map.has(key.toLowerCase());\n }\n\n /**\n * iterates over all headers and executes the provided callback for each.\n * @param callback function to execute for each header\n */\n forEach(callback: (value: string, key: string) => void): void {\n this.map.forEach((value, key) => callback(value, key));\n }\n}\n\n/**\n * ProgressSignal extends EventTarget to dispatch and track progress events.\n * useful for monitoring the progress of network requests.\n */\nexport class ProgressSignal extends EventTarget {\n // internal progress state\n private _progress: { loaded: number; total: number };\n\n /**\n * initializes the ProgressSignal with zero progress.\n */\n constructor() {\n super();\n this._progress = { loaded: 0, total: 0 };\n }\n\n /**\n * retrieves the current progress.\n * @returns an object containing loaded and total bytes\n */\n get progress(): { loaded: number; total: number } {\n return this._progress;\n }\n\n /**\n * dispatches a progress event with updated loaded and total bytes.\n * updates the internal progress state.\n * @param event the ProgressEvent containing progress information\n */\n dispatchProgress(event: ProgressEvent): void {\n this._progress = { loaded: event.loaded, total: event.total };\n this.dispatchEvent(\n new ProgressEvent('progress', { loaded: event.loaded, total: event.total })\n );\n }\n}\n\n/**\n * ProgressController manages a ProgressSignal for tracking request progress.\n * provides a centralized way to handle progress events.\n */\nexport class ProgressController {\n signal: ProgressSignal;\n\n /**\n * initializes the ProgressController with a new ProgressSignal.\n */\n constructor() {\n this.signal = new ProgressSignal();\n }\n}\n\n/**\n * serializes the request body into a format suitable for XMLHttpRequest.\n * handles various body types including JSON objects and FormData.\n * @param body the body to serialize\n * @returns the serialized body or null if no body is provided\n */\nexport function serializeBody(\n body: BodyInit | Record<string, unknown> | null | undefined\n): XMLHttpRequestBodyInit | Document | null {\n if (!body) return null;\n\n if (\n body instanceof FormData ||\n body instanceof Blob ||\n body instanceof URLSearchParams ||\n body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n typeof body === \"string\"\n ) {\n return body;\n }\n\n if (typeof body === \"object\") {\n return JSON.stringify(body); // convert object to JSON string for transmission\n }\n\n return String(body); // ensure fallback to string for unsupported types\n}\n\n/**\n * parses a raw header string from an XMLHttpRequest into a Headers instance.\n * @param headerStr the raw header string\n * @returns a Headers instance containing parsed headers\n */\nexport function parseHeaders(headerStr: string): Headers {\n const headers = new Headers();\n headerStr.split('\\r\\n').forEach((line) => {\n const [key, ...rest] = line.split(': ');\n if (key) headers.append(key, rest.join(': '));\n });\n return headers;\n}\n\n/**\n * extends the standard RequestInit to include an optional ProgressSignal.\n * allows tracking the progress of the network request.\n */\nexport interface FetchWithControllersInit extends RequestInit {\n progressSignal?: ProgressSignal;\n}\n\n/**\n * represents the response from a fetch operation, mirroring the native Response interface.\n * includes methods to access the response body in various formats.\n */\nexport interface FetchResponse {\n ok: boolean;\n status: number;\n statusText: string;\n headers: Headers;\n url: string;\n text: () => Promise<string>;\n json: () => Promise<unknown>;\n blob: () => Promise<Blob>;\n}\n\n/**\n * performs a network fetch request with support for progress tracking using XMLHttpRequest.\n * falls back to the native fetch implementation if no ProgressSignal is provided.\n * @param input the resource to fetch, typically a URL string\n * @param init optional configuration for the request, including method, headers, body, credentials, and progressSignal\n * @returns a promise resolving to a FetchResponse containing the response details\n */\nexport async function fetch(\n input: string | URL,\n init: FetchWithControllersInit = {}\n): Promise<FetchResponse> {\n // use native fetch if ProgressSignal is not provided for simplicity and efficiency\n if (!init.progressSignal && typeof globalThis.fetch === \"function\") {\n return fetch(input, init) as unknown as FetchResponse;\n }\n\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n const method = (init.method || 'GET').toUpperCase();\n const body = serializeBody(init.body || null);\n const progressSignal = init.progressSignal;\n const abortSignal = init.signal;\n\n // handle abort events to allow request cancellation\n if (abortSignal) {\n const abortHandler = () => {\n xhr.abort();\n reject(new DOMException('The operation was aborted.', 'AbortError'));\n };\n abortSignal.addEventListener('abort', abortHandler, { once: true });\n }\n\n xhr.open(method, input.toString(), true);\n\n // set credentials based on the init configuration\n if (init.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (init.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n // set request headers using the custom Headers class or raw headers\n if (init.headers instanceof Headers) {\n init.headers.forEach((value, key) => xhr.setRequestHeader(key, value));\n } else if (init.headers) {\n Object.entries(init.headers).forEach(([key, value]) => {\n xhr.setRequestHeader(key, value as string);\n });\n }\n\n // attach progress listeners if a ProgressSignal is provided\n if (progressSignal) {\n if (xhr.upload) {\n xhr.upload.onprogress = (event) => progressSignal.dispatchProgress(event);\n }\n xhr.onprogress = (event) => progressSignal.dispatchProgress(event);\n }\n\n // handle the response once the request is completed\n xhr.onload = () => {\n const response: FetchResponse = {\n ok: xhr.status >= 200 && xhr.status < 300,\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders()),\n url: xhr.responseURL,\n text: () => Promise.resolve(xhr.responseText),\n json: () => Promise.resolve(JSON.parse(xhr.responseText)),\n blob: () => Promise.resolve(new Blob([xhr.response])),\n };\n resolve(response);\n };\n\n // handle network errors\n xhr.onerror = () => reject(new TypeError('Network request failed'));\n xhr.ontimeout = () => reject(new TypeError('Network request timed out'));\n xhr.onabort = () => reject(new DOMException('The operation was aborted.', 'AbortError'));\n\n // send the serialized request body\n xhr.send(body);\n });\n}\n\n\n/*\n // example usage of fetch with upload tracking\n async function exampleFetchWithUploadTracking() {\n const url = 'https://example.com/upload';\n const data = new FormData();\n data.append('file', new Blob(['file content'], { type: 'text/plain' }), 'example.txt');\n\n const { signal: progressSignal } = new ProgressController();\n\n progressSignal.addEventListener('progress', (event: ProgressEvent) => {\n console.log(`Uploaded ${event.loaded} of ${event.total} bytes`);\n });\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n body: data,\n headers: {\n 'Accept': 'application/json'\n },\n credentials: 'include',\n progressSignal\n });\n\n if (response.ok) {\n const jsonResponse = await response.json();\n console.log('Upload successful:', jsonResponse);\n } else {\n console.error('Upload failed:', response.statusText);\n }\n } catch (error) {\n console.error('Error during fetch:', error);\n }\n }\n \n */"],"names":["getPersistenceProvider","getPersistenceProviderServer","getPersistenceProviderClient"],"mappings":"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"}
|
package/dist/render/client.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as RenderInput, D as Dequery, a as RenderResult, e as VNode } from '../index-
|
|
2
|
-
export { C as CSSProperties, m as Children, n as DomAbstractionImpl, F as FontFaceProperties, w as Fragment, G as Globals, K as KeyFrameProperties, P as Props, c as Ref, b as RefUpdateFn, o as RenderNodeInput, p as RenderResultNode, V as VAttributes, d as VNodeAttributes, k as VNodeChild, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from '../index-
|
|
1
|
+
import { R as RenderInput, D as Dequery, a as RenderResult, e as VNode } from '../index-Cqaw1XMU.js';
|
|
2
|
+
export { C as CSSProperties, m as Children, n as DomAbstractionImpl, F as FontFaceProperties, w as Fragment, G as Globals, K as KeyFrameProperties, P as Props, c as Ref, b as RefUpdateFn, o as RenderNodeInput, p as RenderResultNode, V as VAttributes, d as VNodeAttributes, k as VNodeChild, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from '../index-Cqaw1XMU.js';
|
|
3
3
|
import * as CSS from 'csstype';
|
|
4
4
|
export { CSS };
|
|
5
5
|
|
package/dist/render/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as RenderInput, D as Dequery, a as RenderResult, e as VNode } from '../index-
|
|
2
|
-
export { C as CSSProperties, m as Children, n as DomAbstractionImpl, F as FontFaceProperties, w as Fragment, G as Globals, K as KeyFrameProperties, P as Props, c as Ref, b as RefUpdateFn, o as RenderNodeInput, p as RenderResultNode, V as VAttributes, d as VNodeAttributes, k as VNodeChild, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from '../index-
|
|
1
|
+
import { R as RenderInput, D as Dequery, a as RenderResult, e as VNode } from '../index-Cqaw1XMU.js';
|
|
2
|
+
export { C as CSSProperties, m as Children, n as DomAbstractionImpl, F as FontFaceProperties, w as Fragment, G as Globals, K as KeyFrameProperties, P as Props, c as Ref, b as RefUpdateFn, o as RenderNodeInput, p as RenderResultNode, V as VAttributes, d as VNodeAttributes, k as VNodeChild, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from '../index-Cqaw1XMU.js';
|
|
3
3
|
import * as CSS from 'csstype';
|
|
4
4
|
export { CSS };
|
|
5
5
|
|
package/dist/render/index.d.cts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { C as CSSProperties, m as Children, n as DomAbstractionImpl, F as FontFaceProperties, w as Fragment, G as Globals, K as KeyFrameProperties, P as Props, c as Ref, b as RefUpdateFn, R as RenderInput, o as RenderNodeInput, a as RenderResult, p as RenderResultNode, V as VAttributes, e as VNode, d as VNodeAttributes, k as VNodeChild, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from '../index-
|
|
1
|
+
export { C as CSSProperties, m as Children, n as DomAbstractionImpl, F as FontFaceProperties, w as Fragment, G as Globals, K as KeyFrameProperties, P as Props, c as Ref, b as RefUpdateFn, R as RenderInput, o as RenderNodeInput, a as RenderResult, p as RenderResultNode, V as VAttributes, e as VNode, d as VNodeAttributes, k as VNodeChild, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from '../index-Cqaw1XMU.js';
|
|
2
2
|
import * as CSS from 'csstype';
|
|
3
3
|
export { CSS };
|
package/dist/render/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { C as CSSProperties, m as Children, n as DomAbstractionImpl, F as FontFaceProperties, w as Fragment, G as Globals, K as KeyFrameProperties, P as Props, c as Ref, b as RefUpdateFn, R as RenderInput, o as RenderNodeInput, a as RenderResult, p as RenderResultNode, V as VAttributes, e as VNode, d as VNodeAttributes, k as VNodeChild, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from '../index-
|
|
1
|
+
export { C as CSSProperties, m as Children, n as DomAbstractionImpl, F as FontFaceProperties, w as Fragment, G as Globals, K as KeyFrameProperties, P as Props, c as Ref, b as RefUpdateFn, R as RenderInput, o as RenderNodeInput, a as RenderResult, p as RenderResultNode, V as VAttributes, e as VNode, d as VNodeAttributes, k as VNodeChild, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from '../index-Cqaw1XMU.js';
|
|
2
2
|
import * as CSS from 'csstype';
|
|
3
3
|
export { CSS };
|
package/dist/render/server.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { G as Globals, R as RenderInput, D as Dequery, a as RenderResult } from '../index-
|
|
2
|
-
export { C as CSSProperties, m as Children, n as DomAbstractionImpl, F as FontFaceProperties, w as Fragment, K as KeyFrameProperties, P as Props, c as Ref, b as RefUpdateFn, o as RenderNodeInput, p as RenderResultNode, V as VAttributes, e as VNode, d as VNodeAttributes, k as VNodeChild, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from '../index-
|
|
1
|
+
import { G as Globals, R as RenderInput, D as Dequery, a as RenderResult } from '../index-Cqaw1XMU.js';
|
|
2
|
+
export { C as CSSProperties, m as Children, n as DomAbstractionImpl, F as FontFaceProperties, w as Fragment, K as KeyFrameProperties, P as Props, c as Ref, b as RefUpdateFn, o as RenderNodeInput, p as RenderResultNode, V as VAttributes, e as VNode, d as VNodeAttributes, k as VNodeChild, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from '../index-Cqaw1XMU.js';
|
|
3
3
|
import * as CSS from 'csstype';
|
|
4
4
|
export { CSS };
|
|
5
5
|
|
package/dist/render/server.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { G as Globals, R as RenderInput, D as Dequery, a as RenderResult } from '../index-
|
|
2
|
-
export { C as CSSProperties, m as Children, n as DomAbstractionImpl, F as FontFaceProperties, w as Fragment, K as KeyFrameProperties, P as Props, c as Ref, b as RefUpdateFn, o as RenderNodeInput, p as RenderResultNode, V as VAttributes, e as VNode, d as VNodeAttributes, k as VNodeChild, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from '../index-
|
|
1
|
+
import { G as Globals, R as RenderInput, D as Dequery, a as RenderResult } from '../index-Cqaw1XMU.js';
|
|
2
|
+
export { C as CSSProperties, m as Children, n as DomAbstractionImpl, F as FontFaceProperties, w as Fragment, K as KeyFrameProperties, P as Props, c as Ref, b as RefUpdateFn, o as RenderNodeInput, p as RenderResultNode, V as VAttributes, e as VNode, d as VNodeAttributes, k as VNodeChild, l as VNodeChildren, g as VNodeKey, j as VNodeRef, i as VNodeRefCallback, h as VNodeRefObject, f as VNodeType, q as createInPlaceErrorMessageVNode, A as createRef, u as getRenderer, t as handleLifecycleEventsForOnMount, z as isRef, r as jsx, y as jsxDEV, x as jsxs, s as observeUnmount, v as renderIsomorphic } from '../index-Cqaw1XMU.js';
|
|
3
3
|
import * as CSS from 'csstype';
|
|
4
4
|
export { CSS };
|
|
5
5
|
|