@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.
@@ -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, useRef } from "react";
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, focus, readonly, comments: comments2, extensions = [], editorMode, slots = defaultSlots }, forwardedRef) => {
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 { themeMode } = useThemeContext();
2539
- const rootRef = useRef(null);
2540
- const [view, setView] = useState(null);
2541
- useImperativeHandle(forwardedRef, () => view, [
2542
- view
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 (!model || !rootRef.current) {
2585
+ if (!root) {
2588
2586
  return;
2589
2587
  }
2590
- const state = EditorState2.create({
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
- const newView = new EditorView12({
2609
- parent: rootRef.current,
2610
- state
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
- newView?.destroy();
2615
- setView(null);
2614
+ view?.destroy();
2615
+ setEditor(void 0);
2616
2616
  };
2617
2617
  }, [
2618
- rootRef,
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) && rootRef.current?.focus();
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: rootRef,
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 updatedSlots = defaultsDeep2({}, slots, defaultTextSlots);
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: updatedSlots?.editor?.placeholder
2659
+ placeholder: slots?.editor?.placeholder
2656
2660
  }),
2657
2661
  ...extensions
2658
2662
  ],
2659
- slots: updatedSlots,
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 updatedSlots = defaultsDeep2({}, slots, defaultMarkdownSlots);
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: updatedSlots?.editor?.placeholder
2677
+ placeholder: slots?.editor?.placeholder
2674
2678
  }),
2675
2679
  ...extensions
2676
2680
  ],
2677
- slots: updatedSlots,
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,