Files

8 lines
39 KiB
Plaintext
Raw Permalink Normal View History

2025-11-23 14:59:17 -08:00
{
"version": 3,
"sources": ["../../../src/diagrams/state/shapes.js", "../../../src/diagrams/state/stateRenderer.js", "../../../src/diagrams/state/stateDiagram.ts"],
"sourcesContent": ["import { line, curveBasis } from 'd3';\nimport { StateDB } from './stateDb.js';\nimport utils from '../../utils.js';\nimport common, { getUrl } from '../common/common.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\n\n/**\n * Draws a start state as a black circle\n *\n * @param {any} g\n */\nexport const drawStartState = (g) =>\n g\n .append('circle')\n // .style('stroke', 'black')\n // .style('fill', 'black')\n .attr('class', 'start-state')\n .attr('r', getConfig().state.sizeUnit)\n .attr('cx', getConfig().state.padding + getConfig().state.sizeUnit)\n .attr('cy', getConfig().state.padding + getConfig().state.sizeUnit);\n\n/**\n * Draws a start state as a black circle\n *\n * @param {any} g\n */\nexport const drawDivider = (g) =>\n g\n .append('line')\n .style('stroke', 'grey')\n .style('stroke-dasharray', '3')\n .attr('x1', getConfig().state.textHeight)\n .attr('class', 'divider')\n .attr('x2', getConfig().state.textHeight * 2)\n .attr('y1', 0)\n .attr('y2', 0);\n\n/**\n * Draws an end state as a black circle\n *\n * @param {any} g\n * @param {any} stateDef\n */\nexport const drawSimpleState = (g, stateDef) => {\n const state = g\n .append('text')\n .attr('x', 2 * getConfig().state.padding)\n .attr('y', getConfig().state.textHeight + 2 * getConfig().state.padding)\n .attr('font-size', getConfig().state.fontSize)\n .attr('class', 'state-title')\n .text(stateDef.id);\n\n const classBox = state.node().getBBox();\n g.insert('rect', ':first-child')\n .attr('x', getConfig().state.padding)\n .attr('y', getConfig().state.padding)\n .attr('width', classBox.width + 2 * getConfig().state.padding)\n .attr('height', classBox.height + 2 * getConfig().state.padding)\n .attr('rx', getConfig().state.radius);\n\n return state;\n};\n\n/**\n * Draws a state with descriptions\n *\n * @param {any} g The d3 svg object to add the state to\n * @param {any} stateDef\n * @returns {any} The d3 svg state\n */\nexport const drawDescrState = (g, stateDef) => {\n const addTspan = function (textEl, txt, isFirst) {\n const tSpan = textEl\n .append('tspan')\n .attr('x', 2 * getConfig().state.padding)\n .text(txt);\n if (!isFirst) {\n tSpan.attr('dy', getConfig().state.textHeight);\n }\n };\n const title = g\n .append('text')\n .attr('x', 2 * getConfig().state.padding)\n .attr('y', getConfig().state.textHeight + 1.3 * getConfig().state.padding)\n .attr('font-size', getConfig().state.fontSize)\n .attr('class', 'state-title')\n .text(stateDef.descriptions[0]);\n\n const titleBox = title.node().getBBox();\n const titleHeight = titleBox.height;\n\n const description = g\n .append('text') // text label for the x axis\n .attr('x', getConfig().state.padding)\n .attr(\n 'y',\n titleHeight +\n getConfig().state.padding * 0.4 +\n getConfig().state.dividerMargin +\n getConfig().state.textHeight\n )\n .attr('class', 'state-description');\n\n let isFirst = true;\n let isSecond = true;\n stateDef.descriptions.forEach(function (descr) {\n if (!isFirst) {\n addTspan(description, descr, isSecond);\n isSecond = false;\n }\n isFirst = false;\n });\n\n const descrLine = g\n .append('line') // text label for the x axis\n .attr('x1', getConfig().state.padding)\n .attr('y1', getConfig().state.padding + titleHeight + getConfig().state.dividerMargin / 2)\n .attr('y2', getConfig().state.padding + titleHeight + getConfig().state.dividerMargin / 2)\n .attr('class', 'descr-divider');\n const descrBox = description.node().getBBox();\n const width = Math.max(descrBox.width, titleBox.width);\n\n descrLine.attr('x2', width + 3 * getConfig().state.padding);\n // const classBox = title.node().getBBox();\n\n g.insert('rect', ':first-child')\n .attr('x', getConfig().state.padding)\n .attr('y', getConfig().state.padding)\n .attr('width', width + 2 * getConfig().state.padding)\n
"mappings": "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
"names": ["isFirst", "diagram"]
}