@llui/markdown-editor 0.2.14 → 0.4.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.
Files changed (70) hide show
  1. package/dist/editor.d.ts +22 -2
  2. package/dist/editor.d.ts.map +1 -1
  3. package/dist/editor.js +45 -6
  4. package/dist/editor.js.map +1 -1
  5. package/dist/effects.d.ts +0 -1
  6. package/dist/effects.d.ts.map +1 -1
  7. package/dist/effects.js +4 -1
  8. package/dist/effects.js.map +1 -1
  9. package/dist/index.d.ts +9 -4
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +18 -4
  12. package/dist/index.js.map +1 -1
  13. package/dist/plugins/block-drag.d.ts +73 -0
  14. package/dist/plugins/block-drag.d.ts.map +1 -0
  15. package/dist/plugins/block-drag.js +760 -0
  16. package/dist/plugins/block-drag.js.map +1 -0
  17. package/dist/plugins/code-language.d.ts +60 -0
  18. package/dist/plugins/code-language.d.ts.map +1 -0
  19. package/dist/plugins/code-language.js +308 -0
  20. package/dist/plugins/code-language.js.map +1 -0
  21. package/dist/plugins/frontmatter.d.ts +45 -0
  22. package/dist/plugins/frontmatter.d.ts.map +1 -0
  23. package/dist/plugins/frontmatter.js +281 -0
  24. package/dist/plugins/frontmatter.js.map +1 -0
  25. package/dist/plugins/overlay.d.ts +1 -0
  26. package/dist/plugins/overlay.d.ts.map +1 -1
  27. package/dist/plugins/overlay.js +7 -0
  28. package/dist/plugins/overlay.js.map +1 -1
  29. package/dist/plugins/table.d.ts.map +1 -1
  30. package/dist/plugins/table.js +77 -15
  31. package/dist/plugins/table.js.map +1 -1
  32. package/dist/plugins/wikilink.d.ts +91 -0
  33. package/dist/plugins/wikilink.d.ts.map +1 -0
  34. package/dist/plugins/wikilink.js +467 -0
  35. package/dist/plugins/wikilink.js.map +1 -0
  36. package/dist/styles/block-drag.css +63 -0
  37. package/dist/styles/editor.css +64 -6
  38. package/dist/theme.d.ts +2 -5
  39. package/dist/theme.d.ts.map +1 -1
  40. package/dist/theme.js +15 -11
  41. package/dist/theme.js.map +1 -1
  42. package/dist/transformers/code.d.ts +24 -0
  43. package/dist/transformers/code.d.ts.map +1 -0
  44. package/dist/transformers/code.js +167 -0
  45. package/dist/transformers/code.js.map +1 -0
  46. package/dist/transformers/gfm.d.ts +9 -1
  47. package/dist/transformers/gfm.d.ts.map +1 -1
  48. package/dist/transformers/gfm.js +16 -4
  49. package/dist/transformers/gfm.js.map +1 -1
  50. package/dist/transformers/registry.d.ts +3 -0
  51. package/dist/transformers/registry.d.ts.map +1 -1
  52. package/dist/transformers/registry.js +26 -0
  53. package/dist/transformers/registry.js.map +1 -1
  54. package/package.json +45 -31
  55. package/src/editor.ts +77 -9
  56. package/src/effects.ts +4 -2
  57. package/src/index.ts +61 -9
  58. package/src/plugins/block-drag.ts +912 -0
  59. package/src/plugins/code-language.ts +378 -0
  60. package/src/plugins/frontmatter.ts +324 -0
  61. package/src/plugins/overlay.ts +7 -0
  62. package/src/plugins/table.ts +87 -13
  63. package/src/plugins/wikilink.ts +553 -0
  64. package/src/styles/block-drag.css +63 -0
  65. package/src/styles/editor.css +64 -6
  66. package/src/theme.ts +15 -11
  67. package/src/transformers/code.ts +174 -0
  68. package/src/transformers/gfm.ts +16 -4
  69. package/src/transformers/registry.ts +27 -0
  70. package/dist/__llui_deps.json +0 -274
