@dxos/react-ui-editor 0.6.12 → 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 (123) hide show
  1. package/dist/lib/browser/chunk-CIQSMP7K.mjs +148 -0
  2. package/dist/lib/browser/chunk-CIQSMP7K.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +227 -345
  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 +17 -0
  7. package/dist/lib/browser/state/index.mjs.map +7 -0
  8. package/dist/lib/node/chunk-GZWIENFM.cjs +169 -0
  9. package/dist/lib/node/chunk-GZWIENFM.cjs.map +7 -0
  10. package/dist/lib/node/index.cjs +5480 -0
  11. package/dist/lib/node/index.cjs.map +7 -0
  12. package/dist/lib/node/meta.json +1 -0
  13. package/dist/lib/node/state/index.cjs +39 -0
  14. package/dist/lib/node/state/index.cjs.map +7 -0
  15. package/dist/lib/node-esm/chunk-GP5RCZ3X.mjs +150 -0
  16. package/dist/lib/node-esm/chunk-GP5RCZ3X.mjs.map +7 -0
  17. package/dist/lib/node-esm/index.mjs +5471 -0
  18. package/dist/lib/node-esm/index.mjs.map +7 -0
  19. package/dist/lib/node-esm/meta.json +1 -0
  20. package/dist/lib/node-esm/state/index.mjs +18 -0
  21. package/dist/lib/node-esm/state/index.mjs.map +7 -0
  22. package/dist/types/src/TextEditor.stories.d.ts +4 -1
  23. package/dist/types/src/TextEditor.stories.d.ts.map +1 -1
  24. package/dist/types/src/defaults.d.ts.map +1 -1
  25. package/dist/types/src/extensions/autocomplete.d.ts +2 -1
  26. package/dist/types/src/extensions/autocomplete.d.ts.map +1 -1
  27. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +1 -1
  28. package/dist/types/src/extensions/automerge/cursor.d.ts +1 -1
  29. package/dist/types/src/extensions/automerge/cursor.d.ts.map +1 -1
  30. package/dist/types/src/extensions/awareness/awareness.d.ts +2 -2
  31. package/dist/types/src/extensions/awareness/awareness.d.ts.map +1 -1
  32. package/dist/types/src/extensions/command/state.d.ts +2 -2
  33. package/dist/types/src/extensions/command/state.d.ts.map +1 -1
  34. package/dist/types/src/extensions/comments.d.ts +1 -1
  35. package/dist/types/src/extensions/comments.d.ts.map +1 -1
  36. package/dist/types/src/extensions/debug.d.ts +2 -2
  37. package/dist/types/src/extensions/debug.d.ts.map +1 -1
  38. package/dist/types/src/extensions/folding.d.ts.map +1 -1
  39. package/dist/types/src/extensions/index.d.ts +0 -4
  40. package/dist/types/src/extensions/index.d.ts.map +1 -1
  41. package/dist/types/src/extensions/listener.d.ts +1 -0
  42. package/dist/types/src/extensions/listener.d.ts.map +1 -1
  43. package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
  44. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +1 -1
  45. package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -1
  46. package/dist/types/src/extensions/markdown/link.d.ts +1 -1
  47. package/dist/types/src/extensions/markdown/link.d.ts.map +1 -1
  48. package/dist/types/src/extensions/markdown/styles.d.ts.map +1 -1
  49. package/dist/types/src/extensions/modes.d.ts +3 -3
  50. package/dist/types/src/extensions/modes.d.ts.map +1 -1
  51. package/dist/types/src/extensions/util/overlap.d.ts +1 -1
  52. package/dist/types/src/extensions/util/overlap.d.ts.map +1 -1
  53. package/dist/types/src/extensions/util/react.d.ts +1 -1
  54. package/dist/types/src/extensions/util/react.d.ts.map +1 -1
  55. package/dist/types/src/hooks/useTextEditor.d.ts +1 -1
  56. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  57. package/dist/types/src/index.d.ts +1 -0
  58. package/dist/types/src/index.d.ts.map +1 -1
  59. package/dist/types/src/{extensions → state}/cursor.d.ts +2 -2
  60. package/dist/types/src/state/cursor.d.ts.map +1 -0
  61. package/dist/types/src/state/doc.d.ts +5 -0
  62. package/dist/types/src/state/doc.d.ts.map +1 -0
  63. package/dist/types/src/state/index.d.ts +6 -0
  64. package/dist/types/src/state/index.d.ts.map +1 -0
  65. package/dist/types/src/{extensions → state}/state.d.ts +2 -2
  66. package/dist/types/src/state/state.d.ts.map +1 -0
  67. package/dist/types/src/state/types.d.ts.map +1 -0
  68. package/dist/types/src/state/util.d.ts +3 -0
  69. package/dist/types/src/state/util.d.ts.map +1 -0
  70. package/dist/types/src/styles/markdown.d.ts +1 -2
  71. package/dist/types/src/styles/markdown.d.ts.map +1 -1
  72. package/dist/types/src/styles/theme.d.ts.map +1 -1
  73. package/dist/types/src/util.d.ts +6 -0
  74. package/dist/types/src/util.d.ts.map +1 -1
  75. package/package.json +59 -38
  76. package/src/TextEditor.stories.tsx +22 -17
  77. package/src/defaults.ts +0 -2
  78. package/src/extensions/annotations.ts +1 -1
  79. package/src/extensions/autocomplete.ts +9 -8
  80. package/src/extensions/automerge/automerge.stories.tsx +1 -1
  81. package/src/extensions/automerge/{automerge.spec.tsx → automerge.test.tsx} +1 -0
  82. package/src/extensions/automerge/automerge.ts +2 -2
  83. package/src/extensions/automerge/cursor.ts +1 -1
  84. package/src/extensions/awareness/awareness.ts +3 -5
  85. package/src/extensions/command/hint.ts +1 -1
  86. package/src/extensions/command/state.ts +3 -4
  87. package/src/extensions/comments.ts +44 -45
  88. package/src/extensions/debug.ts +2 -2
  89. package/src/extensions/folding.tsx +4 -2
  90. package/src/extensions/index.ts +0 -4
  91. package/src/extensions/listener.ts +1 -0
  92. package/src/extensions/markdown/changes.test.ts +1 -3
  93. package/src/extensions/markdown/decorate.ts +49 -6
  94. package/src/extensions/markdown/formatting.test.ts +1 -3
  95. package/src/extensions/markdown/highlight.ts +0 -5
  96. package/src/extensions/markdown/link.ts +3 -2
  97. package/src/extensions/markdown/parser.test.ts +1 -2
  98. package/src/extensions/markdown/styles.ts +10 -0
  99. package/src/extensions/markdown/table.ts +3 -3
  100. package/src/extensions/modes.ts +6 -5
  101. package/src/extensions/util/overlap.ts +1 -1
  102. package/src/extensions/util/react.tsx +5 -1
  103. package/src/hooks/useTextEditor.ts +30 -31
  104. package/src/index.ts +1 -0
  105. package/src/{extensions → state}/cursor.ts +3 -6
  106. package/src/state/doc.ts +10 -0
  107. package/src/state/index.ts +11 -0
  108. package/src/{extensions → state}/state.ts +7 -3
  109. package/src/state/util.ts +13 -0
  110. package/src/styles/markdown.ts +1 -3
  111. package/src/styles/theme.ts +3 -1
  112. package/src/util.ts +10 -0
  113. package/dist/types/src/extensions/automerge/automerge.spec.d.ts +0 -2
  114. package/dist/types/src/extensions/automerge/automerge.spec.d.ts.map +0 -1
  115. package/dist/types/src/extensions/cursor.d.ts.map +0 -1
  116. package/dist/types/src/extensions/doc.d.ts +0 -6
  117. package/dist/types/src/extensions/doc.d.ts.map +0 -1
  118. package/dist/types/src/extensions/state.d.ts.map +0 -1
  119. package/dist/types/src/extensions/types.d.ts.map +0 -1
  120. package/src/extensions/automerge/automerge.test.ts +0 -13
  121. package/src/extensions/doc.ts +0 -17
  122. /package/dist/types/src/{extensions → state}/types.d.ts +0 -0
  123. /package/src/{extensions → state}/types.ts +0 -0
