bridgerte 0.9.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/README.md +830 -0
- package/dist/bridge.cjs +2 -0
- package/dist/bridge.cjs.map +1 -0
- package/dist/bridge.d.ts +1070 -0
- package/dist/bridge.js +37 -0
- package/dist/bridge.js.map +1 -0
- package/dist/core.cjs +2 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.ts +899 -0
- package/dist/core.js +58 -0
- package/dist/core.js.map +1 -0
- package/dist/dom.cjs +2 -0
- package/dist/dom.cjs.map +1 -0
- package/dist/dom.d.ts +955 -0
- package/dist/dom.js +8 -0
- package/dist/dom.js.map +1 -0
- package/dist/index-BDgKCpty.cjs +3 -0
- package/dist/index-BDgKCpty.cjs.map +1 -0
- package/dist/index-C7IVE5Bd.js +4515 -0
- package/dist/index-C7IVE5Bd.js.map +1 -0
- package/dist/index-CuNKUHed.js +7 -0
- package/dist/index-CuNKUHed.js.map +1 -0
- package/dist/index-GaS65GL0.cjs +2 -0
- package/dist/index-GaS65GL0.cjs.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +1233 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/native-spec.cjs +2 -0
- package/dist/native-spec.cjs.map +1 -0
- package/dist/native-spec.d.ts +953 -0
- package/dist/native-spec.js +594 -0
- package/dist/native-spec.js.map +1 -0
- package/dist/style.css +1 -0
- package/dist/webview.cjs +2 -0
- package/dist/webview.cjs.map +1 -0
- package/dist/webview.d.ts +1107 -0
- package/dist/webview.js +5 -0
- package/dist/webview.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
import { b as y, a as v } from "./index-CuNKUHed.js";
|
|
2
|
+
const h = {
|
|
3
|
+
id: "code-block-language",
|
|
4
|
+
title: "代码语言",
|
|
5
|
+
fields: [
|
|
6
|
+
{
|
|
7
|
+
type: "select",
|
|
8
|
+
name: "language",
|
|
9
|
+
label: "语言",
|
|
10
|
+
defaultValue: "",
|
|
11
|
+
options: [
|
|
12
|
+
{ label: "纯文本", value: "" },
|
|
13
|
+
{ label: "C", value: "c" },
|
|
14
|
+
{ label: "C-like", value: "clike" },
|
|
15
|
+
{ label: "C++", value: "cpp" },
|
|
16
|
+
{ label: "CSS", value: "css" },
|
|
17
|
+
{ label: "HTML", value: "html" },
|
|
18
|
+
{ label: "Java", value: "java" },
|
|
19
|
+
{ label: "JavaScript", value: "javascript" },
|
|
20
|
+
{ label: "JSON", value: "json" },
|
|
21
|
+
{ label: "Markdown", value: "markdown" },
|
|
22
|
+
{ label: "Objective-C", value: "objc" },
|
|
23
|
+
{ label: "PowerShell", value: "powershell" },
|
|
24
|
+
{ label: "Python", value: "python" },
|
|
25
|
+
{ label: "Rust", value: "rust" },
|
|
26
|
+
{ label: "SQL", value: "sql" },
|
|
27
|
+
{ label: "Swift", value: "swift" },
|
|
28
|
+
{ label: "TypeScript", value: "typescript" },
|
|
29
|
+
{ label: "XML", value: "xml" }
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}, V = h, f = {
|
|
34
|
+
id: "text-color",
|
|
35
|
+
title: "文字颜色",
|
|
36
|
+
fields: [
|
|
37
|
+
{
|
|
38
|
+
type: "color",
|
|
39
|
+
name: "value",
|
|
40
|
+
label: "颜色"
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}, k = {
|
|
44
|
+
id: "background-color",
|
|
45
|
+
title: "背景色",
|
|
46
|
+
fields: [
|
|
47
|
+
{
|
|
48
|
+
type: "color",
|
|
49
|
+
name: "value",
|
|
50
|
+
label: "背景"
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}, x = {
|
|
54
|
+
id: "font-size",
|
|
55
|
+
title: "字号",
|
|
56
|
+
fields: [
|
|
57
|
+
{
|
|
58
|
+
type: "select",
|
|
59
|
+
name: "value",
|
|
60
|
+
label: "字号",
|
|
61
|
+
defaultValue: "16px",
|
|
62
|
+
options: [
|
|
63
|
+
{ label: "小号 14px", value: "14px" },
|
|
64
|
+
{ label: "正文 16px", value: "16px" },
|
|
65
|
+
{ label: "强调 18px", value: "18px" },
|
|
66
|
+
{ label: "标题 20px", value: "20px" },
|
|
67
|
+
{ label: "大标题 24px", value: "24px" }
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}, P = {
|
|
72
|
+
id: "font-family",
|
|
73
|
+
title: "字体",
|
|
74
|
+
fields: [
|
|
75
|
+
{
|
|
76
|
+
type: "select",
|
|
77
|
+
name: "value",
|
|
78
|
+
label: "字体",
|
|
79
|
+
defaultValue: "",
|
|
80
|
+
options: [
|
|
81
|
+
{ label: "跟随页面", value: "" },
|
|
82
|
+
{ label: "无衬线", value: "sans-serif" },
|
|
83
|
+
{ label: "衬线", value: "serif" },
|
|
84
|
+
{ label: "等宽", value: "monospace" }
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
}, w = {
|
|
89
|
+
id: "line-height",
|
|
90
|
+
title: "行高",
|
|
91
|
+
fields: [
|
|
92
|
+
{
|
|
93
|
+
type: "select",
|
|
94
|
+
name: "value",
|
|
95
|
+
label: "行高",
|
|
96
|
+
defaultValue: "1.7",
|
|
97
|
+
options: [
|
|
98
|
+
{ label: "紧凑 1.4", value: "1.4" },
|
|
99
|
+
{ label: "常规 1.7", value: "1.7" },
|
|
100
|
+
{ label: "舒展 2", value: "2" }
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
]
|
|
104
|
+
}, S = {
|
|
105
|
+
id: "table-insert",
|
|
106
|
+
title: "插入表格",
|
|
107
|
+
fields: [
|
|
108
|
+
{
|
|
109
|
+
type: "number",
|
|
110
|
+
name: "rows",
|
|
111
|
+
label: "行数",
|
|
112
|
+
defaultValue: "3",
|
|
113
|
+
min: 1,
|
|
114
|
+
max: y,
|
|
115
|
+
step: 1
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: "number",
|
|
119
|
+
name: "cols",
|
|
120
|
+
label: "列数",
|
|
121
|
+
defaultValue: "3",
|
|
122
|
+
min: 1,
|
|
123
|
+
max: v,
|
|
124
|
+
step: 1
|
|
125
|
+
}
|
|
126
|
+
]
|
|
127
|
+
}, K = [
|
|
128
|
+
{
|
|
129
|
+
id: "table-insert-row-after",
|
|
130
|
+
command: { type: "table.insertRow", direction: "after" },
|
|
131
|
+
label: "插入行",
|
|
132
|
+
icon: "rows-plus",
|
|
133
|
+
group: "table"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
id: "table-delete-row",
|
|
137
|
+
command: { type: "table.deleteRow" },
|
|
138
|
+
label: "删除行",
|
|
139
|
+
icon: "rows-minus",
|
|
140
|
+
group: "table"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
id: "table-insert-column-after",
|
|
144
|
+
command: { type: "table.insertColumn", direction: "after" },
|
|
145
|
+
label: "插入列",
|
|
146
|
+
icon: "columns-plus",
|
|
147
|
+
group: "table"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
id: "table-delete-column",
|
|
151
|
+
command: { type: "table.deleteColumn" },
|
|
152
|
+
label: "删除列",
|
|
153
|
+
icon: "columns-minus",
|
|
154
|
+
group: "table"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
id: "table-delete",
|
|
158
|
+
command: { type: "table.delete" },
|
|
159
|
+
label: "删除表格",
|
|
160
|
+
icon: "table-delete",
|
|
161
|
+
group: "table"
|
|
162
|
+
}
|
|
163
|
+
], p = [
|
|
164
|
+
{
|
|
165
|
+
id: "bold",
|
|
166
|
+
command: { type: "format.bold" },
|
|
167
|
+
label: "加粗",
|
|
168
|
+
icon: "bold",
|
|
169
|
+
group: "text"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
id: "italic",
|
|
173
|
+
command: { type: "format.italic" },
|
|
174
|
+
label: "斜体",
|
|
175
|
+
icon: "italic",
|
|
176
|
+
group: "text"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
id: "underline",
|
|
180
|
+
command: { type: "format.underline" },
|
|
181
|
+
label: "下划线",
|
|
182
|
+
icon: "underline",
|
|
183
|
+
group: "text"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
id: "strike",
|
|
187
|
+
command: { type: "format.strike" },
|
|
188
|
+
label: "删除线",
|
|
189
|
+
icon: "strikethrough",
|
|
190
|
+
group: "text"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
id: "inline-code",
|
|
194
|
+
command: { type: "format.inlineCode" },
|
|
195
|
+
label: "行内代码",
|
|
196
|
+
icon: "code",
|
|
197
|
+
group: "text"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
id: "superscript",
|
|
201
|
+
command: { type: "format.superscript" },
|
|
202
|
+
label: "上标",
|
|
203
|
+
icon: "superscript",
|
|
204
|
+
group: "text"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
id: "subscript",
|
|
208
|
+
command: { type: "format.subscript" },
|
|
209
|
+
label: "下标",
|
|
210
|
+
icon: "subscript",
|
|
211
|
+
group: "text"
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
id: "clear-style",
|
|
215
|
+
command: { type: "format.clear" },
|
|
216
|
+
label: "清除样式",
|
|
217
|
+
icon: "remove-formatting",
|
|
218
|
+
group: "text"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
id: "color",
|
|
222
|
+
command: { type: "format.color", value: "" },
|
|
223
|
+
label: "文字颜色",
|
|
224
|
+
icon: "palette",
|
|
225
|
+
group: "style",
|
|
226
|
+
requiresPayload: !0,
|
|
227
|
+
payloadPanel: f
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
id: "background-color",
|
|
231
|
+
command: { type: "format.backgroundColor", value: "" },
|
|
232
|
+
label: "背景色",
|
|
233
|
+
icon: "paint-bucket",
|
|
234
|
+
group: "style",
|
|
235
|
+
requiresPayload: !0,
|
|
236
|
+
payloadPanel: k
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
id: "font-size",
|
|
240
|
+
command: { type: "format.fontSize", value: "" },
|
|
241
|
+
label: "字号",
|
|
242
|
+
icon: "case-sensitive",
|
|
243
|
+
group: "style",
|
|
244
|
+
requiresPayload: !0,
|
|
245
|
+
payloadPanel: x
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
id: "font-family",
|
|
249
|
+
command: { type: "format.fontFamily", value: "" },
|
|
250
|
+
label: "字体",
|
|
251
|
+
icon: "type",
|
|
252
|
+
group: "style",
|
|
253
|
+
requiresPayload: !0,
|
|
254
|
+
payloadPanel: P
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
id: "line-height",
|
|
258
|
+
command: { type: "format.lineHeight", value: "" },
|
|
259
|
+
label: "行高",
|
|
260
|
+
icon: "wrap-text",
|
|
261
|
+
group: "style",
|
|
262
|
+
requiresPayload: !0,
|
|
263
|
+
payloadPanel: w
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
id: "paragraph",
|
|
267
|
+
command: { type: "block.paragraph" },
|
|
268
|
+
label: "正文",
|
|
269
|
+
icon: "pilcrow",
|
|
270
|
+
group: "block"
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
id: "heading-1",
|
|
274
|
+
command: { type: "block.heading", level: 1 },
|
|
275
|
+
label: "一级标题",
|
|
276
|
+
icon: "heading-1",
|
|
277
|
+
group: "block"
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
id: "heading-2",
|
|
281
|
+
command: { type: "block.heading", level: 2 },
|
|
282
|
+
label: "二级标题",
|
|
283
|
+
icon: "heading-2",
|
|
284
|
+
group: "block"
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
id: "heading-3",
|
|
288
|
+
command: { type: "block.heading", level: 3 },
|
|
289
|
+
label: "三级标题",
|
|
290
|
+
icon: "heading-3",
|
|
291
|
+
group: "block"
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
id: "heading-4",
|
|
295
|
+
command: { type: "block.heading", level: 4 },
|
|
296
|
+
label: "四级标题",
|
|
297
|
+
icon: "heading-4",
|
|
298
|
+
group: "block"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
id: "heading-5",
|
|
302
|
+
command: { type: "block.heading", level: 5 },
|
|
303
|
+
label: "五级标题",
|
|
304
|
+
icon: "heading-5",
|
|
305
|
+
group: "block"
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
id: "heading-6",
|
|
309
|
+
command: { type: "block.heading", level: 6 },
|
|
310
|
+
label: "六级标题",
|
|
311
|
+
icon: "heading-6",
|
|
312
|
+
group: "block"
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
id: "quote",
|
|
316
|
+
command: { type: "block.quote" },
|
|
317
|
+
label: "引用",
|
|
318
|
+
icon: "quote",
|
|
319
|
+
group: "block"
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
id: "divider",
|
|
323
|
+
command: { type: "block.divider" },
|
|
324
|
+
label: "分割线",
|
|
325
|
+
icon: "minus",
|
|
326
|
+
group: "block"
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
id: "code-block",
|
|
330
|
+
command: { type: "block.code" },
|
|
331
|
+
label: "代码块",
|
|
332
|
+
icon: "square-code",
|
|
333
|
+
group: "block"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
id: "ordered-list",
|
|
337
|
+
command: { type: "list.ordered" },
|
|
338
|
+
label: "有序列表",
|
|
339
|
+
icon: "list-ordered",
|
|
340
|
+
group: "list"
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
id: "unordered-list",
|
|
344
|
+
command: { type: "list.unordered" },
|
|
345
|
+
label: "无序列表",
|
|
346
|
+
icon: "list",
|
|
347
|
+
group: "list"
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
id: "todo-list",
|
|
351
|
+
command: { type: "list.todo" },
|
|
352
|
+
label: "待办列表",
|
|
353
|
+
icon: "list-todo",
|
|
354
|
+
group: "list"
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
id: "align-left",
|
|
358
|
+
command: { type: "align", value: "left" },
|
|
359
|
+
label: "左对齐",
|
|
360
|
+
icon: "align-left",
|
|
361
|
+
group: "align"
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
id: "align-center",
|
|
365
|
+
command: { type: "align", value: "center" },
|
|
366
|
+
label: "居中",
|
|
367
|
+
icon: "align-center",
|
|
368
|
+
group: "align"
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
id: "align-right",
|
|
372
|
+
command: { type: "align", value: "right" },
|
|
373
|
+
label: "右对齐",
|
|
374
|
+
icon: "align-right",
|
|
375
|
+
group: "align"
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
id: "align-justify",
|
|
379
|
+
command: { type: "align", value: "justify" },
|
|
380
|
+
label: "两端对齐",
|
|
381
|
+
icon: "align-justify",
|
|
382
|
+
group: "align"
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
id: "indent-increase",
|
|
386
|
+
command: { type: "indent.increase" },
|
|
387
|
+
label: "增加缩进",
|
|
388
|
+
icon: "indent-increase",
|
|
389
|
+
group: "align"
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
id: "indent-decrease",
|
|
393
|
+
command: { type: "indent.decrease" },
|
|
394
|
+
label: "减少缩进",
|
|
395
|
+
icon: "indent-decrease",
|
|
396
|
+
group: "align"
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
id: "mention",
|
|
400
|
+
command: { type: "mention.insert", item: { id: "", label: "", value: "" } },
|
|
401
|
+
label: "@ 提及",
|
|
402
|
+
icon: "at-sign",
|
|
403
|
+
group: "insert",
|
|
404
|
+
requiresPayload: !0
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
id: "upload-image",
|
|
408
|
+
command: { type: "media.pickImage" },
|
|
409
|
+
label: "上传图片",
|
|
410
|
+
icon: "upload-image",
|
|
411
|
+
group: "media"
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
id: "upload-video",
|
|
415
|
+
command: { type: "media.pickVideo" },
|
|
416
|
+
label: "上传视频",
|
|
417
|
+
icon: "upload-video",
|
|
418
|
+
group: "media"
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
id: "table",
|
|
422
|
+
command: { type: "table.insert", rows: 3, cols: 3 },
|
|
423
|
+
label: "表格",
|
|
424
|
+
icon: "table",
|
|
425
|
+
group: "table",
|
|
426
|
+
requiresPayload: !0,
|
|
427
|
+
payloadPanel: S
|
|
428
|
+
},
|
|
429
|
+
...K,
|
|
430
|
+
{
|
|
431
|
+
id: "slash-command",
|
|
432
|
+
command: { type: "slash.open" },
|
|
433
|
+
label: "/ 命令",
|
|
434
|
+
icon: "list-plus",
|
|
435
|
+
group: "insert"
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
id: "undo",
|
|
439
|
+
command: { type: "history.undo" },
|
|
440
|
+
label: "撤销",
|
|
441
|
+
icon: "undo",
|
|
442
|
+
group: "history"
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
id: "redo",
|
|
446
|
+
command: { type: "history.redo" },
|
|
447
|
+
label: "重做",
|
|
448
|
+
icon: "redo",
|
|
449
|
+
group: "history"
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
id: "clear",
|
|
453
|
+
command: { type: "content.clear" },
|
|
454
|
+
label: "清空",
|
|
455
|
+
icon: "trash-2",
|
|
456
|
+
group: "history"
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
id: "fullscreen",
|
|
460
|
+
command: { type: "fullscreen.toggle" },
|
|
461
|
+
label: "全屏",
|
|
462
|
+
icon: "maximize",
|
|
463
|
+
group: "view"
|
|
464
|
+
}
|
|
465
|
+
], r = {
|
|
466
|
+
align: (e) => e.type === "align" ? e.value : void 0,
|
|
467
|
+
"block.heading": (e) => e.type === "block.heading" ? e.level : void 0,
|
|
468
|
+
"block.setCodeLanguage": (e) => e.type === "block.setCodeLanguage" ? e.language : void 0
|
|
469
|
+
}, m = (e) => {
|
|
470
|
+
var l;
|
|
471
|
+
return (l = r[e.type]) == null ? void 0 : l.call(r, e);
|
|
472
|
+
}, T = (e, l) => {
|
|
473
|
+
const a = m(e);
|
|
474
|
+
return l.command === e.type && (a === void 0 || l.value === a);
|
|
475
|
+
}, _ = (e, l) => T(e.command, l);
|
|
476
|
+
function z(e = p) {
|
|
477
|
+
return e.map((l) => ({
|
|
478
|
+
command: l.command.type,
|
|
479
|
+
active: !1,
|
|
480
|
+
disabled: !0,
|
|
481
|
+
value: m(l.command)
|
|
482
|
+
}));
|
|
483
|
+
}
|
|
484
|
+
const u = {
|
|
485
|
+
toolbarKeys: [
|
|
486
|
+
"undo",
|
|
487
|
+
"redo",
|
|
488
|
+
"clear",
|
|
489
|
+
"|",
|
|
490
|
+
"paragraph",
|
|
491
|
+
"heading-1",
|
|
492
|
+
"heading-2",
|
|
493
|
+
"heading-3",
|
|
494
|
+
"heading-4",
|
|
495
|
+
"heading-5",
|
|
496
|
+
"heading-6",
|
|
497
|
+
"quote",
|
|
498
|
+
"divider",
|
|
499
|
+
"code-block",
|
|
500
|
+
"|",
|
|
501
|
+
"bold",
|
|
502
|
+
"italic",
|
|
503
|
+
"underline",
|
|
504
|
+
"strike",
|
|
505
|
+
"inline-code",
|
|
506
|
+
"superscript",
|
|
507
|
+
"subscript",
|
|
508
|
+
"clear-style",
|
|
509
|
+
"color",
|
|
510
|
+
"background-color",
|
|
511
|
+
"font-size",
|
|
512
|
+
"font-family",
|
|
513
|
+
"line-height",
|
|
514
|
+
"|",
|
|
515
|
+
"ordered-list",
|
|
516
|
+
"unordered-list",
|
|
517
|
+
"todo-list",
|
|
518
|
+
"|",
|
|
519
|
+
"upload-image",
|
|
520
|
+
"upload-video",
|
|
521
|
+
"|",
|
|
522
|
+
"table",
|
|
523
|
+
"|",
|
|
524
|
+
"align-left",
|
|
525
|
+
"align-center",
|
|
526
|
+
"align-right",
|
|
527
|
+
"align-justify",
|
|
528
|
+
"indent-increase",
|
|
529
|
+
"indent-decrease",
|
|
530
|
+
"|",
|
|
531
|
+
"fullscreen"
|
|
532
|
+
]
|
|
533
|
+
}, q = (e) => typeof e == "object" && Array.isArray(e.menuKeys), M = (e) => new Map(
|
|
534
|
+
e.map((l) => [l.id, l])
|
|
535
|
+
), I = (e, l) => typeof e == "string" ? e !== "|" && l.has(e) : l.has(e.key) || e.menuKeys.every((a) => l.has(a)), R = (e, l) => {
|
|
536
|
+
const a = new Set((l == null ? void 0 : l.excludeKeys) ?? []), n = e.filter((t) => !I(t, a));
|
|
537
|
+
if (!(l != null && l.insertKeys)) return n;
|
|
538
|
+
const o = Math.max(0, Math.min(l.insertKeys.index, n.length));
|
|
539
|
+
return [
|
|
540
|
+
...n.slice(0, o),
|
|
541
|
+
...l.insertKeys.keys,
|
|
542
|
+
...n.slice(o)
|
|
543
|
+
];
|
|
544
|
+
}, j = (e, l, a, n) => {
|
|
545
|
+
if (e === "|")
|
|
546
|
+
return [{ type: "separator", key: `separator-${n}` }];
|
|
547
|
+
if (typeof e == "string") {
|
|
548
|
+
const o = l.get(e);
|
|
549
|
+
return !o || o.requiresPayload && !o.payloadPanel || a.has(o.id) ? [] : [{ type: "button", item: o }];
|
|
550
|
+
}
|
|
551
|
+
if (q(e)) {
|
|
552
|
+
const o = e.menuKeys.filter((t) => !a.has(t)).map((t) => l.get(t)).filter((t) => t !== void 0 && (!t.requiresPayload || t.payloadPanel !== void 0));
|
|
553
|
+
return o.length > 0 ? [{
|
|
554
|
+
type: "group",
|
|
555
|
+
key: e.key,
|
|
556
|
+
title: e.title,
|
|
557
|
+
icon: e.icon,
|
|
558
|
+
items: o
|
|
559
|
+
}] : [];
|
|
560
|
+
}
|
|
561
|
+
return [];
|
|
562
|
+
}, E = (e, l) => {
|
|
563
|
+
if (e.type !== "separator") return !0;
|
|
564
|
+
const a = l[l.length - 1];
|
|
565
|
+
return a !== void 0 && a.type !== "separator";
|
|
566
|
+
}, L = (e) => {
|
|
567
|
+
var l;
|
|
568
|
+
for (; ((l = e.at(-1)) == null ? void 0 : l.type) === "separator"; )
|
|
569
|
+
e.pop();
|
|
570
|
+
return e;
|
|
571
|
+
}, A = (e = u, l = p) => {
|
|
572
|
+
const a = M(l), n = e.toolbarKeys ?? u.toolbarKeys ?? [], o = R(n, e), t = new Set(e.excludeKeys ?? []);
|
|
573
|
+
let d = 0;
|
|
574
|
+
const b = o.reduce((i, c) => {
|
|
575
|
+
const g = j(c, a, t, d);
|
|
576
|
+
return c === "|" && (d += 1), g.forEach((s) => {
|
|
577
|
+
E(s, i) && i.push(s);
|
|
578
|
+
}), i;
|
|
579
|
+
}, []);
|
|
580
|
+
return L(b);
|
|
581
|
+
};
|
|
582
|
+
export {
|
|
583
|
+
h as codeBlockLanguagePanel,
|
|
584
|
+
V as codeBlockLanguagePayloadPanel,
|
|
585
|
+
z as createDisabledCommandStates,
|
|
586
|
+
p as defaultMenuSchema,
|
|
587
|
+
u as defaultToolbarConfig,
|
|
588
|
+
m as getCommandStateMatchValue,
|
|
589
|
+
T as isCommandStateForCommand,
|
|
590
|
+
_ as isMenuItemCommandState,
|
|
591
|
+
A as resolveToolbarMenu,
|
|
592
|
+
K as tableHeaderMenuItems
|
|
593
|
+
};
|
|
594
|
+
//# sourceMappingURL=native-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-spec.js","sources":["../../native-spec/src/menuSchema/payloadPanels.ts","../../native-spec/src/menuSchema/tableHeaderMenuItems.ts","../../native-spec/src/menuSchema/defaultMenuSchema.ts","../../native-spec/src/commandState/index.ts","../../native-spec/src/toolbarConfig/index.ts"],"sourcesContent":["import {\n BRIDGERTE_TABLE_INSERT_MAX_COLS,\n BRIDGERTE_TABLE_INSERT_MAX_ROWS,\n type PayloadPanelSchema\n} from '@bridgerte/core';\n\n/**\n * 代码块语言列表给 DOM 代码块顶部控制栏和原生侧自绘使用。\n *\n * 空字符串表示纯文本;默认候选覆盖 Lexical Prism tokenizer 当前内置语言,并保留\n * JSON 这个高频实用项。业务如需裁剪语言、调整顺序或接入更多 Prism 语言,传入\n * 自己的 `codeBlockLanguagePanel` 即可,不需要改 DOM 内置语言菜单。\n */\nexport const codeBlockLanguagePanel: PayloadPanelSchema = {\n id: 'code-block-language',\n title: '代码语言',\n fields: [\n {\n type: 'select',\n name: 'language',\n label: '语言',\n defaultValue: '',\n options: [\n { label: '纯文本', value: '' },\n { label: 'C', value: 'c' },\n { label: 'C-like', value: 'clike' },\n { label: 'C++', value: 'cpp' },\n { label: 'CSS', value: 'css' },\n { label: 'HTML', value: 'html' },\n { label: 'Java', value: 'java' },\n { label: 'JavaScript', value: 'javascript' },\n { label: 'JSON', value: 'json' },\n { label: 'Markdown', value: 'markdown' },\n { label: 'Objective-C', value: 'objc' },\n { label: 'PowerShell', value: 'powershell' },\n { label: 'Python', value: 'python' },\n { label: 'Rust', value: 'rust' },\n { label: 'SQL', value: 'sql' },\n { label: 'Swift', value: 'swift' },\n { label: 'TypeScript', value: 'typescript' },\n { label: 'XML', value: 'xml' }\n ]\n }\n ]\n};\n\n/**\n * 兼容旧导出名。\n *\n * 代码块语言现在由代码块 header 触发,不再代表 toolbar 菜单 payload。\n */\nexport const codeBlockLanguagePayloadPanel = codeBlockLanguagePanel;\n\n/**\n * 颜色菜单使用 color 字段而不是预设色列表。\n *\n * DOM 默认面板可以渲染内置颜色控件,RN/Flutter/WebView 或业务自绘层仍读取同一份 schema。\n */\nexport const textColorPanel: PayloadPanelSchema = {\n id: 'text-color',\n title: '文字颜色',\n fields: [\n {\n type: 'color',\n name: 'value',\n label: '颜色'\n }\n ]\n};\n\nexport const backgroundColorPanel: PayloadPanelSchema = {\n id: 'background-color',\n title: '背景色',\n fields: [\n {\n type: 'color',\n name: 'value',\n label: '背景'\n }\n ]\n};\n\nexport const fontSizePanel: PayloadPanelSchema = {\n id: 'font-size',\n title: '字号',\n fields: [\n {\n type: 'select',\n name: 'value',\n label: '字号',\n defaultValue: '16px',\n options: [\n { label: '小号 14px', value: '14px' },\n { label: '正文 16px', value: '16px' },\n { label: '强调 18px', value: '18px' },\n { label: '标题 20px', value: '20px' },\n { label: '大标题 24px', value: '24px' }\n ]\n }\n ]\n};\n\nexport const fontFamilyPanel: PayloadPanelSchema = {\n id: 'font-family',\n title: '字体',\n fields: [\n {\n type: 'select',\n name: 'value',\n label: '字体',\n defaultValue: '',\n options: [\n { label: '跟随页面', value: '' },\n { label: '无衬线', value: 'sans-serif' },\n { label: '衬线', value: 'serif' },\n { label: '等宽', value: 'monospace' }\n ]\n }\n ]\n};\n\nexport const lineHeightPanel: PayloadPanelSchema = {\n id: 'line-height',\n title: '行高',\n fields: [\n {\n type: 'select',\n name: 'value',\n label: '行高',\n defaultValue: '1.7',\n options: [\n { label: '紧凑 1.4', value: '1.4' },\n { label: '常规 1.7', value: '1.7' },\n { label: '舒展 2', value: '2' }\n ]\n }\n ]\n};\n\n/**\n * 表格插入使用 number 字段收集行列。\n *\n * DOM 默认面板、H5 自绘和 RN/Flutter 原生表单都读取同一份 schema;真正的表格进阶操作\n * 仍放后续表格菜单阶段继续扩展。\n */\nexport const tableInsertPanel: PayloadPanelSchema = {\n id: 'table-insert',\n title: '插入表格',\n fields: [\n {\n type: 'number',\n name: 'rows',\n label: '行数',\n defaultValue: '3',\n min: 1,\n max: BRIDGERTE_TABLE_INSERT_MAX_ROWS,\n step: 1\n },\n {\n type: 'number',\n name: 'cols',\n label: '列数',\n defaultValue: '3',\n min: 1,\n max: BRIDGERTE_TABLE_INSERT_MAX_COLS,\n step: 1\n }\n ]\n};\n","import type { MenuItem } from './type';\n\n/*\n * 表格 header 和后续表格浮动菜单共用这组操作入口。\n * 这些菜单默认不进入 toolbar 排列,但仍放在 native-spec,保证 DOM/RN/Flutter 自绘读取同一份\n * command/label/icon 协议。\n */\nexport const tableHeaderMenuItems: MenuItem[] = [\n {\n id: 'table-insert-row-after',\n command: { type: 'table.insertRow', direction: 'after' },\n label: '插入行',\n icon: 'rows-plus',\n group: 'table'\n },\n {\n id: 'table-delete-row',\n command: { type: 'table.deleteRow' },\n label: '删除行',\n icon: 'rows-minus',\n group: 'table'\n },\n {\n id: 'table-insert-column-after',\n command: { type: 'table.insertColumn', direction: 'after' },\n label: '插入列',\n icon: 'columns-plus',\n group: 'table'\n },\n {\n id: 'table-delete-column',\n command: { type: 'table.deleteColumn' },\n label: '删除列',\n icon: 'columns-minus',\n group: 'table'\n },\n {\n id: 'table-delete',\n command: { type: 'table.delete' },\n label: '删除表格',\n icon: 'table-delete',\n group: 'table'\n }\n];\n","import type { MenuItem } from './type';\nimport {\n backgroundColorPanel,\n fontFamilyPanel,\n fontSizePanel,\n lineHeightPanel,\n tableInsertPanel,\n textColorPanel\n} from './payloadPanels';\nimport { tableHeaderMenuItems } from './tableHeaderMenuItems';\n\n/**\n * 默认菜单 schema 覆盖 wangEditor 常用入口。\n *\n * RN/Flutter 可以按 group 渲染分组,也可以基于 id 做业务侧排序或裁剪。\n */\nexport const defaultMenuSchema: MenuItem[] = [\n {\n id: 'bold',\n command: { type: 'format.bold' },\n label: '加粗',\n icon: 'bold',\n group: 'text'\n },\n {\n id: 'italic',\n command: { type: 'format.italic' },\n label: '斜体',\n icon: 'italic',\n group: 'text'\n },\n {\n id: 'underline',\n command: { type: 'format.underline' },\n label: '下划线',\n icon: 'underline',\n group: 'text'\n },\n {\n id: 'strike',\n command: { type: 'format.strike' },\n label: '删除线',\n icon: 'strikethrough',\n group: 'text'\n },\n {\n id: 'inline-code',\n command: { type: 'format.inlineCode' },\n label: '行内代码',\n icon: 'code',\n group: 'text'\n },\n {\n id: 'superscript',\n command: { type: 'format.superscript' },\n label: '上标',\n icon: 'superscript',\n group: 'text'\n },\n {\n id: 'subscript',\n command: { type: 'format.subscript' },\n label: '下标',\n icon: 'subscript',\n group: 'text'\n },\n {\n id: 'clear-style',\n command: { type: 'format.clear' },\n label: '清除样式',\n icon: 'remove-formatting',\n group: 'text'\n },\n {\n id: 'color',\n command: { type: 'format.color', value: '' },\n label: '文字颜色',\n icon: 'palette',\n group: 'style',\n requiresPayload: true,\n payloadPanel: textColorPanel\n },\n {\n id: 'background-color',\n command: { type: 'format.backgroundColor', value: '' },\n label: '背景色',\n icon: 'paint-bucket',\n group: 'style',\n requiresPayload: true,\n payloadPanel: backgroundColorPanel\n },\n {\n id: 'font-size',\n command: { type: 'format.fontSize', value: '' },\n label: '字号',\n icon: 'case-sensitive',\n group: 'style',\n requiresPayload: true,\n payloadPanel: fontSizePanel\n },\n {\n id: 'font-family',\n command: { type: 'format.fontFamily', value: '' },\n label: '字体',\n icon: 'type',\n group: 'style',\n requiresPayload: true,\n payloadPanel: fontFamilyPanel\n },\n {\n id: 'line-height',\n command: { type: 'format.lineHeight', value: '' },\n label: '行高',\n icon: 'wrap-text',\n group: 'style',\n requiresPayload: true,\n payloadPanel: lineHeightPanel\n },\n {\n id: 'paragraph',\n command: { type: 'block.paragraph' },\n label: '正文',\n icon: 'pilcrow',\n group: 'block'\n },\n {\n id: 'heading-1',\n command: { type: 'block.heading', level: 1 },\n label: '一级标题',\n icon: 'heading-1',\n group: 'block'\n },\n {\n id: 'heading-2',\n command: { type: 'block.heading', level: 2 },\n label: '二级标题',\n icon: 'heading-2',\n group: 'block'\n },\n {\n id: 'heading-3',\n command: { type: 'block.heading', level: 3 },\n label: '三级标题',\n icon: 'heading-3',\n group: 'block'\n },\n {\n id: 'heading-4',\n command: { type: 'block.heading', level: 4 },\n label: '四级标题',\n icon: 'heading-4',\n group: 'block'\n },\n {\n id: 'heading-5',\n command: { type: 'block.heading', level: 5 },\n label: '五级标题',\n icon: 'heading-5',\n group: 'block'\n },\n {\n id: 'heading-6',\n command: { type: 'block.heading', level: 6 },\n label: '六级标题',\n icon: 'heading-6',\n group: 'block'\n },\n {\n id: 'quote',\n command: { type: 'block.quote' },\n label: '引用',\n icon: 'quote',\n group: 'block'\n },\n {\n id: 'divider',\n command: { type: 'block.divider' },\n label: '分割线',\n icon: 'minus',\n group: 'block'\n },\n {\n id: 'code-block',\n command: { type: 'block.code' },\n label: '代码块',\n icon: 'square-code',\n group: 'block'\n },\n {\n id: 'ordered-list',\n command: { type: 'list.ordered' },\n label: '有序列表',\n icon: 'list-ordered',\n group: 'list'\n },\n {\n id: 'unordered-list',\n command: { type: 'list.unordered' },\n label: '无序列表',\n icon: 'list',\n group: 'list'\n },\n {\n id: 'todo-list',\n command: { type: 'list.todo' },\n label: '待办列表',\n icon: 'list-todo',\n group: 'list'\n },\n {\n id: 'align-left',\n command: { type: 'align', value: 'left' },\n label: '左对齐',\n icon: 'align-left',\n group: 'align'\n },\n {\n id: 'align-center',\n command: { type: 'align', value: 'center' },\n label: '居中',\n icon: 'align-center',\n group: 'align'\n },\n {\n id: 'align-right',\n command: { type: 'align', value: 'right' },\n label: '右对齐',\n icon: 'align-right',\n group: 'align'\n },\n {\n id: 'align-justify',\n command: { type: 'align', value: 'justify' },\n label: '两端对齐',\n icon: 'align-justify',\n group: 'align'\n },\n {\n id: 'indent-increase',\n command: { type: 'indent.increase' },\n label: '增加缩进',\n icon: 'indent-increase',\n group: 'align'\n },\n {\n id: 'indent-decrease',\n command: { type: 'indent.decrease' },\n label: '减少缩进',\n icon: 'indent-decrease',\n group: 'align'\n },\n {\n id: 'mention',\n command: { type: 'mention.insert', item: { id: '', label: '', value: '' } },\n label: '@ 提及',\n icon: 'at-sign',\n group: 'insert',\n requiresPayload: true\n },\n {\n id: 'upload-image',\n command: { type: 'media.pickImage' },\n label: '上传图片',\n icon: 'upload-image',\n group: 'media'\n },\n {\n id: 'upload-video',\n command: { type: 'media.pickVideo' },\n label: '上传视频',\n icon: 'upload-video',\n group: 'media'\n },\n {\n id: 'table',\n command: { type: 'table.insert', rows: 3, cols: 3 },\n label: '表格',\n icon: 'table',\n group: 'table',\n requiresPayload: true,\n payloadPanel: tableInsertPanel\n },\n ...tableHeaderMenuItems,\n {\n id: 'slash-command',\n command: { type: 'slash.open' },\n label: '/ 命令',\n icon: 'list-plus',\n group: 'insert'\n },\n {\n id: 'undo',\n command: { type: 'history.undo' },\n label: '撤销',\n icon: 'undo',\n group: 'history'\n },\n {\n id: 'redo',\n command: { type: 'history.redo' },\n label: '重做',\n icon: 'redo',\n group: 'history'\n },\n {\n id: 'clear',\n command: { type: 'content.clear' },\n label: '清空',\n icon: 'trash-2',\n group: 'history'\n },\n {\n id: 'fullscreen',\n command: { type: 'fullscreen.toggle' },\n label: '全屏',\n icon: 'maximize',\n group: 'view'\n }\n];\n","import type { CommandState, EditorCommand } from '@bridgerte/core';\nimport type { MenuItem } from '../menuSchema';\nimport { defaultMenuSchema } from '../menuSchema';\n\nconst commandStateValueByType: Partial<Record<EditorCommand['type'], (command: EditorCommand) => (\n CommandState['value'] | undefined\n)>> = {\n align: (command) => command.type === 'align' ? command.value : undefined,\n 'block.heading': (command) => command.type === 'block.heading' ? command.level : undefined,\n 'block.setCodeLanguage': (command) => (\n command.type === 'block.setCodeLanguage' ? command.language : undefined\n )\n};\n\n/**\n * 取出菜单命令用于匹配 `CommandState.value` 的稳定值。\n *\n * 同类命令存在多个菜单项时使用这个值区分,比如对齐方式和标题级别。\n */\nexport const getCommandStateMatchValue = (\n command: EditorCommand\n): CommandState['value'] | undefined => commandStateValueByType[command.type]?.(command);\n\n/**\n * 判断某条命令状态是否对应一个完整命令 payload。\n */\nexport const isCommandStateForCommand = (\n command: EditorCommand,\n state: CommandState\n): boolean => {\n const matchValue = getCommandStateMatchValue(command);\n\n return state.command === command.type\n && (matchValue === undefined || state.value === matchValue);\n};\n\n/**\n * 判断某条命令状态是否对应一个菜单项。\n *\n * 原生 toolbar 可以用它把 `CommandState[]` 映射回具体按钮 active/disabled 状态。\n */\nexport const isMenuItemCommandState = (item: MenuItem, state: CommandState): boolean => (\n isCommandStateForCommand(item.command, state)\n);\n\n/**\n * 为给定菜单生成默认禁用状态。\n *\n * 编辑器未 ready 或无选区时,原生 toolbar 可以先使用这组状态兜底。\n */\nexport function createDisabledCommandStates(menuSchema = defaultMenuSchema): CommandState[] {\n return menuSchema.map((item) => ({\n command: item.command.type,\n active: false,\n disabled: true,\n value: getCommandStateMatchValue(item.command)\n }));\n}\n","import type { ToolbarConfig, ToolbarGroupConfig, ToolbarKey } from '@bridgerte/core';\nimport type { MenuItem } from '../menuSchema';\nimport { defaultMenuSchema } from '../menuSchema';\nimport type { ResolvedToolbarItem } from './type';\n\nexport type * from './type';\n\n/**\n * 默认 DOM toolbar 配置。\n *\n * 这里只选择已实现或带参数面板的基础按钮;完整菜单全集仍由 `defaultMenuSchema` 维护。\n */\nexport const defaultToolbarConfig: ToolbarConfig = {\n toolbarKeys: [\n 'undo',\n 'redo',\n 'clear',\n '|',\n 'paragraph',\n 'heading-1',\n 'heading-2',\n 'heading-3',\n 'heading-4',\n 'heading-5',\n 'heading-6',\n 'quote',\n 'divider',\n 'code-block',\n '|',\n 'bold',\n 'italic',\n 'underline',\n 'strike',\n 'inline-code',\n 'superscript',\n 'subscript',\n 'clear-style',\n 'color',\n 'background-color',\n 'font-size',\n 'font-family',\n 'line-height',\n '|',\n 'ordered-list',\n 'unordered-list',\n 'todo-list',\n '|',\n 'upload-image',\n 'upload-video',\n '|',\n 'table',\n '|',\n 'align-left',\n 'align-center',\n 'align-right',\n 'align-justify',\n 'indent-increase',\n 'indent-decrease',\n '|',\n 'fullscreen'\n ]\n};\n\nconst isToolbarGroupConfig = (key: ToolbarKey): key is ToolbarGroupConfig => (\n typeof key === 'object' && Array.isArray(key.menuKeys)\n);\n\nconst createMenuMap = (menuSchema: MenuItem[]) => new Map(\n menuSchema.map((item) => [item.id, item])\n);\n\nconst shouldExcludeToolbarKey = (\n key: ToolbarKey,\n excludeKeys: Set<string>\n) => {\n if (typeof key === 'string') return key !== '|' && excludeKeys.has(key);\n\n return excludeKeys.has(key.key) || key.menuKeys.every((menuKey) => excludeKeys.has(menuKey));\n};\n\nconst applyToolbarConfigOverrides = (\n baseKeys: ToolbarKey[],\n toolbarConfig?: ToolbarConfig\n): ToolbarKey[] => {\n const excludeKeys = new Set(toolbarConfig?.excludeKeys ?? []);\n /*\n * 先排除再插入,等价于“在用户最终想保留的默认菜单里加东西”。\n * insert index 做夹取,避免业务传入负数或超长下标时破坏默认 toolbar。\n */\n const filteredKeys = baseKeys.filter((key) => !shouldExcludeToolbarKey(key, excludeKeys));\n\n if (!toolbarConfig?.insertKeys) return filteredKeys;\n\n const insertIndex = Math.max(0, Math.min(toolbarConfig.insertKeys.index, filteredKeys.length));\n\n return [\n ...filteredKeys.slice(0, insertIndex),\n ...toolbarConfig.insertKeys.keys,\n ...filteredKeys.slice(insertIndex)\n ];\n};\n\nconst resolveToolbarKey = (\n key: ToolbarKey,\n menuMap: Map<string, MenuItem>,\n excludeKeys: Set<string>,\n separatorIndex: number\n): ResolvedToolbarItem[] => {\n if (key === '|') {\n return [{ type: 'separator', key: `separator-${separatorIndex}` }];\n }\n\n if (typeof key === 'string') {\n const item = menuMap.get(key);\n\n // 未知 key 直接忽略;需要 payload 但没有 panel 的菜单暂不渲染,避免按钮点击后无法生成合法命令。\n if (!item || (item.requiresPayload && !item.payloadPanel) || excludeKeys.has(item.id)) {\n return [];\n }\n\n return [{ type: 'button', item }];\n }\n\n if (isToolbarGroupConfig(key)) {\n const items = key.menuKeys\n .filter((menuKey) => !excludeKeys.has(menuKey))\n .map((menuKey) => menuMap.get(menuKey))\n .filter((item): item is MenuItem => (\n item !== undefined && (!item.requiresPayload || item.payloadPanel !== undefined)\n ));\n\n return items.length > 0 ? [{\n type: 'group',\n key: key.key,\n title: key.title,\n icon: key.icon,\n items\n }] : [];\n }\n\n return [];\n};\n\nconst shouldKeepResolvedToolbarItem = (\n item: ResolvedToolbarItem,\n items: ResolvedToolbarItem[]\n) => {\n if (item.type !== 'separator') return true;\n\n const previousItem = items[items.length - 1];\n\n return previousItem !== undefined && previousItem.type !== 'separator';\n};\n\nconst trimTrailingToolbarSeparators = (items: ResolvedToolbarItem[]) => {\n while (items.at(-1)?.type === 'separator') {\n items.pop();\n }\n\n return items;\n};\n\n/**\n * 把 wangEditor 风格的 JSON 配置解析成 DOM/RN/Flutter 都能消费的菜单结构。\n *\n * 未知 key 和缺少 payloadPanel 的 requiresPayload 菜单会被忽略,避免默认 toolbar 渲染无法处理的按钮。\n * 分割线会自动去掉开头、结尾和连续项,避免被跳过的菜单留下空分隔。\n */\nexport const resolveToolbarMenu = (\n toolbarConfig: ToolbarConfig = defaultToolbarConfig,\n menuSchema: MenuItem[] = defaultMenuSchema\n): ResolvedToolbarItem[] => {\n const menuMap = createMenuMap(menuSchema);\n const baseKeys = toolbarConfig.toolbarKeys ?? defaultToolbarConfig.toolbarKeys ?? [];\n const toolbarKeys = applyToolbarConfigOverrides(baseKeys, toolbarConfig);\n const excludeKeys = new Set(toolbarConfig.excludeKeys ?? []);\n let separatorIndex = 0;\n\n const resolvedItems = toolbarKeys.reduce<ResolvedToolbarItem[]>((items, key) => {\n const nextItems = resolveToolbarKey(key, menuMap, excludeKeys, separatorIndex);\n\n if (key === '|') separatorIndex += 1;\n\n nextItems.forEach((item) => {\n if (shouldKeepResolvedToolbarItem(item, items)) {\n items.push(item);\n }\n });\n\n return items;\n }, []);\n\n return trimTrailingToolbarSeparators(resolvedItems);\n};\n"],"names":["codeBlockLanguagePanel","codeBlockLanguagePayloadPanel","textColorPanel","backgroundColorPanel","fontSizePanel","fontFamilyPanel","lineHeightPanel","tableInsertPanel","BRIDGERTE_TABLE_INSERT_MAX_ROWS","BRIDGERTE_TABLE_INSERT_MAX_COLS","tableHeaderMenuItems","defaultMenuSchema","commandStateValueByType","command","getCommandStateMatchValue","_a","isCommandStateForCommand","state","matchValue","isMenuItemCommandState","item","createDisabledCommandStates","menuSchema","defaultToolbarConfig","isToolbarGroupConfig","key","createMenuMap","shouldExcludeToolbarKey","excludeKeys","menuKey","applyToolbarConfigOverrides","baseKeys","toolbarConfig","filteredKeys","insertIndex","resolveToolbarKey","menuMap","separatorIndex","items","shouldKeepResolvedToolbarItem","previousItem","trimTrailingToolbarSeparators","resolveToolbarMenu","toolbarKeys","resolvedItems","nextItems"],"mappings":"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"}
|