@dxos/react-ui-editor 0.3.11-main.1d8382a → 0.3.11-main.2c83f41
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 +38 -34
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts +2 -6
- package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TextEditor/TextEditor.d.ts +10 -6
- package/dist/types/src/components/TextEditor/TextEditor.d.ts.map +1 -1
- package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts +2 -2
- package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TextEditor/yjs.stories.d.ts +1 -1
- package/dist/types/src/index.d.ts +0 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/package.json +22 -22
- package/src/components/TextEditor/MarkdownEditor.stories.tsx +4 -7
- package/src/components/TextEditor/TextEditor.stories.tsx +4 -3
- package/src/components/TextEditor/TextEditor.tsx +45 -51
- package/src/hooks/useTextModel.ts +1 -1
- package/src/index.ts +0 -1
|
@@ -11,7 +11,7 @@ import { EditorView as EditorView12 } from "@codemirror/view";
|
|
|
11
11
|
import { useFocusableGroup } from "@fluentui/react-tabster";
|
|
12
12
|
import { vim } from "@replit/codemirror-vim";
|
|
13
13
|
import defaultsDeep2 from "lodash.defaultsdeep";
|
|
14
|
-
import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useState
|
|
14
|
+
import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useState } from "react";
|
|
15
15
|
import { generateName } from "@dxos/display-name";
|
|
16
16
|
import { useThemeContext } from "@dxos/react-ui";
|
|
17
17
|
import { getColorForValue, inputSurface, mx as mx3 } from "@dxos/react-ui-theme";
|
|
@@ -2531,23 +2531,21 @@ var EditorModes = [
|
|
|
2531
2531
|
"default",
|
|
2532
2532
|
"vim"
|
|
2533
2533
|
];
|
|
2534
|
-
var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model,
|
|
2534
|
+
var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model, readonly, comments: comments2, extensions = [], editorMode, slots = defaultSlots }, forwardedRef) => {
|
|
2535
|
+
const { themeMode } = useThemeContext();
|
|
2535
2536
|
const tabsterDOMAttribute = useFocusableGroup({
|
|
2536
2537
|
tabBehavior: "limited"
|
|
2537
2538
|
});
|
|
2538
|
-
const
|
|
2539
|
-
const
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
]);
|
|
2544
|
-
useEffect(() => {
|
|
2545
|
-
if (focus && view) {
|
|
2546
|
-
view.focus();
|
|
2547
|
-
}
|
|
2548
|
-
}, [
|
|
2549
|
-
focus,
|
|
2539
|
+
const [root, setRoot] = useState(null);
|
|
2540
|
+
const [{ state = void 0, view = void 0 } = {}, setEditor] = useState();
|
|
2541
|
+
useImperativeHandle(forwardedRef, () => ({
|
|
2542
|
+
root,
|
|
2543
|
+
state,
|
|
2550
2544
|
view
|
|
2545
|
+
}), [
|
|
2546
|
+
view,
|
|
2547
|
+
state,
|
|
2548
|
+
root
|
|
2551
2549
|
]);
|
|
2552
2550
|
const { awareness: awareness2, peer } = model;
|
|
2553
2551
|
useEffect(() => {
|
|
@@ -2584,10 +2582,10 @@ var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model, focus, readonly, comme
|
|
|
2584
2582
|
comments2
|
|
2585
2583
|
]);
|
|
2586
2584
|
useEffect(() => {
|
|
2587
|
-
if (!
|
|
2585
|
+
if (!root) {
|
|
2588
2586
|
return;
|
|
2589
2587
|
}
|
|
2590
|
-
const
|
|
2588
|
+
const state2 = EditorState2.create({
|
|
2591
2589
|
doc: model.text(),
|
|
2592
2590
|
extensions: [
|
|
2593
2591
|
readonly && EditorState2.readOnly.of(readonly),
|
|
@@ -2605,17 +2603,19 @@ var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model, focus, readonly, comme
|
|
|
2605
2603
|
].filter(Boolean)
|
|
2606
2604
|
});
|
|
2607
2605
|
view?.destroy();
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2606
|
+
setEditor({
|
|
2607
|
+
state: state2,
|
|
2608
|
+
view: new EditorView12({
|
|
2609
|
+
state: state2,
|
|
2610
|
+
parent: root
|
|
2611
|
+
})
|
|
2611
2612
|
});
|
|
2612
|
-
setView(newView);
|
|
2613
2613
|
return () => {
|
|
2614
|
-
|
|
2615
|
-
|
|
2614
|
+
view?.destroy();
|
|
2615
|
+
setEditor(void 0);
|
|
2616
2616
|
};
|
|
2617
2617
|
}, [
|
|
2618
|
-
|
|
2618
|
+
root,
|
|
2619
2619
|
model,
|
|
2620
2620
|
readonly,
|
|
2621
2621
|
editorMode,
|
|
@@ -2624,8 +2624,12 @@ var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model, focus, readonly, comme
|
|
|
2624
2624
|
const handleKeyUp = useCallback((event) => {
|
|
2625
2625
|
const { key, altKey, shiftKey, metaKey, ctrlKey } = event;
|
|
2626
2626
|
switch (key) {
|
|
2627
|
+
case "Enter": {
|
|
2628
|
+
view?.contentDOM.focus();
|
|
2629
|
+
break;
|
|
2630
|
+
}
|
|
2627
2631
|
case "Escape": {
|
|
2628
|
-
editorMode === "vim" && (altKey || shiftKey || metaKey || ctrlKey) &&
|
|
2632
|
+
editorMode === "vim" && (altKey || shiftKey || metaKey || ctrlKey) && root?.focus();
|
|
2629
2633
|
break;
|
|
2630
2634
|
}
|
|
2631
2635
|
}
|
|
@@ -2635,16 +2639,16 @@ var BaseTextEditor = /* @__PURE__ */ forwardRef(({ model, focus, readonly, comme
|
|
|
2635
2639
|
]);
|
|
2636
2640
|
return /* @__PURE__ */ React.createElement("div", {
|
|
2637
2641
|
key: model.id,
|
|
2638
|
-
ref:
|
|
2642
|
+
ref: setRoot,
|
|
2639
2643
|
tabIndex: 0,
|
|
2640
2644
|
...slots?.root,
|
|
2641
2645
|
...editorMode !== "vim" && tabsterDOMAttribute,
|
|
2642
2646
|
onKeyUp: handleKeyUp
|
|
2643
2647
|
});
|
|
2644
2648
|
});
|
|
2645
|
-
var TextEditor = /* @__PURE__ */ forwardRef(({ readonly, extensions = [], slots, ...props }, forwardedRef) => {
|
|
2649
|
+
var TextEditor = /* @__PURE__ */ forwardRef(({ readonly, extensions = [], slots: _slots, ...props }, forwardedRef) => {
|
|
2646
2650
|
const { themeMode } = useThemeContext();
|
|
2647
|
-
const
|
|
2651
|
+
const slots = defaultsDeep2({}, _slots, defaultTextSlots);
|
|
2648
2652
|
return /* @__PURE__ */ React.createElement(BaseTextEditor, {
|
|
2649
2653
|
ref: forwardedRef,
|
|
2650
2654
|
readonly,
|
|
@@ -2652,17 +2656,17 @@ var TextEditor = /* @__PURE__ */ forwardRef(({ readonly, extensions = [], slots,
|
|
|
2652
2656
|
basicBundle({
|
|
2653
2657
|
readonly,
|
|
2654
2658
|
themeMode,
|
|
2655
|
-
placeholder:
|
|
2659
|
+
placeholder: slots?.editor?.placeholder
|
|
2656
2660
|
}),
|
|
2657
2661
|
...extensions
|
|
2658
2662
|
],
|
|
2659
|
-
slots
|
|
2663
|
+
slots,
|
|
2660
2664
|
...props
|
|
2661
2665
|
});
|
|
2662
2666
|
});
|
|
2663
|
-
var MarkdownEditor = /* @__PURE__ */ forwardRef(({ readonly, extensions = [], slots, ...props }, forwardedRef) => {
|
|
2667
|
+
var MarkdownEditor = /* @__PURE__ */ forwardRef(({ readonly, extensions = [], slots: _slots, ...props }, forwardedRef) => {
|
|
2664
2668
|
const { themeMode } = useThemeContext();
|
|
2665
|
-
const
|
|
2669
|
+
const slots = defaultsDeep2({}, _slots, defaultMarkdownSlots);
|
|
2666
2670
|
return /* @__PURE__ */ React.createElement(BaseTextEditor, {
|
|
2667
2671
|
ref: forwardedRef,
|
|
2668
2672
|
readonly,
|
|
@@ -2670,11 +2674,11 @@ var MarkdownEditor = /* @__PURE__ */ forwardRef(({ readonly, extensions = [], sl
|
|
|
2670
2674
|
markdownBundle({
|
|
2671
2675
|
readonly,
|
|
2672
2676
|
themeMode,
|
|
2673
|
-
placeholder:
|
|
2677
|
+
placeholder: slots?.editor?.placeholder
|
|
2674
2678
|
}),
|
|
2675
2679
|
...extensions
|
|
2676
2680
|
],
|
|
2677
|
-
slots
|
|
2681
|
+
slots,
|
|
2678
2682
|
...props
|
|
2679
2683
|
});
|
|
2680
2684
|
});
|
|
@@ -2980,7 +2984,7 @@ var modelState = StateField5.define({
|
|
|
2980
2984
|
});
|
|
2981
2985
|
var useTextModel = (props) => {
|
|
2982
2986
|
const { identity, space, text } = props;
|
|
2983
|
-
const [model, setModel] = useState2();
|
|
2987
|
+
const [model, setModel] = useState2(() => createModel(props));
|
|
2984
2988
|
useEffect2(() => setModel(createModel(props)), [
|
|
2985
2989
|
identity,
|
|
2986
2990
|
space,
|