@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,65 @@
1
+ import type { Json, ViewIR, ViewNode } from '@hozu/core/ir';
2
+ import { type CompiledMachine, type Input, type Snapshot } from '@hozu/machine';
3
+ export type Motion = typeof import('./motion.ts');
4
+ import type { WidgetHost } from './widget.ts';
5
+ export type Result = {
6
+ ok: true;
7
+ value: Json;
8
+ } | {
9
+ ok: false;
10
+ error: string;
11
+ data: Json;
12
+ };
13
+ export type Payload = Map<string, Result>;
14
+ export interface Store {
15
+ data: Payload;
16
+ versions: Map<string, number>;
17
+ }
18
+ export interface AppOptions {
19
+ machine: CompiledMachine | null;
20
+ payload: Payload | Store;
21
+ fns?: Record<string, (input: never) => unknown>;
22
+ params?: Json;
23
+ search?: Json;
24
+ snapshot?: Snapshot;
25
+ onInvoke?: (effect: string, input: Json) => Promise<Result>;
26
+ onQuery?: (query: string, input: Json) => Promise<Result>;
27
+ onNavigate?: (url: string) => void;
28
+ widgets?: Record<string, WidgetRef>;
29
+ routes?: Record<string, string>;
30
+ motion?: Motion | undefined;
31
+ mountWidget?: ((host: WidgetHost) => void) | undefined;
32
+ loadWidget?: (url: string) => Promise<WidgetSetup>;
33
+ }
34
+ export interface WidgetRef {
35
+ url: string;
36
+ tag: string;
37
+ load: 'eager' | 'visible' | 'idle';
38
+ wraps: boolean;
39
+ }
40
+ export type WidgetSetup = (context: {
41
+ el: HTMLElement;
42
+ props: unknown;
43
+ emit(event: string, detail: unknown): void;
44
+ signal: AbortSignal;
45
+ }) => {
46
+ update?(props: unknown): void;
47
+ destroy?(): void;
48
+ } | undefined;
49
+ export interface MountOptions extends AppOptions {
50
+ view: ViewIR;
51
+ }
52
+ export interface App {
53
+ attach(parent: Node, before: Node | null, node: ViewNode, scope: Json[], claim: boolean): void;
54
+ start(): void;
55
+ sync(): void;
56
+ dispatch(input: Input): void;
57
+ snapshot(): Snapshot | null;
58
+ destroy(): void;
59
+ }
60
+ export type Mounted = Omit<App, 'attach' | 'start'>;
61
+ export declare const payloadKey: (query: string, input: Json) => string;
62
+ export declare const store: (payload: Payload | Store) => Store;
63
+ export declare function mount(target: Element, options: MountOptions): Mounted;
64
+ export declare function createApp(doc: Document, options: AppOptions): App;
65
+ //# sourceMappingURL=mount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"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"}
package/dist/mount.js ADDED
@@ -0,0 +1,550 @@
1
+ import { canonicalStringify } from '@hozu/core/canonical';
2
+ import { compileValue, equal, getIn, init, transition, } from '@hozu/machine';
3
+ import { attrText, classText, domField, passive, properties, SVG_NS, text } from './dom.js';
4
+ const guardReads = (g) => {
5
+ switch (g.op) {
6
+ case 'and':
7
+ case 'or':
8
+ return g.args.some(guardReads);
9
+ case 'not':
10
+ return guardReads(g.arg);
11
+ case 'fn':
12
+ return reads(g.arg);
13
+ default:
14
+ return reads(g.left) || reads(g.right);
15
+ }
16
+ };
17
+ const reads = (v) => 'ref' in v
18
+ ? v.ref === 'context' || v.ref === 'binding'
19
+ : 'object' in v
20
+ ? Object.values(v.object).some(reads)
21
+ : 'fn' in v
22
+ ? reads(v.arg)
23
+ : 'test' in v && guardReads(v.test);
24
+ export const payloadKey = (query, input) => query + canonicalStringify(input);
25
+ export const store = (payload) => payload instanceof Map ? { data: payload, versions: new Map() } : payload;
26
+ export function mount(target, options) {
27
+ const app = createApp(target.ownerDocument, options);
28
+ app.attach(target, null, options.view.root, [], false);
29
+ app.start();
30
+ return app;
31
+ }
32
+ const isComment = (n, data) => n !== null && n.nodeType === 8 && n.data === data;
33
+ function range(first, last) {
34
+ const out = [first];
35
+ let n = first;
36
+ while (n !== last) {
37
+ n = n.nextSibling;
38
+ if (!n)
39
+ break;
40
+ out.push(n);
41
+ }
42
+ return out;
43
+ }
44
+ function span(c, run) {
45
+ const prev = c.next ? c.next.previousSibling : c.parent.lastChild;
46
+ run();
47
+ return [prev ? prev.nextSibling : c.parent.firstChild, c.next ? c.next.previousSibling : c.parent.lastChild];
48
+ }
49
+ function clear(start, end) {
50
+ while (start.nextSibling && start.nextSibling !== end)
51
+ start.nextSibling.remove();
52
+ }
53
+ export function createApp(doc, options) {
54
+ const { machine, fns = {}, params = null, search = null, routes = {} } = options;
55
+ const { data: payload } = store(options.payload);
56
+ const ranges = [];
57
+ const timers = new Set();
58
+ let first = machine ? (options.snapshot ? null : init(machine)) : null;
59
+ let snapshot = options.snapshot ?? first?.snapshot ?? null;
60
+ const root = [];
61
+ const detached = new Set();
62
+ const mounted = new Set();
63
+ const getters = new WeakMap();
64
+ const value = (v, scope, dom) => {
65
+ let get = getters.get(v);
66
+ if (!get) {
67
+ get = compileValue(v, fns);
68
+ getters.set(v, get);
69
+ }
70
+ return get({
71
+ context: snapshot?.context ?? null,
72
+ bindings: scope,
73
+ params,
74
+ search,
75
+ routes,
76
+ ...(dom ? { dom } : {}),
77
+ });
78
+ };
79
+ const bind = (block, v, scope, apply) => {
80
+ let last = value(v, scope);
81
+ apply(last);
82
+ if (reads(v))
83
+ block.push(() => {
84
+ const next = value(v, scope);
85
+ if (next === last)
86
+ return;
87
+ last = next;
88
+ apply(next);
89
+ });
90
+ };
91
+ const marker = (c, data) => {
92
+ if (c.claim && isComment(c.next, data)) {
93
+ const m = c.next;
94
+ c.next = m.nextSibling;
95
+ return m;
96
+ }
97
+ return c.parent.insertBefore(doc.createComment(data), c.next);
98
+ };
99
+ const skip = (c) => {
100
+ if (!c.claim || !isComment(c.next, '['))
101
+ return;
102
+ let depth = 0;
103
+ while (c.next) {
104
+ const n = c.next;
105
+ c.next = n.nextSibling;
106
+ if (isComment(n, '['))
107
+ depth++;
108
+ else if (isComment(n, ']') && --depth === 0)
109
+ return;
110
+ }
111
+ };
112
+ const render = (node, scope, c, block, ns) => {
113
+ switch (node.kind) {
114
+ case 'text': {
115
+ let t;
116
+ if (c.claim && c.next?.nodeType === 3) {
117
+ t = c.next;
118
+ c.next = t.nextSibling;
119
+ }
120
+ else
121
+ t = c.parent.insertBefore(doc.createTextNode(''), c.next);
122
+ if (c.claim && isComment(c.next, ''))
123
+ c.next = c.next.nextSibling;
124
+ bind(block, node.value, scope, (x) => {
125
+ const s = text(x);
126
+ if (t.data !== s)
127
+ t.data = s;
128
+ });
129
+ return;
130
+ }
131
+ case 'el': {
132
+ const tag = node.tag;
133
+ const space = tag === 'svg' ? SVG_NS : ns;
134
+ let el;
135
+ const claimed = c.claim && c.next?.nodeType === 1 && c.next.localName === tag;
136
+ if (claimed) {
137
+ el = c.next;
138
+ c.next = el.nextSibling;
139
+ }
140
+ else {
141
+ el = space ? doc.createElementNS(space, tag) : doc.createElement(tag);
142
+ if (node.class)
143
+ el.setAttribute('class', node.class);
144
+ c.parent.insertBefore(el, c.next);
145
+ }
146
+ for (const name in node.attrs) {
147
+ const v = node.attrs[name];
148
+ const prop = properties.has(name) && name in el;
149
+ if (claimed && !reads(v))
150
+ continue;
151
+ bind(block, v, scope, (x) => {
152
+ if (prop) {
153
+ const p = el;
154
+ const next = name === 'value' ? text(x) : x === true;
155
+ if (p[name] !== next)
156
+ p[name] = next;
157
+ return;
158
+ }
159
+ const s = attrText(name, x);
160
+ if (s === null)
161
+ el.removeAttribute(name);
162
+ else if (el.getAttribute(name) !== s)
163
+ el.setAttribute(name, s);
164
+ });
165
+ }
166
+ styling(el, node, scope, block);
167
+ for (const event in node.on) {
168
+ const send = node.on[event];
169
+ el.addEventListener(event, (e) => {
170
+ if (event === 'submit')
171
+ e.preventDefault();
172
+ dispatch({ type: 'event', event: send.event, payload: value(send.payload, scope, domField(e)) });
173
+ }, passive.has(event) ? { passive: true } : undefined);
174
+ }
175
+ if (tag === 'textarea')
176
+ return;
177
+ const inner = { parent: el, next: claimed ? el.firstChild : null, claim: claimed };
178
+ const childNs = tag === 'foreignObject' ? null : space;
179
+ for (const child of node.children)
180
+ render(child, scope, inner, block, childNs);
181
+ return;
182
+ }
183
+ case 'when': {
184
+ const visible = () => (snapshot ? node.states.includes(snapshot.state) : false);
185
+ region(c, block, visible, (cc, inner) => {
186
+ if (visible())
187
+ for (const child of node.children)
188
+ render(child, scope, cc, inner, ns);
189
+ }, node.motion);
190
+ return;
191
+ }
192
+ case 'query': {
193
+ let bound = scope;
194
+ const key = () => {
195
+ const k = payloadKey(node.query, value(node.input, scope));
196
+ const r = payload.get(k);
197
+ if (r && bound !== scope)
198
+ bound.splice(0, bound.length, ...scope, r.ok ? r.value : r.data);
199
+ return `${k}|${!r ? '' : r.ok ? 'ready' : node.failed[r.error] ? r.error : 'Unexpected'}`;
200
+ };
201
+ region(c, block, key, (cc, inner) => {
202
+ const input = value(node.input, scope);
203
+ const k = payloadKey(node.query, input);
204
+ const result = payload.get(k);
205
+ bound = scope;
206
+ if (!result) {
207
+ if (!cc.claim)
208
+ request(k, node.query, input);
209
+ if (node.pending)
210
+ render(node.pending, scope, cc, inner, ns);
211
+ return;
212
+ }
213
+ const branch = result.ok ? node.ready : (node.failed[result.error] ?? node.failed.Unexpected);
214
+ bound = [...scope, result.ok ? result.value : result.data];
215
+ if (branch)
216
+ render(branch, bound, cc, inner, ns);
217
+ });
218
+ return;
219
+ }
220
+ case 'each':
221
+ each(node, scope, c, block, ns);
222
+ return;
223
+ case 'widget':
224
+ widget(node, scope, c, block);
225
+ return;
226
+ case 'if': {
227
+ const test = () => value({ test: node.test }, scope) === true;
228
+ region(c, block, test, (cc, inner) => {
229
+ const branch = test() ? node.ifTrue : node.ifFalse;
230
+ for (const child of branch)
231
+ render(child, scope, cc, inner, ns);
232
+ }, node.motion);
233
+ return;
234
+ }
235
+ case 'html': {
236
+ const start = marker(c, '[');
237
+ let end;
238
+ if (c.claim) {
239
+ while (c.next && !isComment(c.next, ']'))
240
+ c.next = c.next.nextSibling;
241
+ end = c.next ?? c.parent.appendChild(doc.createComment(']'));
242
+ c.next = end.nextSibling;
243
+ }
244
+ else
245
+ end = marker(c, ']');
246
+ let last = c.claim ? text(value(node.value, scope)) : null;
247
+ bind(block, node.value, scope, (x) => {
248
+ const html = text(x);
249
+ if (html === last)
250
+ return;
251
+ last = html;
252
+ clear(start, end);
253
+ const t = doc.createElement('template');
254
+ t.innerHTML = html;
255
+ end.parentNode.insertBefore(t.content, end);
256
+ });
257
+ return;
258
+ }
259
+ case 'global': {
260
+ const anchor = marker(c, 'g');
261
+ const target = node.target === 'window' ? doc.defaultView : doc;
262
+ const stops = [];
263
+ for (const event in node.on) {
264
+ const send = node.on[event];
265
+ const listener = (e) => dispatch({ type: 'event', event: send.event, payload: value(send.payload, scope, domField(e)) });
266
+ const opts = passive.has(event) ? { passive: true } : undefined;
267
+ target.addEventListener(event, listener, opts);
268
+ stops.push(() => target.removeEventListener(event, listener));
269
+ }
270
+ mounted.add({ el: anchor, stop: () => stops.forEach((s) => s()) });
271
+ return;
272
+ }
273
+ default:
274
+ skip(c);
275
+ }
276
+ };
277
+ const styling = (el, node, scope, block) => {
278
+ const toggles = Object.entries(node.toggle);
279
+ if (toggles.length) {
280
+ const cls = () => {
281
+ const active = [];
282
+ for (const [c, v] of toggles)
283
+ if (value(v, scope) === true)
284
+ active.push(c);
285
+ return classText(node.class, active);
286
+ };
287
+ let last = cls();
288
+ if (el.getAttribute('class') !== last)
289
+ el.setAttribute('class', last);
290
+ if (toggles.some(([, v]) => reads(v)))
291
+ block.push(() => {
292
+ const next = cls();
293
+ if (next === last)
294
+ return;
295
+ last = next;
296
+ el.setAttribute('class', next);
297
+ });
298
+ }
299
+ for (const name in node.vars)
300
+ bind(block, node.vars[name], scope, (x) => {
301
+ const style = el.style;
302
+ if (x === null || x === '')
303
+ style.removeProperty(name);
304
+ else if (style.getPropertyValue(name) !== text(x))
305
+ style.setProperty(name, text(x));
306
+ });
307
+ };
308
+ const widget = (node, scope, c, block) => {
309
+ const ref = options.widgets?.[node.widget];
310
+ const tag = ref?.tag ?? 'div';
311
+ let el;
312
+ const claimed = c.claim && c.next?.nodeType === 1 && c.next.localName === tag;
313
+ if (claimed) {
314
+ el = c.next;
315
+ c.next = el.nextSibling;
316
+ }
317
+ else {
318
+ el = doc.createElement(tag);
319
+ if (node.class)
320
+ el.setAttribute('class', node.class);
321
+ c.parent.insertBefore(el, c.next);
322
+ }
323
+ styling(el, node, scope, block);
324
+ if (!claimed || ref?.wraps) {
325
+ const inner = { parent: el, next: claimed ? el.firstChild : null, claim: claimed };
326
+ for (const child of node.children)
327
+ render(child, scope, inner, block, null);
328
+ }
329
+ if (!ref || !options.loadWidget || !options.mountWidget)
330
+ return;
331
+ options.mountWidget({
332
+ el,
333
+ ref,
334
+ name: node.widget,
335
+ doc,
336
+ props: () => value(node.props, scope),
337
+ emit: (name, detail) => {
338
+ const send = node.on[name];
339
+ if (send)
340
+ dispatch({
341
+ type: 'event',
342
+ event: send.event,
343
+ payload: value(send.payload, scope, (f) => (f === 'detail' ? detail : null)),
344
+ });
345
+ },
346
+ load: options.loadWidget,
347
+ watch: (update) => block.push(update),
348
+ own: (stop) => mounted.add({ el, stop }),
349
+ same: equal,
350
+ });
351
+ };
352
+ const fetching = new Set();
353
+ const request = (key, query, input) => {
354
+ if (!options.onQuery || fetching.has(key))
355
+ return;
356
+ fetching.add(key);
357
+ void options.onQuery(query, input).then((result) => {
358
+ fetching.delete(key);
359
+ payload.set(key, result);
360
+ for (const u of root)
361
+ u();
362
+ sweep();
363
+ });
364
+ };
365
+ const sweep = () => {
366
+ for (let i = root.length - 1; i >= 0; i--)
367
+ if (detached.delete(root[i]))
368
+ root.splice(i, 1);
369
+ for (const m of mounted)
370
+ if (!m.el.isConnected) {
371
+ m.stop();
372
+ mounted.delete(m);
373
+ }
374
+ };
375
+ const region = (c, block, key, fill, motion = null) => {
376
+ const start = marker(c, '[');
377
+ let current = key();
378
+ let inner = [];
379
+ fill(c, inner);
380
+ const end = marker(c, ']');
381
+ block.push(() => {
382
+ const next = key();
383
+ if (next === current) {
384
+ for (const u of inner)
385
+ u();
386
+ return;
387
+ }
388
+ current = next;
389
+ inner = [];
390
+ const m = options.motion;
391
+ if (!motion || !m || m.reduced(doc)) {
392
+ clear(start, end);
393
+ fill({ parent: end.parentNode, next: end, claim: false }, inner);
394
+ return;
395
+ }
396
+ m.leave(start.nextSibling === end ? [] : range(start.nextSibling, end.previousSibling), motion);
397
+ const [a, b] = span({ parent: end.parentNode, next: end, claim: false }, () => fill({ parent: end.parentNode, next: end, claim: false }, inner));
398
+ if (a && b && a !== end)
399
+ m.enter(range(a, b), motion);
400
+ });
401
+ };
402
+ const each = (node, scope, c, block, ns) => {
403
+ const start = marker(c, '[');
404
+ const keyOf = (x) => {
405
+ const k = node.key === null ? x : getIn(x, [node.key]);
406
+ return typeof k === 'string' ? `s${k}` : JSON.stringify(k);
407
+ };
408
+ const list = () => {
409
+ const x = value(node.source, scope);
410
+ return Array.isArray(x) ? x : [];
411
+ };
412
+ const make = (x, cc) => {
413
+ const s = [...scope, x];
414
+ const b = [];
415
+ const [firstNode, lastNode] = span(cc, () => render(node.item, s, cc, b, ns));
416
+ return { key: keyOf(x), value: x, scope: s, block: b, first: firstNode, last: lastNode };
417
+ };
418
+ let items = list().map((x) => make(x, c));
419
+ const end = marker(c, ']');
420
+ block.push(() => {
421
+ const m = options.motion;
422
+ const motion = node.motion && m && !m.reduced(doc) ? node.motion : null;
423
+ const rects = motion
424
+ ? new Map(items.flatMap((i) => i.first.nodeType === 1 ? [[i, i.first.getBoundingClientRect()]] : []))
425
+ : null;
426
+ const old = new Map(items.map((i) => [i.key, i]));
427
+ const fresh = new Set();
428
+ const next = [];
429
+ for (const x of list()) {
430
+ const k = keyOf(x);
431
+ const hit = old.get(k);
432
+ if (hit) {
433
+ old.delete(k);
434
+ hit.value = x;
435
+ hit.scope.splice(0, hit.scope.length, ...scope, x);
436
+ for (const u of hit.block)
437
+ u();
438
+ next.push(hit);
439
+ }
440
+ else {
441
+ const item = make(x, { parent: doc.createDocumentFragment(), next: null, claim: false });
442
+ fresh.add(item);
443
+ next.push(item);
444
+ }
445
+ }
446
+ for (const gone of old.values())
447
+ if (motion)
448
+ m.leave(range(gone.first, gone.last), motion);
449
+ else
450
+ for (const n of range(gone.first, gone.last))
451
+ n.remove();
452
+ const parent = end.parentNode;
453
+ let at = start.nextSibling ?? end;
454
+ for (const item of next) {
455
+ if (item.first === at)
456
+ at = item.last.nextSibling ?? end;
457
+ else
458
+ for (const n of range(item.first, item.last))
459
+ parent.insertBefore(n, at);
460
+ }
461
+ items = next;
462
+ if (!motion)
463
+ return;
464
+ for (const item of next)
465
+ if (fresh.has(item))
466
+ m.enter(range(item.first, item.last), motion);
467
+ else {
468
+ const before = rects?.get(item);
469
+ if (before)
470
+ m.flip(item.first, before, motion);
471
+ }
472
+ });
473
+ };
474
+ const effects = (step) => {
475
+ for (const e of step.effects) {
476
+ if (e.type === 'navigate')
477
+ options.onNavigate?.(e.url);
478
+ else if (e.type === 'timer') {
479
+ const t = setTimeout(() => {
480
+ timers.delete(t);
481
+ dispatch({ type: 'timer', entry: e.entry, ms: e.ms });
482
+ }, e.ms);
483
+ timers.add(t);
484
+ }
485
+ else
486
+ options
487
+ .onInvoke?.(e.effect, e.input)
488
+ .then((r) => dispatch(r.ok
489
+ ? { type: 'done', entry: e.entry, result: r.value }
490
+ : { type: 'failed', entry: e.entry, error: r.error, data: r.data }));
491
+ }
492
+ };
493
+ function dispatch(input) {
494
+ if (!machine || !snapshot)
495
+ return;
496
+ const step = transition(machine, snapshot, input);
497
+ if (!step.taken)
498
+ return;
499
+ snapshot = step.snapshot;
500
+ for (const u of root)
501
+ u();
502
+ sweep();
503
+ effects(step);
504
+ }
505
+ return {
506
+ attach(parent, before, node, scope, claim) {
507
+ const c = { parent, next: before, claim };
508
+ const ns = parent.namespaceURI === SVG_NS ? SVG_NS : null;
509
+ const block = [];
510
+ const [a, b] = span(c, () => render(node, scope, c, block, ns));
511
+ if (a && b)
512
+ ranges.push([a, b]);
513
+ const connected = a?.isConnected === true;
514
+ const update = () => {
515
+ if (connected && !a.isConnected)
516
+ detached.add(update);
517
+ else
518
+ for (const u of block)
519
+ u();
520
+ };
521
+ root.push(update);
522
+ },
523
+ start() {
524
+ if (first)
525
+ effects(first);
526
+ first = null;
527
+ },
528
+ sync: () => {
529
+ for (const u of root)
530
+ u();
531
+ sweep();
532
+ },
533
+ dispatch,
534
+ snapshot: () => snapshot,
535
+ destroy: () => {
536
+ for (const t of timers)
537
+ clearTimeout(t);
538
+ timers.clear();
539
+ for (const m of mounted)
540
+ m.stop();
541
+ mounted.clear();
542
+ root.length = 0;
543
+ for (const [a, b] of ranges)
544
+ for (const n of range(a, b))
545
+ n.remove();
546
+ ranges.length = 0;
547
+ },
548
+ };
549
+ }
550
+ //# sourceMappingURL=mount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"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"}