@dxos/react-ui-editor 0.8.3-staging.0fa589b → 0.8.4-main.28f8d3d

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 (174) hide show
  1. package/dist/lib/browser/chunk-22UMM3QJ.mjs +22 -0
  2. package/dist/lib/browser/chunk-22UMM3QJ.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +790 -700
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +1 -1
  7. package/dist/lib/browser/testing/index.mjs.map +2 -2
  8. package/dist/lib/browser/types/index.mjs +13 -0
  9. package/dist/lib/browser/types/index.mjs.map +7 -0
  10. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs +24 -0
  11. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs.map +7 -0
  12. package/dist/lib/node-esm/index.mjs +789 -700
  13. package/dist/lib/node-esm/index.mjs.map +4 -4
  14. package/dist/lib/node-esm/meta.json +1 -1
  15. package/dist/lib/node-esm/testing/index.mjs +1 -1
  16. package/dist/lib/node-esm/testing/index.mjs.map +2 -2
  17. package/dist/lib/node-esm/types/index.mjs +14 -0
  18. package/dist/lib/node-esm/types/index.mjs.map +7 -0
  19. package/dist/types/src/components/Editor/Editor.d.ts +19 -0
  20. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -0
  21. package/dist/types/src/components/Editor/index.d.ts +2 -0
  22. package/dist/types/src/components/Editor/index.d.ts.map +1 -0
  23. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  24. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  25. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  26. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
  27. package/dist/types/src/components/EditorToolbar/util.d.ts +4 -3
  28. package/dist/types/src/components/EditorToolbar/util.d.ts.map +1 -1
  29. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +1 -1
  30. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  31. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts.map +1 -1
  32. package/dist/types/src/components/index.d.ts +1 -0
  33. package/dist/types/src/components/index.d.ts.map +1 -1
  34. package/dist/types/src/extensions/autocomplete.d.ts +1 -1
  35. package/dist/types/src/extensions/autocomplete.d.ts.map +1 -1
  36. package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -1
  37. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +28 -28
  38. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +1 -1
  39. package/dist/types/src/extensions/automerge/defs.d.ts +1 -1
  40. package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -1
  41. package/dist/types/src/extensions/automerge/sync.d.ts.map +1 -1
  42. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -1
  43. package/dist/types/src/extensions/blast.d.ts.map +1 -1
  44. package/dist/types/src/extensions/command/action.d.ts +1 -1
  45. package/dist/types/src/extensions/command/action.d.ts.map +1 -1
  46. package/dist/types/src/extensions/command/command-menu.d.ts +1 -1
  47. package/dist/types/src/extensions/command/command-menu.d.ts.map +1 -1
  48. package/dist/types/src/extensions/command/command.d.ts.map +1 -1
  49. package/dist/types/src/extensions/command/hint.d.ts.map +1 -1
  50. package/dist/types/src/extensions/command/index.d.ts +1 -1
  51. package/dist/types/src/extensions/command/index.d.ts.map +1 -1
  52. package/dist/types/src/extensions/command/state.d.ts +1 -1
  53. package/dist/types/src/extensions/command/state.d.ts.map +1 -1
  54. package/dist/types/src/extensions/command/typeahead.d.ts +7 -2
  55. package/dist/types/src/extensions/command/typeahead.d.ts.map +1 -1
  56. package/dist/types/src/extensions/command/useCommandMenu.d.ts +1 -1
  57. package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +1 -1
  58. package/dist/types/src/extensions/comments.d.ts +1 -1
  59. package/dist/types/src/extensions/comments.d.ts.map +1 -1
  60. package/dist/types/src/extensions/dnd.d.ts.map +1 -1
  61. package/dist/types/src/extensions/factories.d.ts +19 -0
  62. package/dist/types/src/extensions/factories.d.ts.map +1 -1
  63. package/dist/types/src/extensions/markdown/action.d.ts.map +1 -1
  64. package/dist/types/src/extensions/markdown/changes.d.ts.map +1 -1
  65. package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
  66. package/dist/types/src/extensions/markdown/formatting.d.ts +1 -1
  67. package/dist/types/src/extensions/markdown/formatting.d.ts.map +1 -1
  68. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +1 -1
  69. package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -1
  70. package/dist/types/src/extensions/modes.d.ts +0 -7
  71. package/dist/types/src/extensions/modes.d.ts.map +1 -1
  72. package/dist/types/src/extensions/outliner/outliner.d.ts.map +1 -1
  73. package/dist/types/src/extensions/outliner/selection.d.ts.map +1 -1
  74. package/dist/types/src/extensions/outliner/tree.d.ts +1 -1
  75. package/dist/types/src/extensions/outliner/tree.d.ts.map +1 -1
  76. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  77. package/dist/types/src/index.d.ts +1 -1
  78. package/dist/types/src/index.d.ts.map +1 -1
  79. package/dist/types/src/stories/Command.stories.d.ts.map +1 -1
  80. package/dist/types/src/stories/CommandMenu.stories.d.ts +1 -1
  81. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +1 -1
  82. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  83. package/dist/types/src/stories/EditorToolbar.stories.d.ts +1 -1
  84. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  85. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  86. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  87. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  88. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  89. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  90. package/dist/types/src/stories/components/EditorStory.d.ts +2 -2
  91. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  92. package/dist/types/src/testing/util.d.ts +1 -0
  93. package/dist/types/src/testing/util.d.ts.map +1 -1
  94. package/dist/types/src/translations.d.ts +28 -29
  95. package/dist/types/src/translations.d.ts.map +1 -1
  96. package/dist/types/src/types/index.d.ts +2 -0
  97. package/dist/types/src/types/index.d.ts.map +1 -0
  98. package/dist/types/src/types/types.d.ts +21 -0
  99. package/dist/types/src/types/types.d.ts.map +1 -0
  100. package/dist/types/src/util/cursor.d.ts.map +1 -1
  101. package/dist/types/tsconfig.tsbuildinfo +1 -1
  102. package/package.json +47 -41
  103. package/src/components/Editor/Editor.tsx +39 -0
  104. package/src/components/Editor/index.ts +5 -0
  105. package/src/components/EditorToolbar/EditorToolbar.tsx +1 -1
  106. package/src/components/EditorToolbar/blocks.ts +4 -3
  107. package/src/components/EditorToolbar/formatting.ts +3 -2
  108. package/src/components/EditorToolbar/headings.ts +2 -1
  109. package/src/components/EditorToolbar/lists.ts +3 -2
  110. package/src/components/EditorToolbar/util.ts +6 -5
  111. package/src/components/EditorToolbar/view-mode.ts +3 -2
  112. package/src/components/Popover/RefDropdownMenu.tsx +10 -4
  113. package/src/components/Popover/RefPopover.tsx +4 -4
  114. package/src/components/index.ts +1 -0
  115. package/src/extensions/autocomplete.ts +3 -3
  116. package/src/extensions/automerge/automerge.stories.tsx +8 -6
  117. package/src/extensions/automerge/automerge.ts +4 -3
  118. package/src/extensions/automerge/defs.ts +1 -1
  119. package/src/extensions/automerge/sync.ts +1 -1
  120. package/src/extensions/automerge/update-automerge.ts +1 -1
  121. package/src/extensions/awareness/awareness.ts +2 -2
  122. package/src/extensions/blast.ts +3 -16
  123. package/src/extensions/command/action.ts +1 -1
  124. package/src/extensions/command/command-menu.ts +4 -3
  125. package/src/extensions/command/command.ts +3 -3
  126. package/src/extensions/command/hint.ts +2 -1
  127. package/src/extensions/command/index.ts +1 -1
  128. package/src/extensions/command/placeholder.ts +1 -1
  129. package/src/extensions/command/state.ts +4 -3
  130. package/src/extensions/command/typeahead.ts +28 -15
  131. package/src/extensions/command/useCommandMenu.ts +2 -1
  132. package/src/extensions/comments.ts +7 -6
  133. package/src/extensions/dnd.ts +1 -1
  134. package/src/extensions/factories.ts +28 -8
  135. package/src/extensions/markdown/action.ts +2 -1
  136. package/src/extensions/markdown/bundle.ts +1 -1
  137. package/src/extensions/markdown/changes.ts +1 -1
  138. package/src/extensions/markdown/decorate.ts +7 -6
  139. package/src/extensions/markdown/formatting.test.ts +7 -7
  140. package/src/extensions/markdown/formatting.ts +16 -14
  141. package/src/extensions/markdown/highlight.ts +1 -1
  142. package/src/extensions/mention.ts +1 -1
  143. package/src/extensions/modes.ts +0 -9
  144. package/src/extensions/outliner/outliner.test.ts +3 -2
  145. package/src/extensions/outliner/outliner.ts +4 -3
  146. package/src/extensions/outliner/selection.ts +1 -1
  147. package/src/extensions/outliner/tree.test.ts +2 -1
  148. package/src/extensions/outliner/tree.ts +1 -1
  149. package/src/hooks/useTextEditor.ts +3 -3
  150. package/src/index.ts +1 -1
  151. package/src/stories/Command.stories.tsx +6 -5
  152. package/src/stories/CommandMenu.stories.tsx +7 -6
  153. package/src/stories/Comments.stories.tsx +3 -2
  154. package/src/stories/EditorToolbar.stories.tsx +6 -7
  155. package/src/stories/Experimental.stories.tsx +4 -3
  156. package/src/stories/Markdown.stories.tsx +3 -2
  157. package/src/stories/Outliner.stories.tsx +4 -3
  158. package/src/stories/Preview.stories.tsx +25 -26
  159. package/src/stories/TextEditor.stories.tsx +16 -15
  160. package/src/stories/components/EditorStory.tsx +5 -5
  161. package/src/styles/theme.ts +8 -8
  162. package/src/testing/util.ts +2 -0
  163. package/src/translations.ts +4 -2
  164. package/src/types/index.ts +5 -0
  165. package/src/types/types.ts +32 -0
  166. package/src/util/cursor.ts +2 -1
  167. package/dist/lib/node/index.cjs +0 -7754
  168. package/dist/lib/node/index.cjs.map +0 -7
  169. package/dist/lib/node/meta.json +0 -1
  170. package/dist/lib/node/testing/index.cjs +0 -29
  171. package/dist/lib/node/testing/index.cjs.map +0 -7
  172. package/dist/types/src/types.d.ts +0 -14
  173. package/dist/types/src/types.d.ts.map +0 -1
  174. package/src/types.ts +0 -23
