@aranzatech/diagrams-bpmn 0.2.12 → 0.2.13

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 (41) hide show
  1. package/dist/{catalog-DUfPajtM.d.cts → catalog-BiLXVn-2.d.cts} +1 -1
  2. package/dist/{catalog-BKdtbOQT.d.ts → catalog-Di2nzGs9.d.ts} +1 -1
  3. package/dist/chunk-FBTGIYZS.js +218 -0
  4. package/dist/chunk-FBTGIYZS.js.map +1 -0
  5. package/dist/{chunk-MZVDC6FU.js → chunk-YUE5EM3W.js} +76 -10
  6. package/dist/chunk-YUE5EM3W.js.map +1 -0
  7. package/dist/elements/index.cjs +217 -0
  8. package/dist/elements/index.cjs.map +1 -1
  9. package/dist/elements/index.d.cts +15 -16
  10. package/dist/elements/index.d.ts +15 -16
  11. package/dist/elements/index.js +1 -1
  12. package/dist/guards-DPHXfpY8.d.cts +16 -0
  13. package/dist/guards-qgSeZEU4.d.ts +16 -0
  14. package/dist/index.cjs +74 -8
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.d.cts +4 -4
  17. package/dist/index.d.ts +4 -4
  18. package/dist/index.js +2 -2
  19. package/dist/layout/index.cjs +10 -10
  20. package/dist/layout/index.cjs.map +1 -1
  21. package/dist/layout/index.d.cts +3 -3
  22. package/dist/layout/index.d.ts +3 -3
  23. package/dist/layout/index.js +10 -10
  24. package/dist/layout/index.js.map +1 -1
  25. package/dist/modeling/index.d.cts +3 -3
  26. package/dist/modeling/index.d.ts +3 -3
  27. package/dist/{types-hgmLfRA9.d.cts → types-Dfrt0wVs.d.cts} +29 -1
  28. package/dist/{types-hgmLfRA9.d.ts → types-Dfrt0wVs.d.ts} +29 -1
  29. package/dist/{types-kI1SiQB4.d.ts → types-rEfHsPr5.d.ts} +1 -1
  30. package/dist/{types-44yNtMtO.d.cts → types-s2_VvPGf.d.cts} +1 -1
  31. package/dist/validation/index.d.cts +2 -2
  32. package/dist/validation/index.d.ts +2 -2
  33. package/dist/xml/index.cjs +74 -8
  34. package/dist/xml/index.cjs.map +1 -1
  35. package/dist/xml/index.d.cts +3 -3
  36. package/dist/xml/index.d.ts +3 -3
  37. package/dist/xml/index.js +1 -1
  38. package/package.json +1 -1
  39. package/dist/chunk-MZVDC6FU.js.map +0 -1
  40. package/dist/chunk-OZKTOILD.js +0 -3
  41. package/dist/chunk-OZKTOILD.js.map +0 -1
@@ -1,7 +1,7 @@
1
- import { a as BpmnImportResult, d as BpmnRFNode, c as BpmnRFEdge, B as BpmnExportOptions } from '../types-44yNtMtO.cjs';
2
- export { b as BpmnProcessModel } from '../types-44yNtMtO.cjs';
1
+ import { a as BpmnImportResult, d as BpmnRFNode, c as BpmnRFEdge, B as BpmnExportOptions } from '../types-s2_VvPGf.cjs';
2
+ export { b as BpmnProcessModel } from '../types-s2_VvPGf.cjs';
3
3
  import '@xyflow/react';
4
- import '../types-hgmLfRA9.cjs';
4
+ import '../types-Dfrt0wVs.cjs';
5
5
 
