{"version":3,"file":"diagram-KO2AKTUF-DNJagutm.chunk.mjs","sources":["../node_modules/mermaid/dist/chunks/mermaid.core/diagram-KO2AKTUF.mjs"],"sourcesContent":["import {\n  populateCommonDb\n} from \"./chunk-4BX2VUAB.mjs\";\nimport {\n  calculateTextDimensions,\n  cleanAndMerge,\n  wrapLabel\n} from \"./chunk-5ZQYHXKU.mjs\";\nimport {\n  clear,\n  defaultConfig_default,\n  getAccDescription,\n  getAccTitle,\n  getConfig,\n  getConfig2,\n  getDiagramTitle,\n  sanitizeText,\n  setAccDescription,\n  setAccTitle,\n  setDiagramTitle,\n  setupGraphViewbox2 as setupGraphViewbox\n} from \"./chunk-CSCIHK7Q.mjs\";\nimport {\n  __name,\n  log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/eventmodeling/parser.ts\nimport { parse } from \"@mermaid-js/parser\";\n\n// src/diagrams/eventmodeling/db.ts\nimport { isEmResetFrame } from \"@mermaid-js/parser\";\n\n// src/diagrams/eventmodeling/types.ts\nvar PositionFrameKind = \"position frame\";\nvar FramePositionedKind = \"frame positioned\";\nvar PositionRelationKind = \"position relation\";\nvar RelationPositionedKind = \"relation positioned\";\n\n// src/diagrams/eventmodeling/db.ts\nvar setOptions = /* @__PURE__ */ __name(function(_rawOptString) {\n  log.debug(\"options str\", _rawOptString);\n}, \"setOptions\");\nvar getOptions = /* @__PURE__ */ __name(function() {\n  return {};\n}, \"getOptions\");\nvar clear2 = /* @__PURE__ */ __name(function() {\n  reset();\n  clear();\n}, \"clear\");\nfunction reset() {\n  store = {};\n}\n__name(reset, \"reset\");\nvar DEFAULT_EVENTMODELING_CONFIG = defaultConfig_default.eventmodeling;\nvar getConfig3 = /* @__PURE__ */ __name(() => {\n  const config = cleanAndMerge({\n    ...DEFAULT_EVENTMODELING_CONFIG,\n    ...getConfig().eventmodeling\n  });\n  return config;\n}, \"getConfig\");\nvar store = {};\nfunction getState() {\n  let state = initial;\n  const { ast } = store;\n  const diagramProps2 = getDiagramProps();\n  if (!ast) {\n    throw new Error(\"No data for EventModel\");\n  }\n  ast.frames.forEach((frame, index) => {\n    const textProps = calculateTextProps(frame, ast.dataEntities, diagramProps2);\n    state = dispatch(state, {\n      $kind: PositionFrameKind,\n      index,\n      frame,\n      textProps\n    });\n    let sourceFrames = void 0;\n    if (hasSourceFrame(frame)) {\n      log.debug(`source frame`, frame.sourceFrames);\n      sourceFrames = ast.frames.filter((currentFrame) => {\n        return frame.sourceFrames.some((sf) => sf.$refText === currentFrame.name);\n      });\n      sourceFrames.forEach((sourceFrame) => {\n        state = dispatch(state, {\n          $kind: PositionRelationKind,\n          index,\n          frame,\n          sourceFrame\n        });\n      });\n    } else {\n      state = dispatch(state, {\n        $kind: PositionRelationKind,\n        index,\n        frame\n      });\n    }\n  });\n  state = {\n    ...state,\n    sortedSwimlanesArray: sortedSwimlanesArray(state.swimlanes)\n  };\n  return state;\n}\n__name(getState, \"getState\");\nfunction setAst(ast) {\n  store.ast = ast;\n}\n__name(setAst, \"setAst\");\nvar diagramProps = {\n  swimlaneMinHeight: 70,\n  swimlanePadding: 15,\n  swimlaneGap: 10,\n  boxPadding: 10,\n  boxOverlap: 90,\n  boxDefaultY: 0,\n  boxMinWidth: 80,\n  boxMaxWidth: 450,\n  boxMinHeight: 80,\n  boxMaxHeight: 750,\n  contentStartX: 250,\n  textMaxWidth: 450 - 2 * 10,\n  boxTextFontWeight: \"bold\",\n  boxTextPadding: 10,\n  swimlaneTextFontWeight: \"bold\",\n  labelUiAutomation: \"UI/Automation\",\n  labelUiAutomationPrefix: \"UI/A: \",\n  labelCommandReadModel: \"Command/Read Model\",\n  labelCommandReadModelPrefix: \"C/RM: \",\n  labelEvents: \"Events\",\n  labelEventsPrefix: \"Stream: \"\n};\nfunction getDiagramProps() {\n  return diagramProps;\n}\n__name(getDiagramProps, \"getDiagramProps\");\nvar initial = {\n  boxes: [],\n  swimlanes: {},\n  relations: [],\n  maxR: 0,\n  sortedSwimlanesArray: []\n};\nfunction extractNamespace(entityIdentifier) {\n  const spl = entityIdentifier.split(\".\");\n  if (spl.length === 2) {\n    return spl[0];\n  }\n  return void 0;\n}\n__name(extractNamespace, \"extractNamespace\");\nfunction extractName(entityIdentifier) {\n  const spl = entityIdentifier.split(\".\");\n  if (spl.length === 2) {\n    return spl[1];\n  }\n  return entityIdentifier;\n}\n__name(extractName, \"extractName\");\nfunction findSwimlaneByNamespace(swimlanes, namespace) {\n  if (!namespace || namespace.length === 0) {\n    return void 0;\n  }\n  return Object.values(swimlanes).find((swimlane) => swimlane.namespace === namespace);\n}\n__name(findSwimlaneByNamespace, \"findSwimlaneByNamespace\");\nfunction findNextAvailableIndex(swimlanes, boundaryMin, boundaryMax) {\n  return Math.max(\n    boundaryMin,\n    ...Object.keys(swimlanes).filter((key) => {\n      const index = Number.parseInt(key);\n      return index > boundaryMin && index < boundaryMax;\n    }).map((key) => Number.parseInt(key))\n  ) + 1;\n}\n__name(findNextAvailableIndex, \"findNextAvailableIndex\");\nfunction calculateSwimlaneProps(frame, swimlanes) {\n  const namespace = extractNamespace(frame.entityIdentifier);\n  const sw = findSwimlaneByNamespace(swimlanes, namespace);\n  switch (frame.modelEntityType) {\n    case \"ui\":\n    case \"pcr\":\n    case \"processor\":\n      if (sw) {\n        return {\n          index: sw.index,\n          label: sw.namespace || diagramProps.labelUiAutomation\n        };\n      } else if (namespace) {\n        return {\n          index: findNextAvailableIndex(swimlanes, 0, 100),\n          label: diagramProps.labelUiAutomationPrefix + namespace\n        };\n      }\n      return { index: 0, label: diagramProps.labelUiAutomation };\n    case \"rmo\":\n    case \"readmodel\":\n    case \"cmd\":\n    case \"command\":\n      if (sw) {\n        return {\n          index: sw.index,\n          label: sw.namespace || diagramProps.labelCommandReadModel\n        };\n      } else if (namespace) {\n        return {\n          index: findNextAvailableIndex(swimlanes, 100, 200),\n          label: diagramProps.labelCommandReadModelPrefix + namespace\n        };\n      }\n      return { index: 100, label: diagramProps.labelCommandReadModel };\n    case \"evt\":\n    case \"event\":\n    default:\n      if (sw) {\n        return {\n          index: sw.index,\n          label: sw.namespace || diagramProps.labelEvents\n        };\n      } else if (namespace) {\n        return {\n          index: findNextAvailableIndex(swimlanes, 200, 300),\n          label: diagramProps.labelEventsPrefix + namespace\n        };\n      }\n      return { index: 200, label: diagramProps.labelEvents };\n  }\n}\n__name(calculateSwimlaneProps, \"calculateSwimlaneProps\");\nfunction calculateEntityVisualProps(frame) {\n  const { themeVariables } = getConfig();\n  switch (frame.modelEntityType) {\n    case \"ui\":\n      return {\n        fill: themeVariables.emUiFill ?? \"white\",\n        stroke: themeVariables.emUiStroke ?? \"#dbdada\"\n      };\n    case \"pcr\":\n    case \"processor\":\n      return {\n        fill: themeVariables.emProcessorFill ?? \"#edb3f6\",\n        stroke: themeVariables.emProcessorStroke ?? \"#b88cbf\"\n      };\n    case \"rmo\":\n    case \"readmodel\":\n      return {\n        fill: themeVariables.emReadModelFill ?? \"#d3f1a2\",\n        stroke: themeVariables.emReadModelStroke ?? \"#a3b732\"\n      };\n    case \"cmd\":\n    case \"command\":\n      return {\n        fill: themeVariables.emCommandFill ?? \"#bcd6fe\",\n        stroke: themeVariables.emCommandStroke ?? \"#679ac3\"\n      };\n    case \"evt\":\n    case \"event\":\n      return {\n        fill: themeVariables.emEventFill ?? \"#ffb778\",\n        stroke: themeVariables.emEventStroke ?? \"#c19a0f\"\n      };\n    default:\n      return {\n        fill: \"red\",\n        stroke: \"black\"\n      };\n  }\n}\n__name(calculateEntityVisualProps, \"calculateEntityVisualProps\");\nfunction calculateTextProps(frame, dataEntities, diagramProps2) {\n  const config = getConfig();\n  const name = sanitizeText(extractName(frame.entityIdentifier) ?? \"\", config);\n  let toHtml;\n  const wrapLabelConfig = {\n    fontSize: 16,\n    fontWeight: 700,\n    fontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n    joinWith: \"<br/>\"\n  };\n  const wrappedName = wrapLabel(name, diagramProps2.textMaxWidth, wrapLabelConfig);\n  let content = `<b>${wrappedName}</b>`;\n  if (frame.dataInlineValue) {\n    toHtml = frame.dataInlineValue;\n    toHtml = toHtml.substring(toHtml.indexOf(\"{\") + 1);\n    toHtml = toHtml.substring(0, toHtml.lastIndexOf(\"}\") - 1);\n    toHtml = sanitizeText(toHtml, config);\n    toHtml = wrapLabel(toHtml, diagramProps2.textMaxWidth, wrapLabelConfig);\n    toHtml = toHtml.replaceAll(\" \", \"&nbsp;\");\n  }\n  if (frame.dataReference) {\n    const dataEntity = dataEntities.find(\n      (dataEntity2) => dataEntity2.name === frame.dataReference?.$refText\n    );\n    if (dataEntity) {\n      toHtml = dataEntity.dataBlockValue;\n      toHtml = toHtml.substring(toHtml.indexOf(\"{\\n\") + 2);\n      toHtml = toHtml.substring(0, toHtml.lastIndexOf(\"}\") - 1);\n      toHtml = sanitizeText(toHtml, config);\n      toHtml = wrapLabel(toHtml, diagramProps2.textMaxWidth, wrapLabelConfig);\n      toHtml = toHtml.replaceAll(\" \", \"&nbsp;\");\n      toHtml += `<br/>`;\n    }\n  }\n  const hasRenderedData = toHtml !== void 0;\n  if (hasRenderedData) {\n    content += `<br/><br/><code style=\"text-align: left; display: block;max-width:${diagramProps2.textMaxWidth}px\">${toHtml}</code>`;\n  }\n  const textDimensionConfig = {\n    fontSize: wrapLabelConfig.fontSize,\n    fontWeight: wrapLabelConfig.fontWeight,\n    fontFamily: wrapLabelConfig.fontFamily\n  };\n  const dimensions = calculateTextDimensions(content, textDimensionConfig);\n  const calculatedWidthFix = hasRenderedData ? dimensions.width / 3 : dimensions.width;\n  const props = {\n    content,\n    width: calculatedWidthFix,\n    height: dimensions.height\n  };\n  log.debug(`[${frame.name}] ${frame.entityIdentifier} text`, props);\n  return props;\n}\n__name(calculateTextProps, \"calculateTextProps\");\nfunction decidePositionFrame(state, _command) {\n  const command = _command;\n  const visual = calculateEntityVisualProps(command.frame);\n  const dimension = {\n    width: command.textProps.width + 2 * diagramProps.boxTextPadding,\n    height: command.textProps.height + 2 * diagramProps.boxTextPadding\n  };\n  const event = {\n    $kind: FramePositionedKind,\n    frame: command.frame,\n    index: command.index,\n    visual,\n    dimension,\n    textProps: command.textProps\n  };\n  return [event];\n}\n__name(decidePositionFrame, \"decidePositionFrame\");\nfunction calculateX(swimlane, previousSwimlane, lastBox) {\n  if (previousSwimlane === void 0) {\n    return diagramProps.contentStartX;\n  }\n  if (previousSwimlane.index === swimlane.index && swimlane.r) {\n    return swimlane.r + diagramProps.boxPadding;\n  }\n  if (lastBox === void 0) {\n    return diagramProps.contentStartX;\n  }\n  return lastBox.r - diagramProps.boxOverlap + diagramProps.boxPadding;\n}\n__name(calculateX, \"calculateX\");\nfunction calculateMaxRight(swimlanes, swimlaneR) {\n  const rs = [...swimlanes.map((s) => s.r), swimlaneR];\n  return Math.max(...rs);\n}\n__name(calculateMaxRight, \"calculateMaxRight\");\nfunction sortedSwimlanesArray(swimlanes) {\n  return Object.values(swimlanes).sort((a, b) => a.index - b.index);\n}\n__name(sortedSwimlanesArray, \"sortedSwimlanesArray\");\nfunction evolveFramePositioned(state, _event) {\n  const event = _event;\n  const swimlaneProps = calculateSwimlaneProps(event.frame, state.swimlanes);\n  let swimlane;\n  if (swimlaneProps.index in state.swimlanes) {\n    swimlane = state.swimlanes[swimlaneProps.index];\n  } else {\n    swimlane = {\n      index: swimlaneProps.index,\n      label: swimlaneProps.label,\n      r: 0,\n      y: swimlaneProps.index * diagramProps.swimlaneMinHeight + diagramProps.swimlaneGap,\n      height: diagramProps.swimlaneMinHeight,\n      maxHeight: diagramProps.swimlaneMinHeight\n    };\n  }\n  const lastBox = state.boxes.length > 0 ? state.boxes[state.boxes.length - 1] : void 0;\n  const previousSwimlane = state.previousSwimlaneNumber !== void 0 ? state.swimlanes[state.previousSwimlaneNumber] : void 0;\n  const dimension = {\n    width: Math.max(\n      diagramProps.boxMinWidth,\n      Math.min(diagramProps.boxMaxWidth, event.dimension.width)\n    ) + 2 * diagramProps.boxPadding,\n    height: Math.max(\n      diagramProps.boxMinHeight,\n      Math.min(diagramProps.boxMaxHeight, event.dimension.height)\n    ) + 2 * diagramProps.boxPadding\n  };\n  const x = calculateX(swimlane, previousSwimlane, lastBox);\n  const r = x + dimension.width + diagramProps.boxPadding;\n  const maxR = calculateMaxRight(Object.values(state.swimlanes), r);\n  swimlane.r = x + dimension.width;\n  swimlane.maxHeight = Math.max(swimlane.maxHeight, dimension.height);\n  swimlane.height = Math.max(diagramProps.swimlaneMinHeight, swimlane.maxHeight) + 2 * diagramProps.swimlanePadding;\n  const box = {\n    x,\n    y: diagramProps.swimlanePadding + swimlane.y,\n    // y: diagramProps.swimlanePadding + (swimlane.y || diagramProps.boxDefaultY),\n    r,\n    dimension,\n    leftSibling: false,\n    swimlane,\n    visual: event.visual,\n    text: event.textProps.content,\n    frame: event.frame,\n    index: event.index\n  };\n  const newState = {\n    ...state,\n    boxes: [...state.boxes, box],\n    swimlanes: {\n      ...state.swimlanes,\n      [`${swimlane.index}`]: swimlane\n    },\n    previousSwimlaneNumber: swimlaneProps.index,\n    previousFrame: event.frame,\n    maxR\n  };\n  const swimlanes = sortedSwimlanesArray(newState.swimlanes);\n  if (swimlanes.length > 0) {\n    swimlanes[0].y = 0;\n  }\n  for (let i = 1; i < swimlanes.length; i++) {\n    const sw = swimlanes[i];\n    const prevSw = swimlanes[i - 1];\n    sw.y = prevSw.y + prevSw.height + diagramProps.swimlaneGap;\n  }\n  return newState;\n}\n__name(evolveFramePositioned, \"evolveFramePositioned\");\nfunction isFirstFrame(index, frame) {\n  if (index === 0 && frame.sourceFrames.length === 0) {\n    return true;\n  }\n  return false;\n}\n__name(isFirstFrame, \"isFirstFrame\");\nfunction hasSourceFrame(frame) {\n  return frame.sourceFrames !== void 0 && frame.sourceFrames !== null && frame.sourceFrames.length > 0;\n}\n__name(hasSourceFrame, \"hasSourceFrame\");\nfunction findBoxByFrame(boxes, frame) {\n  if (frame === void 0 || frame === null) {\n    return void 0;\n  }\n  return boxes.find((box) => box.frame.name === frame.name);\n}\n__name(findBoxByFrame, \"findBoxByFrame\");\nfunction findBoxByLineIndex(boxes, targetSwimlane, lineIndex) {\n  if (lineIndex < 0) {\n    return void 0;\n  }\n  for (let i = lineIndex; i >= 0; i--) {\n    const box = boxes[i];\n    if (box.swimlane.index !== targetSwimlane) {\n      return box;\n    }\n  }\n  return void 0;\n}\n__name(findBoxByLineIndex, \"findBoxByLineIndex\");\nfunction decidePositionRelation(state, _command) {\n  const command = _command;\n  if (isEmResetFrame(command.frame) || isFirstFrame(command.index, command.frame)) {\n    return [];\n  }\n  const targetBox = findBoxByFrame(state.boxes, command.frame);\n  if (targetBox === void 0) {\n    throw new Error(`Target box not found for frame ${command.frame.name}`);\n  }\n  let sourceBox;\n  if (command.sourceFrame) {\n    sourceBox = findBoxByFrame(state.boxes, command.sourceFrame);\n  } else {\n    sourceBox = findBoxByLineIndex(state.boxes, targetBox.swimlane.index, command.index - 1);\n  }\n  if (sourceBox === void 0) {\n    return [];\n  }\n  const event = {\n    $kind: RelationPositionedKind,\n    frame: command.frame,\n    index: command.index,\n    sourceBox,\n    targetBox\n  };\n  return [event];\n}\n__name(decidePositionRelation, \"decidePositionRelation\");\nfunction evolveRelationPositioned(state, _event) {\n  const event = _event;\n  const relation = {\n    visual: {\n      fill: \"none\",\n      stroke: \"#000\"\n    },\n    source: {\n      x: event.sourceBox.x,\n      y: event.sourceBox.y\n    },\n    target: {\n      x: event.targetBox.x,\n      y: event.targetBox.y\n    },\n    sourceBox: event.sourceBox,\n    targetBox: event.targetBox\n  };\n  const newState = {\n    ...state,\n    relations: [...state.relations, relation]\n  };\n  return newState;\n}\n__name(evolveRelationPositioned, \"evolveRelationPositioned\");\nvar deciders = {\n  [PositionFrameKind]: decidePositionFrame,\n  [PositionRelationKind]: decidePositionRelation\n};\nvar evolvers = {\n  [FramePositionedKind]: evolveFramePositioned,\n  [RelationPositionedKind]: evolveRelationPositioned\n};\nfunction decide(state, command) {\n  const fn = deciders[command.$kind];\n  if (fn === void 0 || fn === null) {\n    return [];\n  }\n  const events = fn(state, command);\n  log.debug(`decided events`, events);\n  return events;\n}\n__name(decide, \"decide\");\nfunction evolve(state, events) {\n  const newState = events.reduce((previousState, event) => {\n    const fn = evolvers[event.$kind];\n    if (fn === void 0 || fn === null) {\n      return previousState;\n    }\n    return fn(previousState, event);\n  }, state);\n  log.debug(`evolve events`, { state, newState, events });\n  return newState;\n}\n__name(evolve, \"evolve\");\nfunction dispatch(state, command) {\n  const events = decide(state, command);\n  const newState = evolve(state, events);\n  return newState;\n}\n__name(dispatch, \"dispatch\");\nvar db = {\n  getConfig: getConfig3,\n  setOptions,\n  getOptions,\n  clear: clear2,\n  setAccTitle,\n  getAccTitle,\n  getAccDescription,\n  setAccDescription,\n  setDiagramTitle,\n  getDiagramTitle,\n  setAst,\n  getDiagramProps,\n  getState\n};\n\n// src/diagrams/eventmodeling/parser.ts\nvar parser = {\n  parse: /* @__PURE__ */ __name(async (input) => {\n    const ast = await parse(\"eventmodeling\", input);\n    log.debug(ast);\n    db.setAst(ast);\n    populateCommonDb(ast, db);\n  }, \"parse\")\n};\nif (void 0) {\n  const { it, expect, describe } = void 0;\n  describe(\"EventModeling Parser\", () => {\n    it(\"should parse simple model\", () => {\n      const result = parser.parse(`eventmodeling\n  tf 01 evt Start\n\n    `);\n      expect(result !== void 0);\n    });\n  });\n}\n\n// src/diagrams/eventmodeling/renderer.ts\nimport { select } from \"d3\";\nvar DEFAULT_CONFIG = getConfig2();\nvar DEFAULT_EVENTMODELING_CONFIG2 = DEFAULT_CONFIG?.eventmodeling;\nfunction renderD3Box(diagram2, diagramProps2) {\n  return (box) => {\n    const y = box.swimlane.y + diagramProps2.swimlanePadding;\n    const g = diagram2.append(\"g\").attr(\"class\", \"em-box\");\n    g.append(\"rect\").attr(\"x\", box.x).attr(\"y\", y).attr(\"rx\", \"3\").attr(\"width\", box.dimension.width).attr(\"height\", box.dimension.height).attr(\"stroke\", box.visual.stroke).attr(\"fill\", box.visual.fill);\n    const f = g.append(\"foreignObject\").attr(\"x\", box.x + diagramProps2.boxPadding).attr(\"y\", y + 10).attr(\"width\", box.dimension.width - 2 * diagramProps2.boxPadding).attr(\"height\", box.dimension.height - 2 * diagramProps2.boxPadding);\n    const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n    text.append(\"span\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").html(box.text);\n  };\n}\n__name(renderD3Box, \"renderD3Box\");\nfunction dirUpwards(sourceY, targetY) {\n  return sourceY > targetY;\n}\n__name(dirUpwards, \"dirUpwards\");\nfunction renderD3Relation(diagram2, diagramProps2, arrowheadId, themeVariables) {\n  return (relation) => {\n    const sourceBoxY = relation.sourceBox.swimlane.y + diagramProps2.swimlanePadding;\n    const targetBoxY = relation.targetBox.swimlane.y + diagramProps2.swimlanePadding;\n    const upwards = dirUpwards(sourceBoxY, targetBoxY);\n    const sourceX = relation.sourceBox.x + relation.sourceBox.dimension.width * 2 / 3;\n    const targetX = relation.targetBox.x + relation.targetBox.dimension.width / 3;\n    let sourceY;\n    let targetY;\n    log.debug(`rendering relation up=${upwards} for `, {\n      sourceBox: relation.sourceBox,\n      targetBox: relation.targetBox\n    });\n    if (upwards) {\n      sourceY = sourceBoxY;\n      targetY = targetBoxY + relation.targetBox.dimension.height;\n    } else {\n      sourceY = sourceBoxY + relation.sourceBox.dimension.height;\n      targetY = targetBoxY;\n    }\n    const relationStroke = themeVariables.emRelationStroke ?? relation.visual.stroke;\n    diagram2.append(\"path\").attr(\"class\", \"em-relation\").attr(\"fill\", relation.visual.fill).attr(\"stroke\", relationStroke).attr(\"stroke-width\", \"1\").attr(\"marker-end\", `url(#${arrowheadId})`).attr(\"d\", `M${sourceX} ${sourceY} L${targetX} ${targetY}`);\n  };\n}\n__name(renderD3Relation, \"renderD3Relation\");\nfunction renderD3Swimlane(diagram2, maxR, diagramProps2, themeVariables) {\n  return (swimlane) => {\n    const g = diagram2.append(\"g\").attr(\"class\", \"em-swimlane\");\n    const oddBackground = themeVariables.emSwimlaneBackgroundOdd ?? \"rgb(250,250,250)\";\n    const backgroundStroke = themeVariables.emSwimlaneBackgroundStroke ?? \"rgb(240,240,240)\";\n    g.append(\"rect\").attr(\"x\", 0).attr(\"y\", swimlane.y).attr(\"rx\", \"3\").attr(\"width\", maxR + diagramProps2.swimlanePadding).attr(\"height\", swimlane.height).attr(\"fill\", oddBackground).attr(\"stroke\", backgroundStroke);\n    g.append(\"text\").attr(\"font-weight\", diagramProps2.swimlaneTextFontWeight).attr(\"x\", 30).attr(\"y\", swimlane.y + 30).text(swimlane.label);\n  };\n}\n__name(renderD3Swimlane, \"renderD3Swimlane\");\nvar draw = /* @__PURE__ */ __name(function(txt, id, ver, diagObj) {\n  log.debug(\"in eventmodeling renderer\", txt + \"\\n\", \"id:\", id, ver);\n  if (!DEFAULT_EVENTMODELING_CONFIG2) {\n    throw new Error(\"EventModeling config not found\");\n  }\n  const db2 = diagObj.db;\n  const { themeVariables, eventmodeling: config } = getConfig2();\n  const diagram2 = select(`[id=\"${id}\"]`);\n  const diagramProps2 = db2.getDiagramProps();\n  const state = db2.getState();\n  const arrowheadId = `em-arrowhead-${id}`;\n  const arrowheadColor = themeVariables.emArrowhead ?? \"#000000\";\n  state.sortedSwimlanesArray.forEach(\n    renderD3Swimlane(diagram2, state.maxR, diagramProps2, themeVariables)\n  );\n  state.boxes.forEach(renderD3Box(diagram2, diagramProps2));\n  state.relations.forEach(renderD3Relation(diagram2, diagramProps2, arrowheadId, themeVariables));\n  const marker = diagram2.append(\"defs\").append(\"marker\").attr(\"id\", arrowheadId).attr(\"markerWidth\", \"10\").attr(\"markerHeight\", \"7\").attr(\"refX\", \"10\").attr(\"refY\", \"3.5\").attr(\"orient\", \"auto\");\n  marker.append(\"polygon\").attr(\"points\", \"0 0, 10 3.5, 0 7\").attr(\"fill\", arrowheadColor);\n  setupGraphViewbox(void 0, diagram2, config?.padding ?? 30, config?.useMaxWidth);\n}, \"draw\");\nvar renderer_default = {\n  draw\n};\n\n// src/diagrams/eventmodeling/styles.js\nvar getStyles = /* @__PURE__ */ __name((_options) => ``, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/eventmodeling/diagram.ts\nvar diagram = {\n  parser,\n  db,\n  renderer: renderer_default,\n  styles: styles_default\n};\nexport {\n  diagram\n};\n"],"names":["PositionFrameKind","FramePositionedKind","PositionRelationKind","RelationPositionedKind","setOptions","__name","_rawOptString","log","getOptions","clear2","reset","clear","store","DEFAULT_EVENTMODELING_CONFIG","defaultConfig_default","getConfig3","cleanAndMerge","getConfig","getState","state","initial","ast","diagramProps2","getDiagramProps","frame","index","textProps","calculateTextProps","dispatch","sourceFrames","hasSourceFrame","currentFrame","sf","sourceFrame","sortedSwimlanesArray","setAst","diagramProps","extractNamespace","entityIdentifier","spl","extractName","findSwimlaneByNamespace","swimlanes","namespace","swimlane","findNextAvailableIndex","boundaryMin","boundaryMax","key","calculateSwimlaneProps","sw","calculateEntityVisualProps","themeVariables","dataEntities","config","name","sanitizeText","toHtml","wrapLabelConfig","content","wrapLabel","dataEntity","dataEntity2","hasRenderedData","textDimensionConfig","dimensions","calculateTextDimensions","calculatedWidthFix","props","decidePositionFrame","_command","command","visual","dimension","calculateX","previousSwimlane","lastBox","calculateMaxRight","swimlaneR","rs","s","a","b","evolveFramePositioned","_event","event","swimlaneProps","x","r","maxR","box","newState","i","prevSw","isFirstFrame","findBoxByFrame","boxes","findBoxByLineIndex","targetSwimlane","lineIndex","decidePositionRelation","isEmResetFrame","targetBox","sourceBox","evolveRelationPositioned","relation","deciders","evolvers","decide","fn","events","evolve","previousState","db","setAccTitle","getAccTitle","getAccDescription","setAccDescription","setDiagramTitle","getDiagramTitle","parser","input","parse","populateCommonDb","DEFAULT_CONFIG","getConfig2","DEFAULT_EVENTMODELING_CONFIG2","renderD3Box","diagram2","y","g","dirUpwards","sourceY","targetY","renderD3Relation","arrowheadId","sourceBoxY","targetBoxY","upwards","sourceX","targetX","relationStroke","renderD3Swimlane","oddBackground","backgroundStroke","draw","txt","id","ver","diagObj","db2","select","arrowheadColor","setupGraphViewbox","renderer_default","getStyles","_options","styles_default","diagram"],"mappings":"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","x_google_ignoreList":[0]}