8 lines
93 KiB
Plaintext
Raw Normal View History

2026-05-31 13:21:13 +02:00
{
"version": 3,
"sources": ["../../../src/diagrams/wardley/wardleyParser.ts", "../../../src/diagrams/wardley/wardleyBuilder.ts", "../../../src/diagrams/wardley/wardleyDb.ts", "../../../src/diagrams/wardley/wardleyRenderer.ts", "../../../src/diagrams/wardley/styles.ts", "../../../src/diagrams/wardley/wardleyDiagram.ts"],
"sourcesContent": ["import type { Wardley } from '@mermaid-js/parser';\nimport { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport type { WardleyDB } from './wardleyTypes.js';\n\nconst toPercent = (value: number, context: string): number => {\n // Accept values in 0-1 range (converted to percentage) or 0-100 range (used as-is)\n const normalized = value <= 1 ? value * 100 : value;\n if (normalized < 0 || normalized > 100) {\n throw new Error(\n `${context} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${value}`\n );\n }\n return normalized;\n};\n\nconst toCoordinates = (\n visibility: number,\n evolution: number,\n context: string\n): { x: number; y: number } => {\n return {\n x: toPercent(evolution, `${context} evolution`),\n y: toPercent(visibility, `${context} visibility`),\n };\n};\n\nconst getFlowFromPort = (port?: string): 'forward' | 'backward' | 'bidirectional' | undefined => {\n if (!port) {\n return undefined;\n }\n if (port === '+<>') {\n return 'bidirectional';\n }\n if (port === '+<') {\n return 'backward';\n }\n if (port === '+>') {\n return 'forward';\n }\n return undefined;\n};\n\nconst extractFlowFromArrow = (\n arrow?: string\n): { flow?: 'forward' | 'backward' | 'bidirectional'; label?: string } => {\n if (!arrow?.startsWith('+')) {\n return {};\n }\n\n const labelMatch = /^\\+'([^']*)'/.exec(arrow);\n const flowLabel = labelMatch?.[1];\n\n if (arrow.includes('<>')) {\n return { flow: 'bidirectional', label: flowLabel };\n }\n if (arrow.includes('<')) {\n return { flow: 'backward', label: flowLabel };\n }\n if (arrow.includes('>')) {\n return { flow: 'forward', label: flowLabel };\n }\n return { label: flowLabel };\n};\n\nconst populateDb = (ast: Wardley, db: WardleyDB) => {\n populateCommonDb(ast, db);\n\n // Set size if provided\n if (ast.size) {\n db.setSize(ast.size.width, ast.size.height);\n }\n\n // Process evolution stages\n if (ast.evolution) {\n const stages = ast.evolution.stages.map((stage) => {\n // Handle dual-label stages like \"Genesis / Concept\"\n if (stage.secondName) {\n return `${stage.name.trim()} / ${stage.secondName.trim()}`;\n }\n return stage.name.trim();\n });\n const stageBoundaries = ast.evolution.stages\n .filter((stage) => stage.boundary !== undefined)\n .map((stage) => stage.boundary!);\n\n db.updateAxes({ stages, stageBoundaries });\n }\n\n // Add anchors as nodes with className 'anchor'\n ast.anchors.forEach((anchor) => {\n const coords = toCoordinates(anchor.visibility, anchor.evolution, `Anchor \"${anchor.name}\"`);\n db.addNode(anchor.name, anchor.name, coords.x, coords.y, 'anchor');\n });\n\n // Add components\n ast.components.forEach((component) => {\n const coords = toCoordinates(\n component.visibility,\n component.evolution,\n `Component \"${component.name}\"`\n );\n const labelOffsetX = component.label\n ? (component.label.negX ? -1 : 1) * component.label.offsetX\n : undefined;\n const labelOffsetY = component.label\n ? (component.label.negY ? -1 : 1) * component.label.offsetY\n : undefined;\n const sourceStrategy = component.decorator?.strategy as\n | 'build'\n | 'buy'\n | 'outsource'\n | 'market'\n | undefined;\n\n db.addNode(\n component.name,\n component.name,\n coords.x,\n coords.y,\n 'component',\n labelOffsetX,\n labelOffsetY,\n component.inertia,\n sourceStrategy\n );\n });\n\n // Add notes\n ast.notes.forEach((note) => {\n const coords = toCoordinates(note.visibility, note.evolution, `Note \"${note.text}\"`);\n db.addNote(note.text, coords.x, coords.y);\n });\n\n // Process pipelines\n ast.pipelines.forEach((pipeline) => {\n const parentNode = db.getNode(pipeline.parent);\n if (!parentN
"mappings": "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
"names": ["toPercent", "__name", "value", "context", "normalized", "toCoordinates", "visibility", "evolution", "getFlowFromPort", "port", "extractFlowFromArrow", "arrow", "flowLabel", "populateDb", "ast", "db", "populateCommonDb", "stages", "stage", "stageBoundaries", "anchor", "coords", "component", "labelOffsetX", "labelOffsetY", "sourceStrategy", "note", "pipeline", "parentNode", "parentY", "componentId", "x", "link", "isDashed", "flow", "arrowFlow", "annotation", "label", "evolve", "node", "target", "annotationsBox", "accelerator", "deaccelerator", "parser", "input", "parse", "log", "WardleyBuilder", "__name", "node", "existing", "merged", "link", "trend", "nodeId", "pipelineNodeId", "componentId", "pipeline", "annotation", "note", "accelerator", "deaccelerator", "x", "y", "partial", "width", "height", "id", "name", "nodes", "builder", "WardleyBuilder", "getConfig", "__name", "addNode", "id", "label", "x", "y", "className", "labelOffsetX", "labelOffsetY", "inertia", "sourceStrategy", "addLink", "sourceId", "targetId", "dashed", "flow", "addTrend", "nodeId", "targetX", "targetY", "addAnnotation", "number", "coordinates", "text", "addNote", "addAccelerator", "name", "addDeaccelerator", "setAnnotationsBox", "setSize", "width", "height", "startPipeline", "addPipelineComponent", "pipelineNodeId", "componentId", "updateAxes", "partial", "getNode", "resolveNodeId", "getWardleyData", "clear", "wardleyDb_default", "setAccTitle", "getAccTitle", "setDiagramTitle", "getDiagramTitle", "getAccDescription", "setAccDescription", "DEFAULT_STAGES", "getTheme", "__name", "themeVariables", "getConfig", "getConfigValues", "wardleyConfig", "draw", "text", "id", "_version", "diagObj", "log", "configValues", "theme", "squareSize", "db", "data", "title", "width", "height", "svg", "selectSvgElement", "configureSvgSize", "root", "defs", "chartWidth", "chartHeight", "projectX", "value", "projectY", "axisGroup", "xLabel", "yLabel", "stages", "stageGroup", "boundaries", "stagePositions", "prevBoundary", "boundary", "stageWidth", "_", "index", "stage", "pos", "startX", "endX", "centerX", "gridGroup", "i", "ratio", "x", "positions", "node", "pipelineGroup", "pipelineLinksGroup", "pipeline", "sortedComponents", "n", "c", "a", "b", "current", "next", "minX", "maxX", "y", "componentId", "boxTop", "parentPos", "linksGroup", "pipelineMap", "validLinks", "link", "sourcePos", "targetPos", "radius", "dx", "dy", "distance", "midX", "offset", "perpX", "midY", "perpY", "labelX", "labelY", "angle", "trendGroup", "trendsWithPositions", "trend", "origin", "targetX", "targetY", "shortenBy", "adjustedX2", "adjustedY2", "nodeEnter", "marketNodes", "smallCircleRadius", "triangleRadius", "lineHeight", "defaultOffset", "customOffset", "annotationsGroup", "annotation", "projectedCoords", "coord", "annotationNode", "boxX", "boxY", "padding", "fontSize", "textBoxGroup", "sortedAnnotations", "textElements", "idx", "maxWidth", "maxHeight", "textNode", "textWidth", "bbox", "boxWidth", "boxHeight", "minY", "maxY", "notesGroup", "note", "noteX", "noteY", "acceleratorsGroup", "accelerator", "accX", "accY", "arrowWidth", "arrowHeight", "arrowHeadWidth", "arrowPath", "deacceleratorsGroup", "deaccelerator", "decX", "decY", "wardleyRenderer_default", "styles", "__name", "wardley", "defaultThemeVariables", "getThemeVariables", "currentConfig", "getConfig", "themeVariables", "cleanAndMerge", "w", "diagram", "parser", "wardleyDb_default", "wardleyRenderer_default", "styles"]
}