{
  "version": 3,
  "sources": ["../../../src/diagrams/eventmodeling/parser.ts", "../../../src/diagrams/eventmodeling/db.ts", "../../../src/diagrams/eventmodeling/types.ts", "../../../src/diagrams/eventmodeling/renderer.ts", "../../../src/diagrams/eventmodeling/styles.js", "../../../src/diagrams/eventmodeling/diagram.ts"],
  "sourcesContent": ["import type { EventModel } from '@mermaid-js/parser';\nimport { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport { db } from './db.js';\n\nexport const parser: ParserDefinition = {\n  parse: async (input: string): Promise<void> => {\n    const ast: EventModel = await parse('eventmodeling', input);\n    log.debug(ast);\n    db.setAst(ast);\n    populateCommonDb(ast as any, db);\n  },\n};\n\nif (import.meta.vitest) {\n  const { it, expect, describe } = import.meta.vitest;\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 !== undefined);\n    });\n  });\n}\n", "import { log } from '../../logger.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport { wrapLabel, calculateTextDimensions } from '../../utils.js';\nimport { getConfig as commonGetConfig } from '../../config.js';\nimport type { TextDimensionConfig } from '../../types.js';\nimport {\n  setAccTitle,\n  getAccTitle,\n  getAccDescription,\n  setAccDescription,\n  clear as commonClear,\n  setDiagramTitle,\n  getDiagramTitle,\n} from '../common/commonDb.js';\nimport { sanitizeText } from '../common/common.js';\n\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\n\nimport type { EventModelingDiagramConfig } from '../../config.type.js';\nimport type { EventModel } from '@mermaid-js/parser';\nimport type { EmFrame, EmDataEntity } from '@mermaid-js/parser';\nimport { isEmResetFrame } from '@mermaid-js/parser';\n\nimport type {\n  EventModelingDB,\n  Box,\n  Relation,\n  Swimlane,\n  SwimlaneProps,\n  VisualProps,\n  Command,\n  Event,\n  Deciders,\n  Evolvers,\n  Context,\n  PositionFrame,\n  PositionRelation,\n  FramePositioned,\n  RelationPositioned,\n  TextProps,\n  DiagramProps,\n} from './types.js';\nimport {\n  PositionFrameKind,\n  PositionRelationKind,\n  FramePositionedKind,\n  RelationPositionedKind,\n} from './types.js';\n\nexport const setOptions = function (_rawOptString: string) {\n  log.debug('options str', _rawOptString);\n};\n\nexport const getOptions = function () {\n  return {};\n};\n\nexport const clear = function () {\n  reset();\n  commonClear();\n};\n\nfunction reset(): void {\n  store = {};\n}\n\nexport const getDirection = function () {\n  return 'LR';\n};\n\nconst DEFAULT_EVENTMODELING_CONFIG: Required<EventModelingDiagramConfig> =\n  DEFAULT_CONFIG.eventmodeling;\nconst getConfig = (): Required<EventModelingDiagramConfig> => {\n  const config = cleanAndMerge({\n    ...DEFAULT_EVENTMODELING_CONFIG,\n    ...commonGetConfig().eventmodeling,\n  });\n  return config;\n};\n\ninterface EmStore {\n  ast?: EventModel;\n}\n\nlet store: EmStore = {};\n\nfunction getState(): Context {\n  let state = initial;\n  const { ast } = store;\n  const diagramProps = getDiagramProps();\n\n  if (!ast) {\n    throw new Error('No data for EventModel');\n  }\n\n  ast.frames.forEach((frame: EmFrame, index: number) => {\n    const textProps = calculateTextProps(frame, ast.dataEntities, diagramProps);\n\n    state = dispatch(state, {\n      $kind: PositionFrameKind,\n      index,\n      frame,\n      textProps,\n    });\n\n    let sourceFrames = undefined;\n    if (hasSourceFrame(frame)) {\n      log.debug(`source frame`, frame.sourceFrames);\n      sourceFrames = ast.frames.filter((currentFrame: EmFrame) => {\n        //@ts-ignore: sf is Reference<EmFrame> but Reference is present in 'langium' package not available in `mermaid` package directly. We might want to re-export it from `parser`.\n        return frame.sourceFrames.some((sf) => sf.$refText === currentFrame.name);\n      });\n\n      sourceFrames.forEach((sourceFrame: EmFrame) => {\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\n  state = {\n    ...state,\n    sortedSwimlanesArray: sortedSwimlanesArray(state.swimlanes),\n  };\n\n  return state;\n}\n\nfunction setAst(ast: EventModel) {\n  store.ast = ast;\n}\n\nconst 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};\n\nfunction getDiagramProps(): DiagramProps {\n  return diagramProps;\n}\n\nconst initial: Context = {\n  boxes: [],\n  swimlanes: {},\n  relations: [],\n  maxR: 0,\n  sortedSwimlanesArray: [],\n};\n\nfunction extractNamespace(entityIdentifier: string): string | undefined {\n  const spl = entityIdentifier.split('.');\n  if (spl.length === 2) {\n    return spl[0];\n  }\n  return undefined;\n}\n\nfunction extractName(entityIdentifier: string): string | undefined {\n  const spl = entityIdentifier.split('.');\n  if (spl.length === 2) {\n    return spl[1];\n  }\n  return entityIdentifier;\n}\n\nfunction findSwimlaneByNamespace(\n  swimlanes: Record<string, Swimlane>,\n  namespace: string | undefined\n): Swimlane | undefined {\n  if (!namespace || namespace.length === 0) {\n    return undefined;\n  }\n  return Object.values(swimlanes).find((swimlane) => swimlane.namespace === namespace);\n}\n\nfunction findNextAvailableIndex(\n  swimlanes: Record<string, Swimlane>,\n  boundaryMin: number,\n  boundaryMax: number\n): number {\n  return (\n    Math.max(\n      boundaryMin,\n      ...Object.keys(swimlanes)\n        .filter((key) => {\n          const index = Number.parseInt(key);\n          return index > boundaryMin && index < boundaryMax;\n        })\n        .map((key) => Number.parseInt(key))\n    ) + 1\n  );\n}\n\nfunction calculateSwimlaneProps(\n  frame: EmFrame,\n  swimlanes: Record<string, Swimlane>\n): SwimlaneProps {\n  const namespace = extractNamespace(frame.entityIdentifier);\n  const sw = findSwimlaneByNamespace(swimlanes, namespace);\n\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\nfunction calculateEntityVisualProps(frame: EmFrame): VisualProps {\n  const { themeVariables } = commonGetConfig();\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\nfunction calculateTextProps(\n  frame: EmFrame,\n  dataEntities: EmDataEntity[],\n  diagramProps: DiagramProps\n): TextProps {\n  const config = commonGetConfig();\n  const name = sanitizeText(extractName(frame.entityIdentifier) ?? '', config);\n  let toHtml: string | undefined;\n\n  const wrapLabelConfig = {\n    fontSize: 16,\n    fontWeight: 700,\n    fontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n    joinWith: '<br/>',\n  };\n\n  const wrappedName = wrapLabel(name, diagramProps.textMaxWidth, wrapLabelConfig);\n  let content = `<b>${wrappedName}</b>`;\n\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, diagramProps.textMaxWidth, wrapLabelConfig);\n    toHtml = toHtml.replaceAll(' ', '&nbsp;');\n  }\n\n  if (frame.dataReference) {\n    const dataEntity = dataEntities.find(\n      (dataEntity) => dataEntity.name === frame.dataReference?.$refText\n    );\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, diagramProps.textMaxWidth, wrapLabelConfig);\n      toHtml = toHtml.replaceAll(' ', '&nbsp;');\n      toHtml += `<br/>`;\n    }\n  }\n\n  const hasRenderedData = toHtml !== undefined;\n\n  if (hasRenderedData) {\n    content += `<br/><br/><code style=\"text-align: left; display: block;max-width:${diagramProps.textMaxWidth}px\">${toHtml}</code>`;\n  }\n\n  const textDimensionConfig: TextDimensionConfig = {\n    fontSize: wrapLabelConfig.fontSize,\n    fontWeight: wrapLabelConfig.fontWeight,\n    fontFamily: wrapLabelConfig.fontFamily,\n  };\n  const dimensions = calculateTextDimensions(content, textDimensionConfig);\n\n  /** this is a temporal workaround until a more complex dimension calculation is in place */\n  const calculatedWidthFix = hasRenderedData ? dimensions.width / 3 : dimensions.width;\n\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\nfunction decidePositionFrame(state: Context, _command: Command): Event[] {\n  const command = _command as PositionFrame;\n\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\n  const event: FramePositioned = {\n    $kind: FramePositionedKind,\n    frame: command.frame,\n    index: command.index,\n    visual: visual,\n    dimension,\n    textProps: command.textProps,\n  };\n  return [event];\n}\n\nfunction calculateX(\n  swimlane: Partial<Swimlane>,\n  previousSwimlane: Swimlane | undefined,\n  lastBox: Box | undefined\n): number {\n  // log.debug(`calculateX`, { previousSwimlane,swimlane:event.swimlane,r: swimlane.r,lbr:lastBox?.r});\n  if (previousSwimlane === undefined) {\n    return diagramProps.contentStartX;\n  }\n  if (previousSwimlane.index === swimlane.index && swimlane.r) {\n    return swimlane.r + diagramProps.boxPadding;\n  }\n\n  if (lastBox === undefined) {\n    return diagramProps.contentStartX;\n  }\n\n  return lastBox.r - diagramProps.boxOverlap + diagramProps.boxPadding;\n}\n\nfunction calculateMaxRight(swimlanes: Swimlane[], swimlaneR: number): number {\n  const rs = [...swimlanes.map((s) => s.r), swimlaneR];\n  return Math.max(...rs);\n}\n\nfunction sortedSwimlanesArray(swimlanes: Record<string, Swimlane>): Swimlane[] {\n  return Object.values(swimlanes).sort((a, b) => a.index - b.index);\n}\n\nfunction evolveFramePositioned(state: Context, _event: Event): Context {\n  const event: FramePositioned = _event as FramePositioned;\n\n  const swimlaneProps = calculateSwimlaneProps(event.frame, state.swimlanes);\n\n  let swimlane: 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\n  const lastBox = state.boxes.length > 0 ? state.boxes[state.boxes.length - 1] : undefined;\n  const previousSwimlane =\n    state.previousSwimlaneNumber !== undefined\n      ? state.swimlanes[state.previousSwimlaneNumber]\n      : undefined;\n\n  const dimension = {\n    width:\n      Math.max(\n        diagramProps.boxMinWidth,\n        Math.min(diagramProps.boxMaxWidth, event.dimension.width)\n      ) +\n      2 * diagramProps.boxPadding,\n    height:\n      Math.max(\n        diagramProps.boxMinHeight,\n        Math.min(diagramProps.boxMaxHeight, event.dimension.height)\n      ) +\n      2 * diagramProps.boxPadding,\n  };\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\n  swimlane.r = x + dimension.width;\n  swimlane.maxHeight = Math.max(swimlane.maxHeight, dimension.height);\n  swimlane.height =\n    Math.max(diagramProps.swimlaneMinHeight, swimlane.maxHeight) + 2 * diagramProps.swimlanePadding;\n\n  const box: 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: swimlane,\n    visual: event.visual,\n    text: event.textProps.content,\n    frame: event.frame,\n    index: event.index,\n  };\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\n  /** the following swimlane.y recalculation is suboptimal. Additionally\n   * the value of Box.y is not taken into account in rendering time.\n   * This is fine for the time being, but maybe needs improvement later on.\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\n    sw.y = prevSw.y + prevSw.height + diagramProps.swimlaneGap;\n  }\n\n  return newState;\n}\n\nfunction isFirstFrame(index: number, frame: EmFrame): boolean {\n  if (index === 0 && frame.sourceFrames.length === 0) {\n    return true;\n  }\n  return false;\n}\n\nfunction hasSourceFrame(frame: EmFrame): boolean {\n  return (\n    frame.sourceFrames !== undefined && frame.sourceFrames !== null && frame.sourceFrames.length > 0\n  );\n}\n\nfunction findBoxByFrame(boxes: Box[], frame: EmFrame | undefined): Box | undefined {\n  if (frame === undefined || frame === null) {\n    return undefined;\n  }\n  return boxes.find((box) => box.frame.name === frame.name);\n}\n\nfunction findBoxByLineIndex(\n  boxes: Box[],\n  targetSwimlane: number,\n  lineIndex: number\n): Box | undefined {\n  if (lineIndex < 0) {\n    return undefined;\n  }\n\n  // boxes.find((box) => box.index === lineIndex);\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 undefined;\n}\n\nfunction decidePositionRelation(state: Context, _command: Command): Event[] {\n  const command = _command as PositionRelation;\n\n  if (isEmResetFrame(command.frame) || isFirstFrame(command.index, command.frame)) {\n    return [];\n  }\n\n  const targetBox = findBoxByFrame(state.boxes, command.frame);\n\n  if (targetBox === undefined) {\n    throw new Error(`Target box not found for frame ${command.frame.name}`);\n  }\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\n  if (sourceBox === undefined) {\n    // Source box not found for frame ${command.frame.name}\n    return [];\n  }\n  const event: RelationPositioned = {\n    $kind: RelationPositionedKind,\n    frame: command.frame,\n    index: command.index,\n    sourceBox,\n    targetBox,\n  };\n  return [event];\n}\n\nfunction evolveRelationPositioned(state: Context, _event: Event): Context {\n  const event = _event as RelationPositioned;\n\n  const relation: 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\n  const newState = {\n    ...state,\n    relations: [...state.relations, relation],\n  };\n  return newState;\n}\n\nconst deciders: Deciders = {\n  [PositionFrameKind]: decidePositionFrame,\n  [PositionRelationKind]: decidePositionRelation,\n};\n\nconst evolvers: Evolvers = {\n  [FramePositionedKind]: evolveFramePositioned,\n  [RelationPositionedKind]: evolveRelationPositioned,\n};\n\nfunction decide(state: Context, command: Command): Event[] {\n  const fn = deciders[command.$kind];\n  if (fn === undefined || fn === null) {\n    return [];\n  }\n\n  const events = fn(state, command);\n  log.debug(`decided events`, events);\n  return events;\n}\n\nfunction evolve(state: Context, events: Event[]): Context {\n  const newState = events.reduce((previousState, event) => {\n    const fn = evolvers[event.$kind];\n    if (fn === undefined || 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\nfunction dispatch(state: Context, command: Command): Context {\n  const events = decide(state, command);\n  const newState = evolve(state, events);\n  return newState;\n}\n\nexport const db: EventModelingDB = {\n  getConfig,\n\n  setOptions,\n  getOptions,\n  clear,\n\n  setAccTitle,\n  getAccTitle,\n  getAccDescription,\n  setAccDescription,\n  setDiagramTitle,\n  getDiagramTitle,\n\n  setAst,\n\n  getDiagramProps,\n  getState,\n};\n", "import type { EventModelingDiagramConfig } from '../../config.type.js';\nimport type { DiagramDBBase } from '../../diagram-api/types.js';\n\nimport type { EmFrame, EventModel } from '@mermaid-js/parser';\n\nexport interface EventModelingDB extends DiagramDBBase<EventModelingDiagramConfig> {\n  setOptions: (rawOptString: string) => void;\n  getOptions: () => any;\n\n  setAst: (ast: EventModel) => void;\n\n  getDiagramProps: () => DiagramProps;\n  getState: () => Context;\n}\n\nexport interface DiagramProps {\n  swimlaneMinHeight: number;\n  swimlanePadding: number;\n  swimlaneGap: number;\n  boxPadding: number;\n  boxOverlap: number;\n  boxDefaultY: number;\n  boxMinWidth: number;\n  boxMaxWidth: number;\n  boxMinHeight: number;\n  boxMaxHeight: number;\n  contentStartX: number;\n  textMaxWidth: number;\n  boxTextFontWeight: string;\n  boxTextPadding: number;\n  swimlaneTextFontWeight: string;\n  labelUiAutomation: string;\n  labelUiAutomationPrefix: string;\n  labelCommandReadModel: string;\n  labelCommandReadModelPrefix: string;\n  labelEvents: string;\n  labelEventsPrefix: string;\n}\n\n/**\n * Visual\n */\n\nexport interface Dimension {\n  width: number;\n  height: number;\n}\n\nexport interface Coordinate {\n  x: number;\n  y: number;\n}\n\nexport type Color = string;\n\nexport interface VisualProps {\n  fill: Color;\n  stroke: Color;\n}\n\nexport interface TextProps {\n  content: string;\n  width: number;\n  height: number;\n}\n\nexport interface Box {\n  r: number;\n  x: number;\n  /** This has no meaning for the time being. It is calculated from Swimlane.y ATM. */\n  y: number;\n  dimension: Dimension;\n  leftSibling: boolean;\n  swimlane: Swimlane;\n  visual: VisualProps;\n  text: string;\n  frame: EmFrame;\n  /** Line index */\n  index: number;\n}\n\nexport interface SwimlaneProps {\n  index: number;\n  label: string;\n  namespace?: string;\n}\n\nexport type Swimlane = {\n  r: number;\n  y: number;\n  height: number;\n  maxHeight: number;\n} & SwimlaneProps;\n\nexport interface Relation {\n  visual: VisualProps;\n  source: Coordinate;\n  target: Coordinate;\n  sourceBox: Box;\n  targetBox: Box;\n}\n\nexport interface Context {\n  boxes: Box[];\n  swimlanes: Record<string, Swimlane>;\n  relations: Relation[];\n  previousFrame?: EmFrame;\n  previousSwimlaneNumber?: number;\n  maxR: number;\n  sortedSwimlanesArray: Swimlane[];\n}\n\n/**\n * Commands & Events\n */\n\nexport const PositionFrameKind = 'position frame';\nexport type PositionFrame = {\n  index: number;\n  frame: EmFrame;\n  textProps: TextProps;\n} & CommandBase;\n\nexport const FramePositionedKind = 'frame positioned';\nexport type FramePositioned = {\n  index: number;\n  frame: EmFrame;\n  visual: VisualProps;\n  dimension: Dimension;\n  textProps: TextProps;\n} & EventBase;\n\nexport const PositionRelationKind = 'position relation';\nexport type PositionRelation = {\n  index: number;\n  frame: EmFrame;\n  sourceFrame?: EmFrame;\n} & CommandBase;\n\nexport const RelationPositionedKind = 'relation positioned';\nexport type RelationPositioned = {\n  index: number;\n  frame: EmFrame;\n  sourceBox: Box;\n  targetBox: Box;\n} & EventBase;\n\n/**\n * Decider & Event Sourcing support\n */\n\nexport type Command = PositionFrame | PositionRelation;\nexport type Event = FramePositioned | RelationPositioned;\nexport interface CommandBase {\n  $kind: string;\n}\nexport interface EventBase {\n  $kind: string;\n}\n\nexport type DecideFn = (state: Context, command: Command) => Event[];\nexport type EvolveFn = (state: Context, event: Event) => Context;\n\nexport type Deciders = Record<string, DecideFn>;\nexport type Evolvers = Record<string, EvolveFn>;\n", "import type { BaseType, Selection } from 'd3';\nimport { select } from 'd3';\nimport { getConfig, setupGraphViewbox } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\nimport type { DrawDefinition } from '../../diagram-api/types.js';\n\nimport type { EventModelingDB, Box, Relation, Swimlane, DiagramProps } from './types.js';\n\nconst DEFAULT_CONFIG = getConfig();\nconst DEFAULT_EVENTMODELING_CONFIG = DEFAULT_CONFIG?.eventmodeling;\n\nfunction renderD3Box(\n  diagram: Selection<BaseType, unknown, HTMLElement, any>,\n  diagramProps: DiagramProps\n) {\n  return (box: Box) => {\n    const y = box.swimlane.y + diagramProps.swimlanePadding;\n\n    const g = diagram.append('g').attr('class', 'em-box');\n\n    g.append('rect')\n      .attr('x', box.x)\n      .attr('y', y)\n      .attr('rx', '3')\n      .attr('width', box.dimension.width)\n      .attr('height', box.dimension.height)\n      .attr('stroke', box.visual.stroke)\n      .attr('fill', box.visual.fill);\n\n    const f = g\n      .append('foreignObject')\n      .attr('x', box.x + diagramProps.boxPadding)\n      .attr('y', y + 10)\n      .attr('width', box.dimension.width - 2 * diagramProps.boxPadding)\n      .attr('height', box.dimension.height - 2 * diagramProps.boxPadding);\n\n    const text = f\n      .append('xhtml:div')\n      .style('display', 'table')\n      .style('height', '100%')\n      .style('width', '100%');\n\n    text\n      .append('span')\n      .style('display', 'table-cell')\n      .style('text-align', 'center')\n      .style('vertical-align', 'middle')\n      .html(box.text);\n  };\n}\n\nfunction dirUpwards(sourceY: number, targetY: number): boolean {\n  return sourceY > targetY;\n}\n\nfunction renderD3Relation(\n  diagram: Selection<BaseType, unknown, HTMLElement, any>,\n  diagramProps: DiagramProps,\n  arrowheadId: string,\n  themeVariables: Record<string, string | undefined>\n) {\n  return (relation: Relation) => {\n    const sourceBoxY = relation.sourceBox.swimlane.y + diagramProps.swimlanePadding;\n    const targetBoxY = relation.targetBox.swimlane.y + diagramProps.swimlanePadding;\n\n    const upwards = dirUpwards(sourceBoxY, targetBoxY);\n\n    const sourceX = relation.sourceBox.x + (relation.sourceBox.dimension.width * 2) / 3;\n    const targetX = relation.targetBox.x + relation.targetBox.dimension.width / 3;\n\n    let sourceY;\n    let targetY;\n\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\n    const relationStroke = themeVariables.emRelationStroke ?? relation.visual.stroke;\n\n    diagram\n      .append('path')\n      .attr('class', 'em-relation')\n      .attr('fill', relation.visual.fill)\n      .attr('stroke', relationStroke)\n      .attr('stroke-width', '1')\n      .attr('marker-end', `url(#${arrowheadId})`)\n      .attr('d', `M${sourceX} ${sourceY} L${targetX} ${targetY}`);\n  };\n}\n\nfunction renderD3Swimlane(\n  diagram: Selection<BaseType, unknown, HTMLElement, any>,\n  maxR: number,\n  diagramProps: DiagramProps,\n  themeVariables: Record<string, string | undefined>\n) {\n  return (swimlane: Swimlane) => {\n    const g = diagram.append('g').attr('class', 'em-swimlane');\n\n    const oddBackground = themeVariables.emSwimlaneBackgroundOdd ?? 'rgb(250,250,250)';\n    const backgroundStroke = themeVariables.emSwimlaneBackgroundStroke ?? 'rgb(240,240,240)';\n\n    g.append('rect')\n      .attr('x', 0)\n      .attr('y', swimlane.y)\n      .attr('rx', '3')\n      .attr('width', maxR + diagramProps.swimlanePadding)\n      .attr('height', swimlane.height)\n      .attr('fill', oddBackground)\n      .attr('stroke', backgroundStroke);\n\n    g.append('text')\n      .attr('font-weight', diagramProps.swimlaneTextFontWeight)\n      .attr('x', 30)\n      .attr('y', swimlane.y + 30)\n      .text(swimlane.label);\n  };\n}\n\nexport const draw: DrawDefinition = function (txt, id, ver, diagObj) {\n  log.debug('in eventmodeling renderer', txt + '\\n', 'id:', id, ver);\n  if (!DEFAULT_EVENTMODELING_CONFIG) {\n    throw new Error('EventModeling config not found');\n  }\n  const db = diagObj.db as EventModelingDB;\n  const { themeVariables, eventmodeling: config } = getConfig();\n\n  const diagram: Selection<BaseType, unknown, HTMLElement, any> = select(`[id=\"${id}\"]`);\n\n  const diagramProps = db.getDiagramProps();\n  const state = db.getState();\n\n  const arrowheadId = `em-arrowhead-${id}`;\n  const arrowheadColor = themeVariables.emArrowhead ?? '#000000';\n\n  state.sortedSwimlanesArray.forEach(\n    renderD3Swimlane(diagram, state.maxR, diagramProps, themeVariables)\n  );\n  state.boxes.forEach(renderD3Box(diagram, diagramProps));\n  state.relations.forEach(renderD3Relation(diagram, diagramProps, arrowheadId, themeVariables));\n\n  const marker = diagram\n    .append('defs')\n    .append('marker')\n    .attr('id', arrowheadId)\n    .attr('markerWidth', '10')\n    .attr('markerHeight', '7')\n    .attr('refX', '10')\n    .attr('refY', '3.5')\n    .attr('orient', 'auto');\n\n  marker.append('polygon').attr('points', '0 0, 10 3.5, 0 7').attr('fill', arrowheadColor);\n\n  setupGraphViewbox(undefined, diagram, config?.padding ?? 30, config?.useMaxWidth);\n};\n\nexport default {\n  draw,\n};\n", "const getStyles = (_options) => ``;\n\nexport default getStyles;\n", "import { parser } from './parser.js';\nimport { db } from './db.js';\nimport renderer from './renderer.js';\nimport styles from './styles.js';\nimport type { DiagramDefinition } from '../../diagram-api/types.js';\n\nexport const diagram: DiagramDefinition = {\n  parser,\n  db,\n  renderer: renderer,\n  styles: styles,\n};\n"],
  "mappings": "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",
  "names": ["clear", "getConfig", "diagramProps", "dataEntity", "clear", "getConfig", "DEFAULT_EVENTMODELING_CONFIG", "diagram", "diagramProps", "db"]
}
