@dxos/react-ui-editor 0.6.12-staging.e11e696 → 0.6.13-main.548ca8d

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
@@ -6,7 +6,7 @@ import {
6
6
  localStorageStateStoreAdapter,
7
7
  singleValueFacet,
8
8
  state
9
- } from "./chunk-RCIWLRIY.mjs";
9
+ } from "./chunk-GP5RCZ3X.mjs";
10
10
 
11
11
  // packages/ui/react-ui-editor/src/translations.ts
12
12
  var translationKey = "react-ui-editor";
@@ -1238,6 +1238,51 @@ var clientRectsFor = (dom) => {
1238
1238
  }
1239
1239
  };
1240
1240
 
1241
+ // packages/ui/react-ui-editor/src/extensions/util/error.ts
1242
+ import { log as log3 } from "@dxos/log";
1243
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/util/error.ts";
1244
+ var wrapWithCatch = (fn) => {
1245
+ return (...args) => {
1246
+ try {
1247
+ return fn(...args);
1248
+ } catch (err) {
1249
+ log3.catch(err, void 0, {
1250
+ F: __dxlog_file5,
1251
+ L: 12,
1252
+ S: void 0,
1253
+ C: (f, a) => f(...a)
1254
+ });
1255
+ }
1256
+ };
1257
+ };
1258
+
1259
+ // packages/ui/react-ui-editor/src/extensions/util/overlap.ts
1260
+ var overlap = (a, b) => a.from <= b.to && a.to >= b.from;
1261
+
1262
+ // packages/ui/react-ui-editor/src/extensions/util/react.tsx
1263
+ import React from "react";
1264
+ import { createRoot } from "react-dom/client";
1265
+ import { ThemeProvider } from "@dxos/react-ui";
1266
+ import { defaultTx } from "@dxos/react-ui-theme";
1267
+ var createElement = (tag, options, children) => {
1268
+ const el = document.createElement(tag);
1269
+ if (options?.className) {
1270
+ el.className = options.className;
1271
+ }
1272
+ if (children) {
1273
+ el.append(...Array.isArray(children) ? children : [
1274
+ children
1275
+ ]);
1276
+ }
1277
+ return el;
1278
+ };
1279
+ var renderRoot = (root, node) => {
1280
+ createRoot(root).render(/* @__PURE__ */ React.createElement(ThemeProvider, {
1281
+ tx: defaultTx
1282
+ }, node));
1283
+ return root;
1284
+ };
1285
+
1241
1286
  // packages/ui/react-ui-editor/src/extensions/command/hint.ts
