@dxos/react-ui-editor 0.8.4-main.422d1c7879 → 0.8.4-main.4f23b4e393
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 +61 -139
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/translations.mjs +39 -0
- package/dist/lib/browser/translations.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +61 -139
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/translations.mjs +41 -0
- package/dist/lib/node-esm/translations.mjs.map +7 -0
- package/dist/types/src/components/Editor/Editor.d.ts +17 -5
- package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
- package/dist/types/src/components/Editor/Editor.stories.d.ts +1 -1
- package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -1
- package/dist/types/src/components/Editor/EditorView.d.ts.map +1 -1
- package/dist/types/src/components/Editor/controller.d.ts.map +1 -1
- package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -1
- package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -1
- package/dist/types/src/components/EditorMenuProvider/popover.d.ts +2 -1
- package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -1
- package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -1
- package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +1 -1
- package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/types.d.ts +2 -1
- package/dist/types/src/components/EditorToolbar/types.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/view-mode.d.ts +1 -1
- package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
- package/dist/types/src/extensions/Assistant.stories.d.ts.map +1 -1
- package/dist/types/src/extensions/assistant-extension.d.ts.map +1 -1
- package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts.map +1 -1
- package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +0 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/stories/Automerge.stories.d.ts +24 -24
- package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Comments.stories.d.ts +1 -1
- package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
- package/dist/types/src/stories/EditorToolbar.stories.d.ts +25 -25
- package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Experimental.stories.d.ts +2 -2
- package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Markdown.stories.d.ts +1 -1
- package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Popover.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Preview.stories.d.ts +1 -1
- package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Tags.stories.d.ts.map +1 -1
- package/dist/types/src/stories/TextEditor.stories.d.ts +1 -1
- package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Theme.stories.d.ts.map +1 -1
- package/dist/types/src/stories/components/EditorStory.d.ts +1 -1
- package/dist/types/src/stories/components/util.d.ts +2 -1
- package/dist/types/src/stories/components/util.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +24 -24
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/util/react.d.ts +1 -1
- package/dist/types/src/util/react.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +54 -45
- package/src/components/Editor/Editor.tsx +2 -8
- package/src/components/Editor/EditorView.tsx +29 -10
- package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +1 -1
- package/src/components/EditorMenuProvider/popover.ts +3 -1
- package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +1 -1
- package/src/components/EditorToolbar/EditorToolbar.tsx +8 -6
- package/src/components/EditorToolbar/blocks.ts +2 -1
- package/src/components/EditorToolbar/formatting.ts +2 -1
- package/src/components/EditorToolbar/headings.ts +2 -1
- package/src/components/EditorToolbar/image.ts +1 -1
- package/src/components/EditorToolbar/lists.ts +2 -1
- package/src/components/EditorToolbar/search.ts +1 -1
- package/src/components/EditorToolbar/types.ts +2 -1
- package/src/components/EditorToolbar/view-mode.ts +3 -2
- package/src/extensions/Assistant.stories.tsx +2 -1
- package/src/extensions/assistant-extension.tsx +3 -3
- package/src/index.ts +0 -4
- package/src/stories/Automerge.stories.tsx +4 -3
- package/src/stories/Comments.stories.tsx +2 -1
- package/src/stories/EditorToolbar.stories.tsx +4 -3
- package/src/stories/Experimental.stories.tsx +7 -7
- package/src/stories/components/util.tsx +2 -2
- package/src/util/react.tsx +1 -1
|
@@ -1,38 +1,3 @@
|
|
|
1
|
-
// src/translations.ts
|
|
2
|
-
var translationKey = "@dxos/react-ui-editor";
|
|
3
|
-
var translations = [
|
|
4
|
-
{
|
|
5
|
-
"en-US": {
|
|
6
|
-
[translationKey]: {
|
|
7
|
-
"comment.label": "Create comment",
|
|
8
|
-
"image.label": "Insert image",
|
|
9
|
-
"search.label": "Search",
|
|
10
|
-
"block.label": "Block",
|
|
11
|
-
"block.blockquote.label": "Block quote",
|
|
12
|
-
"block.codeblock.label": "Code block",
|
|
13
|
-
"block.table.label": "Create table",
|
|
14
|
-
"formatting.label": "Formatting",
|
|
15
|
-
"formatting.strong.label": "Bold",
|
|
16
|
-
"formatting.emphasis.label": "Italics",
|
|
17
|
-
"formatting.strikethrough.label": "Strikethrough",
|
|
18
|
-
"formatting.code.label": "Code",
|
|
19
|
-
"formatting.link.label": "Link",
|
|
20
|
-
"list.bullet.label": "Bullet list",
|
|
21
|
-
"list.ordered.label": "Numbered list",
|
|
22
|
-
"list.task.label": "Task list",
|
|
23
|
-
"heading.label": "Heading level",
|
|
24
|
-
"heading-level.label_zero": "Paragraph",
|
|
25
|
-
"heading-level.label_one": "Heading level {{count}}",
|
|
26
|
-
"heading-level.label_other": "Heading level {{count}}",
|
|
27
|
-
"view-mode.label": "Editor view",
|
|
28
|
-
"view-mode.preview.label": "Markdown",
|
|
29
|
-
"view-mode.source.label": "Plain text",
|
|
30
|
-
"view-mode.readonly.label": "Read only"
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
];
|
|
35
|
-
|
|
36
1
|
// src/components/Editor/Editor.tsx
|
|
37
2
|
import { Atom as Atom2 } from "@effect-atom/atom-react";
|
|
38
3
|
import { createContext } from "@radix-ui/react-context";
|
|
@@ -94,6 +59,7 @@ var popover = (options = {}) => {
|
|
|
94
59
|
options.trigger && placeholder({
|
|
95
60
|
// TODO(burdon): Translations.
|
|
96
61
|
content: `Press '${Array.isArray(options.trigger) ? options.trigger[0] : options.trigger}' for commands`,
|
|
62
|
+
focusOnly: true,
|
|
97
63
|
...options.placeholder
|
|
98
64
|
})
|
|
99
65
|
].filter(isTruthy);
|
|
@@ -451,15 +417,7 @@ var EditorMenuProvider = ({ children, view, groups, currentItem, open: openProp,
|
|
|
451
417
|
prop: openProp,
|
|
452
418
|
defaultProp: defaultOpen,
|
|
453
419
|
onChange: (open2) => {
|
|
454
|
-
invariant(viewRef.current, void 0, {
|
|
455
|
-
F: __dxlog_file,
|
|
456
|
-
L: 64,
|
|
457
|
-
S: void 0,
|
|
458
|
-
A: [
|
|
459
|
-
"viewRef.current",
|
|
460
|
-
""
|
|
461
|
-
]
|
|
462
|
-
});
|
|
420
|
+
invariant(viewRef.current, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 21, S: void 0, A: ["viewRef.current", ""] });
|
|
463
421
|
onOpenChange?.({
|
|
464
422
|
view: viewRef.current,
|
|
465
423
|
open: open2
|
|
@@ -493,15 +451,7 @@ var EditorMenuProvider = ({ children, view, groups, currentItem, open: openProp,
|
|
|
493
451
|
onActivate
|
|
494
452
|
]);
|
|
495
453
|
const handleSelect = useCallback((item) => {
|
|
496
|
-
invariant(viewRef.current, void 0, {
|
|
497
|
-
F: __dxlog_file,
|
|
498
|
-
L: 99,
|
|
499
|
-
S: void 0,
|
|
500
|
-
A: [
|
|
501
|
-
"viewRef.current",
|
|
502
|
-
""
|
|
503
|
-
]
|
|
504
|
-
});
|
|
454
|
+
invariant(viewRef.current, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 56, S: void 0, A: ["viewRef.current", ""] });
|
|
505
455
|
onSelect?.({
|
|
506
456
|
view: viewRef.current,
|
|
507
457
|
item
|
|
@@ -546,7 +496,6 @@ var EditorMenuProvider = ({ children, view, groups, currentItem, open: openProp,
|
|
|
546
496
|
currentItem,
|
|
547
497
|
onSelect: handleSelect
|
|
548
498
|
})))), /* @__PURE__ */ React.createElement(Popover.Arrow, null))), /* @__PURE__ */ React.createElement("div", {
|
|
549
|
-
role: "none",
|
|
550
499
|
className: "contents",
|
|
551
500
|
ref: setRoot
|
|
552
501
|
}, children));
|
|
@@ -629,15 +578,7 @@ var useEditorMenu = ({ trigger, triggerKey, placeholder: placeholder2, filter =
|
|
|
629
578
|
filter
|
|
630
579
|
]);
|
|
631
580
|
const handleOpenChange = useCallback2(async ({ view, open: open2 }) => {
|
|
632
|
-
invariant2(view, void 0, {
|
|
633
|
-
F: __dxlog_file2,
|
|
634
|
-
L: 77,
|
|
635
|
-
S: void 0,
|
|
636
|
-
A: [
|
|
637
|
-
"view",
|
|
638
|
-
""
|
|
639
|
-
]
|
|
640
|
-
});
|
|
581
|
+
invariant2(view, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 40, S: void 0, A: ["view", ""] });
|
|
641
582
|
setOpen(open2);
|
|
642
583
|
if (!open2) {
|
|
643
584
|
setCurrentItem(void 0);
|
|
@@ -774,6 +715,7 @@ import { Menu as Menu2, MenuBuilder, useMenuActions } from "@dxos/react-ui-menu"
|
|
|
774
715
|
|
|
775
716
|
// src/components/EditorToolbar/blocks.ts
|
|
776
717
|
import { addBlockquote, addCodeblock, insertTable, removeBlockquote, removeCodeblock } from "@dxos/ui-editor";
|
|
718
|
+
import { translationKey } from "#translations";
|
|
777
719
|
var blockTypes = {
|
|
778
720
|
blockquote: "ph--quotes--regular",
|
|
779
721
|
codeblock: "ph--code-block--regular",
|
|
@@ -830,6 +772,7 @@ var addBlocks = (state, getView) => (builder) => {
|
|
|
830
772
|
|
|
831
773
|
// src/components/EditorToolbar/formatting.ts
|
|
832
774
|
import { Inline, addLink, removeLink, setStyle } from "@dxos/ui-editor";
|
|
775
|
+
import { translationKey as translationKey2 } from "#translations";
|
|
833
776
|
var formats = {
|
|
834
777
|
strong: "ph--text-b--regular",
|
|
835
778
|
emphasis: "ph--text-italic--regular",
|
|
@@ -843,7 +786,7 @@ var addFormatting = (state, getView) => (builder) => {
|
|
|
843
786
|
label: [
|
|
844
787
|
"formatting.label",
|
|
845
788
|
{
|
|
846
|
-
ns:
|
|
789
|
+
ns: translationKey2
|
|
847
790
|
}
|
|
848
791
|
],
|
|
849
792
|
iconOnly: true,
|
|
@@ -857,7 +800,7 @@ var addFormatting = (state, getView) => (builder) => {
|
|
|
857
800
|
label: [
|
|
858
801
|
`formatting.${type}.label`,
|
|
859
802
|
{
|
|
860
|
-
ns:
|
|
803
|
+
ns: translationKey2
|
|
861
804
|
}
|
|
862
805
|
],
|
|
863
806
|
checked,
|
|
@@ -879,6 +822,7 @@ var addFormatting = (state, getView) => (builder) => {
|
|
|
879
822
|
|
|
880
823
|
// src/components/EditorToolbar/headings.ts
|
|
881
824
|
import { setHeading } from "@dxos/ui-editor";
|
|
825
|
+
import { translationKey as translationKey3 } from "#translations";
|
|
882
826
|
var headingIcons = {
|
|
883
827
|
0: "ph--paragraph--regular",
|
|
884
828
|
1: "ph--text-h-one--regular",
|
|
@@ -899,7 +843,7 @@ var addHeadings = (state, getView) => (builder) => {
|
|
|
899
843
|
label: [
|
|
900
844
|
"heading.label",
|
|
901
845
|
{
|
|
902
|
-
ns:
|
|
846
|
+
ns: translationKey3
|
|
903
847
|
}
|
|
904
848
|
],
|
|
905
849
|
icon: "ph--text-h--regular",
|
|
@@ -917,7 +861,7 @@ var addHeadings = (state, getView) => (builder) => {
|
|
|
917
861
|
"heading-level.label",
|
|
918
862
|
{
|
|
919
863
|
count: level,
|
|
920
|
-
ns:
|
|
864
|
+
ns: translationKey3
|
|
921
865
|
}
|
|
922
866
|
],
|
|
923
867
|
icon,
|
|
@@ -928,12 +872,13 @@ var addHeadings = (state, getView) => (builder) => {
|
|
|
928
872
|
};
|
|
929
873
|
|
|
930
874
|
// src/components/EditorToolbar/image.ts
|
|
875
|
+
import { translationKey as translationKey4 } from "#translations";
|
|
931
876
|
var addImageUpload = (onImageUpload) => (builder) => {
|
|
932
877
|
builder.action("image", {
|
|
933
878
|
label: [
|
|
934
879
|
"image.label",
|
|
935
880
|
{
|
|
936
|
-
ns:
|
|
881
|
+
ns: translationKey4
|
|
937
882
|
}
|
|
938
883
|
],
|
|
939
884
|
testId: "editor.toolbar.image",
|
|
@@ -943,6 +888,7 @@ var addImageUpload = (onImageUpload) => (builder) => {
|
|
|
943
888
|
|
|
944
889
|
// src/components/EditorToolbar/lists.ts
|
|
945
890
|
import { List, addList, removeList } from "@dxos/ui-editor";
|
|
891
|
+
import { translationKey as translationKey5 } from "#translations";
|
|
946
892
|
var listStyles = {
|
|
947
893
|
bullet: "ph--list-bullets--regular",
|
|
948
894
|
ordered: "ph--list-numbers--regular",
|
|
@@ -954,7 +900,7 @@ var addLists = (state, getView) => (builder) => {
|
|
|
954
900
|
label: [
|
|
955
901
|
"list.label",
|
|
956
902
|
{
|
|
957
|
-
ns:
|
|
903
|
+
ns: translationKey5
|
|
958
904
|
}
|
|
959
905
|
],
|
|
960
906
|
iconOnly: true,
|
|
@@ -968,7 +914,7 @@ var addLists = (state, getView) => (builder) => {
|
|
|
968
914
|
label: [
|
|
969
915
|
`list.${listStyle}.label`,
|
|
970
916
|
{
|
|
971
|
-
ns:
|
|
917
|
+
ns: translationKey5
|
|
972
918
|
}
|
|
973
919
|
],
|
|
974
920
|
checked,
|
|
@@ -991,12 +937,13 @@ var addLists = (state, getView) => (builder) => {
|
|
|
991
937
|
|
|
992
938
|
// src/components/EditorToolbar/search.ts
|
|
993
939
|
import { openSearchPanel } from "@codemirror/search";
|
|
940
|
+
import { translationKey as translationKey6 } from "#translations";
|
|
994
941
|
var addSearch = (getView) => (builder) => {
|
|
995
942
|
builder.action("search", {
|
|
996
943
|
label: [
|
|
997
944
|
"search.label",
|
|
998
945
|
{
|
|
999
|
-
ns:
|
|
946
|
+
ns: translationKey6
|
|
1000
947
|
}
|
|
1001
948
|
],
|
|
1002
949
|
testId: "editor.toolbar.search",
|
|
@@ -1005,6 +952,7 @@ var addSearch = (getView) => (builder) => {
|
|
|
1005
952
|
};
|
|
1006
953
|
|
|
1007
954
|
// src/components/EditorToolbar/view-mode.ts
|
|
955
|
+
import { translationKey as translationKey7 } from "#translations";
|
|
1008
956
|
var viewModes = {
|
|
1009
957
|
preview: "ph--eye--regular",
|
|
1010
958
|
source: "ph--pencil-simple--regular",
|
|
@@ -1016,7 +964,7 @@ var addViewMode = (state, onViewModeChange) => (builder) => {
|
|
|
1016
964
|
label: [
|
|
1017
965
|
"view-mode.label",
|
|
1018
966
|
{
|
|
1019
|
-
ns:
|
|
967
|
+
ns: translationKey7
|
|
1020
968
|
}
|
|
1021
969
|
],
|
|
1022
970
|
icon: "ph--eye--regular",
|
|
@@ -1032,7 +980,7 @@ var addViewMode = (state, onViewModeChange) => (builder) => {
|
|
|
1032
980
|
label: [
|
|
1033
981
|
`view-mode.${viewMode}.label`,
|
|
1034
982
|
{
|
|
1035
|
-
ns:
|
|
983
|
+
ns: translationKey7
|
|
1036
984
|
}
|
|
1037
985
|
],
|
|
1038
986
|
checked,
|
|
@@ -1044,7 +992,7 @@ var addViewMode = (state, onViewModeChange) => (builder) => {
|
|
|
1044
992
|
|
|
1045
993
|
// src/components/EditorToolbar/EditorToolbar.tsx
|
|
1046
994
|
var EditorToolbar = /* @__PURE__ */ memo(({ classNames, role, attendableId, onAction, ...props }) => {
|
|
1047
|
-
const menuActions =
|
|
995
|
+
const menuActions = useMarkdownMenuActions(props);
|
|
1048
996
|
return /* @__PURE__ */ React2.createElement(ElevationProvider, {
|
|
1049
997
|
elevation: role === "section" ? "positioned" : "base"
|
|
1050
998
|
}, /* @__PURE__ */ React2.createElement(Menu2.Root, {
|
|
@@ -1055,8 +1003,8 @@ var EditorToolbar = /* @__PURE__ */ memo(({ classNames, role, attendableId, onAc
|
|
|
1055
1003
|
classNames
|
|
1056
1004
|
})));
|
|
1057
1005
|
});
|
|
1058
|
-
var
|
|
1059
|
-
const menuCreator = useMemo2(() =>
|
|
1006
|
+
var useMarkdownMenuActions = ({ state, getView, customActions, ...features }) => {
|
|
1007
|
+
const menuCreator = useMemo2(() => createMarkdownActions({
|
|
1060
1008
|
state,
|
|
1061
1009
|
getView,
|
|
1062
1010
|
customActions,
|
|
@@ -1075,7 +1023,7 @@ var useEditorToolbarActionGraph = ({ state, getView, customActions, ...features
|
|
|
1075
1023
|
]);
|
|
1076
1024
|
return useMenuActions(menuCreator);
|
|
1077
1025
|
};
|
|
1078
|
-
var
|
|
1026
|
+
var createMarkdownActions = ({ state, getView, customActions, ...features }) => {
|
|
1079
1027
|
return Atom.make((get) => {
|
|
1080
1028
|
const stateSnapshot = get(state);
|
|
1081
1029
|
return MenuBuilder.make().subgraph(features?.showHeadings !== false && addHeadings(stateSnapshot, getView)).subgraph(features?.showFormatting !== false && addFormatting(stateSnapshot, getView)).subgraph(features?.showLists !== false && addLists(stateSnapshot, getView)).subgraph(features?.showBlocks !== false && addBlocks(stateSnapshot, getView)).subgraph(features?.onImageUpload && addImageUpload(features.onImageUpload)).separator("gap").subgraph(customActions && get(customActions)).subgraph(features?.showSearch !== false && addSearch(getView)).subgraph(features?.onViewModeChange && addViewMode(stateSnapshot, features.onViewModeChange)).build();
|
|
@@ -1085,7 +1033,7 @@ var createToolbarActions = ({ state, getView, customActions, ...features }) => {
|
|
|
1085
1033
|
// src/components/Editor/EditorView.tsx
|
|
1086
1034
|
import { Transaction } from "@codemirror/state";
|
|
1087
1035
|
import { EditorView as NaturalEditorView } from "@codemirror/view";
|
|
1088
|
-
import React3, { forwardRef, useEffect as useEffect3, useImperativeHandle } from "react";
|
|
1036
|
+
import React3, { forwardRef, useEffect as useEffect3, useImperativeHandle, useRef as useRef4 } from "react";
|
|
1089
1037
|
import { initialSync } from "@dxos/ui-editor";
|
|
1090
1038
|
import { mx } from "@dxos/ui-theme";
|
|
1091
1039
|
|
|
@@ -1137,12 +1085,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
|
1137
1085
|
id,
|
|
1138
1086
|
instanceId,
|
|
1139
1087
|
doc: initialValue?.length ?? 0
|
|
1140
|
-
}, {
|
|
1141
|
-
F: __dxlog_file3,
|
|
1142
|
-
L: 75,
|
|
1143
|
-
S: void 0,
|
|
1144
|
-
C: (f, a) => f(...a)
|
|
1145
|
-
});
|
|
1088
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 22, S: void 0 });
|
|
1146
1089
|
let initialSelection;
|
|
1147
1090
|
if (selection?.anchor && initialValue?.length) {
|
|
1148
1091
|
if (selection.anchor <= initialValue.length && (selection?.head ?? 0) <= initialValue.length) {
|
|
@@ -1163,12 +1106,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
|
1163
1106
|
extensions,
|
|
1164
1107
|
// NOTE: This doesn't catch errors in keymap functions.
|
|
1165
1108
|
EditorView2.exceptionSink.of((err) => {
|
|
1166
|
-
log.catch(err, void 0, {
|
|
1167
|
-
F: __dxlog_file3,
|
|
1168
|
-
L: 97,
|
|
1169
|
-
S: void 0,
|
|
1170
|
-
C: (f, a) => f(...a)
|
|
1171
|
-
});
|
|
1109
|
+
log.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 48, S: void 0 });
|
|
1172
1110
|
})
|
|
1173
1111
|
].filter(isTruthy2)
|
|
1174
1112
|
});
|
|
@@ -1195,12 +1133,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
|
1195
1133
|
return () => {
|
|
1196
1134
|
log("destroy", {
|
|
1197
1135
|
id
|
|
1198
|
-
}, {
|
|
1199
|
-
F: __dxlog_file3,
|
|
1200
|
-
L: 122,
|
|
1201
|
-
S: void 0,
|
|
1202
|
-
C: (f, a) => f(...a)
|
|
1203
|
-
});
|
|
1136
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 75, S: void 0 });
|
|
1204
1137
|
view2?.destroy();
|
|
1205
1138
|
};
|
|
1206
1139
|
}, deps);
|
|
@@ -1212,12 +1145,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
|
1212
1145
|
length: view.state.doc.length,
|
|
1213
1146
|
scrollTo,
|
|
1214
1147
|
selection
|
|
1215
|
-
}, {
|
|
1216
|
-
F: __dxlog_file3,
|
|
1217
|
-
L: 131,
|
|
1218
|
-
S: void 0,
|
|
1219
|
-
C: (f, a) => f(...a)
|
|
1220
|
-
});
|
|
1148
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 85, S: void 0 });
|
|
1221
1149
|
return;
|
|
1222
1150
|
}
|
|
1223
1151
|
view.dispatch(createEditorStateTransaction({
|
|
@@ -1313,6 +1241,8 @@ var createEditorController = (view) => {
|
|
|
1313
1241
|
|
|
1314
1242
|
// src/components/Editor/EditorView.tsx
|
|
1315
1243
|
var EditorView3 = /* @__PURE__ */ forwardRef(({ classNames, id, extensions, selectionEnd, focusable = true, value, onChange, ...props }, forwardedRef) => {
|
|
1244
|
+
const onChangeRef = useRef4(onChange);
|
|
1245
|
+
onChangeRef.current = onChange;
|
|
1316
1246
|
const { parentRef, focusAttributes, view } = useTextEditor(() => ({
|
|
1317
1247
|
id,
|
|
1318
1248
|
initialValue: value,
|
|
@@ -1322,7 +1252,7 @@ var EditorView3 = /* @__PURE__ */ forwardRef(({ classNames, id, extensions, sele
|
|
|
1322
1252
|
NaturalEditorView.updateListener.of(({ view: view2, docChanged, transactions }) => {
|
|
1323
1253
|
const isInitialSync = transactions.some((tr) => tr.annotation(Transaction.userEvent) === initialSync.value);
|
|
1324
1254
|
if (!isInitialSync && docChanged) {
|
|
1325
|
-
|
|
1255
|
+
onChangeRef.current?.(view2.state.doc.toString());
|
|
1326
1256
|
}
|
|
1327
1257
|
})
|
|
1328
1258
|
],
|
|
@@ -1330,8 +1260,7 @@ var EditorView3 = /* @__PURE__ */ forwardRef(({ classNames, id, extensions, sele
|
|
|
1330
1260
|
}), [
|
|
1331
1261
|
id,
|
|
1332
1262
|
extensions,
|
|
1333
|
-
selectionEnd
|
|
1334
|
-
onChange
|
|
1263
|
+
selectionEnd
|
|
1335
1264
|
]);
|
|
1336
1265
|
useImperativeHandle(forwardedRef, () => {
|
|
1337
1266
|
return createEditorController(view);
|
|
@@ -1340,22 +1269,32 @@ var EditorView3 = /* @__PURE__ */ forwardRef(({ classNames, id, extensions, sele
|
|
|
1340
1269
|
view
|
|
1341
1270
|
]);
|
|
1342
1271
|
useEffect3(() => {
|
|
1272
|
+
if (!view) {
|
|
1273
|
+
return;
|
|
1274
|
+
}
|
|
1275
|
+
const next = value ?? "";
|
|
1276
|
+
if (view.state.doc.toString() === next) {
|
|
1277
|
+
return;
|
|
1278
|
+
}
|
|
1343
1279
|
requestAnimationFrame(() => {
|
|
1344
|
-
view
|
|
1280
|
+
if (view.state.doc.toString() === next) {
|
|
1281
|
+
return;
|
|
1282
|
+
}
|
|
1283
|
+
view.dispatch({
|
|
1345
1284
|
annotations: initialSync,
|
|
1346
|
-
changes:
|
|
1285
|
+
changes: [
|
|
1347
1286
|
{
|
|
1348
1287
|
from: 0,
|
|
1349
|
-
to: view
|
|
1350
|
-
insert:
|
|
1288
|
+
to: view.state.doc.length,
|
|
1289
|
+
insert: next
|
|
1351
1290
|
}
|
|
1352
|
-
]
|
|
1291
|
+
],
|
|
1353
1292
|
selection: selectionEnd ? {
|
|
1354
|
-
anchor:
|
|
1293
|
+
anchor: next.length
|
|
1355
1294
|
} : void 0
|
|
1356
1295
|
});
|
|
1357
1296
|
if (selectionEnd) {
|
|
1358
|
-
view
|
|
1297
|
+
view.focus();
|
|
1359
1298
|
}
|
|
1360
1299
|
});
|
|
1361
1300
|
}, [
|
|
@@ -1364,8 +1303,7 @@ var EditorView3 = /* @__PURE__ */ forwardRef(({ classNames, id, extensions, sele
|
|
|
1364
1303
|
selectionEnd
|
|
1365
1304
|
]);
|
|
1366
1305
|
return /* @__PURE__ */ React3.createElement("div", {
|
|
1367
|
-
|
|
1368
|
-
className: mx("w-full outline-hidden focus:border-accent-surface focus-within:border-neutral-focus-indicator", classNames),
|
|
1306
|
+
className: mx("w-full outline-hidden focus:border-accent-surface focus-within:border-focus-ring-subtle", classNames),
|
|
1369
1307
|
...focusable ? focusAttributes : {},
|
|
1370
1308
|
ref: parentRef
|
|
1371
1309
|
});
|
|
@@ -1408,7 +1346,6 @@ EditorRoot.displayName = "Editor.Root";
|
|
|
1408
1346
|
var EDITOR_CONTENT_NAME = "Editor.Content";
|
|
1409
1347
|
var EditorContent = ({ classNames, children }) => {
|
|
1410
1348
|
return /* @__PURE__ */ React4.createElement("div", {
|
|
1411
|
-
role: "none",
|
|
1412
1349
|
className: mx2("grid grid-rows-[min-content_1fr] h-full overflow-hidden", classNames)
|
|
1413
1350
|
}, children);
|
|
1414
1351
|
};
|
|
@@ -1434,15 +1371,7 @@ var EDITOR_TOOLBAR_NAME = "Editor.Toolbar";
|
|
|
1434
1371
|
var EditorToolbar2 = (props) => {
|
|
1435
1372
|
const { controller, state } = useEditorContext(EDITOR_TOOLBAR_NAME);
|
|
1436
1373
|
const getView = useCallback4(() => {
|
|
1437
|
-
invariant3(controller?.view, void 0, {
|
|
1438
|
-
F: __dxlog_file4,
|
|
1439
|
-
L: 163,
|
|
1440
|
-
S: void 0,
|
|
1441
|
-
A: [
|
|
1442
|
-
"controller?.view",
|
|
1443
|
-
""
|
|
1444
|
-
]
|
|
1445
|
-
});
|
|
1374
|
+
invariant3(controller?.view, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 99, S: void 0, A: ["controller?.view", ""] });
|
|
1446
1375
|
return controller?.view;
|
|
1447
1376
|
}, [
|
|
1448
1377
|
controller
|
|
@@ -1456,19 +1385,19 @@ var EditorToolbar2 = (props) => {
|
|
|
1456
1385
|
EditorToolbar2.displayName = EDITOR_TOOLBAR_NAME;
|
|
1457
1386
|
var Editor = {
|
|
1458
1387
|
Root: EditorRoot,
|
|
1388
|
+
Toolbar: EditorToolbar2,
|
|
1459
1389
|
Content: EditorContent,
|
|
1460
|
-
View: EditorView4
|
|
1461
|
-
Toolbar: EditorToolbar2
|
|
1390
|
+
View: EditorView4
|
|
1462
1391
|
};
|
|
1463
1392
|
|
|
1464
1393
|
// src/components/EditorPreviewProvider/EditorPreviewProvider.tsx
|
|
1465
1394
|
import { createContext as createContext2 } from "@radix-ui/react-context";
|
|
1466
|
-
import React5, { useCallback as useCallback5, useEffect as useEffect4, useRef as
|
|
1395
|
+
import React5, { useCallback as useCallback5, useEffect as useEffect4, useRef as useRef5, useState as useState5 } from "react";
|
|
1467
1396
|
import { addEventListener as addEventListener2 } from "@dxos/async";
|
|
1468
1397
|
import { DX_ANCHOR_ACTIVATE as DX_ANCHOR_ACTIVATE2, Popover as Popover2 } from "@dxos/react-ui";
|
|
1469
1398
|
var [EditorPreviewContextProvider, useEditorPreview] = createContext2("PreviewPopover", {});
|
|
1470
1399
|
var EditorPreviewProvider = ({ children, onLookup }) => {
|
|
1471
|
-
const triggerRef =
|
|
1400
|
+
const triggerRef = useRef5(null);
|
|
1472
1401
|
const [value, setValue] = useState5({});
|
|
1473
1402
|
const [open, setOpen] = useState5(false);
|
|
1474
1403
|
const handleActivate = useCallback5((event) => {
|
|
@@ -1517,7 +1446,6 @@ var EditorPreviewProvider = ({ children, onLookup }) => {
|
|
|
1517
1446
|
}, /* @__PURE__ */ React5.createElement(Popover2.VirtualTrigger, {
|
|
1518
1447
|
virtualRef: triggerRef
|
|
1519
1448
|
}), /* @__PURE__ */ React5.createElement("div", {
|
|
1520
|
-
role: "none",
|
|
1521
1449
|
className: "contents",
|
|
1522
1450
|
ref: setRoot
|
|
1523
1451
|
}, children)));
|
|
@@ -1571,15 +1499,15 @@ var assistant = (options) => {
|
|
|
1571
1499
|
},
|
|
1572
1500
|
/** @apply dx-button */
|
|
1573
1501
|
".cm-panel button": {
|
|
1574
|
-
color: "var(--color-base-
|
|
1502
|
+
color: "var(--color-base-foreground) !important"
|
|
1575
1503
|
},
|
|
1576
1504
|
".cm-panel.cm-panel-lint ul": {
|
|
1577
|
-
color: "var(--color-base-
|
|
1505
|
+
color: "var(--color-base-foreground) !important",
|
|
1578
1506
|
backgroundColor: "var(--color-base-surface) !important",
|
|
1579
1507
|
marginRight: "2rem !important"
|
|
1580
1508
|
},
|
|
1581
1509
|
".cm-panel.cm-panel-lint ul [aria-selected]": {
|
|
1582
|
-
color: "var(--color-base-
|
|
1510
|
+
color: "var(--color-base-foreground) !important",
|
|
1583
1511
|
backgroundColor: "var(--color-base-surface) !important"
|
|
1584
1512
|
},
|
|
1585
1513
|
".cm-panel.cm-panel-lint ul li": {
|
|
@@ -1687,12 +1615,7 @@ var assistantLinter = ({ generate, instructions = DEFAULT_INSTRUCTIONS, autoPane
|
|
|
1687
1615
|
return diagnostics;
|
|
1688
1616
|
}
|
|
1689
1617
|
} catch (err) {
|
|
1690
|
-
log2.catch(err, void 0, {
|
|
1691
|
-
F: __dxlog_file5,
|
|
1692
|
-
L: 214,
|
|
1693
|
-
S: void 0,
|
|
1694
|
-
C: (f, a) => f(...a)
|
|
1695
|
-
});
|
|
1618
|
+
log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 169, S: void 0 });
|
|
1696
1619
|
}
|
|
1697
1620
|
return [];
|
|
1698
1621
|
}, {
|
|
@@ -1715,7 +1638,6 @@ export {
|
|
|
1715
1638
|
popover,
|
|
1716
1639
|
popoverRangeEffect,
|
|
1717
1640
|
popoverStateField,
|
|
1718
|
-
translations,
|
|
1719
1641
|
useBasicMarkdownExtensions,
|
|
1720
1642
|
useEditorContext,
|
|
1721
1643
|
useEditorMenu,
|