@tldraw/mermaid 4.6.0-internal.c7df3c92455a
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/dist-cjs/blueprint.js +17 -0
- package/dist-cjs/blueprint.js.map +7 -0
- package/dist-cjs/colors.js +173 -0
- package/dist-cjs/colors.js.map +7 -0
- package/dist-cjs/createMermaidDiagram.js +144 -0
- package/dist-cjs/createMermaidDiagram.js.map +7 -0
- package/dist-cjs/flowchartDiagram.js +202 -0
- package/dist-cjs/flowchartDiagram.js.map +7 -0
- package/dist-cjs/index.d.ts +114 -0
- package/dist-cjs/index.js +34 -0
- package/dist-cjs/index.js.map +7 -0
- package/dist-cjs/renderBlueprint.js +314 -0
- package/dist-cjs/renderBlueprint.js.map +7 -0
- package/dist-cjs/sequenceDiagram.js +686 -0
- package/dist-cjs/sequenceDiagram.js.map +7 -0
- package/dist-cjs/stateDiagram.js +373 -0
- package/dist-cjs/stateDiagram.js.map +7 -0
- package/dist-cjs/svgParsing.js +187 -0
- package/dist-cjs/svgParsing.js.map +7 -0
- package/dist-cjs/utils.js +75 -0
- package/dist-cjs/utils.js.map +7 -0
- package/dist-esm/blueprint.mjs +1 -0
- package/dist-esm/blueprint.mjs.map +7 -0
- package/dist-esm/colors.mjs +153 -0
- package/dist-esm/colors.mjs.map +7 -0
- package/dist-esm/createMermaidDiagram.mjs +114 -0
- package/dist-esm/createMermaidDiagram.mjs.map +7 -0
- package/dist-esm/flowchartDiagram.mjs +188 -0
- package/dist-esm/flowchartDiagram.mjs.map +7 -0
- package/dist-esm/index.d.mts +114 -0
- package/dist-esm/index.mjs +14 -0
- package/dist-esm/index.mjs.map +7 -0
- package/dist-esm/renderBlueprint.mjs +298 -0
- package/dist-esm/renderBlueprint.mjs.map +7 -0
- package/dist-esm/sequenceDiagram.mjs +666 -0
- package/dist-esm/sequenceDiagram.mjs.map +7 -0
- package/dist-esm/stateDiagram.mjs +359 -0
- package/dist-esm/stateDiagram.mjs.map +7 -0
- package/dist-esm/svgParsing.mjs +167 -0
- package/dist-esm/svgParsing.mjs.map +7 -0
- package/dist-esm/utils.mjs +55 -0
- package/dist-esm/utils.mjs.map +7 -0
- package/package.json +62 -0
- package/src/blueprint.ts +75 -0
- package/src/colors.ts +215 -0
- package/src/createMermaidDiagram.test.ts +31 -0
- package/src/createMermaidDiagram.ts +155 -0
- package/src/flowchartDiagram.ts +232 -0
- package/src/index.ts +18 -0
- package/src/mermaidDiagrams.test.ts +880 -0
- package/src/renderBlueprint.ts +373 -0
- package/src/sequenceDiagram.ts +851 -0
- package/src/stateDiagram.ts +477 -0
- package/src/svgParsing.ts +240 -0
- package/src/utils.ts +73 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/renderBlueprint.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n\tcreateShapeId,\n\tEditor,\n\tIndexKey,\n\tTLGeoShape,\n\tTLLineShape,\n\tTLShapeId,\n\ttoRichText,\n\tVec,\n} from 'tldraw'\nimport type {\n\tDiagramMermaidBlueprint,\n\tMermaidBlueprintEdge,\n\tMermaidBlueprintGeoNode,\n\tMermaidBlueprintLineNode,\n} from './blueprint'\nimport { orderTopDown, sanitizeDiagramText } from './utils'\n\n/** @public */\nexport interface BlueprintRenderingOptions {\n\tcenterOnPosition?: boolean\n\tposition?: { x: number; y: number }\n}\n\nconst defaultBlueprintRenderingOptions = {\n\tcenterOnPosition: true,\n}\n\n/** @public */\nexport function renderBlueprint(\n\teditor: Editor,\n\tblueprint: DiagramMermaidBlueprint,\n\topts?: BlueprintRenderingOptions\n) {\n\tconst options = { ...defaultBlueprintRenderingOptions, ...(opts || {}) }\n\tconst { nodes, edges, lines } = blueprint\n\n\tconst bounds = computeBlueprintBounds(nodes, lines)\n\tconst center = options.position\n\t\t? options.position\n\t\t: editor.user.getIsPasteAtCursorMode()\n\t\t\t? editor.inputs.getCurrentPagePoint()\n\t\t\t: editor.getViewportPageBounds().center\n\tconst offsetX = options.centerOnPosition\n\t\t? center.x - (bounds.maxX + bounds.minX) / 2\n\t\t: center.x - bounds.minX\n\tconst offsetY = options.centerOnPosition\n\t\t? center.y - (bounds.maxY + bounds.minY) / 2\n\t\t: center.y - bounds.minY\n\n\tconst ordered = orderTopDown(\n\t\tnodes,\n\t\t(n) => n.id,\n\t\t(n) => n.parentId\n\t)\n\tconst nodeById = new Map(nodes.map((node) => [node.id, node]))\n\n\tconst shapeIds = new Map<string, TLShapeId>()\n\n\t// Lines first so nodes render on top (z-order = creation order in tldraw)\n\tif (lines) {\n\t\tfor (const line of lines) {\n\t\t\tconst lineId = createShapeId()\n\t\t\tshapeIds.set(line.id, lineId)\n\t\t\teditor.createShape<TLLineShape>({\n\t\t\t\tid: lineId,\n\t\t\t\ttype: 'line',\n\t\t\t\tx: offsetX + line.x,\n\t\t\t\ty: offsetY + line.y,\n\t\t\t\tprops: {\n\t\t\t\t\tdash: line.dash ?? 'solid',\n\t\t\t\t\tsize: line.size ?? 's',\n\t\t\t\t\tcolor: line.color ?? 'black',\n\t\t\t\t\tspline: 'line',\n\t\t\t\t\tpoints: {\n\t\t\t\t\t\ta1: { id: 'a1', index: 'a1' as IndexKey, x: 0, y: 0 },\n\t\t\t\t\t\ta2: { id: 'a2', index: 'a2' as IndexKey, x: line.endX ?? 0, y: line.endY },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t}\n\n\tfor (const node of ordered) {\n\t\tconst shapeId = createShapeId()\n\t\tshapeIds.set(node.id, shapeId)\n\n\t\tconst parent = node.parentId ? nodeById.get(node.parentId) : undefined\n\t\tconst parentShapeId = node.parentId ? shapeIds.get(node.parentId) : undefined\n\n\t\tconst absoluteX = offsetX + node.x\n\t\tconst absoluteY = offsetY + node.y\n\t\tconst x = parent ? absoluteX - (offsetX + parent.x) : absoluteX\n\t\tconst y = parent ? absoluteY - (offsetY + parent.y) : absoluteY\n\n\t\teditor.createShape<TLGeoShape>({\n\t\t\tid: shapeId,\n\t\t\ttype: 'geo',\n\t\t\tx,\n\t\t\ty,\n\t\t\tparentId: parentShapeId,\n\t\t\tprops: {\n\t\t\t\tgeo: node.geo,\n\t\t\t\tw: node.w,\n\t\t\t\th: node.h,\n\t\t\t\tfill: node.fill ?? 'none',\n\t\t\t\tcolor: node.color ?? 'black',\n\t\t\t\tdash: node.dash ?? 'draw',\n\t\t\t\tsize: node.size ?? 'm',\n\t\t\t\t...(node.label && { richText: toRichText(sanitizeDiagramText(node.label)) }),\n\t\t\t\t...(node.align && { align: node.align }),\n\t\t\t\t...(node.verticalAlign && { verticalAlign: node.verticalAlign }),\n\t\t\t},\n\t\t})\n\t}\n\n\tconst arrowIds: TLShapeId[] = []\n\tfor (const edge of edges) {\n\t\tconst arrowId = createArrowFromEdge(editor, edge, shapeIds)\n\t\tif (arrowId) arrowIds.push(arrowId)\n\t}\n\n\t// Create sub-groups and track which shape IDs are consumed by a group\n\tconst groupedIds = new Set<TLShapeId>()\n\tconst subGroupIds: TLShapeId[] = []\n\tif (blueprint.groups) {\n\t\tfor (const group of blueprint.groups) {\n\t\t\tconst members: TLShapeId[] = []\n\t\t\tfor (const blueprintId of group) {\n\t\t\t\tconst memberShapeId = shapeIds.get(blueprintId)\n\t\t\t\tif (memberShapeId) {\n\t\t\t\t\tmembers.push(memberShapeId)\n\t\t\t\t\tgroupedIds.add(memberShapeId)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (members.length > 1) {\n\t\t\t\teditor.groupShapes(members)\n\t\t\t\tconst first = editor.getShape(members[0])\n\t\t\t\tif (first && first.parentId !== editor.getCurrentPageId()) {\n\t\t\t\t\tsubGroupIds.push(first.parentId as TLShapeId)\n\t\t\t\t} else {\n\t\t\t\t\tsubGroupIds.push(members[0])\n\t\t\t\t}\n\t\t\t} else if (members.length === 1) {\n\t\t\t\tsubGroupIds.push(members[0])\n\t\t\t}\n\t\t}\n\t}\n\n\t// Collect ungrouped top-level IDs\n\tconst topLevelIds: TLShapeId[] = [...subGroupIds]\n\tfor (const node of nodes) {\n\t\tif (!node.parentId) {\n\t\t\tconst nodeShapeId = shapeIds.get(node.id)\n\t\t\tif (nodeShapeId && !groupedIds.has(nodeShapeId)) topLevelIds.push(nodeShapeId)\n\t\t}\n\t}\n\tif (lines) {\n\t\tfor (const line of lines) {\n\t\t\tconst lineShapeId = shapeIds.get(line.id)\n\t\t\tif (lineShapeId && !groupedIds.has(lineShapeId)) topLevelIds.push(lineShapeId)\n\t\t}\n\t}\n\ttopLevelIds.push(...arrowIds)\n\n\tlet rootShapeId: TLShapeId | undefined\n\tif (topLevelIds.length > 1) {\n\t\teditor.groupShapes(topLevelIds)\n\t\tconst first = editor.getShape(topLevelIds[0])\n\t\tif (first && first.parentId !== editor.getCurrentPageId()) {\n\t\t\trootShapeId = first.parentId as TLShapeId\n\t\t}\n\t} else if (topLevelIds.length === 1) {\n\t\trootShapeId = topLevelIds[0]\n\t}\n\n\tif (rootShapeId) {\n\t\tconst actualBounds = editor.getShapePageBounds(rootShapeId)\n\t\tif (actualBounds) {\n\t\t\tconst desiredX = options.centerOnPosition ? center.x - actualBounds.w / 2 : center.x\n\t\t\tconst desiredY = options.centerOnPosition ? center.y - actualBounds.h / 2 : center.y\n\t\t\tconst dx = desiredX - actualBounds.x\n\t\t\tconst dy = desiredY - actualBounds.y\n\t\t\tif (Math.abs(dx) > 0.5 || Math.abs(dy) > 0.5) {\n\t\t\t\tconst shape = editor.getShape(rootShapeId)!\n\t\t\t\teditor.updateShape({\n\t\t\t\t\tid: rootShapeId,\n\t\t\t\t\ttype: shape.type,\n\t\t\t\t\tx: shape.x + dx,\n\t\t\t\t\ty: shape.y + dy,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction makeArrowBinding(\n\tarrowId: TLShapeId,\n\ttargetId: TLShapeId,\n\tterminal: 'start' | 'end',\n\tanchor: { x: number; y: number },\n\tisExact: boolean,\n\tisPrecise: boolean\n) {\n\treturn {\n\t\tfromId: arrowId,\n\t\ttoId: targetId,\n\t\ttype: 'arrow' as const,\n\t\tprops: { terminal, normalizedAnchor: anchor, isExact, isPrecise },\n\t}\n}\n\nfunction createArrowFromEdge(\n\teditor: Editor,\n\tedge: MermaidBlueprintEdge,\n\tshapeIds: Map<string, TLShapeId>\n): TLShapeId | undefined {\n\tconst startShapeId = shapeIds.get(edge.startNodeId)\n\tconst endShapeId = shapeIds.get(edge.endNodeId)\n\tif (!startShapeId || !endShapeId) return undefined\n\n\tconst startBounds = editor.getShapePageBounds(startShapeId)\n\tconst endBounds = editor.getShapePageBounds(endShapeId)\n\tif (!startBounds || !endBounds) return undefined\n\n\tconst arrowId = createShapeId()\n\tconst isSelfLoop = startShapeId === endShapeId\n\tconst hasPreciseAnchors = edge.anchorStartY !== undefined || edge.anchorEndY !== undefined\n\n\tlet labelText = edge.label\n\tif (edge.decoration?.type === 'autonumber') {\n\t\tconst num = edge.decoration.value\n\t\tlabelText = labelText ? `${num} ${labelText}` : num\n\t}\n\n\tconst baseProps = {\n\t\tdash: edge.dash ?? ('solid' as const),\n\t\tsize: edge.size ?? ('s' as const),\n\t\tarrowheadEnd: edge.arrowheadEnd ?? ('arrow' as const),\n\t\t...(edge.arrowheadStart && { arrowheadStart: edge.arrowheadStart }),\n\t\tcolor: edge.color ?? ('black' as const),\n\t\t...(labelText && { richText: toRichText(sanitizeDiagramText(labelText)) }),\n\t}\n\n\tif (hasPreciseAnchors) {\n\t\tconst startAnchorY = edge.anchorStartY ?? 0.5\n\t\tconst endAnchorY = edge.anchorEndY ?? 0.5\n\t\tconst exactStart = edge.isExact ?? true\n\t\tconst preciseStart = edge.isPrecise ?? true\n\t\tconst exactEnd = edge.isExactEnd ?? exactStart\n\t\tconst preciseEnd = edge.isPreciseEnd ?? preciseStart\n\n\t\tconst startPoint = {\n\t\t\tx: startBounds.x + startBounds.w * 0.5,\n\t\t\ty: startBounds.y + startBounds.h * startAnchorY,\n\t\t}\n\t\tconst endPoint = {\n\t\t\tx: endBounds.x + endBounds.w * 0.5,\n\t\t\ty: endBounds.y + endBounds.h * endAnchorY,\n\t\t}\n\t\tconst origin = {\n\t\t\tx: Math.min(startPoint.x, endPoint.x),\n\t\t\ty: Math.min(startPoint.y, endPoint.y),\n\t\t}\n\n\t\teditor.run(() => {\n\t\t\teditor.createShape({\n\t\t\t\tid: arrowId,\n\t\t\t\ttype: 'arrow',\n\t\t\t\tx: origin.x,\n\t\t\t\ty: origin.y,\n\t\t\t\tprops: {\n\t\t\t\t\t...baseProps,\n\t\t\t\t\tstart: { x: startPoint.x - origin.x, y: startPoint.y - origin.y },\n\t\t\t\t\tend: { x: endPoint.x - origin.x, y: endPoint.y - origin.y },\n\t\t\t\t\tbend: edge.bend,\n\t\t\t\t},\n\t\t\t})\n\t\t\teditor.createBindings([\n\t\t\t\tmakeArrowBinding(\n\t\t\t\t\tarrowId,\n\t\t\t\t\tstartShapeId,\n\t\t\t\t\t'start',\n\t\t\t\t\t{ x: 0.5, y: startAnchorY },\n\t\t\t\t\texactStart,\n\t\t\t\t\tpreciseStart\n\t\t\t\t),\n\t\t\t\tmakeArrowBinding(\n\t\t\t\t\tarrowId,\n\t\t\t\t\tendShapeId,\n\t\t\t\t\t'end',\n\t\t\t\t\t{ x: 0.5, y: endAnchorY },\n\t\t\t\t\texactEnd,\n\t\t\t\t\tpreciseEnd\n\t\t\t\t),\n\t\t\t])\n\t\t})\n\t\treturn arrowId\n\t}\n\n\tif (isSelfLoop) {\n\t\teditor.run(() => {\n\t\t\teditor.createShape({\n\t\t\t\tid: arrowId,\n\t\t\t\ttype: 'arrow',\n\t\t\t\tx: startBounds.x,\n\t\t\t\ty: startBounds.y,\n\t\t\t\tprops: {\n\t\t\t\t\t...baseProps,\n\t\t\t\t\tstart: { x: startBounds.w / 2, y: 0 },\n\t\t\t\t\tend: { x: startBounds.w, y: startBounds.h / 2 },\n\t\t\t\t\tbend: -80,\n\t\t\t\t},\n\t\t\t})\n\t\t\teditor.createBindings([\n\t\t\t\tmakeArrowBinding(arrowId, startShapeId, 'start', { x: 0.9, y: 0.5 }, false, false),\n\t\t\t\tmakeArrowBinding(arrowId, endShapeId, 'end', { x: 0.85, y: 0.8 }, false, false),\n\t\t\t])\n\t\t})\n\t\treturn arrowId\n\t}\n\n\tconst startCenter = startBounds.center\n\tconst endCenter = endBounds.center\n\tconst arrowOrigin = Vec.Min(startCenter, endCenter)\n\n\teditor.run(() => {\n\t\teditor.createShape({\n\t\t\tid: arrowId,\n\t\t\ttype: 'arrow',\n\t\t\tx: arrowOrigin.x,\n\t\t\ty: arrowOrigin.y,\n\t\t\tprops: {\n\t\t\t\t...baseProps,\n\t\t\t\tstart: { x: startCenter.x - arrowOrigin.x, y: startCenter.y - arrowOrigin.y },\n\t\t\t\tend: { x: endCenter.x - arrowOrigin.x, y: endCenter.y - arrowOrigin.y },\n\t\t\t\tbend: edge.bend,\n\t\t\t},\n\t\t})\n\t\teditor.createBindings([\n\t\t\tmakeArrowBinding(arrowId, startShapeId, 'start', { x: 0.5, y: 0.5 }, false, false),\n\t\t\tmakeArrowBinding(arrowId, endShapeId, 'end', { x: 0.5, y: 0.5 }, false, false),\n\t\t])\n\t})\n\n\treturn arrowId\n}\n\nfunction computeBlueprintBounds(\n\tnodes: MermaidBlueprintGeoNode[],\n\tlines?: MermaidBlueprintLineNode[]\n): { minX: number; minY: number; maxX: number; maxY: number } {\n\tlet minX = Infinity,\n\t\tminY = Infinity,\n\t\tmaxX = -Infinity,\n\t\tmaxY = -Infinity\n\tfor (const node of nodes) {\n\t\tif (node.parentId) continue\n\t\tminX = Math.min(minX, node.x)\n\t\tminY = Math.min(minY, node.y)\n\t\tmaxX = Math.max(maxX, node.x + node.w)\n\t\tmaxY = Math.max(maxY, node.y + node.h)\n\t}\n\tif (lines) {\n\t\tfor (const line of lines) {\n\t\t\tminX = Math.min(minX, line.x)\n\t\t\tminY = Math.min(minY, line.y)\n\t\t\tmaxX = Math.max(maxX, line.x)\n\t\t\tmaxY = Math.max(maxY, line.y + line.endY)\n\t\t}\n\t}\n\treturn { minX, minY, maxX, maxY }\n}\n"],
|
|
5
|
+
"mappings": "AAAA;AAAA,EACC;AAAA,EAMA;AAAA,EACA;AAAA,OACM;AAOP,SAAS,cAAc,2BAA2B;AAQlD,MAAM,mCAAmC;AAAA,EACxC,kBAAkB;AACnB;AAGO,SAAS,gBACf,QACA,WACA,MACC;AACD,QAAM,UAAU,EAAE,GAAG,kCAAkC,GAAI,QAAQ,CAAC,EAAG;AACvE,QAAM,EAAE,OAAO,OAAO,MAAM,IAAI;AAEhC,QAAM,SAAS,uBAAuB,OAAO,KAAK;AAClD,QAAM,SAAS,QAAQ,WACpB,QAAQ,WACR,OAAO,KAAK,uBAAuB,IAClC,OAAO,OAAO,oBAAoB,IAClC,OAAO,sBAAsB,EAAE;AACnC,QAAM,UAAU,QAAQ,mBACrB,OAAO,KAAK,OAAO,OAAO,OAAO,QAAQ,IACzC,OAAO,IAAI,OAAO;AACrB,QAAM,UAAU,QAAQ,mBACrB,OAAO,KAAK,OAAO,OAAO,OAAO,QAAQ,IACzC,OAAO,IAAI,OAAO;AAErB,QAAM,UAAU;AAAA,IACf;AAAA,IACA,CAAC,MAAM,EAAE;AAAA,IACT,CAAC,MAAM,EAAE;AAAA,EACV;AACA,QAAM,WAAW,IAAI,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;AAE7D,QAAM,WAAW,oBAAI,IAAuB;AAG5C,MAAI,OAAO;AACV,eAAW,QAAQ,OAAO;AACzB,YAAM,SAAS,cAAc;AAC7B,eAAS,IAAI,KAAK,IAAI,MAAM;AAC5B,aAAO,YAAyB;AAAA,QAC/B,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,GAAG,UAAU,KAAK;AAAA,QAClB,GAAG,UAAU,KAAK;AAAA,QAClB,OAAO;AAAA,UACN,MAAM,KAAK,QAAQ;AAAA,UACnB,MAAM,KAAK,QAAQ;AAAA,UACnB,OAAO,KAAK,SAAS;AAAA,UACrB,QAAQ;AAAA,UACR,QAAQ;AAAA,YACP,IAAI,EAAE,IAAI,MAAM,OAAO,MAAkB,GAAG,GAAG,GAAG,EAAE;AAAA,YACpD,IAAI,EAAE,IAAI,MAAM,OAAO,MAAkB,GAAG,KAAK,QAAQ,GAAG,GAAG,KAAK,KAAK;AAAA,UAC1E;AAAA,QACD;AAAA,MACD,CAAC;AAAA,IACF;AAAA,EACD;AAEA,aAAW,QAAQ,SAAS;AAC3B,UAAM,UAAU,cAAc;AAC9B,aAAS,IAAI,KAAK,IAAI,OAAO;AAE7B,UAAM,SAAS,KAAK,WAAW,SAAS,IAAI,KAAK,QAAQ,IAAI;AAC7D,UAAM,gBAAgB,KAAK,WAAW,SAAS,IAAI,KAAK,QAAQ,IAAI;AAEpE,UAAM,YAAY,UAAU,KAAK;AACjC,UAAM,YAAY,UAAU,KAAK;AACjC,UAAM,IAAI,SAAS,aAAa,UAAU,OAAO,KAAK;AACtD,UAAM,IAAI,SAAS,aAAa,UAAU,OAAO,KAAK;AAEtD,WAAO,YAAwB;AAAA,MAC9B,IAAI;AAAA,MACJ,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,OAAO;AAAA,QACN,KAAK,KAAK;AAAA,QACV,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,QACR,MAAM,KAAK,QAAQ;AAAA,QACnB,OAAO,KAAK,SAAS;AAAA,QACrB,MAAM,KAAK,QAAQ;AAAA,QACnB,MAAM,KAAK,QAAQ;AAAA,QACnB,GAAI,KAAK,SAAS,EAAE,UAAU,WAAW,oBAAoB,KAAK,KAAK,CAAC,EAAE;AAAA,QAC1E,GAAI,KAAK,SAAS,EAAE,OAAO,KAAK,MAAM;AAAA,QACtC,GAAI,KAAK,iBAAiB,EAAE,eAAe,KAAK,cAAc;AAAA,MAC/D;AAAA,IACD,CAAC;AAAA,EACF;AAEA,QAAM,WAAwB,CAAC;AAC/B,aAAW,QAAQ,OAAO;AACzB,UAAM,UAAU,oBAAoB,QAAQ,MAAM,QAAQ;AAC1D,QAAI,QAAS,UAAS,KAAK,OAAO;AAAA,EACnC;AAGA,QAAM,aAAa,oBAAI,IAAe;AACtC,QAAM,cAA2B,CAAC;AAClC,MAAI,UAAU,QAAQ;AACrB,eAAW,SAAS,UAAU,QAAQ;AACrC,YAAM,UAAuB,CAAC;AAC9B,iBAAW,eAAe,OAAO;AAChC,cAAM,gBAAgB,SAAS,IAAI,WAAW;AAC9C,YAAI,eAAe;AAClB,kBAAQ,KAAK,aAAa;AAC1B,qBAAW,IAAI,aAAa;AAAA,QAC7B;AAAA,MACD;AACA,UAAI,QAAQ,SAAS,GAAG;AACvB,eAAO,YAAY,OAAO;AAC1B,cAAM,QAAQ,OAAO,SAAS,QAAQ,CAAC,CAAC;AACxC,YAAI,SAAS,MAAM,aAAa,OAAO,iBAAiB,GAAG;AAC1D,sBAAY,KAAK,MAAM,QAAqB;AAAA,QAC7C,OAAO;AACN,sBAAY,KAAK,QAAQ,CAAC,CAAC;AAAA,QAC5B;AAAA,MACD,WAAW,QAAQ,WAAW,GAAG;AAChC,oBAAY,KAAK,QAAQ,CAAC,CAAC;AAAA,MAC5B;AAAA,IACD;AAAA,EACD;AAGA,QAAM,cAA2B,CAAC,GAAG,WAAW;AAChD,aAAW,QAAQ,OAAO;AACzB,QAAI,CAAC,KAAK,UAAU;AACnB,YAAM,cAAc,SAAS,IAAI,KAAK,EAAE;AACxC,UAAI,eAAe,CAAC,WAAW,IAAI,WAAW,EAAG,aAAY,KAAK,WAAW;AAAA,IAC9E;AAAA,EACD;AACA,MAAI,OAAO;AACV,eAAW,QAAQ,OAAO;AACzB,YAAM,cAAc,SAAS,IAAI,KAAK,EAAE;AACxC,UAAI,eAAe,CAAC,WAAW,IAAI,WAAW,EAAG,aAAY,KAAK,WAAW;AAAA,IAC9E;AAAA,EACD;AACA,cAAY,KAAK,GAAG,QAAQ;AAE5B,MAAI;AACJ,MAAI,YAAY,SAAS,GAAG;AAC3B,WAAO,YAAY,WAAW;AAC9B,UAAM,QAAQ,OAAO,SAAS,YAAY,CAAC,CAAC;AAC5C,QAAI,SAAS,MAAM,aAAa,OAAO,iBAAiB,GAAG;AAC1D,oBAAc,MAAM;AAAA,IACrB;AAAA,EACD,WAAW,YAAY,WAAW,GAAG;AACpC,kBAAc,YAAY,CAAC;AAAA,EAC5B;AAEA,MAAI,aAAa;AAChB,UAAM,eAAe,OAAO,mBAAmB,WAAW;AAC1D,QAAI,cAAc;AACjB,YAAM,WAAW,QAAQ,mBAAmB,OAAO,IAAI,aAAa,IAAI,IAAI,OAAO;AACnF,YAAM,WAAW,QAAQ,mBAAmB,OAAO,IAAI,aAAa,IAAI,IAAI,OAAO;AACnF,YAAM,KAAK,WAAW,aAAa;AACnC,YAAM,KAAK,WAAW,aAAa;AACnC,UAAI,KAAK,IAAI,EAAE,IAAI,OAAO,KAAK,IAAI,EAAE,IAAI,KAAK;AAC7C,cAAM,QAAQ,OAAO,SAAS,WAAW;AACzC,eAAO,YAAY;AAAA,UAClB,IAAI;AAAA,UACJ,MAAM,MAAM;AAAA,UACZ,GAAG,MAAM,IAAI;AAAA,UACb,GAAG,MAAM,IAAI;AAAA,QACd,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AACD;AAEA,SAAS,iBACR,SACA,UACA,UACA,QACA,SACA,WACC;AACD,SAAO;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO,EAAE,UAAU,kBAAkB,QAAQ,SAAS,UAAU;AAAA,EACjE;AACD;AAEA,SAAS,oBACR,QACA,MACA,UACwB;AACxB,QAAM,eAAe,SAAS,IAAI,KAAK,WAAW;AAClD,QAAM,aAAa,SAAS,IAAI,KAAK,SAAS;AAC9C,MAAI,CAAC,gBAAgB,CAAC,WAAY,QAAO;AAEzC,QAAM,cAAc,OAAO,mBAAmB,YAAY;AAC1D,QAAM,YAAY,OAAO,mBAAmB,UAAU;AACtD,MAAI,CAAC,eAAe,CAAC,UAAW,QAAO;AAEvC,QAAM,UAAU,cAAc;AAC9B,QAAM,aAAa,iBAAiB;AACpC,QAAM,oBAAoB,KAAK,iBAAiB,UAAa,KAAK,eAAe;AAEjF,MAAI,YAAY,KAAK;AACrB,MAAI,KAAK,YAAY,SAAS,cAAc;AAC3C,UAAM,MAAM,KAAK,WAAW;AAC5B,gBAAY,YAAY,GAAG,GAAG,KAAK,SAAS,KAAK;AAAA,EAClD;AAEA,QAAM,YAAY;AAAA,IACjB,MAAM,KAAK,QAAS;AAAA,IACpB,MAAM,KAAK,QAAS;AAAA,IACpB,cAAc,KAAK,gBAAiB;AAAA,IACpC,GAAI,KAAK,kBAAkB,EAAE,gBAAgB,KAAK,eAAe;AAAA,IACjE,OAAO,KAAK,SAAU;AAAA,IACtB,GAAI,aAAa,EAAE,UAAU,WAAW,oBAAoB,SAAS,CAAC,EAAE;AAAA,EACzE;AAEA,MAAI,mBAAmB;AACtB,UAAM,eAAe,KAAK,gBAAgB;AAC1C,UAAM,aAAa,KAAK,cAAc;AACtC,UAAM,aAAa,KAAK,WAAW;AACnC,UAAM,eAAe,KAAK,aAAa;AACvC,UAAM,WAAW,KAAK,cAAc;AACpC,UAAM,aAAa,KAAK,gBAAgB;AAExC,UAAM,aAAa;AAAA,MAClB,GAAG,YAAY,IAAI,YAAY,IAAI;AAAA,MACnC,GAAG,YAAY,IAAI,YAAY,IAAI;AAAA,IACpC;AACA,UAAM,WAAW;AAAA,MAChB,GAAG,UAAU,IAAI,UAAU,IAAI;AAAA,MAC/B,GAAG,UAAU,IAAI,UAAU,IAAI;AAAA,IAChC;AACA,UAAM,SAAS;AAAA,MACd,GAAG,KAAK,IAAI,WAAW,GAAG,SAAS,CAAC;AAAA,MACpC,GAAG,KAAK,IAAI,WAAW,GAAG,SAAS,CAAC;AAAA,IACrC;AAEA,WAAO,IAAI,MAAM;AAChB,aAAO,YAAY;AAAA,QAClB,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,GAAG,OAAO;AAAA,QACV,GAAG,OAAO;AAAA,QACV,OAAO;AAAA,UACN,GAAG;AAAA,UACH,OAAO,EAAE,GAAG,WAAW,IAAI,OAAO,GAAG,GAAG,WAAW,IAAI,OAAO,EAAE;AAAA,UAChE,KAAK,EAAE,GAAG,SAAS,IAAI,OAAO,GAAG,GAAG,SAAS,IAAI,OAAO,EAAE;AAAA,UAC1D,MAAM,KAAK;AAAA,QACZ;AAAA,MACD,CAAC;AACD,aAAO,eAAe;AAAA,QACrB;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA,EAAE,GAAG,KAAK,GAAG,aAAa;AAAA,UAC1B;AAAA,UACA;AAAA,QACD;AAAA,QACA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA,EAAE,GAAG,KAAK,GAAG,WAAW;AAAA,UACxB;AAAA,UACA;AAAA,QACD;AAAA,MACD,CAAC;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACR;AAEA,MAAI,YAAY;AACf,WAAO,IAAI,MAAM;AAChB,aAAO,YAAY;AAAA,QAClB,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,GAAG,YAAY;AAAA,QACf,GAAG,YAAY;AAAA,QACf,OAAO;AAAA,UACN,GAAG;AAAA,UACH,OAAO,EAAE,GAAG,YAAY,IAAI,GAAG,GAAG,EAAE;AAAA,UACpC,KAAK,EAAE,GAAG,YAAY,GAAG,GAAG,YAAY,IAAI,EAAE;AAAA,UAC9C,MAAM;AAAA,QACP;AAAA,MACD,CAAC;AACD,aAAO,eAAe;AAAA,QACrB,iBAAiB,SAAS,cAAc,SAAS,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,KAAK;AAAA,QACjF,iBAAiB,SAAS,YAAY,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,KAAK;AAAA,MAC/E,CAAC;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACR;AAEA,QAAM,cAAc,YAAY;AAChC,QAAM,YAAY,UAAU;AAC5B,QAAM,cAAc,IAAI,IAAI,aAAa,SAAS;AAElD,SAAO,IAAI,MAAM;AAChB,WAAO,YAAY;AAAA,MAClB,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,GAAG,YAAY;AAAA,MACf,GAAG,YAAY;AAAA,MACf,OAAO;AAAA,QACN,GAAG;AAAA,QACH,OAAO,EAAE,GAAG,YAAY,IAAI,YAAY,GAAG,GAAG,YAAY,IAAI,YAAY,EAAE;AAAA,QAC5E,KAAK,EAAE,GAAG,UAAU,IAAI,YAAY,GAAG,GAAG,UAAU,IAAI,YAAY,EAAE;AAAA,QACtE,MAAM,KAAK;AAAA,MACZ;AAAA,IACD,CAAC;AACD,WAAO,eAAe;AAAA,MACrB,iBAAiB,SAAS,cAAc,SAAS,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,KAAK;AAAA,MACjF,iBAAiB,SAAS,YAAY,OAAO,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,KAAK;AAAA,IAC9E,CAAC;AAAA,EACF,CAAC;AAED,SAAO;AACR;AAEA,SAAS,uBACR,OACA,OAC6D;AAC7D,MAAI,OAAO,UACV,OAAO,UACP,OAAO,WACP,OAAO;AACR,aAAW,QAAQ,OAAO;AACzB,QAAI,KAAK,SAAU;AACnB,WAAO,KAAK,IAAI,MAAM,KAAK,CAAC;AAC5B,WAAO,KAAK,IAAI,MAAM,KAAK,CAAC;AAC5B,WAAO,KAAK,IAAI,MAAM,KAAK,IAAI,KAAK,CAAC;AACrC,WAAO,KAAK,IAAI,MAAM,KAAK,IAAI,KAAK,CAAC;AAAA,EACtC;AACA,MAAI,OAAO;AACV,eAAW,QAAQ,OAAO;AACzB,aAAO,KAAK,IAAI,MAAM,KAAK,CAAC;AAC5B,aAAO,KAAK,IAAI,MAAM,KAAK,CAAC;AAC5B,aAAO,KAAK,IAAI,MAAM,KAAK,CAAC;AAC5B,aAAO,KAAK,IAAI,MAAM,KAAK,IAAI,KAAK,IAAI;AAAA,IACzC;AAAA,EACD;AACA,SAAO,EAAE,MAAM,MAAM,MAAM,KAAK;AACjC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|