@charcuterie/ui 3.4.0 → 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.
Files changed (63) hide show
  1. package/README.md +8 -0
  2. package/dist/markdownEditorCodeMirror/livePreview.d.ts.map +1 -1
  3. package/dist/markdownEditorCodeMirror/livePreview.js +346 -3
  4. package/dist/markdownEditorCodeMirror/livePreview.js.map +1 -1
  5. package/dist/markdownEditorCodeMirror/livePreviewRanges.d.ts +99 -1
  6. package/dist/markdownEditorCodeMirror/livePreviewRanges.d.ts.map +1 -1
  7. package/dist/markdownEditorCodeMirror/livePreviewRanges.js +370 -19
  8. package/dist/markdownEditorCodeMirror/livePreviewRanges.js.map +1 -1
  9. package/package.json +1 -1
  10. package/src/Accordion/Accordion.stories.tsx +1 -1
  11. package/src/AdaptiveGrid/AdaptiveGrid.stories.tsx +1 -1
  12. package/src/Alert/Alert.stories.tsx +1 -1
  13. package/src/Badge/Badge.stories.tsx +1 -1
  14. package/src/Board/Board.stories.tsx +1 -1
  15. package/src/Button/Button.stories.tsx +1 -1
  16. package/src/ButtonLink/ButtonLink.stories.tsx +1 -1
  17. package/src/Card/Card.stories.tsx +1 -1
  18. package/src/Checkbox/Checkbox.stories.tsx +1 -1
  19. package/src/ColorSchemeSwitcher/ColorSchemeSwitcher.stories.tsx +1 -1
  20. package/src/ColorSchemeToggle/ColorSchemeToggle.stories.tsx +1 -1
  21. package/src/Combobox/Combobox.stories.tsx +1 -1
  22. package/src/DataTable/DataTable.stories.tsx +1 -1
  23. package/src/DatePicker/DatePicker.stories.tsx +1 -1
  24. package/src/Dialog/Dialog.stories.tsx +1 -1
  25. package/src/EmptyState/EmptyState.stories.tsx +1 -1
  26. package/src/Field/Field.stories.tsx +1 -1
  27. package/src/FileDropZone/FileDropZone.stories.tsx +1 -1
  28. package/src/Header/Header.stories.tsx +1 -1
  29. package/src/IconButton/IconButton.stories.tsx +1 -1
  30. package/src/Lightbox/Lightbox.stories.tsx +1 -1
  31. package/src/Listbox/Listbox.stories.tsx +1 -1
  32. package/src/LiveStatusIndicator/LiveStatusIndicator.stories.tsx +1 -1
  33. package/src/LogViewer/LogViewer.stories.tsx +1 -1
  34. package/src/Main/Main.stories.tsx +1 -1
  35. package/src/MarkdownEditor/MarkdownEditor.stories.tsx +1 -1
  36. package/src/MediaTile/MediaTile.stories.tsx +1 -1
  37. package/src/Menu/Menu.stories.tsx +1 -1
  38. package/src/Modal/Modal.stories.tsx +1 -1
  39. package/src/Picker/Picker.stories.tsx +1 -1
  40. package/src/Popover/Popover.stories.tsx +1 -1
  41. package/src/ProgressBar/ProgressBar.stories.tsx +1 -1
  42. package/src/QueryBuilder/QueryBuilder.stories.tsx +1 -1
  43. package/src/RadioGroup/RadioGroup.stories.tsx +1 -1
  44. package/src/Rail/Rail.stories.tsx +1 -1
  45. package/src/SegmentedControl/SegmentedControl.stories.tsx +1 -1
  46. package/src/Select/Select.stories.tsx +17 -6
  47. package/src/Shell/Shell.stories.tsx +1 -1
  48. package/src/Skeleton/Skeleton.stories.tsx +1 -1
  49. package/src/SortableTableHeader/SortableTableHeader.stories.tsx +1 -1
  50. package/src/Spinner/Spinner.stories.tsx +1 -1
  51. package/src/Swatch/Swatch.stories.tsx +1 -1
  52. package/src/Switch/Switch.stories.tsx +1 -1
  53. package/src/Tabs/Tabs.stories.tsx +1 -1
  54. package/src/TextLink/TextLink.stories.tsx +1 -1
  55. package/src/Toast/Toast.stories.tsx +1 -1
  56. package/src/Toolbar/Toolbar.stories.tsx +1 -1
  57. package/src/Tooltip/Tooltip.stories.tsx +1 -1
  58. package/src/VisuallyHidden/VisuallyHidden.stories.tsx +1 -1
  59. package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.mdx +28 -0
  60. package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.stories.tsx +43 -1
  61. package/src/markdownEditorCodeMirror/livePreview.ts +465 -3
  62. package/src/markdownEditorCodeMirror/livePreviewRanges.test.ts +349 -8
  63. package/src/markdownEditorCodeMirror/livePreviewRanges.ts +669 -27
