@hozu/runtime-client 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/dist/browser/chunk-7HUHKEFT.js +1 -0
  4. package/dist/browser/chunk-DRLGN2D4.js +1 -0
  5. package/dist/browser/chunk-FZY6ENWQ.js +1 -0
  6. package/dist/browser/chunk-HGZ7KQUC.js +1 -0
  7. package/dist/browser/chunk-Z7ZFHZVV.js +1 -0
  8. package/dist/browser/client.js +1 -0
  9. package/dist/browser/navigate.js +1 -0
  10. package/dist/browser-dev/client.js +1604 -0
  11. package/dist/browser.d.ts +2 -0
  12. package/dist/browser.d.ts.map +1 -0
  13. package/dist/browser.js +3 -0
  14. package/dist/browser.js.map +1 -0
  15. package/dist/dev.d.ts +6 -0
  16. package/dist/dev.d.ts.map +1 -0
  17. package/dist/dev.js +42 -0
  18. package/dist/dev.js.map +1 -0
  19. package/dist/dom.d.ts +11 -0
  20. package/dist/dom.d.ts.map +1 -0
  21. package/dist/dom.js +70 -0
  22. package/dist/dom.js.map +1 -0
  23. package/dist/files.js +1 -0
  24. package/dist/hydrate.d.ts +56 -0
  25. package/dist/hydrate.d.ts.map +1 -0
  26. package/dist/hydrate.js +163 -0
  27. package/dist/hydrate.js.map +1 -0
  28. package/dist/index.d.ts +7 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +5 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/live.d.ts +2 -0
  33. package/dist/live.d.ts.map +1 -0
  34. package/dist/live.js +7 -0
  35. package/dist/live.js.map +1 -0
  36. package/dist/motion.d.ts +5 -0
  37. package/dist/motion.d.ts.map +1 -0
  38. package/dist/motion.js +78 -0
  39. package/dist/motion.js.map +1 -0
  40. package/dist/mount.d.ts +65 -0
  41. package/dist/mount.d.ts.map +1 -0
  42. package/dist/mount.js +550 -0
  43. package/dist/mount.js.map +1 -0
  44. package/dist/navigate.d.ts +18 -0
  45. package/dist/navigate.d.ts.map +1 -0
  46. package/dist/navigate.js +197 -0
  47. package/dist/navigate.js.map +1 -0
  48. package/dist/uploads.d.ts +2 -0
  49. package/dist/uploads.d.ts.map +1 -0
  50. package/dist/uploads.js +21 -0
  51. package/dist/uploads.js.map +1 -0
  52. package/dist/visible.d.ts +2 -0
  53. package/dist/visible.d.ts.map +1 -0
  54. package/dist/visible.js +26 -0
  55. package/dist/visible.js.map +1 -0
  56. package/dist/widget.d.ts +16 -0
  57. package/dist/widget.d.ts.map +1 -0
  58. package/dist/widget.js +53 -0
  59. package/dist/widget.js.map +1 -0
  60. package/files.d.ts +1 -0
  61. package/package.json +53 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { hydrate } from './hydrate.js';
