@aranzatech/diagrams-bpmn 0.2.15 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -4
- package/dist/{catalog-xOMF2ifW.d.cts → catalog-DAGDhO-D.d.cts} +1 -1
- package/dist/{catalog-CK3_4cOb.d.ts → catalog-Q1QmKLDD.d.ts} +1 -1
- package/dist/{chunk-YUE5EM3W.js → chunk-334WN4JZ.js} +276 -107
- package/dist/chunk-334WN4JZ.js.map +1 -0
- package/dist/chunk-77L6O76M.js +3 -0
- package/dist/chunk-77L6O76M.js.map +1 -0
- package/dist/{chunk-QSMP34CT.js → chunk-CPFUQM6H.js} +80 -44
- package/dist/chunk-CPFUQM6H.js.map +1 -0
- package/dist/{chunk-XMVV7FRZ.js → chunk-FFWJA5BV.js} +3 -3
- package/dist/{chunk-XMVV7FRZ.js.map → chunk-FFWJA5BV.js.map} +1 -1
- package/dist/{chunk-FBTGIYZS.js → chunk-JEGYVEJO.js} +80 -3
- package/dist/{chunk-FBTGIYZS.js.map → chunk-JEGYVEJO.js.map} +1 -1
- package/dist/chunk-TB6V4S5N.js +104 -0
- package/dist/chunk-TB6V4S5N.js.map +1 -0
- package/dist/{chunk-HOWK3ZOO.js → chunk-YAYZW45I.js} +379 -16
- package/dist/chunk-YAYZW45I.js.map +1 -0
- package/dist/edges/index.cjs +78 -42
- package/dist/edges/index.cjs.map +1 -1
- package/dist/edges/index.js +1 -1
- package/dist/elements/index.cjs +78 -0
- package/dist/elements/index.cjs.map +1 -1
- package/dist/elements/index.d.cts +24 -5
- package/dist/elements/index.d.ts +24 -5
- package/dist/elements/index.js +1 -1
- package/dist/elk-QT7H4252.js +6 -0
- package/dist/elk-QT7H4252.js.map +1 -0
- package/dist/extensions/index.cjs +108 -0
- package/dist/extensions/index.cjs.map +1 -0
- package/dist/extensions/index.d.cts +145 -0
- package/dist/extensions/index.d.ts +145 -0
- package/dist/extensions/index.js +4 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/index.cjs +922 -160
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -5
- package/dist/index.d.ts +7 -5
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/layout/index.cjs +366 -90
- package/dist/layout/index.cjs.map +1 -1
- package/dist/layout/index.d.cts +4 -3
- package/dist/layout/index.d.ts +4 -3
- package/dist/layout/index.js +358 -92
- package/dist/layout/index.js.map +1 -1
- package/dist/modeling/index.cjs +387 -13
- package/dist/modeling/index.cjs.map +1 -1
- package/dist/modeling/index.d.cts +62 -4
- package/dist/modeling/index.d.ts +62 -4
- package/dist/modeling/index.js +1 -1
- package/dist/types-BX_o95GC.d.cts +40 -0
- package/dist/{types-y-ZbX-ff.d.ts → types-BYN4Zuee.d.cts} +15 -1
- package/dist/{types-y-ZbX-ff.d.cts → types-BYN4Zuee.d.ts} +15 -1
- package/dist/{types-jIDz306Y.d.cts → types-CggktCqr.d.cts} +4 -1
- package/dist/types-D7zel9dq.d.ts +40 -0
- package/dist/{types-DG5yPKld.d.ts → types-DmDODKlh.d.ts} +4 -1
- package/dist/validation/index.cjs +81 -125
- package/dist/validation/index.cjs.map +1 -1
- package/dist/validation/index.d.cts +22 -5
- package/dist/validation/index.d.ts +22 -5
- package/dist/validation/index.js +82 -126
- package/dist/validation/index.js.map +1 -1
- package/dist/xml/index.cjs +319 -49
- package/dist/xml/index.cjs.map +1 -1
- package/dist/xml/index.d.cts +5 -3
- package/dist/xml/index.d.ts +5 -3
- package/dist/xml/index.js +2 -1
- package/package.json +6 -1
- package/dist/chunk-HOWK3ZOO.js.map +0 -1
- package/dist/chunk-QSMP34CT.js.map +0 -1
- package/dist/chunk-YUE5EM3W.js.map +0 -1
- package/dist/elk-FSFIEL6O.js +0 -6
- package/dist/elk-FSFIEL6O.js.map +0 -1
- package/dist/guards-C70uIY_O.d.cts +0 -16
- package/dist/guards-foB6XIfZ.d.ts +0 -16
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getBpmnNodeSize } from './chunk-
|
|
1
|
+
import { getBpmnNodeSize } from './chunk-YAYZW45I.js';
|
|
2
2
|
import { elkLayout } from '@aranzatech/diagrams-core/layout';
|
|
3
3
|
|
|
4
4
|
var BPMN_CONTAINER_TYPES = /* @__PURE__ */ new Set([
|
|
@@ -159,5 +159,5 @@ async function bpmnElkLayout(nodes, edges) {
|
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
export { bpmnElkLayout };
|
|
162
|
-
//# sourceMappingURL=chunk-
|
|
163
|
-
//# sourceMappingURL=chunk-
|
|
162
|
+
//# sourceMappingURL=chunk-FFWJA5BV.js.map
|
|
163
|
+
//# sourceMappingURL=chunk-FFWJA5BV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/layout/elk.ts"],"names":[],"mappings":"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","file":"chunk-XMVV7FRZ.js","sourcesContent":["import { elkLayout } from \"@aranzatech/diagrams-core/layout\";\nimport type { DiagramNode, DiagramEdge } from \"@aranzatech/diagrams-core/types\";\nimport type { BpmnRFNode, BpmnRFEdge } from \"../xml/types\";\nimport type { BpmnElementType } from \"../elements/types\";\nimport { getBpmnNodeSize } from \"../modeling\";\n\n// Container types that ELK auto-sizes based on their children.\nconst BPMN_CONTAINER_TYPES = new Set<BpmnElementType>([\n \"Pool\",\n \"Lane\",\n \"SubProcess\",\n \"Transaction\",\n \"EventSubProcess\",\n \"AdHocSubProcess\",\n]);\n\nconst CONTAINER_MIN_SIZE: Partial<Record<BpmnElementType, { w: number; h: number }>> = {\n Pool: { w: 720, h: 200 },\n Lane: { w: 600, h: 160 },\n SubProcess: { w: 240, h: 140 },\n Transaction: { w: 240, h: 140 },\n EventSubProcess: { w: 240, h: 140 },\n AdHocSubProcess: { w: 240, h: 140 },\n};\n\n// Padding inside each container type.\n// Left padding for Pool/Lane accounts for the vertical label strip (~30px) + breathing room.\nconst CONTAINER_PADDING: Partial<Record<BpmnElementType, string>> = {\n Pool: \"[top=30,left=60,bottom=30,right=50]\",\n Lane: \"[top=40,left=70,bottom=40,right=50]\",\n SubProcess: \"[top=30,left=40,bottom=30,right=40]\",\n Transaction: \"[top=30,left=40,bottom=30,right=40]\",\n EventSubProcess: \"[top=30,left=40,bottom=30,right=40]\",\n AdHocSubProcess: \"[top=30,left=40,bottom=30,right=40]\",\n};\n\n/**\n * ELK-based auto-layout for BPMN diagrams.\n *\n * Spacing philosophy: fixed, generous values that scale consistently\n * regardless of diagram size. \"Air\" between elements is not waste —\n * it is what makes the flow readable to the human eye.\n *\n * Direction policy:\n * - Root: RIGHT — free nodes and pools flow LR on the canvas.\n * - Pool with Lanes: DOWN internally so lanes stack top-to-bottom;\n * the pool itself is placed LR on the canvas.\n * - Lane / SubProcess / Pool-without-lanes: RIGHT — content flows LR.\n * - Each container runs its own INCLUDE_CHILDREN pass (per-container\n * hierarchyHandling) so cross-lane edges are routed correctly without\n * the global RIGHT direction forcing Lane containers sideways.\n * - Root uses INHERIT so each pool is laid out independently.\n * - Post-processing equalises Lane widths within each Pool so all Lanes\n * span the full Pool width.\n */\nexport async function bpmnElkLayout(\n nodes: BpmnRFNode[],\n edges: BpmnRFEdge[],\n): Promise<{ nodes: BpmnRFNode[]; edges: BpmnRFEdge[] }> {\n // Pools that directly contain at least one Lane.\n const poolsWithLanes = new Set<string>();\n for (const node of nodes) {\n if (node.data.elementType === \"Lane\" && node.parentId) {\n poolsWithLanes.add(node.parentId);\n }\n }\n\n const result = await elkLayout(\n nodes as unknown as DiagramNode[],\n edges as unknown as DiagramEdge[],\n {\n direction: \"LR\",\n getNodeSize: (node) => {\n const bNode = node as unknown as BpmnRFNode;\n if (BPMN_CONTAINER_TYPES.has(bNode.data.elementType)) return undefined;\n return getBpmnNodeSize(bNode);\n },\n isContainerNode: (node) =>\n BPMN_CONTAINER_TYPES.has((node as unknown as BpmnRFNode).data.elementType),\n getNodeLayoutOptions: (node) => {\n const bNode = node as unknown as BpmnRFNode;\n const type = bNode.data.elementType;\n if (!BPMN_CONTAINER_TYPES.has(type)) return undefined;\n\n const min = CONTAINER_MIN_SIZE[type];\n const isPoolWithLanes = type === \"Pool\" && poolsWithLanes.has(node.id);\n\n // Pool with Lanes stacks Lanes top-to-bottom (standard horizontal BPMN).\n // Everything else flows left-to-right.\n const dir = isPoolWithLanes ? \"DOWN\" : \"RIGHT\";\n\n return {\n \"elk.direction\": dir,\n \"elk.nodeSize.constraints\": \"MINIMUM_SIZE\",\n // Each container handles its own layout pass so cross-lane edges\n // participate in the internal layout without the global direction\n // forcing Lane containers to align sideways.\n \"elk.hierarchyHandling\": \"INCLUDE_CHILDREN\",\n // Lanes within a Pool share a border — zero gap between them.\n // Other containers keep the tighter inner spacing.\n ...(isPoolWithLanes\n ? { \"elk.spacing.nodeNode\": \"0\", \"elk.spacing.componentComponent\": \"0\" }\n : {\n \"elk.layered.spacing.nodeNodeBetweenLayers\": \"100\",\n \"elk.layered.spacing.edgeNodeBetweenLayers\": \"45\",\n \"elk.spacing.nodeNode\": \"50\",\n }),\n ...(min ? { \"elk.nodeSize.minimum\": `[w=${min.w},h=${min.h}]` } : {}),\n ...(CONTAINER_PADDING[type] ? { \"elk.padding\": CONTAINER_PADDING[type] } : {}),\n };\n },\n elk: {\n \"elk.algorithm\": \"layered\",\n \"elk.direction\": \"RIGHT\",\n // INHERIT: each container handles its own INCLUDE_CHILDREN pass so\n // the global RIGHT direction does not force Lane containers sideways.\n \"elk.hierarchyHandling\": \"INHERIT\",\n \"elk.edgeRouting\": \"ORTHOGONAL\",\n // Global spacing — generous values for visual breathing room.\n \"elk.layered.spacing.nodeNodeBetweenLayers\": \"120\",\n \"elk.layered.spacing.edgeNodeBetweenLayers\": \"50\",\n \"elk.spacing.nodeNode\": \"70\",\n \"elk.spacing.componentComponent\": \"100\",\n },\n },\n );\n\n const nodeMap = new Map(result.nodes.map((n) => [n.id, n]));\n const edgeMap = new Map(result.edges.map((e) => [e.id, e]));\n\n // ── Fix 1: Preserve original vertical order of root nodes (Pools, free nodes) ──\n // ELK may reorder disconnected components based on cross-pool edge direction.\n // We restore the original top-to-bottom order so Pools never swap positions.\n const COMPONENT_GAP = 100;\n const rootNodeOrder = nodes\n .filter((n) => !n.parentId)\n .map((n) => n.id);\n\n // Compute ELK heights for each root node, then re-stack top-to-bottom.\n const rootHeights = new Map<string, number>();\n for (const id of rootNodeOrder) {\n const laid = nodeMap.get(id);\n const orig = nodes.find((n) => n.id === id);\n rootHeights.set(id, laid?.height ?? orig?.height ?? 200);\n }\n let stackY = 0;\n const rootY = new Map<string, number>();\n for (const id of rootNodeOrder) {\n rootY.set(id, stackY);\n stackY += (rootHeights.get(id) ?? 200) + COMPONENT_GAP;\n }\n\n const updatedNodes = nodes.map((node) => {\n const laid = nodeMap.get(node.id);\n if (!laid) return node;\n const pos = node.parentId\n ? laid.position // children: ELK relative position\n : { x: laid.position.x, y: rootY.get(node.id) ?? laid.position.y }; // root: preserved order\n return { ...node, position: pos, width: laid.width, height: laid.height };\n });\n\n // Post-processing: equalise Lane widths within each Pool so all Lanes\n // span the full Pool width regardless of their individual content width.\n const lanesByPool = new Map<string, string[]>();\n for (const node of updatedNodes) {\n if (node.data.elementType === \"Lane\" && node.parentId) {\n const arr = lanesByPool.get(node.parentId) ?? [];\n arr.push(node.id);\n lanesByPool.set(node.parentId, arr);\n }\n }\n const nodeIndex = new Map(updatedNodes.map((n, i) => [n.id, i]));\n for (const laneIds of lanesByPool.values()) {\n const widths = laneIds.map((id) => updatedNodes[nodeIndex.get(id)!]?.width ?? 0);\n const maxWidth = Math.max(...widths);\n if (maxWidth <= 0) continue;\n for (const id of laneIds) {\n const idx = nodeIndex.get(id);\n if (idx !== undefined) {\n updatedNodes[idx] = { ...updatedNodes[idx], width: maxWidth };\n }\n }\n }\n\n // ── Fix 2: Identify cross-pool edges (source and target live in different root containers) ──\n // ELK routes them incorrectly when pools are laid out independently.\n // Clear their routingPoints so ReactFlow renders smooth default curves instead.\n const nodeRootContainer = new Map<string, string | null>();\n for (const node of updatedNodes) {\n nodeRootContainer.set(node.id, node.parentId ?? null);\n }\n const getRootContainer = (nodeId: string): string | null => {\n let current: string | null = nodeId;\n const visited = new Set<string>();\n while (current) {\n if (visited.has(current)) break;\n visited.add(current);\n const parent = nodeRootContainer.get(current);\n if (!parent) return current;\n current = parent;\n }\n return null;\n };\n\n const updatedEdges = edges.map((edge) => {\n const laid = edgeMap.get(edge.id);\n if (!laid) return edge;\n const nextData = { ...edge.data };\n const sourceRoot = getRootContainer(edge.source);\n const targetRoot = getRootContainer(edge.target);\n const isCrossPool = sourceRoot !== targetRoot;\n if (!isCrossPool && laid.points && laid.points.length > 0) {\n nextData.routingPoints = laid.points;\n } else {\n delete nextData.routingPoints;\n }\n return { ...edge, data: nextData };\n });\n\n return { nodes: updatedNodes, edges: updatedEdges as BpmnRFEdge[] };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/layout/elk.ts"],"names":[],"mappings":"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","file":"chunk-FFWJA5BV.js","sourcesContent":["import { elkLayout } from \"@aranzatech/diagrams-core/layout\";\nimport type { DiagramNode, DiagramEdge } from \"@aranzatech/diagrams-core/types\";\nimport type { BpmnRFNode, BpmnRFEdge } from \"../xml/types\";\nimport type { BpmnElementType } from \"../elements/types\";\nimport { getBpmnNodeSize } from \"../modeling\";\n\n// Container types that ELK auto-sizes based on their children.\nconst BPMN_CONTAINER_TYPES = new Set<BpmnElementType>([\n \"Pool\",\n \"Lane\",\n \"SubProcess\",\n \"Transaction\",\n \"EventSubProcess\",\n \"AdHocSubProcess\",\n]);\n\nconst CONTAINER_MIN_SIZE: Partial<Record<BpmnElementType, { w: number; h: number }>> = {\n Pool: { w: 720, h: 200 },\n Lane: { w: 600, h: 160 },\n SubProcess: { w: 240, h: 140 },\n Transaction: { w: 240, h: 140 },\n EventSubProcess: { w: 240, h: 140 },\n AdHocSubProcess: { w: 240, h: 140 },\n};\n\n// Padding inside each container type.\n// Left padding for Pool/Lane accounts for the vertical label strip (~30px) + breathing room.\nconst CONTAINER_PADDING: Partial<Record<BpmnElementType, string>> = {\n Pool: \"[top=30,left=60,bottom=30,right=50]\",\n Lane: \"[top=40,left=70,bottom=40,right=50]\",\n SubProcess: \"[top=30,left=40,bottom=30,right=40]\",\n Transaction: \"[top=30,left=40,bottom=30,right=40]\",\n EventSubProcess: \"[top=30,left=40,bottom=30,right=40]\",\n AdHocSubProcess: \"[top=30,left=40,bottom=30,right=40]\",\n};\n\n/**\n * ELK-based auto-layout for BPMN diagrams.\n *\n * Spacing philosophy: fixed, generous values that scale consistently\n * regardless of diagram size. \"Air\" between elements is not waste —\n * it is what makes the flow readable to the human eye.\n *\n * Direction policy:\n * - Root: RIGHT — free nodes and pools flow LR on the canvas.\n * - Pool with Lanes: DOWN internally so lanes stack top-to-bottom;\n * the pool itself is placed LR on the canvas.\n * - Lane / SubProcess / Pool-without-lanes: RIGHT — content flows LR.\n * - Each container runs its own INCLUDE_CHILDREN pass (per-container\n * hierarchyHandling) so cross-lane edges are routed correctly without\n * the global RIGHT direction forcing Lane containers sideways.\n * - Root uses INHERIT so each pool is laid out independently.\n * - Post-processing equalises Lane widths within each Pool so all Lanes\n * span the full Pool width.\n */\nexport async function bpmnElkLayout(\n nodes: BpmnRFNode[],\n edges: BpmnRFEdge[],\n): Promise<{ nodes: BpmnRFNode[]; edges: BpmnRFEdge[] }> {\n // Pools that directly contain at least one Lane.\n const poolsWithLanes = new Set<string>();\n for (const node of nodes) {\n if (node.data.elementType === \"Lane\" && node.parentId) {\n poolsWithLanes.add(node.parentId);\n }\n }\n\n const result = await elkLayout(\n nodes as unknown as DiagramNode[],\n edges as unknown as DiagramEdge[],\n {\n direction: \"LR\",\n getNodeSize: (node) => {\n const bNode = node as unknown as BpmnRFNode;\n if (BPMN_CONTAINER_TYPES.has(bNode.data.elementType)) return undefined;\n return getBpmnNodeSize(bNode);\n },\n isContainerNode: (node) =>\n BPMN_CONTAINER_TYPES.has((node as unknown as BpmnRFNode).data.elementType),\n getNodeLayoutOptions: (node) => {\n const bNode = node as unknown as BpmnRFNode;\n const type = bNode.data.elementType;\n if (!BPMN_CONTAINER_TYPES.has(type)) return undefined;\n\n const min = CONTAINER_MIN_SIZE[type];\n const isPoolWithLanes = type === \"Pool\" && poolsWithLanes.has(node.id);\n\n // Pool with Lanes stacks Lanes top-to-bottom (standard horizontal BPMN).\n // Everything else flows left-to-right.\n const dir = isPoolWithLanes ? \"DOWN\" : \"RIGHT\";\n\n return {\n \"elk.direction\": dir,\n \"elk.nodeSize.constraints\": \"MINIMUM_SIZE\",\n // Each container handles its own layout pass so cross-lane edges\n // participate in the internal layout without the global direction\n // forcing Lane containers to align sideways.\n \"elk.hierarchyHandling\": \"INCLUDE_CHILDREN\",\n // Lanes within a Pool share a border — zero gap between them.\n // Other containers keep the tighter inner spacing.\n ...(isPoolWithLanes\n ? { \"elk.spacing.nodeNode\": \"0\", \"elk.spacing.componentComponent\": \"0\" }\n : {\n \"elk.layered.spacing.nodeNodeBetweenLayers\": \"100\",\n \"elk.layered.spacing.edgeNodeBetweenLayers\": \"45\",\n \"elk.spacing.nodeNode\": \"50\",\n }),\n ...(min ? { \"elk.nodeSize.minimum\": `[w=${min.w},h=${min.h}]` } : {}),\n ...(CONTAINER_PADDING[type] ? { \"elk.padding\": CONTAINER_PADDING[type] } : {}),\n };\n },\n elk: {\n \"elk.algorithm\": \"layered\",\n \"elk.direction\": \"RIGHT\",\n // INHERIT: each container handles its own INCLUDE_CHILDREN pass so\n // the global RIGHT direction does not force Lane containers sideways.\n \"elk.hierarchyHandling\": \"INHERIT\",\n \"elk.edgeRouting\": \"ORTHOGONAL\",\n // Global spacing — generous values for visual breathing room.\n \"elk.layered.spacing.nodeNodeBetweenLayers\": \"120\",\n \"elk.layered.spacing.edgeNodeBetweenLayers\": \"50\",\n \"elk.spacing.nodeNode\": \"70\",\n \"elk.spacing.componentComponent\": \"100\",\n },\n },\n );\n\n const nodeMap = new Map(result.nodes.map((n) => [n.id, n]));\n const edgeMap = new Map(result.edges.map((e) => [e.id, e]));\n\n // ── Fix 1: Preserve original vertical order of root nodes (Pools, free nodes) ──\n // ELK may reorder disconnected components based on cross-pool edge direction.\n // We restore the original top-to-bottom order so Pools never swap positions.\n const COMPONENT_GAP = 100;\n const rootNodeOrder = nodes\n .filter((n) => !n.parentId)\n .map((n) => n.id);\n\n // Compute ELK heights for each root node, then re-stack top-to-bottom.\n const rootHeights = new Map<string, number>();\n for (const id of rootNodeOrder) {\n const laid = nodeMap.get(id);\n const orig = nodes.find((n) => n.id === id);\n rootHeights.set(id, laid?.height ?? orig?.height ?? 200);\n }\n let stackY = 0;\n const rootY = new Map<string, number>();\n for (const id of rootNodeOrder) {\n rootY.set(id, stackY);\n stackY += (rootHeights.get(id) ?? 200) + COMPONENT_GAP;\n }\n\n const updatedNodes = nodes.map((node) => {\n const laid = nodeMap.get(node.id);\n if (!laid) return node;\n const pos = node.parentId\n ? laid.position // children: ELK relative position\n : { x: laid.position.x, y: rootY.get(node.id) ?? laid.position.y }; // root: preserved order\n return { ...node, position: pos, width: laid.width, height: laid.height };\n });\n\n // Post-processing: equalise Lane widths within each Pool so all Lanes\n // span the full Pool width regardless of their individual content width.\n const lanesByPool = new Map<string, string[]>();\n for (const node of updatedNodes) {\n if (node.data.elementType === \"Lane\" && node.parentId) {\n const arr = lanesByPool.get(node.parentId) ?? [];\n arr.push(node.id);\n lanesByPool.set(node.parentId, arr);\n }\n }\n const nodeIndex = new Map(updatedNodes.map((n, i) => [n.id, i]));\n for (const laneIds of lanesByPool.values()) {\n const widths = laneIds.map((id) => updatedNodes[nodeIndex.get(id)!]?.width ?? 0);\n const maxWidth = Math.max(...widths);\n if (maxWidth <= 0) continue;\n for (const id of laneIds) {\n const idx = nodeIndex.get(id);\n if (idx !== undefined) {\n updatedNodes[idx] = { ...updatedNodes[idx], width: maxWidth };\n }\n }\n }\n\n // ── Fix 2: Identify cross-pool edges (source and target live in different root containers) ──\n // ELK routes them incorrectly when pools are laid out independently.\n // Clear their routingPoints so ReactFlow renders smooth default curves instead.\n const nodeRootContainer = new Map<string, string | null>();\n for (const node of updatedNodes) {\n nodeRootContainer.set(node.id, node.parentId ?? null);\n }\n const getRootContainer = (nodeId: string): string | null => {\n let current: string | null = nodeId;\n const visited = new Set<string>();\n while (current) {\n if (visited.has(current)) break;\n visited.add(current);\n const parent = nodeRootContainer.get(current);\n if (!parent) return current;\n current = parent;\n }\n return null;\n };\n\n const updatedEdges = edges.map((edge) => {\n const laid = edgeMap.get(edge.id);\n if (!laid) return edge;\n const nextData = { ...edge.data };\n const sourceRoot = getRootContainer(edge.source);\n const targetRoot = getRootContainer(edge.target);\n const isCrossPool = sourceRoot !== targetRoot;\n if (!isCrossPool && laid.points && laid.points.length > 0) {\n nextData.routingPoints = laid.points;\n } else {\n delete nextData.routingPoints;\n }\n return { ...edge, data: nextData };\n });\n\n return { nodes: updatedNodes, edges: updatedEdges as BpmnRFEdge[] };\n}\n"]}
|
|
@@ -212,7 +212,84 @@ var BPMN_EVENT_SUBTYPE_CATALOG = [
|
|
|
212
212
|
function getEventSubtypesByBase(baseType) {
|
|
213
213
|
return BPMN_EVENT_SUBTYPE_CATALOG.filter((e) => e.baseType === baseType);
|
|
214
214
|
}
|
|
215
|
+
var EVENT_TRIGGER_ORDER = [
|
|
216
|
+
"none",
|
|
217
|
+
"message",
|
|
218
|
+
"timer",
|
|
219
|
+
"signal",
|
|
220
|
+
"error",
|
|
221
|
+
"escalation",
|
|
222
|
+
"conditional",
|
|
223
|
+
"link",
|
|
224
|
+
"compensation",
|
|
225
|
+
"cancel",
|
|
226
|
+
"terminate",
|
|
227
|
+
"multiple",
|
|
228
|
+
"parallelMultiple"
|
|
229
|
+
];
|
|
230
|
+
var BASE_ALLOWED_EVENT_TRIGGERS = {
|
|
231
|
+
StartEvent: /* @__PURE__ */ new Set(["none", "message", "timer", "conditional", "signal", "multiple", "parallelMultiple"]),
|
|
232
|
+
EndEvent: /* @__PURE__ */ new Set(["none", "message", "signal", "error", "escalation", "terminate", "compensation", "cancel", "multiple"]),
|
|
233
|
+
IntermediateCatchEvent: /* @__PURE__ */ new Set(["none", "message", "timer", "conditional", "signal", "link", "multiple", "parallelMultiple"]),
|
|
234
|
+
IntermediateThrowEvent: /* @__PURE__ */ new Set(["none", "message", "signal", "link", "escalation", "compensation", "multiple"]),
|
|
235
|
+
BoundaryEvent: /* @__PURE__ */ new Set(["message", "timer", "conditional", "signal", "error", "escalation", "cancel", "compensation"])
|
|
236
|
+
};
|
|
237
|
+
var EVENT_SUBPROCESS_ALLOWED_START_TRIGGERS = /* @__PURE__ */ new Set([
|
|
238
|
+
"message",
|
|
239
|
+
"timer",
|
|
240
|
+
"escalation",
|
|
241
|
+
"conditional",
|
|
242
|
+
"error",
|
|
243
|
+
"compensation",
|
|
244
|
+
"signal",
|
|
245
|
+
"multiple",
|
|
246
|
+
"parallelMultiple"
|
|
247
|
+
]);
|
|
248
|
+
var NON_INTERRUPTING_EVENT_SUBPROCESS_START_TRIGGERS = /* @__PURE__ */ new Set([
|
|
249
|
+
"message",
|
|
250
|
+
"timer",
|
|
251
|
+
"escalation",
|
|
252
|
+
"conditional",
|
|
253
|
+
"signal",
|
|
254
|
+
"multiple",
|
|
255
|
+
"parallelMultiple"
|
|
256
|
+
]);
|
|
257
|
+
var NON_INTERRUPTING_BOUNDARY_TRIGGERS = /* @__PURE__ */ new Set([
|
|
258
|
+
"message",
|
|
259
|
+
"timer",
|
|
260
|
+
"conditional",
|
|
261
|
+
"signal",
|
|
262
|
+
"escalation"
|
|
263
|
+
]);
|
|
264
|
+
function isEventSubProcessParent(parentType, parentSubProcessVariant) {
|
|
265
|
+
return parentType === "EventSubProcess" || parentSubProcessVariant === "event";
|
|
266
|
+
}
|
|
267
|
+
function getAllowedEventTriggers(options) {
|
|
268
|
+
const allowed = new Set(BASE_ALLOWED_EVENT_TRIGGERS[options.baseType]);
|
|
269
|
+
if (options.baseType === "StartEvent" && isEventSubProcessParent(options.parentType, options.parentSubProcessVariant)) {
|
|
270
|
+
for (const trigger of Array.from(allowed)) {
|
|
271
|
+
if (!EVENT_SUBPROCESS_ALLOWED_START_TRIGGERS.has(trigger)) {
|
|
272
|
+
allowed.delete(trigger);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
if (options.baseType === "StartEvent" && options.isNonInterrupting) {
|
|
277
|
+
for (const trigger of Array.from(allowed)) {
|
|
278
|
+
if (!NON_INTERRUPTING_EVENT_SUBPROCESS_START_TRIGGERS.has(trigger)) {
|
|
279
|
+
allowed.delete(trigger);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
if (options.baseType === "BoundaryEvent" && options.isNonInterrupting) {
|
|
284
|
+
for (const trigger of Array.from(allowed)) {
|
|
285
|
+
if (!NON_INTERRUPTING_BOUNDARY_TRIGGERS.has(trigger)) {
|
|
286
|
+
allowed.delete(trigger);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return EVENT_TRIGGER_ORDER.filter((trigger) => allowed.has(trigger));
|
|
291
|
+
}
|
|
215
292
|
|
|
216
|
-
export { BPMN_EVENT_SUBTYPE_CATALOG, getEventSubtypesByBase };
|
|
217
|
-
//# sourceMappingURL=chunk-
|
|
218
|
-
//# sourceMappingURL=chunk-
|
|
293
|
+
export { BPMN_EVENT_SUBTYPE_CATALOG, getAllowedEventTriggers, getEventSubtypesByBase };
|
|
294
|
+
//# sourceMappingURL=chunk-JEGYVEJO.js.map
|
|
295
|
+
//# sourceMappingURL=chunk-JEGYVEJO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/elements/event-subtypes.ts"],"names":[],"mappings":";AAaO,IAAM,0BAAA,GAAsD;AAAA;AAAA,EAEjE;AAAA,IACE,QAAA,EAAU,YAAA;AAAA,IACV,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,qBAAA;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,OAAA,EAAS,iBAAiB,EAAE,IAAA,EAAM,SAAQ;AAAE,GACtE;AAAA,EACA;AAAA,IACE,QAAA,EAAU,YAAA;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,uBAAA;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,SAAA,EAAW,iBAAiB,EAAE,IAAA,EAAM,WAAU;AAAE,GAC1E;AAAA,EACA;AAAA,IACE,QAAA,EAAU,YAAA;AAAA,IACV,OAAA,EAAS,QAAA;AAAA,IACT,KAAA,EAAO,sBAAA;AAAA,IACP,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,QAAA,EAAU,iBAAiB,EAAE,IAAA,EAAM,UAAS;AAAE,GACxE;AAAA,EACA;AAAA,IACE,QAAA,EAAU,YAAA;AAAA,IACV,OAAA,EAAS,aAAA;AAAA,IACT,KAAA,EAAO,2BAAA;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,aAAA,EAAe,iBAAiB,EAAE,IAAA,EAAM,eAAc;AAAE,GAClF;AAAA;AAAA,EAGA;AAAA,IACE,QAAA,EAAU,UAAA;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,qBAAA;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,SAAA,EAAW,iBAAiB,EAAE,IAAA,EAAM,WAAU;AAAE,GAC1E;AAAA,EACA;AAAA,IACE,QAAA,EAAU,UAAA;AAAA,IACV,OAAA,EAAS,QAAA;AAAA,IACT,KAAA,EAAO,oBAAA;AAAA,IACP,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,QAAA,EAAU,iBAAiB,EAAE,IAAA,EAAM,UAAS;AAAE,GACxE;AAAA,EACA;AAAA,IACE,QAAA,EAAU,UAAA;AAAA,IACV,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,mBAAA;AAAA,IACP,IAAA,EAAM,eAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,OAAA,EAAS,iBAAiB,EAAE,IAAA,EAAM,SAAQ;AAAE,GACtE;AAAA,EACA;AAAA,IACE,QAAA,EAAU,UAAA;AAAA,IACV,OAAA,EAAS,YAAA;AAAA,IACT,KAAA,EAAO,wBAAA;AAAA,IACP,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,YAAA,EAAc,iBAAiB,EAAE,IAAA,EAAM,cAAa;AAAE,GAChF;AAAA,EACA;AAAA,IACE,QAAA,EAAU,UAAA;AAAA,IACV,OAAA,EAAS,WAAA;AAAA,IACT,KAAA,EAAO,uBAAA;AAAA,IACP,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,WAAA,EAAa,iBAAiB,EAAE,IAAA,EAAM,aAAY;AAAE,GAC9E;AAAA,EACA;AAAA,IACE,QAAA,EAAU,UAAA;AAAA,IACV,OAAA,EAAS,cAAA;AAAA,IACT,KAAA,EAAO,0BAAA;AAAA,IACP,IAAA,EAAM,WAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,cAAA,EAAgB,iBAAiB,EAAE,IAAA,EAAM,gBAAe;AAAE,GACpF;AAAA,EACA;AAAA,IACE,QAAA,EAAU,UAAA;AAAA,IACV,OAAA,EAAS,QAAA;AAAA,IACT,KAAA,EAAO,oBAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,QAAA,EAAU,iBAAiB,EAAE,IAAA,EAAM,UAAS;AAAE,GACxE;AAAA;AAAA,EAGA;AAAA,IACE,QAAA,EAAU,wBAAA;AAAA,IACV,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,qBAAA;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,OAAA,EAAS,iBAAiB,EAAE,IAAA,EAAM,SAAQ;AAAE,GACtE;AAAA,EACA;AAAA,IACE,QAAA,EAAU,wBAAA;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,uBAAA;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,SAAA,EAAW,iBAAiB,EAAE,IAAA,EAAM,WAAU;AAAE,GAC1E;AAAA,EACA;AAAA,IACE,QAAA,EAAU,wBAAA;AAAA,IACV,OAAA,EAAS,QAAA;AAAA,IACT,KAAA,EAAO,sBAAA;AAAA,IACP,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,QAAA,EAAU,iBAAiB,EAAE,IAAA,EAAM,UAAS;AAAE,GACxE;AAAA,EACA;AAAA,IACE,QAAA,EAAU,wBAAA;AAAA,IACV,OAAA,EAAS,aAAA;AAAA,IACT,KAAA,EAAO,2BAAA;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,aAAA,EAAe,iBAAiB,EAAE,IAAA,EAAM,eAAc;AAAE,GAClF;AAAA,EACA;AAAA,IACE,QAAA,EAAU,wBAAA;AAAA,IACV,OAAA,EAAS,MAAA;AAAA,IACT,KAAA,EAAO,oBAAA;AAAA,IACP,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,MAAA,EAAQ,iBAAiB,EAAE,IAAA,EAAM,QAAO;AAAE,GACpE;AAAA;AAAA,EAGA;AAAA,IACE,QAAA,EAAU,wBAAA;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,uBAAA;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,SAAA,EAAW,iBAAiB,EAAE,IAAA,EAAM,WAAU;AAAE,GAC1E;AAAA,EACA;AAAA,IACE,QAAA,EAAU,wBAAA;AAAA,IACV,OAAA,EAAS,QAAA;AAAA,IACT,KAAA,EAAO,sBAAA;AAAA,IACP,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,QAAA,EAAU,iBAAiB,EAAE,IAAA,EAAM,UAAS;AAAE,GACxE;AAAA,EACA;AAAA,IACE,QAAA,EAAU,wBAAA;AAAA,IACV,OAAA,EAAS,MAAA;AAAA,IACT,KAAA,EAAO,oBAAA;AAAA,IACP,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,MAAA,EAAQ,iBAAiB,EAAE,IAAA,EAAM,QAAO;AAAE,GACpE;AAAA,EACA;AAAA,IACE,QAAA,EAAU,wBAAA;AAAA,IACV,OAAA,EAAS,YAAA;AAAA,IACT,KAAA,EAAO,0BAAA;AAAA,IACP,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,YAAA,EAAc,iBAAiB,EAAE,IAAA,EAAM,cAAa;AAAE,GAChF;AAAA,EACA;AAAA,IACE,QAAA,EAAU,wBAAA;AAAA,IACV,OAAA,EAAS,cAAA;AAAA,IACT,KAAA,EAAO,4BAAA;AAAA,IACP,IAAA,EAAM,WAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,cAAA,EAAgB,iBAAiB,EAAE,IAAA,EAAM,gBAAe;AAAE,GACpF;AAAA;AAAA,EAGA;AAAA,IACE,QAAA,EAAU,eAAA;AAAA,IACV,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,wBAAA;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,OAAA,EAAS,iBAAiB,EAAE,IAAA,EAAM,SAAQ;AAAE,GACtE;AAAA,EACA;AAAA,IACE,QAAA,EAAU,eAAA;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,0BAAA;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,SAAA,EAAW,iBAAiB,EAAE,IAAA,EAAM,WAAU;AAAE,GAC1E;AAAA,EACA;AAAA,IACE,QAAA,EAAU,eAAA;AAAA,IACV,OAAA,EAAS,QAAA;AAAA,IACT,KAAA,EAAO,yBAAA;AAAA,IACP,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,QAAA,EAAU,iBAAiB,EAAE,IAAA,EAAM,UAAS;AAAE,GACxE;AAAA,EACA;AAAA,IACE,QAAA,EAAU,eAAA;AAAA,IACV,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,wBAAA;AAAA,IACP,IAAA,EAAM,eAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,OAAA,EAAS,iBAAiB,EAAE,IAAA,EAAM,SAAQ;AAAE,GACtE;AAAA,EACA;AAAA,IACE,QAAA,EAAU,eAAA;AAAA,IACV,OAAA,EAAS,YAAA;AAAA,IACT,KAAA,EAAO,6BAAA;AAAA,IACP,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,YAAA,EAAc,iBAAiB,EAAE,IAAA,EAAM,cAAa;AAAE,GAChF;AAAA,EACA;AAAA,IACE,QAAA,EAAU,eAAA;AAAA,IACV,OAAA,EAAS,QAAA;AAAA,IACT,KAAA,EAAO,yBAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,QAAA,EAAU,iBAAiB,EAAE,IAAA,EAAM,UAAS;AAAE,GACxE;AAAA,EACA;AAAA,IACE,QAAA,EAAU,eAAA;AAAA,IACV,OAAA,EAAS,cAAA;AAAA,IACT,KAAA,EAAO,+BAAA;AAAA,IACP,IAAA,EAAM,WAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,cAAA,EAAgB,iBAAiB,EAAE,IAAA,EAAM,gBAAe;AAAE,GACpF;AAAA,EACA;AAAA,IACE,QAAA,EAAU,eAAA;AAAA,IACV,OAAA,EAAS,aAAA;AAAA,IACT,KAAA,EAAO,8BAAA;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,EAAE,OAAA,EAAS,aAAA,EAAe,iBAAiB,EAAE,IAAA,EAAM,eAAc;AAAE;AAEpF;AAGO,SAAS,uBACd,QAAA,EACyB;AACzB,EAAA,OAAO,2BAA2B,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,QAAQ,CAAA;AACzE","file":"chunk-FBTGIYZS.js","sourcesContent":["import type { BpmnElementType, EventTrigger, BpmnNodeData } from \"./types\";\n\nexport interface BpmnEventSubtypeEntry {\n baseType: Extract<\n BpmnElementType,\n \"StartEvent\" | \"EndEvent\" | \"IntermediateCatchEvent\" | \"IntermediateThrowEvent\" | \"BoundaryEvent\"\n >;\n trigger: Exclude<EventTrigger, \"none\" | \"multiple\" | \"parallelMultiple\">;\n label: string;\n icon: string;\n initialData: Pick<BpmnNodeData, \"trigger\" | \"eventDefinition\">;\n}\n\nexport const BPMN_EVENT_SUBTYPE_CATALOG: BpmnEventSubtypeEntry[] = [\n // ── StartEvent subtypes ───────────────────────────────────────────────────────\n {\n baseType: \"StartEvent\",\n trigger: \"timer\",\n label: \"Start Event (Timer)\",\n icon: \"Clock3\",\n initialData: { trigger: \"timer\", eventDefinition: { type: \"timer\" } },\n },\n {\n baseType: \"StartEvent\",\n trigger: \"message\",\n label: \"Start Event (Message)\",\n icon: \"Mail\",\n initialData: { trigger: \"message\", eventDefinition: { type: \"message\" } },\n },\n {\n baseType: \"StartEvent\",\n trigger: \"signal\",\n label: \"Start Event (Signal)\",\n icon: \"Radio\",\n initialData: { trigger: \"signal\", eventDefinition: { type: \"signal\" } },\n },\n {\n baseType: \"StartEvent\",\n trigger: \"conditional\",\n label: \"Start Event (Conditional)\",\n icon: \"Filter\",\n initialData: { trigger: \"conditional\", eventDefinition: { type: \"conditional\" } },\n },\n\n // ── EndEvent subtypes ─────────────────────────────────────────────────────────\n {\n baseType: \"EndEvent\",\n trigger: \"message\",\n label: \"End Event (Message)\",\n icon: \"Mail\",\n initialData: { trigger: \"message\", eventDefinition: { type: \"message\" } },\n },\n {\n baseType: \"EndEvent\",\n trigger: \"signal\",\n label: \"End Event (Signal)\",\n icon: \"Radio\",\n initialData: { trigger: \"signal\", eventDefinition: { type: \"signal\" } },\n },\n {\n baseType: \"EndEvent\",\n trigger: \"error\",\n label: \"End Event (Error)\",\n icon: \"AlertTriangle\",\n initialData: { trigger: \"error\", eventDefinition: { type: \"error\" } },\n },\n {\n baseType: \"EndEvent\",\n trigger: \"escalation\",\n label: \"End Event (Escalation)\",\n icon: \"TrendingUp\",\n initialData: { trigger: \"escalation\", eventDefinition: { type: \"escalation\" } },\n },\n {\n baseType: \"EndEvent\",\n trigger: \"terminate\",\n label: \"End Event (Terminate)\",\n icon: \"StopCircle\",\n initialData: { trigger: \"terminate\", eventDefinition: { type: \"terminate\" } },\n },\n {\n baseType: \"EndEvent\",\n trigger: \"compensation\",\n label: \"End Event (Compensation)\",\n icon: \"RotateCcw\",\n initialData: { trigger: \"compensation\", eventDefinition: { type: \"compensation\" } },\n },\n {\n baseType: \"EndEvent\",\n trigger: \"cancel\",\n label: \"End Event (Cancel)\",\n icon: \"XCircle\",\n initialData: { trigger: \"cancel\", eventDefinition: { type: \"cancel\" } },\n },\n\n // ── IntermediateCatchEvent subtypes ───────────────────────────────────────────\n {\n baseType: \"IntermediateCatchEvent\",\n trigger: \"timer\",\n label: \"Catch Event (Timer)\",\n icon: \"Clock3\",\n initialData: { trigger: \"timer\", eventDefinition: { type: \"timer\" } },\n },\n {\n baseType: \"IntermediateCatchEvent\",\n trigger: \"message\",\n label: \"Catch Event (Message)\",\n icon: \"Mail\",\n initialData: { trigger: \"message\", eventDefinition: { type: \"message\" } },\n },\n {\n baseType: \"IntermediateCatchEvent\",\n trigger: \"signal\",\n label: \"Catch Event (Signal)\",\n icon: \"Radio\",\n initialData: { trigger: \"signal\", eventDefinition: { type: \"signal\" } },\n },\n {\n baseType: \"IntermediateCatchEvent\",\n trigger: \"conditional\",\n label: \"Catch Event (Conditional)\",\n icon: \"Filter\",\n initialData: { trigger: \"conditional\", eventDefinition: { type: \"conditional\" } },\n },\n {\n baseType: \"IntermediateCatchEvent\",\n trigger: \"link\",\n label: \"Catch Event (Link)\",\n icon: \"Link2\",\n initialData: { trigger: \"link\", eventDefinition: { type: \"link\" } },\n },\n\n // ── IntermediateThrowEvent subtypes ───────────────────────────────────────────\n {\n baseType: \"IntermediateThrowEvent\",\n trigger: \"message\",\n label: \"Throw Event (Message)\",\n icon: \"Mail\",\n initialData: { trigger: \"message\", eventDefinition: { type: \"message\" } },\n },\n {\n baseType: \"IntermediateThrowEvent\",\n trigger: \"signal\",\n label: \"Throw Event (Signal)\",\n icon: \"Radio\",\n initialData: { trigger: \"signal\", eventDefinition: { type: \"signal\" } },\n },\n {\n baseType: \"IntermediateThrowEvent\",\n trigger: \"link\",\n label: \"Throw Event (Link)\",\n icon: \"Link2\",\n initialData: { trigger: \"link\", eventDefinition: { type: \"link\" } },\n },\n {\n baseType: \"IntermediateThrowEvent\",\n trigger: \"escalation\",\n label: \"Throw Event (Escalation)\",\n icon: \"TrendingUp\",\n initialData: { trigger: \"escalation\", eventDefinition: { type: \"escalation\" } },\n },\n {\n baseType: \"IntermediateThrowEvent\",\n trigger: \"compensation\",\n label: \"Throw Event (Compensation)\",\n icon: \"RotateCcw\",\n initialData: { trigger: \"compensation\", eventDefinition: { type: \"compensation\" } },\n },\n\n // ── BoundaryEvent subtypes ────────────────────────────────────────────────────\n {\n baseType: \"BoundaryEvent\",\n trigger: \"timer\",\n label: \"Boundary Event (Timer)\",\n icon: \"Clock3\",\n initialData: { trigger: \"timer\", eventDefinition: { type: \"timer\" } },\n },\n {\n baseType: \"BoundaryEvent\",\n trigger: \"message\",\n label: \"Boundary Event (Message)\",\n icon: \"Mail\",\n initialData: { trigger: \"message\", eventDefinition: { type: \"message\" } },\n },\n {\n baseType: \"BoundaryEvent\",\n trigger: \"signal\",\n label: \"Boundary Event (Signal)\",\n icon: \"Radio\",\n initialData: { trigger: \"signal\", eventDefinition: { type: \"signal\" } },\n },\n {\n baseType: \"BoundaryEvent\",\n trigger: \"error\",\n label: \"Boundary Event (Error)\",\n icon: \"AlertTriangle\",\n initialData: { trigger: \"error\", eventDefinition: { type: \"error\" } },\n },\n {\n baseType: \"BoundaryEvent\",\n trigger: \"escalation\",\n label: \"Boundary Event (Escalation)\",\n icon: \"TrendingUp\",\n initialData: { trigger: \"escalation\", eventDefinition: { type: \"escalation\" } },\n },\n {\n baseType: \"BoundaryEvent\",\n trigger: \"cancel\",\n label: \"Boundary Event (Cancel)\",\n icon: \"XCircle\",\n initialData: { trigger: \"cancel\", eventDefinition: { type: \"cancel\" } },\n },\n {\n baseType: \"BoundaryEvent\",\n trigger: \"compensation\",\n label: \"Boundary Event (Compensation)\",\n icon: \"RotateCcw\",\n initialData: { trigger: \"compensation\", eventDefinition: { type: \"compensation\" } },\n },\n {\n baseType: \"BoundaryEvent\",\n trigger: \"conditional\",\n label: \"Boundary Event (Conditional)\",\n icon: \"Filter\",\n initialData: { trigger: \"conditional\", eventDefinition: { type: \"conditional\" } },\n },\n];\n\n/** Group subtype entries by their base element type. */\nexport function getEventSubtypesByBase(\n baseType: BpmnEventSubtypeEntry[\"baseType\"],\n): BpmnEventSubtypeEntry[] {\n return BPMN_EVENT_SUBTYPE_CATALOG.filter((e) => e.baseType === baseType);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/elements/event-subtypes.ts"],"names":[],"mappings":"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","file":"chunk-JEGYVEJO.js","sourcesContent":["import type { BpmnElementType, EventTrigger, BpmnNodeData, SubProcessVariant } from \"./types\";\n\nexport interface BpmnEventSubtypeEntry {\n baseType: Extract<\n BpmnElementType,\n \"StartEvent\" | \"EndEvent\" | \"IntermediateCatchEvent\" | \"IntermediateThrowEvent\" | \"BoundaryEvent\"\n >;\n trigger: Exclude<EventTrigger, \"none\" | \"multiple\" | \"parallelMultiple\">;\n label: string;\n icon: string;\n initialData: Pick<BpmnNodeData, \"trigger\" | \"eventDefinition\">;\n}\n\nexport const BPMN_EVENT_SUBTYPE_CATALOG: BpmnEventSubtypeEntry[] = [\n // ── StartEvent subtypes ───────────────────────────────────────────────────────\n {\n baseType: \"StartEvent\",\n trigger: \"timer\",\n label: \"Start Event (Timer)\",\n icon: \"Clock3\",\n initialData: { trigger: \"timer\", eventDefinition: { type: \"timer\" } },\n },\n {\n baseType: \"StartEvent\",\n trigger: \"message\",\n label: \"Start Event (Message)\",\n icon: \"Mail\",\n initialData: { trigger: \"message\", eventDefinition: { type: \"message\" } },\n },\n {\n baseType: \"StartEvent\",\n trigger: \"signal\",\n label: \"Start Event (Signal)\",\n icon: \"Radio\",\n initialData: { trigger: \"signal\", eventDefinition: { type: \"signal\" } },\n },\n {\n baseType: \"StartEvent\",\n trigger: \"conditional\",\n label: \"Start Event (Conditional)\",\n icon: \"Filter\",\n initialData: { trigger: \"conditional\", eventDefinition: { type: \"conditional\" } },\n },\n\n // ── EndEvent subtypes ─────────────────────────────────────────────────────────\n {\n baseType: \"EndEvent\",\n trigger: \"message\",\n label: \"End Event (Message)\",\n icon: \"Mail\",\n initialData: { trigger: \"message\", eventDefinition: { type: \"message\" } },\n },\n {\n baseType: \"EndEvent\",\n trigger: \"signal\",\n label: \"End Event (Signal)\",\n icon: \"Radio\",\n initialData: { trigger: \"signal\", eventDefinition: { type: \"signal\" } },\n },\n {\n baseType: \"EndEvent\",\n trigger: \"error\",\n label: \"End Event (Error)\",\n icon: \"AlertTriangle\",\n initialData: { trigger: \"error\", eventDefinition: { type: \"error\" } },\n },\n {\n baseType: \"EndEvent\",\n trigger: \"escalation\",\n label: \"End Event (Escalation)\",\n icon: \"TrendingUp\",\n initialData: { trigger: \"escalation\", eventDefinition: { type: \"escalation\" } },\n },\n {\n baseType: \"EndEvent\",\n trigger: \"terminate\",\n label: \"End Event (Terminate)\",\n icon: \"StopCircle\",\n initialData: { trigger: \"terminate\", eventDefinition: { type: \"terminate\" } },\n },\n {\n baseType: \"EndEvent\",\n trigger: \"compensation\",\n label: \"End Event (Compensation)\",\n icon: \"RotateCcw\",\n initialData: { trigger: \"compensation\", eventDefinition: { type: \"compensation\" } },\n },\n {\n baseType: \"EndEvent\",\n trigger: \"cancel\",\n label: \"End Event (Cancel)\",\n icon: \"XCircle\",\n initialData: { trigger: \"cancel\", eventDefinition: { type: \"cancel\" } },\n },\n\n // ── IntermediateCatchEvent subtypes ───────────────────────────────────────────\n {\n baseType: \"IntermediateCatchEvent\",\n trigger: \"timer\",\n label: \"Catch Event (Timer)\",\n icon: \"Clock3\",\n initialData: { trigger: \"timer\", eventDefinition: { type: \"timer\" } },\n },\n {\n baseType: \"IntermediateCatchEvent\",\n trigger: \"message\",\n label: \"Catch Event (Message)\",\n icon: \"Mail\",\n initialData: { trigger: \"message\", eventDefinition: { type: \"message\" } },\n },\n {\n baseType: \"IntermediateCatchEvent\",\n trigger: \"signal\",\n label: \"Catch Event (Signal)\",\n icon: \"Radio\",\n initialData: { trigger: \"signal\", eventDefinition: { type: \"signal\" } },\n },\n {\n baseType: \"IntermediateCatchEvent\",\n trigger: \"conditional\",\n label: \"Catch Event (Conditional)\",\n icon: \"Filter\",\n initialData: { trigger: \"conditional\", eventDefinition: { type: \"conditional\" } },\n },\n {\n baseType: \"IntermediateCatchEvent\",\n trigger: \"link\",\n label: \"Catch Event (Link)\",\n icon: \"Link2\",\n initialData: { trigger: \"link\", eventDefinition: { type: \"link\" } },\n },\n\n // ── IntermediateThrowEvent subtypes ───────────────────────────────────────────\n {\n baseType: \"IntermediateThrowEvent\",\n trigger: \"message\",\n label: \"Throw Event (Message)\",\n icon: \"Mail\",\n initialData: { trigger: \"message\", eventDefinition: { type: \"message\" } },\n },\n {\n baseType: \"IntermediateThrowEvent\",\n trigger: \"signal\",\n label: \"Throw Event (Signal)\",\n icon: \"Radio\",\n initialData: { trigger: \"signal\", eventDefinition: { type: \"signal\" } },\n },\n {\n baseType: \"IntermediateThrowEvent\",\n trigger: \"link\",\n label: \"Throw Event (Link)\",\n icon: \"Link2\",\n initialData: { trigger: \"link\", eventDefinition: { type: \"link\" } },\n },\n {\n baseType: \"IntermediateThrowEvent\",\n trigger: \"escalation\",\n label: \"Throw Event (Escalation)\",\n icon: \"TrendingUp\",\n initialData: { trigger: \"escalation\", eventDefinition: { type: \"escalation\" } },\n },\n {\n baseType: \"IntermediateThrowEvent\",\n trigger: \"compensation\",\n label: \"Throw Event (Compensation)\",\n icon: \"RotateCcw\",\n initialData: { trigger: \"compensation\", eventDefinition: { type: \"compensation\" } },\n },\n\n // ── BoundaryEvent subtypes ────────────────────────────────────────────────────\n {\n baseType: \"BoundaryEvent\",\n trigger: \"timer\",\n label: \"Boundary Event (Timer)\",\n icon: \"Clock3\",\n initialData: { trigger: \"timer\", eventDefinition: { type: \"timer\" } },\n },\n {\n baseType: \"BoundaryEvent\",\n trigger: \"message\",\n label: \"Boundary Event (Message)\",\n icon: \"Mail\",\n initialData: { trigger: \"message\", eventDefinition: { type: \"message\" } },\n },\n {\n baseType: \"BoundaryEvent\",\n trigger: \"signal\",\n label: \"Boundary Event (Signal)\",\n icon: \"Radio\",\n initialData: { trigger: \"signal\", eventDefinition: { type: \"signal\" } },\n },\n {\n baseType: \"BoundaryEvent\",\n trigger: \"error\",\n label: \"Boundary Event (Error)\",\n icon: \"AlertTriangle\",\n initialData: { trigger: \"error\", eventDefinition: { type: \"error\" } },\n },\n {\n baseType: \"BoundaryEvent\",\n trigger: \"escalation\",\n label: \"Boundary Event (Escalation)\",\n icon: \"TrendingUp\",\n initialData: { trigger: \"escalation\", eventDefinition: { type: \"escalation\" } },\n },\n {\n baseType: \"BoundaryEvent\",\n trigger: \"cancel\",\n label: \"Boundary Event (Cancel)\",\n icon: \"XCircle\",\n initialData: { trigger: \"cancel\", eventDefinition: { type: \"cancel\" } },\n },\n {\n baseType: \"BoundaryEvent\",\n trigger: \"compensation\",\n label: \"Boundary Event (Compensation)\",\n icon: \"RotateCcw\",\n initialData: { trigger: \"compensation\", eventDefinition: { type: \"compensation\" } },\n },\n {\n baseType: \"BoundaryEvent\",\n trigger: \"conditional\",\n label: \"Boundary Event (Conditional)\",\n icon: \"Filter\",\n initialData: { trigger: \"conditional\", eventDefinition: { type: \"conditional\" } },\n },\n];\n\n/** Group subtype entries by their base element type. */\nexport function getEventSubtypesByBase(\n baseType: BpmnEventSubtypeEntry[\"baseType\"],\n): BpmnEventSubtypeEntry[] {\n return BPMN_EVENT_SUBTYPE_CATALOG.filter((e) => e.baseType === baseType);\n}\n\nexport interface GetAllowedEventTriggersOptions {\n baseType: BpmnEventSubtypeEntry[\"baseType\"];\n parentType?: BpmnElementType | null;\n parentSubProcessVariant?: SubProcessVariant;\n isNonInterrupting?: boolean;\n}\n\nconst EVENT_TRIGGER_ORDER: EventTrigger[] = [\n \"none\",\n \"message\",\n \"timer\",\n \"signal\",\n \"error\",\n \"escalation\",\n \"conditional\",\n \"link\",\n \"compensation\",\n \"cancel\",\n \"terminate\",\n \"multiple\",\n \"parallelMultiple\",\n];\n\nconst BASE_ALLOWED_EVENT_TRIGGERS: Record<GetAllowedEventTriggersOptions[\"baseType\"], Set<EventTrigger>> = {\n StartEvent: new Set([\"none\", \"message\", \"timer\", \"conditional\", \"signal\", \"multiple\", \"parallelMultiple\"]),\n EndEvent: new Set([\"none\", \"message\", \"signal\", \"error\", \"escalation\", \"terminate\", \"compensation\", \"cancel\", \"multiple\"]),\n IntermediateCatchEvent: new Set([\"none\", \"message\", \"timer\", \"conditional\", \"signal\", \"link\", \"multiple\", \"parallelMultiple\"]),\n IntermediateThrowEvent: new Set([\"none\", \"message\", \"signal\", \"link\", \"escalation\", \"compensation\", \"multiple\"]),\n BoundaryEvent: new Set([\"message\", \"timer\", \"conditional\", \"signal\", \"error\", \"escalation\", \"cancel\", \"compensation\"]),\n};\n\nconst EVENT_SUBPROCESS_ALLOWED_START_TRIGGERS = new Set([\n \"message\",\n \"timer\",\n \"escalation\",\n \"conditional\",\n \"error\",\n \"compensation\",\n \"signal\",\n \"multiple\",\n \"parallelMultiple\",\n]);\n\nconst NON_INTERRUPTING_EVENT_SUBPROCESS_START_TRIGGERS = new Set([\n \"message\",\n \"timer\",\n \"escalation\",\n \"conditional\",\n \"signal\",\n \"multiple\",\n \"parallelMultiple\",\n]);\n\nconst NON_INTERRUPTING_BOUNDARY_TRIGGERS = new Set([\n \"message\",\n \"timer\",\n \"conditional\",\n \"signal\",\n \"escalation\",\n]);\n\nfunction isEventSubProcessParent(\n parentType?: BpmnElementType | null,\n parentSubProcessVariant?: SubProcessVariant,\n): boolean {\n return parentType === \"EventSubProcess\" || parentSubProcessVariant === \"event\";\n}\n\nexport function getAllowedEventTriggers(\n options: GetAllowedEventTriggersOptions,\n): EventTrigger[] {\n const allowed = new Set(BASE_ALLOWED_EVENT_TRIGGERS[options.baseType]);\n\n if (options.baseType === \"StartEvent\" && isEventSubProcessParent(options.parentType, options.parentSubProcessVariant)) {\n for (const trigger of Array.from(allowed)) {\n if (!EVENT_SUBPROCESS_ALLOWED_START_TRIGGERS.has(trigger)) {\n allowed.delete(trigger);\n }\n }\n }\n\n if (options.baseType === \"StartEvent\" && options.isNonInterrupting) {\n for (const trigger of Array.from(allowed)) {\n if (!NON_INTERRUPTING_EVENT_SUBPROCESS_START_TRIGGERS.has(trigger)) {\n allowed.delete(trigger);\n }\n }\n }\n\n if (options.baseType === \"BoundaryEvent\" && options.isNonInterrupting) {\n for (const trigger of Array.from(allowed)) {\n if (!NON_INTERRUPTING_BOUNDARY_TRIGGERS.has(trigger)) {\n allowed.delete(trigger);\n }\n }\n }\n\n return EVENT_TRIGGER_ORDER.filter((trigger) => allowed.has(trigger));\n}\n"]}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// src/xml/aranza-descriptor.ts
|
|
2
|
+
var ARANZA_DESCRIPTOR = {
|
|
3
|
+
name: "Aranza",
|
|
4
|
+
uri: "http://aranzatech.io/schema/bpmn-extension/1.0",
|
|
5
|
+
prefix: "aranza",
|
|
6
|
+
xml: { tagAlias: "lowerCase" },
|
|
7
|
+
types: [
|
|
8
|
+
{
|
|
9
|
+
name: "TaskConfig",
|
|
10
|
+
superClass: ["Element"],
|
|
11
|
+
properties: [
|
|
12
|
+
{ name: "priority", isAttr: true, type: "String" },
|
|
13
|
+
{ name: "owner", isAttr: true, type: "String" },
|
|
14
|
+
{ name: "sla", isAttr: true, type: "String" },
|
|
15
|
+
// Aranza connector execution config (resolved at runtime by the Flowable delegate)
|
|
16
|
+
{ name: "implementation", isAttr: true, type: "String" },
|
|
17
|
+
{ name: "connectorInstanceId", isAttr: true, type: "String" },
|
|
18
|
+
{ name: "connectorId", isAttr: true, type: "String" },
|
|
19
|
+
{ name: "connectorAction", isAttr: true, type: "String" },
|
|
20
|
+
{ name: "connectorParamsJson", isAttr: true, type: "String" },
|
|
21
|
+
{ name: "httpMethod", isAttr: true, type: "String" },
|
|
22
|
+
{ name: "endpoint", isAttr: true, type: "String" },
|
|
23
|
+
{ name: "operationRef", isAttr: true, type: "String" },
|
|
24
|
+
{ name: "connector", isAttr: true, type: "String" },
|
|
25
|
+
{ name: "action", isAttr: true, type: "String" },
|
|
26
|
+
// Flowable implementation hints stored for round-trip fidelity
|
|
27
|
+
{ name: "flowableType", isAttr: true, type: "String" },
|
|
28
|
+
{ name: "flowableDelegateExpression", isAttr: true, type: "String" },
|
|
29
|
+
// BusinessRuleTask: reference to a DMN decision table id
|
|
30
|
+
{ name: "decisionRef", isAttr: true, type: "String" },
|
|
31
|
+
// UserTask: form key resolved to a FormDefinition name at runtime
|
|
32
|
+
{ name: "formKey", isAttr: true, type: "String" },
|
|
33
|
+
// UserTask: Flowable task assignment — comma-separated ids
|
|
34
|
+
{ name: "candidateUsers", isAttr: true, type: "String" },
|
|
35
|
+
{ name: "candidateGroups", isAttr: true, type: "String" },
|
|
36
|
+
// UserTask: scheduling + skip expression
|
|
37
|
+
{ name: "dueDate", isAttr: true, type: "String" },
|
|
38
|
+
{ name: "skipExpression", isAttr: true, type: "String" },
|
|
39
|
+
{ name: "businessCalendarName", isAttr: true, type: "String" }
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
// BusinessRuleTask: simplified inline decision table (JSON-serialized)
|
|
44
|
+
name: "InlineDecision",
|
|
45
|
+
superClass: ["Element"],
|
|
46
|
+
properties: [
|
|
47
|
+
{ name: "hitPolicy", isAttr: true, type: "String" },
|
|
48
|
+
{ name: "tableJson", isAttr: true, type: "String" }
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
// MessageFlow: payload schema + correlation key for executable BPMN
|
|
53
|
+
name: "MessageFlowConfig",
|
|
54
|
+
superClass: ["Element"],
|
|
55
|
+
properties: [
|
|
56
|
+
{ name: "payloadSchema", isAttr: true, type: "String" },
|
|
57
|
+
{ name: "correlationKey", isAttr: true, type: "String" }
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
enumerations: [],
|
|
62
|
+
associations: []
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
// src/extensions/types.ts
|
|
66
|
+
function hasText(value) {
|
|
67
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
68
|
+
}
|
|
69
|
+
function getBpmnTaskExecutionExtensions(data) {
|
|
70
|
+
const result = {};
|
|
71
|
+
if (data.priority) result.priority = data.priority;
|
|
72
|
+
if (hasText(data.owner)) result.owner = data.owner;
|
|
73
|
+
if (hasText(data.sla)) result.sla = data.sla;
|
|
74
|
+
if (hasText(data.connector)) result.connector = data.connector;
|
|
75
|
+
if (hasText(data.action)) result.action = data.action;
|
|
76
|
+
if (hasText(data.flowableType)) result.flowableType = data.flowableType;
|
|
77
|
+
if (hasText(data.flowableDelegateExpression)) {
|
|
78
|
+
result.flowableDelegateExpression = data.flowableDelegateExpression;
|
|
79
|
+
}
|
|
80
|
+
if (data.serviceConfig && Object.keys(data.serviceConfig).length > 0) {
|
|
81
|
+
result.serviceConfig = data.serviceConfig;
|
|
82
|
+
}
|
|
83
|
+
if (hasText(data.decisionRef)) result.decisionRef = data.decisionRef;
|
|
84
|
+
if (data.inlineDecisionTable) result.inlineDecisionTable = data.inlineDecisionTable;
|
|
85
|
+
if (hasText(data.formKey)) result.formKey = data.formKey;
|
|
86
|
+
if (hasText(data.candidateUsers)) result.candidateUsers = data.candidateUsers;
|
|
87
|
+
if (hasText(data.candidateGroups)) result.candidateGroups = data.candidateGroups;
|
|
88
|
+
if (hasText(data.dueDate)) result.dueDate = data.dueDate;
|
|
89
|
+
if (hasText(data.skipExpression)) result.skipExpression = data.skipExpression;
|
|
90
|
+
if (hasText(data.businessCalendarName)) {
|
|
91
|
+
result.businessCalendarName = data.businessCalendarName;
|
|
92
|
+
}
|
|
93
|
+
return Object.keys(result).length > 0 ? result : void 0;
|
|
94
|
+
}
|
|
95
|
+
function getBpmnMessageFlowExecutionExtensions(data) {
|
|
96
|
+
const result = {};
|
|
97
|
+
if (hasText(data.payloadSchema)) result.payloadSchema = data.payloadSchema;
|
|
98
|
+
if (hasText(data.correlationKey)) result.correlationKey = data.correlationKey;
|
|
99
|
+
return Object.keys(result).length > 0 ? result : void 0;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export { ARANZA_DESCRIPTOR, getBpmnMessageFlowExecutionExtensions, getBpmnTaskExecutionExtensions };
|
|
103
|
+
//# sourceMappingURL=chunk-TB6V4S5N.js.map
|
|
104
|
+
//# sourceMappingURL=chunk-TB6V4S5N.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/xml/aranza-descriptor.ts","../src/extensions/types.ts"],"names":[],"mappings":"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","file":"chunk-TB6V4S5N.js","sourcesContent":["/**\n * bpmn-moddle package descriptor for the AranzaFlows extension namespace.\n *\n * Registered as { aranza: ARANZA_DESCRIPTOR } when constructing BpmnModdle so\n * that aranza:TaskConfig elements can be created and parsed via extensionElements.\n *\n * XML shape:\n * <bpmn:userTask id=\"Task_1\" name=\"Review\">\n * <bpmn:extensionElements>\n * <aranza:taskConfig priority=\"critical\" owner=\"ops-team\" sla=\"PT4H\" />\n * </bpmn:extensionElements>\n * </bpmn:userTask>\n */\nexport const ARANZA_DESCRIPTOR = {\n name: \"Aranza\",\n uri: \"http://aranzatech.io/schema/bpmn-extension/1.0\",\n prefix: \"aranza\",\n xml: { tagAlias: \"lowerCase\" },\n types: [\n {\n name: \"TaskConfig\",\n superClass: [\"Element\"],\n properties: [\n { name: \"priority\", isAttr: true, type: \"String\" },\n { name: \"owner\", isAttr: true, type: \"String\" },\n { name: \"sla\", isAttr: true, type: \"String\" },\n // Aranza connector execution config (resolved at runtime by the Flowable delegate)\n { name: \"implementation\", isAttr: true, type: \"String\" },\n { name: \"connectorInstanceId\", isAttr: true, type: \"String\" },\n { name: \"connectorId\", isAttr: true, type: \"String\" },\n { name: \"connectorAction\", isAttr: true, type: \"String\" },\n { name: \"connectorParamsJson\", isAttr: true, type: \"String\" },\n { name: \"httpMethod\", isAttr: true, type: \"String\" },\n { name: \"endpoint\", isAttr: true, type: \"String\" },\n { name: \"operationRef\", isAttr: true, type: \"String\" },\n { name: \"connector\", isAttr: true, type: \"String\" },\n { name: \"action\", isAttr: true, type: \"String\" },\n // Flowable implementation hints stored for round-trip fidelity\n { name: \"flowableType\", isAttr: true, type: \"String\" },\n { name: \"flowableDelegateExpression\", isAttr: true, type: \"String\" },\n // BusinessRuleTask: reference to a DMN decision table id\n { name: \"decisionRef\", isAttr: true, type: \"String\" },\n // UserTask: form key resolved to a FormDefinition name at runtime\n { name: \"formKey\", isAttr: true, type: \"String\" },\n // UserTask: Flowable task assignment — comma-separated ids\n { name: \"candidateUsers\", isAttr: true, type: \"String\" },\n { name: \"candidateGroups\", isAttr: true, type: \"String\" },\n // UserTask: scheduling + skip expression\n { name: \"dueDate\", isAttr: true, type: \"String\" },\n { name: \"skipExpression\", isAttr: true, type: \"String\" },\n { name: \"businessCalendarName\", isAttr: true, type: \"String\" },\n ],\n },\n {\n // BusinessRuleTask: simplified inline decision table (JSON-serialized)\n name: \"InlineDecision\",\n superClass: [\"Element\"],\n properties: [\n { name: \"hitPolicy\", isAttr: true, type: \"String\" },\n { name: \"tableJson\", isAttr: true, type: \"String\" },\n ],\n },\n {\n // MessageFlow: payload schema + correlation key for executable BPMN\n name: \"MessageFlowConfig\",\n superClass: [\"Element\"],\n properties: [\n { name: \"payloadSchema\", isAttr: true, type: \"String\" },\n { name: \"correlationKey\", isAttr: true, type: \"String\" },\n ],\n },\n ],\n enumerations: [],\n associations: [],\n} as const;\n","import type {\n BpmnEdgeData,\n BpmnNodeData,\n BpmnServiceTaskConfig,\n InlineDecisionTable,\n} from \"../elements/types\";\n\nexport type BpmnExecutionEngine = \"flowable\";\n\nexport interface BpmnAranzaTaskExtensions {\n priority?: \"critical\" | \"high\" | \"medium\" | \"low\";\n owner?: string;\n sla?: string;\n connector?: string;\n action?: string;\n}\n\nexport interface BpmnFlowableTaskExtensions {\n flowableType?: string;\n flowableDelegateExpression?: string;\n decisionRef?: string;\n formKey?: string;\n candidateUsers?: string;\n candidateGroups?: string;\n dueDate?: string;\n skipExpression?: string;\n businessCalendarName?: string;\n}\n\nexport interface BpmnTaskExecutionExtensions\n extends BpmnAranzaTaskExtensions, BpmnFlowableTaskExtensions {\n serviceConfig?: BpmnServiceTaskConfig;\n inlineDecisionTable?: InlineDecisionTable;\n}\n\nexport interface BpmnMessageFlowExecutionExtensions {\n payloadSchema?: string;\n correlationKey?: string;\n}\n\nexport interface BpmnFlowableExportOptions {\n enabled?: boolean;\n backendUrlTemplate?: string;\n serviceTaskConfigs?: Record<string, BpmnServiceTaskConfig | undefined>;\n connectorResponseVariableName?: string;\n decisionResponseVariableName?: string;\n}\n\nfunction hasText(value: unknown): value is string {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nexport function getBpmnTaskExecutionExtensions(\n data: Pick<\n BpmnNodeData,\n | \"priority\"\n | \"owner\"\n | \"sla\"\n | \"connector\"\n | \"action\"\n | \"flowableType\"\n | \"flowableDelegateExpression\"\n | \"serviceConfig\"\n | \"decisionRef\"\n | \"inlineDecisionTable\"\n | \"formKey\"\n | \"candidateUsers\"\n | \"candidateGroups\"\n | \"dueDate\"\n | \"skipExpression\"\n | \"businessCalendarName\"\n >,\n): BpmnTaskExecutionExtensions | undefined {\n const result: BpmnTaskExecutionExtensions = {};\n\n if (data.priority) result.priority = data.priority;\n if (hasText(data.owner)) result.owner = data.owner;\n if (hasText(data.sla)) result.sla = data.sla;\n if (hasText(data.connector)) result.connector = data.connector;\n if (hasText(data.action)) result.action = data.action;\n if (hasText(data.flowableType)) result.flowableType = data.flowableType;\n if (hasText(data.flowableDelegateExpression)) {\n result.flowableDelegateExpression = data.flowableDelegateExpression;\n }\n if (data.serviceConfig && Object.keys(data.serviceConfig).length > 0) {\n result.serviceConfig = data.serviceConfig;\n }\n if (hasText(data.decisionRef)) result.decisionRef = data.decisionRef;\n if (data.inlineDecisionTable) result.inlineDecisionTable = data.inlineDecisionTable;\n if (hasText(data.formKey)) result.formKey = data.formKey;\n if (hasText(data.candidateUsers)) result.candidateUsers = data.candidateUsers;\n if (hasText(data.candidateGroups)) result.candidateGroups = data.candidateGroups;\n if (hasText(data.dueDate)) result.dueDate = data.dueDate;\n if (hasText(data.skipExpression)) result.skipExpression = data.skipExpression;\n if (hasText(data.businessCalendarName)) {\n result.businessCalendarName = data.businessCalendarName;\n }\n\n return Object.keys(result).length > 0 ? result : undefined;\n}\n\nexport function getBpmnMessageFlowExecutionExtensions(\n data: Pick<BpmnEdgeData, \"payloadSchema\" | \"correlationKey\">,\n): BpmnMessageFlowExecutionExtensions | undefined {\n const result: BpmnMessageFlowExecutionExtensions = {};\n if (hasText(data.payloadSchema)) result.payloadSchema = data.payloadSchema;\n if (hasText(data.correlationKey)) result.correlationKey = data.correlationKey;\n return Object.keys(result).length > 0 ? result : undefined;\n}\n"]}
|