@aranzatech/diagrams-bpmn 0.1.0

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 (53) hide show
  1. package/dist/chunk-23B2IGK5.js +24 -0
  2. package/dist/chunk-23B2IGK5.js.map +1 -0
  3. package/dist/chunk-3AFZDIMQ.js +286 -0
  4. package/dist/chunk-3AFZDIMQ.js.map +1 -0
  5. package/dist/chunk-4OAEWYYU.js +579 -0
  6. package/dist/chunk-4OAEWYYU.js.map +1 -0
  7. package/dist/chunk-57LA2WSJ.js +476 -0
  8. package/dist/chunk-57LA2WSJ.js.map +1 -0
  9. package/dist/chunk-6TUC5QX5.js +491 -0
  10. package/dist/chunk-6TUC5QX5.js.map +1 -0
  11. package/dist/chunk-MLUJKUTG.js +86 -0
  12. package/dist/chunk-MLUJKUTG.js.map +1 -0
  13. package/dist/chunk-NXMUX67A.js +1443 -0
  14. package/dist/chunk-NXMUX67A.js.map +1 -0
  15. package/dist/edges/index.cjs +300 -0
  16. package/dist/edges/index.cjs.map +1 -0
  17. package/dist/edges/index.d.cts +17 -0
  18. package/dist/edges/index.d.ts +17 -0
  19. package/dist/edges/index.js +4 -0
  20. package/dist/edges/index.js.map +1 -0
  21. package/dist/elements/index.cjs +587 -0
  22. package/dist/elements/index.cjs.map +1 -0
  23. package/dist/elements/index.d.cts +20 -0
  24. package/dist/elements/index.d.ts +20 -0
  25. package/dist/elements/index.js +4 -0
  26. package/dist/elements/index.js.map +1 -0
  27. package/dist/index.cjs +3442 -0
  28. package/dist/index.cjs.map +1 -0
  29. package/dist/index.d.cts +67 -0
  30. package/dist/index.d.ts +67 -0
  31. package/dist/index.js +45 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/nodes/index.cjs +1487 -0
  34. package/dist/nodes/index.cjs.map +1 -0
  35. package/dist/nodes/index.d.cts +45 -0
  36. package/dist/nodes/index.d.ts +45 -0
  37. package/dist/nodes/index.js +4 -0
  38. package/dist/nodes/index.js.map +1 -0
  39. package/dist/simulation/index.cjs +483 -0
  40. package/dist/simulation/index.cjs.map +1 -0
  41. package/dist/simulation/index.d.cts +62 -0
  42. package/dist/simulation/index.d.ts +62 -0
  43. package/dist/simulation/index.js +3 -0
  44. package/dist/simulation/index.js.map +1 -0
  45. package/dist/types-CxzazgBX.d.cts +111 -0
  46. package/dist/types-CxzazgBX.d.ts +111 -0
  47. package/dist/xml/index.cjs +1068 -0
  48. package/dist/xml/index.cjs.map +1 -0
  49. package/dist/xml/index.d.cts +24 -0
  50. package/dist/xml/index.d.ts +24 -0
  51. package/dist/xml/index.js +4 -0
  52. package/dist/xml/index.js.map +1 -0
  53. package/package.json +84 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/nodes/shared/BpmnHandles.tsx","../src/nodes/shared/BpmnLabel.tsx","../src/nodes/shared/EventMarker.tsx","../src/nodes/StartEventNode.tsx","../src/nodes/EndEventNode.tsx","../src/nodes/IntermediateEventNode.tsx","../src/nodes/shared/TaskIcon.tsx","../src/nodes/shared/TaskMarkers.tsx","../src/nodes/TaskNode.tsx","../src/nodes/GatewayNode.tsx","../src/nodes/SubProcessNode.tsx","../src/nodes/PoolNode.tsx","../src/nodes/LaneNode.tsx","../src/nodes/AnnotationNode.tsx","../src/nodes/GroupNode.tsx","../src/nodes/DataNode.tsx","../src/nodes/DataRefNode.tsx","../src/nodes/ConversationNode.tsx","../src/nodes/ChoreographyNode.tsx","../src/nodes/nodeTypes.ts"],"names":["jsx","jsxs","Fragment","SIZE","CX","R","HEADER_HEIGHT","HEADER_WIDTH","HANDLE_STYLE","Handle","Position","H","foldPath","W","FOLD","DS_W","DS_H","RX","RY"],"mappings":"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","file":"chunk-NXMUX67A.js","sourcesContent":["import { Handle, Position } from \"@xyflow/react\";\n\ntype HandleVariant =\n | \"all\" // source + target on all 4 sides\n | \"source\" // only outgoing (start events)\n | \"target\" // only incoming (end events)\n | \"none\"; // pools, lanes, annotations\n\nconst ALL_POSITIONS = [\n Position.Top,\n Position.Right,\n Position.Bottom,\n Position.Left,\n] as const;\n\nconst HANDLE_STYLE = {\n width: 8,\n height: 8,\n background: \"#8c8c8c\",\n border: \"1.5px solid #fff\",\n};\n\nexport function BpmnHandles({ variant = \"all\" }: { variant?: HandleVariant }) {\n const src = variant === \"all\" || variant === \"source\";\n const tgt = variant === \"all\" || variant === \"target\";\n\n return (\n <>\n {tgt && ALL_POSITIONS.map((position) => (\n <Handle\n key={`target-${position}`}\n type=\"target\"\n position={position}\n id={`target-${position}`}\n style={HANDLE_STYLE}\n />\n ))}\n {src && ALL_POSITIONS.map((position) => (\n <Handle\n key={`source-${position}`}\n type=\"source\"\n position={position}\n id={`source-${position}`}\n style={HANDLE_STYLE}\n />\n ))}\n </>\n );\n}\n","import type { CSSProperties, ReactNode } from \"react\";\nimport { BPMN_THEME } from \"./theme\";\n\ninterface BpmnLabelProps {\n children?: ReactNode;\n /** Render label below the shape instead of inside. Default: false (inside). */\n external?: boolean;\n style?: CSSProperties;\n}\n\nconst EXTERNAL_STYLE: CSSProperties = {\n position: \"absolute\",\n top: \"100%\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n marginTop: 4,\n fontSize: BPMN_THEME.fontSize,\n fontFamily: BPMN_THEME.fontFamily,\n color: BPMN_THEME.labelColor,\n textAlign: \"center\",\n whiteSpace: \"nowrap\",\n maxWidth: 100,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n pointerEvents: \"none\",\n lineHeight: 1.3,\n};\n\nconst INTERNAL_STYLE: CSSProperties = {\n fontSize: BPMN_THEME.fontSize,\n fontFamily: BPMN_THEME.fontFamily,\n color: BPMN_THEME.labelColor,\n textAlign: \"center\",\n lineHeight: 1.3,\n overflow: \"hidden\",\n wordBreak: \"break-word\",\n};\n\nexport function BpmnLabel({ children, external = false, style }: BpmnLabelProps) {\n if (!children) return null;\n return (\n <div style={{ ...(external ? EXTERNAL_STYLE : INTERNAL_STYLE), ...style }}>\n {children}\n </div>\n );\n}\n","import type { EventTrigger } from \"../../elements/types\";\n\ninterface EventMarkerProps {\n cx: number;\n cy: number;\n trigger: EventTrigger;\n /** True for throw events — markers rendered filled (dark). */\n filled?: boolean;\n stroke: string;\n /** Background fill, used for negative-space areas. */\n bg: string;\n /** Usable radius within the event circle (inner ring radius). */\n r?: number;\n}\n\n// Pentagon points for \"Multiple\" trigger\nfunction pentagon(r: number): string {\n const pts = Array.from({ length: 5 }, (_, i) => {\n const a = (i * 72 - 90) * (Math.PI / 180);\n return `${(r * Math.cos(a)).toFixed(2)},${(r * Math.sin(a)).toFixed(2)}`;\n });\n return `M ${pts.join(\" L \")} Z`;\n}\n\nexport function EventMarker({ cx, cy, trigger, filled = false, stroke, bg, r = 10 }: EventMarkerProps) {\n const s = r * 0.6; // scale factor — icons drawn in roughly [-s, s] box\n const f = filled ? stroke : \"none\";\n const sw = 1.4;\n\n if (trigger === \"none\" || !trigger) return null;\n\n return (\n <g transform={`translate(${cx},${cy})`} strokeLinecap=\"round\" strokeLinejoin=\"round\">\n {trigger === \"message\" && (\n <g fill={f} stroke={stroke} strokeWidth={sw}>\n {/* Envelope rectangle */}\n <rect x={-s} y={-s * 0.65} width={s * 2} height={s * 1.3} rx={0.5} />\n {/* Envelope flap */}\n <polyline fill=\"none\" points={`${-s},${-s * 0.65} 0,${s * 0.2} ${s},${-s * 0.65}`} />\n </g>\n )}\n\n {trigger === \"timer\" && (\n <g fill={f} stroke={stroke} strokeWidth={sw}>\n <circle r={s} fill={bg} stroke={stroke} strokeWidth={sw} />\n {/* 12 tick marks */}\n {Array.from({ length: 12 }, (_, i) => {\n const a = (i * 30 - 90) * (Math.PI / 180);\n const len = i % 3 === 0 ? 0.25 : 0.15;\n const x1 = Math.cos(a) * s * 0.75;\n const y1 = Math.sin(a) * s * 0.75;\n const x2 = Math.cos(a) * s * (0.75 + len);\n const y2 = Math.sin(a) * s * (0.75 + len);\n return <line key={i} x1={x1} y1={y1} x2={x2} y2={y2} stroke={stroke} strokeWidth={sw * 0.8} />;\n })}\n {/* Hour hand */}\n <line x1={0} y1={0} x2={0} y2={-s * 0.5} stroke={stroke} strokeWidth={sw} />\n {/* Minute hand */}\n <line x1={0} y1={0} x2={s * 0.4} y2={0} stroke={stroke} strokeWidth={sw} />\n </g>\n )}\n\n {trigger === \"error\" && (\n <path\n d={`M ${s * 0.35},${-s} L ${-s * 0.15},${-s * 0.05} L ${s * 0.35},${s * 0.05} L ${-s * 0.35},${s} L ${s * 0.15},${s * 0.05} L ${-s * 0.35},${-s * 0.05} Z`}\n fill={f} stroke={stroke} strokeWidth={sw}\n />\n )}\n\n {trigger === \"escalation\" && (\n <path\n d={`M 0,${-s} L ${s * 0.8},${s * 0.7} L 0,${s * 0.2} L ${-s * 0.8},${s * 0.7} Z`}\n fill={f} stroke={stroke} strokeWidth={sw}\n />\n )}\n\n {trigger === \"conditional\" && (\n // Three horizontal lines (document/list)\n <g stroke={stroke} strokeWidth={sw} fill=\"none\">\n <rect x={-s * 0.75} y={-s * 0.9} width={s * 1.5} height={s * 1.8} rx={1} fill={bg} stroke={stroke} strokeWidth={sw} />\n <line x1={-s * 0.45} y1={-s * 0.4} x2={s * 0.45} y2={-s * 0.4} />\n <line x1={-s * 0.45} y1={0} x2={s * 0.45} y2={0} />\n <line x1={-s * 0.45} y1={s * 0.4} x2={s * 0.45} y2={s * 0.4} />\n </g>\n )}\n\n {trigger === \"link\" && (\n // Arrow pointing right\n <path\n d={`M ${-s * 0.9},${-s * 0.35} L ${s * 0.1},${-s * 0.35} L ${s * 0.1},${-s * 0.65} L ${s},0 L ${s * 0.1},${s * 0.65} L ${s * 0.1},${s * 0.35} L ${-s * 0.9},${s * 0.35} Z`}\n fill={f} stroke={stroke} strokeWidth={sw}\n />\n )}\n\n {trigger === \"compensation\" && (\n // Two left-pointing chevrons <<\n <g fill={f} stroke={stroke} strokeWidth={sw}>\n <polyline fill={f} strokeLinejoin=\"round\"\n points={`${s * 0.5},${-s * 0.7} ${-s * 0.1},0 ${s * 0.5},${s * 0.7}`} />\n <polyline fill={f} strokeLinejoin=\"round\"\n points={`${s},${-s * 0.7} ${s * 0.4},0 ${s},${s * 0.7}`} />\n {filled && (\n <>\n <polygon fill={stroke} points={`${s * 0.5},${-s * 0.7} ${-s * 0.1},0 ${s * 0.5},${s * 0.7}`} />\n <polygon fill={stroke} points={`${s},${-s * 0.7} ${s * 0.4},0 ${s},${s * 0.7}`} />\n </>\n )}\n </g>\n )}\n\n {trigger === \"signal\" && (\n <polygon\n points={`0,${-s} ${s * 0.9},${s * 0.7} ${-s * 0.9},${s * 0.7}`}\n fill={f} stroke={stroke} strokeWidth={sw}\n />\n )}\n\n {trigger === \"cancel\" && (\n // X mark\n <g stroke={stroke} strokeWidth={sw * 1.5} strokeLinecap=\"round\" fill=\"none\">\n <line x1={-s * 0.7} y1={-s * 0.7} x2={s * 0.7} y2={s * 0.7} />\n <line x1={s * 0.7} y1={-s * 0.7} x2={-s * 0.7} y2={s * 0.7} />\n </g>\n )}\n\n {trigger === \"terminate\" && (\n <circle r={s * 0.8} fill={stroke} stroke={stroke} strokeWidth={sw} />\n )}\n\n {trigger === \"multiple\" && (\n <path d={pentagon(s * 0.9)} fill={f} stroke={stroke} strokeWidth={sw} />\n )}\n\n {trigger === \"parallelMultiple\" && (\n <g stroke={stroke} strokeWidth={sw * 1.5} strokeLinecap=\"round\" fill=\"none\">\n <line x1={0} y1={-s * 0.8} x2={0} y2={s * 0.8} />\n <line x1={-s * 0.8} y1={0} x2={s * 0.8} y2={0} />\n </g>\n )}\n </g>\n );\n}\n","import type { NodeProps } from \"@xyflow/react\";\nimport type { BpmnNodeData } from \"../elements/types\";\nimport { BpmnHandles } from \"./shared/BpmnHandles\";\nimport { BpmnLabel } from \"./shared/BpmnLabel\";\nimport { EventMarker } from \"./shared/EventMarker\";\nimport { resolveStroke, resolveStrokeWidth, BPMN_THEME } from \"./shared/theme\";\n\nconst SIZE = 36;\nconst CX = SIZE / 2;\nconst R = CX - 2;\n\nexport function StartEventNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n const trigger = d.trigger ?? \"none\";\n // Non-interrupting start events (in event sub-processes) use dashed border\n const dashArray = d.isNonInterrupting ? \"4 2\" : undefined;\n\n return (\n <div style={{ width: SIZE, height: SIZE, position: \"relative\" }}>\n <svg width={SIZE} height={SIZE} style={{ overflow: \"visible\", display: \"block\" }}>\n <circle\n cx={CX} cy={CX} r={R}\n fill={fill}\n stroke={stroke}\n strokeWidth={sw}\n strokeDasharray={dashArray}\n />\n {/* Trigger marker — catch semantics, outline style */}\n <EventMarker cx={CX} cy={CX} trigger={trigger} filled={false} stroke={stroke} bg={fill} r={R * 0.55} />\n </svg>\n <BpmnHandles variant=\"source\" />\n <BpmnLabel external>{d.label}</BpmnLabel>\n </div>\n );\n}\n","import type { NodeProps } from \"@xyflow/react\";\nimport type { BpmnNodeData } from \"../elements/types\";\nimport { BpmnHandles } from \"./shared/BpmnHandles\";\nimport { BpmnLabel } from \"./shared/BpmnLabel\";\nimport { EventMarker } from \"./shared/EventMarker\";\nimport { resolveStroke, resolveStrokeWidth, BPMN_THEME } from \"./shared/theme\";\n\nconst SIZE = 36;\nconst CX = SIZE / 2;\nconst R = CX - 2;\n\nexport function EndEventNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n const trigger = d.trigger ?? \"none\";\n\n return (\n <div style={{ width: SIZE, height: SIZE, position: \"relative\" }}>\n <svg width={SIZE} height={SIZE} style={{ overflow: \"visible\", display: \"block\" }}>\n {/* Thick border = end event */}\n <circle cx={CX} cy={CX} r={R}\n fill={fill}\n stroke={stroke}\n strokeWidth={sw + 2}\n />\n {/* Trigger marker — throw semantics, filled style */}\n <EventMarker cx={CX} cy={CX} trigger={trigger} filled={true} stroke={stroke} bg={fill} r={R * 0.55} />\n </svg>\n <BpmnHandles variant=\"target\" />\n <BpmnLabel external>{d.label}</BpmnLabel>\n </div>\n );\n}\n","import type { NodeProps } from \"@xyflow/react\";\nimport type { BpmnNodeData } from \"../elements/types\";\nimport { BpmnHandles } from \"./shared/BpmnHandles\";\nimport { BpmnLabel } from \"./shared/BpmnLabel\";\nimport { EventMarker } from \"./shared/EventMarker\";\nimport { resolveStroke, resolveStrokeWidth, BPMN_THEME } from \"./shared/theme\";\n\nconst SIZE = 36;\nconst CX = SIZE / 2;\nconst R_OUTER = CX - 2;\nconst R_INNER = R_OUTER - 3;\n// Icon fits within the inner ring\nconst ICON_R = R_INNER * 0.65;\n\nexport function IntermediateCatchEventNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n const trigger = d.trigger ?? \"none\";\n\n return (\n <div style={{ width: SIZE, height: SIZE, position: \"relative\" }}>\n <svg width={SIZE} height={SIZE} style={{ overflow: \"visible\", display: \"block\" }}>\n <circle cx={CX} cy={CX} r={R_OUTER} fill={fill} stroke={stroke} strokeWidth={sw} />\n <circle cx={CX} cy={CX} r={R_INNER} fill=\"none\" stroke={stroke} strokeWidth={sw} />\n {/* Catch: outline marker */}\n <EventMarker cx={CX} cy={CX} trigger={trigger} filled={false} stroke={stroke} bg={fill} r={ICON_R} />\n </svg>\n <BpmnHandles variant=\"all\" />\n <BpmnLabel external>{d.label}</BpmnLabel>\n </div>\n );\n}\n\nexport function IntermediateThrowEventNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n const trigger = d.trigger ?? \"none\";\n\n return (\n <div style={{ width: SIZE, height: SIZE, position: \"relative\" }}>\n <svg width={SIZE} height={SIZE} style={{ overflow: \"visible\", display: \"block\" }}>\n <circle cx={CX} cy={CX} r={R_OUTER} fill={fill} stroke={stroke} strokeWidth={sw} />\n {/* Throw events: filled inner disk as background */}\n <circle cx={CX} cy={CX} r={R_INNER} fill={stroke} stroke={stroke} strokeWidth={sw} />\n {/* Throw: filled marker (inverted colors) */}\n <EventMarker cx={CX} cy={CX} trigger={trigger} filled={true} stroke={fill} bg={stroke} r={ICON_R} />\n </svg>\n <BpmnHandles variant=\"all\" />\n <BpmnLabel external>{d.label}</BpmnLabel>\n </div>\n );\n}\n\nexport function BoundaryEventNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n const trigger = d.trigger ?? \"none\";\n // Non-interrupting boundary events have a dashed border\n const dashArray = d.isNonInterrupting ? \"4 2\" : undefined;\n\n return (\n <div style={{ width: SIZE, height: SIZE, position: \"relative\" }}>\n <svg width={SIZE} height={SIZE} style={{ overflow: \"visible\", display: \"block\" }}>\n <circle cx={CX} cy={CX} r={R_OUTER}\n fill={fill} stroke={stroke} strokeWidth={sw} strokeDasharray={dashArray} />\n <circle cx={CX} cy={CX} r={R_INNER}\n fill=\"none\" stroke={stroke} strokeWidth={sw} strokeDasharray={dashArray} />\n {/* Catch: outline marker */}\n <EventMarker cx={CX} cy={CX} trigger={trigger} filled={false} stroke={stroke} bg={fill} r={ICON_R} />\n </svg>\n <BpmnHandles variant=\"source\" />\n <BpmnLabel external>{d.label}</BpmnLabel>\n </div>\n );\n}\n","import type { BpmnElementType } from \"../../elements/types\";\n\ninterface TaskIconProps {\n type: BpmnElementType;\n size?: number;\n color?: string;\n}\n\nexport function TaskIcon({ type, size = 14, color = \"#404040\" }: TaskIconProps) {\n const s = size;\n const c = color;\n\n switch (type) {\n case \"UserTask\":\n return (\n <svg width={s} height={s} viewBox=\"0 0 16 16\" fill=\"none\">\n <circle cx=\"8\" cy=\"5\" r=\"3\" stroke={c} strokeWidth=\"1.5\" />\n <path d=\"M2 14c0-3.3 2.7-6 6-6s6 2.7 6 6\" stroke={c} strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n );\n case \"ServiceTask\":\n return (\n <svg width={s} height={s} viewBox=\"0 0 16 16\" fill=\"none\">\n <circle cx=\"8\" cy=\"8\" r=\"2.5\" stroke={c} strokeWidth=\"1.5\" />\n <path d=\"M8 1v2M8 13v2M1 8h2M13 8h2M3.2 3.2l1.4 1.4M11.4 11.4l1.4 1.4M3.2 12.8l1.4-1.4M11.4 4.6l1.4-1.4\"\n stroke={c} strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n );\n case \"ScriptTask\":\n return (\n <svg width={s} height={s} viewBox=\"0 0 16 16\" fill=\"none\">\n <rect x=\"3\" y=\"2\" width=\"10\" height=\"12\" rx=\"1\" stroke={c} strokeWidth=\"1.5\" />\n <path d=\"M6 6h4M6 9h4M6 12h2\" stroke={c} strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n );\n case \"ManualTask\":\n return (\n <svg width={s} height={s} viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M5 10V6a1 1 0 0 1 2 0v2a1 1 0 0 1 2 0v1a1 1 0 0 1 2 0v2c0 1.7-1.3 3-3 3H6a3 3 0 0 1-3-3V9.5\"\n stroke={c} strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n case \"BusinessRuleTask\":\n return (\n <svg width={s} height={s} viewBox=\"0 0 16 16\" fill=\"none\">\n <rect x=\"2\" y=\"3\" width=\"12\" height=\"10\" rx=\"1\" stroke={c} strokeWidth=\"1.5\" />\n <path d=\"M2 7h12M6 3v10\" stroke={c} strokeWidth=\"1.5\" />\n </svg>\n );\n case \"ReceiveTask\":\n return (\n <svg width={s} height={s} viewBox=\"0 0 16 16\" fill=\"none\">\n <rect x=\"2\" y=\"4\" width=\"12\" height=\"8\" rx=\"1\" stroke={c} strokeWidth=\"1.5\" />\n <path d=\"M2 4l6 5 6-5\" stroke={c} strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n );\n case \"SendTask\":\n return (\n <svg width={s} height={s} viewBox=\"0 0 16 16\" fill={c}>\n <path d=\"M2 4a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4zm1 0l5 4.5L13 4H3z\" />\n </svg>\n );\n case \"CallActivity\":\n return (\n <svg width={s} height={s} viewBox=\"0 0 16 16\" fill=\"none\">\n <rect x=\"3\" y=\"5\" width=\"10\" height=\"6\" rx=\"1\" stroke={c} strokeWidth=\"2\" />\n </svg>\n );\n default:\n return null;\n }\n}\n","import type { TaskMarker } from \"../../elements/types\";\n\ninterface TaskMarkersProps {\n markers: TaskMarker[];\n stroke: string;\n size?: number;\n}\n\nconst MARKER_SIZE = 12;\nconst GAP = 3;\n\nexport function TaskMarkers({ markers, stroke, size = MARKER_SIZE }: TaskMarkersProps) {\n if (!markers || markers.length === 0) return null;\n\n const total = markers.length * size + (markers.length - 1) * GAP;\n // Rendered as a horizontal row centered at bottom of the task\n return (\n <div\n style={{\n position: \"absolute\",\n bottom: 5,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: GAP,\n width: total,\n }}\n >\n {markers.map((m) => (\n <MarkerIcon key={m} marker={m} stroke={stroke} size={size} />\n ))}\n </div>\n );\n}\n\nfunction MarkerIcon({ marker, stroke, size }: { marker: TaskMarker; stroke: string; size: number }) {\n const s = size / 2;\n const sw = 1.3;\n\n return (\n <svg\n width={size}\n height={size}\n viewBox={`${-s} ${-s} ${size} ${size}`}\n style={{ overflow: \"visible\", display: \"block\" }}\n >\n {marker === \"loop\" && (\n // Circular arrow (↻)\n <g fill=\"none\" stroke={stroke} strokeWidth={sw} strokeLinecap=\"round\">\n <path d={`M 0,${-s * 0.85} A ${s * 0.85},${s * 0.85} 0 1 1 ${s * 0.6},${s * 0.6}`} />\n {/* Arrowhead */}\n <polyline points={`${s * 0.2},${s * 0.9} ${s * 0.6},${s * 0.6} ${s * 0.95},${s}`} />\n </g>\n )}\n\n {marker === \"parallelMultiple\" && (\n // Three vertical bars |||\n <g stroke={stroke} strokeWidth={sw} strokeLinecap=\"round\">\n <line x1={-s * 0.55} y1={-s * 0.75} x2={-s * 0.55} y2={s * 0.75} />\n <line x1={0} y1={-s * 0.75} x2={0} y2={s * 0.75} />\n <line x1={s * 0.55} y1={-s * 0.75} x2={s * 0.55} y2={s * 0.75} />\n </g>\n )}\n\n {marker === \"sequentialMultiple\" && (\n // Three horizontal bars ≡\n <g stroke={stroke} strokeWidth={sw} strokeLinecap=\"round\">\n <line x1={-s * 0.75} y1={-s * 0.55} x2={s * 0.75} y2={-s * 0.55} />\n <line x1={-s * 0.75} y1={0} x2={s * 0.75} y2={0} />\n <line x1={-s * 0.75} y1={s * 0.55} x2={s * 0.75} y2={s * 0.55} />\n </g>\n )}\n\n {marker === \"compensation\" && (\n // Two left-pointing triangles <<\n <g fill={stroke} stroke={stroke} strokeWidth={0.5} strokeLinejoin=\"round\">\n <polygon points={`${s * 0.4},${-s * 0.7} ${-s * 0.2},0 ${s * 0.4},${s * 0.7}`} />\n <polygon points={`${s},${-s * 0.7} ${s * 0.4},0 ${s},${s * 0.7}`} />\n </g>\n )}\n </svg>\n );\n}\n\n// Tilde symbol for ad-hoc sub-processes — rendered as text or SVG path\nexport function AdhocMarker({ stroke, size = MARKER_SIZE }: { stroke: string; size?: number }) {\n return (\n <div\n style={{\n position: \"absolute\",\n bottom: 5,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n color: stroke,\n fontSize: size,\n lineHeight: 1,\n fontFamily: \"serif\",\n userSelect: \"none\",\n }}\n >\n ~\n </div>\n );\n}\n","import type { NodeProps } from \"@xyflow/react\";\nimport type { BpmnNodeData } from \"../elements/types\";\nimport { BpmnHandles } from \"./shared/BpmnHandles\";\nimport { BpmnLabel } from \"./shared/BpmnLabel\";\nimport { TaskIcon } from \"./shared/TaskIcon\";\nimport { TaskMarkers } from \"./shared/TaskMarkers\";\nimport { resolveStroke, resolveStrokeWidth, BPMN_THEME } from \"./shared/theme\";\n\nexport function TaskNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const hasMarkers = d.markers && d.markers.length > 0;\n // CallActivity has a thick border per BPMN 2.0 spec\n const borderWidth = d.elementType === \"CallActivity\" ? sw + 2 : sw;\n\n return (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n background: d.color?.fill ?? BPMN_THEME.fill,\n border: `${borderWidth}px solid ${stroke}`,\n borderRadius: 6,\n boxSizing: \"border-box\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: hasMarkers ? \"4px 8px 22px\" : \"4px 8px\",\n position: \"relative\",\n fontFamily: BPMN_THEME.fontFamily,\n }}\n >\n {/* Task type icon — top-left corner */}\n {d.elementType && d.elementType !== \"Task\" && (\n <div style={{ position: \"absolute\", top: 5, left: 5 }}>\n <TaskIcon type={d.elementType} size={14} color={stroke} />\n </div>\n )}\n\n <BpmnLabel style={{ width: \"100%\" }}>\n {d.label ?? d.elementType}\n </BpmnLabel>\n\n {/* Priority indicator — top-right dot */}\n {d.priority && (\n <div\n title={d.priority}\n style={{\n position: \"absolute\",\n top: 5,\n right: 5,\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n background: PRIORITY_COLOR[d.priority],\n }}\n />\n )}\n\n {/* Instance markers — bottom center */}\n {hasMarkers && (\n <TaskMarkers markers={d.markers!} stroke={stroke} />\n )}\n\n <BpmnHandles variant=\"all\" />\n </div>\n );\n}\n\nconst PRIORITY_COLOR: Record<string, string> = {\n critical: \"#ef4444\",\n high: \"#f97316\",\n medium: \"#eab308\",\n low: \"#22c55e\",\n};\n","import type { NodeProps } from \"@xyflow/react\";\nimport type { BpmnNodeData, BpmnElementType } from \"../elements/types\";\nimport { BpmnHandles } from \"./shared/BpmnHandles\";\nimport { BpmnLabel } from \"./shared/BpmnLabel\";\nimport { resolveStroke, resolveStrokeWidth, BPMN_THEME } from \"./shared/theme\";\n\nconst SIZE = 50;\nconst H = SIZE / 2;\nconst DIAMOND = `${H},2 ${SIZE - 2},${H} ${H},${SIZE - 2} 2,${H}`;\n\nfunction GatewaySymbol({ type, stroke }: { type: BpmnElementType; stroke: string }) {\n const c = H;\n switch (type) {\n case \"ExclusiveGateway\":\n return (\n <g stroke={stroke} strokeWidth=\"2.5\" strokeLinecap=\"round\">\n <line x1={c - 7} y1={c - 7} x2={c + 7} y2={c + 7} />\n <line x1={c + 7} y1={c - 7} x2={c - 7} y2={c + 7} />\n </g>\n );\n case \"InclusiveGateway\":\n return <circle cx={c} cy={c} r={8} fill=\"none\" stroke={stroke} strokeWidth=\"2\" />;\n case \"ParallelGateway\":\n return (\n <g stroke={stroke} strokeWidth=\"2.5\" strokeLinecap=\"round\">\n <line x1={c} y1={c - 9} x2={c} y2={c + 9} />\n <line x1={c - 9} y1={c} x2={c + 9} y2={c} />\n </g>\n );\n case \"EventBasedGateway\":\n return (\n <g>\n <circle cx={c} cy={c} r={9} fill=\"none\" stroke={stroke} strokeWidth=\"1.5\" />\n <circle cx={c} cy={c} r={6} fill=\"none\" stroke={stroke} strokeWidth=\"1.2\" />\n <polygon\n points={`${c},${c - 5.5} ${c + 5.2},${c - 1.7} ${c + 3.2},${c + 4.8} ${c - 3.2},${c + 4.8} ${c - 5.2},${c - 1.7}`}\n fill=\"none\"\n stroke={stroke}\n strokeWidth=\"1.4\"\n strokeLinejoin=\"round\"\n />\n </g>\n );\n case \"ComplexGateway\":\n return (\n <g stroke={stroke} strokeWidth=\"2\" strokeLinecap=\"round\">\n <line x1={c} y1={c - 9} x2={c} y2={c + 9} />\n <line x1={c - 9} y1={c} x2={c + 9} y2={c} />\n <line x1={c - 6} y1={c - 6} x2={c + 6} y2={c + 6} />\n <line x1={c + 6} y1={c - 6} x2={c - 6} y2={c + 6} />\n </g>\n );\n default:\n return null;\n }\n}\n\nexport function GatewayNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n\n return (\n <div style={{ width: SIZE, height: SIZE, position: \"relative\" }}>\n <svg width={SIZE} height={SIZE} style={{ overflow: \"visible\", display: \"block\" }}>\n <polygon\n points={DIAMOND}\n fill={d.color?.fill ?? BPMN_THEME.fill}\n stroke={stroke}\n strokeWidth={sw}\n />\n <GatewaySymbol type={d.elementType} stroke={stroke} />\n </svg>\n <BpmnHandles variant=\"all\" />\n <BpmnLabel external>{d.label}</BpmnLabel>\n </div>\n );\n}\n","import type { NodeProps } from \"@xyflow/react\";\nimport type { BpmnNodeData } from \"../elements/types\";\nimport { BpmnHandles } from \"./shared/BpmnHandles\";\nimport { BpmnLabel } from \"./shared/BpmnLabel\";\nimport { TaskMarkers, AdhocMarker } from \"./shared/TaskMarkers\";\nimport { resolveStroke, resolveStrokeWidth, BPMN_THEME } from \"./shared/theme\";\n\nexport function SubProcessNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const variant = d.subProcessVariant ?? \"embedded\";\n const isExpanded = d.isExpanded ?? true;\n const hasMarkers = d.markers && d.markers.length > 0;\n\n const borderStyle = variant === \"event\" ? \"dashed\" : \"solid\";\n\n return (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n background: d.color?.fill ?? \"#f8faff\",\n border: `${sw}px ${borderStyle} ${stroke}`,\n borderRadius: 6,\n boxSizing: \"border-box\",\n position: \"relative\",\n fontFamily: BPMN_THEME.fontFamily,\n }}\n >\n {/* Transaction sub-process: inner border inset 4px */}\n {variant === \"transaction\" && (\n <div\n style={{\n position: \"absolute\",\n inset: 4,\n border: `${sw}px solid ${stroke}`,\n borderRadius: 4,\n pointerEvents: \"none\",\n }}\n />\n )}\n\n <BpmnLabel style={{ padding: \"4px 8px\" }}>{d.label}</BpmnLabel>\n\n {/* Collapsed subprocess marker — centered at bottom */}\n {!isExpanded && (\n <div\n aria-label=\"collapsed-subprocess-marker\"\n style={{\n position: \"absolute\",\n bottom: 6,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n width: 16,\n height: 16,\n border: `1.5px solid ${stroke}`,\n borderRadius: 2,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 12,\n color: stroke,\n background: BPMN_THEME.fill,\n zIndex: 1,\n }}\n >\n +\n </div>\n )}\n\n {/* Ad-hoc tilde marker */}\n {variant === \"adhoc\" && (\n <AdhocMarker stroke={stroke} />\n )}\n\n {/* Instance markers (loop, multi-instance, compensation) */}\n {hasMarkers && (\n <TaskMarkers markers={d.markers!} stroke={stroke} />\n )}\n\n <BpmnHandles variant=\"all\" />\n </div>\n );\n}\n","import type { NodeProps } from \"@xyflow/react\";\nimport type { BpmnNodeData } from \"../elements/types\";\nimport { resolveStroke, resolveStrokeWidth, BPMN_THEME } from \"./shared/theme\";\n\nconst HEADER_WIDTH = 30;\nconst HEADER_HEIGHT = 28;\n\nexport function PoolNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const orientation = d.orientation ?? \"horizontal\";\n const fill = d.color?.fill ?? \"#f5f7ff\";\n const headerFill = d.color?.fill ?? \"#edf0ff\";\n\n if (orientation === \"vertical\") {\n return (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n border: `${sw}px solid ${stroke}`,\n borderRadius: 4,\n boxSizing: \"border-box\",\n background: fill,\n overflow: \"hidden\",\n fontFamily: BPMN_THEME.fontFamily,\n }}\n >\n <div\n aria-label=\"pool-header\"\n style={{\n height: HEADER_HEIGHT,\n minHeight: HEADER_HEIGHT,\n borderBottom: `${sw}px solid ${stroke}`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: headerFill,\n padding: \"0 8px\",\n }}\n >\n <span\n style={{\n fontSize: BPMN_THEME.fontSize,\n fontWeight: 600,\n color: BPMN_THEME.labelColor,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {d.label}\n </span>\n </div>\n\n <div style={{ flex: 1, position: \"relative\" }} />\n </div>\n );\n }\n\n return (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n border: `${sw}px solid ${stroke}`,\n borderRadius: 4,\n boxSizing: \"border-box\",\n background: fill,\n overflow: \"hidden\",\n fontFamily: BPMN_THEME.fontFamily,\n }}\n >\n {/* Vertical header */}\n <div\n aria-label=\"pool-header\"\n style={{\n width: HEADER_WIDTH,\n minWidth: HEADER_WIDTH,\n borderRight: `${sw}px solid ${stroke}`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: headerFill,\n }}\n >\n <span\n style={{\n writingMode: \"vertical-rl\",\n transform: \"rotate(180deg)\",\n fontSize: BPMN_THEME.fontSize,\n fontWeight: 600,\n color: BPMN_THEME.labelColor,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n maxHeight: \"90%\",\n }}\n >\n {d.label}\n </span>\n </div>\n\n {/* Canvas area for lanes / nodes */}\n <div style={{ flex: 1, position: \"relative\" }} />\n </div>\n );\n}\n","import type { NodeProps } from \"@xyflow/react\";\nimport type { BpmnNodeData } from \"../elements/types\";\nimport { resolveStroke, resolveStrokeWidth, BPMN_THEME } from \"./shared/theme\";\n\nconst HEADER_HEIGHT = 24;\nconst HEADER_WIDTH = 28;\n\nexport function LaneNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const orientation = d.orientation ?? \"horizontal\";\n const fill = d.color?.fill ?? \"#fafbff\";\n const headerFill = d.color?.fill ?? \"#f0f3ff\";\n\n if (orientation === \"vertical\") {\n return (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n border: `${sw}px solid ${stroke}`,\n borderRadius: 2,\n boxSizing: \"border-box\",\n background: fill,\n overflow: \"hidden\",\n fontFamily: BPMN_THEME.fontFamily,\n }}\n >\n <div\n aria-label=\"lane-header\"\n style={{\n width: HEADER_WIDTH,\n minWidth: HEADER_WIDTH,\n borderRight: `1px solid ${stroke}`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: headerFill,\n padding: \"6px 0\",\n }}\n >\n <span\n style={{\n writingMode: \"vertical-rl\",\n transform: \"rotate(180deg)\",\n fontSize: BPMN_THEME.fontSize,\n fontWeight: 500,\n color: BPMN_THEME.labelColor,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n maxHeight: \"90%\",\n }}\n >\n {d.label}\n </span>\n </div>\n\n <div style={{ flex: 1, position: \"relative\" }} />\n </div>\n );\n }\n\n return (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n border: `${sw}px solid ${stroke}`,\n borderRadius: 2,\n boxSizing: \"border-box\",\n background: fill,\n overflow: \"hidden\",\n fontFamily: BPMN_THEME.fontFamily,\n }}\n >\n {/* Horizontal header */}\n <div\n aria-label=\"lane-header\"\n style={{\n height: HEADER_HEIGHT,\n minHeight: HEADER_HEIGHT,\n borderBottom: `1px solid ${stroke}`,\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: 8,\n background: headerFill,\n fontSize: BPMN_THEME.fontSize,\n fontWeight: 500,\n color: BPMN_THEME.labelColor,\n }}\n >\n {d.label}\n </div>\n\n {/* Canvas area */}\n <div style={{ flex: 1, position: \"relative\" }} />\n </div>\n );\n}\n","import type { NodeProps } from \"@xyflow/react\";\nimport type { BpmnNodeData } from \"../elements/types\";\nimport { Handle, Position } from \"@xyflow/react\";\nimport { resolveStroke, resolveStrokeWidth, BPMN_THEME } from \"./shared/theme\";\n\nconst HANDLE_STYLE = { opacity: 0, width: 6, height: 6 };\n\nexport function AnnotationNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const orientation = d.orientation ?? \"vertical\";\n\n if (orientation === \"horizontal\") {\n return (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n boxSizing: \"border-box\",\n borderTop: `${sw + 1}px solid ${stroke}`,\n borderLeft: `${sw}px solid ${stroke}`,\n borderRight: `${sw}px solid ${stroke}`,\n padding: \"8px 6px\",\n background: \"transparent\",\n fontFamily: BPMN_THEME.fontFamily,\n fontSize: BPMN_THEME.fontSize,\n color: BPMN_THEME.labelColor,\n lineHeight: 1.4,\n }}\n >\n {d.label}\n <Handle type=\"target\" position={Position.Left} id=\"target-left\" style={HANDLE_STYLE} />\n <Handle type=\"target\" position={Position.Right} id=\"target-right\" style={HANDLE_STYLE} />\n <Handle type=\"source\" position={Position.Left} id=\"source-left\" style={HANDLE_STYLE} />\n <Handle type=\"source\" position={Position.Right} id=\"source-right\" style={HANDLE_STYLE} />\n </div>\n );\n }\n\n return (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n boxSizing: \"border-box\",\n borderLeft: `${sw + 1}px solid ${stroke}`,\n borderTop: `${sw}px solid ${stroke}`,\n borderBottom: `${sw}px solid ${stroke}`,\n padding: \"4px 8px\",\n background: \"transparent\",\n fontFamily: BPMN_THEME.fontFamily,\n fontSize: BPMN_THEME.fontSize,\n color: BPMN_THEME.labelColor,\n lineHeight: 1.4,\n }}\n >\n {d.label}\n <Handle type=\"target\" position={Position.Top} id=\"target-top\" style={HANDLE_STYLE} />\n <Handle type=\"target\" position={Position.Bottom} id=\"target-bottom\" style={HANDLE_STYLE} />\n <Handle type=\"source\" position={Position.Top} id=\"source-top\" style={HANDLE_STYLE} />\n <Handle type=\"source\" position={Position.Bottom} id=\"source-bottom\" style={HANDLE_STYLE} />\n </div>\n );\n}\n","import type { NodeProps } from \"@xyflow/react\";\nimport type { BpmnNodeData } from \"../elements/types\";\nimport { resolveStroke, resolveStrokeWidth, BPMN_THEME } from \"./shared/theme\";\n\nexport function GroupNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n\n return (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n border: `${sw}px dashed ${stroke}`,\n borderRadius: 8,\n boxSizing: \"border-box\",\n background: \"transparent\",\n padding: \"4px 8px\",\n fontFamily: BPMN_THEME.fontFamily,\n fontSize: BPMN_THEME.fontSize,\n color: BPMN_THEME.labelColor,\n fontStyle: \"italic\",\n }}\n >\n {d.label}\n </div>\n );\n}\n","import type { NodeProps } from \"@xyflow/react\";\nimport type { BpmnNodeData } from \"../elements/types\";\nimport { BpmnLabel } from \"./shared/BpmnLabel\";\nimport { BpmnHandles } from \"./shared/BpmnHandles\";\nimport { resolveStroke, resolveStrokeWidth, BPMN_THEME } from \"./shared/theme\";\n\n// ─── Data Object ─────────────────────────────────────────────────────────────\n// Classic document shape: rectangle with folded top-right corner.\n\nconst W = 36;\nconst H = 50;\nconst FOLD = 10;\n\nexport function DataObjectNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n\n const path = [\n `M 0 0`,\n `L ${W - FOLD} 0`,\n `L ${W} ${FOLD}`,\n `L ${W} ${H}`,\n `L 0 ${H}`,\n `Z`,\n ].join(\" \");\n\n const foldPath = [\n `M ${W - FOLD} 0`,\n `L ${W - FOLD} ${FOLD}`,\n `L ${W} ${FOLD}`,\n ].join(\" \");\n\n return (\n <div style={{ width: W, height: H, position: \"relative\" }}>\n <svg width={W} height={H} style={{ overflow: \"visible\", display: \"block\" }}>\n <path d={path} fill={fill} stroke={stroke} strokeWidth={sw} />\n <path d={foldPath} fill=\"none\" stroke={stroke} strokeWidth={sw} />\n </svg>\n <BpmnHandles variant=\"all\" />\n <BpmnLabel external>{d.label}</BpmnLabel>\n </div>\n );\n}\n\n// ─── Data Store ───────────────────────────────────────────────────────────────\n// Classic cylinder / database shape.\n\nconst DS_W = 50;\nconst DS_H = 50;\nconst RX = DS_W / 2;\nconst RY = 7; // ellipse y radius for top/bottom caps\n\nexport function DataStoreNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n\n return (\n <div style={{ width: DS_W, height: DS_H, position: \"relative\" }}>\n <svg width={DS_W} height={DS_H} style={{ overflow: \"visible\", display: \"block\" }}>\n {/* Body */}\n <path\n d={`M 0 ${RY} Q 0 0 ${RX} 0 Q ${DS_W} 0 ${DS_W} ${RY} L ${DS_W} ${DS_H - RY} Q ${DS_W} ${DS_H} ${RX} ${DS_H} Q 0 ${DS_H} 0 ${DS_H - RY} Z`}\n fill={fill}\n stroke={stroke}\n strokeWidth={sw}\n />\n {/* Top ellipse */}\n <ellipse cx={RX} cy={RY} rx={RX} ry={RY} fill={fill} stroke={stroke} strokeWidth={sw} />\n </svg>\n <BpmnHandles variant=\"all\" />\n <BpmnLabel external>{d.label}</BpmnLabel>\n </div>\n );\n}\n","import type { NodeProps } from \"@xyflow/react\";\nimport type { BpmnNodeData } from \"../elements/types\";\nimport { BpmnLabel } from \"./shared/BpmnLabel\";\nimport { BpmnHandles } from \"./shared/BpmnHandles\";\nimport { resolveStroke, resolveStrokeWidth, BPMN_THEME } from \"./shared/theme\";\n\n// ─── Shared document shape constants ─────────────────────────────────────────\n\nconst W = 36;\nconst H = 50;\nconst FOLD = 10;\n\nfunction documentPath(): string {\n return [\n `M 0 0`, `L ${W - FOLD} 0`, `L ${W} ${FOLD}`,\n `L ${W} ${H}`, `L 0 ${H}`, `Z`,\n ].join(\" \");\n}\n\nfunction foldPath(): string {\n return [`M ${W - FOLD} 0`, `L ${W - FOLD} ${FOLD}`, `L ${W} ${FOLD}`].join(\" \");\n}\n\n// Three parallel horizontal lines at the bottom — collection marker\nfunction collectionLines(stroke: string, sw: number) {\n const y = H - 8;\n return (\n <g stroke={stroke} strokeWidth={sw * 0.7} strokeLinecap=\"round\">\n <line x1={W * 0.25} y1={y} x2={W * 0.75} y2={y} />\n <line x1={W * 0.25} y1={y + 3} x2={W * 0.75} y2={y + 3} />\n <line x1={W * 0.25} y1={y + 6} x2={W * 0.75} y2={y + 6} />\n </g>\n );\n}\n\n// ─── DataObjectReference ─────────────────────────────────────────────────────\n// Visually identical to DataObject — semantically a reference on the diagram.\n\nexport function DataObjectReferenceNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n\n return (\n <div style={{ width: W, height: H, position: \"relative\" }}>\n <svg width={W} height={H} style={{ overflow: \"visible\", display: \"block\" }}>\n <path d={documentPath()} fill={fill} stroke={stroke} strokeWidth={sw} />\n <path d={foldPath()} fill=\"none\" stroke={stroke} strokeWidth={sw} />\n {d.isCollection && collectionLines(stroke, sw)}\n </svg>\n <BpmnHandles variant=\"all\" />\n <BpmnLabel external>{d.label}</BpmnLabel>\n </div>\n );\n}\n\n// ─── DataInput ───────────────────────────────────────────────────────────────\n// Document shape + small filled inward-pointing arrow at top-left (BPMN §10.3.3).\n\nexport function DataInputNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n\n return (\n <div style={{ width: W, height: H, position: \"relative\" }}>\n <svg width={W} height={H} style={{ overflow: \"visible\", display: \"block\" }}>\n <path d={documentPath()} fill={fill} stroke={stroke} strokeWidth={sw} />\n <path d={foldPath()} fill=\"none\" stroke={stroke} strokeWidth={sw} />\n {/* Input marker: small arrow pointing right (into the element) */}\n <polygon\n points={`2,4 8,8 2,12`}\n fill=\"none\" stroke={stroke} strokeWidth={sw * 0.8}\n />\n {d.isCollection && collectionLines(stroke, sw)}\n </svg>\n <BpmnHandles variant=\"target\" />\n <BpmnLabel external>{d.label}</BpmnLabel>\n </div>\n );\n}\n\n// ─── DataOutput ──────────────────────────────────────────────────────────────\n// Document shape + small filled outward-pointing arrow at top-left (BPMN §10.3.3).\n\nexport function DataOutputNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n\n return (\n <div style={{ width: W, height: H, position: \"relative\" }}>\n <svg width={W} height={H} style={{ overflow: \"visible\", display: \"block\" }}>\n <path d={documentPath()} fill={fill} stroke={stroke} strokeWidth={sw} />\n <path d={foldPath()} fill=\"none\" stroke={stroke} strokeWidth={sw} />\n {/* Output marker: small filled arrow pointing right (out of the element) */}\n <polygon\n points={`2,4 8,8 2,12`}\n fill={stroke} stroke={stroke} strokeWidth={sw * 0.8}\n />\n {d.isCollection && collectionLines(stroke, sw)}\n </svg>\n <BpmnHandles variant=\"source\" />\n <BpmnLabel external>{d.label}</BpmnLabel>\n </div>\n );\n}\n\n// ─── DataStoreReference ──────────────────────────────────────────────────────\n// Visually identical to DataStore — a reference placed on the diagram.\n\nconst DS_W = 50;\nconst DS_H = 50;\nconst RX = DS_W / 2;\nconst RY = 7;\n\nexport function DataStoreReferenceNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n\n return (\n <div style={{ width: DS_W, height: DS_H, position: \"relative\" }}>\n <svg width={DS_W} height={DS_H} style={{ overflow: \"visible\", display: \"block\" }}>\n <path\n d={`M 0 ${RY} Q 0 0 ${RX} 0 Q ${DS_W} 0 ${DS_W} ${RY} L ${DS_W} ${DS_H - RY} Q ${DS_W} ${DS_H} ${RX} ${DS_H} Q 0 ${DS_H} 0 ${DS_H - RY} Z`}\n fill={fill} stroke={stroke} strokeWidth={sw}\n />\n <ellipse cx={RX} cy={RY} rx={RX} ry={RY} fill={fill} stroke={stroke} strokeWidth={sw} />\n </svg>\n <BpmnHandles variant=\"all\" />\n <BpmnLabel external>{d.label}</BpmnLabel>\n </div>\n );\n}\n","import type { NodeProps } from \"@xyflow/react\";\nimport type { BpmnNodeData } from \"../elements/types\";\nimport { BpmnLabel } from \"./shared/BpmnLabel\";\nimport { BpmnHandles } from \"./shared/BpmnHandles\";\nimport { resolveStroke, resolveStrokeWidth, BPMN_THEME } from \"./shared/theme\";\n\n// BPMN 2.0 §12 — Conversation nodes are rendered as hexagons.\n// W:H ratio ≈ 1.15 (flat-top hexagon).\n\nconst W = 60;\nconst H = 52;\n// Flat-top hexagon: side indentation = W/4\nconst INDENT = W / 4;\n\nfunction hexPoints(): string {\n return [\n `0,${H / 2}`,\n `${INDENT},0`,\n `${W - INDENT},0`,\n `${W},${H / 2}`,\n `${W - INDENT},${H}`,\n `${INDENT},${H}`,\n ].join(\" \");\n}\n\n// Shared hexagon shell\nfunction HexShell({\n fill, stroke, sw, thick = false,\n}: { fill: string; stroke: string; sw: number; thick?: boolean }) {\n return (\n <polygon\n points={hexPoints()}\n fill={fill}\n stroke={stroke}\n strokeWidth={thick ? sw + 2 : sw}\n />\n );\n}\n\n// ─── Conversation ─────────────────────────────────────────────────────────────\n\nexport function ConversationNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n\n return (\n <div style={{ width: W, height: H, position: \"relative\" }}>\n <svg width={W} height={H} style={{ overflow: \"visible\", display: \"block\" }}>\n <HexShell fill={fill} stroke={stroke} sw={sw} />\n </svg>\n <BpmnHandles variant=\"all\" />\n <BpmnLabel style={{ textAlign: \"center\" }}>{d.label}</BpmnLabel>\n </div>\n );\n}\n\n// ─── SubConversation ──────────────────────────────────────────────────────────\n// Hexagon + expand/collapse marker (+ box) at the bottom center.\n\nexport function SubConversationNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n\n return (\n <div style={{ width: W, height: H, position: \"relative\" }}>\n <svg width={W} height={H} style={{ overflow: \"visible\", display: \"block\" }}>\n <HexShell fill={fill} stroke={stroke} sw={sw} />\n {/* Collapse marker */}\n <rect x={W / 2 - 7} y={H - 15} width={14} height={12} rx={2}\n fill={fill} stroke={stroke} strokeWidth={sw * 0.8} />\n <text x={W / 2} y={H - 6} textAnchor=\"middle\" fontSize={10} fill={stroke} fontFamily={BPMN_THEME.fontFamily}>+</text>\n </svg>\n <BpmnHandles variant=\"all\" />\n <BpmnLabel style={{ textAlign: \"center\" }}>{d.label}</BpmnLabel>\n </div>\n );\n}\n\n// ─── CallConversation ─────────────────────────────────────────────────────────\n// Hexagon with thick border + collapse marker.\n\nexport function CallConversationNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n\n return (\n <div style={{ width: W, height: H, position: \"relative\" }}>\n <svg width={W} height={H} style={{ overflow: \"visible\", display: \"block\" }}>\n <HexShell fill={fill} stroke={stroke} sw={sw} thick />\n {/* Collapse marker */}\n <rect x={W / 2 - 7} y={H - 15} width={14} height={12} rx={2}\n fill={fill} stroke={stroke} strokeWidth={sw * 0.8} />\n <text x={W / 2} y={H - 6} textAnchor=\"middle\" fontSize={10} fill={stroke} fontFamily={BPMN_THEME.fontFamily}>+</text>\n </svg>\n <BpmnHandles variant=\"all\" />\n <BpmnLabel style={{ textAlign: \"center\" }}>{d.label}</BpmnLabel>\n </div>\n );\n}\n","import type { NodeProps } from \"@xyflow/react\";\nimport type { BpmnNodeData } from \"../elements/types\";\nimport { BpmnHandles } from \"./shared/BpmnHandles\";\nimport { resolveStroke, resolveStrokeWidth, BPMN_THEME } from \"./shared/theme\";\n\n// BPMN 2.0 §11 — Choreography tasks are banded rectangles.\n// Layout: top participant band | task name band | bottom participant band.\n// The initiating participant's band is white; responding bands are filled gray.\n\nconst BAND_H = 20; // height of each participant band\nconst RADIUS = 6;\n\ninterface ChoreographyShellProps {\n d: BpmnNodeData;\n stroke: string;\n sw: number;\n thick?: boolean; // CallChoreography uses a thick border\n collapsed?: boolean; // SubChoreography shows a + marker\n}\n\nfunction ChoreographyShell({ d, stroke, sw, thick = false, collapsed = false }: ChoreographyShellProps) {\n const participants = d.participants ?? [\n { name: \"Initiator\", isInitiating: true },\n { name: \"Responder\", isInitiating: false },\n ];\n const fill = d.color?.fill ?? BPMN_THEME.fill;\n const respondFill = \"#c8d8e8\"; // light blue-gray for responding participant bands\n const bw = thick ? sw + 2 : sw;\n\n // Separate initiating from responding — show first initiating at top, rest at bottom\n const [topParticipant, ...rest] = participants;\n const bottomParticipants = rest;\n\n return (\n <>\n {/* Top participant band */}\n <rect x={0} y={0} width=\"100%\" height={BAND_H}\n fill={topParticipant.isInitiating ? fill : respondFill}\n stroke={stroke} strokeWidth={bw}\n rx={RADIUS} ry={RADIUS}\n />\n {/* Hide bottom-radius of top band */}\n <rect x={0} y={BAND_H / 2} width=\"100%\" height={BAND_H / 2}\n fill={topParticipant.isInitiating ? fill : respondFill}\n stroke=\"none\"\n />\n\n {/* Middle name band */}\n <rect x={0} y={BAND_H} width=\"100%\" height={`calc(100% - ${BAND_H * (1 + bottomParticipants.length)}px)`}\n fill={fill} stroke={stroke} strokeWidth={bw}\n />\n\n {/* Bottom participant bands */}\n {bottomParticipants.map((p, i) => {\n const y = `calc(100% - ${BAND_H * (bottomParticipants.length - i)}px)`;\n return (\n <g key={i}>\n <rect x={0} y={y} width=\"100%\" height={BAND_H}\n fill={p.isInitiating ? fill : respondFill}\n stroke={stroke} strokeWidth={bw}\n />\n </g>\n );\n })}\n\n {/* Outer border — drawn last so it's on top */}\n <rect x={bw / 2} y={bw / 2}\n width={`calc(100% - ${bw}px)`}\n height={`calc(100% - ${bw}px)`}\n fill=\"none\" stroke={stroke} strokeWidth={bw}\n rx={RADIUS} ry={RADIUS}\n />\n\n {/* Task name */}\n <foreignObject x={4} y={BAND_H} width=\"calc(100% - 8px)\"\n height={`calc(100% - ${BAND_H * (1 + bottomParticipants.length)}px)`}\n >\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: BPMN_THEME.fontSize,\n fontFamily: BPMN_THEME.fontFamily,\n color: stroke,\n textAlign: \"center\",\n padding: \"2px 4px\",\n boxSizing: \"border-box\",\n overflow: \"hidden\",\n }}\n >\n {d.label ?? \"\"}\n </div>\n </foreignObject>\n\n {/* Participant names */}\n <text x=\"50%\" y={BAND_H * 0.65} textAnchor=\"middle\"\n fontSize={BPMN_THEME.fontSize - 1} fontFamily={BPMN_THEME.fontFamily}\n fill={stroke} clipPath={undefined}\n >\n {topParticipant.name}\n </text>\n\n {bottomParticipants.map((p, i) => (\n <text\n key={i}\n x=\"50%\"\n y={`calc(100% - ${BAND_H * (bottomParticipants.length - i) - BAND_H * 0.35}px)`}\n textAnchor=\"middle\"\n fontSize={BPMN_THEME.fontSize - 1}\n fontFamily={BPMN_THEME.fontFamily}\n fill={stroke}\n >\n {p.name}\n </text>\n ))}\n\n {/* Collapse marker for SubChoreography */}\n {collapsed && (\n <g>\n <rect x=\"50%\" y=\"calc(100% - 22px)\"\n width={14} height={12}\n transform=\"translate(-7, 0)\"\n rx={2} fill={fill} stroke={stroke} strokeWidth={sw * 0.8}\n />\n <text x=\"50%\" y=\"calc(100% - 13px)\"\n textAnchor=\"middle\" fontSize={10}\n fill={stroke} fontFamily={BPMN_THEME.fontFamily}\n >+</text>\n </g>\n )}\n </>\n );\n}\n\n// ─── ChoreographyTask ─────────────────────────────────────────────────────────\n\nexport function ChoreographyTaskNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n\n return (\n <div style={{ width: \"100%\", height: \"100%\", position: \"relative\" }}>\n <svg width=\"100%\" height=\"100%\" style={{ overflow: \"visible\", display: \"block\" }}>\n <ChoreographyShell d={d} stroke={stroke} sw={sw} />\n </svg>\n <BpmnHandles variant=\"all\" />\n </div>\n );\n}\n\n// ─── SubChoreography ──────────────────────────────────────────────────────────\n\nexport function SubChoreographyNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n\n return (\n <div style={{ width: \"100%\", height: \"100%\", position: \"relative\" }}>\n <svg width=\"100%\" height=\"100%\" style={{ overflow: \"visible\", display: \"block\" }}>\n <ChoreographyShell d={d} stroke={stroke} sw={sw} collapsed />\n </svg>\n <BpmnHandles variant=\"all\" />\n </div>\n );\n}\n\n// ─── CallChoreography ─────────────────────────────────────────────────────────\n\nexport function CallChoreographyNode({ data, selected }: NodeProps) {\n const d = data as BpmnNodeData;\n const stroke = resolveStroke(selected, d.color?.stroke);\n const sw = resolveStrokeWidth(selected);\n\n return (\n <div style={{ width: \"100%\", height: \"100%\", position: \"relative\" }}>\n <svg width=\"100%\" height=\"100%\" style={{ overflow: \"visible\", display: \"block\" }}>\n <ChoreographyShell d={d} stroke={stroke} sw={sw} thick collapsed />\n </svg>\n <BpmnHandles variant=\"all\" />\n </div>\n );\n}\n","import type { NodeTypes } from \"@xyflow/react\";\nimport { StartEventNode } from \"./StartEventNode\";\nimport { EndEventNode } from \"./EndEventNode\";\nimport {\n IntermediateCatchEventNode,\n IntermediateThrowEventNode,\n BoundaryEventNode,\n} from \"./IntermediateEventNode\";\nimport { TaskNode } from \"./TaskNode\";\nimport { GatewayNode } from \"./GatewayNode\";\nimport { SubProcessNode } from \"./SubProcessNode\";\nimport { PoolNode } from \"./PoolNode\";\nimport { LaneNode } from \"./LaneNode\";\nimport { AnnotationNode } from \"./AnnotationNode\";\nimport { GroupNode } from \"./GroupNode\";\nimport { DataObjectNode, DataStoreNode } from \"./DataNode\";\nimport {\n DataObjectReferenceNode,\n DataInputNode,\n DataOutputNode,\n DataStoreReferenceNode,\n} from \"./DataRefNode\";\nimport {\n ConversationNode,\n SubConversationNode,\n CallConversationNode,\n} from \"./ConversationNode\";\nimport {\n ChoreographyTaskNode,\n SubChoreographyNode,\n CallChoreographyNode,\n} from \"./ChoreographyNode\";\n\n/** Pass this object to `DiagramCanvas` as `nodeTypes`. All BPMN 2.0 element types are wired here. */\nexport const BPMN_NODE_TYPES: NodeTypes = {\n // Events\n StartEvent: StartEventNode,\n EndEvent: EndEventNode,\n IntermediateCatchEvent: IntermediateCatchEventNode,\n IntermediateThrowEvent: IntermediateThrowEventNode,\n BoundaryEvent: BoundaryEventNode,\n // Tasks — differentiated by data.elementType\n Task: TaskNode,\n UserTask: TaskNode,\n ServiceTask: TaskNode,\n ScriptTask: TaskNode,\n ManualTask: TaskNode,\n BusinessRuleTask: TaskNode,\n ReceiveTask: TaskNode,\n SendTask: TaskNode,\n CallActivity: TaskNode,\n // Gateways — differentiated by data.elementType\n ExclusiveGateway: GatewayNode,\n InclusiveGateway: GatewayNode,\n ParallelGateway: GatewayNode,\n EventBasedGateway: GatewayNode,\n ComplexGateway: GatewayNode,\n // Containers\n SubProcess: SubProcessNode,\n Pool: PoolNode,\n Lane: LaneNode,\n // Artifacts\n Annotation: AnnotationNode,\n Group: GroupNode,\n // Data\n DataObject: DataObjectNode,\n DataObjectReference: DataObjectReferenceNode,\n DataInput: DataInputNode,\n DataOutput: DataOutputNode,\n DataStore: DataStoreNode,\n DataStoreReference: DataStoreReferenceNode,\n // Conversation (§12)\n Conversation: ConversationNode,\n SubConversation: SubConversationNode,\n CallConversation: CallConversationNode,\n // Choreography (§11)\n ChoreographyTask: ChoreographyTaskNode,\n SubChoreography: SubChoreographyNode,\n CallChoreography: CallChoreographyNode,\n};\n"]}