@@ -0,0 +1,11 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ // Non-UX exports.
6
+
7
+ export * from './cursor';
8
+ export * from './doc';
9
+ export * from './state';
10
+ export * from './types';
11
+ export * from './util';
@@ -2,7 +2,7 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { type Extension, Transaction, type TransactionSpec } from '@codemirror/state';
5
+ import { type EditorState, type Extension, Transaction, type TransactionSpec } from '@codemirror/state';
6
6
  import { EditorView, keymap } from '@codemirror/view';
7
7
 
8
8
  import { debounce } from '@dxos/async';
@@ -42,7 +42,10 @@ export const localStorageStateStoreAdapter: EditorStateOptions = {
42
42
  },
43
43
  };
44
44
 
45
- export const createEditorStateTransaction = ({ scrollTo, selection }: EditorSelectionState): TransactionSpec => {
45
+ export const createEditorStateTransaction = (
46
+ state: EditorState,
47
+ { scrollTo, selection }: EditorSelectionState,
48
+ ): TransactionSpec => {
46
49
  return {
47
50
  selection,
48
51
  scrollIntoView: !scrollTo,
@@ -54,6 +57,7 @@ export const createEditorStateTransaction = ({ scrollTo, selection }: EditorSele
54
57
  /**
55
58
  * Track scrolling and selection state to be restored when switching to document.
56
59
  */
60
+ // TODO(burdon): Rename.
57
61
  export const state = ({ getState, setState }: Partial<EditorStateOptions> = {}): Extension => {
58
62
  const setStateDebounced = debounce(setState!, 1_000);
59
63
 
@@ -86,7 +90,7 @@ export const state = ({ getState, setState }: Partial<EditorStateOptions> = {}):
86
90
  run: (view) => {
87
91
  const state = getState(view.state.facet(documentId));
88
92
  if (state) {
89
- view.dispatch(createEditorStateTransaction(state));
93
+ view.dispatch(createEditorStateTransaction(view.state, state));
90
94
  }
91
95
  return true;
92
96
  },
@@ -0,0 +1,13 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import { Facet } from '@codemirror/state';
6
+
7
+ export const singleValueFacet = <I, O = I>(defaultValue?: O) =>
8
+ Facet.define<I, O>({
9
+ // Called immediately.
10
+ combine: (providers) => {
11
+ return (providers[0] ?? defaultValue) as O;
12
+ },
13
+ });
@@ -17,11 +17,9 @@ const headings: Record<HeadingLevel, string> = {
17
17
  };
18
18
 
19
19
  export const theme = {
20
- mark: 'opacity-50',
21
20
  code: 'font-mono !no-underline text-neutral-700 dark:text-neutral-300',
22
21
  codeMark: 'font-mono text-primary-500',
23
- // TODO(burdon): Replace with widget.
24
- blockquote: 'pl-1 mr-1 border-is-4 border-orange-500 dark:border-orange-500 dark:text-neutral-500',
22
+ mark: 'opacity-50',
25
23
  heading: (level: HeadingLevel) => {
26
24
  return mx(headings[level], 'dark:text-primary-400');
27
25
  },
@@ -71,9 +71,11 @@ export const defaultTheme: ThemeStyles = {
71
71
  /**
72
72
  * Gutters
73
73
  * NOTE: Gutters should have the same top margin as the content.
74
+ * NOTE: They can't be transparent since the content needs to scroll below.
74
75
  */
75
76
  '.cm-gutters': {
76
77
  background: 'var(--surface-bg)',
78
+ borderRight: 'none',
77
79
  },
78
80
  '.cm-gutter': {},
79
81
  '.cm-gutter.cm-lineNumbers .cm-gutterElement': {
@@ -95,7 +97,7 @@ export const defaultTheme: ThemeStyles = {
95
97
  paddingInline: 0,
96
98
  },
97
99
  '.cm-activeLine': {
98
- background: 'var(--dx-hoverSurface)',
100
+ background: 'var(--dx-cmActiveLine)',
99
101
  },
100
102
 
101
103
  /**
package/src/util.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  //
4
4
 
5
5
  import type { Transaction } from '@codemirror/state';
6
+ import { type EditorView } from '@codemirror/view';
6
7
 
7
8
  import { log } from '@dxos/log';
8
9
 
@@ -19,6 +20,15 @@ export const callbackWrapper = <T extends Function>(fn: T): T =>
19
20
  }
20
21
  }) as unknown as T;
21
22
 
23
+ /**
24
+ * Log all changes before dispatching them to the view.
25
+ * https://codemirror.net/docs/ref/#view.EditorView.dispatch
26
+ */
27
+ export const debugDispatcher = (trs: readonly Transaction[], view: EditorView) => {
28
+ logChanges(trs);
29
+ view.update(trs);
30
+ };
31
+
22
32
  export const logChanges = (trs: readonly Transaction[]) => {
23
33
  const changes = trs
24
34
  .flatMap((tr) => {
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=automerge.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"automerge.spec.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/automerge/automerge.spec.tsx"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../../src/extensions/cursor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC;IAC/D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAOD,qBAAa,MAAM;IACjB,MAAM,CAAC,QAAQ,CAAC,SAAS,0CAItB;IAEH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,UAAW,WAAW,SAAS,KAAK,YAMpE;IAEF,MAAM,CAAC,QAAQ,CAAC,kBAAkB,UAAW,WAAW,UAAU,MAAM;;;kBAOtE;CACH"}
@@ -1,6 +0,0 @@
1
- import { Facet } from '@codemirror/state';
2
- /**
3
- * Currently edited document id as FQ string.
4
- */
5
- export declare const documentId: Facet<string, string>;
6
- //# sourceMappingURL=doc.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../../../../src/extensions/doc.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI1C;;GAEG;AACH,eAAO,MAAM,UAAU,uBAKrB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/extensions/state.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAe,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAWtF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC5D,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,oBAAoB,GAAG,SAAS,CAAC;CAC5D,CAAC;AAGF,eAAO,MAAM,6BAA6B,EAAE,kBAW3C,CAAC;AAEF,eAAO,MAAM,4BAA4B,4BAA6B,oBAAoB,KAAG,eAO5F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,4BAA4B,OAAO,CAAC,kBAAkB,CAAC,KAAQ,SAuChF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/extensions/types.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAIF,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -1,13 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { expect } from 'chai';
6
-
7
- import { describe, test } from '@dxos/test';
8
-
9
- describe('Test', () => {
10
- test('checks sanity', async () => {
11
- expect(true).to.be.true;
12
- });
13
- });
@@ -1,17 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { Facet } from '@codemirror/state';
6
-
7
- import { invariant } from '@dxos/invariant';
8
-
9
- /**
10
- * Currently edited document id as FQ string.
11
- */
12
- export const documentId = Facet.define<string, string>({
13
- combine: (providers) => {
14
- invariant(providers.length <= 1);
15
- return providers[0];
16
- },
17
- });
File without changes
File without changes