@charcuterie/ui 3.4.1 → 3.5.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/dist/markdownEditorCodeMirror/livePreview.d.ts.map +1 -1
- package/dist/markdownEditorCodeMirror/livePreview.js +346 -3
- package/dist/markdownEditorCodeMirror/livePreview.js.map +1 -1
- package/dist/markdownEditorCodeMirror/livePreviewRanges.d.ts +99 -1
- package/dist/markdownEditorCodeMirror/livePreviewRanges.d.ts.map +1 -1
- package/dist/markdownEditorCodeMirror/livePreviewRanges.js +370 -19
- package/dist/markdownEditorCodeMirror/livePreviewRanges.js.map +1 -1
- package/package.json +1 -1
- package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.mdx +28 -0
- package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.stories.tsx +42 -0
- package/src/markdownEditorCodeMirror/livePreview.ts +465 -3
- package/src/markdownEditorCodeMirror/livePreviewRanges.test.ts +349 -8
- package/src/markdownEditorCodeMirror/livePreviewRanges.ts +669 -27
|
@@ -130,30 +130,291 @@ const toHeaderMarkEnd = (text, to) => {
|
|
|
130
130
|
}
|
|
131
131
|
return end;
|
|
132
132
|
};
|
|
133
|
+
/** A cell region with its surrounding padding removed. */
|
|
134
|
+
const toTrimmedBounds = (text, from, to) => {
|
|
135
|
+
let start = from;
|
|
136
|
+
let end = to;
|
|
137
|
+
while (start < end &&
|
|
138
|
+
(text[start] === " " || text[start] === "\t")) {
|
|
139
|
+
start += 1;
|
|
140
|
+
}
|
|
141
|
+
while (end > start &&
|
|
142
|
+
(text[end - 1] === " " || text[end - 1] === "\t")) {
|
|
143
|
+
end -= 1;
|
|
144
|
+
}
|
|
145
|
+
return { from: start, to: end };
|
|
146
|
+
};
|
|
147
|
+
const toAlignment = (spec) => {
|
|
148
|
+
if (spec.startsWith(":") && spec.endsWith(":")) {
|
|
149
|
+
return "center";
|
|
150
|
+
}
|
|
151
|
+
if (spec.endsWith(":")) {
|
|
152
|
+
return "end";
|
|
153
|
+
}
|
|
154
|
+
return "start";
|
|
155
|
+
};
|
|
133
156
|
/**
|
|
134
|
-
*
|
|
157
|
+
* The delimiter row, read as alignment.
|
|
135
158
|
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
159
|
+
* It is the one row a rendered table does not show — `| :--- | ---: |`
|
|
160
|
+
* is not content, it is the column spec — so this is where it goes
|
|
161
|
+
* instead of on screen. The parser hands the whole row back as a
|
|
162
|
+
* single `TableDelimiter` child of `Table`, which is what separates
|
|
163
|
+
* it from the `|` between two cells: those are children of the row.
|
|
139
164
|
*/
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
165
|
+
const toColumnAlignments = (text, node) => {
|
|
166
|
+
for (let child = node.firstChild; child; child = child.nextSibling) {
|
|
167
|
+
if (child.name !== "TableDelimiter") {
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
return text
|
|
171
|
+
.slice(child.from, child.to)
|
|
172
|
+
.split("|")
|
|
173
|
+
.map((spec) => spec.trim())
|
|
174
|
+
.filter((spec, index, specs) => spec !== "" ||
|
|
175
|
+
(index !== 0 && index !== specs.length - 1))
|
|
176
|
+
.map(toAlignment);
|
|
177
|
+
}
|
|
178
|
+
return [];
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* A row's columns, as offset ranges — including the empty ones.
|
|
182
|
+
*
|
|
183
|
+
* Splitting on the `TableCell` children alone would lose them: the
|
|
184
|
+
* parser emits no cell node for `| |`, so a table with a blank cell
|
|
185
|
+
* would render with its remaining cells shifted one column left,
|
|
186
|
+
* which is a data-corrupting kind of wrong even though nothing was
|
|
187
|
+
* written. The `|` positions are the truth, so the gaps between
|
|
188
|
+
* them are the columns, cell node or not.
|
|
189
|
+
*/
|
|
190
|
+
const toRowRegions = (row, text) => {
|
|
191
|
+
const regions = [];
|
|
192
|
+
let start = row.from;
|
|
193
|
+
for (let child = row.firstChild; child; child = child.nextSibling) {
|
|
194
|
+
if (child.name !== "TableDelimiter") {
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
// The leading `|`, which opens no column of its own.
|
|
198
|
+
if (child.from === start) {
|
|
199
|
+
start = child.to;
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
regions.push({ from: start, to: child.from });
|
|
203
|
+
start = child.to;
|
|
204
|
+
}
|
|
205
|
+
// What is left after the last `|`. Only a column if it holds
|
|
206
|
+
// something: a row that ends with a pipe and then trailing spaces
|
|
207
|
+
// has no final column, and counting one gives every table an
|
|
208
|
+
// empty extra column that nothing in the markdown asked for.
|
|
209
|
+
if (start < row.to &&
|
|
210
|
+
text.slice(start, row.to).trim() !== "") {
|
|
211
|
+
regions.push({ from: start, to: row.to });
|
|
212
|
+
}
|
|
213
|
+
return regions;
|
|
214
|
+
};
|
|
215
|
+
const toCellNodeIn = (row, from, to) => {
|
|
216
|
+
for (let child = row.firstChild; child; child = child.nextSibling) {
|
|
217
|
+
if (child.name === "TableCell" &&
|
|
218
|
+
child.from >= from &&
|
|
219
|
+
child.to <= to) {
|
|
220
|
+
return child;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return null;
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* Inline ranges over a slice → the runs a renderer can build DOM
|
|
227
|
+
* from, flattened.
|
|
228
|
+
*
|
|
229
|
+
* Everywhere else in this module a decoration is *applied* to text
|
|
230
|
+
* CodeMirror is already drawing, so overlapping ranges are free —
|
|
231
|
+
* the browser composes them. A widget draws its own text, so they
|
|
232
|
+
* are not: `**a [b](c) d**` is one strong run overlapping one link
|
|
233
|
+
* run, and something has to decide where the spans break. That is
|
|
234
|
+
* this function, and the answer is per character, which is the only
|
|
235
|
+
* version that cannot be defeated by a nesting nobody predicted.
|
|
236
|
+
*
|
|
237
|
+
* Concealed markers are dropped rather than split around, so a run
|
|
238
|
+
* of bold text stays a single segment with its `**` gone from both
|
|
239
|
+
* ends.
|
|
240
|
+
*/
|
|
241
|
+
export const toInlineSegments = ({ from, ranges, text, to, }) => {
|
|
242
|
+
const isHidden = new Array(Math.max(to - from, 0)).fill(false);
|
|
243
|
+
const marks = [];
|
|
244
|
+
const images = new Map();
|
|
245
|
+
const hide = (hiddenFrom, hiddenTo) => {
|
|
246
|
+
for (let offset = Math.max(hiddenFrom, from); offset < Math.min(hiddenTo, to); offset += 1) {
|
|
247
|
+
isHidden[offset - from] = true;
|
|
145
248
|
}
|
|
146
|
-
ranges.push({
|
|
147
|
-
from,
|
|
148
|
-
isConcealed: !isRawMode && !isRevealed,
|
|
149
|
-
to,
|
|
150
|
-
type: "marker",
|
|
151
|
-
});
|
|
152
249
|
};
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
250
|
+
for (const range of ranges) {
|
|
251
|
+
if (range.type === "marker" && range.isConcealed) {
|
|
252
|
+
hide(range.from, range.to);
|
|
253
|
+
}
|
|
254
|
+
if (range.type === "mark") {
|
|
255
|
+
marks.push({
|
|
256
|
+
from: range.from,
|
|
257
|
+
markKind: range.markKind,
|
|
258
|
+
to: range.to,
|
|
259
|
+
url: range.url,
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
if (range.type === "image") {
|
|
263
|
+
images.set(range.from, {
|
|
264
|
+
alt: range.alt,
|
|
265
|
+
to: range.to,
|
|
266
|
+
url: range.url,
|
|
267
|
+
});
|
|
268
|
+
hide(range.from, range.to);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
const segments = [];
|
|
272
|
+
let openKey = null;
|
|
273
|
+
let openSegment = null;
|
|
274
|
+
const flush = () => {
|
|
275
|
+
if (openSegment && openSegment.text !== "") {
|
|
276
|
+
segments.push({ ...openSegment, type: "text" });
|
|
277
|
+
}
|
|
278
|
+
openKey = null;
|
|
279
|
+
openSegment = null;
|
|
280
|
+
};
|
|
281
|
+
for (let offset = from; offset < to; offset += 1) {
|
|
282
|
+
const image = images.get(offset);
|
|
283
|
+
if (image) {
|
|
284
|
+
flush();
|
|
285
|
+
segments.push({
|
|
286
|
+
alt: image.alt,
|
|
287
|
+
type: "image",
|
|
288
|
+
url: image.url,
|
|
289
|
+
});
|
|
290
|
+
offset = image.to - 1;
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
if (isHidden[offset - from]) {
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
const covering = marks.filter((mark) => mark.from <= offset && mark.to > offset);
|
|
297
|
+
const markKinds = [
|
|
298
|
+
...new Set(covering.map((mark) => mark.markKind)),
|
|
299
|
+
].sort();
|
|
300
|
+
const url = covering.find((mark) => mark.url)?.url;
|
|
301
|
+
const key = `${markKinds.join(" ")}\u0000${url ?? ""}`;
|
|
302
|
+
if (key !== openKey) {
|
|
303
|
+
flush();
|
|
304
|
+
openKey = key;
|
|
305
|
+
openSegment = {
|
|
306
|
+
markKinds,
|
|
307
|
+
text: "",
|
|
308
|
+
...(url ? { url } : {}),
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
if (openSegment) {
|
|
312
|
+
openSegment.text += text[offset];
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
flush();
|
|
316
|
+
return segments;
|
|
317
|
+
};
|
|
318
|
+
/**
|
|
319
|
+
* A table, as rows of rendered cells — or `null` when the parser
|
|
320
|
+
* found no rows at all to render.
|
|
321
|
+
*
|
|
322
|
+
* Rows are padded to a rectangle here rather than in the widget:
|
|
323
|
+
* the width is `max(columns in the delimiter row, columns in the
|
|
324
|
+
* widest row)`, which is deliberately **not** what GitHub renders.
|
|
325
|
+
* GFM drops cells past the header's width, and dropping them in an
|
|
326
|
+
* *editor* means text the author typed is on screen nowhere — a
|
|
327
|
+
* worse failure than a table one column wider than it should be,
|
|
328
|
+
* with the raw markdown one toggle away.
|
|
329
|
+
*/
|
|
330
|
+
const toTableRows = ({ node, text, toEnter, }) => {
|
|
331
|
+
const alignments = toColumnAlignments(text, node);
|
|
332
|
+
const rows = [];
|
|
333
|
+
for (let child = node.firstChild; child; child = child.nextSibling) {
|
|
334
|
+
if (child.name !== "TableHeader" &&
|
|
335
|
+
child.name !== "TableRow") {
|
|
336
|
+
continue;
|
|
337
|
+
}
|
|
338
|
+
const row = child;
|
|
339
|
+
rows.push({
|
|
340
|
+
cells: toRowRegions(row, text).map((region, columnIndex) => {
|
|
341
|
+
const bounds = toTrimmedBounds(text, region.from, region.to);
|
|
342
|
+
const cellNode = toCellNodeIn(row, bounds.from, bounds.to);
|
|
343
|
+
const cellRanges = [];
|
|
344
|
+
if (cellNode) {
|
|
345
|
+
cellNode.cursor().iterate(toEnter(cellRanges));
|
|
346
|
+
}
|
|
347
|
+
return {
|
|
348
|
+
alignment: alignments[columnIndex] ?? "start",
|
|
349
|
+
from: bounds.from,
|
|
350
|
+
segments: toInlineSegments({
|
|
351
|
+
from: bounds.from,
|
|
352
|
+
ranges: cellRanges,
|
|
353
|
+
text,
|
|
354
|
+
to: bounds.to,
|
|
355
|
+
}),
|
|
356
|
+
to: bounds.to,
|
|
357
|
+
};
|
|
358
|
+
}),
|
|
359
|
+
from: row.from,
|
|
360
|
+
isHeader: row.name === "TableHeader",
|
|
361
|
+
to: row.to,
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
if (rows.length === 0) {
|
|
365
|
+
return null;
|
|
366
|
+
}
|
|
367
|
+
const columnCount = Math.max(alignments.length, ...rows.map((row) => row.cells.length));
|
|
368
|
+
return rows.map((row) => ({
|
|
369
|
+
...row,
|
|
370
|
+
cells: [
|
|
371
|
+
...row.cells,
|
|
372
|
+
// A short row keeps its shape by gaining empty cells, and
|
|
373
|
+
// they collapse to the end of the row: clicking one puts the
|
|
374
|
+
// caret where the missing `| |` would be typed.
|
|
375
|
+
...Array.from({ length: columnCount - row.cells.length }, (_unused, index) => ({
|
|
376
|
+
alignment: alignments[row.cells.length + index] ?? "start",
|
|
377
|
+
from: row.to,
|
|
378
|
+
segments: [],
|
|
379
|
+
to: row.to,
|
|
380
|
+
})),
|
|
381
|
+
],
|
|
382
|
+
}));
|
|
383
|
+
};
|
|
384
|
+
/**
|
|
385
|
+
* Is this table drawn, or edited?
|
|
386
|
+
*
|
|
387
|
+
* One predicate, used by both passes, because they have to agree:
|
|
388
|
+
* the block pass draws the table exactly when the inline pass steps
|
|
389
|
+
* out of its way, and a disagreement paints the pipes underneath a
|
|
390
|
+
* rendered table or leaves a gap where neither drew anything.
|
|
391
|
+
*/
|
|
392
|
+
const isTableRendered = ({ isRawMode, node, selections, }) => !isRawMode && !isInside(selections, node.from, node.to);
|
|
393
|
+
/**
|
|
394
|
+
* The walk, parameterised by where it writes.
|
|
395
|
+
*
|
|
396
|
+
* Everything the document contains is decorated into the array this
|
|
397
|
+
* is handed; a table cell's contents are decorated into a throwaway
|
|
398
|
+
* one instead, because they are not decorations over the document
|
|
399
|
+
* at all — they describe text a widget will draw itself. Same rules
|
|
400
|
+
* for `**` in a cell as for `**` in a paragraph, one
|
|
401
|
+
* implementation, and the recursion is bounded by the cell subtree
|
|
402
|
+
* rather than by a flag.
|
|
403
|
+
*/
|
|
404
|
+
const toWalker = ({ isRawMode, selections, text, }) => {
|
|
405
|
+
const toEnter = (ranges) => {
|
|
406
|
+
const pushMarker = (from, to, isRevealed) => {
|
|
407
|
+
if (from >= to) {
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
ranges.push({
|
|
411
|
+
from,
|
|
412
|
+
isConcealed: !isRawMode && !isRevealed,
|
|
413
|
+
to,
|
|
414
|
+
type: "marker",
|
|
415
|
+
});
|
|
416
|
+
};
|
|
417
|
+
return (nodeRef) => {
|
|
157
418
|
const { name } = nodeRef;
|
|
158
419
|
const headingKind = HEADING_LINE_KINDS[name];
|
|
159
420
|
if (headingKind) {
|
|
@@ -190,6 +451,19 @@ export const toLivePreviewRanges = ({ from, isRawMode = false, selections, text,
|
|
|
190
451
|
return true;
|
|
191
452
|
}
|
|
192
453
|
if (name === "Table") {
|
|
454
|
+
// A rendered table belongs to the block pass, and this one
|
|
455
|
+
// has nothing to say about lines that will not be drawn.
|
|
456
|
+
if (isTableRendered({
|
|
457
|
+
isRawMode,
|
|
458
|
+
node: nodeRef.node,
|
|
459
|
+
selections,
|
|
460
|
+
})) {
|
|
461
|
+
return false;
|
|
462
|
+
}
|
|
463
|
+
// Otherwise the caret is in it — or raw mode is on — and
|
|
464
|
+
// this is the *editing* view: the pipes, monospaced, on the
|
|
465
|
+
// same rule as an image or a link. You cannot edit a column
|
|
466
|
+
// you cannot see.
|
|
193
467
|
if (!isRawMode) {
|
|
194
468
|
for (let offset = toLineStart(text, nodeRef.from); offset < nodeRef.to; offset = toLineEnd(text, offset) + 1) {
|
|
195
469
|
ranges.push({
|
|
@@ -309,6 +583,13 @@ export const toLivePreviewRanges = ({ from, isRawMode = false, selections, text,
|
|
|
309
583
|
pushMarker(nodeRef.from, nodeRef.to, true);
|
|
310
584
|
return false;
|
|
311
585
|
}
|
|
586
|
+
if (name === "Escape") {
|
|
587
|
+
// `\|` is the only way to put a pipe in a table cell, and
|
|
588
|
+
// the reader wants the pipe, not the backslash. Same rule
|
|
589
|
+
// as any other marker: the caret brings it back.
|
|
590
|
+
pushMarker(nodeRef.from, nodeRef.from + 1, isInside(selections, nodeRef.from, nodeRef.to));
|
|
591
|
+
return false;
|
|
592
|
+
}
|
|
312
593
|
if (name === "CodeInfo") {
|
|
313
594
|
pushMarker(nodeRef.from, nodeRef.to, true);
|
|
314
595
|
return false;
|
|
@@ -338,6 +619,76 @@ export const toLivePreviewRanges = ({ from, isRawMode = false, selections, text,
|
|
|
338
619
|
return false;
|
|
339
620
|
}
|
|
340
621
|
return true;
|
|
622
|
+
};
|
|
623
|
+
};
|
|
624
|
+
return toEnter;
|
|
625
|
+
};
|
|
626
|
+
/**
|
|
627
|
+
* Every decoration the document wants that a plugin may provide, in
|
|
628
|
+
* tree order.
|
|
629
|
+
*
|
|
630
|
+
* Order is not sorted here on purpose — `Decoration.set(ranges,
|
|
631
|
+
* true)` sorts, and doing it twice is the sort of thing that looks
|
|
632
|
+
* free until a document is long.
|
|
633
|
+
*/
|
|
634
|
+
export const toLivePreviewRanges = ({ from, isRawMode = false, selections, text, to, tree, }) => {
|
|
635
|
+
const ranges = [];
|
|
636
|
+
tree.iterate({
|
|
637
|
+
from,
|
|
638
|
+
to,
|
|
639
|
+
enter: toWalker({ isRawMode, selections, text })(ranges),
|
|
640
|
+
});
|
|
641
|
+
return ranges;
|
|
642
|
+
};
|
|
643
|
+
/**
|
|
644
|
+
* Block nodes a table can be nested inside.
|
|
645
|
+
*
|
|
646
|
+
* The block pass is not viewport-limited — it cannot be, since a
|
|
647
|
+
* block decoration is part of what *decides* the viewport — so it
|
|
648
|
+
* pays for the whole document on every keystroke. Descending only
|
|
649
|
+
* into containers keeps that a scan of the block structure rather
|
|
650
|
+
* than a walk of every inline node in the file.
|
|
651
|
+
*/
|
|
652
|
+
const TABLE_CONTAINER_NAMES = new Set([
|
|
653
|
+
"Blockquote",
|
|
654
|
+
"BulletList",
|
|
655
|
+
"Document",
|
|
656
|
+
"ListItem",
|
|
657
|
+
"OrderedList",
|
|
658
|
+
]);
|
|
659
|
+
/**
|
|
660
|
+
* The tables the document renders, whole-document.
|
|
661
|
+
*
|
|
662
|
+
* Separate from `toLivePreviewRanges` because CodeMirror requires
|
|
663
|
+
* it: block decorations come from a `StateField`, inline ones from
|
|
664
|
+
* a viewport-limited `ViewPlugin`, and the two passes agree via
|
|
665
|
+
* `isTableRendered`.
|
|
666
|
+
*/
|
|
667
|
+
export const toLivePreviewTableRanges = ({ isRawMode = false, selections, text, tree, }) => {
|
|
668
|
+
const ranges = [];
|
|
669
|
+
const toEnter = toWalker({ isRawMode, selections, text });
|
|
670
|
+
tree.iterate({
|
|
671
|
+
enter: (nodeRef) => {
|
|
672
|
+
if (nodeRef.name !== "Table") {
|
|
673
|
+
return TABLE_CONTAINER_NAMES.has(nodeRef.name);
|
|
674
|
+
}
|
|
675
|
+
const node = nodeRef.node;
|
|
676
|
+
const rows = isTableRendered({
|
|
677
|
+
isRawMode,
|
|
678
|
+
node,
|
|
679
|
+
selections,
|
|
680
|
+
})
|
|
681
|
+
? toTableRows({ node, text, toEnter })
|
|
682
|
+
: null;
|
|
683
|
+
if (rows) {
|
|
684
|
+
ranges.push({
|
|
685
|
+
from: node.from,
|
|
686
|
+
rows,
|
|
687
|
+
to: node.to,
|
|
688
|
+
type: "table",
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
return false;
|
|
341
692
|
},
|
|
342
693
|
});
|
|
343
694
|
return ranges;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"livePreviewRanges.js","sourceRoot":"","sources":["../../src/markdownEditorCodeMirror/livePreviewRanges.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"livePreviewRanges.js","sourceRoot":"","sources":["../../src/markdownEditorCodeMirror/livePreviewRanges.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -98,6 +98,34 @@ blank line at the top and bottom of the block that reads as a rendering bug. A l
|
|
|
98
98
|
stays, because hiding `-` turns an unordered list into indented prose — Obsidian substitutes
|
|
99
99
|
a `•`, which means choosing a width, and this component has no business choosing one.
|
|
100
100
|
|
|
101
|
+
## Tables render, and the caret edits them
|
|
102
|
+
|
|
103
|
+
<Canvas of={MarkdownEditorCodeMirrorStories.Tables} />
|
|
104
|
+
|
|
105
|
+
A table is the one construct on this surface whose meaning is *geometry*. Every other
|
|
106
|
+
decoration hangs on text CodeMirror draws anyway; a column cannot, because column two's text
|
|
107
|
+
is on four separate lines. So the pipes stop being drawn and a real `<table>` is drawn
|
|
108
|
+
instead — alignment from the delimiter row, and `**bold**`, `` `code` ``, links and images
|
|
109
|
+
rendering inside the cells exactly as they do in a paragraph.
|
|
110
|
+
|
|
111
|
+
**Click a cell and the markdown comes back with the caret in that cell.** That is the same
|
|
112
|
+
trade as a link or an image, and it is the only way in: you cannot edit a column you cannot
|
|
113
|
+
see. Arrow keys work too — Down from the line above enters at the top row, Up from below
|
|
114
|
+
enters at the bottom — because CodeMirror otherwise steps *over* a block widget and the
|
|
115
|
+
table would be unreachable without a mouse.
|
|
116
|
+
|
|
117
|
+
Three decisions worth knowing:
|
|
118
|
+
|
|
119
|
+
- **The widest row wins, not the header.** GFM drops cells past the header's width. An
|
|
120
|
+
editor that did the same would put text you typed on screen nowhere, so short rows gain
|
|
121
|
+
empty cells instead and nothing is ever hidden.
|
|
122
|
+
- **An empty cell keeps its column.** The parser emits no cell node for `| |`; the `|`
|
|
123
|
+
positions are what the columns are read from, so a blank cell does not shift the row.
|
|
124
|
+
- **A wide table scrolls inside its own block** rather than pushing the editor sideways.
|
|
125
|
+
|
|
126
|
+
`\|` — the only way to put a pipe *in* a cell — now conceals its backslash like any other
|
|
127
|
+
marker, in tables and everywhere else.
|
|
128
|
+
|
|
101
129
|
## Clicking a link opens it
|
|
102
130
|
|
|
103
131
|
Obsidian's behaviour, not VS Code's: where the markup is hidden, a link that looks like a
|
|
@@ -47,6 +47,28 @@ ip -br addr show
|
|
|
47
47
|
Replacement rails ordered from https://example.invalid/product?id=1234
|
|
48
48
|
`
|
|
49
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Alignment from the delimiter row, inline markup inside cells, a
|
|
52
|
+
* deliberately blank cell, and a row that is one column short —
|
|
53
|
+
* every table decision in one fixture.
|
|
54
|
+
*/
|
|
55
|
+
const TABLES = `## Rack inventory
|
|
56
|
+
|
|
57
|
+
| Port | Goes to | **Speed** | Notes |
|
|
58
|
+
| :--- | :---: | ---: | --- |
|
|
59
|
+
| 1 | uplink | 10G | swapped \`2026-08-19\` |
|
|
60
|
+
| 2 | | 1G | see [the runbook](https://example.invalid/runbook) |
|
|
61
|
+
| 3 | shelf | 1G |
|
|
62
|
+
| 4 | ~~spare~~ | — | pulled \\| relabel |
|
|
63
|
+
|
|
64
|
+
A table with no outer pipes is still a table:
|
|
65
|
+
|
|
66
|
+
Disk | Size
|
|
67
|
+
--- | ---:
|
|
68
|
+
front-left | 18 TB
|
|
69
|
+
front-right | 18 TB
|
|
70
|
+
`
|
|
71
|
+
|
|
50
72
|
const meta = {
|
|
51
73
|
title: "Components/Controls/MarkdownEditorCodeMirror",
|
|
52
74
|
component: MarkdownEditorCodeMirror,
|
|
@@ -145,3 +167,23 @@ export const CaretReveal: Story = {
|
|
|
145
167
|
label: "Description",
|
|
146
168
|
},
|
|
147
169
|
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* The construct whose meaning is geometry.
|
|
173
|
+
*
|
|
174
|
+
* Everything else on this surface is a decoration hung on text that
|
|
175
|
+
* is drawn anyway — a column is not, because column two's text is
|
|
176
|
+
* on four separate lines. So the pipes stop being drawn and a real
|
|
177
|
+
* table is drawn instead, alignment and all, with `**bold**` and
|
|
178
|
+
* links rendering inside the cells like anywhere else.
|
|
179
|
+
*
|
|
180
|
+
* Click a cell and the markdown comes back with the caret in that
|
|
181
|
+
* cell — the same trade the rest of the surface makes for a link or
|
|
182
|
+
* an image.
|
|
183
|
+
*/
|
|
184
|
+
export const Tables: Story = {
|
|
185
|
+
args: {
|
|
186
|
+
defaultValue: TABLES,
|
|
187
|
+
label: "Description",
|
|
188
|
+
},
|
|
189
|
+
}
|