@zukhruf/diagram 0.3.32 → 0.3.34
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/README.md +98 -52
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/compiler/diagram-compile.d.ts +3 -4
- package/dist/lib/compiler/diagram-compile.d.ts.map +1 -1
- package/dist/lib/compiler/diagram-compile.js +85 -370
- package/dist/lib/compiler/diagram-compile.js.map +1 -1
- package/dist/lib/layouts/graph/attach.d.ts +25 -0
- package/dist/lib/layouts/graph/attach.d.ts.map +1 -0
- package/dist/lib/layouts/graph/attach.js +272 -0
- package/dist/lib/layouts/graph/attach.js.map +1 -0
- package/dist/lib/layouts/graph/connections.d.ts +45 -0
- package/dist/lib/layouts/graph/connections.d.ts.map +1 -0
- package/dist/lib/layouts/graph/connections.js +138 -0
- package/dist/lib/layouts/graph/connections.js.map +1 -0
- package/dist/lib/layouts/graph/graph-layout-result.d.ts +5 -3
- package/dist/lib/layouts/graph/graph-layout-result.d.ts.map +1 -1
- package/dist/lib/layouts/graph/graph-layout-result.js.map +1 -1
- package/dist/lib/layouts/graph/gutters.js +41 -22
- package/dist/lib/layouts/graph/gutters.js.map +1 -1
- package/dist/lib/layouts/graph/labels.d.ts +23 -0
- package/dist/lib/layouts/graph/labels.d.ts.map +1 -0
- package/dist/lib/layouts/graph/labels.js +120 -0
- package/dist/lib/layouts/graph/labels.js.map +1 -0
- package/dist/lib/layouts/graph/layout.d.ts +1 -1
- package/dist/lib/layouts/graph/layout.d.ts.map +1 -1
- package/dist/lib/layouts/graph/layout.js +37 -12
- package/dist/lib/layouts/graph/layout.js.map +1 -1
- package/dist/lib/layouts/graph/measure.d.ts +15 -11
- package/dist/lib/layouts/graph/measure.d.ts.map +1 -1
- package/dist/lib/layouts/graph/measure.js +82 -38
- package/dist/lib/layouts/graph/measure.js.map +1 -1
- package/dist/lib/layouts/graph/min-heap.d.ts +8 -0
- package/dist/lib/layouts/graph/min-heap.d.ts.map +1 -0
- package/dist/lib/layouts/graph/min-heap.js +56 -0
- package/dist/lib/layouts/graph/min-heap.js.map +1 -0
- package/dist/lib/layouts/graph/node-content.d.ts +2 -3
- package/dist/lib/layouts/graph/node-content.d.ts.map +1 -1
- package/dist/lib/layouts/graph/node-content.js +67 -47
- package/dist/lib/layouts/graph/node-content.js.map +1 -1
- package/dist/lib/layouts/graph/path.d.ts +6 -0
- package/dist/lib/layouts/graph/path.d.ts.map +1 -0
- package/dist/lib/layouts/graph/path.js +53 -0
- package/dist/lib/layouts/graph/path.js.map +1 -0
- package/dist/lib/layouts/graph/round.d.ts +11 -0
- package/dist/lib/layouts/graph/round.d.ts.map +1 -0
- package/dist/lib/layouts/graph/round.js +181 -0
- package/dist/lib/layouts/graph/round.js.map +1 -0
- package/dist/lib/layouts/graph/route-search.d.ts +34 -0
- package/dist/lib/layouts/graph/route-search.d.ts.map +1 -0
- package/dist/lib/layouts/graph/route-search.js +208 -0
- package/dist/lib/layouts/graph/route-search.js.map +1 -0
- package/dist/lib/layouts/graph/route.d.ts +20 -0
- package/dist/lib/layouts/graph/route.d.ts.map +1 -0
- package/dist/lib/layouts/graph/route.js +276 -0
- package/dist/lib/layouts/graph/route.js.map +1 -0
- package/dist/lib/layouts/graph/sides.d.ts +28 -0
- package/dist/lib/layouts/graph/sides.d.ts.map +1 -0
- package/dist/lib/layouts/graph/sides.js +98 -0
- package/dist/lib/layouts/graph/sides.js.map +1 -0
- package/dist/lib/layouts/timeline/timeline-layout.d.ts +2 -1
- package/dist/lib/layouts/timeline/timeline-layout.d.ts.map +1 -1
- package/dist/lib/layouts/timeline/timeline-layout.js +9 -4
- package/dist/lib/layouts/timeline/timeline-layout.js.map +1 -1
- package/dist/lib/model/diagram-ir.d.ts +19 -156
- package/dist/lib/model/diagram-ir.d.ts.map +1 -1
- package/dist/lib/model/diagram-ir.js.map +1 -1
- package/dist/lib/model/validate-graph.d.ts +7 -0
- package/dist/lib/model/validate-graph.d.ts.map +1 -0
- package/dist/lib/model/validate-graph.js +54 -0
- package/dist/lib/model/validate-graph.js.map +1 -0
- package/dist/lib/react/Diagram.d.ts +3 -9
- package/dist/lib/react/Diagram.d.ts.map +1 -1
- package/dist/lib/react/Diagram.js +1 -13
- package/dist/lib/react/Diagram.js.map +1 -1
- package/dist/lib/react/diagram-types.d.ts +17 -46
- package/dist/lib/react/diagram-types.d.ts.map +1 -1
- package/dist/lib/react/diagram-types.js.map +1 -1
- package/dist/lib/renderers/canvas/graph-canvas.d.ts +2 -5
- package/dist/lib/renderers/canvas/graph-canvas.d.ts.map +1 -1
- package/dist/lib/renderers/canvas/graph-canvas.js +68 -43
- package/dist/lib/renderers/canvas/graph-canvas.js.map +1 -1
- package/dist/lib/renderers/html/graph-html.d.ts +2 -3
- package/dist/lib/renderers/html/graph-html.d.ts.map +1 -1
- package/dist/lib/renderers/html/graph-html.js +298 -289
- package/dist/lib/renderers/html/graph-html.js.map +1 -1
- package/dist/lib/renderers/shared/graph-parts.d.ts +3 -1
- package/dist/lib/renderers/shared/graph-parts.d.ts.map +1 -1
- package/dist/lib/renderers/shared/graph-parts.js +350 -418
- package/dist/lib/renderers/shared/graph-parts.js.map +1 -1
- package/dist/lib/renderers/shared/node-parts.d.ts +5 -6
- package/dist/lib/renderers/shared/node-parts.d.ts.map +1 -1
- package/dist/lib/renderers/shared/node-parts.js +112 -190
- package/dist/lib/renderers/shared/node-parts.js.map +1 -1
- package/dist/lib/renderers/shared/run-spans.js +2 -2
- package/dist/lib/renderers/shared/run-spans.js.map +1 -1
- package/dist/lib/renderers/shared/text-runs.d.ts +0 -6
- package/dist/lib/renderers/shared/text-runs.d.ts.map +1 -1
- package/dist/lib/renderers/shared/text-runs.js +0 -12
- package/dist/lib/renderers/shared/text-runs.js.map +1 -1
- package/dist/lib/renderers/svg/graph-svg.d.ts +1 -3
- package/dist/lib/renderers/svg/graph-svg.d.ts.map +1 -1
- package/dist/lib/renderers/svg/graph-svg.js +66 -80
- package/dist/lib/renderers/svg/graph-svg.js.map +1 -1
- package/dist/lib/renderers/svg/timeline-svg.d.ts.map +1 -1
- package/dist/lib/renderers/svg/timeline-svg.js +7 -5
- package/dist/lib/renderers/svg/timeline-svg.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/layouts/graph/graph-layout.d.ts +0 -154
- package/dist/lib/layouts/graph/graph-layout.d.ts.map +0 -1
- package/dist/lib/layouts/graph/graph-layout.js +0 -2340
- package/dist/lib/layouts/graph/graph-layout.js.map +0 -1
- package/dist/lib/layouts/graph/legacy-graph-layout.d.ts +0 -6
- package/dist/lib/layouts/graph/legacy-graph-layout.d.ts.map +0 -1
- package/dist/lib/layouts/graph/legacy-graph-layout.js +0 -542
- package/dist/lib/layouts/graph/legacy-graph-layout.js.map +0 -1
- package/dist/lib/layouts/text-metrics.d.ts +0 -7
- package/dist/lib/layouts/text-metrics.d.ts.map +0 -1
- package/dist/lib/layouts/text-metrics.js +0 -40
- package/dist/lib/layouts/text-metrics.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Diagram.js","names":["primitive","Node","Box","Card","Port","Label","Float","
|
|
1
|
+
{"version":3,"file":"Diagram.js","names":["primitive","Node","Box","Card","Port","Label","Float","Appliance","Connector","Junction","Edge","Arrow","Wire","Group","Note","Line","Lane","Signal","Frame","Marker","Content","Diagram"],"sources":["../../../src/lib/react/Diagram.tsx"],"sourcesContent":["import { primitive } from '../compiler/diagram-compile.ts';\nimport type {\n DiagramApplianceProps,\n DiagramConnectorProps,\n DiagramContentProps,\n DiagramEdgeProps,\n DiagramFrameProps,\n DiagramGroupProps,\n DiagramJunctionProps,\n DiagramLaneProps,\n DiagramLineProps,\n DiagramMarkerProps,\n DiagramNodeProps,\n DiagramNoteProps,\n DiagramSignalProps,\n} from './diagram-types.ts';\n\nexport type {\n DiagramAccent,\n DiagramMode,\n DiagramStylePreset,\n} from './chrome/index.ts';\nexport type { DiagramEffects } from '../renderers/types.ts';\nexport type {\n DiagramPaper,\n DiagramStackDirection,\n DiagramViewport,\n} from '../model/diagram-ir.ts';\nexport type {\n DiagramApplianceProps,\n DiagramConnectorProps,\n DiagramContentProps,\n DiagramEdgeProps,\n DiagramFrameProps,\n DiagramGroupProps,\n DiagramJunctionProps,\n DiagramLaneProps,\n DiagramLineProps,\n DiagramMarkerProps,\n DiagramNodeProps,\n DiagramNoteProps,\n DiagramProps,\n DiagramSignalProps,\n} from './diagram-types.ts';\n\nconst Node = primitive<DiagramNodeProps>('node');\nconst Box = primitive<DiagramNodeProps>('box');\nconst Card = primitive<DiagramNodeProps>('card');\nconst Port = primitive<DiagramNodeProps>('port');\nconst Label = primitive<DiagramNodeProps>('label');\nconst Float = primitive<DiagramNodeProps>('float');\nconst Appliance = primitive<DiagramApplianceProps>('appliance');\nconst Connector = primitive<DiagramConnectorProps>('connector');\nconst Junction = primitive<DiagramJunctionProps>('junction');\nconst Edge = primitive<DiagramEdgeProps>('edge');\nconst Arrow = primitive<DiagramEdgeProps>('arrow');\nconst Wire = primitive<DiagramEdgeProps>('wire');\nconst Group = primitive<DiagramGroupProps>('group');\nconst Note = primitive<DiagramNoteProps>('note');\nconst Line = primitive<DiagramLineProps>('line');\nconst Lane = primitive<DiagramLaneProps>('lane');\nconst Signal = primitive<DiagramSignalProps>('signal');\nconst Frame = primitive<DiagramFrameProps>('frame');\nconst Marker = primitive<DiagramMarkerProps>('marker');\nconst Content = primitive<DiagramContentProps>('content');\n\nexport const Diagram = {\n Node,\n Edge,\n Group,\n Frame,\n Line,\n Lane,\n Signal,\n Marker,\n Box,\n Card,\n Port,\n Label,\n Float,\n Appliance,\n Connector,\n Junction,\n Wire,\n Arrow,\n Note,\n Content,\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,gCAAgC;AA6C1D,MAAMC,IAAI,GAAGD,SAAS,CAAmB,MAAM,CAAC;AAChD,MAAME,GAAG,GAAGF,SAAS,CAAmB,KAAK,CAAC;AAC9C,MAAMG,IAAI,GAAGH,SAAS,CAAmB,MAAM,CAAC;AAChD,MAAMI,IAAI,GAAGJ,SAAS,CAAmB,MAAM,CAAC;AAChD,MAAMK,KAAK,GAAGL,SAAS,CAAmB,OAAO,CAAC;AAClD,MAAMM,KAAK,GAAGN,SAAS,CAAmB,OAAO,CAAC;AAClD,MAAMO,SAAS,GAAGP,SAAS,CAAwB,WAAW,CAAC;AAC/D,MAAMQ,SAAS,GAAGR,SAAS,CAAwB,WAAW,CAAC;AAC/D,MAAMS,QAAQ,GAAGT,SAAS,CAAuB,UAAU,CAAC;AAC5D,MAAMU,IAAI,GAAGV,SAAS,CAAmB,MAAM,CAAC;AAChD,MAAMW,KAAK,GAAGX,SAAS,CAAmB,OAAO,CAAC;AAClD,MAAMY,IAAI,GAAGZ,SAAS,CAAmB,MAAM,CAAC;AAChD,MAAMa,KAAK,GAAGb,SAAS,CAAoB,OAAO,CAAC;AACnD,MAAMc,IAAI,GAAGd,SAAS,CAAmB,MAAM,CAAC;AAChD,MAAMe,IAAI,GAAGf,SAAS,CAAmB,MAAM,CAAC;AAChD,MAAMgB,IAAI,GAAGhB,SAAS,CAAmB,MAAM,CAAC;AAChD,MAAMiB,MAAM,GAAGjB,SAAS,CAAqB,QAAQ,CAAC;AACtD,MAAMkB,KAAK,GAAGlB,SAAS,CAAoB,OAAO,CAAC;AACnD,MAAMmB,MAAM,GAAGnB,SAAS,CAAqB,QAAQ,CAAC;AACtD,MAAMoB,OAAO,GAAGpB,SAAS,CAAsB,SAAS,CAAC;AAEzD,OAAO,MAAMqB,OAAO,GAAG;EACrBpB,IAAI;EACJS,IAAI;EACJG,KAAK;EACLK,KAAK;EACLH,IAAI;EACJC,IAAI;EACJC,MAAM;EACNE,MAAM;EACNjB,GAAG;EACHC,IAAI;EACJC,IAAI;EACJC,KAAK;EACLC,KAAK;EACLC,SAAS;EACTC,SAAS;EACTC,QAAQ;EACRG,IAAI;EACJD,KAAK;EACLG,IAAI;EACJM;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { DiagramEdge, DiagramGroup, DiagramLane, DiagramNode, DiagramNodeContent, DiagramNodeIcon as DiagramNodeIconName, DiagramPaper, DiagramSignal, DiagramSignalBox, DiagramTextColor, DiagramViewport } from '../model/diagram-ir.ts';
|
|
3
3
|
import type { DiagramAccent, DiagramMode, DiagramStylePreset } from './chrome/index.ts';
|
|
4
4
|
type ChildrenProp = {
|
|
5
5
|
children?: ReactNode;
|
|
@@ -17,47 +17,27 @@ export type DiagramProps = {
|
|
|
17
17
|
viewport?: DiagramViewport;
|
|
18
18
|
paper?: DiagramPaper;
|
|
19
19
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export type
|
|
27
|
-
export type
|
|
28
|
-
export type
|
|
29
|
-
export type
|
|
30
|
-
|
|
20
|
+
/** The grid area every node primitive takes: whole cells, with spans of at least 1. */
|
|
21
|
+
type CellProps = Pick<DiagramNode, 'id' | 'rowSpan' | 'colSpan'> & {
|
|
22
|
+
row: number;
|
|
23
|
+
col: number;
|
|
24
|
+
};
|
|
25
|
+
type CaptionProps = Pick<DiagramNode, 'caption' | 'captionSide' | 'captionFrame' | 'captionColor'>;
|
|
26
|
+
export type DiagramNodeProps = ChildrenProp & CellProps & CaptionProps & Pick<DiagramNode, 'frame' | 'textColor' | 'tone' | 'texture' | 'accent' | 'description' | 'items' | 'icon' | 'ports' | 'hidden' | 'stack' | 'stackDirection'>;
|
|
27
|
+
export type DiagramJunctionProps = ChildrenProp & CellProps & CaptionProps & Pick<DiagramNode, 'textColor' | 'accent' | 'tone' | 'hidden'>;
|
|
28
|
+
export type DiagramConnectorProps = ChildrenProp & CellProps & CaptionProps & Pick<DiagramNode, 'textColor' | 'accent' | 'tone' | 'texture' | 'icon' | 'ports'>;
|
|
29
|
+
export type DiagramApplianceProps = ChildrenProp & CellProps & CaptionProps & Pick<DiagramNode, 'textColor' | 'accent' | 'tone' | 'texture' | 'ports' | 'appliancePorts' | 'antenna'>;
|
|
30
|
+
/** A frameless text in a cell; with a target, a leader runs from it to that node or group. */
|
|
31
|
+
export type DiagramNoteProps = ChildrenProp & CellProps & Pick<DiagramNode, 'target'>;
|
|
32
|
+
export type DiagramEdgeProps = ChildrenProp & Omit<DiagramEdge, 'label' | 'badgeLabel'> & {
|
|
31
33
|
badgeLabel?: string | string[];
|
|
32
34
|
};
|
|
33
|
-
export type DiagramGroupProps = ChildrenProp & {
|
|
34
|
-
id: string;
|
|
35
|
+
export type DiagramGroupProps = ChildrenProp & Pick<DiagramGroup, 'id' | 'labelAlign' | 'labelSide' | 'accent' | 'tone' | 'texture' | 'frame' | 'fill' | 'ports' | 'row' | 'col' | 'rowSpan' | 'colSpan' | 'titleBand' | 'dividers'> & {
|
|
35
36
|
label?: string | string[];
|
|
36
|
-
labelAlign?: DiagramGroup['labelAlign'];
|
|
37
|
-
labelSide?: DiagramGroup['labelSide'];
|
|
38
|
-
accent?: boolean;
|
|
39
|
-
tone?: DiagramTone;
|
|
40
|
-
texture?: DiagramTexture;
|
|
41
|
-
rx?: number;
|
|
42
|
-
frame?: DiagramGroup['frame'];
|
|
43
|
-
fill?: DiagramGroup['fill'];
|
|
44
|
-
ports?: DiagramGroup['ports'];
|
|
45
|
-
tight?: boolean;
|
|
46
|
-
tightX?: boolean;
|
|
47
|
-
tightY?: boolean;
|
|
48
|
-
titleBand?: boolean;
|
|
49
|
-
titleGap?: number;
|
|
50
|
-
padding?: DiagramGroup['padding'];
|
|
51
|
-
dividers?: DiagramGroup['dividers'];
|
|
52
|
-
rowStart?: number;
|
|
53
|
-
rowEnd?: number;
|
|
54
|
-
colStart?: number;
|
|
55
|
-
colEnd?: number;
|
|
56
|
-
};
|
|
57
|
-
export type DiagramTextProps = ChildrenProp & Omit<DiagramAnnotation, 'text'> & {
|
|
58
|
-
guide?: string;
|
|
59
37
|
};
|
|
38
|
+
/** The engine cannot measure React content, so the author gives the size of the box it reserves. */
|
|
60
39
|
export type DiagramContentProps = {
|
|
40
|
+
size: DiagramNodeContent['size'];
|
|
61
41
|
children: ReactNode;
|
|
62
42
|
};
|
|
63
43
|
export type DiagramLineProps = ChildrenProp & {
|
|
@@ -74,14 +54,5 @@ export type DiagramFrameProps = ChildrenProp & {
|
|
|
74
54
|
export type DiagramMarkerProps = DiagramNodeProps & {
|
|
75
55
|
icon: DiagramNodeIconName;
|
|
76
56
|
};
|
|
77
|
-
export type DiagramGuideProps = DiagramGuide;
|
|
78
|
-
export type DiagramWaypointProps = DiagramWaypoint;
|
|
79
|
-
export type DiagramEntryProps = {
|
|
80
|
-
side: DiagramSide;
|
|
81
|
-
gap?: number;
|
|
82
|
-
};
|
|
83
|
-
export type DiagramExitProps = {
|
|
84
|
-
side: DiagramSide;
|
|
85
|
-
};
|
|
86
57
|
export {};
|
|
87
58
|
//# sourceMappingURL=diagram-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagram-types.d.ts","sourceRoot":"","sources":["../../../src/lib/react/diagram-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"diagram-types.d.ts","sourceRoot":"","sources":["../../../src/lib/react/diagram-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,eAAe,IAAI,mBAAmB,EACtC,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAGhB,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAE3B,KAAK,YAAY,GAAG;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAE7C,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,uFAAuF;AACvF,KAAK,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC,GAAG;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,YAAY,GAAG,IAAI,CACtB,WAAW,EACX,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,cAAc,CAC5D,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,YAAY,GACzC,SAAS,GACT,YAAY,GACZ,IAAI,CACF,WAAW,EACT,OAAO,GACP,WAAW,GACX,MAAM,GACN,SAAS,GACT,QAAQ,GACR,aAAa,GACb,OAAO,GACP,MAAM,GACN,OAAO,GACP,QAAQ,GACR,OAAO,GACP,gBAAgB,CACnB,CAAC;AAEJ,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAC7C,SAAS,GACT,YAAY,GACZ,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;AAEhE,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAC9C,SAAS,GACT,YAAY,GACZ,IAAI,CACF,WAAW,EACX,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAC/D,CAAC;AAEJ,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAC9C,SAAS,GACT,YAAY,GACZ,IAAI,CACF,WAAW,EACT,WAAW,GACX,QAAQ,GACR,MAAM,GACN,SAAS,GACT,OAAO,GACP,gBAAgB,GAChB,SAAS,CACZ,CAAC;AAEJ,8FAA8F;AAC9F,MAAM,MAAM,gBAAgB,GAAG,YAAY,GACzC,SAAS,GACT,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAE9B,MAAM,MAAM,gBAAgB,GAAG,YAAY,GACzC,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,YAAY,CAAC,GAAG;IAC1C,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAChC,CAAC;AAEJ,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAC1C,IAAI,CACF,YAAY,EACV,IAAI,GACJ,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,MAAM,GACN,SAAS,GACT,OAAO,GACP,MAAM,GACN,OAAO,GACP,KAAK,GACL,KAAK,GACL,SAAS,GACT,SAAS,GACT,WAAW,GACX,UAAU,CACb,GAAG;IACF,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEJ,oGAAoG;AACpG,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACjC,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG;IAC5C,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,YAAY,GACzC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC;AAErC,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAC3C,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG;IACvC,KAAK,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC;CACpC,CAAC;AAEJ,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC7C,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG;IAClD,IAAI,EAAE,mBAAmB,CAAC;CAC3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagram-types.js","names":[],"sources":["../../../src/lib/react/diagram-types.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport type {\n
|
|
1
|
+
{"version":3,"file":"diagram-types.js","names":[],"sources":["../../../src/lib/react/diagram-types.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport type {\n DiagramEdge,\n DiagramGroup,\n DiagramLane,\n DiagramNode,\n DiagramNodeContent,\n DiagramNodeIcon as DiagramNodeIconName,\n DiagramPaper,\n DiagramSignal,\n DiagramSignalBox,\n DiagramTextColor,\n DiagramTexture,\n DiagramTone,\n DiagramViewport,\n} from '../model/diagram-ir.ts';\nimport type {\n DiagramAccent,\n DiagramMode,\n DiagramStylePreset,\n} from './chrome/index.ts';\n\ntype ChildrenProp = { children?: ReactNode };\n\nexport type DiagramProps = {\n title: string | string[];\n children: ReactNode;\n defaultMode?: DiagramMode;\n controls?: boolean;\n showHeader?: boolean;\n className?: string;\n corner?: ReactNode;\n accent?: DiagramAccent;\n stylePreset?: DiagramStylePreset;\n viewport?: DiagramViewport;\n paper?: DiagramPaper;\n};\n\n/** The grid area every node primitive takes: whole cells, with spans of at least 1. */\ntype CellProps = Pick<DiagramNode, 'id' | 'rowSpan' | 'colSpan'> & {\n row: number;\n col: number;\n};\n\ntype CaptionProps = Pick<\n DiagramNode,\n 'caption' | 'captionSide' | 'captionFrame' | 'captionColor'\n>;\n\nexport type DiagramNodeProps = ChildrenProp &\n CellProps &\n CaptionProps &\n Pick<\n DiagramNode,\n | 'frame'\n | 'textColor'\n | 'tone'\n | 'texture'\n | 'accent'\n | 'description'\n | 'items'\n | 'icon'\n | 'ports'\n | 'hidden'\n | 'stack'\n | 'stackDirection'\n >;\n\nexport type DiagramJunctionProps = ChildrenProp &\n CellProps &\n CaptionProps &\n Pick<DiagramNode, 'textColor' | 'accent' | 'tone' | 'hidden'>;\n\nexport type DiagramConnectorProps = ChildrenProp &\n CellProps &\n CaptionProps &\n Pick<\n DiagramNode,\n 'textColor' | 'accent' | 'tone' | 'texture' | 'icon' | 'ports'\n >;\n\nexport type DiagramApplianceProps = ChildrenProp &\n CellProps &\n CaptionProps &\n Pick<\n DiagramNode,\n | 'textColor'\n | 'accent'\n | 'tone'\n | 'texture'\n | 'ports'\n | 'appliancePorts'\n | 'antenna'\n >;\n\n/** A frameless text in a cell; with a target, a leader runs from it to that node or group. */\nexport type DiagramNoteProps = ChildrenProp &\n CellProps &\n Pick<DiagramNode, 'target'>;\n\nexport type DiagramEdgeProps = ChildrenProp &\n Omit<DiagramEdge, 'label' | 'badgeLabel'> & {\n badgeLabel?: string | string[];\n };\n\nexport type DiagramGroupProps = ChildrenProp &\n Pick<\n DiagramGroup,\n | 'id'\n | 'labelAlign'\n | 'labelSide'\n | 'accent'\n | 'tone'\n | 'texture'\n | 'frame'\n | 'fill'\n | 'ports'\n | 'row'\n | 'col'\n | 'rowSpan'\n | 'colSpan'\n | 'titleBand'\n | 'dividers'\n > & {\n label?: string | string[];\n };\n\n/** The engine cannot measure React content, so the author gives the size of the box it reserves. */\nexport type DiagramContentProps = {\n size: DiagramNodeContent['size'];\n children: ReactNode;\n};\n\nexport type DiagramLineProps = ChildrenProp & {\n textColor?: DiagramTextColor;\n fontWeight?: number;\n};\n\nexport type DiagramLaneProps = ChildrenProp &\n Pick<DiagramLane, 'id' | 'accent'>;\n\nexport type DiagramSignalProps = ChildrenProp &\n Omit<DiagramSignal, 'label' | 'boxed'> & {\n boxed?: boolean | DiagramSignalBox;\n };\n\nexport type DiagramFrameProps = ChildrenProp & {\n label: string;\n};\n\nexport type DiagramMarkerProps = DiagramNodeProps & {\n icon: DiagramNodeIconName;\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import type { DiagramGraphLayout } from '../../model/diagram-ir.ts';
|
|
2
1
|
import type { DiagramProps } from '../../react/diagram-types.ts';
|
|
3
|
-
export type CanvasGraphDiagramProps = DiagramProps
|
|
4
|
-
|
|
5
|
-
};
|
|
6
|
-
export declare function CanvasGraphDiagram({ title, children, graph, viewport, paper, ...chrome }: CanvasGraphDiagramProps): import("react").JSX.Element;
|
|
2
|
+
export type CanvasGraphDiagramProps = DiagramProps;
|
|
3
|
+
export declare function CanvasGraphDiagram({ title, children, viewport, paper, ...chrome }: CanvasGraphDiagramProps): import("react").JSX.Element;
|
|
7
4
|
//# sourceMappingURL=graph-canvas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-canvas.d.ts","sourceRoot":"","sources":["../../../../src/lib/renderers/canvas/graph-canvas.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph-canvas.d.ts","sourceRoot":"","sources":["../../../../src/lib/renderers/canvas/graph-canvas.tsx"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAyRjE,MAAM,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAEnD,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,GAAG,MAAM,EACV,EAAE,uBAAuB,+BAiBzB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { c as _c } from "react/compiler-runtime";
|
|
2
2
|
import { useEffect, useMemo, useRef } from 'react';
|
|
3
3
|
import { compileGraph } from "../../compiler/diagram-compile.js";
|
|
4
|
-
import {
|
|
4
|
+
import { layoutGraph } from "../../layouts/graph/layout.js";
|
|
5
5
|
import { FONT_FAMILY, TEXT_SHAPING } from "../../layouts/text/font.js";
|
|
6
6
|
import { DIAGRAM_BG, DIAGRAM_DIM, DIAGRAM_NEUTRAL, DIAGRAM_TEXT, DiagramFrame, resolveDiagramToneFill, resolveDiagramToneStroke, useDiagramTheme } from "../../react/chrome/index.js";
|
|
7
|
-
import { nodeFrameFill, nodeFrameStroke } from "../shared/graph-parts.js";
|
|
7
|
+
import { EDGE_STROKE_WIDTH, nodeFrameFill, nodeFrameStroke } from "../shared/graph-parts.js";
|
|
8
8
|
import { rejectNodeContent } from "../shared/node-content.js";
|
|
9
9
|
import { canvasViewportProps } from "./canvas-viewport.js";
|
|
10
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -59,15 +59,31 @@ function applyTexture(ctx, box, texture) {
|
|
|
59
59
|
}
|
|
60
60
|
ctx.restore();
|
|
61
61
|
}
|
|
62
|
+
const GROUP_RADIUS = 18;
|
|
62
63
|
const CANVAS_ALIGN = {
|
|
63
64
|
start: 'left',
|
|
64
65
|
middle: 'center',
|
|
65
66
|
end: 'right'
|
|
66
67
|
};
|
|
68
|
+
function canvasFont(font) {
|
|
69
|
+
return `${font.weight} ${font.size}px ${FONT_FAMILY[font.face]}`;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** Every font the canvas draws text in; canvas paints in a fallback font until each one has loaded. */
|
|
73
|
+
function canvasFonts(layout) {
|
|
74
|
+
const runs = [...layout.groups.flatMap(({
|
|
75
|
+
label
|
|
76
|
+
}) => label), ...layout.edges.flatMap(({
|
|
77
|
+
label
|
|
78
|
+
}) => label?.text ?? []), ...layout.nodes.flatMap(({
|
|
79
|
+
text
|
|
80
|
+
}) => text)];
|
|
81
|
+
return [...new Set(runs.map(run => canvasFont(run.font)))];
|
|
82
|
+
}
|
|
67
83
|
function drawTextRuns(ctx, runs) {
|
|
68
84
|
ctx.textBaseline = 'alphabetic';
|
|
69
85
|
for (const run of runs) {
|
|
70
|
-
ctx.font =
|
|
86
|
+
ctx.font = canvasFont(run.font);
|
|
71
87
|
ctx.textAlign = CANVAS_ALIGN[run.anchor];
|
|
72
88
|
ctx.fillText(run.text, run.x, run.y);
|
|
73
89
|
}
|
|
@@ -145,7 +161,7 @@ function drawGraphCanvas(canvas, layout, options) {
|
|
|
145
161
|
ctx.setLineDash(group.frame === 'dashed' ? [7, 7] : []);
|
|
146
162
|
ctx.strokeStyle = group.frame === 'none' ? 'transparent' : stroke;
|
|
147
163
|
ctx.fillStyle = fill;
|
|
148
|
-
drawRoundedRect(ctx, rect,
|
|
164
|
+
drawRoundedRect(ctx, rect, GROUP_RADIUS);
|
|
149
165
|
ctx.fill();
|
|
150
166
|
ctx.stroke();
|
|
151
167
|
ctx.restore();
|
|
@@ -165,7 +181,7 @@ function drawGraphCanvas(canvas, layout, options) {
|
|
|
165
181
|
const color = edgeColor(edge, palette);
|
|
166
182
|
ctx.save();
|
|
167
183
|
ctx.strokeStyle = color;
|
|
168
|
-
ctx.lineWidth = edge.
|
|
184
|
+
ctx.lineWidth = EDGE_STROKE_WIDTH[edge.weight ?? 'regular'];
|
|
169
185
|
ctx.setLineDash(edgeDash(edge));
|
|
170
186
|
ctx.beginPath();
|
|
171
187
|
ctx.moveTo(first.x, first.y);
|
|
@@ -211,10 +227,9 @@ function drawGraphCanvas(canvas, layout, options) {
|
|
|
211
227
|
}
|
|
212
228
|
}
|
|
213
229
|
export function CanvasGraphDiagram(t0) {
|
|
214
|
-
const $ = _c(
|
|
230
|
+
const $ = _c(20);
|
|
215
231
|
let children;
|
|
216
232
|
let chrome;
|
|
217
|
-
let graph;
|
|
218
233
|
let paper;
|
|
219
234
|
let title;
|
|
220
235
|
let viewport;
|
|
@@ -222,7 +237,6 @@ export function CanvasGraphDiagram(t0) {
|
|
|
222
237
|
({
|
|
223
238
|
title,
|
|
224
239
|
children,
|
|
225
|
-
graph,
|
|
226
240
|
viewport,
|
|
227
241
|
paper,
|
|
228
242
|
...chrome
|
|
@@ -230,40 +244,37 @@ export function CanvasGraphDiagram(t0) {
|
|
|
230
244
|
$[0] = t0;
|
|
231
245
|
$[1] = children;
|
|
232
246
|
$[2] = chrome;
|
|
233
|
-
$[3] =
|
|
234
|
-
$[4] =
|
|
235
|
-
$[5] =
|
|
236
|
-
$[6] = viewport;
|
|
247
|
+
$[3] = paper;
|
|
248
|
+
$[4] = title;
|
|
249
|
+
$[5] = viewport;
|
|
237
250
|
} else {
|
|
238
251
|
children = $[1];
|
|
239
252
|
chrome = $[2];
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
viewport = $[6];
|
|
253
|
+
paper = $[3];
|
|
254
|
+
title = $[4];
|
|
255
|
+
viewport = $[5];
|
|
244
256
|
}
|
|
245
257
|
let ir;
|
|
246
|
-
if ($[
|
|
247
|
-
ir = compileGraph(children
|
|
258
|
+
if ($[6] !== children) {
|
|
259
|
+
ir = compileGraph(children);
|
|
248
260
|
rejectNodeContent(ir, "CanvasGraphDiagram");
|
|
249
|
-
$[
|
|
250
|
-
$[
|
|
251
|
-
$[9] = ir;
|
|
261
|
+
$[6] = children;
|
|
262
|
+
$[7] = ir;
|
|
252
263
|
} else {
|
|
253
|
-
ir = $[
|
|
264
|
+
ir = $[7];
|
|
254
265
|
}
|
|
255
266
|
let t1;
|
|
256
|
-
if ($[
|
|
267
|
+
if ($[8] !== title) {
|
|
257
268
|
t1 = [title].flat();
|
|
258
|
-
$[
|
|
259
|
-
$[
|
|
269
|
+
$[8] = title;
|
|
270
|
+
$[9] = t1;
|
|
260
271
|
} else {
|
|
261
|
-
t1 = $[
|
|
272
|
+
t1 = $[9];
|
|
262
273
|
}
|
|
263
274
|
const lines = t1;
|
|
264
275
|
const t2 = viewport?.fit;
|
|
265
276
|
let t3;
|
|
266
|
-
if ($[
|
|
277
|
+
if ($[10] !== ir || $[11] !== lines || $[12] !== paper || $[13] !== viewport) {
|
|
267
278
|
t3 = progress => /*#__PURE__*/_jsx(GraphCanvas, {
|
|
268
279
|
ir: ir,
|
|
269
280
|
title: lines,
|
|
@@ -271,29 +282,29 @@ export function CanvasGraphDiagram(t0) {
|
|
|
271
282
|
viewport: viewport,
|
|
272
283
|
paper: paper
|
|
273
284
|
});
|
|
274
|
-
$[
|
|
275
|
-
$[
|
|
276
|
-
$[
|
|
277
|
-
$[
|
|
278
|
-
$[
|
|
285
|
+
$[10] = ir;
|
|
286
|
+
$[11] = lines;
|
|
287
|
+
$[12] = paper;
|
|
288
|
+
$[13] = viewport;
|
|
289
|
+
$[14] = t3;
|
|
279
290
|
} else {
|
|
280
|
-
t3 = $[
|
|
291
|
+
t3 = $[14];
|
|
281
292
|
}
|
|
282
293
|
let t4;
|
|
283
|
-
if ($[
|
|
294
|
+
if ($[15] !== chrome || $[16] !== lines || $[17] !== t2 || $[18] !== t3) {
|
|
284
295
|
t4 = /*#__PURE__*/_jsx(DiagramFrame, {
|
|
285
296
|
title: lines,
|
|
286
297
|
fit: t2,
|
|
287
298
|
...chrome,
|
|
288
299
|
children: t3
|
|
289
300
|
});
|
|
290
|
-
$[
|
|
291
|
-
$[
|
|
292
|
-
$[
|
|
293
|
-
$[
|
|
294
|
-
$[
|
|
301
|
+
$[15] = chrome;
|
|
302
|
+
$[16] = lines;
|
|
303
|
+
$[17] = t2;
|
|
304
|
+
$[18] = t3;
|
|
305
|
+
$[19] = t4;
|
|
295
306
|
} else {
|
|
296
|
-
t4 = $[
|
|
307
|
+
t4 = $[19];
|
|
297
308
|
}
|
|
298
309
|
return t4;
|
|
299
310
|
}
|
|
@@ -312,7 +323,7 @@ function GraphCanvas(t0) {
|
|
|
312
323
|
} = useDiagramTheme();
|
|
313
324
|
let t1;
|
|
314
325
|
if ($[0] !== ir) {
|
|
315
|
-
t1 =
|
|
326
|
+
t1 = layoutGraph(ir);
|
|
316
327
|
$[0] = ir;
|
|
317
328
|
$[1] = t1;
|
|
318
329
|
} else {
|
|
@@ -341,8 +352,19 @@ function GraphCanvas(t0) {
|
|
|
341
352
|
accent,
|
|
342
353
|
paper
|
|
343
354
|
});
|
|
344
|
-
|
|
345
|
-
|
|
355
|
+
let stopped = false;
|
|
356
|
+
let unsubscribe;
|
|
357
|
+
Promise.all(canvasFonts(layout).map(_temp)).then(() => {
|
|
358
|
+
if (stopped) {
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
draw();
|
|
362
|
+
unsubscribe = progress.on("change", draw);
|
|
363
|
+
});
|
|
364
|
+
return () => {
|
|
365
|
+
stopped = true;
|
|
366
|
+
unsubscribe?.();
|
|
367
|
+
};
|
|
346
368
|
};
|
|
347
369
|
t4 = [accent, layout, paper, progress];
|
|
348
370
|
$[5] = accent;
|
|
@@ -404,4 +426,7 @@ function GraphCanvas(t0) {
|
|
|
404
426
|
}
|
|
405
427
|
return t9;
|
|
406
428
|
}
|
|
429
|
+
function _temp(font) {
|
|
430
|
+
return document.fonts.load(font);
|
|
431
|
+
}
|
|
407
432
|
//# sourceMappingURL=graph-canvas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-canvas.js","names":["useEffect","useMemo","useRef","compileGraph","legacyGraphLayout","FONT_FAMILY","TEXT_SHAPING","DIAGRAM_BG","DIAGRAM_DIM","DIAGRAM_NEUTRAL","DIAGRAM_TEXT","DiagramFrame","resolveDiagramToneFill","resolveDiagramToneStroke","useDiagramTheme","nodeFrameFill","nodeFrameStroke","rejectNodeContent","canvasViewportProps","jsx","_jsx","resolveCssColor","element","value","fallback","varMatch","match","name","undefined","resolved","window","getComputedStyle","getPropertyValue","trim","edgeDash","edge","lineStyle","drawRoundedRect","ctx","box","radius","rx","Math","min","w","h","beginPath","moveTo","x","y","lineTo","quadraticCurveTo","closePath","applyTexture","texture","save","clip","strokeStyle","lineWidth","fillStyle","arc","PI","fill","stroke","restore","CANVAS_ALIGN","start","middle","end","drawTextRuns","runs","textBaseline","run","font","weight","size","face","textAlign","anchor","fillText","text","drawEdgeArrow","from","to","color","angle","atan2","translate","rotate","groupStrokeColor","canvas","group","palette","frame","dim","accent","tone","neutral","edgeColor","nodeTextColor","node","textColor","drawGraphCanvas","layout","options","getContext","viewBox","dpr","devicePixelRatio","width","round","height","setTransform","fontKerning","clearRect","bg","paper","fillRect","rect","label","groups","setLineDash","points","edges","first","second","at","strokeWidth","point","slice","direction","nodes","hidden","CanvasGraphDiagram","t0","$","_c","children","chrome","graph","title","viewport","ir","t1","flat","lines","t2","fit","t3","progress","GraphCanvas","t4","canvasRef","viewportProps","current","draw","on","t5","t6","t7","t8","join","t9","role"],"sources":["../../../../src/lib/renderers/canvas/graph-canvas.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from 'react';\n\nimport { compileGraph } from '../../compiler/diagram-compile.ts';\nimport type {\n GraphLayout,\n TextAnchor,\n TextRun,\n} from '../../layouts/graph/graph-layout-result.ts';\nimport { legacyGraphLayout } from '../../layouts/graph/legacy-graph-layout.ts';\nimport { FONT_FAMILY, TEXT_SHAPING } from '../../layouts/text/font.ts';\nimport type {\n Box,\n DiagramEdge,\n DiagramGraphLayout,\n DiagramGroup,\n DiagramNode,\n DiagramPaper,\n DiagramTexture,\n} from '../../model/diagram-ir.ts';\nimport {\n DIAGRAM_BG,\n DIAGRAM_DIM,\n DIAGRAM_NEUTRAL,\n DIAGRAM_TEXT,\n DiagramFrame,\n resolveDiagramToneFill,\n resolveDiagramToneStroke,\n useDiagramTheme,\n} from '../../react/chrome/index.ts';\nimport type { DiagramProps } from '../../react/diagram-types.ts';\nimport { nodeFrameFill, nodeFrameStroke } from '../shared/graph-parts.tsx';\nimport { rejectNodeContent } from '../shared/node-content.ts';\nimport type { GraphRendererProps } from '../types.ts';\nimport { canvasViewportProps } from './canvas-viewport.ts';\n\nfunction resolveCssColor(\n element: HTMLElement,\n value: string,\n fallback = '#111827',\n) {\n const varMatch = value.match(/^var\\((--[^,\\s)]+)(?:,\\s*(.*))?\\)$/);\n const name = varMatch?.[1];\n if (name === undefined) return value;\n const resolved = window\n .getComputedStyle(element)\n .getPropertyValue(name)\n .trim();\n return resolved || varMatch?.[2]?.trim() || fallback;\n}\n\nfunction edgeDash(edge: DiagramEdge) {\n if (edge.lineStyle === 'dashed') return [6, 6];\n if (edge.lineStyle === 'dotted') return [1, 6];\n return [];\n}\n\nfunction drawRoundedRect(\n ctx: CanvasRenderingContext2D,\n box: Box,\n radius: number,\n) {\n const rx = Math.min(radius, box.w / 2, box.h / 2);\n ctx.beginPath();\n ctx.moveTo(box.x + rx, box.y);\n ctx.lineTo(box.x + box.w - rx, box.y);\n ctx.quadraticCurveTo(box.x + box.w, box.y, box.x + box.w, box.y + rx);\n ctx.lineTo(box.x + box.w, box.y + box.h - rx);\n ctx.quadraticCurveTo(\n box.x + box.w,\n box.y + box.h,\n box.x + box.w - rx,\n box.y + box.h,\n );\n ctx.lineTo(box.x + rx, box.y + box.h);\n ctx.quadraticCurveTo(box.x, box.y + box.h, box.x, box.y + box.h - rx);\n ctx.lineTo(box.x, box.y + rx);\n ctx.quadraticCurveTo(box.x, box.y, box.x + rx, box.y);\n ctx.closePath();\n}\n\nfunction applyTexture(\n ctx: CanvasRenderingContext2D,\n box: Box,\n texture: DiagramTexture | undefined,\n) {\n if (!texture || texture === 'none') return;\n ctx.save();\n ctx.clip();\n ctx.strokeStyle = 'rgba(17,24,39,0.12)';\n ctx.lineWidth = 0.8;\n if (texture === 'dots') {\n ctx.fillStyle = 'rgba(17,24,39,0.16)';\n for (let x = box.x + 3; x < box.x + box.w; x += 8) {\n for (let y = box.y + 3; y < box.y + box.h; y += 8) {\n ctx.beginPath();\n ctx.arc(x, y, 0.7, 0, Math.PI * 2);\n ctx.fill();\n }\n }\n } else {\n for (let x = box.x - box.h; x < box.x + box.w; x += 8) {\n ctx.beginPath();\n ctx.moveTo(x, box.y + box.h);\n ctx.lineTo(x + box.h, box.y);\n ctx.stroke();\n }\n }\n ctx.restore();\n}\n\nconst CANVAS_ALIGN: Record<TextAnchor, CanvasTextAlign> = {\n start: 'left',\n middle: 'center',\n end: 'right',\n};\n\nfunction drawTextRuns(ctx: CanvasRenderingContext2D, runs: TextRun[]) {\n ctx.textBaseline = 'alphabetic';\n for (const run of runs) {\n ctx.font = `${run.font.weight} ${run.font.size}px ${FONT_FAMILY[run.font.face]}`;\n ctx.textAlign = CANVAS_ALIGN[run.anchor];\n ctx.fillText(run.text, run.x, run.y);\n }\n}\n\nfunction drawEdgeArrow(\n ctx: CanvasRenderingContext2D,\n from: { x: number; y: number },\n to: { x: number; y: number },\n color: string,\n) {\n const angle = Math.atan2(to.y - from.y, to.x - from.x);\n const size = 9;\n ctx.save();\n ctx.translate(to.x, to.y);\n ctx.rotate(angle);\n ctx.strokeStyle = color;\n ctx.lineWidth = 1.6;\n ctx.beginPath();\n ctx.moveTo(-size, -size / 2);\n ctx.lineTo(0, 0);\n ctx.lineTo(-size, size / 2);\n ctx.stroke();\n ctx.restore();\n}\n\ntype CanvasPalette = {\n accent: string;\n text: string;\n dim: string;\n neutral: string;\n};\n\nfunction groupStrokeColor(\n canvas: HTMLCanvasElement,\n group: DiagramGroup,\n palette: CanvasPalette,\n) {\n if (group.frame === 'dashed') return palette.dim;\n if (group.accent) return palette.accent;\n if (group.tone) {\n return resolveCssColor(canvas, resolveDiagramToneStroke(group.tone));\n }\n return palette.neutral;\n}\n\nfunction edgeColor(edge: DiagramEdge, palette: CanvasPalette) {\n if (edge.accent) return palette.accent;\n if (edge.dim) return palette.dim;\n return palette.neutral;\n}\n\nfunction nodeTextColor(node: DiagramNode, palette: CanvasPalette) {\n if (node.textColor === 'accent') return palette.accent;\n if (node.textColor === 'dim') return palette.dim;\n return palette.text;\n}\n\nfunction drawGraphCanvas(\n canvas: HTMLCanvasElement,\n layout: GraphLayout,\n options: {\n accent: string;\n paper?: DiagramPaper | undefined;\n },\n) {\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n const { viewBox } = layout;\n const dpr = window.devicePixelRatio || 1;\n canvas.width = Math.round(viewBox.w * dpr);\n canvas.height = Math.round(viewBox.h * dpr);\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n ctx.fontKerning = TEXT_SHAPING.fontKerning;\n ctx.clearRect(0, 0, viewBox.w, viewBox.h);\n ctx.translate(-viewBox.x, -viewBox.y);\n\n const accent = resolveCssColor(canvas, options.accent, '#111827');\n const bg = resolveCssColor(canvas, DIAGRAM_BG, '#ffffff');\n const text = resolveCssColor(canvas, DIAGRAM_TEXT, '#111827');\n const dim = resolveCssColor(canvas, DIAGRAM_DIM, 'rgba(17,24,39,0.58)');\n const neutral = resolveCssColor(\n canvas,\n DIAGRAM_NEUTRAL,\n 'rgba(17,24,39,0.82)',\n );\n const palette: CanvasPalette = { accent, text, dim, neutral };\n\n if (options.paper) {\n ctx.fillStyle = bg;\n ctx.fillRect(viewBox.x, viewBox.y, viewBox.w, viewBox.h);\n }\n\n for (const { group, rect, label } of layout.groups) {\n const stroke = groupStrokeColor(canvas, group, palette);\n const fill = group.tone\n ? resolveCssColor(canvas, resolveDiagramToneFill(group.tone))\n : 'transparent';\n ctx.save();\n ctx.lineWidth = 1.5;\n ctx.setLineDash(group.frame === 'dashed' ? [7, 7] : []);\n ctx.strokeStyle = group.frame === 'none' ? 'transparent' : stroke;\n ctx.fillStyle = fill;\n drawRoundedRect(ctx, rect, group.rx ?? 18);\n ctx.fill();\n ctx.stroke();\n ctx.restore();\n applyTexture(ctx, rect, group.texture);\n ctx.fillStyle = text;\n drawTextRuns(ctx, label);\n }\n\n for (const { edge, points, label } of layout.edges) {\n const [first, second] = points;\n const from = points.at(-2);\n const to = points.at(-1);\n if (!first || !second || !from || !to) continue;\n const color = edgeColor(edge, palette);\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = edge.strokeWidth ?? 1.5;\n ctx.setLineDash(edgeDash(edge));\n ctx.beginPath();\n ctx.moveTo(first.x, first.y);\n for (const point of points.slice(1)) {\n ctx.lineTo(point.x, point.y);\n }\n ctx.stroke();\n ctx.restore();\n if ((edge.direction ?? 'forward') !== 'none') {\n drawEdgeArrow(ctx, from, to, color);\n }\n if (edge.direction === 'both') {\n drawEdgeArrow(ctx, second, first, color);\n }\n if (label) {\n ctx.save();\n ctx.fillStyle = text;\n drawTextRuns(ctx, label.text);\n ctx.restore();\n }\n }\n\n for (const { node, box, radius, text: runs } of layout.nodes) {\n if (node.hidden) continue;\n const frame = node.frame ?? 'solid';\n ctx.save();\n if (frame !== 'none') {\n ctx.lineWidth = 1.5;\n ctx.fillStyle = resolveCssColor(\n canvas,\n nodeFrameFill(node, frame),\n '#ffffff',\n );\n ctx.strokeStyle = resolveCssColor(\n canvas,\n nodeFrameStroke(node, frame, accent),\n '#111827',\n );\n drawRoundedRect(ctx, box, radius);\n ctx.fill();\n ctx.stroke();\n applyTexture(ctx, box, node.texture);\n }\n ctx.fillStyle = nodeTextColor(node, palette);\n drawTextRuns(ctx, runs);\n ctx.restore();\n }\n}\n\nexport type CanvasGraphDiagramProps = DiagramProps & {\n graph?: DiagramGraphLayout;\n};\n\nexport function CanvasGraphDiagram({\n title,\n children,\n graph,\n viewport,\n paper,\n ...chrome\n}: CanvasGraphDiagramProps) {\n const ir = compileGraph(children, graph);\n rejectNodeContent(ir, 'CanvasGraphDiagram');\n const lines = [title].flat();\n return (\n <DiagramFrame title={lines} fit={viewport?.fit} {...chrome}>\n {(progress) => (\n <GraphCanvas\n ir={ir}\n title={lines}\n progress={progress}\n viewport={viewport}\n paper={paper}\n />\n )}\n </DiagramFrame>\n );\n}\n\nfunction GraphCanvas({\n ir,\n title,\n progress,\n viewport,\n paper,\n}: GraphRendererProps) {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const { accent } = useDiagramTheme();\n const layout = useMemo(() => legacyGraphLayout(ir), [ir]);\n const viewportProps = canvasViewportProps(layout.viewBox, viewport);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const draw = () => drawGraphCanvas(canvas, layout, { accent, paper });\n draw();\n return progress.on('change', draw);\n }, [accent, layout, paper, progress]);\n\n return (\n <canvas\n ref={canvasRef}\n data-diagram-canvas=\"graph\"\n data-diagram-canvas-viewbox={`${layout.viewBox.x} ${layout.viewBox.y} ${layout.viewBox.w} ${layout.viewBox.h}`}\n width={Math.round(layout.viewBox.w)}\n height={Math.round(layout.viewBox.h)}\n aria-label={title.join(' ')}\n role=\"img\"\n {...viewportProps}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"graph-canvas.js","names":["useEffect","useMemo","useRef","compileGraph","layoutGraph","FONT_FAMILY","TEXT_SHAPING","DIAGRAM_BG","DIAGRAM_DIM","DIAGRAM_NEUTRAL","DIAGRAM_TEXT","DiagramFrame","resolveDiagramToneFill","resolveDiagramToneStroke","useDiagramTheme","EDGE_STROKE_WIDTH","nodeFrameFill","nodeFrameStroke","rejectNodeContent","canvasViewportProps","jsx","_jsx","resolveCssColor","element","value","fallback","varMatch","match","name","undefined","resolved","window","getComputedStyle","getPropertyValue","trim","edgeDash","edge","lineStyle","drawRoundedRect","ctx","box","radius","rx","Math","min","w","h","beginPath","moveTo","x","y","lineTo","quadraticCurveTo","closePath","applyTexture","texture","save","clip","strokeStyle","lineWidth","fillStyle","arc","PI","fill","stroke","restore","GROUP_RADIUS","CANVAS_ALIGN","start","middle","end","canvasFont","font","weight","size","face","canvasFonts","layout","runs","groups","flatMap","label","edges","text","nodes","Set","map","run","drawTextRuns","textBaseline","textAlign","anchor","fillText","drawEdgeArrow","from","to","color","angle","atan2","translate","rotate","groupStrokeColor","canvas","group","palette","frame","dim","accent","tone","neutral","edgeColor","nodeTextColor","node","textColor","drawGraphCanvas","options","getContext","viewBox","dpr","devicePixelRatio","width","round","height","setTransform","fontKerning","clearRect","bg","paper","fillRect","rect","setLineDash","points","first","second","at","point","slice","direction","hidden","CanvasGraphDiagram","t0","$","_c","children","chrome","title","viewport","ir","t1","flat","lines","t2","fit","t3","progress","GraphCanvas","t4","canvasRef","viewportProps","current","draw","stopped","unsubscribe","Promise","all","_temp","then","on","t5","t6","t7","t8","join","t9","role","document","fonts","load"],"sources":["../../../../src/lib/renderers/canvas/graph-canvas.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from 'react';\n\nimport { compileGraph } from '../../compiler/diagram-compile.ts';\nimport type {\n GraphLayout,\n TextAnchor,\n TextRun,\n} from '../../layouts/graph/graph-layout-result.ts';\nimport { layoutGraph } from '../../layouts/graph/layout.ts';\nimport {\n FONT_FAMILY,\n type Font,\n TEXT_SHAPING,\n} from '../../layouts/text/font.ts';\nimport type {\n Box,\n DiagramEdge,\n DiagramGroup,\n DiagramNode,\n DiagramPaper,\n DiagramTexture,\n} from '../../model/diagram-ir.ts';\nimport {\n DIAGRAM_BG,\n DIAGRAM_DIM,\n DIAGRAM_NEUTRAL,\n DIAGRAM_TEXT,\n DiagramFrame,\n resolveDiagramToneFill,\n resolveDiagramToneStroke,\n useDiagramTheme,\n} from '../../react/chrome/index.ts';\nimport type { DiagramProps } from '../../react/diagram-types.ts';\nimport {\n EDGE_STROKE_WIDTH,\n nodeFrameFill,\n nodeFrameStroke,\n} from '../shared/graph-parts.tsx';\nimport { rejectNodeContent } from '../shared/node-content.ts';\nimport type { GraphRendererProps } from '../types.ts';\nimport { canvasViewportProps } from './canvas-viewport.ts';\n\nfunction resolveCssColor(\n element: HTMLElement,\n value: string,\n fallback = '#111827',\n) {\n const varMatch = value.match(/^var\\((--[^,\\s)]+)(?:,\\s*(.*))?\\)$/);\n const name = varMatch?.[1];\n if (name === undefined) return value;\n const resolved = window\n .getComputedStyle(element)\n .getPropertyValue(name)\n .trim();\n return resolved || varMatch?.[2]?.trim() || fallback;\n}\n\nfunction edgeDash(edge: DiagramEdge) {\n if (edge.lineStyle === 'dashed') return [6, 6];\n if (edge.lineStyle === 'dotted') return [1, 6];\n return [];\n}\n\nfunction drawRoundedRect(\n ctx: CanvasRenderingContext2D,\n box: Box,\n radius: number,\n) {\n const rx = Math.min(radius, box.w / 2, box.h / 2);\n ctx.beginPath();\n ctx.moveTo(box.x + rx, box.y);\n ctx.lineTo(box.x + box.w - rx, box.y);\n ctx.quadraticCurveTo(box.x + box.w, box.y, box.x + box.w, box.y + rx);\n ctx.lineTo(box.x + box.w, box.y + box.h - rx);\n ctx.quadraticCurveTo(\n box.x + box.w,\n box.y + box.h,\n box.x + box.w - rx,\n box.y + box.h,\n );\n ctx.lineTo(box.x + rx, box.y + box.h);\n ctx.quadraticCurveTo(box.x, box.y + box.h, box.x, box.y + box.h - rx);\n ctx.lineTo(box.x, box.y + rx);\n ctx.quadraticCurveTo(box.x, box.y, box.x + rx, box.y);\n ctx.closePath();\n}\n\nfunction applyTexture(\n ctx: CanvasRenderingContext2D,\n box: Box,\n texture: DiagramTexture | undefined,\n) {\n if (!texture || texture === 'none') return;\n ctx.save();\n ctx.clip();\n ctx.strokeStyle = 'rgba(17,24,39,0.12)';\n ctx.lineWidth = 0.8;\n if (texture === 'dots') {\n ctx.fillStyle = 'rgba(17,24,39,0.16)';\n for (let x = box.x + 3; x < box.x + box.w; x += 8) {\n for (let y = box.y + 3; y < box.y + box.h; y += 8) {\n ctx.beginPath();\n ctx.arc(x, y, 0.7, 0, Math.PI * 2);\n ctx.fill();\n }\n }\n } else {\n for (let x = box.x - box.h; x < box.x + box.w; x += 8) {\n ctx.beginPath();\n ctx.moveTo(x, box.y + box.h);\n ctx.lineTo(x + box.h, box.y);\n ctx.stroke();\n }\n }\n ctx.restore();\n}\n\nconst GROUP_RADIUS = 18;\n\nconst CANVAS_ALIGN: Record<TextAnchor, CanvasTextAlign> = {\n start: 'left',\n middle: 'center',\n end: 'right',\n};\n\nfunction canvasFont(font: Font) {\n return `${font.weight} ${font.size}px ${FONT_FAMILY[font.face]}`;\n}\n\n/** Every font the canvas draws text in; canvas paints in a fallback font until each one has loaded. */\nfunction canvasFonts(layout: GraphLayout): string[] {\n const runs = [\n ...layout.groups.flatMap(({ label }) => label),\n ...layout.edges.flatMap(({ label }) => label?.text ?? []),\n ...layout.nodes.flatMap(({ text }) => text),\n ];\n return [...new Set(runs.map((run) => canvasFont(run.font)))];\n}\n\nfunction drawTextRuns(ctx: CanvasRenderingContext2D, runs: TextRun[]) {\n ctx.textBaseline = 'alphabetic';\n for (const run of runs) {\n ctx.font = canvasFont(run.font);\n ctx.textAlign = CANVAS_ALIGN[run.anchor];\n ctx.fillText(run.text, run.x, run.y);\n }\n}\n\nfunction drawEdgeArrow(\n ctx: CanvasRenderingContext2D,\n from: { x: number; y: number },\n to: { x: number; y: number },\n color: string,\n) {\n const angle = Math.atan2(to.y - from.y, to.x - from.x);\n const size = 9;\n ctx.save();\n ctx.translate(to.x, to.y);\n ctx.rotate(angle);\n ctx.strokeStyle = color;\n ctx.lineWidth = 1.6;\n ctx.beginPath();\n ctx.moveTo(-size, -size / 2);\n ctx.lineTo(0, 0);\n ctx.lineTo(-size, size / 2);\n ctx.stroke();\n ctx.restore();\n}\n\ntype CanvasPalette = {\n accent: string;\n text: string;\n dim: string;\n neutral: string;\n};\n\nfunction groupStrokeColor(\n canvas: HTMLCanvasElement,\n group: DiagramGroup,\n palette: CanvasPalette,\n) {\n if (group.frame === 'dashed') return palette.dim;\n if (group.accent) return palette.accent;\n if (group.tone) {\n return resolveCssColor(canvas, resolveDiagramToneStroke(group.tone));\n }\n return palette.neutral;\n}\n\nfunction edgeColor(edge: DiagramEdge, palette: CanvasPalette) {\n if (edge.accent) return palette.accent;\n if (edge.dim) return palette.dim;\n return palette.neutral;\n}\n\nfunction nodeTextColor(node: DiagramNode, palette: CanvasPalette) {\n if (node.textColor === 'accent') return palette.accent;\n if (node.textColor === 'dim') return palette.dim;\n return palette.text;\n}\n\nfunction drawGraphCanvas(\n canvas: HTMLCanvasElement,\n layout: GraphLayout,\n options: {\n accent: string;\n paper?: DiagramPaper | undefined;\n },\n) {\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n const { viewBox } = layout;\n const dpr = window.devicePixelRatio || 1;\n canvas.width = Math.round(viewBox.w * dpr);\n canvas.height = Math.round(viewBox.h * dpr);\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n ctx.fontKerning = TEXT_SHAPING.fontKerning;\n ctx.clearRect(0, 0, viewBox.w, viewBox.h);\n ctx.translate(-viewBox.x, -viewBox.y);\n\n const accent = resolveCssColor(canvas, options.accent, '#111827');\n const bg = resolveCssColor(canvas, DIAGRAM_BG, '#ffffff');\n const text = resolveCssColor(canvas, DIAGRAM_TEXT, '#111827');\n const dim = resolveCssColor(canvas, DIAGRAM_DIM, 'rgba(17,24,39,0.58)');\n const neutral = resolveCssColor(\n canvas,\n DIAGRAM_NEUTRAL,\n 'rgba(17,24,39,0.82)',\n );\n const palette: CanvasPalette = { accent, text, dim, neutral };\n\n if (options.paper) {\n ctx.fillStyle = bg;\n ctx.fillRect(viewBox.x, viewBox.y, viewBox.w, viewBox.h);\n }\n\n for (const { group, rect, label } of layout.groups) {\n const stroke = groupStrokeColor(canvas, group, palette);\n const fill = group.tone\n ? resolveCssColor(canvas, resolveDiagramToneFill(group.tone))\n : 'transparent';\n ctx.save();\n ctx.lineWidth = 1.5;\n ctx.setLineDash(group.frame === 'dashed' ? [7, 7] : []);\n ctx.strokeStyle = group.frame === 'none' ? 'transparent' : stroke;\n ctx.fillStyle = fill;\n drawRoundedRect(ctx, rect, GROUP_RADIUS);\n ctx.fill();\n ctx.stroke();\n ctx.restore();\n applyTexture(ctx, rect, group.texture);\n ctx.fillStyle = text;\n drawTextRuns(ctx, label);\n }\n\n for (const { edge, points, label } of layout.edges) {\n const [first, second] = points;\n const from = points.at(-2);\n const to = points.at(-1);\n if (!first || !second || !from || !to) continue;\n const color = edgeColor(edge, palette);\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = EDGE_STROKE_WIDTH[edge.weight ?? 'regular'];\n ctx.setLineDash(edgeDash(edge));\n ctx.beginPath();\n ctx.moveTo(first.x, first.y);\n for (const point of points.slice(1)) {\n ctx.lineTo(point.x, point.y);\n }\n ctx.stroke();\n ctx.restore();\n if ((edge.direction ?? 'forward') !== 'none') {\n drawEdgeArrow(ctx, from, to, color);\n }\n if (edge.direction === 'both') {\n drawEdgeArrow(ctx, second, first, color);\n }\n if (label) {\n ctx.save();\n ctx.fillStyle = text;\n drawTextRuns(ctx, label.text);\n ctx.restore();\n }\n }\n\n for (const { node, box, radius, text: runs } of layout.nodes) {\n if (node.hidden) continue;\n const frame = node.frame ?? 'solid';\n ctx.save();\n if (frame !== 'none') {\n ctx.lineWidth = 1.5;\n ctx.fillStyle = resolveCssColor(\n canvas,\n nodeFrameFill(node, frame),\n '#ffffff',\n );\n ctx.strokeStyle = resolveCssColor(\n canvas,\n nodeFrameStroke(node, frame, accent),\n '#111827',\n );\n drawRoundedRect(ctx, box, radius);\n ctx.fill();\n ctx.stroke();\n applyTexture(ctx, box, node.texture);\n }\n ctx.fillStyle = nodeTextColor(node, palette);\n drawTextRuns(ctx, runs);\n ctx.restore();\n }\n}\n\nexport type CanvasGraphDiagramProps = DiagramProps;\n\nexport function CanvasGraphDiagram({\n title,\n children,\n viewport,\n paper,\n ...chrome\n}: CanvasGraphDiagramProps) {\n const ir = compileGraph(children);\n rejectNodeContent(ir, 'CanvasGraphDiagram');\n const lines = [title].flat();\n return (\n <DiagramFrame title={lines} fit={viewport?.fit} {...chrome}>\n {(progress) => (\n <GraphCanvas\n ir={ir}\n title={lines}\n progress={progress}\n viewport={viewport}\n paper={paper}\n />\n )}\n </DiagramFrame>\n );\n}\n\nfunction GraphCanvas({\n ir,\n title,\n progress,\n viewport,\n paper,\n}: GraphRendererProps) {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const { accent } = useDiagramTheme();\n const layout = useMemo(() => layoutGraph(ir), [ir]);\n const viewportProps = canvasViewportProps(layout.viewBox, viewport);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const draw = () => drawGraphCanvas(canvas, layout, { accent, paper });\n let stopped = false;\n let unsubscribe: (() => void) | undefined;\n void Promise.all(\n canvasFonts(layout).map((font) => document.fonts.load(font)),\n ).then(() => {\n if (stopped) return;\n draw();\n unsubscribe = progress.on('change', draw);\n });\n return () => {\n stopped = true;\n unsubscribe?.();\n };\n }, [accent, layout, paper, progress]);\n\n return (\n <canvas\n ref={canvasRef}\n data-diagram-canvas=\"graph\"\n data-diagram-canvas-viewbox={`${layout.viewBox.x} ${layout.viewBox.y} ${layout.viewBox.w} ${layout.viewBox.h}`}\n width={Math.round(layout.viewBox.w)}\n height={Math.round(layout.viewBox.h)}\n aria-label={title.join(' ')}\n role=\"img\"\n {...viewportProps}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DiagramViewport } from '../../model/diagram-ir.ts';
|
|
2
2
|
import type { DiagramProps } from '../../react/diagram-types.ts';
|
|
3
3
|
export type HtmlGraphDiagramProps = Omit<DiagramProps, 'viewport'> & {
|
|
4
|
-
graph?: DiagramGraphLayout;
|
|
5
4
|
viewport?: Omit<DiagramViewport, 'fit'>;
|
|
6
5
|
};
|
|
7
|
-
export declare function HtmlGraphDiagram({ title, children,
|
|
6
|
+
export declare function HtmlGraphDiagram({ title, children, viewport, paper, ...chrome }: HtmlGraphDiagramProps): import("react").JSX.Element;
|
|
8
7
|
//# sourceMappingURL=graph-html.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-html.d.ts","sourceRoot":"","sources":["../../../../src/lib/renderers/html/graph-html.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,
|
|
1
|
+
{"version":3,"file":"graph-html.d.ts","sourceRoot":"","sources":["../../../../src/lib/renderers/html/graph-html.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,eAAe,EAChB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AA8BjE,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG;IACnE,QAAQ,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;CACzC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,GAAG,MAAM,EACV,EAAE,qBAAqB,+BAiBvB"}
|