@dxos/react-ui-editor 0.4.3-main.a51bbee → 0.4.3-main.c13b549
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 +27 -57
- 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 +3 -0
- package/dist/types/src/components/TextEditor/TextEditor.d.ts.map +1 -1
- package/dist/types/src/extensions/index.d.ts +0 -1
- package/dist/types/src/extensions/index.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/package.json +24 -24
- package/src/components/TextEditor/MarkdownEditor.stories.tsx +1 -10
- package/src/components/TextEditor/TextEditor.tsx +50 -29
- package/src/extensions/index.ts +0 -1
- package/src/index.ts +2 -3
- package/dist/types/src/extensions/modes.d.ts +0 -11
- package/dist/types/src/extensions/modes.d.ts.map +0 -1
- package/src/extensions/modes.ts +0 -36
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// packages/ui/react-ui-editor/src/index.ts
|
|
2
|
-
import { keymap as keymap8 } from "@codemirror/view";
|
|
3
2
|
import { TextKind } from "@dxos/protocols/proto/dxos/echo/model/text";
|
|
4
3
|
import { Doc, YText, YXmlFragment } from "@dxos/text-model";
|
|
4
|
+
import { keymap as keymap7 } from "@codemirror/view";
|
|
5
5
|
|
|
6
6
|
// packages/ui/react-ui-editor/src/components/TextEditor/index.ts
|
|
7
7
|
import { tags as tags2 } from "@lezer/highlight";
|
|
@@ -9,7 +9,7 @@ import { tags as tags2 } from "@lezer/highlight";
|
|
|
9
9
|
// packages/ui/react-ui-editor/src/components/TextEditor/TextEditor.tsx
|
|
10
10
|
import { EditorState as EditorState2 } from "@codemirror/state";
|
|
11
11
|
import { EditorView as EditorView15 } from "@codemirror/view";
|
|
12
|
-
import {
|
|
12
|
+
import { vim } from "@replit/codemirror-vim";
|
|
13
13
|
import defaultsDeep2 from "lodash.defaultsdeep";
|
|
14
14
|
import React, { forwardRef, useCallback, useEffect as useEffect2, useImperativeHandle, useRef, useState as useState2 } from "react";
|
|
15
15
|
import { log as log2 } from "@dxos/log";
|
|
@@ -3517,42 +3517,13 @@ var mention = ({ onSearch }) => {
|
|
|
3517
3517
|
});
|
|
3518
3518
|
};
|
|
3519
3519
|
|
|
3520
|
-
// packages/ui/react-ui-editor/src/extensions/modes.ts
|
|
3521
|
-
import { Facet as Facet4 } from "@codemirror/state";
|
|
3522
|
-
import { keymap as keymap6 } from "@codemirror/view";
|
|
3523
|
-
import { vim } from "@replit/codemirror-vim";
|
|
3524
|
-
var editorMode = Facet4.define({
|
|
3525
|
-
combine: (modes) => modes[0] ?? {}
|
|
3526
|
-
});
|
|
3527
|
-
var EditorModes = {
|
|
3528
|
-
default: [],
|
|
3529
|
-
vim: [
|
|
3530
|
-
vim(),
|
|
3531
|
-
editorMode.of({
|
|
3532
|
-
type: "vim",
|
|
3533
|
-
noTabster: true
|
|
3534
|
-
}),
|
|
3535
|
-
keymap6.of([
|
|
3536
|
-
{
|
|
3537
|
-
key: "Alt-Escape",
|
|
3538
|
-
run: (view) => {
|
|
3539
|
-
view.dispatch({
|
|
3540
|
-
userEvent: "focus.container"
|
|
3541
|
-
});
|
|
3542
|
-
return true;
|
|
3543
|
-
}
|
|
3544
|
-
}
|
|
3545
|
-
])
|
|
3546
|
-
]
|
|
3547
|
-
};
|
|
3548
|
-
|
|
3549
3520
|
// packages/ui/react-ui-editor/src/extensions/outliner.ts
|
|
3550
3521
|
var outliner = (options = {}) => {
|
|
3551
3522
|
return [];
|
|
3552
3523
|
};
|
|
3553
3524
|
|
|
3554
3525
|
// packages/ui/react-ui-editor/src/extensions/typewriter.ts
|
|
3555
|
-
import { keymap as
|
|
3526
|
+
import { keymap as keymap6 } from "@codemirror/view";
|
|
3556
3527
|
var defaultItems = [
|
|
3557
3528
|
"hello world!",
|
|
3558
3529
|
"this is a test.",
|
|
@@ -3562,7 +3533,7 @@ var typewriter = ({ delay = 75, items = defaultItems } = {}) => {
|
|
|
3562
3533
|
let t;
|
|
3563
3534
|
let idx = 0;
|
|
3564
3535
|
return [
|
|
3565
|
-
|
|
3536
|
+
keymap6.of([
|
|
3566
3537
|
{
|
|
3567
3538
|
// Reset.
|
|
3568
3539
|
key: "alt-meta-'",
|
|
@@ -3850,10 +3821,11 @@ var codeTheme = {
|
|
|
3850
3821
|
|
|
3851
3822
|
// packages/ui/react-ui-editor/src/components/TextEditor/TextEditor.tsx
|
|
3852
3823
|
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/components/TextEditor/TextEditor.tsx";
|
|
3853
|
-
var
|
|
3854
|
-
|
|
3855
|
-
|
|
3856
|
-
|
|
3824
|
+
var EditorModes = [
|
|
3825
|
+
"default",
|
|
3826
|
+
"vim"
|
|
3827
|
+
];
|
|
3828
|
+
var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model, readonly, autoFocus, scrollTo, selection, editorMode, theme, slots = defaultSlots, extensions = [], debug }, forwardedRef) => {
|
|
3857
3829
|
const { themeMode } = useThemeContext();
|
|
3858
3830
|
const rootRef = useRef(null);
|
|
3859
3831
|
const [view, setView] = useState2(null);
|
|
@@ -3888,7 +3860,7 @@ var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model, readonly, autoFocus, s
|
|
|
3888
3860
|
EditorView15.exceptionSink.of((err) => {
|
|
3889
3861
|
log2.catch(err, void 0, {
|
|
3890
3862
|
F: __dxlog_file3,
|
|
3891
|
-
L:
|
|
3863
|
+
L: 135,
|
|
3892
3864
|
S: void 0,
|
|
3893
3865
|
C: (f, a) => f(...a)
|
|
3894
3866
|
});
|
|
@@ -3904,20 +3876,14 @@ var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model, readonly, autoFocus, s
|
|
|
3904
3876
|
EditorView15.contentAttributes.of({
|
|
3905
3877
|
class: slots.content?.className ?? ""
|
|
3906
3878
|
}),
|
|
3907
|
-
// Focus.
|
|
3908
|
-
EditorView15.updateListener.of((update2) => {
|
|
3909
|
-
update2.transactions.forEach((transaction) => {
|
|
3910
|
-
if (transaction.isUserEvent("focus.container")) {
|
|
3911
|
-
rootRef.current?.focus();
|
|
3912
|
-
}
|
|
3913
|
-
});
|
|
3914
|
-
}),
|
|
3915
3879
|
// State.
|
|
3916
3880
|
EditorView15.editable.of(!readonly),
|
|
3917
3881
|
EditorState2.readOnly.of(!!readonly),
|
|
3918
3882
|
// Storage and replication.
|
|
3919
3883
|
// NOTE: This must come before user extensions.
|
|
3920
3884
|
model.extension,
|
|
3885
|
+
// TODO(burdon): Factor out? (Requires special handling for Escape/Enter below).
|
|
3886
|
+
editorMode === "vim" && vim(),
|
|
3921
3887
|
// Custom.
|
|
3922
3888
|
...extensions
|
|
3923
3889
|
].filter(isNotFalsy4)
|
|
@@ -3937,9 +3903,6 @@ var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model, readonly, autoFocus, s
|
|
|
3937
3903
|
});
|
|
3938
3904
|
view?.destroy();
|
|
3939
3905
|
setView(newView);
|
|
3940
|
-
if (state.facet(editorMode).noTabster) {
|
|
3941
|
-
rootRef.current.removeAttribute("data-tabster");
|
|
3942
|
-
}
|
|
3943
3906
|
return () => {
|
|
3944
3907
|
newView?.destroy();
|
|
3945
3908
|
setView(null);
|
|
@@ -3948,27 +3911,35 @@ var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model, readonly, autoFocus, s
|
|
|
3948
3911
|
rootRef,
|
|
3949
3912
|
model,
|
|
3950
3913
|
readonly,
|
|
3914
|
+
editorMode,
|
|
3951
3915
|
themeMode
|
|
3952
3916
|
]);
|
|
3953
3917
|
const handleKeyUp = useCallback((event) => {
|
|
3954
|
-
const { key } = event;
|
|
3918
|
+
const { key, altKey, shiftKey, metaKey, ctrlKey } = event;
|
|
3955
3919
|
switch (key) {
|
|
3956
3920
|
case "Enter": {
|
|
3957
3921
|
view?.focus();
|
|
3958
3922
|
break;
|
|
3959
3923
|
}
|
|
3924
|
+
case "Escape": {
|
|
3925
|
+
if (editorMode === "vim" && (altKey || shiftKey || metaKey || ctrlKey)) {
|
|
3926
|
+
view?.focus();
|
|
3927
|
+
}
|
|
3928
|
+
break;
|
|
3929
|
+
}
|
|
3960
3930
|
}
|
|
3961
3931
|
}, [
|
|
3962
|
-
view
|
|
3932
|
+
view,
|
|
3933
|
+
editorMode
|
|
3963
3934
|
]);
|
|
3964
3935
|
return /* @__PURE__ */ React.createElement("div", {
|
|
3965
|
-
role: "none",
|
|
3966
|
-
ref: rootRef,
|
|
3967
3936
|
key: model.id,
|
|
3937
|
+
role: "none",
|
|
3968
3938
|
tabIndex: 0,
|
|
3969
|
-
onKeyUp: handleKeyUp,
|
|
3970
3939
|
...slots.root,
|
|
3971
|
-
...tabsterDOMAttribute
|
|
3940
|
+
// {...(editorMode !== 'vim' && tabsterDOMAttribute)}
|
|
3941
|
+
onKeyUp: handleKeyUp,
|
|
3942
|
+
ref: rootRef
|
|
3972
3943
|
});
|
|
3973
3944
|
});
|
|
3974
3945
|
var TextEditor = /* @__PURE__ */ forwardRef(({ readonly, placeholder: placeholder3, lineWrapping, theme = textTheme, slots, extensions = [], ...props }, forwardedRef) => {
|
|
@@ -4672,7 +4643,6 @@ export {
|
|
|
4672
4643
|
defaultSlots,
|
|
4673
4644
|
defaultTextSlots,
|
|
4674
4645
|
defaultTheme,
|
|
4675
|
-
editorMode,
|
|
4676
4646
|
editorWithToolbarLayout,
|
|
4677
4647
|
focusComment,
|
|
4678
4648
|
formatting,
|
|
@@ -4682,7 +4652,7 @@ export {
|
|
|
4682
4652
|
hr,
|
|
4683
4653
|
image,
|
|
4684
4654
|
insertTable,
|
|
4685
|
-
|
|
4655
|
+
keymap7 as keymap,
|
|
4686
4656
|
link,
|
|
4687
4657
|
listener,
|
|
4688
4658
|
logChanges,
|