{
  "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": "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",
  "names": ["internalHelpers", "common_default", "getConfig", "insertCluster", "insertEdge", "insertEdgeLabel", "markers_default", "insertNode", "interpolateToCurve", "labelHelper", "log", "positionEdgeLabel", "layoutAlgorithms", "registerLayoutLoaders", "__name", "loaders", "loader", "registerDefaultLayoutLoaders", "render", "data4Layout", "svg", "node", "originalDomId", "layoutDefinition", "layoutRenderer", "theme", "themeVariables", "useGradient", "gradientStart", "gradientStop", "svgId", "gradient", "internalHelpers", "getRegisteredLayoutAlgorithm", "algorithm", "fallback", "log"]
}