2
+ void hydrate(document);
3
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA"}
package/dist/dev.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import type { MachineIR } from '@hozu/core/ir';
2
+ import type { Snapshot } from '@hozu/machine';
3
+ import type { App } from './mount.ts';
4
+ export declare function restore(doc: Document): (id: string, machine: MachineIR | null) => Snapshot | undefined;
5
+ export declare function expose(doc: Document, apps: Map<string, App>, machines: Map<string, MachineIR | null>): void;
6
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAcrC,wBAAgB,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI,KAAK,QAAQ,GAAG,SAAS,CAYtG;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC,QAcpG"}
package/dist/dev.js ADDED
@@ -0,0 +1,42 @@
1
+ const KEY = 'hozu:snapshots';
2
+ const storage = (doc) => {
3
+ try {
4
+ return doc.defaultView?.sessionStorage ?? null;
5
+ }
6
+ catch {
7
+ return null;
8
+ }
9
+ };
10
+ export function restore(doc) {
11
+ const store = storage(doc);
12
+ let saved = {};
13
+ try {
14
+ saved = JSON.parse(store?.getItem(KEY) ?? '{}');
15
+ }
16
+ catch { }
17
+ store?.removeItem(KEY);
18
+ return (id, machine) => {
19
+ const entry = saved[id];
20
+ if (!entry || !machine || entry.machine !== JSON.stringify(machine))
21
+ return undefined;
22
+ return machine.states[entry.snapshot.state]?.invoke ? undefined : entry.snapshot;
23
+ };
24
+ }
25
+ export function expose(doc, apps, machines) {
26
+ const win = doc.defaultView;
27
+ if (!win)
28
+ return;
29
+ win.__hozu = {
30
+ save() {
31
+ const saved = {};
32
+ for (const [id, app] of apps) {
33
+ const snapshot = app.snapshot();
34
+ const machine = machines.get(id);
35
+ if (snapshot && machine)
36
+ saved[id] = { machine: JSON.stringify(machine), snapshot };
37
+ }
38
+ storage(doc)?.setItem(KEY, JSON.stringify(saved));
39
+ },
40
+ };
41
+ }
42
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAIA,MAAM,GAAG,GAAG,gBAAgB,CAAA;AAI5B,MAAM,OAAO,GAAG,CAAC,GAAa,EAAE,EAAE;IAChC,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,WAAW,EAAE,cAAc,IAAI,IAAI,CAAA;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,UAAU,OAAO,CAAC,GAAa;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC1B,IAAI,KAAK,GAAU,EAAE,CAAA;IACrB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAU,CAAA;IAC1D,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;IACtB,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,CAAA;QACvB,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAA;QACrF,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAA;IAClF,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAa,EAAE,IAAsB,EAAE,QAAuC;IACnG,MAAM,GAAG,GAAG,GAAG,CAAC,WAA8D,CAAA;IAC9E,IAAI,CAAC,GAAG;QAAE,OAAM;IAChB,GAAG,CAAC,MAAM,GAAG;QACX,IAAI;YACF,MAAM,KAAK,GAAU,EAAE,CAAA;YACvB,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;gBAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBAChC,IAAI,QAAQ,IAAI,OAAO;oBAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAA;YACrF,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QACnD,CAAC;KACF,CAAA;AACH,CAAC"}
package/dist/dom.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import type { Json } from '@hozu/core/ir';
2
+ export declare const SVG_NS = "http://www.w3.org/2000/svg";
3
+ export declare const text: (v: Json | undefined) => string;
4
+ export declare function attrText(name: string, x: Json | undefined): string | null;
5
+ export declare const properties: Set<string>;
6
+ export declare const passive: Set<string>;
7
+ export declare const uploads: Map<string, File>;
8
+ export declare const domField: (e: Event) => (field: string) => Json;
9
+ export declare const classText: (base: string | null, active: string[]) => string;
10
+ export declare const styleText: (vars: [string, Json][]) => string;
11
+ //# sourceMappingURL=dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEzC,eAAO,MAAM,MAAM,+BAA+B,CAAA;AAIlD,eAAO,MAAM,IAAI,MAAO,IAAI,GAAG,SAAS,WACoD,CAAA;AAE5F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAOzE;AAED,eAAO,MAAM,UAAU,aAAqD,CAAA;AAE5E,eAAO,MAAM,OAAO,aAQlB,CAAA;AAIF,eAAO,MAAM,OAAO,mBAA0B,CAAA;AAW9C,eAAO,MAAM,QAAQ,MACf,KAAK,aACD,MAAM,KAAG,IA4BhB,CAAA;AAEH,eAAO,MAAM,SAAS,SAAU,MAAM,GAAG,IAAI,UAAU,MAAM,EAAE,WACmB,CAAA;AAElF,eAAO,MAAM,SAAS,SAAU,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,WAK/C,CAAA"}
package/dist/dom.js ADDED
@@ -0,0 +1,70 @@
1
+ export const SVG_NS = 'http://www.w3.org/2000/svg';
2
+ const stringBooleans = new Set(['contenteditable', 'draggable', 'spellcheck']);
3
+ export const text = (v) => v === null || v === undefined ? '' : typeof v === 'object' ? JSON.stringify(v) : String(v);
4
+ export function attrText(name, x) {
5
+ if (x === null || x === undefined)
6
+ return null;
7
+ if (typeof x === 'boolean') {
8
+ if (name.startsWith('aria-') || name.startsWith('data-') || stringBooleans.has(name))
9
+ return String(x);
10
+ return x ? '' : null;
11
+ }
12
+ return text(x);
13
+ }
14
+ export const properties = new Set(['value', 'checked', 'selected', 'muted']);
15
+ export const passive = new Set([
16
+ 'scroll',
17
+ 'wheel',
18
+ 'touchstart',
19
+ 'touchmove',
20
+ 'touchend',
21
+ 'pointermove',
22
+ 'mousemove',
23
+ ]);
24
+ const num = (x) => (typeof x === 'number' && !Number.isNaN(x) ? x : null);
25
+ export const uploads = new Map();
26
+ const fileList = (files) => files
27
+ ? [...files].map((f) => {
28
+ const token = `u${uploads.size + 1}`;
29
+ uploads.set(token, f);
30
+ return { name: f.name, size: f.size, type: f.type, token };
31
+ })
32
+ : [];
33
+ export const domField = (e) => (field) => {
34
+ const t = e.target;
35
+ switch (field) {
36
+ case 'value':
37
+ return typeof t?.value === 'string' ? t.value : '';
38
+ case 'checked':
39
+ return t?.checked === true;
40
+ case 'valueAsNumber':
41
+ return num(t?.valueAsNumber);
42
+ case 'files':
43
+ return fileList(t?.files ?? e.dataTransfer?.files);
44
+ case 'form': {
45
+ const out = {};
46
+ const form = e.target;
47
+ const win = form.ownerDocument.defaultView;
48
+ for (const [k, v] of new (win?.FormData ?? FormData)(form))
49
+ out[k] = typeof v === 'string' ? v : v.name;
50
+ return out;
51
+ }
52
+ case 'open':
53
+ return t?.open === true;
54
+ case 'returnValue':
55
+ return typeof t?.returnValue === 'string' ? t.returnValue : '';
56
+ default: {
57
+ const x = field in e ? e[field] : t?.[field];
58
+ return typeof x === 'number' ? num(x) : typeof x === 'string' || typeof x === 'boolean' ? x : null;
59
+ }
60
+ }
61
+ };
62
+ export const classText = (base, active) => base ? (active.length ? `${base} ${active.join(' ')}` : base) : active.join(' ');
63
+ export const styleText = (vars) => {
64
+ let out = '';
65
+ for (const [name, x] of vars)
66
+ if (x !== null && x !== undefined && x !== '')
67
+ out += `${out ? ';' : ''}${name}:${text(x)}`;
68
+ return out;
69
+ };
70
+ //# sourceMappingURL=dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"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"}
package/dist/files.js ADDED
@@ -0,0 +1 @@
1
+ export const files = {"chunk-7HUHKEFT.js":"var s=(t,e,n=[])=>{if(typeof t==\"string\")e.has(t)&&n.push(t);else if(t&&typeof t==\"object\")for(let o of Object.values(t))s(o,e,n);return n};function c(t,e,n){let o=s(e,n);if(!o.length)return t;let r=new FormData;r.append(\"request\",t);for(let f of o)r.append(f,n.get(f));return r}export{c as encode};\n","chunk-DRLGN2D4.js":"var a=new WeakSet;function c(n){let s=n.defaultView;if(!s?.IntersectionObserver||a.has(n))return;a.add(n);let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&t.target.dispatchEvent(new s.Event(\"visible\"))}),i=e=>{e instanceof s.Element&&e.hasAttribute(\"data-hozu-visible\")&&r.observe(e);for(let t of e.querySelectorAll(\"[data-hozu-visible]\"))r.observe(t)};i(n),new s.MutationObserver(e=>{for(let t of e)for(let o of t.addedNodes)o.nodeType===1&&i(o)}).observe(n.body,{childList:!0,subtree:!0})}export{c as watch};\n","chunk-FZY6ENWQ.js":"var n=t=>r=>{let e=t.defaultView?.EventSource;e&&new e(new URL(\"live\",import.meta.url)).addEventListener(\"message\",a=>r(JSON.parse(a.data)))};export{n as liveStream};\n","chunk-HGZ7KQUC.js":"var a=t=>t.split(\",\").map(n=>Number.parseFloat(n)*(n.trim().endsWith(\"ms\")?1:1e3)||0);function u(t){let n=t.ownerDocument.defaultView?.getComputedStyle(t);if(!n)return 0;let e=(s,o)=>{let r=a(s),i=a(o);return Math.max(0,...r.map((d,f)=>d+(i[f%i.length]??0)))};return Math.max(e(n.transitionDuration,n.transitionDelay),e(n.animationDuration,n.animationDelay))}var p=(t,n)=>{let e=t.ownerDocument.defaultView;if(!e?.requestAnimationFrame)return n();e.requestAnimationFrame(()=>e.requestAnimationFrame(n))};function c(t,n){let e=u(t);if(e===0)return n();let s=!1,o=()=>{s||(s=!0,t.removeEventListener(\"transitionend\",o),t.removeEventListener(\"animationend\",o),n())};t.addEventListener(\"transitionend\",o),t.addEventListener(\"animationend\",o),setTimeout(o,e+50)}var v=t=>t.defaultView?.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches===!0;function m(t,n,e,s){let o=`${n}-${e}-from`,r=`${n}-${e}-active`,i=`${n}-${e}-to`;t.classList.add(o,r),p(t,()=>{t.classList.remove(o),t.classList.add(i),c(t,()=>{t.classList.remove(r,i),s()})})}function l(t,n){for(let e of t)e.nodeType===1&&m(e,n,\"enter\",()=>{})}function L(t,n){for(let e of t)e.nodeType===1?m(e,n,\"leave\",()=>e.remove()):e.remove()}function $(t,n,e){let s=t.getBoundingClientRect(),o=n.left-s.left,r=n.top-s.top;if(!o&&!r)return;let i=t.style;i.transitionDuration=\"0s\",i.transform=`translate(${o}px, ${r}px)`,t.offsetWidth,t.classList.add(`${e}-move`),i.transitionDuration=\"\",i.transform=\"\",c(t,()=>t.classList.remove(`${e}-move`))}export{l as enter,$ as flip,L as leave,v as reduced};\n","chunk-Z7ZFHZVV.js":"function d(e){let o=new AbortController,l=e.props(),i,a=t=>{i=void 0,e.doc.defaultView?.console.error(`Widget ${e.name} failed`,t)},s=()=>{e.load(e.ref.url).then(t=>{if(!o.signal.aborted)try{i=t({el:e.el,props:l,emit:e.emit,signal:o.signal})??void 0}catch(n){a(n)}},a)},r=e.doc.defaultView;if(e.ref.load===\"eager\"||!r)s();else if(e.ref.load===\"idle\")(r.requestIdleCallback??r.setTimeout)(s);else if(!r.IntersectionObserver)s();else{let t=new r.IntersectionObserver(n=>{n.some(c=>c.isIntersecting)&&(t.disconnect(),s())});t.observe(e.el),o.signal.addEventListener(\"abort\",()=>t.disconnect())}e.watch(()=>{let t=e.props();if(!e.same(t,l)){l=t;try{i?.update?.(t)}catch(n){a(n)}}}),e.own(()=>{o.abort(),i?.destroy?.()})}export{d as mountWidget};\n","client.js":"function F(t,e){let n=t;for(let o of e){if(n===null||typeof n!=\"object\")return null;n=n[o]}return n===void 0?null:n}function Q(t,e,n,o=0){if(o===e.length)return n;let s=e[o];if(Array.isArray(t)){let u=t.slice();return u[Number(s)]=Q(t[Number(s)]??null,e,n,o+1),u}let c=t!==null&&typeof t==\"object\"?t:{};return{...c,[s]:Q(c[s]??null,e,n,o+1)}}function P(t,e){if(t===e)return!0;if(t===null||e===null||typeof t!=\"object\"||typeof e!=\"object\")return!1;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(let o=0;o<t.length;o++)if(!P(t[o],e[o]))return!1;return!0}if(Array.isArray(e))return!1;let n=Object.keys(t);if(n.length!==Object.keys(e).length)return!1;for(let o of n)if(!Object.hasOwn(e,o)||!P(t[o],e[o]))return!1;return!0}var gt=(t,e,n)=>{let[o=\"\",s=\"\"]=t.split(\"?\"),c=o.replace(/\\/:([A-Za-z]\\w*)[?*+]?/g,(w,T)=>[F(e,[T])??[]].flat().map(j=>`/${encodeURIComponent(String(j))}`).join(\"\"))||\"/\",u=s.split(\"&\"),x=\"\";if(n&&typeof n==\"object\")for(let w of Object.keys(n).sort()){let T=n[w],g=`${encodeURIComponent(w)}=${encodeURIComponent(String(T))}`;T!==null&&typeof T!=\"object\"&&!u.includes(g)&&(x+=`${x&&\"&\"}${g}`)}return x?`${c}?${x}`:c};var rt=class extends Error{name=\"CompileError\"};function W(t,e){if(\"literal\"in t){let s=t.literal;return()=>s}if(\"object\"in t){let s=Object.entries(t.object).map(([c,u])=>[c,W(u,e)]);return c=>{let u={};for(let[x,w]of s)u[x]=w(c);return u}}if(\"fn\"in t){let s=e[t.fn];if(!s)throw new rt(`No implementation bound for fn ${t.fn}`);let c=W(t.arg,e);return u=>s(c(u))}if(\"link\"in t){let s=t.link,c=W(t.params,e),u=W(t.search,e);return x=>gt(x.routes?.[s]??\"\",c(x),u(x))}if(\"test\"in t){let s=it(t.test,e);return c=>s(c)}let{path:n}=t;if(t.ref===\"binding\"){let s=t.depth;return n.length?c=>F(c.bindings?.[s],n):c=>c.bindings?.[s]??null}if(t.ref===\"dom\"){let[s,...c]=n;return u=>u.dom&&s?F(u.dom(s),c):null}let o=t.ref;return n.length===0?s=>s[o]??null:s=>F(s[o],n)}var K=t=>typeof t==\"number\"||typeof t==\"string\"?t:Number.NaN;function it(t,e){switch(t.op){case\"and\":{let n=t.args.map(o=>it(o,e));return o=>n.every(s=>s(o))}case\"or\":{let n=t.args.map(o=>it(o,e));return o=>n.some(s=>s(o))}case\"not\":{let n=it(t.arg,e);return o=>!n(o)}case\"fn\":{let n=W({fn:t.fn,arg:t.arg},e);return o=>n(o)===!0}default:{let n=W(t.left,e),o=W(t.right,e);switch(t.op){case\"eq\":return s=>P(n(s),o(s));case\"neq\":return s=>!P(n(s),o(s));case\"lt\":return s=>K(n(s))<K(o(s));case\"lte\":return s=>K(n(s))<=K(o(s));case\"gt\":return s=>K(n(s))>K(o(s));default:return s=>K(n(s))>=K(o(s))}}}}function Wt(t,e){let{path:n}=t,o=W(t.value,e);switch(t.op){case\"set\":return(s,c)=>Q(s,n,o({...c,context:s}));case\"append\":return(s,c)=>{let u=F(s,n);return Q(s,n,[...Array.isArray(u)?u:[],o({...c,context:s})])};case\"inc\":return(s,c)=>Q(s,n,Number(F(s,n)??0)+Number(o({...c,context:s})));case\"removeWhere\":{let s=t.key;return(c,u)=>{let x=F(c,n),w=o({...u,context:c}),T=Array.isArray(x)?x:[];return Q(c,n,T.filter(g=>!P(g!==null&&typeof g==\"object\"&&!Array.isArray(g)?g[s]:null,w)))}}}}var qt=(t,e)=>n=>t({...n,routes:e});function yt(t,e={},n={}){let o=t.machine;if(!o)throw new rt(`Feature ${t.id} has no machine`);let s=Object.keys(o.states),c=new Map(s.map((g,j)=>[g,j])),u=g=>{let j=c.get(g);if(j===void 0)throw new rt(`Unknown state \"${g}\" in ${t.id}`);return j},x=[],w=(g,j)=>(x.push(j),{id:j,guard:g.guard?it(g.guard,e):null,target:u(g.target),assign:g.assign.map(C=>Wt(C,e)),navigate:g.navigate?qt(W(g.navigate,e),n):null}),T=s.map(g=>{let j=o.states[g],C=new Map;for(let[E,O]of Object.entries(j.on))C.set(E,O.map((q,I)=>w(q,`${g}/on/${E}/${I}`)));let _=new Map;j.after.forEach((E,O)=>{let q=w(E.transition,`${g}/after/${O}`);_.set(E.ms,[..._.get(E.ms)??[],q])});let M=j.invoke;return{name:g,final:j.final,on:C,invoke:M&&{effect:M.effect,input:W(M.input,e),done:M.done.map((E,O)=>w(E,`${g}/invoke/done/${O}`)),failed:new Map(Object.entries(M.failed).map(([E,O])=>[E,O.map((q,I)=>w(q,`${g}/invoke/failed/${E}/${I}`))]))},after:_,timers:[..._.keys()].sort((E,O)=>E-O)}});return{feature:t.id,initial:u(o.initial),initialContext:o.initialContext,states:T,index:c,transitions:x}}function St(t,e,n,o,s){let c=t.states[e];c.invoke&&s.push({type:\"invoke\",entry:o,effect:c.invoke.effect,input:c.invoke.input({context:n})});for(let u of c.timers)s.push({type:\"timer\",entry:o,ms:u})}function jt(t,e,n,o=1){let s=t.index.get(e);if(s===void 0)throw new Error(`Unknown state \"${e}\" in ${t.feature}`);let c=[];return St(t,s,n,o,c),{snapshot:{state:e,context:n,entry:o},effects:c,taken:null}}var ht=t=>jt(t,t.states[t.initial].name,t.initialContext),st=t=>({snapshot:t,effects:[],taken:null});function ut(t,e,n,o){if(!n)return st(e);for(let s of n){if(s.guard&&!s.guard(o))continue;let c=e.context;for(let w of s.assign)c=w(c,o);let u=e.entry+1,x=s.navigate===null?[]:[{type:\"navigate\",url:String(s.navigate(o))}];return St(t,s.target,c,u,x),{snapshot:{state:t.states[s.target].name,context:c,entry:u},effects:x,taken:s.id}}return st(e)}function xt(t,e,n){let o=t.states[t.index.get(e.state)??-1];if(!o||o.final)return st(e);let s=e.context;switch(n.type){case\"event\":return ut(t,e,o.on.get(n.event),{context:s,event:n.payload});case\"done\":return n.entry!==e.entry||!o.invoke?st(e):ut(t,e,o.invoke.done,{context:s,result:n.result});case\"failed\":{if(n.entry!==e.entry||!o.invoke)return st(e);let c=o.invoke.failed,u=c.has(n.error),x=u?n.data:{message:Dt(n.data,n.error)};return ut(t,e,c.get(u?n.error:\"Unexpected\"),{context:s,error:x})}case\"timer\":return n.entry!==e.entry?st(e):ut(t,e,o.after.get(n.ms),{context:s})}}function Dt(t,e){return t!==null&&typeof t==\"object\"&&!Array.isArray(t)&&typeof t.message==\"string\"?t.message:e}var pt=\"http://www.w3.org/2000/svg\",Bt=new Set([\"contenteditable\",\"draggable\",\"spellcheck\"]),X=t=>t==null?\"\":typeof t==\"object\"?JSON.stringify(t):String(t);function Ot(t,e){return e==null?null:typeof e==\"boolean\"?t.startsWith(\"aria-\")||t.startsWith(\"data-\")||Bt.has(t)?String(e):e?\"\":null:X(e)}var $t=new Set([\"value\",\"checked\",\"selected\",\"muted\"]),wt=new Set([\"scroll\",\"wheel\",\"touchstart\",\"touchmove\",\"touchend\",\"pointermove\",\"mousemove\"]),Nt=t=>typeof t==\"number\"&&!Number.isNaN(t)?t:null,at=new Map,Ft=t=>t?[...t].map(e=>{let n=`u${at.size+1}`;return at.set(n,e),{name:e.name,size:e.size,type:e.type,token:n}}):[],bt=t=>e=>{let n=t.target;switch(e){case\"value\":return typeof n?.value==\"string\"?n.value:\"\";case\"checked\":return n?.checked===!0;case\"valueAsNumber\":return Nt(n?.valueAsNumber);case\"files\":return Ft(n?.files??t.dataTransfer?.files);case\"form\":{let o={},s=t.target,c=s.ownerDocument.defaultView;for(let[u,x]of new(c?.FormData??FormData)(s))o[u]=typeof x==\"string\"?x:x.name;return o}case\"open\":return n?.open===!0;case\"returnValue\":return typeof n?.returnValue==\"string\"?n.returnValue:\"\";default:{let o=e in t?t[e]:n?.[e];return typeof o==\"number\"?Nt(o):typeof o==\"string\"||typeof o==\"boolean\"?o:null}}},At=(t,e)=>t?e.length?`${t} ${e.join(\" \")}`:t:e.join(\" \");var Tt=JSON.stringify;function mt(t){if(t===null)return\"null\";switch(typeof t){case\"string\":return Tt(t);case\"boolean\":return t?\"true\":\"false\";case\"number\":if(!Number.isFinite(t))throw new TypeError(`Non-finite number ${t} is not valid JSON`);return Object.is(t,-0)?\"0\":String(t);case\"object\":{if(Array.isArray(t))return`[${t.map(mt).join(\",\")}]`;let e=t,n=Object.keys(e).sort(),o=\"{\";for(let s=0;s<n.length;s++){let c=n[s],u=e[c];if(u===void 0)throw new TypeError(`Undefined value at key \"${c}\"`);o+=`${s?\",\":\"\"}${Tt(c)}:${mt(u)}`}return`${o}}`}default:throw new TypeError(`Value of type ${typeof t} is not valid JSON`)}}var kt=t=>{switch(t.op){case\"and\":case\"or\":return t.args.some(kt);case\"not\":return kt(t.arg);case\"fn\":return Y(t.arg);default:return Y(t.left)||Y(t.right)}},Y=t=>\"ref\"in t?t.ref===\"context\"||t.ref===\"binding\":\"object\"in t?Object.values(t.object).some(Y):\"fn\"in t?Y(t.arg):\"test\"in t&&kt(t.test),_t=(t,e)=>t+mt(e),Jt=t=>t instanceof Map?{data:t,versions:new Map}:t;var ot=(t,e)=>t!==null&&t.nodeType===8&&t.data===e;function tt(t,e){let n=[t],o=t;for(;o!==e&&(o=o.nextSibling,!!o);)n.push(o);return n}function vt(t,e){let n=t.next?t.next.previousSibling:t.parent.lastChild;return e(),[n?n.nextSibling:t.parent.firstChild,t.next?t.next.previousSibling:t.parent.lastChild]}function Et(t,e){for(;t.nextSibling&&t.nextSibling!==e;)t.nextSibling.remove()}function Ct(t,e){let{machine:n,fns:o={},params:s=null,search:c=null,routes:u={}}=e,{data:x}=Jt(e.payload),w=[],T=new Set,g=n?e.snapshot?null:ht(n):null,j=e.snapshot??g?.snapshot??null,C=[],_=new Set,M=new Set,E=new WeakMap,O=(r,a,i)=>{let h=E.get(r);return h||(h=W(r,o),E.set(r,h)),h({context:j?.context??null,bindings:a,params:s,search:c,routes:u,...i?{dom:i}:{}})},q=(r,a,i,h)=>{let b=O(a,i);h(b),Y(a)&&r.push(()=>{let p=O(a,i);p!==b&&(b=p,h(p))})},I=(r,a)=>{if(r.claim&&ot(r.next,a)){let i=r.next;return r.next=i.nextSibling,i}return r.parent.insertBefore(t.createComment(a),r.next)},ct=r=>{if(!r.claim||!ot(r.next,\"[\"))return;let a=0;for(;r.next;){let i=r.next;if(r.next=i.nextSibling,ot(i,\"[\"))a++;else if(ot(i,\"]\")&&--a===0)return}},D=(r,a,i,h,b)=>{switch(r.kind){case\"text\":{let p;i.claim&&i.next?.nodeType===3?(p=i.next,i.next=p.nextSibling):p=i.parent.insertBefore(t.createTextNode(\"\"),i.next),i.claim&&ot(i.next,\"\")&&(i.next=i.next.nextSibling),q(h,r.value,a,d=>{let l=X(d);p.data!==l&&(p.data=l)});return}case\"el\":{let p=r.tag,d=p===\"svg\"?pt:b,l,f=i.claim&&i.next?.nodeType===1&&i.next.localName===p;f?(l=i.next,i.next=l.nextSibling):(l=d?t.createElementNS(d,p):t.createElement(p),r.class&&l.setAttribute(\"class\",r.class),i.parent.insertBefore(l,i.next));for(let m in r.attrs){let k=r.attrs[m],B=$t.has(m)&&m in l;f&&!Y(k)||q(h,k,a,z=>{if(B){let L=l,lt=m===\"value\"?X(z):z===!0;L[m]!==lt&&(L[m]=lt);return}let G=Ot(m,z);G===null?l.removeAttribute(m):l.getAttribute(m)!==G&&l.setAttribute(m,G)})}et(l,r,a,h);for(let m in r.on){let k=r.on[m];l.addEventListener(m,B=>{m===\"submit\"&&B.preventDefault(),Z({type:\"event\",event:k.event,payload:O(k.payload,a,bt(B))})},wt.has(m)?{passive:!0}:void 0)}if(p===\"textarea\")return;let v={parent:l,next:f?l.firstChild:null,claim:f},N=p===\"foreignObject\"?null:d;for(let m of r.children)D(m,a,v,h,N);return}case\"when\":{let p=()=>j?r.states.includes(j.state):!1;A(i,h,p,(d,l)=>{if(p())for(let f of r.children)D(f,a,d,l,b)},r.motion);return}case\"query\":{let p=a;A(i,h,()=>{let l=_t(r.query,O(r.input,a)),f=x.get(l);return f&&p!==a&&p.splice(0,p.length,...a,f.ok?f.value:f.data),`${l}|${f?f.ok?\"ready\":r.failed[f.error]?f.error:\"Unexpected\":\"\"}`},(l,f)=>{let v=O(r.input,a),N=_t(r.query,v),m=x.get(N);if(p=a,!m){l.claim||R(N,r.query,v),r.pending&&D(r.pending,a,l,f,b);return}let k=m.ok?r.ready:r.failed[m.error]??r.failed.Unexpected;p=[...a,m.ok?m.value:m.data],k&&D(k,p,l,f,b)});return}case\"each\":V(r,a,i,h,b);return;case\"widget\":$(r,a,i,h);return;case\"if\":{let p=()=>O({test:r.test},a)===!0;A(i,h,p,(d,l)=>{let f=p()?r.ifTrue:r.ifFalse;for(let v of f)D(v,a,d,l,b)},r.motion);return}case\"html\":{let p=I(i,\"[\"),d;if(i.claim){for(;i.next&&!ot(i.next,\"]\");)i.next=i.next.nextSibling;d=i.next??i.parent.appendChild(t.createComment(\"]\")),i.next=d.nextSibling}else d=I(i,\"]\");let l=i.claim?X(O(r.value,a)):null;q(h,r.value,a,f=>{let v=X(f);if(v===l)return;l=v,Et(p,d);let N=t.createElement(\"template\");N.innerHTML=v,d.parentNode.insertBefore(N.content,d)});return}case\"global\":{let p=I(i,\"g\"),d=r.target===\"window\"?t.defaultView:t,l=[];for(let f in r.on){let v=r.on[f],N=k=>Z({type:\"event\",event:v.event,payload:O(v.payload,a,bt(k))}),m=wt.has(f)?{passive:!0}:void 0;d.addEventListener(f,N,m),l.push(()=>d.removeEventListener(f,N))}M.add({el:p,stop:()=>l.forEach(f=>f())});return}default:ct(i)}},et=(r,a,i,h)=>{let b=Object.entries(a.toggle);if(b.length){let p=()=>{let l=[];for(let[f,v]of b)O(v,i)===!0&&l.push(f);return At(a.class,l)},d=p();r.getAttribute(\"class\")!==d&&r.setAttribute(\"class\",d),b.some(([,l])=>Y(l))&&h.push(()=>{let l=p();l!==d&&(d=l,r.setAttribute(\"class\",l))})}for(let p in a.vars)q(h,a.vars[p],i,d=>{let l=r.style;d===null||d===\"\"?l.removeProperty(p):l.getPropertyValue(p)!==X(d)&&l.setProperty(p,X(d))})},$=(r,a,i,h)=>{let b=e.widgets?.[r.widget],p=b?.tag??\"div\",d,l=i.claim&&i.next?.nodeType===1&&i.next.localName===p;if(l?(d=i.next,i.next=d.nextSibling):(d=t.createElement(p),r.class&&d.setAttribute(\"class\",r.class),i.parent.insertBefore(d,i.next)),et(d,r,a,h),!l||b?.wraps){let f={parent:d,next:l?d.firstChild:null,claim:l};for(let v of r.children)D(v,a,f,h,null)}!b||!e.loadWidget||!e.mountWidget||e.mountWidget({el:d,ref:b,name:r.widget,doc:t,props:()=>O(r.props,a),emit:(f,v)=>{let N=r.on[f];N&&Z({type:\"event\",event:N.event,payload:O(N.payload,a,m=>m===\"detail\"?v:null)})},load:e.loadWidget,watch:f=>h.push(f),own:f=>M.add({el:d,stop:f}),same:P})},J=new Set,R=(r,a,i)=>{!e.onQuery||J.has(r)||(J.add(r),e.onQuery(a,i).then(h=>{J.delete(r),x.set(r,h);for(let b of C)b();y()}))},y=()=>{for(let r=C.length-1;r>=0;r--)_.delete(C[r])&&C.splice(r,1);for(let r of M)r.el.isConnected||(r.stop(),M.delete(r))},A=(r,a,i,h,b=null)=>{let p=I(r,\"[\"),d=i(),l=[];h(r,l);let f=I(r,\"]\");a.push(()=>{let v=i();if(v===d){for(let B of l)B();return}d=v,l=[];let N=e.motion;if(!b||!N||N.reduced(t)){Et(p,f),h({parent:f.parentNode,next:f,claim:!1},l);return}N.leave(p.nextSibling===f?[]:tt(p.nextSibling,f.previousSibling),b);let[m,k]=vt({parent:f.parentNode,next:f,claim:!1},()=>h({parent:f.parentNode,next:f,claim:!1},l));m&&k&&m!==f&&N.enter(tt(m,k),b)})},V=(r,a,i,h,b)=>{let p=I(i,\"[\"),d=m=>{let k=r.key===null?m:F(m,[r.key]);return typeof k==\"string\"?`s${k}`:JSON.stringify(k)},l=()=>{let m=O(r.source,a);return Array.isArray(m)?m:[]},f=(m,k)=>{let B=[...a,m],z=[],[G,L]=vt(k,()=>D(r.item,B,k,z,b));return{key:d(m),value:m,scope:B,block:z,first:G,last:L}},v=l().map(m=>f(m,i)),N=I(i,\"]\");h.push(()=>{let m=e.motion,k=r.motion&&m&&!m.reduced(t)?r.motion:null,B=k?new Map(v.flatMap(S=>S.first.nodeType===1?[[S,S.first.getBoundingClientRect()]]:[])):null,z=new Map(v.map(S=>[S.key,S])),G=new Set,L=[];for(let S of l()){let H=d(S),nt=z.get(H);if(nt){z.delete(H),nt.value=S,nt.scope.splice(0,nt.scope.length,...a,S);for(let ft of nt.block)ft();L.push(nt)}else{let ft=f(S,{parent:t.createDocumentFragment(),next:null,claim:!1});G.add(ft),L.push(ft)}}for(let S of z.values())if(k)m.leave(tt(S.first,S.last),k);else for(let H of tt(S.first,S.last))H.remove();let lt=N.parentNode,dt=p.nextSibling??N;for(let S of L)if(S.first===dt)dt=S.last.nextSibling??N;else for(let H of tt(S.first,S.last))lt.insertBefore(H,dt);if(v=L,!!k)for(let S of L)if(G.has(S))m.enter(tt(S.first,S.last),k);else{let H=B?.get(S);H&&m.flip(S.first,H,k)}})},U=r=>{for(let a of r.effects)if(a.type===\"navigate\")e.onNavigate?.(a.url);else if(a.type===\"timer\"){let i=setTimeout(()=>{T.delete(i),Z({type:\"timer\",entry:a.entry,ms:a.ms})},a.ms);T.add(i)}else e.onInvoke?.(a.effect,a.input).then(i=>Z(i.ok?{type:\"done\",entry:a.entry,result:i.value}:{type:\"failed\",entry:a.entry,error:i.error,data:i.data}))};function Z(r){if(!n||!j)return;let a=xt(n,j,r);if(a.taken){j=a.snapshot;for(let i of C)i();y(),U(a)}}return{attach(r,a,i,h,b){let p={parent:r,next:a,claim:b},d=r.namespaceURI===pt?pt:null,l=[],[f,v]=vt(p,()=>D(i,h,p,l,d));f&&v&&w.push([f,v]);let N=f?.isConnected===!0,m=()=>{if(N&&!f.isConnected)_.add(m);else for(let k of l)k()};C.push(m)},start(){g&&U(g),g=null},sync:()=>{for(let r of C)r();y()},dispatch:Z,snapshot:()=>j,destroy:()=>{for(let r of T)clearTimeout(r);T.clear();for(let r of M)r.stop();M.clear(),C.length=0;for(let[r,a]of w)for(let i of tt(r,a))i.remove();w.length=0}}}var Vt=function(t,e){return typeof t==\"string\"&&/^\\.\\.?\\//.test(t)?t.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i,function(n,o,s,c,u){return o?e?\".jsx\":\".js\":s&&(!c||!u)?n:s+c+\".\"+u.toLowerCase()+\"js\"}):t},Mt=t=>t.islands.flatMap(([e,n,...o])=>{let s=t.ids[e],c=s.slice(0,s.indexOf(\".\"));return o.map(u=>({feature:c,node:s,scope:[...Array(n).fill(null),...u]}))}),It=t=>new URL(t,import.meta.url),Rt=async(t,e,n)=>{let o=JSON.stringify({effect:t,input:e,keys:n}),s=at.size?await(await import(\"./chunk-7HUHKEFT.js\")).encode(o,e,at):o;return await(await fetch(It(\"effect\"),{method:\"POST\",headers:typeof s==\"string\"?{\"content-type\":\"application/json\"}:{},body:s})).json()},zt=async(t,e)=>await(await fetch(It(\"query\"),{method:\"POST\",headers:{\"content-type\":\"application/json\"},body:JSON.stringify({query:t,input:e})})).json(),Lt=async t=>(await import(Vt(t))).default,Ht=async t=>(await import(Vt(t))).fns;async function Ut(t,{transport:e=Rt,query:n=zt,live:o,loadFns:s=Ht,loadWidget:c=Lt}={}){let u=new Map,x=t.getElementById(\"hozu-payload\");if(!x?.textContent)return u;let w={data:new Map,versions:new Map},T={},g={},j={},C=new Map,_={},M=new Map,E=($,J)=>{let R=$+JSON.stringify(J),y=M.get(R);return y||(y=n($,J).finally(()=>M.delete(R)),M.set(R,y)),y},O=async($,J)=>{let{result:R,refreshed:y}=await e($,J,[...w.data.keys()]);for(let[A,V]of y)w.data.set(A,V),w.versions.set(A,(w.versions.get(A)??0)+1);if(y.length)for(let A of u.values())A.sync();return R},q=null,I={doc:t,apps:u,islands:Mt,async mount($,J){!_.motion&&$.motion&&(_.motion=await import(\"./chunk-HGZ7KQUC.js\")),$.visible&&import(\"./chunk-DRLGN2D4.js\").then(y=>y.watch(t)),!_.mountWidget&&Object.keys($.widgets).length&&(_.mountWidget=(await import(\"./chunk-Z7ZFHZVV.js\")).mountWidget),!_.fns&&$.fns&&(Object.assign(T,await s($.fns)),_.fns=!0),Object.assign(g,$.widgets),Object.assign(j,$.routes);for(let[y,A]of $.data)w.data.has(y)&&w.versions.set(y,(w.versions.get(y)??0)+1),w.data.set(y,A);let R=[];for(let[y,A]of Object.entries($.features)){if(u.has(y))continue;let V=$.snapshots?.[y],U=Ct(t,{machine:A?yt({id:y,machine:A},T,j):null,payload:w,params:$.params,search:$.search,...V?{snapshot:V}:{},fns:T,widgets:g,routes:j,get motion(){return _.motion},get mountWidget(){return _.mountWidget},loadWidget:c,onQuery:E,onInvoke:O,onNavigate:Z=>t.defaultView?.location.assign(Z)});u.set(y,U),R.push(U)}Mt($).forEach((y,A)=>{let V=J[A],U=$.nodes[y.node];V?.parentNode&&U&&u.get(y.feature)?.attach(V.parentNode,V.nextSibling,U,y.scope,!0)});for(let y of u.values())y.sync();for(let y of R)y.start();for(let[y,A]of Object.entries($.live??{}))C.set(y,A);C.size&&!_.live&&(_.live=!0,(o??(await import(\"./chunk-FZY6ENWQ.js\")).liveStream(t))(async y=>{let A=[...C].filter(([,V])=>V.tags.some(U=>y.includes(U)));for(let[V,U]of A)w.data.set(V,await n(U.query,U.input));if(A.length)for(let V of u.values())V.sync()}))}},ct=JSON.parse(x.textContent),D=[],et=t.createTreeWalker(t.body??t,128);for(;et.nextNode();)et.currentNode.data===\"i\"&&D.push(et.currentNode);return await I.mount(ct,D),ct.soft&&import(\"./navigate.js\").then($=>$.soft(I)),u}Ut(document);\n","navigate.js":"var b='title,meta[name=description],meta[name=robots],link[rel=canonical],meta[property],script[type=\"application/ld+json\"]',S={\"?\":\"(?:/[^/]+)?\",\"+\":\"(?:/[^/]+)+\",\"*\":\"(?:/[^/]+)*\"},A=r=>{let n=0,t=r.split(/(\\/:[A-Za-z]\\w*[?*+]?)/).map((o,a)=>{if(a%2===0)return o.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\");let s=o.at(-1);return n+=s===\"+\"||s===\"*\"?1.01:1,S[s]??\"/[^/]+\"}).join(\"\");return{pattern:new RegExp(`^${t.replace(/\\/$/,\"\")}/?$`),keys:n}};function O(r,n){let t=null,o=1/0;for(let[a,s]of Object.entries(r)){let{pattern:i,keys:f}=A(s);f<o&&i.test(n)&&(t=a,o=f)}return t}function E(r){let n=[],t=(r.ownerDocument??r).createTreeWalker(r,128),o=null;for(;t.nextNode();){let a=t.currentNode;a.data===\"i\"?n.push({marker:a,view:o}):a.data.startsWith(\"v:\")?o=a.data.slice(2):a.data===\"/v\"&&(o=null)}return n}function C(r,n,t,o){n.islands(t).forEach((a,s)=>{let i=o[s]?.view;if(!i)return;let f=r.views.get(i)??new Set;f.add(a.feature),r.views.set(i,f)}),r.soft=t.soft??{},Object.assign(r.routes,t.routes)}function k(r){let n=new Map,t=null;for(let o of[...r.childNodes])o.nodeType===8&&o.data.startsWith(\"v:\")?(t=[o],n.set(o.data.slice(2),t)):t&&(t.push(o),o.nodeType===8&&o.data===\"/v\"&&(t=null));return n}async function z(r,n,t,o){let{doc:a,apps:s}=r,{views:i}=n,f=t.getElementById(\"hozu-payload\"),y=k(t.body),c=k(a.body);if(!f?.textContent||o.some(e=>!y.has(e)||!c.has(e)))return!1;let p=JSON.parse(f.textContent),d=new Set(o),m=E(t.body),w=new Set;for(let e of d)for(let l of i.get(e)??[])w.add(l);r.islands(p).forEach((e,l)=>{let u=m[l]?.view;(u==null||!d.has(u))&&w.add(e.feature)});for(let[e,l]of s)w.has(e)||(l.destroy(),s.delete(e));for(let e of[...i.keys()])d.has(e)||i.delete(e);let v=a.getElementById(\"hozu-payload\"),h=0,g=[...c.keys()].filter(e=>d.has(e));for(let[e,l]of y){if(d.has(e)){h++;continue}let u=g[h]?c.get(g[h])[0]:v;for(let x of l)a.body.insertBefore(x,u)}for(let[e,l]of c)if(!d.has(e))for(let u of l)u.remove();v&&(v.textContent=f.textContent);for(let e of a.head.querySelectorAll(b))e.remove();for(let e of t.head.querySelectorAll(b))a.head.append(e);return a.documentElement.lang=t.documentElement.lang,await r.mount(p,m.map(e=>e.view!==null&&d.has(e.view)?void 0:e.marker)),C(n,r,p,m),!0}function I(r){let{doc:n}=r,t=n.defaultView,o=n.getElementById(\"hozu-payload\");if(!t?.navigation||!o?.textContent)return;let a={views:new Map,soft:{},routes:{}};C(a,r,JSON.parse(o.textContent),E(n.body));let s=null,i=!1,f=y=>{s||(s=n.createElement(\"div\"),s.setAttribute(\"aria-live\",\"polite\"),s.style.cssText=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap\",n.body.append(s)),s.textContent=y};t.navigation.addEventListener(\"navigate\",y=>{let c=y;if(i||!c.canIntercept||c.hashChange||c.downloadRequest!==null||c.formData||c.navigationType===\"reload\")return;let p=new URL(c.destination.url);if(p.origin!==t.location.origin)return;let d=O(a.routes,p.pathname),m=d?a.soft[d]:void 0;if(!m)return;let w=()=>{i=!0,t.location.replace(p.href)};c.intercept({handler:async()=>{let v=n.documentElement;v.setAttribute(\"data-hozu-navigating\",\"\");try{let h=await t.fetch(p.href,{headers:{accept:\"text/html\"}}),g=h.headers.get(\"content-type\")??\"\";if(h.status!==200||h.redirected||!g.includes(\"text/html\"))return w();let e=new t.DOMParser().parseFromString(await h.text(),\"text/html\"),l=!0,u=async()=>{l=await z(r,a,e,m)},x=n.startViewTransition;if(x?await x.call(n,u).updateCallbackDone:await u(),!l)return w();f(n.title)}catch{w()}finally{v.removeAttribute(\"data-hozu-navigating\")}}})})}export{E as islandsIn,k as ranges,O as routeOf,I as soft,z as swap,C as track};\n"}
@@ -0,0 +1,56 @@
1
+ import type { Json, MachineIR, ViewNode } from '@hozu/core/ir';
2
+ import { type Snapshot } from '@hozu/machine';
3
+ import { type App, type Result, type WidgetRef, type WidgetSetup } from './mount.ts';
4
+ declare global {
5
+ var __HOZU_DEV__: boolean | undefined;
6
+ }
7
+ export interface IslandRef {
8
+ feature: string;
9
+ node: string;
10
+ scope: Json[];
11
+ }
12
+ export interface PagePayload {
13
+ ids: string[];
14
+ islands: [node: number, lead: number, ...tails: Json[][]][];
15
+ motion?: true;
16
+ visible?: true;
17
+ data: [string, Result][];
18
+ features: Record<string, MachineIR | null>;
19
+ nodes: Record<string, ViewNode>;
20
+ fns: string | null;
21
+ params: Json;
22
+ search: Json;
23
+ snapshots?: Record<string, Snapshot>;
24
+ widgets: Record<string, WidgetRef>;
25
+ routes: Record<string, string>;
26
+ live: Record<string, LiveQuery>;
27
+ soft?: Record<string, string[]>;
28
+ }
29
+ export interface LiveQuery {
30
+ query: string;
31
+ input: Json;
32
+ tags: string[];
33
+ }
34
+ export interface EffectResponse {
35
+ result: Result;
36
+ refreshed: [string, Result][];
37
+ }
38
+ export type Transport = (effect: string, input: Json, keys: string[]) => Promise<EffectResponse>;
39
+ export declare const fetchTransport: Transport;
40
+ export type QueryTransport = (query: string, input: Json) => Promise<Result>;
41
+ export declare const fetchQuery: QueryTransport;
42
+ export interface HydrateOptions {
43
+ transport?: Transport;
44
+ query?: QueryTransport;
45
+ live?: (onTags: (tags: string[]) => void) => void;
46
+ loadFns?: (url: string) => Promise<Record<string, never>>;
47
+ loadWidget?: (url: string) => Promise<WidgetSetup>;
48
+ }
49
+ export interface Session {
50
+ doc: Document;
51
+ apps: Map<string, App>;
52
+ mount(payload: PagePayload, markers: (Comment | undefined)[]): Promise<void>;
53
+ islands(payload: PagePayload): IslandRef[];
54
+ }
55
+ export declare function hydrate(doc: Document, { transport, query, live, loadFns, loadWidget, }?: HydrateOptions): Promise<Map<string, App>>;
56
+ //# sourceMappingURL=hydrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydrate.d.ts","sourceRoot":"","sources":["../src/hydrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,163 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ import { compileMachine } from '@hozu/machine';
10
+ import { uploads } from './dom.js';
11
+ import { createApp, } from './mount.js';
12
+ const islandsOf = (payload) => payload.islands.flatMap(([n, lead, ...tails]) => {
13
+ const node = payload.ids[n];
14
+ const feature = node.slice(0, node.indexOf('.'));
15
+ return tails.map((tail) => ({ feature, node, scope: [...Array(lead).fill(null), ...tail] }));
16
+ });
17
+ const endpoint = (name) => new URL(name, import.meta.url);
18
+ export const fetchTransport = async (effect, input, keys) => {
19
+ const json = JSON.stringify({ effect, input, keys });
20
+ const body = uploads.size ? await (await import('./uploads.js')).encode(json, input, uploads) : json;
21
+ const response = await fetch(endpoint('effect'), {
22
+ method: 'POST',
23
+ headers: typeof body === 'string' ? { 'content-type': 'application/json' } : {},
24
+ body,
25
+ });
26
+ return (await response.json());
27
+ };
28
+ export const fetchQuery = async (query, input) => {
29
+ const response = await fetch(endpoint('query'), {
30
+ method: 'POST',
31
+ headers: { 'content-type': 'application/json' },
32
+ body: JSON.stringify({ query, input }),
33
+ });
34
+ return (await response.json());
35
+ };
36
+ const importWidget = async (url) => (await import(__rewriteRelativeImportExtension(/* @vite-ignore */ url))).default;
37
+ const importFns = async (url) => (await import(__rewriteRelativeImportExtension(/* @vite-ignore */ url))).fns;
38
+ export async function hydrate(doc, { transport = fetchTransport, query = fetchQuery, live, loadFns = importFns, loadWidget = importWidget, } = {}) {
39
+ const apps = new Map();
40
+ const script = doc.getElementById('hozu-payload');
41
+ if (!script?.textContent)
42
+ return apps;
43
+ const shared = { data: new Map(), versions: new Map() };
44
+ const fns = {};
45
+ const widgets = {};
46
+ const routes = {};
47
+ const liveKeys = new Map();
48
+ const loaded = {};
49
+ const inflight = new Map();
50
+ const onQuery = (q, input) => {
51
+ const key = q + JSON.stringify(input);
52
+ let pending = inflight.get(key);
53
+ if (!pending) {
54
+ pending = query(q, input).finally(() => inflight.delete(key));
55
+ inflight.set(key, pending);
56
+ }
57
+ return pending;
58
+ };
59
+ const onInvoke = async (effect, input) => {
60
+ const { result, refreshed } = await transport(effect, input, [...shared.data.keys()]);
61
+ for (const [key, value] of refreshed) {
62
+ shared.data.set(key, value);
63
+ shared.versions.set(key, (shared.versions.get(key) ?? 0) + 1);
64
+ }
65
+ if (refreshed.length)
66
+ for (const app of apps.values())
67
+ app.sync();
68
+ return result;
69
+ };
70
+ const dev = globalThis.__HOZU_DEV__
71
+ ? { restore: (await import('./dev.js')).restore(doc), machines: new Map() }
72
+ : null;
73
+ const session = {
74
+ doc,
75
+ apps,
76
+ islands: islandsOf,
77
+ async mount(payload, markers) {
78
+ if (!loaded.motion && payload.motion)
79
+ loaded.motion = await import('./motion.js');
80
+ if (payload.visible)
81
+ void import('./visible.js').then((m) => m.watch(doc));
82
+ if (!loaded.mountWidget && Object.keys(payload.widgets).length)
83
+ loaded.mountWidget = (await import('./widget.js')).mountWidget;
84
+ if (!loaded.fns && payload.fns) {
85
+ Object.assign(fns, await loadFns(payload.fns));
86
+ loaded.fns = true;
87
+ }
88
+ Object.assign(widgets, payload.widgets);
89
+ Object.assign(routes, payload.routes);
90
+ for (const [key, value] of payload.data) {
91
+ if (shared.data.has(key))
92
+ shared.versions.set(key, (shared.versions.get(key) ?? 0) + 1);
93
+ shared.data.set(key, value);
94
+ }
95
+ const created = [];
96
+ for (const [id, machine] of Object.entries(payload.features)) {
97
+ if (apps.has(id))
98
+ continue;
99
+ const snapshot = (globalThis.__HOZU_DEV__ && dev?.restore(id, machine)) || payload.snapshots?.[id];
100
+ if (globalThis.__HOZU_DEV__)
101
+ dev?.machines.set(id, machine);
102
+ const app = createApp(doc, {
103
+ machine: machine ? compileMachine({ id, machine }, fns, routes) : null,
104
+ payload: shared,
105
+ params: payload.params,
106
+ search: payload.search,
107
+ ...(snapshot ? { snapshot } : {}),
108
+ fns,
109
+ widgets,
110
+ routes,
111
+ get motion() {
112
+ return loaded.motion;
113
+ },
114
+ get mountWidget() {
115
+ return loaded.mountWidget;
116
+ },
117
+ loadWidget,
118
+ onQuery,
119
+ onInvoke,
120
+ onNavigate: (url) => doc.defaultView?.location.assign(url),
121
+ });
122
+ apps.set(id, app);
123
+ created.push(app);
124
+ }
125
+ islandsOf(payload).forEach((island, i) => {
126
+ const at = markers[i];
127
+ const node = payload.nodes[island.node];
128
+ if (at?.parentNode && node)
129
+ apps.get(island.feature)?.attach(at.parentNode, at.nextSibling, node, island.scope, true);
130
+ });
131
+ for (const app of apps.values())
132
+ app.sync();
133
+ for (const app of created)
134
+ app.start();
135
+ for (const [key, l] of Object.entries(payload.live ?? {}))
136
+ liveKeys.set(key, l);
137
+ if (liveKeys.size && !loaded.live) {
138
+ loaded.live = true;
139
+ (live ?? (await import('./live.js')).liveStream(doc))(async (tags) => {
140
+ const stale = [...liveKeys].filter(([, l]) => l.tags.some((t) => tags.includes(t)));
141
+ for (const [key, l] of stale)
142
+ shared.data.set(key, await query(l.query, l.input));
143
+ if (stale.length)
144
+ for (const app of apps.values())
145
+ app.sync();
146
+ });
147
+ }
148
+ },
149
+ };
150
+ const payload = JSON.parse(script.textContent);
151
+ const markers = [];
152
+ const walker = doc.createTreeWalker(doc.body ?? doc, 128);
153
+ while (walker.nextNode())
154
+ if (walker.currentNode.data === 'i')
155
+ markers.push(walker.currentNode);
156
+ await session.mount(payload, markers);
157
+ if (globalThis.__HOZU_DEV__ && dev)
158
+ (await import('./dev.js')).expose(doc, apps, dev.machines);
159
+ if (payload.soft)
160
+ void import('./navigate.js').then((m) => m.soft(session));
161
+ return apps;
162
+ }
163
+ //# sourceMappingURL=hydrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydrate.js","sourceRoot":"","sources":["../src/hydrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { attrText, classText, domField, SVG_NS, styleText, text } from './dom.ts';
2
+ export type { EffectResponse, HydrateOptions, IslandRef, LiveQuery, PagePayload, QueryTransport, Transport, } from './hydrate.ts';
3
+ export { fetchQuery, fetchTransport, hydrate } from './hydrate.ts';
4
+ export * as motion from './motion.ts';
5
+ export type { App, AppOptions, Motion, Mounted, MountOptions, Payload, Result, Store, WidgetRef, WidgetSetup, } from './mount.ts';
6
+ export { createApp, mount, payloadKey } from './mount.ts';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AACjF,YAAY,EACV,cAAc,EACd,cAAc,EACd,SAAS,EACT,SAAS,EACT,WAAW,EACX,cAAc,EACd,SAAS,GACV,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,YAAY,EACV,GAAG,EACH,UAAU,EACV,MAAM,EACN,OAAO,EACP,YAAY,EACZ,OAAO,EACP,MAAM,EACN,KAAK,EACL,SAAS,EACT,WAAW,GACZ,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export { attrText, classText, domField, SVG_NS, styleText, text } from './dom.js';
2
+ export { fetchQuery, fetchTransport, hydrate } from './hydrate.js';
3
+ export * as motion from './motion.js';
4
+ export { createApp, mount, payloadKey } from './mount.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAUjF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAarC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA"}
package/dist/live.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare const liveStream: (doc: Document) => (onTags: (tags: string[]) => void) => void;
2
+ //# sourceMappingURL=live.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,QAAS,QAAQ,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,SAM7E,CAAA"}
package/dist/live.js ADDED
@@ -0,0 +1,7 @@
1
+ export const liveStream = (doc) => (onTags) => {
2
+ const Source = doc.defaultView?.EventSource;
3
+ if (!Source)
4
+ return;
5
+ new Source(new URL('live', import.meta.url)).addEventListener('message', (e) => onTags(JSON.parse(e.data)));
6
+ };
7
+ //# sourceMappingURL=live.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.js","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAa,EAAE,EAAE,CAAC,CAAC,MAAgC,EAAE,EAAE;IAChF,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,WAAW,CAAA;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAM;IACnB,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAC7E,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,CAAkB,CAAC,IAAI,CAAC,CAAC,CAC7C,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare const reduced: (doc: Document) => boolean;
2
+ export declare function enter(nodes: Node[], name: string): void;
3
+ export declare function leave(nodes: Node[], name: string): void;
4
+ export declare function flip(el: HTMLElement, before: DOMRect, name: string): void;
5
+ //# sourceMappingURL=motion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion.d.ts","sourceRoot":"","sources":["../src/motion.ts"],"names":[],"mappings":"AAuCA,eAAO,MAAM,OAAO,QAAS,QAAQ,YAC+C,CAAA;AAiBpF,wBAAgB,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,QAEhD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,QAIhD;AAED,wBAAgB,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,QAalE"}
package/dist/motion.js ADDED
@@ -0,0 +1,78 @@
1
+ const seconds = (list) => list.split(',').map((s) => Number.parseFloat(s) * (s.trim().endsWith('ms') ? 1 : 1000) || 0);
2
+ function duration(el) {
3
+ const cs = el.ownerDocument.defaultView?.getComputedStyle(el);
4
+ if (!cs)
5
+ return 0;
6
+ const longest = (d, delay) => {
7
+ const a = seconds(d);
8
+ const b = seconds(delay);
9
+ return Math.max(0, ...a.map((x, i) => x + (b[i % b.length] ?? 0)));
10
+ };
11
+ return Math.max(longest(cs.transitionDuration, cs.transitionDelay), longest(cs.animationDuration, cs.animationDelay));
12
+ }
13
+ const frame = (el, run) => {
14
+ const win = el.ownerDocument.defaultView;
15
+ if (!win?.requestAnimationFrame)
16
+ return run();
17
+ win.requestAnimationFrame(() => win.requestAnimationFrame(run));
18
+ };
19
+ function after(el, run) {
20
+ const ms = duration(el);
21
+ if (ms === 0)
22
+ return run();
23
+ let done = false;
24
+ const finish = () => {
25
+ if (done)
26
+ return;
27
+ done = true;
28
+ el.removeEventListener('transitionend', finish);
29
+ el.removeEventListener('animationend', finish);
30
+ run();
31
+ };
32
+ el.addEventListener('transitionend', finish);
33
+ el.addEventListener('animationend', finish);
34
+ setTimeout(finish, ms + 50);
35
+ }
36
+ export const reduced = (doc) => doc.defaultView?.matchMedia?.('(prefers-reduced-motion: reduce)').matches === true;
37
+ function phase(el, name, stage, done) {
38
+ const from = `${name}-${stage}-from`;
39
+ const active = `${name}-${stage}-active`;
40
+ const to = `${name}-${stage}-to`;
41
+ el.classList.add(from, active);
42
+ frame(el, () => {
43
+ el.classList.remove(from);
44
+ el.classList.add(to);
45
+ after(el, () => {
46
+ el.classList.remove(active, to);
47
+ done();
48
+ });
49
+ });
50
+ }
51
+ export function enter(nodes, name) {
52
+ for (const n of nodes)
53
+ if (n.nodeType === 1)
54
+ phase(n, name, 'enter', () => { });
55
+ }
56
+ export function leave(nodes, name) {
57
+ for (const n of nodes)
58
+ if (n.nodeType === 1)
59
+ phase(n, name, 'leave', () => n.remove());
60
+ else
61
+ n.remove();
62
+ }
63
+ export function flip(el, before, name) {
64
+ const now = el.getBoundingClientRect();
65
+ const dx = before.left - now.left;
66
+ const dy = before.top - now.top;
67
+ if (!dx && !dy)
68
+ return;
69
+ const style = el.style;
70
+ style.transitionDuration = '0s';
71
+ style.transform = `translate(${dx}px, ${dy}px)`;
72
+ void el.offsetWidth;
73
+ el.classList.add(`${name}-move`);
74
+ style.transitionDuration = '';
75
+ style.transform = '';
76
+ after(el, () => el.classList.remove(`${name}-move`));
77
+ }
78
+ //# sourceMappingURL=motion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion.js","sourceRoot":"","sources":["../src/motion.ts"],"names":[],"mappings":"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"}