@dxos/react-ui-editor 0.8.4-main.84f28bd → 0.8.4-main.a4bbb77

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 (261) hide show
  1. package/dist/lib/browser/index.mjs +3068 -1957
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/browser/testing/index.mjs +71 -1
  5. package/dist/lib/browser/testing/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/index.mjs +3068 -1957
  7. package/dist/lib/node-esm/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/meta.json +1 -1
  9. package/dist/lib/node-esm/testing/index.mjs +71 -1
  10. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  11. package/dist/types/src/components/{Popover → CommandMenu}/CommandMenu.d.ts +10 -6
  12. package/dist/types/src/components/CommandMenu/CommandMenu.d.ts.map +1 -0
  13. package/dist/types/src/components/CommandMenu/index.d.ts +2 -0
  14. package/dist/types/src/components/CommandMenu/index.d.ts.map +1 -0
  15. package/dist/types/src/components/Editor/Editor.d.ts +15 -9
  16. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  17. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  18. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  19. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  20. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  21. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  22. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
  23. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  24. package/dist/types/src/components/EditorToolbar/util.d.ts +5 -5
  25. package/dist/types/src/components/EditorToolbar/util.d.ts.map +1 -1
  26. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +1 -1
  27. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  28. package/dist/types/src/components/index.d.ts +1 -1
  29. package/dist/types/src/components/index.d.ts.map +1 -1
  30. package/dist/types/src/defaults.d.ts.map +1 -1
  31. package/dist/types/src/extensions/autocomplete.d.ts +20 -7
  32. package/dist/types/src/extensions/autocomplete.d.ts.map +1 -1
  33. package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -1
  34. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +10 -19
  35. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +1 -1
  36. package/dist/types/src/extensions/automerge/defs.d.ts +1 -1
  37. package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -1
  38. package/dist/types/src/extensions/automerge/sync.d.ts.map +1 -1
  39. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -1
  40. package/dist/types/src/extensions/autoscroll.d.ts +10 -0
  41. package/dist/types/src/extensions/autoscroll.d.ts.map +1 -0
  42. package/dist/types/src/extensions/{command → command-dialog}/action.d.ts +1 -1
  43. package/dist/types/src/extensions/command-dialog/action.d.ts.map +1 -0
  44. package/dist/types/src/extensions/{command/command.d.ts → command-dialog/command-dialog.d.ts} +2 -2
  45. package/dist/types/src/extensions/command-dialog/command-dialog.d.ts.map +1 -0
  46. package/dist/types/src/extensions/{command → command-dialog}/hint.d.ts +2 -7
  47. package/dist/types/src/extensions/command-dialog/hint.d.ts.map +1 -0
  48. package/dist/types/src/extensions/command-dialog/index.d.ts +4 -0
  49. package/dist/types/src/extensions/command-dialog/index.d.ts.map +1 -0
  50. package/dist/types/src/extensions/{command → command-dialog}/state.d.ts +1 -1
  51. package/dist/types/src/extensions/command-dialog/state.d.ts.map +1 -0
  52. package/dist/types/src/extensions/command-dialog/typeahead.d.ts.map +1 -0
  53. package/dist/types/src/extensions/{command → command-menu}/command-menu.d.ts +3 -3
  54. package/dist/types/src/extensions/command-menu/command-menu.d.ts.map +1 -0
  55. package/dist/types/src/extensions/command-menu/index.d.ts +3 -0
  56. package/dist/types/src/extensions/command-menu/index.d.ts.map +1 -0
  57. package/dist/types/src/extensions/command-menu/placeholder.d.ts.map +1 -0
  58. package/dist/types/src/extensions/command-menu/useCommandMenu.d.ts +24 -0
  59. package/dist/types/src/extensions/command-menu/useCommandMenu.d.ts.map +1 -0
  60. package/dist/types/src/extensions/comments.d.ts +1 -1
  61. package/dist/types/src/extensions/comments.d.ts.map +1 -1
  62. package/dist/types/src/extensions/dnd.d.ts.map +1 -1
  63. package/dist/types/src/extensions/factories.d.ts +12 -16
  64. package/dist/types/src/extensions/factories.d.ts.map +1 -1
  65. package/dist/types/src/extensions/floating-menu.d.ts.map +1 -0
  66. package/dist/types/src/extensions/focus.d.ts.map +1 -1
  67. package/dist/types/src/extensions/folding.d.ts.map +1 -1
  68. package/dist/types/src/extensions/index.d.ts +5 -1
  69. package/dist/types/src/extensions/index.d.ts.map +1 -1
  70. package/dist/types/src/extensions/markdown/action.d.ts.map +1 -1
  71. package/dist/types/src/extensions/markdown/bundle.d.ts +8 -2
  72. package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -1
  73. package/dist/types/src/extensions/markdown/changes.d.ts +1 -1
  74. package/dist/types/src/extensions/markdown/changes.d.ts.map +1 -1
  75. package/dist/types/src/extensions/markdown/decorate.d.ts +9 -1
  76. package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
  77. package/dist/types/src/extensions/markdown/formatting.d.ts +1 -1
  78. package/dist/types/src/extensions/markdown/formatting.d.ts.map +1 -1
  79. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +1 -1
  80. package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -1
  81. package/dist/types/src/extensions/markdown/image.d.ts.map +1 -1
  82. package/dist/types/src/extensions/markdown/link.d.ts.map +1 -1
  83. package/dist/types/src/extensions/outliner/outliner.d.ts +1 -1
  84. package/dist/types/src/extensions/outliner/outliner.d.ts.map +1 -1
  85. package/dist/types/src/extensions/outliner/selection.d.ts.map +1 -1
  86. package/dist/types/src/extensions/outliner/tree.d.ts +2 -2
  87. package/dist/types/src/extensions/outliner/tree.d.ts.map +1 -1
  88. package/dist/types/src/extensions/preview/preview.d.ts +3 -6
  89. package/dist/types/src/extensions/preview/preview.d.ts.map +1 -1
  90. package/dist/types/src/extensions/tags/extended-markdown.d.ts +10 -0
  91. package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +1 -0
  92. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts +2 -0
  93. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +1 -0
  94. package/dist/types/src/extensions/tags/index.d.ts +4 -0
  95. package/dist/types/src/extensions/tags/index.d.ts.map +1 -0
  96. package/dist/types/src/extensions/tags/streamer.d.ts +12 -0
  97. package/dist/types/src/extensions/tags/streamer.d.ts.map +1 -0
  98. package/dist/types/src/extensions/tags/xml-tags.d.ts +72 -0
  99. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +1 -0
  100. package/dist/types/src/extensions/tags/xml-util.d.ts +10 -0
  101. package/dist/types/src/extensions/tags/xml-util.d.ts.map +1 -0
  102. package/dist/types/src/hooks/useTextEditor.d.ts +2 -2
  103. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  104. package/dist/types/src/stories/CommandDialog.stories.d.ts +14 -0
  105. package/dist/types/src/stories/CommandDialog.stories.d.ts.map +1 -0
  106. package/dist/types/src/stories/CommandMenu.stories.d.ts +10 -4
  107. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +1 -1
  108. package/dist/types/src/stories/Comments.stories.d.ts +21 -10
  109. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  110. package/dist/types/src/stories/EditorToolbar.stories.d.ts +39 -3
  111. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  112. package/dist/types/src/stories/Experimental.stories.d.ts +22 -13
  113. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  114. package/dist/types/src/stories/Markdown.stories.d.ts +32 -43
  115. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  116. package/dist/types/src/stories/Outliner.stories.d.ts +15 -21
  117. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  118. package/dist/types/src/stories/Preview.stories.d.ts +21 -7
  119. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  120. package/dist/types/src/stories/Tags.stories.d.ts +16 -0
  121. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -0
  122. package/dist/types/src/stories/TextEditor.stories.d.ts +38 -52
  123. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  124. package/dist/types/src/stories/components/EditorStory.d.ts +5 -8
  125. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  126. package/dist/types/src/styles/theme.d.ts.map +1 -1
  127. package/dist/types/src/testing/PreviewPopover.d.ts +20 -0
  128. package/dist/types/src/testing/PreviewPopover.d.ts.map +1 -0
  129. package/dist/types/src/testing/index.d.ts +1 -0
  130. package/dist/types/src/testing/index.d.ts.map +1 -1
  131. package/dist/types/src/testing/util.d.ts +1 -0
  132. package/dist/types/src/testing/util.d.ts.map +1 -1
  133. package/dist/types/src/translations.d.ts +1 -1
  134. package/dist/types/src/types/types.d.ts +1 -1
  135. package/dist/types/src/util/cursor.d.ts.map +1 -1
  136. package/dist/types/src/util/debug.d.ts +1 -1
  137. package/dist/types/src/util/debug.d.ts.map +1 -1
  138. package/dist/types/src/util/decorations.d.ts +4 -0
  139. package/dist/types/src/util/decorations.d.ts.map +1 -0
  140. package/dist/types/src/util/dom.d.ts +2 -12
  141. package/dist/types/src/util/dom.d.ts.map +1 -1
  142. package/dist/types/src/util/index.d.ts +1 -0
  143. package/dist/types/src/util/index.d.ts.map +1 -1
  144. package/dist/types/src/util/react.d.ts +1 -1
  145. package/dist/types/src/util/react.d.ts.map +1 -1
  146. package/dist/types/tsconfig.tsbuildinfo +1 -1
  147. package/package.json +67 -60
  148. package/src/components/{Popover → CommandMenu}/CommandMenu.tsx +95 -26
  149. package/src/components/{Popover → CommandMenu}/index.ts +0 -2
  150. package/src/components/Editor/Editor.tsx +50 -15
  151. package/src/components/EditorToolbar/EditorToolbar.tsx +40 -30
  152. package/src/components/EditorToolbar/blocks.ts +22 -25
  153. package/src/components/EditorToolbar/formatting.ts +22 -25
  154. package/src/components/EditorToolbar/headings.ts +10 -5
  155. package/src/components/EditorToolbar/image.ts +8 -4
  156. package/src/components/EditorToolbar/lists.ts +16 -19
  157. package/src/components/EditorToolbar/search.ts +8 -4
  158. package/src/components/EditorToolbar/util.ts +16 -5
  159. package/src/components/EditorToolbar/view-mode.ts +11 -6
  160. package/src/components/index.ts +1 -1
  161. package/src/defaults.ts +5 -2
  162. package/src/extensions/autocomplete.ts +204 -54
  163. package/src/extensions/automerge/automerge.stories.tsx +31 -24
  164. package/src/extensions/automerge/automerge.ts +4 -3
  165. package/src/extensions/automerge/defs.ts +1 -1
  166. package/src/extensions/automerge/sync.ts +1 -1
  167. package/src/extensions/automerge/update-automerge.ts +1 -1
  168. package/src/extensions/autoscroll.ts +157 -0
  169. package/src/extensions/awareness/awareness.ts +2 -2
  170. package/src/extensions/{command → command-dialog}/action.ts +2 -3
  171. package/src/extensions/{command/command.ts → command-dialog/command-dialog.ts} +4 -4
  172. package/src/extensions/{command → command-dialog}/hint.ts +2 -1
  173. package/src/extensions/command-dialog/index.ts +7 -0
  174. package/src/extensions/{command → command-dialog}/state.ts +4 -3
  175. package/src/extensions/{command → command-dialog}/typeahead.ts +2 -2
  176. package/src/extensions/{command → command-menu}/command-menu.ts +9 -9
  177. package/src/extensions/command-menu/index.ts +6 -0
  178. package/src/extensions/{command → command-menu}/placeholder.ts +1 -1
  179. package/src/extensions/{command → command-menu}/useCommandMenu.ts +35 -19
  180. package/src/extensions/comments.ts +18 -13
  181. package/src/extensions/dnd.ts +1 -1
  182. package/src/extensions/factories.ts +39 -29
  183. package/src/extensions/{command/floating-menu.ts → floating-menu.ts} +12 -19
  184. package/src/extensions/focus.ts +5 -4
  185. package/src/extensions/folding.tsx +4 -6
  186. package/src/extensions/index.ts +5 -1
  187. package/src/extensions/markdown/action.ts +2 -1
  188. package/src/extensions/markdown/bundle.ts +27 -5
  189. package/src/extensions/markdown/changes.ts +1 -1
  190. package/src/extensions/markdown/decorate.ts +24 -14
  191. package/src/extensions/markdown/formatting.test.ts +6 -6
  192. package/src/extensions/markdown/formatting.ts +3 -3
  193. package/src/extensions/markdown/highlight.ts +1 -1
  194. package/src/extensions/markdown/image.ts +3 -4
  195. package/src/extensions/markdown/link.ts +3 -0
  196. package/src/extensions/markdown/table.ts +7 -1
  197. package/src/extensions/mention.ts +1 -1
  198. package/src/extensions/outliner/outliner.test.ts +3 -2
  199. package/src/extensions/outliner/outliner.ts +6 -5
  200. package/src/extensions/outliner/selection.ts +1 -1
  201. package/src/extensions/outliner/tree.test.ts +2 -1
  202. package/src/extensions/outliner/tree.ts +2 -2
  203. package/src/extensions/preview/preview.ts +59 -62
  204. package/src/extensions/selection.ts +2 -2
  205. package/src/extensions/tags/extended-markdown.test.ts +261 -0
  206. package/src/extensions/tags/extended-markdown.ts +78 -0
  207. package/src/extensions/tags/index.ts +7 -0
  208. package/src/extensions/tags/streamer.ts +243 -0
  209. package/src/extensions/tags/xml-tags.ts +393 -0
  210. package/src/extensions/tags/xml-util.ts +94 -0
  211. package/src/hooks/useTextEditor.ts +8 -20
  212. package/src/stories/CommandDialog.stories.tsx +89 -0
  213. package/src/stories/CommandMenu.stories.tsx +34 -35
  214. package/src/stories/Comments.stories.tsx +14 -10
  215. package/src/stories/EditorToolbar.stories.tsx +13 -12
  216. package/src/stories/Experimental.stories.tsx +17 -13
  217. package/src/stories/Markdown.stories.tsx +25 -21
  218. package/src/stories/Outliner.stories.tsx +46 -34
  219. package/src/stories/Preview.stories.tsx +35 -34
  220. package/src/stories/Tags.stories.tsx +81 -0
  221. package/src/stories/TextEditor.stories.tsx +45 -38
  222. package/src/stories/components/EditorStory.tsx +12 -13
  223. package/src/styles/theme.ts +17 -15
  224. package/src/testing/PreviewPopover.tsx +78 -0
  225. package/src/testing/index.ts +1 -0
  226. package/src/testing/util.ts +2 -0
  227. package/src/translations.ts +1 -1
  228. package/src/util/cursor.ts +2 -1
  229. package/src/util/debug.ts +2 -2
  230. package/src/util/decorations.ts +21 -0
  231. package/src/util/dom.ts +5 -27
  232. package/src/util/index.ts +1 -0
  233. package/src/util/react.tsx +1 -1
  234. package/dist/types/src/components/Popover/CommandMenu.d.ts.map +0 -1
  235. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts +0 -21
  236. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts.map +0 -1
  237. package/dist/types/src/components/Popover/RefPopover.d.ts +0 -34
  238. package/dist/types/src/components/Popover/RefPopover.d.ts.map +0 -1
  239. package/dist/types/src/components/Popover/index.d.ts +0 -4
  240. package/dist/types/src/components/Popover/index.d.ts.map +0 -1
  241. package/dist/types/src/extensions/command/action.d.ts.map +0 -1
  242. package/dist/types/src/extensions/command/command-menu.d.ts.map +0 -1
  243. package/dist/types/src/extensions/command/command.d.ts.map +0 -1
  244. package/dist/types/src/extensions/command/floating-menu.d.ts.map +0 -1
  245. package/dist/types/src/extensions/command/hint.d.ts.map +0 -1
  246. package/dist/types/src/extensions/command/index.d.ts +0 -7
  247. package/dist/types/src/extensions/command/index.d.ts.map +0 -1
  248. package/dist/types/src/extensions/command/placeholder.d.ts.map +0 -1
  249. package/dist/types/src/extensions/command/state.d.ts.map +0 -1
  250. package/dist/types/src/extensions/command/typeahead.d.ts.map +0 -1
  251. package/dist/types/src/extensions/command/useCommandMenu.d.ts +0 -26
  252. package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +0 -1
  253. package/dist/types/src/stories/Command.stories.d.ts +0 -7
  254. package/dist/types/src/stories/Command.stories.d.ts.map +0 -1
  255. package/src/components/Popover/RefDropdownMenu.tsx +0 -85
  256. package/src/components/Popover/RefPopover.tsx +0 -99
  257. package/src/extensions/command/index.ts +0 -10
  258. package/src/stories/Command.stories.tsx +0 -97
  259. /package/dist/types/src/extensions/{command → command-dialog}/typeahead.d.ts +0 -0
  260. /package/dist/types/src/extensions/{command → command-menu}/placeholder.d.ts +0 -0
  261. /package/dist/types/src/extensions/{command/floating-menu.d.ts → floating-menu.d.ts} +0 -0