@@ -0,0 +1,281 @@
1
+ // YAML frontmatter plugin — the leading `---` … `---` metadata block.
2
+ //
3
+ // ## Why the block is an OPAQUE STRING, not parsed YAML
4
+ //
5
+ // Deliberate choice, and the requirement that drove it is round-trip fidelity:
6
+ // what the author wrote must come back out byte-for-byte. Two options exist —
7
+ // parse YAML properly, or don't parse it at all — and only the second is
8
+ // achievable here:
9
+ //
10
+ // - Parsing correctly means a real YAML 1.2 implementation (anchors, aliases,
11
+ // tags, flow/block collections, the five scalar styles, folded/literal block
12
+ // scalars with their indentation-indicator and chomping rules). Nothing
13
+ // smaller is *correct*, and a correct parser is not enough by itself: a
14
+ // round-trip also needs a comment- and style-preserving EMITTER, because
15
+ // `parse` → `stringify` normalizes quoting, key order, indentation and drops
16
+ // comments outright. That is a large dependency (this package deliberately
17
+ // dropped Prism from `@lexical/code` for exactly this reason — see
18
+ // `code-language.ts`) to buy a feature the editor does not need: it never
19
+ // interprets frontmatter, it only has to preserve it.
20
+ //
21
+ // - The naive middle ground — split each line on the first `:` into a
22
+ // `Record<string, string>` — is what the reference implementation this was
23
+ // modelled on does, and it is strictly WORSE than not parsing. Nested maps,
24
+ // sequences, block scalars, quoted values containing `:`, comments and blank
25
+ // lines are all silently flattened or destroyed. A lossy parse presented as
26
+ // structured data is a data-loss bug wearing a feature's clothes.
27
+ //
28
+ // So the block is stored verbatim as a single `source` string and re-emitted
29
+ // between two fences. Consumers that *want* structure own that choice: hand
30
+ // `$getFrontmatter()` to whatever YAML library they already ship, or supply
31
+ // `render` to draw a preview. The editor stays honest about not understanding it.
32
+ //
33
+ // The one unavoidable deviation from byte-for-byte: `$convertFromMarkdownString`
34
+ // runs `normalizeMarkdown`, which `trimEnd()`s every line BEFORE any transformer
35
+ // is consulted, so trailing whitespace inside the block is lost. That happens
36
+ // upstream of every transformer and cannot be intercepted from one. YAML treats
37
+ // trailing spaces as insignificant, so nothing meaningful changes. Likewise a
38
+ // body that is empty or only blank lines normalizes to the canonical `---\n---`.
39
+ //
40
+ // ## The `---` collision with `hrPlugin`
41
+ //
42
+ // `hrPlugin`'s ELEMENT transformer matches `/^(---|\*\*\*|___)\s*$/`, so before
43
+ // this plugin existed a leading frontmatter block parsed as a horizontal rule
44
+ // followed by loose prose. Telling consumers to drop `hrPlugin` is not a fix:
45
+ // `---` is legitimately both things, and which one it is depends on POSITION and
46
+ // CLOSURE, not on which plugin is loaded.
47
+ //
48
+ // The resolution is structural, not ordering-based. `@lexical/markdown`'s
49
+ // importer tries EVERY multiline-element transformer on a line before ANY
50
+ // element transformer (`$importMultiline` runs first in `$importMarkdownNodes`;
51
+ // export mirrors it with `[...multilineElement, ...element]`). This is therefore
52
+ // a `multiline-element` transformer, which means it is consulted ahead of the
53
+ // `hr` element transformer no matter where the two plugins sit in the array —
54
+ // plugin ORDER cannot change the outcome, and neither can loading or omitting
55
+ // `hrPlugin`.
56
+ //
57
+ // Claiming the line is then narrowed by `handleImportAfterStartMatch`, which
58
+ // returns `null` — "not mine, try the next transformer" — unless BOTH hold:
59
+ //
60
+ // 1. the fence is on line 0 (frontmatter is only frontmatter at the very top
61
+ // of the document), and
62
+ // 2. a closing `---` line exists somewhere below it.
63
+ //
64
+ // Declining falls through to `hrPlugin` (when loaded), so a `---` that is
65
+ // genuinely a thematic break — mid-document, or an unclosed one on line 1 —
66
+ // still becomes an `<hr>`. `replace` returns `false` so that TYPING `---` in the
67
+ // editor is likewise left to the hr shortcut; frontmatter is only ever created
68
+ // by importing markdown or by calling `$setFrontmatter`.
69
+ //
70
+ // The block closes at the FIRST subsequent line that is exactly `---`, which is
71
+ // the rule Jekyll / gray-matter / Hugo apply. A `---` *inside* a value (e.g.
72
+ // `title: a --- b`) is not a whole line and is preserved untouched.
73
+ import { $getRoot } from 'lexical';
74
+ import { $createLLuiDecoratorNode, $isLLuiDecoratorNode, LLuiDecoratorNode, decoratorBridge, } from '@llui/lexical';
75
+ import { div, textarea } from '@llui/dom';
76
+ import { renderedPreview } from './_preview.js';
77
+ /** The decorator bridge id for the frontmatter block. */
78
+ export const FRONTMATTER_BRIDGE_TYPE = 'frontmatter';
79
+ function isFrontmatterData(value) {
80
+ return (typeof value === 'object' &&
81
+ value !== null &&
82
+ typeof value.source === 'string');
83
+ }
84
+ /** A line consisting solely of `---` (trailing tabs/spaces tolerated — they are
85
+ * not content, and `normalizeMarkdown` has usually already trimmed them). */
86
+ const FENCE = /^---[ \t]*$/;
87
+ /** Render the fences back around an opaque body. An empty (or blank-only) body
88
+ * collapses to the canonical two-line form so the result stays idempotent. */
89
+ export function serializeFrontmatter(source) {
90
+ return source === '' ? '---\n---' : `---\n${source}\n---`;
91
+ }
92
+ /**
93
+ * The index of the closing fence, or `-1` when `lines` does not open a
94
+ * frontmatter block (no fence on line 0) or never closes one.
95
+ *
96
+ * The single definition of "is this frontmatter?", shared by the importer and
97
+ * {@link splitFrontmatter} so the two can never disagree. A returned index is
98
+ * always `>= 1`, which is the property the importer's anti-rewind invariant
99
+ * rests on (see `handleImportAfterStartMatch`).
100
+ */
101
+ function closingFenceIndex(lines) {
102
+ const first = lines[0];
103
+ if (first === undefined || !FENCE.test(first))
104
+ return -1;
105
+ for (let i = 1; i < lines.length; i++) {
106
+ const line = lines[i];
107
+ if (line !== undefined && FENCE.test(line))
108
+ return i;
109
+ }
110
+ return -1;
111
+ }
112
+ /**
113
+ * Split a leading frontmatter block off a markdown string: `[body, rest]`, or
114
+ * `null` when the document has none (no line-0 fence, or no closing fence).
115
+ * Exported because a consumer often needs the metadata BEFORE building an
116
+ * editor — the same predicate the importer uses, so the two never disagree.
117
+ */
118
+ export function splitFrontmatter(markdown) {
119
+ const lines = markdown.split('\n');
120
+ const end = closingFenceIndex(lines);
121
+ if (end === -1)
122
+ return null;
123
+ return [lines.slice(1, end).join('\n'), lines.slice(end + 1).join('\n')];
124
+ }
125
+ // ── Document accessors (run inside `editor.read` / `editor.update`) ──────────
126
+ /** The frontmatter node, if the document starts with one. */
127
+ function $frontmatterNode() {
128
+ const first = $getRoot().getFirstChild();
129
+ return $isLLuiDecoratorNode(first) && first.getBridgeType() === FRONTMATTER_BRIDGE_TYPE
130
+ ? first
131
+ : null;
132
+ }
133
+ /** The document's frontmatter body, or `null` when it has none. */
134
+ export function $getFrontmatter() {
135
+ const node = $frontmatterNode();
136
+ if (!node || !$isLLuiDecoratorNode(node))
137
+ return null;
138
+ const data = node.getData();
139
+ return isFrontmatterData(data) ? data.source : null;
140
+ }
141
+ /**
142
+ * Set (or, with `null`, remove) the document's frontmatter. The block is always
143
+ * kept as the FIRST child of the root — it is only frontmatter there, and the
144
+ * exporter relies on that position (see the transformer's `export`).
145
+ */
146
+ export function $setFrontmatter(source) {
147
+ const existing = $frontmatterNode();
148
+ if (source === null) {
149
+ existing?.remove();
150
+ return;
151
+ }
152
+ if (existing && $isLLuiDecoratorNode(existing)) {
153
+ existing.setData({ source });
154
+ return;
155
+ }
156
+ const node = $createLLuiDecoratorNode(FRONTMATTER_BRIDGE_TYPE, { source });
157
+ const root = $getRoot();
158
+ const first = root.getFirstChild();
159
+ if (first)
160
+ first.insertBefore(node);
161
+ else
162
+ root.append(node);
163
+ }
164
+ // ── Transformer ─────────────────────────────────────────────────────────────
165
+ const FRONTMATTER_TRANSFORMER = {
166
+ dependencies: [LLuiDecoratorNode],
167
+ export: (node) => {
168
+ if (!$isLLuiDecoratorNode(node) || node.getBridgeType() !== FRONTMATTER_BRIDGE_TYPE)
169
+ return null;
170
+ const data = node.getData();
171
+ if (!isFrontmatterData(data))
172
+ return null;
173
+ // Only the document's FIRST block can be emitted as fences: `---` anywhere
174
+ // else re-imports as a thematic break, which would silently destroy the
175
+ // metadata on the next round-trip. A stray block (dragged out of position,
176
+ // pasted into a quote, …) degrades to a visible ```yaml code fence instead —
177
+ // lossy in node type, but the text survives and the author can see why.
178
+ if ($getRoot().getFirstChild() !== node)
179
+ return '```yaml\n' + data.source + '\n```';
180
+ return serializeFrontmatter(data.source);
181
+ },
182
+ regExpStart: FENCE,
183
+ // Never consulted: `handleImportAfterStartMatch` below always returns a
184
+ // decision, so the default open/close scan is not reached. Declared because
185
+ // the shape requires the pair to be meaningful together.
186
+ regExpEnd: FENCE,
187
+ handleImportAfterStartMatch: ({ lines, rootNode, startLineIndex }) => {
188
+ // Frontmatter exists only at the very top of the document. Anywhere else a
189
+ // `---` is a thematic break — decline so `hrPlugin` (or plain prose) gets it.
190
+ //
191
+ // INVARIANT — do not relax this guard without also fixing the scan below.
192
+ // `$importMarkdownNodes` assigns `i = shiftedIndex` from the returned tuple,
193
+ // so a returned index <= `startLineIndex` REWINDS its loop and the importer
194
+ // spins forever (not a wrong parse — a hang). The scan starts at line 1, so
195
+ // pinning `startLineIndex` to 0 is what makes every returned index strictly
196
+ // greater. A positional relaxation must start the scan at `startLineIndex + 1`.
197
+ if (startLineIndex !== 0)
198
+ return null;
199
+ const end = closingFenceIndex(lines);
200
+ if (end !== -1) {
201
+ // Verbatim body: no trimming, no interpretation, blank lines preserved.
202
+ const source = lines.slice(1, end).join('\n');
203
+ rootNode.append($createLLuiDecoratorNode(FRONTMATTER_BRIDGE_TYPE, { source }));
204
+ return [true, end];
205
+ }
206
+ // Unclosed: this is a lone `---` on line 1, i.e. a horizontal rule.
207
+ return null;
208
+ },
209
+ // Typing `---` must never produce frontmatter — returning false hands the
210
+ // markdown shortcut back to `hrPlugin`. Use `$setFrontmatter` to create one.
211
+ replace: () => false,
212
+ type: 'multiline-element',
213
+ };
214
+ export { FRONTMATTER_TRANSFORMER };
215
+ /** Keep editor-level key/paste handling out of the frontmatter island. */
216
+ const stop = (e) => e.stopPropagation();
217
+ export function frontmatterPlugin(opts = {}) {
218
+ const editable = opts.editable ?? true;
219
+ const bridge = decoratorBridge(FRONTMATTER_BRIDGE_TYPE, (data, api) => {
220
+ const children = [];
221
+ if (editable) {
222
+ children.push(
223
+ // A <textarea>, NOT a contenteditable div: newlines are load-bearing in
224
+ // YAML, and a contenteditable's `textContent` drops the <br>/<div> line
225
+ // structure the browser inserts, so committing from one silently
226
+ // flattens a multi-line block into a single line.
227
+ textarea({
228
+ 'data-scope': 'md-frontmatter',
229
+ 'data-part': 'source',
230
+ 'aria-label': opts.label ?? 'Frontmatter',
231
+ placeholder: opts.placeholder ?? 'key: value',
232
+ spellcheck: 'false',
233
+ autocapitalize: 'off',
234
+ autocomplete: 'off',
235
+ value: data.at('source'),
236
+ // Grow with the content so the whole block stays visible.
237
+ rows: data.at('source').map((source) => String(Math.max(1, source.split('\n').length))),
238
+ onKeyDown: stop,
239
+ onBeforeInput: stop,
240
+ onPaste: stop,
241
+ // Commit on blur only: while the caret is inside, the node data is
242
+ // deliberately stale so the reactive `value` binding cannot rewrite
243
+ // what is being typed.
244
+ onBlur: (e) => {
245
+ const source = e.target.value;
246
+ if (source !== data.peek().source)
247
+ api.update({ source });
248
+ },
249
+ }));
250
+ }
251
+ if (opts.render) {
252
+ children.push(renderedPreview(data.at('source'), opts.render));
253
+ }
254
+ return [
255
+ div({ 'data-scope': 'md-frontmatter', 'data-part': 'root', contenteditable: 'false' }, children),
256
+ ];
257
+ });
258
+ return {
259
+ name: 'frontmatter',
260
+ nodes: [LLuiDecoratorNode],
261
+ decorators: [bridge],
262
+ transformers: [FRONTMATTER_TRANSFORMER],
263
+ items: [
264
+ {
265
+ id: 'frontmatter',
266
+ label: 'Frontmatter',
267
+ icon: 'frontmatter',
268
+ group: 'insert',
269
+ keywords: ['frontmatter', 'yaml', 'metadata', 'front matter'],
270
+ // Idempotent: a document already carrying frontmatter is left alone
271
+ // rather than having its metadata blanked.
272
+ run: (editor) => editor.update(() => {
273
+ if ($getFrontmatter() === null)
274
+ $setFrontmatter('');
275
+ }),
276
+ surfaces: ['slash', 'context'],
277
+ },
278
+ ],
279
+ };
280
+ }
281
+ //# sourceMappingURL=frontmatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/plugins/frontmatter.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,wDAAwD;AACxD,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,yEAAyE;AACzE,mBAAmB;AACnB,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,iFAAiF;AACjF,+EAA+E;AAC/E,uEAAuE;AACvE,8EAA8E;AAC9E,0DAA0D;AAC1D,EAAE;AACF,wEAAwE;AACxE,+EAA+E;AAC/E,gFAAgF;AAChF,iFAAiF;AACjF,gFAAgF;AAChF,sEAAsE;AACtE,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,kFAAkF;AAClF,EAAE;AACF,iFAAiF;AACjF,iFAAiF;AACjF,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,EAAE;AACF,yCAAyC;AACzC,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,8EAA8E;AAC9E,iFAAiF;AACjF,0CAA0C;AAC1C,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,gFAAgF;AAChF,iFAAiF;AACjF,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,cAAc;AACd,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,EAAE;AACF,+EAA+E;AAC/E,6BAA6B;AAC7B,uDAAuD;AACvD,EAAE;AACF,0EAA0E;AAC1E,4EAA4E;AAC5E,iFAAiF;AACjF,+EAA+E;AAC/E,yDAAyD;AACzD,EAAE;AACF,gFAAgF;AAChF,6EAA6E;AAC7E,oEAAoE;AAEpE,OAAO,EAAE,QAAQ,EAAwC,MAAM,SAAS,CAAA;AAExE,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,GAAG,EAAE,QAAQ,EAA+B,MAAM,WAAW,CAAA;AAEtE,OAAO,EAAE,eAAe,EAAsB,MAAM,eAAe,CAAA;AAEnE,yDAAyD;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAAA;AAQpD,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAAyB,CAAC,MAAM,KAAK,QAAQ,CACtD,CAAA;AACH,CAAC;AAED;6EAC6E;AAC7E,MAAM,KAAK,GAAG,aAAa,CAAA;AAE3B;8EAC8E;AAC9E,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,MAAM,OAAO,CAAA;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,KAAwB;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACtB,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,CAAA;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,CAAC,CAAC,CAAA;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AAC1E,CAAC;AAED,gFAAgF;AAEhF,6DAA6D;AAC7D,SAAS,gBAAgB;IACvB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC,aAAa,EAAE,CAAA;IACxC,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,uBAAuB;QACrF,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,CAAA;AACV,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,eAAe;IAC7B,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAA;IAC/B,IAAI,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;IAC3B,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAqB;IACnD,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAA;IACnC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,OAAM;IACR,CAAC;IACD,IAAI,QAAQ,IAAI,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;QAC5B,OAAM;IACR,CAAC;IACD,MAAM,IAAI,GAAG,wBAAwB,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAC1E,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAA;IACvB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;IAClC,IAAI,KAAK;QAAE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC;AAED,+EAA+E;AAE/E,MAAM,uBAAuB,GAAgC;IAC3D,YAAY,EAAE,CAAC,iBAAiB,CAAC;IACjC,MAAM,EAAE,CAAC,IAAiB,EAAiB,EAAE;QAC3C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,uBAAuB;YAAE,OAAO,IAAI,CAAA;QAChG,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QACzC,2EAA2E;QAC3E,wEAAwE;QACxE,2EAA2E;QAC3E,6EAA6E;QAC7E,wEAAwE;QACxE,IAAI,QAAQ,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI;YAAE,OAAO,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAA;QACnF,OAAO,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC;IACD,WAAW,EAAE,KAAK;IAClB,wEAAwE;IACxE,4EAA4E;IAC5E,yDAAyD;IACzD,SAAS,EAAE,KAAK;IAChB,2BAA2B,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE;QACnE,2EAA2E;QAC3E,8EAA8E;QAC9E,EAAE;QACF,0EAA0E;QAC1E,6EAA6E;QAC7E,4EAA4E;QAC5E,4EAA4E;QAC5E,4EAA4E;QAC5E,gFAAgF;QAChF,IAAI,cAAc,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACrC,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,wEAAwE;YACxE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC7C,QAAQ,CAAC,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;YAC9E,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACpB,CAAC;QACD,oEAAoE;QACpE,OAAO,IAAI,CAAA;IACb,CAAC;IACD,0EAA0E;IAC1E,6EAA6E;IAC7E,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;IACpB,IAAI,EAAE,mBAAmB;CAC1B,CAAA;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAA;AAkBlC,0EAA0E;AAC1E,MAAM,IAAI,GAAG,CAAC,CAAQ,EAAQ,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAA;AAEpD,MAAM,UAAU,iBAAiB,CAAC,OAAiC,EAAE;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA;IAEtC,MAAM,MAAM,GAAG,eAAe,CAAkB,uBAAuB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACrF,MAAM,QAAQ,GAAgB,EAAE,CAAA;QAChC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI;YACX,wEAAwE;YACxE,wEAAwE;YACxE,iEAAiE;YACjE,kDAAkD;YAClD,QAAQ,CAAC;gBACP,YAAY,EAAE,gBAAgB;gBAC9B,WAAW,EAAE,QAAQ;gBACrB,YAAY,EAAE,IAAI,CAAC,KAAK,IAAI,aAAa;gBACzC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,YAAY;gBAC7C,UAAU,EAAE,OAAO;gBACnB,cAAc,EAAE,KAAK;gBACrB,YAAY,EAAE,KAAK;gBACnB,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAmB;gBAC1C,0DAA0D;gBAC1D,IAAI,EAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAoB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACzD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAC/C;gBACD,SAAS,EAAE,IAAI;gBACf,aAAa,EAAE,IAAI;gBACnB,OAAO,EAAE,IAAI;gBACb,mEAAmE;gBACnE,oEAAoE;gBACpE,uBAAuB;gBACvB,MAAM,EAAE,CAAC,CAAa,EAAE,EAAE;oBACxB,MAAM,MAAM,GAAI,CAAC,CAAC,MAA8B,CAAC,KAAK,CAAA;oBACtD,IAAI,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM;wBAAE,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;gBAC3D,CAAC;aACF,CAAC,CACH,CAAA;QACH,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAClF,CAAC;QACD,OAAO;YACL,GAAG,CACD,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,EACjF,QAAQ,CACT;SACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,CAAC,iBAAiB,CAAC;QAC1B,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,YAAY,EAAE,CAAC,uBAAuB,CAAC;QACvC,KAAK,EAAE;YACL;gBACE,EAAE,EAAE,aAAa;gBACjB,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC;gBAC7D,oEAAoE;gBACpE,2CAA2C;gBAC3C,GAAG,EAAE,CAAC,MAAqB,EAAE,EAAE,CAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;oBACjB,IAAI,eAAe,EAAE,KAAK,IAAI;wBAAE,eAAe,CAAC,EAAE,CAAC,CAAA;gBACrD,CAAC,CAAC;gBACJ,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;aAC/B;SACF;KACF,CAAA;AACH,CAAC"}
@@ -4,6 +4,7 @@ export declare const OVERLAY_Z: {
4
4
  readonly contextMenu: 61;
5
5
  readonly floatingToolbar: 62;
6
6
  readonly tableTools: 63;
7
+ readonly codeLanguage: 64;
7
8
  };