package/README.md CHANGED
@@ -176,6 +176,14 @@ rename breaks only the rendered page).
176
176
 
177
177
  1. `src/<Name>/<Name>.tsx`, `.stories.tsx`, `.mdx`, `.test.tsx` — siblings, matching
178
178
  mux-magic. The story shows it; the test drives it. Neither does the other's job.
179
+ **The story's `title` is `Components/<Group>/<Name>`**, and the group is one of
180
+ `Actions` (it does something), `Controls` (it takes a value), `Overlays` (it renders
181
+ over the page), `Layout` (it arranges other things), `Data` (it shows a set) or
182
+ `Feedback` (it reports state). Nothing composable goes at the top level; a helper that
183
+ is not a component — `VisuallyHidden`, `Scrollbar` — is `Utilities/<Name>`. Group order
184
+ in the sidebar comes from `packages/docs/.storybook/preview.tsx`, and an unlisted group
185
+ sorts last instead of silently displacing `Actions`
186
+ ([decision](../../docs/decisions/2026-08-21-a-deprecation-is-a-badge-in-place-and-the-sidebar-has-groups.md)).
179
187
  2. Colours from `intentStyles.ts`, sizes from `controlStyles.ts`. No hex, no `*-slate-*`
180
188
  (a test checks).
181
189
  3. The five stories: `Default`, `AllVariants`, `AllStates`, `Responsive` (three container
@@ -1 +1 @@
1
- {"version":3,"file":"livePreview.d.ts","sourceRoot":"","sources":["../../src/markdownEditorCodeMirror/livePreview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAS,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAqB3D,uCAAuC;AACvC,eAAO,MAAM,qBAAqB,sDACH,CAAA;AAE/B;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,qBAchC,CAAA;AAqcJ,eAAO,MAAM,WAAW,QAAO,SAM9B,CAAA"}
1
+ {"version":3,"file":"livePreview.d.ts","sourceRoot":"","sources":["../../src/markdownEditorCodeMirror/livePreview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,KAAK,EAEV,SAAS,EAEV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAGL,UAAU,EACX,MAAM,mBAAmB,CAAA;AAyC1B,uCAAuC;AACvC,eAAO,MAAM,qBAAqB,sDACH,CAAA;AAE/B;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,qBAchC,CAAA;AAg3BJ,eAAO,MAAM,WAAW,QAAO,SAa9B,CAAA"}
@@ -25,11 +25,24 @@
25
25
  * that resolves to nothing paints nothing, silently.
26
26
  */
27
27
  import { syntaxTree } from "@codemirror/language";
28
- import { StateEffect, StateField } from "@codemirror/state";
29
- import { Decoration, EditorView, ViewPlugin, WidgetType, } from "@codemirror/view";
30
- import { toLivePreviewRanges } from "./livePreviewRanges.js";
28
+ import { Prec, StateEffect, StateField, } from "@codemirror/state";
29
+ import { Decoration, EditorView, keymap, ViewPlugin, WidgetType, } from "@codemirror/view";
30
+ import { toLivePreviewRanges, toLivePreviewTableRanges, } from "./livePreviewRanges.js";
31
31
  /** Marks a rendered link so the click handler can find its target. */
32
32
  const URL_ATTRIBUTE = "data-charcuterie-url";
33
+ /**
34
+ * A rendered cell's offset into its own table, so a click can put
35
+ * the caret back in the markdown it was drawn from.
36
+ *
37
+ * Relative, not absolute, and for the same reason `TaskWidget` reads
38
+ * its position back from the DOM: a widget outlives the offsets it
39
+ * was built at. Editing a paragraph *above* a table moves every
40
+ * offset in it without changing a character of the table, and the
41
+ * widget is reused — `eq` compares the markdown, which did not
42
+ * change. Relative plus `posAtDOM` at click time is correct in both
43
+ * cases; a captured absolute offset silently is not.
44
+ */
45
+ const CELL_OFFSET_ATTRIBUTE = "data-charcuterie-cell-offset";
33
46
  /** Toggle the "edit Markdown" mode. */
34
47
  export const setLivePreviewRawMode = StateEffect.define();
35
48
  /**
@@ -51,6 +64,34 @@ export const livePreviewRawModeField = StateField.define({
51
64
  return isNextRawMode;
52
65
  },
53
66
  });
67
+ const setIsEditorFocused = StateEffect.define();
68
+ /**
69
+ * Focus, as editor state.
70
+ *
71
+ * The plugin can read `view.hasFocus` directly; the block pass is a
72
+ * `StateField` and has no view to ask. It still needs the answer,
73
+ * because an unfocused editor reveals nothing — without it the
74
+ * caret's default resting place, offset 0, counts as "inside" a
75
+ * table that opens the document, and a description that starts with
76
+ * a table loads showing pipes.
77
+ */
78
+ const isEditorFocusedField = StateField.define({
79
+ create: () => false,
80
+ update: (isFocused, transaction) => {
81
+ let isNextFocused = isFocused;
82
+ for (const effect of transaction.effects) {
83
+ if (effect.is(setIsEditorFocused)) {
84
+ isNextFocused = effect.value;
85
+ }
86
+ }
87
+ return isNextFocused;
88
+ },
89
+ });
90
+ /**
91
+ * The facet CodeMirror provides for exactly this: turn a focus
92
+ * change into an effect, so state can depend on it.
93
+ */
94
+ const focusTracker = EditorView.focusChangeEffect.of((_state, isFocusing) => setIsEditorFocused.of(isFocusing));
54
95
  const LINE_CLASSES = {
55
96
  blockquote: "cm-md-blockquote",
56
97
  code: "cm-md-codeblock",
@@ -163,6 +204,133 @@ class TaskWidget extends WidgetType {
163
204
  return false;
164
205
  }
165
206
  }
207
+ /**
208
+ * A cell's content run, as DOM.
209
+ *
210
+ * A plain text node when there is nothing to say about it — the
211
+ * common case, and one fewer element per cell in a table that might
212
+ * have a hundred.
213
+ */
214
+ const toSegmentNode = (segment, view) => {
215
+ if (segment.type === "image") {
216
+ const image = document.createElement("img");
217
+ image.setAttribute("src", segment.url);
218
+ image.setAttribute("alt", segment.alt);
219
+ image.className = "cm-md-image";
220
+ image.addEventListener("load", () => {
221
+ view.requestMeasure();
222
+ });
223
+ return image;
224
+ }
225
+ if (segment.markKinds.length === 0 && !segment.url) {
226
+ return document.createTextNode(segment.text);
227
+ }
228
+ const span = document.createElement("span");
229
+ span.className = segment.markKinds
230
+ .map((markKind) => MARK_CLASSES[markKind])
231
+ .join(" ");
232
+ if (segment.url) {
233
+ span.setAttribute(URL_ATTRIBUTE, segment.url);
234
+ }
235
+ span.textContent = segment.text;
236
+ return span;
237
+ };
238
+ /**
239
+ * A table, standing in for its own pipes.
240
+ *
241
+ * This is the one widget here that replaces *lines* rather than a
242
+ * span, and the only construct in the language whose meaning is
243
+ * geometry: a column is not a decoration you can hang on the text,
244
+ * because the text of column two is on four different lines. So the
245
+ * markdown stops being drawn and this draws instead — and the way
246
+ * back is the caret, exactly as it is for a link or an image.
247
+ * Clicking a cell dispatches a selection into that cell, the
248
+ * decoration drops on the next update, and the pipes are back with
249
+ * the caret already in the right one.
250
+ *
251
+ * `eq` compares the table's markdown source. Two identical tables
252
+ * never share a widget instance — `eq` is only ever consulted for
253
+ * the same position — so the slice is a complete identity, and it
254
+ * is stable under edits elsewhere in the document, which is what
255
+ * stops every keystroke in a long description from rebuilding every
256
+ * table below it.
257
+ */
258
+ class TableWidget extends WidgetType {
259
+ source;
260
+ rows;
261
+ tableFrom;
262
+ constructor(source, rows, tableFrom) {
263
+ super();
264
+ this.source = source;
265
+ this.rows = rows;
266
+ this.tableFrom = tableFrom;
267
+ }
268
+ eq(other) {
269
+ return other.source === this.source;
270
+ }
271
+ toDOM(view) {
272
+ const scroll = document.createElement("div");
273
+ scroll.className = "cm-md-table-scroll";
274
+ const table = document.createElement("table");
275
+ table.className = "cm-md-table-rendered";
276
+ const head = document.createElement("thead");
277
+ const body = document.createElement("tbody");
278
+ for (const row of this.rows) {
279
+ const rowElement = document.createElement("tr");
280
+ for (const cell of row.cells) {
281
+ const cellElement = document.createElement(row.isHeader ? "th" : "td");
282
+ cellElement.style.textAlign = cell.alignment;
283
+ cellElement.setAttribute(CELL_OFFSET_ATTRIBUTE, String(cell.from - this.tableFrom));
284
+ for (const segment of cell.segments) {
285
+ cellElement.append(toSegmentNode(segment, view));
286
+ }
287
+ rowElement.append(cellElement);
288
+ }
289
+ ;
290
+ (row.isHeader ? head : body).append(rowElement);
291
+ }
292
+ if (head.childElementCount > 0) {
293
+ table.append(head);
294
+ }
295
+ table.append(body);
296
+ scroll.append(table);
297
+ scroll.addEventListener("mousedown", (event) => {
298
+ const target = event.target;
299
+ if (!(target instanceof HTMLElement)) {
300
+ return;
301
+ }
302
+ // A link in a cell is still a link; `openLinkOnClick` gets it
303
+ // on the way up.
304
+ if (target.closest(`[${URL_ATTRIBUTE}]`)) {
305
+ return;
306
+ }
307
+ const cellElement = target.closest(`[${CELL_OFFSET_ATTRIBUTE}]`);
308
+ if (!cellElement) {
309
+ return;
310
+ }
311
+ event.preventDefault();
312
+ const offset = Number(cellElement.getAttribute(CELL_OFFSET_ATTRIBUTE));
313
+ view.focus();
314
+ view.dispatch({
315
+ selection: {
316
+ anchor: view.posAtDOM(scroll) + offset,
317
+ },
318
+ });
319
+ });
320
+ return scroll;
321
+ }
322
+ /**
323
+ * The widget handles its own events.
324
+ *
325
+ * Without this CodeMirror also treats the click as a caret
326
+ * placement and lands wherever the coordinates map to — which for
327
+ * a block widget is its first or last position, never the cell
328
+ * that was clicked.
329
+ */
330
+ ignoreEvent() {
331
+ return true;
332
+ }
333
+ }
166
334
  const toDecorations = (view) => {
167
335
  const isRawMode = view.state.field(livePreviewRawModeField, false);
168
336
  const text = view.state.doc.toString();
@@ -236,6 +404,59 @@ const toDecorations = (view) => {
236
404
  // replacements interleave, and an unsorted set throws.
237
405
  return Decoration.set(decorations, true);
238
406
  };
407
+ /**
408
+ * The block pass: tables, from a `StateField`.
409
+ *
410
+ * `EditorView.decorations.from` a field rather than a plugin, and
411
+ * that is not a style choice — CodeMirror throws
412
+ * `Block decorations may not be specified via plugins` if you try
413
+ * it the other way, because replacing four lines with one element
414
+ * changes the block structure the viewport is measured against.
415
+ * The whole document is scanned every time, which is what the
416
+ * plugin's `visibleRanges` optimisation buys back for everything
417
+ * else.
418
+ */
419
+ const toTableDecorations = (state) => {
420
+ const isRawMode = state.field(livePreviewRawModeField, false);
421
+ const selections = state.field(isEditorFocusedField, false)
422
+ ? state.selection.ranges.map((range) => ({
423
+ from: range.from,
424
+ to: range.to,
425
+ }))
426
+ : [];
427
+ const text = state.doc.toString();
428
+ return Decoration.set(toLivePreviewTableRanges({
429
+ isRawMode: isRawMode ?? false,
430
+ selections,
431
+ text,
432
+ tree: syntaxTree(state),
433
+ }).map((range) => Decoration.replace({
434
+ // Whole lines, which is what `block` requires — and also
435
+ // what makes the table a paragraph in the flow rather than
436
+ // a very tall character.
437
+ block: true,
438
+ widget: new TableWidget(text.slice(range.from, range.to), range.rows, range.from),
439
+ }).range(range.from, range.to)), true);
440
+ };
441
+ const livePreviewTableField = StateField.define({
442
+ create: toTableDecorations,
443
+ update: (decorations, transaction) => {
444
+ if (transaction.docChanged ||
445
+ transaction.selection !== undefined ||
446
+ transaction.effects.some((effect) => effect.is(setLivePreviewRawMode) ||
447
+ effect.is(setIsEditorFocused)) ||
448
+ // Parsing is incremental and time-sliced, so a long
449
+ // document's tables arrive over several transactions that
450
+ // change nothing else. Comparing the tree by identity is
451
+ // the cheap way to notice.
452
+ syntaxTree(transaction.state) !==
453
+ syntaxTree(transaction.startState)) {
454
+ return toTableDecorations(transaction.state);
455
+ }
456
+ return decorations;
457
+ },
458
+ provide: (field) => EditorView.decorations.from(field),
459
+ });
239
460
  const livePreviewPlugin = ViewPlugin.fromClass(class {
240
461
  decorations;
241
462
  constructor(view) {
@@ -257,6 +478,61 @@ const livePreviewPlugin = ViewPlugin.fromClass(class {
257
478
  }, {
258
479
  decorations: (plugin) => plugin.decorations,
259
480
  });
481
+ /**
482
+ * Step *into* a table with the arrow keys.
483
+ *
484
+ * CodeMirror moves the caret over a block widget, not through it:
485
+ * pressing Down on the line above a rendered table lands on the
486
+ * line below it, and the table's markdown is unreachable without a
487
+ * mouse. That is fine for a widget with nothing to edit inside;
488
+ * this one is four lines of the user's own text.
489
+ *
490
+ * So the vertical move is inspected before it happens, and when it
491
+ * would jump a table, the caret is put at that table's edge
492
+ * instead — the near edge, so Down enters at the top and Up enters
493
+ * at the bottom. The table stands down on the next update and the
494
+ * pipes are there with the caret already in them.
495
+ *
496
+ * Only for a collapsed selection: Shift+Down is *selecting* across
497
+ * the table, where jumping it is right — the text is still in the
498
+ * document and still in the selection.
499
+ */
500
+ const toTableStep = (isForward) => (view) => {
501
+ const { main } = view.state.selection;
502
+ if (!main.empty) {
503
+ return false;
504
+ }
505
+ const destination = view.moveVertically(main, isForward).head;
506
+ const from = Math.min(main.head, destination);
507
+ const to = Math.max(main.head, destination);
508
+ if (from === to) {
509
+ return false;
510
+ }
511
+ let target = null;
512
+ view.state
513
+ .field(livePreviewTableField)
514
+ .between(from, to, (rangeFrom, rangeTo) => {
515
+ target = isForward ? rangeFrom : rangeTo;
516
+ return false;
517
+ });
518
+ if (target === null) {
519
+ return false;
520
+ }
521
+ view.dispatch({
522
+ scrollIntoView: true,
523
+ selection: { anchor: target },
524
+ });
525
+ return true;
526
+ };
527
+ /**
528
+ * `Prec.high` because the default keymap also binds these, and the
529
+ * first handler that returns `true` wins. Registration order in the
530
+ * extension array is not a promise about precedence.
531
+ */
532
+ const tableStepKeymap = Prec.high(keymap.of([
533
+ { key: "ArrowDown", run: toTableStep(true) },
534
+ { key: "ArrowUp", run: toTableStep(false) },
535
+ ]));
260
536
  /**
261
537
  * Open the link under the pointer.
262
538
  *
@@ -393,9 +669,69 @@ const livePreviewTheme = EditorView.theme({
393
669
  ".cm-md-strong": {
394
670
  fontWeight: "700",
395
671
  },
672
+ /**
673
+ * The *editing* view of a table: the pipes, monospaced so the
674
+ * columns line up as typed. This is what the caret reveals, and
675
+ * what raw mode shows.
676
+ */
396
677
  ".cm-md-table": {
397
678
  fontFamily: "var(--font-mono)",
398
679
  },
680
+ ".cm-md-table-rendered": {
681
+ borderCollapse: "collapse",
682
+ },
683
+ ".cm-md-table-rendered td, .cm-md-table-rendered th": {
684
+ border: "1px solid var(--color-border-subtle)",
685
+ cursor: "text",
686
+ /**
687
+ * Undo the editor's own wrapping rules inside a cell.
688
+ *
689
+ * `.cm-lineWrapping` sets `overflow-wrap: anywhere` so a long
690
+ * unbroken line cannot escape the gutter, and a table cell
691
+ * inherits it — which in the Narrow View broke `Port` across
692
+ * two lines as `Por` / `t`. A cell wraps at spaces like prose,
693
+ * and breaks a word only when the word alone will not fit.
694
+ */
695
+ overflowWrap: "break-word",
696
+ padding: "var(--space-1) var(--space-2)",
697
+ verticalAlign: "top",
698
+ whiteSpace: "normal",
699
+ wordBreak: "normal",
700
+ },
701
+ /**
702
+ * A blank cell still owns a row's worth of height.
703
+ *
704
+ * Without it a row whose cells are all empty collapses to its
705
+ * padding and the table looks like it lost a row — which, in a
706
+ * surface where a blank cell is how you say "nothing here yet",
707
+ * is the wrong answer to a legitimate table.
708
+ */
709
+ ".cm-md-table-rendered td:empty::after, .cm-md-table-rendered th:empty::after": {
710
+ content: '"\\200b"',
711
+ },
712
+ /**
713
+ * No `text-align` here: the delimiter row aligns the header cell
714
+ * along with its column, and that is set inline per cell. A rule
715
+ * would be dead code that looks like it is doing the work.
716
+ */
717
+ ".cm-md-table-rendered th": {
718
+ backgroundColor: "var(--color-surface-sunken)",
719
+ fontWeight: "var(--font-weight-semibold)",
720
+ },
721
+ /**
722
+ * The scroll box, not the table.
723
+ *
724
+ * A table wider than the editor has to go somewhere. Letting it
725
+ * overflow puts columns under the gutter or off the edge of a
726
+ * wrapped line; scrolling the block is the same answer every
727
+ * document renderer lands on, and it keeps the *editor* from
728
+ * scrolling sideways as a whole.
729
+ */
730
+ ".cm-md-table-scroll": {
731
+ margin: "var(--space-2) 0",
732
+ maxWidth: "100%",
733
+ overflowX: "auto",
734
+ },
399
735
  ".cm-md-task": {
400
736
  accentColor: "var(--color-intent-accent-solid)",
401
737
  marginInlineEnd: "0.35em",
@@ -420,9 +756,16 @@ const rawModeClass = EditorView.editorAttributes.of((view) => view.state.field(l
420
756
  : null);
421
757
  export const livePreview = () => [
422
758
  livePreviewRawModeField,
759
+ isEditorFocusedField,
760
+ focusTracker,
761
+ // The block pass, before the plugin: a field's decorations are
762
+ // resolved first anyway, but declaring it first keeps the reading
763
+ // order the same as the drawing order.
764
+ livePreviewTableField,
423
765
  livePreviewPlugin,
424
766
  livePreviewTheme,
425
767
  openLinkOnClick,
768
+ tableStepKeymap,
426
769
  rawModeClass,
427
770
  ];
428
771
  //# sourceMappingURL=livePreview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"livePreview.js","sourceRoot":"","sources":["../../src/markdownEditorCodeMirror/livePreview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"livePreview.js","sourceRoot":"","sources":["../../src/markdownEditorCodeMirror/livePreview.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,53 @@ import type { Tree } from "@lezer/common";
52
52
  export type LivePreviewLineKind = "blockquote" | "code" | "heading1" | "heading2" | "heading3" | "heading4" | "heading5" | "heading6" | "table";
53
53
  /** An inline treatment applied to a character range. */
54
54
  export type LivePreviewMarkKind = "autolink" | "code" | "emphasis" | "linkText" | "strikethrough" | "strong" | "url";
55
+ /**
56
+ * A column's alignment, as the delimiter row spells it.
57
+ *
58
+ * Logical rather than left/right, because everything else in this
59
+ * fleet is: a table in an RTL locale should flip with the text, and
60
+ * `text-align: start` is the property that does it for free.
61
+ */
62
+ export type LivePreviewTableAlignment = "center" | "end" | "start";
63
+ /**
64
+ * A run of cell content that shares one treatment.
65
+ *
66
+ * A rendered table cell is built from these rather than from the
67
+ * raw slice, so a cell keeps everything the rest of the surface
68
+ * gives a line: `**bold**` is bold, a link is a link, `` `code` ``
69
+ * is monospaced, and the markers that said so are gone.
70
+ */
71
+ export type LivePreviewTableSegment = {
72
+ alt: string;
73
+ type: "image";
74
+ url: string;
75
+ } | {
76
+ markKinds: readonly LivePreviewMarkKind[];
77
+ text: string;
78
+ type: "text";
79
+ /** Present when the run is link text; the click target. */
80
+ url?: string;
81
+ };
82
+ export type LivePreviewTableCell = {
83
+ alignment: LivePreviewTableAlignment;
84
+ /**
85
+ * Where a click in this cell puts the caret.
86
+ *
87
+ * The rendered table is a view, so the only way back into the
88
+ * markdown is to move the caret into it — and landing in the cell
89
+ * the reader aimed at is the difference between "editable" and
90
+ * "editable somewhere in there".
91
+ */
92
+ from: number;
93
+ segments: readonly LivePreviewTableSegment[];
94
+ to: number;
95
+ };
96
+ export type LivePreviewTableRow = {
97
+ cells: readonly LivePreviewTableCell[];
98
+ from: number;
99
+ isHeader: boolean;
100
+ to: number;
101
+ };
55
102
  export type LivePreviewRange = {
56
103
  from: number;
57
104
  to: number;
@@ -91,6 +138,25 @@ export type LivePreviewRange = {
91
138
  /** Present on `linkText` and `autolink`; the click target. */
92
139
  url?: string;
93
140
  });
141
+ /**
142
+ * A whole table, rendered — header row first, every row padded to
143
+ * the same width so the widget has no geometry decisions left.
144
+ *
145
+ * Its own type, and its own pass, because of a hard CodeMirror
146
+ * rule: **a block decoration may not come from a `ViewPlugin`.**
147
+ * Replacing four lines with one element changes the document's
148
+ * block structure, which the view has to know before it can decide
149
+ * what the viewport even contains — so it has to come from a
150
+ * `StateField`, which sees the whole document and no viewport.
151
+ * Everything else here is viewport-limited and stays in the plugin.
152
+ * The split is CodeMirror's, not ours.
153
+ */
154
+ export type LivePreviewTableRange = {
155
+ from: number;
156
+ rows: readonly LivePreviewTableRow[];
157
+ to: number;
158
+ type: "table";
159
+ };
94
160
  /** A selection range, in the two fields this module needs. */
95
161
  export type LivePreviewSelection = {
96
162
  from: number;
@@ -118,11 +184,43 @@ export type ToLivePreviewRangesOptions = {
118
184
  tree: Tree;
119
185
  };
120
186
  /**
121
- * Every decoration the document wants, in tree order.
187
+ * Inline ranges over a slice → the runs a renderer can build DOM
188
+ * from, flattened.
189
+ *
190
+ * Everywhere else in this module a decoration is *applied* to text
191
+ * CodeMirror is already drawing, so overlapping ranges are free —
192
+ * the browser composes them. A widget draws its own text, so they
193
+ * are not: `**a [b](c) d**` is one strong run overlapping one link
194
+ * run, and something has to decide where the spans break. That is
195
+ * this function, and the answer is per character, which is the only
196
+ * version that cannot be defeated by a nesting nobody predicted.
197
+ *
198
+ * Concealed markers are dropped rather than split around, so a run
199
+ * of bold text stays a single segment with its `**` gone from both
200
+ * ends.
201
+ */
202
+ export declare const toInlineSegments: ({ from, ranges, text, to, }: {
203
+ from: number;
204
+ ranges: readonly LivePreviewRange[];
205
+ text: string;
206
+ to: number;
207
+ }) => LivePreviewTableSegment[];
208
+ /**
209
+ * Every decoration the document wants that a plugin may provide, in
210
+ * tree order.
122
211
  *
123
212
  * Order is not sorted here on purpose — `Decoration.set(ranges,
124
213
  * true)` sorts, and doing it twice is the sort of thing that looks
125
214
  * free until a document is long.
126
215
  */
127
216
  export declare const toLivePreviewRanges: ({ from, isRawMode, selections, text, to, tree, }: ToLivePreviewRangesOptions) => LivePreviewRange[];
217
+ /**
218
+ * The tables the document renders, whole-document.
219
+ *
220
+ * Separate from `toLivePreviewRanges` because CodeMirror requires
221
+ * it: block decorations come from a `StateField`, inline ones from
222
+ * a viewport-limited `ViewPlugin`, and the two passes agree via
223
+ * `isTableRendered`.
224
+ */
225
+ export declare const toLivePreviewTableRanges: ({ isRawMode, selections, text, tree, }: Omit<ToLivePreviewRangesOptions, "from" | "to">) => LivePreviewTableRange[];
128
226
  //# sourceMappingURL=livePreviewRanges.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"livePreviewRanges.d.ts","sourceRoot":"","sources":["../../src/markdownEditorCodeMirror/livePreviewRanges.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,KAAK,EAAc,IAAI,EAAE,MAAM,eAAe,CAAA;AAErD;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAC3B,YAAY,GACZ,MAAM,GACN,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,OAAO,CAAA;AAEX,wDAAwD;AACxD,MAAM,MAAM,mBAAmB,GAC3B,UAAU,GACV,MAAM,GACN,UAAU,GACV,UAAU,GACV,eAAe,GACf,QAAQ,GACR,KAAK,CAAA;AAET,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX,GAAG,CACA;IACE,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ,GACD;IACE,+DAA+D;IAC/D,SAAS,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb,GACD;IACE;;;;;;;;OAQG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB,IAAI,EAAE,QAAQ,CAAA;CACf,GACD;IACE,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;CACb,GACD;IACE,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CACJ,CAAA;AAED,8DAA8D;AAC9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAA;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAgID;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,kDAOjC,0BAA0B,KAAG,gBAAgB,EAoS/C,CAAA"}
1
+ {"version":3,"file":"livePreviewRanges.d.ts","sourceRoot":"","sources":["../../src/markdownEditorCodeMirror/livePreviewRanges.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,KAAK,EAGV,IAAI,EACL,MAAM,eAAe,CAAA;AAEtB;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAC3B,YAAY,GACZ,MAAM,GACN,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,OAAO,CAAA;AAEX,wDAAwD;AACxD,MAAM,MAAM,mBAAmB,GAC3B,UAAU,GACV,MAAM,GACN,UAAU,GACV,UAAU,GACV,eAAe,GACf,QAAQ,GACR,KAAK,CAAA;AAET;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR,KAAK,GACL,OAAO,CAAA;AAEX;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAC/B;IACE,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ,GACD;IACE,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAA;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAEL,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,yBAAyB,CAAA;IACpC;;;;;;;OAOG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,SAAS,uBAAuB,EAAE,CAAA;IAC5C,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAA;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX,GAAG,CACA;IACE,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ,GACD;IACE,+DAA+D;IAC/D,SAAS,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb,GACD;IACE;;;;;;;;OAQG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB,IAAI,EAAE,QAAQ,CAAA;CACf,GACD;IACE,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;CACb,GACD;IACE,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CACJ,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,SAAS,mBAAmB,EAAE,CAAA;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAED,8DAA8D;AAC9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAA;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAsRD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,GAAI,6BAK9B;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX,KAAG,uBAAuB,EA6H1B,CAAA;AAsdD;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,kDAOjC,0BAA0B,KAAG,gBAAgB,EAY/C,CAAA;AAmBD;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,GAAI,wCAKtC,IAAI,CACL,0BAA0B,EAC1B,MAAM,GAAG,IAAI,CACd,KAAG,qBAAqB,EAmCxB,CAAA"}