@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.
Files changed (122) hide show
  1. package/README.md +98 -52
  2. package/dist/index.d.ts +5 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/compiler/diagram-compile.d.ts +3 -4
  7. package/dist/lib/compiler/diagram-compile.d.ts.map +1 -1
  8. package/dist/lib/compiler/diagram-compile.js +85 -370
  9. package/dist/lib/compiler/diagram-compile.js.map +1 -1
  10. package/dist/lib/layouts/graph/attach.d.ts +25 -0
  11. package/dist/lib/layouts/graph/attach.d.ts.map +1 -0
  12. package/dist/lib/layouts/graph/attach.js +272 -0
  13. package/dist/lib/layouts/graph/attach.js.map +1 -0
  14. package/dist/lib/layouts/graph/connections.d.ts +45 -0
  15. package/dist/lib/layouts/graph/connections.d.ts.map +1 -0
  16. package/dist/lib/layouts/graph/connections.js +138 -0
  17. package/dist/lib/layouts/graph/connections.js.map +1 -0
  18. package/dist/lib/layouts/graph/graph-layout-result.d.ts +5 -3
  19. package/dist/lib/layouts/graph/graph-layout-result.d.ts.map +1 -1
  20. package/dist/lib/layouts/graph/graph-layout-result.js.map +1 -1
  21. package/dist/lib/layouts/graph/gutters.js +41 -22
  22. package/dist/lib/layouts/graph/gutters.js.map +1 -1
  23. package/dist/lib/layouts/graph/labels.d.ts +23 -0
  24. package/dist/lib/layouts/graph/labels.d.ts.map +1 -0
  25. package/dist/lib/layouts/graph/labels.js +120 -0
  26. package/dist/lib/layouts/graph/labels.js.map +1 -0
  27. package/dist/lib/layouts/graph/layout.d.ts +1 -1
  28. package/dist/lib/layouts/graph/layout.d.ts.map +1 -1
  29. package/dist/lib/layouts/graph/layout.js +37 -12
  30. package/dist/lib/layouts/graph/layout.js.map +1 -1
  31. package/dist/lib/layouts/graph/measure.d.ts +15 -11
  32. package/dist/lib/layouts/graph/measure.d.ts.map +1 -1
  33. package/dist/lib/layouts/graph/measure.js +82 -38
  34. package/dist/lib/layouts/graph/measure.js.map +1 -1
  35. package/dist/lib/layouts/graph/min-heap.d.ts +8 -0
  36. package/dist/lib/layouts/graph/min-heap.d.ts.map +1 -0
  37. package/dist/lib/layouts/graph/min-heap.js +56 -0
  38. package/dist/lib/layouts/graph/min-heap.js.map +1 -0
  39. package/dist/lib/layouts/graph/node-content.d.ts +2 -3
  40. package/dist/lib/layouts/graph/node-content.d.ts.map +1 -1
  41. package/dist/lib/layouts/graph/node-content.js +67 -47
  42. package/dist/lib/layouts/graph/node-content.js.map +1 -1
  43. package/dist/lib/layouts/graph/path.d.ts +6 -0
  44. package/dist/lib/layouts/graph/path.d.ts.map +1 -0
  45. package/dist/lib/layouts/graph/path.js +53 -0
  46. package/dist/lib/layouts/graph/path.js.map +1 -0
  47. package/dist/lib/layouts/graph/round.d.ts +11 -0
  48. package/dist/lib/layouts/graph/round.d.ts.map +1 -0
  49. package/dist/lib/layouts/graph/round.js +181 -0
  50. package/dist/lib/layouts/graph/round.js.map +1 -0
  51. package/dist/lib/layouts/graph/route-search.d.ts +34 -0
  52. package/dist/lib/layouts/graph/route-search.d.ts.map +1 -0
  53. package/dist/lib/layouts/graph/route-search.js +208 -0
  54. package/dist/lib/layouts/graph/route-search.js.map +1 -0
  55. package/dist/lib/layouts/graph/route.d.ts +20 -0
  56. package/dist/lib/layouts/graph/route.d.ts.map +1 -0
  57. package/dist/lib/layouts/graph/route.js +276 -0
  58. package/dist/lib/layouts/graph/route.js.map +1 -0
  59. package/dist/lib/layouts/graph/sides.d.ts +28 -0
  60. package/dist/lib/layouts/graph/sides.d.ts.map +1 -0
  61. package/dist/lib/layouts/graph/sides.js +98 -0
  62. package/dist/lib/layouts/graph/sides.js.map +1 -0
  63. package/dist/lib/layouts/timeline/timeline-layout.d.ts +2 -1
  64. package/dist/lib/layouts/timeline/timeline-layout.d.ts.map +1 -1
  65. package/dist/lib/layouts/timeline/timeline-layout.js +9 -4
  66. package/dist/lib/layouts/timeline/timeline-layout.js.map +1 -1
  67. package/dist/lib/model/diagram-ir.d.ts +19 -156
  68. package/dist/lib/model/diagram-ir.d.ts.map +1 -1
  69. package/dist/lib/model/diagram-ir.js.map +1 -1
  70. package/dist/lib/model/validate-graph.d.ts +7 -0
  71. package/dist/lib/model/validate-graph.d.ts.map +1 -0
  72. package/dist/lib/model/validate-graph.js +54 -0
  73. package/dist/lib/model/validate-graph.js.map +1 -0
  74. package/dist/lib/react/Diagram.d.ts +3 -9
  75. package/dist/lib/react/Diagram.d.ts.map +1 -1
  76. package/dist/lib/react/Diagram.js +1 -13
  77. package/dist/lib/react/Diagram.js.map +1 -1
  78. package/dist/lib/react/diagram-types.d.ts +17 -46
  79. package/dist/lib/react/diagram-types.d.ts.map +1 -1
  80. package/dist/lib/react/diagram-types.js.map +1 -1
  81. package/dist/lib/renderers/canvas/graph-canvas.d.ts +2 -5
  82. package/dist/lib/renderers/canvas/graph-canvas.d.ts.map +1 -1
  83. package/dist/lib/renderers/canvas/graph-canvas.js +68 -43
  84. package/dist/lib/renderers/canvas/graph-canvas.js.map +1 -1
  85. package/dist/lib/renderers/html/graph-html.d.ts +2 -3
  86. package/dist/lib/renderers/html/graph-html.d.ts.map +1 -1
  87. package/dist/lib/renderers/html/graph-html.js +298 -289
  88. package/dist/lib/renderers/html/graph-html.js.map +1 -1
  89. package/dist/lib/renderers/shared/graph-parts.d.ts +3 -1
  90. package/dist/lib/renderers/shared/graph-parts.d.ts.map +1 -1
  91. package/dist/lib/renderers/shared/graph-parts.js +350 -418
  92. package/dist/lib/renderers/shared/graph-parts.js.map +1 -1
  93. package/dist/lib/renderers/shared/node-parts.d.ts +5 -6
  94. package/dist/lib/renderers/shared/node-parts.d.ts.map +1 -1
  95. package/dist/lib/renderers/shared/node-parts.js +112 -190
  96. package/dist/lib/renderers/shared/node-parts.js.map +1 -1
  97. package/dist/lib/renderers/shared/run-spans.js +2 -2
  98. package/dist/lib/renderers/shared/run-spans.js.map +1 -1
  99. package/dist/lib/renderers/shared/text-runs.d.ts +0 -6
  100. package/dist/lib/renderers/shared/text-runs.d.ts.map +1 -1
  101. package/dist/lib/renderers/shared/text-runs.js +0 -12
  102. package/dist/lib/renderers/shared/text-runs.js.map +1 -1
  103. package/dist/lib/renderers/svg/graph-svg.d.ts +1 -3
  104. package/dist/lib/renderers/svg/graph-svg.d.ts.map +1 -1
  105. package/dist/lib/renderers/svg/graph-svg.js +66 -80
  106. package/dist/lib/renderers/svg/graph-svg.js.map +1 -1
  107. package/dist/lib/renderers/svg/timeline-svg.d.ts.map +1 -1
  108. package/dist/lib/renderers/svg/timeline-svg.js +7 -5
  109. package/dist/lib/renderers/svg/timeline-svg.js.map +1 -1
  110. package/package.json +1 -1
  111. package/dist/lib/layouts/graph/graph-layout.d.ts +0 -154
  112. package/dist/lib/layouts/graph/graph-layout.d.ts.map +0 -1
  113. package/dist/lib/layouts/graph/graph-layout.js +0 -2340
  114. package/dist/lib/layouts/graph/graph-layout.js.map +0 -1
  115. package/dist/lib/layouts/graph/legacy-graph-layout.d.ts +0 -6
  116. package/dist/lib/layouts/graph/legacy-graph-layout.d.ts.map +0 -1
  117. package/dist/lib/layouts/graph/legacy-graph-layout.js +0 -542
  118. package/dist/lib/layouts/graph/legacy-graph-layout.js.map +0 -1
  119. package/dist/lib/layouts/text-metrics.d.ts +0 -7
  120. package/dist/lib/layouts/text-metrics.d.ts.map +0 -1
  121. package/dist/lib/layouts/text-metrics.js +0 -40
  122. package/dist/lib/layouts/text-metrics.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"timeline-layout.js","names":["textAscent","widestLine","SEQ_W","ACTOR_W","ACTOR_H","ACTOR_RX","TOP_ACTOR_Y","ROW_H","FIRST_MSG_Y","LOOP_TOP_PAD","LOOP_X_PAD","FRAME_HEADER_H","FRAME_PAD","BOTTOM_ACTOR_GAP","DEFAULT_BOXED_STUB","SIGNAL_LABEL_FONT_SIZE","SIGNAL_LABEL_PAD_X","SIGNAL_LABEL_PAD_Y","SIGNAL_LABEL_LINE_H","SIGNAL_LABEL_BASELINE_GAP","SIGNAL_LABEL_LINE_STEP","buildTimelineSegments","totalSignals","hasLoop","frameMsgs","slotCount","step","i","segments","push","kind","index","start","end","m","measureSignalLabel","label","boxW","Math","ceil","boxH","length","signalLabelHeadroom","signal","boxed","signalLabelFootroom","computeBoxedSignal","args","fromX","toX","rowY","stub","position","headInset","direction","nearEdge","_exhaustive","Error","String","farEdge","stubA","x1","x2","stubB","stubALen","stubBLen","abs","boxLeft","min","boxRight","max","boxTop","boxBottom","laneCenterX","total","slot","computeTimelineLayout","spec","totalLanes","lanes","signals","frame","segOf","s","find","lifelineYStart","mainMsgY","lastMainMsgY","frameBottom","frameY","firstFrameSignal","lastFrameSignal","slice","firstRowOffset","lastRowOffset","frameH","seg","x","y","width","height","segmentStart","segmentEnd","map","ms","from","to","bottomActorY","lifelineYEnd","totalH","a","cx","id","centerX","rectX","topRectY","bottomRectY","accent","topLanesSegment","bottomLanesSegment"],"sources":["../../../../src/lib/layouts/timeline/timeline-layout.ts"],"sourcesContent":["import type {\n DiagramSignal,\n DiagramSignalBox,\n DiagramTimelineSpec,\n} from '../../model/diagram-ir.ts';\nimport { textAscent, widestLine } from '../text-metrics.ts';\n\nexport type {\n DiagramFrameElement,\n DiagramLane,\n DiagramSignal,\n DiagramSignalBox,\n} from '../../model/diagram-ir.ts';\n\nexport type TimelineLayoutSpec = DiagramTimelineSpec & { title?: string[] };\n\nexport const SEQ_W = 1000;\nexport const ACTOR_W = 190;\nexport const ACTOR_H = 72;\nexport const ACTOR_RX = 16;\nexport const TOP_ACTOR_Y = 30;\nexport const ROW_H = 70;\nexport const FIRST_MSG_Y = 200;\nexport const LOOP_TOP_PAD = 38;\nexport const LOOP_X_PAD = 24;\nexport const FRAME_HEADER_H = 22;\nexport const FRAME_PAD = 12;\nexport const BOTTOM_ACTOR_GAP = 50;\nexport const DEFAULT_BOXED_STUB = 12;\nexport const SIGNAL_LABEL_FONT_SIZE = 12;\nexport const SIGNAL_LABEL_PAD_X = 14;\nexport const SIGNAL_LABEL_PAD_Y = 10;\nexport const SIGNAL_LABEL_LINE_H = 18;\nexport const SIGNAL_LABEL_BASELINE_GAP = 12;\nexport const SIGNAL_LABEL_LINE_STEP = 15;\n\nexport type SegmentKind =\n 'top-lanes' | 'msg' | 'frame-frame' | 'frame-msg' | 'bottom-lanes';\n\nexport type LayoutSegment = {\n kind: SegmentKind;\n index: number;\n start: number;\n end: number;\n};\n\nexport function buildTimelineSegments(\n totalSignals: number,\n hasLoop: boolean,\n frameMsgs: number,\n): LayoutSegment[] {\n const slotCount = 1 + totalSignals + (hasLoop ? 1 + frameMsgs : 0) + 1;\n const step = 1 / slotCount;\n let i = 0;\n const segments: LayoutSegment[] = [];\n segments.push({\n kind: 'top-lanes',\n index: 0,\n start: i * step,\n end: ++i * step,\n });\n for (let m = 0; m < totalSignals; m++) {\n segments.push({ kind: 'msg', index: m, start: i * step, end: ++i * step });\n }\n if (hasLoop) {\n segments.push({\n kind: 'frame-frame',\n index: 0,\n start: i * step,\n end: ++i * step,\n });\n for (let m = 0; m < frameMsgs; m++) {\n segments.push({\n kind: 'frame-msg',\n index: m,\n start: i * step,\n end: ++i * step,\n });\n }\n }\n segments.push({\n kind: 'bottom-lanes',\n index: 0,\n start: i * step,\n end: (i + 1) * step,\n });\n return segments;\n}\n\nexport type BoxedSegment = {\n boxLeft: number;\n boxRight: number;\n boxTop: number;\n boxBottom: number;\n stubA: { x1: number; x2: number };\n stubB: { x1: number; x2: number };\n};\n\nexport function measureSignalLabel(label: string[]): {\n boxW: number;\n boxH: number;\n} {\n return {\n boxW:\n Math.ceil(widestLine(label, SIGNAL_LABEL_FONT_SIZE, 'mono')) +\n SIGNAL_LABEL_PAD_X * 2,\n boxH: label.length * SIGNAL_LABEL_LINE_H + SIGNAL_LABEL_PAD_Y * 2,\n };\n}\n\n/** Distance from a signal's row up to the top of its label or label box. */\nexport function signalLabelHeadroom(\n signal: Pick<DiagramSignal, 'label' | 'boxed'>,\n): number {\n if (signal.boxed) return measureSignalLabel(signal.label).boxH / 2;\n return (\n SIGNAL_LABEL_BASELINE_GAP +\n (signal.label.length - 1) * SIGNAL_LABEL_LINE_STEP +\n textAscent(SIGNAL_LABEL_FONT_SIZE, 'mono')\n );\n}\n\n/** Distance from a signal's row down to the bottom of its label box. */\nexport function signalLabelFootroom(\n signal: Pick<DiagramSignal, 'label' | 'boxed'>,\n): number {\n return signal.boxed ? measureSignalLabel(signal.label).boxH / 2 : 0;\n}\n\nexport function computeBoxedSignal(args: {\n fromX: number;\n toX: number;\n rowY: number;\n boxW: number;\n boxH: number;\n stub: number;\n position: DiagramSignalBox;\n headInset: number;\n}): BoxedSegment {\n const { fromX, toX, rowY, boxW, boxH, stub, position, headInset } = args;\n const direction = toX > fromX ? 1 : -1;\n\n let nearEdge: number;\n switch (position) {\n case 'source':\n nearEdge = fromX + stub * direction;\n break;\n case 'center':\n nearEdge = (fromX + toX) / 2 - (boxW / 2) * direction;\n break;\n case 'target':\n nearEdge = toX - (stub + boxW) * direction;\n break;\n default: {\n const _exhaustive: never = position;\n throw new Error(`invalid boxed signal position: ${String(_exhaustive)}`);\n }\n }\n const farEdge = nearEdge + boxW * direction;\n\n const stubA = { x1: fromX, x2: nearEdge };\n const stubB = { x1: farEdge, x2: toX - headInset * direction };\n\n const stubALen = (stubA.x2 - stubA.x1) * direction;\n const stubBLen = (stubB.x2 - stubB.x1) * direction;\n if (stubALen < 0 || stubBLen < 0) {\n throw new Error(\n `boxed signal label box (width=${boxW}) overflows the lane distance |toX-fromX|=${Math.abs(toX - fromX)} with stub=${stub}, position=${position}`,\n );\n }\n\n return {\n boxLeft: Math.min(nearEdge, farEdge),\n boxRight: Math.max(nearEdge, farEdge),\n boxTop: rowY - boxH / 2,\n boxBottom: rowY + boxH / 2,\n stubA,\n stubB,\n };\n}\n\nexport function laneCenterX(index: number, total: number): number {\n const slot = SEQ_W / total;\n return slot * index + slot / 2;\n}\n\nexport type LanePlacement = {\n id: string;\n centerX: number;\n rectX: number;\n topRectY: number;\n bottomRectY: number;\n accent: boolean;\n};\n\nexport type SignalPlacement = {\n index: number;\n from: string;\n to: string;\n rowY: number;\n segmentStart: number;\n segmentEnd: number;\n};\n\nexport type FramePlacement = {\n x: number;\n y: number;\n width: number;\n height: number;\n label: string;\n segmentStart: number;\n segmentEnd: number;\n signals: SignalPlacement[];\n};\n\nexport type TimelineLayout = {\n width: number;\n height: number;\n lanes: LanePlacement[];\n lifelineYStart: number;\n lifelineYEnd: number;\n signals: SignalPlacement[];\n frame: FramePlacement | null;\n topLanesSegment: { start: number; end: number };\n bottomLanesSegment: { start: number; end: number };\n};\n\nexport function computeTimelineLayout(\n spec: TimelineLayoutSpec,\n): TimelineLayout {\n const totalLanes = spec.lanes.length;\n const totalSignals = spec.signals.length;\n const hasLoop = !!spec.frame;\n const frameMsgs = spec.frame?.signals.length ?? 0;\n\n const segments = buildTimelineSegments(totalSignals, hasLoop, frameMsgs);\n const segOf = (kind: SegmentKind, index = 0) => {\n const s = segments.find((s) => s.kind === kind && s.index === index);\n if (!s) throw new Error(`segment ${kind}[${index}] missing`);\n return s;\n };\n\n const lifelineYStart = TOP_ACTOR_Y + ACTOR_H;\n const mainMsgY = (i: number) => FIRST_MSG_Y + i * ROW_H;\n const lastMainMsgY =\n spec.signals.length > 0 ? mainMsgY(spec.signals.length - 1) : FIRST_MSG_Y;\n\n let frame: FramePlacement | null = null;\n let frameBottom = lastMainMsgY;\n\n if (hasLoop && spec.frame) {\n const frameY = lastMainMsgY + LOOP_TOP_PAD;\n const [firstFrameSignal] = spec.frame.signals;\n const [lastFrameSignal] = spec.frame.signals.slice(-1);\n const firstRowOffset =\n FRAME_HEADER_H +\n FRAME_PAD +\n (firstFrameSignal ? signalLabelHeadroom(firstFrameSignal) : 0);\n const lastRowOffset = firstRowOffset + Math.max(0, frameMsgs - 1) * ROW_H;\n const frameH =\n lastRowOffset +\n (lastFrameSignal ? signalLabelFootroom(lastFrameSignal) : 0) +\n FRAME_PAD;\n frameBottom = frameY + frameH;\n const seg = segOf('frame-frame');\n frame = {\n x: LOOP_X_PAD,\n y: frameY,\n width: SEQ_W - 2 * LOOP_X_PAD,\n height: frameH,\n label: spec.frame.label,\n segmentStart: seg.start,\n segmentEnd: seg.end,\n signals: spec.frame.signals.map((m, i) => {\n const ms = segOf('frame-msg', i);\n return {\n index: i,\n from: m.from,\n to: m.to,\n rowY: frameY + firstRowOffset + i * ROW_H,\n segmentStart: ms.start,\n segmentEnd: ms.end,\n };\n }),\n };\n }\n\n const bottomActorY = frameBottom + BOTTOM_ACTOR_GAP;\n const lifelineYEnd = bottomActorY;\n const totalH = bottomActorY + ACTOR_H + 30;\n\n const lanes: LanePlacement[] = spec.lanes.map((a, i) => {\n const cx = laneCenterX(i, totalLanes);\n return {\n id: a.id,\n centerX: cx,\n rectX: cx - ACTOR_W / 2,\n topRectY: TOP_ACTOR_Y,\n bottomRectY: bottomActorY,\n accent: !!a.accent,\n };\n });\n\n const signals: SignalPlacement[] = spec.signals.map((m, i) => {\n const seg = segOf('msg', i);\n return {\n index: i,\n from: m.from,\n to: m.to,\n rowY: mainMsgY(i),\n segmentStart: seg.start,\n segmentEnd: seg.end,\n };\n });\n\n return {\n width: SEQ_W,\n height: totalH,\n lanes,\n lifelineYStart,\n lifelineYEnd,\n signals,\n frame,\n topLanesSegment: {\n start: segOf('top-lanes').start,\n end: segOf('top-lanes').end,\n },\n bottomLanesSegment: {\n start: segOf('bottom-lanes').start,\n end: segOf('bottom-lanes').end,\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"timeline-layout.js","names":["fontAscent","measureText","SEQ_W","ACTOR_W","ACTOR_H","ACTOR_RX","TOP_ACTOR_Y","ROW_H","FIRST_MSG_Y","LOOP_TOP_PAD","LOOP_X_PAD","FRAME_HEADER_H","FRAME_PAD","BOTTOM_ACTOR_GAP","DEFAULT_BOXED_STUB","SIGNAL_LABEL_FONT","face","size","weight","SIGNAL_LABEL_PAD_X","SIGNAL_LABEL_PAD_Y","SIGNAL_LABEL_LINE_H","SIGNAL_LABEL_BASELINE_GAP","SIGNAL_LABEL_LINE_STEP","buildTimelineSegments","totalSignals","hasLoop","frameMsgs","slotCount","step","i","segments","push","kind","index","start","end","m","measureSignalLabel","label","widestLineW","Math","max","map","line","boxW","ceil","boxH","length","signalLabelHeadroom","signal","boxed","signalLabelFootroom","computeBoxedSignal","args","fromX","toX","rowY","stub","position","headInset","direction","nearEdge","_exhaustive","Error","String","farEdge","stubA","x1","x2","stubB","stubALen","stubBLen","abs","boxLeft","min","boxRight","boxTop","boxBottom","laneCenterX","total","slot","computeTimelineLayout","spec","totalLanes","lanes","signals","frame","segOf","s","find","lifelineYStart","mainMsgY","lastMainMsgY","frameBottom","frameY","firstFrameSignal","lastFrameSignal","slice","firstRowOffset","lastRowOffset","frameH","seg","x","y","width","height","segmentStart","segmentEnd","ms","from","to","bottomActorY","lifelineYEnd","totalH","a","cx","id","centerX","rectX","topRectY","bottomRectY","accent","topLanesSegment","bottomLanesSegment"],"sources":["../../../../src/lib/layouts/timeline/timeline-layout.ts"],"sourcesContent":["import type {\n DiagramSignal,\n DiagramSignalBox,\n DiagramTimelineSpec,\n} from '../../model/diagram-ir.ts';\nimport type { Font } from '../text/font.ts';\nimport { fontAscent, measureText } from '../text/measure-text.ts';\n\nexport type {\n DiagramFrameElement,\n DiagramLane,\n DiagramSignal,\n DiagramSignalBox,\n} from '../../model/diagram-ir.ts';\n\nexport type TimelineLayoutSpec = DiagramTimelineSpec & { title?: string[] };\n\nexport const SEQ_W = 1000;\nexport const ACTOR_W = 190;\nexport const ACTOR_H = 72;\nexport const ACTOR_RX = 16;\nexport const TOP_ACTOR_Y = 30;\nexport const ROW_H = 70;\nexport const FIRST_MSG_Y = 200;\nexport const LOOP_TOP_PAD = 38;\nexport const LOOP_X_PAD = 24;\nexport const FRAME_HEADER_H = 22;\nexport const FRAME_PAD = 12;\nexport const BOTTOM_ACTOR_GAP = 50;\nexport const DEFAULT_BOXED_STUB = 12;\nexport const SIGNAL_LABEL_FONT: Font = { face: 'mono', size: 12, weight: 400 };\nexport const SIGNAL_LABEL_PAD_X = 14;\nexport const SIGNAL_LABEL_PAD_Y = 10;\nexport const SIGNAL_LABEL_LINE_H = 18;\nexport const SIGNAL_LABEL_BASELINE_GAP = 12;\nexport const SIGNAL_LABEL_LINE_STEP = 15;\n\nexport type SegmentKind =\n 'top-lanes' | 'msg' | 'frame-frame' | 'frame-msg' | 'bottom-lanes';\n\nexport type LayoutSegment = {\n kind: SegmentKind;\n index: number;\n start: number;\n end: number;\n};\n\nexport function buildTimelineSegments(\n totalSignals: number,\n hasLoop: boolean,\n frameMsgs: number,\n): LayoutSegment[] {\n const slotCount = 1 + totalSignals + (hasLoop ? 1 + frameMsgs : 0) + 1;\n const step = 1 / slotCount;\n let i = 0;\n const segments: LayoutSegment[] = [];\n segments.push({\n kind: 'top-lanes',\n index: 0,\n start: i * step,\n end: ++i * step,\n });\n for (let m = 0; m < totalSignals; m++) {\n segments.push({ kind: 'msg', index: m, start: i * step, end: ++i * step });\n }\n if (hasLoop) {\n segments.push({\n kind: 'frame-frame',\n index: 0,\n start: i * step,\n end: ++i * step,\n });\n for (let m = 0; m < frameMsgs; m++) {\n segments.push({\n kind: 'frame-msg',\n index: m,\n start: i * step,\n end: ++i * step,\n });\n }\n }\n segments.push({\n kind: 'bottom-lanes',\n index: 0,\n start: i * step,\n end: (i + 1) * step,\n });\n return segments;\n}\n\nexport type BoxedSegment = {\n boxLeft: number;\n boxRight: number;\n boxTop: number;\n boxBottom: number;\n stubA: { x1: number; x2: number };\n stubB: { x1: number; x2: number };\n};\n\nexport function measureSignalLabel(label: string[]): {\n boxW: number;\n boxH: number;\n} {\n const widestLineW = Math.max(\n 0,\n ...label.map((line) => measureText(line, SIGNAL_LABEL_FONT)),\n );\n return {\n boxW: Math.ceil(widestLineW) + SIGNAL_LABEL_PAD_X * 2,\n boxH: label.length * SIGNAL_LABEL_LINE_H + SIGNAL_LABEL_PAD_Y * 2,\n };\n}\n\n/** Distance from a signal's row up to the top of its label or label box. */\nexport function signalLabelHeadroom(\n signal: Pick<DiagramSignal, 'label' | 'boxed'>,\n): number {\n if (signal.boxed) return measureSignalLabel(signal.label).boxH / 2;\n return (\n SIGNAL_LABEL_BASELINE_GAP +\n (signal.label.length - 1) * SIGNAL_LABEL_LINE_STEP +\n fontAscent(SIGNAL_LABEL_FONT)\n );\n}\n\n/** Distance from a signal's row down to the bottom of its label box. */\nexport function signalLabelFootroom(\n signal: Pick<DiagramSignal, 'label' | 'boxed'>,\n): number {\n return signal.boxed ? measureSignalLabel(signal.label).boxH / 2 : 0;\n}\n\nexport function computeBoxedSignal(args: {\n fromX: number;\n toX: number;\n rowY: number;\n boxW: number;\n boxH: number;\n stub: number;\n position: DiagramSignalBox;\n headInset: number;\n}): BoxedSegment {\n const { fromX, toX, rowY, boxW, boxH, stub, position, headInset } = args;\n const direction = toX > fromX ? 1 : -1;\n\n let nearEdge: number;\n switch (position) {\n case 'source':\n nearEdge = fromX + stub * direction;\n break;\n case 'center':\n nearEdge = (fromX + toX) / 2 - (boxW / 2) * direction;\n break;\n case 'target':\n nearEdge = toX - (stub + boxW) * direction;\n break;\n default: {\n const _exhaustive: never = position;\n throw new Error(`invalid boxed signal position: ${String(_exhaustive)}`);\n }\n }\n const farEdge = nearEdge + boxW * direction;\n\n const stubA = { x1: fromX, x2: nearEdge };\n const stubB = { x1: farEdge, x2: toX - headInset * direction };\n\n const stubALen = (stubA.x2 - stubA.x1) * direction;\n const stubBLen = (stubB.x2 - stubB.x1) * direction;\n if (stubALen < 0 || stubBLen < 0) {\n throw new Error(\n `boxed signal label box (width=${boxW}) overflows the lane distance |toX-fromX|=${Math.abs(toX - fromX)} with stub=${stub}, position=${position}`,\n );\n }\n\n return {\n boxLeft: Math.min(nearEdge, farEdge),\n boxRight: Math.max(nearEdge, farEdge),\n boxTop: rowY - boxH / 2,\n boxBottom: rowY + boxH / 2,\n stubA,\n stubB,\n };\n}\n\nexport function laneCenterX(index: number, total: number): number {\n const slot = SEQ_W / total;\n return slot * index + slot / 2;\n}\n\nexport type LanePlacement = {\n id: string;\n centerX: number;\n rectX: number;\n topRectY: number;\n bottomRectY: number;\n accent: boolean;\n};\n\nexport type SignalPlacement = {\n index: number;\n from: string;\n to: string;\n rowY: number;\n segmentStart: number;\n segmentEnd: number;\n};\n\nexport type FramePlacement = {\n x: number;\n y: number;\n width: number;\n height: number;\n label: string;\n segmentStart: number;\n segmentEnd: number;\n signals: SignalPlacement[];\n};\n\nexport type TimelineLayout = {\n width: number;\n height: number;\n lanes: LanePlacement[];\n lifelineYStart: number;\n lifelineYEnd: number;\n signals: SignalPlacement[];\n frame: FramePlacement | null;\n topLanesSegment: { start: number; end: number };\n bottomLanesSegment: { start: number; end: number };\n};\n\nexport function computeTimelineLayout(\n spec: TimelineLayoutSpec,\n): TimelineLayout {\n const totalLanes = spec.lanes.length;\n const totalSignals = spec.signals.length;\n const hasLoop = !!spec.frame;\n const frameMsgs = spec.frame?.signals.length ?? 0;\n\n const segments = buildTimelineSegments(totalSignals, hasLoop, frameMsgs);\n const segOf = (kind: SegmentKind, index = 0) => {\n const s = segments.find((s) => s.kind === kind && s.index === index);\n if (!s) throw new Error(`segment ${kind}[${index}] missing`);\n return s;\n };\n\n const lifelineYStart = TOP_ACTOR_Y + ACTOR_H;\n const mainMsgY = (i: number) => FIRST_MSG_Y + i * ROW_H;\n const lastMainMsgY =\n spec.signals.length > 0 ? mainMsgY(spec.signals.length - 1) : FIRST_MSG_Y;\n\n let frame: FramePlacement | null = null;\n let frameBottom = lastMainMsgY;\n\n if (hasLoop && spec.frame) {\n const frameY = lastMainMsgY + LOOP_TOP_PAD;\n const [firstFrameSignal] = spec.frame.signals;\n const [lastFrameSignal] = spec.frame.signals.slice(-1);\n const firstRowOffset =\n FRAME_HEADER_H +\n FRAME_PAD +\n (firstFrameSignal ? signalLabelHeadroom(firstFrameSignal) : 0);\n const lastRowOffset = firstRowOffset + Math.max(0, frameMsgs - 1) * ROW_H;\n const frameH =\n lastRowOffset +\n (lastFrameSignal ? signalLabelFootroom(lastFrameSignal) : 0) +\n FRAME_PAD;\n frameBottom = frameY + frameH;\n const seg = segOf('frame-frame');\n frame = {\n x: LOOP_X_PAD,\n y: frameY,\n width: SEQ_W - 2 * LOOP_X_PAD,\n height: frameH,\n label: spec.frame.label,\n segmentStart: seg.start,\n segmentEnd: seg.end,\n signals: spec.frame.signals.map((m, i) => {\n const ms = segOf('frame-msg', i);\n return {\n index: i,\n from: m.from,\n to: m.to,\n rowY: frameY + firstRowOffset + i * ROW_H,\n segmentStart: ms.start,\n segmentEnd: ms.end,\n };\n }),\n };\n }\n\n const bottomActorY = frameBottom + BOTTOM_ACTOR_GAP;\n const lifelineYEnd = bottomActorY;\n const totalH = bottomActorY + ACTOR_H + 30;\n\n const lanes: LanePlacement[] = spec.lanes.map((a, i) => {\n const cx = laneCenterX(i, totalLanes);\n return {\n id: a.id,\n centerX: cx,\n rectX: cx - ACTOR_W / 2,\n topRectY: TOP_ACTOR_Y,\n bottomRectY: bottomActorY,\n accent: !!a.accent,\n };\n });\n\n const signals: SignalPlacement[] = spec.signals.map((m, i) => {\n const seg = segOf('msg', i);\n return {\n index: i,\n from: m.from,\n to: m.to,\n rowY: mainMsgY(i),\n segmentStart: seg.start,\n segmentEnd: seg.end,\n };\n });\n\n return {\n width: SEQ_W,\n height: totalH,\n lanes,\n lifelineYStart,\n lifelineYEnd,\n signals,\n frame,\n topLanesSegment: {\n start: segOf('top-lanes').start,\n end: segOf('top-lanes').end,\n },\n bottomLanesSegment: {\n start: segOf('bottom-lanes').start,\n end: segOf('bottom-lanes').end,\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -9,20 +9,15 @@ export type DiagramLabelLine = string | {
9
9
  fontWeight?: number;
10
10
  };
11
11
  export type DiagramSide = 'top' | 'bottom' | 'left' | 'right';
12
- export type DiagramAnchor = DiagramSide | 'center';
13
12
  export type DiagramLabelAlign = 'start' | 'center' | 'end';
14
- export type DiagramTextAlign = 'start' | 'middle' | 'end';
15
- export type DiagramEdgeLabelSide = 'auto' | 'above' | 'below' | 'left' | 'right';
16
13
  export type DiagramEdgeLineStyle = 'solid' | 'dashed' | 'dotted';
17
14
  export type DiagramEdgeDirection = 'forward' | 'both' | 'none';
18
15
  export type DiagramEdgeLayer = 'background' | 'foreground';
19
- export type DiagramEdgeRoute = 'orthogonal' | 'straight';
20
- export type DiagramGuideOrientation = 'vertical' | 'horizontal';
16
+ export type DiagramEdgeWeight = 'regular' | 'bold';
21
17
  export type DiagramStackDirection = 'up-left' | 'up-right' | 'down-left' | 'down-right';
22
18
  export type DiagramNodePort = {
23
19
  id: string;
24
20
  side: DiagramSide;
25
- offset?: number;
26
21
  label?: string;
27
22
  accent?: boolean;
28
23
  };
@@ -30,44 +25,12 @@ export type Point = {
30
25
  x: number;
31
26
  y: number;
32
27
  };
33
- export type DiagramWaypoint = Point | {
34
- row: number;
35
- col: number;
36
- dx?: number;
37
- dy?: number;
38
- } | {
39
- guide: string;
40
- target?: string;
41
- anchor?: DiagramAnchor;
42
- gap?: number;
43
- row?: number;
44
- col?: number;
45
- x?: number;
46
- y?: number;
47
- dx?: number;
48
- dy?: number;
49
- } | {
50
- target: string;
51
- anchor?: DiagramAnchor;
52
- gap?: number;
53
- dx?: number;
54
- dy?: number;
55
- };
56
28
  export type Box = {
57
29
  x: number;
58
30
  y: number;
59
31
  w: number;
60
32
  h: number;
61
33
  };
62
- export type DiagramGraphLayout = {
63
- colWidth?: number;
64
- rowHeight?: number;
65
- columns?: number[];
66
- rows?: number[];
67
- padX?: number;
68
- padY?: number;
69
- titleTopPad?: number;
70
- };
71
34
  export type DiagramViewportFit = 'width' | 'contain' | 'natural';
72
35
  export type DiagramViewport = {
73
36
  fit?: DiagramViewportFit;
@@ -79,58 +42,50 @@ export type DiagramPaper = boolean | {
79
42
  stroke?: boolean;
80
43
  rx?: number;
81
44
  };
45
+ /** React content drawn inside a node, in a box of the size its author gives. */
46
+ export type DiagramNodeContent = {
47
+ element: ReactNode;
48
+ size: {
49
+ w: number;
50
+ h: number;
51
+ };
52
+ };
82
53
  export type DiagramNode = {
83
54
  id: string;
84
55
  label: string | DiagramLabelLine[];
85
- /** React content drawn inside the box; only HtmlGraphDiagram draws it. */
86
- content?: ReactNode;
56
+ /** Only HtmlGraphDiagram draws it. */
57
+ content?: DiagramNodeContent;
87
58
  kind?: 'node' | 'appliance' | 'connector' | 'junction' | 'marker' | 'note';
88
59
  row?: number | undefined;
89
60
  col?: number | undefined;
90
61
  colSpan?: number | undefined;
91
62
  rowSpan?: number | undefined;
92
- /** Whether a Box or Card fills its grid area; other kinds keep their measured size. */
93
- stretch?: boolean | undefined;
94
63
  /** The id of the node or group a note explains. */
95
64
  target?: string | undefined;
96
- width?: number;
97
- height?: number;
98
65
  frame?: 'solid' | 'transparent' | 'flat' | 'filled' | 'none';
99
66
  textColor?: DiagramTextColor | undefined;
100
67
  tone?: DiagramTone | undefined;
101
68
  texture?: DiagramTexture | undefined;
102
- fontWeight?: number | undefined;
103
- fontSize?: number | undefined;
104
- bodyFontSize?: number;
105
- bodyLineGap?: number;
106
69
  accent?: boolean | undefined;
107
70
  description?: string | string[];
108
71
  items?: string[];
109
72
  caption?: string | string[] | undefined;
110
73
  captionSide?: DiagramSide | undefined;
111
74
  captionFrame?: boolean;
112
- captionOffset?: number | undefined;
113
75
  captionColor?: DiagramTextColor | undefined;
114
- captionFontSize?: number | undefined;
115
- captionFontWeight?: number | undefined;
76
+ /** The group the node is nested in. */
116
77
  group?: string;
117
78
  icon?: DiagramNodeIcon | undefined;
118
- iconSize?: number | undefined;
119
79
  ports?: DiagramNodePort[] | undefined;
120
- rx?: number;
80
+ /** Set for a Card: its text starts at the left edge under a title. */
121
81
  textAlign?: 'center' | 'start' | undefined;
122
82
  hidden?: boolean | undefined;
83
+ /** False for a Float, which no edge may start or end at. */
123
84
  connectable?: boolean | undefined;
124
85
  stack?: number;
125
- stackOffset?: number;
126
86
  stackDirection?: DiagramStackDirection;
127
- stackDx?: number;
128
- stackDy?: number;
129
- stackWidthStep?: number;
130
- stackHeightStep?: number;
131
87
  appliancePorts?: number | undefined;
132
88
  antenna?: boolean | undefined;
133
- slant?: number | undefined;
134
89
  };
135
90
  export type DiagramEdge = {
136
91
  from: string;
@@ -138,35 +93,14 @@ export type DiagramEdge = {
138
93
  label?: string[];
139
94
  badgeIcon?: DiagramNodeIcon;
140
95
  badgeLabel?: string[];
141
- badgeSide?: DiagramEdgeLabelSide;
142
- badgeOffset?: number;
143
- badgeDx?: number;
144
- badgeDy?: number;
145
- badgeT?: number;
146
- labelSide?: DiagramEdgeLabelSide;
147
- labelFontSize?: number;
148
- labelOffset?: number;
149
- labelT?: number;
150
- labelSegment?: number;
151
- labelDx?: number;
152
- labelDy?: number;
153
- labelAlign?: DiagramTextAlign;
154
96
  labelFrame?: boolean;
155
- labelFramePadding?: number;
156
- labelLineGap?: number;
157
97
  channel?: string;
158
98
  lineStyle?: DiagramEdgeLineStyle;
159
99
  direction?: DiagramEdgeDirection;
160
100
  layer?: DiagramEdgeLayer;
161
- route?: DiagramEdgeRoute;
162
- strokeWidth?: number;
163
- waypoints?: DiagramWaypoint[];
101
+ weight?: DiagramEdgeWeight;
164
102
  exitSide?: DiagramSide;
165
- exitOffset?: number;
166
103
  entrySide?: DiagramSide;
167
- entryOffset?: number;
168
- entryGap?: number;
169
- stubDistance?: number;
170
104
  accent?: boolean;
171
105
  dim?: boolean;
172
106
  headless?: boolean | undefined;
@@ -179,7 +113,6 @@ export type DiagramGroup = {
179
113
  accent?: boolean | undefined;
180
114
  tone?: DiagramTone | undefined;
181
115
  texture?: DiagramTexture | undefined;
182
- rx?: number | undefined;
183
116
  frame?: 'solid' | 'dashed' | 'none' | undefined;
184
117
  fill?: 'surface' | 'none' | undefined;
185
118
  ports?: DiagramNodePort[] | undefined;
@@ -189,51 +122,9 @@ export type DiagramGroup = {
189
122
  col?: number | undefined;
190
123
  rowSpan?: number | undefined;
191
124
  colSpan?: number | undefined;
192
- tight?: boolean | undefined;
193
- tightX?: boolean | undefined;
194
- tightY?: boolean | undefined;
195
125
  titleBand?: boolean | undefined;
196
- titleGap?: number | undefined;
197
- padding?: number | Partial<Record<DiagramSide, number>> | undefined;
198
- dividers?: {
199
- rows?: number[];
200
- cols?: number[];
201
- } | undefined;
202
- bounds?: {
203
- rowStart: number;
204
- rowEnd: number;
205
- colStart: number;
206
- colEnd: number;
207
- } | undefined;
208
- };
209
- export type DiagramAnnotationLeaderRoute = 'straight' | 'elbow';
210
- export type DiagramAnnotationLeader = {
211
- target: string;
212
- anchor: DiagramAnchor;
213
- route: DiagramAnnotationLeaderRoute;
214
- from: Point;
215
- to: Point;
216
- points: Point[];
217
- };
218
- export type DiagramAnnotation = {
219
- x?: number;
220
- y?: number;
221
- target?: string;
222
- targets?: string[];
223
- anchor?: DiagramAnchor;
224
- guide?: string;
225
- offset?: number;
226
- dx?: number;
227
- dy?: number;
228
- text: string[];
229
- align?: DiagramTextAlign;
230
- color?: DiagramTextColor;
231
- fontWeight?: number;
232
- fontSize?: number;
233
- lineGap?: number;
234
- leader?: boolean;
235
- leaderGap?: number;
236
- leaderRoute?: DiagramAnnotationLeaderRoute;
126
+ /** A line through every gutter inside the group. */
127
+ dividers?: boolean | undefined;
237
128
  };
238
129
  export type DiagramLane = {
239
130
  id: string;
@@ -256,43 +147,15 @@ export type DiagramFrameElement = {
256
147
  label: string;
257
148
  signals: DiagramSignal[];
258
149
  };
259
- export type DiagramGuide = {
260
- id?: string;
261
- orientation?: DiagramGuideOrientation;
262
- lane?: string;
263
- x?: number;
264
- y?: number;
265
- row?: number;
266
- col?: number;
267
- target?: string;
268
- anchor?: DiagramAnchor;
269
- gap?: number;
270
- dx?: number;
271
- dy?: number;
272
- yStart?: number;
273
- yEnd?: number;
274
- accent?: boolean;
275
- };
276
150
  export type DiagramMarker = DiagramNode;
277
- export type DiagramGraphSpec = {
151
+ export type DiagramGraphIR = {
278
152
  nodes: DiagramNode[];
279
153
  edges: DiagramEdge[];
280
- groups?: DiagramGroup[] | undefined;
281
- annotations?: DiagramAnnotation[];
282
- guides?: DiagramGuide[];
283
- layout?: DiagramGraphLayout | undefined;
284
- };
285
- export type GraphLayoutSpec = DiagramGraphSpec & {
286
- title?: string[];
154
+ groups: DiagramGroup[];
287
155
  };
288
156
  export type DiagramTimelineSpec = {
289
157
  lanes: DiagramLane[];
290
158
  signals: DiagramSignal[];
291
159
  frame?: DiagramFrameElement | undefined;
292
160
  };
293
- export type DiagramGraphIR = DiagramGraphSpec & {
294
- groups: DiagramGroup[];
295
- annotations: DiagramAnnotation[];
296
- guides: DiagramGuide[];
297
- };
298
161
  //# sourceMappingURL=diagram-ir.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagram-ir.d.ts","sourceRoot":"","sources":["../../../src/lib/model/diagram-ir.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagram-ir.d.ts","sourceRoot":"","sources":["../../../src/lib/model/diagram-ir.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"diagram-ir.js","names":[],"sources":["../../../src/lib/model/diagram-ir.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\nexport type DiagramTextColor = 'accent' | 'neutral' | 'dim';\n\nexport type DiagramTone =\n 'neutral' | 'green' | 'blue' | 'amber' | 'rose' | 'purple' | 'slate';\n\nexport type DiagramTexture = 'dots' | 'hatch' | 'none';\n\nexport type DiagramNodeIcon =\n | 'certificate'\n | 'cloudflare'\n | 'dashboard'\n | 'file'\n | 'git'\n | 'gpu'\n | 'user'\n | 'brain'\n | 'internet'\n | 'istio'\n | 'kubernetes'\n | 'logs'\n | 'metrics'\n | 'router'\n | 'server'\n | 'shield'\n | 'storage'\n | 'trace'\n | 'tunnel'\n | 'eye'\n | 'eye-off'\n | 'ellipsis';\n\nexport type DiagramLabelLine =\n | string\n | {\n text: string;\n textColor?: DiagramTextColor;\n fontWeight?: number;\n };\n\nexport type DiagramSide = 'top' | 'bottom' | 'left' | 'right';\nexport type DiagramAnchor = DiagramSide | 'center';\nexport type DiagramLabelAlign = 'start' | 'center' | 'end';\nexport type DiagramTextAlign = 'start' | 'middle' | 'end';\nexport type DiagramEdgeLabelSide =\n 'auto' | 'above' | 'below' | 'left' | 'right';\nexport type DiagramEdgeLineStyle = 'solid' | 'dashed' | 'dotted';\nexport type DiagramEdgeDirection = 'forward' | 'both' | 'none';\nexport type DiagramEdgeLayer = 'background' | 'foreground';\nexport type DiagramEdgeRoute = 'orthogonal' | 'straight';\nexport type DiagramGuideOrientation = 'vertical' | 'horizontal';\nexport type DiagramStackDirection =\n 'up-left' | 'up-right' | 'down-left' | 'down-right';\n\nexport type DiagramNodePort = {\n id: string;\n side: DiagramSide;\n offset?: number;\n label?: string;\n accent?: boolean;\n};\n\nexport type Point = { x: number; y: number };\nexport type DiagramWaypoint =\n | Point\n | { row: number; col: number; dx?: number; dy?: number }\n | {\n guide: string;\n target?: string;\n anchor?: DiagramAnchor;\n gap?: number;\n row?: number;\n col?: number;\n x?: number;\n y?: number;\n dx?: number;\n dy?: number;\n }\n | {\n target: string;\n anchor?: DiagramAnchor;\n gap?: number;\n dx?: number;\n dy?: number;\n };\nexport type Box = { x: number; y: number; w: number; h: number };\n\nexport type DiagramGraphLayout = {\n colWidth?: number;\n rowHeight?: number;\n columns?: number[];\n rows?: number[];\n padX?: number;\n padY?: number;\n titleTopPad?: number;\n};\n\nexport type DiagramViewportFit = 'width' | 'contain' | 'natural';\n\nexport type DiagramViewport = {\n fit?: DiagramViewportFit;\n zoom?: number;\n};\n\nexport type DiagramPaperFill = 'background' | 'surface';\n\nexport type DiagramPaper =\n | boolean\n | {\n fill?: DiagramPaperFill;\n stroke?: boolean;\n rx?: number;\n };\n\nexport type DiagramNode = {\n id: string;\n label: string | DiagramLabelLine[];\n /** React content drawn inside the box; only HtmlGraphDiagram draws it. */\n content?: ReactNode;\n kind?: 'node' | 'appliance' | 'connector' | 'junction' | 'marker' | 'note';\n row?: number | undefined;\n col?: number | undefined;\n colSpan?: number | undefined;\n rowSpan?: number | undefined;\n /** Whether a Box or Card fills its grid area; other kinds keep their measured size. */\n stretch?: boolean | undefined;\n /** The id of the node or group a note explains. */\n target?: string | undefined;\n width?: number;\n height?: number;\n frame?: 'solid' | 'transparent' | 'flat' | 'filled' | 'none';\n textColor?: DiagramTextColor | undefined;\n tone?: DiagramTone | undefined;\n texture?: DiagramTexture | undefined;\n fontWeight?: number | undefined;\n fontSize?: number | undefined;\n bodyFontSize?: number;\n bodyLineGap?: number;\n accent?: boolean | undefined;\n description?: string | string[];\n items?: string[];\n caption?: string | string[] | undefined;\n captionSide?: DiagramSide | undefined;\n captionFrame?: boolean;\n captionOffset?: number | undefined;\n captionColor?: DiagramTextColor | undefined;\n captionFontSize?: number | undefined;\n captionFontWeight?: number | undefined;\n group?: string;\n icon?: DiagramNodeIcon | undefined;\n iconSize?: number | undefined;\n ports?: DiagramNodePort[] | undefined;\n rx?: number;\n textAlign?: 'center' | 'start' | undefined;\n hidden?: boolean | undefined;\n connectable?: boolean | undefined;\n stack?: number;\n stackOffset?: number;\n stackDirection?: DiagramStackDirection;\n stackDx?: number;\n stackDy?: number;\n stackWidthStep?: number;\n stackHeightStep?: number;\n appliancePorts?: number | undefined;\n antenna?: boolean | undefined;\n slant?: number | undefined;\n};\n\nexport type DiagramEdge = {\n from: string;\n to: string;\n label?: string[];\n badgeIcon?: DiagramNodeIcon;\n badgeLabel?: string[];\n badgeSide?: DiagramEdgeLabelSide;\n badgeOffset?: number;\n badgeDx?: number;\n badgeDy?: number;\n badgeT?: number;\n labelSide?: DiagramEdgeLabelSide;\n labelFontSize?: number;\n labelOffset?: number;\n labelT?: number;\n labelSegment?: number;\n labelDx?: number;\n labelDy?: number;\n labelAlign?: DiagramTextAlign;\n labelFrame?: boolean;\n labelFramePadding?: number;\n labelLineGap?: number;\n channel?: string;\n lineStyle?: DiagramEdgeLineStyle;\n direction?: DiagramEdgeDirection;\n layer?: DiagramEdgeLayer;\n route?: DiagramEdgeRoute;\n strokeWidth?: number;\n waypoints?: DiagramWaypoint[];\n exitSide?: DiagramSide;\n exitOffset?: number;\n entrySide?: DiagramSide;\n entryOffset?: number;\n entryGap?: number;\n stubDistance?: number;\n accent?: boolean;\n dim?: boolean;\n headless?: boolean | undefined;\n};\n\nexport type DiagramGroup = {\n id: string;\n label: string | string[];\n labelAlign?: DiagramLabelAlign | undefined;\n labelSide?: 'top' | 'bottom' | undefined;\n accent?: boolean | undefined;\n tone?: DiagramTone | undefined;\n texture?: DiagramTexture | undefined;\n rx?: number | undefined;\n frame?: 'solid' | 'dashed' | 'none' | undefined;\n fill?: 'surface' | 'none' | undefined;\n ports?: DiagramNodePort[] | undefined;\n parent?: string | undefined;\n /** An explicit grid area; without one the group covers the bounding box of its members. */\n row?: number | undefined;\n col?: number | undefined;\n rowSpan?: number | undefined;\n colSpan?: number | undefined;\n tight?: boolean | undefined;\n tightX?: boolean | undefined;\n tightY?: boolean | undefined;\n titleBand?: boolean | undefined;\n titleGap?: number | undefined;\n padding?: number | Partial<Record<DiagramSide, number>> | undefined;\n dividers?:\n | {\n rows?: number[];\n cols?: number[];\n }\n | undefined;\n bounds?:\n | {\n rowStart: number;\n rowEnd: number;\n colStart: number;\n colEnd: number;\n }\n | undefined;\n};\n\nexport type DiagramAnnotationLeaderRoute = 'straight' | 'elbow';\n\nexport type DiagramAnnotationLeader = {\n target: string;\n anchor: DiagramAnchor;\n route: DiagramAnnotationLeaderRoute;\n from: Point;\n to: Point;\n points: Point[];\n};\n\nexport type DiagramAnnotation = {\n x?: number;\n y?: number;\n target?: string;\n targets?: string[];\n anchor?: DiagramAnchor;\n guide?: string;\n offset?: number;\n dx?: number;\n dy?: number;\n text: string[];\n align?: DiagramTextAlign;\n color?: DiagramTextColor;\n fontWeight?: number;\n fontSize?: number;\n lineGap?: number;\n leader?: boolean;\n leaderGap?: number;\n leaderRoute?: DiagramAnnotationLeaderRoute;\n};\n\nexport type DiagramLane = {\n id: string;\n label: string[];\n accent?: boolean | undefined;\n};\n\nexport type DiagramSignalBox = 'source' | 'center' | 'target';\n\nexport type DiagramSignal = {\n from: string;\n to: string;\n label: string[];\n accent?: boolean;\n dim?: boolean;\n boxed?: DiagramSignalBox;\n stub?: number;\n bordered?: boolean;\n filled?: boolean;\n};\n\nexport type DiagramFrameElement = {\n label: string;\n signals: DiagramSignal[];\n};\n\nexport type DiagramGuide = {\n id?: string;\n orientation?: DiagramGuideOrientation;\n lane?: string;\n x?: number;\n y?: number;\n row?: number;\n col?: number;\n target?: string;\n anchor?: DiagramAnchor;\n gap?: number;\n dx?: number;\n dy?: number;\n yStart?: number;\n yEnd?: number;\n accent?: boolean;\n};\n\nexport type DiagramMarker = DiagramNode;\n\nexport type DiagramGraphSpec = {\n nodes: DiagramNode[];\n edges: DiagramEdge[];\n groups?: DiagramGroup[] | undefined;\n annotations?: DiagramAnnotation[];\n guides?: DiagramGuide[];\n layout?: DiagramGraphLayout | undefined;\n};\n\nexport type GraphLayoutSpec = DiagramGraphSpec & { title?: string[] };\n\nexport type DiagramTimelineSpec = {\n lanes: DiagramLane[];\n signals: DiagramSignal[];\n frame?: DiagramFrameElement | undefined;\n};\n\nexport type DiagramGraphIR = DiagramGraphSpec & {\n groups: DiagramGroup[];\n annotations: DiagramAnnotation[];\n guides: DiagramGuide[];\n};\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"diagram-ir.js","names":[],"sources":["../../../src/lib/model/diagram-ir.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\nexport type DiagramTextColor = 'accent' | 'neutral' | 'dim';\n\nexport type DiagramTone =\n 'neutral' | 'green' | 'blue' | 'amber' | 'rose' | 'purple' | 'slate';\n\nexport type DiagramTexture = 'dots' | 'hatch' | 'none';\n\nexport type DiagramNodeIcon =\n | 'certificate'\n | 'cloudflare'\n | 'dashboard'\n | 'file'\n | 'git'\n | 'gpu'\n | 'user'\n | 'brain'\n | 'internet'\n | 'istio'\n | 'kubernetes'\n | 'logs'\n | 'metrics'\n | 'router'\n | 'server'\n | 'shield'\n | 'storage'\n | 'trace'\n | 'tunnel'\n | 'eye'\n | 'eye-off'\n | 'ellipsis';\n\nexport type DiagramLabelLine =\n | string\n | {\n text: string;\n textColor?: DiagramTextColor;\n fontWeight?: number;\n };\n\nexport type DiagramSide = 'top' | 'bottom' | 'left' | 'right';\nexport type DiagramLabelAlign = 'start' | 'center' | 'end';\nexport type DiagramEdgeLineStyle = 'solid' | 'dashed' | 'dotted';\nexport type DiagramEdgeDirection = 'forward' | 'both' | 'none';\nexport type DiagramEdgeLayer = 'background' | 'foreground';\nexport type DiagramEdgeWeight = 'regular' | 'bold';\nexport type DiagramStackDirection =\n 'up-left' | 'up-right' | 'down-left' | 'down-right';\n\nexport type DiagramNodePort = {\n id: string;\n side: DiagramSide;\n label?: string;\n accent?: boolean;\n};\n\nexport type Point = { x: number; y: number };\nexport type Box = { x: number; y: number; w: number; h: number };\n\nexport type DiagramViewportFit = 'width' | 'contain' | 'natural';\n\nexport type DiagramViewport = {\n fit?: DiagramViewportFit;\n zoom?: number;\n};\n\nexport type DiagramPaperFill = 'background' | 'surface';\n\nexport type DiagramPaper =\n | boolean\n | {\n fill?: DiagramPaperFill;\n stroke?: boolean;\n rx?: number;\n };\n\n/** React content drawn inside a node, in a box of the size its author gives. */\nexport type DiagramNodeContent = {\n element: ReactNode;\n size: { w: number; h: number };\n};\n\nexport type DiagramNode = {\n id: string;\n label: string | DiagramLabelLine[];\n /** Only HtmlGraphDiagram draws it. */\n content?: DiagramNodeContent;\n kind?: 'node' | 'appliance' | 'connector' | 'junction' | 'marker' | 'note';\n row?: number | undefined;\n col?: number | undefined;\n colSpan?: number | undefined;\n rowSpan?: number | undefined;\n /** The id of the node or group a note explains. */\n target?: string | undefined;\n frame?: 'solid' | 'transparent' | 'flat' | 'filled' | 'none';\n textColor?: DiagramTextColor | undefined;\n tone?: DiagramTone | undefined;\n texture?: DiagramTexture | undefined;\n accent?: boolean | undefined;\n description?: string | string[];\n items?: string[];\n caption?: string | string[] | undefined;\n captionSide?: DiagramSide | undefined;\n captionFrame?: boolean;\n captionColor?: DiagramTextColor | undefined;\n /** The group the node is nested in. */\n group?: string;\n icon?: DiagramNodeIcon | undefined;\n ports?: DiagramNodePort[] | undefined;\n /** Set for a Card: its text starts at the left edge under a title. */\n textAlign?: 'center' | 'start' | undefined;\n hidden?: boolean | undefined;\n /** False for a Float, which no edge may start or end at. */\n connectable?: boolean | undefined;\n stack?: number;\n stackDirection?: DiagramStackDirection;\n appliancePorts?: number | undefined;\n antenna?: boolean | undefined;\n};\n\nexport type DiagramEdge = {\n from: string;\n to: string;\n label?: string[];\n badgeIcon?: DiagramNodeIcon;\n badgeLabel?: string[];\n labelFrame?: boolean;\n channel?: string;\n lineStyle?: DiagramEdgeLineStyle;\n direction?: DiagramEdgeDirection;\n layer?: DiagramEdgeLayer;\n weight?: DiagramEdgeWeight;\n exitSide?: DiagramSide;\n entrySide?: DiagramSide;\n accent?: boolean;\n dim?: boolean;\n headless?: boolean | undefined;\n};\n\nexport type DiagramGroup = {\n id: string;\n label: string | string[];\n labelAlign?: DiagramLabelAlign | undefined;\n labelSide?: 'top' | 'bottom' | undefined;\n accent?: boolean | undefined;\n tone?: DiagramTone | undefined;\n texture?: DiagramTexture | undefined;\n frame?: 'solid' | 'dashed' | 'none' | undefined;\n fill?: 'surface' | 'none' | undefined;\n ports?: DiagramNodePort[] | undefined;\n parent?: string | undefined;\n /** An explicit grid area; without one the group covers the bounding box of its members. */\n row?: number | undefined;\n col?: number | undefined;\n rowSpan?: number | undefined;\n colSpan?: number | undefined;\n titleBand?: boolean | undefined;\n /** A line through every gutter inside the group. */\n dividers?: boolean | undefined;\n};\n\nexport type DiagramLane = {\n id: string;\n label: string[];\n accent?: boolean | undefined;\n};\n\nexport type DiagramSignalBox = 'source' | 'center' | 'target';\n\nexport type DiagramSignal = {\n from: string;\n to: string;\n label: string[];\n accent?: boolean;\n dim?: boolean;\n boxed?: DiagramSignalBox;\n stub?: number;\n bordered?: boolean;\n filled?: boolean;\n};\n\nexport type DiagramFrameElement = {\n label: string;\n signals: DiagramSignal[];\n};\n\nexport type DiagramMarker = DiagramNode;\n\nexport type DiagramGraphIR = {\n nodes: DiagramNode[];\n edges: DiagramEdge[];\n groups: DiagramGroup[];\n};\n\nexport type DiagramTimelineSpec = {\n lanes: DiagramLane[];\n signals: DiagramSignal[];\n frame?: DiagramFrameElement | undefined;\n};\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import type { DiagramGraphIR } from './diagram-ir.ts';
2
+ /**
3
+ * Rejects ids that clash and edges whose ends name no node, group or port,
4
+ * or a node that takes no edges.
5
+ */
6
+ export declare function validateGraph(ir: DiagramGraphIR): void;
7
+ //# sourceMappingURL=validate-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-graph.d.ts","sourceRoot":"","sources":["../../../src/lib/model/validate-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,cAAc,QAgE/C"}
@@ -0,0 +1,54 @@
1
+ import { parseEndpointRef } from "./endpoint-ref.js";
2
+
3
+ /**
4
+ * Rejects ids that clash and edges whose ends name no node, group or port,
5
+ * or a node that takes no edges.
6
+ */
7
+ export function validateGraph(ir) {
8
+ const nodeIds = new Set();
9
+ for (const node of ir.nodes) {
10
+ if (nodeIds.has(node.id)) throw new Error(`Duplicate Diagram node id "${node.id}".`);
11
+ nodeIds.add(node.id);
12
+ }
13
+ const groupIds = new Set();
14
+ for (const group of ir.groups) {
15
+ if (groupIds.has(group.id)) throw new Error(`Duplicate Diagram group id "${group.id}".`);
16
+ groupIds.add(group.id);
17
+ }
18
+ const nodesById = new Map(ir.nodes.map(node => [node.id, node]));
19
+ const groupsById = new Map(ir.groups.map(group => [group.id, group]));
20
+ for (const node of ir.nodes) {
21
+ if (groupsById.has(node.id)) {
22
+ throw new Error(`Diagram node id "${node.id}" conflicts with a Diagram group id. Node and group endpoint ids must be unique.`);
23
+ }
24
+ }
25
+ const hasPort = (ownerId, portId) => [nodesById.get(ownerId), groupsById.get(ownerId)].some(owner => owner?.ports?.some(port => port.id === portId));
26
+ for (const edge of ir.edges) {
27
+ const {
28
+ nodeId: sourceNodeId,
29
+ portId: sourcePortId
30
+ } = parseEndpointRef(edge.from);
31
+ const {
32
+ nodeId: targetNodeId,
33
+ portId: targetPortId
34
+ } = parseEndpointRef(edge.to);
35
+ if (!nodeIds.has(sourceNodeId) && !groupsById.has(sourceNodeId)) {
36
+ throw new Error(`Diagram edge ${edge.from}->${edge.to} references missing source "${sourceNodeId}".`);
37
+ }
38
+ if (!nodeIds.has(targetNodeId) && !groupsById.has(targetNodeId)) {
39
+ throw new Error(`Diagram edge ${edge.from}->${edge.to} references missing target "${targetNodeId}".`);
40
+ }
41
+ if (sourcePortId && !hasPort(sourceNodeId, sourcePortId)) {
42
+ throw new Error(`Diagram edge ${edge.from}->${edge.to} references missing source port "${sourcePortId}" on "${sourceNodeId}".`);
43
+ }
44
+ if (targetPortId && !hasPort(targetNodeId, targetPortId)) {
45
+ throw new Error(`Diagram edge ${edge.from}->${edge.to} references missing target port "${targetPortId}" on "${targetNodeId}".`);
46
+ }
47
+ for (const [relation, id] of [['start from', sourceNodeId], ['end at', targetNodeId]]) {
48
+ if (nodesById.get(id)?.connectable === false) {
49
+ throw new Error(`Diagram edge ${edge.from}->${edge.to} cannot ${relation} non-connectable node "${id}". Diagram.Float is display-only; connect a Box, Card, Label or Port.`);
50
+ }
51
+ }
52
+ }
53
+ }
54
+ //# sourceMappingURL=validate-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-graph.js","names":["parseEndpointRef","validateGraph","ir","nodeIds","Set","node","nodes","has","id","Error","add","groupIds","group","groups","nodesById","Map","map","groupsById","hasPort","ownerId","portId","get","some","owner","ports","port","edge","edges","nodeId","sourceNodeId","sourcePortId","from","targetNodeId","targetPortId","to","relation","connectable"],"sources":["../../../src/lib/model/validate-graph.ts"],"sourcesContent":["import type { DiagramGraphIR } from './diagram-ir.ts';\nimport { parseEndpointRef } from './endpoint-ref.ts';\n\n/**\n * Rejects ids that clash and edges whose ends name no node, group or port,\n * or a node that takes no edges.\n */\nexport function validateGraph(ir: DiagramGraphIR) {\n const nodeIds = new Set<string>();\n for (const node of ir.nodes) {\n if (nodeIds.has(node.id))\n throw new Error(`Duplicate Diagram node id \"${node.id}\".`);\n nodeIds.add(node.id);\n }\n const groupIds = new Set<string>();\n for (const group of ir.groups) {\n if (groupIds.has(group.id))\n throw new Error(`Duplicate Diagram group id \"${group.id}\".`);\n groupIds.add(group.id);\n }\n const nodesById = new Map(ir.nodes.map((node) => [node.id, node]));\n const groupsById = new Map(ir.groups.map((group) => [group.id, group]));\n for (const node of ir.nodes) {\n if (groupsById.has(node.id)) {\n throw new Error(\n `Diagram node id \"${node.id}\" conflicts with a Diagram group id. Node and group endpoint ids must be unique.`,\n );\n }\n }\n const hasPort = (ownerId: string, portId: string) =>\n [nodesById.get(ownerId), groupsById.get(ownerId)].some((owner) =>\n owner?.ports?.some((port) => port.id === portId),\n );\n for (const edge of ir.edges) {\n const { nodeId: sourceNodeId, portId: sourcePortId } = parseEndpointRef(\n edge.from,\n );\n const { nodeId: targetNodeId, portId: targetPortId } = parseEndpointRef(\n edge.to,\n );\n if (!nodeIds.has(sourceNodeId) && !groupsById.has(sourceNodeId)) {\n throw new Error(\n `Diagram edge ${edge.from}->${edge.to} references missing source \"${sourceNodeId}\".`,\n );\n }\n if (!nodeIds.has(targetNodeId) && !groupsById.has(targetNodeId)) {\n throw new Error(\n `Diagram edge ${edge.from}->${edge.to} references missing target \"${targetNodeId}\".`,\n );\n }\n if (sourcePortId && !hasPort(sourceNodeId, sourcePortId)) {\n throw new Error(\n `Diagram edge ${edge.from}->${edge.to} references missing source port \"${sourcePortId}\" on \"${sourceNodeId}\".`,\n );\n }\n if (targetPortId && !hasPort(targetNodeId, targetPortId)) {\n throw new Error(\n `Diagram edge ${edge.from}->${edge.to} references missing target port \"${targetPortId}\" on \"${targetNodeId}\".`,\n );\n }\n for (const [relation, id] of [\n ['start from', sourceNodeId],\n ['end at', targetNodeId],\n ] as const) {\n if (nodesById.get(id)?.connectable === false) {\n throw new Error(\n `Diagram edge ${edge.from}->${edge.to} cannot ${relation} non-connectable node \"${id}\". Diagram.Float is display-only; connect a Box, Card, Label or Port.`,\n );\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,34 +1,28 @@
1
- import type { DiagramApplianceProps, DiagramConnectorProps, DiagramContentProps, DiagramEdgeProps, DiagramEntryProps, DiagramExitProps, DiagramFrameProps, DiagramGroupProps, DiagramJunctionProps, DiagramLaneProps, DiagramLineProps, DiagramMarkerProps, DiagramNodeProps, DiagramPhantomProps, DiagramSignalProps, DiagramTextProps } from './diagram-types.ts';
1
+ import type { DiagramApplianceProps, DiagramConnectorProps, DiagramContentProps, DiagramEdgeProps, DiagramFrameProps, DiagramGroupProps, DiagramJunctionProps, DiagramLaneProps, DiagramLineProps, DiagramMarkerProps, DiagramNodeProps, DiagramNoteProps, DiagramSignalProps } from './diagram-types.ts';
2
2
  export type { DiagramAccent, DiagramMode, DiagramStylePreset, } from './chrome/index.ts';
3
3
  export type { DiagramEffects } from '../renderers/types.ts';
4
4
  export type { DiagramPaper, DiagramStackDirection, DiagramViewport, } from '../model/diagram-ir.ts';
5
- export type { DiagramApplianceProps, DiagramConnectorProps, DiagramContentProps, DiagramEdgeProps, DiagramEntryProps, DiagramExitProps, DiagramFrameProps, DiagramGroupProps, DiagramGuideProps, DiagramJunctionProps, DiagramLaneProps, DiagramLineProps, DiagramMarkerProps, DiagramNodeProps, DiagramPhantomProps, DiagramProps, DiagramSignalProps, DiagramTextProps, DiagramWaypointProps, } from './diagram-types.ts';
5
+ export type { DiagramApplianceProps, DiagramConnectorProps, DiagramContentProps, DiagramEdgeProps, DiagramFrameProps, DiagramGroupProps, DiagramJunctionProps, DiagramLaneProps, DiagramLineProps, DiagramMarkerProps, DiagramNodeProps, DiagramNoteProps, DiagramProps, DiagramSignalProps, } from './diagram-types.ts';
6
6
  export declare const Diagram: {
7
7
  Node: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramNodeProps>;
8
8
  Edge: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramEdgeProps>;
9
9
  Group: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramGroupProps>;
10
10
  Frame: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramFrameProps>;
11
- Text: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramTextProps>;
12
11
  Line: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramLineProps>;
13
12
  Lane: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramLaneProps>;
14
13
  Signal: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramSignalProps>;
15
14
  Marker: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramMarkerProps>;
16
- Guide: import("../compiler/diagram-compile.ts").PrimitiveComponent<import("../model/diagram-ir.ts").DiagramGuide>;
17
- Waypoint: import("../compiler/diagram-compile.ts").PrimitiveComponent<import("../model/diagram-ir.ts").DiagramWaypoint>;
18
- Entry: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramEntryProps>;
19
- Exit: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramExitProps>;
20
15
  Box: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramNodeProps>;
21
16
  Card: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramNodeProps>;
22
17
  Port: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramNodeProps>;
23
18
  Label: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramNodeProps>;
24
19
  Float: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramNodeProps>;
25
- Phantom: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramPhantomProps>;
26
20
  Appliance: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramApplianceProps>;
27
21
  Connector: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramConnectorProps>;
28
22
  Junction: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramJunctionProps>;
29
23
  Wire: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramEdgeProps>;
30
24
  Arrow: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramEdgeProps>;
31
- Note: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramTextProps>;
25
+ Note: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramNoteProps>;
32
26
  Content: import("../compiler/diagram-compile.ts").PrimitiveComponent<DiagramContentProps>;
33
27
  };
34
28
  //# sourceMappingURL=Diagram.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Diagram.d.ts","sourceRoot":"","sources":["../../../src/lib/react/Diagram.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EAEjB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAEjB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,aAAa,EACb,WAAW,EACX,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EACV,YAAY,EACZ,qBAAqB,EACrB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AA6B5B,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BnB,CAAC"}
1
+ {"version":3,"file":"Diagram.d.ts","sourceRoot":"","sources":["../../../src/lib/react/Diagram.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,aAAa,EACb,WAAW,EACX,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EACV,YAAY,EACZ,qBAAqB,EACrB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAuB5B,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;CAqBnB,CAAC"}
@@ -5,7 +5,6 @@ const Card = primitive('card');
5
5
  const Port = primitive('port');
6
6
  const Label = primitive('label');
7
7
  const Float = primitive('float');
8
- const Phantom = primitive('phantom');
9
8
  const Appliance = primitive('appliance');
10
9
  const Connector = primitive('connector');
11
10
  const Junction = primitive('junction');
@@ -13,38 +12,27 @@ const Edge = primitive('edge');
13
12
  const Arrow = primitive('arrow');
14
13
  const Wire = primitive('wire');
15
14
  const Group = primitive('group');
16
- const Text = primitive('text');
15
+ const Note = primitive('note');
17
16
  const Line = primitive('line');
18
17
  const Lane = primitive('lane');
19
18
  const Signal = primitive('signal');
20
19
  const Frame = primitive('frame');
21
20
  const Marker = primitive('marker');
22
- const Guide = primitive('guide');
23
- const Waypoint = primitive('waypoint');
24
- const Entry = primitive('entry');
25
- const Exit = primitive('exit');
26
21
  const Content = primitive('content');
27
- const Note = Text;
28
22
  export const Diagram = {
29
23
  Node,
30
24
  Edge,
31
25
  Group,
32
26
  Frame,
33
- Text,
34
27
  Line,
35
28
  Lane,
36
29
  Signal,
37
30
  Marker,
38
- Guide,
39
- Waypoint,
40
- Entry,
41
- Exit,
42
31
  Box,
43
32
  Card,
44
33
  Port,
45
34
  Label,
46
35
  Float,
47
- Phantom,
48
36
  Appliance,
49
37
  Connector,
50
38
  Junction,