@dxos/plugin-markdown 0.6.12-main.ed7cda7 → 0.6.12-staging.e11e696
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/MarkdownContainer-OWVU5WMN.mjs +467 -0
- package/dist/lib/browser/MarkdownContainer-OWVU5WMN.mjs.map +7 -0
- package/dist/lib/browser/chunk-7WORDTCY.mjs +50 -0
- package/dist/lib/browser/chunk-7WORDTCY.mjs.map +7 -0
- package/dist/lib/browser/{chunk-R6CSLNWW.mjs → chunk-OUZCML5B.mjs} +3 -1
- package/dist/lib/browser/chunk-OUZCML5B.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +54 -101
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/types/index.mjs +5 -3
- package/dist/lib/node/MarkdownContainer-IWMLWI6Z.cjs +482 -0
- package/dist/lib/node/MarkdownContainer-IWMLWI6Z.cjs.map +7 -0
- package/dist/lib/node/{chunk-MCA5BBJR.cjs → chunk-HVDIBL5H.cjs} +9 -6
- package/dist/lib/node/chunk-HVDIBL5H.cjs.map +7 -0
- package/dist/lib/node/chunk-L2FIDO4L.cjs +72 -0
- package/dist/lib/node/chunk-L2FIDO4L.cjs.map +7 -0
- package/dist/lib/node/index.cjs +76 -119
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/types/index.cjs +7 -5
- package/dist/lib/node/types/index.cjs.map +2 -2
- package/dist/lib/node-esm/MarkdownContainer-MLTDWWGB.mjs +468 -0
- package/dist/lib/node-esm/MarkdownContainer-MLTDWWGB.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-W525OVFX.mjs → chunk-4AGP7IJE.mjs} +3 -1
- package/dist/lib/node-esm/chunk-4AGP7IJE.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-YOIARYUO.mjs +51 -0
- package/dist/lib/node-esm/chunk-YOIARYUO.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +54 -101
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/types/index.mjs +5 -3
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownContainer.d.ts +15 -0
- package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownEditor.d.ts +7 -2
- package/dist/types/src/components/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor.stories.d.ts +3 -3
- package/dist/types/src/components/MarkdownEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -11
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/extensions.d.ts +11 -15
- package/dist/types/src/extensions.d.ts.map +1 -1
- package/dist/types/src/types/document.d.ts +8 -1
- package/dist/types/src/types/document.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +4 -4
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/package.json +32 -31
- package/src/MarkdownPlugin.tsx +31 -86
- package/src/components/MarkdownContainer.tsx +108 -0
- package/src/components/MarkdownEditor.stories.tsx +11 -5
- package/src/components/MarkdownEditor.tsx +25 -35
- package/src/components/index.ts +2 -14
- package/src/extensions.tsx +124 -67
- package/src/types/document.ts +12 -0
- package/src/types/types.ts +5 -3
- package/dist/lib/browser/DocumentCard-RKENHCNE.mjs +0 -11
- package/dist/lib/browser/DocumentCard-RKENHCNE.mjs.map +0 -7
- package/dist/lib/browser/DocumentEditor-FAXQRX37.mjs +0 -11
- package/dist/lib/browser/DocumentEditor-FAXQRX37.mjs.map +0 -7
- package/dist/lib/browser/MarkdownEditor-5EUT7P66.mjs +0 -10
- package/dist/lib/browser/MarkdownEditor-5EUT7P66.mjs.map +0 -7
- package/dist/lib/browser/chunk-354DCID5.mjs +0 -117
- package/dist/lib/browser/chunk-354DCID5.mjs.map +0 -7
- package/dist/lib/browser/chunk-AFWT6Z7B.mjs +0 -86
- package/dist/lib/browser/chunk-AFWT6Z7B.mjs.map +0 -7
- package/dist/lib/browser/chunk-AVGUYNPR.mjs +0 -220
- package/dist/lib/browser/chunk-AVGUYNPR.mjs.map +0 -7
- package/dist/lib/browser/chunk-JDTH4A4I.mjs +0 -166
- package/dist/lib/browser/chunk-JDTH4A4I.mjs.map +0 -7
- package/dist/lib/browser/chunk-R6CSLNWW.mjs.map +0 -7
- package/dist/lib/node/DocumentCard-ECPKHJT7.cjs +0 -32
- package/dist/lib/node/DocumentCard-ECPKHJT7.cjs.map +0 -7
- package/dist/lib/node/DocumentEditor-YVZTTY5L.cjs +0 -29
- package/dist/lib/node/DocumentEditor-YVZTTY5L.cjs.map +0 -7
- package/dist/lib/node/MarkdownEditor-ZD4W4UJ6.cjs +0 -31
- package/dist/lib/node/MarkdownEditor-ZD4W4UJ6.cjs.map +0 -7
- package/dist/lib/node/chunk-2T7LIVPT.cjs +0 -246
- package/dist/lib/node/chunk-2T7LIVPT.cjs.map +0 -7
- package/dist/lib/node/chunk-5ZWOR7JF.cjs +0 -114
- package/dist/lib/node/chunk-5ZWOR7JF.cjs.map +0 -7
- package/dist/lib/node/chunk-KTYIOXL5.cjs +0 -149
- package/dist/lib/node/chunk-KTYIOXL5.cjs.map +0 -7
- package/dist/lib/node/chunk-MCA5BBJR.cjs.map +0 -7
- package/dist/lib/node/chunk-OEWBZFBF.cjs +0 -191
- package/dist/lib/node/chunk-OEWBZFBF.cjs.map +0 -7
- package/dist/lib/node-esm/DocumentCard-RHVY4Z6L.mjs +0 -12
- package/dist/lib/node-esm/DocumentCard-RHVY4Z6L.mjs.map +0 -7
- package/dist/lib/node-esm/DocumentEditor-JBVVPEYE.mjs +0 -12
- package/dist/lib/node-esm/DocumentEditor-JBVVPEYE.mjs.map +0 -7
- package/dist/lib/node-esm/MarkdownEditor-OS7YG6MA.mjs +0 -11
- package/dist/lib/node-esm/MarkdownEditor-OS7YG6MA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OE3CMI5X.mjs +0 -87
- package/dist/lib/node-esm/chunk-OE3CMI5X.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-QARGBUBS.mjs +0 -221
- package/dist/lib/node-esm/chunk-QARGBUBS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RO5FEVW6.mjs +0 -119
- package/dist/lib/node-esm/chunk-RO5FEVW6.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UG4MIBCA.mjs +0 -167
- package/dist/lib/node-esm/chunk-UG4MIBCA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-W525OVFX.mjs.map +0 -7
- package/dist/types/src/components/DocumentCard.d.ts +0 -16
- package/dist/types/src/components/DocumentCard.d.ts.map +0 -1
- package/dist/types/src/components/DocumentEditor.d.ts +0 -14
- package/dist/types/src/components/DocumentEditor.d.ts.map +0 -1
- package/dist/types/src/components/HeadingMenu.d.ts +0 -13
- package/dist/types/src/components/HeadingMenu.d.ts.map +0 -1
- package/dist/types/src/components/Layout.d.ts +0 -6
- package/dist/types/src/components/Layout.d.ts.map +0 -1
- package/src/components/DocumentCard.tsx +0 -107
- package/src/components/DocumentEditor.tsx +0 -139
- package/src/components/HeadingMenu.tsx +0 -46
- package/src/components/Layout.tsx +0 -27
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2024 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import React, { useEffect, useMemo } from 'react';
|
|
6
|
-
|
|
7
|
-
import { useResolvePlugin, parseFileManagerPlugin, useIntentDispatcher } from '@dxos/app-framework';
|
|
8
|
-
import { createDocAccessor, fullyQualifiedId, getSpace } from '@dxos/react-client/echo';
|
|
9
|
-
import { useIdentity } from '@dxos/react-client/halo';
|
|
10
|
-
import {
|
|
11
|
-
createDataExtensions,
|
|
12
|
-
listener,
|
|
13
|
-
localStorageStateStoreAdapter,
|
|
14
|
-
state,
|
|
15
|
-
type Extension,
|
|
16
|
-
type EditorSelectionState,
|
|
17
|
-
} from '@dxos/react-ui-editor';
|
|
18
|
-
|
|
19
|
-
import MarkdownEditor, { type MarkdownEditorProps } from './MarkdownEditor';
|
|
20
|
-
import { createBaseExtensions } from '../extensions';
|
|
21
|
-
import { type DocumentType, type MarkdownPluginState, type MarkdownSettingsProps } from '../types';
|
|
22
|
-
import { getFallbackName, setFallbackName } from '../util';
|
|
23
|
-
|
|
24
|
-
type DocumentEditorProps = {
|
|
25
|
-
document: DocumentType;
|
|
26
|
-
settings: MarkdownSettingsProps;
|
|
27
|
-
} & Omit<MarkdownEditorProps, 'id' | 'inputMode' | 'toolbar' | 'extensions'> &
|
|
28
|
-
Pick<MarkdownPluginState, 'extensionProviders'>;
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Editor for a `DocumentType`.
|
|
32
|
-
*/
|
|
33
|
-
const DocumentEditor = ({
|
|
34
|
-
document: doc,
|
|
35
|
-
extensionProviders = [],
|
|
36
|
-
viewMode,
|
|
37
|
-
settings,
|
|
38
|
-
...props
|
|
39
|
-
}: DocumentEditorProps) => {
|
|
40
|
-
const space = getSpace(doc);
|
|
41
|
-
const identity = useIdentity();
|
|
42
|
-
const dispatch = useIntentDispatcher();
|
|
43
|
-
|
|
44
|
-
const baseExtensions = useMemo(() => {
|
|
45
|
-
// TODO(wittjosiah): Autocomplete is not working and this query is causing performance issues.
|
|
46
|
-
// const query = space?.db.query(Filter.schema(DocumentType));
|
|
47
|
-
// query?.subscribe();
|
|
48
|
-
return createBaseExtensions({
|
|
49
|
-
viewMode,
|
|
50
|
-
settings,
|
|
51
|
-
document: doc,
|
|
52
|
-
dispatch,
|
|
53
|
-
// query,
|
|
54
|
-
});
|
|
55
|
-
}, [doc, viewMode, dispatch, settings, settings.folding, settings.numberedHeadings]);
|
|
56
|
-
|
|
57
|
-
const providerExtensions = useMemo(
|
|
58
|
-
() =>
|
|
59
|
-
extensionProviders.reduce((acc: Extension[], provider) => {
|
|
60
|
-
const provided = typeof provider === 'function' ? provider({ document: doc }) : provider;
|
|
61
|
-
if (provided) {
|
|
62
|
-
acc.push(...provided);
|
|
63
|
-
}
|
|
64
|
-
return acc;
|
|
65
|
-
}, []),
|
|
66
|
-
[extensionProviders],
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
const extensions = useMemo(
|
|
70
|
-
() => [
|
|
71
|
-
// NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
|
|
72
|
-
createDataExtensions({
|
|
73
|
-
id: doc.id,
|
|
74
|
-
text: doc.content && createDocAccessor(doc.content, ['content']),
|
|
75
|
-
space,
|
|
76
|
-
identity,
|
|
77
|
-
}),
|
|
78
|
-
state(localStorageStateStoreAdapter),
|
|
79
|
-
listener({
|
|
80
|
-
onChange: (text) => {
|
|
81
|
-
setFallbackName(doc, text);
|
|
82
|
-
},
|
|
83
|
-
}),
|
|
84
|
-
providerExtensions,
|
|
85
|
-
baseExtensions,
|
|
86
|
-
],
|
|
87
|
-
[doc, doc.content, space, baseExtensions, providerExtensions, identity],
|
|
88
|
-
);
|
|
89
|
-
|
|
90
|
-
const initialValue = useMemo(() => doc.content?.content, [doc.content]);
|
|
91
|
-
|
|
92
|
-
// Migrate gradually to `fallbackName`.
|
|
93
|
-
useEffect(() => {
|
|
94
|
-
if (!doc.fallbackName && doc.content?.content) {
|
|
95
|
-
doc.fallbackName = getFallbackName(doc.content.content);
|
|
96
|
-
}
|
|
97
|
-
}, [doc, doc.content]);
|
|
98
|
-
|
|
99
|
-
// Restore last selection and scroll point.
|
|
100
|
-
const id = fullyQualifiedId(doc);
|
|
101
|
-
const { scrollTo, selection } = useMemo<EditorSelectionState>(
|
|
102
|
-
() => localStorageStateStoreAdapter.getState(id) ?? {},
|
|
103
|
-
[doc],
|
|
104
|
-
);
|
|
105
|
-
|
|
106
|
-
const fileManagerPlugin = useResolvePlugin(parseFileManagerPlugin);
|
|
107
|
-
const handleFileUpload = useMemo(() => {
|
|
108
|
-
if (space === undefined) {
|
|
109
|
-
return undefined;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
if (fileManagerPlugin?.provides.file.upload === undefined) {
|
|
113
|
-
return undefined;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
return async (file: File) => {
|
|
117
|
-
return fileManagerPlugin?.provides?.file?.upload?.(file, space);
|
|
118
|
-
};
|
|
119
|
-
}, [fileManagerPlugin, space]);
|
|
120
|
-
|
|
121
|
-
return (
|
|
122
|
-
<MarkdownEditor
|
|
123
|
-
id={id}
|
|
124
|
-
initialValue={initialValue}
|
|
125
|
-
extensions={extensions}
|
|
126
|
-
scrollTo={scrollTo}
|
|
127
|
-
selection={selection}
|
|
128
|
-
onFileUpload={handleFileUpload}
|
|
129
|
-
inputMode={settings.editorInputMode}
|
|
130
|
-
toolbar={settings.toolbar}
|
|
131
|
-
viewMode={viewMode}
|
|
132
|
-
{...props}
|
|
133
|
-
/>
|
|
134
|
-
);
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
export default DocumentEditor;
|
|
138
|
-
|
|
139
|
-
export type DocumentEditor = typeof DocumentEditor;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2023 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { DotsThreeVertical } from '@phosphor-icons/react';
|
|
6
|
-
import React, { type PropsWithChildren, type FC } from 'react';
|
|
7
|
-
|
|
8
|
-
import { Surface } from '@dxos/app-framework';
|
|
9
|
-
import { Button, DropdownMenu } from '@dxos/react-ui';
|
|
10
|
-
import { fineButtonDimensions, getSize } from '@dxos/react-ui-theme';
|
|
11
|
-
|
|
12
|
-
import { type DocumentType, type MarkdownProperties } from '../types';
|
|
13
|
-
|
|
14
|
-
// TODO(thure): This needs to be refactored into a graph node action.
|
|
15
|
-
export const DocumentHeadingMenu: FC<{ document: DocumentType }> = ({ document }) => {
|
|
16
|
-
return <HeadingMenu properties={document} content={document.content?.content} />;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Menu for the layout heading.
|
|
21
|
-
*/
|
|
22
|
-
export const HeadingMenu = ({
|
|
23
|
-
content,
|
|
24
|
-
properties,
|
|
25
|
-
}: PropsWithChildren<{
|
|
26
|
-
content: string | undefined;
|
|
27
|
-
properties: MarkdownProperties;
|
|
28
|
-
}>) => {
|
|
29
|
-
return (
|
|
30
|
-
<DropdownMenu.Root modal={false}>
|
|
31
|
-
<DropdownMenu.Trigger asChild>
|
|
32
|
-
<Button variant='ghost' classNames={fineButtonDimensions}>
|
|
33
|
-
<DotsThreeVertical className={getSize(4)} />
|
|
34
|
-
</Button>
|
|
35
|
-
</DropdownMenu.Trigger>
|
|
36
|
-
<DropdownMenu.Portal>
|
|
37
|
-
<DropdownMenu.Content sideOffset={8} classNames='z-10'>
|
|
38
|
-
<DropdownMenu.Viewport>
|
|
39
|
-
<Surface data={{ content, properties }} role='menuitem' />
|
|
40
|
-
</DropdownMenu.Viewport>
|
|
41
|
-
<DropdownMenu.Arrow />
|
|
42
|
-
</DropdownMenu.Content>
|
|
43
|
-
</DropdownMenu.Portal>
|
|
44
|
-
</DropdownMenu.Root>
|
|
45
|
-
);
|
|
46
|
-
};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2024 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import React, { type PropsWithChildren } from 'react';
|
|
6
|
-
|
|
7
|
-
import { Main } from '@dxos/react-ui';
|
|
8
|
-
import { editorWithToolbarLayout } from '@dxos/react-ui-editor';
|
|
9
|
-
import { topbarBlockPaddingStart } from '@dxos/react-ui-theme';
|
|
10
|
-
|
|
11
|
-
export const MainLayout = ({ children, toolbar }: PropsWithChildren<{ toolbar?: boolean }>) => {
|
|
12
|
-
return (
|
|
13
|
-
<Main.Content
|
|
14
|
-
bounce
|
|
15
|
-
data-toolbar={toolbar ? 'enabled' : 'disabled'}
|
|
16
|
-
classNames={[topbarBlockPaddingStart, editorWithToolbarLayout]}
|
|
17
|
-
>
|
|
18
|
-
{children}
|
|
19
|
-
</Main.Content>
|
|
20
|
-
);
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
// Used when the editor is embedded in another context (e.g., iframe) and has no topbar/sidebar/etc.
|
|
24
|
-
// TODO(wittjosiah): What's the difference between this and Section/Card?
|
|
25
|
-
export const EmbeddedLayout = ({ children }: PropsWithChildren) => {
|
|
26
|
-
return <Main.Content classNames='min-bs-[100dvh] grid p-0.5'>{children}</Main.Content>;
|
|
27
|
-
};
|