@@ -0,0 +1,300 @@
1
+ 'use strict';
2
+
3
+ var react = require('@xyflow/react');
4
+ var routing = require('@aranzatech/diagrams-core/routing');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ // src/edges/SequenceFlowEdge.tsx
8
+
9
+ // src/edges/path.ts
10
+ function getEdgePoints(sourceX, sourceY, targetX, targetY, routingPoints) {
11
+ if (routingPoints && routingPoints.length >= 2) {
12
+ return routingPoints;
13
+ }
14
+ return [
15
+ { x: sourceX, y: sourceY },
16
+ { x: targetX, y: targetY }
17
+ ];
18
+ }
19
+ function getPolylineMidpoint(points) {
20
+ if (points.length === 0) return { x: 0, y: 0 };
21
+ if (points.length === 1) return points[0];
22
+ let total = 0;
23
+ const lengths = [];
24
+ for (let i = 1; i < points.length; i += 1) {
25
+ const dx = points[i].x - points[i - 1].x;
26
+ const dy = points[i].y - points[i - 1].y;
27
+ const length = Math.hypot(dx, dy);
28
+ lengths.push(length);
29
+ total += length;
30
+ }
31
+ const halfway = total / 2;
32
+ let traversed = 0;
33
+ for (let i = 1; i < points.length; i += 1) {
34
+ const length = lengths[i - 1];
35
+ if (traversed + length >= halfway) {
36
+ const ratio = length === 0 ? 0 : (halfway - traversed) / length;
37
+ return {
38
+ x: points[i - 1].x + (points[i].x - points[i - 1].x) * ratio,
39
+ y: points[i - 1].y + (points[i].y - points[i - 1].y) * ratio
40
+ };
41
+ }
42
+ traversed += length;
43
+ }
44
+ return points[points.length - 1];
45
+ }
46
+ function getSegmentAngle(points) {
47
+ if (points.length < 2) return 0;
48
+ const from = points[0];
49
+ const to = points[1];
50
+ return Math.atan2(to.y - from.y, to.x - from.x);
51
+ }
52
+ function getDefaultFlowMarkerPath(points) {
53
+ if (points.length < 2) return null;
54
+ const start = points[0];
55
+ const angle = getSegmentAngle(points);
56
+ const anchorX = start.x + Math.cos(angle) * 16;
57
+ const anchorY = start.y + Math.sin(angle) * 16;
58
+ const normalAngle = angle + Math.PI / 2;
59
+ const half = 7;
60
+ const x1 = anchorX + Math.cos(normalAngle) * half;
61
+ const y1 = anchorY + Math.sin(normalAngle) * half;
62
+ const x2 = anchorX - Math.cos(normalAngle) * half;
63
+ const y2 = anchorY - Math.sin(normalAngle) * half;
64
+ return `M ${x1} ${y1} L ${x2} ${y2}`;
65
+ }
66
+ function SequenceFlowEdge({
67
+ id,
68
+ sourceX,
69
+ sourceY,
70
+ targetX,
71
+ targetY,
72
+ sourcePosition,
73
+ targetPosition,
74
+ data,
75
+ label,
76
+ markerEnd,
77
+ style,
78
+ selected
79
+ }) {
80
+ const d = data;
81
+ const points = d?.routingPoints;
82
+ const polyline = getEdgePoints(sourceX, sourceY, targetX, targetY, points);
83
+ const path = points && points.length >= 2 ? routing.pointsToSvgPath(points) : routing.getOrthogonalPath(sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition);
84
+ const midpoint = getPolylineMidpoint(polyline);
85
+ const defaultMarkerPath = d?.isDefault ? getDefaultFlowMarkerPath(polyline) : null;
86
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
87
+ /* @__PURE__ */ jsxRuntime.jsx(
88
+ react.BaseEdge,
89
+ {
90
+ id,
91
+ path,
92
+ ...d?.conditionExpression ? { markerStart: "url(#bpmn-diamond-open)" } : {},
93
+ markerEnd: markerEnd ?? "url(#bpmn-arrow)",
94
+ style: {
95
+ stroke: selected ? "#1a56db" : "#404040",
96
+ strokeWidth: selected ? 2 : 1.5,
97
+ ...style ?? {}
98
+ }
99
+ }
100
+ ),
101
+ defaultMarkerPath && /* @__PURE__ */ jsxRuntime.jsx(
102
+ "path",
103
+ {
104
+ d: defaultMarkerPath,
105
+ fill: "none",
106
+ stroke: selected ? "#1a56db" : "#404040",
107
+ strokeWidth: selected ? 2 : 1.5,
108
+ strokeLinecap: "round",
109
+ "data-testid": "bpmn-default-flow-marker"
110
+ }
111
+ ),
112
+ (label ?? d?.label) && /* @__PURE__ */ jsxRuntime.jsx(react.EdgeLabelRenderer, { children: /* @__PURE__ */ jsxRuntime.jsx(
113
+ "div",
114
+ {
115
+ style: {
116
+ position: "absolute",
117
+ transform: `translate(-50%,-50%) translate(${midpoint.x}px,${midpoint.y}px)`,
118
+ fontSize: 11,
119
+ fontFamily: "Inter, system-ui, sans-serif",
120
+ background: "rgba(255,255,255,0.85)",
121
+ padding: "1px 4px",
122
+ borderRadius: 2,
123
+ pointerEvents: "all"
124
+ },
125
+ className: "nodrag nopan",
126
+ children: label ?? d?.label
127
+ }
128
+ ) })
129
+ ] });
130
+ }
131
+ function MessageFlowEdge({
132
+ id,
133
+ sourceX,
134
+ sourceY,
135
+ targetX,
136
+ targetY,
137
+ sourcePosition,
138
+ targetPosition,
139
+ data,
140
+ label,
141
+ markerEnd,
142
+ style,
143
+ selected
144
+ }) {
145
+ const d = data;
146
+ const points = d?.routingPoints;
147
+ const polyline = getEdgePoints(sourceX, sourceY, targetX, targetY, points);
148
+ const path = points && points.length >= 2 ? routing.pointsToSvgPath(points) : routing.getOrthogonalPath(sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition);
149
+ const midpoint = getPolylineMidpoint(polyline);
150
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
151
+ /* @__PURE__ */ jsxRuntime.jsx(
152
+ react.BaseEdge,
153
+ {
154
+ id,
155
+ path,
156
+ markerStart: "url(#bpmn-circle-open)",
157
+ markerEnd: markerEnd ?? "url(#bpmn-arrow-open)",
158
+ style: {
159
+ stroke: selected ? "#1a56db" : "#404040",
160
+ strokeWidth: selected ? 2 : 1.5,
161
+ strokeDasharray: "6 3",
162
+ ...style ?? {}
163
+ }
164
+ }
165
+ ),
166
+ (label ?? d?.label) && /* @__PURE__ */ jsxRuntime.jsx(react.EdgeLabelRenderer, { children: /* @__PURE__ */ jsxRuntime.jsx(
167
+ "div",
168
+ {
169
+ style: {
170
+ position: "absolute",
171
+ transform: `translate(-50%,-50%) translate(${midpoint.x}px,${midpoint.y}px)`,
172
+ fontSize: 11,
173
+ fontFamily: "Inter, system-ui, sans-serif",
174
+ background: "rgba(255,255,255,0.85)",
175
+ padding: "1px 4px",
176
+ borderRadius: 2,
177
+ pointerEvents: "all"
178
+ },
179
+ className: "nodrag nopan",
180
+ children: label ?? d?.label
181
+ }
182
+ ) })
183
+ ] });
184
+ }
185
+ function AssociationEdge({
186
+ id,
187
+ sourceX,
188
+ sourceY,
189
+ targetX,
190
+ targetY,
191
+ sourcePosition,
192
+ targetPosition,
193
+ data,
194
+ style,
195
+ selected
196
+ }) {
197
+ const d = data;
198
+ const points = d?.routingPoints;
199
+ const direction = d?.associationDirection ?? "none";
200
+ const path = points && points.length >= 2 ? routing.pointsToSvgPath(points) : routing.getOrthogonalPath(sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition);
201
+ return /* @__PURE__ */ jsxRuntime.jsx(
202
+ react.BaseEdge,
203
+ {
204
+ id,
205
+ path,
206
+ ...direction === "both" ? { markerStart: "url(#bpmn-arrow-open)" } : {},
207
+ ...direction === "one" || direction === "both" ? { markerEnd: "url(#bpmn-arrow-open)" } : {},
208
+ style: {
209
+ stroke: selected ? "#1a56db" : "#888",
210
+ strokeWidth: 1,
211
+ strokeDasharray: "3 3",
212
+ ...style ?? {}
213
+ }
214
+ }
215
+ );
216
+ }
217
+ function DataAssociationEdge({
218
+ id,
219
+ sourceX,
220
+ sourceY,
221
+ targetX,
222
+ targetY,
223
+ sourcePosition,
224
+ targetPosition,
225
+ data,
226
+ style,
227
+ selected
228
+ }) {
229
+ const d = data;
230
+ const points = d?.routingPoints;
231
+ const path = points && points.length >= 2 ? routing.pointsToSvgPath(points) : routing.getOrthogonalPath(sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition);
232
+ return /* @__PURE__ */ jsxRuntime.jsx(
233
+ react.BaseEdge,
234
+ {
235
+ id,
236
+ path,
237
+ markerEnd: "url(#bpmn-arrow-open)",
238
+ style: {
239
+ stroke: selected ? "#1a56db" : "#888",
240
+ strokeWidth: 1,
241
+ strokeDasharray: "3 3",
242
+ ...style ?? {}
243
+ }
244
+ }
245
+ );
246
+ }
247
+
248
+ // src/nodes/shared/theme.ts
249
+ var BPMN_THEME = {
250
+ stroke: "#404040",
251
+ fontFamily: "Inter, system-ui, sans-serif",
252
+ fontSize: 11};
253
+ function ConversationLinkEdge({
254
+ sourceX,
255
+ sourceY,
256
+ targetX,
257
+ targetY,
258
+ data,
259
+ markerEnd
260
+ }) {
261
+ const d = data;
262
+ const stroke = BPMN_THEME.stroke;
263
+ const [path] = react.getStraightPath({ sourceX, sourceY, targetX, targetY });
264
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
265
+ /* @__PURE__ */ jsxRuntime.jsx(
266
+ react.BaseEdge,
267
+ {
268
+ path,
269
+ ...markerEnd ? { markerEnd } : {},
270
+ style: { stroke, strokeWidth: 5, fill: "none" }
271
+ }
272
+ ),
273
+ /* @__PURE__ */ jsxRuntime.jsx(
274
+ react.BaseEdge,
275
+ {
276
+ path,
277
+ style: { stroke: "#ffffff", strokeWidth: 2, fill: "none" }
278
+ }
279
+ ),
280
+ d?.label && /* @__PURE__ */ jsxRuntime.jsx("text", { fontSize: BPMN_THEME.fontSize, fontFamily: BPMN_THEME.fontFamily, fill: stroke, children: /* @__PURE__ */ jsxRuntime.jsx("textPath", { href: `#${path}`, startOffset: "50%", textAnchor: "middle", children: d.label }) })
281
+ ] });
282
+ }
283
+
284
+ // src/edges/edgeTypes.ts
285
+ var BPMN_EDGE_TYPES = {
286
+ sequenceFlow: SequenceFlowEdge,
287
+ messageFlow: MessageFlowEdge,
288
+ association: AssociationEdge,
289
+ dataAssociation: DataAssociationEdge,
290
+ conversationLink: ConversationLinkEdge
291
+ };
292
+
293
+ exports.AssociationEdge = AssociationEdge;
294
+ exports.BPMN_EDGE_TYPES = BPMN_EDGE_TYPES;
295
+ exports.ConversationLinkEdge = ConversationLinkEdge;
296
+ exports.DataAssociationEdge = DataAssociationEdge;
297
+ exports.MessageFlowEdge = MessageFlowEdge;
298
+ exports.SequenceFlowEdge = SequenceFlowEdge;
299
+ //# sourceMappingURL=index.cjs.map
300
+ //# sourceMappingURL=index.cjs.map