6
6
  /**
7
7
  * Parse a BPMN 2.0 XML string into a ReactFlow-compatible node/edge graph.
@@ -1,7 +1,7 @@
1
- import { a as BpmnImportResult, d as BpmnRFNode, c as BpmnRFEdge, B as BpmnExportOptions } from '../types-kI1SiQB4.js';
2
- export { b as BpmnProcessModel } from '../types-kI1SiQB4.js';
1
+ import { a as BpmnImportResult, d as BpmnRFNode, c as BpmnRFEdge, B as BpmnExportOptions } from '../types-rEfHsPr5.js';
2
+ export { b as BpmnProcessModel } from '../types-rEfHsPr5.js';
3
3
  import '@xyflow/react';
4
- import '../types-hgmLfRA9.js';
4
+ import '../types-Dfrt0wVs.js';
5
5
 
6
6
  /**
7
7
  * Parse a BPMN 2.0 XML string into a ReactFlow-compatible node/edge graph.
package/dist/xml/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { parseBpmnXml, serializeBpmnXml } from '../chunk-MZVDC6FU.js';
1
+ export { parseBpmnXml, serializeBpmnXml } from '../chunk-YUE5EM3W.js';
2
2
  import '../chunk-L5Z22RLX.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aranzatech/diagrams-bpmn",
3
- "version": "0.2.12",
3
+ "version": "0.2.13",
4
4
  "description": "BPMN 2.0 elements, nodes, edges, XML import/export, token simulation",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/xml/aranza-descriptor.ts","../src/xml/mapper.ts","../src/xml/importer.ts","../src/xml/exporter.ts"],"names":["laneSet","def","parseVariableType"],"mappings":"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","file":"chunk-MZVDC6FU.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: \"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 enumerations: [],\n associations: [],\n} as const;\n","import type { BpmnElementType, BpmnEdgeType, EventTrigger } from \"../elements/types\";\n\n// ─── BPMN moddle $type → our BpmnElementType ─────────────────────────────────\n\nexport const MODDLE_TO_ELEMENT_TYPE: Record<string, BpmnElementType | undefined> = {\n \"bpmn:StartEvent\": \"StartEvent\",\n \"bpmn:EndEvent\": \"EndEvent\",\n \"bpmn:IntermediateCatchEvent\": \"IntermediateCatchEvent\",\n \"bpmn:IntermediateThrowEvent\": \"IntermediateThrowEvent\",\n \"bpmn:BoundaryEvent\": \"BoundaryEvent\",\n \"bpmn:Task\": \"Task\",\n \"bpmn:UserTask\": \"UserTask\",\n \"bpmn:ServiceTask\": \"ServiceTask\",\n \"bpmn:ScriptTask\": \"ScriptTask\",\n \"bpmn:ManualTask\": \"ManualTask\",\n \"bpmn:BusinessRuleTask\": \"BusinessRuleTask\",\n \"bpmn:ReceiveTask\": \"ReceiveTask\",\n \"bpmn:SendTask\": \"SendTask\",\n \"bpmn:CallActivity\": \"CallActivity\",\n \"bpmn:ExclusiveGateway\": \"ExclusiveGateway\",\n \"bpmn:InclusiveGateway\": \"InclusiveGateway\",\n \"bpmn:ParallelGateway\": \"ParallelGateway\",\n \"bpmn:EventBasedGateway\": \"EventBasedGateway\",\n \"bpmn:ComplexGateway\": \"ComplexGateway\",\n \"bpmn:SubProcess\": \"SubProcess\",\n \"bpmn:AdHocSubProcess\": \"AdHocSubProcess\",\n \"bpmn:Transaction\": \"Transaction\",\n \"bpmn:TextAnnotation\": \"Annotation\",\n \"bpmn:Group\": \"Group\",\n \"bpmn:DataObject\": \"DataObject\",\n \"bpmn:DataObjectReference\": \"DataObjectReference\",\n \"bpmn:DataInput\": \"DataInput\",\n \"bpmn:DataOutput\": \"DataOutput\",\n \"bpmn:DataStore\": \"DataStore\",\n \"bpmn:DataStoreReference\": \"DataStoreReference\",\n \"bpmn:Conversation\": \"Conversation\",\n \"bpmn:SubConversation\": \"SubConversation\",\n \"bpmn:CallConversation\": \"CallConversation\",\n \"bpmn:ChoreographyTask\": \"ChoreographyTask\",\n \"bpmn:SubChoreography\": \"SubChoreography\",\n \"bpmn:CallChoreography\": \"CallChoreography\",\n \"bpmn:Lane\": \"Lane\",\n};\n\n// ─── Our BpmnElementType → canonical bpmn: type ──────────────────────────────\n\nexport const ELEMENT_TYPE_TO_MODDLE: Partial<Record<BpmnElementType, string>> = {\n StartEvent: \"bpmn:StartEvent\",\n EndEvent: \"bpmn:EndEvent\",\n IntermediateCatchEvent: \"bpmn:IntermediateCatchEvent\",\n IntermediateThrowEvent: \"bpmn:IntermediateThrowEvent\",\n BoundaryEvent: \"bpmn:BoundaryEvent\",\n Task: \"bpmn:Task\",\n UserTask: \"bpmn:UserTask\",\n ServiceTask: \"bpmn:ServiceTask\",\n ScriptTask: \"bpmn:ScriptTask\",\n ManualTask: \"bpmn:ManualTask\",\n BusinessRuleTask: \"bpmn:BusinessRuleTask\",\n ReceiveTask: \"bpmn:ReceiveTask\",\n SendTask: \"bpmn:SendTask\",\n CallActivity: \"bpmn:CallActivity\",\n ExclusiveGateway: \"bpmn:ExclusiveGateway\",\n InclusiveGateway: \"bpmn:InclusiveGateway\",\n ParallelGateway: \"bpmn:ParallelGateway\",\n EventBasedGateway: \"bpmn:EventBasedGateway\",\n ComplexGateway: \"bpmn:ComplexGateway\",\n SubProcess: \"bpmn:SubProcess\",\n Transaction: \"bpmn:Transaction\",\n EventSubProcess: \"bpmn:SubProcess\",\n AdHocSubProcess: \"bpmn:AdHocSubProcess\",\n Pool: \"bpmn:Participant\",\n Lane: \"bpmn:Lane\",\n Annotation: \"bpmn:TextAnnotation\",\n Group: \"bpmn:Group\",\n DataObject: \"bpmn:DataObject\",\n DataObjectReference: \"bpmn:DataObjectReference\",\n DataInput: \"bpmn:DataInput\",\n DataOutput: \"bpmn:DataOutput\",\n DataStore: \"bpmn:DataStore\",\n DataStoreReference: \"bpmn:DataStoreReference\",\n Conversation: \"bpmn:Conversation\",\n SubConversation: \"bpmn:SubConversation\",\n CallConversation: \"bpmn:CallConversation\",\n ChoreographyTask: \"bpmn:ChoreographyTask\",\n SubChoreography: \"bpmn:SubChoreography\",\n CallChoreography: \"bpmn:CallChoreography\",\n};\n\n// ─── Edge type mappings ───────────────────────────────────────────────────────\n\nexport const MODDLE_TO_EDGE_TYPE: Record<string, BpmnEdgeType | undefined> = {\n \"bpmn:SequenceFlow\": \"sequenceFlow\",\n \"bpmn:MessageFlow\": \"messageFlow\",\n \"bpmn:Association\": \"association\",\n \"bpmn:DataInputAssociation\": \"dataAssociation\",\n \"bpmn:DataOutputAssociation\": \"dataAssociation\",\n \"bpmn:ConversationLink\": \"conversationLink\",\n};\n\nexport const EDGE_TYPE_TO_MODDLE: Record<BpmnEdgeType, string> = {\n sequenceFlow: \"bpmn:SequenceFlow\",\n messageFlow: \"bpmn:MessageFlow\",\n association: \"bpmn:Association\",\n dataAssociation: \"bpmn:DataInputAssociation\",\n conversationLink:\"bpmn:ConversationLink\",\n};\n\n// ─── Event definition type → trigger ─────────────────────────────────────────\n\nexport const EVENT_DEF_TO_TRIGGER: Record<string, EventTrigger> = {\n \"bpmn:MessageEventDefinition\": \"message\",\n \"bpmn:TimerEventDefinition\": \"timer\",\n \"bpmn:EscalationEventDefinition\": \"escalation\",\n \"bpmn:ConditionalEventDefinition\": \"conditional\",\n \"bpmn:ErrorEventDefinition\": \"error\",\n \"bpmn:CancelEventDefinition\": \"cancel\",\n \"bpmn:CompensateEventDefinition\": \"compensation\",\n \"bpmn:SignalEventDefinition\": \"signal\",\n \"bpmn:LinkEventDefinition\": \"link\",\n \"bpmn:TerminateEventDefinition\": \"terminate\",\n};\n\nexport const TRIGGER_TO_EVENT_DEF: Partial<Record<EventTrigger, string>> = {\n message: \"bpmn:MessageEventDefinition\",\n timer: \"bpmn:TimerEventDefinition\",\n escalation: \"bpmn:EscalationEventDefinition\",\n conditional: \"bpmn:ConditionalEventDefinition\",\n error: \"bpmn:ErrorEventDefinition\",\n cancel: \"bpmn:CancelEventDefinition\",\n compensation: \"bpmn:CompensateEventDefinition\",\n signal: \"bpmn:SignalEventDefinition\",\n link: \"bpmn:LinkEventDefinition\",\n terminate: \"bpmn:TerminateEventDefinition\",\n};\n","import type { ModdleElement } from \"bpmn-moddle\";\nimport { ARANZA_DESCRIPTOR } from \"./aranza-descriptor\";\nimport { BPMN_ELEMENT_CATALOG } from \"../elements/catalog\";\nimport type {\n BpmnElementType,\n BpmnEdgeType,\n BpmnNodeData,\n BpmnEdgeData,\n EventTrigger,\n SubProcessVariant,\n BpmnDefinitionsSet,\n BpmnEventDefinition,\n BpmnProcessVariable,\n} from \"../elements/types\";\nimport type { BpmnRFNode, BpmnRFEdge, BpmnImportResult } from \"./types\";\nimport {\n MODDLE_TO_ELEMENT_TYPE,\n MODDLE_TO_EDGE_TYPE,\n EVENT_DEF_TO_TRIGGER,\n} from \"./mapper\";\n\n// ─── Internal helpers ─────────────────────────────────────────────────────────\n\ninterface ShapeInfo {\n x: number;\n y: number;\n width: number;\n height: number;\n isExpanded?: boolean;\n}\n\ntype ShapeMap = Map<string, ShapeInfo>;\ntype WaypointMap = Map<string, Array<{ x: number; y: number }>>;\n\nfunction asElements(v: unknown): ModdleElement[] {\n return Array.isArray(v) ? (v as ModdleElement[]) : [];\n}\n\nfunction asString(v: unknown): string | undefined {\n return typeof v === \"string\" && v.trim() ? v.trim() : undefined;\n}\n\nfunction extractDocumentation(el: ModdleElement): string | undefined {\n const [doc] = asElements(el.documentation);\n return asString(doc?.text);\n}\n\n// ─── Extract BPMNDI shape/edge positions ─────────────────────────────────────\n\nfunction extractDiagramInfo(definitions: ModdleElement): {\n shapes: ShapeMap;\n waypoints: WaypointMap;\n} {\n const shapes: ShapeMap = new Map();\n const waypoints: WaypointMap = new Map();\n\n for (const diagram of asElements(definitions.diagrams)) {\n const plane = diagram.plane as ModdleElement | undefined;\n if (!plane) continue;\n\n for (const el of asElements(plane.planeElement)) {\n const bpmnEl = el.bpmnElement as ModdleElement | undefined;\n if (!bpmnEl?.id) continue;\n const id = bpmnEl.id as string;\n\n if (el.$type === \"bpmndi:BPMNShape\") {\n const b = el.bounds as { x: number; y: number; width: number; height: number } | undefined;\n if (b) {\n shapes.set(id, {\n x: b.x,\n y: b.y,\n width: b.width,\n height: b.height,\n ...(typeof el.isExpanded === \"boolean\" ? { isExpanded: el.isExpanded as boolean } : {}),\n });\n }\n } else if (el.$type === \"bpmndi:BPMNEdge\") {\n const pts = (el.waypoint ?? []) as Array<{ x: number; y: number }>;\n if (pts.length) waypoints.set(id, pts);\n }\n }\n }\n\n return { shapes, waypoints };\n}\n\n// ─── Lane membership (flowNodeId → laneId) ───────────────────────────────────\n\nfunction extractLaneMembership(process: ModdleElement): Map<string, string> {\n const map = new Map<string, string>();\n\n function walkLaneSet(laneSet: ModdleElement) {\n for (const lane of asElements(laneSet.lanes)) {\n const laneId = lane.id as string | undefined;\n if (!laneId) continue;\n for (const ref of asElements(lane.flowNodeRef)) {\n if (ref.id) map.set(ref.id as string, laneId);\n }\n const child = lane.childLaneSet as ModdleElement | undefined;\n if (child) walkLaneSet(child);\n }\n }\n\n const laneSet = process.laneSet as ModdleElement | undefined;\n if (laneSet) walkLaneSet(laneSet);\n return map;\n}\n\n// ─── Event trigger from eventDefinitions ─────────────────────────────────────\n\nfunction extractTrigger(el: ModdleElement): EventTrigger | undefined {\n const defs = asElements(el.eventDefinitions);\n if (defs.length === 0) return undefined;\n if (defs.length > 1) {\n return defs.some((def) => def.$type === \"bpmn:ParallelMultipleEventDefinition\")\n ? \"parallelMultiple\"\n : \"multiple\";\n }\n return EVENT_DEF_TO_TRIGGER[defs[0].$type];\n}\n\nfunction parseVariableType(value: unknown): BpmnProcessVariable[\"type\"] {\n const text = asString(value) ?? \"\";\n if (text.includes(\"int\")) return \"integer\";\n if (text.includes(\"boolean\")) return \"boolean\";\n if (text.includes(\"date\")) return \"date\";\n if (text.includes(\"array\")) return \"array\";\n if (text.includes(\"anyType\")) return \"object\";\n return \"string\";\n}\n\nfunction extractEventDefinition(el: ModdleElement): BpmnEventDefinition | undefined {\n const defs = asElements(el.eventDefinitions);\n if (defs.length === 0) return undefined;\n if (defs.length > 1) {\n return {\n type: defs.some((def) => def.$type === \"bpmn:ParallelMultipleEventDefinition\")\n ? \"parallelMultiple\"\n : \"multiple\",\n };\n }\n\n const [def] = defs;\n const type = EVENT_DEF_TO_TRIGGER[def.$type];\n if (!type) return undefined;\n\n const eventDefinition: BpmnEventDefinition = {\n type,\n ...(asString((def.messageRef as ModdleElement | undefined)?.id) ? { messageRef: (def.messageRef as ModdleElement).id as string } : {}),\n ...(asString((def.signalRef as ModdleElement | undefined)?.id) ? { signalRef: (def.signalRef as ModdleElement).id as string } : {}),\n ...(asString((def.errorRef as ModdleElement | undefined)?.id) ? { errorRef: (def.errorRef as ModdleElement).id as string } : {}),\n ...(asString((def.escalationRef as ModdleElement | undefined)?.id) ? { escalationRef: (def.escalationRef as ModdleElement).id as string } : {}),\n ...(asString((def.condition as ModdleElement | undefined)?.body) ? { conditionExpression: (def.condition as ModdleElement).body as string } : {}),\n };\n\n const timeDate = asString((def.timeDate as ModdleElement | undefined)?.body);\n const timeDuration = asString((def.timeDuration as ModdleElement | undefined)?.body);\n const timeCycle = asString((def.timeCycle as ModdleElement | undefined)?.body);\n if (timeDate) eventDefinition.timer = { kind: \"date\", value: timeDate };\n else if (timeCycle) eventDefinition.timer = { kind: \"cycle\", value: timeCycle };\n else if (timeDuration) eventDefinition.timer = { kind: \"duration\", value: timeDuration };\n\n if (type === \"link\") {\n const linkName = asString(el.name) ?? asString(def.name);\n if (linkName) eventDefinition.linkName = linkName;\n }\n\n return eventDefinition;\n}\n\nfunction extractDefinitions(rootElement: ModdleElement): BpmnDefinitionsSet | undefined {\n const definitions: BpmnDefinitionsSet = {};\n const rootElements = asElements(rootElement.rootElements);\n\n const messages = rootElements\n .filter((element) => element.$type === \"bpmn:Message\" && asString(element.id))\n .map((message) => ({\n id: message.id as string,\n name: asString(message.name) ?? message.id as string,\n }));\n if (messages.length > 0) definitions.messages = messages;\n\n const signals = rootElements\n .filter((element) => element.$type === \"bpmn:Signal\" && asString(element.id))\n .map((signal) => ({\n id: signal.id as string,\n name: asString(signal.name) ?? signal.id as string,\n }));\n if (signals.length > 0) definitions.signals = signals;\n\n const errors = rootElements\n .filter((element) => element.$type === \"bpmn:Error\" && asString(element.id))\n .map((error) => ({\n id: error.id as string,\n name: asString(error.name) ?? error.id as string,\n ...(asString(error.errorCode) ? { errorCode: error.errorCode as string } : {}),\n }));\n if (errors.length > 0) definitions.errors = errors;\n\n const escalations = rootElements\n .filter((element) => element.$type === \"bpmn:Escalation\" && asString(element.id))\n .map((escalation) => ({\n id: escalation.id as string,\n name: asString(escalation.name) ?? escalation.id as string,\n ...(asString(escalation.escalationCode) ? { escalationCode: escalation.escalationCode as string } : {}),\n }));\n if (escalations.length > 0) definitions.escalations = escalations;\n\n const itemDefinitions = asElements(rootElement.itemDefinitions)\n .filter((item) => asString(item.id))\n .map((item) => ({\n id: String(item.id).replace(/_item$/, \"\"),\n name: String(item.id).replace(/_item$/, \"\"),\n type: parseVariableType(item.structureRef),\n }));\n if (itemDefinitions.length > 0) definitions.variables = itemDefinitions;\n\n return Object.keys(definitions).length > 0 ? definitions : undefined;\n}\n\n// ─── SubProcessVariant from moddle type / properties ─────────────────────────\n\nfunction extractSubProcessVariant(el: ModdleElement): SubProcessVariant | undefined {\n if (el.$type === \"bpmn:Transaction\") return \"transaction\";\n if (el.$type === \"bpmn:AdHocSubProcess\") return \"adhoc\";\n if (el.$type === \"bpmn:SubProcess\" && el.triggeredByEvent === true) return \"event\";\n if (el.triggeredByEvent === true) return \"event\";\n return \"embedded\";\n}\n\n// ─── AranzaFlows extensionElements extractor ─────────────────────────────────\n\nfunction extractAranzaExtensions(el: ModdleElement): Partial<BpmnNodeData> {\n const result: Partial<BpmnNodeData> = {};\n\n // Read Flowable $attrs directly on the element\n const elAttrs = (el as Record<string, unknown>).$attrs as Record<string, unknown> | undefined;\n if (elAttrs) {\n const ft = asString(elAttrs[\"flowable:type\"]);\n if (ft) result.flowableType = ft;\n const fde = asString(elAttrs[\"flowable:delegateExpression\"]);\n if (fde) result.flowableDelegateExpression = fde;\n const fk = asString(elAttrs[\"flowable:formKey\"]);\n if (fk) result.formKey = fk;\n const cu = asString(elAttrs[\"flowable:candidateUsers\"]);\n if (cu) result.candidateUsers = cu;\n const cg = asString(elAttrs[\"flowable:candidateGroups\"]);\n if (cg) result.candidateGroups = cg;\n }\n\n const ext = el.extensionElements as ModdleElement | undefined;\n if (!ext) return result;\n const taskConfig = asElements(ext.values).find((v) => v.$type === \"aranza:TaskConfig\");\n if (!taskConfig) return result;\n\n const priority = asString(taskConfig.priority);\n if (priority === \"critical\" || priority === \"high\" || priority === \"medium\" || priority === \"low\") {\n result.priority = priority;\n }\n const owner = asString(taskConfig.owner);\n if (owner) result.owner = owner;\n const sla = asString(taskConfig.sla);\n if (sla) result.sla = sla;\n const connector = asString(taskConfig.connector);\n if (connector) result.connector = connector;\n const action = asString(taskConfig.action);\n if (action) result.action = action;\n // aranza:TaskConfig stores flowableType/flowableDelegateExpression for round-trip fidelity;\n // prefer these over $attrs when both are present.\n const flowableType = asString(taskConfig.flowableType);\n if (flowableType) result.flowableType = flowableType;\n const flowableDelegateExpression = asString(taskConfig.flowableDelegateExpression);\n if (flowableDelegateExpression) result.flowableDelegateExpression = flowableDelegateExpression;\n const decisionRef = asString(taskConfig.decisionRef);\n if (decisionRef) result.decisionRef = decisionRef;\n const formKey = asString(taskConfig.formKey);\n if (formKey) result.formKey = formKey;\n const candidateUsers = asString(taskConfig.candidateUsers);\n if (candidateUsers) result.candidateUsers = candidateUsers;\n const candidateGroups = asString(taskConfig.candidateGroups);\n if (candidateGroups) result.candidateGroups = candidateGroups;\n const dueDate = asString(taskConfig.dueDate);\n if (dueDate) result.dueDate = dueDate;\n const skipExpression = asString(taskConfig.skipExpression);\n if (skipExpression) result.skipExpression = skipExpression;\n const businessCalendarName = asString(taskConfig.businessCalendarName);\n if (businessCalendarName) result.businessCalendarName = businessCalendarName;\n\n return result;\n}\n\nfunction extractCompletionCondition(el: ModdleElement): string | undefined {\n const cc = el.completionCondition as { body?: string } | string | undefined;\n if (!cc) return undefined;\n if (typeof cc === \"string\") return cc.trim() || undefined;\n return asString(cc.body);\n}\n\nfunction extractLoopCharacteristics(el: ModdleElement): Partial<BpmnNodeData> {\n const lc = el.loopCharacteristics as ModdleElement | undefined;\n if (!lc) return {};\n\n if (lc.$type === \"bpmn:StandardLoopCharacteristics\") {\n const loopCondition = asString((lc.loopCondition as ModdleElement | undefined)?.body);\n return { loopType: \"loop\", ...(loopCondition ? { loopCondition } : {}) };\n }\n\n if (lc.$type === \"bpmn:MultiInstanceLoopCharacteristics\") {\n const loopType = lc.isSequential === true ? \"sequentialMultiple\" : \"parallelMultiple\";\n const loopCardinality = asString((lc.loopCardinality as ModdleElement | undefined)?.body);\n const loopCompletionCondition = asString((lc.completionCondition as ModdleElement | undefined)?.body);\n return {\n loopType,\n ...(loopCardinality ? { loopCardinality } : {}),\n ...(loopCompletionCondition ? { loopCompletionCondition } : {}),\n };\n }\n\n return {};\n}\n\n// ─── Walk a flowElements list, producing nodes and edges ─────────────────────\n\ninterface WalkContext {\n shapes: ShapeMap;\n waypoints: WaypointMap;\n laneMembership: Map<string, string>;\n warnings: string[];\n autoX: { value: number };\n}\n\nfunction walkFlowElements(\n elements: ModdleElement[],\n parentId: string | undefined,\n ctx: WalkContext,\n nodes: BpmnRFNode[],\n edges: BpmnRFEdge[],\n) {\n for (const el of elements) {\n const { $type, id } = el;\n if (!id) continue;\n\n const edgeType = MODDLE_TO_EDGE_TYPE[$type];\n if (edgeType !== undefined) {\n buildEdge(el, edgeType, ctx, edges);\n continue;\n }\n\n // Lane nodes are handled separately via laneMembership\n if ($type === \"bpmn:LaneSet\") continue;\n\n const elementType =\n $type === \"bpmn:SubProcess\" && el.triggeredByEvent === true\n ? \"EventSubProcess\"\n : MODDLE_TO_ELEMENT_TYPE[$type];\n if (!elementType) {\n ctx.warnings.push(`Unknown element type \"${$type}\" (id=${id as string}) — skipped.`);\n continue;\n }\n\n buildNode(el, elementType, parentId, ctx, nodes);\n\n // Recurse into subprocess children (artifacts like TextAnnotation are in el.artifacts)\n if ($type === \"bpmn:SubProcess\" || $type === \"bpmn:Transaction\" || $type === \"bpmn:AdHocSubProcess\") {\n const children = [...asElements(el.flowElements), ...asElements(el.artifacts)];\n const laneMembership = extractLaneMembership(el);\n walkFlowElements(children, id as string, { ...ctx, laneMembership }, nodes, edges);\n }\n }\n}\n\nfunction buildNode(\n el: ModdleElement,\n elementType: BpmnElementType,\n parentId: string | undefined,\n ctx: WalkContext,\n nodes: BpmnRFNode[],\n) {\n const id = el.id as string;\n const meta = BPMN_ELEMENT_CATALOG[elementType];\n const shape = ctx.shapes.get(id);\n\n // Position: use BPMNDI if available, otherwise auto-grid\n const x = shape?.x ?? ctx.autoX.value;\n const y = shape?.y ?? 100;\n if (!shape) ctx.autoX.value += (meta?.defaultWidth ?? 120) + 20;\n\n // TextAnnotation uses `text`, not `name`\n const label = elementType === \"Annotation\" ? (asString(el.text) ?? asString(el.name)) : asString(el.name);\n const documentation = extractDocumentation(el);\n const trigger = extractTrigger(el);\n const eventDefinition = extractEventDefinition(el);\n const isNonInterrupting = el.cancelActivity === false;\n const attachedToRef = (el.attachedToRef as ModdleElement | undefined)?.id as string | undefined;\n const calledElement = elementType === \"CallActivity\" ? asString(el.calledElement) : undefined;\n const aranzaExt = extractAranzaExtensions(el);\n\n const scriptFormat = elementType === \"ScriptTask\" ? asString(el.scriptFormat) : undefined;\n const script = elementType === \"ScriptTask\" ? asString(el.script) : undefined;\n const completionCondition = elementType === \"AdHocSubProcess\" ? extractCompletionCondition(el) : undefined;\n const loopChars = extractLoopCharacteristics(el);\n const dataObjectRef = elementType === \"DataObjectReference\"\n ? asString((el.dataObjectRef as ModdleElement | undefined)?.id)\n : undefined;\n\n const data: BpmnNodeData = {\n elementType,\n ...(label ? { label } : {}),\n ...(documentation ? { documentation } : {}),\n ...(trigger ? { trigger } : {}),\n ...(eventDefinition ? { eventDefinition } : {}),\n ...(isNonInterrupting ? { isNonInterrupting: true } : {}),\n ...(elementType === \"BoundaryEvent\" ? { cancelActivity: el.cancelActivity !== false } : {}),\n ...(attachedToRef ? { attachedToRef } : {}),\n ...(eventDefinition?.timer ? { timer: eventDefinition.timer, timerExpression: eventDefinition.timer } : {}),\n ...(eventDefinition?.messageRef ? { messageRef: eventDefinition.messageRef } : {}),\n ...(eventDefinition?.signalRef ? { signalRef: eventDefinition.signalRef } : {}),\n ...(eventDefinition?.errorRef ? { errorRef: eventDefinition.errorRef } : {}),\n ...(eventDefinition?.escalationRef ? { escalationRef: eventDefinition.escalationRef } : {}),\n ...(eventDefinition?.conditionExpression ? { conditionExpression: eventDefinition.conditionExpression } : {}),\n ...(eventDefinition?.linkName ? { linkName: eventDefinition.linkName } : {}),\n ...(calledElement ? { calledElement } : {}),\n ...(scriptFormat ? { scriptFormat } : {}),\n ...(script ? { script } : {}),\n ...(completionCondition ? { completionCondition } : {}),\n ...(dataObjectRef ? { dataObjectRef } : {}),\n ...loopChars,\n ...aranzaExt,\n };\n\n // SubProcess variant\n if (elementType === \"SubProcess\" || elementType === \"Transaction\" || elementType === \"EventSubProcess\" || elementType === \"AdHocSubProcess\") {\n const variant = extractSubProcessVariant(el);\n if (variant) data.subProcessVariant = variant;\n const isExpanded = shape?.isExpanded ?? true;\n data.isExpanded = isExpanded;\n }\n\n // Determine effective parentId: lane membership overrides process-level parent\n const laneId = ctx.laneMembership.get(id);\n const effectiveParentId = attachedToRef ?? laneId ?? parentId;\n\n const node: BpmnRFNode = {\n id,\n type: elementType,\n position: { x, y },\n data,\n width: shape?.width ?? meta?.defaultWidth,\n height: shape?.height ?? meta?.defaultHeight,\n ...(effectiveParentId ? { parentId: effectiveParentId } : {}),\n };\n\n nodes.push(node);\n}\n\nfunction buildEdge(\n el: ModdleElement,\n edgeType: BpmnEdgeType,\n ctx: WalkContext,\n edges: BpmnRFEdge[],\n) {\n const id = el.id as string;\n const source = (el.sourceRef as ModdleElement | undefined)?.id as string | undefined;\n const target = (el.targetRef as ModdleElement | undefined)?.id as string | undefined;\n\n if (!source || !target) {\n ctx.warnings.push(`Edge \"${id}\" missing source or target — skipped.`);\n return;\n }\n\n const label = asString(el.name);\n const documentation = extractDocumentation(el);\n const condExpr = el.conditionExpression as { body?: string } | undefined;\n\n const rawDir = asString(el.associationDirection);\n const associationDirection =\n edgeType === \"association\" && rawDir\n ? (rawDir.toLowerCase() as \"none\" | \"one\" | \"both\")\n : undefined;\n\n const data: BpmnEdgeData = {\n edgeType,\n ...(label ? { label } : {}),\n ...(documentation ? { documentation } : {}),\n ...(condExpr?.body ? { conditionExpression: condExpr.body } : {}),\n ...(associationDirection ? { associationDirection } : {}),\n };\n\n const waypoints = ctx.waypoints.get(id);\n if (waypoints?.length) data.routingPoints = waypoints;\n\n edges.push({ id, type: edgeType, source, target, data });\n}\n\n// ─── Handle Collaboration: Participants → Pool nodes ──────────────────────────\n\nfunction handleCollaboration(\n collaboration: ModdleElement,\n ctx: WalkContext,\n nodes: BpmnRFNode[],\n edges: BpmnRFEdge[],\n) {\n // Participants become Pool nodes\n for (const participant of asElements(collaboration.participants)) {\n const id = participant.id as string | undefined;\n if (!id) continue;\n const label = asString(participant.name);\n const shape = ctx.shapes.get(id);\n\n const poolNode: BpmnRFNode = {\n id,\n type: \"Pool\",\n position: { x: shape?.x ?? 0, y: shape?.y ?? 0 },\n data: { elementType: \"Pool\", ...(label ? { label } : {}) },\n width: shape?.width ?? 600,\n height: shape?.height ?? 200,\n };\n nodes.push(poolNode);\n\n // Walk the referenced process, assigning pool as parent\n const processRef = participant.processRef as ModdleElement | undefined;\n if (processRef) {\n const laneMembership = extractLaneMembership(processRef);\n walkFlowElements(\n [...asElements(processRef.flowElements), ...asElements(processRef.artifacts)],\n id,\n { ...ctx, laneMembership },\n nodes,\n edges,\n );\n\n // Add Lane nodes\n const laneSet = processRef.laneSet as ModdleElement | undefined;\n if (laneSet) {\n addLaneNodes(laneSet, id, ctx, nodes);\n }\n }\n }\n\n // Message flows\n for (const mf of asElements(collaboration.messageFlows)) {\n buildEdge(mf, \"messageFlow\", ctx, edges);\n }\n\n // Conversation links\n for (const cl of asElements(collaboration.conversationLinks)) {\n buildEdge(cl, \"conversationLink\", ctx, edges);\n }\n}\n\nfunction addLaneNodes(\n laneSet: ModdleElement,\n poolId: string | undefined,\n ctx: WalkContext,\n nodes: BpmnRFNode[],\n) {\n for (const lane of asElements(laneSet.lanes)) {\n const id = lane.id as string | undefined;\n if (!id) continue;\n const label = asString(lane.name);\n const shape = ctx.shapes.get(id);\n\n nodes.push({\n id,\n type: \"Lane\",\n position: { x: shape?.x ?? 30, y: shape?.y ?? 0 },\n data: { elementType: \"Lane\", ...(label ? { label } : {}) },\n width: shape?.width ?? 570,\n height: shape?.height ?? 120,\n ...(poolId ? { parentId: poolId } : {}),\n });\n\n const child = lane.childLaneSet as ModdleElement | undefined;\n if (child) addLaneNodes(child, poolId, ctx, nodes);\n }\n}\n\n// ─── Public: parseBpmnXml ─────────────────────────────────────────────────────\n\n/**\n * Parse a BPMN 2.0 XML string into a ReactFlow-compatible node/edge graph.\n *\n * @param xml - Raw BPMN 2.0 XML string (UTF-8).\n * @returns Parsed nodes, edges, optional definitions set, and any parser warnings.\n * @throws {Error} When the XML cannot be parsed by bpmn-moddle.\n */\nexport async function parseBpmnXml(xml: string): Promise<BpmnImportResult> {\n const { BpmnModdle } = await import(\"bpmn-moddle\");\n const moddle = new BpmnModdle({ aranza: ARANZA_DESCRIPTOR });\n const warnings: string[] = [];\n\n let rootElement: ModdleElement;\n try {\n const result = await moddle.fromXML(xml);\n rootElement = result.rootElement;\n for (const w of result.warnings) warnings.push(w.message);\n } catch (err) {\n throw new Error(`Failed to parse BPMN XML: ${String(err)}`);\n }\n\n const nodes: BpmnRFNode[] = [];\n const edges: BpmnRFEdge[] = [];\n\n const { shapes, waypoints } = extractDiagramInfo(rootElement);\n const ctx: WalkContext = {\n shapes,\n waypoints,\n laneMembership: new Map(),\n warnings,\n autoX: { value: 50 },\n };\n\n for (const rootEl of asElements(rootElement.rootElements)) {\n if (rootEl.$type === \"bpmn:Collaboration\") {\n handleCollaboration(rootEl, ctx, nodes, edges);\n } else if (rootEl.$type === \"bpmn:Process\") {\n const laneMembership = extractLaneMembership(rootEl);\n const laneSet = rootEl.laneSet as ModdleElement | undefined;\n if (laneSet) addLaneNodes(laneSet, undefined, ctx, nodes);\n walkFlowElements(\n [...asElements(rootEl.flowElements), ...asElements(rootEl.artifacts)],\n undefined,\n { ...ctx, laneMembership },\n nodes,\n edges,\n );\n }\n }\n\n const defaultFlowById = new Set<string>();\n const nodeIds = new Set(nodes.map((node) => node.id));\n for (const rootEl of asElements(rootElement.rootElements)) {\n collectDefaultFlows(rootEl, defaultFlowById);\n }\n\n const normalizedEdges: BpmnRFEdge[] = edges.map((edge) => {\n if (!defaultFlowById.has(edge.id)) return edge;\n const data: BpmnEdgeData = {\n edgeType: edge.data?.edgeType ?? (edge.type as BpmnEdgeType),\n ...(edge.data ?? {}),\n isDefault: true,\n };\n return { ...edge, data };\n });\n\n const firstProcess = asElements(rootElement.rootElements).find((rootEl) => rootEl.$type === \"bpmn:Process\");\n\n const importedDefinitions = extractDefinitions(rootElement);\n const process =\n firstProcess\n ? (() => {\n const importedProcess: NonNullable<BpmnImportResult[\"process\"]> = {};\n const processId = asString(firstProcess.id);\n const documentation = extractDocumentation(firstProcess);\n if (processId) importedProcess.processId = processId;\n if (typeof firstProcess.isExecutable === \"boolean\") importedProcess.executable = firstProcess.isExecutable as boolean;\n if (documentation) importedProcess.documentation = documentation;\n if (importedDefinitions) importedProcess.definitions = importedDefinitions;\n return importedProcess;\n })()\n : importedDefinitions\n ? { definitions: importedDefinitions }\n : undefined;\n\n return {\n nodes: normalizeChildPositions(nodes, nodeIds),\n edges: normalizedEdges,\n warnings,\n ...(process ? { process } : {}),\n };\n}\n\nfunction collectDefaultFlows(el: ModdleElement, defaultFlowById: Set<string>): void {\n const defaultRef = el.default as ModdleElement | undefined;\n if (defaultRef?.id) defaultFlowById.add(defaultRef.id as string);\n\n for (const child of asElements(el.rootElements)) collectDefaultFlows(child, defaultFlowById);\n for (const child of asElements(el.flowElements)) collectDefaultFlows(child, defaultFlowById);\n}\n\nfunction normalizeChildPositions(nodes: BpmnRFNode[], nodeIds: Set<string>): BpmnRFNode[] {\n const absoluteById = new Map(nodes.map((node) => [node.id, node.position]));\n\n return nodes.map((node) => {\n if (!node.parentId || !nodeIds.has(node.parentId)) return node;\n const parentPosition = absoluteById.get(node.parentId);\n if (!parentPosition) return node;\n\n return {\n ...node,\n position: {\n x: node.position.x - parentPosition.x,\n y: node.position.y - parentPosition.y,\n },\n };\n });\n}\n","import type { BpmnModdle, ModdleElement } from \"bpmn-moddle\";\nimport { ARANZA_DESCRIPTOR } from \"./aranza-descriptor\";\nimport { BPMN_ELEMENT_CATALOG } from \"../elements/catalog\";\nimport type { BpmnRFNode, BpmnRFEdge, BpmnExportOptions } from \"./types\";\nimport type {\n BpmnDefinitionsSet,\n BpmnEventDefinition,\n BpmnNodeData,\n BpmnProcessVariable,\n} from \"../elements/types\";\nimport {\n ELEMENT_TYPE_TO_MODDLE,\n EDGE_TYPE_TO_MODDLE,\n TRIGGER_TO_EVENT_DEF,\n} from \"./mapper\";\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\nfunction uid(prefix: string, id: string): string {\n return `${prefix}_${id}`;\n}\n\nfunction asNodes(nodes: BpmnRFNode[], types: string[]): BpmnRFNode[] {\n return nodes.filter((n) => types.includes(n.data.elementType));\n}\n\nfunction normalizeEventDefinition(data: BpmnNodeData): BpmnEventDefinition | undefined {\n const trigger = data.eventDefinition?.type ?? data.trigger;\n if (!trigger || trigger === \"none\") return undefined;\n const normalized: BpmnEventDefinition = { type: trigger };\n const timer = data.eventDefinition?.timer ?? data.timer ?? data.timerExpression;\n const messageRef = data.eventDefinition?.messageRef ?? (typeof data.messageRef === \"string\" ? data.messageRef : undefined);\n const signalRef = data.eventDefinition?.signalRef ?? (typeof data.signalRef === \"string\" ? data.signalRef : undefined);\n const errorRef = data.eventDefinition?.errorRef ?? (typeof data.errorRef === \"string\" ? data.errorRef : undefined);\n const escalationRef = data.eventDefinition?.escalationRef ?? (typeof data.escalationRef === \"string\" ? data.escalationRef : undefined);\n const conditionExpression = data.eventDefinition?.conditionExpression ?? (typeof data.conditionExpression === \"string\" ? data.conditionExpression : undefined);\n const linkName = data.eventDefinition?.linkName ?? (typeof data.linkName === \"string\" ? data.linkName : undefined);\n\n if (timer) normalized.timer = timer;\n if (messageRef) normalized.messageRef = messageRef;\n if (signalRef) normalized.signalRef = signalRef;\n if (errorRef) normalized.errorRef = errorRef;\n if (escalationRef) normalized.escalationRef = escalationRef;\n if (conditionExpression) normalized.conditionExpression = conditionExpression;\n if (linkName) normalized.linkName = linkName;\n\n return normalized;\n}\n\nfunction parseVariableType(type: string | undefined): string {\n switch (type) {\n case \"integer\":\n return \"xsd:int\";\n case \"boolean\":\n return \"xsd:boolean\";\n case \"date\":\n return \"xsd:dateTime\";\n case \"object\":\n return \"xsd:anyType\";\n case \"array\":\n return \"xsd:anyType\";\n default:\n return \"xsd:string\";\n }\n}\n\nfunction buildGlobalDefinitions(moddle: BpmnModdle, definitionsSet?: BpmnDefinitionsSet): ModdleElement[] {\n if (!definitionsSet) return [];\n const rootElements: ModdleElement[] = [];\n\n for (const message of definitionsSet.messages ?? []) {\n rootElements.push(moddle.create(\"bpmn:Message\", { id: message.id, name: message.name }));\n }\n for (const signal of definitionsSet.signals ?? []) {\n rootElements.push(moddle.create(\"bpmn:Signal\", { id: signal.id, name: signal.name }));\n }\n for (const error of definitionsSet.errors ?? []) {\n rootElements.push(moddle.create(\"bpmn:Error\", {\n id: error.id,\n name: error.name,\n ...(error.errorCode ? { errorCode: error.errorCode } : {}),\n }));\n }\n for (const escalation of definitionsSet.escalations ?? []) {\n rootElements.push(moddle.create(\"bpmn:Escalation\", {\n id: escalation.id,\n name: escalation.name,\n ...(escalation.escalationCode ? { escalationCode: escalation.escalationCode } : {}),\n }));\n }\n\n return rootElements;\n}\n\nfunction buildItemDefinitions(moddle: BpmnModdle, variables?: BpmnProcessVariable[]): ModdleElement[] {\n return (variables ?? []).map((variable) =>\n moddle.create(\"bpmn:ItemDefinition\", {\n id: `${variable.id}_item`,\n itemKind: \"Information\",\n structureRef: parseVariableType(variable.type),\n }),\n );\n}\n\nfunction buildEventDefinitions(\n moddle: BpmnModdle,\n node: BpmnRFNode,\n eventDefinition: BpmnEventDefinition,\n): ModdleElement[] {\n if (eventDefinition.type === \"multiple\" || eventDefinition.type === \"parallelMultiple\") {\n return [];\n }\n const defType = TRIGGER_TO_EVENT_DEF[eventDefinition.type];\n if (!defType) return [];\n\n const attrs: Record<string, unknown> = { id: uid(\"EventDef\", node.id) };\n\n if (eventDefinition.messageRef) attrs.messageRef = { id: eventDefinition.messageRef };\n if (eventDefinition.signalRef) attrs.signalRef = { id: eventDefinition.signalRef };\n if (eventDefinition.errorRef) attrs.errorRef = { id: eventDefinition.errorRef };\n if (eventDefinition.escalationRef) attrs.escalationRef = { id: eventDefinition.escalationRef };\n if (eventDefinition.conditionExpression) {\n attrs.condition = moddle.create(\"bpmn:FormalExpression\", {\n body: eventDefinition.conditionExpression,\n });\n }\n if (eventDefinition.timer?.value) {\n attrs[eventDefinition.timer.kind === \"date\"\n ? \"timeDate\"\n : eventDefinition.timer.kind === \"cycle\"\n ? \"timeCycle\"\n : \"timeDuration\"] = moddle.create(\"bpmn:FormalExpression\", {\n body: eventDefinition.timer.value,\n });\n }\n\n return [moddle.create(defType, attrs)];\n}\n\n// ─── AranzaFlows extensionElements builder ────────────────────────────────────\n\nfunction buildAranzaExtensionElements(\n moddle: BpmnModdle,\n node: BpmnRFNode,\n): ModdleElement | null {\n const { priority, owner, sla } = node.data;\n const connector = typeof node.data.connector === \"string\" ? node.data.connector : undefined;\n const action = typeof node.data.action === \"string\" ? node.data.action : undefined;\n const flowableType = typeof node.data.flowableType === \"string\" ? node.data.flowableType : undefined;\n const flowableDelegateExpression =\n typeof node.data.flowableDelegateExpression === \"string\"\n ? node.data.flowableDelegateExpression\n : undefined;\n const decisionRef = typeof node.data.decisionRef === \"string\" ? node.data.decisionRef : undefined;\n const formKey = typeof node.data.formKey === \"string\" ? node.data.formKey : undefined;\n const candidateUsers = typeof node.data.candidateUsers === \"string\" ? node.data.candidateUsers : undefined;\n const candidateGroups = typeof node.data.candidateGroups === \"string\" ? node.data.candidateGroups : undefined;\n const dueDate = typeof node.data.dueDate === \"string\" ? node.data.dueDate : undefined;\n const skipExpression = typeof node.data.skipExpression === \"string\" ? node.data.skipExpression : undefined;\n const businessCalendarName = typeof node.data.businessCalendarName === \"string\" ? node.data.businessCalendarName : undefined;\n\n if (!priority && !owner && !sla && !connector && !action && !flowableType && !flowableDelegateExpression && !decisionRef && !formKey && !candidateUsers && !candidateGroups && !dueDate && !skipExpression && !businessCalendarName) {\n return null;\n }\n\n const configAttrs: Record<string, string> = {};\n if (priority) configAttrs.priority = priority;\n if (owner) configAttrs.owner = owner;\n if (sla) configAttrs.sla = sla;\n if (connector) configAttrs.connector = connector;\n if (action) configAttrs.action = action;\n if (flowableType) configAttrs.flowableType = flowableType;\n if (flowableDelegateExpression) configAttrs.flowableDelegateExpression = flowableDelegateExpression;\n if (decisionRef) configAttrs.decisionRef = decisionRef;\n if (formKey) configAttrs.formKey = formKey;\n if (candidateUsers) configAttrs.candidateUsers = candidateUsers;\n if (candidateGroups) configAttrs.candidateGroups = candidateGroups;\n if (dueDate) configAttrs.dueDate = dueDate;\n if (skipExpression) configAttrs.skipExpression = skipExpression;\n if (businessCalendarName) configAttrs.businessCalendarName = businessCalendarName;\n\n const taskConfig = moddle.create(\"aranza:TaskConfig\", configAttrs);\n return moddle.create(\"bpmn:ExtensionElements\", { values: [taskConfig] });\n}\n\n// ─── Artifact vs flow-element classification ──────────────────────────────────\n\n/** These element types map to bpmn:Artifact and must go in process.artifacts, not flowElements. */\nconst ARTIFACT_ELEMENT_TYPES = new Set<string>([\"Annotation\", \"Group\"]);\n\n// ─── Build BPMN semantic model ────────────────────────────────────────────────\n\nfunction buildSemanticModel(\n moddle: BpmnModdle,\n nodes: BpmnRFNode[],\n edges: BpmnRFEdge[],\n opts: BpmnExportOptions,\n): ModdleElement {\n const defId = opts.id ?? \"Definitions_1\";\n const defName = opts.name;\n\n // Collect pool nodes → Collaboration + Participants\n const poolNodes = asNodes(nodes, [\"Pool\"]);\n const laneNodes = asNodes(nodes, [\"Lane\"]);\n const isCollaboration = poolNodes.length > 0;\n\n const definitions = moddle.create(\"bpmn:Definitions\", {\n id: defId,\n targetNamespace: \"http://bpmn.io/schema/bpmn\",\n ...(defName ? { name: defName } : {}),\n });\n // Flowable namespace: bpmn-moddle serializes xmlns:* from the element's own namespace map.\n // Injected via the moddle descriptor when a full Flowable extension is loaded.\n // For now, individual elements declare their own flowable:* attributes via $attrs.\n\n const rootElements: ModdleElement[] = [\n ...buildGlobalDefinitions(moddle, opts.process?.definitions),\n ];\n const itemDefinitions = buildItemDefinitions(moddle, opts.process?.definitions?.variables);\n if (itemDefinitions.length > 0) {\n (definitions as Record<string, unknown>).itemDefinitions = itemDefinitions;\n }\n\n if (isCollaboration) {\n const participants: ModdleElement[] = [];\n const processes: ModdleElement[] = [];\n\n for (const pool of poolNodes) {\n const processId = `Process_${pool.id}`;\n const process = buildProcess(moddle, nodes, edges, pool.id, laneNodes, processId, opts);\n processes.push(process);\n\n const participant = moddle.create(\"bpmn:Participant\", {\n id: pool.id,\n name: pool.data.label ?? \"\",\n processRef: process,\n });\n participants.push(participant);\n }\n\n // Message flows and conversation links belong to collaboration\n const messageFlowEdges = edges.filter((e) => e.data?.edgeType === \"messageFlow\");\n const conversationLinkEdges = edges.filter((e) => e.data?.edgeType === \"conversationLink\");\n\n const messageFlows = messageFlowEdges.map((e) =>\n moddle.create(\"bpmn:MessageFlow\", {\n id: e.id,\n name: e.data?.label ?? \"\",\n sourceRef: { id: e.source },\n targetRef: { id: e.target },\n }),\n );\n\n const conversationLinks = conversationLinkEdges.map((e) =>\n moddle.create(\"bpmn:ConversationLink\", {\n id: e.id,\n sourceRef: { id: e.source },\n targetRef: { id: e.target },\n }),\n );\n\n const collaboration = moddle.create(\"bpmn:Collaboration\", {\n id: `Collaboration_${defId}`,\n participants,\n messageFlows,\n conversationLinks,\n });\n\n rootElements.push(collaboration, ...processes);\n } else {\n // Single process — no collaboration\n const process = buildProcess(\n moddle,\n nodes,\n edges,\n undefined,\n laneNodes,\n opts.process?.processId ?? \"Process_1\",\n opts,\n );\n rootElements.push(process);\n }\n\n (definitions as Record<string, unknown>).rootElements = rootElements;\n return definitions;\n}\n\n// Build a bpmn:Process element containing flow nodes and sequence flows\nfunction buildProcess(\n moddle: BpmnModdle,\n allNodes: BpmnRFNode[],\n allEdges: BpmnRFEdge[],\n poolId: string | undefined,\n laneNodes: BpmnRFNode[],\n processId: string,\n opts: BpmnExportOptions,\n): ModdleElement {\n // Collect flow nodes that belong to this pool (or all if no pools)\n const subProcessIds = new Set(\n allNodes\n .filter((n) =>\n n.data.elementType === \"SubProcess\" ||\n n.data.elementType === \"Transaction\" ||\n n.data.elementType === \"EventSubProcess\" ||\n n.data.elementType === \"AdHocSubProcess\",\n )\n .map((n) => n.id),\n );\n const isInsideSubProcess = (node: BpmnRFNode) => {\n let parentId = node.parentId;\n while (parentId) {\n if (subProcessIds.has(parentId)) return true;\n parentId = allNodes.find((candidate) => candidate.id === parentId)?.parentId;\n }\n return false;\n };\n\n const belongsToPool = (node: BpmnRFNode): boolean => {\n let parentId = node.parentId;\n while (parentId) {\n if (parentId === poolId) return true;\n parentId = allNodes.find((candidate) => candidate.id === parentId)?.parentId;\n }\n return false;\n };\n\n const myNodes = (poolId\n ? allNodes.filter((n) => belongsToPool(n))\n : allNodes.filter((n) => n.data.elementType !== \"Pool\" && n.data.elementType !== \"Lane\"))\n .filter((n) => !isInsideSubProcess(n));\n\n const myLanes = laneNodes.filter((l) => (poolId ? l.parentId === poolId : true));\n\n // D2: Ensure every DataObjectReference has a backing DataObject in flowElements.\n // If `data.dataObjectRef` points to an existing node in scope, use that; otherwise\n // auto-generate a synthetic DataObject so the XML is valid.\n const presentDataObjectIds = new Set(\n myNodes.filter((n) => n.data.elementType === \"DataObject\").map((n) => n.id),\n );\n const flowElements: ModdleElement[] = [];\n const artifacts: ModdleElement[] = [];\n\n for (const node of myNodes) {\n if (node.data.elementType === \"DataObjectReference\") {\n const explicitRef = typeof node.data.dataObjectRef === \"string\" ? node.data.dataObjectRef : null;\n if (!explicitRef || !presentDataObjectIds.has(explicitRef)) {\n const syntheticId = `DataObject_${node.id}`;\n if (!presentDataObjectIds.has(syntheticId)) {\n flowElements.push(moddle.create(\"bpmn:DataObject\", { id: syntheticId }));\n presentDataObjectIds.add(syntheticId);\n }\n }\n }\n }\n\n // D1: Route artifact-type nodes to artifacts array, flow nodes to flowElements.\n for (const node of myNodes) {\n const el = buildFlowElement(moddle, node, allNodes, allEdges);\n if (!el) continue;\n if (ARTIFACT_ELEMENT_TYPES.has(node.data.elementType)) {\n artifacts.push(el);\n } else {\n flowElements.push(el);\n }\n }\n\n // Sequence flows, associations, and data associations\n const myNodeIds = new Set(myNodes.map((n) => n.id));\n const myEdges = allEdges.filter(\n (e) =>\n (e.data?.edgeType === \"sequenceFlow\" ||\n e.data?.edgeType === \"association\" ||\n e.data?.edgeType === \"dataAssociation\") &&\n myNodeIds.has(e.source) &&\n myNodeIds.has(e.target),\n );\n\n for (const edge of myEdges) {\n const edgeMeta = buildEdgeElement(moddle, edge);\n if (!edgeMeta) continue;\n // D1: bpmn:Association is an Artifact — goes in artifacts, not flowElements\n if (edge.data?.edgeType === \"association\") {\n artifacts.push(edgeMeta);\n } else {\n flowElements.push(edgeMeta);\n }\n }\n\n const elementById = new Map(\n flowElements\n .filter((element) => typeof element.id === \"string\")\n .map((element) => [element.id as string, element]),\n );\n for (const edge of myEdges) {\n if (!edge.data?.isDefault) continue;\n const sourceElement = elementById.get(edge.source);\n const edgeElement = elementById.get(edge.id);\n if (sourceElement && edgeElement) {\n (sourceElement as Record<string, unknown>).default = edgeElement;\n }\n }\n\n const process = moddle.create(\"bpmn:Process\", {\n id: processId,\n isExecutable: opts.process?.executable ?? true,\n flowElements,\n ...(artifacts.length > 0 ? { artifacts } : {}),\n });\n\n if (opts.process?.documentation) {\n (process as Record<string, unknown>).documentation = [\n moddle.create(\"bpmn:Documentation\", { text: opts.process.documentation }),\n ];\n }\n\n // Lane set\n if (myLanes.length > 0) {\n const laneElements = myLanes.map((l) =>\n moddle.create(\"bpmn:Lane\", {\n id: l.id,\n name: l.data.label ?? \"\",\n flowNodeRef: myNodes\n .filter((n) => n.parentId === l.id)\n .map((n) => ({ id: n.id })),\n }),\n );\n (process as Record<string, unknown>).laneSet = moddle.create(\"bpmn:LaneSet\", {\n id: `LaneSet_${processId}`,\n lanes: laneElements,\n });\n }\n\n return process;\n}\n\nfunction buildFlowElement(\n moddle: BpmnModdle,\n node: BpmnRFNode,\n allNodes: BpmnRFNode[],\n allEdges: BpmnRFEdge[],\n): ModdleElement | null {\n const { elementType, label } = node.data;\n const eventDefinition = normalizeEventDefinition(node.data);\n\n // Pools and Lanes are handled in buildProcess / collaboration\n if (elementType === \"Pool\" || elementType === \"Lane\") return null;\n\n const moddleType = ELEMENT_TYPE_TO_MODDLE[elementType];\n if (!moddleType) return null;\n\n const attrs: Record<string, unknown> = {\n id: node.id,\n name: label ?? \"\",\n };\n\n // TextAnnotation uses `text`, not `name`\n if (elementType === \"Annotation\") {\n delete attrs.name;\n attrs.text = label ?? \"\";\n }\n\n if (node.data.documentation) {\n attrs.documentation = [\n moddle.create(\"bpmn:Documentation\", { text: node.data.documentation }),\n ];\n }\n\n // Event definitions\n if (eventDefinition) {\n const eventDefinitions = buildEventDefinitions(moddle, node, eventDefinition);\n if (eventDefinitions.length > 0) attrs.eventDefinitions = eventDefinitions;\n if (eventDefinition.linkName) attrs.name = eventDefinition.linkName;\n }\n\n if (elementType === \"BoundaryEvent\") {\n attrs.attachedToRef = { id: node.data.attachedToRef ?? node.parentId };\n const interrupting = node.data.cancelActivity ?? !node.data.isNonInterrupting;\n attrs.cancelActivity = interrupting;\n }\n\n if (elementType === \"CallActivity\" && node.data.calledElement) {\n attrs.calledElement = node.data.calledElement;\n }\n\n // D2: DataObjectReference must reference its backing DataObject\n if (elementType === \"DataObjectReference\") {\n const refId = typeof node.data.dataObjectRef === \"string\"\n ? node.data.dataObjectRef\n : `DataObject_${node.id}`;\n attrs.dataObjectRef = { id: refId };\n }\n\n if (elementType === \"ScriptTask\") {\n const scriptFormat = typeof node.data.scriptFormat === \"string\" ? node.data.scriptFormat : undefined;\n const script = typeof node.data.script === \"string\" ? node.data.script : undefined;\n if (scriptFormat) attrs.scriptFormat = scriptFormat;\n if (script) attrs.script = script;\n }\n\n // Flowable execution attributes on ServiceTask — emitted as namespace-prefixed\n // XML attributes (bpmn-moddle passes $attrs through to the serialized output).\n if (elementType === \"ServiceTask\") {\n const flowableAttrs: Record<string, string> = {};\n const flowableType = typeof node.data.flowableType === \"string\" ? node.data.flowableType : undefined;\n const flowableDelegateExpression =\n typeof node.data.flowableDelegateExpression === \"string\"\n ? node.data.flowableDelegateExpression\n : undefined;\n const connector = typeof node.data.connector === \"string\" ? node.data.connector : undefined;\n // Connector tasks use an HTTP-type delegate that reads aranza:TaskConfig at runtime\n if (connector) flowableAttrs[\"flowable:type\"] = \"http\";\n if (flowableType) flowableAttrs[\"flowable:type\"] = flowableType;\n if (flowableDelegateExpression) {\n flowableAttrs[\"flowable:delegateExpression\"] = flowableDelegateExpression;\n }\n if (Object.keys(flowableAttrs).length > 0) attrs.$attrs = flowableAttrs;\n }\n\n const aranzaConfig = buildAranzaExtensionElements(moddle, node);\n if (aranzaConfig) attrs.extensionElements = aranzaConfig;\n\n const isSubProcess =\n elementType === \"SubProcess\" ||\n elementType === \"Transaction\" ||\n elementType === \"EventSubProcess\" ||\n elementType === \"AdHocSubProcess\";\n\n if (isSubProcess) {\n const nested = buildNestedFlowElements(moddle, node, allNodes, allEdges);\n attrs.flowElements = nested.flowElements;\n if (nested.artifacts.length > 0) attrs.artifacts = nested.artifacts;\n if (elementType === \"EventSubProcess\" || node.data.subProcessVariant === \"event\") {\n attrs.triggeredByEvent = true;\n }\n if (elementType === \"AdHocSubProcess\" && typeof node.data.completionCondition === \"string\" && node.data.completionCondition.trim()) {\n attrs.completionCondition = moddle.create(\"bpmn:FormalExpression\", {\n body: node.data.completionCondition.trim(),\n });\n }\n }\n\n // Loop / multi-instance characteristics\n const loopType = typeof node.data.loopType === \"string\" ? node.data.loopType : \"none\";\n if (loopType && loopType !== \"none\") {\n if (loopType === \"loop\") {\n const lcAttrs: Record<string, unknown> = { id: uid(\"LoopChar\", node.id) };\n const loopCondition = typeof node.data.loopCondition === \"string\" ? node.data.loopCondition : undefined;\n if (loopCondition) {\n lcAttrs.loopCondition = moddle.create(\"bpmn:FormalExpression\", { body: loopCondition });\n }\n attrs.loopCharacteristics = moddle.create(\"bpmn:StandardLoopCharacteristics\", lcAttrs);\n } else {\n const isSequential = loopType === \"sequentialMultiple\";\n const lcAttrs: Record<string, unknown> = { id: uid(\"LoopChar\", node.id), isSequential };\n const loopCardinality = typeof node.data.loopCardinality === \"string\" ? node.data.loopCardinality : undefined;\n const loopCompletionCondition = typeof node.data.loopCompletionCondition === \"string\" ? node.data.loopCompletionCondition : undefined;\n if (loopCardinality) {\n lcAttrs.loopCardinality = moddle.create(\"bpmn:FormalExpression\", { body: loopCardinality });\n }\n if (loopCompletionCondition) {\n lcAttrs.completionCondition = moddle.create(\"bpmn:FormalExpression\", { body: loopCompletionCondition });\n }\n attrs.loopCharacteristics = moddle.create(\"bpmn:MultiInstanceLoopCharacteristics\", lcAttrs);\n }\n }\n\n const element = moddle.create(moddleType, attrs);\n\n return element;\n}\n\nfunction buildNestedFlowElements(\n moddle: BpmnModdle,\n parent: BpmnRFNode,\n allNodes: BpmnRFNode[],\n allEdges: BpmnRFEdge[],\n): { flowElements: ModdleElement[]; artifacts: ModdleElement[] } {\n const childNodes = allNodes.filter((node) => node.parentId === parent.id);\n const childNodeIds = new Set(childNodes.map((node) => node.id));\n const flowElements: ModdleElement[] = [];\n const artifacts: ModdleElement[] = [];\n\n // D2: Synthetic DataObjects for DataObjectReferences inside the subprocess\n const presentDataObjectIds = new Set(\n childNodes.filter((n) => n.data.elementType === \"DataObject\").map((n) => n.id),\n );\n for (const node of childNodes) {\n if (node.data.elementType === \"DataObjectReference\") {\n const explicitRef = typeof node.data.dataObjectRef === \"string\" ? node.data.dataObjectRef : null;\n if (!explicitRef || !presentDataObjectIds.has(explicitRef)) {\n const syntheticId = `DataObject_${node.id}`;\n if (!presentDataObjectIds.has(syntheticId)) {\n flowElements.push(moddle.create(\"bpmn:DataObject\", { id: syntheticId }));\n presentDataObjectIds.add(syntheticId);\n }\n }\n }\n }\n\n for (const child of childNodes) {\n const element = buildFlowElement(moddle, child, allNodes, allEdges);\n if (!element) continue;\n if (ARTIFACT_ELEMENT_TYPES.has(child.data.elementType)) {\n artifacts.push(element);\n } else {\n flowElements.push(element);\n }\n }\n\n for (const edge of allEdges) {\n if (!childNodeIds.has(edge.source) || !childNodeIds.has(edge.target)) continue;\n const element = buildEdgeElement(moddle, edge);\n if (!element) continue;\n if (edge.data?.edgeType === \"association\") {\n artifacts.push(element);\n } else {\n flowElements.push(element);\n }\n }\n\n return { flowElements, artifacts };\n}\n\nfunction buildEdgeElement(moddle: BpmnModdle, edge: BpmnRFEdge): ModdleElement | null {\n if (!edge.data) return null;\n const moddleType = EDGE_TYPE_TO_MODDLE[edge.data.edgeType];\n if (!moddleType) return null;\n\n const attrs: Record<string, unknown> = {\n id: edge.id,\n name: edge.data.label ?? \"\",\n sourceRef: { id: edge.source },\n targetRef: { id: edge.target },\n };\n\n if (edge.data.documentation) {\n attrs.documentation = [\n moddle.create(\"bpmn:Documentation\", { text: edge.data.documentation }),\n ];\n }\n\n if (edge.data.conditionExpression) {\n attrs.conditionExpression = moddle.create(\"bpmn:FormalExpression\", {\n body: edge.data.conditionExpression,\n });\n }\n\n // bpmn:Association.associationDirection uses Title-case values\n if (edge.data.edgeType === \"association\" && edge.data.associationDirection && edge.data.associationDirection !== \"none\") {\n attrs.associationDirection = edge.data.associationDirection === \"both\" ? \"Both\" : \"One\";\n }\n\n return moddle.create(moddleType, attrs);\n}\n\n// ─── Build BPMNDI (diagram interchange / layout) ─────────────────────────────\n\nfunction buildBpmnDI(\n moddle: BpmnModdle,\n definitions: ModdleElement,\n nodes: BpmnRFNode[],\n edges: BpmnRFEdge[],\n): void {\n const shapes: ModdleElement[] = [];\n const edgeShapes: ModdleElement[] = [];\n\n const absolutePositionById = buildAbsolutePositionMap(nodes);\n\n for (const node of nodes) {\n const meta = BPMN_ELEMENT_CATALOG[node.data.elementType];\n const w = node.width ?? meta?.defaultWidth ?? 120;\n const h = node.height ?? meta?.defaultHeight ?? 60;\n\n const bounds = moddle.create(\"dc:Bounds\", {\n x: absolutePositionById.get(node.id)?.x ?? node.position.x,\n y: absolutePositionById.get(node.id)?.y ?? node.position.y,\n width: w,\n height: h,\n });\n\n const shape = moddle.create(\"bpmndi:BPMNShape\", {\n id: uid(\"BPMNShape\", node.id),\n bpmnElement: { id: node.id },\n bounds,\n });\n\n if (node.data.isExpanded !== undefined) {\n (shape as Record<string, unknown>).isExpanded = node.data.isExpanded;\n }\n\n shapes.push(shape);\n }\n\n for (const edge of edges) {\n const waypoints = resolveEdgeWaypoints(edge, nodes, absolutePositionById).map((p) =>\n moddle.create(\"dc:Point\", { x: p.x, y: p.y }),\n );\n\n edgeShapes.push(\n moddle.create(\"bpmndi:BPMNEdge\", {\n id: uid(\"BPMNEdge\", edge.id),\n bpmnElement: { id: edge.id },\n waypoint: waypoints,\n }),\n );\n }\n\n // Find the main process / collaboration element\n const rootEls = (definitions as Record<string, unknown>).rootElements as ModdleElement[] | undefined;\n const planeElement = rootEls?.[0];\n\n const plane = moddle.create(\"bpmndi:BPMNPlane\", {\n id: \"BPMNPlane_1\",\n bpmnElement: planeElement ?? { id: \"unknown\" },\n planeElement: [...shapes, ...edgeShapes],\n });\n\n const diagram = moddle.create(\"bpmndi:BPMNDiagram\", {\n id: \"BPMNDiagram_1\",\n plane,\n });\n\n (definitions as Record<string, unknown>).diagrams = [diagram];\n}\n\nfunction resolveEdgeWaypoints(\n edge: BpmnRFEdge,\n nodes: BpmnRFNode[],\n absolutePositionById: Map<string, { x: number; y: number }>,\n): Array<{ x: number; y: number }> {\n if (edge.data?.routingPoints && edge.data.routingPoints.length >= 2) {\n return edge.data.routingPoints;\n }\n\n const source = nodes.find((node) => node.id === edge.source);\n const target = nodes.find((node) => node.id === edge.target);\n if (!source || !target) return [];\n\n const sourceMeta = BPMN_ELEMENT_CATALOG[source.data.elementType];\n const targetMeta = BPMN_ELEMENT_CATALOG[target.data.elementType];\n const sourcePosition = absolutePositionById.get(source.id) ?? source.position;\n const targetPosition = absolutePositionById.get(target.id) ?? target.position;\n return [\n {\n x: sourcePosition.x + (source.width ?? sourceMeta.defaultWidth) / 2,\n y: sourcePosition.y + (source.height ?? sourceMeta.defaultHeight) / 2,\n },\n {\n x: targetPosition.x + (target.width ?? targetMeta.defaultWidth) / 2,\n y: targetPosition.y + (target.height ?? targetMeta.defaultHeight) / 2,\n },\n ];\n}\n\nfunction buildAbsolutePositionMap(nodes: BpmnRFNode[]): Map<string, { x: number; y: number }> {\n const nodeById = new Map(nodes.map((node) => [node.id, node]));\n const absoluteById = new Map<string, { x: number; y: number }>();\n\n function resolve(node: BpmnRFNode): { x: number; y: number } {\n const cached = absoluteById.get(node.id);\n if (cached) return cached;\n\n const parent = node.parentId ? nodeById.get(node.parentId) : undefined;\n const parentPosition = parent ? resolve(parent) : { x: 0, y: 0 };\n const absolute = {\n x: parentPosition.x + node.position.x,\n y: parentPosition.y + node.position.y,\n };\n absoluteById.set(node.id, absolute);\n return absolute;\n }\n\n for (const node of nodes) resolve(node);\n return absoluteById;\n}\n\n// ─── Public: serializeBpmnXml ─────────────────────────────────────────────────\n\n/**\n * Serialize a ReactFlow BPMN graph to a BPMN 2.0 XML string.\n *\n * @param nodes - ReactFlow nodes carrying {@link BpmnNodeData}.\n * @param edges - ReactFlow edges carrying {@link BpmnEdgeData}.\n * @param opts - Optional export options (process id/name, formatting, variables).\n * @returns Formatted BPMN 2.0 XML string.\n */\nexport async function serializeBpmnXml(\n nodes: BpmnRFNode[],\n edges: BpmnRFEdge[],\n opts: BpmnExportOptions = {},\n): Promise<string> {\n const { BpmnModdle } = await import(\"bpmn-moddle\");\n const moddle = new BpmnModdle({ aranza: ARANZA_DESCRIPTOR });\n\n const definitions = buildSemanticModel(moddle, nodes, edges, opts);\n buildBpmnDI(moddle, definitions, nodes, edges);\n\n const { xml } = await moddle.toXML(definitions, {\n format: opts.format ?? true,\n });\n\n return xml;\n}\n"]}
@@ -1,3 +0,0 @@
1
-
2
- //# sourceMappingURL=chunk-OZKTOILD.js.map
3
- //# sourceMappingURL=chunk-OZKTOILD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-OZKTOILD.js"}