8
9
  export interface OverlayRootConfig {
9
10
  /** Whether the overlay is shown. */
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/plugins/overlay.ts"],"names":[],"mappings":"AAsBA,OAAO,EAOL,KAAK,UAAU,EACf,KAAK,MAAM,EACZ,MAAM,WAAW,CAAA;AAGlB,eAAO,MAAM,SAAS;;;;;CAKZ,CAAA;AAWV,MAAM,WAAW,iBAAiB;IAChC,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IACrB,2CAA2C;IAC3C,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IACjB,2CAA2C;IAC3C,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IACjB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,UAAU,CAAA;IACzB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,UAAU,CAAA;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,UAAU,CA2B9D;AAED;mDACmD;AACnD,wBAAgB,WAAW,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAoB5D"}
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/plugins/overlay.ts"],"names":[],"mappings":"AAwBA,OAAO,EAOL,KAAK,UAAU,EACf,KAAK,MAAM,EACZ,MAAM,WAAW,CAAA;AAGlB,eAAO,MAAM,SAAS;;;;;;CAUZ,CAAA;AAWV,MAAM,WAAW,iBAAiB;IAChC,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IACrB,2CAA2C;IAC3C,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IACjB,2CAA2C;IAC3C,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IACjB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,UAAU,CAAA;IACzB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,UAAU,CAAA;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,UAAU,CA2B9D;AAED;mDACmD;AACnD,wBAAgB,WAAW,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAoB5D"}
@@ -18,6 +18,8 @@
18
18
  // 61 — context menu — pointer-anchored
19
19
  // 62 — floating selection toolbar — selection-anchored bubble
20
20
  // 63 — table tools — element-anchored, sits over a table
21
+ // 64 — code-block language badge — element-anchored, may sit INSIDE a
22
+ // table cell, so it must clear 63
21
23
  // The values live with each plugin's view; this comment is the source of truth.
22
24
  import { div, derived, onMount, portal, show, } from '@llui/dom';
23
25
  import { registerNestedLayer } from '@llui/components/utils';
@@ -26,6 +28,11 @@ export const OVERLAY_Z = {
26
28
  contextMenu: 61,
27
29
  floatingToolbar: 62,
28
30
  tableTools: 63,
31
+ // Strictly above `tableTools`: a fenced code block can live inside a table
32
+ // cell, in which case both surfaces are open at once. At an equal z-index the
33
+ // clickable one was decided by portal insertion order — i.e. by plugin array
34
+ // order — which is exactly the no-tie rule this scale exists to prevent.
35
+ codeLanguage: 64,
29
36
  };
30
37
  const toMountables = (r) => [...r];
31
38
  // Unique marker per overlay instance so its portal root can be located while
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../src/plugins/overlay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../src/plugins/overlay.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/plugins/table.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAkIhD,wBAAgB,WAAW,IAAI,cAAc,CAqH5C"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/plugins/table.ts"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAoMhD,wBAAgB,WAAW,IAAI,cAAc,CAsH5C"}
@@ -4,12 +4,21 @@
4
4
  //
5
5
  // Place `tablePlugin()` before `corePlugin()` so its multiline transformer is
6
6
  // tried ahead of the generic code-block one.
7
- import { $createParagraphNode, $createTextNode, $getSelection, $isRangeSelection, } from 'lexical';
7
+ import { $createParagraphNode, $getSelection, $isRangeSelection, } from 'lexical';
8
8
  import { $insertNodeToNearestRoot, mergeRegister } from '@lexical/utils';
9
9
  import { $createTableCellNode, $createTableNode, $createTableRowNode, $deleteTableColumnAtSelection, $deleteTableRowAtSelection, $getTableCellNodeFromLexicalNode, $getTableNodeFromLexicalNodeOrThrow, $insertTableColumnAtSelection, $insertTableRowAtSelection, $isTableNode, $isTableSelection, TableCellHeaderStates, TableCellNode, TableNode, TableRowNode, } from '@lexical/table';
10
+ import { $convertFromMarkdownString, LINK, } from '@lexical/markdown';
10
11
  import { button, text } from '@llui/dom';
11
12
  import { definePluginUI } from './ui.js';
12
13
  import { OVERLAY_Z, hideOverlay, onViewportChange, overlayRoot } from './overlay.js';
14
+ import { INLINE_TEXT_TRANSFORMERS } from '../transformers/gfm.js';
15
+ /** Transformers used to parse/serialize a single table cell's INLINE content
16
+ * (bold/italic/strikethrough/inline-code and links). No block/element or
17
+ * multiline transformers, so a cell's markdown is always a single inline run —
18
+ * this is what makes bold/link cells survive an export∘import round-trip instead
19
+ * of being flattened to bare text. `LINK` needs `LinkNode`, which the core plugin
20
+ * registers (tables are used alongside it). */
21
+ const CELL_TRANSFORMERS = [...INLINE_TEXT_TRANSFORMERS, LINK];
13
22
  const TABLE_TOOLS = [
14
23
  { id: 'rowAbove', label: '↑+', title: 'Insert row above' },
15
24
  { id: 'rowBelow', label: '↓+', title: 'Insert row below' },
@@ -67,31 +76,74 @@ function splitRow(line) {
67
76
  function isSeparator(line) {
68
77
  return !!line && /^\s*\|?[\s:|-]*-[\s:|-]*\|?\s*$/.test(line) && line.includes('-');
69
78
  }
79
+ /** Is `line` a GFM table row? GFM makes the leading and trailing pipes OPTIONAL
80
+ * (`a | b` is as valid as `| a | b |`); the only requirement is at least one
81
+ * unescaped cell delimiter. The old `\|.*\|` test rejected valid pipe-less-edge
82
+ * rows, truncating imported tables. */
70
83
  function isRow(line) {
71
- return !!line && /^\s*\|.*\|\s*$/.test(line.trim());
84
+ if (line === undefined)
85
+ return false;
86
+ const trimmed = line.trim();
87
+ return trimmed !== '' && /(?<!\\)\|/.test(trimmed);
72
88
  }
73
- function makeCell(textValue, header) {
89
+ /** Map a GFM separator cell (`:---`, `:---:`, `---:`, `---`) to a cell alignment. */
90
+ function parseAlignment(separatorCell) {
91
+ const t = separatorCell.trim();
92
+ const left = t.startsWith(':');
93
+ const right = t.endsWith(':');
94
+ if (left && right)
95
+ return 'center';
96
+ if (right)
97
+ return 'right';
98
+ if (left)
99
+ return 'left';
100
+ return '';
101
+ }
102
+ /** Map a cell's alignment back to its GFM separator token. */
103
+ function alignmentSeparator(format) {
104
+ switch (format) {
105
+ case 'center':
106
+ return ':---:';
107
+ case 'right':
108
+ case 'end':
109
+ return '---:';
110
+ case 'left':
111
+ case 'start':
112
+ return ':---';
113
+ default:
114
+ return '---';
115
+ }
116
+ }
117
+ /** Build a cell from its inline markdown, parsing bold/italic/link/etc. through
118
+ * {@link CELL_TRANSFORMERS} (not a bare text node) and applying its column's
119
+ * alignment. */
120
+ function makeCell(cellMarkdown, header, align) {
74
121
  const cell = $createTableCellNode(header ? TableCellHeaderStates.COLUMN : TableCellHeaderStates.NO_STATUS);
75
- cell.append($createParagraphNode().append($createTextNode(textValue)));
122
+ // Parse the cell's inline markdown into a paragraph of formatted text nodes.
123
+ $convertFromMarkdownString(cellMarkdown, [...CELL_TRANSFORMERS], cell);
124
+ // A blank cell yields no paragraph — keep the cell a well-formed single-paragraph.
125
+ if (cell.getChildrenSize() === 0)
126
+ cell.append($createParagraphNode());
127
+ if (align !== '')
128
+ cell.setFormat(align);
76
129
  return cell;
77
130
  }
78
- function buildTable(header, body) {
131
+ function buildTable(header, body, aligns) {
79
132
  const table = $createTableNode();
80
133
  const headerRow = $createTableRowNode();
81
- for (const h of header)
82
- headerRow.append(makeCell(h, true));
134
+ header.forEach((h, i) => headerRow.append(makeCell(h, true, aligns[i] ?? '')));
83
135
  table.append(headerRow);
84
136
  for (const row of body) {
85
137
  const tr = $createTableRowNode();
86
138
  for (let i = 0; i < header.length; i++)
87
- tr.append(makeCell(row[i] ?? '', false));
139
+ tr.append(makeCell(row[i] ?? '', false, aligns[i] ?? ''));
88
140
  table.append(tr);
89
141
  }
90
142
  return table;
91
143
  }
92
144
  const TABLE_TRANSFORMER = {
93
145
  dependencies: [TableNode, TableRowNode, TableCellNode],
94
- export: (node) => {
146
+ export: (node, traverseChildren) => {
95
147
  if (!$isTableNode(node))
96
148
  return null;
97
149
  const rows = node.getChildren();
@@ -100,24 +152,34 @@ const TABLE_TRANSFORMER = {
100
152
  const lines = [];
101
153
  rows.forEach((row, ri) => {
102
154
  const cells = row.getChildren();
103
- const texts = cells.map((c) => c.getTextContent().replace(/\|/g, '\\|').replace(/\n/g, ' '));
155
+ // Serialize each cell's INLINE content through the full transformer set
156
+ // (so bold/italic/links survive), then escape `|` and flatten newlines so
157
+ // the cell can't break the row.
158
+ const texts = cells.map((c) => traverseChildren(c).replace(/\|/g, '\\|').replace(/\r?\n/g, ' ').trim());
104
159
  lines.push('| ' + texts.join(' | ') + ' |');
105
- if (ri === 0)
106
- lines.push('| ' + texts.map(() => '---').join(' | ') + ' |');
160
+ if (ri === 0) {
161
+ // Reconstruct the alignment row from the header cells' alignments.
162
+ const seps = cells.map((c) => alignmentSeparator(c.getFormatType()));
163
+ lines.push('| ' + seps.join(' | ') + ' |');
164
+ }
107
165
  });
108
166
  return lines.join('\n');
109
167
  },
110
- regExpStart: /^\s*\|(.+)\|\s*$/,
168
+ // Leading/trailing pipes are optional in GFM; require only one internal pipe.
169
+ // A false positive is harmless — the header is only accepted when the NEXT line
170
+ // is a delimiter row (checked below).
171
+ regExpStart: /^\s*\|?.*(?<!\\)\|.*\|?\s*$/,
111
172
  handleImportAfterStartMatch: ({ lines, rootNode, startLineIndex }) => {
112
173
  if (!isSeparator(lines[startLineIndex + 1]))
113
174
  return null; // header must be followed by a separator
175
+ const aligns = splitRow(lines[startLineIndex + 1]).map(parseAlignment);
114
176
  let end = startLineIndex + 2;
115
177
  const body = [];
116
178
  while (end < lines.length && isRow(lines[end]) && !isSeparator(lines[end])) {
117
179
  body.push(splitRow(lines[end]));
118
180
  end++;
119
181
  }
120
- rootNode.append(buildTable(splitRow(lines[startLineIndex]), body));
182
+ rootNode.append(buildTable(splitRow(lines[startLineIndex]), body, aligns));
121
183
  return [true, end - 1];
122
184
  },
123
185
  // Import is handled manually above; a multiline transformer still needs replace.
@@ -221,7 +283,7 @@ export function tablePlugin() {
221
283
  run: (editor) => editor.update(() => $insertNodeToNearestRoot(buildTable(['Column 1', 'Column 2'], [
222
284
  ['', ''],
223
285
  ['', ''],
224
- ]))),
286
+ ], ['', '']))),
225
287
  surfaces: ['toolbar', 'slash', 'context'],
226
288
  },
227
289
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/plugins/table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/plugins/table.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,2EAA2E;AAC3E,2DAA2D;AAC3D,EAAE;AACF,8EAA8E;AAC9E,6CAA6C;AAE7C,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,iBAAiB,GAIlB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACxE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,6BAA6B,EAC7B,0BAA0B,EAC1B,gCAAgC,EAChC,mCAAmC,EACnC,6BAA6B,EAC7B,0BAA0B,EAC1B,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,SAAS,EACT,YAAY,GACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,0BAA0B,EAC1B,IAAI,GAGL,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAGjE;;;;;+CAK+C;AAC/C,MAAM,iBAAiB,GAA2B,CAAC,GAAG,wBAAwB,EAAE,IAAI,CAAC,CAAA;AAcrF,MAAM,WAAW,GAAgE;IAC/E,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE;IAC1D,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE;IAC1D,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,oBAAoB,EAAE;IAC3D,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,qBAAqB,EAAE;IAC7D,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE;IAClD,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE;IACrD,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE;CACvD,CAAA;AAED,wEAAwE;AACxE,SAAS,WAAW,CAAC,EAAU;IAC7B,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,UAAU;YACb,0BAA0B,CAAC,KAAK,CAAC,CAAA;YACjC,OAAM;QACR,KAAK,UAAU;YACb,0BAA0B,CAAC,IAAI,CAAC,CAAA;YAChC,OAAM;QACR,KAAK,SAAS;YACZ,6BAA6B,CAAC,KAAK,CAAC,CAAA;YACpC,OAAM;QACR,KAAK,UAAU;YACb,6BAA6B,CAAC,IAAI,CAAC,CAAA;YACnC,OAAM;QACR,KAAK,QAAQ;YACX,0BAA0B,EAAE,CAAA;YAC5B,OAAM;QACR,KAAK,QAAQ;YACX,6BAA6B,EAAE,CAAA;YAC/B,OAAM;QACR,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;YACjC,6EAA6E;YAC7E,6DAA6D;YAC7D,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBAAE,OAAM;YAC1E,MAAM,IAAI,GAAG,gCAAgC,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;YACzE,IAAI,IAAI;gBAAE,mCAAmC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAA;YAC5D,OAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,2EAA2E;IAC3E,4EAA4E;IAC5E,iFAAiF;IACjF,sEAAsE;IACtE,MAAM,KAAK,GAAG,IAAI;SACf,IAAI,EAAE;SACN,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;IAC5B,OAAO,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;AAC5E,CAAC;AAED,SAAS,WAAW,CAAC,IAAwB;IAC3C,OAAO,CAAC,CAAC,IAAI,IAAI,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACrF,CAAC;AAED;;;uCAGuC;AACvC,SAAS,KAAK,CAAC,IAAwB;IACrC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3B,OAAO,OAAO,KAAK,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACpD,CAAC;AAED,qFAAqF;AACrF,SAAS,cAAc,CAAC,aAAqB;IAC3C,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,CAAA;IAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,IAAI,IAAI,KAAK;QAAE,OAAO,QAAQ,CAAA;IAClC,IAAI,KAAK;QAAE,OAAO,OAAO,CAAA;IACzB,IAAI,IAAI;QAAE,OAAO,MAAM,CAAA;IACvB,OAAO,EAAE,CAAA;AACX,CAAC;AAED,8DAA8D;AAC9D,SAAS,kBAAkB,CAAC,MAAyB;IACnD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,OAAO,CAAA;QAChB,KAAK,OAAO,CAAC;QACb,KAAK,KAAK;YACR,OAAO,MAAM,CAAA;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,MAAM,CAAA;QACf;YACE,OAAO,KAAK,CAAA;IAChB,CAAC;AACH,CAAC;AAED;;gBAEgB;AAChB,SAAS,QAAQ,CAAC,YAAoB,EAAE,MAAe,EAAE,KAAwB;IAC/E,MAAM,IAAI,GAAG,oBAAoB,CAC/B,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,SAAS,CACxE,CAAA;IACD,6EAA6E;IAC7E,0BAA0B,CAAC,YAAY,EAAE,CAAC,GAAG,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAA;IACtE,mFAAmF;IACnF,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAA;IACrE,IAAI,KAAK,KAAK,EAAE;QAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACvC,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,UAAU,CACjB,MAAgB,EAChB,IAAgB,EAChB,MAAoC;IAEpC,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAA;IAChC,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAA;IACvC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC9E,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAA;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;YACpC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC3D,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAClB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,iBAAiB,GAAgC;IACrD,YAAY,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC;IACtD,MAAM,EAAE,CAAC,IAAiB,EAAE,gBAA+C,EAAiB,EAAE;QAC5F,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAoB,CAAA;QACjD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAClC,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;YACvB,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAqB,CAAA;YAClD,wEAAwE;YACxE,0EAA0E;YAC1E,gCAAgC;YAChC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5B,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CACxE,CAAA;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;YAC3C,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACb,mEAAmE;gBACnE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;gBACpE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IACD,8EAA8E;IAC9E,gFAAgF;IAChF,sCAAsC;IACtC,WAAW,EAAE,6BAA6B;IAC1C,2BAA2B,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE;QACnE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA,CAAC,yCAAyC;QAClG,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QACvE,IAAI,GAAG,GAAG,cAAc,GAAG,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAe,EAAE,CAAA;QAC3B,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAE,CAAC,CAAC,CAAA;YAChC,GAAG,EAAE,CAAA;QACP,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAC3E,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;IACxB,CAAC;IACD,iFAAiF;IACjF,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;IACpB,IAAI,EAAE,mBAAmB;CAC1B,CAAA;AAED,MAAM,UAAU,WAAW;IACzB,OAAO;QACL,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC;QAC/C,YAAY,EAAE,CAAC,iBAAiB,CAAC;QACjC,8EAA8E;QAC9E,gFAAgF;QAChF,+EAA+E;QAC/E,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACxB,IAAI,OAAO,GAAkB,IAAI,CAAA;YACjC,IAAI,KAAK,GAAG,GAAG,CAAA;YACf,IAAI,KAAK,GAAG,GAAG,CAAA;YACf,MAAM,OAAO,GAAG,GAAS,EAAE;gBACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;oBACjD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;oBACjC,sEAAsE;oBACtE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;wBAAE,OAAO,IAAI,CAAA;oBAC/E,MAAM,IAAI,GAAG,gCAAgC,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;oBACzE,OAAO,IAAI,CAAC,CAAC,CAAC,mCAAmC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;gBACzE,CAAC,CAAC,CAAA;gBACF,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;gBAC7D,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;wBACrB,OAAO,GAAG,IAAI,CAAA;wBACd,KAAK,GAAG,GAAG,CAAA;wBACX,KAAK,GAAG,GAAG,CAAA;wBACX,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;oBACpE,CAAC;oBACD,OAAM;gBACR,CAAC;gBACD,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAA;gBACvC,4EAA4E;gBAC5E,2DAA2D;gBAC3D,IAAI,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK;oBAAE,OAAM;gBAC7E,OAAO,GAAG,QAAQ,CAAA;gBAClB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAA;gBACjB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;gBAChB,GAAG,CAAC,IAAI,CAAC;oBACP,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE;iBACjD,CAAC,CAAA;YACJ,CAAC,CAAA;YACD,OAAO,aAAa,CAClB,MAAM,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,EAC9C,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CAAA;QACH,CAAC;QACD,EAAE,EAAE,cAAc,CAAmD;YACnE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACrB,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;oBACjB,KAAK,MAAM;wBACT,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;4BACzD,CAAC,CAAC,KAAK;4BACP,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAA;oBACxC,KAAK,MAAM;wBACT,OAAO,WAAW,CAAC,KAAK,CAAC,CAAA;oBAC3B,KAAK,IAAI;wBACP,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;gBACjD,CAAC;YACH,CAAC;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBACxB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA;gBAC3B,IAAI,MAAM;oBAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;YACzD,CAAC;YACD,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CACxB,WAAW,CAAC;gBACV,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC;gBACtB,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;gBAChB,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;gBAChB,MAAM,EAAE,SAAS,CAAC,UAAU;gBAC5B,2CAA2C;gBAC3C,SAAS,EAAE,6BAA6B;gBACxC,KAAK,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,EAAE;gBAC7D,QAAQ,EAAE,GAAG,EAAE,CACb,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACvB,MAAM,CACJ;oBACE,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE,gBAAgB;oBAC9B,WAAW,EAAE,MAAM;oBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,YAAY,EAAE,IAAI,CAAC,KAAK;oBACxB,WAAW,EAAE,CAAC,CAAa,EAAE,EAAE;wBAC7B,CAAC,CAAC,cAAc,EAAE,CAAA;wBAClB,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;oBACnC,CAAC;iBACF,EACD,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACnB,CACF;aACJ,CAAC;SACL,CAAC;QACF,KAAK,EAAE;YACL;gBACE,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;gBACrC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CACd,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CACjB,wBAAwB,CACtB,UAAU,CACR,CAAC,UAAU,EAAE,UAAU,CAAC,EACxB;oBACE,CAAC,EAAE,EAAE,EAAE,CAAC;oBACR,CAAC,EAAE,EAAE,EAAE,CAAC;iBACT,EACD,CAAC,EAAE,EAAE,EAAE,CAAC,CACT,CACF,CACF;gBACH,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;aAC1C;SACF;KACF,CAAA;AACH,CAAC"}