@dxos/react-ui-editor 0.8.4-main.b97322e → 0.8.4-main.c4373fc
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.
- package/dist/lib/browser/{chunk-22UMM3QJ.mjs → chunk-HL3YF6WC.mjs} +2 -2
- package/dist/lib/browser/chunk-HL3YF6WC.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +3082 -1957
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +71 -1
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node-esm/{chunk-YXYQPV6R.mjs → chunk-YJZGD3LY.mjs} +2 -2
- package/dist/lib/node-esm/chunk-YJZGD3LY.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +3082 -1957
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +71 -1
- package/dist/lib/node-esm/testing/index.mjs.map +4 -4
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/components/{Popover → CommandMenu}/CommandMenu.d.ts +10 -6
- package/dist/types/src/components/CommandMenu/CommandMenu.d.ts.map +1 -0
- package/dist/types/src/components/CommandMenu/index.d.ts +2 -0
- package/dist/types/src/components/CommandMenu/index.d.ts.map +1 -0
- package/dist/types/src/components/Editor/Editor.d.ts +15 -9
- package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/util.d.ts +5 -5
- package/dist/types/src/components/EditorToolbar/util.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/view-mode.d.ts +1 -1
- package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/defaults.d.ts.map +1 -1
- package/dist/types/src/extensions/autocomplete.d.ts +20 -7
- package/dist/types/src/extensions/autocomplete.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/automerge.stories.d.ts +10 -19
- package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/defs.d.ts +1 -1
- package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/sync.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -1
- package/dist/types/src/extensions/autoscroll.d.ts +10 -0
- package/dist/types/src/extensions/autoscroll.d.ts.map +1 -0
- package/dist/types/src/extensions/{command → command-dialog}/action.d.ts +1 -1
- package/dist/types/src/extensions/command-dialog/action.d.ts.map +1 -0
- package/dist/types/src/extensions/{command/command.d.ts → command-dialog/command-dialog.d.ts} +2 -2
- package/dist/types/src/extensions/command-dialog/command-dialog.d.ts.map +1 -0
- package/dist/types/src/extensions/{command → command-dialog}/hint.d.ts +2 -7
- package/dist/types/src/extensions/command-dialog/hint.d.ts.map +1 -0
- package/dist/types/src/extensions/command-dialog/index.d.ts +4 -0
- package/dist/types/src/extensions/command-dialog/index.d.ts.map +1 -0
- package/dist/types/src/extensions/{command → command-dialog}/state.d.ts +1 -1
- package/dist/types/src/extensions/command-dialog/state.d.ts.map +1 -0
- package/dist/types/src/extensions/command-dialog/typeahead.d.ts.map +1 -0
- package/dist/types/src/extensions/{command → command-menu}/command-menu.d.ts +3 -3
- package/dist/types/src/extensions/command-menu/command-menu.d.ts.map +1 -0
- package/dist/types/src/extensions/command-menu/index.d.ts +3 -0
- package/dist/types/src/extensions/command-menu/index.d.ts.map +1 -0
- package/dist/types/src/extensions/command-menu/placeholder.d.ts.map +1 -0
- package/dist/types/src/extensions/command-menu/useCommandMenu.d.ts +24 -0
- package/dist/types/src/extensions/command-menu/useCommandMenu.d.ts.map +1 -0
- package/dist/types/src/extensions/comments.d.ts +1 -1
- package/dist/types/src/extensions/comments.d.ts.map +1 -1
- package/dist/types/src/extensions/dnd.d.ts.map +1 -1
- package/dist/types/src/extensions/factories.d.ts +8 -8
- package/dist/types/src/extensions/factories.d.ts.map +1 -1
- package/dist/types/src/extensions/floating-menu.d.ts.map +1 -0
- package/dist/types/src/extensions/focus.d.ts.map +1 -1
- package/dist/types/src/extensions/folding.d.ts.map +1 -1
- package/dist/types/src/extensions/index.d.ts +5 -1
- package/dist/types/src/extensions/index.d.ts.map +1 -1
- package/dist/types/src/extensions/json.d.ts +1 -1
- package/dist/types/src/extensions/json.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/action.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/bundle.d.ts +8 -2
- package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/changes.d.ts +1 -1
- package/dist/types/src/extensions/markdown/changes.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/decorate.d.ts +9 -1
- package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/formatting.d.ts +1 -1
- package/dist/types/src/extensions/markdown/formatting.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/image.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/link.d.ts.map +1 -1
- package/dist/types/src/extensions/outliner/outliner.d.ts +1 -1
- package/dist/types/src/extensions/outliner/outliner.d.ts.map +1 -1
- package/dist/types/src/extensions/outliner/selection.d.ts.map +1 -1
- package/dist/types/src/extensions/outliner/tree.d.ts +2 -2
- package/dist/types/src/extensions/outliner/tree.d.ts.map +1 -1
- package/dist/types/src/extensions/preview/preview.d.ts +3 -6
- package/dist/types/src/extensions/preview/preview.d.ts.map +1 -1
- package/dist/types/src/extensions/tags/extended-markdown.d.ts +10 -0
- package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +1 -0
- package/dist/types/src/extensions/tags/extended-markdown.test.d.ts +2 -0
- package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +1 -0
- package/dist/types/src/extensions/tags/index.d.ts +4 -0
- package/dist/types/src/extensions/tags/index.d.ts.map +1 -0
- package/dist/types/src/extensions/tags/streamer.d.ts +12 -0
- package/dist/types/src/extensions/tags/streamer.d.ts.map +1 -0
- package/dist/types/src/extensions/tags/xml-tags.d.ts +72 -0
- package/dist/types/src/extensions/tags/xml-tags.d.ts.map +1 -0
- package/dist/types/src/extensions/tags/xml-util.d.ts +10 -0
- package/dist/types/src/extensions/tags/xml-util.d.ts.map +1 -0
- package/dist/types/src/hooks/useTextEditor.d.ts +2 -2
- package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
- package/dist/types/src/stories/CommandDialog.stories.d.ts +14 -0
- package/dist/types/src/stories/CommandDialog.stories.d.ts.map +1 -0
- package/dist/types/src/stories/CommandMenu.stories.d.ts +10 -4
- package/dist/types/src/stories/CommandMenu.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Comments.stories.d.ts +21 -10
- package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
- package/dist/types/src/stories/EditorToolbar.stories.d.ts +39 -3
- package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Experimental.stories.d.ts +22 -13
- package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Markdown.stories.d.ts +32 -43
- package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Outliner.stories.d.ts +15 -21
- package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Preview.stories.d.ts +21 -7
- package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Tags.stories.d.ts +16 -0
- package/dist/types/src/stories/Tags.stories.d.ts.map +1 -0
- package/dist/types/src/stories/TextEditor.stories.d.ts +38 -52
- package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
- package/dist/types/src/stories/components/EditorStory.d.ts +6 -9
- package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
- package/dist/types/src/styles/theme.d.ts.map +1 -1
- package/dist/types/src/testing/PreviewPopover.d.ts +20 -0
- package/dist/types/src/testing/PreviewPopover.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/util.d.ts +1 -0
- package/dist/types/src/testing/util.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +1 -1
- package/dist/types/src/types/types.d.ts +2 -2
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util/cursor.d.ts.map +1 -1
- package/dist/types/src/util/debug.d.ts +1 -1
- package/dist/types/src/util/debug.d.ts.map +1 -1
- package/dist/types/src/util/decorations.d.ts +4 -0
- package/dist/types/src/util/decorations.d.ts.map +1 -0
- package/dist/types/src/util/dom.d.ts +2 -12
- package/dist/types/src/util/dom.d.ts.map +1 -1
- package/dist/types/src/util/index.d.ts +1 -0
- package/dist/types/src/util/index.d.ts.map +1 -1
- package/dist/types/src/util/react.d.ts +1 -1
- package/dist/types/src/util/react.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +68 -60
- package/src/components/{Popover → CommandMenu}/CommandMenu.tsx +95 -26
- package/src/components/{Popover → CommandMenu}/index.ts +0 -2
- package/src/components/Editor/Editor.tsx +50 -15
- package/src/components/EditorToolbar/EditorToolbar.tsx +41 -30
- package/src/components/EditorToolbar/blocks.ts +21 -24
- package/src/components/EditorToolbar/formatting.ts +22 -25
- package/src/components/EditorToolbar/headings.ts +10 -5
- package/src/components/EditorToolbar/image.ts +8 -4
- package/src/components/EditorToolbar/lists.ts +16 -19
- package/src/components/EditorToolbar/search.ts +8 -4
- package/src/components/EditorToolbar/util.ts +16 -5
- package/src/components/EditorToolbar/view-mode.ts +11 -6
- package/src/components/index.ts +1 -1
- package/src/defaults.ts +5 -2
- package/src/extensions/autocomplete.ts +204 -54
- package/src/extensions/automerge/automerge.stories.tsx +31 -24
- package/src/extensions/automerge/automerge.ts +4 -3
- package/src/extensions/automerge/defs.ts +1 -1
- package/src/extensions/automerge/sync.ts +1 -1
- package/src/extensions/automerge/update-automerge.ts +1 -1
- package/src/extensions/autoscroll.ts +157 -0
- package/src/extensions/awareness/awareness.ts +2 -2
- package/src/extensions/{command → command-dialog}/action.ts +2 -3
- package/src/extensions/{command/command.ts → command-dialog/command-dialog.ts} +4 -4
- package/src/extensions/{command → command-dialog}/hint.ts +2 -1
- package/src/extensions/command-dialog/index.ts +7 -0
- package/src/extensions/{command → command-dialog}/state.ts +4 -3
- package/src/extensions/{command → command-dialog}/typeahead.ts +2 -2
- package/src/extensions/{command → command-menu}/command-menu.ts +9 -9
- package/src/extensions/command-menu/index.ts +6 -0
- package/src/extensions/{command → command-menu}/placeholder.ts +1 -1
- package/src/extensions/{command → command-menu}/useCommandMenu.ts +35 -19
- package/src/extensions/comments.ts +18 -13
- package/src/extensions/dnd.ts +1 -1
- package/src/extensions/factories.ts +56 -31
- package/src/extensions/{command/floating-menu.ts → floating-menu.ts} +12 -19
- package/src/extensions/focus.ts +5 -4
- package/src/extensions/folding.tsx +4 -6
- package/src/extensions/hashtag.tsx +2 -2
- package/src/extensions/index.ts +5 -1
- package/src/extensions/json.ts +1 -1
- package/src/extensions/markdown/action.ts +2 -1
- package/src/extensions/markdown/bundle.ts +27 -5
- package/src/extensions/markdown/changes.ts +1 -1
- package/src/extensions/markdown/decorate.ts +24 -14
- package/src/extensions/markdown/formatting.test.ts +6 -6
- package/src/extensions/markdown/formatting.ts +3 -3
- package/src/extensions/markdown/highlight.ts +1 -1
- package/src/extensions/markdown/image.ts +3 -4
- package/src/extensions/markdown/link.ts +3 -0
- package/src/extensions/markdown/table.ts +7 -1
- package/src/extensions/mention.ts +1 -1
- package/src/extensions/outliner/outliner.test.ts +3 -2
- package/src/extensions/outliner/outliner.ts +6 -5
- package/src/extensions/outliner/selection.ts +1 -1
- package/src/extensions/outliner/tree.test.ts +2 -1
- package/src/extensions/outliner/tree.ts +2 -2
- package/src/extensions/preview/preview.ts +59 -62
- package/src/extensions/selection.ts +2 -2
- package/src/extensions/tags/extended-markdown.test.ts +261 -0
- package/src/extensions/tags/extended-markdown.ts +78 -0
- package/src/extensions/tags/index.ts +7 -0
- package/src/extensions/tags/streamer.ts +243 -0
- package/src/extensions/tags/xml-tags.ts +393 -0
- package/src/extensions/tags/xml-util.ts +94 -0
- package/src/hooks/useTextEditor.ts +8 -20
- package/src/stories/CommandDialog.stories.tsx +89 -0
- package/src/stories/CommandMenu.stories.tsx +33 -34
- package/src/stories/Comments.stories.tsx +14 -10
- package/src/stories/EditorToolbar.stories.tsx +13 -12
- package/src/stories/Experimental.stories.tsx +17 -13
- package/src/stories/Markdown.stories.tsx +25 -21
- package/src/stories/Outliner.stories.tsx +46 -34
- package/src/stories/Preview.stories.tsx +34 -33
- package/src/stories/Tags.stories.tsx +81 -0
- package/src/stories/TextEditor.stories.tsx +45 -38
- package/src/stories/components/EditorStory.tsx +14 -15
- package/src/styles/theme.ts +15 -12
- package/src/testing/PreviewPopover.tsx +78 -0
- package/src/testing/index.ts +1 -0
- package/src/testing/util.ts +2 -0
- package/src/translations.ts +1 -1
- package/src/types/types.ts +1 -1
- package/src/util/cursor.ts +2 -1
- package/src/util/debug.ts +2 -2
- package/src/util/decorations.ts +21 -0
- package/src/util/dom.ts +5 -27
- package/src/util/index.ts +1 -0
- package/src/util/react.tsx +1 -1
- package/dist/lib/browser/chunk-22UMM3QJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YXYQPV6R.mjs.map +0 -7
- package/dist/types/src/components/Popover/CommandMenu.d.ts.map +0 -1
- package/dist/types/src/components/Popover/RefDropdownMenu.d.ts +0 -21
- package/dist/types/src/components/Popover/RefDropdownMenu.d.ts.map +0 -1
- package/dist/types/src/components/Popover/RefPopover.d.ts +0 -34
- package/dist/types/src/components/Popover/RefPopover.d.ts.map +0 -1
- package/dist/types/src/components/Popover/index.d.ts +0 -4
- package/dist/types/src/components/Popover/index.d.ts.map +0 -1
- package/dist/types/src/extensions/command/action.d.ts.map +0 -1
- package/dist/types/src/extensions/command/command-menu.d.ts.map +0 -1
- package/dist/types/src/extensions/command/command.d.ts.map +0 -1
- package/dist/types/src/extensions/command/floating-menu.d.ts.map +0 -1
- package/dist/types/src/extensions/command/hint.d.ts.map +0 -1
- package/dist/types/src/extensions/command/index.d.ts +0 -7
- package/dist/types/src/extensions/command/index.d.ts.map +0 -1
- package/dist/types/src/extensions/command/placeholder.d.ts.map +0 -1
- package/dist/types/src/extensions/command/state.d.ts.map +0 -1
- package/dist/types/src/extensions/command/typeahead.d.ts.map +0 -1
- package/dist/types/src/extensions/command/useCommandMenu.d.ts +0 -26
- package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +0 -1
- package/dist/types/src/stories/Command.stories.d.ts +0 -7
- package/dist/types/src/stories/Command.stories.d.ts.map +0 -1
- package/src/components/Popover/RefDropdownMenu.tsx +0 -85
- package/src/components/Popover/RefPopover.tsx +0 -99
- package/src/extensions/command/index.ts +0 -10
- package/src/stories/Command.stories.tsx +0 -97
- /package/dist/types/src/extensions/{command → command-dialog}/typeahead.d.ts +0 -0
- /package/dist/types/src/extensions/{command → command-menu}/placeholder.d.ts +0 -0
- /package/dist/types/src/extensions/{command/floating-menu.d.ts → floating-menu.d.ts} +0 -0
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { type EditorView } from '@codemirror/view';
|
|
6
|
-
import React, { type ReactNode, forwardRef, useEffect,
|
|
6
|
+
import React, { type ReactNode, forwardRef, useEffect, useImperativeHandle, useMemo, useState } from 'react';
|
|
7
7
|
|
|
8
|
-
import { Expando } from '@dxos/echo
|
|
8
|
+
import { Expando } from '@dxos/echo/internal';
|
|
9
|
+
import { live } from '@dxos/echo/internal';
|
|
9
10
|
import { invariant } from '@dxos/invariant';
|
|
10
11
|
import { PublicKey } from '@dxos/keys';
|
|
11
|
-
import { live } from '@dxos/live-object';
|
|
12
12
|
import { createDocAccessor, createObject } from '@dxos/react-client/echo';
|
|
13
13
|
import { useForwardedRef, useThemeContext } from '@dxos/react-ui';
|
|
14
14
|
import { useAttentionAttributes } from '@dxos/react-ui-attention';
|
|
@@ -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 {
|
|
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 {
|
|
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 |
|
|
48
|
+
export const EditorStory = forwardRef<EditorView | null, StoryProps>(
|
|
50
49
|
({ debug, debugCustom, text, extensions: _extensions, ...props }, forwardedRef) => {
|
|
51
|
-
const attentionAttrs = useAttentionAttributes('
|
|
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 |
|
|
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(
|
|
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) {
|
package/src/styles/theme.ts
CHANGED
|
@@ -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:
|
|
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: '
|
|
168
|
-
marginLeft: '-
|
|
169
|
-
|
|
170
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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 };
|
package/src/testing/index.ts
CHANGED
package/src/testing/util.ts
CHANGED
package/src/translations.ts
CHANGED
|
@@ -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}}',
|
package/src/types/types.ts
CHANGED
package/src/util/cursor.ts
CHANGED
|
@@ -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
|
-
|
|
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
package/src/util/react.tsx
CHANGED
|
@@ -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
|
-
<
|
|
25
|
+
<TProps extends object>(Component: FC<TProps>): RenderCallback<TProps> =>
|
|
26
26
|
(el, props) => {
|
|
27
27
|
renderRoot(
|
|
28
28
|
el,
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/types/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { Schema } from 'effect';\n\n// Runtime data structure.\nexport type Range = {\n from: number;\n to: number;\n};\n\n// Persistent data structure.\n// TODO(burdon): Rename annotation?\nexport type Comment = {\n id: string;\n cursor?: string;\n};\n\n/**\n * Callback that renders into a DOM element within the editor.\n */\nexport type RenderCallback<Props extends object> = (el: HTMLElement, props: Props, view: EditorView) => void;\n\nexport const EditorViewModes = ['preview', 'readonly', 'source'] as const;\nexport const EditorViewMode = Schema.Union(...EditorViewModes.map((mode) => Schema.Literal(mode)));\nexport type EditorViewMode = Schema.Schema.Type<typeof EditorViewMode>;\n\nexport const EditorInputModes = ['default', 'vim', 'vscode'] as const;\nexport const EditorInputMode = Schema.Union(...EditorInputModes.map((mode) => Schema.Literal(mode)));\nexport type EditorInputMode = Schema.Schema.Type<typeof EditorInputMode>;\n"],
|
|
5
|
-
"mappings": ";AAKA,SAASA,cAAc;AAoBhB,IAAMC,kBAAkB;EAAC;EAAW;EAAY;;AAChD,IAAMC,iBAAiBC,OAAOC,MAAK,GAAIH,gBAAgBI,IAAI,CAACC,SAASH,OAAOI,QAAQD,IAAAA,CAAAA,CAAAA;AAGpF,IAAME,mBAAmB;EAAC;EAAW;EAAO;;AAC5C,IAAMC,kBAAkBN,OAAOC,MAAK,GAAII,iBAAiBH,IAAI,CAACC,SAASH,OAAOI,QAAQD,IAAAA,CAAAA,CAAAA;",
|
|
6
|
-
"names": ["Schema", "EditorViewModes", "EditorViewMode", "Schema", "Union", "map", "mode", "Literal", "EditorInputModes", "EditorInputMode"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/types/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { Schema } from 'effect';\n\n// Runtime data structure.\nexport type Range = {\n from: number;\n to: number;\n};\n\n// Persistent data structure.\n// TODO(burdon): Rename annotation?\nexport type Comment = {\n id: string;\n cursor?: string;\n};\n\n/**\n * Callback that renders into a DOM element within the editor.\n */\nexport type RenderCallback<Props extends object> = (el: HTMLElement, props: Props, view: EditorView) => void;\n\nexport const EditorViewModes = ['preview', 'readonly', 'source'] as const;\nexport const EditorViewMode = Schema.Union(...EditorViewModes.map((mode) => Schema.Literal(mode)));\nexport type EditorViewMode = Schema.Schema.Type<typeof EditorViewMode>;\n\nexport const EditorInputModes = ['default', 'vim', 'vscode'] as const;\nexport const EditorInputMode = Schema.Union(...EditorInputModes.map((mode) => Schema.Literal(mode)));\nexport type EditorInputMode = Schema.Schema.Type<typeof EditorInputMode>;\n"],
|
|
5
|
-
"mappings": ";;;AAKA,SAASA,cAAc;AAoBhB,IAAMC,kBAAkB;EAAC;EAAW;EAAY;;AAChD,IAAMC,iBAAiBC,OAAOC,MAAK,GAAIH,gBAAgBI,IAAI,CAACC,SAASH,OAAOI,QAAQD,IAAAA,CAAAA,CAAAA;AAGpF,IAAME,mBAAmB;EAAC;EAAW;EAAO;;AAC5C,IAAMC,kBAAkBN,OAAOC,MAAK,GAAII,iBAAiBH,IAAI,CAACC,SAASH,OAAOI,QAAQD,IAAAA,CAAAA,CAAAA;",
|
|
6
|
-
"names": ["Schema", "EditorViewModes", "EditorViewMode", "Schema", "Union", "map", "mode", "Literal", "EditorInputModes", "EditorInputMode"]
|
|
7
|
-
}
|
|
@@ -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 +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 +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"}
|