@pinkpixel/marzipan 1.1.0 → 1.1.2
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/README.md +72 -37
- package/dist/_basePickBy-D4kyG5Tu.js +152 -0
- package/dist/_basePickBy-D4kyG5Tu.js.map +1 -0
- package/dist/_baseUniq-s5uZhHMt.js +615 -0
- package/dist/_baseUniq-s5uZhHMt.js.map +1 -0
- package/dist/arc-Cd2Fw3V6.js +84 -0
- package/dist/arc-Cd2Fw3V6.js.map +1 -0
- package/dist/architectureDiagram-VXUJARFQ-ylT61Lln.js +4663 -0
- package/dist/architectureDiagram-VXUJARFQ-ylT61Lln.js.map +1 -0
- package/dist/blockDiagram-VD42YOAC-CoIxLSyQ.js +2257 -0
- package/dist/blockDiagram-VD42YOAC-CoIxLSyQ.js.map +1 -0
- package/dist/c4Diagram-YG6GDRKO-CsQimMM6.js +1581 -0
- package/dist/c4Diagram-YG6GDRKO-CsQimMM6.js.map +1 -0
- package/dist/channel-0tZUlnqz.js +6 -0
- package/dist/channel-0tZUlnqz.js.map +1 -0
- package/dist/chunk-4BX2VUAB-DVkBhLxy.js +9 -0
- package/dist/chunk-4BX2VUAB-DVkBhLxy.js.map +1 -0
- package/dist/chunk-55IACEB6-CVQcegI-.js +9 -0
- package/dist/chunk-55IACEB6-CVQcegI-.js.map +1 -0
- package/dist/chunk-B4BG7PRW-DPUTNckV.js +1376 -0
- package/dist/chunk-B4BG7PRW-DPUTNckV.js.map +1 -0
- package/dist/chunk-DI55MBZ5-F7DI2N9R.js +1371 -0
- package/dist/chunk-DI55MBZ5-F7DI2N9R.js.map +1 -0
- package/dist/chunk-FMBD7UC4-C3wNpU7V.js +20 -0
- package/dist/chunk-FMBD7UC4-C3wNpU7V.js.map +1 -0
- package/dist/chunk-QN33PNHL-BOdqrixJ.js +20 -0
- package/dist/chunk-QN33PNHL-BOdqrixJ.js.map +1 -0
- package/dist/chunk-QZHKN3VN-BFPNdgmW.js +16 -0
- package/dist/chunk-QZHKN3VN-BFPNdgmW.js.map +1 -0
- package/dist/chunk-TZMSLE5B-BZuxNW58.js +65 -0
- package/dist/chunk-TZMSLE5B-BZuxNW58.js.map +1 -0
- package/dist/classDiagram-2ON5EDUG-CiRjpBEe.js +17 -0
- package/dist/classDiagram-2ON5EDUG-CiRjpBEe.js.map +1 -0
- package/dist/classDiagram-v2-WZHVMYZB-CiRjpBEe.js +17 -0
- package/dist/classDiagram-v2-WZHVMYZB-CiRjpBEe.js.map +1 -0
- package/dist/clone-Bm_onhkP.js +9 -0
- package/dist/clone-Bm_onhkP.js.map +1 -0
- package/dist/cose-bilkent-S5V4N54A-D9xMKgKB.js +2609 -0
- package/dist/cose-bilkent-S5V4N54A-D9xMKgKB.js.map +1 -0
- package/dist/dagre-6UL2VRFP-BhIQJjaK.js +445 -0
- package/dist/dagre-6UL2VRFP-BhIQJjaK.js.map +1 -0
- package/dist/diagram-PSM6KHXK-h4YEzD1S.js +532 -0
- package/dist/diagram-PSM6KHXK-h4YEzD1S.js.map +1 -0
- package/dist/diagram-QEK2KX5R-spuV0akZ.js +218 -0
- package/dist/diagram-QEK2KX5R-spuV0akZ.js.map +1 -0
- package/dist/diagram-S2PKOQOG-CQx-wsyw.js +143 -0
- package/dist/diagram-S2PKOQOG-CQx-wsyw.js.map +1 -0
- package/dist/erDiagram-Q2GNP2WA-Cqkjjf2a.js +842 -0
- package/dist/erDiagram-Q2GNP2WA-Cqkjjf2a.js.map +1 -0
- package/dist/flowDiagram-NV44I4VS-mCXE9u9b.js +1621 -0
- package/dist/flowDiagram-NV44I4VS-mCXE9u9b.js.map +1 -0
- package/dist/ganttDiagram-JELNMOA3-Bz1GBIHE.js +2671 -0
- package/dist/ganttDiagram-JELNMOA3-Bz1GBIHE.js.map +1 -0
- package/dist/gitGraphDiagram-V2S2FVAM-Be01Oq15.js +700 -0
- package/dist/gitGraphDiagram-V2S2FVAM-Be01Oq15.js.map +1 -0
- package/dist/graph-DVWVTM7e.js +248 -0
- package/dist/graph-DVWVTM7e.js.map +1 -0
- package/dist/index-kKw24iiA.js +34 -0
- package/dist/index-kKw24iiA.js.map +1 -0
- package/dist/index.d.ts +0 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +270 -277
- package/dist/index.js.map +1 -1
- package/dist/infoDiagram-HS3SLOUP-joTtnw9j.js +25 -0
- package/dist/infoDiagram-HS3SLOUP-joTtnw9j.js.map +1 -0
- package/dist/journeyDiagram-XKPGCS4Q-CMVu7VEd.js +835 -0
- package/dist/journeyDiagram-XKPGCS4Q-CMVu7VEd.js.map +1 -0
- package/dist/kanban-definition-3W4ZIXB7-CfanK5Eg.js +720 -0
- package/dist/kanban-definition-3W4ZIXB7-CfanK5Eg.js.map +1 -0
- package/dist/katex-Cj93GM5Y.js +11605 -0
- package/dist/katex-Cj93GM5Y.js.map +1 -0
- package/dist/layout-BC8VSiQq.js +1336 -0
- package/dist/layout-BC8VSiQq.js.map +1 -0
- package/dist/linear-GV5CIa17.js +260 -0
- package/dist/linear-GV5CIa17.js.map +1 -0
- package/dist/marzipan.d.ts +1 -2
- package/dist/marzipan.d.ts.map +1 -1
- package/dist/marzipan.js +1 -19
- package/dist/marzipan.js.map +1 -1
- package/dist/mermaid.core-cSWK5aGH.js +15302 -0
- package/dist/mermaid.core-cSWK5aGH.js.map +1 -0
- package/dist/mindmap-definition-VGOIOE7T-Vu_RTZar.js +785 -0
- package/dist/mindmap-definition-VGOIOE7T-Vu_RTZar.js.map +1 -0
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +6 -5
- package/dist/parser.js.map +1 -1
- package/dist/pieDiagram-ADFJNKIX-BUcd1l-6.js +162 -0
- package/dist/pieDiagram-ADFJNKIX-BUcd1l-6.js.map +1 -0
- package/dist/plugins/accentSwatchPlugin.d.ts +1 -1
- package/dist/plugins/accentSwatchPlugin.d.ts.map +1 -1
- package/dist/plugins/accentSwatchPlugin.js +162 -81
- package/dist/plugins/accentSwatchPlugin.js.map +1 -1
- package/dist/plugins/block-handles.d.ts +10 -2
- package/dist/plugins/block-handles.d.ts.map +1 -1
- package/dist/plugins/block-handles.js +77 -51
- package/dist/plugins/block-handles.js.map +1 -1
- package/dist/plugins/index.d.ts +0 -2
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +27 -29
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/mermaidPlugin.js +1 -1
- package/dist/plugins/tinyHighlight.d.ts.map +1 -1
- package/dist/plugins/tinyHighlight.js +34 -22
- package/dist/plugins/tinyHighlight.js.map +1 -1
- package/dist/quadrantDiagram-AYHSOK5B-B1ekOH99.js +1023 -0
- package/dist/quadrantDiagram-AYHSOK5B-B1ekOH99.js.map +1 -0
- package/dist/requirementDiagram-UZGBJVZJ-BNcVcwNf.js +851 -0
- package/dist/requirementDiagram-UZGBJVZJ-BNcVcwNf.js.map +1 -0
- package/dist/sankeyDiagram-TZEHDZUN-BpHcdj5K.js +811 -0
- package/dist/sankeyDiagram-TZEHDZUN-BpHcdj5K.js.map +1 -0
- package/dist/sequenceDiagram-WL72ISMW-D5UyNvsv.js +2512 -0
- package/dist/sequenceDiagram-WL72ISMW-D5UyNvsv.js.map +1 -0
- package/dist/stateDiagram-FKZM4ZOC-C8DBscXu.js +264 -0
- package/dist/stateDiagram-FKZM4ZOC-C8DBscXu.js.map +1 -0
- package/dist/stateDiagram-v2-4FDKWEC3-CHqwUDPY.js +17 -0
- package/dist/stateDiagram-v2-4FDKWEC3-CHqwUDPY.js.map +1 -0
- package/dist/timeline-definition-IT6M3QCI-Dtg0oJbr.js +796 -0
- package/dist/timeline-definition-IT6M3QCI-Dtg0oJbr.js.map +1 -0
- package/dist/treemap-GDKQZRPO-rbQo3Em-.js +17926 -0
- package/dist/treemap-GDKQZRPO-rbQo3Em-.js.map +1 -0
- package/dist/xychartDiagram-PRI3JC2R-uNpgYSnV.js +1341 -0
- package/dist/xychartDiagram-PRI3JC2R-uNpgYSnV.js.map +1 -0
- package/docs/.vitepress/config.ts +1 -1
- package/docs/README.md +6 -8
- package/docs/TABLE_OF_CONTENTS.md +4 -1
- package/docs/api.md +262 -202
- package/docs/index.md +22 -19
- package/docs/plugins.md +27 -23
- package/package.json +1 -1
- package/docs/block-handles.md +0 -325
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitGraphDiagram-V2S2FVAM-Be01Oq15.js","sources":["../node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-V2S2FVAM.mjs"],"sourcesContent":["import {\n populateCommonDb\n} from \"./chunk-4BX2VUAB.mjs\";\nimport {\n ImperativeState\n} from \"./chunk-QZHKN3VN.mjs\";\nimport {\n cleanAndMerge,\n random,\n utils_default\n} from \"./chunk-S3R3BYOJ.mjs\";\nimport {\n clear,\n common_default,\n defaultConfig_default,\n getAccDescription,\n getAccTitle,\n getConfig,\n getConfig2,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n setupGraphViewbox2 as setupGraphViewbox\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/git/gitGraphParser.ts\nimport { parse } from \"@mermaid-js/parser\";\n\n// src/diagrams/git/gitGraphTypes.ts\nvar commitType = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n CHERRY_PICK: 4\n};\n\n// src/diagrams/git/gitGraphAst.ts\nvar DEFAULT_GITGRAPH_CONFIG = defaultConfig_default.gitGraph;\nvar getConfig3 = /* @__PURE__ */ __name(() => {\n const config = cleanAndMerge({\n ...DEFAULT_GITGRAPH_CONFIG,\n ...getConfig().gitGraph\n });\n return config;\n}, \"getConfig\");\nvar state = new ImperativeState(() => {\n const config = getConfig3();\n const mainBranchName = config.mainBranchName;\n const mainBranchOrder = config.mainBranchOrder;\n return {\n mainBranchName,\n commits: /* @__PURE__ */ new Map(),\n head: null,\n branchConfig: /* @__PURE__ */ new Map([[mainBranchName, { name: mainBranchName, order: mainBranchOrder }]]),\n branches: /* @__PURE__ */ new Map([[mainBranchName, null]]),\n currBranch: mainBranchName,\n direction: \"LR\",\n seq: 0,\n options: {}\n };\n});\nfunction getID() {\n return random({ length: 7 });\n}\n__name(getID, \"getID\");\nfunction uniqBy(list, fn) {\n const recordMap = /* @__PURE__ */ Object.create(null);\n return list.reduce((out, item) => {\n const key = fn(item);\n if (!recordMap[key]) {\n recordMap[key] = true;\n out.push(item);\n }\n return out;\n }, []);\n}\n__name(uniqBy, \"uniqBy\");\nvar setDirection = /* @__PURE__ */ __name(function(dir2) {\n state.records.direction = dir2;\n}, \"setDirection\");\nvar setOptions = /* @__PURE__ */ __name(function(rawOptString) {\n log.debug(\"options str\", rawOptString);\n rawOptString = rawOptString?.trim();\n rawOptString = rawOptString || \"{}\";\n try {\n state.records.options = JSON.parse(rawOptString);\n } catch (e) {\n log.error(\"error while parsing gitGraph options\", e.message);\n }\n}, \"setOptions\");\nvar getOptions = /* @__PURE__ */ __name(function() {\n return state.records.options;\n}, \"getOptions\");\nvar commit = /* @__PURE__ */ __name(function(commitDB) {\n let msg = commitDB.msg;\n let id = commitDB.id;\n const type = commitDB.type;\n let tags = commitDB.tags;\n log.info(\"commit\", msg, id, type, tags);\n log.debug(\"Entering commit:\", msg, id, type, tags);\n const config = getConfig3();\n id = common_default.sanitizeText(id, config);\n msg = common_default.sanitizeText(msg, config);\n tags = tags?.map((tag) => common_default.sanitizeText(tag, config));\n const newCommit = {\n id: id ? id : state.records.seq + \"-\" + getID(),\n message: msg,\n seq: state.records.seq++,\n type: type ?? commitType.NORMAL,\n tags: tags ?? [],\n parents: state.records.head == null ? [] : [state.records.head.id],\n branch: state.records.currBranch\n };\n state.records.head = newCommit;\n log.info(\"main branch\", config.mainBranchName);\n if (state.records.commits.has(newCommit.id)) {\n log.warn(`Commit ID ${newCommit.id} already exists`);\n }\n state.records.commits.set(newCommit.id, newCommit);\n state.records.branches.set(state.records.currBranch, newCommit.id);\n log.debug(\"in pushCommit \" + newCommit.id);\n}, \"commit\");\nvar branch = /* @__PURE__ */ __name(function(branchDB) {\n let name = branchDB.name;\n const order = branchDB.order;\n name = common_default.sanitizeText(name, getConfig3());\n if (state.records.branches.has(name)) {\n throw new Error(\n `Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using \"checkout ${name}\")`\n );\n }\n state.records.branches.set(name, state.records.head != null ? state.records.head.id : null);\n state.records.branchConfig.set(name, { name, order });\n checkout(name);\n log.debug(\"in createBranch\");\n}, \"branch\");\nvar merge = /* @__PURE__ */ __name((mergeDB) => {\n let otherBranch = mergeDB.branch;\n let customId = mergeDB.id;\n const overrideType = mergeDB.type;\n const customTags = mergeDB.tags;\n const config = getConfig3();\n otherBranch = common_default.sanitizeText(otherBranch, config);\n if (customId) {\n customId = common_default.sanitizeText(customId, config);\n }\n const currentBranchCheck = state.records.branches.get(state.records.currBranch);\n const otherBranchCheck = state.records.branches.get(otherBranch);\n const currentCommit = currentBranchCheck ? state.records.commits.get(currentBranchCheck) : void 0;\n const otherCommit = otherBranchCheck ? state.records.commits.get(otherBranchCheck) : void 0;\n if (currentCommit && otherCommit && currentCommit.branch === otherBranch) {\n throw new Error(`Cannot merge branch '${otherBranch}' into itself.`);\n }\n if (state.records.currBranch === otherBranch) {\n const error = new Error('Incorrect usage of \"merge\". Cannot merge a branch to itself');\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [\"branch abc\"]\n };\n throw error;\n }\n if (currentCommit === void 0 || !currentCommit) {\n const error = new Error(\n `Incorrect usage of \"merge\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [\"commit\"]\n };\n throw error;\n }\n if (!state.records.branches.has(otherBranch)) {\n const error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + \") does not exist\"\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [`branch ${otherBranch}`]\n };\n throw error;\n }\n if (otherCommit === void 0 || !otherCommit) {\n const error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + \") has no commits\"\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: ['\"commit\"']\n };\n throw error;\n }\n if (currentCommit === otherCommit) {\n const error = new Error('Incorrect usage of \"merge\". Both branches have same head');\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [\"branch abc\"]\n };\n throw error;\n }\n if (customId && state.records.commits.has(customId)) {\n const error = new Error(\n 'Incorrect usage of \"merge\". Commit with id:' + customId + \" already exists, use different custom id\"\n );\n error.hash = {\n text: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(\" \")}`,\n token: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(\" \")}`,\n expected: [\n `merge ${otherBranch} ${customId}_UNIQUE ${overrideType} ${customTags?.join(\" \")}`\n ]\n };\n throw error;\n }\n const verifiedBranch = otherBranchCheck ? otherBranchCheck : \"\";\n const commit2 = {\n id: customId || `${state.records.seq}-${getID()}`,\n message: `merged branch ${otherBranch} into ${state.records.currBranch}`,\n seq: state.records.seq++,\n parents: state.records.head == null ? [] : [state.records.head.id, verifiedBranch],\n branch: state.records.currBranch,\n type: commitType.MERGE,\n customType: overrideType,\n customId: customId ? true : false,\n tags: customTags ?? []\n };\n state.records.head = commit2;\n state.records.commits.set(commit2.id, commit2);\n state.records.branches.set(state.records.currBranch, commit2.id);\n log.debug(state.records.branches);\n log.debug(\"in mergeBranch\");\n}, \"merge\");\nvar cherryPick = /* @__PURE__ */ __name(function(cherryPickDB) {\n let sourceId = cherryPickDB.id;\n let targetId = cherryPickDB.targetId;\n let tags = cherryPickDB.tags;\n let parentCommitId = cherryPickDB.parent;\n log.debug(\"Entering cherryPick:\", sourceId, targetId, tags);\n const config = getConfig3();\n sourceId = common_default.sanitizeText(sourceId, config);\n targetId = common_default.sanitizeText(targetId, config);\n tags = tags?.map((tag) => common_default.sanitizeText(tag, config));\n parentCommitId = common_default.sanitizeText(parentCommitId, config);\n if (!sourceId || !state.records.commits.has(sourceId)) {\n const error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit id should exist and provided'\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const sourceCommit = state.records.commits.get(sourceId);\n if (sourceCommit === void 0 || !sourceCommit) {\n throw new Error('Incorrect usage of \"cherryPick\". Source commit id should exist and provided');\n }\n if (parentCommitId && !(Array.isArray(sourceCommit.parents) && sourceCommit.parents.includes(parentCommitId))) {\n const error = new Error(\n \"Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.\"\n );\n throw error;\n }\n const sourceCommitBranch = sourceCommit.branch;\n if (sourceCommit.type === commitType.MERGE && !parentCommitId) {\n const error = new Error(\n \"Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.\"\n );\n throw error;\n }\n if (!targetId || !state.records.commits.has(targetId)) {\n if (sourceCommitBranch === state.records.currBranch) {\n const error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit is already on current branch'\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const currentCommitId = state.records.branches.get(state.records.currBranch);\n if (currentCommitId === void 0 || !currentCommitId) {\n const error = new Error(\n `Incorrect usage of \"cherry-pick\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const currentCommit = state.records.commits.get(currentCommitId);\n if (currentCommit === void 0 || !currentCommit) {\n const error = new Error(\n `Incorrect usage of \"cherry-pick\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const commit2 = {\n id: state.records.seq + \"-\" + getID(),\n message: `cherry-picked ${sourceCommit?.message} into ${state.records.currBranch}`,\n seq: state.records.seq++,\n parents: state.records.head == null ? [] : [state.records.head.id, sourceCommit.id],\n branch: state.records.currBranch,\n type: commitType.CHERRY_PICK,\n tags: tags ? tags.filter(Boolean) : [\n `cherry-pick:${sourceCommit.id}${sourceCommit.type === commitType.MERGE ? `|parent:${parentCommitId}` : \"\"}`\n ]\n };\n state.records.head = commit2;\n state.records.commits.set(commit2.id, commit2);\n state.records.branches.set(state.records.currBranch, commit2.id);\n log.debug(state.records.branches);\n log.debug(\"in cherryPick\");\n }\n}, \"cherryPick\");\nvar checkout = /* @__PURE__ */ __name(function(branch2) {\n branch2 = common_default.sanitizeText(branch2, getConfig3());\n if (!state.records.branches.has(branch2)) {\n const error = new Error(\n `Trying to checkout branch which is not yet created. (Help try using \"branch ${branch2}\")`\n );\n error.hash = {\n text: `checkout ${branch2}`,\n token: `checkout ${branch2}`,\n expected: [`branch ${branch2}`]\n };\n throw error;\n } else {\n state.records.currBranch = branch2;\n const id = state.records.branches.get(state.records.currBranch);\n if (id === void 0 || !id) {\n state.records.head = null;\n } else {\n state.records.head = state.records.commits.get(id) ?? null;\n }\n }\n}, \"checkout\");\nfunction upsert(arr, key, newVal) {\n const index = arr.indexOf(key);\n if (index === -1) {\n arr.push(newVal);\n } else {\n arr.splice(index, 1, newVal);\n }\n}\n__name(upsert, \"upsert\");\nfunction prettyPrintCommitHistory(commitArr) {\n const commit2 = commitArr.reduce((out, commit3) => {\n if (out.seq > commit3.seq) {\n return out;\n }\n return commit3;\n }, commitArr[0]);\n let line = \"\";\n commitArr.forEach(function(c) {\n if (c === commit2) {\n line += \"\t*\";\n } else {\n line += \"\t|\";\n }\n });\n const label = [line, commit2.id, commit2.seq];\n for (const branch2 in state.records.branches) {\n if (state.records.branches.get(branch2) === commit2.id) {\n label.push(branch2);\n }\n }\n log.debug(label.join(\" \"));\n if (commit2.parents && commit2.parents.length == 2 && commit2.parents[0] && commit2.parents[1]) {\n const newCommit = state.records.commits.get(commit2.parents[0]);\n upsert(commitArr, commit2, newCommit);\n if (commit2.parents[1]) {\n commitArr.push(state.records.commits.get(commit2.parents[1]));\n }\n } else if (commit2.parents.length == 0) {\n return;\n } else {\n if (commit2.parents[0]) {\n const newCommit = state.records.commits.get(commit2.parents[0]);\n upsert(commitArr, commit2, newCommit);\n }\n }\n commitArr = uniqBy(commitArr, (c) => c.id);\n prettyPrintCommitHistory(commitArr);\n}\n__name(prettyPrintCommitHistory, \"prettyPrintCommitHistory\");\nvar prettyPrint = /* @__PURE__ */ __name(function() {\n log.debug(state.records.commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n}, \"prettyPrint\");\nvar clear2 = /* @__PURE__ */ __name(function() {\n state.reset();\n clear();\n}, \"clear\");\nvar getBranchesAsObjArray = /* @__PURE__ */ __name(function() {\n const branchesArray = [...state.records.branchConfig.values()].map((branchConfig, i) => {\n if (branchConfig.order !== null && branchConfig.order !== void 0) {\n return branchConfig;\n }\n return {\n ...branchConfig,\n order: parseFloat(`0.${i}`)\n };\n }).sort((a, b) => (a.order ?? 0) - (b.order ?? 0)).map(({ name }) => ({ name }));\n return branchesArray;\n}, \"getBranchesAsObjArray\");\nvar getBranches = /* @__PURE__ */ __name(function() {\n return state.records.branches;\n}, \"getBranches\");\nvar getCommits = /* @__PURE__ */ __name(function() {\n return state.records.commits;\n}, \"getCommits\");\nvar getCommitsArray = /* @__PURE__ */ __name(function() {\n const commitArr = [...state.records.commits.values()];\n commitArr.forEach(function(o) {\n log.debug(o.id);\n });\n commitArr.sort((a, b) => a.seq - b.seq);\n return commitArr;\n}, \"getCommitsArray\");\nvar getCurrentBranch = /* @__PURE__ */ __name(function() {\n return state.records.currBranch;\n}, \"getCurrentBranch\");\nvar getDirection = /* @__PURE__ */ __name(function() {\n return state.records.direction;\n}, \"getDirection\");\nvar getHead = /* @__PURE__ */ __name(function() {\n return state.records.head;\n}, \"getHead\");\nvar db = {\n commitType,\n getConfig: getConfig3,\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n cherryPick,\n checkout,\n //reset,\n prettyPrint,\n clear: clear2,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n setDiagramTitle,\n getDiagramTitle\n};\n\n// src/diagrams/git/gitGraphParser.ts\nvar populate = /* @__PURE__ */ __name((ast, db2) => {\n populateCommonDb(ast, db2);\n if (ast.dir) {\n db2.setDirection(ast.dir);\n }\n for (const statement of ast.statements) {\n parseStatement(statement, db2);\n }\n}, \"populate\");\nvar parseStatement = /* @__PURE__ */ __name((statement, db2) => {\n const parsers = {\n Commit: /* @__PURE__ */ __name((stmt) => db2.commit(parseCommit(stmt)), \"Commit\"),\n Branch: /* @__PURE__ */ __name((stmt) => db2.branch(parseBranch(stmt)), \"Branch\"),\n Merge: /* @__PURE__ */ __name((stmt) => db2.merge(parseMerge(stmt)), \"Merge\"),\n Checkout: /* @__PURE__ */ __name((stmt) => db2.checkout(parseCheckout(stmt)), \"Checkout\"),\n CherryPicking: /* @__PURE__ */ __name((stmt) => db2.cherryPick(parseCherryPicking(stmt)), \"CherryPicking\")\n };\n const parser2 = parsers[statement.$type];\n if (parser2) {\n parser2(statement);\n } else {\n log.error(`Unknown statement type: ${statement.$type}`);\n }\n}, \"parseStatement\");\nvar parseCommit = /* @__PURE__ */ __name((commit2) => {\n const commitDB = {\n id: commit2.id,\n msg: commit2.message ?? \"\",\n type: commit2.type !== void 0 ? commitType[commit2.type] : commitType.NORMAL,\n tags: commit2.tags ?? void 0\n };\n return commitDB;\n}, \"parseCommit\");\nvar parseBranch = /* @__PURE__ */ __name((branch2) => {\n const branchDB = {\n name: branch2.name,\n order: branch2.order ?? 0\n };\n return branchDB;\n}, \"parseBranch\");\nvar parseMerge = /* @__PURE__ */ __name((merge2) => {\n const mergeDB = {\n branch: merge2.branch,\n id: merge2.id ?? \"\",\n type: merge2.type !== void 0 ? commitType[merge2.type] : void 0,\n tags: merge2.tags ?? void 0\n };\n return mergeDB;\n}, \"parseMerge\");\nvar parseCheckout = /* @__PURE__ */ __name((checkout2) => {\n const branch2 = checkout2.branch;\n return branch2;\n}, \"parseCheckout\");\nvar parseCherryPicking = /* @__PURE__ */ __name((cherryPicking) => {\n const cherryPickDB = {\n id: cherryPicking.id,\n targetId: \"\",\n tags: cherryPicking.tags?.length === 0 ? void 0 : cherryPicking.tags,\n parent: cherryPicking.parent\n };\n return cherryPickDB;\n}, \"parseCherryPicking\");\nvar parser = {\n parse: /* @__PURE__ */ __name(async (input) => {\n const ast = await parse(\"gitGraph\", input);\n log.debug(ast);\n populate(ast, db);\n }, \"parse\")\n};\nif (void 0) {\n const { it, expect, describe } = void 0;\n const mockDB = {\n commitType,\n setDirection: vi.fn(),\n commit: vi.fn(),\n branch: vi.fn(),\n merge: vi.fn(),\n cherryPick: vi.fn(),\n checkout: vi.fn()\n };\n describe(\"GitGraph Parser\", () => {\n it(\"should parse a commit statement\", () => {\n const commit2 = {\n $type: \"Commit\",\n id: \"1\",\n message: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n };\n parseStatement(commit2, mockDB);\n expect(mockDB.commit).toHaveBeenCalledWith({\n id: \"1\",\n msg: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n });\n it(\"should parse a branch statement\", () => {\n const branch2 = {\n $type: \"Branch\",\n name: \"newBranch\",\n order: 1\n };\n parseStatement(branch2, mockDB);\n expect(mockDB.branch).toHaveBeenCalledWith({ name: \"newBranch\", order: 1 });\n });\n it(\"should parse a checkout statement\", () => {\n const checkout2 = {\n $type: \"Checkout\",\n branch: \"newBranch\"\n };\n parseStatement(checkout2, mockDB);\n expect(mockDB.checkout).toHaveBeenCalledWith(\"newBranch\");\n });\n it(\"should parse a merge statement\", () => {\n const merge2 = {\n $type: \"Merge\",\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n };\n parseStatement(merge2, mockDB);\n expect(mockDB.merge).toHaveBeenCalledWith({\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n });\n it(\"should parse a cherry picking statement\", () => {\n const cherryPick2 = {\n $type: \"CherryPicking\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n parent: \"2\"\n };\n parseStatement(cherryPick2, mockDB);\n expect(mockDB.cherryPick).toHaveBeenCalledWith({\n id: \"1\",\n targetId: \"\",\n parent: \"2\",\n tags: [\"tag1\", \"tag2\"]\n });\n });\n it(\"should parse a langium generated gitGraph ast\", () => {\n const dummy = {\n $type: \"GitGraph\",\n statements: [],\n accDescr: \"\",\n accTitle: \"\",\n title: \"\"\n };\n const gitGraphAst = {\n $type: \"GitGraph\",\n statements: [\n {\n $container: dummy,\n $type: \"Commit\",\n id: \"1\",\n message: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n },\n {\n $container: dummy,\n $type: \"Branch\",\n name: \"newBranch\",\n order: 1\n },\n {\n $container: dummy,\n $type: \"Merge\",\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n },\n {\n $container: dummy,\n $type: \"Checkout\",\n branch: \"newBranch\"\n },\n {\n $container: dummy,\n $type: \"CherryPicking\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n parent: \"2\"\n }\n ],\n accDescr: \"\",\n accTitle: \"\",\n title: \"\"\n };\n populate(gitGraphAst, mockDB);\n expect(mockDB.commit).toHaveBeenCalledWith({\n id: \"1\",\n msg: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n expect(mockDB.branch).toHaveBeenCalledWith({ name: \"newBranch\", order: 1 });\n expect(mockDB.merge).toHaveBeenCalledWith({\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n expect(mockDB.checkout).toHaveBeenCalledWith(\"newBranch\");\n });\n });\n}\n\n// src/diagrams/git/gitGraphRenderer.ts\nimport { select } from \"d3\";\nvar DEFAULT_CONFIG = getConfig2();\nvar DEFAULT_GITGRAPH_CONFIG2 = DEFAULT_CONFIG?.gitGraph;\nvar LAYOUT_OFFSET = 10;\nvar COMMIT_STEP = 40;\nvar PX = 4;\nvar PY = 2;\nvar THEME_COLOR_LIMIT = 8;\nvar branchPos = /* @__PURE__ */ new Map();\nvar commitPos = /* @__PURE__ */ new Map();\nvar defaultPos = 30;\nvar allCommitsDict = /* @__PURE__ */ new Map();\nvar lanes = [];\nvar maxPos = 0;\nvar dir = \"LR\";\nvar clear3 = /* @__PURE__ */ __name(() => {\n branchPos.clear();\n commitPos.clear();\n allCommitsDict.clear();\n maxPos = 0;\n lanes = [];\n dir = \"LR\";\n}, \"clear\");\nvar drawText = /* @__PURE__ */ __name((txt) => {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n const rows = typeof txt === \"string\" ? txt.split(/\\\\n|\\n|<br\\s*\\/?>/gi) : txt;\n rows.forEach((row) => {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n tspan.setAttribute(\"class\", \"row\");\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n });\n return svgLabel;\n}, \"drawText\");\nvar findClosestParent = /* @__PURE__ */ __name((parents) => {\n let closestParent;\n let comparisonFunc;\n let targetPosition;\n if (dir === \"BT\") {\n comparisonFunc = /* @__PURE__ */ __name((a, b) => a <= b, \"comparisonFunc\");\n targetPosition = Infinity;\n } else {\n comparisonFunc = /* @__PURE__ */ __name((a, b) => a >= b, \"comparisonFunc\");\n targetPosition = 0;\n }\n parents.forEach((parent) => {\n const parentPosition = dir === \"TB\" || dir == \"BT\" ? commitPos.get(parent)?.y : commitPos.get(parent)?.x;\n if (parentPosition !== void 0 && comparisonFunc(parentPosition, targetPosition)) {\n closestParent = parent;\n targetPosition = parentPosition;\n }\n });\n return closestParent;\n}, \"findClosestParent\");\nvar findClosestParentBT = /* @__PURE__ */ __name((parents) => {\n let closestParent = \"\";\n let maxPosition = Infinity;\n parents.forEach((parent) => {\n const parentPosition = commitPos.get(parent).y;\n if (parentPosition <= maxPosition) {\n closestParent = parent;\n maxPosition = parentPosition;\n }\n });\n return closestParent || void 0;\n}, \"findClosestParentBT\");\nvar setParallelBTPos = /* @__PURE__ */ __name((sortedKeys, commits, defaultPos2) => {\n let curPos = defaultPos2;\n let maxPosition = defaultPos2;\n const roots = [];\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (!commit2) {\n throw new Error(`Commit not found for key ${key}`);\n }\n if (commit2.parents.length) {\n curPos = calculateCommitPosition(commit2);\n maxPosition = Math.max(curPos, maxPosition);\n } else {\n roots.push(commit2);\n }\n setCommitPosition(commit2, curPos);\n });\n curPos = maxPosition;\n roots.forEach((commit2) => {\n setRootPosition(commit2, curPos, defaultPos2);\n });\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (commit2?.parents.length) {\n const closestParent = findClosestParentBT(commit2.parents);\n curPos = commitPos.get(closestParent).y - COMMIT_STEP;\n if (curPos <= maxPosition) {\n maxPosition = curPos;\n }\n const x = branchPos.get(commit2.branch).pos;\n const y = curPos - LAYOUT_OFFSET;\n commitPos.set(commit2.id, { x, y });\n }\n });\n}, \"setParallelBTPos\");\nvar findClosestParentPos = /* @__PURE__ */ __name((commit2) => {\n const closestParent = findClosestParent(commit2.parents.filter((p) => p !== null));\n if (!closestParent) {\n throw new Error(`Closest parent not found for commit ${commit2.id}`);\n }\n const closestParentPos = commitPos.get(closestParent)?.y;\n if (closestParentPos === void 0) {\n throw new Error(`Closest parent position not found for commit ${commit2.id}`);\n }\n return closestParentPos;\n}, \"findClosestParentPos\");\nvar calculateCommitPosition = /* @__PURE__ */ __name((commit2) => {\n const closestParentPos = findClosestParentPos(commit2);\n return closestParentPos + COMMIT_STEP;\n}, \"calculateCommitPosition\");\nvar setCommitPosition = /* @__PURE__ */ __name((commit2, curPos) => {\n const branch2 = branchPos.get(commit2.branch);\n if (!branch2) {\n throw new Error(`Branch not found for commit ${commit2.id}`);\n }\n const x = branch2.pos;\n const y = curPos + LAYOUT_OFFSET;\n commitPos.set(commit2.id, { x, y });\n return { x, y };\n}, \"setCommitPosition\");\nvar setRootPosition = /* @__PURE__ */ __name((commit2, curPos, defaultPos2) => {\n const branch2 = branchPos.get(commit2.branch);\n if (!branch2) {\n throw new Error(`Branch not found for commit ${commit2.id}`);\n }\n const y = curPos + defaultPos2;\n const x = branch2.pos;\n commitPos.set(commit2.id, { x, y });\n}, \"setRootPosition\");\nvar drawCommitBullet = /* @__PURE__ */ __name((gBullets, commit2, commitPosition, typeClass, branchIndex, commitSymbolType) => {\n if (commitSymbolType === commitType.HIGHLIGHT) {\n gBullets.append(\"rect\").attr(\"x\", commitPosition.x - 10).attr(\"y\", commitPosition.y - 10).attr(\"width\", 20).attr(\"height\", 20).attr(\n \"class\",\n `commit ${commit2.id} commit-highlight${branchIndex % THEME_COLOR_LIMIT} ${typeClass}-outer`\n );\n gBullets.append(\"rect\").attr(\"x\", commitPosition.x - 6).attr(\"y\", commitPosition.y - 6).attr(\"width\", 12).attr(\"height\", 12).attr(\n \"class\",\n `commit ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT} ${typeClass}-inner`\n );\n } else if (commitSymbolType === commitType.CHERRY_PICK) {\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x).attr(\"cy\", commitPosition.y).attr(\"r\", 10).attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x - 3).attr(\"cy\", commitPosition.y + 2).attr(\"r\", 2.75).attr(\"fill\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x + 3).attr(\"cy\", commitPosition.y + 2).attr(\"r\", 2.75).attr(\"fill\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", commitPosition.x + 3).attr(\"y1\", commitPosition.y + 1).attr(\"x2\", commitPosition.x).attr(\"y2\", commitPosition.y - 5).attr(\"stroke\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", commitPosition.x - 3).attr(\"y1\", commitPosition.y + 1).attr(\"x2\", commitPosition.x).attr(\"y2\", commitPosition.y - 5).attr(\"stroke\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n } else {\n const circle = gBullets.append(\"circle\");\n circle.attr(\"cx\", commitPosition.x);\n circle.attr(\"cy\", commitPosition.y);\n circle.attr(\"r\", commit2.type === commitType.MERGE ? 9 : 10);\n circle.attr(\"class\", `commit ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT}`);\n if (commitSymbolType === commitType.MERGE) {\n const circle2 = gBullets.append(\"circle\");\n circle2.attr(\"cx\", commitPosition.x);\n circle2.attr(\"cy\", commitPosition.y);\n circle2.attr(\"r\", 6);\n circle2.attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT}`\n );\n }\n if (commitSymbolType === commitType.REVERSE) {\n const cross = gBullets.append(\"path\");\n cross.attr(\n \"d\",\n `M ${commitPosition.x - 5},${commitPosition.y - 5}L${commitPosition.x + 5},${commitPosition.y + 5}M${commitPosition.x - 5},${commitPosition.y + 5}L${commitPosition.x + 5},${commitPosition.y - 5}`\n ).attr(\"class\", `commit ${typeClass} ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT}`);\n }\n }\n}, \"drawCommitBullet\");\nvar drawCommitLabel = /* @__PURE__ */ __name((gLabels, commit2, commitPosition, pos) => {\n if (commit2.type !== commitType.CHERRY_PICK && (commit2.customId && commit2.type === commitType.MERGE || commit2.type !== commitType.MERGE) && DEFAULT_GITGRAPH_CONFIG2?.showCommitLabel) {\n const wrapper = gLabels.append(\"g\");\n const labelBkg = wrapper.insert(\"rect\").attr(\"class\", \"commit-label-bkg\");\n const text = wrapper.append(\"text\").attr(\"x\", pos).attr(\"y\", commitPosition.y + 25).attr(\"class\", \"commit-label\").text(commit2.id);\n const bbox = text.node()?.getBBox();\n if (bbox) {\n labelBkg.attr(\"x\", commitPosition.posWithOffset - bbox.width / 2 - PY).attr(\"y\", commitPosition.y + 13.5).attr(\"width\", bbox.width + 2 * PY).attr(\"height\", bbox.height + 2 * PY);\n if (dir === \"TB\" || dir === \"BT\") {\n labelBkg.attr(\"x\", commitPosition.x - (bbox.width + 4 * PX + 5)).attr(\"y\", commitPosition.y - 12);\n text.attr(\"x\", commitPosition.x - (bbox.width + 4 * PX)).attr(\"y\", commitPosition.y + bbox.height - 12);\n } else {\n text.attr(\"x\", commitPosition.posWithOffset - bbox.width / 2);\n }\n if (DEFAULT_GITGRAPH_CONFIG2.rotateCommitLabel) {\n if (dir === \"TB\" || dir === \"BT\") {\n text.attr(\n \"transform\",\n \"rotate(-45, \" + commitPosition.x + \", \" + commitPosition.y + \")\"\n );\n labelBkg.attr(\n \"transform\",\n \"rotate(-45, \" + commitPosition.x + \", \" + commitPosition.y + \")\"\n );\n } else {\n const r_x = -7.5 - (bbox.width + 10) / 25 * 9.5;\n const r_y = 10 + bbox.width / 25 * 8.5;\n wrapper.attr(\n \"transform\",\n \"translate(\" + r_x + \", \" + r_y + \") rotate(-45, \" + pos + \", \" + commitPosition.y + \")\"\n );\n }\n }\n }\n }\n}, \"drawCommitLabel\");\nvar drawCommitTags = /* @__PURE__ */ __name((gLabels, commit2, commitPosition, pos) => {\n if (commit2.tags.length > 0) {\n let yOffset = 0;\n let maxTagBboxWidth = 0;\n let maxTagBboxHeight = 0;\n const tagElements = [];\n for (const tagValue of commit2.tags.reverse()) {\n const rect = gLabels.insert(\"polygon\");\n const hole = gLabels.append(\"circle\");\n const tag = gLabels.append(\"text\").attr(\"y\", commitPosition.y - 16 - yOffset).attr(\"class\", \"tag-label\").text(tagValue);\n const tagBbox = tag.node()?.getBBox();\n if (!tagBbox) {\n throw new Error(\"Tag bbox not found\");\n }\n maxTagBboxWidth = Math.max(maxTagBboxWidth, tagBbox.width);\n maxTagBboxHeight = Math.max(maxTagBboxHeight, tagBbox.height);\n tag.attr(\"x\", commitPosition.posWithOffset - tagBbox.width / 2);\n tagElements.push({\n tag,\n hole,\n rect,\n yOffset\n });\n yOffset += 20;\n }\n for (const { tag, hole, rect, yOffset: yOffset2 } of tagElements) {\n const h2 = maxTagBboxHeight / 2;\n const ly = commitPosition.y - 19.2 - yOffset2;\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${pos - maxTagBboxWidth / 2 - PX / 2},${ly + PY} \n ${pos - maxTagBboxWidth / 2 - PX / 2},${ly - PY}\n ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly - h2 - PY}\n ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly - h2 - PY}\n ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly + h2 + PY}\n ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly + h2 + PY}`\n );\n hole.attr(\"cy\", ly).attr(\"cx\", pos - maxTagBboxWidth / 2 + PX / 2).attr(\"r\", 1.5).attr(\"class\", \"tag-hole\");\n if (dir === \"TB\" || dir === \"BT\") {\n const yOrigin = pos + yOffset2;\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${commitPosition.x},${yOrigin + 2}\n ${commitPosition.x},${yOrigin - 2}\n ${commitPosition.x + LAYOUT_OFFSET},${yOrigin - h2 - 2}\n ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin - h2 - 2}\n ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin + h2 + 2}\n ${commitPosition.x + LAYOUT_OFFSET},${yOrigin + h2 + 2}`\n ).attr(\"transform\", \"translate(12,12) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n hole.attr(\"cx\", commitPosition.x + PX / 2).attr(\"cy\", yOrigin).attr(\"transform\", \"translate(12,12) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n tag.attr(\"x\", commitPosition.x + 5).attr(\"y\", yOrigin + 3).attr(\"transform\", \"translate(14,14) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n }\n }\n }\n}, \"drawCommitTags\");\nvar getCommitClassType = /* @__PURE__ */ __name((commit2) => {\n const commitSymbolType = commit2.customType ?? commit2.type;\n switch (commitSymbolType) {\n case commitType.NORMAL:\n return \"commit-normal\";\n case commitType.REVERSE:\n return \"commit-reverse\";\n case commitType.HIGHLIGHT:\n return \"commit-highlight\";\n case commitType.MERGE:\n return \"commit-merge\";\n case commitType.CHERRY_PICK:\n return \"commit-cherry-pick\";\n default:\n return \"commit-normal\";\n }\n}, \"getCommitClassType\");\nvar calculatePosition = /* @__PURE__ */ __name((commit2, dir2, pos, commitPos2) => {\n const defaultCommitPosition = { x: 0, y: 0 };\n if (commit2.parents.length > 0) {\n const closestParent = findClosestParent(commit2.parents);\n if (closestParent) {\n const parentPosition = commitPos2.get(closestParent) ?? defaultCommitPosition;\n if (dir2 === \"TB\") {\n return parentPosition.y + COMMIT_STEP;\n } else if (dir2 === \"BT\") {\n const currentPosition = commitPos2.get(commit2.id) ?? defaultCommitPosition;\n return currentPosition.y - COMMIT_STEP;\n } else {\n return parentPosition.x + COMMIT_STEP;\n }\n }\n } else {\n if (dir2 === \"TB\") {\n return defaultPos;\n } else if (dir2 === \"BT\") {\n const currentPosition = commitPos2.get(commit2.id) ?? defaultCommitPosition;\n return currentPosition.y - COMMIT_STEP;\n } else {\n return 0;\n }\n }\n return 0;\n}, \"calculatePosition\");\nvar getCommitPosition = /* @__PURE__ */ __name((commit2, pos, isParallelCommits) => {\n const posWithOffset = dir === \"BT\" && isParallelCommits ? pos : pos + LAYOUT_OFFSET;\n const y = dir === \"TB\" || dir === \"BT\" ? posWithOffset : branchPos.get(commit2.branch)?.pos;\n const x = dir === \"TB\" || dir === \"BT\" ? branchPos.get(commit2.branch)?.pos : posWithOffset;\n if (x === void 0 || y === void 0) {\n throw new Error(`Position were undefined for commit ${commit2.id}`);\n }\n return { x, y, posWithOffset };\n}, \"getCommitPosition\");\nvar drawCommits = /* @__PURE__ */ __name((svg, commits, modifyGraph) => {\n if (!DEFAULT_GITGRAPH_CONFIG2) {\n throw new Error(\"GitGraph config not found\");\n }\n const gBullets = svg.append(\"g\").attr(\"class\", \"commit-bullets\");\n const gLabels = svg.append(\"g\").attr(\"class\", \"commit-labels\");\n let pos = dir === \"TB\" || dir === \"BT\" ? defaultPos : 0;\n const keys = [...commits.keys()];\n const isParallelCommits = DEFAULT_GITGRAPH_CONFIG2?.parallelCommits ?? false;\n const sortKeys = /* @__PURE__ */ __name((a, b) => {\n const seqA = commits.get(a)?.seq;\n const seqB = commits.get(b)?.seq;\n return seqA !== void 0 && seqB !== void 0 ? seqA - seqB : 0;\n }, \"sortKeys\");\n let sortedKeys = keys.sort(sortKeys);\n if (dir === \"BT\") {\n if (isParallelCommits) {\n setParallelBTPos(sortedKeys, commits, pos);\n }\n sortedKeys = sortedKeys.reverse();\n }\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (!commit2) {\n throw new Error(`Commit not found for key ${key}`);\n }\n if (isParallelCommits) {\n pos = calculatePosition(commit2, dir, pos, commitPos);\n }\n const commitPosition = getCommitPosition(commit2, pos, isParallelCommits);\n if (modifyGraph) {\n const typeClass = getCommitClassType(commit2);\n const commitSymbolType = commit2.customType ?? commit2.type;\n const branchIndex = branchPos.get(commit2.branch)?.index ?? 0;\n drawCommitBullet(gBullets, commit2, commitPosition, typeClass, branchIndex, commitSymbolType);\n drawCommitLabel(gLabels, commit2, commitPosition, pos);\n drawCommitTags(gLabels, commit2, commitPosition, pos);\n }\n if (dir === \"TB\" || dir === \"BT\") {\n commitPos.set(commit2.id, { x: commitPosition.x, y: commitPosition.posWithOffset });\n } else {\n commitPos.set(commit2.id, { x: commitPosition.posWithOffset, y: commitPosition.y });\n }\n pos = dir === \"BT\" && isParallelCommits ? pos + COMMIT_STEP : pos + COMMIT_STEP + LAYOUT_OFFSET;\n if (pos > maxPos) {\n maxPos = pos;\n }\n });\n}, \"drawCommits\");\nvar shouldRerouteArrow = /* @__PURE__ */ __name((commitA, commitB, p1, p2, allCommits) => {\n const commitBIsFurthest = dir === \"TB\" || dir === \"BT\" ? p1.x < p2.x : p1.y < p2.y;\n const branchToGetCurve = commitBIsFurthest ? commitB.branch : commitA.branch;\n const isOnBranchToGetCurve = /* @__PURE__ */ __name((x) => x.branch === branchToGetCurve, \"isOnBranchToGetCurve\");\n const isBetweenCommits = /* @__PURE__ */ __name((x) => x.seq > commitA.seq && x.seq < commitB.seq, \"isBetweenCommits\");\n return [...allCommits.values()].some((commitX) => {\n return isBetweenCommits(commitX) && isOnBranchToGetCurve(commitX);\n });\n}, \"shouldRerouteArrow\");\nvar findLane = /* @__PURE__ */ __name((y1, y2, depth = 0) => {\n const candidate = y1 + Math.abs(y1 - y2) / 2;\n if (depth > 5) {\n return candidate;\n }\n const ok = lanes.every((lane) => Math.abs(lane - candidate) >= 10);\n if (ok) {\n lanes.push(candidate);\n return candidate;\n }\n const diff = Math.abs(y1 - y2);\n return findLane(y1, y2 - diff / 5, depth + 1);\n}, \"findLane\");\nvar drawArrow = /* @__PURE__ */ __name((svg, commitA, commitB, allCommits) => {\n const p1 = commitPos.get(commitA.id);\n const p2 = commitPos.get(commitB.id);\n if (p1 === void 0 || p2 === void 0) {\n throw new Error(`Commit positions not found for commits ${commitA.id} and ${commitB.id}`);\n }\n const arrowNeedsRerouting = shouldRerouteArrow(commitA, commitB, p1, p2, allCommits);\n let arc = \"\";\n let arc2 = \"\";\n let radius = 0;\n let offset = 0;\n let colorClassNum = branchPos.get(commitB.branch)?.index;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n }\n let lineDef;\n if (arrowNeedsRerouting) {\n arc = \"A 10 10, 0, 0, 0,\";\n arc2 = \"A 10 10, 0, 0, 1,\";\n radius = 10;\n offset = 10;\n const lineY = p1.y < p2.y ? findLane(p1.y, p2.y) : findLane(p2.y, p1.y);\n const lineX = p1.x < p2.x ? findLane(p1.x, p2.x) : findLane(p2.x, p1.x);\n if (dir === \"TB\") {\n if (p1.x < p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc2} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc2} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n } else if (dir === \"BT\") {\n if (p1.x < p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc2} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc2} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY - radius} ${arc} ${p1.x + offset} ${lineY} L ${p2.x - radius} ${lineY} ${arc2} ${p2.x} ${lineY + offset} L ${p2.x} ${p2.y}`;\n } else {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY + radius} ${arc2} ${p1.x + offset} ${lineY} L ${p2.x - radius} ${lineY} ${arc} ${p2.x} ${lineY - offset} L ${p2.x} ${p2.y}`;\n }\n }\n } else {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (dir === \"TB\") {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x > p2.x) {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc2} ${p1.x - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x + radius} ${p1.y} ${arc} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else if (dir === \"BT\") {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc2} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x > p2.x) {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc} ${p1.x - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.y > p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc2} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.y === p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n }\n }\n if (lineDef === void 0) {\n throw new Error(\"Line definition not found\");\n }\n svg.append(\"path\").attr(\"d\", lineDef).attr(\"class\", \"arrow arrow\" + colorClassNum % THEME_COLOR_LIMIT);\n}, \"drawArrow\");\nvar drawArrows = /* @__PURE__ */ __name((svg, commits) => {\n const gArrows = svg.append(\"g\").attr(\"class\", \"commit-arrows\");\n [...commits.keys()].forEach((key) => {\n const commit2 = commits.get(key);\n if (commit2.parents && commit2.parents.length > 0) {\n commit2.parents.forEach((parent) => {\n drawArrow(gArrows, commits.get(parent), commit2, commits);\n });\n }\n });\n}, \"drawArrows\");\nvar drawBranches = /* @__PURE__ */ __name((svg, branches) => {\n const g = svg.append(\"g\");\n branches.forEach((branch2, index) => {\n const adjustIndexForTheme = index % THEME_COLOR_LIMIT;\n const pos = branchPos.get(branch2.name)?.pos;\n if (pos === void 0) {\n throw new Error(`Position not found for branch ${branch2.name}`);\n }\n const line = g.append(\"line\");\n line.attr(\"x1\", 0);\n line.attr(\"y1\", pos);\n line.attr(\"x2\", maxPos);\n line.attr(\"y2\", pos);\n line.attr(\"class\", \"branch branch\" + adjustIndexForTheme);\n if (dir === \"TB\") {\n line.attr(\"y1\", defaultPos);\n line.attr(\"x1\", pos);\n line.attr(\"y2\", maxPos);\n line.attr(\"x2\", pos);\n } else if (dir === \"BT\") {\n line.attr(\"y1\", maxPos);\n line.attr(\"x1\", pos);\n line.attr(\"y2\", defaultPos);\n line.attr(\"x2\", pos);\n }\n lanes.push(pos);\n const name = branch2.name;\n const labelElement = drawText(name);\n const bkg = g.insert(\"rect\");\n const branchLabel = g.insert(\"g\").attr(\"class\", \"branchLabel\");\n const label = branchLabel.insert(\"g\").attr(\"class\", \"label branch-label\" + adjustIndexForTheme);\n label.node().appendChild(labelElement);\n const bbox = labelElement.getBBox();\n bkg.attr(\"class\", \"branchLabelBkg label\" + adjustIndexForTheme).attr(\"rx\", 4).attr(\"ry\", 4).attr(\"x\", -bbox.width - 4 - (DEFAULT_GITGRAPH_CONFIG2?.rotateCommitLabel === true ? 30 : 0)).attr(\"y\", -bbox.height / 2 + 8).attr(\"width\", bbox.width + 18).attr(\"height\", bbox.height + 4);\n label.attr(\n \"transform\",\n \"translate(\" + (-bbox.width - 14 - (DEFAULT_GITGRAPH_CONFIG2?.rotateCommitLabel === true ? 30 : 0)) + \", \" + (pos - bbox.height / 2 - 1) + \")\"\n );\n if (dir === \"TB\") {\n bkg.attr(\"x\", pos - bbox.width / 2 - 10).attr(\"y\", 0);\n label.attr(\"transform\", \"translate(\" + (pos - bbox.width / 2 - 5) + \", 0)\");\n } else if (dir === \"BT\") {\n bkg.attr(\"x\", pos - bbox.width / 2 - 10).attr(\"y\", maxPos);\n label.attr(\"transform\", \"translate(\" + (pos - bbox.width / 2 - 5) + \", \" + maxPos + \")\");\n } else {\n bkg.attr(\"transform\", \"translate(-19, \" + (pos - bbox.height / 2) + \")\");\n }\n });\n}, \"drawBranches\");\nvar setBranchPosition = /* @__PURE__ */ __name(function(name, pos, index, bbox, rotateCommitLabel) {\n branchPos.set(name, { pos, index });\n pos += 50 + (rotateCommitLabel ? 40 : 0) + (dir === \"TB\" || dir === \"BT\" ? bbox.width / 2 : 0);\n return pos;\n}, \"setBranchPosition\");\nvar draw = /* @__PURE__ */ __name(function(txt, id, ver, diagObj) {\n clear3();\n log.debug(\"in gitgraph renderer\", txt + \"\\n\", \"id:\", id, ver);\n if (!DEFAULT_GITGRAPH_CONFIG2) {\n throw new Error(\"GitGraph config not found\");\n }\n const rotateCommitLabel = DEFAULT_GITGRAPH_CONFIG2.rotateCommitLabel ?? false;\n const db2 = diagObj.db;\n allCommitsDict = db2.getCommits();\n const branches = db2.getBranchesAsObjArray();\n dir = db2.getDirection();\n const diagram2 = select(`[id=\"${id}\"]`);\n let pos = 0;\n branches.forEach((branch2, index) => {\n const labelElement = drawText(branch2.name);\n const g = diagram2.append(\"g\");\n const branchLabel = g.insert(\"g\").attr(\"class\", \"branchLabel\");\n const label = branchLabel.insert(\"g\").attr(\"class\", \"label branch-label\");\n label.node()?.appendChild(labelElement);\n const bbox = labelElement.getBBox();\n pos = setBranchPosition(branch2.name, pos, index, bbox, rotateCommitLabel);\n label.remove();\n branchLabel.remove();\n g.remove();\n });\n drawCommits(diagram2, allCommitsDict, false);\n if (DEFAULT_GITGRAPH_CONFIG2.showBranches) {\n drawBranches(diagram2, branches);\n }\n drawArrows(diagram2, allCommitsDict);\n drawCommits(diagram2, allCommitsDict, true);\n utils_default.insertTitle(\n diagram2,\n \"gitTitleText\",\n DEFAULT_GITGRAPH_CONFIG2.titleTopMargin ?? 0,\n db2.getDiagramTitle()\n );\n setupGraphViewbox(\n void 0,\n diagram2,\n DEFAULT_GITGRAPH_CONFIG2.diagramPadding,\n DEFAULT_GITGRAPH_CONFIG2.useMaxWidth\n );\n}, \"draw\");\nvar gitGraphRenderer_default = {\n draw\n};\nif (void 0) {\n const { it, expect, describe } = void 0;\n describe(\"drawText\", () => {\n it(\"should drawText\", () => {\n const svgLabel = drawText(\"main\");\n expect(svgLabel).toBeDefined();\n expect(svgLabel.children[0].innerHTML).toBe(\"main\");\n });\n });\n describe(\"branchPosition\", () => {\n const bbox = {\n x: 0,\n y: 0,\n width: 10,\n height: 10,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n toJSON: /* @__PURE__ */ __name(() => \"\", \"toJSON\")\n };\n it(\"should setBranchPositions LR with two branches\", () => {\n dir = \"LR\";\n const pos = setBranchPosition(\"main\", 0, 0, bbox, true);\n expect(pos).toBe(90);\n expect(branchPos.get(\"main\")).toEqual({ pos: 0, index: 0 });\n const posNext = setBranchPosition(\"develop\", pos, 1, bbox, true);\n expect(posNext).toBe(180);\n expect(branchPos.get(\"develop\")).toEqual({ pos, index: 1 });\n });\n it(\"should setBranchPositions TB with two branches\", () => {\n dir = \"TB\";\n bbox.width = 34.9921875;\n const pos = setBranchPosition(\"main\", 0, 0, bbox, true);\n expect(pos).toBe(107.49609375);\n expect(branchPos.get(\"main\")).toEqual({ pos: 0, index: 0 });\n bbox.width = 56.421875;\n const posNext = setBranchPosition(\"develop\", pos, 1, bbox, true);\n expect(posNext).toBe(225.70703125);\n expect(branchPos.get(\"develop\")).toEqual({ pos, index: 1 });\n });\n });\n describe(\"commitPosition\", () => {\n const commits = /* @__PURE__ */ new Map([\n [\n \"commitZero\",\n {\n id: \"ZERO\",\n message: \"\",\n seq: 0,\n type: commitType.NORMAL,\n tags: [],\n parents: [],\n branch: \"main\"\n }\n ],\n [\n \"commitA\",\n {\n id: \"A\",\n message: \"\",\n seq: 1,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"ZERO\"],\n branch: \"feature\"\n }\n ],\n [\n \"commitB\",\n {\n id: \"B\",\n message: \"\",\n seq: 2,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"A\"],\n branch: \"feature\"\n }\n ],\n [\n \"commitM\",\n {\n id: \"M\",\n message: \"merged branch feature into main\",\n seq: 3,\n type: commitType.MERGE,\n tags: [],\n parents: [\"ZERO\", \"B\"],\n branch: \"main\",\n customId: true\n }\n ],\n [\n \"commitC\",\n {\n id: \"C\",\n message: \"\",\n seq: 4,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"ZERO\"],\n branch: \"release\"\n }\n ],\n [\n \"commit5_8928ea0\",\n {\n id: \"5-8928ea0\",\n message: \"cherry-picked [object Object] into release\",\n seq: 5,\n type: commitType.CHERRY_PICK,\n tags: [],\n parents: [\"C\", \"M\"],\n branch: \"release\"\n }\n ],\n [\n \"commitD\",\n {\n id: \"D\",\n message: \"\",\n seq: 6,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"5-8928ea0\"],\n branch: \"release\"\n }\n ],\n [\n \"commit7_ed848ba\",\n {\n id: \"7-ed848ba\",\n message: \"cherry-picked [object Object] into release\",\n seq: 7,\n type: commitType.CHERRY_PICK,\n tags: [],\n parents: [\"D\", \"M\"],\n branch: \"release\"\n }\n ]\n ]);\n let pos = 0;\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"feature\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"release\", { pos: 224.03515625, index: 2 });\n describe(\"TB\", () => {\n pos = 30;\n dir = \"TB\";\n const expectedCommitPositionTB = /* @__PURE__ */ new Map([\n [\"commitZero\", { x: 0, y: 40, posWithOffset: 40 }],\n [\"commitA\", { x: 107.49609375, y: 90, posWithOffset: 90 }],\n [\"commitB\", { x: 107.49609375, y: 140, posWithOffset: 140 }],\n [\"commitM\", { x: 0, y: 190, posWithOffset: 190 }],\n [\"commitC\", { x: 224.03515625, y: 240, posWithOffset: 240 }],\n [\"commit5_8928ea0\", { x: 224.03515625, y: 290, posWithOffset: 290 }],\n [\"commitD\", { x: 224.03515625, y: 340, posWithOffset: 340 }],\n [\"commit7_ed848ba\", { x: 224.03515625, y: 390, posWithOffset: 390 }]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct position for commit ${key}`, () => {\n const position = getCommitPosition(commit2, pos, false);\n expect(position).toEqual(expectedCommitPositionTB.get(key));\n pos += 50;\n });\n });\n });\n describe(\"LR\", () => {\n let pos2 = 30;\n dir = \"LR\";\n const expectedCommitPositionLR = /* @__PURE__ */ new Map([\n [\"commitZero\", { x: 0, y: 40, posWithOffset: 40 }],\n [\"commitA\", { x: 107.49609375, y: 90, posWithOffset: 90 }],\n [\"commitB\", { x: 107.49609375, y: 140, posWithOffset: 140 }],\n [\"commitM\", { x: 0, y: 190, posWithOffset: 190 }],\n [\"commitC\", { x: 224.03515625, y: 240, posWithOffset: 240 }],\n [\"commit5_8928ea0\", { x: 224.03515625, y: 290, posWithOffset: 290 }],\n [\"commitD\", { x: 224.03515625, y: 340, posWithOffset: 340 }],\n [\"commit7_ed848ba\", { x: 224.03515625, y: 390, posWithOffset: 390 }]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct position for commit ${key}`, () => {\n const position = getCommitPosition(commit2, pos2, false);\n expect(position).toEqual(expectedCommitPositionLR.get(key));\n pos2 += 50;\n });\n });\n });\n describe(\"getCommitClassType\", () => {\n const expectedCommitClassType = /* @__PURE__ */ new Map([\n [\"commitZero\", \"commit-normal\"],\n [\"commitA\", \"commit-normal\"],\n [\"commitB\", \"commit-normal\"],\n [\"commitM\", \"commit-merge\"],\n [\"commitC\", \"commit-normal\"],\n [\"commit5_8928ea0\", \"commit-cherry-pick\"],\n [\"commitD\", \"commit-normal\"],\n [\"commit7_ed848ba\", \"commit-cherry-pick\"]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct class type for commit ${key}`, () => {\n const classType = getCommitClassType(commit2);\n expect(classType).toBe(expectedCommitClassType.get(key));\n });\n });\n });\n });\n describe(\"building BT parallel commit diagram\", () => {\n const commits = /* @__PURE__ */ new Map([\n [\n \"1-abcdefg\",\n {\n id: \"1-abcdefg\",\n message: \"\",\n seq: 0,\n type: 0,\n tags: [],\n parents: [],\n branch: \"main\"\n }\n ],\n [\n \"2-abcdefg\",\n {\n id: \"2-abcdefg\",\n message: \"\",\n seq: 1,\n type: 0,\n tags: [],\n parents: [\"1-abcdefg\"],\n branch: \"main\"\n }\n ],\n [\n \"3-abcdefg\",\n {\n id: \"3-abcdefg\",\n message: \"\",\n seq: 2,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"develop\"\n }\n ],\n [\n \"4-abcdefg\",\n {\n id: \"4-abcdefg\",\n message: \"\",\n seq: 3,\n type: 0,\n tags: [],\n parents: [\"3-abcdefg\"],\n branch: \"develop\"\n }\n ],\n [\n \"5-abcdefg\",\n {\n id: \"5-abcdefg\",\n message: \"\",\n seq: 4,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"feature\"\n }\n ],\n [\n \"6-abcdefg\",\n {\n id: \"6-abcdefg\",\n message: \"\",\n seq: 5,\n type: 0,\n tags: [],\n parents: [\"5-abcdefg\"],\n branch: \"feature\"\n }\n ],\n [\n \"7-abcdefg\",\n {\n id: \"7-abcdefg\",\n message: \"\",\n seq: 6,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"main\"\n }\n ],\n [\n \"8-abcdefg\",\n {\n id: \"8-abcdefg\",\n message: \"\",\n seq: 7,\n type: 0,\n tags: [],\n parents: [\"7-abcdefg\"],\n branch: \"main\"\n }\n ]\n ]);\n const expectedCommitPosition = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", { x: 0, y: 40 }],\n [\"2-abcdefg\", { x: 0, y: 90 }],\n [\"3-abcdefg\", { x: 107.49609375, y: 140 }],\n [\"4-abcdefg\", { x: 107.49609375, y: 190 }],\n [\"5-abcdefg\", { x: 225.70703125, y: 140 }],\n [\"6-abcdefg\", { x: 225.70703125, y: 190 }],\n [\"7-abcdefg\", { x: 0, y: 140 }],\n [\"8-abcdefg\", { x: 0, y: 190 }]\n ]);\n const expectedCommitPositionAfterParallel = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", { x: 0, y: 210 }],\n [\"2-abcdefg\", { x: 0, y: 160 }],\n [\"3-abcdefg\", { x: 107.49609375, y: 110 }],\n [\"4-abcdefg\", { x: 107.49609375, y: 60 }],\n [\"5-abcdefg\", { x: 225.70703125, y: 110 }],\n [\"6-abcdefg\", { x: 225.70703125, y: 60 }],\n [\"7-abcdefg\", { x: 0, y: 110 }],\n [\"8-abcdefg\", { x: 0, y: 60 }]\n ]);\n const expectedCommitCurrentPosition = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", 30],\n [\"2-abcdefg\", 80],\n [\"3-abcdefg\", 130],\n [\"4-abcdefg\", 180],\n [\"5-abcdefg\", 130],\n [\"6-abcdefg\", 180],\n [\"7-abcdefg\", 130],\n [\"8-abcdefg\", 180]\n ]);\n const sortedKeys = [...expectedCommitPosition.keys()];\n it(\"should get the correct commit position and current position\", () => {\n dir = \"BT\";\n let curPos = 30;\n commitPos.clear();\n branchPos.clear();\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"develop\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"feature\", { pos: 225.70703125, index: 2 });\n DEFAULT_GITGRAPH_CONFIG2.parallelCommits = true;\n commits.forEach((commit2, key) => {\n if (commit2.parents.length > 0) {\n curPos = calculateCommitPosition(commit2);\n }\n const position = setCommitPosition(commit2, curPos);\n expect(position).toEqual(expectedCommitPosition.get(key));\n expect(curPos).toEqual(expectedCommitCurrentPosition.get(key));\n });\n });\n it(\"should get the correct commit position after parallel commits\", () => {\n commitPos.clear();\n branchPos.clear();\n dir = \"BT\";\n const curPos = 30;\n commitPos.clear();\n branchPos.clear();\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"develop\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"feature\", { pos: 225.70703125, index: 2 });\n setParallelBTPos(sortedKeys, commits, curPos);\n sortedKeys.forEach((commit2) => {\n const position = commitPos.get(commit2);\n expect(position).toEqual(expectedCommitPositionAfterParallel.get(commit2));\n });\n });\n });\n DEFAULT_GITGRAPH_CONFIG2.parallelCommits = false;\n it(\"add\", () => {\n commitPos.set(\"parent1\", { x: 1, y: 1 });\n commitPos.set(\"parent2\", { x: 2, y: 2 });\n commitPos.set(\"parent3\", { x: 3, y: 3 });\n dir = \"LR\";\n const parents = [\"parent1\", \"parent2\", \"parent3\"];\n const closestParent = findClosestParent(parents);\n expect(closestParent).toBe(\"parent3\");\n commitPos.clear();\n });\n}\n\n// src/diagrams/git/styles.js\nvar getStyles = /* @__PURE__ */ __name((options) => `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0, 1, 2, 3, 4, 5, 6, 7].map(\n (i) => `\n .branch-label${i} { fill: ${options[\"gitBranchLabel\" + i]}; }\n .commit${i} { stroke: ${options[\"git\" + i]}; fill: ${options[\"git\" + i]}; }\n .commit-highlight${i} { stroke: ${options[\"gitInv\" + i]}; fill: ${options[\"gitInv\" + i]}; }\n .label${i} { fill: ${options[\"git\" + i]}; }\n .arrow${i} { stroke: ${options[\"git\" + i]}; }\n `\n).join(\"\\n\")}\n\n .branch {\n stroke-width: 1;\n stroke: ${options.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${options.commitLabelFontSize}; fill: ${options.commitLabelColor};}\n .commit-label-bkg { font-size: ${options.commitLabelFontSize}; fill: ${options.commitLabelBackground}; opacity: 0.5; }\n .tag-label { font-size: ${options.tagLabelFontSize}; fill: ${options.tagLabelColor};}\n .tag-label-bkg { fill: ${options.tagLabelBackground}; stroke: ${options.tagLabelBorder}; }\n .tag-hole { fill: ${options.textColor}; }\n\n .commit-merge {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n }\n .commit-reverse {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n`, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/git/gitGraphDiagram.ts\nvar diagram = {\n parser,\n db,\n renderer: gitGraphRenderer_default,\n styles: styles_default\n};\nexport {\n diagram\n};\n"],"names":["commitType","DEFAULT_GITGRAPH_CONFIG","defaultConfig_default","getConfig3","__name","cleanAndMerge","getConfig","state","ImperativeState","config","mainBranchName","mainBranchOrder","getID","random","uniqBy","list","fn","recordMap","out","item","key","setDirection","dir2","setOptions","rawOptString","log","e","getOptions","commit","commitDB","msg","id","type","tags","common_default","tag","newCommit","branch","branchDB","name","order","checkout","merge","mergeDB","otherBranch","customId","overrideType","customTags","currentBranchCheck","otherBranchCheck","currentCommit","otherCommit","error","verifiedBranch","commit2","cherryPick","cherryPickDB","sourceId","targetId","parentCommitId","sourceCommit","sourceCommitBranch","currentCommitId","branch2","upsert","arr","newVal","index","prettyPrintCommitHistory","commitArr","commit3","line","c","label","prettyPrint","node","getCommitsArray","clear2","clear","getBranchesAsObjArray","branchConfig","i","a","b","getBranches","getCommits","o","getCurrentBranch","getDirection","getHead","db","setAccTitle","getAccTitle","getAccDescription","setAccDescription","setDiagramTitle","getDiagramTitle","populate","ast","db2","populateCommonDb","statement","parseStatement","parser2","stmt","parseCommit","parseBranch","parseMerge","parseCheckout","parseCherryPicking","merge2","checkout2","cherryPicking","parser","input","parse","DEFAULT_CONFIG","getConfig2","DEFAULT_GITGRAPH_CONFIG2","LAYOUT_OFFSET","COMMIT_STEP","PX","PY","THEME_COLOR_LIMIT","branchPos","commitPos","defaultPos","allCommitsDict","lanes","maxPos","dir","clear3","drawText","txt","svgLabel","row","tspan","findClosestParent","parents","closestParent","comparisonFunc","targetPosition","parent","parentPosition","findClosestParentBT","maxPosition","setParallelBTPos","sortedKeys","commits","defaultPos2","curPos","roots","calculateCommitPosition","setCommitPosition","setRootPosition","x","y","findClosestParentPos","p","closestParentPos","drawCommitBullet","gBullets","commitPosition","typeClass","branchIndex","commitSymbolType","circle","circle2","drawCommitLabel","gLabels","pos","wrapper","labelBkg","text","bbox","r_x","r_y","drawCommitTags","yOffset","maxTagBboxWidth","maxTagBboxHeight","tagElements","tagValue","rect","hole","tagBbox","yOffset2","h2","ly","yOrigin","getCommitClassType","calculatePosition","commitPos2","defaultCommitPosition","getCommitPosition","isParallelCommits","posWithOffset","drawCommits","svg","modifyGraph","keys","sortKeys","seqA","seqB","shouldRerouteArrow","commitA","commitB","p1","p2","allCommits","branchToGetCurve","isOnBranchToGetCurve","isBetweenCommits","commitX","findLane","y1","y2","depth","candidate","lane","diff","drawArrow","arrowNeedsRerouting","arc","arc2","radius","offset","colorClassNum","lineDef","lineY","lineX","drawArrows","gArrows","drawBranches","branches","g","adjustIndexForTheme","labelElement","bkg","setBranchPosition","rotateCommitLabel","draw","ver","diagObj","diagram2","select","branchLabel","utils_default","setupGraphViewbox","gitGraphRenderer_default","getStyles","options","styles_default","diagram"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { ar as N, as as v, at as f, au as b, av as E } from "./mermaid.core-cSWK5aGH.js";
|
|
2
|
+
import { a as j, c as P, k as _, f as g, d, i as l, v as p, r as D } from "./_baseUniq-s5uZhHMt.js";
|
|
3
|
+
var w = N(function(o) {
|
|
4
|
+
return j(P(o, 1, v, !0));
|
|
5
|
+
}), F = "\0", a = "\0", O = "";
|
|
6
|
+
class L {
|
|
7
|
+
constructor(e = {}) {
|
|
8
|
+
this._isDirected = Object.prototype.hasOwnProperty.call(e, "directed") ? e.directed : !0, this._isMultigraph = Object.prototype.hasOwnProperty.call(e, "multigraph") ? e.multigraph : !1, this._isCompound = Object.prototype.hasOwnProperty.call(e, "compound") ? e.compound : !1, this._label = void 0, this._defaultNodeLabelFn = f(void 0), this._defaultEdgeLabelFn = f(void 0), this._nodes = {}, this._isCompound && (this._parent = {}, this._children = {}, this._children[a] = {}), this._in = {}, this._preds = {}, this._out = {}, this._sucs = {}, this._edgeObjs = {}, this._edgeLabels = {};
|
|
9
|
+
}
|
|
10
|
+
/* === Graph functions ========= */
|
|
11
|
+
isDirected() {
|
|
12
|
+
return this._isDirected;
|
|
13
|
+
}
|
|
14
|
+
isMultigraph() {
|
|
15
|
+
return this._isMultigraph;
|
|
16
|
+
}
|
|
17
|
+
isCompound() {
|
|
18
|
+
return this._isCompound;
|
|
19
|
+
}
|
|
20
|
+
setGraph(e) {
|
|
21
|
+
return this._label = e, this;
|
|
22
|
+
}
|
|
23
|
+
graph() {
|
|
24
|
+
return this._label;
|
|
25
|
+
}
|
|
26
|
+
/* === Node functions ========== */
|
|
27
|
+
setDefaultNodeLabel(e) {
|
|
28
|
+
return b(e) || (e = f(e)), this._defaultNodeLabelFn = e, this;
|
|
29
|
+
}
|
|
30
|
+
nodeCount() {
|
|
31
|
+
return this._nodeCount;
|
|
32
|
+
}
|
|
33
|
+
nodes() {
|
|
34
|
+
return _(this._nodes);
|
|
35
|
+
}
|
|
36
|
+
sources() {
|
|
37
|
+
var e = this;
|
|
38
|
+
return g(this.nodes(), function(t) {
|
|
39
|
+
return E(e._in[t]);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
sinks() {
|
|
43
|
+
var e = this;
|
|
44
|
+
return g(this.nodes(), function(t) {
|
|
45
|
+
return E(e._out[t]);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
setNodes(e, t) {
|
|
49
|
+
var s = arguments, i = this;
|
|
50
|
+
return d(e, function(r) {
|
|
51
|
+
s.length > 1 ? i.setNode(r, t) : i.setNode(r);
|
|
52
|
+
}), this;
|
|
53
|
+
}
|
|
54
|
+
setNode(e, t) {
|
|
55
|
+
return Object.prototype.hasOwnProperty.call(this._nodes, e) ? (arguments.length > 1 && (this._nodes[e] = t), this) : (this._nodes[e] = arguments.length > 1 ? t : this._defaultNodeLabelFn(e), this._isCompound && (this._parent[e] = a, this._children[e] = {}, this._children[a][e] = !0), this._in[e] = {}, this._preds[e] = {}, this._out[e] = {}, this._sucs[e] = {}, ++this._nodeCount, this);
|
|
56
|
+
}
|
|
57
|
+
node(e) {
|
|
58
|
+
return this._nodes[e];
|
|
59
|
+
}
|
|
60
|
+
hasNode(e) {
|
|
61
|
+
return Object.prototype.hasOwnProperty.call(this._nodes, e);
|
|
62
|
+
}
|
|
63
|
+
removeNode(e) {
|
|
64
|
+
if (Object.prototype.hasOwnProperty.call(this._nodes, e)) {
|
|
65
|
+
var t = (s) => this.removeEdge(this._edgeObjs[s]);
|
|
66
|
+
delete this._nodes[e], this._isCompound && (this._removeFromParentsChildList(e), delete this._parent[e], d(this.children(e), (s) => {
|
|
67
|
+
this.setParent(s);
|
|
68
|
+
}), delete this._children[e]), d(_(this._in[e]), t), delete this._in[e], delete this._preds[e], d(_(this._out[e]), t), delete this._out[e], delete this._sucs[e], --this._nodeCount;
|
|
69
|
+
}
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
setParent(e, t) {
|
|
73
|
+
if (!this._isCompound)
|
|
74
|
+
throw new Error("Cannot set parent in a non-compound graph");
|
|
75
|
+
if (l(t))
|
|
76
|
+
t = a;
|
|
77
|
+
else {
|
|
78
|
+
t += "";
|
|
79
|
+
for (var s = t; !l(s); s = this.parent(s))
|
|
80
|
+
if (s === e)
|
|
81
|
+
throw new Error("Setting " + t + " as parent of " + e + " would create a cycle");
|
|
82
|
+
this.setNode(t);
|
|
83
|
+
}
|
|
84
|
+
return this.setNode(e), this._removeFromParentsChildList(e), this._parent[e] = t, this._children[t][e] = !0, this;
|
|
85
|
+
}
|
|
86
|
+
_removeFromParentsChildList(e) {
|
|
87
|
+
delete this._children[this._parent[e]][e];
|
|
88
|
+
}
|
|
89
|
+
parent(e) {
|
|
90
|
+
if (this._isCompound) {
|
|
91
|
+
var t = this._parent[e];
|
|
92
|
+
if (t !== a)
|
|
93
|
+
return t;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
children(e) {
|
|
97
|
+
if (l(e) && (e = a), this._isCompound) {
|
|
98
|
+
var t = this._children[e];
|
|
99
|
+
if (t)
|
|
100
|
+
return _(t);
|
|
101
|
+
} else {
|
|
102
|
+
if (e === a)
|
|
103
|
+
return this.nodes();
|
|
104
|
+
if (this.hasNode(e))
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
predecessors(e) {
|
|
109
|
+
var t = this._preds[e];
|
|
110
|
+
if (t)
|
|
111
|
+
return _(t);
|
|
112
|
+
}
|
|
113
|
+
successors(e) {
|
|
114
|
+
var t = this._sucs[e];
|
|
115
|
+
if (t)
|
|
116
|
+
return _(t);
|
|
117
|
+
}
|
|
118
|
+
neighbors(e) {
|
|
119
|
+
var t = this.predecessors(e);
|
|
120
|
+
if (t)
|
|
121
|
+
return w(t, this.successors(e));
|
|
122
|
+
}
|
|
123
|
+
isLeaf(e) {
|
|
124
|
+
var t;
|
|
125
|
+
return this.isDirected() ? t = this.successors(e) : t = this.neighbors(e), t.length === 0;
|
|
126
|
+
}
|
|
127
|
+
filterNodes(e) {
|
|
128
|
+
var t = new this.constructor({
|
|
129
|
+
directed: this._isDirected,
|
|
130
|
+
multigraph: this._isMultigraph,
|
|
131
|
+
compound: this._isCompound
|
|
132
|
+
});
|
|
133
|
+
t.setGraph(this.graph());
|
|
134
|
+
var s = this;
|
|
135
|
+
d(this._nodes, function(n, h) {
|
|
136
|
+
e(h) && t.setNode(h, n);
|
|
137
|
+
}), d(this._edgeObjs, function(n) {
|
|
138
|
+
t.hasNode(n.v) && t.hasNode(n.w) && t.setEdge(n, s.edge(n));
|
|
139
|
+
});
|
|
140
|
+
var i = {};
|
|
141
|
+
function r(n) {
|
|
142
|
+
var h = s.parent(n);
|
|
143
|
+
return h === void 0 || t.hasNode(h) ? (i[n] = h, h) : h in i ? i[h] : r(h);
|
|
144
|
+
}
|
|
145
|
+
return this._isCompound && d(t.nodes(), function(n) {
|
|
146
|
+
t.setParent(n, r(n));
|
|
147
|
+
}), t;
|
|
148
|
+
}
|
|
149
|
+
/* === Edge functions ========== */
|
|
150
|
+
setDefaultEdgeLabel(e) {
|
|
151
|
+
return b(e) || (e = f(e)), this._defaultEdgeLabelFn = e, this;
|
|
152
|
+
}
|
|
153
|
+
edgeCount() {
|
|
154
|
+
return this._edgeCount;
|
|
155
|
+
}
|
|
156
|
+
edges() {
|
|
157
|
+
return p(this._edgeObjs);
|
|
158
|
+
}
|
|
159
|
+
setPath(e, t) {
|
|
160
|
+
var s = this, i = arguments;
|
|
161
|
+
return D(e, function(r, n) {
|
|
162
|
+
return i.length > 1 ? s.setEdge(r, n, t) : s.setEdge(r, n), n;
|
|
163
|
+
}), this;
|
|
164
|
+
}
|
|
165
|
+
/*
|
|
166
|
+
* setEdge(v, w, [value, [name]])
|
|
167
|
+
* setEdge({ v, w, [name] }, [value])
|
|
168
|
+
*/
|
|
169
|
+
setEdge() {
|
|
170
|
+
var e, t, s, i, r = !1, n = arguments[0];
|
|
171
|
+
typeof n == "object" && n !== null && "v" in n ? (e = n.v, t = n.w, s = n.name, arguments.length === 2 && (i = arguments[1], r = !0)) : (e = n, t = arguments[1], s = arguments[3], arguments.length > 2 && (i = arguments[2], r = !0)), e = "" + e, t = "" + t, l(s) || (s = "" + s);
|
|
172
|
+
var h = c(this._isDirected, e, t, s);
|
|
173
|
+
if (Object.prototype.hasOwnProperty.call(this._edgeLabels, h))
|
|
174
|
+
return r && (this._edgeLabels[h] = i), this;
|
|
175
|
+
if (!l(s) && !this._isMultigraph)
|
|
176
|
+
throw new Error("Cannot set a named edge when isMultigraph = false");
|
|
177
|
+
this.setNode(e), this.setNode(t), this._edgeLabels[h] = r ? i : this._defaultEdgeLabelFn(e, t, s);
|
|
178
|
+
var u = M(this._isDirected, e, t, s);
|
|
179
|
+
return e = u.v, t = u.w, Object.freeze(u), this._edgeObjs[h] = u, y(this._preds[t], e), y(this._sucs[e], t), this._in[t][h] = u, this._out[e][h] = u, this._edgeCount++, this;
|
|
180
|
+
}
|
|
181
|
+
edge(e, t, s) {
|
|
182
|
+
var i = arguments.length === 1 ? m(this._isDirected, arguments[0]) : c(this._isDirected, e, t, s);
|
|
183
|
+
return this._edgeLabels[i];
|
|
184
|
+
}
|
|
185
|
+
hasEdge(e, t, s) {
|
|
186
|
+
var i = arguments.length === 1 ? m(this._isDirected, arguments[0]) : c(this._isDirected, e, t, s);
|
|
187
|
+
return Object.prototype.hasOwnProperty.call(this._edgeLabels, i);
|
|
188
|
+
}
|
|
189
|
+
removeEdge(e, t, s) {
|
|
190
|
+
var i = arguments.length === 1 ? m(this._isDirected, arguments[0]) : c(this._isDirected, e, t, s), r = this._edgeObjs[i];
|
|
191
|
+
return r && (e = r.v, t = r.w, delete this._edgeLabels[i], delete this._edgeObjs[i], C(this._preds[t], e), C(this._sucs[e], t), delete this._in[t][i], delete this._out[e][i], this._edgeCount--), this;
|
|
192
|
+
}
|
|
193
|
+
inEdges(e, t) {
|
|
194
|
+
var s = this._in[e];
|
|
195
|
+
if (s) {
|
|
196
|
+
var i = p(s);
|
|
197
|
+
return t ? g(i, function(r) {
|
|
198
|
+
return r.v === t;
|
|
199
|
+
}) : i;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
outEdges(e, t) {
|
|
203
|
+
var s = this._out[e];
|
|
204
|
+
if (s) {
|
|
205
|
+
var i = p(s);
|
|
206
|
+
return t ? g(i, function(r) {
|
|
207
|
+
return r.w === t;
|
|
208
|
+
}) : i;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
nodeEdges(e, t) {
|
|
212
|
+
var s = this.inEdges(e, t);
|
|
213
|
+
if (s)
|
|
214
|
+
return s.concat(this.outEdges(e, t));
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
L.prototype._nodeCount = 0;
|
|
218
|
+
L.prototype._edgeCount = 0;
|
|
219
|
+
function y(o, e) {
|
|
220
|
+
o[e] ? o[e]++ : o[e] = 1;
|
|
221
|
+
}
|
|
222
|
+
function C(o, e) {
|
|
223
|
+
--o[e] || delete o[e];
|
|
224
|
+
}
|
|
225
|
+
function c(o, e, t, s) {
|
|
226
|
+
var i = "" + e, r = "" + t;
|
|
227
|
+
if (!o && i > r) {
|
|
228
|
+
var n = i;
|
|
229
|
+
i = r, r = n;
|
|
230
|
+
}
|
|
231
|
+
return i + O + r + O + (l(s) ? F : s);
|
|
232
|
+
}
|
|
233
|
+
function M(o, e, t, s) {
|
|
234
|
+
var i = "" + e, r = "" + t;
|
|
235
|
+
if (!o && i > r) {
|
|
236
|
+
var n = i;
|
|
237
|
+
i = r, r = n;
|
|
238
|
+
}
|
|
239
|
+
var h = { v: i, w: r };
|
|
240
|
+
return s && (h.name = s), h;
|
|
241
|
+
}
|
|
242
|
+
function m(o, e) {
|
|
243
|
+
return c(o, e.v, e.w, e.name);
|
|
244
|
+
}
|
|
245
|
+
export {
|
|
246
|
+
L as G
|
|
247
|
+
};
|
|
248
|
+
//# sourceMappingURL=graph-DVWVTM7e.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-DVWVTM7e.js","sources":["../node_modules/lodash-es/union.js","../node_modules/dagre-d3-es/src/graphlib/graph.js"],"sourcesContent":["import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n","import * as _ from 'lodash-es';\n\nvar DEFAULT_EDGE_NAME = '\\x00';\nvar GRAPH_NODE = '\\x00';\nvar EDGE_KEY_DELIM = '\\x01';\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\nexport class Graph {\n constructor(opts = {}) {\n this._isDirected = Object.prototype.hasOwnProperty.call(opts, 'directed')\n ? opts.directed\n : true;\n this._isMultigraph = Object.prototype.hasOwnProperty.call(opts, 'multigraph')\n ? opts.multigraph\n : false;\n this._isCompound = Object.prototype.hasOwnProperty.call(opts, 'compound')\n ? opts.compound\n : false;\n\n // Label for the graph itself\n this._label = undefined;\n\n // Defaults to be set when creating a new node\n this._defaultNodeLabelFn = _.constant(undefined);\n\n // Defaults to be set when creating a new edge\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n // v -> label\n this._nodes = {};\n\n if (this._isCompound) {\n // v -> parent\n this._parent = {};\n\n // v -> children\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n // v -> edgeObj\n this._in = {};\n\n // u -> v -> Number\n this._preds = {};\n\n // v -> edgeObj\n this._out = {};\n\n // v -> w -> Number\n this._sucs = {};\n\n // e -> edgeObj\n this._edgeObjs = {};\n\n // e -> label\n this._edgeLabels = {};\n }\n /* === Graph functions ========= */\n isDirected() {\n return this._isDirected;\n }\n isMultigraph() {\n return this._isMultigraph;\n }\n isCompound() {\n return this._isCompound;\n }\n setGraph(label) {\n this._label = label;\n return this;\n }\n graph() {\n return this._label;\n }\n /* === Node functions ========== */\n setDefaultNodeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n }\n nodeCount() {\n return this._nodeCount;\n }\n nodes() {\n return _.keys(this._nodes);\n }\n sources() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._in[v]);\n });\n }\n sinks() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._out[v]);\n });\n }\n setNodes(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function (v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n }\n setNode(v, value) {\n if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n // @ts-expect-error\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n }\n node(v) {\n return this._nodes[v];\n }\n hasNode(v) {\n return Object.prototype.hasOwnProperty.call(this._nodes, v);\n }\n removeNode(v) {\n if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n var removeEdge = (e) => this.removeEdge(this._edgeObjs[e]);\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), (child) => {\n this.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n }\n setParent(v, parent) {\n if (!this._isCompound) {\n throw new Error('Cannot set parent in a non-compound graph');\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += '';\n for (var ancestor = parent; !_.isUndefined(ancestor); ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error('Setting ' + parent + ' as parent of ' + v + ' would create a cycle');\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n }\n _removeFromParentsChildList(v) {\n delete this._children[this._parent[v]][v];\n }\n parent(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n }\n children(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n }\n predecessors(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n }\n successors(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n }\n neighbors(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n }\n isLeaf(v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n }\n filterNodes(filter) {\n // @ts-expect-error\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound,\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function (value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function (e) {\n // @ts-expect-error\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function (v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n }\n /* === Edge functions ========== */\n setDefaultEdgeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n }\n edgeCount() {\n return this._edgeCount;\n }\n edges() {\n return _.values(this._edgeObjs);\n }\n setPath(vs, value) {\n var self = this;\n var args = arguments;\n _.reduce(vs, function (v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n }\n /*\n * setEdge(v, w, [value, [name]])\n * setEdge({ v, w, [name] }, [value])\n */\n setEdge() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === 'object' && arg0 !== null && 'v' in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = '' + v;\n w = '' + w;\n if (!_.isUndefined(name)) {\n name = '' + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (Object.prototype.hasOwnProperty.call(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error('Cannot set a named edge when isMultigraph = false');\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n // @ts-expect-error\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n }\n edge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return this._edgeLabels[e];\n }\n hasEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return Object.prototype.hasOwnProperty.call(this._edgeLabels, e);\n }\n removeEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n }\n inEdges(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.v === u;\n });\n }\n }\n outEdges(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.w === w;\n });\n }\n }\n nodeEdges(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n }\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) {\n delete map[k];\n }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n"],"names":["union","baseRest","arrays","baseUniq","baseFlatten","isArrayLikeObject","DEFAULT_EDGE_NAME","GRAPH_NODE","EDGE_KEY_DELIM","Graph","opts","_.constant","label","newDefault","_.isFunction","_.keys","self","_.filter","v","_.isEmpty","vs","value","args","_.each","removeEdge","e","child","parent","_.isUndefined","ancestor","children","predsV","sucsV","preds","_.union","neighbors","filter","copy","parents","findParent","_.values","_.reduce","w","name","valueSpecified","arg0","edgeArgsToId","edgeObj","edgeArgsToObj","incrementOrInitEntry","edgeObjToId","edge","decrementOrRemoveEntry","u","inV","edges","outV","inEdges","map","k","isDirected","v_","w_","tmp"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { accentSwatchPlugin as i, accentSwatchStyles as e } from "./plugins/accentSwatchPlugin.js";
|
|
2
|
+
import { imageManagerPlugin as r, imageManagerStyles as t } from "./plugins/imageManagerPlugin.js";
|
|
3
|
+
import { imagePickerPlugin as o } from "./plugins/imagePickerPlugin.js";
|
|
4
|
+
import { mermaidPlugin as m } from "./plugins/mermaidPlugin.js";
|
|
5
|
+
import { mermaidExternalPlugin as l } from "./plugins/mermaidExternal.js";
|
|
6
|
+
import { tablePlugin as a } from "./plugins/tablePlugin.js";
|
|
7
|
+
import { tableGridPlugin as g, tableGridStyles as n } from "./plugins/tableGridPlugin.js";
|
|
8
|
+
import { tableGeneratorPlugin as P } from "./plugins/tableGenerator.js";
|
|
9
|
+
import { tinyHighlightPlugin as u, tinyHighlightStyles as c } from "./plugins/tinyHighlight.js";
|
|
10
|
+
import { b as p, r as f } from "./table-DMIy93NJ.js";
|
|
11
|
+
import { imagePickerPlugin as s } from "./plugins/imagePicker.js";
|
|
12
|
+
const G = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
13
|
+
__proto__: null,
|
|
14
|
+
accentSwatchPlugin: i,
|
|
15
|
+
accentSwatchStyles: e,
|
|
16
|
+
buildTableMarkdown: p,
|
|
17
|
+
coreImagePickerPlugin: s,
|
|
18
|
+
imageManagerPlugin: r,
|
|
19
|
+
imageManagerStyles: t,
|
|
20
|
+
imagePickerPlugin: o,
|
|
21
|
+
mermaidExternalPlugin: l,
|
|
22
|
+
mermaidPlugin: m,
|
|
23
|
+
resolvePositiveInteger: f,
|
|
24
|
+
tableGeneratorPlugin: P,
|
|
25
|
+
tableGridPlugin: g,
|
|
26
|
+
tableGridStyles: n,
|
|
27
|
+
tablePlugin: a,
|
|
28
|
+
tinyHighlightPlugin: u,
|
|
29
|
+
tinyHighlightStyles: c
|
|
30
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
31
|
+
export {
|
|
32
|
+
G as i
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=index-kKw24iiA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-kKw24iiA.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -163,14 +163,6 @@ export interface TableGridPluginOptions {
|
|
|
163
163
|
title?: string;
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
export interface BlockHandlesConfig {
|
|
167
|
-
colors?: {
|
|
168
|
-
hover?: string;
|
|
169
|
-
selected?: string;
|
|
170
|
-
handle?: string;
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
|
|
174
166
|
export interface ImagePickerOptions {
|
|
175
167
|
accept?: string;
|
|
176
168
|
multiple?: boolean;
|
|
@@ -198,6 +190,3 @@ export declare function accentSwatchPlugin(opts?: {
|
|
|
198
190
|
export declare const accentSwatchStyles: string;
|
|
199
191
|
export declare function imageManagerPlugin(opts?: Record<string, any>): MarzipanPlugin;
|
|
200
192
|
export declare function imagePickerPlugin(opts?: ImagePickerOptions): MarzipanPlugin;
|
|
201
|
-
export declare class BlockHandlesPlugin {
|
|
202
|
-
constructor(editor: MarzipanInstance, config?: BlockHandlesConfig);
|
|
203
|
-
}
|