@xenolithengine/graph-core 0.7.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +55 -0
- package/dist/command-bus.d.ts +56 -0
- package/dist/command-bus.d.ts.map +1 -0
- package/dist/command-bus.js +180 -0
- package/dist/command-bus.js.map +1 -0
- package/dist/commands-comment.d.ts +52 -0
- package/dist/commands-comment.d.ts.map +1 -0
- package/dist/commands-comment.js +92 -0
- package/dist/commands-comment.js.map +1 -0
- package/dist/commands-mut.d.ts +58 -0
- package/dist/commands-mut.d.ts.map +1 -0
- package/dist/commands-mut.js +119 -0
- package/dist/commands-mut.js.map +1 -0
- package/dist/commands.d.ts +36 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +72 -0
- package/dist/commands.js.map +1 -0
- package/dist/comment-spatial.d.ts +20 -0
- package/dist/comment-spatial.d.ts.map +1 -0
- package/dist/comment-spatial.js +21 -0
- package/dist/comment-spatial.js.map +1 -0
- package/dist/event-emitter.d.ts +15 -0
- package/dist/event-emitter.d.ts.map +1 -0
- package/dist/event-emitter.js +55 -0
- package/dist/event-emitter.js.map +1 -0
- package/dist/fuzzy.d.ts +17 -0
- package/dist/fuzzy.d.ts.map +1 -0
- package/dist/fuzzy.js +55 -0
- package/dist/fuzzy.js.map +1 -0
- package/dist/graph.d.ts +108 -0
- package/dist/graph.d.ts.map +1 -0
- package/dist/graph.js +141 -0
- package/dist/graph.js.map +1 -0
- package/dist/ids.d.ts +28 -0
- package/dist/ids.d.ts.map +1 -0
- package/dist/ids.js +31 -0
- package/dist/ids.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/macro.d.ts +120 -0
- package/dist/macro.d.ts.map +1 -0
- package/dist/macro.js +226 -0
- package/dist/macro.js.map +1 -0
- package/dist/node-registry.d.ts +101 -0
- package/dist/node-registry.d.ts.map +1 -0
- package/dist/node-registry.js +96 -0
- package/dist/node-registry.js.map +1 -0
- package/dist/reroute.d.ts +21 -0
- package/dist/reroute.d.ts.map +1 -0
- package/dist/reroute.js +40 -0
- package/dist/reroute.js.map +1 -0
- package/dist/selection.d.ts +17 -0
- package/dist/selection.d.ts.map +1 -0
- package/dist/selection.js +56 -0
- package/dist/selection.js.map +1 -0
- package/dist/template-def.d.ts +113 -0
- package/dist/template-def.d.ts.map +1 -0
- package/dist/template-def.js +0 -0
- package/dist/template-def.js.map +1 -0
- package/dist/template-flatten.d.ts +38 -0
- package/dist/template-flatten.d.ts.map +1 -0
- package/dist/template-flatten.js +157 -0
- package/dist/template-flatten.js.map +1 -0
- package/dist/traversal.d.ts +27 -0
- package/dist/traversal.d.ts.map +1 -0
- package/dist/traversal.js +119 -0
- package/dist/traversal.js.map +1 -0
- package/dist/types-registry.d.ts +41 -0
- package/dist/types-registry.d.ts.map +1 -0
- package/dist/types-registry.js +60 -0
- package/dist/types-registry.js.map +1 -0
- package/dist/widget.d.ts +141 -0
- package/dist/widget.d.ts.map +1 -0
- package/dist/widget.js +112 -0
- package/dist/widget.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"macro.js","sourceRoot":"","sources":["../src/macro.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { Node, NodeGlyph, PinDirection, PinKind, Vec2 } from './graph.js';
|
|
2
|
+
import { type WidgetSpec } from './widget.js';
|
|
3
|
+
/** Declarative pin template — instantiated into a concrete {@link Pin} (fresh id) per node. */
|
|
4
|
+
export interface PinSchema {
|
|
5
|
+
kind: PinKind;
|
|
6
|
+
direction: PinDirection;
|
|
7
|
+
type: string;
|
|
8
|
+
label?: string;
|
|
9
|
+
multiple?: boolean;
|
|
10
|
+
default?: unknown;
|
|
11
|
+
}
|
|
12
|
+
/** Declarative description of a node *type*. Hosts register these; the insert palette searches
|
|
13
|
+
* them and {@link NodeRegistry.instantiate} turns one into a concrete {@link Node}. */
|
|
14
|
+
export interface NodeSchema {
|
|
15
|
+
type: string;
|
|
16
|
+
title: string;
|
|
17
|
+
category?: string;
|
|
18
|
+
/** One-line summary shown under the title in the insert palette. */
|
|
19
|
+
description?: string;
|
|
20
|
+
/** Extra search terms beyond the title (synonyms, abbreviations). */
|
|
21
|
+
keywords?: string[];
|
|
22
|
+
pins: PinSchema[];
|
|
23
|
+
/** In-node UI controls copied onto each instantiated node; defaults seed `node.state`. */
|
|
24
|
+
widgets?: WidgetSpec[];
|
|
25
|
+
/** Blueprint "pure" node (no exec flow). Copied onto each instance. */
|
|
26
|
+
pure?: boolean;
|
|
27
|
+
/** Arbitrary host/plugin metadata, copied onto each instance and passed through serialization. */
|
|
28
|
+
meta?: Record<string, unknown>;
|
|
29
|
+
/** Header glyph icon copied onto each instantiated node (auto-drawn in the header). */
|
|
30
|
+
glyph?: NodeGlyph;
|
|
31
|
+
/** Optional custom serializer for this node type (Baklava `node.save()` parity). Returns the
|
|
32
|
+
* JSON-serializable payload to write under the node's `state` slot in the xenolith.v1 graph.
|
|
33
|
+
* Use when a node owns runtime / non-serializable state (Maps, class instances, RAF handles)
|
|
34
|
+
* that the default `state` → JSON shape can't round-trip. The caller is responsible for any
|
|
35
|
+
* pin/widget translation if those are dynamic too — most cases only need to convert `state`. */
|
|
36
|
+
serialize?: (node: Node) => Record<string, unknown>;
|
|
37
|
+
/** Optional custom deserializer — the inverse of `serialize`. Called by `loadJSON` with the
|
|
38
|
+
* JSON payload that came out of `serialize`. Must return the runtime `state` object that
|
|
39
|
+
* goes onto the live Node. If omitted, the JSON payload is used as-is. */
|
|
40
|
+
deserialize?: (json: Record<string, unknown>, node: Node) => Record<string, unknown>;
|
|
41
|
+
/** Variadic interfaces (Baklava `defineDynamicNode` parity). When set, the editor calls this
|
|
42
|
+
* callback whenever the node's state changes (widget edited, programmatic setWidgetValue) and
|
|
43
|
+
* applies any returned `pins` / `widgets` via `setNodePins` / `setNodeWidgets` — so a Sequence
|
|
44
|
+
* node can grow a fresh exec-out per click, a Struct can mint a pin per Schema field, a Math
|
|
45
|
+
* node can switch from binary to N-ary by reading state.arity. Returning `undefined` for a
|
|
46
|
+
* field means "leave it alone"; returning a new array replaces. The fn is pure — never mutate
|
|
47
|
+
* the node directly. */
|
|
48
|
+
dynamic?: (node: Node) => {
|
|
49
|
+
pins?: PinSchema[];
|
|
50
|
+
widgets?: WidgetSpec[];
|
|
51
|
+
} | undefined;
|
|
52
|
+
/** Current schema version. Bump when the on-disk shape of state/pins changes incompatibly so old
|
|
53
|
+
* graphs need migration. Stored on every instance (`node.version`); `loadJSON` reads it back and
|
|
54
|
+
* routes upgrades through `migrate`. Default 1 (omitted = 1). */
|
|
55
|
+
version?: number;
|
|
56
|
+
/** Upgrade an old on-disk node payload to the current shape. Called by `loadJSON` when the
|
|
57
|
+
* serialized `node.version` is below `schema.version`. The host returns a new payload (typed
|
|
58
|
+
* as the partial node — usually `{ state, widgets, pins, meta }`) that the loader merges into
|
|
59
|
+
* the live node. Single migrate function handles every version below current — branch on the
|
|
60
|
+
* `oldVersion` argument. Pure: must not mutate `oldNode`. */
|
|
61
|
+
migrate?: (oldNode: Partial<Node> & {
|
|
62
|
+
version?: number;
|
|
63
|
+
}, oldVersion: number) => Partial<Node>;
|
|
64
|
+
}
|
|
65
|
+
export interface NodeSearchResult {
|
|
66
|
+
schema: NodeSchema;
|
|
67
|
+
score: number;
|
|
68
|
+
/** Matched character indices into `schema.title` for highlighting (empty if the match came
|
|
69
|
+
* from a keyword or category rather than the title). */
|
|
70
|
+
indices: number[];
|
|
71
|
+
}
|
|
72
|
+
export declare class NodeRegistry {
|
|
73
|
+
#private;
|
|
74
|
+
get size(): number;
|
|
75
|
+
register(schema: NodeSchema): void;
|
|
76
|
+
unregister(type: string): boolean;
|
|
77
|
+
clear(): void;
|
|
78
|
+
has(type: string): boolean;
|
|
79
|
+
get(type: string): NodeSchema | undefined;
|
|
80
|
+
all(): NodeSchema[];
|
|
81
|
+
/** Turn a registered schema into a concrete Node with freshly minted node/pin ids. Throws if
|
|
82
|
+
* the type isn't registered. */
|
|
83
|
+
instantiate(type: string, position: Vec2): Node;
|
|
84
|
+
/** Fuzzy search across title, keywords and category. Returns results sorted by descending
|
|
85
|
+
* score (ties broken by title). An empty query returns every schema in title order. */
|
|
86
|
+
search(query: string): NodeSearchResult[];
|
|
87
|
+
}
|
|
88
|
+
/** Run a schema's `migrate` hook against an on-disk node payload when the payload's `version` is
|
|
89
|
+
* below the schema's current `version`. Returns the (possibly merged) payload + the resolved
|
|
90
|
+
* current version to stamp onto the live node. Pure — `oldNode` is not mutated. */
|
|
91
|
+
export declare function migrateNodePayload(schema: NodeSchema | undefined, oldNode: Partial<Node> & {
|
|
92
|
+
version?: number;
|
|
93
|
+
type?: string;
|
|
94
|
+
}): {
|
|
95
|
+
node: Partial<Node> & {
|
|
96
|
+
version?: number;
|
|
97
|
+
type?: string;
|
|
98
|
+
};
|
|
99
|
+
version: number;
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=node-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-registry.d.ts","sourceRoot":"","sources":["../src/node-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { fuzzyMatch } from './fuzzy.js';
|
|
2
|
+
import { createNodeId, createPinId } from './ids.js';
|
|
3
|
+
import { defaultWidgetValue } from './widget.js';
|
|
4
|
+
export class NodeRegistry {
|
|
5
|
+
#schemas = new Map();
|
|
6
|
+
get size() { return this.#schemas.size; }
|
|
7
|
+
register(schema) { this.#schemas.set(schema.type, schema); }
|
|
8
|
+
unregister(type) { return this.#schemas.delete(type); }
|
|
9
|
+
clear() { this.#schemas.clear(); }
|
|
10
|
+
has(type) { return this.#schemas.has(type); }
|
|
11
|
+
get(type) { return this.#schemas.get(type); }
|
|
12
|
+
all() { return [...this.#schemas.values()]; }
|
|
13
|
+
/** Turn a registered schema into a concrete Node with freshly minted node/pin ids. Throws if
|
|
14
|
+
* the type isn't registered. */
|
|
15
|
+
instantiate(type, position) {
|
|
16
|
+
const schema = this.#schemas.get(type);
|
|
17
|
+
if (!schema)
|
|
18
|
+
throw new Error(`NodeRegistry.instantiate: unknown node type "${type}"`);
|
|
19
|
+
const pins = schema.pins.map((p) => {
|
|
20
|
+
const pin = {
|
|
21
|
+
id: createPinId(),
|
|
22
|
+
kind: p.kind,
|
|
23
|
+
direction: p.direction,
|
|
24
|
+
type: p.type,
|
|
25
|
+
multiple: p.multiple ?? false,
|
|
26
|
+
};
|
|
27
|
+
if (p.label !== undefined)
|
|
28
|
+
pin.label = p.label;
|
|
29
|
+
if (p.default !== undefined)
|
|
30
|
+
pin.default = p.default;
|
|
31
|
+
return pin;
|
|
32
|
+
});
|
|
33
|
+
const node = { id: createNodeId(), type: schema.type, position: { ...position }, state: {}, pins };
|
|
34
|
+
if (schema.version !== undefined)
|
|
35
|
+
node.version = schema.version;
|
|
36
|
+
if (schema.pure !== undefined)
|
|
37
|
+
node.pure = schema.pure;
|
|
38
|
+
if (schema.meta !== undefined)
|
|
39
|
+
node.meta = { ...schema.meta };
|
|
40
|
+
if (schema.glyph !== undefined)
|
|
41
|
+
node.glyph = { ...schema.glyph };
|
|
42
|
+
if (schema.widgets && schema.widgets.length > 0) {
|
|
43
|
+
node.widgets = schema.widgets.map((w) => ({ ...w }));
|
|
44
|
+
for (const w of node.widgets) {
|
|
45
|
+
if (w.key !== undefined)
|
|
46
|
+
node.state[w.key] = defaultWidgetValue(w);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return node;
|
|
50
|
+
}
|
|
51
|
+
/** Fuzzy search across title, keywords and category. Returns results sorted by descending
|
|
52
|
+
* score (ties broken by title). An empty query returns every schema in title order. */
|
|
53
|
+
search(query) {
|
|
54
|
+
if (query.trim() === '') {
|
|
55
|
+
return this.all()
|
|
56
|
+
.sort((a, b) => a.title.localeCompare(b.title))
|
|
57
|
+
.map((schema) => ({ schema, score: 0, indices: [] }));
|
|
58
|
+
}
|
|
59
|
+
const results = [];
|
|
60
|
+
for (const schema of this.#schemas.values()) {
|
|
61
|
+
const titleMatch = fuzzyMatch(query, schema.title);
|
|
62
|
+
let best = titleMatch.matched ? titleMatch.score : -1;
|
|
63
|
+
let indices = titleMatch.matched ? titleMatch.indices : [];
|
|
64
|
+
for (const kw of schema.keywords ?? []) {
|
|
65
|
+
const m = fuzzyMatch(query, kw);
|
|
66
|
+
if (m.matched && m.score > best) {
|
|
67
|
+
best = m.score;
|
|
68
|
+
indices = [];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (schema.category) {
|
|
72
|
+
const m = fuzzyMatch(query, schema.category);
|
|
73
|
+
if (m.matched && m.score > best) {
|
|
74
|
+
best = m.score;
|
|
75
|
+
indices = [];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (best >= 0)
|
|
79
|
+
results.push({ schema, score: best, indices });
|
|
80
|
+
}
|
|
81
|
+
return results.sort((a, b) => b.score - a.score || a.schema.title.localeCompare(b.schema.title));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/** Run a schema's `migrate` hook against an on-disk node payload when the payload's `version` is
|
|
85
|
+
* below the schema's current `version`. Returns the (possibly merged) payload + the resolved
|
|
86
|
+
* current version to stamp onto the live node. Pure — `oldNode` is not mutated. */
|
|
87
|
+
export function migrateNodePayload(schema, oldNode) {
|
|
88
|
+
const currentVersion = schema?.version ?? 1;
|
|
89
|
+
const oldVersion = oldNode.version ?? 1;
|
|
90
|
+
if (!schema?.migrate || oldVersion >= currentVersion) {
|
|
91
|
+
return { node: oldNode, version: currentVersion };
|
|
92
|
+
}
|
|
93
|
+
const patched = schema.migrate(oldNode, oldVersion);
|
|
94
|
+
return { node: { ...oldNode, ...patched, version: currentVersion }, version: currentVersion };
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=node-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-registry.js","sourceRoot":"","sources":["../src/node-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Node, Vec2 } from './graph.js';
|
|
2
|
+
import type { NodeSchema } from './node-registry.js';
|
|
3
|
+
/** Reserved node type for reroute knots — a first-class passthrough that carries a wire across the
|
|
4
|
+
* canvas without a header or body. Themes render it as a small dot/circle. ComfyUI's `Reroute`
|
|
5
|
+
* maps onto this. */
|
|
6
|
+
export declare const REROUTE_TYPE = "$reroute";
|
|
7
|
+
export declare function isReroute(node: {
|
|
8
|
+
type: string;
|
|
9
|
+
}): boolean;
|
|
10
|
+
/** Mint a reroute node: one `in` pin and one `out` pin of the same passthrough type. The type only
|
|
11
|
+
* drives wire colouring — reroutes accept anything. */
|
|
12
|
+
export declare function createReroute(position: Vec2, opts?: {
|
|
13
|
+
type?: string;
|
|
14
|
+
}): Node;
|
|
15
|
+
/** Palette-facing reroute: a normal rectangular node (standard renderer, visible In/Out pins) that
|
|
16
|
+
* users can wire freely and pull new connections from — distinct from the inline `$reroute` dot,
|
|
17
|
+
* which is created by splitting an edge and cannot be pulled from. Auto-registered by the editor
|
|
18
|
+
* so it appears in every insert palette. */
|
|
19
|
+
export declare const REROUTE_NODE_TYPE = "Reroute";
|
|
20
|
+
export declare const rerouteNodeSchema: NodeSchema;
|
|
21
|
+
//# sourceMappingURL=reroute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reroute.d.ts","sourceRoot":"","sources":["../src/reroute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD;;sBAEsB;AACtB,eAAO,MAAM,YAAY,aAAa,CAAA;AAEtC,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAEzD;AAED;wDACwD;AACxD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,IAAI,CAYhF;AAED;;;6CAG6C;AAC7C,eAAO,MAAM,iBAAiB,YAAY,CAAA;AAE1C,eAAO,MAAM,iBAAiB,EAAE,UAU/B,CAAA"}
|
package/dist/reroute.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { createNodeId, createPinId } from './ids.js';
|
|
2
|
+
/** Reserved node type for reroute knots — a first-class passthrough that carries a wire across the
|
|
3
|
+
* canvas without a header or body. Themes render it as a small dot/circle. ComfyUI's `Reroute`
|
|
4
|
+
* maps onto this. */
|
|
5
|
+
export const REROUTE_TYPE = '$reroute';
|
|
6
|
+
export function isReroute(node) {
|
|
7
|
+
return node.type === REROUTE_TYPE;
|
|
8
|
+
}
|
|
9
|
+
/** Mint a reroute node: one `in` pin and one `out` pin of the same passthrough type. The type only
|
|
10
|
+
* drives wire colouring — reroutes accept anything. */
|
|
11
|
+
export function createReroute(position, opts = {}) {
|
|
12
|
+
const type = opts.type ?? 'any';
|
|
13
|
+
return {
|
|
14
|
+
id: createNodeId(),
|
|
15
|
+
type: REROUTE_TYPE,
|
|
16
|
+
position,
|
|
17
|
+
state: {},
|
|
18
|
+
pins: [
|
|
19
|
+
{ id: createPinId(), kind: 'data', direction: 'in', type, multiple: false },
|
|
20
|
+
{ id: createPinId(), kind: 'data', direction: 'out', type, multiple: true },
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/** Palette-facing reroute: a normal rectangular node (standard renderer, visible In/Out pins) that
|
|
25
|
+
* users can wire freely and pull new connections from — distinct from the inline `$reroute` dot,
|
|
26
|
+
* which is created by splitting an edge and cannot be pulled from. Auto-registered by the editor
|
|
27
|
+
* so it appears in every insert palette. */
|
|
28
|
+
export const REROUTE_NODE_TYPE = 'Reroute';
|
|
29
|
+
export const rerouteNodeSchema = {
|
|
30
|
+
type: REROUTE_NODE_TYPE,
|
|
31
|
+
title: 'Reroute',
|
|
32
|
+
category: 'utility',
|
|
33
|
+
description: 'Relay a wire through a movable node',
|
|
34
|
+
keywords: ['reroute', 'relay', 'pass', 'through', 'knot', 'pipe'],
|
|
35
|
+
pins: [
|
|
36
|
+
{ kind: 'data', direction: 'in', type: 'any' },
|
|
37
|
+
{ kind: 'data', direction: 'out', type: 'any', multiple: true },
|
|
38
|
+
],
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=reroute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reroute.js","sourceRoot":"","sources":["../src/reroute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAIpD;;sBAEsB;AACtB,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAA;AAEtC,MAAM,UAAU,SAAS,CAAC,IAAsB;IAC9C,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAA;AACnC,CAAC;AAED;wDACwD;AACxD,MAAM,UAAU,aAAa,CAAC,QAAc,EAAE,OAA0B,EAAE;IACxE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAA;IAC/B,OAAO;QACL,EAAE,EAAE,YAAY,EAAE;QAClB,IAAI,EAAE,YAAY;QAClB,QAAQ;QACR,KAAK,EAAE,EAAE;QACT,IAAI,EAAE;YACJ,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC5E,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC5E;KACF,CAAA;AACH,CAAC;AAED;;;6CAG6C;AAC7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAA;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAAe;IAC3C,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,qCAAqC;IAClD,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IACjE,IAAI,EAAE;QACJ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAG,IAAI,EAAE,KAAK,EAAE;QAC/C,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;KAChE;CACF,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type Unsubscribe } from './event-emitter.js';
|
|
2
|
+
import type { NodeId } from './ids.js';
|
|
3
|
+
export type SelectionMode = 'replace' | 'toggle';
|
|
4
|
+
export interface SelectionChange {
|
|
5
|
+
ids: readonly NodeId[];
|
|
6
|
+
}
|
|
7
|
+
export declare class Selection {
|
|
8
|
+
#private;
|
|
9
|
+
get size(): number;
|
|
10
|
+
contains(id: NodeId): boolean;
|
|
11
|
+
ids(): readonly NodeId[];
|
|
12
|
+
select(id: NodeId, mode: SelectionMode): void;
|
|
13
|
+
clear(): void;
|
|
14
|
+
replaceWith(ids: readonly NodeId[]): void;
|
|
15
|
+
on(handler: (e: SelectionChange) => void): Unsubscribe;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEtC,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEhD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,SAAS,MAAM,EAAE,CAAA;CACvB;AAMD,qBAAa,SAAS;;IAIpB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI7B,GAAG,IAAI,SAAS,MAAM,EAAE;IAIxB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAkB7C,KAAK,IAAI,IAAI;IAMb,WAAW,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAOzC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,GAAG,WAAW;CAOvD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { EventEmitter } from './event-emitter.js';
|
|
2
|
+
export class Selection {
|
|
3
|
+
#set = new Set();
|
|
4
|
+
#events = new EventEmitter();
|
|
5
|
+
get size() {
|
|
6
|
+
return this.#set.size;
|
|
7
|
+
}
|
|
8
|
+
contains(id) {
|
|
9
|
+
return this.#set.has(id);
|
|
10
|
+
}
|
|
11
|
+
ids() {
|
|
12
|
+
return [...this.#set];
|
|
13
|
+
}
|
|
14
|
+
select(id, mode) {
|
|
15
|
+
let changed = false;
|
|
16
|
+
if (mode === 'replace') {
|
|
17
|
+
if (this.#set.size === 1 && this.#set.has(id))
|
|
18
|
+
return;
|
|
19
|
+
this.#set.clear();
|
|
20
|
+
this.#set.add(id);
|
|
21
|
+
changed = true;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
if (this.#set.has(id)) {
|
|
25
|
+
this.#set.delete(id);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.#set.add(id);
|
|
29
|
+
}
|
|
30
|
+
changed = true;
|
|
31
|
+
}
|
|
32
|
+
if (changed)
|
|
33
|
+
this.#emit();
|
|
34
|
+
}
|
|
35
|
+
clear() {
|
|
36
|
+
if (this.#set.size === 0)
|
|
37
|
+
return;
|
|
38
|
+
this.#set.clear();
|
|
39
|
+
this.#emit();
|
|
40
|
+
}
|
|
41
|
+
replaceWith(ids) {
|
|
42
|
+
if (this.#set.size === ids.length && ids.every((id) => this.#set.has(id)))
|
|
43
|
+
return;
|
|
44
|
+
this.#set.clear();
|
|
45
|
+
for (const id of ids)
|
|
46
|
+
this.#set.add(id);
|
|
47
|
+
this.#emit();
|
|
48
|
+
}
|
|
49
|
+
on(handler) {
|
|
50
|
+
return this.#events.on('selection:changed', handler);
|
|
51
|
+
}
|
|
52
|
+
#emit() {
|
|
53
|
+
this.#events.emit('selection:changed', { ids: this.ids() });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,MAAM,oBAAoB,CAAA;AAanE,MAAM,OAAO,SAAS;IACX,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IACxB,OAAO,GAAG,IAAI,YAAY,EAAmB,CAAA;IAEtD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;IACvB,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC1B,CAAC;IAED,GAAG;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC;IAED,MAAM,CAAC,EAAU,EAAE,IAAmB;QACpC,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,OAAM;YACrD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;YACjB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACjB,OAAO,GAAG,IAAI,CAAA;QAChB,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACtB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACnB,CAAC;YACD,OAAO,GAAG,IAAI,CAAA;QAChB,CAAC;QACD,IAAI,OAAO;YAAE,IAAI,CAAC,KAAK,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAM;QAChC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACjB,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED,WAAW,CAAC,GAAsB;QAChC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAAE,OAAM;QACjF,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACjB,KAAK,MAAM,EAAE,IAAI,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED,EAAE,CAAC,OAAqC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAC7D,CAAC;CACF"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { Edge, Node, Pin, PinDirection } from './graph.js';
|
|
2
|
+
import type { NodeId, PinId, EdgeId } from './ids.js';
|
|
3
|
+
/** Reserved node types for the live-template feature (distinct from the in-place `Macro` collapse).
|
|
4
|
+
* A `$templateInstance` is a node in any graph that references a shared `TemplateDefinition` by id;
|
|
5
|
+
* its pins are derived from the definition's interface. The definition's I/O interface is declared
|
|
6
|
+
* by explicit boundary nodes INSIDE the definition: `$templateInput` (one out pin, feeds members)
|
|
7
|
+
* and `$templateOutput` (one in pin, drained by members). Editing the shared definition propagates
|
|
8
|
+
* to every instance — there are no per-instance values. */
|
|
9
|
+
export declare const TEMPLATE_INPUT_TYPE: "$templateInput";
|
|
10
|
+
export declare const TEMPLATE_OUTPUT_TYPE: "$templateOutput";
|
|
11
|
+
export declare const TEMPLATE_INSTANCE_TYPE: "$templateInstance";
|
|
12
|
+
declare const TemplateDefIdBrand: unique symbol;
|
|
13
|
+
export type TemplateDefId = string & {
|
|
14
|
+
readonly [TemplateDefIdBrand]: true;
|
|
15
|
+
};
|
|
16
|
+
export declare function isTemplateBoundary(node: {
|
|
17
|
+
type: string;
|
|
18
|
+
}): boolean;
|
|
19
|
+
export declare function isTemplateInstance(node: {
|
|
20
|
+
type: string;
|
|
21
|
+
}): boolean;
|
|
22
|
+
/** A reusable subgraph stored once and referenced by many `$templateInstance` nodes. Its `nodes`
|
|
23
|
+
* include the member nodes plus the `$templateInput`/`$templateOutput` boundary nodes that declare
|
|
24
|
+
* the interface; its `edges` include the members' internal edges plus the boundary wires. */
|
|
25
|
+
export interface TemplateDefinition {
|
|
26
|
+
id: TemplateDefId;
|
|
27
|
+
title: string;
|
|
28
|
+
nodes: Node[];
|
|
29
|
+
edges: Edge[];
|
|
30
|
+
}
|
|
31
|
+
/** One interface slot of a definition — mirrors a boundary node. Pure descriptor (no minted pin id);
|
|
32
|
+
* `materializeInterface` turns these into per-instance `Pin`s. */
|
|
33
|
+
export interface TemplateInterfacePin {
|
|
34
|
+
/** The boundary node ($templateInput/$templateOutput) this slot mirrors — the stable re-sync key. */
|
|
35
|
+
boundary: NodeId;
|
|
36
|
+
direction: PinDirection;
|
|
37
|
+
type: string;
|
|
38
|
+
label?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface TemplateMinters {
|
|
41
|
+
node: () => NodeId;
|
|
42
|
+
pin: () => PinId;
|
|
43
|
+
edge: () => EdgeId;
|
|
44
|
+
def: () => TemplateDefId;
|
|
45
|
+
}
|
|
46
|
+
export interface TemplateExtraction {
|
|
47
|
+
definition: TemplateDefinition;
|
|
48
|
+
/** Pins to put on the instance node (per-instance fresh ids), one per boundary node. */
|
|
49
|
+
instancePins: Pin[];
|
|
50
|
+
/** instance pinId → boundary node id, so re-sync can preserve pin ids across definition edits. */
|
|
51
|
+
pinBoundary: Record<string, string>;
|
|
52
|
+
/** Outer-graph boundary edges to remove (they get rewired onto the instance). */
|
|
53
|
+
outerDisconnect: EdgeId[];
|
|
54
|
+
/** New external↔instance edges. */
|
|
55
|
+
outerConnect: Edge[];
|
|
56
|
+
/** Member node ids removed from the outer graph (they now live in the definition). */
|
|
57
|
+
removeFromOuter: NodeId[];
|
|
58
|
+
}
|
|
59
|
+
/** One interface descriptor per boundary node, ordered by node appearance in `def.nodes` — which,
|
|
60
|
+
* for a definition built by `planTemplateExtraction`, is all inputs then all outputs. */
|
|
61
|
+
export declare function templateInterface(def: TemplateDefinition): TemplateInterfacePin[];
|
|
62
|
+
/** Mint a fresh per-instance pin for each interface slot, returning the pins plus a pinId→boundary
|
|
63
|
+
* map so an instance can be re-synced against an edited definition without losing pin ids. */
|
|
64
|
+
export declare function materializeInterface(iface: ReadonlyArray<TemplateInterfacePin>, mintPin: () => PinId): {
|
|
65
|
+
pins: Pin[];
|
|
66
|
+
pinBoundary: Record<string, string>;
|
|
67
|
+
};
|
|
68
|
+
/** Plan converting a selection into a reusable template. The interface is derived PER MEMBER PIN, not
|
|
69
|
+
* just from boundary-crossing edges: a member pin becomes an interface pin unless it's wired to
|
|
70
|
+
* another member (internal). So an input fed from outside, an output driving outside, AND a FREE
|
|
71
|
+
* (unconnected) pin all get promoted — which is what makes the instance usable (you can wire its In
|
|
72
|
+
* even if nothing fed the member yet). External connections are rewired onto the instance; free pins
|
|
73
|
+
* just get a boundary node + interface pin with nothing to rewire. Pure — the caller mints the
|
|
74
|
+
* instance node id and applies the result through the command bus. */
|
|
75
|
+
export declare function planTemplateExtraction(instanceId: NodeId, members: ReadonlyArray<Node>, edges: ReadonlyArray<Edge>, pinInfo: (node: NodeId, pin: PinId) => {
|
|
76
|
+
type: string;
|
|
77
|
+
label?: string;
|
|
78
|
+
}, mint: TemplateMinters, title?: string,
|
|
79
|
+
/** Nodes that go into the definition + are removed from the outer graph but DO NOT contribute pins
|
|
80
|
+
* to the template interface. Used for members of an included collapsed macro: their pins are
|
|
81
|
+
* hidden behind the macro's proxy (no real edges), so naive iteration would mint a phantom
|
|
82
|
+
* $templateInput/$templateOutput for every free-looking pin. Their connections still count as
|
|
83
|
+
* internal so `members`' pins wired through them stay internal too. */
|
|
84
|
+
hiddenMembers?: ReadonlyArray<Node>): TemplateExtraction;
|
|
85
|
+
export interface TemplateUnpackPlan {
|
|
86
|
+
/** Fresh-id copies of the definition's member nodes (boundary nodes are dropped). */
|
|
87
|
+
addNodes: Node[];
|
|
88
|
+
/** Internal member↔member edges (fresh ids) + the instance's outer edges rewired onto the members. */
|
|
89
|
+
addEdges: Edge[];
|
|
90
|
+
/** The instance node to remove. */
|
|
91
|
+
removeNode: NodeId;
|
|
92
|
+
/** The instance's outer edges to remove (they're replaced by the rewired ones in addEdges). */
|
|
93
|
+
removeEdges: EdgeId[];
|
|
94
|
+
/** Old member node id → new id, so the caller can carry render/edge opts onto the inlined copies. */
|
|
95
|
+
nodeRemap: Record<string, string>;
|
|
96
|
+
}
|
|
97
|
+
/** Plan "unpacking" a template instance: inline a fresh copy of its definition's members into the
|
|
98
|
+
* outer graph (new ids, so it's a one-off — the definition + other instances are untouched), drop
|
|
99
|
+
* the boundary nodes, and reconnect the instance's outer edges to the member pins the boundaries
|
|
100
|
+
* bridged. Pure — caller applies it through the command bus. */
|
|
101
|
+
export declare function planTemplateUnpack(instance: Node, definition: TemplateDefinition, outerEdges: ReadonlyArray<Edge>, mint: {
|
|
102
|
+
node: () => NodeId;
|
|
103
|
+
pin: () => PinId;
|
|
104
|
+
edge: () => EdgeId;
|
|
105
|
+
}, at?: {
|
|
106
|
+
x: number;
|
|
107
|
+
y: number;
|
|
108
|
+
}): TemplateUnpackPlan;
|
|
109
|
+
/** True when `host`'s definition transitively contains a `$templateInstance` of `target` — used to
|
|
110
|
+
* refuse a collapse/insert/dive that would create a cycle. */
|
|
111
|
+
export declare function templateDefContains(registry: ReadonlyMap<TemplateDefId, TemplateDefinition>, host: TemplateDefId, target: TemplateDefId): boolean;
|
|
112
|
+
export {};
|
|
113
|
+
//# sourceMappingURL=template-def.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-def.d.ts","sourceRoot":"","sources":["../src/template-def.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-def.js","sourceRoot":"","sources":["../src/template-def.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Edge, Node } from './graph.js';
|
|
2
|
+
import type { NodeId, PinId, EdgeId } from './ids.js';
|
|
3
|
+
import { type TemplateDefId, type TemplateDefinition } from './template-def.js';
|
|
4
|
+
export interface PinRef {
|
|
5
|
+
node: NodeId;
|
|
6
|
+
pin: PinId;
|
|
7
|
+
}
|
|
8
|
+
/** Read-only flattening of a `$templateInstance` into the plain primitive subgraph a host evaluator
|
|
9
|
+
* can execute. Boundary nodes dissolve into a pin remap: `boundary.inputs[instancePin]` are the
|
|
10
|
+
* internal IN-pins an instance input feeds (fan-out possible), `boundary.outputs[instancePin]` is the
|
|
11
|
+
* internal OUT-pin an instance output is produced by. Nested instances expand recursively. */
|
|
12
|
+
export interface FlattenedTemplate {
|
|
13
|
+
nodes: Node[];
|
|
14
|
+
edges: Edge[];
|
|
15
|
+
boundary: {
|
|
16
|
+
inputs: Record<string, PinRef[]>;
|
|
17
|
+
outputs: Record<string, PinRef>;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
interface FlattenMint {
|
|
21
|
+
node: () => NodeId;
|
|
22
|
+
pin: () => PinId;
|
|
23
|
+
edge: () => EdgeId;
|
|
24
|
+
}
|
|
25
|
+
/** Flatten `instance` against the definitions reachable through `resolveDef`. Returns null if a
|
|
26
|
+
* definition is missing or a recursion cycle is detected (a definition transitively containing an
|
|
27
|
+
* instance of itself). Pure — never mutates the instance, definitions, or document. */
|
|
28
|
+
export declare function flattenTemplateInstance(instance: Node, resolveDef: (defId: TemplateDefId) => TemplateDefinition | undefined, mint: FlattenMint): FlattenedTemplate | null;
|
|
29
|
+
/** Snapshot-level helper: replace every `$templateInstance` in (`nodes`, `edges`) with its flattened
|
|
30
|
+
* primitive sub-graph and rewire the external edges that touched the instance's interface pins to
|
|
31
|
+
* the boundary-mapped internal pins. Mirrors `flattenMacroProxies` for templates. Pure — inputs are
|
|
32
|
+
* not mutated. An instance whose definition is missing or recursive is left in place. */
|
|
33
|
+
export declare function flattenAllTemplateInstances(nodes: Node[], edges: Edge[], resolveDef: (defId: TemplateDefId) => TemplateDefinition | undefined, mint: FlattenMint): {
|
|
34
|
+
nodes: Node[];
|
|
35
|
+
edges: Edge[];
|
|
36
|
+
};
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=template-flatten.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-flatten.d.ts","sourceRoot":"","sources":["../src/template-flatten.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAA;AAE1B,MAAM,WAAW,MAAM;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,KAAK,CAAA;CAAE;AAEpD;;;+FAG+F;AAC/F,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;QAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAChC,CAAA;CACF;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,KAAK,CAAA;IAChB,IAAI,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;wFAEwF;AACxF,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,IAAI,EACd,UAAU,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,kBAAkB,GAAG,SAAS,EACpE,IAAI,EAAE,WAAW,GAChB,iBAAiB,GAAG,IAAI,CAE1B;AAyFD;;;0FAG0F;AAC1F,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,IAAI,EAAE,EACb,KAAK,EAAE,IAAI,EAAE,EACb,UAAU,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,kBAAkB,GAAG,SAAS,EACpE,IAAI,EAAE,WAAW,GAChB;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CA2BlC"}
|