@dxos/react-ui-editor 0.6.12-staging.e11e696 → 0.6.13-main.041e8aa

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.
Files changed (34) hide show
  1. package/dist/lib/browser/{chunk-AZWYO7TE.mjs → chunk-CIQSMP7K.mjs} +3 -3
  2. package/dist/lib/browser/{chunk-AZWYO7TE.mjs.map → chunk-CIQSMP7K.mjs.map} +2 -2
  3. package/dist/lib/browser/index.mjs +80 -81
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/state/index.mjs +1 -1
  7. package/dist/lib/node/{chunk-5RSKGJRI.cjs → chunk-GZWIENFM.cjs} +6 -6
  8. package/dist/lib/node/{chunk-5RSKGJRI.cjs.map → chunk-GZWIENFM.cjs.map} +2 -2
  9. package/dist/lib/node/index.cjs +108 -108
  10. package/dist/lib/node/index.cjs.map +4 -4
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/state/index.cjs +7 -7
  13. package/dist/lib/node/state/index.cjs.map +1 -1
  14. package/dist/lib/node-esm/{chunk-RCIWLRIY.mjs → chunk-GP5RCZ3X.mjs} +3 -3
  15. package/dist/lib/node-esm/{chunk-RCIWLRIY.mjs.map → chunk-GP5RCZ3X.mjs.map} +2 -2
  16. package/dist/lib/node-esm/index.mjs +80 -81
  17. package/dist/lib/node-esm/index.mjs.map +4 -4
  18. package/dist/lib/node-esm/meta.json +1 -1
  19. package/dist/lib/node-esm/state/index.mjs +1 -1
  20. package/dist/types/src/extensions/comments.d.ts.map +1 -1
  21. package/dist/types/src/extensions/listener.d.ts +1 -0
  22. package/dist/types/src/extensions/listener.d.ts.map +1 -1
  23. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  24. package/dist/types/src/state/state.d.ts +2 -2
  25. package/dist/types/src/state/state.d.ts.map +1 -1
  26. package/dist/types/src/util.d.ts +6 -0
  27. package/dist/types/src/util.d.ts.map +1 -1
  28. package/package.json +28 -24
  29. package/src/extensions/command/hint.ts +1 -1
  30. package/src/extensions/comments.ts +7 -2
  31. package/src/extensions/listener.ts +1 -0
  32. package/src/hooks/useTextEditor.ts +28 -30
  33. package/src/state/state.ts +6 -3
  34. package/src/util.ts +10 -0
