@dxos/react-ui-editor 0.3.11-main.3f845e1 → 0.3.11-main.5a4849d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/index.mjs +197 -163
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts +0 -3
- package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TextEditor/TextEditor.d.ts +2 -2
- package/dist/types/src/components/TextEditor/TextEditor.d.ts.map +1 -1
- package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts +3 -0
- package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TextEditor/index.d.ts +0 -2
- package/dist/types/src/components/TextEditor/index.d.ts.map +1 -1
- package/dist/types/src/extensions/autocomplete.d.ts.map +1 -0
- package/dist/types/src/extensions/basic.d.ts.map +1 -0
- package/dist/types/src/extensions/blast.d.ts.map +1 -0
- package/dist/types/src/extensions/code.d.ts.map +1 -0
- package/dist/types/src/{components/TextEditor/extensions → extensions}/comments.d.ts +4 -2
- package/dist/types/src/extensions/comments.d.ts.map +1 -0
- package/dist/types/src/extensions/hr.d.ts.map +1 -0
- package/dist/types/src/extensions/image.d.ts.map +1 -0
- package/dist/types/src/{components/TextEditor/extensions → extensions}/index.d.ts +0 -1
- package/dist/types/src/extensions/index.d.ts.map +1 -0
- package/dist/types/src/{components/TextEditor/extensions → extensions}/link.d.ts +1 -0
- package/dist/types/src/extensions/link.d.ts.map +1 -0
- package/dist/types/src/extensions/listener.d.ts +10 -0
- package/dist/types/src/extensions/listener.d.ts.map +1 -0
- package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -0
- package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -0
- package/dist/types/src/extensions/markdown/index.d.ts.map +1 -0
- package/dist/types/src/extensions/mention.d.ts.map +1 -0
- package/dist/types/src/extensions/mermaid.d.ts.map +1 -0
- package/dist/types/src/extensions/table.d.ts.map +1 -0
- package/dist/types/src/extensions/tasklist.d.ts.map +1 -0
- package/dist/types/src/extensions/typewriter.d.ts.map +1 -0
- package/dist/types/src/extensions/util.d.ts.map +1 -0
- package/dist/types/src/hooks/automerge/plugin.d.ts.map +1 -1
- package/dist/types/src/hooks/useTextModel.d.ts +1 -1
- package/dist/types/src/hooks/useTextModel.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/{components/TextEditor/themes → themes}/default.d.ts +1 -1
- package/dist/types/src/themes/default.d.ts.map +1 -0
- package/dist/types/src/themes/index.d.ts.map +1 -0
- package/package.json +21 -21
- package/src/components/TextEditor/MarkdownEditor.stories.tsx +11 -13
- package/src/components/TextEditor/TextEditor.stories.tsx +14 -1
- package/src/components/TextEditor/TextEditor.tsx +6 -6
- package/src/components/TextEditor/index.ts +0 -3
- package/src/{components/TextEditor/extensions → extensions}/code.ts +1 -1
- package/src/{components/TextEditor/extensions → extensions}/comments.ts +27 -10
- package/src/{components/TextEditor/extensions → extensions}/hr.ts +1 -1
- package/src/{components/TextEditor/extensions → extensions}/index.ts +0 -1
- package/src/{components/TextEditor/extensions → extensions}/link.ts +66 -10
- package/src/extensions/listener.ts +35 -0
- package/src/{components/TextEditor/extensions → extensions}/markdown/highlight.ts +1 -1
- package/src/{components/TextEditor/extensions → extensions}/typewriter.ts +1 -1
- package/src/hooks/automerge/plugin.ts +3 -5
- package/src/hooks/useTextModel.ts +5 -4
- package/src/index.ts +2 -0
- package/src/{components/TextEditor/themes → themes}/default.ts +1 -1
- package/dist/types/src/components/TextEditor/extensions/autocomplete.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/basic.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/blast.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/code.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/comments.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/hr.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/image.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/index.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/link.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/listener.d.ts +0 -9
- package/dist/types/src/components/TextEditor/extensions/listener.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/markdown/bundle.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/markdown/highlight.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/markdown/index.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/mention.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/mermaid.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/table.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/tasklist.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/tooltip.d.ts +0 -12
- package/dist/types/src/components/TextEditor/extensions/tooltip.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/typewriter.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/extensions/util.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/themes/default.d.ts.map +0 -1
- package/dist/types/src/components/TextEditor/themes/index.d.ts.map +0 -1
- package/src/components/TextEditor/extensions/listener.ts +0 -23
- package/src/components/TextEditor/extensions/tooltip.ts +0 -61
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/autocomplete.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/basic.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/blast.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/code.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/hr.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/image.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/markdown/bundle.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/markdown/highlight.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/markdown/index.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/mention.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/mermaid.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/table.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/tasklist.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/typewriter.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/extensions → extensions}/util.d.ts +0 -0
- /package/dist/types/src/{components/TextEditor/themes → themes}/index.d.ts +0 -0
- /package/src/{components/TextEditor/extensions → extensions}/autocomplete.ts +0 -0
- /package/src/{components/TextEditor/extensions → extensions}/basic.ts +0 -0
- /package/src/{components/TextEditor/extensions → extensions}/blast.ts +0 -0
- /package/src/{components/TextEditor/extensions → extensions}/image.ts +0 -0
- /package/src/{components/TextEditor/extensions → extensions}/markdown/bundle.ts +0 -0
- /package/src/{components/TextEditor/extensions → extensions}/markdown/index.ts +0 -0
- /package/src/{components/TextEditor/extensions → extensions}/mention.ts +0 -0
- /package/src/{components/TextEditor/extensions → extensions}/mermaid.ts +0 -0
- /package/src/{components/TextEditor/extensions → extensions}/table.ts +0 -0
- /package/src/{components/TextEditor/extensions → extensions}/tasklist.ts +0 -0
- /package/src/{components/TextEditor/extensions → extensions}/util.ts +0 -0
- /package/src/{components/TextEditor/themes → themes}/index.ts +0 -0
|
@@ -5,7 +5,18 @@ import { Doc, YText, YXmlFragment } from "@dxos/text-model";
|
|
|
5
5
|
// packages/ui/react-ui-editor/src/components/TextEditor/index.ts
|
|
6
6
|
import { tags as tags2 } from "@lezer/highlight";
|
|
7
7
|
|
|
8
|
-
// packages/ui/react-ui-editor/src/components/TextEditor/
|
|
8
|
+
// packages/ui/react-ui-editor/src/components/TextEditor/TextEditor.tsx
|
|
9
|
+
import { EditorState as EditorState2 } from "@codemirror/state";
|
|
10
|
+
import { EditorView as EditorView12 } from "@codemirror/view";
|
|
11
|
+
import { useFocusableGroup } from "@fluentui/react-tabster";
|
|
12
|
+
import { vim } from "@replit/codemirror-vim";
|
|
13
|
+
import defaultsDeep2 from "lodash.defaultsdeep";
|
|
14
|
+
import React, { forwardRef, useCallback, useEffect as useEffect2, useImperativeHandle, useState as useState2 } from "react";
|
|
15
|
+
import { generateName } from "@dxos/display-name";
|
|
16
|
+
import { useThemeContext } from "@dxos/react-ui";
|
|
17
|
+
import { getColorForValue, inputSurface, mx as mx3 } from "@dxos/react-ui-theme";
|
|
18
|
+
|
|
19
|
+
// packages/ui/react-ui-editor/src/extensions/autocomplete.ts
|
|
9
20
|
import { autocompletion, completionKeymap } from "@codemirror/autocomplete";
|
|
10
21
|
import { keymap } from "@codemirror/view";
|
|
11
22
|
var autocomplete = ({ onSearch }) => {
|
|
@@ -38,7 +49,7 @@ var autocomplete = ({ onSearch }) => {
|
|
|
38
49
|
];
|
|
39
50
|
};
|
|
40
51
|
|
|
41
|
-
// packages/ui/react-ui-editor/src/
|
|
52
|
+
// packages/ui/react-ui-editor/src/extensions/basic.ts
|
|
42
53
|
import { closeBrackets } from "@codemirror/autocomplete";
|
|
43
54
|
import { bracketMatching, defaultHighlightStyle, syntaxHighlighting } from "@codemirror/language";
|
|
44
55
|
import { oneDarkHighlightStyle } from "@codemirror/theme-one-dark";
|
|
@@ -55,11 +66,11 @@ var basicBundle = ({ readonly, themeMode, placeholder: _placeholder }) => [
|
|
|
55
66
|
themeMode === "dark" ? syntaxHighlighting(oneDarkHighlightStyle) : syntaxHighlighting(defaultHighlightStyle)
|
|
56
67
|
].filter(Boolean);
|
|
57
68
|
|
|
58
|
-
// packages/ui/react-ui-editor/src/
|
|
69
|
+
// packages/ui/react-ui-editor/src/extensions/blast.ts
|
|
59
70
|
import { EditorView as EditorView2, keymap as keymap2 } from "@codemirror/view";
|
|
60
71
|
import defaultsDeep from "lodash.defaultsdeep";
|
|
61
72
|
import { invariant } from "@dxos/invariant";
|
|
62
|
-
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/
|
|
73
|
+
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/blast.ts";
|
|
63
74
|
var defaultOptions = {
|
|
64
75
|
effect: 2,
|
|
65
76
|
maxParticles: 200,
|
|
@@ -365,7 +376,7 @@ var random = (min, max) => {
|
|
|
365
376
|
return min + ~~(Math.random() * (max - min + 1));
|
|
366
377
|
};
|
|
367
378
|
|
|
368
|
-
// packages/ui/react-ui-editor/src/
|
|
379
|
+
// packages/ui/react-ui-editor/src/extensions/code.ts
|
|
369
380
|
import { ViewPlugin, EditorView as EditorView3, Decoration } from "@codemirror/view";
|
|
370
381
|
import get from "lodash.get";
|
|
371
382
|
import { mx as mx2 } from "@dxos/react-ui-theme";
|
|
@@ -416,7 +427,7 @@ var blockquote = mx("pl-1 mr-1 border-is-4 border-primary-500/70 dark:border-pri
|
|
|
416
427
|
import { tailwindConfig } from "@dxos/react-ui-theme";
|
|
417
428
|
var tokens = tailwindConfig({}).theme;
|
|
418
429
|
|
|
419
|
-
// packages/ui/react-ui-editor/src/
|
|
430
|
+
// packages/ui/react-ui-editor/src/extensions/code.ts
|
|
420
431
|
var CODE_REGEX = /```[\s\S]*?```/gs;
|
|
421
432
|
var styles = EditorView3.baseTheme({
|
|
422
433
|
"& .cm-codeblock": {
|
|
@@ -487,18 +498,19 @@ var code2 = () => {
|
|
|
487
498
|
];
|
|
488
499
|
};
|
|
489
500
|
|
|
490
|
-
// packages/ui/react-ui-editor/src/
|
|
501
|
+
// packages/ui/react-ui-editor/src/extensions/comments.ts
|
|
491
502
|
import { StateEffect as StateEffect2, StateField as StateField3 } from "@codemirror/state";
|
|
492
503
|
import { hoverTooltip, keymap as keymap3, Decoration as Decoration2, EditorView as EditorView4, MatchDecorator, ViewPlugin as ViewPlugin3, WidgetType } from "@codemirror/view";
|
|
504
|
+
import get3 from "lodash.get";
|
|
493
505
|
import sortBy from "lodash.sortby";
|
|
494
506
|
import { debounce } from "@dxos/async";
|
|
495
507
|
import { invariant as invariant3 } from "@dxos/invariant";
|
|
496
508
|
import { log as log3 } from "@dxos/log";
|
|
497
509
|
import { nonNullable } from "@dxos/util";
|
|
498
510
|
|
|
499
|
-
// packages/ui/react-ui-editor/src/
|
|
511
|
+
// packages/ui/react-ui-editor/src/extensions/util.ts
|
|
500
512
|
import { log } from "@dxos/log";
|
|
501
|
-
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/
|
|
513
|
+
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/util.ts";
|
|
502
514
|
var callbackWrapper = (fn) => (...args) => {
|
|
503
515
|
try {
|
|
504
516
|
return fn(...args);
|
|
@@ -743,15 +755,15 @@ var automergePlugin = (handle, path) => {
|
|
|
743
755
|
});
|
|
744
756
|
const semaphore = new PatchSemaphore(stateField);
|
|
745
757
|
const viewPlugin = ViewPlugin2.fromClass(class AutomergeCodemirrorViewPlugin {
|
|
746
|
-
constructor(
|
|
758
|
+
constructor(_view) {
|
|
759
|
+
this._view = _view;
|
|
747
760
|
this._handleChange = () => {
|
|
748
761
|
this._view.state.facet(semaphoreFacet).reconcile(handle, this._view);
|
|
749
762
|
};
|
|
750
|
-
this._view = view;
|
|
751
763
|
handle.addListener("change", this._handleChange);
|
|
752
764
|
}
|
|
753
765
|
update(update4) {
|
|
754
|
-
if (update4.transactions.length > 0 && update4.transactions.some((
|
|
766
|
+
if (update4.transactions.length > 0 && update4.transactions.some((tr) => !isReconcileTx(tr))) {
|
|
755
767
|
queueMicrotask(() => {
|
|
756
768
|
this._view.state.facet(semaphoreFacet).reconcile(handle, this._view);
|
|
757
769
|
});
|
|
@@ -966,13 +978,22 @@ var createYjsModel = ({ identity, space, text }) => {
|
|
|
966
978
|
].join(":");
|
|
967
979
|
},
|
|
968
980
|
getRangeFromCursor: (cursor) => {
|
|
981
|
+
invariant2(text.doc, void 0, {
|
|
982
|
+
F: __dxlog_file4,
|
|
983
|
+
L: 113,
|
|
984
|
+
S: void 0,
|
|
985
|
+
A: [
|
|
986
|
+
"text.doc",
|
|
987
|
+
""
|
|
988
|
+
]
|
|
989
|
+
});
|
|
969
990
|
const parts = cursor.split(":");
|
|
970
991
|
const from = Y.createAbsolutePositionFromRelativePosition(Y.decodeRelativePosition(stringToArray(parts[0])), text.doc);
|
|
971
992
|
const to = Y.createAbsolutePositionFromRelativePosition(Y.decodeRelativePosition(stringToArray(parts[1])), text.doc);
|
|
972
|
-
return {
|
|
993
|
+
return from && to ? {
|
|
973
994
|
from: from.index,
|
|
974
995
|
to: to.index
|
|
975
|
-
};
|
|
996
|
+
} : void 0;
|
|
976
997
|
},
|
|
977
998
|
extension: [
|
|
978
999
|
yCollab(text.content, provider?.awareness),
|
|
@@ -1008,8 +1029,8 @@ var createAutomergeModel = ({ identity, text }) => {
|
|
|
1008
1029
|
return model;
|
|
1009
1030
|
};
|
|
1010
1031
|
|
|
1011
|
-
// packages/ui/react-ui-editor/src/
|
|
1012
|
-
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/
|
|
1032
|
+
// packages/ui/react-ui-editor/src/extensions/comments.ts
|
|
1033
|
+
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/comments.ts";
|
|
1013
1034
|
var styles2 = EditorView4.baseTheme({
|
|
1014
1035
|
"& .cm-bookmark": {
|
|
1015
1036
|
cursor: "pointer",
|
|
@@ -1021,10 +1042,10 @@ var styles2 = EditorView4.baseTheme({
|
|
|
1021
1042
|
backgroundColor: "orange"
|
|
1022
1043
|
},
|
|
1023
1044
|
"& .cm-comment": {
|
|
1024
|
-
backgroundColor: "yellow"
|
|
1045
|
+
backgroundColor: get3(tokens, "extend.colors.yellow.50")
|
|
1025
1046
|
},
|
|
1026
1047
|
"& .cm-comment-active": {
|
|
1027
|
-
backgroundColor: "
|
|
1048
|
+
backgroundColor: get3(tokens, "extend.colors.yellow.100")
|
|
1028
1049
|
}
|
|
1029
1050
|
});
|
|
1030
1051
|
var marks = {
|
|
@@ -1035,6 +1056,21 @@ var marks = {
|
|
|
1035
1056
|
class: "cm-comment-active"
|
|
1036
1057
|
})
|
|
1037
1058
|
};
|
|
1059
|
+
var setFocus = (view, thread) => {
|
|
1060
|
+
const range = view.state.field(commentsStateField).ranges.find((range2) => range2.id === thread);
|
|
1061
|
+
if (!range) {
|
|
1062
|
+
return;
|
|
1063
|
+
}
|
|
1064
|
+
view.dispatch({
|
|
1065
|
+
effects: setSelection.of({
|
|
1066
|
+
active: thread
|
|
1067
|
+
}),
|
|
1068
|
+
selection: {
|
|
1069
|
+
anchor: range.from
|
|
1070
|
+
},
|
|
1071
|
+
scrollIntoView: true
|
|
1072
|
+
});
|
|
1073
|
+
};
|
|
1038
1074
|
var setCommentRange = StateEffect2.define();
|
|
1039
1075
|
var setSelection = StateEffect2.define();
|
|
1040
1076
|
var setCommentState = StateEffect2.define();
|
|
@@ -1054,11 +1090,11 @@ var commentsStateField = StateField3.define({
|
|
|
1054
1090
|
const { model, comments: comments2 } = effect.value;
|
|
1055
1091
|
const ranges = comments2.map((comment) => {
|
|
1056
1092
|
const range = model.getRangeFromCursor(comment.cursor);
|
|
1057
|
-
return {
|
|
1093
|
+
return range && {
|
|
1058
1094
|
...comment,
|
|
1059
1095
|
...range
|
|
1060
1096
|
};
|
|
1061
|
-
});
|
|
1097
|
+
}).filter(nonNullable);
|
|
1062
1098
|
return {
|
|
1063
1099
|
...value,
|
|
1064
1100
|
ranges
|
|
@@ -1099,7 +1135,7 @@ var BookmarkWidget = class extends WidgetType {
|
|
|
1099
1135
|
this._handleClick = _handleClick;
|
|
1100
1136
|
invariant3(this._id, void 0, {
|
|
1101
1137
|
F: __dxlog_file5,
|
|
1102
|
-
L:
|
|
1138
|
+
L: 167,
|
|
1103
1139
|
S: this,
|
|
1104
1140
|
A: [
|
|
1105
1141
|
"this._id",
|
|
@@ -1125,7 +1161,7 @@ var comments = (options = {}) => {
|
|
|
1125
1161
|
const createCommentThread = (view) => {
|
|
1126
1162
|
invariant3(options.onCreate, void 0, {
|
|
1127
1163
|
F: __dxlog_file5,
|
|
1128
|
-
L:
|
|
1164
|
+
L: 221,
|
|
1129
1165
|
S: void 0,
|
|
1130
1166
|
A: [
|
|
1131
1167
|
"options.onCreate",
|
|
@@ -1207,7 +1243,7 @@ var comments = (options = {}) => {
|
|
|
1207
1243
|
options.onCreate ? keymap3.of([
|
|
1208
1244
|
{
|
|
1209
1245
|
key: options?.key ?? "meta-'",
|
|
1210
|
-
run: createCommentThread
|
|
1246
|
+
run: callbackWrapper(createCommentThread)
|
|
1211
1247
|
}
|
|
1212
1248
|
]) : [],
|
|
1213
1249
|
//
|
|
@@ -1251,7 +1287,7 @@ var comments = (options = {}) => {
|
|
|
1251
1287
|
changes.iterChanges((from, to, from2, to2) => {
|
|
1252
1288
|
invariant3(model, void 0, {
|
|
1253
1289
|
F: __dxlog_file5,
|
|
1254
|
-
L:
|
|
1290
|
+
L: 350,
|
|
1255
1291
|
S: void 0,
|
|
1256
1292
|
A: [
|
|
1257
1293
|
"model",
|
|
@@ -1261,12 +1297,12 @@ var comments = (options = {}) => {
|
|
|
1261
1297
|
ranges.forEach((range) => {
|
|
1262
1298
|
if (from2 === to2) {
|
|
1263
1299
|
const newRange = model.getRangeFromCursor(range.cursor);
|
|
1264
|
-
if (newRange.to - newRange.from === 0) {
|
|
1300
|
+
if (!newRange || newRange.to - newRange.from === 0) {
|
|
1265
1301
|
log3.info("deleted comment", {
|
|
1266
1302
|
thread: range.id
|
|
1267
1303
|
}, {
|
|
1268
1304
|
F: __dxlog_file5,
|
|
1269
|
-
L:
|
|
1305
|
+
L: 356,
|
|
1270
1306
|
S: void 0,
|
|
1271
1307
|
C: (f, a) => f(...a)
|
|
1272
1308
|
});
|
|
@@ -1323,14 +1359,14 @@ var comments = (options = {}) => {
|
|
|
1323
1359
|
];
|
|
1324
1360
|
};
|
|
1325
1361
|
|
|
1326
|
-
// packages/ui/react-ui-editor/src/
|
|
1362
|
+
// packages/ui/react-ui-editor/src/extensions/hr.ts
|
|
1327
1363
|
import { Decoration as Decoration3, EditorView as EditorView5, MatchDecorator as MatchDecorator2, ViewPlugin as ViewPlugin4, WidgetType as WidgetType2 } from "@codemirror/view";
|
|
1328
|
-
import
|
|
1364
|
+
import get4 from "lodash.get";
|
|
1329
1365
|
var styles3 = EditorView5.baseTheme({
|
|
1330
1366
|
"& .cm-hr": {
|
|
1331
1367
|
// TODO(burdon): ???
|
|
1332
1368
|
// Note that block-level decorations should not have vertical margins,
|
|
1333
|
-
borderBottom: `1px solid ${
|
|
1369
|
+
borderBottom: `1px solid ${get4(tokens, "extend.colors.neutral.200")}`
|
|
1334
1370
|
}
|
|
1335
1371
|
});
|
|
1336
1372
|
var HorizontalRuleWidget = class extends WidgetType2 {
|
|
@@ -1371,7 +1407,7 @@ var hr = () => [
|
|
|
1371
1407
|
})
|
|
1372
1408
|
];
|
|
1373
1409
|
|
|
1374
|
-
// packages/ui/react-ui-editor/src/
|
|
1410
|
+
// packages/ui/react-ui-editor/src/extensions/image.ts
|
|
1375
1411
|
import { syntaxTree } from "@codemirror/language";
|
|
1376
1412
|
import { RangeSetBuilder, StateField as StateField4 } from "@codemirror/state";
|
|
1377
1413
|
import { Decoration as Decoration4, EditorView as EditorView6, WidgetType as WidgetType3 } from "@codemirror/view";
|
|
@@ -1419,16 +1455,67 @@ var ImageWidget = class extends WidgetType3 {
|
|
|
1419
1455
|
}
|
|
1420
1456
|
};
|
|
1421
1457
|
|
|
1422
|
-
// packages/ui/react-ui-editor/src/
|
|
1458
|
+
// packages/ui/react-ui-editor/src/extensions/link.ts
|
|
1423
1459
|
import { syntaxTree as syntaxTree2 } from "@codemirror/language";
|
|
1424
1460
|
import { RangeSetBuilder as RangeSetBuilder2, StateField as StateField5 } from "@codemirror/state";
|
|
1425
|
-
import { Decoration as Decoration5, EditorView as EditorView7, WidgetType as WidgetType4 } from "@codemirror/view";
|
|
1461
|
+
import { Decoration as Decoration5, EditorView as EditorView7, WidgetType as WidgetType4, hoverTooltip as hoverTooltip2 } from "@codemirror/view";
|
|
1462
|
+
import { tooltipContent } from "@dxos/react-ui-theme";
|
|
1463
|
+
var markdownLinkRegexp = /\[([^\]]+)]\(([^)]+)\)/;
|
|
1426
1464
|
var link = (options = {}) => {
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1465
|
+
const extensions = [
|
|
1466
|
+
StateField5.define({
|
|
1467
|
+
create: (state) => update2(state, options),
|
|
1468
|
+
update: (_, tr) => update2(tr.state, options),
|
|
1469
|
+
provide: (field) => EditorView7.decorations.from(field)
|
|
1470
|
+
})
|
|
1471
|
+
];
|
|
1472
|
+
if (options.onHover) {
|
|
1473
|
+
extensions.push(
|
|
1474
|
+
// https://codemirror.net/examples/tooltip
|
|
1475
|
+
// https://codemirror.net/docs/ref/#view.hoverTooltip
|
|
1476
|
+
// https://github.com/codemirror/view/blob/main/src/tooltip.ts
|
|
1477
|
+
hoverTooltip2((view, pos) => {
|
|
1478
|
+
const { from, text } = view.state.doc.lineAt(pos);
|
|
1479
|
+
const p = pos - from;
|
|
1480
|
+
let idx = 0;
|
|
1481
|
+
let match;
|
|
1482
|
+
do {
|
|
1483
|
+
match = text.substring(idx).match(markdownLinkRegexp);
|
|
1484
|
+
if (!match) {
|
|
1485
|
+
match = void 0;
|
|
1486
|
+
break;
|
|
1487
|
+
}
|
|
1488
|
+
idx = text.indexOf(match[0]);
|
|
1489
|
+
if (p >= idx && p < idx + match[0].length) {
|
|
1490
|
+
break;
|
|
1491
|
+
}
|
|
1492
|
+
idx += match[0].length;
|
|
1493
|
+
} while (true);
|
|
1494
|
+
if (!match) {
|
|
1495
|
+
return null;
|
|
1496
|
+
}
|
|
1497
|
+
const [, , url] = match ?? [];
|
|
1498
|
+
return {
|
|
1499
|
+
pos: idx + from,
|
|
1500
|
+
end: idx + from + match[0].length,
|
|
1501
|
+
above: true,
|
|
1502
|
+
create: () => {
|
|
1503
|
+
const el = document.createElement("div");
|
|
1504
|
+
el.className = tooltipContent({}, "pli-2 plb-1");
|
|
1505
|
+
options.onHover(el, url);
|
|
1506
|
+
return {
|
|
1507
|
+
dom: el,
|
|
1508
|
+
offset: {
|
|
1509
|
+
x: 0,
|
|
1510
|
+
y: 4
|
|
1511
|
+
}
|
|
1512
|
+
};
|
|
1513
|
+
}
|
|
1514
|
+
};
|
|
1515
|
+
})
|
|
1516
|
+
);
|
|
1517
|
+
}
|
|
1518
|
+
return extensions;
|
|
1432
1519
|
};
|
|
1433
1520
|
var LinkButton = class extends WidgetType4 {
|
|
1434
1521
|
constructor(_pos, _url, _onAttach) {
|
|
@@ -1447,14 +1534,13 @@ var LinkButton = class extends WidgetType4 {
|
|
|
1447
1534
|
}
|
|
1448
1535
|
};
|
|
1449
1536
|
var LinkText = class extends WidgetType4 {
|
|
1450
|
-
constructor(
|
|
1537
|
+
constructor(_text, _url) {
|
|
1451
1538
|
super();
|
|
1452
|
-
this._pos = _pos;
|
|
1453
1539
|
this._text = _text;
|
|
1454
1540
|
this._url = _url;
|
|
1455
1541
|
}
|
|
1456
1542
|
eq(other) {
|
|
1457
|
-
return this.
|
|
1543
|
+
return this._url === other._url;
|
|
1458
1544
|
}
|
|
1459
1545
|
toDOM(view) {
|
|
1460
1546
|
const link2 = document.createElement("a");
|
|
@@ -1468,7 +1554,7 @@ var LinkText = class extends WidgetType4 {
|
|
|
1468
1554
|
link2.onclick = () => {
|
|
1469
1555
|
view.dispatch({
|
|
1470
1556
|
selection: {
|
|
1471
|
-
anchor:
|
|
1557
|
+
anchor: view.posAtDOM(link2)
|
|
1472
1558
|
}
|
|
1473
1559
|
});
|
|
1474
1560
|
};
|
|
@@ -1491,7 +1577,7 @@ var update2 = (state, options) => {
|
|
|
1491
1577
|
}
|
|
1492
1578
|
if (state.readOnly || cursor < node.from || cursor > node.to) {
|
|
1493
1579
|
builder.add(node.from, node.to, Decoration5.replace({
|
|
1494
|
-
widget: new LinkText(
|
|
1580
|
+
widget: new LinkText(text, options.link ? url : void 0)
|
|
1495
1581
|
}));
|
|
1496
1582
|
}
|
|
1497
1583
|
if (options.onRender) {
|
|
@@ -1506,21 +1592,21 @@ var update2 = (state, options) => {
|
|
|
1506
1592
|
return builder.finish();
|
|
1507
1593
|
};
|
|
1508
1594
|
|
|
1509
|
-
// packages/ui/react-ui-editor/src/
|
|
1510
|
-
import {
|
|
1511
|
-
var listener = ({ onChange }) => {
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1595
|
+
// packages/ui/react-ui-editor/src/extensions/listener.ts
|
|
1596
|
+
import { EditorView as EditorView8 } from "@codemirror/view";
|
|
1597
|
+
var listener = ({ onFocus, onChange }) => {
|
|
1598
|
+
const extensions = [];
|
|
1599
|
+
onFocus && extensions.push(EditorView8.focusChangeEffect.of((_, focused) => {
|
|
1600
|
+
onFocus(focused);
|
|
1601
|
+
return null;
|
|
1602
|
+
}));
|
|
1603
|
+
onChange && extensions.push(EditorView8.updateListener.of((update4) => {
|
|
1604
|
+
onChange(update4.state.doc.toString());
|
|
1605
|
+
}));
|
|
1606
|
+
return extensions;
|
|
1521
1607
|
};
|
|
1522
1608
|
|
|
1523
|
-
// packages/ui/react-ui-editor/src/
|
|
1609
|
+
// packages/ui/react-ui-editor/src/extensions/markdown/bundle.ts
|
|
1524
1610
|
import { closeBrackets as closeBrackets2, closeBracketsKeymap } from "@codemirror/autocomplete";
|
|
1525
1611
|
import { history, historyKeymap, indentWithTab, standardKeymap } from "@codemirror/commands";
|
|
1526
1612
|
import { markdownLanguage as markdownLanguage2, markdown } from "@codemirror/lang-markdown";
|
|
@@ -1529,14 +1615,14 @@ import { languages } from "@codemirror/language-data";
|
|
|
1529
1615
|
import { searchKeymap } from "@codemirror/search";
|
|
1530
1616
|
import { EditorState } from "@codemirror/state";
|
|
1531
1617
|
import { oneDarkHighlightStyle as oneDarkHighlightStyle2 } from "@codemirror/theme-one-dark";
|
|
1532
|
-
import { crosshairCursor, drawSelection as drawSelection2, dropCursor, EditorView as
|
|
1618
|
+
import { crosshairCursor, drawSelection as drawSelection2, dropCursor, EditorView as EditorView9, highlightActiveLine, keymap as keymap4, placeholder as placeholder2 } from "@codemirror/view";
|
|
1533
1619
|
|
|
1534
|
-
// packages/ui/react-ui-editor/src/
|
|
1620
|
+
// packages/ui/react-ui-editor/src/extensions/markdown/highlight.ts
|
|
1535
1621
|
import { markdownLanguage } from "@codemirror/lang-markdown";
|
|
1536
1622
|
import { HighlightStyle } from "@codemirror/language";
|
|
1537
1623
|
import { tags, styleTags, Tag } from "@lezer/highlight";
|
|
1538
1624
|
import { Table } from "@lezer/markdown";
|
|
1539
|
-
import
|
|
1625
|
+
import get5 from "lodash.get";
|
|
1540
1626
|
var markdownTags = {
|
|
1541
1627
|
Blockquote: Tag.define(),
|
|
1542
1628
|
CodeMark: Tag.define(),
|
|
@@ -1722,17 +1808,17 @@ var markdownHighlightStyle = (readonly) => {
|
|
|
1722
1808
|
], {
|
|
1723
1809
|
scope: markdownLanguage,
|
|
1724
1810
|
all: {
|
|
1725
|
-
fontFamily:
|
|
1811
|
+
fontFamily: get5(tokens, "fontFamily.body", []).join(",")
|
|
1726
1812
|
}
|
|
1727
1813
|
});
|
|
1728
1814
|
};
|
|
1729
1815
|
|
|
1730
|
-
// packages/ui/react-ui-editor/src/
|
|
1816
|
+
// packages/ui/react-ui-editor/src/extensions/markdown/bundle.ts
|
|
1731
1817
|
var markdownBundle = ({ readonly, themeMode, placeholder: _placeholder }) => {
|
|
1732
1818
|
return [
|
|
1733
1819
|
EditorState.allowMultipleSelections.of(true),
|
|
1734
1820
|
EditorState.tabSize.of(2),
|
|
1735
|
-
|
|
1821
|
+
EditorView9.lineWrapping,
|
|
1736
1822
|
customKeymap(),
|
|
1737
1823
|
bracketMatching2(),
|
|
1738
1824
|
closeBrackets2(),
|
|
@@ -1780,7 +1866,7 @@ var customKeymap = () => keymap4.of([
|
|
|
1780
1866
|
...searchKeymap
|
|
1781
1867
|
]);
|
|
1782
1868
|
|
|
1783
|
-
// packages/ui/react-ui-editor/src/
|
|
1869
|
+
// packages/ui/react-ui-editor/src/extensions/mention.ts
|
|
1784
1870
|
import { autocompletion as autocompletion2 } from "@codemirror/autocomplete";
|
|
1785
1871
|
var mention = ({ onSearch }) => {
|
|
1786
1872
|
return autocompletion2({
|
|
@@ -1803,20 +1889,20 @@ var mention = ({ onSearch }) => {
|
|
|
1803
1889
|
});
|
|
1804
1890
|
};
|
|
1805
1891
|
|
|
1806
|
-
// packages/ui/react-ui-editor/src/
|
|
1892
|
+
// packages/ui/react-ui-editor/src/extensions/mermaid.ts
|
|
1807
1893
|
var mermaid = () => {
|
|
1808
1894
|
return [];
|
|
1809
1895
|
};
|
|
1810
1896
|
|
|
1811
|
-
// packages/ui/react-ui-editor/src/
|
|
1897
|
+
// packages/ui/react-ui-editor/src/extensions/table.ts
|
|
1812
1898
|
import { syntaxTree as syntaxTree3 } from "@codemirror/language";
|
|
1813
|
-
import { RangeSetBuilder as RangeSetBuilder3, StateField as
|
|
1814
|
-
import { Decoration as Decoration6, EditorView as
|
|
1899
|
+
import { RangeSetBuilder as RangeSetBuilder3, StateField as StateField6 } from "@codemirror/state";
|
|
1900
|
+
import { Decoration as Decoration6, EditorView as EditorView10, WidgetType as WidgetType5 } from "@codemirror/view";
|
|
1815
1901
|
var table = (options = {}) => {
|
|
1816
|
-
return
|
|
1902
|
+
return StateField6.define({
|
|
1817
1903
|
create: (state) => update3(state, options),
|
|
1818
1904
|
update: (_, tr) => update3(tr.state, options),
|
|
1819
|
-
provide: (field) =>
|
|
1905
|
+
provide: (field) => EditorView10.decorations.from(field)
|
|
1820
1906
|
});
|
|
1821
1907
|
};
|
|
1822
1908
|
var update3 = (state, options) => {
|
|
@@ -1904,9 +1990,9 @@ var TableWidget = class extends WidgetType5 {
|
|
|
1904
1990
|
}
|
|
1905
1991
|
};
|
|
1906
1992
|
|
|
1907
|
-
// packages/ui/react-ui-editor/src/
|
|
1908
|
-
import { EditorView as
|
|
1909
|
-
var styles4 =
|
|
1993
|
+
// packages/ui/react-ui-editor/src/extensions/tasklist.ts
|
|
1994
|
+
import { EditorView as EditorView11, Decoration as Decoration7, WidgetType as WidgetType6, MatchDecorator as MatchDecorator3, ViewPlugin as ViewPlugin5 } from "@codemirror/view";
|
|
1995
|
+
var styles4 = EditorView11.baseTheme({
|
|
1910
1996
|
"& .cm-task-item": {
|
|
1911
1997
|
paddingLeft: "4px",
|
|
1912
1998
|
paddingRight: "8px"
|
|
@@ -1979,7 +2065,7 @@ var tasklist = (options = {}) => {
|
|
|
1979
2065
|
}
|
|
1980
2066
|
}, {
|
|
1981
2067
|
decorations: (value) => value.tasks,
|
|
1982
|
-
provide: (plugin) =>
|
|
2068
|
+
provide: (plugin) => EditorView11.atomicRanges.of((view) => {
|
|
1983
2069
|
return view.plugin(plugin)?.tasks || Decoration7.none;
|
|
1984
2070
|
})
|
|
1985
2071
|
});
|
|
@@ -1989,51 +2075,7 @@ var tasklist = (options = {}) => {
|
|
|
1989
2075
|
];
|
|
1990
2076
|
};
|
|
1991
2077
|
|
|
1992
|
-
// packages/ui/react-ui-editor/src/
|
|
1993
|
-
import { hoverTooltip as hoverTooltip2 } from "@codemirror/view";
|
|
1994
|
-
import { tooltipContent } from "@dxos/react-ui-theme";
|
|
1995
|
-
var markdownLinkRegexp = /\[([^\]]+)]\(([^)]+)\)/;
|
|
1996
|
-
var tooltip = ({ onHover, regexp = markdownLinkRegexp }) => hoverTooltip2((view, pos) => {
|
|
1997
|
-
const { from, text } = view.state.doc.lineAt(pos);
|
|
1998
|
-
const p = pos - from;
|
|
1999
|
-
let idx = 0;
|
|
2000
|
-
let match;
|
|
2001
|
-
do {
|
|
2002
|
-
match = text.substring(idx).match(regexp);
|
|
2003
|
-
if (!match) {
|
|
2004
|
-
match = void 0;
|
|
2005
|
-
break;
|
|
2006
|
-
}
|
|
2007
|
-
idx = text.indexOf(match[0]);
|
|
2008
|
-
if (p >= idx && p < idx + match[0].length) {
|
|
2009
|
-
break;
|
|
2010
|
-
}
|
|
2011
|
-
idx += match[0].length;
|
|
2012
|
-
} while (true);
|
|
2013
|
-
if (!match) {
|
|
2014
|
-
return null;
|
|
2015
|
-
}
|
|
2016
|
-
const [, , url] = match ?? [];
|
|
2017
|
-
return {
|
|
2018
|
-
pos: idx + from,
|
|
2019
|
-
end: idx + from + match[0].length,
|
|
2020
|
-
above: true,
|
|
2021
|
-
create: () => {
|
|
2022
|
-
const el = document.createElement("div");
|
|
2023
|
-
el.className = tooltipContent({}, "pli-2 plb-1");
|
|
2024
|
-
onHover(el, url);
|
|
2025
|
-
return {
|
|
2026
|
-
dom: el,
|
|
2027
|
-
offset: {
|
|
2028
|
-
x: 0,
|
|
2029
|
-
y: 4
|
|
2030
|
-
}
|
|
2031
|
-
};
|
|
2032
|
-
}
|
|
2033
|
-
};
|
|
2034
|
-
});
|
|
2035
|
-
|
|
2036
|
-
// packages/ui/react-ui-editor/src/components/TextEditor/extensions/typewriter.ts
|
|
2078
|
+
// packages/ui/react-ui-editor/src/extensions/typewriter.ts
|
|
2037
2079
|
import { keymap as keymap5 } from "@codemirror/view";
|
|
2038
2080
|
var defaultItems = [
|
|
2039
2081
|
"hello world!",
|
|
@@ -2090,8 +2132,8 @@ var typewriter = ({ delay = 75, items = defaultItems } = {}) => {
|
|
|
2090
2132
|
];
|
|
2091
2133
|
};
|
|
2092
2134
|
|
|
2093
|
-
// packages/ui/react-ui-editor/src/
|
|
2094
|
-
import
|
|
2135
|
+
// packages/ui/react-ui-editor/src/themes/default.ts
|
|
2136
|
+
import get6 from "lodash.get";
|
|
2095
2137
|
var defaultTheme = {
|
|
2096
2138
|
//
|
|
2097
2139
|
// Main layout:
|
|
@@ -2122,7 +2164,7 @@ var defaultTheme = {
|
|
|
2122
2164
|
},
|
|
2123
2165
|
"& .cm-scroller": {
|
|
2124
2166
|
overflow: "visible",
|
|
2125
|
-
fontFamily:
|
|
2167
|
+
fontFamily: get6(tokens, "fontFamily.mono", []).join(",")
|
|
2126
2168
|
},
|
|
2127
2169
|
"& .cm-content": {
|
|
2128
2170
|
padding: 0,
|
|
@@ -2130,11 +2172,11 @@ var defaultTheme = {
|
|
|
2130
2172
|
fontSize: "16px"
|
|
2131
2173
|
},
|
|
2132
2174
|
"&light .cm-content": {
|
|
2133
|
-
color:
|
|
2175
|
+
color: get6(tokens, "extend.colors.neutral.900", "black"),
|
|
2134
2176
|
caretColor: "black"
|
|
2135
2177
|
},
|
|
2136
2178
|
"&dark .cm-content": {
|
|
2137
|
-
color:
|
|
2179
|
+
color: get6(tokens, "extend.colors.neutral.100", "white"),
|
|
2138
2180
|
caretColor: "white"
|
|
2139
2181
|
},
|
|
2140
2182
|
//
|
|
@@ -2162,25 +2204,25 @@ var defaultTheme = {
|
|
|
2162
2204
|
// Selection
|
|
2163
2205
|
//
|
|
2164
2206
|
"&light .cm-selectionBackground": {
|
|
2165
|
-
background:
|
|
2207
|
+
background: get6(tokens, "extend.colors.primary.100")
|
|
2166
2208
|
},
|
|
2167
2209
|
"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground": {
|
|
2168
|
-
background:
|
|
2210
|
+
background: get6(tokens, "extend.colors.primary.200")
|
|
2169
2211
|
},
|
|
2170
2212
|
"&dark .cm-selectionBackground": {
|
|
2171
|
-
background:
|
|
2213
|
+
background: get6(tokens, "extend.colors.primary.700")
|
|
2172
2214
|
},
|
|
2173
2215
|
"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground": {
|
|
2174
|
-
background:
|
|
2216
|
+
background: get6(tokens, "extend.colors.primary.600")
|
|
2175
2217
|
},
|
|
2176
2218
|
//
|
|
2177
2219
|
// Search
|
|
2178
2220
|
//
|
|
2179
2221
|
"&light .cm-searchMatch": {
|
|
2180
|
-
backgroundColor:
|
|
2222
|
+
backgroundColor: get6(tokens, "extend.colors.yellow.100")
|
|
2181
2223
|
},
|
|
2182
2224
|
"&dark .cm-searchMatch": {
|
|
2183
|
-
backgroundColor:
|
|
2225
|
+
backgroundColor: get6(tokens, "extend.colors.yellow.700")
|
|
2184
2226
|
},
|
|
2185
2227
|
//
|
|
2186
2228
|
// collaboration
|
|
@@ -2213,12 +2255,12 @@ var defaultTheme = {
|
|
|
2213
2255
|
// link
|
|
2214
2256
|
//
|
|
2215
2257
|
"& .cm-link": {
|
|
2216
|
-
color:
|
|
2258
|
+
color: get6(tokens, "extend.colors.primary.500"),
|
|
2217
2259
|
textDecorationLine: "underline",
|
|
2218
2260
|
textDecorationThickness: "1px",
|
|
2219
2261
|
textUnderlineOffset: "2px",
|
|
2220
2262
|
borderRadius: ".125rem",
|
|
2221
|
-
fontFamily:
|
|
2263
|
+
fontFamily: get6(tokens, "fontFamily.body", []).join(",")
|
|
2222
2264
|
},
|
|
2223
2265
|
//
|
|
2224
2266
|
// tooltip
|
|
@@ -2240,7 +2282,7 @@ var defaultTheme = {
|
|
|
2240
2282
|
display: "none"
|
|
2241
2283
|
},
|
|
2242
2284
|
"& .cm-completionLabel": {
|
|
2243
|
-
fontFamily:
|
|
2285
|
+
fontFamily: get6(tokens, "fontFamily.body", []).join(",")
|
|
2244
2286
|
},
|
|
2245
2287
|
"& .cm-completionMatchedText": {
|
|
2246
2288
|
textDecoration: "none"
|
|
@@ -2256,15 +2298,15 @@ var defaultTheme = {
|
|
|
2256
2298
|
// table
|
|
2257
2299
|
//
|
|
2258
2300
|
"& .cm-table *": {
|
|
2259
|
-
fontFamily: `${
|
|
2301
|
+
fontFamily: `${get6(tokens, "fontFamily.mono", []).join(",")} !important`,
|
|
2260
2302
|
textDecoration: "none !important"
|
|
2261
2303
|
},
|
|
2262
2304
|
"& .cm-table-head": {
|
|
2263
2305
|
padding: "2px 16px 2px 0px",
|
|
2264
|
-
borderBottom: `1px solid ${
|
|
2306
|
+
borderBottom: `1px solid ${get6(tokens, "extend.colors.neutral.500")}`,
|
|
2265
2307
|
fontWeight: 100,
|
|
2266
2308
|
textAlign: "left",
|
|
2267
|
-
color:
|
|
2309
|
+
color: get6(tokens, "extend.colors.neutral.500")
|
|
2268
2310
|
},
|
|
2269
2311
|
"& .cm-table-cell": {
|
|
2270
2312
|
padding: "2px 16px 2px 0px"
|
|
@@ -2279,8 +2321,8 @@ var defaultTheme = {
|
|
|
2279
2321
|
// font size
|
|
2280
2322
|
// TODO(thure): This appears to be the best or only way to set selection caret heights, but it's far more verbose than it needs to be.
|
|
2281
2323
|
//
|
|
2282
|
-
...Object.keys(
|
|
2283
|
-
const height =
|
|
2324
|
+
...Object.keys(get6(tokens, "extend.fontSize", {})).reduce((acc, fontSize) => {
|
|
2325
|
+
const height = get6(tokens, [
|
|
2284
2326
|
"extend",
|
|
2285
2327
|
"fontSize",
|
|
2286
2328
|
fontSize,
|
|
@@ -2315,23 +2357,23 @@ var defaultTheme = {
|
|
|
2315
2357
|
* </div
|
|
2316
2358
|
*/
|
|
2317
2359
|
"& .cm-panels": {
|
|
2318
|
-
border: `1px solid ${
|
|
2360
|
+
border: `1px solid ${get6(tokens, "extend.colors.neutral.200")}`
|
|
2319
2361
|
},
|
|
2320
2362
|
"& .cm-panel": {
|
|
2321
|
-
background:
|
|
2322
|
-
fontFamily:
|
|
2363
|
+
background: get6(tokens, "extend.colors.neutral.50"),
|
|
2364
|
+
fontFamily: get6(tokens, "fontFamily.body", []).join(",")
|
|
2323
2365
|
},
|
|
2324
2366
|
"& .cm-button": {
|
|
2325
2367
|
margin: "4px",
|
|
2326
|
-
fontFamily:
|
|
2327
|
-
background:
|
|
2368
|
+
fontFamily: get6(tokens, "fontFamily.body", []).join(","),
|
|
2369
|
+
background: get6(tokens, "extend.colors.neutral.100"),
|
|
2328
2370
|
backgroundImage: "none",
|
|
2329
2371
|
border: "none",
|
|
2330
2372
|
"&:hover": {
|
|
2331
|
-
background:
|
|
2373
|
+
background: get6(tokens, "extend.colors.neutral.200")
|
|
2332
2374
|
},
|
|
2333
2375
|
"&:active": {
|
|
2334
|
-
background:
|
|
2376
|
+
background: get6(tokens, "extend.colors.neutral.300"),
|
|
2335
2377
|
backgroundImage: "none"
|
|
2336
2378
|
}
|
|
2337
2379
|
},
|
|
@@ -2341,42 +2383,33 @@ var defaultTheme = {
|
|
|
2341
2383
|
};
|
|
2342
2384
|
var textTheme = {
|
|
2343
2385
|
"& .cm-scroller": {
|
|
2344
|
-
fontFamily:
|
|
2386
|
+
fontFamily: get6(tokens, "fontFamily.body", []).join(",")
|
|
2345
2387
|
},
|
|
2346
2388
|
"& .cm-placeholder": {
|
|
2347
|
-
fontFamily:
|
|
2389
|
+
fontFamily: get6(tokens, "fontFamily.body", []).join(",")
|
|
2348
2390
|
}
|
|
2349
2391
|
};
|
|
2350
2392
|
var markdownTheme = {
|
|
2351
2393
|
// NOTE: Must leave base font family as is (i.e., monospace) due to fenced code blocks.
|
|
2352
2394
|
"& .cm-placeholder": {
|
|
2353
|
-
fontFamily:
|
|
2395
|
+
fontFamily: get6(tokens, "fontFamily.body", []).join(",")
|
|
2354
2396
|
}
|
|
2355
2397
|
};
|
|
2356
2398
|
var codeTheme = {
|
|
2357
2399
|
"& .cm-scroller": {
|
|
2358
|
-
fontFamily:
|
|
2400
|
+
fontFamily: get6(tokens, "fontFamily.mono", []).join(",")
|
|
2359
2401
|
},
|
|
2360
2402
|
"& .cm-placeholder": {
|
|
2361
|
-
fontFamily:
|
|
2403
|
+
fontFamily: get6(tokens, "fontFamily.mono", []).join(",")
|
|
2362
2404
|
}
|
|
2363
2405
|
};
|
|
2364
2406
|
|
|
2365
2407
|
// packages/ui/react-ui-editor/src/components/TextEditor/TextEditor.tsx
|
|
2366
|
-
import { EditorState as EditorState2 } from "@codemirror/state";
|
|
2367
|
-
import { EditorView as EditorView11 } from "@codemirror/view";
|
|
2368
|
-
import { useFocusableGroup } from "@fluentui/react-tabster";
|
|
2369
|
-
import { vim } from "@replit/codemirror-vim";
|
|
2370
|
-
import defaultsDeep2 from "lodash.defaultsdeep";
|
|
2371
|
-
import React, { forwardRef, useCallback, useEffect as useEffect2, useImperativeHandle, useState as useState2 } from "react";
|
|
2372
|
-
import { generateName } from "@dxos/display-name";
|
|
2373
|
-
import { useThemeContext } from "@dxos/react-ui";
|
|
2374
|
-
import { getColorForValue, inputSurface, mx as mx3 } from "@dxos/react-ui-theme";
|
|
2375
2408
|
var EditorModes = [
|
|
2376
2409
|
"default",
|
|
2377
2410
|
"vim"
|
|
2378
2411
|
];
|
|
2379
|
-
var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model, comments: comments2,
|
|
2412
|
+
var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model, readonly, comments: comments2, extensions = [], editorMode, slots = defaultSlots }, forwardedRef) => {
|
|
2380
2413
|
const { themeMode } = useThemeContext();
|
|
2381
2414
|
const tabsterDOMAttribute = useFocusableGroup({
|
|
2382
2415
|
tabBehavior: "limited"
|
|
@@ -2438,9 +2471,9 @@ var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model, comments: comments2, r
|
|
|
2438
2471
|
editorMode === "vim" && vim(),
|
|
2439
2472
|
// Theme.
|
|
2440
2473
|
// TODO(burdon): Make theme configurable.
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2474
|
+
EditorView12.baseTheme(defaultTheme),
|
|
2475
|
+
EditorView12.theme(slots?.editor?.theme ?? {}),
|
|
2476
|
+
EditorView12.darkTheme.of(themeMode === "dark"),
|
|
2444
2477
|
// Storage and replication.
|
|
2445
2478
|
model.extension,
|
|
2446
2479
|
// Custom.
|
|
@@ -2450,7 +2483,7 @@ var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model, comments: comments2, r
|
|
|
2450
2483
|
view?.destroy();
|
|
2451
2484
|
setEditor({
|
|
2452
2485
|
state: state2,
|
|
2453
|
-
view: new
|
|
2486
|
+
view: new EditorView12({
|
|
2454
2487
|
state: state2,
|
|
2455
2488
|
parent: root
|
|
2456
2489
|
})
|
|
@@ -2579,11 +2612,12 @@ export {
|
|
|
2579
2612
|
mermaid,
|
|
2580
2613
|
modelState,
|
|
2581
2614
|
setCommentRange,
|
|
2615
|
+
setFocus,
|
|
2616
|
+
setSelection,
|
|
2582
2617
|
table,
|
|
2583
2618
|
tags2 as tags,
|
|
2584
2619
|
tasklist,
|
|
2585
2620
|
textTheme,
|
|
2586
|
-
tooltip,
|
|
2587
2621
|
typewriter,
|
|
2588
2622
|
useTextModel
|
|
2589
2623
|
};
|