{
  "version": 3,
  "sources": ["../../../src/diagrams/cynefin/cynefinDb.ts", "../../../src/diagrams/cynefin/cynefinParser.ts", "../../../src/diagrams/cynefin/cynefinBoundaries.ts", "../../../src/diagrams/cynefin/cynefinRenderer.ts", "../../../src/diagrams/cynefin/styles.ts", "../../../src/diagrams/cynefin/cynefinDiagram.ts"],
  "sourcesContent": ["import type { DomainBlock, Transition } from '@mermaid-js/parser';\nimport { getConfig as commonGetConfig } from '../../config.js';\nimport type { CynefinDiagramConfig } from '../../config.type.js';\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\nimport { log } from '../../logger.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport {\n  clear as commonClear,\n  getAccDescription,\n  getAccTitle,\n  getDiagramTitle,\n  setAccDescription,\n  setAccTitle,\n  setDiagramTitle,\n} from '../common/commonDb.js';\nimport type { CynefinDB, CynefinDomain, CynefinTransition, DomainName } from './types.js';\n\ninterface CynefinData {\n  domains: Map<DomainName, CynefinDomain>;\n  transitions: CynefinTransition[];\n}\n\nconst createDefaultData = (): CynefinData => ({\n  domains: new Map(),\n  transitions: [],\n});\n\nlet data: CynefinData = createDefaultData();\n\nconst getDomains = (): Map<DomainName, CynefinDomain> => data.domains;\n\nconst getTransitions = (): CynefinTransition[] => data.transitions;\n\nconst setDomains = (blocks: DomainBlock[]) => {\n  if (!blocks) {\n    return;\n  }\n  for (const block of blocks) {\n    const domainName = block.domain as DomainName;\n    const items = (block.items ?? []).map((item) => ({\n      label: item.label,\n    }));\n    data.domains.set(domainName, {\n      name: domainName,\n      items,\n    });\n  }\n};\n\nconst setTransitions = (transitions: Transition[]) => {\n  if (!transitions) {\n    return;\n  }\n  data.transitions = transitions\n    .filter((t) => {\n      if (t.from === t.to) {\n        log.warn(\n          `Cynefin: self-loop transition on domain \"${t.from}\" is not meaningful and will be skipped.`\n        );\n        return false;\n      }\n      return true;\n    })\n    .map((t) => ({\n      from: t.from as DomainName,\n      to: t.to as DomainName,\n      label: t.label || undefined,\n    }));\n};\n\nconst getConfig = (): Required<CynefinDiagramConfig> => {\n  return cleanAndMerge({\n    ...DEFAULT_CONFIG.cynefin,\n    ...commonGetConfig().cynefin,\n  });\n};\n\nconst clear = () => {\n  commonClear();\n  data = createDefaultData();\n};\n\nexport const db: CynefinDB = {\n  getDomains,\n  getTransitions,\n  setDomains,\n  setTransitions,\n  getConfig,\n  clear,\n  setAccTitle,\n  getAccTitle,\n  setDiagramTitle,\n  getDiagramTitle,\n  getAccDescription,\n  setAccDescription,\n};\n", "import type { Cynefin } 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 './cynefinDb.js';\n\nconst populate = (ast: Cynefin) => {\n  populateCommonDb(ast, db);\n  db.setDomains(ast.domains);\n  db.setTransitions(ast.transitions);\n};\n\nexport const parser: ParserDefinition = {\n  parse: async (input: string): Promise<void> => {\n    const ast: Cynefin = await parse('cynefin', input);\n    log.debug(ast);\n    populate(ast);\n  },\n};\n", "/**\n * Deterministic pseudo-random number generator (mulberry32).\n * Returns a function that produces values in [0, 1).\n */\nexport function seededRandom(seed: number): number {\n  let t = (seed + 0x6d2b79f5) | 0;\n  t = Math.imul(t ^ (t >>> 15), t | 1);\n  t ^= t + Math.imul(t ^ (t >>> 7), t | 61);\n  return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n}\n\n/**\n * Simple string hash for seeding the PRNG.\n */\nexport function hashString(str: string): number {\n  let hash = 0;\n  for (let i = 0; i < str.length; i++) {\n    const ch = str.charCodeAt(i);\n    hash = (hash << 5) - hash + ch;\n    hash |= 0;\n  }\n  return hash;\n}\n\n/**\n * Resolve the boundary-waviness seed. A non-zero configured seed takes\n * precedence so renders are reproducible (visual regression tests). When the\n * configured seed is 0 or absent we fall back to hashing the SVG element id,\n * which gives each rendered diagram its own waviness pattern at the cost of\n * being unstable across renders.\n */\nexport function resolveSeed(configuredSeed: number | undefined, id: string): number {\n  if (\n    typeof configuredSeed === 'number' &&\n    Number.isFinite(configuredSeed) &&\n    configuredSeed !== 0\n  ) {\n    return configuredSeed;\n  }\n  return hashString(id);\n}\n\n/**\n * Generate a vertical wavy line (the \"fold\") through the center of the diagram.\n * Uses cubic bezier segments with alternating control point offsets.\n * @param width - diagram width\n * @param height - diagram height\n * @param seed - deterministic seed for variation\n * @param amplitudeOverride - optional amplitude in pixels; falls back to 1.5% of width\n * @returns SVG path d attribute string\n */\nexport function generateFoldPath(\n  width: number,\n  height: number,\n  seed: number,\n  amplitudeOverride?: number\n): string {\n  const cx = width / 2;\n  const amplitude = amplitudeOverride ?? width * 0.015;\n  const segments = 7;\n  const segHeight = height / segments;\n  const points: { x: number; y: number }[] = [];\n\n  for (let i = 0; i <= segments; i++) {\n    const jitter = seededRandom(seed + i * 17) * amplitude * 2 - amplitude;\n    points.push({ x: cx + jitter, y: i * segHeight });\n  }\n\n  let d = `M${points[0].x},${points[0].y}`;\n  for (let i = 0; i < points.length - 1; i++) {\n    const p0 = points[i];\n    const p1 = points[i + 1];\n    const midY = (p0.y + p1.y) / 2;\n    const dir = i % 2 === 0 ? 1 : -1;\n    const offset = amplitude * 1.5 * dir * seededRandom(seed + i * 31 + 7);\n    const cp1x = p0.x + offset;\n    const cp1y = midY;\n    const cp2x = p1.x - offset;\n    const cp2y = midY;\n    d += ` C${cp1x},${cp1y} ${cp2x},${cp2y} ${p1.x},${p1.y}`;\n  }\n\n  return d;\n}\n\n/**\n * Generate a horizontal wavy line through the center of the diagram.\n * @param width - diagram width\n * @param height - diagram height\n * @param seed - deterministic seed for variation\n * @param amplitudeOverride - optional amplitude in pixels; falls back to 1.5% of height\n * @returns SVG path d attribute string\n */\nexport function generateHorizontalBoundary(\n  width: number,\n  height: number,\n  seed: number,\n  amplitudeOverride?: number\n): string {\n  const cy = height / 2;\n  const amplitude = amplitudeOverride ?? height * 0.015;\n  const segments = 7;\n  const segWidth = width / segments;\n  const points: { x: number; y: number }[] = [];\n\n  for (let i = 0; i <= segments; i++) {\n    const jitter = seededRandom(seed + i * 23) * amplitude * 2 - amplitude;\n    points.push({ x: i * segWidth, y: cy + jitter });\n  }\n\n  let d = `M${points[0].x},${points[0].y}`;\n  for (let i = 0; i < points.length - 1; i++) {\n    const p0 = points[i];\n    const p1 = points[i + 1];\n    const midX = (p0.x + p1.x) / 2;\n    const dir = i % 2 === 0 ? 1 : -1;\n    const offset = amplitude * 1.5 * dir * seededRandom(seed + i * 37 + 11);\n    const cp1x = midX;\n    const cp1y = p0.y + offset;\n    const cp2x = midX;\n    const cp2y = p1.y - offset;\n    d += ` C${cp1x},${cp1y} ${cp2x},${cp2y} ${p1.x},${p1.y}`;\n  }\n\n  return d;\n}\n\n/**\n * Generate the \"cliff\" path between Clear (bottom-right) and Chaotic (bottom-left).\n * This is a thicker, more abrupt boundary near the bottom center.\n * @param width - diagram width\n * @param height - diagram height\n * @returns SVG path d attribute string\n */\nexport function generateCliffPath(width: number, height: number): string {\n  const cx = width / 2;\n  const topY = height * 0.5;\n  const bottomY = height;\n  const amplitude = width * 0.03;\n\n  // A steep S-curve from the center downward\n  return [\n    `M${cx},${topY}`,\n    `C${cx + amplitude},${topY + (bottomY - topY) * 0.2}`,\n    `${cx - amplitude * 1.5},${topY + (bottomY - topY) * 0.55}`,\n    `${cx + amplitude * 0.5},${topY + (bottomY - topY) * 0.75}`,\n    `C${cx - amplitude},${topY + (bottomY - topY) * 0.85}`,\n    `${cx + amplitude * 0.3},${topY + (bottomY - topY) * 0.95}`,\n    `${cx},${bottomY}`,\n  ].join(' ');\n}\n\n/**\n * Generate an ellipse SVG path for the confusion/disorder region at the center.\n * @param cx - center x\n * @param cy - center y\n * @param rx - horizontal radius\n * @param ry - vertical radius\n * @returns SVG path d attribute string for an ellipse\n */\nexport function generateConfusionPath(cx: number, cy: number, rx: number, ry: number): string {\n  // Draw an ellipse using two arc commands\n  return [\n    `M${cx - rx},${cy}`,\n    `A${rx},${ry} 0 1,1 ${cx + rx},${cy}`,\n    `A${rx},${ry} 0 1,1 ${cx - rx},${cy}`,\n    'Z',\n  ].join(' ');\n}\n", "import type { Diagram } from '../../Diagram.js';\nimport type { DiagramRenderer, DrawDefinition, SVG } from '../../diagram-api/types.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport { log } from '../../logger.js';\nimport { getConfig as getConfigAPI } from '../../config.js';\nimport { getThemeVariables } from '../../themes/theme-default.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport type { CynefinDB, CynefinDomain, CynefinTransition, DomainName } from './types.js';\nimport {\n  generateFoldPath,\n  generateHorizontalBoundary,\n  generateCliffPath,\n  generateConfusionPath,\n  resolveSeed,\n} from './cynefinBoundaries.js';\n\ninterface DomainMeta {\n  model: string;\n  practice: string;\n}\n\nconst DOMAIN_META: Record<DomainName, DomainMeta> = {\n  complex: { model: 'Probe \\u2192 Sense \\u2192 Respond', practice: 'Emergent Practices' },\n  complicated: { model: 'Sense \\u2192 Analyse \\u2192 Respond', practice: 'Good Practices' },\n  clear: { model: 'Sense \\u2192 Categorise \\u2192 Respond', practice: 'Best Practices' },\n  chaotic: { model: 'Act \\u2192 Sense \\u2192 Respond', practice: 'Novel Practices' },\n  confusion: { model: '', practice: 'Disorder' },\n};\n\ninterface DomainLayout {\n  cx: number;\n  cy: number;\n  x: number;\n  y: number;\n  w: number;\n  h: number;\n}\n\nconst getDomainLayouts = (width: number, height: number): Record<DomainName, DomainLayout> => {\n  const hw = width / 2;\n  const hh = height / 2;\n  return {\n    complex: { cx: hw / 2, cy: hh / 2, x: 0, y: 0, w: hw, h: hh },\n    complicated: { cx: hw + hw / 2, cy: hh / 2, x: hw, y: 0, w: hw, h: hh },\n    chaotic: { cx: hw / 2, cy: hh + hh / 2, x: 0, y: hh, w: hw, h: hh },\n    clear: { cx: hw + hw / 2, cy: hh + hh / 2, x: hw, y: hh, w: hw, h: hh },\n    confusion: { cx: hw, cy: hh, x: hw * 0.7, y: hh * 0.7, w: hw * 0.6, h: hh * 0.6 },\n  };\n};\n\ninterface CynefinDomainColors {\n  complexBg: string;\n  complicatedBg: string;\n  chaoticBg: string;\n  clearBg: string;\n  confusionBg: string;\n}\n\n/** Resolve only the domain background colors from the cynefin theme block. */\nconst getCynefinDomainColors = (): CynefinDomainColors => {\n  const defaultThemeVariables = getThemeVariables();\n  const currentConfig = getConfigAPI();\n  const themeVariables = cleanAndMerge(defaultThemeVariables, currentConfig.themeVariables);\n  return themeVariables.cynefin as CynefinDomainColors;\n};\n\n/** Maximum items rendered inside the confusion ellipse before overflow badge is shown. */\nconst MAX_CONFUSION_ITEMS = 3;\n\nconst draw: DrawDefinition = (_text, id, _version, diagram: Diagram) => {\n  const db = diagram.db as CynefinDB;\n  const domains = db.getDomains();\n  const transitions = db.getTransitions();\n  const title = db.getDiagramTitle();\n  const accTitle = db.getAccTitle();\n  const accDescription = db.getAccDescription();\n  const config = db.getConfig();\n  const domainColors = getCynefinDomainColors();\n\n  log.debug('Rendering Cynefin diagram');\n\n  const width = config.width;\n  const height = config.height;\n  const padding = config.padding;\n  const showDomainDescriptions = config.showDomainDescriptions;\n  const boundaryAmplitude = config.boundaryAmplitude;\n  const totalWidth = width + padding * 2;\n  const totalHeight = height + padding * 2;\n\n  const domainBg: Record<DomainName, string> = {\n    complex: domainColors.complexBg,\n    complicated: domainColors.complicatedBg,\n    clear: domainColors.clearBg,\n    chaotic: domainColors.chaoticBg,\n    confusion: domainColors.confusionBg,\n  };\n\n  const svg: SVG = selectSvgElement(id);\n\n  configureSvgSize(svg, totalHeight, totalWidth, config.useMaxWidth ?? true);\n  svg.attr('viewBox', `0 0 ${totalWidth} ${totalHeight}`);\n\n  // Accessibility: use <title> element (W3C recommendation for SVG)\n  if (accTitle) {\n    svg.append('title').text(accTitle);\n  }\n  if (accDescription) {\n    svg.append('desc').text(accDescription);\n  }\n\n  const root = svg.append('g').attr('transform', `translate(${padding}, ${padding})`);\n\n  const layouts = getDomainLayouts(width, height);\n  const seed = resolveSeed(config.seed, id);\n\n  // 1. Domain background rectangles\n  const bgGroup = root.append('g').attr('class', 'cynefin-backgrounds');\n  const quadrantDomains: DomainName[] = ['complex', 'complicated', 'chaotic', 'clear'];\n  for (const domainName of quadrantDomains) {\n    const layout = layouts[domainName];\n    bgGroup\n      .append('rect')\n      .attr('class', 'cynefinDomain')\n      .attr('x', layout.x)\n      .attr('y', layout.y)\n      .attr('width', layout.w)\n      .attr('height', layout.h)\n      .attr('fill', domainBg[domainName])\n      .attr('fill-opacity', 0.4)\n      .attr('stroke', 'none');\n  }\n\n  // 2. Wavy boundaries \u2014 stroke handled by .cynefinBoundary CSS class\n  const boundaryGroup = root.append('g').attr('class', 'cynefin-boundaries');\n\n  boundaryGroup\n    .append('path')\n    .attr('class', 'cynefinBoundary')\n    .attr('d', generateFoldPath(width, height, seed, boundaryAmplitude))\n    .attr('fill', 'none');\n\n  boundaryGroup\n    .append('path')\n    .attr('class', 'cynefinBoundary')\n    .attr('d', generateHorizontalBoundary(width, height, seed + 100, boundaryAmplitude))\n    .attr('fill', 'none');\n\n  // 3. The cliff (thicker, between Clear and Chaotic) \u2014 stroke handled by .cynefinCliff CSS class\n  boundaryGroup\n    .append('path')\n    .attr('class', 'cynefinCliff')\n    .attr('d', generateCliffPath(width, height))\n    .attr('fill', 'none');\n\n  // 4. Confusion ellipse (center overlay) \u2014 stroke handled by .cynefinConfusion CSS class\n  // Using width*0.15 and height*0.15 gives enough room for up to ~3 item badges\n  const confusionRx = width * 0.15;\n  const confusionRy = height * 0.15;\n  root\n    .append('path')\n    .attr('class', 'cynefinConfusion')\n    .attr('d', generateConfusionPath(width / 2, height / 2, confusionRx, confusionRy))\n    .attr('fill', domainBg.confusion)\n    .attr('fill-opacity', 0.5);\n\n  // 5. Domain name labels \u2014 text styling handled by .cynefinDomainLabel CSS class\n  const labelGroup = root.append('g').attr('class', 'cynefin-labels');\n  for (const domainName of quadrantDomains) {\n    const layout = layouts[domainName];\n    labelGroup\n      .append('text')\n      .attr('class', 'cynefinDomainLabel')\n      .attr('x', layout.cx)\n      .attr('y', showDomainDescriptions ? layout.cy - 30 : layout.cy)\n      .attr('text-anchor', 'middle')\n      .attr('dominant-baseline', 'middle')\n      .text(domainName.charAt(0).toUpperCase() + domainName.slice(1));\n  }\n\n  // Confusion label\n  labelGroup\n    .append('text')\n    .attr('class', 'cynefinDomainLabel')\n    .attr('x', width / 2)\n    .attr('y', showDomainDescriptions ? height / 2 - 10 : height / 2)\n    .attr('text-anchor', 'middle')\n    .attr('dominant-baseline', 'middle')\n    .text('Confusion');\n\n  // 6. Domain description subtitles \u2014 text styling handled by .cynefinSubtitle CSS class\n  if (showDomainDescriptions) {\n    const subtitleGroup = root.append('g').attr('class', 'cynefin-subtitles');\n    for (const domainName of quadrantDomains) {\n      const layout = layouts[domainName];\n      const meta = DOMAIN_META[domainName];\n\n      subtitleGroup\n        .append('text')\n        .attr('class', 'cynefinSubtitle')\n        .attr('x', layout.cx)\n        .attr('y', layout.cy - 10)\n        .attr('text-anchor', 'middle')\n        .attr('dominant-baseline', 'middle')\n        .text(meta.model);\n\n      subtitleGroup\n        .append('text')\n        .attr('class', 'cynefinSubtitle')\n        .attr('x', layout.cx)\n        .attr('y', layout.cy + 5)\n        .attr('text-anchor', 'middle')\n        .attr('dominant-baseline', 'middle')\n        .text(meta.practice);\n    }\n\n    // Confusion subtitle\n    subtitleGroup\n      .append('text')\n      .attr('class', 'cynefinSubtitle')\n      .attr('x', width / 2)\n      .attr('y', height / 2 + 8)\n      .attr('text-anchor', 'middle')\n      .attr('dominant-baseline', 'middle')\n      .text(DOMAIN_META.confusion.practice);\n  }\n\n  // 7. Items as text badges within each domain\n  const itemGroup = root.append('g').attr('class', 'cynefin-items');\n  const itemHeight = 26;\n  const itemPaddingX = 10;\n\n  const allDomains: DomainName[] = ['complex', 'complicated', 'chaotic', 'clear', 'confusion'];\n  for (const domainName of allDomains) {\n    const domain: CynefinDomain | undefined = domains.get(domainName);\n    if (!domain || domain.items.length === 0) {\n      continue;\n    }\n\n    const layout = layouts[domainName];\n    const isConfusion = domainName === 'confusion';\n\n    // For confusion: cap items and center the block around the ellipse center.\n    // For quadrant domains: start below the label/subtitle area.\n    let itemsToRender = domain.items;\n    let overflowCount = 0;\n    if (isConfusion && domain.items.length > MAX_CONFUSION_ITEMS) {\n      overflowCount = domain.items.length - MAX_CONFUSION_ITEMS;\n      itemsToRender = domain.items.slice(0, MAX_CONFUSION_ITEMS);\n    }\n\n    let startY: number;\n    if (isConfusion) {\n      // Center the item block below the label within the ellipse\n      const labelOffset = showDomainDescriptions ? 22 : 14;\n      startY = layout.cy + labelOffset;\n    } else {\n      startY = layout.cy + (showDomainDescriptions ? 25 : 15);\n    }\n\n    // Render item badges using getBBox() for accurate width measurement\n    [...itemsToRender].forEach((item, idx) => {\n      const itemY = startY + idx * (itemHeight + 4);\n      const g = itemGroup.append('g');\n\n      // Append text first to measure actual rendered width\n      const textEl = g\n        .append('text')\n        .attr('class', 'cynefinItemText')\n        .attr('x', 0)\n        .attr('y', itemHeight / 2)\n        .attr('text-anchor', 'middle')\n        .attr('dominant-baseline', 'central')\n        .text(item.label);\n\n      // Measure rendered text width; fall back to character-count heuristic if unavailable\n      let measuredWidth = item.label.length * 7;\n      const textNode = textEl.node();\n      if (textNode && typeof textNode.getBBox === 'function') {\n        const bbox = textNode.getBBox();\n        if (bbox.width > 0) {\n          measuredWidth = bbox.width;\n        }\n      }\n\n      const badgeWidth = measuredWidth + itemPaddingX * 2;\n      const itemX = layout.cx - badgeWidth / 2;\n\n      g.attr('transform', `translate(${itemX}, ${itemY})`);\n\n      // Insert rect behind the text, sized to measured badge width\n      g.insert('rect', 'text')\n        .attr('class', 'cynefinItem')\n        .attr('x', 0)\n        .attr('y', 0)\n        .attr('width', badgeWidth)\n        .attr('height', itemHeight)\n        .attr('rx', 4)\n        .attr('ry', 4)\n        .attr('fill', domainBg[domainName])\n        .attr('fill-opacity', 0.95);\n\n      // Centre text within badge\n      textEl.attr('x', badgeWidth / 2).attr('y', itemHeight / 2);\n    });\n\n    // Overflow badge: \"+N more\" when confusion has more items than MAX_CONFUSION_ITEMS\n    if (overflowCount > 0) {\n      const overflowY = startY + itemsToRender.length * (itemHeight + 4);\n      const overflowLabel = `+${overflowCount} more`;\n      const g = itemGroup.append('g');\n\n      const textEl = g\n        .append('text')\n        .attr('class', 'cynefinItemText')\n        .attr('x', 0)\n        .attr('y', itemHeight / 2)\n        .attr('text-anchor', 'middle')\n        .attr('dominant-baseline', 'central')\n        .text(overflowLabel);\n\n      let measuredWidth = overflowLabel.length * 7;\n      const textNode = textEl.node();\n      if (textNode && typeof textNode.getBBox === 'function') {\n        const bbox = textNode.getBBox();\n        if (bbox.width > 0) {\n          measuredWidth = bbox.width;\n        }\n      }\n\n      const badgeWidth = measuredWidth + itemPaddingX * 2;\n      const itemX = layout.cx - badgeWidth / 2;\n\n      g.attr('transform', `translate(${itemX}, ${overflowY})`);\n\n      g.insert('rect', 'text')\n        .attr('class', 'cynefinItemOverflow')\n        .attr('x', 0)\n        .attr('y', 0)\n        .attr('width', badgeWidth)\n        .attr('height', itemHeight)\n        .attr('rx', 4)\n        .attr('ry', 4)\n        .attr('fill', domainBg[domainName])\n        .attr('fill-opacity', 0.6);\n\n      textEl.attr('x', badgeWidth / 2).attr('y', itemHeight / 2);\n    }\n  }\n\n  // 8. Transition arrows between domain centers\n  if (transitions.length > 0) {\n    const defs = svg.select('defs').empty() ? svg.append('defs') : svg.select('defs');\n    const markerId = `cynefin-arrow-${id}`;\n\n    defs\n      .append('marker')\n      .attr('id', markerId)\n      .attr('viewBox', '0 0 10 10')\n      .attr('refX', 9)\n      .attr('refY', 5)\n      .attr('markerWidth', 6)\n      .attr('markerHeight', 6)\n      .attr('orient', 'auto-start-reverse')\n      .append('path')\n      .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n      .attr('class', 'cynefinArrowHead');\n\n    const arrowGroup = root.append('g').attr('class', 'cynefin-arrows');\n\n    transitions.forEach((transition: CynefinTransition) => {\n      const fromLayout = layouts[transition.from];\n      const toLayout = layouts[transition.to];\n      if (!fromLayout || !toLayout) {\n        return;\n      }\n\n      // Self-loops are filtered at the DB level; guard here handles any edge case\n      if (transition.from === transition.to) {\n        log.warn(`Cynefin renderer: skipping self-loop on domain \"${transition.from}\"`);\n        return;\n      }\n\n      // All math in root-local (unpadded) coordinates to match the <g> transform.\n      const x1 = fromLayout.cx;\n      const y1 = fromLayout.cy;\n      const x2 = toLayout.cx;\n      const y2 = toLayout.cy;\n\n      // Quadratic bezier with perpendicular offset\n      const mx = (x1 + x2) / 2;\n      const my = (y1 + y2) / 2;\n      const dx = x2 - x1;\n      const dy = y2 - y1;\n      const len = Math.sqrt(dx * dx + dy * dy);\n      const offsetAmount = len * 0.15;\n      const nx = -dy / len;\n      const ny = dx / len;\n      const cpx = mx + nx * offsetAmount;\n      const cpy = my + ny * offsetAmount;\n\n      arrowGroup\n        .append('path')\n        .attr('class', 'cynefinArrowLine')\n        .attr('d', `M${x1},${y1} Q${cpx},${cpy} ${x2},${y2}`)\n        .attr('fill', 'none')\n        .attr('marker-end', `url(#${markerId})`);\n\n      // Optional label \u2014 text styling handled by .cynefinArrowLabel CSS class\n      if (transition.label) {\n        arrowGroup\n          .append('text')\n          .attr('class', 'cynefinArrowLabel')\n          .attr('x', cpx)\n          .attr('y', cpy - 6)\n          .attr('text-anchor', 'middle')\n          .attr('dominant-baseline', 'auto')\n          .text(transition.label);\n      }\n    });\n  }\n\n  // Title \u2014 text styling handled by .cynefinTitle CSS class\n  if (title) {\n    root\n      .append('text')\n      .attr('class', 'cynefinTitle')\n      .attr('x', width / 2)\n      .attr('y', -padding / 2)\n      .attr('text-anchor', 'middle')\n      .attr('dominant-baseline', 'middle')\n      .text(title);\n  }\n};\n\nexport const renderer: DiagramRenderer = { draw };\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport { getThemeVariables } from '../../themes/theme-default.js';\nimport { getConfig as getConfigAPI } from '../../config.js';\n\n/**\n * Resolve the cynefin-specific theme block from the current mermaid theme.\n * All presentation values (colors, font sizes, stroke widths) are sourced from\n * here rather than duplicated as inline SVG attributes in the renderer.\n */\nconst getCynefinTheme = () => {\n  const defaultThemeVariables = getThemeVariables();\n  const currentConfig = getConfigAPI();\n  const themeVariables = cleanAndMerge(defaultThemeVariables, currentConfig.themeVariables);\n  return themeVariables.cynefin as {\n    domainFontSize: number;\n    itemFontSize: number;\n    boundaryColor: string;\n    boundaryWidth: number;\n    cliffColor: string;\n    cliffWidth: number;\n    arrowColor: string;\n    arrowWidth: number;\n    textColor: string;\n    labelColor: string;\n  };\n};\n\nexport const styles: DiagramStylesProvider = () => {\n  const t = getCynefinTheme();\n  return `\n\t.cynefinDomain {\n\t\tstroke: none;\n\t}\n\t.cynefinDomainLabel {\n\t\tfont-size: ${t.domainFontSize}px;\n\t\tfont-weight: bold;\n\t\tfill: ${t.labelColor};\n\t}\n\t.cynefinSubtitle {\n\t\tfont-size: ${t.itemFontSize - 1}px;\n\t\tfill: ${t.textColor};\n\t\tfont-style: italic;\n\t}\n\t.cynefinItem {\n\t\tfill-opacity: 0.95;\n\t\tstroke: ${t.boundaryColor};\n\t\tstroke-width: 1;\n\t}\n\t.cynefinItemText {\n\t\tfont-size: ${t.itemFontSize}px;\n\t\tfill: ${t.textColor};\n\t}\n\t.cynefinItemOverflow {\n\t\tfill-opacity: 0.6;\n\t\tstroke: ${t.boundaryColor};\n\t\tstroke-width: 1;\n\t\tstroke-dasharray: 3 2;\n\t}\n\t.cynefinBoundary {\n\t\tstroke: ${t.boundaryColor};\n\t\tstroke-width: ${t.boundaryWidth};\n\t\tstroke-dasharray: 6 3;\n\t}\n\t.cynefinCliff {\n\t\tstroke: ${t.cliffColor};\n\t\tstroke-width: ${t.cliffWidth};\n\t}\n\t.cynefinConfusion {\n\t\tstroke: ${t.boundaryColor};\n\t\tstroke-width: 1.5;\n\t\tstroke-dasharray: 4 2;\n\t}\n\t.cynefinArrowLine {\n\t\tstroke: ${t.arrowColor};\n\t\tstroke-width: ${t.arrowWidth};\n\t\tfill: none;\n\t}\n\t.cynefinArrowHead {\n\t\tfill: ${t.arrowColor};\n\t\tstroke: none;\n\t}\n\t.cynefinArrowLabel {\n\t\tfont-size: ${t.itemFontSize - 1}px;\n\t\tfill: ${t.textColor};\n\t}\n\t.cynefinTitle {\n\t\tfont-size: ${t.domainFontSize + 2}px;\n\t\tfont-weight: bold;\n\t\tfill: ${t.labelColor};\n\t}\n\t`;\n};\n\nexport default styles;\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\nimport { parser } from './cynefinParser.js';\nimport { db } from './cynefinDb.js';\nimport { renderer } from './cynefinRenderer.js';\nimport styles from './styles.js';\n\nexport const diagram: DiagramDefinition = {\n  parser,\n  db,\n  renderer,\n  styles,\n};\n"],
  "mappings": "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",
  "names": ["createDefaultData", "__name", "data", "getDomains", "getTransitions", "setDomains", "blocks", "block", "domainName", "items", "item", "setTransitions", "transitions", "t", "log", "getConfig", "cleanAndMerge", "defaultConfig_default", "clear", "db", "setAccTitle", "getAccTitle", "setDiagramTitle", "getDiagramTitle", "getAccDescription", "setAccDescription", "populate", "__name", "ast", "populateCommonDb", "db", "parser", "input", "parse", "log", "seededRandom", "seed", "t", "__name", "hashString", "str", "hash", "i", "ch", "resolveSeed", "configuredSeed", "id", "generateFoldPath", "width", "height", "amplitudeOverride", "cx", "amplitude", "segments", "segHeight", "points", "jitter", "d", "p0", "p1", "midY", "dir", "offset", "cp1x", "cp1y", "cp2x", "generateHorizontalBoundary", "cy", "segWidth", "midX", "cp2y", "generateCliffPath", "topY", "bottomY", "generateConfusionPath", "rx", "ry", "DOMAIN_META", "getDomainLayouts", "__name", "width", "height", "hw", "hh", "getCynefinDomainColors", "defaultThemeVariables", "getThemeVariables", "currentConfig", "getConfig", "cleanAndMerge", "MAX_CONFUSION_ITEMS", "draw", "_text", "id", "_version", "diagram", "db", "domains", "transitions", "title", "accTitle", "accDescription", "config", "domainColors", "log", "padding", "showDomainDescriptions", "boundaryAmplitude", "totalWidth", "totalHeight", "domainBg", "svg", "selectSvgElement", "configureSvgSize", "root", "layouts", "seed", "resolveSeed", "bgGroup", "quadrantDomains", "domainName", "layout", "boundaryGroup", "generateFoldPath", "generateHorizontalBoundary", "generateCliffPath", "confusionRx", "confusionRy", "generateConfusionPath", "labelGroup", "subtitleGroup", "meta", "itemGroup", "itemHeight", "itemPaddingX", "allDomains", "domain", "isConfusion", "itemsToRender", "overflowCount", "startY", "labelOffset", "item", "idx", "itemY", "g", "textEl", "measuredWidth", "textNode", "bbox", "badgeWidth", "itemX", "overflowY", "overflowLabel", "defs", "markerId", "arrowGroup", "transition", "fromLayout", "toLayout", "x1", "y1", "x2", "y2", "mx", "my", "dx", "dy", "len", "offsetAmount", "nx", "ny", "cpx", "cpy", "renderer", "getCynefinTheme", "__name", "defaultThemeVariables", "getThemeVariables", "currentConfig", "getConfig", "cleanAndMerge", "styles", "styles_default", "diagram", "parser", "db", "renderer", "styles_default"]
}
