@zettelgeist/cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +64 -0
- package/dist/bin.js +2211 -0
- package/dist/bin.js.map +7 -0
- package/dist/templates/export.html +27 -0
- package/dist/templates/skill/SKILL.md +220 -0
- package/dist/viewer-bundle/architecture-YZFGNWBL-W2K3EQOM.js +14 -0
- package/dist/viewer-bundle/architecture-YZFGNWBL-W2K3EQOM.js.map +7 -0
- package/dist/viewer-bundle/architectureDiagram-Q4EWVU46-LCGRUEWT.js +8884 -0
- package/dist/viewer-bundle/architectureDiagram-Q4EWVU46-LCGRUEWT.js.map +7 -0
- package/dist/viewer-bundle/base.css +248 -0
- package/dist/viewer-bundle/blockDiagram-DXYQGD6D-KAM7BOAP.js +3777 -0
- package/dist/viewer-bundle/blockDiagram-DXYQGD6D-KAM7BOAP.js.map +7 -0
- package/dist/viewer-bundle/board.css +370 -0
- package/dist/viewer-bundle/c4Diagram-AHTNJAMY-C3FIQYXA.js +2596 -0
- package/dist/viewer-bundle/c4Diagram-AHTNJAMY-C3FIQYXA.js.map +7 -0
- package/dist/viewer-bundle/chunk-2QXGXAO5.js +68 -0
- package/dist/viewer-bundle/chunk-2QXGXAO5.js.map +7 -0
- package/dist/viewer-bundle/chunk-5PZT7VUU.js +67 -0
- package/dist/viewer-bundle/chunk-5PZT7VUU.js.map +7 -0
- package/dist/viewer-bundle/chunk-5YJCJF2C.js +112 -0
- package/dist/viewer-bundle/chunk-5YJCJF2C.js.map +7 -0
- package/dist/viewer-bundle/chunk-6LYV7PBV.js +1011 -0
- package/dist/viewer-bundle/chunk-6LYV7PBV.js.map +7 -0
- package/dist/viewer-bundle/chunk-6VW7D5WX.js +48 -0
- package/dist/viewer-bundle/chunk-6VW7D5WX.js.map +7 -0
- package/dist/viewer-bundle/chunk-76C5OSD4.js +2048 -0
- package/dist/viewer-bundle/chunk-76C5OSD4.js.map +7 -0
- package/dist/viewer-bundle/chunk-7NZMPQDX.js +6957 -0
- package/dist/viewer-bundle/chunk-7NZMPQDX.js.map +7 -0
- package/dist/viewer-bundle/chunk-A634GTZN.js +122 -0
- package/dist/viewer-bundle/chunk-A634GTZN.js.map +7 -0
- package/dist/viewer-bundle/chunk-AJQJUKMU.js +133 -0
- package/dist/viewer-bundle/chunk-AJQJUKMU.js.map +7 -0
- package/dist/viewer-bundle/chunk-BM2KPNFW.js +5556 -0
- package/dist/viewer-bundle/chunk-BM2KPNFW.js.map +7 -0
- package/dist/viewer-bundle/chunk-CIDUOCCG.js +25 -0
- package/dist/viewer-bundle/chunk-CIDUOCCG.js.map +7 -0
- package/dist/viewer-bundle/chunk-CZHJHAOR.js +6397 -0
- package/dist/viewer-bundle/chunk-CZHJHAOR.js.map +7 -0
- package/dist/viewer-bundle/chunk-D5RLIWY4.js +125 -0
- package/dist/viewer-bundle/chunk-D5RLIWY4.js.map +7 -0
- package/dist/viewer-bundle/chunk-DI52DQAC.js +44 -0
- package/dist/viewer-bundle/chunk-DI52DQAC.js.map +7 -0
- package/dist/viewer-bundle/chunk-EXJQLTIV.js +51 -0
- package/dist/viewer-bundle/chunk-EXJQLTIV.js.map +7 -0
- package/dist/viewer-bundle/chunk-G3PPZWPW.js +96 -0
- package/dist/viewer-bundle/chunk-G3PPZWPW.js.map +7 -0
- package/dist/viewer-bundle/chunk-GTW4IDD4.js +30297 -0
- package/dist/viewer-bundle/chunk-GTW4IDD4.js.map +7 -0
- package/dist/viewer-bundle/chunk-GVE7OA3Z.js +59 -0
- package/dist/viewer-bundle/chunk-GVE7OA3Z.js.map +7 -0
- package/dist/viewer-bundle/chunk-JBUVKVPY.js +2042 -0
- package/dist/viewer-bundle/chunk-JBUVKVPY.js.map +7 -0
- package/dist/viewer-bundle/chunk-JQLVOAQB.js +20 -0
- package/dist/viewer-bundle/chunk-JQLVOAQB.js.map +7 -0
- package/dist/viewer-bundle/chunk-LQMQSYLO.js +101 -0
- package/dist/viewer-bundle/chunk-LQMQSYLO.js.map +7 -0
- package/dist/viewer-bundle/chunk-MBFAQ3IK.js +34 -0
- package/dist/viewer-bundle/chunk-MBFAQ3IK.js.map +7 -0
- package/dist/viewer-bundle/chunk-N7G7IIKG.js +25 -0
- package/dist/viewer-bundle/chunk-N7G7IIKG.js.map +7 -0
- package/dist/viewer-bundle/chunk-NW4YG3NS.js +171 -0
- package/dist/viewer-bundle/chunk-NW4YG3NS.js.map +7 -0
- package/dist/viewer-bundle/chunk-ODEP5TKB.js +61 -0
- package/dist/viewer-bundle/chunk-ODEP5TKB.js.map +7 -0
- package/dist/viewer-bundle/chunk-OGKINV23.js +1050 -0
- package/dist/viewer-bundle/chunk-OGKINV23.js.map +7 -0
- package/dist/viewer-bundle/chunk-OGMSNDVH.js +1994 -0
- package/dist/viewer-bundle/chunk-OGMSNDVH.js.map +7 -0
- package/dist/viewer-bundle/chunk-QJVSDNAW.js +25 -0
- package/dist/viewer-bundle/chunk-QJVSDNAW.js.map +7 -0
- package/dist/viewer-bundle/chunk-RBTT26R4.js +2721 -0
- package/dist/viewer-bundle/chunk-RBTT26R4.js.map +7 -0
- package/dist/viewer-bundle/chunk-RQIPIIE2.js +48 -0
- package/dist/viewer-bundle/chunk-RQIPIIE2.js.map +7 -0
- package/dist/viewer-bundle/chunk-SRTYTXTX.js +22 -0
- package/dist/viewer-bundle/chunk-SRTYTXTX.js.map +7 -0
- package/dist/viewer-bundle/chunk-TRL7YIZG.js +1663 -0
- package/dist/viewer-bundle/chunk-TRL7YIZG.js.map +7 -0
- package/dist/viewer-bundle/chunk-U5T7X4BV.js +172 -0
- package/dist/viewer-bundle/chunk-U5T7X4BV.js.map +7 -0
- package/dist/viewer-bundle/chunk-UCAW6C6C.js +48 -0
- package/dist/viewer-bundle/chunk-UCAW6C6C.js.map +7 -0
- package/dist/viewer-bundle/chunk-UEAG4BJQ.js +93 -0
- package/dist/viewer-bundle/chunk-UEAG4BJQ.js.map +7 -0
- package/dist/viewer-bundle/chunk-UVRE3R6A.js +1039 -0
- package/dist/viewer-bundle/chunk-UVRE3R6A.js.map +7 -0
- package/dist/viewer-bundle/chunk-VODO7SV4.js +25029 -0
- package/dist/viewer-bundle/chunk-VODO7SV4.js.map +7 -0
- package/dist/viewer-bundle/chunk-YEU62MVS.js +682 -0
- package/dist/viewer-bundle/chunk-YEU62MVS.js.map +7 -0
- package/dist/viewer-bundle/chunk-YFQT7PPW.js +987 -0
- package/dist/viewer-bundle/chunk-YFQT7PPW.js.map +7 -0
- package/dist/viewer-bundle/chunk-Z4G7FG27.js +48 -0
- package/dist/viewer-bundle/chunk-Z4G7FG27.js.map +7 -0
- package/dist/viewer-bundle/chunk-ZW4Y7DIF.js +2044 -0
- package/dist/viewer-bundle/chunk-ZW4Y7DIF.js.map +7 -0
- package/dist/viewer-bundle/classDiagram-6PBFFD2Q-7VKYXLUX.js +46 -0
- package/dist/viewer-bundle/classDiagram-6PBFFD2Q-7VKYXLUX.js.map +7 -0
- package/dist/viewer-bundle/classDiagram-v2-HSJHXN6E-ACCNN7EN.js +46 -0
- package/dist/viewer-bundle/classDiagram-v2-HSJHXN6E-ACCNN7EN.js.map +7 -0
- package/dist/viewer-bundle/cose-bilkent-S5V4N54A-MUJHAA34.js +5009 -0
- package/dist/viewer-bundle/cose-bilkent-S5V4N54A-MUJHAA34.js.map +7 -0
- package/dist/viewer-bundle/dagre-KV5264BT-YC5VV3WF.js +739 -0
- package/dist/viewer-bundle/dagre-KV5264BT-YC5VV3WF.js.map +7 -0
- package/dist/viewer-bundle/dark.css +13 -0
- package/dist/viewer-bundle/detail.css +539 -0
- package/dist/viewer-bundle/diagram-5BDNPKRD-RXFPVFYK.js +214 -0
- package/dist/viewer-bundle/diagram-5BDNPKRD-RXFPVFYK.js.map +7 -0
- package/dist/viewer-bundle/diagram-G4DWMVQ6-KN7CBNBQ.js +578 -0
- package/dist/viewer-bundle/diagram-G4DWMVQ6-KN7CBNBQ.js.map +7 -0
- package/dist/viewer-bundle/diagram-MMDJMWI5-ZN6TQ7ZC.js +345 -0
- package/dist/viewer-bundle/diagram-MMDJMWI5-ZN6TQ7ZC.js.map +7 -0
- package/dist/viewer-bundle/diagram-TYMM5635-MMTUJ4KA.js +255 -0
- package/dist/viewer-bundle/diagram-TYMM5635-MMTUJ4KA.js.map +7 -0
- package/dist/viewer-bundle/docs.css +88 -0
- package/dist/viewer-bundle/edit-modal-BEGC2AO6.js +176 -0
- package/dist/viewer-bundle/edit-modal-BEGC2AO6.js.map +7 -0
- package/dist/viewer-bundle/erDiagram-SMLLAGMA-TBHMLD2E.js +1349 -0
- package/dist/viewer-bundle/erDiagram-SMLLAGMA-TBHMLD2E.js.map +7 -0
- package/dist/viewer-bundle/flowDiagram-DWJPFMVM-BZHLK6QB.js +2501 -0
- package/dist/viewer-bundle/flowDiagram-DWJPFMVM-BZHLK6QB.js.map +7 -0
- package/dist/viewer-bundle/ganttDiagram-T4ZO3ILL-YBARPTQR.js +2654 -0
- package/dist/viewer-bundle/ganttDiagram-T4ZO3ILL-YBARPTQR.js.map +7 -0
- package/dist/viewer-bundle/gitGraph-7Q5UKJZL-HENKIQDX.js +14 -0
- package/dist/viewer-bundle/gitGraph-7Q5UKJZL-HENKIQDX.js.map +7 -0
- package/dist/viewer-bundle/gitGraphDiagram-UUTBAWPF-M4VV3YVA.js +1946 -0
- package/dist/viewer-bundle/gitGraphDiagram-UUTBAWPF-M4VV3YVA.js.map +7 -0
- package/dist/viewer-bundle/index.html +28 -0
- package/dist/viewer-bundle/info-OMHHGYJF-E773USRS.js +14 -0
- package/dist/viewer-bundle/info-OMHHGYJF-E773USRS.js.map +7 -0
- package/dist/viewer-bundle/infoDiagram-42DDH7IO-C7JGUXKK.js +59 -0
- package/dist/viewer-bundle/infoDiagram-42DDH7IO-C7JGUXKK.js.map +7 -0
- package/dist/viewer-bundle/ishikawaDiagram-UXIWVN3A-YBC4X4VB.js +1012 -0
- package/dist/viewer-bundle/ishikawaDiagram-UXIWVN3A-YBC4X4VB.js.map +7 -0
- package/dist/viewer-bundle/journeyDiagram-VCZTEJTY-6WKVEOOO.js +1303 -0
- package/dist/viewer-bundle/journeyDiagram-VCZTEJTY-6WKVEOOO.js.map +7 -0
- package/dist/viewer-bundle/kanban-definition-6JOO6SKY-URTTHHO4.js +1131 -0
- package/dist/viewer-bundle/kanban-definition-6JOO6SKY-URTTHHO4.js.map +7 -0
- package/dist/viewer-bundle/katex-QN5266ZE.js +14318 -0
- package/dist/viewer-bundle/katex-QN5266ZE.js.map +7 -0
- package/dist/viewer-bundle/light.css +15 -0
- package/dist/viewer-bundle/main.js +4816 -0
- package/dist/viewer-bundle/main.js.map +7 -0
- package/dist/viewer-bundle/mermaid.core-AEBXU2JK.js +1708 -0
- package/dist/viewer-bundle/mermaid.core-AEBXU2JK.js.map +7 -0
- package/dist/viewer-bundle/mindmap-definition-QFDTVHPH-KUMAMRSF.js +1277 -0
- package/dist/viewer-bundle/mindmap-definition-QFDTVHPH-KUMAMRSF.js.map +7 -0
- package/dist/viewer-bundle/packet-4T2RLAQJ-IRYWWA66.js +14 -0
- package/dist/viewer-bundle/packet-4T2RLAQJ-IRYWWA66.js.map +7 -0
- package/dist/viewer-bundle/pico.classless.min.css +4 -0
- package/dist/viewer-bundle/pie-ZZUOXDRM-JYO4VL5N.js +14 -0
- package/dist/viewer-bundle/pie-ZZUOXDRM-JYO4VL5N.js.map +7 -0
- package/dist/viewer-bundle/pieDiagram-DEJITSTG-QOEHQN3N.js +238 -0
- package/dist/viewer-bundle/pieDiagram-DEJITSTG-QOEHQN3N.js.map +7 -0
- package/dist/viewer-bundle/prompt-modal-C4LHI7BS.js +12 -0
- package/dist/viewer-bundle/prompt-modal-C4LHI7BS.js.map +7 -0
- package/dist/viewer-bundle/quadrantDiagram-34T5L4WZ-SJNPUU5N.js +1409 -0
- package/dist/viewer-bundle/quadrantDiagram-34T5L4WZ-SJNPUU5N.js.map +7 -0
- package/dist/viewer-bundle/radar-PYXPWWZC-45BRYQSB.js +14 -0
- package/dist/viewer-bundle/radar-PYXPWWZC-45BRYQSB.js.map +7 -0
- package/dist/viewer-bundle/reason-modal-MK34MQ73.js +68 -0
- package/dist/viewer-bundle/reason-modal-MK34MQ73.js.map +7 -0
- package/dist/viewer-bundle/requirementDiagram-MS252O5E-UOMT3FCC.js +1311 -0
- package/dist/viewer-bundle/requirementDiagram-MS252O5E-UOMT3FCC.js.map +7 -0
- package/dist/viewer-bundle/sankeyDiagram-XADWPNL6-LAVJ5C6A.js +1263 -0
- package/dist/viewer-bundle/sankeyDiagram-XADWPNL6-LAVJ5C6A.js.map +7 -0
- package/dist/viewer-bundle/sequenceDiagram-FGHM5R23-3IWTOUNQ.js +4655 -0
- package/dist/viewer-bundle/sequenceDiagram-FGHM5R23-3IWTOUNQ.js.map +7 -0
- package/dist/viewer-bundle/stateDiagram-FHFEXIEX-S2OVQQON.js +495 -0
- package/dist/viewer-bundle/stateDiagram-FHFEXIEX-S2OVQQON.js.map +7 -0
- package/dist/viewer-bundle/stateDiagram-v2-QKLJ7IA2-XNZ3XXSV.js +44 -0
- package/dist/viewer-bundle/stateDiagram-v2-QKLJ7IA2-XNZ3XXSV.js.map +7 -0
- package/dist/viewer-bundle/timeline-definition-GMOUNBTQ-FHVZ7MHE.js +1646 -0
- package/dist/viewer-bundle/timeline-definition-GMOUNBTQ-FHVZ7MHE.js.map +7 -0
- package/dist/viewer-bundle/treeView-SZITEDCU-RXZXNYAM.js +14 -0
- package/dist/viewer-bundle/treeView-SZITEDCU-RXZXNYAM.js.map +7 -0
- package/dist/viewer-bundle/treemap-W4RFUUIX-2IGOFSJM.js +14 -0
- package/dist/viewer-bundle/treemap-W4RFUUIX-2IGOFSJM.js.map +7 -0
- package/dist/viewer-bundle/vennDiagram-DHZGUBPP-HEAOEXEZ.js +2544 -0
- package/dist/viewer-bundle/vennDiagram-DHZGUBPP-HEAOEXEZ.js.map +7 -0
- package/dist/viewer-bundle/wardley-RL74JXVD-VSPCLOX2.js +14 -0
- package/dist/viewer-bundle/wardley-RL74JXVD-VSPCLOX2.js.map +7 -0
- package/dist/viewer-bundle/wardleyDiagram-NUSXRM2D-EBY4FG3X.js +938 -0
- package/dist/viewer-bundle/wardleyDiagram-NUSXRM2D-EBY4FG3X.js.map +7 -0
- package/dist/viewer-bundle/xychartDiagram-5P7HB3ND-SSMUQEXK.js +1952 -0
- package/dist/viewer-bundle/xychartDiagram-5P7HB3ND-SSMUQEXK.js.map +7 -0
- package/package.json +51 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../node_modules/.pnpm/mermaid@11.14.0/node_modules/mermaid/dist/chunks/mermaid.core/diagram-TYMM5635.mjs"],
|
|
4
|
+
"sourcesContent": ["import {\n selectSvgElement\n} from \"./chunk-426QAEUC.mjs\";\nimport {\n populateCommonDb\n} from \"./chunk-4BX2VUAB.mjs\";\nimport {\n cleanAndMerge\n} from \"./chunk-5PVQY5BW.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-ICPOFSXX.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"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
.zg-docs {
|
|
2
|
+
display: grid;
|
|
3
|
+
grid-template-columns: 220px 1fr;
|
|
4
|
+
gap: 1rem;
|
|
5
|
+
align-items: start;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.zg-docs-sidebar {
|
|
9
|
+
background: var(--pico-card-background-color, #f5f5f5);
|
|
10
|
+
padding: 0.75rem;
|
|
11
|
+
border-radius: 0.375rem;
|
|
12
|
+
position: sticky;
|
|
13
|
+
top: 1rem;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.zg-docs-sidebar h3 {
|
|
17
|
+
font-size: 0.875rem;
|
|
18
|
+
text-transform: uppercase;
|
|
19
|
+
margin: 0 0 0.5rem 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.zg-docs-list {
|
|
23
|
+
list-style: none;
|
|
24
|
+
padding: 0;
|
|
25
|
+
margin: 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.zg-docs-list li {
|
|
29
|
+
padding: 0.25rem 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.zg-docs-list-item {
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
gap: 0.25rem;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.zg-docs-list a {
|
|
39
|
+
text-decoration: none;
|
|
40
|
+
font-size: 0.875rem;
|
|
41
|
+
display: block;
|
|
42
|
+
padding: 0.25rem 0.5rem;
|
|
43
|
+
border-radius: 0.25rem;
|
|
44
|
+
flex: 1;
|
|
45
|
+
min-width: 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
button.zg-docs-rename {
|
|
49
|
+
flex: 0 0 auto;
|
|
50
|
+
width: auto;
|
|
51
|
+
background: transparent;
|
|
52
|
+
border: none;
|
|
53
|
+
cursor: pointer;
|
|
54
|
+
font-size: 0.85rem;
|
|
55
|
+
line-height: 1;
|
|
56
|
+
padding: 0.25rem 0.4rem;
|
|
57
|
+
margin: 0;
|
|
58
|
+
color: var(--zg-btn-fg, #57606a);
|
|
59
|
+
border-radius: 0.25rem;
|
|
60
|
+
transition: color 0.15s, background 0.15s;
|
|
61
|
+
}
|
|
62
|
+
button.zg-docs-rename:hover,
|
|
63
|
+
button.zg-docs-rename:focus-visible {
|
|
64
|
+
color: var(--zg-btn-fg-hover, #1095c1);
|
|
65
|
+
background: var(--pico-background-color, transparent);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.zg-docs-list a:hover {
|
|
69
|
+
background: var(--pico-muted-border-color, #ddd);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.zg-docs-list a.active {
|
|
73
|
+
background: var(--pico-primary, #1095c1);
|
|
74
|
+
color: white;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.zg-docs-main {
|
|
78
|
+
min-width: 0;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@media (max-width: 768px) {
|
|
82
|
+
.zg-docs {
|
|
83
|
+
grid-template-columns: 1fr;
|
|
84
|
+
}
|
|
85
|
+
.zg-docs-sidebar {
|
|
86
|
+
position: static;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import "./chunk-DI52DQAC.js";
|
|
2
|
+
|
|
3
|
+
// src/components/edit-modal.ts
|
|
4
|
+
var STATUS_OPTIONS = [
|
|
5
|
+
{ value: "", label: "(auto \u2014 derived)" },
|
|
6
|
+
{ value: "draft", label: "Draft" },
|
|
7
|
+
{ value: "planned", label: "Planned" },
|
|
8
|
+
{ value: "in-progress", label: "In Progress" },
|
|
9
|
+
{ value: "in-review", label: "In Review" },
|
|
10
|
+
{ value: "done", label: "Done" },
|
|
11
|
+
{ value: "blocked", label: "Blocked" },
|
|
12
|
+
{ value: "cancelled", label: "Cancelled" }
|
|
13
|
+
];
|
|
14
|
+
function showEditModal({ spec }) {
|
|
15
|
+
return new Promise((resolve) => {
|
|
16
|
+
const overlay = document.createElement("div");
|
|
17
|
+
overlay.className = "zg-modal-overlay";
|
|
18
|
+
const dialog = document.createElement("div");
|
|
19
|
+
dialog.className = "zg-modal zg-modal-wide";
|
|
20
|
+
const heading = document.createElement("h3");
|
|
21
|
+
heading.textContent = `Edit "${spec.name}"`;
|
|
22
|
+
dialog.appendChild(heading);
|
|
23
|
+
const form = document.createElement("form");
|
|
24
|
+
form.className = "zg-edit-form";
|
|
25
|
+
form.addEventListener("submit", (e) => e.preventDefault());
|
|
26
|
+
const statusField = field("Status (override)", () => {
|
|
27
|
+
const sel = document.createElement("select");
|
|
28
|
+
sel.className = "zg-edit-input";
|
|
29
|
+
for (const opt of STATUS_OPTIONS) {
|
|
30
|
+
const o = document.createElement("option");
|
|
31
|
+
o.value = opt.value;
|
|
32
|
+
o.textContent = opt.label;
|
|
33
|
+
sel.appendChild(o);
|
|
34
|
+
}
|
|
35
|
+
sel.value = spec.frontmatterStatus ?? "";
|
|
36
|
+
return sel;
|
|
37
|
+
});
|
|
38
|
+
const blockedByField = field("Blocked by (reason)", () => {
|
|
39
|
+
const ta = document.createElement("textarea");
|
|
40
|
+
ta.className = "zg-edit-input";
|
|
41
|
+
ta.rows = 2;
|
|
42
|
+
ta.value = spec.blockedBy ?? "";
|
|
43
|
+
return ta;
|
|
44
|
+
});
|
|
45
|
+
const prField = field("PR URL", () => {
|
|
46
|
+
const input = document.createElement("input");
|
|
47
|
+
input.type = "url";
|
|
48
|
+
input.className = "zg-edit-input";
|
|
49
|
+
input.placeholder = "https://github.com/org/repo/pull/123";
|
|
50
|
+
input.value = spec.pr ?? "";
|
|
51
|
+
return input;
|
|
52
|
+
});
|
|
53
|
+
const branchField = field("Branch", () => {
|
|
54
|
+
const input = document.createElement("input");
|
|
55
|
+
input.type = "text";
|
|
56
|
+
input.className = "zg-edit-input";
|
|
57
|
+
input.placeholder = "feat/foo";
|
|
58
|
+
input.value = spec.branch ?? "";
|
|
59
|
+
return input;
|
|
60
|
+
});
|
|
61
|
+
const worktreeField = field("Worktree path", () => {
|
|
62
|
+
const input = document.createElement("input");
|
|
63
|
+
input.type = "text";
|
|
64
|
+
input.className = "zg-edit-input";
|
|
65
|
+
input.placeholder = "../zg-foo";
|
|
66
|
+
input.value = spec.worktree ?? "";
|
|
67
|
+
return input;
|
|
68
|
+
});
|
|
69
|
+
form.append(
|
|
70
|
+
statusField.row,
|
|
71
|
+
blockedByField.row,
|
|
72
|
+
prField.row,
|
|
73
|
+
branchField.row,
|
|
74
|
+
worktreeField.row
|
|
75
|
+
);
|
|
76
|
+
const statusSelect = statusField.input;
|
|
77
|
+
const blockedByTextarea = blockedByField.input;
|
|
78
|
+
const prInput = prField.input;
|
|
79
|
+
const branchInput = branchField.input;
|
|
80
|
+
const worktreeInput = worktreeField.input;
|
|
81
|
+
function updateBlockedByVisibility() {
|
|
82
|
+
blockedByField.row.style.display = statusSelect.value === "blocked" ? "" : "none";
|
|
83
|
+
}
|
|
84
|
+
statusSelect.addEventListener("change", updateBlockedByVisibility);
|
|
85
|
+
updateBlockedByVisibility();
|
|
86
|
+
const error = document.createElement("p");
|
|
87
|
+
error.className = "zg-modal-error";
|
|
88
|
+
error.style.display = "none";
|
|
89
|
+
form.appendChild(error);
|
|
90
|
+
const buttons = document.createElement("div");
|
|
91
|
+
buttons.className = "zg-modal-buttons";
|
|
92
|
+
const cancelBtn = document.createElement("button");
|
|
93
|
+
cancelBtn.type = "button";
|
|
94
|
+
cancelBtn.className = "zg-modal-cancel";
|
|
95
|
+
cancelBtn.textContent = "Cancel";
|
|
96
|
+
const saveBtn = document.createElement("button");
|
|
97
|
+
saveBtn.type = "submit";
|
|
98
|
+
saveBtn.className = "zg-modal-confirm";
|
|
99
|
+
saveBtn.textContent = "Save";
|
|
100
|
+
buttons.appendChild(cancelBtn);
|
|
101
|
+
buttons.appendChild(saveBtn);
|
|
102
|
+
form.appendChild(buttons);
|
|
103
|
+
dialog.appendChild(form);
|
|
104
|
+
overlay.appendChild(dialog);
|
|
105
|
+
document.body.appendChild(overlay);
|
|
106
|
+
function close(saved) {
|
|
107
|
+
overlay.remove();
|
|
108
|
+
resolve(saved);
|
|
109
|
+
}
|
|
110
|
+
cancelBtn.addEventListener("click", () => close(false));
|
|
111
|
+
overlay.addEventListener("click", (e) => {
|
|
112
|
+
if (e.target === overlay) close(false);
|
|
113
|
+
});
|
|
114
|
+
saveBtn.addEventListener("click", async () => {
|
|
115
|
+
const newStatus = statusSelect.value || null;
|
|
116
|
+
const newBlockedBy = blockedByTextarea.value.trim();
|
|
117
|
+
const newPr = prInput.value.trim();
|
|
118
|
+
const newBranch = branchInput.value.trim();
|
|
119
|
+
const newWorktree = worktreeInput.value.trim();
|
|
120
|
+
if (newStatus === "blocked" && !newBlockedBy) {
|
|
121
|
+
error.textContent = "Blocked status requires a reason.";
|
|
122
|
+
error.style.display = "";
|
|
123
|
+
blockedByTextarea.focus();
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
saveBtn.disabled = true;
|
|
127
|
+
cancelBtn.disabled = true;
|
|
128
|
+
try {
|
|
129
|
+
const backend = window.zettelgeistBackend;
|
|
130
|
+
const patch = {};
|
|
131
|
+
diffField(patch, "pr", spec.pr, newPr);
|
|
132
|
+
diffField(patch, "branch", spec.branch, newBranch);
|
|
133
|
+
diffField(patch, "worktree", spec.worktree, newWorktree);
|
|
134
|
+
if (Object.keys(patch).length > 0) {
|
|
135
|
+
await backend.patchFrontmatter(spec.name, patch);
|
|
136
|
+
}
|
|
137
|
+
const statusChanged = newStatus !== spec.frontmatterStatus;
|
|
138
|
+
const reasonChanged = newStatus === "blocked" && (spec.blockedBy ?? "") !== newBlockedBy;
|
|
139
|
+
if (statusChanged || reasonChanged) {
|
|
140
|
+
await backend.setStatus(
|
|
141
|
+
spec.name,
|
|
142
|
+
newStatus,
|
|
143
|
+
newStatus === "blocked" ? newBlockedBy : void 0
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
close(true);
|
|
147
|
+
} catch (err) {
|
|
148
|
+
error.textContent = err.message;
|
|
149
|
+
error.style.display = "";
|
|
150
|
+
saveBtn.disabled = false;
|
|
151
|
+
cancelBtn.disabled = false;
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
statusSelect.focus();
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
function field(labelText, mkInput) {
|
|
158
|
+
const row = document.createElement("label");
|
|
159
|
+
row.className = "zg-edit-row";
|
|
160
|
+
const span = document.createElement("span");
|
|
161
|
+
span.className = "zg-edit-label";
|
|
162
|
+
span.textContent = labelText;
|
|
163
|
+
const input = mkInput();
|
|
164
|
+
row.appendChild(span);
|
|
165
|
+
row.appendChild(input);
|
|
166
|
+
return { row, input };
|
|
167
|
+
}
|
|
168
|
+
function diffField(patch, key, oldVal, newVal) {
|
|
169
|
+
const o = oldVal ?? "";
|
|
170
|
+
if (o === newVal) return;
|
|
171
|
+
patch[key] = newVal === "" ? null : newVal;
|
|
172
|
+
}
|
|
173
|
+
export {
|
|
174
|
+
showEditModal
|
|
175
|
+
};
|
|
176
|
+
//# sourceMappingURL=edit-modal-BEGC2AO6.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/edit-modal.ts"],
|
|
4
|
+
"sourcesContent": ["import type { SpecSummary, Status } from '../backend.js';\n\nconst STATUS_OPTIONS: Array<{ value: Status | ''; label: string }> = [\n { value: '', label: '(auto \u2014 derived)' },\n { value: 'draft', label: 'Draft' },\n { value: 'planned', label: 'Planned' },\n { value: 'in-progress', label: 'In Progress' },\n { value: 'in-review', label: 'In Review' },\n { value: 'done', label: 'Done' },\n { value: 'blocked', label: 'Blocked' },\n { value: 'cancelled', label: 'Cancelled' },\n];\n\nexport interface EditModalInput {\n spec: SpecSummary;\n}\n\n/**\n * Quick-edit modal for a spec card. Editable fields: status (override),\n * blocked_by (only if status=blocked), pr URL, branch, worktree path.\n *\n * On save, mutates spec via:\n * - setStatus(name, statusValue, reason) \u2014 drives derived state + override\n * - patchFrontmatter(name, { pr, branch, worktree }) \u2014 free-form fields\n *\n * Returns true if any change was committed, false on cancel.\n */\nexport function showEditModal({ spec }: EditModalInput): Promise<boolean> {\n return new Promise((resolve) => {\n const overlay = document.createElement('div');\n overlay.className = 'zg-modal-overlay';\n\n const dialog = document.createElement('div');\n dialog.className = 'zg-modal zg-modal-wide';\n\n const heading = document.createElement('h3');\n heading.textContent = `Edit \"${spec.name}\"`;\n dialog.appendChild(heading);\n\n const form = document.createElement('form');\n form.className = 'zg-edit-form';\n form.addEventListener('submit', (e) => e.preventDefault());\n\n const statusField = field('Status (override)', () => {\n const sel = document.createElement('select');\n sel.className = 'zg-edit-input';\n for (const opt of STATUS_OPTIONS) {\n const o = document.createElement('option');\n o.value = opt.value;\n o.textContent = opt.label;\n sel.appendChild(o);\n }\n sel.value = spec.frontmatterStatus ?? '';\n return sel;\n });\n\n const blockedByField = field('Blocked by (reason)', () => {\n const ta = document.createElement('textarea');\n ta.className = 'zg-edit-input';\n ta.rows = 2;\n ta.value = spec.blockedBy ?? '';\n return ta;\n });\n\n const prField = field('PR URL', () => {\n const input = document.createElement('input');\n input.type = 'url';\n input.className = 'zg-edit-input';\n input.placeholder = 'https://github.com/org/repo/pull/123';\n input.value = spec.pr ?? '';\n return input;\n });\n\n const branchField = field('Branch', () => {\n const input = document.createElement('input');\n input.type = 'text';\n input.className = 'zg-edit-input';\n input.placeholder = 'feat/foo';\n input.value = spec.branch ?? '';\n return input;\n });\n\n const worktreeField = field('Worktree path', () => {\n const input = document.createElement('input');\n input.type = 'text';\n input.className = 'zg-edit-input';\n input.placeholder = '../zg-foo';\n input.value = spec.worktree ?? '';\n return input;\n });\n\n form.append(\n statusField.row,\n blockedByField.row,\n prField.row,\n branchField.row,\n worktreeField.row,\n );\n\n const statusSelect = statusField.input as HTMLSelectElement;\n const blockedByTextarea = blockedByField.input as HTMLTextAreaElement;\n const prInput = prField.input as HTMLInputElement;\n const branchInput = branchField.input as HTMLInputElement;\n const worktreeInput = worktreeField.input as HTMLInputElement;\n\n function updateBlockedByVisibility(): void {\n blockedByField.row.style.display = statusSelect.value === 'blocked' ? '' : 'none';\n }\n statusSelect.addEventListener('change', updateBlockedByVisibility);\n updateBlockedByVisibility();\n\n const error = document.createElement('p');\n error.className = 'zg-modal-error';\n error.style.display = 'none';\n form.appendChild(error);\n\n const buttons = document.createElement('div');\n buttons.className = 'zg-modal-buttons';\n\n const cancelBtn = document.createElement('button');\n cancelBtn.type = 'button';\n cancelBtn.className = 'zg-modal-cancel';\n cancelBtn.textContent = 'Cancel';\n\n const saveBtn = document.createElement('button');\n saveBtn.type = 'submit';\n saveBtn.className = 'zg-modal-confirm';\n saveBtn.textContent = 'Save';\n\n buttons.appendChild(cancelBtn);\n buttons.appendChild(saveBtn);\n form.appendChild(buttons);\n\n dialog.appendChild(form);\n overlay.appendChild(dialog);\n document.body.appendChild(overlay);\n\n function close(saved: boolean): void {\n overlay.remove();\n resolve(saved);\n }\n\n cancelBtn.addEventListener('click', () => close(false));\n overlay.addEventListener('click', (e) => {\n if (e.target === overlay) close(false);\n });\n\n saveBtn.addEventListener('click', async () => {\n const newStatus = (statusSelect.value || null) as Status | null;\n const newBlockedBy = blockedByTextarea.value.trim();\n const newPr = prInput.value.trim();\n const newBranch = branchInput.value.trim();\n const newWorktree = worktreeInput.value.trim();\n\n if (newStatus === 'blocked' && !newBlockedBy) {\n error.textContent = 'Blocked status requires a reason.';\n error.style.display = '';\n blockedByTextarea.focus();\n return;\n }\n\n saveBtn.disabled = true;\n cancelBtn.disabled = true;\n\n try {\n const backend = window.zettelgeistBackend;\n\n const patch: Record<string, unknown> = {};\n diffField(patch, 'pr', spec.pr, newPr);\n diffField(patch, 'branch', spec.branch, newBranch);\n diffField(patch, 'worktree', spec.worktree, newWorktree);\n if (Object.keys(patch).length > 0) {\n await backend.patchFrontmatter(spec.name, patch);\n }\n\n const statusChanged = newStatus !== spec.frontmatterStatus;\n const reasonChanged = newStatus === 'blocked' && (spec.blockedBy ?? '') !== newBlockedBy;\n if (statusChanged || reasonChanged) {\n await backend.setStatus(\n spec.name,\n newStatus,\n newStatus === 'blocked' ? newBlockedBy : undefined,\n );\n }\n\n close(true);\n } catch (err) {\n error.textContent = (err as Error).message;\n error.style.display = '';\n saveBtn.disabled = false;\n cancelBtn.disabled = false;\n }\n });\n\n statusSelect.focus();\n });\n}\n\nfunction field(labelText: string, mkInput: () => HTMLElement): { row: HTMLElement; input: HTMLElement } {\n const row = document.createElement('label');\n row.className = 'zg-edit-row';\n const span = document.createElement('span');\n span.className = 'zg-edit-label';\n span.textContent = labelText;\n const input = mkInput();\n row.appendChild(span);\n row.appendChild(input);\n return { row, input };\n}\n\nfunction diffField(patch: Record<string, unknown>, key: string, oldVal: string | null, newVal: string): void {\n const o = oldVal ?? '';\n if (o === newVal) return;\n patch[key] = newVal === '' ? null : newVal;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|