@xenolithengine/graph-render-pixi 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 +49 -0
- package/dist/bezier.d.ts +30 -0
- package/dist/bezier.d.ts.map +1 -0
- package/dist/bezier.js +70 -0
- package/dist/bezier.js.map +1 -0
- package/dist/comment-renderer.d.ts +35 -0
- package/dist/comment-renderer.d.ts.map +1 -0
- package/dist/comment-renderer.js +194 -0
- package/dist/comment-renderer.js.map +1 -0
- package/dist/edge-paths.d.ts +24 -0
- package/dist/edge-paths.d.ts.map +1 -0
- package/dist/edge-paths.js +123 -0
- package/dist/edge-paths.js.map +1 -0
- package/dist/edge-renderer.d.ts +29 -0
- package/dist/edge-renderer.d.ts.map +1 -0
- package/dist/edge-renderer.js +99 -0
- package/dist/edge-renderer.js.map +1 -0
- package/dist/geom.d.ts +46 -0
- package/dist/geom.d.ts.map +1 -0
- package/dist/geom.js +54 -0
- package/dist/geom.js.map +1 -0
- package/dist/grid.d.ts +12 -0
- package/dist/grid.d.ts.map +1 -0
- package/dist/grid.js +35 -0
- package/dist/grid.js.map +1 -0
- package/dist/icons.d.ts +14 -0
- package/dist/icons.d.ts.map +1 -0
- package/dist/icons.js +32 -0
- package/dist/icons.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction.d.ts +69 -0
- package/dist/interaction.d.ts.map +1 -0
- package/dist/interaction.js +229 -0
- package/dist/interaction.js.map +1 -0
- package/dist/layout.d.ts +126 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +360 -0
- package/dist/layout.js.map +1 -0
- package/dist/macro-frame.d.ts +29 -0
- package/dist/macro-frame.d.ts.map +1 -0
- package/dist/macro-frame.js +116 -0
- package/dist/macro-frame.js.map +1 -0
- package/dist/node-renderer.d.ts +102 -0
- package/dist/node-renderer.d.ts.map +1 -0
- package/dist/node-renderer.js +776 -0
- package/dist/node-renderer.js.map +1 -0
- package/dist/reroute-renderer.d.ts +25 -0
- package/dist/reroute-renderer.d.ts.map +1 -0
- package/dist/reroute-renderer.js +163 -0
- package/dist/reroute-renderer.js.map +1 -0
- package/dist/style.d.ts +56 -0
- package/dist/style.d.ts.map +1 -0
- package/dist/style.js +102 -0
- package/dist/style.js.map +1 -0
- package/dist/text-measure.d.ts +6 -0
- package/dist/text-measure.d.ts.map +1 -0
- package/dist/text-measure.js +21 -0
- package/dist/text-measure.js.map +1 -0
- package/dist/theme.d.ts +86 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +2 -0
- package/dist/theme.js.map +1 -0
- package/dist/viewport-math.d.ts +68 -0
- package/dist/viewport-math.d.ts.map +1 -0
- package/dist/viewport-math.js +106 -0
- package/dist/viewport-math.js.map +1 -0
- package/dist/viewport.d.ts +28 -0
- package/dist/viewport.d.ts.map +1 -0
- package/dist/viewport.js +47 -0
- package/dist/viewport.js.map +1 -0
- package/dist/virtualize.d.ts +55 -0
- package/dist/virtualize.d.ts.map +1 -0
- package/dist/virtualize.js +96 -0
- package/dist/virtualize.js.map +1 -0
- package/dist/widget-renderer.d.ts +150 -0
- package/dist/widget-renderer.d.ts.map +1 -0
- package/dist/widget-renderer.js +399 -0
- package/dist/widget-renderer.js.map +1 -0
- package/dist/xen-theme.d.ts +8 -0
- package/dist/xen-theme.d.ts.map +1 -0
- package/dist/xen-theme.js +23 -0
- package/dist/xen-theme.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-renderer.js","sourceRoot":"","sources":["../src/node-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Node } from '@xenolithengine/graph-core';
|
|
2
|
+
import type { XenTokens } from '@xenolithengine/graph-theme-xen';
|
|
3
|
+
import type { NodeView, NodeVisualState, RenderNodeOptions } from './node-renderer.js';
|
|
4
|
+
/** Selection/hover/active rim colour for the reroute knots, matching the theme's node state colours
|
|
5
|
+
* (gold hover, white selected, amber active) rather than a hardcoded white. */
|
|
6
|
+
export declare function rerouteStateColor(state: NodeVisualState, tokens: XenTokens): string | undefined;
|
|
7
|
+
/** A reroute occupies a square the size of its dot so the editor's bounds/backdrop logic treats it
|
|
8
|
+
* uniformly with regular nodes. */
|
|
9
|
+
export declare function rerouteSize(tokens: XenTokens): {
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
};
|
|
13
|
+
/** Default Xen reroute: a node-surface-filled disc with a type-coloured rim. Wires enter on the
|
|
14
|
+
* left pin and exit on the right, flowing horizontally through the knot. No header, no collapse. */
|
|
15
|
+
export declare function renderRerouteNode(node: Node, tokens: XenTokens, opts?: RenderNodeOptions): NodeView;
|
|
16
|
+
/** Size of the palette Reroute node — a compact headerless body, just wide enough for the in/out
|
|
17
|
+
* pins to sit on opposite edges. */
|
|
18
|
+
export declare function rerouteBoxSize(tokens: XenTokens): {
|
|
19
|
+
x: number;
|
|
20
|
+
y: number;
|
|
21
|
+
};
|
|
22
|
+
/** Palette Reroute node — a small headerless body with a pullable In pin on the left and Out pin
|
|
23
|
+
* on the right. Unlike the inline dot, its pins ARE interactive so users can wire freely. */
|
|
24
|
+
export declare function renderRerouteNodeBox(node: Node, tokens: XenTokens, opts?: RenderNodeOptions): NodeView;
|
|
25
|
+
//# sourceMappingURL=reroute-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reroute-renderer.d.ts","sourceRoot":"","sources":["../src/reroute-renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAEhE,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAStF;gFACgF;AAChF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAO/F;AAED;oCACoC;AACpC,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAGvE;AAED;qGACqG;AACrG,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,SAAS,EACjB,IAAI,GAAE,iBAAsB,GAC3B,QAAQ,CA8DV;AAED;qCACqC;AACrC,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAG1E;AAED;8FAC8F;AAC9F,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,SAAS,EACjB,IAAI,GAAE,iBAAsB,GAC3B,QAAQ,CA2EV"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { Circle, Container, FillGradient, Graphics, Rectangle } from 'pixi.js';
|
|
2
|
+
import { markPinInteractive } from './node-renderer.js';
|
|
3
|
+
import { resolvePinFill, resolvePinStroke } from './style.js';
|
|
4
|
+
/** Touch devices get a larger hit zone around reroute knots. Visual radius unchanged. */
|
|
5
|
+
const REROUTE_HIT_FACTOR = (() => {
|
|
6
|
+
if (typeof window === 'undefined' || typeof window.matchMedia !== 'function')
|
|
7
|
+
return 1;
|
|
8
|
+
return window.matchMedia('(pointer: coarse)').matches ? 1.8 : 1;
|
|
9
|
+
})();
|
|
10
|
+
/** Selection/hover/active rim colour for the reroute knots, matching the theme's node state colours
|
|
11
|
+
* (gold hover, white selected, amber active) rather than a hardcoded white. */
|
|
12
|
+
export function rerouteStateColor(state, tokens) {
|
|
13
|
+
switch (state) {
|
|
14
|
+
case 'hover': return tokens.state.hover.border;
|
|
15
|
+
case 'selected': return tokens.state.selected.border;
|
|
16
|
+
case 'active': return tokens.state.active.border;
|
|
17
|
+
default: return undefined;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/** A reroute occupies a square the size of its dot so the editor's bounds/backdrop logic treats it
|
|
21
|
+
* uniformly with regular nodes. */
|
|
22
|
+
export function rerouteSize(tokens) {
|
|
23
|
+
const r = tokens.geometry.reroute.radius;
|
|
24
|
+
return { x: 2 * r, y: 2 * r };
|
|
25
|
+
}
|
|
26
|
+
/** Default Xen reroute: a node-surface-filled disc with a type-coloured rim. Wires enter on the
|
|
27
|
+
* left pin and exit on the right, flowing horizontally through the knot. No header, no collapse. */
|
|
28
|
+
export function renderRerouteNode(node, tokens, opts = {}) {
|
|
29
|
+
const r = tokens.geometry.reroute.radius;
|
|
30
|
+
const ring = tokens.geometry.reroute.ringWidth;
|
|
31
|
+
const cx = r;
|
|
32
|
+
const cy = r;
|
|
33
|
+
const container = new Container({ label: `reroute:${node.id}` });
|
|
34
|
+
container.position.set(node.position.x, node.position.y);
|
|
35
|
+
container.eventMode = 'static';
|
|
36
|
+
const inPin = node.pins.find((p) => p.direction === 'in');
|
|
37
|
+
const outPin = node.pins.find((p) => p.direction === 'out');
|
|
38
|
+
const wireType = String(outPin?.type ?? inPin?.type ?? 'any');
|
|
39
|
+
const fill = resolvePinFill(wireType, tokens);
|
|
40
|
+
// Body disc — node surface with a type-coloured rim so the knot reads as "a node carrying this
|
|
41
|
+
// wire colour" rather than a bare pin.
|
|
42
|
+
const body = new Graphics()
|
|
43
|
+
.circle(cx, cy, r)
|
|
44
|
+
.fill({ color: tokens.color.surface.node })
|
|
45
|
+
.stroke({ color: fill, width: ring, alignment: 1 });
|
|
46
|
+
// The disc body is the node's drag/select target. Pins only claim small caps at the left/right
|
|
47
|
+
// edges (below), leaving the centre grabbable so the knot can be moved.
|
|
48
|
+
body.eventMode = 'static';
|
|
49
|
+
body.hitArea = new Circle(cx, cy, r * REROUTE_HIT_FACTOR);
|
|
50
|
+
container.addChild(body);
|
|
51
|
+
// Inner type-coloured core for a crisper read at small zoom.
|
|
52
|
+
container.addChild(new Graphics().circle(cx, cy, Math.max(2, r - ring - 2)).fill({ color: fill, alpha: 0.28 }));
|
|
53
|
+
// Selection / hover ring.
|
|
54
|
+
const rim = new Graphics()
|
|
55
|
+
.circle(cx, cy, r + 1)
|
|
56
|
+
.stroke({ color: 0xffffff, width: 1.5, alignment: 0.5 });
|
|
57
|
+
rim.alpha = 0;
|
|
58
|
+
container.addChild(rim);
|
|
59
|
+
// Pin anchor points only — wires enter on the left, exit on the right so they flow horizontally
|
|
60
|
+
// through the knot. An inline reroute is NOT pullable: no interactive pin handles are created,
|
|
61
|
+
// so the entire disc body stays grabbable for dragging and new wires can't be started from it.
|
|
62
|
+
const pinLocal = new Map();
|
|
63
|
+
for (const pin of node.pins) {
|
|
64
|
+
pinLocal.set(String(pin.id), { x: pin.direction === 'in' ? 0 : 2 * r, y: cy });
|
|
65
|
+
}
|
|
66
|
+
function setVisualState(state) {
|
|
67
|
+
const c = rerouteStateColor(state, tokens);
|
|
68
|
+
if (!c) {
|
|
69
|
+
rim.alpha = 0;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
rim.tint = c;
|
|
73
|
+
rim.alpha = state === 'hover' ? 0.6 : 0.95;
|
|
74
|
+
}
|
|
75
|
+
setVisualState(opts.state ?? 'default');
|
|
76
|
+
return {
|
|
77
|
+
container,
|
|
78
|
+
setVisualState,
|
|
79
|
+
setCollapsed: () => { },
|
|
80
|
+
isCollapsed: () => false,
|
|
81
|
+
pinLocalPosition: (pinId) => pinLocal.get(pinId) ?? null,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/** Size of the palette Reroute node — a compact headerless body, just wide enough for the in/out
|
|
85
|
+
* pins to sit on opposite edges. */
|
|
86
|
+
export function rerouteBoxSize(tokens) {
|
|
87
|
+
const h = tokens.geometry.pin.diameter + 16;
|
|
88
|
+
return { x: 56, y: h };
|
|
89
|
+
}
|
|
90
|
+
/** Palette Reroute node — a small headerless body with a pullable In pin on the left and Out pin
|
|
91
|
+
* on the right. Unlike the inline dot, its pins ARE interactive so users can wire freely. */
|
|
92
|
+
export function renderRerouteNodeBox(node, tokens, opts = {}) {
|
|
93
|
+
const { x: w, y: h } = rerouteBoxSize(tokens);
|
|
94
|
+
const radius = Math.min(tokens.geometry.node.radius, h / 2);
|
|
95
|
+
const cy = h / 2;
|
|
96
|
+
const container = new Container({ label: `reroute-node:${node.id}` });
|
|
97
|
+
container.position.set(node.position.x, node.position.y);
|
|
98
|
+
container.eventMode = 'static';
|
|
99
|
+
const body = new Graphics()
|
|
100
|
+
.roundRect(0, 0, w, h, radius)
|
|
101
|
+
.fill({ color: tokens.color.surface.node })
|
|
102
|
+
.stroke({ color: tokens.geometry.pin.strokeColor, width: 1, alignment: 1 });
|
|
103
|
+
body.eventMode = 'static';
|
|
104
|
+
body.hitArea = new Rectangle(0, 0, w, h);
|
|
105
|
+
container.addChild(body);
|
|
106
|
+
// White top highlight, mirroring the header sheen on regular nodes so the box reads as the same
|
|
107
|
+
// material rather than a flat slab. Gated on a real renderer — FillGradient needs a 2D canvas,
|
|
108
|
+
// which headless unit tests don't have.
|
|
109
|
+
if (opts.renderer) {
|
|
110
|
+
const highlight = new FillGradient({
|
|
111
|
+
type: 'linear', start: { x: 0, y: 0 }, end: { x: 0, y: 1 },
|
|
112
|
+
colorStops: [
|
|
113
|
+
{ offset: 0, color: 'rgba(255, 255, 255, 0.22)' },
|
|
114
|
+
{ offset: 0.6, color: 'rgba(255, 255, 255, 0)' },
|
|
115
|
+
],
|
|
116
|
+
textureSpace: 'local',
|
|
117
|
+
});
|
|
118
|
+
container.addChild(new Graphics().roundRect(1, 1, w - 2, h - 2, Math.max(0, radius - 1)).fill(highlight));
|
|
119
|
+
}
|
|
120
|
+
// Thin bright top edge — the little white line regular nodes carry along their header rim.
|
|
121
|
+
const topRim = new Graphics()
|
|
122
|
+
.moveTo(1, radius)
|
|
123
|
+
.arcTo(1, 1, 1 + radius, 1, radius)
|
|
124
|
+
.lineTo(w - 1 - radius, 1)
|
|
125
|
+
.arcTo(w - 1, 1, w - 1, 1 + radius, radius)
|
|
126
|
+
.stroke({ color: 0xffffff, width: 1, alpha: 0.55 });
|
|
127
|
+
container.addChild(topRim);
|
|
128
|
+
const rim = new Graphics()
|
|
129
|
+
.roundRect(-1, -1, w + 2, h + 2, radius + 1)
|
|
130
|
+
.stroke({ color: 0xffffff, width: 1.5, alignment: 0.5 });
|
|
131
|
+
rim.alpha = 0;
|
|
132
|
+
container.addChild(rim);
|
|
133
|
+
const pinLocal = new Map();
|
|
134
|
+
const pinRadius = tokens.geometry.pin.diameter / 2;
|
|
135
|
+
for (const pin of node.pins) {
|
|
136
|
+
const px = pin.direction === 'in' ? 0 : w;
|
|
137
|
+
pinLocal.set(String(pin.id), { x: px, y: cy });
|
|
138
|
+
const g = new Graphics()
|
|
139
|
+
.circle(px, cy, pinRadius)
|
|
140
|
+
.fill({ color: resolvePinFill(String(pin.type), tokens) })
|
|
141
|
+
.stroke({ color: resolvePinStroke(String(pin.type), tokens), width: tokens.geometry.pin.stroke });
|
|
142
|
+
markPinInteractive(g, pin, String(node.id), px, cy, pinRadius);
|
|
143
|
+
container.addChild(g);
|
|
144
|
+
}
|
|
145
|
+
function setVisualState(state) {
|
|
146
|
+
const c = rerouteStateColor(state, tokens);
|
|
147
|
+
if (!c) {
|
|
148
|
+
rim.alpha = 0;
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
rim.tint = c;
|
|
152
|
+
rim.alpha = state === 'hover' ? 0.6 : 0.95;
|
|
153
|
+
}
|
|
154
|
+
setVisualState(opts.state ?? 'default');
|
|
155
|
+
return {
|
|
156
|
+
container,
|
|
157
|
+
setVisualState,
|
|
158
|
+
setCollapsed: () => { },
|
|
159
|
+
isCollapsed: () => false,
|
|
160
|
+
pinLocalPosition: (pinId) => pinLocal.get(pinId) ?? null,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=reroute-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reroute-renderer.js","sourceRoot":"","sources":["../src/reroute-renderer.ts"],"names":[],"mappings":"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"}
|
package/dist/style.d.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { TypeRegistry } from '@xenolithengine/graph-core';
|
|
2
|
+
import type { XenTokens } from '@xenolithengine/graph-theme-xen';
|
|
3
|
+
/** A category colour declared in the graph data (format-first): a single accent colour (header fades
|
|
4
|
+
* from it) or an explicit gradient. */
|
|
5
|
+
export type CategoryColorSpec = {
|
|
6
|
+
color: string;
|
|
7
|
+
} | {
|
|
8
|
+
gradient: CategoryGradient;
|
|
9
|
+
};
|
|
10
|
+
/** Graph-level category palette, keyed by category name. Overrides the theme's category tokens. */
|
|
11
|
+
export type GraphCategoryPalette = Record<string, CategoryColorSpec>;
|
|
12
|
+
/** Accent colour for a category: graph palette (its colour, or a gradient's start) wins over the
|
|
13
|
+
* theme token, which falls back to the utility accent. */
|
|
14
|
+
export declare function resolveCategoryAccent(category: string | undefined, tokens: XenTokens, palette?: GraphCategoryPalette): string;
|
|
15
|
+
/**
|
|
16
|
+
* Fill colour for a pin's interior. For `circle-empty` (wildcard) pins we return the node body
|
|
17
|
+
* colour so the pin reads as a coloured ring around a solid dark center, not an open hole through
|
|
18
|
+
* which the canvas grid shows. The type-distinctive colour stays on the stroke.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolvePinFill(pinType: string, tokens: XenTokens, types?: TypeRegistry): string;
|
|
21
|
+
/**
|
|
22
|
+
* Shape of a pin glyph. A registered {@link TypeRegistry} descriptor's `shape` wins; otherwise the
|
|
23
|
+
* Blueprint default — exec pins are arrows (control flow), data pins are circles.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolvePinShape(pinType: string, kind: 'exec' | 'data', types?: TypeRegistry): 'circle' | 'diamond' | 'arrow';
|
|
26
|
+
export declare function resolvePinStroke(pinType: string, tokens: XenTokens): string;
|
|
27
|
+
/** Exec-pin colour scheme: a filled gold triangle when connected to an edge, an OUTLINED white
|
|
28
|
+
* triangle otherwise. Lets you read connectivity at a glance without inspecting wires — the
|
|
29
|
+
* data-pin "always filled with type colour" rule wouldn't carry the same signal because data
|
|
30
|
+
* type colours already mean "the pin's type", not "the pin's connection state". */
|
|
31
|
+
export declare function execPinColors(connected: boolean): {
|
|
32
|
+
fill: string;
|
|
33
|
+
fillAlpha: number;
|
|
34
|
+
stroke: string;
|
|
35
|
+
};
|
|
36
|
+
export declare function resolveEdgeColor(sourceType: string, tokens: XenTokens): string;
|
|
37
|
+
/**
|
|
38
|
+
* Re-emit a colour as `rgba(...)` with the given alpha. Accepts hex (`#RRGGBB` or `#RGB`) or
|
|
39
|
+
* existing `rgb()/rgba()` input — themes can declare translucent surface tokens (e.g. Liquid
|
|
40
|
+
* Glass) and downstream gradient callers don't need to special-case them.
|
|
41
|
+
*
|
|
42
|
+
* Name kept for compatibility; semantically this is `withAlpha(color, a)`.
|
|
43
|
+
*/
|
|
44
|
+
export declare function hexToRgba(color: string, alpha: number): string;
|
|
45
|
+
export interface CategoryGradient {
|
|
46
|
+
start: string;
|
|
47
|
+
end: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Header gradient stops for a category. Starts at the category accent with 0.6 alpha and fades to
|
|
51
|
+
* full transparency on the right, simulating the Figma source's backdrop-blur + dark-grey-end gradient
|
|
52
|
+
* (which composited over the dark body reads visually as "fades into the body"). Direct opacity fade
|
|
53
|
+
* is the cheap, render-time-friendly approximation.
|
|
54
|
+
*/
|
|
55
|
+
export declare function resolveCategoryGradient(category: string | undefined, tokens: XenTokens, palette?: GraphCategoryPalette, overrideColor?: string): CategoryGradient;
|
|
56
|
+
//# sourceMappingURL=style.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAKV,SAAS,EACV,MAAM,iCAAiC,CAAA;AAWxC;wCACwC;AACxC,MAAM,MAAM,iBAAiB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,gBAAgB,CAAA;CAAE,CAAA;AAClF,mGAAmG;AACnG,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;AAKpE;2DAC2D;AAC3D,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAI7H;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,MAAM,CAQ/F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,KAAK,CAAC,EAAE,YAAY,GACnB,QAAQ,GAAG,SAAS,GAAG,OAAO,CAIhC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,CAI3E;AAED;;;oFAGoF;AACpF,wBAAgB,aAAa,CAAC,SAAS,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAIrG;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,CAE9E;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAY9D;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAOD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE,oBAAoB,EAC9B,aAAa,CAAC,EAAE,MAAM,GACrB,gBAAgB,CAQlB"}
|
package/dist/style.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
function lookupCategory(name, map) {
|
|
2
|
+
if (name === undefined)
|
|
3
|
+
return undefined;
|
|
4
|
+
return map[name];
|
|
5
|
+
}
|
|
6
|
+
function lookupPin(name, map) {
|
|
7
|
+
return map[name];
|
|
8
|
+
}
|
|
9
|
+
const paletteEntry = (palette, category) => category === undefined ? undefined : palette?.[category];
|
|
10
|
+
/** Accent colour for a category: graph palette (its colour, or a gradient's start) wins over the
|
|
11
|
+
* theme token, which falls back to the utility accent. */
|
|
12
|
+
export function resolveCategoryAccent(category, tokens, palette) {
|
|
13
|
+
const entry = paletteEntry(palette, category);
|
|
14
|
+
if (entry)
|
|
15
|
+
return 'gradient' in entry ? entry.gradient.start : entry.color;
|
|
16
|
+
return lookupCategory(category, tokens.category)?.accent ?? tokens.category.utility.accent;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Fill colour for a pin's interior. For `circle-empty` (wildcard) pins we return the node body
|
|
20
|
+
* colour so the pin reads as a coloured ring around a solid dark center, not an open hole through
|
|
21
|
+
* which the canvas grid shows. The type-distinctive colour stays on the stroke.
|
|
22
|
+
*/
|
|
23
|
+
export function resolvePinFill(pinType, tokens, types) {
|
|
24
|
+
const known = lookupPin(pinType, tokens.pinType);
|
|
25
|
+
if (known) {
|
|
26
|
+
return known.shape === 'circle-empty' ? tokens.color.surface.node : known.color;
|
|
27
|
+
}
|
|
28
|
+
const custom = types?.get(pinType);
|
|
29
|
+
if (custom)
|
|
30
|
+
return custom.color;
|
|
31
|
+
return tokens.pinType.any.color;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Shape of a pin glyph. A registered {@link TypeRegistry} descriptor's `shape` wins; otherwise the
|
|
35
|
+
* Blueprint default — exec pins are arrows (control flow), data pins are circles.
|
|
36
|
+
*/
|
|
37
|
+
export function resolvePinShape(pinType, kind, types) {
|
|
38
|
+
const desc = types?.get(pinType);
|
|
39
|
+
if (desc?.shape)
|
|
40
|
+
return desc.shape;
|
|
41
|
+
return kind === 'exec' ? 'arrow' : 'circle';
|
|
42
|
+
}
|
|
43
|
+
export function resolvePinStroke(pinType, tokens) {
|
|
44
|
+
const known = lookupPin(pinType, tokens.pinType);
|
|
45
|
+
if (known?.shape === 'circle-empty')
|
|
46
|
+
return known.color;
|
|
47
|
+
return tokens.geometry.pin.strokeColor;
|
|
48
|
+
}
|
|
49
|
+
/** Exec-pin colour scheme: a filled gold triangle when connected to an edge, an OUTLINED white
|
|
50
|
+
* triangle otherwise. Lets you read connectivity at a glance without inspecting wires — the
|
|
51
|
+
* data-pin "always filled with type colour" rule wouldn't carry the same signal because data
|
|
52
|
+
* type colours already mean "the pin's type", not "the pin's connection state". */
|
|
53
|
+
export function execPinColors(connected) {
|
|
54
|
+
return connected
|
|
55
|
+
? { fill: '#FCB400', fillAlpha: 1, stroke: '#1A1A1A' }
|
|
56
|
+
: { fill: '#FFFFFF', fillAlpha: 0, stroke: '#FFFFFF' };
|
|
57
|
+
}
|
|
58
|
+
export function resolveEdgeColor(sourceType, tokens) {
|
|
59
|
+
return lookupPin(sourceType, tokens.pinType)?.edgeColor ?? tokens.pinType.any.edgeColor;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Re-emit a colour as `rgba(...)` with the given alpha. Accepts hex (`#RRGGBB` or `#RGB`) or
|
|
63
|
+
* existing `rgb()/rgba()` input — themes can declare translucent surface tokens (e.g. Liquid
|
|
64
|
+
* Glass) and downstream gradient callers don't need to special-case them.
|
|
65
|
+
*
|
|
66
|
+
* Name kept for compatibility; semantically this is `withAlpha(color, a)`.
|
|
67
|
+
*/
|
|
68
|
+
export function hexToRgba(color, alpha) {
|
|
69
|
+
const a = Math.max(0, Math.min(1, alpha));
|
|
70
|
+
const rgbMatch = color.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/i);
|
|
71
|
+
if (rgbMatch) {
|
|
72
|
+
return `rgba(${rgbMatch[1]}, ${rgbMatch[2]}, ${rgbMatch[3]}, ${a})`;
|
|
73
|
+
}
|
|
74
|
+
const h = color.startsWith('#') ? color.slice(1) : color;
|
|
75
|
+
const expanded = h.length === 3 ? h.split('').map((c) => c + c).join('') : h;
|
|
76
|
+
const r = parseInt(expanded.slice(0, 2), 16);
|
|
77
|
+
const g = parseInt(expanded.slice(2, 4), 16);
|
|
78
|
+
const b = parseInt(expanded.slice(4, 6), 16);
|
|
79
|
+
return `rgba(${r}, ${g}, ${b}, ${a})`;
|
|
80
|
+
}
|
|
81
|
+
/** Fade gradient derived from a single accent colour (accent@0.6 → transparent). */
|
|
82
|
+
function fadeFrom(accent) {
|
|
83
|
+
return { start: hexToRgba(accent, 0.6), end: hexToRgba(accent, 0) };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Header gradient stops for a category. Starts at the category accent with 0.6 alpha and fades to
|
|
87
|
+
* full transparency on the right, simulating the Figma source's backdrop-blur + dark-grey-end gradient
|
|
88
|
+
* (which composited over the dark body reads visually as "fades into the body"). Direct opacity fade
|
|
89
|
+
* is the cheap, render-time-friendly approximation.
|
|
90
|
+
*/
|
|
91
|
+
export function resolveCategoryGradient(category, tokens, palette, overrideColor) {
|
|
92
|
+
// Per-node colour wins outright.
|
|
93
|
+
if (overrideColor !== undefined)
|
|
94
|
+
return fadeFrom(overrideColor);
|
|
95
|
+
// A palette entry: explicit gradient verbatim, or a fade from its colour.
|
|
96
|
+
const entry = paletteEntry(palette, category);
|
|
97
|
+
if (entry)
|
|
98
|
+
return 'gradient' in entry ? entry.gradient : fadeFrom(entry.color);
|
|
99
|
+
// Otherwise the theme category accent fade (back-compat).
|
|
100
|
+
return fadeFrom(resolveCategoryAccent(category, tokens));
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.js","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { TextMeasurer } from './layout.js';
|
|
2
|
+
/** A `TextMeasurer` backed by PIXI's `CanvasTextMetrics`. TextStyle objects are cached per
|
|
3
|
+
* (fontSize × fontWeight) since `measureNodeSize` calls this once per node label at load time and
|
|
4
|
+
* the same handful of font variants repeats across hundreds of nodes. */
|
|
5
|
+
export declare function createPixiTextMeasurer(fontFamily: string): TextMeasurer;
|
|
6
|
+
//# sourceMappingURL=text-measure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-measure.d.ts","sourceRoot":"","sources":["../src/text-measure.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C;;0EAE0E;AAC1E,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAevE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CanvasTextMetrics, TextStyle } from 'pixi.js';
|
|
2
|
+
/** A `TextMeasurer` backed by PIXI's `CanvasTextMetrics`. TextStyle objects are cached per
|
|
3
|
+
* (fontSize × fontWeight) since `measureNodeSize` calls this once per node label at load time and
|
|
4
|
+
* the same handful of font variants repeats across hundreds of nodes. */
|
|
5
|
+
export function createPixiTextMeasurer(fontFamily) {
|
|
6
|
+
const styles = new Map();
|
|
7
|
+
return (text, fontSize, fontWeight) => {
|
|
8
|
+
const key = `${fontSize}|${fontWeight}`;
|
|
9
|
+
let style = styles.get(key);
|
|
10
|
+
if (!style) {
|
|
11
|
+
style = new TextStyle({
|
|
12
|
+
fontFamily,
|
|
13
|
+
fontSize,
|
|
14
|
+
fontWeight: String(fontWeight),
|
|
15
|
+
});
|
|
16
|
+
styles.set(key, style);
|
|
17
|
+
}
|
|
18
|
+
return CanvasTextMetrics.measureText(text, style, undefined, false).width;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=text-measure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-measure.js","sourceRoot":"","sources":["../src/text-measure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAA4B,MAAM,SAAS,CAAA;AAGhF;;0EAE0E;AAC1E,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAA;IAC3C,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE;QACpC,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAA;QACvC,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,IAAI,SAAS,CAAC;gBACpB,UAAU;gBACV,QAAQ;gBACR,UAAU,EAAE,MAAM,CAAC,UAAU,CAAwB;aACtD,CAAC,CAAA;YACF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACxB,CAAC;QACD,OAAO,iBAAiB,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,KAAK,CAAA;IAC3E,CAAC,CAAA;AACH,CAAC"}
|
package/dist/theme.d.ts
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { Graphics, Container, TextureSource } from 'pixi.js';
|
|
2
|
+
import type { Node } from '@xenolithengine/graph-core';
|
|
3
|
+
import type { XenTokens } from '@xenolithengine/graph-theme-xen';
|
|
4
|
+
import type { NodeView, RenderNodeOptions } from './node-renderer.js';
|
|
5
|
+
import type { PinLayout } from './layout.js';
|
|
6
|
+
import type { RenderEdgeOptions } from './edge-renderer.js';
|
|
7
|
+
/**
|
|
8
|
+
* A swappable theme. Bundles design tokens with optional per-element rendering hooks; if a hook
|
|
9
|
+
* is omitted the editor falls back to the default Xen renderer for that element.
|
|
10
|
+
*
|
|
11
|
+
* Themes are values, not subclasses — registries can carry many side-by-side, and
|
|
12
|
+
* `editor.setTheme(...)` swaps them at runtime by re-rendering every node, edge, and the grid.
|
|
13
|
+
*/
|
|
14
|
+
/** Shared editor state surfaced to theme render hooks. Themes that opt into backdrop sampling
|
|
15
|
+
* (Liquid Glass, Pixel Art) bind the live backdrop texture from this context to their shader.
|
|
16
|
+
* The texture instance is stable across resizes; PIXI updates the underlying GPU resource. */
|
|
17
|
+
export interface ThemeRenderContext {
|
|
18
|
+
backdropTexture: TextureSource | null;
|
|
19
|
+
}
|
|
20
|
+
/** CSS-level styling for DOM chrome (the insert palette, future panels). Themes provide this so
|
|
21
|
+
* the HTML overlays restyle alongside the PIXI canvas. Liquid Glass uses a frosted-glass
|
|
22
|
+
* approximation here (backdrop-filter blur) rather than the real backdrop-sampling shader —
|
|
23
|
+
* CSS is enough for chrome. Any omitted field falls back to a Xen-derived default. */
|
|
24
|
+
export interface PaletteStyle {
|
|
25
|
+
/** CSS backdrop-filter value, e.g. 'blur(14px) saturate(140%)'. Omit / 'none' for flat themes. */
|
|
26
|
+
backdropFilter?: string;
|
|
27
|
+
panelBackground: string;
|
|
28
|
+
panelBorder: string;
|
|
29
|
+
panelShadow?: string;
|
|
30
|
+
panelRadius?: string;
|
|
31
|
+
textColor: string;
|
|
32
|
+
mutedColor: string;
|
|
33
|
+
/** Highlight colour for matched query characters and the active row accent. */
|
|
34
|
+
accent: string;
|
|
35
|
+
rowSelectedBackground: string;
|
|
36
|
+
inputBackground: string;
|
|
37
|
+
inputBorder?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface XenolithTheme {
|
|
40
|
+
/** Stable identifier used for diffing in setTheme and for telemetry. */
|
|
41
|
+
id: string;
|
|
42
|
+
tokens: XenTokens;
|
|
43
|
+
/** CSS styling for DOM chrome (insert palette). Falls back to a Xen-derived default. */
|
|
44
|
+
paletteStyle?: PaletteStyle;
|
|
45
|
+
/** Opt-in flag — when true, the editor maintains a per-frame backdrop RenderTexture and
|
|
46
|
+
* surfaces it via `ThemeRenderContext.backdropTexture`. Themes that don't sample the
|
|
47
|
+
* backdrop (Xen, vanilla flat themes) leave this false so the editor skips the extra render
|
|
48
|
+
* pass entirely. */
|
|
49
|
+
needsBackdrop?: boolean;
|
|
50
|
+
/** Opt-in flag — when true, the editor bakes each node into a sprite during a zoom/pan gesture
|
|
51
|
+
* and restores the live nodes on settle. Hides the per-frame cost of expensive materials (the
|
|
52
|
+
* Liquid Glass shader) during navigation. Cheap/flat themes (Xen) leave it false. */
|
|
53
|
+
freezeOnNavigate?: boolean;
|
|
54
|
+
/** How a comment/group header is painted so it matches the theme's node header. `'gradient'`
|
|
55
|
+
* (default, Xen): horizontal accent fade + white highlight + rim. `'tint'` (Liquid Glass): flat
|
|
56
|
+
* accent tint, mirroring the LG node header tint. */
|
|
57
|
+
commentHeaderStyle?: 'gradient' | 'tint';
|
|
58
|
+
/** Viewport-virtualization threshold: once a graph exceeds this many nodes, the editor keeps a
|
|
59
|
+
* live PIXI view only for nodes near the viewport (off-screen nodes are data only). Defaults to
|
|
60
|
+
* 300. Heavier themes (Liquid Glass — per-node backdrop RTs + shader) set a LOWER value so the
|
|
61
|
+
* GPU ceiling is reached at fewer nodes. At or below the threshold the graph renders 1:1. */
|
|
62
|
+
virtualizeThreshold?: number;
|
|
63
|
+
/** Custom node rendering pipeline. Themes that need backdrop sampling read ctx.backdropTexture. */
|
|
64
|
+
renderNode?: (node: Node, opts: RenderNodeOptions, ctx: ThemeRenderContext) => NodeView;
|
|
65
|
+
/** Custom reroute-knot rendering. Falls back to the Xen disc (`renderRerouteNode`) when omitted.
|
|
66
|
+
* Liquid Glass draws a glass disc here. */
|
|
67
|
+
renderReroute?: (node: Node, opts: RenderNodeOptions, ctx: ThemeRenderContext) => NodeView;
|
|
68
|
+
/** Custom palette Reroute-node rendering (the compact headerless box). Falls back to the Xen box
|
|
69
|
+
* (`renderRerouteNodeBox`) when omitted. */
|
|
70
|
+
renderRerouteNode?: (node: Node, opts: RenderNodeOptions, ctx: ThemeRenderContext) => NodeView;
|
|
71
|
+
/** Custom wire rendering. Returns the same `Graphics` so the editor can reuse the instance. */
|
|
72
|
+
drawEdge?: (g: Graphics, from: PinLayout, to: PinLayout, opts: RenderEdgeOptions) => Graphics;
|
|
73
|
+
/** Custom canvas background / grid. Return an empty Container to mean "no grid at all". */
|
|
74
|
+
createGrid?: () => Container;
|
|
75
|
+
/** Per-frame hook fired after the editor updates its backdrop RT. Themes use this to refresh
|
|
76
|
+
* per-frame uniforms across every mesh they created — e.g. uBackdropSize for Liquid Glass
|
|
77
|
+
* so its shader sampling stays correct when the canvas resizes. */
|
|
78
|
+
onFrame?: (ctx: ThemeRenderContext) => void;
|
|
79
|
+
/** Hook fired per-node when the editor renders a personal backdrop RT for that node — painter's-
|
|
80
|
+
* order compositing for AABB-overlapping nodes (Liquid Glass refracts what's underneath). Themes
|
|
81
|
+
* swap the per-node mesh's uBackdropTex resource to this texture so the shader samples the
|
|
82
|
+
* node-specific composition rather than the shared empty backdrop. Called with `null` to revert
|
|
83
|
+
* a node back to the shared backdrop when it stops overlapping. */
|
|
84
|
+
onNodeBackdrop?: (nodeId: string, texture: TextureSource | null) => void;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE3D;;;;;;GAMG;AACH;;+FAE+F;AAC/F,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,aAAa,GAAG,IAAI,CAAA;CACtC;AAED;;;uFAGuF;AACvF,MAAM,WAAW,YAAY;IAC3B,kGAAkG;IAClG,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAA;IACd,qBAAqB,EAAE,MAAM,CAAA;IAC7B,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,SAAS,CAAA;IACjB,wFAAwF;IACxF,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;;yBAGqB;IACrB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;0FAEsF;IACtF,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;0DAEsD;IACtD,kBAAkB,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;IACxC;;;kGAG8F;IAC9F,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mGAAmG;IACnG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,kBAAkB,KAAK,QAAQ,CAAA;IACvF;gDAC4C;IAC5C,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,kBAAkB,KAAK,QAAQ,CAAA;IAC1F;iDAC6C;IAC7C,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,kBAAkB,KAAK,QAAQ,CAAA;IAC9F,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,KAAK,QAAQ,CAAA;IAC7F,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,SAAS,CAAA;IAC5B;;wEAEoE;IACpE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAC3C;;;;wEAIoE;IACpE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAA;CACzE"}
|
package/dist/theme.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":""}
|