{
  "version": 3,
  "sources": ["../../../src/internals.ts", "../../../src/rendering-util/render.ts"],
  "sourcesContent": ["import { getConfig } from './config.js';\nimport common from './diagrams/common/common.js';\nimport { log } from './logger.js';\nimport { insertCluster } from './rendering-util/rendering-elements/clusters.js';\nimport {\n  insertEdge,\n  insertEdgeLabel,\n  positionEdgeLabel,\n} from './rendering-util/rendering-elements/edges.js';\nimport insertMarkers from './rendering-util/rendering-elements/markers.js';\nimport { insertNode } from './rendering-util/rendering-elements/nodes.js';\nimport { labelHelper } from './rendering-util/rendering-elements/shapes/util.js';\nimport { interpolateToCurve } from './utils.js';\n\n/**\n * Internal helpers for mermaid\n * @deprecated - This should not be used by external packages, as the definitions will change without notice.\n */\nexport const internalHelpers = {\n  common,\n  getConfig,\n  insertCluster,\n  insertEdge,\n  insertEdgeLabel,\n  insertMarkers,\n  insertNode,\n  interpolateToCurve,\n  labelHelper,\n  log,\n  positionEdgeLabel,\n};\n\nexport type InternalHelpers = typeof internalHelpers;\n", "import type { SVG } from '../diagram-api/types.js';\nimport type { InternalHelpers } from '../internals.js';\nimport { internalHelpers } from '../internals.js';\nimport { log } from '../logger.js';\nimport type { LayoutData } from './types.js';\n\n// console.log('MUST be removed, this only for keeping dev server working');\n// import tmp from './layout-algorithms/dagre/index.js';\n\nexport interface RenderOptions {\n  algorithm?: string;\n}\n\nexport interface LayoutAlgorithm {\n  render(\n    layoutData: LayoutData,\n    svg: SVG,\n    helpers: InternalHelpers,\n    options?: RenderOptions\n  ): Promise<void>;\n}\n\nexport type LayoutLoader = () => Promise<LayoutAlgorithm>;\nexport interface LayoutLoaderDefinition {\n  name: string;\n  loader: LayoutLoader;\n  algorithm?: string;\n}\n\nconst layoutAlgorithms: Record<string, LayoutLoaderDefinition> = {};\n\nexport const registerLayoutLoaders = (loaders: LayoutLoaderDefinition[]) => {\n  for (const loader of loaders) {\n    layoutAlgorithms[loader.name] = loader;\n  }\n};\n\n// TODO: Should we load dagre without lazy loading?\nconst registerDefaultLayoutLoaders = () => {\n  registerLayoutLoaders([\n    {\n      name: 'dagre',\n      loader: async () => await import('./layout-algorithms/dagre/index.js'),\n    },\n    ...(injected.includeLargeFeatures\n      ? [\n          {\n            name: 'cose-bilkent',\n            loader: async () => await import('./layout-algorithms/cose-bilkent/index.js'),\n          },\n        ]\n      : []),\n  ]);\n};\n\nregisterDefaultLayoutLoaders();\n\nexport const render = async (data4Layout: LayoutData, svg: SVG) => {\n  if (!(data4Layout.layoutAlgorithm in layoutAlgorithms)) {\n    throw new Error(`Unknown layout algorithm: ${data4Layout.layoutAlgorithm}`);\n  }\n\n  // Prefix all node domIds with the diagram's SVG element ID to ensure uniqueness\n  // across multiple diagrams on the same page.\n  if (data4Layout.diagramId) {\n    for (const node of data4Layout.nodes) {\n      const originalDomId = node.domId || node.id;\n      node.domId = `${data4Layout.diagramId}-${originalDomId}`;\n    }\n  }\n\n  const layoutDefinition = layoutAlgorithms[data4Layout.layoutAlgorithm];\n  const layoutRenderer = await layoutDefinition.loader();\n\n  const { theme, themeVariables } = data4Layout.config;\n  const { useGradient, gradientStart, gradientStop } = themeVariables;\n\n  const svgId = svg.attr('id');\n\n  svg\n    .append('defs')\n    .append('filter')\n    .attr('id', `${svgId}-drop-shadow`)\n    .attr('height', '130%')\n    .attr('width', '130%')\n    .append('feDropShadow')\n    .attr('dx', '4')\n    .attr('dy', '4')\n    .attr('stdDeviation', 0)\n    .attr('flood-opacity', '0.06')\n    .attr('flood-color', `${theme?.includes('dark') ? '#FFFFFF' : '#000000'}`);\n\n  svg\n    .append('defs')\n    .append('filter')\n    .attr('id', `${svgId}-drop-shadow-small`)\n    .attr('height', '150%')\n    .attr('width', '150%')\n    .append('feDropShadow')\n    .attr('dx', '2')\n    .attr('dy', '2')\n    .attr('stdDeviation', 0)\n    .attr('flood-opacity', '0.06')\n    .attr('flood-color', `${theme?.includes('dark') ? '#FFFFFF' : '#000000'}`);\n\n  if (useGradient) {\n    const gradient = svg\n      .append('linearGradient')\n      .attr('id', svg.attr('id') + '-gradient')\n      .attr('gradientUnits', 'objectBoundingBox')\n      .attr('x1', '0%')\n      .attr('y1', '0%')\n      .attr('x2', '100%')\n      .attr('y2', '0%');\n\n    gradient\n      .append('svg:stop')\n      .attr('offset', '0%')\n      .attr('stop-color', gradientStart)\n      .attr('stop-opacity', 1);\n\n    gradient\n      .append('svg:stop')\n      .attr('offset', '100%')\n      .attr('stop-color', gradientStop)\n      .attr('stop-opacity', 1);\n  }\n\n  return layoutRenderer.render(data4Layout, svg, internalHelpers, {\n    algorithm: layoutDefinition.algorithm,\n  });\n};\n\n/**\n * Get the registered layout algorithm. If the algorithm is not registered, use the fallback algorithm.\n */\nexport const getRegisteredLayoutAlgorithm = (algorithm = '', { fallback = 'dagre' } = {}) => {\n  if (algorithm in layoutAlgorithms) {\n    return algorithm;\n  }\n  if (fallback in layoutAlgorithms) {\n    log.warn(`Layout algorithm ${algorithm} is not registered. Using ${fallback} as fallback.`);\n    return fallback;\n  }\n  throw new Error(`Both layout algorithms ${algorithm} and ${fallback} are not registered.`);\n};\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAkBO,IAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACDA,IAAM,mBAA2D,CAAC;AAE3D,IAAM,wBAAwB,wBAAC,YAAsC;AAC1E,aAAW,UAAU,SAAS;AAC5B,qBAAiB,OAAO,IAAI,IAAI;AAAA,EAClC;AACF,GAJqC;AAOrC,IAAM,+BAA+B,6BAAM;AACzC,wBAAsB;AAAA,IACpB;AAAA,MACE,MAAM;AAAA,MACN,QAAQ,mCAAY,MAAM,OAAO,sBAAoC,GAA7D;AAAA,IACV;AAAA,IACA,GAAI,OACA;AAAA,MACE;AAAA,QACE,MAAM;AAAA,QACN,QAAQ,mCAAY,MAAM,OAAO,6BAA2C,GAApE;AAAA,MACV;AAAA,IACF,IACA,CAAC;AAAA,EACP,CAAC;AACH,GAfqC;AAiBrC,6BAA6B;AAEtB,IAAM,SAAS,8BAAO,aAAyB,QAAa;AACjE,MAAI,EAAE,YAAY,mBAAmB,mBAAmB;AACtD,UAAM,IAAI,MAAM,6BAA6B,YAAY,eAAe,EAAE;AAAA,EAC5E;AAIA,MAAI,YAAY,WAAW;AACzB,eAAW,QAAQ,YAAY,OAAO;AACpC,YAAM,gBAAgB,KAAK,SAAS,KAAK;AACzC,WAAK,QAAQ,GAAG,YAAY,SAAS,IAAI,aAAa;AAAA,IACxD;AAAA,EACF;AAEA,QAAM,mBAAmB,iBAAiB,YAAY,eAAe;AACrE,QAAM,iBAAiB,MAAM,iBAAiB,OAAO;AAErD,QAAM,EAAE,OAAO,eAAe,IAAI,YAAY;AAC9C,QAAM,EAAE,aAAa,eAAe,aAAa,IAAI;AAErD,QAAM,QAAQ,IAAI,KAAK,IAAI;AAE3B,MACG,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,MAAM,GAAG,KAAK,cAAc,EACjC,KAAK,UAAU,MAAM,EACrB,KAAK,SAAS,MAAM,EACpB,OAAO,cAAc,EACrB,KAAK,MAAM,GAAG,EACd,KAAK,MAAM,GAAG,EACd,KAAK,gBAAgB,CAAC,EACtB,KAAK,iBAAiB,MAAM,EAC5B,KAAK,eAAe,GAAG,OAAO,SAAS,MAAM,IAAI,YAAY,SAAS,EAAE;AAE3E,MACG,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,MAAM,GAAG,KAAK,oBAAoB,EACvC,KAAK,UAAU,MAAM,EACrB,KAAK,SAAS,MAAM,EACpB,OAAO,cAAc,EACrB,KAAK,MAAM,GAAG,EACd,KAAK,MAAM,GAAG,EACd,KAAK,gBAAgB,CAAC,EACtB,KAAK,iBAAiB,MAAM,EAC5B,KAAK,eAAe,GAAG,OAAO,SAAS,MAAM,IAAI,YAAY,SAAS,EAAE;AAE3E,MAAI,aAAa;AACf,UAAM,WAAW,IACd,OAAO,gBAAgB,EACvB,KAAK,MAAM,IAAI,KAAK,IAAI,IAAI,WAAW,EACvC,KAAK,iBAAiB,mBAAmB,EACzC,KAAK,MAAM,IAAI,EACf,KAAK,MAAM,IAAI,EACf,KAAK,MAAM,MAAM,EACjB,KAAK,MAAM,IAAI;AAElB,aACG,OAAO,UAAU,EACjB,KAAK,UAAU,IAAI,EACnB,KAAK,cAAc,aAAa,EAChC,KAAK,gBAAgB,CAAC;AAEzB,aACG,OAAO,UAAU,EACjB,KAAK,UAAU,MAAM,EACrB,KAAK,cAAc,YAAY,EAC/B,KAAK,gBAAgB,CAAC;AAAA,EAC3B;AAEA,SAAO,eAAe,OAAO,aAAa,KAAK,iBAAiB;AAAA,IAC9D,WAAW,iBAAiB;AAAA,EAC9B,CAAC;AACH,GA1EsB;AA+Ef,IAAM,+BAA+B,wBAAC,YAAY,IAAI,EAAE,WAAW,QAAQ,IAAI,CAAC,MAAM;AAC3F,MAAI,aAAa,kBAAkB;AACjC,WAAO;AAAA,EACT;AACA,MAAI,YAAY,kBAAkB;AAChC,QAAI,KAAK,oBAAoB,SAAS,6BAA6B,QAAQ,eAAe;AAC1F,WAAO;AAAA,EACT;AACA,QAAM,IAAI,MAAM,0BAA0B,SAAS,QAAQ,QAAQ,sBAAsB;AAC3F,GAT4C;",
  "names": []
}
