@markee/diagrams 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +39 -0
- package/_assets/_head/assets/{_api-BbxJBqLU.js → _api-m6XYvA-0.js} +1 -1
- package/_assets/_head/assets/_architecture-PBZL5I3N-xnhut1Pa.js +1 -0
- package/_assets/_head/assets/{_architectureDiagram-2XIMDMQ5-B6NKHtRx.js → _architectureDiagram-2XIMDMQ5-CmZPhLbM.js} +1 -1
- package/_assets/_head/assets/{_blockDiagram-WCTKOSBZ-Dqnb6UUE.js → _blockDiagram-WCTKOSBZ-C3Asu6Kw.js} +1 -1
- package/_assets/_head/assets/{_c4Diagram-IC4MRINW-BZcM5On4.js → _c4Diagram-IC4MRINW-BK3_s_bR.js} +1 -1
- package/_assets/_head/assets/_channel-DT33mbtw.js +1 -0
- package/_assets/_head/assets/{_chunk-4BX2VUAB-zqTDmcBB.js → _chunk-4BX2VUAB-u7GuGTlH.js} +1 -1
- package/_assets/_head/assets/_chunk-55IACEB6-BhegayeB.js +1 -0
- package/_assets/_head/assets/{_chunk-7E7YKBS2-BfdwzEwB.js → _chunk-7E7YKBS2-DRw7IFmq.js} +1 -1
- package/_assets/_head/assets/{_chunk-7R4GIKGN-CixjX2hF.js → _chunk-7R4GIKGN-CEEB8leR.js} +1 -1
- package/_assets/_head/assets/{_chunk-C72U2L5F-Ju1rEIdN.js → _chunk-C72U2L5F-q7txozuq.js} +1 -1
- package/_assets/_head/assets/{_chunk-EGIJ26TM-CCUYcH6V.js → _chunk-EGIJ26TM-yYSCEksb.js} +1 -1
- package/_assets/_head/assets/{_chunk-FMBD7UC4-D6coRtDw.js → _chunk-FMBD7UC4-Dm6s76j7.js} +1 -1
- package/_assets/_head/assets/{_chunk-GEFDOKGD-hedaaI_B.js → _chunk-GEFDOKGD-DinyCumL.js} +1 -1
- package/_assets/_head/assets/_chunk-GLR3WWYH-BnCkIl1j.js +2 -0
- package/_assets/_head/assets/_chunk-HHEYEP7N-2k_uWfJ-.js +1 -0
- package/_assets/_head/assets/{_chunk-JSJVCQXG-CJ2rQuP0.js → _chunk-JSJVCQXG-BwRzsZaf.js} +1 -1
- package/_assets/_head/assets/{_chunk-KX2RTZJC-C6_Rew8h.js → _chunk-KX2RTZJC-CU2wfNBA.js} +1 -1
- package/_assets/_head/assets/{_chunk-KYZI473N-HFloJmj0.js → _chunk-KYZI473N-DFGZfQqH.js} +1 -1
- package/_assets/_head/assets/{_chunk-L3YUKLVL-BZnSrFqZ.js → _chunk-L3YUKLVL-8ZFAhWTa.js} +1 -1
- package/_assets/_head/assets/{_chunk-MX3YWQON-DTYOrezi.js → _chunk-MX3YWQON-OBQAAB3N.js} +1 -1
- package/_assets/_head/assets/{_chunk-NQ4KR5QH-BUplpEk2.js → _chunk-NQ4KR5QH-DJwRvUSa.js} +1 -1
- package/_assets/_head/assets/{_chunk-O4XLMI2P-Dmj7UqP5.js → _chunk-O4XLMI2P-C5stF2lf.js} +1 -1
- package/_assets/_head/assets/{_chunk-OZEHJAEY-BSk-0ei6.js → _chunk-OZEHJAEY-C-6Mr0rV.js} +1 -1
- package/_assets/_head/assets/{_chunk-PQ6SQG4A-d07SUR0W.js → _chunk-PQ6SQG4A-Ce4yqK2U.js} +1 -1
- package/_assets/_head/assets/{_chunk-PU5JKC2W-B7Fh0LIt.js → _chunk-PU5JKC2W-DjhZtVq8.js} +1 -1
- package/_assets/_head/assets/_chunk-QZHKN3VN-Bhpn6rDK.js +1 -0
- package/_assets/_head/assets/{_chunk-R5LLSJPH-CoKBj2D6.js → _chunk-R5LLSJPH-DzG3FAck.js} +1 -1
- package/_assets/_head/assets/{_chunk-WL4C6EOR-bOFxg0ID.js → _chunk-WL4C6EOR-DjvVjER2.js} +1 -1
- package/_assets/_head/assets/{_chunk-XIRO2GV7-COC85g2g.js → _chunk-XIRO2GV7-DYEpFn3-.js} +1 -1
- package/_assets/_head/assets/{_chunk-XPW4576I-CW6DI-1k.js → _chunk-XPW4576I-CRDcKYn5.js} +1 -1
- package/_assets/_head/assets/{_chunk-XZSTWKYB-DNV9pfMo.js → _chunk-XZSTWKYB-Dnmcdxn2.js} +1 -1
- package/_assets/_head/assets/{_chunk-YBOYWFTD-nZYHIeRV.js → _chunk-YBOYWFTD-C0sy-tkc.js} +1 -1
- package/_assets/_head/assets/_classDiagram-VBA2DB6C-DDvYM7vU.js +1 -0
- package/_assets/_head/assets/_classDiagram-v2-RAHNMMFH-BPF9HrXj.js +1 -0
- package/_assets/_head/assets/{_cose-bilkent-S5V4N54A-DzNIP-ES.js → _cose-bilkent-S5V4N54A-pwuuIbv2.js} +1 -1
- package/_assets/_head/assets/{_d3-graphviz-D-OeP-Hi.js → _d3-graphviz-DcMtfIhp.js} +1 -1
- package/_assets/_head/assets/{_dagre-D4f1FF8i.js → _dagre-CA4z7MrA.js} +1 -1
- package/_assets/_head/assets/{_dagre-KLK3FWXG-BkNMp9M0.js → _dagre-KLK3FWXG-CoqulaDf.js} +1 -1
- package/_assets/_head/assets/{_diagram-E7M64L7V-D6PZVOLB.js → _diagram-E7M64L7V-B-3RYN0e.js} +1 -1
- package/_assets/_head/assets/{_diagram-IFDJBPK2-QApacJ5c.js → _diagram-IFDJBPK2-BeCxbGXv.js} +1 -1
- package/_assets/_head/assets/{_diagram-P4PSJMXO-CNMUKotv.js → _diagram-P4PSJMXO-CvQRbCi5.js} +1 -1
- package/_assets/_head/assets/{_dist-Dk49gvBM.js → _dist-BO11r0fr.js} +1 -1
- package/_assets/_head/assets/{_erDiagram-INFDFZHY-Bpnx05jC.js → _erDiagram-INFDFZHY-Zh2XbqbT.js} +1 -1
- package/_assets/_head/assets/{_flowDiagram-PKNHOUZH-BdAdScRO.js → _flowDiagram-PKNHOUZH-DrDi74q1.js} +1 -1
- package/_assets/_head/assets/{_ganttDiagram-A5KZAMGK-DzEPJRcF.js → _ganttDiagram-A5KZAMGK-DZA6377B.js} +1 -1
- package/_assets/_head/assets/_gitGraph-HDMCJU4V-Ec_hDt6_.js +1 -0
- package/_assets/_head/assets/{_gitGraphDiagram-K3NZZRJ6-BMvgx1jL.js → _gitGraphDiagram-K3NZZRJ6-Br5Sirqq.js} +1 -1
- package/_assets/_head/assets/_info-3K5VOQVL-CENtZRFH.js +1 -0
- package/_assets/_head/assets/_infoDiagram-LFFYTUFH-C2swHr78.js +2 -0
- package/_assets/_head/assets/{_ishikawaDiagram-PHBUUO56-ye8wu7pU.js → _ishikawaDiagram-PHBUUO56-ETOK-LOw.js} +1 -1
- package/_assets/_head/assets/{_journeyDiagram-4ABVD52K-D5OtlO2S.js → _journeyDiagram-4ABVD52K-3Odci6Ma.js} +1 -1
- package/_assets/_head/assets/{_kanban-definition-K7BYSVSG-DtUEcx7s.js → _kanban-definition-K7BYSVSG-C-x5I47z.js} +1 -1
- package/_assets/_head/assets/{_line-Bn73e1DS.js → _line-BMsgmPE5.js} +1 -1
- package/_assets/_head/assets/{_linear-DLy__jWx.js → _linear-D1vf9RD0.js} +1 -1
- package/_assets/_head/assets/{_mermaid-parser.core-_H6Clr87.js → _mermaid-parser.core-DZbZ9Nt1.js} +2 -2
- package/_assets/_head/assets/{_mermaid.core-CN_dW3wB.js → _mermaid.core-B6JDNx3m.js} +3 -3
- package/_assets/_head/assets/{_mindmap-definition-YRQLILUH-Bj6WNjT2.js → _mindmap-definition-YRQLILUH-CY8Mkbyf.js} +1 -1
- package/_assets/_head/assets/_packet-RMMSAZCW-HsVTCE5M.js +1 -0
- package/_assets/_head/assets/_pie-UPGHQEXC-ClCegNAN.js +1 -0
- package/_assets/_head/assets/{_pieDiagram-SKSYHLDU-B7n7B95W.js → _pieDiagram-SKSYHLDU-CYJI9Scd.js} +1 -1
- package/_assets/_head/assets/{_quadrantDiagram-337W2JSQ-C_OD8wEG.js → _quadrantDiagram-337W2JSQ-BGW8PhOJ.js} +1 -1
- package/_assets/_head/assets/_radar-KQ55EAFF-ugGxOkwG.js +1 -0
- package/_assets/_head/assets/{_requirementDiagram-Z7DCOOCP-C8HzXf-7.js → _requirementDiagram-Z7DCOOCP-BbV78NhX.js} +1 -1
- package/_assets/_head/assets/{_sankeyDiagram-WA2Y5GQK-Ctpgy26F.js → _sankeyDiagram-WA2Y5GQK-ByyrJf1U.js} +1 -1
- package/_assets/_head/assets/{_sequenceDiagram-2WXFIKYE-BrWWYecj.js → _sequenceDiagram-2WXFIKYE-CUwOGuhQ.js} +1 -1
- package/_assets/_head/assets/{_src-COkbRRdF.js → _src-Bi8wryCV.js} +1 -1
- package/_assets/_head/assets/{_src-EY2faTVt.js → _src-D_0f55rL.js} +1 -1
- package/_assets/_head/assets/{_src-DGaYM9rN.js → _src-SNUCTSwP.js} +1 -1
- package/_assets/_head/assets/{_stateDiagram-RAJIS63D-DHDYVq4g.js → _stateDiagram-RAJIS63D-Dxv3HBdz.js} +1 -1
- package/_assets/_head/assets/_stateDiagram-v2-FVOUBMTO-brNar02G.js +1 -0
- package/_assets/_head/assets/{_timeline-definition-YZTLITO2-Baqh8Zr3.js → _timeline-definition-YZTLITO2-COgTpWBR.js} +1 -1
- package/_assets/_head/assets/_treemap-KZPCXAKY-CXR7h5hT.js +1 -0
- package/_assets/_head/assets/{_value-BHMRaafc.js → _value-NcYKFvkN.js} +1 -1
- package/_assets/_head/assets/{_vennDiagram-LZ73GAT5-DT2MLRvW.js → _vennDiagram-LZ73GAT5-CFvtr6ch.js} +1 -1
- package/_assets/_head/assets/{_xychartDiagram-JWTSCODW-B4O2dc9N.js → _xychartDiagram-JWTSCODW-DtHVB6Xo.js} +1 -1
- package/_assets/_head/assets/{main-GvJmWKsI.js → main-Bgz5KRxr.js} +3 -3
- package/_assets/_head/assets/main-DTgc_eyw.css +1 -0
- package/package.json +13 -4
- package/src/element.test.ts +319 -0
- package/src/helpers.test.ts +51 -0
- package/src/index.css +4 -4
- package/src/main.test.ts +29 -0
- package/src/remark.test.ts +196 -0
- package/src/remark.ts +4 -5
- package/src/runtime.test.ts +78 -0
- package/tsconfig.json +3 -10
- package/vitest.config.ts +4 -0
- package/vitest.setup.ts +6 -0
- package/_assets/_head/assets/_architecture-PBZL5I3N-BPxfLoEK.js +0 -1
- package/_assets/_head/assets/_channel-CfD3KTsT.js +0 -1
- package/_assets/_head/assets/_chunk-55IACEB6-x7bSLf7B.js +0 -1
- package/_assets/_head/assets/_chunk-GLR3WWYH-CADHj0Af.js +0 -2
- package/_assets/_head/assets/_chunk-HHEYEP7N-yDnzeL6u.js +0 -1
- package/_assets/_head/assets/_chunk-QZHKN3VN-OrU_cr5J.js +0 -1
- package/_assets/_head/assets/_classDiagram-VBA2DB6C-C9oLPafD.js +0 -1
- package/_assets/_head/assets/_classDiagram-v2-RAHNMMFH-Dgh8T6Nh.js +0 -1
- package/_assets/_head/assets/_gitGraph-HDMCJU4V-bzhcDRU8.js +0 -1
- package/_assets/_head/assets/_info-3K5VOQVL-DO8S_2BK.js +0 -1
- package/_assets/_head/assets/_infoDiagram-LFFYTUFH-V27XJ0e-.js +0 -2
- package/_assets/_head/assets/_packet-RMMSAZCW-BQu67kO8.js +0 -1
- package/_assets/_head/assets/_pie-UPGHQEXC-Bq1eDF5N.js +0 -1
- package/_assets/_head/assets/_radar-KQ55EAFF-BVJblTdI.js +0 -1
- package/_assets/_head/assets/_stateDiagram-v2-FVOUBMTO-C3RKEofw.js +0 -1
- package/_assets/_head/assets/_treemap-KZPCXAKY-DnDBABML.js +0 -1
- package/_assets/_head/assets/main-CSvXzq1b.css +0 -1
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest'
|
|
2
|
+
|
|
3
|
+
async function importRemark() {
|
|
4
|
+
vi.resetModules()
|
|
5
|
+
|
|
6
|
+
const remark = vi.fn()
|
|
7
|
+
const visit = vi.fn((tree: any, _type: string, callback: Function) => {
|
|
8
|
+
tree.children.forEach((node: any, index: number) =>
|
|
9
|
+
callback(node, index, tree),
|
|
10
|
+
)
|
|
11
|
+
})
|
|
12
|
+
const parseAttrs = vi.fn((meta: string) => {
|
|
13
|
+
if (meta.includes('off-glb')) {
|
|
14
|
+
return {
|
|
15
|
+
class: 'mermaid compact off-glb',
|
|
16
|
+
id: 'chart-a',
|
|
17
|
+
lightbox: 'true',
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (meta.includes('on-glb')) {
|
|
21
|
+
return { class: 'dbml roomy on-glb', lightbox: 'false' }
|
|
22
|
+
}
|
|
23
|
+
if (meta.includes('meta-id')) {
|
|
24
|
+
return { id: 'meta-id', class: 'mermaid compact' }
|
|
25
|
+
}
|
|
26
|
+
return {}
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
vi.doMock('@markee/runtime', () => ({
|
|
30
|
+
extend: {
|
|
31
|
+
markdownPipeline: {
|
|
32
|
+
remark,
|
|
33
|
+
visit,
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
}))
|
|
37
|
+
vi.doMock('attributes-parser', () => ({
|
|
38
|
+
default: parseAttrs,
|
|
39
|
+
}))
|
|
40
|
+
|
|
41
|
+
return {
|
|
42
|
+
...(await import('./remark.js')),
|
|
43
|
+
remark,
|
|
44
|
+
visit,
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
describe('@markee/diagrams remark', () => {
|
|
49
|
+
it('rewrites mermaid and dbml fences with lightbox overrides', async () => {
|
|
50
|
+
const { registerDiagramsRemark, remark } = await importRemark()
|
|
51
|
+
|
|
52
|
+
registerDiagramsRemark()
|
|
53
|
+
|
|
54
|
+
const transform = remark.mock.calls[0]?.[1].call({
|
|
55
|
+
data: () => ({
|
|
56
|
+
pluginConfig: () => ({ enabled: false }),
|
|
57
|
+
}),
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
const tree = {
|
|
61
|
+
children: [
|
|
62
|
+
{
|
|
63
|
+
lang: 'mermaid',
|
|
64
|
+
meta: 'off-glb',
|
|
65
|
+
value: 'graph TD;A-->B',
|
|
66
|
+
data: { hProperties: { id: 'node-id' } },
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
lang: 'dbml',
|
|
70
|
+
meta: 'on-glb',
|
|
71
|
+
value: 'Table users {}',
|
|
72
|
+
data: {},
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
lang: 'mermaid',
|
|
76
|
+
meta: 'kroki',
|
|
77
|
+
value: 'skip',
|
|
78
|
+
data: {},
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
transform(tree)
|
|
84
|
+
|
|
85
|
+
expect((tree.children[0] as any).value).toContain('<markee-diagram')
|
|
86
|
+
expect((tree.children[0] as any).value).not.toContain('glightbox')
|
|
87
|
+
expect((tree.children[0] as any).value).toContain('id="node-id"')
|
|
88
|
+
expect((tree.children[0] as any).value).toContain(
|
|
89
|
+
'class="mermaid diagram compact off-glb"',
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
expect((tree.children[1] as any).value).toContain("class='glightbox'")
|
|
93
|
+
expect((tree.children[1] as any).value).toContain('markee-diagram-0')
|
|
94
|
+
expect((tree.children[1] as any).value).toContain(
|
|
95
|
+
'class="dbml diagram roomy on-glb"',
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
expect(tree.children[2]).toMatchObject({
|
|
99
|
+
lang: 'mermaid',
|
|
100
|
+
meta: 'kroki',
|
|
101
|
+
})
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
it('defaults lightbox behavior and ignores incomplete or unsupported nodes', async () => {
|
|
105
|
+
const { registerDiagramsRemark, remark, visit } = await importRemark()
|
|
106
|
+
|
|
107
|
+
registerDiagramsRemark()
|
|
108
|
+
|
|
109
|
+
const transform = remark.mock.calls[0]?.[1].call({
|
|
110
|
+
data: () => ({
|
|
111
|
+
pluginConfig: () => undefined,
|
|
112
|
+
}),
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
transform({ children: [] })
|
|
116
|
+
const callback = visit.mock.calls[0]?.[2] as Function
|
|
117
|
+
|
|
118
|
+
expect(() =>
|
|
119
|
+
callback(
|
|
120
|
+
{ lang: 'mermaid', value: 'graph TD;A-->B' },
|
|
121
|
+
undefined,
|
|
122
|
+
undefined,
|
|
123
|
+
),
|
|
124
|
+
).not.toThrow()
|
|
125
|
+
|
|
126
|
+
const detached = {
|
|
127
|
+
lang: 'mermaid',
|
|
128
|
+
meta: 'meta-id',
|
|
129
|
+
value: 'graph TD;A-->B',
|
|
130
|
+
data: {},
|
|
131
|
+
}
|
|
132
|
+
const tree = {
|
|
133
|
+
children: [
|
|
134
|
+
detached,
|
|
135
|
+
{
|
|
136
|
+
lang: 'bash',
|
|
137
|
+
meta: '',
|
|
138
|
+
value: 'echo nope',
|
|
139
|
+
data: {},
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
lang: ' mermaid ',
|
|
143
|
+
meta: 'meta-id',
|
|
144
|
+
value: 'graph TD;A-->B',
|
|
145
|
+
data: {},
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
lang: 'mermaid',
|
|
149
|
+
data: {},
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
transform({
|
|
155
|
+
children: tree.children,
|
|
156
|
+
})
|
|
157
|
+
|
|
158
|
+
expect((tree.children[0] as any).value).toContain("class='glightbox'")
|
|
159
|
+
expect((tree.children[0] as any).value).toContain('id="meta-id"')
|
|
160
|
+
expect(tree.children[1]).toMatchObject({
|
|
161
|
+
lang: 'bash',
|
|
162
|
+
})
|
|
163
|
+
expect(tree.children[2]).toMatchObject({
|
|
164
|
+
type: 'html',
|
|
165
|
+
value: expect.stringContaining('data-kind="mermaid"'),
|
|
166
|
+
})
|
|
167
|
+
expect((tree.children[3] as any).value).toContain('data-source=""')
|
|
168
|
+
})
|
|
169
|
+
|
|
170
|
+
it('supports boolean lightbox configuration values', async () => {
|
|
171
|
+
const { registerDiagramsRemark, remark } = await importRemark()
|
|
172
|
+
|
|
173
|
+
registerDiagramsRemark()
|
|
174
|
+
|
|
175
|
+
const transform = remark.mock.calls[0]?.[1].call({
|
|
176
|
+
data: () => ({
|
|
177
|
+
pluginConfig: () => true,
|
|
178
|
+
}),
|
|
179
|
+
})
|
|
180
|
+
|
|
181
|
+
const tree = {
|
|
182
|
+
children: [
|
|
183
|
+
{
|
|
184
|
+
lang: 'dbml',
|
|
185
|
+
meta: '',
|
|
186
|
+
value: 'Table users {}',
|
|
187
|
+
data: {},
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
transform(tree)
|
|
193
|
+
|
|
194
|
+
expect((tree.children[0] as any).value).toContain("class='glightbox'")
|
|
195
|
+
})
|
|
196
|
+
})
|
package/src/remark.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Processor } from 'unified'
|
|
1
2
|
import parseAttrs from 'attributes-parser'
|
|
2
3
|
import { extend } from '@markee/runtime'
|
|
3
4
|
import {
|
|
@@ -10,12 +11,10 @@ import {
|
|
|
10
11
|
} from './helpers'
|
|
11
12
|
|
|
12
13
|
export function registerDiagramsRemark() {
|
|
13
|
-
extend.markdownPipeline.remark('markee-diagrams', function (this:
|
|
14
|
+
extend.markdownPipeline.remark('markee-diagrams', function (this: Processor) {
|
|
14
15
|
return (tree: any) => {
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
| { enabled: boolean }
|
|
18
|
-
| undefined
|
|
16
|
+
const { pluginConfig } = this.data()
|
|
17
|
+
const resolved = pluginConfig<boolean | { enabled: boolean }>('lightbox')
|
|
19
18
|
const lightboxEnabled =
|
|
20
19
|
typeof resolved === 'boolean' ? resolved : (resolved?.enabled ?? true)
|
|
21
20
|
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest'
|
|
2
|
+
|
|
3
|
+
async function importRuntime({
|
|
4
|
+
mermaidModule,
|
|
5
|
+
dbmlRenderer,
|
|
6
|
+
d3Selection,
|
|
7
|
+
}: {
|
|
8
|
+
mermaidModule?: any
|
|
9
|
+
dbmlRenderer?: any
|
|
10
|
+
d3Selection?: any
|
|
11
|
+
} = {}) {
|
|
12
|
+
vi.resetModules()
|
|
13
|
+
|
|
14
|
+
vi.doMock('mermaid', () => ({
|
|
15
|
+
default: mermaidModule ?? {
|
|
16
|
+
initialize: vi.fn(),
|
|
17
|
+
},
|
|
18
|
+
}))
|
|
19
|
+
vi.doMock(
|
|
20
|
+
'@softwaretechnik/dbml-renderer',
|
|
21
|
+
() =>
|
|
22
|
+
dbmlRenderer ?? {
|
|
23
|
+
run: vi.fn(),
|
|
24
|
+
},
|
|
25
|
+
)
|
|
26
|
+
vi.doMock(
|
|
27
|
+
'd3-selection',
|
|
28
|
+
() =>
|
|
29
|
+
d3Selection ?? {
|
|
30
|
+
select: vi.fn(),
|
|
31
|
+
default: { select: vi.fn() },
|
|
32
|
+
},
|
|
33
|
+
)
|
|
34
|
+
vi.doMock('d3-graphviz', () => ({}))
|
|
35
|
+
|
|
36
|
+
return await import('./runtime.js')
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
describe('@markee/diagrams runtime', () => {
|
|
40
|
+
it('loads mermaid once and initializes it', async () => {
|
|
41
|
+
const initialize = vi.fn()
|
|
42
|
+
const { loadMermaid } = await importRuntime({
|
|
43
|
+
mermaidModule: { initialize },
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
const first = await loadMermaid()
|
|
47
|
+
const second = await loadMermaid()
|
|
48
|
+
|
|
49
|
+
expect(first).toBe(second)
|
|
50
|
+
expect(initialize).toHaveBeenCalledWith({ startOnLoad: false })
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
it('loads and caches the dbml runtime helpers', async () => {
|
|
54
|
+
const run = vi.fn()
|
|
55
|
+
const select = vi.fn()
|
|
56
|
+
const { loadDiagramRuntime } = await importRuntime({
|
|
57
|
+
dbmlRenderer: { run },
|
|
58
|
+
d3Selection: { select, default: { select } },
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
const first = await loadDiagramRuntime()
|
|
62
|
+
const second = await loadDiagramRuntime()
|
|
63
|
+
|
|
64
|
+
expect(first).toBe(second)
|
|
65
|
+
expect(first.dbmlRun).toBe(run)
|
|
66
|
+
expect(first.select).toBe(select)
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
it('throws when d3-selection does not expose a select function', async () => {
|
|
70
|
+
const { loadDiagramRuntime } = await importRuntime({
|
|
71
|
+
d3Selection: { select: undefined, default: {} },
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
await expect(loadDiagramRuntime()).rejects.toThrow(
|
|
75
|
+
'Could not load d3-selection runtime.',
|
|
76
|
+
)
|
|
77
|
+
})
|
|
78
|
+
})
|
package/tsconfig.json
CHANGED
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
+
"extends": "@markee/tsconfig/bundler.json",
|
|
2
3
|
"compilerOptions": {
|
|
3
|
-
"strict": true,
|
|
4
|
-
"skipLibCheck": true,
|
|
5
|
-
"module": "ESNext",
|
|
6
|
-
"target": "ESNext",
|
|
7
|
-
"moduleResolution": "bundler",
|
|
8
|
-
"esModuleInterop": true,
|
|
9
|
-
"allowSyntheticDefaultImports": true,
|
|
10
|
-
"lib": ["ES2022", "dom"],
|
|
11
|
-
"outDir": "dist",
|
|
12
4
|
"baseUrl": "."
|
|
13
5
|
},
|
|
14
|
-
"include": ["
|
|
6
|
+
"include": ["*.ts", "**/*.ts"],
|
|
7
|
+
"exclude": ["node_modules", "dist"]
|
|
15
8
|
}
|
package/vitest.config.ts
ADDED
package/vitest.setup.ts
ADDED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./_chunk-XZSTWKYB-DNV9pfMo.js";import{n as e}from"./_chunk-R5LLSJPH-CoKBj2D6.js";export{e as createArchitectureServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{it as e,rt as t}from"./_chunk-7R4GIKGN-CixjX2hF.js";var n=(n,r)=>e.lang.round(t.parse(n)[r]);export{n as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./_src-COkbRRdF.js";import{n as t}from"./_src-DGaYM9rN.js";var n=t((t,n)=>{let r;return n===`sandbox`&&(r=e(`#i`+t)),e(n===`sandbox`?r.nodes()[0].contentDocument.body:`body`).select(`[id="${t}"]`)},`getDiagramElement`);export{n as t};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./_dagre-KLK3FWXG-BkNMp9M0.js","./_dist-Dk49gvBM.js","./main-GvJmWKsI.js","./main-CSvXzq1b.css","./_chunk-PU5JKC2W-B7Fh0LIt.js","./_src-DGaYM9rN.js","./_src-COkbRRdF.js","./_chunk-GEFDOKGD-hedaaI_B.js","./_math-CyywJguE.js","./_chunk-7R4GIKGN-CixjX2hF.js","./_isArrayLikeObject-B62EgjVm.js","./_src-EY2faTVt.js","./_dagre-D4f1FF8i.js","./_graphlib-CWZwVoL0.js","./_isEmpty-DwnoWLeP.js","./__baseUniq-BbfvCSQ0.js","./__basePickBy-seJymvZv.js","./_clone-C4VI7IwW.js","./_chunk-KYZI473N-HFloJmj0.js","./_chunk-PQ6SQG4A-d07SUR0W.js","./_chunk-YBOYWFTD-nZYHIeRV.js","./_rough.esm-B-x7cSr_.js","./_chunk-MX3YWQON-DTYOrezi.js","./_chunk-O4XLMI2P-Dmj7UqP5.js","./_line-Bn73e1DS.js","./_array-1ZLHT4IW.js","./_path-DqxJfpv2.js","./_path-e1ZUMOO_.js","./_cose-bilkent-S5V4N54A-DzNIP-ES.js","./_cytoscape.esm-p1aMD8pk.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./main-GvJmWKsI.js";import{u as t}from"./_chunk-GEFDOKGD-hedaaI_B.js";import{n,r}from"./_src-DGaYM9rN.js";import{s as i,y as a}from"./_chunk-7R4GIKGN-CixjX2hF.js";import{a as o,i as s,s as c}from"./_chunk-KYZI473N-HFloJmj0.js";import{a as l,i as u,n as d,r as f}from"./_chunk-O4XLMI2P-Dmj7UqP5.js";var p={common:i,getConfig:a,insertCluster:s,insertEdge:d,insertEdgeLabel:f,insertMarkers:u,insertNode:o,interpolateToCurve:t,labelHelper:c,log:r,positionEdgeLabel:l},m={},h=n(e=>{for(let t of e)m[t.name]=t},`registerLayoutLoaders`);n(()=>{h([{name:`dagre`,loader:n(async()=>await e(()=>import(`./_dagre-KLK3FWXG-BkNMp9M0.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]),import.meta.url),`loader`)},...[{name:`cose-bilkent`,loader:n(async()=>await e(()=>import(`./_cose-bilkent-S5V4N54A-DzNIP-ES.js`),__vite__mapDeps([28,2,3,29,5,11,6]),import.meta.url),`loader`)}]])},`registerDefaultLayoutLoaders`)();var g=n(async(e,t)=>{if(!(e.layoutAlgorithm in m))throw Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);let n=m[e.layoutAlgorithm];return(await n.loader()).render(e,t,p,{algorithm:n.algorithm})},`render`),_=n((e=``,{fallback:t=`dagre`}={})=>{if(e in m)return e;if(t in m)return r.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw Error(`Both layout algorithms ${e} and ${t} are not registered.`)},`getRegisteredLayoutAlgorithm`);export{h as n,g as r,_ as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./_src-COkbRRdF.js";import{n as t}from"./_src-DGaYM9rN.js";import{b as n}from"./_chunk-7R4GIKGN-CixjX2hF.js";var r=t(t=>{let{securityLevel:r}=n(),i=e(`body`);return r===`sandbox`&&(i=e((e(`#i${t}`).node()?.contentDocument??document).body)),i.select(`#${t}`)},`selectSvgElement`);export{r as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./_src-DGaYM9rN.js";var t=class{constructor(e){this.init=e,this.records=this.init()}static{e(this,`ImperativeState`)}reset(){this.records=this.init()}};export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./_chunk-GEFDOKGD-hedaaI_B.js";import"./_src-EY2faTVt.js";import{n as e}from"./_src-DGaYM9rN.js";import"./_chunk-7R4GIKGN-CixjX2hF.js";import"./_dist-Dk49gvBM.js";import"./_chunk-PU5JKC2W-B7Fh0LIt.js";import"./_chunk-FMBD7UC4-D6coRtDw.js";import"./_chunk-MX3YWQON-DTYOrezi.js";import"./_chunk-YBOYWFTD-nZYHIeRV.js";import"./_chunk-JSJVCQXG-CJ2rQuP0.js";import"./_chunk-55IACEB6-x7bSLf7B.js";import"./_chunk-KX2RTZJC-C6_Rew8h.js";import"./_chunk-PQ6SQG4A-d07SUR0W.js";import"./_chunk-KYZI473N-HFloJmj0.js";import"./_chunk-O4XLMI2P-Dmj7UqP5.js";import"./_chunk-GLR3WWYH-CADHj0Af.js";import{i as t,n,r,t as i}from"./_chunk-WL4C6EOR-bOFxg0ID.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./_chunk-GEFDOKGD-hedaaI_B.js";import"./_src-EY2faTVt.js";import{n as e}from"./_src-DGaYM9rN.js";import"./_chunk-7R4GIKGN-CixjX2hF.js";import"./_dist-Dk49gvBM.js";import"./_chunk-PU5JKC2W-B7Fh0LIt.js";import"./_chunk-FMBD7UC4-D6coRtDw.js";import"./_chunk-MX3YWQON-DTYOrezi.js";import"./_chunk-YBOYWFTD-nZYHIeRV.js";import"./_chunk-JSJVCQXG-CJ2rQuP0.js";import"./_chunk-55IACEB6-x7bSLf7B.js";import"./_chunk-KX2RTZJC-C6_Rew8h.js";import"./_chunk-PQ6SQG4A-d07SUR0W.js";import"./_chunk-KYZI473N-HFloJmj0.js";import"./_chunk-O4XLMI2P-Dmj7UqP5.js";import"./_chunk-GLR3WWYH-CADHj0Af.js";import{i as t,n,r,t as i}from"./_chunk-WL4C6EOR-bOFxg0ID.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./_chunk-XZSTWKYB-DNV9pfMo.js";import{n as e}from"./_chunk-7E7YKBS2-BfdwzEwB.js";export{e as createGitGraphServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./_chunk-XZSTWKYB-DNV9pfMo.js";import{n as e}from"./_chunk-EGIJ26TM-CCUYcH6V.js";export{e as createInfoServices};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"./_chunk-XZSTWKYB-DNV9pfMo.js";import"./_chunk-R5LLSJPH-CoKBj2D6.js";import"./_chunk-7E7YKBS2-BfdwzEwB.js";import"./_chunk-EGIJ26TM-CCUYcH6V.js";import"./_chunk-C72U2L5F-Ju1rEIdN.js";import"./_chunk-XIRO2GV7-COC85g2g.js";import"./_chunk-L3YUKLVL-BZnSrFqZ.js";import"./_chunk-OZEHJAEY-BSk-0ei6.js";import"./_src-EY2faTVt.js";import{n as e,r as t}from"./_src-DGaYM9rN.js";import{c as n}from"./_chunk-7R4GIKGN-CixjX2hF.js";import{t as r}from"./_chunk-HHEYEP7N-yDnzeL6u.js";import{t as i}from"./_mermaid-parser.core-_H6Clr87.js";var a={parse:e(async e=>{let n=await i(`info`,e);t.debug(n)},`parse`)},o={version:`11.13.0`},s={parser:a,db:{getVersion:e(()=>o.version,`getVersion`)},renderer:{draw:e((e,i,a)=>{t.debug(`rendering info diagram
|
|
2
|
-
`+e);let o=r(i);n(o,100,400,!0),o.append(`g`).append(`text`).attr(`x`,100).attr(`y`,40).attr(`class`,`version`).attr(`font-size`,32).style(`text-anchor`,`middle`).text(`v${a}`)},`draw`)}};export{s as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./_chunk-XZSTWKYB-DNV9pfMo.js";import{n as e}from"./_chunk-C72U2L5F-Ju1rEIdN.js";export{e as createPacketServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./_chunk-XZSTWKYB-DNV9pfMo.js";import{n as e}from"./_chunk-XIRO2GV7-COC85g2g.js";export{e as createPieServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./_chunk-XZSTWKYB-DNV9pfMo.js";import{n as e}from"./_chunk-L3YUKLVL-BZnSrFqZ.js";export{e as createRadarServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./_chunk-GEFDOKGD-hedaaI_B.js";import"./_src-EY2faTVt.js";import{n as e}from"./_src-DGaYM9rN.js";import"./_chunk-7R4GIKGN-CixjX2hF.js";import"./_dist-Dk49gvBM.js";import"./_chunk-PU5JKC2W-B7Fh0LIt.js";import"./_chunk-MX3YWQON-DTYOrezi.js";import"./_chunk-YBOYWFTD-nZYHIeRV.js";import"./_chunk-55IACEB6-x7bSLf7B.js";import"./_chunk-KX2RTZJC-C6_Rew8h.js";import"./_chunk-PQ6SQG4A-d07SUR0W.js";import"./_chunk-KYZI473N-HFloJmj0.js";import"./_chunk-O4XLMI2P-Dmj7UqP5.js";import"./_chunk-GLR3WWYH-CADHj0Af.js";import{i as t,n,r,t as i}from"./_chunk-NQ4KR5QH-BUplpEk2.js";var a={parser:n,get db(){return new i(2)},renderer:r,styles:t,init:e(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./_chunk-XZSTWKYB-DNV9pfMo.js";import{n as e}from"./_chunk-OZEHJAEY-BSk-0ei6.js";export{e as createTreemapServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@layer markee-extension{markee-diagram{margin:1.2rem 0;display:block}a.glightbox>markee-diagram{position:relative}a.glightbox>markee-diagram:after{content:"";z-index:1;cursor:pointer;background:0 0;position:absolute;inset:0}.ginlined-content.diagram{text-align:center;min-width:100vw;padding:1rem 6rem}markee-diagram .markee-diagram-status,markee-diagram .markee-diagram-error{border:1px solid var(--mk-color-border,#d9d9d9);background:var(--mk-color-background,#fafafa);color:var(--mk-color-text,#333);border-radius:.5rem;padding:.75rem .9rem}markee-diagram .markee-diagram-status{font-style:italic}markee-diagram .markee-diagram-error{border-left:4px solid var(--mk-admonition-color-danger)}markee-diagram .markee-diagram-error pre{white-space:pre-wrap;margin:.6rem 0 0;font-size:.875rem;overflow:auto}markee-diagram .markee-diagram-mermaid,markee-diagram .markee-diagram-dbml{overflow-x:auto}markee-diagram .markee-diagram-mermaid>svg,markee-diagram .markee-diagram-dbml>svg{max-width:100%;height:auto;margin:0 auto;display:block}markee-diagram .markee-diagram-dbml,markee-diagram .markee-diagram-dbml *{pointer-events:none!important}[data-color-scheme=dark] markee-diagram{filter:invert(88%)hue-rotate(180deg)}}
|