{"version":3,"file":"diagram-S2PKOQOG-aoUrTphf.cjs","sources":["../node_modules/mermaid/dist/chunks/mermaid.core/diagram-S2PKOQOG.mjs"],"sourcesContent":["import {\n  selectSvgElement\n} from \"./chunk-EXTU4WIE.mjs\";\nimport {\n  populateCommonDb\n} from \"./chunk-4BX2VUAB.mjs\";\nimport {\n  cleanAndMerge\n} from \"./chunk-S3R3BYOJ.mjs\";\nimport {\n  clear,\n  configureSvgSize,\n  defaultConfig_default,\n  getAccDescription,\n  getAccTitle,\n  getConfig,\n  getDiagramTitle,\n  setAccDescription,\n  setAccTitle,\n  setDiagramTitle\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n  __name,\n  log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/packet/db.ts\nvar DEFAULT_PACKET_CONFIG = defaultConfig_default.packet;\nvar PacketDB = class {\n  constructor() {\n    this.packet = [];\n    this.setAccTitle = setAccTitle;\n    this.getAccTitle = getAccTitle;\n    this.setDiagramTitle = setDiagramTitle;\n    this.getDiagramTitle = getDiagramTitle;\n    this.getAccDescription = getAccDescription;\n    this.setAccDescription = setAccDescription;\n  }\n  static {\n    __name(this, \"PacketDB\");\n  }\n  getConfig() {\n    const config = cleanAndMerge({\n      ...DEFAULT_PACKET_CONFIG,\n      ...getConfig().packet\n    });\n    if (config.showBits) {\n      config.paddingY += 10;\n    }\n    return config;\n  }\n  getPacket() {\n    return this.packet;\n  }\n  pushWord(word) {\n    if (word.length > 0) {\n      this.packet.push(word);\n    }\n  }\n  clear() {\n    clear();\n    this.packet = [];\n  }\n};\n\n// src/diagrams/packet/parser.ts\nimport { parse } from \"@mermaid-js/parser\";\nvar maxPacketSize = 1e4;\nvar populate = /* @__PURE__ */ __name((ast, db) => {\n  populateCommonDb(ast, db);\n  let lastBit = -1;\n  let word = [];\n  let row = 1;\n  const { bitsPerRow } = db.getConfig();\n  for (let { start, end, bits, label } of ast.blocks) {\n    if (start !== void 0 && end !== void 0 && end < start) {\n      throw new Error(`Packet block ${start} - ${end} is invalid. End must be greater than start.`);\n    }\n    start ??= lastBit + 1;\n    if (start !== lastBit + 1) {\n      throw new Error(\n        `Packet block ${start} - ${end ?? start} is not contiguous. It should start from ${lastBit + 1}.`\n      );\n    }\n    if (bits === 0) {\n      throw new Error(`Packet block ${start} is invalid. Cannot have a zero bit field.`);\n    }\n    end ??= start + (bits ?? 1) - 1;\n    bits ??= end - start + 1;\n    lastBit = end;\n    log.debug(`Packet block ${start} - ${lastBit} with label ${label}`);\n    while (word.length <= bitsPerRow + 1 && db.getPacket().length < maxPacketSize) {\n      const [block, nextBlock] = getNextFittingBlock({ start, end, bits, label }, row, bitsPerRow);\n      word.push(block);\n      if (block.end + 1 === row * bitsPerRow) {\n        db.pushWord(word);\n        word = [];\n        row++;\n      }\n      if (!nextBlock) {\n        break;\n      }\n      ({ start, end, bits, label } = nextBlock);\n    }\n  }\n  db.pushWord(word);\n}, \"populate\");\nvar getNextFittingBlock = /* @__PURE__ */ __name((block, row, bitsPerRow) => {\n  if (block.start === void 0) {\n    throw new Error(\"start should have been set during first phase\");\n  }\n  if (block.end === void 0) {\n    throw new Error(\"end should have been set during first phase\");\n  }\n  if (block.start > block.end) {\n    throw new Error(`Block start ${block.start} is greater than block end ${block.end}.`);\n  }\n  if (block.end + 1 <= row * bitsPerRow) {\n    return [block, void 0];\n  }\n  const rowEnd = row * bitsPerRow - 1;\n  const rowStart = row * bitsPerRow;\n  return [\n    {\n      start: block.start,\n      end: rowEnd,\n      label: block.label,\n      bits: rowEnd - block.start\n    },\n    {\n      start: rowStart,\n      end: block.end,\n      label: block.label,\n      bits: block.end - rowStart\n    }\n  ];\n}, \"getNextFittingBlock\");\nvar parser = {\n  // @ts-expect-error - PacketDB is not assignable to DiagramDB\n  parser: { yy: void 0 },\n  parse: /* @__PURE__ */ __name(async (input) => {\n    const ast = await parse(\"packet\", input);\n    const db = parser.parser?.yy;\n    if (!(db instanceof PacketDB)) {\n      throw new Error(\n        \"parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.\"\n      );\n    }\n    log.debug(ast);\n    populate(ast, db);\n  }, \"parse\")\n};\n\n// src/diagrams/packet/renderer.ts\nvar draw = /* @__PURE__ */ __name((_text, id, _version, diagram2) => {\n  const db = diagram2.db;\n  const config = db.getConfig();\n  const { rowHeight, paddingY, bitWidth, bitsPerRow } = config;\n  const words = db.getPacket();\n  const title = db.getDiagramTitle();\n  const totalRowHeight = rowHeight + paddingY;\n  const svgHeight = totalRowHeight * (words.length + 1) - (title ? 0 : rowHeight);\n  const svgWidth = bitWidth * bitsPerRow + 2;\n  const svg = selectSvgElement(id);\n  svg.attr(\"viewbox\", `0 0 ${svgWidth} ${svgHeight}`);\n  configureSvgSize(svg, svgHeight, svgWidth, config.useMaxWidth);\n  for (const [word, packet] of words.entries()) {\n    drawWord(svg, packet, word, config);\n  }\n  svg.append(\"text\").text(title).attr(\"x\", svgWidth / 2).attr(\"y\", svgHeight - totalRowHeight / 2).attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").attr(\"class\", \"packetTitle\");\n}, \"draw\");\nvar drawWord = /* @__PURE__ */ __name((svg, word, rowNumber, { rowHeight, paddingX, paddingY, bitWidth, bitsPerRow, showBits }) => {\n  const group = svg.append(\"g\");\n  const wordY = rowNumber * (rowHeight + paddingY) + paddingY;\n  for (const block of word) {\n    const blockX = block.start % bitsPerRow * bitWidth + 1;\n    const width = (block.end - block.start + 1) * bitWidth - paddingX;\n    group.append(\"rect\").attr(\"x\", blockX).attr(\"y\", wordY).attr(\"width\", width).attr(\"height\", rowHeight).attr(\"class\", \"packetBlock\");\n    group.append(\"text\").attr(\"x\", blockX + width / 2).attr(\"y\", wordY + rowHeight / 2).attr(\"class\", \"packetLabel\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").text(block.label);\n    if (!showBits) {\n      continue;\n    }\n    const isSingleBlock = block.end === block.start;\n    const bitNumberY = wordY - 2;\n    group.append(\"text\").attr(\"x\", blockX + (isSingleBlock ? width / 2 : 0)).attr(\"y\", bitNumberY).attr(\"class\", \"packetByte start\").attr(\"dominant-baseline\", \"auto\").attr(\"text-anchor\", isSingleBlock ? \"middle\" : \"start\").text(block.start);\n    if (!isSingleBlock) {\n      group.append(\"text\").attr(\"x\", blockX + width).attr(\"y\", bitNumberY).attr(\"class\", \"packetByte end\").attr(\"dominant-baseline\", \"auto\").attr(\"text-anchor\", \"end\").text(block.end);\n    }\n  }\n}, \"drawWord\");\nvar renderer = { draw };\n\n// src/diagrams/packet/styles.ts\nvar defaultPacketStyleOptions = {\n  byteFontSize: \"10px\",\n  startByteColor: \"black\",\n  endByteColor: \"black\",\n  labelColor: \"black\",\n  labelFontSize: \"12px\",\n  titleColor: \"black\",\n  titleFontSize: \"14px\",\n  blockStrokeColor: \"black\",\n  blockStrokeWidth: \"1\",\n  blockFillColor: \"#efefef\"\n};\nvar styles = /* @__PURE__ */ __name(({ packet } = {}) => {\n  const options = cleanAndMerge(defaultPacketStyleOptions, packet);\n  return `\n\t.packetByte {\n\t\tfont-size: ${options.byteFontSize};\n\t}\n\t.packetByte.start {\n\t\tfill: ${options.startByteColor};\n\t}\n\t.packetByte.end {\n\t\tfill: ${options.endByteColor};\n\t}\n\t.packetLabel {\n\t\tfill: ${options.labelColor};\n\t\tfont-size: ${options.labelFontSize};\n\t}\n\t.packetTitle {\n\t\tfill: ${options.titleColor};\n\t\tfont-size: ${options.titleFontSize};\n\t}\n\t.packetBlock {\n\t\tstroke: ${options.blockStrokeColor};\n\t\tstroke-width: ${options.blockStrokeWidth};\n\t\tfill: ${options.blockFillColor};\n\t}\n\t`;\n}, \"styles\");\n\n// src/diagrams/packet/diagram.ts\nvar diagram = {\n  parser,\n  get db() {\n    return new PacketDB();\n  },\n  renderer,\n  styles\n};\nexport {\n  diagram\n};\n"],"names":["DEFAULT_PACKET_CONFIG","defaultConfig_default","PacketDB","_a","setAccTitle","getAccTitle","setDiagramTitle","getDiagramTitle","getAccDescription","setAccDescription","config","cleanAndMerge","getConfig","word","clear","__name","maxPacketSize","populate","ast","db","populateCommonDb","lastBit","row","bitsPerRow","start","end","bits","label","log","block","nextBlock","getNextFittingBlock","rowEnd","rowStart","parser","input","parse","draw","_text","id","_version","diagram2","rowHeight","paddingY","bitWidth","words","title","totalRowHeight","svgHeight","svgWidth","svg","selectSvgElement","configureSvgSize","packet","drawWord","rowNumber","paddingX","showBits","group","wordY","blockX","width","isSingleBlock","bitNumberY","renderer","defaultPacketStyleOptions","styles","options","diagram"],"mappings":"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","x_google_ignoreList":[0]}