@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.
- package/README.md +8 -0
- 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/Accordion/Accordion.stories.tsx +1 -1
- package/src/AdaptiveGrid/AdaptiveGrid.stories.tsx +1 -1
- package/src/Alert/Alert.stories.tsx +1 -1
- package/src/Badge/Badge.stories.tsx +1 -1
- package/src/Board/Board.stories.tsx +1 -1
- package/src/Button/Button.stories.tsx +1 -1
- package/src/ButtonLink/ButtonLink.stories.tsx +1 -1
- package/src/Card/Card.stories.tsx +1 -1
- package/src/Checkbox/Checkbox.stories.tsx +1 -1
- package/src/ColorSchemeSwitcher/ColorSchemeSwitcher.stories.tsx +1 -1
- package/src/ColorSchemeToggle/ColorSchemeToggle.stories.tsx +1 -1
- package/src/Combobox/Combobox.stories.tsx +1 -1
- package/src/DataTable/DataTable.stories.tsx +1 -1
- package/src/DatePicker/DatePicker.stories.tsx +1 -1
- package/src/Dialog/Dialog.stories.tsx +1 -1
- package/src/EmptyState/EmptyState.stories.tsx +1 -1
- package/src/Field/Field.stories.tsx +1 -1
- package/src/FileDropZone/FileDropZone.stories.tsx +1 -1
- package/src/Header/Header.stories.tsx +1 -1
- package/src/IconButton/IconButton.stories.tsx +1 -1
- package/src/Lightbox/Lightbox.stories.tsx +1 -1
- package/src/Listbox/Listbox.stories.tsx +1 -1
- package/src/LiveStatusIndicator/LiveStatusIndicator.stories.tsx +1 -1
- package/src/LogViewer/LogViewer.stories.tsx +1 -1
- package/src/Main/Main.stories.tsx +1 -1
- package/src/MarkdownEditor/MarkdownEditor.stories.tsx +1 -1
- package/src/MediaTile/MediaTile.stories.tsx +1 -1
- package/src/Menu/Menu.stories.tsx +1 -1
- package/src/Modal/Modal.stories.tsx +1 -1
- package/src/Picker/Picker.stories.tsx +1 -1
- package/src/Popover/Popover.stories.tsx +1 -1
- package/src/ProgressBar/ProgressBar.stories.tsx +1 -1
- package/src/QueryBuilder/QueryBuilder.stories.tsx +1 -1
- package/src/RadioGroup/RadioGroup.stories.tsx +1 -1
- package/src/Rail/Rail.stories.tsx +1 -1
- package/src/SegmentedControl/SegmentedControl.stories.tsx +1 -1
- package/src/Select/Select.stories.tsx +17 -6
- package/src/Shell/Shell.stories.tsx +1 -1
- package/src/Skeleton/Skeleton.stories.tsx +1 -1
- package/src/SortableTableHeader/SortableTableHeader.stories.tsx +1 -1
- package/src/Spinner/Spinner.stories.tsx +1 -1
- package/src/Swatch/Swatch.stories.tsx +1 -1
- package/src/Switch/Switch.stories.tsx +1 -1
- package/src/Tabs/Tabs.stories.tsx +1 -1
- package/src/TextLink/TextLink.stories.tsx +1 -1
- package/src/Toast/Toast.stories.tsx +1 -1
- package/src/Toolbar/Toolbar.stories.tsx +1 -1
- package/src/Tooltip/Tooltip.stories.tsx +1 -1
- package/src/VisuallyHidden/VisuallyHidden.stories.tsx +1 -1
- package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.mdx +28 -0
- package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.stories.tsx +43 -1
- package/src/markdownEditorCodeMirror/livePreview.ts +465 -3
- package/src/markdownEditorCodeMirror/livePreviewRanges.test.ts +349 -8
- 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,
|
|
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
|
-
*
|
|
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,
|
|
1
|
+
{"version":3,"file":"livePreviewRanges.d.ts","sourceRoot":"","sources":["../../src/markdownEditorCodeMirror/livePreviewRanges.ts"],"names":[],"mappings":"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"}
|