@dxos/react-ui-editor 0.8.4-main.67995b8 → 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 +3067 -1955
  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 +3067 -1955
  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 +3 -8
  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 +70 -66
  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 +21 -24
  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 +37 -27
  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 +33 -34
  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 +34 -33
  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 +15 -12
  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,7 +74,7 @@ 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': {
@@ -88,14 +88,15 @@ export const defaultTheme: ThemeStyles = {
88
88
  * Height is set to match the corresponding line (which may have wrapped).
89
89
  */
90
90
  '.cm-gutterElement': {
91
- fontSize: '12px',
92
91
  lineHeight: '24px',
92
+ fontSize: '12px',
93
93
  },
94
94
 
95
95
  /**
96
96
  * Line.
97
97
  */
98
98
  '.cm-line': {
99
+ lineHeight: '24px',
99
100
  paddingInline: 0,
100
101
  },
101
102
  '.cm-activeLine': {
@@ -164,10 +165,10 @@ export const defaultTheme: ThemeStyles = {
164
165
  * https://github.com/codemirror/autocomplete/blob/main/src/completion.ts
165
166
  */
166
167
  '.cm-tooltip.cm-tooltip-autocomplete': {
167
- marginTop: '4px',
168
- marginLeft: '-3px',
169
- borderColor: 'var(--dx-separator)',
170
- borderTop: 'none',
168
+ marginTop: '6px',
169
+ marginLeft: '-10px',
170
+ border: '2px solid var(--dx-separator)',
171
+ borderRadius: '4px',
171
172
  },
172
173
  '.cm-tooltip.cm-tooltip-autocomplete > ul': {
173
174
  maxHeight: '20em',
@@ -176,12 +177,12 @@ export const defaultTheme: ThemeStyles = {
176
177
  padding: '4px',
177
178
  },
178
179
  '.cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected]': {
179
- background: 'var(--dx-hoverSurface)',
180
+ background: 'var(--dx-activeSurface)',
181
+ color: 'var(--dx-activeSurfaceText)',
180
182
  },
181
183
  '.cm-tooltip.cm-tooltip-autocomplete > ul > completion-section': {
182
184
  paddingLeft: '4px !important',
183
- borderBottom: 'none !important',
184
- color: 'var(--dx-accentText)',
185
+ color: 'var(--dx-hoverSurfaceText)',
185
186
  },
186
187
 
187
188
  '.cm-completionInfo': {
@@ -195,10 +196,12 @@ export const defaultTheme: ThemeStyles = {
195
196
  },
196
197
  '.cm-completionLabel': {
197
198
  fontFamily: fontBody,
199
+ color: 'var(--dx-description)',
200
+ padding: '0 4px',
198
201
  },
199
202
  '.cm-completionMatchedText': {
200
203
  textDecoration: 'none !important',
201
- opacity: 0.5,
204
+ color: 'var(--dx-baseText)',
202
205
  },
203
206
 
204
207
  /**
@@ -232,7 +235,7 @@ export const defaultTheme: ThemeStyles = {
232
235
  outline: '1px solid transparent',
233
236
  },
234
237
  '.cm-panel input, .cm-panel button': {
235
- backgroundColor: 'var(--dx-input)',
238
+ backgroundColor: 'var(--dx-inputSurface)',
236
239
  },
237
240
  '.cm-panel input:focus, .cm-panel button:focus': {
238
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"}