@@ -28,7 +28,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var node_exports = {};
30
30
  __export(node_exports, {
31
- Cursor: () => import_chunk_5RSKGJRI.Cursor,
31
+ Cursor: () => import_chunk_GZWIENFM.Cursor,
32
32
  EditorInputModes: () => EditorInputModes,
33
33
  EditorViewModes: () => EditorViewModes,
34
34
  Inline: () => Inline,
@@ -57,15 +57,16 @@ __export(node_exports, {
57
57
  createBasicExtensions: () => createBasicExtensions,
58
58
  createComment: () => createComment,
59
59
  createDataExtensions: () => createDataExtensions,
60
- createEditorStateTransaction: () => import_chunk_5RSKGJRI.createEditorStateTransaction,
60
+ createEditorStateTransaction: () => import_chunk_GZWIENFM.createEditorStateTransaction,
61
61
  createExternalCommentSync: () => createExternalCommentSync,
62
62
  createMarkdownExtensions: () => createMarkdownExtensions,
63
63
  createThemeExtensions: () => createThemeExtensions,
64
+ debugDispatcher: () => debugDispatcher,
64
65
  debugNodeLogger: () => debugNodeLogger,
65
66
  debugTree: () => debugTree,
66
67
  decorateMarkdown: () => decorateMarkdown,
67
68
  defaultOptions: () => defaultOptions,
68
- documentId: () => import_chunk_5RSKGJRI.documentId,
69
+ documentId: () => import_chunk_GZWIENFM.documentId,
69
70
  dropFile: () => dropFile,
70
71
  editorContent: () => editorContent,
71
72
  editorFullWidth: () => editorFullWidth,
@@ -84,7 +85,7 @@ __export(node_exports, {
84
85
  keymap: () => import_view.keymap,
85
86
  linkTooltip: () => linkTooltip,
86
87
  listener: () => listener,
87
- localStorageStateStoreAdapter: () => import_chunk_5RSKGJRI.localStorageStateStoreAdapter,
88
+ localStorageStateStoreAdapter: () => import_chunk_GZWIENFM.localStorageStateStoreAdapter,
88
89
  logChanges: () => logChanges,
89
90
  markdownHighlightStyle: () => markdownHighlightStyle,
90
91
  markdownTags: () => markdownTags,
@@ -104,8 +105,8 @@ __export(node_exports, {
104
105
  setHeading: () => setHeading,
105
106
  setSelection: () => setSelection,
106
107
  setStyle: () => setStyle,
107
- singleValueFacet: () => import_chunk_5RSKGJRI.singleValueFacet,
108
- state: () => import_chunk_5RSKGJRI.state,
108
+ singleValueFacet: () => import_chunk_GZWIENFM.singleValueFacet,
109
+ state: () => import_chunk_GZWIENFM.state,
109
110
  table: () => table,
110
111
  tags: () => import_highlight.tags,
111
112
  toggleBlockquote: () => toggleBlockquote,
@@ -127,7 +128,7 @@ __export(node_exports, {
127
128
  useToolbarContext: () => useToolbarContext
128
129
  });
129
130
  module.exports = __toCommonJS(node_exports);
130
- var import_chunk_5RSKGJRI = require("./chunk-5RSKGJRI.cjs");
131
+ var import_chunk_GZWIENFM = require("./chunk-GZWIENFM.cjs");
131
132
  var import_view = require("@codemirror/view");
132
133
  var import_highlight = require("@lezer/highlight");
133
134
  var import_text = require("@dxos/protocols/proto/dxos/echo/model/text");
@@ -168,19 +169,19 @@ var import_state6 = require("@codemirror/state");
168
169
  var import_view8 = require("@codemirror/view");
169
170
  var import_state7 = require("@codemirror/state");
170
171
  var import_view9 = require("@codemirror/view");
172
+ var import_log3 = require("@dxos/log");
173
+ var import_react3 = __toESM(require("react"));
174
+ var import_client = require("react-dom/client");
175
+ var import_react_ui2 = require("@dxos/react-ui");
176
+ var import_react_ui_theme2 = require("@dxos/react-ui-theme");
171
177
  var import_commands = require("@codemirror/commands");
172
178
  var import_state8 = require("@codemirror/state");
173
179
  var import_view10 = require("@codemirror/view");
174
180
  var import_lodash2 = __toESM(require("lodash.sortby"));
175
- var import_react3 = require("react");
181
+ var import_react4 = require("react");
176
182
  var import_async3 = require("@dxos/async");
177
- var import_log3 = require("@dxos/log");
178
- var import_util2 = require("@dxos/util");
179
183
  var import_log4 = require("@dxos/log");
180
- var import_react4 = __toESM(require("react"));
181
- var import_client = require("react-dom/client");
182
- var import_react_ui2 = require("@dxos/react-ui");
183
- var import_react_ui_theme2 = require("@dxos/react-ui-theme");
184
+ var import_util2 = require("@dxos/util");
184
185
  var import_log5 = require("@dxos/log");
185
186
  var import_language = require("@codemirror/language");
186
187
  var import_state9 = require("@codemirror/state");
@@ -302,7 +303,7 @@ var annotations = (options = {}) => {
302
303
  for (const match2 of matches) {
303
304
  const from = match2.index;
304
305
  const to = from + match2[0].length;
305
- const cursor = import_chunk_5RSKGJRI.Cursor.getCursorFromRange(state2, {
306
+ const cursor = import_chunk_GZWIENFM.Cursor.getCursorFromRange(state2, {
306
307
  from,
307
308
  to
308
309
  });
@@ -331,7 +332,7 @@ var annotations = (options = {}) => {
331
332
  ], (state2) => {
332
333
  const annotations2 = state2.field(annotationsState);
333
334
  const decorations = annotations2.map((annotation) => {
334
- const range = import_chunk_5RSKGJRI.Cursor.getRangeFromCursor(state2, annotation.cursor);
335
+ const range = import_chunk_GZWIENFM.Cursor.getRangeFromCursor(state2, annotation.cursor);
335
336
  return range && annotationMark.range(range.from, range.to);
336
337
  }).filter(import_util.isNotFalsy);
337
338
  return import_view2.Decoration.set(decorations);
@@ -627,7 +628,7 @@ var automerge = (accessor) => {
627
628
  });
628
629
  const syncer = new Syncer(accessor.handle, syncState);
629
630
  return [
630
- import_chunk_5RSKGJRI.Cursor.converter.of(cursorConverter(accessor)),
631
+ import_chunk_GZWIENFM.Cursor.converter.of(cursorConverter(accessor)),
631
632
  // Track heads.
632
633
  syncState,
633
634
  // Reconcile external updates.
@@ -662,7 +663,7 @@ var dummyProvider = {
662
663
  update: () => {
663
664
  }
664
665
  };
665
- var awarenessProvider = (0, import_chunk_5RSKGJRI.singleValueFacet)(dummyProvider);
666
+ var awarenessProvider = (0, import_chunk_GZWIENFM.singleValueFacet)(dummyProvider);
666
667
  var RemoteSelectionChangedAnnotation = import_state5.Annotation.define();
667
668
  var awareness = (provider = dummyProvider) => {
668
669
  return [
@@ -680,7 +681,7 @@ var RemoteSelectionsDecorator = class {
680
681
  L: 80
681
682
  });
682
683
  this.decorations = import_state5.RangeSet.of([]);
683
- this._cursorConverter = view.state.facet(import_chunk_5RSKGJRI.Cursor.converter);
684
+ this._cursorConverter = view.state.facet(import_chunk_GZWIENFM.Cursor.converter);
684
685
  this._provider = view.state.facet(awarenessProvider);
685
686
  this._provider.open();
686
687
  this._provider.remoteStateChange.on(this._ctx, () => {
@@ -1285,7 +1286,7 @@ var random = (min, max) => {
1285
1286
  }
1286
1287
  return min + ~~(Math.random() * (max - min + 1));
1287
1288
  };
1288
- var commandConfig = (0, import_chunk_5RSKGJRI.singleValueFacet)();
1289
+ var commandConfig = (0, import_chunk_GZWIENFM.singleValueFacet)();
1289
1290
  var commandState = import_state7.StateField.define({
1290
1291
  create: () => ({}),
1291
1292
  update: (state2, tr) => {
@@ -1407,6 +1408,40 @@ var clientRectsFor = (dom) => {
1407
1408
  return [];
1408
1409
  }
1409
1410
  };
1411
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/util/error.ts";
1412
+ var wrapWithCatch = (fn) => {
1413
+ return (...args) => {
1414
+ try {
1415
+ return fn(...args);
1416
+ } catch (err) {
1417
+ import_log3.log.catch(err, void 0, {
1418
+ F: __dxlog_file5,
1419
+ L: 12,
1420
+ S: void 0,
1421
+ C: (f, a) => f(...a)
1422
+ });
1423
+ }
1424
+ };
1425
+ };
1426
+ var overlap = (a, b) => a.from <= b.to && a.to >= b.from;
1427
+ var createElement = (tag, options, children) => {
1428
+ const el = document.createElement(tag);
1429
+ if (options?.className) {
1430
+ el.className = options.className;
1431
+ }
1432
+ if (children) {
1433
+ el.append(...Array.isArray(children) ? children : [
1434
+ children
1435
+ ]);
1436
+ }
1437
+ return el;
1438
+ };
1439
+ var renderRoot = (root, node) => {
1440
+ (0, import_client.createRoot)(root).render(/* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ThemeProvider, {
1441
+ tx: import_react_ui_theme2.defaultTx
1442
+ }, node));
1443
+ return root;
1444
+ };
1410
1445
  var CommandHint = class extends import_view8.WidgetType {
1411
1446
  constructor(content) {
1412
1447
  super();
@@ -1483,40 +1518,6 @@ var command = (options) => {
1483
1518
  })
1484
1519
  ];
1485
1520
  };
1486
- var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/util/error.ts";
1487
- var wrapWithCatch = (fn) => {
1488
- return (...args) => {
1489
- try {
1490
- return fn(...args);
1491
- } catch (err) {
1492
- import_log4.log.catch(err, void 0, {
1493
- F: __dxlog_file5,
1494
- L: 12,
1495
- S: void 0,
1496
- C: (f, a) => f(...a)
1497
- });
1498
- }
1499
- };
1500
- };
1501
- var overlap = (a, b) => a.from <= b.to && a.to >= b.from;
1502
- var createElement = (tag, options, children) => {
1503
- const el = document.createElement(tag);
1504
- if (options?.className) {
1505
- el.className = options.className;
1506
- }
1507
- if (children) {
1508
- el.append(...Array.isArray(children) ? children : [
1509
- children
1510
- ]);
1511
- }
1512
- return el;
1513
- };
1514
- var renderRoot = (root, node) => {
1515
- (0, import_client.createRoot)(root).render(/* @__PURE__ */ import_react4.default.createElement(import_react_ui2.ThemeProvider, {
1516
- tx: import_react_ui_theme2.defaultTx
1517
- }, node));
1518
- return root;
1519
- };
1520
1521
  var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/util.ts";
1521
1522
  var callbackWrapper = (fn) => (...args) => {
1522
1523
  try {
@@ -1524,12 +1525,16 @@ var callbackWrapper = (fn) => (...args) => {
1524
1525
  } catch (err) {
1525
1526
  import_log5.log.catch(err, void 0, {
1526
1527
  F: __dxlog_file6,
1527
- L: 18,
1528
+ L: 19,
1528
1529
  S: void 0,
1529
1530
  C: (f, a) => f(...a)
1530
1531
  });
1531
1532
  }
1532
1533
  };
1534
+ var debugDispatcher = (trs, view) => {
1535
+ logChanges(trs);
1536
+ view.update(trs);
1537
+ };
1533
1538
  var logChanges = (trs) => {
1534
1539
  const changes = trs.flatMap((tr) => {
1535
1540
  if (tr.changes.empty) {
@@ -1550,7 +1555,7 @@ var logChanges = (trs) => {
1550
1555
  changes
1551
1556
  }, {
1552
1557
  F: __dxlog_file6,
1553
- L: 39,
1558
+ L: 49,
1554
1559
  S: void 0,
1555
1560
  C: (f, a) => f(...a)
1556
1561
  });
@@ -1562,7 +1567,7 @@ var setSelection = import_state8.StateEffect.define();
1562
1567
  var setCommentState = import_state8.StateEffect.define();
1563
1568
  var commentsState = import_state8.StateField.define({
1564
1569
  create: (state2) => ({
1565
- id: state2.facet(import_chunk_5RSKGJRI.documentId),
1570
+ id: state2.facet(import_chunk_GZWIENFM.documentId),
1566
1571
  comments: [],
1567
1572
  selection: {}
1568
1573
  }),
@@ -1580,7 +1585,7 @@ var commentsState = import_state8.StateField.define({
1580
1585
  if (!comment.cursor) {
1581
1586
  return void 0;
1582
1587
  }
1583
- const range = import_chunk_5RSKGJRI.Cursor.getRangeFromCursor(tr.state, comment.cursor);
1588
+ const range = import_chunk_GZWIENFM.Cursor.getRangeFromCursor(tr.state, comment.cursor);
1584
1589
  return range && {
1585
1590
  comment,
1586
1591
  range
@@ -1625,7 +1630,7 @@ var commentsDecorations = import_view10.EditorView.decorations.compute([
1625
1630
  const decorations = (0, import_lodash2.default)(comments2 ?? [], (range) => range.range.from)?.flatMap((comment) => {
1626
1631
  const range = comment.range;
1627
1632
  if (!range) {
1628
- import_log3.log.warn("Invalid range:", range, {
1633
+ import_log4.log.warn("Invalid range:", range, {
1629
1634
  F: __dxlog_file7,
1630
1635
  L: 143,
1631
1636
  S: void 0,
@@ -1743,7 +1748,7 @@ var trackPastedComments = (onUpdate) => {
1743
1748
  const { comments: comments2 } = update2.startState.field(commentsState);
1744
1749
  const exists = comments2.some((c) => c.comment.id === comment.id && c.range.from < c.range.to);
1745
1750
  if (!exists) {
1746
- const cursor = import_chunk_5RSKGJRI.Cursor.getCursorFromRange(update2.state, comment);
1751
+ const cursor = import_chunk_GZWIENFM.Cursor.getCursorFromRange(update2.state, comment);
1747
1752
  onUpdate({
1748
1753
  id: comment.id,
1749
1754
  cursor
@@ -1775,7 +1780,7 @@ var createComment = (view) => {
1775
1780
  }
1776
1781
  });
1777
1782
  }
1778
- const cursor = import_chunk_5RSKGJRI.Cursor.getCursorFromRange(view.state, {
1783
+ const cursor = import_chunk_GZWIENFM.Cursor.getCursorFromRange(view.state, {
1779
1784
  from,
1780
1785
  to
1781
1786
  });
@@ -1789,13 +1794,13 @@ var createComment = (view) => {
1789
1794
  }
1790
1795
  return false;
1791
1796
  };
1792
- var optionsFacet = (0, import_chunk_5RSKGJRI.singleValueFacet)();
1797
+ var optionsFacet = (0, import_chunk_GZWIENFM.singleValueFacet)();
1793
1798
  var comments = (options = {}) => {
1794
1799
  const { key: shortcut = "meta-'" } = options;
1795
1800
  const handleSelect = (0, import_async3.debounce)((state2) => options.onSelect?.(state2), 200);
1796
1801
  return [
1797
1802
  optionsFacet.of(options),
1798
- options.id ? import_chunk_5RSKGJRI.documentId.of(options.id) : void 0,
1803
+ options.id ? import_chunk_GZWIENFM.documentId.of(options.id) : void 0,
1799
1804
  commentsState,
1800
1805
  commentsDecorations,
1801
1806
  handleCommentClick,
@@ -1848,7 +1853,7 @@ var comments = (options = {}) => {
1848
1853
  changes.iterChanges((from, to, from2, to2) => {
1849
1854
  comments2.forEach(({ comment, range }) => {
1850
1855
  if (from2 === to2) {
1851
- const newRange = import_chunk_5RSKGJRI.Cursor.getRangeFromCursor(view.state, comment.cursor);
1856
+ const newRange = import_chunk_GZWIENFM.Cursor.getRangeFromCursor(view.state, comment.cursor);
1852
1857
  if (!newRange || newRange.to - newRange.from === 0) {
1853
1858
  options.onDelete?.({
1854
1859
  id: comment.id
@@ -1856,7 +1861,7 @@ var comments = (options = {}) => {
1856
1861
  }
1857
1862
  }
1858
1863
  if (from <= range.to) {
1859
- const newRange = import_chunk_5RSKGJRI.Cursor.getRangeFromCursor(view.state, comment.cursor);
1864
+ const newRange = import_chunk_GZWIENFM.Cursor.getRangeFromCursor(view.state, comment.cursor);
1860
1865
  Object.assign(range, newRange);
1861
1866
  mod = true;
1862
1867
  }
@@ -1898,7 +1903,7 @@ var comments = (options = {}) => {
1898
1903
  });
1899
1904
  handleSelect({
1900
1905
  selection,
1901
- id: state2.facet(import_chunk_5RSKGJRI.documentId),
1906
+ id: state2.facet(import_chunk_GZWIENFM.documentId),
1902
1907
  comments: comments2.map(({ comment, range }) => ({
1903
1908
  comment,
1904
1909
  range,
@@ -1915,7 +1920,7 @@ var scrollThreadIntoView = (view, id, center = true) => {
1915
1920
  if (!comment?.comment.cursor) {
1916
1921
  return;
1917
1922
  }
1918
- const range = import_chunk_5RSKGJRI.Cursor.getRangeFromCursor(view.state, comment.comment.cursor);
1923
+ const range = import_chunk_GZWIENFM.Cursor.getRangeFromCursor(view.state, comment.comment.cursor);
1919
1924
  if (range) {
1920
1925
  const currentSelection = view.state.selection.main;
1921
1926
  const currentScrollPosition = view.scrollDOM.scrollTop;
@@ -1940,8 +1945,11 @@ var scrollThreadIntoView = (view, id, center = true) => {
1940
1945
  }
1941
1946
  };
1942
1947
  var selectionOverlapsComment = (state2) => {
1948
+ const commentState = state2.field(commentsState, false);
1949
+ if (commentState === void 0) {
1950
+ return false;
1951
+ }
1943
1952
  const { selection } = state2;
1944
- const commentState = state2.field(commentsState);
1945
1953
  for (const range of selection.ranges) {
1946
1954
  if (commentState.comments.some(({ range: commentRange }) => overlap(commentRange, range))) {
1947
1955
  return true;
@@ -1959,7 +1967,7 @@ var ExternalCommentSync = class {
1959
1967
  };
1960
1968
  const updateComments = () => {
1961
1969
  const comments2 = getComments();
1962
- if (id === view.state.facet(import_chunk_5RSKGJRI.documentId)) {
1970
+ if (id === view.state.facet(import_chunk_GZWIENFM.documentId)) {
1963
1971
  queueMicrotask(() => view.dispatch({
1964
1972
  effects: setComments.of({
1965
1973
  id,
@@ -1977,11 +1985,11 @@ var createExternalCommentSync = (id, subscribe, getComments) => import_view10.Vi
1977
1985
  }
1978
1986
  });
1979
1987
  var useCommentState = () => {
1980
- const [state2, setState] = (0, import_react3.useState)({
1988
+ const [state2, setState] = (0, import_react4.useState)({
1981
1989
  comment: false,
1982
1990
  selection: false
1983
1991
  });
1984
- const observer = (0, import_react3.useMemo)(() => import_view10.EditorView.updateListener.of((update2) => {
1992
+ const observer = (0, import_react4.useMemo)(() => import_view10.EditorView.updateListener.of((update2) => {
1985
1993
  if (update2.docChanged || update2.selectionSet) {
1986
1994
  setState({
1987
1995
  comment: selectionOverlapsComment(update2.state),
@@ -1995,9 +2003,9 @@ var useCommentState = () => {
1995
2003
  ];
1996
2004
  };
1997
2005
  var useComments = (view, id, comments2) => {
1998
- (0, import_react3.useEffect)(() => {
2006
+ (0, import_react4.useEffect)(() => {
1999
2007
  if (view) {
2000
- if (id === view.state.facet(import_chunk_5RSKGJRI.documentId)) {
2008
+ if (id === view.state.facet(import_chunk_GZWIENFM.documentId)) {
2001
2009
  view.dispatch({
2002
2010
  effects: setComments.of({
2003
2011
  id,
@@ -2009,7 +2017,7 @@ var useComments = (view, id, comments2) => {
2009
2017
  });
2010
2018
  };
2011
2019
  var useCommentClickListener = (onCommentClick) => {
2012
- return (0, import_react3.useMemo)(() => import_view10.EditorView.updateListener.of((update2) => {
2020
+ return (0, import_react4.useMemo)(() => import_view10.EditorView.updateListener.of((update2) => {
2013
2021
  update2.transactions.forEach((transaction) => {
2014
2022
  transaction.effects.forEach((effect) => {
2015
2023
  if (effect.is(commentClickedEffect)) {
@@ -4750,7 +4758,7 @@ var EditorInputModes = [
4750
4758
  "vim",
4751
4759
  "vscode"
4752
4760
  ];
4753
- var editorInputMode = (0, import_chunk_5RSKGJRI.singleValueFacet)({});
4761
+ var editorInputMode = (0, import_chunk_GZWIENFM.singleValueFacet)({});
4754
4762
  var InputModeExtensions = {
4755
4763
  default: [],
4756
4764
  vscode: [
@@ -5240,7 +5248,6 @@ var instanceCount = 0;
5240
5248
  var useTextEditor = (props = {}, deps = []) => {
5241
5249
  const { id, initialValue, extensions, autoFocus, scrollTo, selection, moveToEndOfLine, debug } = (0, import_react7.useMemo)(() => (0, import_util4.getProviderValue)(props), deps ?? []);
5242
5250
  const [instanceId] = (0, import_react7.useState)(() => `text-editor-${++instanceCount}`);
5243
- const onUpdate = (0, import_react7.useRef)();
5244
5251
  const [view, setView] = (0, import_react7.useState)();
5245
5252
  const parentRef = (0, import_react7.useRef)(null);
5246
5253
  (0, import_react7.useEffect)(() => {
@@ -5252,7 +5259,7 @@ var useTextEditor = (props = {}, deps = []) => {
5252
5259
  doc: initialValue?.length ?? 0
5253
5260
  }, {
5254
5261
  F: __dxlog_file11,
5255
- L: 78,
5262
+ L: 76,
5256
5263
  S: void 0,
5257
5264
  C: (f, a) => f(...a)
5258
5265
  });
@@ -5272,43 +5279,36 @@ var useTextEditor = (props = {}, deps = []) => {
5272
5279
  doc: initialValue,
5273
5280
  selection: initialSelection,
5274
5281
  extensions: [
5275
- id && import_chunk_5RSKGJRI.documentId.of(id),
5276
- // NOTE: Doesn't catch errors in keymap functions.
5282
+ id && import_chunk_GZWIENFM.documentId.of(id),
5283
+ extensions,
5284
+ // NOTE: This doesn't catch errors in keymap functions.
5277
5285
  import_view26.EditorView.exceptionSink.of((err) => {
5278
5286
  import_log8.log.catch(err, void 0, {
5279
5287
  F: __dxlog_file11,
5280
- L: 100,
5288
+ L: 98,
5281
5289
  S: void 0,
5282
5290
  C: (f, a) => f(...a)
5283
5291
  });
5284
- }),
5285
- extensions,
5286
- import_view26.EditorView.updateListener.of(() => {
5287
- setTimeout(() => {
5288
- onUpdate.current?.();
5289
- });
5290
5292
  })
5291
5293
  ].filter(import_util4.isNotFalsy)
5292
5294
  });
5293
5295
  view2 = new import_view26.EditorView({
5294
5296
  parent: parentRef.current,
5295
5297
  state: state2,
5296
- // NOTE: Uncomment to debug/monitor all transactions.
5297
- // https://codemirror.net/docs/ref/#view.EditorView.dispatch
5298
- dispatchTransactions: (trs, view3) => {
5299
- if (debug) {
5300
- logChanges(trs);
5301
- }
5302
- view3.update(trs);
5303
- }
5298
+ scrollTo: scrollTo ? import_view26.EditorView.scrollIntoView(scrollTo, {
5299
+ yMargin: 96
5300
+ }) : void 0,
5301
+ dispatchTransactions: debug ? debugDispatcher : void 0
5304
5302
  });
5305
- if (!initialValue && moveToEndOfLine) {
5303
+ if (moveToEndOfLine && !initialSelection) {
5306
5304
  const { to } = view2.state.doc.lineAt(0);
5307
- view2.dispatch({
5308
- selection: {
5309
- anchor: to
5310
- }
5311
- });
5305
+ if (to) {
5306
+ view2.dispatch({
5307
+ selection: {
5308
+ anchor: to
5309
+ }
5310
+ });
5311
+ }
5312
5312
  }
5313
5313
  setView(view2);
5314
5314
  }
@@ -5326,21 +5326,20 @@ var useTextEditor = (props = {}, deps = []) => {
5326
5326
  }, deps);
5327
5327
  (0, import_react7.useEffect)(() => {
5328
5328
  if (view) {
5329
- onUpdate.current = () => {
5330
- onUpdate.current = void 0;
5331
- view.dispatch((0, import_chunk_5RSKGJRI.createEditorStateTransaction)({
5329
+ if (view.state.facet(editorInputMode).noTabster) {
5330
+ parentRef.current?.removeAttribute("data-tabster");
5331
+ }
5332
+ if (scrollTo || selection) {
5333
+ view.dispatch((0, import_chunk_GZWIENFM.createEditorStateTransaction)(view.state, {
5332
5334
  scrollTo,
5333
5335
  selection
5334
5336
  }));
5335
- };
5336
- if (view.state.facet(editorInputMode).noTabster) {
5337
- parentRef.current?.removeAttribute("data-tabster");
5338
5337
  }
5339
5338
  }
5340
5339
  }, [
5341
5340
  view,
5342
- selection,
5343
- scrollTo
5341
+ scrollTo,
5342
+ selection
5344
5343
  ]);
5345
5344
  (0, import_react7.useEffect)(() => {
5346
5345
  if (view && autoFocus) {
@@ -5412,6 +5411,7 @@ var useTextEditor = (props = {}, deps = []) => {
5412
5411
  createExternalCommentSync,
5413
5412
  createMarkdownExtensions,
5414
5413
  createThemeExtensions,
5414
+ debugDispatcher,
5415
5415
  debugNodeLogger,
5416
5416
  debugTree,
5417
5417
  decorateMarkdown,