1242
1287
  var CommandHint = class extends WidgetType2 {
1243
1288
  constructor(content) {
@@ -1328,51 +1373,6 @@ import { debounce } from "@dxos/async";
1328
1373
  import { log as log5 } from "@dxos/log";
1329
1374
  import { nonNullable } from "@dxos/util";
1330
1375
 
1331
- // packages/ui/react-ui-editor/src/extensions/util/error.ts
1332
- import { log as log3 } from "@dxos/log";
1333
- var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/util/error.ts";
1334
- var wrapWithCatch = (fn) => {
1335
- return (...args) => {
1336
- try {
1337
- return fn(...args);
1338
- } catch (err) {
1339
- log3.catch(err, void 0, {
1340
- F: __dxlog_file5,
1341
- L: 12,
1342
- S: void 0,
1343
- C: (f, a) => f(...a)
1344
- });
1345
- }
1346
- };
1347
- };
1348
-
1349
- // packages/ui/react-ui-editor/src/extensions/util/overlap.ts
1350
- var overlap = (a, b) => a.from <= b.to && a.to >= b.from;
1351
-
1352
- // packages/ui/react-ui-editor/src/extensions/util/react.tsx
1353
- import React from "react";
1354
- import { createRoot } from "react-dom/client";
1355
- import { ThemeProvider } from "@dxos/react-ui";
1356
- import { defaultTx } from "@dxos/react-ui-theme";
1357
- var createElement = (tag, options, children) => {
1358
- const el = document.createElement(tag);
1359
- if (options?.className) {
1360
- el.className = options.className;
1361
- }
1362
- if (children) {
1363
- el.append(...Array.isArray(children) ? children : [
1364
- children
1365
- ]);
1366
- }
1367
- return el;
1368
- };
1369
- var renderRoot = (root, node) => {
1370
- createRoot(root).render(/* @__PURE__ */ React.createElement(ThemeProvider, {
1371
- tx: defaultTx
1372
- }, node));
1373
- return root;
1374
- };
1375
-
1376
1376
  // packages/ui/react-ui-editor/src/util.ts
1377
1377
  import { log as log4 } from "@dxos/log";
1378
1378
  var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/util.ts";
@@ -1382,12 +1382,16 @@ var callbackWrapper = (fn) => (...args) => {
1382
1382
  } catch (err) {
1383
1383
  log4.catch(err, void 0, {
1384
1384
  F: __dxlog_file6,
1385
- L: 18,
1385
+ L: 19,
1386
1386
  S: void 0,
1387
1387
  C: (f, a) => f(...a)
1388
1388
  });
1389
1389
  }
1390
1390
  };
1391
+ var debugDispatcher = (trs, view) => {
1392
+ logChanges(trs);
1393
+ view.update(trs);
1394
+ };
1391
1395
  var logChanges = (trs) => {
1392
1396
  const changes = trs.flatMap((tr) => {
1393
1397
  if (tr.changes.empty) {
@@ -1408,7 +1412,7 @@ var logChanges = (trs) => {
1408
1412
  changes
1409
1413
  }, {
1410
1414
  F: __dxlog_file6,
1411
- L: 39,
1415
+ L: 49,
1412
1416
  S: void 0,
1413
1417
  C: (f, a) => f(...a)
1414
1418
  });
@@ -1800,8 +1804,11 @@ var scrollThreadIntoView = (view, id, center = true) => {
1800
1804
  }
1801
1805
  };
1802
1806
  var selectionOverlapsComment = (state2) => {
1807
+ const commentState = state2.field(commentsState, false);
1808
+ if (commentState === void 0) {
1809
+ return false;
1810
+ }
1803
1811
  const { selection } = state2;
1804
- const commentState = state2.field(commentsState);
1805
1812
  for (const range of selection.ranges) {
1806
1813
  if (commentState.comments.some(({ range: commentRange }) => overlap(commentRange, range))) {
1807
1814
  return true;
@@ -5233,7 +5240,6 @@ var instanceCount = 0;
5233
5240
  var useTextEditor = (props = {}, deps = []) => {
5234
5241
  const { id, initialValue, extensions, autoFocus, scrollTo, selection, moveToEndOfLine, debug } = useMemo3(() => getProviderValue(props), deps ?? []);
5235
5242
  const [instanceId] = useState4(() => `text-editor-${++instanceCount}`);
5236
- const onUpdate = useRef2();
5237
5243
  const [view, setView] = useState4();
5238
5244
  const parentRef = useRef2(null);
5239
5245
  useEffect3(() => {
@@ -5245,7 +5251,7 @@ var useTextEditor = (props = {}, deps = []) => {
5245
5251
  doc: initialValue?.length ?? 0
5246
5252
  }, {
5247
5253
  F: __dxlog_file11,
5248
- L: 78,
5254
+ L: 76,
5249
5255
  S: void 0,
5250
5256
  C: (f, a) => f(...a)
5251
5257
  });
@@ -5266,42 +5272,35 @@ var useTextEditor = (props = {}, deps = []) => {
5266
5272
  selection: initialSelection,
5267
5273
  extensions: [
5268
5274
  id && documentId.of(id),
5269
- // NOTE: Doesn't catch errors in keymap functions.
5275
+ extensions,
5276
+ // NOTE: This doesn't catch errors in keymap functions.
5270
5277
  EditorView18.exceptionSink.of((err) => {
5271
5278
  log8.catch(err, void 0, {
5272
5279
  F: __dxlog_file11,
5273
- L: 100,
5280
+ L: 98,
5274
5281
  S: void 0,
5275
5282
  C: (f, a) => f(...a)
5276
5283
  });
5277
- }),
5278
- extensions,
5279
- EditorView18.updateListener.of(() => {
5280
- setTimeout(() => {
5281
- onUpdate.current?.();
5282
- });
5283
5284
  })
5284
5285
  ].filter(isNotFalsy3)
5285
5286
  });
5286
5287
  view2 = new EditorView18({
5287
5288
  parent: parentRef.current,
5288
5289
  state: state2,
5289
- // NOTE: Uncomment to debug/monitor all transactions.
5290
- // https://codemirror.net/docs/ref/#view.EditorView.dispatch
5291
- dispatchTransactions: (trs, view3) => {
5292
- if (debug) {
5293
- logChanges(trs);
5294
- }
5295
- view3.update(trs);
5296
- }
5290
+ scrollTo: scrollTo ? EditorView18.scrollIntoView(scrollTo, {
5291
+ yMargin: 96
5292
+ }) : void 0,
5293
+ dispatchTransactions: debug ? debugDispatcher : void 0
5297
5294
  });
5298
- if (!initialValue && moveToEndOfLine) {
5295
+ if (moveToEndOfLine && !initialSelection) {
5299
5296
  const { to } = view2.state.doc.lineAt(0);
5300
- view2.dispatch({
5301
- selection: {
5302
- anchor: to
5303
- }
5304
- });
5297
+ if (to) {
5298
+ view2.dispatch({
5299
+ selection: {
5300
+ anchor: to
5301
+ }
5302
+ });
5303
+ }
5305
5304
  }
5306
5305
  setView(view2);
5307
5306
  }
@@ -5319,21 +5318,20 @@ var useTextEditor = (props = {}, deps = []) => {
5319
5318
  }, deps);
5320
5319
  useEffect3(() => {
5321
5320
  if (view) {
5322
- onUpdate.current = () => {
5323
- onUpdate.current = void 0;
5324
- view.dispatch(createEditorStateTransaction({
5321
+ if (view.state.facet(editorInputMode).noTabster) {
5322
+ parentRef.current?.removeAttribute("data-tabster");
5323
+ }
5324
+ if (scrollTo || selection) {
5325
+ view.dispatch(createEditorStateTransaction(view.state, {
5325
5326
  scrollTo,
5326
5327
  selection
5327
5328
  }));
5328
- };
5329
- if (view.state.facet(editorInputMode).noTabster) {
5330
- parentRef.current?.removeAttribute("data-tabster");
5331
5329
  }
5332
5330
  }
5333
5331
  }, [
5334
5332
  view,
5335
- selection,
5336
- scrollTo
5333
+ scrollTo,
5334
+ selection
5337
5335
  ]);
5338
5336
  useEffect3(() => {
5339
5337
  if (view && autoFocus) {
@@ -5404,6 +5402,7 @@ export {
5404
5402
  createExternalCommentSync,
5405
5403
  createMarkdownExtensions,
5406
5404
  createThemeExtensions,
5405
+ debugDispatcher,
5407
5406
  debugNodeLogger,
5408
5407
  debugTree,
5409
5408
  decorateMarkdown,