@@ -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,26 +16,25 @@ 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';
33
33
 
34
34
  const defaultId = 'editor-' + PublicKey.random().toHex().slice(0, 8);
35
35
 
36
- export type StoryProps = Pick<UseTextEditorProps, 'scrollTo' | 'selection' | 'extensions'> &
36
+ export type StoryProps = Pick<UseTextEditorProps, 'id' | 'scrollTo' | 'selection' | 'extensions'> &
37
37
  Pick<ThemeExtensionsOptions, 'slots'> & {
38
- id?: string;
39
38
  debug?: DebugMode;
40
39
  debugCustom?: (view: EditorView) => ReactNode;
41
40
  text?: string;
@@ -46,18 +45,18 @@ export type StoryProps = Pick<UseTextEditorProps, 'scrollTo' | 'selection' | 'ex
46
45
  onReady?: (view: EditorView) => void;
47
46
  };
48
47
 
49
- export const EditorStory = forwardRef<EditorView | undefined, StoryProps>(
48
+ export const EditorStory = forwardRef<EditorView | null, StoryProps>(
50
49
  ({ debug, debugCustom, text, extensions: _extensions, ...props }, forwardedRef) => {
51
- const attentionAttrs = useAttentionAttributes('testing');
50
+ const attentionAttrs = useAttentionAttributes('test-panel');
52
51
  const [tree, setTree] = useState<DebugNode>();
53
52
  const [object] = useState(createObject(live(Expando, { content: text ?? '' })));
54
53
  const viewRef = useForwardedRef(forwardedRef);
55
- const view = viewRef.current;
56
54
  const extensions = useMemo(
57
55
  () => (debug ? [_extensions, debugTree(setTree)].filter(isNonNullable) : _extensions),
58
56
  [debug, _extensions],
59
57
  );
60
58
 
59
+ const view = viewRef.current;
61
60
  return (
62
61
  <div className={mx('w-full h-full grid overflow-hidden', debug && 'grid-cols-2 lg:grid-cols-[1fr_600px]')}>
63
62
  <EditorComponent ref={viewRef} object={object} text={text} extensions={extensions} {...props} />
@@ -84,7 +83,7 @@ export const EditorStory = forwardRef<EditorView | undefined, StoryProps>(
84
83
  /**
85
84
  * Default story component.
86
85
  */
87
- export const EditorComponent = forwardRef<EditorView | undefined, StoryProps>(
86
+ export const EditorComponent = forwardRef<EditorView | null, StoryProps>(
88
87
  (
89
88
  {
90
89
  id = defaultId,
@@ -112,8 +111,8 @@ export const EditorComponent = forwardRef<EditorView | undefined, StoryProps>(
112
111
  initialValue: text,
113
112
  extensions: [
114
113
  createDataExtensions({ id, text: createDocAccessor(object, ['content']) }),
115
- createBasicExtensions({ readOnly, placeholder, lineNumbers, scrollPastEnd: true }),
116
- createMarkdownExtensions({ themeMode }),
114
+ createBasicExtensions({ readOnly, placeholder, lineNumbers, scrollPastEnd: true, search: true }),
115
+ createMarkdownExtensions(),
117
116
  createThemeExtensions({ themeMode, syntaxHighlighting: true, slots }),
118
117
  editorGutter,
119
118
  extensions || [],
@@ -122,7 +121,7 @@ export const EditorComponent = forwardRef<EditorView | undefined, StoryProps>(
122
121
  [id, object, extensions, themeMode],
123
122
  );
124
123
 
125
- useImperativeHandle(forwardedRef, () => view, [view]);
124
+ useImperativeHandle<EditorView | null, EditorView | null>(forwardedRef, () => view, [view]);
126
125
 
127
126
  useEffect(() => {
128
127
  if (view) {
@@ -64,7 +64,7 @@ export const defaultTheme: ThemeStyles = {
64
64
  fontFamily: fontBody,
65
65
  // NOTE: Base font size (otherwise defined by HTML tag, which might be different for storybook).
66
66
  fontSize: '16px',
67
- lineHeight: 1.5,
67
+ lineHeight: '24px',
68
68
  color: 'unset',
69
69
  },
70
70
 
@@ -74,22 +74,21 @@ export const defaultTheme: ThemeStyles = {
74
74
  */
75
75
  '.cm-gutters': {
76
76
  borderRight: 'none',
77
- background: 'transparent',
77
+ // background: 'transparent',
78
78
  },
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',
91
+ lineHeight: '24px',
93
92
  fontSize: '12px',
94
93
  },
95
94
 
@@ -97,6 +96,7 @@ export const defaultTheme: ThemeStyles = {
97
96
  * Line.
98
97
  */
99
98
  '.cm-line': {
99
+ lineHeight: '24px',
100
100
  paddingInline: 0,
101
101
  },
102
102
  '.cm-activeLine': {
@@ -165,10 +165,10 @@ export const defaultTheme: ThemeStyles = {
165
165
  * https://github.com/codemirror/autocomplete/blob/main/src/completion.ts
166
166
  */
167
167
  '.cm-tooltip.cm-tooltip-autocomplete': {
168
- marginTop: '4px',
169
- marginLeft: '-3px',
170
- borderColor: 'var(--dx-separator)',
171
- borderTop: 'none',
168
+ marginTop: '6px',
169
+ marginLeft: '-10px',
170
+ border: '2px solid var(--dx-separator)',
171
+ borderRadius: '4px',
172
172
  },
173
173
  '.cm-tooltip.cm-tooltip-autocomplete > ul': {
174
174
  maxHeight: '20em',
@@ -177,12 +177,12 @@ export const defaultTheme: ThemeStyles = {
177
177
  padding: '4px',
178
178
  },
179
179
  '.cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected]': {
180
- background: 'var(--dx-hoverSurface)',
180
+ background: 'var(--dx-activeSurface)',
181
+ color: 'var(--dx-activeSurfaceText)',
181
182
  },
182
183
  '.cm-tooltip.cm-tooltip-autocomplete > ul > completion-section': {
183
184
  paddingLeft: '4px !important',
184
- borderBottom: 'none !important',
185
- color: 'var(--dx-accentText)',
185
+ color: 'var(--dx-hoverSurfaceText)',
186
186
  },
187
187
 
188
188
  '.cm-completionInfo': {
@@ -196,10 +196,12 @@ export const defaultTheme: ThemeStyles = {
196
196
  },
197
197
  '.cm-completionLabel': {
198
198
  fontFamily: fontBody,
199
+ color: 'var(--dx-description)',
200
+ padding: '0 4px',
199
201
  },
200
202
  '.cm-completionMatchedText': {
201
203
  textDecoration: 'none !important',
202
- opacity: 0.5,
204
+ color: 'var(--dx-baseText)',
203
205
  },
204
206
 
205
207
  /**
@@ -233,7 +235,7 @@ export const defaultTheme: ThemeStyles = {
233
235
  outline: '1px solid transparent',
234
236
  },
235
237
  '.cm-panel input, .cm-panel button': {
236
- backgroundColor: 'var(--dx-input)',
238
+ backgroundColor: 'var(--dx-inputSurface)',
237
239
  },
238
240
  '.cm-panel input:focus, .cm-panel button:focus': {
239
241
  outline: '1px solid var(--dx-neutralFocusIndicator)',
@@ -0,0 +1,78 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { createContext } from '@radix-ui/react-context';
6
+ import React, { type PropsWithChildren, type RefObject, useCallback, useEffect, useRef, useState } from 'react';
7
+
8
+ import { addEventListener } from '@dxos/async';
9
+ import { type DxAnchorActivate, Popover } from '@dxos/react-ui';
10
+
11
+ import { type PreviewLinkRef, type PreviewLinkTarget } from '../extensions';
12
+
13
+ type PreviewLookup = (link: PreviewLinkRef) => Promise<PreviewLinkTarget | null | undefined>;
14
+
15
+ type PreviewPopoverValue = Partial<{
16
+ link: PreviewLinkRef;
17
+ target: PreviewLinkTarget;
18
+ pending: boolean;
19
+ }>;
20
+
21
+ const [PreviewPopoverContextProvider, usePreviewPopover] = createContext<PreviewPopoverValue>('PreviewPopover', {});
22
+
23
+ type PopoverLookupProviderProps = PropsWithChildren<{
24
+ onLookup?: PreviewLookup;
25
+ }>;
26
+
27
+ const PreviewPopoverProvider = ({ children, onLookup }: PopoverLookupProviderProps) => {
28
+ const trigger = useRef<HTMLElement | null>(null);
29
+ const [value, setValue] = useState<PreviewPopoverValue>({});
30
+ const [open, setOpen] = useState(false);
31
+
32
+ const handleDxAnchorActivate = useCallback(
33
+ (event: DxAnchorActivate) => {
34
+ const { refId, label, trigger: dxTrigger } = event;
35
+ setValue((value) => ({
36
+ ...value,
37
+ link: { label, ref: refId },
38
+ pending: true,
39
+ }));
40
+ trigger.current = dxTrigger;
41
+ queueMicrotask(() => setOpen(true));
42
+ void onLookup?.({ label, ref: refId }).then((target) =>
43
+ setValue((value) => ({
44
+ ...value,
45
+ target: target ?? undefined,
46
+ pending: false,
47
+ })),
48
+ );
49
+ },
50
+ [onLookup],
51
+ );
52
+
53
+ const [rootRef, setRootRef] = useState<HTMLDivElement | null>(null);
54
+ useEffect(() => {
55
+ if (!rootRef || !handleDxAnchorActivate) {
56
+ return;
57
+ }
58
+
59
+ return addEventListener(rootRef, 'dx-anchor-activate' as any, handleDxAnchorActivate, {
60
+ capture: true,
61
+ passive: false,
62
+ });
63
+ }, [rootRef, handleDxAnchorActivate]);
64
+
65
+ return (
66
+ <PreviewPopoverContextProvider pending={value.pending} link={value.link} target={value.target}>
67
+ <Popover.Root open={open} onOpenChange={setOpen}>
68
+ <Popover.VirtualTrigger virtualRef={trigger as unknown as RefObject<HTMLButtonElement>} />
69
+ <div role='none' className='contents' ref={setRootRef}>
70
+ {children}
71
+ </div>
72
+ </Popover.Root>
73
+ </PreviewPopoverContextProvider>
74
+ );
75
+ };
76
+ export { PreviewPopoverProvider, usePreviewPopover };
77
+
78
+ export type { PopoverLookupProviderProps, PreviewPopoverValue };
@@ -3,3 +3,4 @@
3
3
  //
4
4
 
5
5
  export * from './util';
6
+ export * from './PreviewPopover';
@@ -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');
@@ -24,8 +24,8 @@ export const translations = [
24
24
  'selection overlaps existing comment label': 'Selection overlaps existing comment',
25
25
  'select text to comment label': 'Select text to comment',
26
26
  'image label': 'Insert image',
27
- 'heading label': 'Heading level',
28
27
  'table label': 'Create table',
28
+ 'heading label': 'Heading level',
29
29
  'heading level label_zero': 'Paragraph',
30
30
  'heading level label_one': 'Heading level {{count}}',
31
31
  'heading level label_other': 'Heading level {{count}}',
@@ -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
package/src/util/debug.ts CHANGED
@@ -7,12 +7,12 @@ import { type EditorView } from '@codemirror/view';
7
7
 
8
8
  import { log } from '@dxos/log';
9
9
 
10
- export const wrapWithCatch = (fn: (...args: any[]) => any) => {
10
+ export const wrapWithCatch = (fn: (...args: any[]) => any, label?: string) => {
11
11
  return (...args: any[]) => {
12
12
  try {
13
13
  return fn(...args);
14
14
  } catch (err) {
15
- log.catch(err);
15
+ log.catch(err, { label });
16
16
  }
17
17
  };
18
18
  };
@@ -0,0 +1,21 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type Range } from '@codemirror/state';
6
+ import { type Decoration, type DecorationSet } from '@codemirror/view';
7
+
8
+ export const decorationSetToArray = (deco: DecorationSet): readonly Range<Decoration>[] => {
9
+ const ranges: Range<Decoration>[] = [];
10
+ const iter = deco.iter();
11
+ while (iter.value) {
12
+ ranges.push({
13
+ from: iter.from,
14
+ to: iter.to,
15
+ value: iter.value,
16
+ });
17
+ iter.next();
18
+ }
19
+
20
+ return ranges;
21
+ };
package/src/util/dom.ts CHANGED
@@ -2,30 +2,28 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- // Copied from @codemirror/view
6
-
7
- export interface Rect {
5
+ export type Rect = {
8
6
  readonly left: number;
9
7
  readonly right: number;
10
8
  readonly top: number;
11
9
  readonly bottom: number;
12
- }
10
+ };
13
11
 
14
- export const flattenRect = (rect: Rect, left: boolean) => {
12
+ export const flattenRect = (rect: Rect, left: boolean): Rect => {
15
13
  const x = left ? rect.left : rect.right;
16
14
  return { left: x, right: x, top: rect.top, bottom: rect.bottom };
17
15
  };
18
16
 
19
17
  let scratchRange: Range | null;
20
18
 
21
- export const textRange = (node: Text, from: number, to = from) => {
19
+ export const textRange = (node: Text, from: number, to = from): Range => {
22
20
  const range = scratchRange || (scratchRange = document.createRange());
23
21
  range.setEnd(node, to);
24
22
  range.setStart(node, from);
25
23
  return range;
26
24
  };
27
25
 
28
- export const clientRectsFor = (dom: Node) => {
26
+ export const clientRectsFor = (dom: Node): DOMRectList => {
29
27
  if (dom.nodeType === 3) {
30
28
  return textRange(dom as Text, 0, dom.nodeValue!.length).getClientRects();
31
29
  } else if (dom.nodeType === 1) {
@@ -34,23 +32,3 @@ export const clientRectsFor = (dom: Node) => {
34
32
  return [] as any as DOMRectList;
35
33
  }
36
34
  };
37
-
38
- export type ElementOptions = {
39
- className?: string;
40
- text?: string;
41
- };
42
-
43
- export const createElement = (tag: string, options?: ElementOptions, children?: HTMLElement[]): HTMLElement => {
44
- const el = document.createElement(tag);
45
- if (options?.className) {
46
- el.className = options.className;
47
- }
48
- if (options?.text) {
49
- el.textContent = options.text;
50
- }
51
- if (children) {
52
- el.append(...(Array.isArray(children) ? children : [children]));
53
- }
54
-
55
- return el;
56
- };
package/src/util/index.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  //
4
4
 
5
5
  export * from './cursor';
6
+ export * from './decorations';
6
7
  export * from './debug';
7
8
  export * from './dom';
8
9
  export * from './facet';
@@ -22,7 +22,7 @@ export const renderRoot = <T extends Element>(root: T, node: ReactNode): T => {
22
22
  * @deprecated
23
23
  */
24
24
  export const createRenderer =
25
- <Props extends object>(Component: FC<Props>): RenderCallback<Props> =>
25
+ <TProps extends object>(Component: FC<TProps>): RenderCallback<TProps> =>
26
26
  (el, props) => {
27
27
  renderRoot(
28
28
  el,
@@ -1 +0,0 @@
1
- {"version":3,"file":"CommandMenu.d.ts","sourceRoot":"","sources":["../../../../../src/components/Popover/CommandMenu.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAQ,KAAK,KAAK,EAA+D,MAAM,gBAAgB,CAAC;AAC/G,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CAC3C,CAAC;AAGF,eAAO,MAAM,WAAW,GAAI,mCAAmC,gBAAgB,sBAyB9E,CAAC;AAiEF,eAAO,MAAM,OAAO,GAAI,QAAQ,gBAAgB,EAAE,EAAE,KAAK,MAAM,KAAG,eAAe,GAAG,SAEnF,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,QAAQ,gBAAgB,EAAE,EAAE,KAAK,MAAM,KAAG,eAIrE,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,gBAAgB,EAAE,EAAE,KAAK,MAAM,KAAG,eAIzE,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,QAAQ,gBAAgB,EAAE,EAC1B,QAAQ,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,KACzC,gBAAgB,EAKlB,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,UAAU,EAAE,MAAM,MAAM,EAAE,QAAQ,MAAM,SAK5E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,UAAU,EAAE,MAAM,MAAM,EAAE,QAAQ,MAAM,SAW/E,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,gBA6E/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,gBA2B/B,CAAC"}
@@ -1,21 +0,0 @@
1
- import React, { type PropsWithChildren } from 'react';
2
- import { type PreviewLinkRef, type PreviewLinkTarget, type PreviewLookup } from '../../extensions';
3
- type RefDropdownMenuValue = Partial<{
4
- link: PreviewLinkRef;
5
- target: PreviewLinkTarget;
6
- pending: boolean;
7
- }>;
8
- declare const useRefDropdownMenu: (consumerName: string) => Partial<{
9
- link: PreviewLinkRef;
10
- target: PreviewLinkTarget;
11
- pending: boolean;
12
- }>;
13
- type RefDropdownMenuProviderProps = PropsWithChildren<{
14
- onLookup?: PreviewLookup;
15
- }>;
16
- export declare const RefDropdownMenu: {
17
- Provider: ({ children, onLookup }: RefDropdownMenuProviderProps) => React.JSX.Element;
18
- };
19
- export { useRefDropdownMenu };
20
- export type { RefDropdownMenuProviderProps, RefDropdownMenuValue };
21
- //# sourceMappingURL=RefDropdownMenu.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RefDropdownMenu.d.ts","sourceRoot":"","sources":["../../../../../src/components/Popover/RefDropdownMenu.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAA4D,MAAM,OAAO,CAAC;AAMhH,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOnG,KAAK,oBAAoB,GAAG,OAAO,CAAC;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,CAAC;AAGH,QAAA,MAAuC,kBAAkB;UANjD,cAAc;YACZ,iBAAiB;aAChB,OAAO;EAIqG,CAAC;AAExH,KAAK,4BAA4B,GAAG,iBAAiB,CAAC;IACpD,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC,CAAC;AAiDH,eAAO,MAAM,eAAe;uCA/C6B,4BAA4B;CAiDpF,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,YAAY,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,34 +0,0 @@
1
- import React, { type PropsWithChildren } from 'react';
2
- import { type DxRefTag, type DxRefTagActivate } from '@dxos/lit-ui';
3
- import { type PreviewLinkRef, type PreviewLinkTarget, type PreviewLookup } from '../../extensions';
4
- export type RefPopoverProps = PropsWithChildren<{
5
- modal?: boolean;
6
- open?: boolean;
7
- onOpenChange?: (open: boolean) => void;
8
- onActivate?: (event: DxRefTagActivate) => void;
9
- }>;
10
- export declare const RefPopover: React.ForwardRefExoticComponent<{
11
- modal?: boolean;
12
- open?: boolean;
13
- onOpenChange?: (open: boolean) => void;
14
- onActivate?: (event: DxRefTagActivate) => void;
15
- } & {
16
- children?: React.ReactNode | undefined;
17
- } & React.RefAttributes<DxRefTag | null>>;
18
- type RefPopoverValue = Partial<{
19
- link: PreviewLinkRef;
20
- target: PreviewLinkTarget;
21
- pending: boolean;
22
- }>;
23
- declare const useRefPopover: (consumerName: string) => Partial<{
24
- link: PreviewLinkRef;
25
- target: PreviewLinkTarget;
26
- pending: boolean;
27
- }>;
28
- type PreviewProviderProps = PropsWithChildren<{
29
- onLookup?: PreviewLookup;
30
- }>;
31
- declare const PreviewProvider: ({ children, onLookup }: PreviewProviderProps) => React.JSX.Element;
32
- export { PreviewProvider, useRefPopover };
33
- export type { PreviewProviderProps, RefPopoverValue };
34
- //# sourceMappingURL=RefPopover.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RefPopover.d.ts","sourceRoot":"","sources":["../../../../../src/components/Popover/RefPopover.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EACZ,KAAK,iBAAiB,EAOvB,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGpE,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAInG,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAC;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAChD,CAAC,CAAC;AAEH,eAAO,MAAM,UAAU;YANb,OAAO;WACR,OAAO;mBACC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI;iBACzB,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI;;;yCAwB/C,CAAC;AAGF,KAAK,eAAe,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAGtG,QAAA,MAAkC,aAAa;UAHR,cAAc;YAAU,iBAAiB;aAAW,OAAO;EAGA,CAAC;AAEnG,KAAK,oBAAoB,GAAG,iBAAiB,CAAC;IAAE,QAAQ,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC,CAAC;AAE5E,QAAA,MAAM,eAAe,GAAI,wBAAwB,oBAAoB,sBAiCpE,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC;AAE1C,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,CAAC"}
@@ -1,4 +0,0 @@
1
- export * from './CommandMenu';
2
- export * from './RefPopover';
3
- export * from './RefDropdownMenu';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Popover/index.ts"],"names":[],"mappings":"AAIA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/command/action.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,OAAO,EAAmB,MAAM,kBAAkB,CAAC;AAIlF,MAAM,MAAM,MAAM,GACd;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEN,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAErD,eAAO,MAAM,UAAU;SAA6B,MAAM;gBAAc,OAAO;EAAK,CAAC;AACrF,eAAO,MAAM,WAAW,mDAA6B,CAAC;AAEtD,eAAO,MAAM,WAAW,EAAE,OAWzB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,OAO1B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SAAS,UAAU,EAUnD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-menu.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/command/command-menu.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmB,UAAU,EAAqB,MAAM,mBAAmB,CAAC;AAGnF,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAG1C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,SAAS,kBAAkB,gFAmKtD,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAGF,eAAO,MAAM,kBAAkB,kEAA4C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/command/command.ts"],"names":[],"mappings":"AAIA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAMzD,OAAO,EAAQ,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAOzE,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC;AAEjE,eAAO,MAAM,OAAO,GAAI,UAAS,cAAmB,KAAG,SAatD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"floating-menu.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/command/floating-menu.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,UAAS,mBAAwB,4CAoH7D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hint.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/command/hint.ts"],"names":[],"mappings":"AAMA,OAAO,EAA0B,UAAU,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnG,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,mBAA2B,WAAW;;aAI5C,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,SAAS;mBAEnC,UAAU;;EAuC9B,CAAC;AAEF,qBAAa,IAAK,SAAQ,UAAU;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;gBAA7B,OAAO,EAAE,MAAM,GAAG,WAAW;IAIlD,KAAK,IAAI,eAAe;IAcf,QAAQ,CAAC,GAAG,EAAE,WAAW;;;;;;IAgBzB,WAAW,IAAI,OAAO;CAGhC"}
@@ -1,7 +0,0 @@
1
- export * from './action';
2
- export * from './command';
3
- export * from './command-menu';
4
- export * from './floating-menu';
5
- export * from './typeahead';
6
- export * from './useCommandMenu';
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/command/index.ts"],"names":[],"mappings":"AAIA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"placeholder.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/command/placeholder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAc,UAAU,EAA2C,MAAM,kBAAkB,CAAC;AAInG,KAAK,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,KAAK,WAAW,CAAC,CAAC;AAE1E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,oBAA4B,kBAAkB,KAAG,SAiD5E,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/command/state.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAgC,KAAK,OAAO,EAAoB,MAAM,kBAAkB,CAAC;AAEhG,OAAO,EAAe,KAAK,MAAM,EAAc,MAAM,UAAU,CAAC;AAEhE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,eAAO,MAAM,aAAa,+IAAqC,CAAC;AAEhE,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,cAAc,CAAC;QAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC,CAAC;CACvE,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,YAAY,0BAkEvB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"typeahead.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/command/typeahead.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0C,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAa3F,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAGhD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,MAAM,GAAG,SAAS,CAAC;CAChE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,iBAAgB,gBAAqB,KAAG,SA4DjE,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC1B,aAAa,MAAM,EAAE,EAAE,UAAS,iBAAsB,MACtD,UAAU,gBAAgB,uBAiB1B,CAAC;AAEJ,eAAO,MAAM,eAAe,GAAI,YAAY,MAAM,EAAE,KAAK,MAAM,EAAE,kBAAa,KAAG,MAAM,GAAG,SAUzF,CAAC"}
@@ -1,26 +0,0 @@
1
- import { type EditorView } from '@codemirror/view';
2
- import { type RefObject } from 'react';
3
- import { type DxRefTag, type DxRefTagActivate } from '@dxos/lit-ui';
4
- import { type MaybePromise } from '@dxos/util';
5
- import { type PlaceholderOptions } from './placeholder';
6
- import { type CommandMenuGroup, type CommandMenuItem } from '../../components';
7
- export type UseCommandMenuOptions = {
8
- viewRef: RefObject<EditorView | undefined>;
9
- trigger: string | string[];
10
- placeholder?: Partial<PlaceholderOptions>;
11
- getMenu: (trigger: string, query?: string) => MaybePromise<CommandMenuGroup[]>;
12
- };
13
- export declare const useCommandMenu: ({ viewRef, trigger, placeholder, getMenu }: UseCommandMenuOptions) => {
14
- commandMenu: (import("@codemirror/state").Extension | import("@codemirror/state").StateField<{
15
- trigger: string;
16
- range: import("../..").Range;
17
- } | null>)[];
18
- currentItem: string | undefined;
19
- groupsRef: import("react").MutableRefObject<CommandMenuGroup[]>;
20
- ref: import("react").MutableRefObject<DxRefTag | null>;
21
- open: boolean;
22
- onActivate: (event: DxRefTagActivate) => Promise<void>;
23
- onOpenChange: import("react").Dispatch<import("react").SetStateAction<boolean>>;
24
- onSelect: (item: CommandMenuItem) => void;
25
- };
26
- //# sourceMappingURL=useCommandMenu.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCommandMenu.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/command/useCommandMenu.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,SAAS,EAA0C,MAAM,OAAO,CAAC;AAE/E,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAyC,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEtH,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAC3C,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC;CAChF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,4CAA4C,qBAAqB;;;;;;;;;wBAwB9E,gBAAgB;;qBAeQ,eAAe;CAyDxD,CAAC"}
@@ -1,7 +0,0 @@
1
- import '@dxos-theme';
2
- import { type Meta } from '@dxos/storybook-utils';
3
- import { EditorStory } from './components';
4
- declare const meta: Meta<typeof EditorStory>;
5
- export default meta;
6
- export declare const Default: {};
7
- //# sourceMappingURL=Command.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Command.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/Command.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAMrB,OAAO,EAAyB,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAEzE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAsD3C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CA0BlC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,eAAO,MAAM,OAAO,IAAK,CAAC"}