@@ -7,12 +7,13 @@ import '@dxos-theme';
7
7
  import { markdown } from '@codemirror/lang-markdown';
8
8
  import React from 'react';
9
9
 
10
- import { withLayout, withTheme, type Meta } from '@dxos/storybook-utils';
10
+ import { type Meta, withLayout, withTheme } from '@dxos/storybook-utils';
11
11
 
12
- import { EditorStory, content, defaultExtensions, headings, renderLinkTooltip, text } from './components';
13
12
  import { decorateMarkdown, image, linkTooltip, table } from '../extensions';
14
13
  import { str } from '../testing';
15
14
 
15
+ import { EditorStory, content, defaultExtensions, headings, renderLinkTooltip, text } from './components';
16
+
16
17
  const meta: Meta<typeof EditorStory> = {
17
18
  title: 'ui/react-ui-editor/Markdown',
18
19
  component: EditorStory,
@@ -9,13 +9,14 @@ import React, { useRef } from 'react';
9
9
 
10
10
  import { DropdownMenu } from '@dxos/react-ui';
11
11
  import { withAttention } from '@dxos/react-ui-attention/testing';
12
- import { withLayout, withTheme, type Meta } from '@dxos/storybook-utils';
12
+ import { type Meta, withLayout, withTheme } from '@dxos/storybook-utils';
13
13
 
14
- import { EditorStory } from './components';
15
14
  import { RefDropdownMenu } from '../components';
16
- import { outliner, listItemToString, treeFacet, deleteItem, hashtag } from '../extensions';
15
+ import { deleteItem, hashtag, listItemToString, outliner, treeFacet } from '../extensions';
17
16
  import { str } from '../testing';
18
17
 
18
+ import { EditorStory } from './components';
19
+
19
20
  type StoryProps = {
20
21
  text: string;
21
22
  };
@@ -6,7 +6,7 @@ import '@dxos-theme';
6
6
 
7
7
  import { syntaxTree } from '@codemirror/language';
8
8
  import { type EditorView } from '@codemirror/view';
9
- import React, { useState, useEffect, useMemo, useCallback } from 'react';
9
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
10
10
  import { createPortal } from 'react-dom';
11
11
 
12
12
  import { invariant } from '@dxos/invariant';
@@ -14,12 +14,13 @@ import { faker } from '@dxos/random';
14
14
  import { Popover } from '@dxos/react-ui';
15
15
  import { Card } from '@dxos/react-ui-stack';
16
16
  import { hoverableControlItem, hoverableControlItemTransition, hoverableControls } from '@dxos/react-ui-theme';
17
- import { withLayout, withTheme, type Meta } from '@dxos/storybook-utils';
17
+ import { type Meta, withLayout, withTheme } from '@dxos/storybook-utils';
18
+ import { trim } from '@dxos/util';
18
19
 
19
- import { EditorStory } from './components';
20
20
  import { PreviewProvider, useRefPopover } from '../components';
21
- import { preview, image, type PreviewLinkRef, type PreviewLinkTarget, getLinkRef } from '../extensions';
22
- import { str } from '../testing';
21
+ import { type PreviewLinkRef, type PreviewLinkTarget, getLinkRef, image, preview } from '../extensions';
22
+
23
+ import { EditorStory } from './components';
23
24
 
24
25
  const handlePreviewLookup = async ({ label, ref }: PreviewLinkRef): Promise<PreviewLinkTarget> => {
25
26
  // Random text.
@@ -48,10 +49,10 @@ const PreviewCard = () => {
48
49
  <Popover.Portal>
49
50
  <Popover.Content onOpenAutoFocus={(event) => event.preventDefault()}>
50
51
  <Popover.Viewport>
51
- <Card.Container role='popover'>
52
+ <Card.SurfaceRoot role='card--popover'>
52
53
  <Card.Heading>{target?.label}</Card.Heading>
53
54
  {target && <Card.Text classNames='line-clamp-3'>{target.text}</Card.Text>}
54
- </Card.Container>
55
+ </Card.SurfaceRoot>
55
56
  </Popover.Viewport>
56
57
  <Popover.Arrow />
57
58
  </Popover.Content>
@@ -126,13 +127,13 @@ const PreviewBlock = ({ link, el, view }: { link: PreviewLinkRef; el: HTMLElemen
126
127
  }, [handleAction, link, target]);
127
128
 
128
129
  return createPortal(
129
- <Card.Content classNames={hoverableControls}>
130
+ <Card.StaticRoot classNames={hoverableControls}>
130
131
  <div className='flex items-start'>
131
132
  {!view?.state.readOnly && (
132
133
  <Card.Toolbar classNames='is-min p-[--dx-cardSpacingInline]'>
133
134
  {(link.suggest && (
134
135
  <>
135
- <Card.ToolbarIconButton label='Discard' icon={'ph--x--regular'} onClick={handleDelete} />
136
+ <Card.ToolbarIconButton label='Discard' icon='ph--x--regular' onClick={handleDelete} />
136
137
  {target && (
137
138
  <Card.ToolbarIconButton
138
139
  classNames='bg-successSurface text-successSurfaceText'
@@ -159,7 +160,7 @@ const PreviewBlock = ({ link, el, view }: { link: PreviewLinkRef; el: HTMLElemen
159
160
  </Card.Heading>
160
161
  </div>
161
162
  {target && <Card.Text classNames='line-clamp-3 mbs-0'>{target.text}</Card.Text>}
162
- </Card.Content>,
163
+ </Card.StaticRoot>,
163
164
  el,
164
165
  );
165
166
  };
@@ -200,22 +201,20 @@ export const Default = {
200
201
  <PreviewProvider onLookup={handlePreviewLookup}>
201
202
  <EditorStory
202
203
  ref={handleViewRef}
203
- text={str(
204
- '# Preview',
205
- '',
206
- 'This project is part of the [DXOS][dxn:queue:data:123] SDK.',
207
- '',
208
- '![DXOS][?dxn:queue:data:123]',
209
- '',
210
- 'It consists of [ECHO][dxn:queue:data:echo], [HALO][dxn:queue:data:halo], and [MESH][dxn:queue:data:mesh].',
211
- '',
212
- '## Deep dive',
213
- '',
214
- '![ECHO][dxn:queue:data:echo]',
215
- '',
216
- '',
217
- '',
218
- )}
204
+ text={trim`
205
+ # Preview
206
+
207
+ This project is part of the [DXOS][dxn:queue:data:123] SDK.
208
+
209
+ ![DXOS][?dxn:queue:data:123]
210
+
211
+ It consists of [ECHO][dxn:queue:data:echo], [HALO][dxn:queue:data:halo], and [MESH][dxn:queue:data:mesh].
212
+
213
+ ## Deep dive
214
+
215
+ ![ECHO][dxn:queue:data:echo]
216
+
217
+ `}
219
218
  extensions={extensions}
220
219
  />
221
220
  <PreviewCard />
@@ -9,21 +9,8 @@ import { openSearchPanel } from '@codemirror/search';
9
9
  import React from 'react';
10
10
 
11
11
  import { log } from '@dxos/log';
12
- import { withLayout, withTheme, type Meta } from '@dxos/storybook-utils';
12
+ import { type Meta, withLayout, withTheme } from '@dxos/storybook-utils';
13
13
 
14
- import {
15
- EditorStory,
16
- allExtensions,
17
- content,
18
- defaultExtensions,
19
- global,
20
- largeWithImages,
21
- links,
22
- longText,
23
- names,
24
- renderLinkButton,
25
- text,
26
- } from './components';
27
14
  import { editorMonospace } from '../defaults';
28
15
  import {
29
16
  InputModeExtensions,
@@ -39,6 +26,20 @@ import {
39
26
  } from '../extensions';
40
27
  import { str } from '../testing';
41
28
 
29
+ import {
30
+ EditorStory,
31
+ allExtensions,
32
+ content,
33
+ defaultExtensions,
34
+ global,
35
+ largeWithImages,
36
+ links,
37
+ longText,
38
+ names,
39
+ renderLinkButton,
40
+ text,
41
+ } from './components';
42
+
42
43
  const meta: Meta<typeof EditorStory> = {
43
44
  title: 'ui/react-ui-editor/TextEditor',
44
45
  component: EditorStory,
@@ -217,7 +218,7 @@ export const Typeahead = {
217
218
  extensions={[
218
219
  decorateMarkdown({ renderLinkButton }),
219
220
  typeahead({
220
- onComplete: staticCompletion(completions, completions[0]),
221
+ onComplete: staticCompletion(completions, { minLength: 2 }),
221
222
  }),
222
223
  ]}
223
224
  />
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import { type EditorView } from '@codemirror/view';
6
- import React, { type ReactNode, forwardRef, useEffect, useState, useImperativeHandle, useMemo } from 'react';
6
+ import React, { type ReactNode, forwardRef, useEffect, useImperativeHandle, useMemo, useState } from 'react';
7
7
 
8
8
  import { Expando } from '@dxos/echo-schema';
9
9
  import { invariant } from '@dxos/invariant';
@@ -16,17 +16,17 @@ import { JsonFilter } from '@dxos/react-ui-syntax-highlighter';
16
16
  import { mx } from '@dxos/react-ui-theme';
17
17
  import { isNonNullable } from '@dxos/util';
18
18
 
19
- import { editorSlots, editorGutter } from '../../defaults';
19
+ import { editorGutter, editorSlots } from '../../defaults';
20
20
  import {
21
21
  type DebugNode,
22
22
  type ThemeExtensionsOptions,
23
- createDataExtensions,
24
23
  createBasicExtensions,
24
+ createDataExtensions,
25
25
  createMarkdownExtensions,
26
26
  createThemeExtensions,
27
27
  debugTree,
28
28
  } from '../../extensions';
29
- import { useTextEditor, type UseTextEditorProps } from '../../hooks';
29
+ import { type UseTextEditorProps, useTextEditor } from '../../hooks';
30
30
 
31
31
  // Type definitions.
32
32
  export type DebugMode = 'raw' | 'tree' | 'raw+tree';
@@ -112,7 +112,7 @@ export const EditorComponent = forwardRef<EditorView | undefined, StoryProps>(
112
112
  initialValue: text,
113
113
  extensions: [
114
114
  createDataExtensions({ id, text: createDocAccessor(object, ['content']) }),
115
- createBasicExtensions({ readOnly, placeholder, lineNumbers, scrollPastEnd: true }),
115
+ createBasicExtensions({ readOnly, placeholder, lineNumbers, scrollPastEnd: true, search: true }),
116
116
  createMarkdownExtensions({ themeMode }),
117
117
  createThemeExtensions({ themeMode, syntaxHighlighting: true, slots }),
118
118
  editorGutter,
@@ -79,18 +79,17 @@ export const defaultTheme: ThemeStyles = {
79
79
  '.cm-gutter': {},
80
80
  '.cm-gutter.cm-lineNumbers': {
81
81
  paddingRight: '4px',
82
- borderRight: '1px solid var(--dx-separator)',
82
+ borderRight: '1px solid var(--dx-subduedSeparator)',
83
83
  },
84
84
  '.cm-gutter.cm-lineNumbers .cm-gutterElement': {
85
85
  minWidth: '40px',
86
- alignContent: 'center',
87
86
  },
88
87
  /**
89
- * Height is set to match the corresponding line.
88
+ * Height is set to match the corresponding line (which may have wrapped).
90
89
  */
91
90
  '.cm-gutterElement': {
92
- alignItems: 'center',
93
91
  fontSize: '12px',
92
+ lineHeight: '24px',
94
93
  },
95
94
 
96
95
  /**
@@ -110,7 +109,7 @@ export const defaultTheme: ThemeStyles = {
110
109
  borderLeft: '2px solid var(--dx-cmCursor)',
111
110
  },
112
111
  '.cm-placeholder': {
113
- color: 'var(--dx-subdued)',
112
+ color: 'var(--dx-placeholder)',
114
113
  },
115
114
 
116
115
  /**
@@ -156,7 +155,7 @@ export const defaultTheme: ThemeStyles = {
156
155
  * Tooltip.
157
156
  */
158
157
  '.cm-tooltip': {
159
- background: 'var(--dx-baseSurface)',
158
+ background: 'var(--dx-modalSurface)',
160
159
  },
161
160
  '.cm-tooltip-below': {},
162
161
 
@@ -177,7 +176,8 @@ export const defaultTheme: ThemeStyles = {
177
176
  padding: '4px',
178
177
  },
179
178
  '.cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected]': {
180
- background: 'var(--dx-hoverSurface)',
179
+ background: 'var(--dx-accentSurface)',
180
+ color: 'var(--dx-accentSurfaceText)',
181
181
  },
182
182
  '.cm-tooltip.cm-tooltip-autocomplete > ul > completion-section': {
183
183
  paddingLeft: '4px !important',
@@ -233,7 +233,7 @@ export const defaultTheme: ThemeStyles = {
233
233
  outline: '1px solid transparent',
234
234
  },
235
235
  '.cm-panel input, .cm-panel button': {
236
- backgroundColor: 'var(--dx-input)',
236
+ backgroundColor: 'var(--dx-inputSurface)',
237
237
  },
238
238
  '.cm-panel input:focus, .cm-panel button:focus': {
239
239
  outline: '1px solid var(--dx-neutralFocusIndicator)',
@@ -2,4 +2,6 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ /** deprecated Replace with @dxos/util trim */
6
+ // TODO(burdon): Remove
5
7
  export const str = (...lines: string[]) => lines.join('\n');
@@ -2,9 +2,11 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { type Resource } from '@dxos/react-ui';
6
+
5
7
  export const translationKey = 'react-ui-editor';
6
8
 
7
- export default [
9
+ export const translations = [
8
10
  {
9
11
  'en-US': {
10
12
  [translationKey]: {
@@ -35,4 +37,4 @@ export default [
35
37
  },
36
38
  },
37
39
  },
38
- ];
40
+ ] as const satisfies Resource[];
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './types';
@@ -0,0 +1,32 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import { type EditorView } from '@codemirror/view';
6
+ import { Schema } from 'effect';
7
+
8
+ // Runtime data structure.
9
+ export type Range = {
10
+ from: number;
11
+ to: number;
12
+ };
13
+
14
+ // Persistent data structure.
15
+ // TODO(burdon): Rename annotation?
16
+ export type Comment = {
17
+ id: string;
18
+ cursor?: string;
19
+ };
20
+
21
+ /**
22
+ * Callback that renders into a DOM element within the editor.
23
+ */
24
+ export type RenderCallback<Props extends object> = (el: HTMLElement, props: Props, view: EditorView) => void;
25
+
26
+ export const EditorViewModes = ['preview', 'readonly', 'source'] as const;
27
+ export const EditorViewMode = Schema.Union(...EditorViewModes.map((mode) => Schema.Literal(mode)));
28
+ export type EditorViewMode = Schema.Schema.Type<typeof EditorViewMode>;
29
+
30
+ export const EditorInputModes = ['default', 'vim', 'vscode'] as const;
31
+ export const EditorInputMode = Schema.Union(...EditorInputModes.map((mode) => Schema.Literal(mode)));
32
+ export type EditorInputMode = Schema.Schema.Type<typeof EditorInputMode>;
@@ -4,9 +4,10 @@
4
4
 
5
5
  import { type EditorState } from '@codemirror/state';
6
6
 
7
- import { singleValueFacet } from './facet';
8
7
  import { type Range } from '../types';
9
8
 
9
+ import { singleValueFacet } from './facet';
10
+
10
11
  /**
11
12
  * Determines if two ranges overlap.
12
13
  * A range is considered to overlap if there is any intersection