@dxos/react-ui-editor 0.8.2-main.f11618f → 0.8.2-main.fbd8ed0
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/index.mjs +1662 -1357
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +2175 -1872
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +1662 -1357
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +1 -1
- package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
- package/dist/types/src/{stories/InputMode.stories.d.ts → components/EditorToolbar/EditorToolbar.stories.d.ts} +3 -7
- package/dist/types/src/components/EditorToolbar/EditorToolbar.stories.d.ts.map +1 -0
- package/dist/types/src/components/EditorToolbar/blocks.d.ts +4 -3
- package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/comment.d.ts +4 -3
- package/dist/types/src/components/EditorToolbar/comment.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/formatting.d.ts +4 -3
- package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/headings.d.ts +4 -3
- package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/image.d.ts +16 -0
- package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -0
- package/dist/types/src/components/EditorToolbar/lists.d.ts +4 -3
- package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/search.d.ts +17 -0
- package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -0
- package/dist/types/src/components/EditorToolbar/util.d.ts +11 -17
- package/dist/types/src/components/EditorToolbar/util.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/view-mode.d.ts +4 -3
- package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
- package/dist/types/src/defaults.d.ts.map +1 -1
- package/dist/types/src/extensions/annotations.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/types/src/extensions/automerge/cursor.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 +1 -1
- package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/update-codemirror.d.ts +1 -1
- package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +1 -1
- package/dist/types/src/extensions/awareness/awareness.d.ts.map +1 -1
- package/dist/types/src/extensions/blast.d.ts.map +1 -1
- package/dist/types/src/extensions/command/command.d.ts.map +1 -1
- package/dist/types/src/extensions/command/hint.d.ts.map +1 -1
- package/dist/types/src/extensions/command/menu.d.ts.map +1 -1
- package/dist/types/src/extensions/comments.d.ts.map +1 -1
- package/dist/types/src/extensions/debug.d.ts.map +1 -1
- package/dist/types/src/extensions/dnd.d.ts.map +1 -1
- package/dist/types/src/extensions/factories.d.ts.map +1 -1
- package/dist/types/src/extensions/folding.d.ts.map +1 -1
- package/dist/types/src/extensions/listener.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/changes.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/debug.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/decorate.d.ts +1 -0
- 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/highlight.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/image.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/index.d.ts +1 -0
- package/dist/types/src/extensions/markdown/index.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/link.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/outliner.d.ts +12 -0
- package/dist/types/src/extensions/markdown/outliner.d.ts.map +1 -0
- package/dist/types/src/extensions/markdown/table.d.ts.map +1 -1
- package/dist/types/src/extensions/mention.d.ts.map +1 -1
- package/dist/types/src/extensions/modes.d.ts +5 -5
- package/dist/types/src/extensions/modes.d.ts.map +1 -1
- package/dist/types/src/extensions/preview/preview.d.ts.map +1 -1
- package/dist/types/src/extensions/selection.d.ts.map +1 -1
- package/dist/types/src/extensions/typewriter.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +0 -1
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
- package/dist/types/src/stories/TextEditorBasic.stories.d.ts +3 -0
- package/dist/types/src/stories/TextEditorBasic.stories.d.ts.map +1 -1
- package/dist/types/src/stories/story-utils.d.ts.map +1 -1
- package/dist/types/src/styles/theme.d.ts.map +1 -1
- package/dist/types/src/util/cursor.d.ts.map +1 -1
- package/dist/types/src/util/debug.d.ts.map +1 -1
- package/dist/types/src/util/dom.d.ts.map +1 -1
- package/dist/types/src/util/facet.d.ts.map +1 -1
- package/dist/types/src/util/react.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +32 -28
- package/src/components/EditorToolbar/EditorToolbar.stories.tsx +90 -0
- package/src/components/EditorToolbar/EditorToolbar.tsx +31 -32
- package/src/components/EditorToolbar/blocks.ts +27 -6
- package/src/components/EditorToolbar/comment.ts +11 -4
- package/src/components/EditorToolbar/formatting.ts +34 -7
- package/src/components/EditorToolbar/headings.ts +9 -8
- package/src/components/EditorToolbar/image.ts +16 -0
- package/src/components/EditorToolbar/lists.ts +26 -7
- package/src/components/EditorToolbar/search.ts +19 -0
- package/src/components/EditorToolbar/util.ts +14 -14
- package/src/components/EditorToolbar/view-mode.ts +9 -8
- package/src/defaults.ts +1 -1
- package/src/extensions/automerge/automerge.stories.tsx +9 -7
- package/src/extensions/automerge/automerge.test.tsx +4 -4
- package/src/extensions/automerge/automerge.ts +2 -2
- package/src/extensions/automerge/defs.ts +1 -2
- package/src/extensions/automerge/sync.ts +4 -4
- package/src/extensions/automerge/update-automerge.ts +1 -1
- package/src/extensions/automerge/update-codemirror.ts +3 -4
- package/src/extensions/markdown/changes.ts +3 -2
- package/src/extensions/markdown/decorate.ts +8 -7
- package/src/extensions/markdown/formatting.ts +4 -4
- package/src/extensions/markdown/index.ts +1 -0
- package/src/extensions/markdown/outliner.ts +235 -0
- package/src/extensions/markdown/styles.ts +2 -2
- package/src/extensions/modes.ts +5 -6
- package/src/hooks/index.ts +0 -1
- package/src/stories/TextEditorBasic.stories.tsx +44 -0
- package/src/stories/story-utils.tsx +7 -9
- package/src/styles/theme.ts +3 -0
- package/dist/types/src/hooks/useActionHandler.d.ts +0 -4
- package/dist/types/src/hooks/useActionHandler.d.ts.map +0 -1
- package/dist/types/src/stories/InputMode.stories.d.ts.map +0 -1
- package/src/hooks/useActionHandler.ts +0 -12
- package/src/stories/InputMode.stories.tsx +0 -124
package/src/hooks/index.ts
CHANGED
@@ -38,6 +38,7 @@ import {
|
|
38
38
|
table,
|
39
39
|
autocomplete,
|
40
40
|
mention,
|
41
|
+
outliner,
|
41
42
|
} from '../extensions';
|
42
43
|
|
43
44
|
const meta: Meta<typeof DefaultStory> = {
|
@@ -188,20 +189,63 @@ export const Lists = {
|
|
188
189
|
),
|
189
190
|
};
|
190
191
|
|
192
|
+
//
|
193
|
+
// Bullet List
|
194
|
+
//
|
195
|
+
|
191
196
|
export const BulletList = {
|
192
197
|
render: () => <DefaultStory text={str(content.bullets, content.footer)} extensions={[decorateMarkdown()]} />,
|
193
198
|
};
|
194
199
|
|
200
|
+
//
|
201
|
+
// Ordered List
|
202
|
+
//
|
203
|
+
|
195
204
|
export const OrderedList = {
|
196
205
|
render: () => <DefaultStory text={str(content.numbered, content.footer)} extensions={[decorateMarkdown()]} />,
|
197
206
|
};
|
198
207
|
|
208
|
+
//
|
209
|
+
// Task List
|
210
|
+
//
|
211
|
+
|
199
212
|
export const TaskList = {
|
200
213
|
render: () => (
|
201
214
|
<DefaultStory text={str(content.tasks, content.footer)} extensions={[decorateMarkdown()]} debug='raw+tree' />
|
202
215
|
),
|
203
216
|
};
|
204
217
|
|
218
|
+
//
|
219
|
+
// Outliner
|
220
|
+
//
|
221
|
+
|
222
|
+
export const Outliner = {
|
223
|
+
render: () => (
|
224
|
+
<DefaultStory
|
225
|
+
// text={str(...content.tasks.split('\n').filter((line) => line.trim().startsWith('-')))}
|
226
|
+
text={str(
|
227
|
+
//
|
228
|
+
'- [ ] A',
|
229
|
+
'- [ ] B',
|
230
|
+
// Continuation lines.
|
231
|
+
' ## Example',
|
232
|
+
' Continuation line belonging to B.',
|
233
|
+
' ```ts',
|
234
|
+
' const x = 100',
|
235
|
+
' ```',
|
236
|
+
' - [ ] C',
|
237
|
+
' - D Items can have links [like this](https://example.com).',
|
238
|
+
)}
|
239
|
+
extensions={[decorateMarkdown({ listPaddingLeft: 8 }), outliner()]}
|
240
|
+
debug='raw+tree'
|
241
|
+
/>
|
242
|
+
),
|
243
|
+
};
|
244
|
+
|
245
|
+
//
|
246
|
+
// Table
|
247
|
+
//
|
248
|
+
|
205
249
|
export const Table = {
|
206
250
|
render: () => <DefaultStory text={str(content.table, content.footer)} extensions={[decorateMarkdown(), table()]} />,
|
207
251
|
};
|
@@ -17,21 +17,19 @@ import { mx } from '@dxos/react-ui-theme';
|
|
17
17
|
|
18
18
|
import { editorContent, editorGutter } from '../defaults';
|
19
19
|
import {
|
20
|
-
type EditorSelectionState,
|
21
20
|
type DebugNode,
|
22
|
-
|
23
|
-
formattingKeymap,
|
24
|
-
linkTooltip,
|
25
|
-
image,
|
26
|
-
table,
|
27
|
-
folding,
|
28
|
-
} from '../extensions';
|
29
|
-
import {
|
21
|
+
type EditorSelectionState,
|
30
22
|
createDataExtensions,
|
31
23
|
createBasicExtensions,
|
32
24
|
createMarkdownExtensions,
|
33
25
|
createThemeExtensions,
|
26
|
+
decorateMarkdown,
|
34
27
|
debugTree,
|
28
|
+
folding,
|
29
|
+
formattingKeymap,
|
30
|
+
image,
|
31
|
+
linkTooltip,
|
32
|
+
table,
|
35
33
|
} from '../extensions';
|
36
34
|
import { useTextEditor, type UseTextEditorProps } from '../hooks';
|
37
35
|
import { createRenderer } from '../util';
|
package/src/styles/theme.ts
CHANGED
@@ -119,6 +119,9 @@ export const defaultTheme: ThemeStyles = {
|
|
119
119
|
'.cm-selectionBackground': {
|
120
120
|
background: 'var(--dx-cmSelection)',
|
121
121
|
},
|
122
|
+
'&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground': {
|
123
|
+
background: 'var(--dx-cmFocusedSelection)',
|
124
|
+
},
|
122
125
|
|
123
126
|
/**
|
124
127
|
* Search.
|
@@ -1,4 +0,0 @@
|
|
1
|
-
import { type EditorView } from '@codemirror/view';
|
2
|
-
import { type EditorAction } from '../extensions';
|
3
|
-
export declare const useActionHandler: (view?: EditorView | null) => (action: EditorAction) => void | null | undefined;
|
4
|
-
//# sourceMappingURL=useActionHandler.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"useActionHandler.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useActionHandler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,KAAK,YAAY,EAAwB,MAAM,eAAe,CAAC;AAExE,eAAO,MAAM,gBAAgB,UAAW,UAAU,GAAG,IAAI,cAC3B,YAAY,4BACzC,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"InputMode.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/InputMode.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAErB,OAAO,KAAmB,MAAM,OAAO,CAAC;AAiBxC,OAAO,EAAmC,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGpF,KAAK,UAAU,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,kBAAkB,CAAC;AAqEpF,eAAO,MAAM,OAAO;;CAanB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;CAMpB,CAAC;;;iEAxFwE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0FpF,wBAKE"}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
//
|
2
|
-
// Copyright 2024 DXOS.org
|
3
|
-
//
|
4
|
-
|
5
|
-
import { type EditorView } from '@codemirror/view';
|
6
|
-
import { useCallback } from 'react';
|
7
|
-
|
8
|
-
import { type EditorAction, processEditorPayload } from '../extensions';
|
9
|
-
|
10
|
-
export const useActionHandler = (view?: EditorView | null) => {
|
11
|
-
return useCallback((action: EditorAction) => view && processEditorPayload(view, action.properties), [view]);
|
12
|
-
};
|
@@ -1,124 +0,0 @@
|
|
1
|
-
//
|
2
|
-
// Copyright 2024 DXOS.org
|
3
|
-
//
|
4
|
-
|
5
|
-
import '@dxos-theme';
|
6
|
-
|
7
|
-
import React, { useState } from 'react';
|
8
|
-
|
9
|
-
import { Toolbar as NaturalToolbar, Select, useThemeContext } from '@dxos/react-ui';
|
10
|
-
import { attentionSurface, mx } from '@dxos/react-ui-theme';
|
11
|
-
import { withLayout, withTheme } from '@dxos/storybook-utils';
|
12
|
-
|
13
|
-
import { EditorToolbar, useEditorToolbarState } from '../components';
|
14
|
-
import {
|
15
|
-
type EditorInputMode,
|
16
|
-
decorateMarkdown,
|
17
|
-
createMarkdownExtensions,
|
18
|
-
formattingKeymap,
|
19
|
-
useFormattingState,
|
20
|
-
createBasicExtensions,
|
21
|
-
createThemeExtensions,
|
22
|
-
InputModeExtensions,
|
23
|
-
} from '../extensions';
|
24
|
-
import { useActionHandler, useTextEditor, type UseTextEditorProps } from '../hooks';
|
25
|
-
import translations from '../translations';
|
26
|
-
|
27
|
-
type StoryProps = { placeholder?: string; readOnly?: boolean } & UseTextEditorProps;
|
28
|
-
|
29
|
-
const DefaultStory = ({ autoFocus, initialValue, placeholder, readOnly }: StoryProps) => {
|
30
|
-
const { themeMode } = useThemeContext();
|
31
|
-
const toolbarState = useEditorToolbarState({ viewMode: 'source' });
|
32
|
-
const trackFormatting = useFormattingState(toolbarState);
|
33
|
-
const [editorInputMode, _setEditorInputMode] = useState<EditorInputMode>('default');
|
34
|
-
const { parentRef, view } = useTextEditor(
|
35
|
-
() => ({
|
36
|
-
autoFocus,
|
37
|
-
initialValue,
|
38
|
-
moveToEndOfLine: true,
|
39
|
-
extensions: [
|
40
|
-
editorInputMode ? InputModeExtensions[editorInputMode] : [],
|
41
|
-
createBasicExtensions({ placeholder, lineWrapping: true, readOnly }),
|
42
|
-
createMarkdownExtensions({ themeMode }),
|
43
|
-
createThemeExtensions({ themeMode, syntaxHighlighting: true }),
|
44
|
-
decorateMarkdown(),
|
45
|
-
formattingKeymap(),
|
46
|
-
trackFormatting,
|
47
|
-
],
|
48
|
-
}),
|
49
|
-
[editorInputMode, themeMode, placeholder, readOnly],
|
50
|
-
);
|
51
|
-
|
52
|
-
const handleAction = useActionHandler(view);
|
53
|
-
|
54
|
-
// TODO(marijn): This doesn't update the state on view changes.
|
55
|
-
// Also not sure if view is even guaranteed to exist at this point.
|
56
|
-
return (
|
57
|
-
<div role='none' className={mx('fixed inset-0 flex flex-col')}>
|
58
|
-
{toolbarState && <EditorToolbar onAction={handleAction} state={toolbarState} />}
|
59
|
-
<div role='none' className='grow overflow-hidden'>
|
60
|
-
<div className={attentionSurface} ref={parentRef} />
|
61
|
-
</div>
|
62
|
-
</div>
|
63
|
-
);
|
64
|
-
};
|
65
|
-
|
66
|
-
const _EditorInputModeToolbar = ({
|
67
|
-
editorInputMode,
|
68
|
-
setEditorInputMode,
|
69
|
-
}: {
|
70
|
-
editorInputMode: EditorInputMode;
|
71
|
-
setEditorInputMode: (mode: EditorInputMode) => void;
|
72
|
-
}) => {
|
73
|
-
return (
|
74
|
-
<Select.Root value={editorInputMode} onValueChange={(value) => setEditorInputMode(value as EditorInputMode)}>
|
75
|
-
<NaturalToolbar.Button asChild>
|
76
|
-
<Select.TriggerButton variant='ghost'>{editorInputMode}</Select.TriggerButton>
|
77
|
-
</NaturalToolbar.Button>
|
78
|
-
<Select.Portal>
|
79
|
-
<Select.Content>
|
80
|
-
<Select.ScrollUpButton />
|
81
|
-
<Select.Viewport>
|
82
|
-
{['default', 'vim'].map((mode) => (
|
83
|
-
<Select.Option key={mode} value={mode}>
|
84
|
-
{mode}
|
85
|
-
</Select.Option>
|
86
|
-
))}
|
87
|
-
</Select.Viewport>
|
88
|
-
<Select.ScrollDownButton />
|
89
|
-
<Select.Arrow />
|
90
|
-
</Select.Content>
|
91
|
-
</Select.Portal>
|
92
|
-
</Select.Root>
|
93
|
-
);
|
94
|
-
};
|
95
|
-
|
96
|
-
export const Default = {
|
97
|
-
render: () => {
|
98
|
-
const { themeMode } = useThemeContext();
|
99
|
-
const { parentRef } = useTextEditor({
|
100
|
-
extensions: [
|
101
|
-
//
|
102
|
-
createBasicExtensions({ placeholder: 'Enter text...' }),
|
103
|
-
createThemeExtensions({ themeMode }),
|
104
|
-
],
|
105
|
-
});
|
106
|
-
|
107
|
-
return <div ref={parentRef} className={attentionSurface} />;
|
108
|
-
},
|
109
|
-
};
|
110
|
-
|
111
|
-
export const Markdown = {
|
112
|
-
args: {
|
113
|
-
autoFocus: true,
|
114
|
-
placeholder: 'Text...',
|
115
|
-
initialValue: '# Demo\n\nThis is a document.\n\n',
|
116
|
-
},
|
117
|
-
};
|
118
|
-
|
119
|
-
export default {
|
120
|
-
title: 'ui/react-ui-editor/InputMode',
|
121
|
-
render: DefaultStory,
|
122
|
-
decorators: [withTheme, withLayout({ fullscreen: true, tooltips: true })],
|
123
|
-
parameters: { translations, layout: 'fullscreen' },
|
124
|
-
};
|