@tldraw/mermaid 4.6.0-internal.e29318c66fb0 → 4.6.0-next.0eb36d65eec3

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 CHANGED
@@ -10,7 +10,11 @@ Instead of rendering a static SVG, `@tldraw/mermaid` parses Mermaid text and cre
10
10
  npm i @tldraw/mermaid
11
11
  ```
12
12
 
13
- > **Peer dependency:** this package requires `tldraw` to be installed in your project.
13
+ **Peer dependencies:** your app must also include compatible versions of:
14
+
15
+ - **`tldraw`** — the SDK this package plugs into
16
+ - **`react`** — `^18.2.0` or `^19.2.1`
17
+ - **`react-dom`** — `^18.2.0` or `^19.2.1`
14
18
 
15
19
  ## Quick start
16
20
 
package/dist-cjs/index.js CHANGED
@@ -28,7 +28,7 @@ var import_createMermaidDiagram = require("./createMermaidDiagram");
28
28
  var import_renderBlueprint = require("./renderBlueprint");
29
29
  (0, import_utils.registerTldrawLibraryVersion)(
30
30
  "@tldraw/mermaid",
31
- "4.6.0-internal.e29318c66fb0",
31
+ "4.6.0-next.0eb36d65eec3",
32
32
  "cjs"
33
33
  );
34
34
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/mindmapDiagram.ts"],
4
- "sourcesContent": ["import type { MindmapNode } from 'mermaid/dist/diagrams/mindmap/mindmapTypes.js'\nimport type { TLDefaultColorStyle, TLDefaultSizeStyle, TLGeoShapeGeoStyle } from 'tldraw'\nimport type {\n\tDiagramMermaidBlueprint,\n\tMermaidBlueprintEdge,\n\tMermaidBlueprintGeoNode,\n} from './blueprint'\nimport { parseRgbToTldrawColor } from './colors'\nimport type { ParsedNode } from './svgParsing'\nimport { parseNodesFromSvg, scaleLayout } from './svgParsing'\nimport { LAYOUT_SCALE } from './utils'\n\nconst MINDMAP_NODE_TYPE = {\n\tDEFAULT: 0,\n\tROUNDED_RECT: 1,\n\tRECT: 2,\n\tCIRCLE: 3,\n\tCLOUD: 4,\n\tBANG: 5,\n\tHEXAGON: 6,\n} as const\n\nfunction mapMindmapTypeToGeo(type: number): TLGeoShapeGeoStyle {\n\tswitch (type) {\n\t\tcase MINDMAP_NODE_TYPE.CIRCLE:\n\t\t\treturn 'ellipse'\n\t\tcase MINDMAP_NODE_TYPE.CLOUD:\n\t\t\treturn 'cloud'\n\t\tcase MINDMAP_NODE_TYPE.HEXAGON:\n\t\t\treturn 'hexagon'\n\t\tcase MINDMAP_NODE_TYPE.BANG:\n\t\t\treturn 'star'\n\t\tcase MINDMAP_NODE_TYPE.RECT:\n\t\tcase MINDMAP_NODE_TYPE.ROUNDED_RECT:\n\t\tcase MINDMAP_NODE_TYPE.DEFAULT:\n\t\tdefault:\n\t\t\treturn 'rectangle'\n\t}\n}\n\nfunction getEdgeSizeForLevel(parentLevel: number): TLDefaultSizeStyle {\n\tif (parentLevel <= 0) return 'l'\n\tif (parentLevel === 1) return 'm'\n\treturn 's'\n}\n\ninterface FlatNode {\n\tid: string\n\tlabel: string\n\ttype: number\n\tlevel: number\n\tparentId: string | undefined\n\tsection: number | undefined\n\tisRoot: boolean\n}\n\nfunction flattenMindmapTree(\n\tnode: MindmapNode,\n\tparentId: string | undefined,\n\tout: FlatNode[]\n): void {\n\tout.push({\n\t\tid: String(node.id),\n\t\tlabel: node.descr,\n\t\ttype: node.type,\n\t\tlevel: node.level,\n\t\tparentId,\n\t\tsection: node.section,\n\t\tisRoot: !!node.isRoot,\n\t})\n\tfor (const child of node.children) {\n\t\tflattenMindmapTree(child, String(node.id), out)\n\t}\n}\n\n/**\n * Pre-parsed SVG layout for mindmap diagram converters.\n * Contains already-scaled node positions extracted from the SVG.\n */\nexport interface ParsedMindmapLayout {\n\tnodes: Map<string, ParsedNode>\n}\n\nfunction parseMindmapNodeId(domId: string): string {\n\tconst match = domId.match(/^node_(\\d+)$/)\n\treturn match ? match[1] : domId\n}\n\n/** Parse mindmap-specific SVG layout data for use by {@link mindmapToBlueprint}. */\nexport function parseMindmapLayout(root: Element): ParsedMindmapLayout {\n\tconst nodes = parseNodesFromSvg(root, '.node', parseMindmapNodeId)\n\tscaleLayout(nodes, new Map(), [], LAYOUT_SCALE)\n\treturn { nodes }\n}\n\n/** Convert a parsed Mermaid mindmap into a tldraw blueprint of nodes and edges. */\nexport function mindmapToBlueprint(\n\tlayout: ParsedMindmapLayout,\n\tmindmapTree: MindmapNode,\n\tsvgRoot: Element\n): DiagramMermaidBlueprint {\n\tconst flatNodes: FlatNode[] = []\n\tflattenMindmapTree(mindmapTree, undefined, flatNodes)\n\n\tconst { nodes: svgNodes } = layout\n\n\tconst nodeColors = new Map<string, TLDefaultColorStyle>()\n\tfor (const el of svgRoot.querySelectorAll('.node')) {\n\t\tconst rawId = el.getAttribute('id') || ''\n\t\tconst id = parseMindmapNodeId(rawId)\n\t\tconst shape =\n\t\t\tel.querySelector('rect, circle, ellipse, polygon, path') ??\n\t\t\tel.querySelector('.label-container')\n\t\tif (shape) {\n\t\t\tconst parsed = parseRgbToTldrawColor(getComputedStyle(shape as Element).fill)\n\t\t\tif (parsed) nodeColors.set(id, parsed.color)\n\t\t}\n\t}\n\n\tconst nodes: MermaidBlueprintGeoNode[] = []\n\tconst edges: MermaidBlueprintEdge[] = []\n\tconst levelById = new Map(flatNodes.map((n) => [n.id, n.level]))\n\n\tfor (const flatNode of flatNodes) {\n\t\tconst svgNode = svgNodes.get(flatNode.id)\n\t\tif (!svgNode) continue\n\n\t\tconst geo = mapMindmapTypeToGeo(flatNode.type)\n\t\tconst color = nodeColors.get(flatNode.id) ?? 'black'\n\n\t\tlet { width: w, height: h } = svgNode\n\t\tif (flatNode.type === MINDMAP_NODE_TYPE.CIRCLE) {\n\t\t\tw = h = Math.max(w, h)\n\t\t}\n\n\t\tnodes.push({\n\t\t\tid: flatNode.id,\n\t\t\tx: svgNode.center.x - w / 2,\n\t\t\ty: svgNode.center.y - h / 2,\n\t\t\tw,\n\t\t\th,\n\t\t\tgeo,\n\t\t\tlabel: flatNode.label || undefined,\n\t\t\tfill: 'solid',\n\t\t\tcolor,\n\t\t\tsize: flatNode.isRoot ? 'l' : 'm',\n\t\t\talign: 'middle',\n\t\t\tverticalAlign: 'middle',\n\t\t})\n\n\t\t// Edge from parent to this node\n\t\tif (flatNode.parentId) {\n\t\t\tconst parentLevel = levelById.get(flatNode.parentId) ?? 0\n\t\t\tedges.push({\n\t\t\t\tstartNodeId: flatNode.parentId,\n\t\t\t\tendNodeId: flatNode.id,\n\t\t\t\tbend: 0,\n\t\t\t\tarrowheadEnd: 'none',\n\t\t\t\tarrowheadStart: 'none',\n\t\t\t\tsize: getEdgeSizeForLevel(parentLevel),\n\t\t\t\tcolor,\n\t\t\t})\n\t\t}\n\t}\n\n\tconst nodeIds = new Set(nodes.map((n) => n.id))\n\tconst validEdges = edges.filter((e) => nodeIds.has(e.startNodeId) && nodeIds.has(e.endNodeId))\n\treturn { nodes, edges: validEdges }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { MindmapNode } from 'mermaid/dist/diagrams/mindmap/mindmapTypes.js'\nimport type { TLDefaultColorStyle, TLDefaultSizeStyle, TLGeoShapeGeoStyle } from 'tldraw'\nimport type {\n\tDiagramMermaidBlueprint,\n\tMermaidBlueprintEdge,\n\tMermaidBlueprintGeoNode,\n} from './blueprint'\nimport { parseRgbToTldrawColor } from './colors'\nimport { parseNodesFromSvg, scaleLayout } from './svgParsing'\nimport type { ParsedNode } from './svgParsing'\nimport { LAYOUT_SCALE } from './utils'\n\nconst MINDMAP_NODE_TYPE = {\n\tDEFAULT: 0,\n\tROUNDED_RECT: 1,\n\tRECT: 2,\n\tCIRCLE: 3,\n\tCLOUD: 4,\n\tBANG: 5,\n\tHEXAGON: 6,\n} as const\n\nfunction mapMindmapTypeToGeo(type: number): TLGeoShapeGeoStyle {\n\tswitch (type) {\n\t\tcase MINDMAP_NODE_TYPE.CIRCLE:\n\t\t\treturn 'ellipse'\n\t\tcase MINDMAP_NODE_TYPE.CLOUD:\n\t\t\treturn 'cloud'\n\t\tcase MINDMAP_NODE_TYPE.HEXAGON:\n\t\t\treturn 'hexagon'\n\t\tcase MINDMAP_NODE_TYPE.BANG:\n\t\t\treturn 'star'\n\t\tcase MINDMAP_NODE_TYPE.RECT:\n\t\tcase MINDMAP_NODE_TYPE.ROUNDED_RECT:\n\t\tcase MINDMAP_NODE_TYPE.DEFAULT:\n\t\tdefault:\n\t\t\treturn 'rectangle'\n\t}\n}\n\nfunction getEdgeSizeForLevel(parentLevel: number): TLDefaultSizeStyle {\n\tif (parentLevel <= 0) return 'l'\n\tif (parentLevel === 1) return 'm'\n\treturn 's'\n}\n\ninterface FlatNode {\n\tid: string\n\tlabel: string\n\ttype: number\n\tlevel: number\n\tparentId: string | undefined\n\tsection: number | undefined\n\tisRoot: boolean\n}\n\nfunction flattenMindmapTree(\n\tnode: MindmapNode,\n\tparentId: string | undefined,\n\tout: FlatNode[]\n): void {\n\tout.push({\n\t\tid: String(node.id),\n\t\tlabel: node.descr,\n\t\ttype: node.type,\n\t\tlevel: node.level,\n\t\tparentId,\n\t\tsection: node.section,\n\t\tisRoot: !!node.isRoot,\n\t})\n\tfor (const child of node.children) {\n\t\tflattenMindmapTree(child, String(node.id), out)\n\t}\n}\n\n/**\n * Pre-parsed SVG layout for mindmap diagram converters.\n * Contains already-scaled node positions extracted from the SVG.\n */\nexport interface ParsedMindmapLayout {\n\tnodes: Map<string, ParsedNode>\n}\n\nfunction parseMindmapNodeId(domId: string): string {\n\tconst match = domId.match(/^node_(\\d+)$/)\n\treturn match ? match[1] : domId\n}\n\n/** Parse mindmap-specific SVG layout data for use by {@link mindmapToBlueprint}. */\nexport function parseMindmapLayout(root: Element): ParsedMindmapLayout {\n\tconst nodes = parseNodesFromSvg(root, '.node', parseMindmapNodeId)\n\tscaleLayout(nodes, new Map(), [], LAYOUT_SCALE)\n\treturn { nodes }\n}\n\n/** Convert a parsed Mermaid mindmap into a tldraw blueprint of nodes and edges. */\nexport function mindmapToBlueprint(\n\tlayout: ParsedMindmapLayout,\n\tmindmapTree: MindmapNode,\n\tsvgRoot: Element\n): DiagramMermaidBlueprint {\n\tconst flatNodes: FlatNode[] = []\n\tflattenMindmapTree(mindmapTree, undefined, flatNodes)\n\n\tconst { nodes: svgNodes } = layout\n\n\tconst nodeColors = new Map<string, TLDefaultColorStyle>()\n\tfor (const el of svgRoot.querySelectorAll('.node')) {\n\t\tconst rawId = el.getAttribute('id') || ''\n\t\tconst id = parseMindmapNodeId(rawId)\n\t\tconst shape =\n\t\t\tel.querySelector('rect, circle, ellipse, polygon, path') ??\n\t\t\tel.querySelector('.label-container')\n\t\tif (shape) {\n\t\t\tconst parsed = parseRgbToTldrawColor(getComputedStyle(shape as Element).fill)\n\t\t\tif (parsed) nodeColors.set(id, parsed.color)\n\t\t}\n\t}\n\n\tconst nodes: MermaidBlueprintGeoNode[] = []\n\tconst edges: MermaidBlueprintEdge[] = []\n\tconst levelById = new Map(flatNodes.map((n) => [n.id, n.level]))\n\n\tfor (const flatNode of flatNodes) {\n\t\tconst svgNode = svgNodes.get(flatNode.id)\n\t\tif (!svgNode) continue\n\n\t\tconst geo = mapMindmapTypeToGeo(flatNode.type)\n\t\tconst color = nodeColors.get(flatNode.id) ?? 'black'\n\n\t\tlet { width: w, height: h } = svgNode\n\t\tif (flatNode.type === MINDMAP_NODE_TYPE.CIRCLE) {\n\t\t\tw = h = Math.max(w, h)\n\t\t}\n\n\t\tnodes.push({\n\t\t\tid: flatNode.id,\n\t\t\tx: svgNode.center.x - w / 2,\n\t\t\ty: svgNode.center.y - h / 2,\n\t\t\tw,\n\t\t\th,\n\t\t\tgeo,\n\t\t\tlabel: flatNode.label || undefined,\n\t\t\tfill: 'solid',\n\t\t\tcolor,\n\t\t\tsize: flatNode.isRoot ? 'l' : 'm',\n\t\t\talign: 'middle',\n\t\t\tverticalAlign: 'middle',\n\t\t})\n\n\t\t// Edge from parent to this node\n\t\tif (flatNode.parentId) {\n\t\t\tconst parentLevel = levelById.get(flatNode.parentId) ?? 0\n\t\t\tedges.push({\n\t\t\t\tstartNodeId: flatNode.parentId,\n\t\t\t\tendNodeId: flatNode.id,\n\t\t\t\tbend: 0,\n\t\t\t\tarrowheadEnd: 'none',\n\t\t\t\tarrowheadStart: 'none',\n\t\t\t\tsize: getEdgeSizeForLevel(parentLevel),\n\t\t\t\tcolor,\n\t\t\t})\n\t\t}\n\t}\n\n\tconst nodeIds = new Set(nodes.map((n) => n.id))\n\tconst validEdges = edges.filter((e) => nodeIds.has(e.startNodeId) && nodeIds.has(e.endNodeId))\n\treturn { nodes, edges: validEdges }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -3,7 +3,7 @@ import { createMermaidDiagram, MermaidDiagramError } from "./createMermaidDiagra
3
3
  import { renderBlueprint } from "./renderBlueprint.mjs";
4
4
  registerTldrawLibraryVersion(
5
5
  "@tldraw/mermaid",
6
- "4.6.0-internal.e29318c66fb0",
6
+ "4.6.0-next.0eb36d65eec3",
7
7
  "esm"
8
8
  );
9
9
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/mindmapDiagram.ts"],
4
- "sourcesContent": ["import type { MindmapNode } from 'mermaid/dist/diagrams/mindmap/mindmapTypes.js'\nimport type { TLDefaultColorStyle, TLDefaultSizeStyle, TLGeoShapeGeoStyle } from 'tldraw'\nimport type {\n\tDiagramMermaidBlueprint,\n\tMermaidBlueprintEdge,\n\tMermaidBlueprintGeoNode,\n} from './blueprint'\nimport { parseRgbToTldrawColor } from './colors'\nimport type { ParsedNode } from './svgParsing'\nimport { parseNodesFromSvg, scaleLayout } from './svgParsing'\nimport { LAYOUT_SCALE } from './utils'\n\nconst MINDMAP_NODE_TYPE = {\n\tDEFAULT: 0,\n\tROUNDED_RECT: 1,\n\tRECT: 2,\n\tCIRCLE: 3,\n\tCLOUD: 4,\n\tBANG: 5,\n\tHEXAGON: 6,\n} as const\n\nfunction mapMindmapTypeToGeo(type: number): TLGeoShapeGeoStyle {\n\tswitch (type) {\n\t\tcase MINDMAP_NODE_TYPE.CIRCLE:\n\t\t\treturn 'ellipse'\n\t\tcase MINDMAP_NODE_TYPE.CLOUD:\n\t\t\treturn 'cloud'\n\t\tcase MINDMAP_NODE_TYPE.HEXAGON:\n\t\t\treturn 'hexagon'\n\t\tcase MINDMAP_NODE_TYPE.BANG:\n\t\t\treturn 'star'\n\t\tcase MINDMAP_NODE_TYPE.RECT:\n\t\tcase MINDMAP_NODE_TYPE.ROUNDED_RECT:\n\t\tcase MINDMAP_NODE_TYPE.DEFAULT:\n\t\tdefault:\n\t\t\treturn 'rectangle'\n\t}\n}\n\nfunction getEdgeSizeForLevel(parentLevel: number): TLDefaultSizeStyle {\n\tif (parentLevel <= 0) return 'l'\n\tif (parentLevel === 1) return 'm'\n\treturn 's'\n}\n\ninterface FlatNode {\n\tid: string\n\tlabel: string\n\ttype: number\n\tlevel: number\n\tparentId: string | undefined\n\tsection: number | undefined\n\tisRoot: boolean\n}\n\nfunction flattenMindmapTree(\n\tnode: MindmapNode,\n\tparentId: string | undefined,\n\tout: FlatNode[]\n): void {\n\tout.push({\n\t\tid: String(node.id),\n\t\tlabel: node.descr,\n\t\ttype: node.type,\n\t\tlevel: node.level,\n\t\tparentId,\n\t\tsection: node.section,\n\t\tisRoot: !!node.isRoot,\n\t})\n\tfor (const child of node.children) {\n\t\tflattenMindmapTree(child, String(node.id), out)\n\t}\n}\n\n/**\n * Pre-parsed SVG layout for mindmap diagram converters.\n * Contains already-scaled node positions extracted from the SVG.\n */\nexport interface ParsedMindmapLayout {\n\tnodes: Map<string, ParsedNode>\n}\n\nfunction parseMindmapNodeId(domId: string): string {\n\tconst match = domId.match(/^node_(\\d+)$/)\n\treturn match ? match[1] : domId\n}\n\n/** Parse mindmap-specific SVG layout data for use by {@link mindmapToBlueprint}. */\nexport function parseMindmapLayout(root: Element): ParsedMindmapLayout {\n\tconst nodes = parseNodesFromSvg(root, '.node', parseMindmapNodeId)\n\tscaleLayout(nodes, new Map(), [], LAYOUT_SCALE)\n\treturn { nodes }\n}\n\n/** Convert a parsed Mermaid mindmap into a tldraw blueprint of nodes and edges. */\nexport function mindmapToBlueprint(\n\tlayout: ParsedMindmapLayout,\n\tmindmapTree: MindmapNode,\n\tsvgRoot: Element\n): DiagramMermaidBlueprint {\n\tconst flatNodes: FlatNode[] = []\n\tflattenMindmapTree(mindmapTree, undefined, flatNodes)\n\n\tconst { nodes: svgNodes } = layout\n\n\tconst nodeColors = new Map<string, TLDefaultColorStyle>()\n\tfor (const el of svgRoot.querySelectorAll('.node')) {\n\t\tconst rawId = el.getAttribute('id') || ''\n\t\tconst id = parseMindmapNodeId(rawId)\n\t\tconst shape =\n\t\t\tel.querySelector('rect, circle, ellipse, polygon, path') ??\n\t\t\tel.querySelector('.label-container')\n\t\tif (shape) {\n\t\t\tconst parsed = parseRgbToTldrawColor(getComputedStyle(shape as Element).fill)\n\t\t\tif (parsed) nodeColors.set(id, parsed.color)\n\t\t}\n\t}\n\n\tconst nodes: MermaidBlueprintGeoNode[] = []\n\tconst edges: MermaidBlueprintEdge[] = []\n\tconst levelById = new Map(flatNodes.map((n) => [n.id, n.level]))\n\n\tfor (const flatNode of flatNodes) {\n\t\tconst svgNode = svgNodes.get(flatNode.id)\n\t\tif (!svgNode) continue\n\n\t\tconst geo = mapMindmapTypeToGeo(flatNode.type)\n\t\tconst color = nodeColors.get(flatNode.id) ?? 'black'\n\n\t\tlet { width: w, height: h } = svgNode\n\t\tif (flatNode.type === MINDMAP_NODE_TYPE.CIRCLE) {\n\t\t\tw = h = Math.max(w, h)\n\t\t}\n\n\t\tnodes.push({\n\t\t\tid: flatNode.id,\n\t\t\tx: svgNode.center.x - w / 2,\n\t\t\ty: svgNode.center.y - h / 2,\n\t\t\tw,\n\t\t\th,\n\t\t\tgeo,\n\t\t\tlabel: flatNode.label || undefined,\n\t\t\tfill: 'solid',\n\t\t\tcolor,\n\t\t\tsize: flatNode.isRoot ? 'l' : 'm',\n\t\t\talign: 'middle',\n\t\t\tverticalAlign: 'middle',\n\t\t})\n\n\t\t// Edge from parent to this node\n\t\tif (flatNode.parentId) {\n\t\t\tconst parentLevel = levelById.get(flatNode.parentId) ?? 0\n\t\t\tedges.push({\n\t\t\t\tstartNodeId: flatNode.parentId,\n\t\t\t\tendNodeId: flatNode.id,\n\t\t\t\tbend: 0,\n\t\t\t\tarrowheadEnd: 'none',\n\t\t\t\tarrowheadStart: 'none',\n\t\t\t\tsize: getEdgeSizeForLevel(parentLevel),\n\t\t\t\tcolor,\n\t\t\t})\n\t\t}\n\t}\n\n\tconst nodeIds = new Set(nodes.map((n) => n.id))\n\tconst validEdges = edges.filter((e) => nodeIds.has(e.startNodeId) && nodeIds.has(e.endNodeId))\n\treturn { nodes, edges: validEdges }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { MindmapNode } from 'mermaid/dist/diagrams/mindmap/mindmapTypes.js'\nimport type { TLDefaultColorStyle, TLDefaultSizeStyle, TLGeoShapeGeoStyle } from 'tldraw'\nimport type {\n\tDiagramMermaidBlueprint,\n\tMermaidBlueprintEdge,\n\tMermaidBlueprintGeoNode,\n} from './blueprint'\nimport { parseRgbToTldrawColor } from './colors'\nimport { parseNodesFromSvg, scaleLayout } from './svgParsing'\nimport type { ParsedNode } from './svgParsing'\nimport { LAYOUT_SCALE } from './utils'\n\nconst MINDMAP_NODE_TYPE = {\n\tDEFAULT: 0,\n\tROUNDED_RECT: 1,\n\tRECT: 2,\n\tCIRCLE: 3,\n\tCLOUD: 4,\n\tBANG: 5,\n\tHEXAGON: 6,\n} as const\n\nfunction mapMindmapTypeToGeo(type: number): TLGeoShapeGeoStyle {\n\tswitch (type) {\n\t\tcase MINDMAP_NODE_TYPE.CIRCLE:\n\t\t\treturn 'ellipse'\n\t\tcase MINDMAP_NODE_TYPE.CLOUD:\n\t\t\treturn 'cloud'\n\t\tcase MINDMAP_NODE_TYPE.HEXAGON:\n\t\t\treturn 'hexagon'\n\t\tcase MINDMAP_NODE_TYPE.BANG:\n\t\t\treturn 'star'\n\t\tcase MINDMAP_NODE_TYPE.RECT:\n\t\tcase MINDMAP_NODE_TYPE.ROUNDED_RECT:\n\t\tcase MINDMAP_NODE_TYPE.DEFAULT:\n\t\tdefault:\n\t\t\treturn 'rectangle'\n\t}\n}\n\nfunction getEdgeSizeForLevel(parentLevel: number): TLDefaultSizeStyle {\n\tif (parentLevel <= 0) return 'l'\n\tif (parentLevel === 1) return 'm'\n\treturn 's'\n}\n\ninterface FlatNode {\n\tid: string\n\tlabel: string\n\ttype: number\n\tlevel: number\n\tparentId: string | undefined\n\tsection: number | undefined\n\tisRoot: boolean\n}\n\nfunction flattenMindmapTree(\n\tnode: MindmapNode,\n\tparentId: string | undefined,\n\tout: FlatNode[]\n): void {\n\tout.push({\n\t\tid: String(node.id),\n\t\tlabel: node.descr,\n\t\ttype: node.type,\n\t\tlevel: node.level,\n\t\tparentId,\n\t\tsection: node.section,\n\t\tisRoot: !!node.isRoot,\n\t})\n\tfor (const child of node.children) {\n\t\tflattenMindmapTree(child, String(node.id), out)\n\t}\n}\n\n/**\n * Pre-parsed SVG layout for mindmap diagram converters.\n * Contains already-scaled node positions extracted from the SVG.\n */\nexport interface ParsedMindmapLayout {\n\tnodes: Map<string, ParsedNode>\n}\n\nfunction parseMindmapNodeId(domId: string): string {\n\tconst match = domId.match(/^node_(\\d+)$/)\n\treturn match ? match[1] : domId\n}\n\n/** Parse mindmap-specific SVG layout data for use by {@link mindmapToBlueprint}. */\nexport function parseMindmapLayout(root: Element): ParsedMindmapLayout {\n\tconst nodes = parseNodesFromSvg(root, '.node', parseMindmapNodeId)\n\tscaleLayout(nodes, new Map(), [], LAYOUT_SCALE)\n\treturn { nodes }\n}\n\n/** Convert a parsed Mermaid mindmap into a tldraw blueprint of nodes and edges. */\nexport function mindmapToBlueprint(\n\tlayout: ParsedMindmapLayout,\n\tmindmapTree: MindmapNode,\n\tsvgRoot: Element\n): DiagramMermaidBlueprint {\n\tconst flatNodes: FlatNode[] = []\n\tflattenMindmapTree(mindmapTree, undefined, flatNodes)\n\n\tconst { nodes: svgNodes } = layout\n\n\tconst nodeColors = new Map<string, TLDefaultColorStyle>()\n\tfor (const el of svgRoot.querySelectorAll('.node')) {\n\t\tconst rawId = el.getAttribute('id') || ''\n\t\tconst id = parseMindmapNodeId(rawId)\n\t\tconst shape =\n\t\t\tel.querySelector('rect, circle, ellipse, polygon, path') ??\n\t\t\tel.querySelector('.label-container')\n\t\tif (shape) {\n\t\t\tconst parsed = parseRgbToTldrawColor(getComputedStyle(shape as Element).fill)\n\t\t\tif (parsed) nodeColors.set(id, parsed.color)\n\t\t}\n\t}\n\n\tconst nodes: MermaidBlueprintGeoNode[] = []\n\tconst edges: MermaidBlueprintEdge[] = []\n\tconst levelById = new Map(flatNodes.map((n) => [n.id, n.level]))\n\n\tfor (const flatNode of flatNodes) {\n\t\tconst svgNode = svgNodes.get(flatNode.id)\n\t\tif (!svgNode) continue\n\n\t\tconst geo = mapMindmapTypeToGeo(flatNode.type)\n\t\tconst color = nodeColors.get(flatNode.id) ?? 'black'\n\n\t\tlet { width: w, height: h } = svgNode\n\t\tif (flatNode.type === MINDMAP_NODE_TYPE.CIRCLE) {\n\t\t\tw = h = Math.max(w, h)\n\t\t}\n\n\t\tnodes.push({\n\t\t\tid: flatNode.id,\n\t\t\tx: svgNode.center.x - w / 2,\n\t\t\ty: svgNode.center.y - h / 2,\n\t\t\tw,\n\t\t\th,\n\t\t\tgeo,\n\t\t\tlabel: flatNode.label || undefined,\n\t\t\tfill: 'solid',\n\t\t\tcolor,\n\t\t\tsize: flatNode.isRoot ? 'l' : 'm',\n\t\t\talign: 'middle',\n\t\t\tverticalAlign: 'middle',\n\t\t})\n\n\t\t// Edge from parent to this node\n\t\tif (flatNode.parentId) {\n\t\t\tconst parentLevel = levelById.get(flatNode.parentId) ?? 0\n\t\t\tedges.push({\n\t\t\t\tstartNodeId: flatNode.parentId,\n\t\t\t\tendNodeId: flatNode.id,\n\t\t\t\tbend: 0,\n\t\t\t\tarrowheadEnd: 'none',\n\t\t\t\tarrowheadStart: 'none',\n\t\t\t\tsize: getEdgeSizeForLevel(parentLevel),\n\t\t\t\tcolor,\n\t\t\t})\n\t\t}\n\t}\n\n\tconst nodeIds = new Set(nodes.map((n) => n.id))\n\tconst validEdges = edges.filter((e) => nodeIds.has(e.startNodeId) && nodeIds.has(e.endNodeId))\n\treturn { nodes, edges: validEdges }\n}\n"],
5
+ "mappings": "AAOA,SAAS,6BAA6B;AACtC,SAAS,mBAAmB,mBAAmB;AAE/C,SAAS,oBAAoB;AAE7B,MAAM,oBAAoB;AAAA,EACzB,SAAS;AAAA,EACT,cAAc;AAAA,EACd,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AACV;AAEA,SAAS,oBAAoB,MAAkC;AAC9D,UAAQ,MAAM;AAAA,IACb,KAAK,kBAAkB;AACtB,aAAO;AAAA,IACR,KAAK,kBAAkB;AACtB,aAAO;AAAA,IACR,KAAK,kBAAkB;AACtB,aAAO;AAAA,IACR,KAAK,kBAAkB;AACtB,aAAO;AAAA,IACR,KAAK,kBAAkB;AAAA,IACvB,KAAK,kBAAkB;AAAA,IACvB,KAAK,kBAAkB;AAAA,IACvB;AACC,aAAO;AAAA,EACT;AACD;AAEA,SAAS,oBAAoB,aAAyC;AACrE,MAAI,eAAe,EAAG,QAAO;AAC7B,MAAI,gBAAgB,EAAG,QAAO;AAC9B,SAAO;AACR;AAYA,SAAS,mBACR,MACA,UACA,KACO;AACP,MAAI,KAAK;AAAA,IACR,IAAI,OAAO,KAAK,EAAE;AAAA,IAClB,OAAO,KAAK;AAAA,IACZ,MAAM,KAAK;AAAA,IACX,OAAO,KAAK;AAAA,IACZ;AAAA,IACA,SAAS,KAAK;AAAA,IACd,QAAQ,CAAC,CAAC,KAAK;AAAA,EAChB,CAAC;AACD,aAAW,SAAS,KAAK,UAAU;AAClC,uBAAmB,OAAO,OAAO,KAAK,EAAE,GAAG,GAAG;AAAA,EAC/C;AACD;AAUA,SAAS,mBAAmB,OAAuB;AAClD,QAAM,QAAQ,MAAM,MAAM,cAAc;AACxC,SAAO,QAAQ,MAAM,CAAC,IAAI;AAC3B;AAGO,SAAS,mBAAmB,MAAoC;AACtE,QAAM,QAAQ,kBAAkB,MAAM,SAAS,kBAAkB;AACjE,cAAY,OAAO,oBAAI,IAAI,GAAG,CAAC,GAAG,YAAY;AAC9C,SAAO,EAAE,MAAM;AAChB;AAGO,SAAS,mBACf,QACA,aACA,SAC0B;AAC1B,QAAM,YAAwB,CAAC;AAC/B,qBAAmB,aAAa,QAAW,SAAS;AAEpD,QAAM,EAAE,OAAO,SAAS,IAAI;AAE5B,QAAM,aAAa,oBAAI,IAAiC;AACxD,aAAW,MAAM,QAAQ,iBAAiB,OAAO,GAAG;AACnD,UAAM,QAAQ,GAAG,aAAa,IAAI,KAAK;AACvC,UAAM,KAAK,mBAAmB,KAAK;AACnC,UAAM,QACL,GAAG,cAAc,sCAAsC,KACvD,GAAG,cAAc,kBAAkB;AACpC,QAAI,OAAO;AACV,YAAM,SAAS,sBAAsB,iBAAiB,KAAgB,EAAE,IAAI;AAC5E,UAAI,OAAQ,YAAW,IAAI,IAAI,OAAO,KAAK;AAAA,IAC5C;AAAA,EACD;AAEA,QAAM,QAAmC,CAAC;AAC1C,QAAM,QAAgC,CAAC;AACvC,QAAM,YAAY,IAAI,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAE/D,aAAW,YAAY,WAAW;AACjC,UAAM,UAAU,SAAS,IAAI,SAAS,EAAE;AACxC,QAAI,CAAC,QAAS;AAEd,UAAM,MAAM,oBAAoB,SAAS,IAAI;AAC7C,UAAM,QAAQ,WAAW,IAAI,SAAS,EAAE,KAAK;AAE7C,QAAI,EAAE,OAAO,GAAG,QAAQ,EAAE,IAAI;AAC9B,QAAI,SAAS,SAAS,kBAAkB,QAAQ;AAC/C,UAAI,IAAI,KAAK,IAAI,GAAG,CAAC;AAAA,IACtB;AAEA,UAAM,KAAK;AAAA,MACV,IAAI,SAAS;AAAA,MACb,GAAG,QAAQ,OAAO,IAAI,IAAI;AAAA,MAC1B,GAAG,QAAQ,OAAO,IAAI,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,SAAS,SAAS;AAAA,MACzB,MAAM;AAAA,MACN;AAAA,MACA,MAAM,SAAS,SAAS,MAAM;AAAA,MAC9B,OAAO;AAAA,MACP,eAAe;AAAA,IAChB,CAAC;AAGD,QAAI,SAAS,UAAU;AACtB,YAAM,cAAc,UAAU,IAAI,SAAS,QAAQ,KAAK;AACxD,YAAM,KAAK;AAAA,QACV,aAAa,SAAS;AAAA,QACtB,WAAW,SAAS;AAAA,QACpB,MAAM;AAAA,QACN,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,MAAM,oBAAoB,WAAW;AAAA,QACrC;AAAA,MACD,CAAC;AAAA,IACF;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;AAC9C,QAAM,aAAa,MAAM,OAAO,CAAC,MAAM,QAAQ,IAAI,EAAE,WAAW,KAAK,QAAQ,IAAI,EAAE,SAAS,CAAC;AAC7F,SAAO,EAAE,OAAO,OAAO,WAAW;AACnC;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tldraw/mermaid",
3
3
  "description": "Mermaid diagram to tldraw shape conversion.",
4
- "version": "4.6.0-internal.e29318c66fb0",
4
+ "version": "4.6.0-next.0eb36d65eec3",
5
5
  "author": {
6
6
  "name": "tldraw Inc.",
7
7
  "email": "hello@tldraw.com"
@@ -40,14 +40,14 @@
40
40
  "lint": "cd ../.. && yarn run -T oxlint packages/mermaid"
41
41
  },
42
42
  "dependencies": {
43
- "@tldraw/tlschema": "4.6.0-internal.e29318c66fb0",
44
- "@tldraw/utils": "4.6.0-internal.e29318c66fb0",
43
+ "@tldraw/tlschema": "4.6.0-next.0eb36d65eec3",
44
+ "@tldraw/utils": "4.6.0-next.0eb36d65eec3",
45
45
  "mermaid": "11.12.2"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "react": "^18.2.0 || ^19.2.1",
49
49
  "react-dom": "^18.2.0 || ^19.2.1",
50
- "tldraw": "4.6.0-internal.e29318c66fb0"
50
+ "tldraw": "4.6.0-next.0eb36d65eec3"
51
51
  },
52
52
  "devDependencies": {
53
53
  "lazyrepo": "0.0.0-alpha.27",
@@ -6,8 +6,8 @@ import type {
6
6
  MermaidBlueprintGeoNode,
7
7
  } from './blueprint'
8
8
  import { parseRgbToTldrawColor } from './colors'
9
- import type { ParsedNode } from './svgParsing'
10
9
  import { parseNodesFromSvg, scaleLayout } from './svgParsing'
10
+ import type { ParsedNode } from './svgParsing'
11
11
  import { LAYOUT_SCALE } from './utils'
12
12
 
13
13
  const MINDMAP_NODE_TYPE = {