edododraw 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.
- package/LICENSE +27 -0
- package/README.md +71 -0
- package/dist-lib/chunks/EdodoDraw-CUf224RG.js +5432 -0
- package/dist-lib/chunks/EdodoDraw-CUf224RG.js.map +1 -0
- package/dist-lib/engine/annotate/interact.d.ts +69 -0
- package/dist-lib/engine/annotate/interact.d.ts.map +1 -0
- package/dist-lib/engine/annotate/layer.d.ts +34 -0
- package/dist-lib/engine/annotate/layer.d.ts.map +1 -0
- package/dist-lib/engine/camera/controller.d.ts +42 -0
- package/dist-lib/engine/camera/controller.d.ts.map +1 -0
- package/dist-lib/engine/camera/easing.d.ts +9 -0
- package/dist-lib/engine/camera/easing.d.ts.map +1 -0
- package/dist-lib/engine/camera/fit.d.ts +21 -0
- package/dist-lib/engine/camera/fit.d.ts.map +1 -0
- package/dist-lib/engine/dsl/ast.d.ts +266 -0
- package/dist-lib/engine/dsl/ast.d.ts.map +1 -0
- package/dist-lib/engine/dsl/compile.d.ts +18 -0
- package/dist-lib/engine/dsl/compile.d.ts.map +1 -0
- package/dist-lib/engine/dsl/diagnostics.d.ts +42 -0
- package/dist-lib/engine/dsl/diagnostics.d.ts.map +1 -0
- package/dist-lib/engine/dsl/index.d.ts +19 -0
- package/dist-lib/engine/dsl/index.d.ts.map +1 -0
- package/dist-lib/engine/dsl/lexer.d.ts +8 -0
- package/dist-lib/engine/dsl/lexer.d.ts.map +1 -0
- package/dist-lib/engine/dsl/lower.d.ts +35 -0
- package/dist-lib/engine/dsl/lower.d.ts.map +1 -0
- package/dist-lib/engine/dsl/parser.d.ts +19 -0
- package/dist-lib/engine/dsl/parser.d.ts.map +1 -0
- package/dist-lib/engine/dsl/tokens.d.ts +66 -0
- package/dist-lib/engine/dsl/tokens.d.ts.map +1 -0
- package/dist-lib/engine/export.d.ts +22 -0
- package/dist-lib/engine/export.d.ts.map +1 -0
- package/dist-lib/engine/geometry.d.ts +55 -0
- package/dist-lib/engine/geometry.d.ts.map +1 -0
- package/dist-lib/engine/import/mermaid.d.ts +25 -0
- package/dist-lib/engine/import/mermaid.d.ts.map +1 -0
- package/dist-lib/engine/index.d.ts +32 -0
- package/dist-lib/engine/index.d.ts.map +1 -0
- package/dist-lib/engine/layout/dag.d.ts +29 -0
- package/dist-lib/engine/layout/dag.d.ts.map +1 -0
- package/dist-lib/engine/layout/grid.d.ts +12 -0
- package/dist-lib/engine/layout/grid.d.ts.map +1 -0
- package/dist-lib/engine/layout/index.d.ts +30 -0
- package/dist-lib/engine/layout/index.d.ts.map +1 -0
- package/dist-lib/engine/layout/radial.d.ts +18 -0
- package/dist-lib/engine/layout/radial.d.ts.map +1 -0
- package/dist-lib/engine/plugins/builtins.d.ts +10 -0
- package/dist-lib/engine/plugins/builtins.d.ts.map +1 -0
- package/dist-lib/engine/plugins/registry.d.ts +19 -0
- package/dist-lib/engine/plugins/registry.d.ts.map +1 -0
- package/dist-lib/engine/render/edges.d.ts +42 -0
- package/dist-lib/engine/render/edges.d.ts.map +1 -0
- package/dist-lib/engine/render/fontData.d.ts +8 -0
- package/dist-lib/engine/render/fontData.d.ts.map +1 -0
- package/dist-lib/engine/render/shapes.d.ts +26 -0
- package/dist-lib/engine/render/shapes.d.ts.map +1 -0
- package/dist-lib/engine/render/svgRenderer.d.ts +56 -0
- package/dist-lib/engine/render/svgRenderer.d.ts.map +1 -0
- package/dist-lib/engine/render/theme.css.d.ts +16 -0
- package/dist-lib/engine/render/theme.css.d.ts.map +1 -0
- package/dist-lib/engine/scene/anchors.d.ts +20 -0
- package/dist-lib/engine/scene/anchors.d.ts.map +1 -0
- package/dist-lib/engine/scene/defaults.d.ts +47 -0
- package/dist-lib/engine/scene/defaults.d.ts.map +1 -0
- package/dist-lib/engine/scene/palette.d.ts +71 -0
- package/dist-lib/engine/scene/palette.d.ts.map +1 -0
- package/dist-lib/engine/scene/query.d.ts +25 -0
- package/dist-lib/engine/scene/query.d.ts.map +1 -0
- package/dist-lib/engine/scene/types.d.ts +203 -0
- package/dist-lib/engine/scene/types.d.ts.map +1 -0
- package/dist-lib/engine/timeline/player.d.ts +44 -0
- package/dist-lib/engine/timeline/player.d.ts.map +1 -0
- package/dist-lib/fonts/CascadiaCode-Regular.woff2 +0 -0
- package/dist-lib/fonts/Excalifont-Regular-349fac6ca4700ffec595a7150a0d1e1d.woff2 +0 -0
- package/dist-lib/fonts/Excalifont-Regular-3f2c5db56cc93c5a6873b1361d730c16.woff2 +0 -0
- package/dist-lib/fonts/Excalifont-Regular-41b173a47b57366892116a575a43e2b6.woff2 +0 -0
- package/dist-lib/fonts/Excalifont-Regular-623ccf21b21ef6b3a0d87738f77eb071.woff2 +0 -0
- package/dist-lib/fonts/Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2 +0 -0
- package/dist-lib/fonts/Excalifont-Regular-b9dcf9d2e50a1eaf42fc664b50a3fd0d.woff2 +0 -0
- package/dist-lib/fonts/Excalifont-Regular-be310b9bcd4f1a43f571c46df7809174.woff2 +0 -0
- package/dist-lib/fonts/Nunito-Regular.woff2 +0 -0
- package/dist-lib/fonts/Virgil-Regular.woff2 +0 -0
- package/dist-lib/index.js +76 -0
- package/dist-lib/index.js.map +1 -0
- package/dist-lib/lib/EdodoDraw.d.ts +96 -0
- package/dist-lib/lib/EdodoDraw.d.ts.map +1 -0
- package/dist-lib/lib/index.d.ts +17 -0
- package/dist-lib/lib/index.d.ts.map +1 -0
- package/dist-lib/lib/react.d.ts +25 -0
- package/dist-lib/lib/react.d.ts.map +1 -0
- package/dist-lib/react.js +29 -0
- package/dist-lib/react.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token model for the EDodoDraw DSL lexer.
|
|
3
|
+
*
|
|
4
|
+
* Design notes (per the language spec §3, §12):
|
|
5
|
+
* - Keywords are SOFT: they lex as IDENT and the parser recognizes them by
|
|
6
|
+
* text in head position. This keeps the token set small and lets ids like
|
|
7
|
+
* `focus` or `label` be used as node ids in non-keyword positions.
|
|
8
|
+
* - The lexer is PERMISSIVE: it never throws. Unknown characters become a
|
|
9
|
+
* SYMBOL token so shape-sugar innards (captured raw by the parser via source
|
|
10
|
+
* offsets) don't crash lexing.
|
|
11
|
+
* - Every token keeps byte offsets + line/col for diagnostics and for the
|
|
12
|
+
* parser's raw shape-sugar capture.
|
|
13
|
+
*/
|
|
14
|
+
export declare enum T {
|
|
15
|
+
Newline = "Newline",
|
|
16
|
+
Semi = "Semi",
|
|
17
|
+
Ident = "Ident",
|
|
18
|
+
String = "String",
|
|
19
|
+
Raw = "Raw",// triple-quoted / mermaid body
|
|
20
|
+
Number = "Number",// value + optional unit
|
|
21
|
+
Color = "Color",
|
|
22
|
+
Bool = "Bool",
|
|
23
|
+
TokenRef = "TokenRef",// $name
|
|
24
|
+
TripleColon = "TripleColon",// :::
|
|
25
|
+
EdgeOp = "EdgeOp",
|
|
26
|
+
At = "At",// @
|
|
27
|
+
Amp = "Amp",// &
|
|
28
|
+
Pipe = "Pipe",// |
|
|
29
|
+
Colon = "Colon",
|
|
30
|
+
Comma = "Comma",
|
|
31
|
+
Dot = "Dot",
|
|
32
|
+
Slash = "Slash",
|
|
33
|
+
Eq = "Eq",
|
|
34
|
+
LBrace = "LBrace",
|
|
35
|
+
RBrace = "RBrace",
|
|
36
|
+
LBracket = "LBracket",
|
|
37
|
+
RBracket = "RBracket",
|
|
38
|
+
LParen = "LParen",
|
|
39
|
+
RParen = "RParen",
|
|
40
|
+
Symbol = "Symbol",// any other single char (permissive)
|
|
41
|
+
EOF = "EOF"
|
|
42
|
+
}
|
|
43
|
+
export interface Token {
|
|
44
|
+
kind: T;
|
|
45
|
+
/** Raw lexeme text (for STRING/RAW: the decoded content). */
|
|
46
|
+
text: string;
|
|
47
|
+
/** Numeric value for Number tokens. */
|
|
48
|
+
num?: number;
|
|
49
|
+
/** Unit suffix for Number tokens: px % deg rad turn ms s pt em fr x. */
|
|
50
|
+
unit?: string | null;
|
|
51
|
+
/** For Bool tokens. */
|
|
52
|
+
bool?: boolean;
|
|
53
|
+
/** For TokenRef: the name without `$`. For Raw: an optional tag. */
|
|
54
|
+
name?: string;
|
|
55
|
+
start: number;
|
|
56
|
+
end: number;
|
|
57
|
+
line: number;
|
|
58
|
+
col: number;
|
|
59
|
+
}
|
|
60
|
+
/** Edge operator glyphs, longest-first for maximal-munch matching. */
|
|
61
|
+
export declare const EDGE_GLYPHS: string[];
|
|
62
|
+
/** Soft keyword sets used by the parser (not the lexer). */
|
|
63
|
+
export declare const KEYWORDS: Set<string>;
|
|
64
|
+
export declare const SHAPE_KEYWORDS: Set<string>;
|
|
65
|
+
export declare const LAYOUT_KEYWORDS: Set<string>;
|
|
66
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/engine/dsl/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,oBAAY,CAAC;IACX,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,GAAG,QAAQ,CAAE,+BAA+B;IAC5C,MAAM,WAAW,CAAE,wBAAwB;IAC3C,KAAK,UAAU;IACf,IAAI,SAAS;IACb,QAAQ,aAAa,CAAE,QAAQ;IAC/B,WAAW,gBAAgB,CAAE,MAAM;IACnC,MAAM,WAAW;IACjB,EAAE,OAAO,CAAE,IAAI;IACf,GAAG,QAAQ,CAAE,IAAI;IACjB,IAAI,SAAS,CAAE,IAAI;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,EAAE,OAAO;IACT,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW,CAAE,qCAAqC;IACxD,GAAG,QAAQ;CACZ;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,CAAC,CAAC;IACR,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,uBAAuB;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,sEAAsE;AACtE,eAAO,MAAM,WAAW,EAAE,MAAM,EAmB/B,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,QAAQ,aAKnB,CAAC;AAEH,eAAO,MAAM,cAAc,aAKzB,CAAC;AAEH,eAAO,MAAM,eAAe,aAE1B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Export helpers: turn the live diagram into a self-contained SVG (with the
|
|
3
|
+
* hand-drawn font embedded as base64 so it renders anywhere), a PNG raster, the
|
|
4
|
+
* raw scene JSON, or the source code. All framing uses the scene's content
|
|
5
|
+
* bbox, independent of the current camera.
|
|
6
|
+
*/
|
|
7
|
+
import type { Scene } from "./scene/types.js";
|
|
8
|
+
import type { SvgRenderer } from "./render/svgRenderer.js";
|
|
9
|
+
export interface ExportOptions {
|
|
10
|
+
padding?: number;
|
|
11
|
+
embedFont?: boolean;
|
|
12
|
+
scale?: number;
|
|
13
|
+
background?: string | null;
|
|
14
|
+
}
|
|
15
|
+
/** Build a standalone SVG string of the whole scene at content coordinates. */
|
|
16
|
+
export declare function exportSVGString(renderer: SvgRenderer, scene: Scene, opts?: ExportOptions): Promise<string>;
|
|
17
|
+
export declare function exportPNGBlob(renderer: SvgRenderer, scene: Scene, opts?: ExportOptions): Promise<Blob>;
|
|
18
|
+
export declare function download(filename: string, data: Blob | string, type?: string): void;
|
|
19
|
+
export declare function downloadSVG(renderer: SvgRenderer, scene: Scene): Promise<void>;
|
|
20
|
+
export declare function downloadPNG(renderer: SvgRenderer, scene: Scene): Promise<void>;
|
|
21
|
+
export declare function downloadJSON(scene: Scene): void;
|
|
22
|
+
//# sourceMappingURL=export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/engine/export.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAY3D,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,+EAA+E;AAC/E,wBAAsB,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6CpH;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBhH;AAWD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,IAAI,SAAe,GAAG,IAAI,CAUzF;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpF;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAE/C"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Geometry primitives shared across the engine.
|
|
3
|
+
* All engine coordinates are in "world" space (unbounded, y-down) unless a
|
|
4
|
+
* function name says otherwise. The camera converts world <-> screen.
|
|
5
|
+
*/
|
|
6
|
+
export interface Point {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
}
|
|
10
|
+
export interface Size {
|
|
11
|
+
w: number;
|
|
12
|
+
h: number;
|
|
13
|
+
}
|
|
14
|
+
/** Axis-aligned rectangle by top-left corner + size. */
|
|
15
|
+
export interface Rect {
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
w: number;
|
|
19
|
+
h: number;
|
|
20
|
+
}
|
|
21
|
+
/** Axis-aligned bounding box by extents. */
|
|
22
|
+
export interface BBox {
|
|
23
|
+
minX: number;
|
|
24
|
+
minY: number;
|
|
25
|
+
maxX: number;
|
|
26
|
+
maxY: number;
|
|
27
|
+
}
|
|
28
|
+
export declare const clamp: (v: number, lo: number, hi: number) => number;
|
|
29
|
+
export declare const lerp: (a: number, b: number, t: number) => number;
|
|
30
|
+
export declare const dist: (a: Point, b: Point) => number;
|
|
31
|
+
export declare const rectCenter: (r: Rect) => Point;
|
|
32
|
+
export declare const rectToBBox: (r: Rect) => BBox;
|
|
33
|
+
export declare const bboxToRect: (b: BBox) => Rect;
|
|
34
|
+
export declare const bboxCenter: (b: BBox) => Point;
|
|
35
|
+
export declare const bboxSize: (b: BBox) => Size;
|
|
36
|
+
export declare const emptyBBox: () => BBox;
|
|
37
|
+
export declare const isEmptyBBox: (b: BBox) => boolean;
|
|
38
|
+
export declare const bboxUnion: (a: BBox, b: BBox) => BBox;
|
|
39
|
+
export declare const bboxOfPoints: (points: Point[]) => BBox;
|
|
40
|
+
export declare const expandBBox: (b: BBox, pad: number) => BBox;
|
|
41
|
+
export declare const pointInRect: (p: Point, r: Rect) => boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Intersection of the segment from the rect center toward `target` with the
|
|
44
|
+
* rect border. Used to make an edge touch a node's border instead of its
|
|
45
|
+
* center. Returns the border point (falls back to center if degenerate).
|
|
46
|
+
*/
|
|
47
|
+
export declare const borderPointToward: (r: Rect, target: Point) => Point;
|
|
48
|
+
/**
|
|
49
|
+
* Border point for an ellipse toward a target (used for ellipse/circle nodes so
|
|
50
|
+
* edges meet the curve, not the bounding rect).
|
|
51
|
+
*/
|
|
52
|
+
export declare const ellipseBorderToward: (r: Rect, target: Point) => Point;
|
|
53
|
+
/** Deterministic 32-bit hash of a string — used for stable rough.js seeds. */
|
|
54
|
+
export declare const hashString: (s: string) => number;
|
|
55
|
+
//# sourceMappingURL=geometry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/engine/geometry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,wDAAwD;AACxD,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,4CAA4C;AAC5C,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,EAAE,IAAI,MAAM,EAAE,IAAI,MAAM,KAAG,MAC3B,CAAC;AAEhC,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,MAAyB,CAAC;AAEjF,eAAO,MAAM,IAAI,GAAI,GAAG,KAAK,EAAE,GAAG,KAAK,KAAG,MAA0C,CAAC;AAErF,eAAO,MAAM,UAAU,GAAI,GAAG,IAAI,KAAG,KAAiD,CAAC;AAEvF,eAAO,MAAM,UAAU,GAAI,GAAG,IAAI,KAAG,IAKnC,CAAC;AAEH,eAAO,MAAM,UAAU,GAAI,GAAG,IAAI,KAAG,IAKnC,CAAC;AAEH,eAAO,MAAM,UAAU,GAAI,GAAG,IAAI,KAAG,KAGnC,CAAC;AAEH,eAAO,MAAM,QAAQ,GAAI,GAAG,IAAI,KAAG,IAGjC,CAAC;AAEH,eAAO,MAAM,SAAS,QAAO,IAK3B,CAAC;AAEH,eAAO,MAAM,WAAW,GAAI,GAAG,IAAI,KAAG,OAC0B,CAAC;AAEjE,eAAO,MAAM,SAAS,GAAI,GAAG,IAAI,EAAE,GAAG,IAAI,KAAG,IAK3C,CAAC;AAEH,eAAO,MAAM,YAAY,GAAI,QAAQ,KAAK,EAAE,KAAG,IAS9C,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,GAAG,IAAI,EAAE,KAAK,MAAM,KAAG,IAKhD,CAAC;AAEH,eAAO,MAAM,WAAW,GAAI,GAAG,KAAK,EAAE,GAAG,IAAI,KAAG,OACkB,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,GAAG,IAAI,EAAE,QAAQ,KAAK,KAAG,KAY1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,GAAG,IAAI,EAAE,QAAQ,KAAK,KAAG,KAU5D,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,UAAU,GAAI,GAAG,MAAM,KAAG,MAOtC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mermaid import — converts a mermaid diagram string into EDodoDraw Scene IR
|
|
3
|
+
* fragments (nodes + edges) via @excalidraw/mermaid-to-excalidraw. Node ids are
|
|
4
|
+
* preserved (mermaid ids like `grafana`), so the timeline/annotate layers can
|
|
5
|
+
* reference imported elements directly.
|
|
6
|
+
*
|
|
7
|
+
* Runs in the browser only (mermaid renders to a hidden SVG). The pure DSL
|
|
8
|
+
* compiler stays synchronous; the app awaits this and injects the result.
|
|
9
|
+
*/
|
|
10
|
+
import type { SceneEdge, SceneNode } from "../scene/types.js";
|
|
11
|
+
export interface MermaidFragment {
|
|
12
|
+
nodes: SceneNode[];
|
|
13
|
+
edges: SceneEdge[];
|
|
14
|
+
}
|
|
15
|
+
/** Convert a mermaid definition into Scene IR fragments. */
|
|
16
|
+
export declare function convertMermaid(definition: string, mode?: "light" | "dark"): Promise<MermaidFragment>;
|
|
17
|
+
/**
|
|
18
|
+
* Merge a mermaid fragment into a scene. If a node id already exists (e.g. a
|
|
19
|
+
* `grafana:::signal` class-application placeholder), keep its cascaded style but
|
|
20
|
+
* adopt the mermaid geometry/shape/label.
|
|
21
|
+
*/
|
|
22
|
+
export declare function injectMermaid(scene: import("../scene/types.js").Scene, frag: MermaidFragment): void;
|
|
23
|
+
/** Extract `mermaid """ … """` block bodies from EDodoDraw source. */
|
|
24
|
+
export declare function extractMermaidBlocks(source: string): string[];
|
|
25
|
+
//# sourceMappingURL=mermaid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaid.d.ts","sourceRoot":"","sources":["../../../src/engine/import/mermaid.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAa,MAAM,mBAAmB,CAAC;AAiCzE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAeD,4DAA4D;AAC5D,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,OAAO,GAAG,MAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAsEnH;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CAkBnG;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ7D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public engine barrel. The app (and any embedder) imports from here.
|
|
3
|
+
*/
|
|
4
|
+
import "./plugins/builtins.js";
|
|
5
|
+
export * from "./geometry.js";
|
|
6
|
+
export * from "./scene/types.js";
|
|
7
|
+
export * from "./scene/palette.js";
|
|
8
|
+
export * from "./scene/defaults.js";
|
|
9
|
+
export * from "./scene/anchors.js";
|
|
10
|
+
export * from "./scene/query.js";
|
|
11
|
+
export { SvgRenderer } from "./render/svgRenderer.js";
|
|
12
|
+
export type { CameraTransform } from "./render/svgRenderer.js";
|
|
13
|
+
export { ensureEngineStyles, FONT_FAMILY } from "./render/theme.css.js";
|
|
14
|
+
export { cameraForBBox, cameraForCenter } from "./camera/fit.js";
|
|
15
|
+
export { CameraController } from "./camera/controller.js";
|
|
16
|
+
export type { MoveOptions } from "./camera/controller.js";
|
|
17
|
+
export { EASINGS, easingByName } from "./camera/easing.js";
|
|
18
|
+
export { AnnotationLayer } from "./annotate/layer.js";
|
|
19
|
+
export { LiveAnnotationController } from "./annotate/interact.js";
|
|
20
|
+
export type { Tool, LiveState } from "./annotate/interact.js";
|
|
21
|
+
export { hitTestNode } from "./scene/query.js";
|
|
22
|
+
export { TimelinePlayer } from "./timeline/player.js";
|
|
23
|
+
export type { PlayerState } from "./timeline/player.js";
|
|
24
|
+
export { applyLayout } from "./layout/index.js";
|
|
25
|
+
export { compileEdd } from "./dsl/index.js";
|
|
26
|
+
export type { CompileEddResult } from "./dsl/index.js";
|
|
27
|
+
export { DiagnosticBag, formatDiagnostic } from "./dsl/diagnostics.js";
|
|
28
|
+
export type { Diagnostic } from "./dsl/diagnostics.js";
|
|
29
|
+
export { downloadSVG, downloadPNG, downloadJSON, exportSVGString, exportPNGBlob } from "./export.js";
|
|
30
|
+
export { registerShape, getShapePlugin, listShapePlugins } from "./plugins/registry.js";
|
|
31
|
+
export type { ShapePluginFn } from "./plugins/registry.js";
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,uBAAuB,CAAC;AAE/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACvE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrG,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACxF,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directed-acyclic (layered) layout via dagre.
|
|
3
|
+
*
|
|
4
|
+
* dagre works in CENTRE coordinates; the Scene IR stores TOP-LEFT, so read-back
|
|
5
|
+
* subtracts half the node size. Scene groups become dagre compound clusters so
|
|
6
|
+
* that grouped members are kept adjacent in the final layering.
|
|
7
|
+
*/
|
|
8
|
+
import type { Scene, SceneNode } from "../scene/types.js";
|
|
9
|
+
export type RankDir = "TB" | "BT" | "LR" | "RL";
|
|
10
|
+
export interface DagOptions {
|
|
11
|
+
/** dagre rank direction. */
|
|
12
|
+
rankdir: RankDir;
|
|
13
|
+
/** Separation between nodes in the same rank (px). */
|
|
14
|
+
nodesep: number;
|
|
15
|
+
/** Separation between ranks (px). */
|
|
16
|
+
ranksep: number;
|
|
17
|
+
/** Graph margin on both axes (px). */
|
|
18
|
+
margin: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Lay out the given `movable` nodes with dagre and write their top-left x/y.
|
|
22
|
+
*
|
|
23
|
+
* Only nodes in `movable` are fed to the graph (pinned nodes are excluded by
|
|
24
|
+
* the caller). Edges are included only when both endpoints are real nodes that
|
|
25
|
+
* are present in the graph. Throws if dagre returns a non-finite position so
|
|
26
|
+
* the caller can fall back to another layout.
|
|
27
|
+
*/
|
|
28
|
+
export declare function layoutDag(scene: Scene, movable: SceneNode[], opts: DagOptions): void;
|
|
29
|
+
//# sourceMappingURL=dag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dag.d.ts","sourceRoot":"","sources":["../../../src/engine/layout/dag.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,4BAA4B;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CA+DpF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Grid layout — arrange nodes on a uniform square grid, row-major.
|
|
3
|
+
*
|
|
4
|
+
* Columns = ceil(sqrt(n)). The cell is a square sized to the largest single
|
|
5
|
+
* node dimension (width OR height) plus the gap, so neighbouring cells can
|
|
6
|
+
* never overlap regardless of how the nodes are shaped. Each node is centred
|
|
7
|
+
* inside its cell, which keeps mixed-size grids visually aligned.
|
|
8
|
+
*/
|
|
9
|
+
import type { SceneNode } from "../scene/types.js";
|
|
10
|
+
/** Lay `nodes` out on a grid, mutating each node's top-left x/y in place. */
|
|
11
|
+
export declare function layoutGrid(nodes: SceneNode[], gap: number): void;
|
|
12
|
+
//# sourceMappingURL=grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../src/engine/layout/grid.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAsBhE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-layout — assigns world positions to a Scene's nodes.
|
|
3
|
+
*
|
|
4
|
+
* `applyLayout(scene)` reads `scene.meta.layout` and mutates each non-pinned
|
|
5
|
+
* node's top-left `x`/`y` in place. Supported modes:
|
|
6
|
+
*
|
|
7
|
+
* - "dag" / "dag-lr" / "dag-rl" / "dag-bt" — layered graph layout via dagre
|
|
8
|
+
* - "grid" — uniform square grid, row-major
|
|
9
|
+
* - "radial" — hub node at origin, the rest on a circle
|
|
10
|
+
* - "manual" — no-op (author already positioned everything)
|
|
11
|
+
*
|
|
12
|
+
* Cross-cutting rules:
|
|
13
|
+
* - Any node with `pinned === true` is a fixed obstacle: it is excluded from
|
|
14
|
+
* every auto-layout mode and its coordinates are never changed.
|
|
15
|
+
* - The function never throws. If dagre fails (or a graph is empty/degenerate)
|
|
16
|
+
* it falls back to grid; an empty scene is a no-op.
|
|
17
|
+
* - After arranging, the laid-out nodes are shifted so their bounding box
|
|
18
|
+
* starts at a small positive margin (~40,40). Pinned nodes anchor an
|
|
19
|
+
* absolute frame and are not shifted; when nothing is pinned this is
|
|
20
|
+
* exactly "translate the whole diagram".
|
|
21
|
+
*
|
|
22
|
+
* The public surface is `applyLayout`; per-mode maths lives in dag/grid/radial.
|
|
23
|
+
*/
|
|
24
|
+
import type { Scene } from "../scene/types.js";
|
|
25
|
+
/**
|
|
26
|
+
* Assign positions to `scene.nodes` according to `scene.meta.layout`.
|
|
27
|
+
* Mutates node `x`/`y` (top-left, world space) in place. Never throws.
|
|
28
|
+
*/
|
|
29
|
+
export declare function applyLayout(scene: Scene): void;
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/layout/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAc,KAAK,EAAa,MAAM,mBAAmB,CAAC;AAuBtE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAqB9C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Radial layout — a hub node at the world origin with the remaining nodes
|
|
3
|
+
* distributed evenly around a circle.
|
|
4
|
+
*
|
|
5
|
+
* The hub is either the node whose id matches the requested `centerId`, or the
|
|
6
|
+
* first node when no match is found. Ring radius = max(radiusFloor, n * 40),
|
|
7
|
+
* which grows the circle as the node count rises so labels stay legible.
|
|
8
|
+
*/
|
|
9
|
+
import type { SceneNode } from "../scene/types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Place `nodes` radially, mutating each node's top-left x/y in place.
|
|
12
|
+
*
|
|
13
|
+
* @param nodes nodes to arrange (hub + ring)
|
|
14
|
+
* @param centerId preferred hub node id; falls back to the first node
|
|
15
|
+
* @param radiusFloor minimum ring radius in world px
|
|
16
|
+
*/
|
|
17
|
+
export declare function layoutRadial(nodes: SceneNode[], centerId: string | undefined, radiusFloor?: number): void;
|
|
18
|
+
//# sourceMappingURL=radial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radial.d.ts","sourceRoot":"","sources":["../../../src/engine/layout/radial.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAAE,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,WAAW,SAAM,GAChB,IAAI,CA4BN"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in plugin shapes — also a worked example of how a senior engineer adds
|
|
3
|
+
* a new shape without touching the renderer's core switch.
|
|
4
|
+
*
|
|
5
|
+
* Registration is exposed as an idempotent function AND called from the
|
|
6
|
+
* renderer on mount, so the built-ins survive a tree-shaking library build
|
|
7
|
+
* (a bare side-effect import can be dropped by bundlers when nothing "uses" it).
|
|
8
|
+
*/
|
|
9
|
+
export declare function registerBuiltinShapes(): void;
|
|
10
|
+
//# sourceMappingURL=builtins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../../src/engine/plugins/builtins.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,wBAAgB,qBAAqB,IAAI,IAAI,CAoB5C"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin registries — the extension seams that make EDodoDraw "much more
|
|
3
|
+
* extendible than Excalidraw". A plugin registers a named renderer for a shape
|
|
4
|
+
* (or, later, an arrow animation / annotation kind) and it becomes usable from
|
|
5
|
+
* the DSL immediately (`shape: myshape` or the keyword), with no grammar change.
|
|
6
|
+
*
|
|
7
|
+
* The Scene IR types are open unions, so the compiler already accepts unknown
|
|
8
|
+
* names; the renderer resolves them here.
|
|
9
|
+
*/
|
|
10
|
+
import type rough from "roughjs";
|
|
11
|
+
import type { NodeStyle, ShapeKind } from "../scene/types.js";
|
|
12
|
+
import type { ShapeRect } from "../render/shapes.js";
|
|
13
|
+
type RoughSVG = ReturnType<(typeof rough)["svg"]>;
|
|
14
|
+
export type ShapePluginFn = (rc: RoughSVG, rect: ShapeRect, style: NodeStyle) => SVGGElement;
|
|
15
|
+
export declare function registerShape(name: string, fn: ShapePluginFn): void;
|
|
16
|
+
export declare function getShapePlugin(name: ShapeKind): ShapePluginFn | undefined;
|
|
17
|
+
export declare function listShapePlugins(): string[];
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/engine/plugins/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,KAAK,QAAQ,GAAG,UAAU,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,KAAK,WAAW,CAAC;AAI7F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,GAAG,IAAI,CAEnE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,CAEzE;AAED,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Edge geometry + rendering.
|
|
3
|
+
*
|
|
4
|
+
* An edge is drawn as:
|
|
5
|
+
* 1. a hand-drawn (rough.js) base stroke following the routed centerline,
|
|
6
|
+
* 2. optional arrowheads at each end (rough, matched to the stroke),
|
|
7
|
+
* 3. an optional CLEAN overlay <path> that carries the animation
|
|
8
|
+
* (flow / dash-march / draw-on / comet / gradient-flow / pulse / electric),
|
|
9
|
+
* 4. an optional label chip at the midpoint.
|
|
10
|
+
*
|
|
11
|
+
* The clean overlay follows the exact same centerline so animations read as
|
|
12
|
+
* "energy flowing along the drawn line".
|
|
13
|
+
*/
|
|
14
|
+
import type rough from "roughjs";
|
|
15
|
+
import type { Options } from "roughjs/bin/core";
|
|
16
|
+
import type { Point } from "../geometry.js";
|
|
17
|
+
import type { EdgeStyle, Scene, SceneEdge } from "../scene/types.js";
|
|
18
|
+
type RoughSVG = ReturnType<(typeof rough)["svg"]>;
|
|
19
|
+
export declare function edgeRoughOptions(style: EdgeStyle): Options;
|
|
20
|
+
/** Resolve the two endpoints of an edge in world space, border-aware. */
|
|
21
|
+
export declare function resolveEndpoints(scene: Scene, edge: SceneEdge): {
|
|
22
|
+
a: Point;
|
|
23
|
+
b: Point;
|
|
24
|
+
};
|
|
25
|
+
/** Build the routed polyline (world points) for an edge. */
|
|
26
|
+
export declare function routePoints(edge: SceneEdge, a: Point, b: Point): Point[];
|
|
27
|
+
/** SVG path `d` for the clean overlay following the same routed points. */
|
|
28
|
+
export declare function centerlinePath(points: Point[], routing: SceneEdge["routing"]): string;
|
|
29
|
+
export interface RenderedEdge {
|
|
30
|
+
group: SVGGElement;
|
|
31
|
+
points: Point[];
|
|
32
|
+
centerline: string;
|
|
33
|
+
length: number;
|
|
34
|
+
}
|
|
35
|
+
export declare function pathLength(points: Point[]): number;
|
|
36
|
+
/**
|
|
37
|
+
* Render one edge into a <g>. `animId` uniquely identifies the animation
|
|
38
|
+
* overlay so we can wire per-edge gradients/keyframes.
|
|
39
|
+
*/
|
|
40
|
+
export declare function renderEdge(rc: RoughSVG, scene: Scene, edge: SceneEdge): RenderedEdge;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=edges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edges.d.ts","sourceRoot":"","sources":["../../../src/engine/render/edges.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAI5C,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAErE,KAAK,QAAQ,GAAG,UAAU,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAGlD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAW1D;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG;IAAE,CAAC,EAAE,KAAK,CAAC;IAAC,CAAC,EAAE,KAAK,CAAA;CAAE,CAetF;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,CAkCxE;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,MAAM,CAyBrF;AA6PD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAIlD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,YAAY,CAqCpF"}
|