@react-x11/components 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +95 -34
- package/dist/charts/node.d.ts +1 -1
- package/dist/charts/node.d.ts.map +1 -1
- package/dist/charts/node.js +6 -2
- package/dist/charts/node.js.map +1 -1
- package/dist/embed/client.d.ts +48 -3
- package/dist/embed/client.d.ts.map +1 -1
- package/dist/embed/client.js +79 -5
- package/dist/embed/client.js.map +1 -1
- package/dist/embed/index.d.ts +1 -1
- package/dist/embed/index.d.ts.map +1 -1
- package/dist/embed/index.js +1 -1
- package/dist/embed/index.js.map +1 -1
- package/dist/html/node.d.ts +3 -1
- package/dist/html/node.d.ts.map +1 -1
- package/dist/html/node.js +7 -5
- package/dist/html/node.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{markdown → internal/markdown}/ast.d.ts +12 -0
- package/dist/internal/markdown/ast.d.ts.map +1 -0
- package/dist/internal/markdown/ast.js +22 -0
- package/dist/internal/markdown/ast.js.map +1 -0
- package/dist/internal/markdown/parse.d.ts.map +1 -0
- package/dist/{markdown → internal/markdown}/parse.js +112 -22
- package/dist/internal/markdown/parse.js.map +1 -0
- package/dist/internal/markdown/stringify.d.ts +4 -0
- package/dist/internal/markdown/stringify.d.ts.map +1 -0
- package/dist/internal/markdown/stringify.js +684 -0
- package/dist/internal/markdown/stringify.js.map +1 -0
- package/dist/internal/markdown/tags.d.ts.map +1 -0
- package/dist/internal/markdown/tags.js.map +1 -0
- package/dist/internal/scroll.d.ts +3 -2
- package/dist/internal/scroll.d.ts.map +1 -1
- package/dist/internal/scroll.js +1 -0
- package/dist/internal/scroll.js.map +1 -1
- package/dist/maps/anchors.d.ts +98 -0
- package/dist/maps/anchors.d.ts.map +1 -0
- package/dist/maps/anchors.js +531 -0
- package/dist/maps/anchors.js.map +1 -0
- package/dist/maps/controller.d.ts +283 -0
- package/dist/maps/controller.d.ts.map +1 -0
- package/dist/maps/controller.js +743 -0
- package/dist/maps/controller.js.map +1 -0
- package/dist/maps/gl/buckets.d.ts +95 -0
- package/dist/maps/gl/buckets.d.ts.map +1 -0
- package/dist/maps/gl/buckets.js +362 -0
- package/dist/maps/gl/buckets.js.map +1 -0
- package/dist/maps/gl/build-worker.d.ts +13 -0
- package/dist/maps/gl/build-worker.d.ts.map +1 -0
- package/dist/maps/gl/build-worker.js +44 -0
- package/dist/maps/gl/build-worker.js.map +1 -0
- package/dist/maps/gl/color.d.ts +8 -0
- package/dist/maps/gl/color.d.ts.map +1 -0
- package/dist/maps/gl/color.js +57 -0
- package/dist/maps/gl/color.js.map +1 -0
- package/dist/maps/gl/cover.d.ts +51 -0
- package/dist/maps/gl/cover.d.ts.map +1 -0
- package/dist/maps/gl/cover.js +124 -0
- package/dist/maps/gl/cover.js.map +1 -0
- package/dist/maps/gl/index.d.ts +3 -0
- package/dist/maps/gl/index.d.ts.map +1 -0
- package/dist/maps/gl/index.js +20 -0
- package/dist/maps/gl/index.js.map +1 -0
- package/dist/maps/gl/markers.d.ts +28 -0
- package/dist/maps/gl/markers.d.ts.map +1 -0
- package/dist/maps/gl/markers.js +60 -0
- package/dist/maps/gl/markers.js.map +1 -0
- package/dist/maps/gl/overlays.d.ts +68 -0
- package/dist/maps/gl/overlays.d.ts.map +1 -0
- package/dist/maps/gl/overlays.js +300 -0
- package/dist/maps/gl/overlays.js.map +1 -0
- package/dist/maps/gl/pane.d.ts +12 -0
- package/dist/maps/gl/pane.d.ts.map +1 -0
- package/dist/maps/gl/pane.js +37 -0
- package/dist/maps/gl/pane.js.map +1 -0
- package/dist/maps/gl/placement.d.ts +111 -0
- package/dist/maps/gl/placement.d.ts.map +1 -0
- package/dist/maps/gl/placement.js +567 -0
- package/dist/maps/gl/placement.js.map +1 -0
- package/dist/maps/gl/renderer.d.ts +352 -0
- package/dist/maps/gl/renderer.d.ts.map +1 -0
- package/dist/maps/gl/renderer.js +1127 -0
- package/dist/maps/gl/renderer.js.map +1 -0
- package/dist/maps/gl/shaders.d.ts +120 -0
- package/dist/maps/gl/shaders.d.ts.map +1 -0
- package/dist/maps/gl/shaders.js +451 -0
- package/dist/maps/gl/shaders.js.map +1 -0
- package/dist/maps/gl/store.d.ts +115 -0
- package/dist/maps/gl/store.d.ts.map +1 -0
- package/dist/maps/gl/store.js +469 -0
- package/dist/maps/gl/store.js.map +1 -0
- package/dist/maps/gl/text.d.ts +154 -0
- package/dist/maps/gl/text.d.ts.map +1 -0
- package/dist/maps/gl/text.js +382 -0
- package/dist/maps/gl/text.js.map +1 -0
- package/dist/maps/gl/view.d.ts +54 -0
- package/dist/maps/gl/view.d.ts.map +1 -0
- package/dist/maps/gl/view.js +974 -0
- package/dist/maps/gl/view.js.map +1 -0
- package/dist/maps/index.d.ts +1 -1
- package/dist/maps/index.d.ts.map +1 -1
- package/dist/maps/index.js +216 -52
- package/dist/maps/index.js.map +1 -1
- package/dist/maps/labels.d.ts +37 -16
- package/dist/maps/labels.d.ts.map +1 -1
- package/dist/maps/labels.js +188 -119
- package/dist/maps/labels.js.map +1 -1
- package/dist/maps/node.d.ts +162 -56
- package/dist/maps/node.d.ts.map +1 -1
- package/dist/maps/node.js +607 -515
- package/dist/maps/node.js.map +1 -1
- package/dist/maps/overlay.d.ts +72 -9
- package/dist/maps/overlay.d.ts.map +1 -1
- package/dist/maps/overlay.js +108 -28
- package/dist/maps/overlay.js.map +1 -1
- package/dist/maps/paint.d.ts +3 -0
- package/dist/maps/paint.d.ts.map +1 -1
- package/dist/maps/paint.js.map +1 -1
- package/dist/maps/proj.d.ts +14 -0
- package/dist/maps/proj.d.ts.map +1 -1
- package/dist/maps/proj.js +28 -0
- package/dist/maps/proj.js.map +1 -1
- package/dist/maps/renderer.d.ts +69 -0
- package/dist/maps/renderer.d.ts.map +1 -0
- package/dist/maps/renderer.js +66 -0
- package/dist/maps/renderer.js.map +1 -0
- package/dist/maps/sources.d.ts +25 -3
- package/dist/maps/sources.d.ts.map +1 -1
- package/dist/maps/sources.js +17 -0
- package/dist/maps/sources.js.map +1 -1
- package/dist/maps/theme.d.ts +19 -0
- package/dist/maps/theme.d.ts.map +1 -0
- package/dist/maps/theme.js +44 -0
- package/dist/maps/theme.js.map +1 -0
- package/dist/maps/tiles.d.ts +117 -17
- package/dist/maps/tiles.d.ts.map +1 -1
- package/dist/maps/tiles.js +163 -30
- package/dist/maps/tiles.js.map +1 -1
- package/dist/maps/types.d.ts +188 -20
- package/dist/maps/types.d.ts.map +1 -1
- package/dist/markdown/expressions.d.ts +1 -1
- package/dist/markdown/expressions.d.ts.map +1 -1
- package/dist/markdown/expressions.js.map +1 -1
- package/dist/markdown/index.d.ts +7 -6
- package/dist/markdown/index.d.ts.map +1 -1
- package/dist/markdown/index.js +9 -7
- package/dist/markdown/index.js.map +1 -1
- package/dist/markdown/spans.d.ts +1 -1
- package/dist/markdown/spans.d.ts.map +1 -1
- package/dist/media-player/index.d.ts +11 -3
- package/dist/media-player/index.d.ts.map +1 -1
- package/dist/media-player/index.js +13 -2
- package/dist/media-player/index.js.map +1 -1
- package/dist/rich-text-editor/clipboard.d.ts +23 -0
- package/dist/rich-text-editor/clipboard.d.ts.map +1 -0
- package/dist/rich-text-editor/clipboard.js +307 -0
- package/dist/rich-text-editor/clipboard.js.map +1 -0
- package/dist/rich-text-editor/collab.d.ts +32 -0
- package/dist/rich-text-editor/collab.d.ts.map +1 -0
- package/dist/rich-text-editor/collab.js +55 -0
- package/dist/rich-text-editor/collab.js.map +1 -0
- package/dist/rich-text-editor/commands.d.ts +50 -0
- package/dist/rich-text-editor/commands.d.ts.map +1 -0
- package/dist/rich-text-editor/commands.js +376 -0
- package/dist/rich-text-editor/commands.js.map +1 -0
- package/dist/rich-text-editor/drag.d.ts +68 -0
- package/dist/rich-text-editor/drag.d.ts.map +1 -0
- package/dist/rich-text-editor/drag.js +148 -0
- package/dist/rich-text-editor/drag.js.map +1 -0
- package/dist/rich-text-editor/html.d.ts +145 -0
- package/dist/rich-text-editor/html.d.ts.map +1 -0
- package/dist/rich-text-editor/html.js +516 -0
- package/dist/rich-text-editor/html.js.map +1 -0
- package/dist/rich-text-editor/index.d.ts +263 -0
- package/dist/rich-text-editor/index.d.ts.map +1 -0
- package/dist/rich-text-editor/index.js +822 -0
- package/dist/rich-text-editor/index.js.map +1 -0
- package/dist/rich-text-editor/inline.d.ts +94 -0
- package/dist/rich-text-editor/inline.d.ts.map +1 -0
- package/dist/rich-text-editor/inline.js +252 -0
- package/dist/rich-text-editor/inline.js.map +1 -0
- package/dist/rich-text-editor/keymap.d.ts +71 -0
- package/dist/rich-text-editor/keymap.d.ts.map +1 -0
- package/dist/rich-text-editor/keymap.js +393 -0
- package/dist/rich-text-editor/keymap.js.map +1 -0
- package/dist/rich-text-editor/keys.d.ts +29 -0
- package/dist/rich-text-editor/keys.d.ts.map +1 -0
- package/dist/rich-text-editor/keys.js +93 -0
- package/dist/rich-text-editor/keys.js.map +1 -0
- package/dist/rich-text-editor/look.d.ts +71 -0
- package/dist/rich-text-editor/look.d.ts.map +1 -0
- package/dist/rich-text-editor/look.js +342 -0
- package/dist/rich-text-editor/look.js.map +1 -0
- package/dist/rich-text-editor/markdown.d.ts +18 -0
- package/dist/rich-text-editor/markdown.d.ts.map +1 -0
- package/dist/rich-text-editor/markdown.js +496 -0
- package/dist/rich-text-editor/markdown.js.map +1 -0
- package/dist/rich-text-editor/nodes.d.ts +135 -0
- package/dist/rich-text-editor/nodes.d.ts.map +1 -0
- package/dist/rich-text-editor/nodes.js +397 -0
- package/dist/rich-text-editor/nodes.js.map +1 -0
- package/dist/rich-text-editor/render.d.ts +68 -0
- package/dist/rich-text-editor/render.d.ts.map +1 -0
- package/dist/rich-text-editor/render.js +500 -0
- package/dist/rich-text-editor/render.js.map +1 -0
- package/dist/rich-text-editor/schema.d.ts +16 -0
- package/dist/rich-text-editor/schema.d.ts.map +1 -0
- package/dist/rich-text-editor/schema.js +386 -0
- package/dist/rich-text-editor/schema.js.map +1 -0
- package/dist/rich-text-editor/store.d.ts +11 -0
- package/dist/rich-text-editor/store.d.ts.map +1 -0
- package/dist/rich-text-editor/store.js +43 -0
- package/dist/rich-text-editor/store.js.map +1 -0
- package/dist/rich-text-editor/suggest.d.ts +127 -0
- package/dist/rich-text-editor/suggest.d.ts.map +1 -0
- package/dist/rich-text-editor/suggest.js +0 -0
- package/dist/rich-text-editor/suggest.js.map +1 -0
- package/dist/rich-text-editor/tables.d.ts +41 -0
- package/dist/rich-text-editor/tables.d.ts.map +1 -0
- package/dist/rich-text-editor/tables.js +204 -0
- package/dist/rich-text-editor/tables.js.map +1 -0
- package/dist/rich-text-editor/toolbar.d.ts +58 -0
- package/dist/rich-text-editor/toolbar.d.ts.map +1 -0
- package/dist/rich-text-editor/toolbar.js +548 -0
- package/dist/rich-text-editor/toolbar.js.map +1 -0
- package/dist/rich-text-editor/view.d.ts +368 -0
- package/dist/rich-text-editor/view.d.ts.map +1 -0
- package/dist/rich-text-editor/view.js +1968 -0
- package/dist/rich-text-editor/view.js.map +1 -0
- package/dist/rich-text-editor/virtual.d.ts +54 -0
- package/dist/rich-text-editor/virtual.d.ts.map +1 -0
- package/dist/rich-text-editor/virtual.js +262 -0
- package/dist/rich-text-editor/virtual.js.map +1 -0
- package/dist/richtext/node.d.ts +25 -2
- package/dist/richtext/node.d.ts.map +1 -1
- package/dist/richtext/node.js +46 -24
- package/dist/richtext/node.js.map +1 -1
- package/dist/terminal/backends.d.ts +4 -1
- package/dist/terminal/backends.d.ts.map +1 -1
- package/dist/terminal/backends.js.map +1 -1
- package/dist/terminal/index.d.ts +18 -7
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js +28 -11
- package/dist/terminal/index.js.map +1 -1
- package/package.json +23 -4
- package/src/charts/node.ts +6 -2
- package/src/embed/client.ts +102 -8
- package/src/embed/index.ts +2 -0
- package/src/html/node.ts +7 -5
- package/src/index.ts +2 -0
- package/src/{markdown → internal/markdown}/ast.ts +24 -7
- package/src/{markdown → internal/markdown}/parse.ts +134 -24
- package/src/internal/markdown/stringify.ts +772 -0
- package/src/internal/scroll.ts +5 -3
- package/src/maps/anchors.ts +607 -0
- package/src/maps/controller.ts +999 -0
- package/src/maps/gl/buckets.ts +457 -0
- package/src/maps/gl/build-worker.ts +55 -0
- package/src/maps/gl/color.ts +62 -0
- package/src/maps/gl/cover.ts +170 -0
- package/src/maps/gl/index.ts +23 -0
- package/src/maps/gl/markers.ts +83 -0
- package/src/maps/gl/overlays.ts +379 -0
- package/src/maps/gl/pane.ts +42 -0
- package/src/maps/gl/placement.ts +816 -0
- package/src/maps/gl/renderer.ts +1576 -0
- package/src/maps/gl/shaders.ts +486 -0
- package/src/maps/gl/store.ts +566 -0
- package/src/maps/gl/text.ts +495 -0
- package/src/maps/gl/view.ts +1224 -0
- package/src/maps/index.ts +270 -81
- package/src/maps/labels.ts +214 -121
- package/src/maps/node.ts +763 -629
- package/src/maps/overlay.ts +148 -43
- package/src/maps/paint.ts +3 -0
- package/src/maps/proj.ts +31 -0
- package/src/maps/renderer.ts +155 -0
- package/src/maps/sources.ts +38 -3
- package/src/maps/theme.ts +51 -0
- package/src/maps/tiles.ts +191 -33
- package/src/maps/types.ts +188 -20
- package/src/markdown/expressions.ts +5 -1
- package/src/markdown/index.ts +14 -11
- package/src/markdown/spans.ts +1 -1
- package/src/media-player/index.ts +18 -4
- package/src/rich-text-editor/clipboard.ts +439 -0
- package/src/rich-text-editor/collab.ts +91 -0
- package/src/rich-text-editor/commands.ts +448 -0
- package/src/rich-text-editor/dom-globals.d.ts +23 -0
- package/src/rich-text-editor/drag.ts +211 -0
- package/src/rich-text-editor/html.ts +619 -0
- package/src/rich-text-editor/index.ts +1331 -0
- package/src/rich-text-editor/inline.ts +345 -0
- package/src/rich-text-editor/keymap.ts +510 -0
- package/src/rich-text-editor/keys.ts +119 -0
- package/src/rich-text-editor/look.ts +427 -0
- package/src/rich-text-editor/markdown.ts +653 -0
- package/src/rich-text-editor/nodes.ts +497 -0
- package/src/rich-text-editor/render.ts +800 -0
- package/src/rich-text-editor/schema.ts +431 -0
- package/src/rich-text-editor/store.ts +39 -0
- package/src/rich-text-editor/suggest.ts +597 -0
- package/src/rich-text-editor/tables.ts +272 -0
- package/src/rich-text-editor/toolbar.ts +724 -0
- package/src/rich-text-editor/view.ts +2287 -0
- package/src/rich-text-editor/virtual.ts +347 -0
- package/src/richtext/node.ts +59 -30
- package/src/terminal/backends.ts +4 -1
- package/src/terminal/index.ts +43 -15
- package/dist/markdown/ast.d.ts.map +0 -1
- package/dist/markdown/ast.js +0 -17
- package/dist/markdown/ast.js.map +0 -1
- package/dist/markdown/parse.d.ts.map +0 -1
- package/dist/markdown/parse.js.map +0 -1
- package/dist/markdown/tags.d.ts.map +0 -1
- package/dist/markdown/tags.js.map +0 -1
- /package/dist/{markdown → internal/markdown}/parse.d.ts +0 -0
- /package/dist/{markdown → internal/markdown}/tags.d.ts +0 -0
- /package/dist/{markdown → internal/markdown}/tags.js +0 -0
- /package/src/{markdown → internal/markdown}/tags.ts +0 -0
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
// The document the editor edits when the app does not bring one: GitHub-
|
|
2
|
+
// flavoured markdown, written in ProseMirror's reference vocabulary.
|
|
3
|
+
//
|
|
4
|
+
// The node and mark names are prosemirror-schema-basic's and
|
|
5
|
+
// prosemirror-schema-list's, with prosemirror-markdown's attributes (`order`,
|
|
6
|
+
// `tight`, `params`) — so a command, an input rule or a plugin written
|
|
7
|
+
// against the reference schema works on this one unchanged. What GFM adds is
|
|
8
|
+
// named the way the ecosystem already names it: `strike`, a `checked`
|
|
9
|
+
// attribute on `list_item` for task items, and table nodes whose `tableRole`s
|
|
10
|
+
// and cell attributes are prosemirror-tables' own, so that package's commands
|
|
11
|
+
// can be pointed at a document of this schema.
|
|
12
|
+
//
|
|
13
|
+
// `parseDOM`/`toDOM` are not decoration either. They are how HTML comes in
|
|
14
|
+
// (a paste from a browser, `format="html"`) and goes out (a copy another
|
|
15
|
+
// application can read, `format="html"`), through ProseMirror's own
|
|
16
|
+
// DOMParser and DOMSerializer over the DOM-shaped shim in `./html.ts`. The
|
|
17
|
+
// editor does not *draw* from them — `./render.ts` does that — except for a
|
|
18
|
+
// node or mark of an app's schema that nothing more specific describes,
|
|
19
|
+
// where `toDOM`'s tag is read as a statement of what the node is.
|
|
20
|
+
import { Schema } from 'prosemirror-model';
|
|
21
|
+
function el(dom) {
|
|
22
|
+
return dom;
|
|
23
|
+
}
|
|
24
|
+
/** `language-js` on a `<pre>` or the `<code>` in it: how every HTML
|
|
25
|
+
* highlighter marks a block's language. */
|
|
26
|
+
function fenceParams(dom) {
|
|
27
|
+
const own = dom.getAttribute('data-params');
|
|
28
|
+
if (own != null)
|
|
29
|
+
return own;
|
|
30
|
+
const classes = [dom.getAttribute('class') ?? ''];
|
|
31
|
+
for (const child of Array.from(dom.childNodes)) {
|
|
32
|
+
if (child.nodeName === 'CODE')
|
|
33
|
+
classes.push(child.getAttribute('class') ?? '');
|
|
34
|
+
}
|
|
35
|
+
for (const cls of classes) {
|
|
36
|
+
const m = /(?:^|\s)(?:language|lang)-(\S+)/.exec(cls);
|
|
37
|
+
if (m)
|
|
38
|
+
return m[1];
|
|
39
|
+
}
|
|
40
|
+
return '';
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* A GFM task item's state, from the HTML GitHub renders one as: a disabled
|
|
44
|
+
* checkbox as the item's first content, directly or inside its first
|
|
45
|
+
* paragraph. `data-checked` is what this schema writes itself. Only the item's
|
|
46
|
+
* own box counts — a nested list's checkboxes are its items' business.
|
|
47
|
+
*/
|
|
48
|
+
function taskState(dom) {
|
|
49
|
+
const flag = dom.getAttribute('data-checked');
|
|
50
|
+
if (flag === 'true')
|
|
51
|
+
return true;
|
|
52
|
+
if (flag === 'false')
|
|
53
|
+
return false;
|
|
54
|
+
const kids = Array.from(dom.childNodes);
|
|
55
|
+
const first = kids.find((k) => k.nodeName !== '#text') ?? null;
|
|
56
|
+
const candidates = first
|
|
57
|
+
? [first, ...(first.nodeName === 'P' ? Array.from(first.childNodes) : [])]
|
|
58
|
+
: [];
|
|
59
|
+
for (const node of candidates) {
|
|
60
|
+
if (node.nodeName === 'INPUT' &&
|
|
61
|
+
(node.getAttribute('type') ?? '').toLowerCase() === 'checkbox') {
|
|
62
|
+
return node.hasAttribute('checked');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
function alignOf(value) {
|
|
68
|
+
const v = (value ?? '').trim().toLowerCase();
|
|
69
|
+
return v === 'left' || v === 'center' || v === 'right' ? v : null;
|
|
70
|
+
}
|
|
71
|
+
/** prosemirror-tables' cell attributes, plus GFM's column alignment. */
|
|
72
|
+
const cellAttrs = {
|
|
73
|
+
colspan: { default: 1 },
|
|
74
|
+
rowspan: { default: 1 },
|
|
75
|
+
colwidth: { default: null },
|
|
76
|
+
align: { default: null },
|
|
77
|
+
};
|
|
78
|
+
function getCellAttrs(dom) {
|
|
79
|
+
const e = el(dom);
|
|
80
|
+
const widthAttr = e.getAttribute('data-colwidth');
|
|
81
|
+
const colspan = Number(e.getAttribute('colspan') || 1);
|
|
82
|
+
const widths = widthAttr && /^\d+(,\d+)*$/.test(widthAttr)
|
|
83
|
+
? widthAttr.split(',').map(Number)
|
|
84
|
+
: null;
|
|
85
|
+
return {
|
|
86
|
+
colspan,
|
|
87
|
+
rowspan: Number(e.getAttribute('rowspan') || 1),
|
|
88
|
+
colwidth: widths && widths.length === colspan ? widths : null,
|
|
89
|
+
align: alignOf(e.getAttribute('align') ?? e.style?.textAlign),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function setCellAttrs(node) {
|
|
93
|
+
const attrs = {};
|
|
94
|
+
if (node.attrs.colspan !== 1)
|
|
95
|
+
attrs.colspan = String(node.attrs.colspan);
|
|
96
|
+
if (node.attrs.rowspan !== 1)
|
|
97
|
+
attrs.rowspan = String(node.attrs.rowspan);
|
|
98
|
+
if (node.attrs.colwidth) {
|
|
99
|
+
attrs['data-colwidth'] = node.attrs.colwidth.join(',');
|
|
100
|
+
}
|
|
101
|
+
if (node.attrs.align)
|
|
102
|
+
attrs.style = `text-align: ${node.attrs.align}`;
|
|
103
|
+
return attrs;
|
|
104
|
+
}
|
|
105
|
+
/** The node specs, in the order the schema ranks them. Exported so an app
|
|
106
|
+
* can build on them — `new Schema({ nodes: schema.spec.nodes.addBefore(…),
|
|
107
|
+
* marks: schema.spec.marks })` is ProseMirror's own idiom for that. */
|
|
108
|
+
export const nodes = {
|
|
109
|
+
doc: { content: 'block+' },
|
|
110
|
+
paragraph: {
|
|
111
|
+
content: 'inline*',
|
|
112
|
+
group: 'block',
|
|
113
|
+
parseDOM: [{ tag: 'p' }],
|
|
114
|
+
toDOM: () => ['p', 0],
|
|
115
|
+
},
|
|
116
|
+
blockquote: {
|
|
117
|
+
content: 'block+',
|
|
118
|
+
group: 'block',
|
|
119
|
+
defining: true,
|
|
120
|
+
parseDOM: [{ tag: 'blockquote' }],
|
|
121
|
+
toDOM: () => ['blockquote', 0],
|
|
122
|
+
},
|
|
123
|
+
horizontal_rule: {
|
|
124
|
+
group: 'block',
|
|
125
|
+
parseDOM: [{ tag: 'hr' }],
|
|
126
|
+
toDOM: () => ['hr'],
|
|
127
|
+
},
|
|
128
|
+
heading: {
|
|
129
|
+
attrs: { level: { default: 1, validate: 'number' } },
|
|
130
|
+
content: 'inline*',
|
|
131
|
+
group: 'block',
|
|
132
|
+
defining: true,
|
|
133
|
+
parseDOM: [1, 2, 3, 4, 5, 6].map((level) => ({
|
|
134
|
+
tag: `h${level}`,
|
|
135
|
+
attrs: { level },
|
|
136
|
+
})),
|
|
137
|
+
toDOM: (node) => [`h${node.attrs.level}`, 0],
|
|
138
|
+
},
|
|
139
|
+
code_block: {
|
|
140
|
+
// the whole info string, as prosemirror-markdown keeps it; the language
|
|
141
|
+
// is its first word
|
|
142
|
+
attrs: { params: { default: '', validate: 'string' } },
|
|
143
|
+
content: 'text*',
|
|
144
|
+
marks: '',
|
|
145
|
+
group: 'block',
|
|
146
|
+
code: true,
|
|
147
|
+
defining: true,
|
|
148
|
+
parseDOM: [
|
|
149
|
+
{
|
|
150
|
+
tag: 'pre',
|
|
151
|
+
preserveWhitespace: 'full',
|
|
152
|
+
getAttrs: (dom) => ({ params: fenceParams(el(dom)) }),
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
toDOM: (node) => {
|
|
156
|
+
const params = String(node.attrs.params ?? '');
|
|
157
|
+
const lang = params.split(/\s/, 1)[0];
|
|
158
|
+
return [
|
|
159
|
+
'pre',
|
|
160
|
+
params ? { 'data-params': params } : {},
|
|
161
|
+
['code', lang ? { class: `language-${lang}` } : {}, 0],
|
|
162
|
+
];
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
ordered_list: {
|
|
166
|
+
attrs: {
|
|
167
|
+
order: { default: 1, validate: 'number' },
|
|
168
|
+
tight: { default: true },
|
|
169
|
+
},
|
|
170
|
+
content: 'list_item+',
|
|
171
|
+
group: 'block',
|
|
172
|
+
parseDOM: [
|
|
173
|
+
{
|
|
174
|
+
tag: 'ol',
|
|
175
|
+
getAttrs: (dom) => {
|
|
176
|
+
const e = el(dom);
|
|
177
|
+
return {
|
|
178
|
+
order: e.hasAttribute('start')
|
|
179
|
+
? Number(e.getAttribute('start'))
|
|
180
|
+
: 1,
|
|
181
|
+
tight: e.getAttribute('data-tight') !== 'false',
|
|
182
|
+
};
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
],
|
|
186
|
+
toDOM: (node) => [
|
|
187
|
+
'ol',
|
|
188
|
+
{
|
|
189
|
+
start: node.attrs.order === 1 ? null : String(node.attrs.order),
|
|
190
|
+
'data-tight': node.attrs.tight ? null : 'false',
|
|
191
|
+
},
|
|
192
|
+
0,
|
|
193
|
+
],
|
|
194
|
+
},
|
|
195
|
+
bullet_list: {
|
|
196
|
+
attrs: { tight: { default: true } },
|
|
197
|
+
content: 'list_item+',
|
|
198
|
+
group: 'block',
|
|
199
|
+
parseDOM: [
|
|
200
|
+
{
|
|
201
|
+
tag: 'ul',
|
|
202
|
+
getAttrs: (dom) => ({
|
|
203
|
+
tight: el(dom).getAttribute('data-tight') !== 'false',
|
|
204
|
+
}),
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
toDOM: (node) => [
|
|
208
|
+
'ul',
|
|
209
|
+
{ 'data-tight': node.attrs.tight ? null : 'false' },
|
|
210
|
+
0,
|
|
211
|
+
],
|
|
212
|
+
},
|
|
213
|
+
list_item: {
|
|
214
|
+
// `null` for a plain item; `true`/`false` is a GFM task item
|
|
215
|
+
attrs: { checked: { default: null } },
|
|
216
|
+
content: 'paragraph block*',
|
|
217
|
+
defining: true,
|
|
218
|
+
parseDOM: [
|
|
219
|
+
{ tag: 'li', getAttrs: (dom) => ({ checked: taskState(el(dom)) }) },
|
|
220
|
+
],
|
|
221
|
+
toDOM: (node) => node.attrs.checked == null
|
|
222
|
+
? ['li', 0]
|
|
223
|
+
: [
|
|
224
|
+
'li',
|
|
225
|
+
{
|
|
226
|
+
class: 'task-list-item',
|
|
227
|
+
'data-checked': String(node.attrs.checked),
|
|
228
|
+
},
|
|
229
|
+
[
|
|
230
|
+
'input',
|
|
231
|
+
{
|
|
232
|
+
type: 'checkbox',
|
|
233
|
+
disabled: '',
|
|
234
|
+
checked: node.attrs.checked ? '' : null,
|
|
235
|
+
},
|
|
236
|
+
],
|
|
237
|
+
['div', 0],
|
|
238
|
+
],
|
|
239
|
+
},
|
|
240
|
+
table: {
|
|
241
|
+
content: 'table_row+',
|
|
242
|
+
tableRole: 'table',
|
|
243
|
+
isolating: true,
|
|
244
|
+
group: 'block',
|
|
245
|
+
parseDOM: [{ tag: 'table' }],
|
|
246
|
+
toDOM: () => ['table', ['tbody', 0]],
|
|
247
|
+
},
|
|
248
|
+
table_row: {
|
|
249
|
+
content: '(table_cell | table_header)*',
|
|
250
|
+
tableRole: 'row',
|
|
251
|
+
parseDOM: [{ tag: 'tr' }],
|
|
252
|
+
toDOM: () => ['tr', 0],
|
|
253
|
+
},
|
|
254
|
+
table_cell: {
|
|
255
|
+
// GFM cells hold a line of inline content, not blocks: each cell is a
|
|
256
|
+
// textblock, which is what makes a table typable with nothing special
|
|
257
|
+
content: 'inline*',
|
|
258
|
+
attrs: cellAttrs,
|
|
259
|
+
tableRole: 'cell',
|
|
260
|
+
isolating: true,
|
|
261
|
+
parseDOM: [{ tag: 'td', getAttrs: getCellAttrs }],
|
|
262
|
+
toDOM: (node) => ['td', setCellAttrs(node), 0],
|
|
263
|
+
},
|
|
264
|
+
table_header: {
|
|
265
|
+
content: 'inline*',
|
|
266
|
+
attrs: cellAttrs,
|
|
267
|
+
tableRole: 'header_cell',
|
|
268
|
+
isolating: true,
|
|
269
|
+
parseDOM: [{ tag: 'th', getAttrs: getCellAttrs }],
|
|
270
|
+
toDOM: (node) => ['th', setCellAttrs(node), 0],
|
|
271
|
+
},
|
|
272
|
+
text: { group: 'inline' },
|
|
273
|
+
image: {
|
|
274
|
+
inline: true,
|
|
275
|
+
attrs: {
|
|
276
|
+
src: { validate: 'string' },
|
|
277
|
+
alt: { default: null },
|
|
278
|
+
title: { default: null },
|
|
279
|
+
},
|
|
280
|
+
group: 'inline',
|
|
281
|
+
draggable: true,
|
|
282
|
+
parseDOM: [
|
|
283
|
+
{
|
|
284
|
+
tag: 'img[src]',
|
|
285
|
+
getAttrs: (dom) => {
|
|
286
|
+
const e = el(dom);
|
|
287
|
+
return {
|
|
288
|
+
src: e.getAttribute('src'),
|
|
289
|
+
title: e.getAttribute('title'),
|
|
290
|
+
alt: e.getAttribute('alt'),
|
|
291
|
+
};
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
],
|
|
295
|
+
toDOM: (node) => {
|
|
296
|
+
const { src, alt, title } = node.attrs;
|
|
297
|
+
return ['img', { src, alt, title }];
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
hard_break: {
|
|
301
|
+
inline: true,
|
|
302
|
+
group: 'inline',
|
|
303
|
+
selectable: false,
|
|
304
|
+
parseDOM: [{ tag: 'br' }],
|
|
305
|
+
toDOM: () => ['br'],
|
|
306
|
+
},
|
|
307
|
+
};
|
|
308
|
+
/** The mark specs. Order is rank: a mark earlier here wraps a later one when
|
|
309
|
+
* both cover the same text, which is what puts `code` innermost. */
|
|
310
|
+
export const marks = {
|
|
311
|
+
link: {
|
|
312
|
+
attrs: {
|
|
313
|
+
href: { validate: 'string' },
|
|
314
|
+
title: { default: null },
|
|
315
|
+
},
|
|
316
|
+
// typing at the end of a link continues the text, not the link
|
|
317
|
+
inclusive: false,
|
|
318
|
+
parseDOM: [
|
|
319
|
+
{
|
|
320
|
+
tag: 'a[href]',
|
|
321
|
+
getAttrs: (dom) => {
|
|
322
|
+
const e = el(dom);
|
|
323
|
+
return {
|
|
324
|
+
href: e.getAttribute('href'),
|
|
325
|
+
title: e.getAttribute('title'),
|
|
326
|
+
};
|
|
327
|
+
},
|
|
328
|
+
},
|
|
329
|
+
],
|
|
330
|
+
toDOM: (mark) => [
|
|
331
|
+
'a',
|
|
332
|
+
{ href: mark.attrs.href, title: mark.attrs.title },
|
|
333
|
+
0,
|
|
334
|
+
],
|
|
335
|
+
},
|
|
336
|
+
em: {
|
|
337
|
+
parseDOM: [
|
|
338
|
+
{ tag: 'i' },
|
|
339
|
+
{ tag: 'em' },
|
|
340
|
+
{ style: 'font-style=italic' },
|
|
341
|
+
{ style: 'font-style=normal', clearMark: (m) => m.type.name === 'em' },
|
|
342
|
+
],
|
|
343
|
+
toDOM: () => ['em', 0],
|
|
344
|
+
},
|
|
345
|
+
strong: {
|
|
346
|
+
parseDOM: [
|
|
347
|
+
{ tag: 'strong' },
|
|
348
|
+
// Google Docs wraps a whole paste in `<b style="font-weight: normal">`
|
|
349
|
+
{
|
|
350
|
+
tag: 'b',
|
|
351
|
+
getAttrs: (dom) => el(dom).style?.fontWeight !== 'normal' && null,
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
style: 'font-weight=400',
|
|
355
|
+
clearMark: (m) => m.type.name === 'strong',
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
style: 'font-weight',
|
|
359
|
+
getAttrs: (value) => /^(bold(er)?|[5-9]\d{2,})$/.test(value) && null,
|
|
360
|
+
},
|
|
361
|
+
],
|
|
362
|
+
toDOM: () => ['strong', 0],
|
|
363
|
+
},
|
|
364
|
+
strike: {
|
|
365
|
+
parseDOM: [
|
|
366
|
+
{ tag: 's' },
|
|
367
|
+
{ tag: 'del' },
|
|
368
|
+
{ tag: 'strike' },
|
|
369
|
+
{ style: 'text-decoration=line-through' },
|
|
370
|
+
{ style: 'text-decoration-line=line-through' },
|
|
371
|
+
],
|
|
372
|
+
toDOM: () => ['s', 0],
|
|
373
|
+
},
|
|
374
|
+
code: {
|
|
375
|
+
code: true,
|
|
376
|
+
parseDOM: [{ tag: 'code' }],
|
|
377
|
+
toDOM: () => ['code', 0],
|
|
378
|
+
},
|
|
379
|
+
};
|
|
380
|
+
/**
|
|
381
|
+
* The default schema: GFM — paragraphs, six heading levels, quotes, fenced
|
|
382
|
+
* code, rules, bullet/ordered/task lists, tables, images, hard breaks; bold,
|
|
383
|
+
* italic, strikethrough, inline code and links.
|
|
384
|
+
*/
|
|
385
|
+
export const schema = new Schema({ nodes, marks });
|
|
386
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/rich-text-editor/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class KeyedStore<T> {
|
|
2
|
+
private values;
|
|
3
|
+
private listeners;
|
|
4
|
+
get(key: string): T | undefined;
|
|
5
|
+
/** Set, or with `undefined` clear, one key's value. Identical values are
|
|
6
|
+
* not news: nothing is told. */
|
|
7
|
+
set(key: string, value: T | undefined): void;
|
|
8
|
+
keys(): IterableIterator<string>;
|
|
9
|
+
subscribe(key: string, fn: () => void): () => void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/rich-text-editor/store.ts"],"names":[],"mappings":"AAOA,qBAAa,UAAU,CAAC,CAAC;IACvB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,SAAS,CAAsC;IAEvD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAE9B;IAED;qCACiC;IACjC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAM3C;IAED,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAE/B;IAED,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAQjD;CACF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// A value per block, with a subscription per block.
|
|
2
|
+
//
|
|
3
|
+
// What lets a decoration, or a node selection, repaint the one block it is
|
|
4
|
+
// on: the block's component subscribes to its own key (React's
|
|
5
|
+
// `useSyncExternalStore`), so a plugin lighting up a search match re-renders
|
|
6
|
+
// that paragraph — not the document, and not the chain of memoized blocks
|
|
7
|
+
// between the document and the paragraph, which would each have to be told.
|
|
8
|
+
export class KeyedStore {
|
|
9
|
+
values = new Map();
|
|
10
|
+
listeners = new Map();
|
|
11
|
+
get(key) {
|
|
12
|
+
return this.values.get(key);
|
|
13
|
+
}
|
|
14
|
+
/** Set, or with `undefined` clear, one key's value. Identical values are
|
|
15
|
+
* not news: nothing is told. */
|
|
16
|
+
set(key, value) {
|
|
17
|
+
if (Object.is(this.values.get(key), value))
|
|
18
|
+
return;
|
|
19
|
+
if (value === undefined)
|
|
20
|
+
this.values.delete(key);
|
|
21
|
+
else
|
|
22
|
+
this.values.set(key, value);
|
|
23
|
+
const set = this.listeners.get(key);
|
|
24
|
+
if (set)
|
|
25
|
+
for (const fn of [...set])
|
|
26
|
+
fn();
|
|
27
|
+
}
|
|
28
|
+
keys() {
|
|
29
|
+
return this.values.keys();
|
|
30
|
+
}
|
|
31
|
+
subscribe(key, fn) {
|
|
32
|
+
let set = this.listeners.get(key);
|
|
33
|
+
if (!set)
|
|
34
|
+
this.listeners.set(key, (set = new Set()));
|
|
35
|
+
set.add(fn);
|
|
36
|
+
return () => {
|
|
37
|
+
set.delete(fn);
|
|
38
|
+
if (set.size === 0)
|
|
39
|
+
this.listeners.delete(key);
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/rich-text-editor/store.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,+DAA+D;AAC/D,6EAA6E;AAC7E,0EAA0E;AAC1E,4EAA4E;AAC5E,MAAM,OAAO,UAAU;IACb,MAAM,GAAG,IAAI,GAAG,EAAa,CAAC;IAC9B,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEvD,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;qCACiC;IACjC,GAAG,CAAC,GAAW,EAAE,KAAoB;QACnC,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO;QACnD,IAAI,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;YAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,GAAG;YAAE,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;gBAAE,EAAE,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,EAAc;QACnC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;QACrD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACf,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { Node as PMNode } from 'prosemirror-model';
|
|
3
|
+
import { Plugin } from 'prosemirror-state';
|
|
4
|
+
import type { Command, EditorState } from 'prosemirror-state';
|
|
5
|
+
/** One row of a suggestion list. */
|
|
6
|
+
export interface SuggestionItem {
|
|
7
|
+
/** What the row shows — and, in a list the editor filters, what the query
|
|
8
|
+
* is matched against. */
|
|
9
|
+
label: string;
|
|
10
|
+
/** Muted text after the label: a handle, a description, a shortcut. */
|
|
11
|
+
detail?: string;
|
|
12
|
+
/**
|
|
13
|
+
* What replaces the trigger and the query: text, or a node of the
|
|
14
|
+
* document's schema — text carrying a link mark, say, or a mention node of
|
|
15
|
+
* an app's own schema. Default: the trigger and the label, `@Ada`. A space
|
|
16
|
+
* follows it, unless one already does.
|
|
17
|
+
*/
|
|
18
|
+
insert?: string | PMNode;
|
|
19
|
+
/**
|
|
20
|
+
* Run instead of inserting anything, on the state the trigger and the
|
|
21
|
+
* query have been deleted from — a block menu's "Heading 1". What it
|
|
22
|
+
* dispatches joins the deletion, so the choice is one undo step.
|
|
23
|
+
*/
|
|
24
|
+
command?: Command;
|
|
25
|
+
}
|
|
26
|
+
/** What a suggester's `items` function is asked with. */
|
|
27
|
+
export interface SuggestionQuery {
|
|
28
|
+
/** What has been typed after the trigger. */
|
|
29
|
+
query: string;
|
|
30
|
+
/** The trigger. */
|
|
31
|
+
char: string;
|
|
32
|
+
/** The state the query was read from — for its schema, to build a node. */
|
|
33
|
+
state: EditorState;
|
|
34
|
+
}
|
|
35
|
+
/** What `renderItem` is handed beside its row. */
|
|
36
|
+
export interface SuggestionRow {
|
|
37
|
+
/** The highlighted row — the one Enter takes — drawn on the accent. */
|
|
38
|
+
selected: boolean;
|
|
39
|
+
/** What has been typed after the trigger. */
|
|
40
|
+
query: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* A trigger character, and where the rows it opens come from. `Item` is the
|
|
44
|
+
* app's own row type when a row carries more than a label — an avatar, a
|
|
45
|
+
* presence — for `renderItem` to draw.
|
|
46
|
+
*/
|
|
47
|
+
export interface Suggester<Item extends SuggestionItem = SuggestionItem> {
|
|
48
|
+
/** What opens the list: `'@'`, `'#'`, `':'`, `'/'`. */
|
|
49
|
+
char: string;
|
|
50
|
+
/**
|
|
51
|
+
* The rows. An array is filtered by what has been typed — labels that
|
|
52
|
+
* start with it first, then labels with a word that does, then any that
|
|
53
|
+
* contain it. A function is called with each new query and its rows are
|
|
54
|
+
* shown as given; it may answer with a promise, and an answer that comes
|
|
55
|
+
* after the query has moved on is dropped.
|
|
56
|
+
*/
|
|
57
|
+
items: readonly Item[] | ((query: SuggestionQuery) => readonly Item[] | Promise<readonly Item[]>);
|
|
58
|
+
/**
|
|
59
|
+
* A row of the app's own, in place of the label and its detail: an avatar,
|
|
60
|
+
* a presence dot, a shortcut drawn as keys. The editor still draws the
|
|
61
|
+
* highlight behind it and takes a press on it, and an array is still
|
|
62
|
+
* filtered on the label.
|
|
63
|
+
*/
|
|
64
|
+
renderItem?(item: Item, row: SuggestionRow): ReactNode;
|
|
65
|
+
/** Only at the very start of a textblock — a block menu. Default false:
|
|
66
|
+
* at the start of any word. */
|
|
67
|
+
startOfLine?: boolean;
|
|
68
|
+
/** The query may have spaces in it — a full name. Default false: a space
|
|
69
|
+
* ends it. Two spaces in a row end it either way. */
|
|
70
|
+
allowSpaces?: boolean;
|
|
71
|
+
}
|
|
72
|
+
/** An open list — what `suggestionState` answers and the component draws. */
|
|
73
|
+
export interface SuggestionState {
|
|
74
|
+
/** Which suggester opened it: an index into the plugin's list. */
|
|
75
|
+
readonly index: number;
|
|
76
|
+
readonly char: string;
|
|
77
|
+
/** What has been typed after the trigger — the whole word the caret is
|
|
78
|
+
* in, so a row taken mid-word replaces all of it. */
|
|
79
|
+
readonly query: string;
|
|
80
|
+
/** The trigger and the query, in the document: what a row replaces. */
|
|
81
|
+
readonly from: number;
|
|
82
|
+
readonly to: number;
|
|
83
|
+
/** The rows — null until the first answer comes. */
|
|
84
|
+
readonly items: readonly SuggestionItem[] | null;
|
|
85
|
+
/** The highlighted row. */
|
|
86
|
+
readonly selected: number;
|
|
87
|
+
}
|
|
88
|
+
/** Rows to a page: PageUp and PageDown move by it, and the list shows it. */
|
|
89
|
+
export declare const SUGGESTION_PAGE = 8;
|
|
90
|
+
/**
|
|
91
|
+
* A list, by what has been typed: labels that start with it (as typed, then
|
|
92
|
+
* in any case), then labels with a later word that does, then labels that
|
|
93
|
+
* merely contain it — in the list's own order within each. What the editor
|
|
94
|
+
* does with a suggester whose `items` is an array; exported for an app that
|
|
95
|
+
* filters its own.
|
|
96
|
+
*/
|
|
97
|
+
export declare function filterSuggestions<Item extends SuggestionItem>(items: readonly Item[], query: string): Item[];
|
|
98
|
+
/** The open list, or null — what `<RichTextEditor>` draws its popup from,
|
|
99
|
+
* and what an app drawing its own reads. */
|
|
100
|
+
export declare function suggestionState(state: EditorState): SuggestionState | null;
|
|
101
|
+
/** The suggester whose list is open, or null — for its `renderItem`. */
|
|
102
|
+
export declare function suggesterFor(state: EditorState): Suggester | null;
|
|
103
|
+
/** Close the list. It does not open again for this trigger while the
|
|
104
|
+
* trigger is there; typing a new one opens a new list. */
|
|
105
|
+
export declare const dismissSuggestion: Command;
|
|
106
|
+
/** Highlight row `index`, held to the rows there are. */
|
|
107
|
+
export declare function selectSuggestion(index: number): Command;
|
|
108
|
+
/**
|
|
109
|
+
* Take a row — the highlighted one, unless `index` says which. Its `insert`
|
|
110
|
+
* (or the trigger and its label) replaces the trigger and the query, with a
|
|
111
|
+
* space after it; or its `command` runs where they were.
|
|
112
|
+
*/
|
|
113
|
+
export declare function acceptSuggestion(index?: number): Command;
|
|
114
|
+
/**
|
|
115
|
+
* The suggestion plugin — one per editor, holding every trigger. It goes
|
|
116
|
+
* ahead of the default plugins, so its keys come before the keymap's:
|
|
117
|
+
* `<RichTextEditor suggestions>` puts it there itself, and an app that owns
|
|
118
|
+
* the state writes `plugins: [suggestions([…]), ...defaultPlugins(schema)]`.
|
|
119
|
+
*
|
|
120
|
+
* `suggesters` may be a function that returns them, read whenever they are
|
|
121
|
+
* needed — how the component hands over a prop that may be a new array on
|
|
122
|
+
* every render without the plugin, and the list that is open, being rebuilt.
|
|
123
|
+
* While a trigger's word is being typed its text carries the decoration
|
|
124
|
+
* class `suggestion`, which the editor draws in the accent colour.
|
|
125
|
+
*/
|
|
126
|
+
export declare function suggestions(suggesters: readonly Suggester[] | (() => readonly Suggester[])): Plugin;
|
|
127
|
+
//# sourceMappingURL=suggest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../src/rich-text-editor/suggest.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../src/rich-text-editor/suggest.ts"],"names":[],"mappings":"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"}
|