@dxos/plugin-markdown 0.6.13-main.ed424a1 → 0.6.13-staging.1e988a3
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/DocumentCard-2P4EICBA.mjs +11 -0
- package/dist/lib/browser/DocumentEditor-GPWV3VN3.mjs +11 -0
- package/dist/lib/browser/MarkdownEditor-EKJJQEFL.mjs +10 -0
- package/dist/lib/browser/MarkdownEditor-EKJJQEFL.mjs.map +7 -0
- package/dist/lib/browser/chunk-354DCID5.mjs +117 -0
- package/dist/lib/browser/chunk-354DCID5.mjs.map +7 -0
- package/dist/lib/browser/chunk-4GGD6YJO.mjs +19 -0
- package/dist/lib/browser/chunk-4GGD6YJO.mjs.map +7 -0
- package/dist/lib/browser/chunk-7AF2JLK4.mjs +164 -0
- package/dist/lib/browser/chunk-7AF2JLK4.mjs.map +7 -0
- package/dist/lib/browser/{chunk-US5O2P3R.mjs → chunk-CQJL4G4X.mjs} +2 -4
- package/dist/lib/browser/chunk-CQJL4G4X.mjs.map +7 -0
- package/dist/lib/browser/chunk-RL7QY322.mjs +86 -0
- package/dist/lib/browser/chunk-RL7QY322.mjs.map +7 -0
- package/dist/lib/browser/chunk-VUN4QKTT.mjs +208 -0
- package/dist/lib/browser/chunk-VUN4QKTT.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +117 -78
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/meta.mjs +1 -1
- package/dist/lib/browser/types/index.mjs +4 -6
- package/dist/lib/node/{chunk-P7YU53RP.cjs → DocumentCard-EHJDDSRY.cjs} +10 -16
- package/dist/lib/node/DocumentCard-EHJDDSRY.cjs.map +7 -0
- package/dist/lib/node/DocumentEditor-I5GCRBKU.cjs +29 -0
- package/dist/lib/node/DocumentEditor-I5GCRBKU.cjs.map +7 -0
- package/dist/lib/node/MarkdownEditor-UE23H75V.cjs +31 -0
- package/dist/lib/node/MarkdownEditor-UE23H75V.cjs.map +7 -0
- package/dist/lib/node/chunk-7XIBNEI7.cjs +238 -0
- package/dist/lib/node/chunk-7XIBNEI7.cjs.map +7 -0
- package/dist/lib/node/chunk-KTYIOXL5.cjs +149 -0
- package/dist/lib/node/chunk-KTYIOXL5.cjs.map +7 -0
- package/dist/lib/node/chunk-Q4ZSCBQE.cjs +114 -0
- package/dist/lib/node/chunk-Q4ZSCBQE.cjs.map +7 -0
- package/dist/lib/node/chunk-RVGN72IX.cjs +189 -0
- package/dist/lib/node/chunk-RVGN72IX.cjs.map +7 -0
- package/dist/lib/node/chunk-TGMR2CKU.cjs +52 -0
- package/dist/lib/node/chunk-TGMR2CKU.cjs.map +7 -0
- package/dist/lib/node/{chunk-UJMOZCIA.cjs → chunk-VWQH4WC2.cjs} +8 -11
- package/dist/lib/node/chunk-VWQH4WC2.cjs.map +7 -0
- package/dist/lib/node/index.cjs +147 -112
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.cjs +3 -3
- package/dist/lib/node/meta.cjs.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/types/index.cjs +6 -8
- package/dist/lib/node/types/index.cjs.map +2 -2
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/components/DocumentCard.d.ts +16 -0
- package/dist/types/src/components/DocumentCard.d.ts.map +1 -0
- package/dist/types/src/components/DocumentEditor.d.ts +14 -0
- package/dist/types/src/components/DocumentEditor.d.ts.map +1 -0
- package/dist/types/src/components/HeadingMenu.d.ts +13 -0
- package/dist/types/src/components/HeadingMenu.d.ts.map +1 -0
- package/dist/types/src/components/Layout.d.ts +6 -0
- package/dist/types/src/components/Layout.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownEditor.d.ts +3 -8
- 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 +11 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/extensions.d.ts +15 -11
- package/dist/types/src/extensions.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +9 -4
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/types/document.d.ts +1 -10
- package/dist/types/src/types/document.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +9 -8
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/package.json +36 -41
- package/src/MarkdownPlugin.tsx +97 -50
- package/src/components/DocumentCard.tsx +107 -0
- package/src/components/DocumentEditor.tsx +137 -0
- package/src/components/HeadingMenu.tsx +46 -0
- package/src/components/Layout.tsx +27 -0
- package/src/components/MarkdownEditor.stories.tsx +7 -13
- package/src/components/MarkdownEditor.tsx +75 -40
- package/src/components/Toolbar.stories.tsx +2 -2
- package/src/components/index.ts +14 -2
- package/src/extensions.tsx +67 -124
- package/src/meta.tsx +19 -0
- package/src/types/document.ts +0 -12
- package/src/types/types.ts +7 -10
- package/src/util.tsx +2 -2
- package/dist/lib/browser/MarkdownContainer-AYBJNSXD.mjs +0 -467
- package/dist/lib/browser/MarkdownContainer-AYBJNSXD.mjs.map +0 -7
- package/dist/lib/browser/chunk-45N5MEOV.mjs +0 -50
- package/dist/lib/browser/chunk-45N5MEOV.mjs.map +0 -7
- package/dist/lib/browser/chunk-DRJ3FPYF.mjs +0 -15
- package/dist/lib/browser/chunk-DRJ3FPYF.mjs.map +0 -7
- package/dist/lib/browser/chunk-US5O2P3R.mjs.map +0 -7
- package/dist/lib/node/MarkdownContainer-IM3V72FY.cjs +0 -482
- package/dist/lib/node/MarkdownContainer-IM3V72FY.cjs.map +0 -7
- package/dist/lib/node/chunk-P7YU53RP.cjs.map +0 -7
- package/dist/lib/node/chunk-UJMOZCIA.cjs.map +0 -7
- package/dist/lib/node/chunk-W2YJVZ3N.cjs +0 -72
- package/dist/lib/node/chunk-W2YJVZ3N.cjs.map +0 -7
- package/dist/lib/node-esm/MarkdownContainer-56YBSFBE.mjs +0 -468
- package/dist/lib/node-esm/MarkdownContainer-56YBSFBE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MIDCCMIX.mjs +0 -42
- package/dist/lib/node-esm/chunk-MIDCCMIX.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NEVN5WR6.mjs +0 -17
- package/dist/lib/node-esm/chunk-NEVN5WR6.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UCNOGIBC.mjs +0 -51
- package/dist/lib/node-esm/chunk-UCNOGIBC.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -494
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/meta.mjs +0 -10
- package/dist/lib/node-esm/types/index.mjs +0 -15
- package/dist/types/src/components/MarkdownContainer.d.ts +0 -15
- package/dist/types/src/components/MarkdownContainer.d.ts.map +0 -1
- package/dist/types/src/hooks/index.d.ts +0 -2
- package/dist/types/src/hooks/index.d.ts.map +0 -1
- package/dist/types/src/hooks/useSelectCurrentThread.d.ts +0 -6
- package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +0 -1
- package/src/components/MarkdownContainer.tsx +0 -108
- package/src/hooks/index.ts +0 -5
- package/src/hooks/useSelectCurrentThread.tsx +0 -46
- package/src/meta.ts +0 -15
- /package/dist/lib/{node-esm/meta.mjs.map → browser/DocumentCard-2P4EICBA.mjs.map} +0 -0
- /package/dist/lib/{node-esm/types/index.mjs.map → browser/DocumentEditor-GPWV3VN3.mjs.map} +0 -0
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
2
1
|
import { type IntentDispatcher } from '@dxos/app-framework';
|
|
3
2
|
import { type Query } from '@dxos/react-client/echo';
|
|
4
|
-
import { type
|
|
5
|
-
import { type DocumentType, type
|
|
6
|
-
type ExtensionsOptions = {
|
|
7
|
-
document: DocumentType;
|
|
8
|
-
dispatch?: IntentDispatcher;
|
|
9
|
-
query?: Query<DocumentType>;
|
|
10
|
-
settings: MarkdownSettingsProps;
|
|
3
|
+
import { type Extension, type EditorViewMode } from '@dxos/react-ui-editor';
|
|
4
|
+
import { type DocumentType, type MarkdownSettingsProps } from './types';
|
|
5
|
+
export type ExtensionsOptions = {
|
|
11
6
|
viewMode?: EditorViewMode;
|
|
7
|
+
settings?: MarkdownSettingsProps;
|
|
8
|
+
document?: DocumentType;
|
|
9
|
+
debug?: boolean;
|
|
10
|
+
experimental?: boolean;
|
|
11
|
+
numberedHeadings?: boolean;
|
|
12
|
+
folding?: boolean;
|
|
13
|
+
query?: Query<DocumentType>;
|
|
14
|
+
dispatch?: IntentDispatcher;
|
|
12
15
|
};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Create extension instances for editor.
|
|
18
|
+
*/
|
|
19
|
+
export declare const createBaseExtensions: ({ viewMode, settings, document, query, dispatch, }: ExtensionsOptions) => Extension[];
|
|
16
20
|
//# sourceMappingURL=extensions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../../src/extensions.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../../src/extensions.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,gBAAgB,EAAoB,MAAM,qBAAqB,CAAC;AAE9E,OAAO,EAAoB,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,cAAc,EAQpB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAExE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,uDAM9B,iBAAiB,KAAG,SAAS,EAkF/B,CAAC"}
|
package/dist/types/src/meta.d.ts
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
|
+
import { type IconProps } from '@phosphor-icons/react';
|
|
2
|
+
import React from 'react';
|
|
1
3
|
export declare const MARKDOWN_PLUGIN = "dxos.org/plugin/markdown";
|
|
2
4
|
declare const _default: {
|
|
3
5
|
id: string;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
shortId?: string;
|
|
7
|
+
name?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
homePage?: string;
|
|
10
|
+
tags?: string[];
|
|
11
|
+
iconComponent?: React.FC<IconProps>;
|
|
12
|
+
iconSymbol?: string;
|
|
8
13
|
};
|
|
9
14
|
export default _default;
|
|
10
15
|
//# sourceMappingURL=meta.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,eAAO,MAAM,eAAe,6BAA6B,CAAC;;;;;;;;;;;AAE1D,wBAOG"}
|
|
@@ -9,12 +9,12 @@ declare const TextType_base: import("@dxos/echo-schema").AbstractTypedObject<{
|
|
|
9
9
|
export declare class TextType extends TextType_base {
|
|
10
10
|
}
|
|
11
11
|
declare const DocumentType_base: import("@dxos/echo-schema").AbstractTypedObject<{
|
|
12
|
+
name?: string | undefined;
|
|
12
13
|
content: import("@dxos/echo-schema").Ref<{
|
|
13
14
|
content: string;
|
|
14
15
|
} & {
|
|
15
16
|
id: string;
|
|
16
17
|
}>;
|
|
17
|
-
name?: string | undefined;
|
|
18
18
|
fallbackName?: string | undefined;
|
|
19
19
|
threads: import("@dxos/echo-schema").Ref<{
|
|
20
20
|
name?: string | undefined;
|
|
@@ -23,7 +23,6 @@ declare const DocumentType_base: import("@dxos/echo-schema").AbstractTypedObject
|
|
|
23
23
|
messages: import("@dxos/echo-schema").Ref<{
|
|
24
24
|
text: string;
|
|
25
25
|
timestamp: string;
|
|
26
|
-
state?: import("@dxos/plugin-space/types").MessageState | undefined;
|
|
27
26
|
sender: {
|
|
28
27
|
name?: string | undefined;
|
|
29
28
|
contact?: import("@dxos/echo-schema").Ref<{
|
|
@@ -66,7 +65,6 @@ declare const DocumentType_base: import("@dxos/echo-schema").AbstractTypedObject
|
|
|
66
65
|
messages: import("@dxos/echo-schema").Ref<{
|
|
67
66
|
text: string;
|
|
68
67
|
timestamp: string;
|
|
69
|
-
state?: import("@dxos/plugin-space/types").MessageState | undefined;
|
|
70
68
|
sender: {
|
|
71
69
|
name?: string | undefined;
|
|
72
70
|
contact?: import("@dxos/echo-schema").Ref<{
|
|
@@ -95,12 +93,5 @@ declare const DocumentType_base: import("@dxos/echo-schema").AbstractTypedObject
|
|
|
95
93
|
}>>;
|
|
96
94
|
export declare class DocumentType extends DocumentType_base {
|
|
97
95
|
}
|
|
98
|
-
/**
|
|
99
|
-
* Checks if an object conforms to the interface needed to render an editor.
|
|
100
|
-
*/
|
|
101
|
-
export declare const isEditorModel: (data: any) => data is {
|
|
102
|
-
id: string;
|
|
103
|
-
text: string;
|
|
104
|
-
};
|
|
105
96
|
export {};
|
|
106
97
|
//# sourceMappingURL=document.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../../src/types/document.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,CAAC,EAAe,MAAM,mBAAmB,CAAC;;;;;;;;AAGxD,qBAAa,QAAS,SAAQ,aAE5B;CAAG
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../../src/types/document.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,CAAC,EAAe,MAAM,mBAAmB,CAAC;;;;;;;;AAGxD,qBAAa,QAAS,SAAQ,aAE5B;CAAG;;;;;;;;;;;;;;;;;oBAQ+rF,CAAC;uBAAyC,CAAC;wBAAwD,CAAC;;;;;;;;2BAAsP,CAAC;qBAAuC,CAAC;;iBAA8C,CAAC;sBAA4E,CAAC;;;mBAAwE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;oBAAxkB,CAAC;uBAAyC,CAAC;wBAAwD,CAAC;;;;;;;;2BAAsP,CAAC;qBAAuC,CAAC;;iBAA8C,CAAC;sBAA4E,CAAC;;;mBAAwE,CAAC;;;;;;;;AAN5wG,qBAAa,YAAa,SAAQ,iBAKhC;CAAG"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { GraphBuilderProvides, GraphSerializerProvides, IntentResolverProvides, MetadataRecordsProvides, SettingsProvides, SurfaceProvides, TranslationsProvides } from '@dxos/app-framework';
|
|
2
2
|
import { type SchemaProvides } from '@dxos/plugin-client';
|
|
3
|
-
import { type SpaceInitProvides } from '@dxos/plugin-space';
|
|
4
3
|
import { type Extension, type EditorInputMode, type EditorViewMode } from '@dxos/react-ui-editor';
|
|
5
4
|
import { type DocumentType } from './document';
|
|
6
5
|
export declare enum MarkdownAction {
|
|
@@ -8,13 +7,13 @@ export declare enum MarkdownAction {
|
|
|
8
7
|
SET_VIEW_MODE = "dxos.org/plugin/markdown/action/set-view-mode"
|
|
9
8
|
}
|
|
10
9
|
export type MarkdownProperties = Record<string, any>;
|
|
11
|
-
export type
|
|
10
|
+
export type ExtensionsProvider = (props: {
|
|
12
11
|
document?: DocumentType;
|
|
13
|
-
}) => Extension
|
|
12
|
+
}) => Extension[];
|
|
14
13
|
export type OnChange = (text: string) => void;
|
|
15
14
|
export type MarkdownExtensionProvides = {
|
|
16
15
|
markdown: {
|
|
17
|
-
extensions:
|
|
16
|
+
extensions: ExtensionsProvider;
|
|
18
17
|
};
|
|
19
18
|
};
|
|
20
19
|
type StackProvides = {
|
|
@@ -23,8 +22,10 @@ type StackProvides = {
|
|
|
23
22
|
};
|
|
24
23
|
};
|
|
25
24
|
export type MarkdownPluginState = {
|
|
26
|
-
extensionProviders
|
|
27
|
-
viewMode:
|
|
25
|
+
extensionProviders: NonNullable<ExtensionsProvider>[];
|
|
26
|
+
viewMode: {
|
|
27
|
+
[key: string]: EditorViewMode;
|
|
28
|
+
};
|
|
28
29
|
};
|
|
29
30
|
export type MarkdownSettingsProps = {
|
|
30
31
|
defaultViewMode: EditorViewMode;
|
|
@@ -39,9 +40,9 @@ export type MarkdownSettingsProps = {
|
|
|
39
40
|
type ThreadProvides<T> = {
|
|
40
41
|
thread: {
|
|
41
42
|
predicate: (obj: any) => obj is T;
|
|
42
|
-
createSort: (obj: T) => (anchorA: string
|
|
43
|
+
createSort: (obj: T) => (anchorA: string, anchorB: string) => number;
|
|
43
44
|
};
|
|
44
45
|
};
|
|
45
|
-
export type MarkdownPluginProvides = SurfaceProvides & IntentResolverProvides & GraphBuilderProvides & GraphSerializerProvides & MetadataRecordsProvides & SettingsProvides<MarkdownSettingsProps> & TranslationsProvides & SchemaProvides &
|
|
46
|
+
export type MarkdownPluginProvides = SurfaceProvides & IntentResolverProvides & GraphBuilderProvides & GraphSerializerProvides & MetadataRecordsProvides & SettingsProvides<MarkdownSettingsProps> & TranslationsProvides & SchemaProvides & StackProvides & ThreadProvides<DocumentType>;
|
|
46
47
|
export {};
|
|
47
48
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAElG,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,oBAAY,cAAc;IACxB,MAAM,2CAA8B;IACpC,aAAa,kDAAqC;CACnD;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAErD,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,YAAY,CAAA;CAAE,KAAK,SAAS,EAAE,CAAC;AAErF,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAE9C,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE;QACR,UAAU,EAAE,kBAAkB,CAAC;KAChC,CAAC;CACH,CAAC;AAGF,KAAK,aAAa,GAAG;IACnB,KAAK,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;KAClC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAEhC,kBAAkB,EAAE,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAItD,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,eAAe,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAIF,KAAK,cAAc,CAAC,CAAC,IAAI;IACvB,MAAM,EAAE;QACN,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;QAClC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;KACtE,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,eAAe,GAClD,sBAAsB,GACtB,oBAAoB,GACpB,uBAAuB,GACvB,uBAAuB,GACvB,gBAAgB,CAAC,qBAAqB,CAAC,GACvC,oBAAoB,GACpB,cAAc,GACd,aAAa,GACb,cAAc,CAAC,YAAY,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-markdown",
|
|
3
|
-
"version": "0.6.13-
|
|
3
|
+
"version": "0.6.13-staging.1e988a3",
|
|
4
4
|
"description": "DXOS Surface plugin for interacting with Markdown",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -10,24 +10,21 @@
|
|
|
10
10
|
".": {
|
|
11
11
|
"browser": "./dist/lib/browser/index.mjs",
|
|
12
12
|
"node": {
|
|
13
|
-
"
|
|
14
|
-
"default": "./dist/lib/node-esm/index.mjs"
|
|
13
|
+
"default": "./dist/lib/node/index.cjs"
|
|
15
14
|
},
|
|
16
15
|
"types": "./dist/types/src/index.d.ts"
|
|
17
16
|
},
|
|
18
17
|
"./meta": {
|
|
19
18
|
"browser": "./dist/lib/browser/meta.mjs",
|
|
20
19
|
"node": {
|
|
21
|
-
"
|
|
22
|
-
"default": "./dist/lib/node-esm/meta.mjs"
|
|
20
|
+
"default": "./dist/lib/node/meta.cjs"
|
|
23
21
|
},
|
|
24
22
|
"types": "./dist/types/src/meta.d.ts"
|
|
25
23
|
},
|
|
26
24
|
"./types": {
|
|
27
25
|
"browser": "./dist/lib/browser/types/index.mjs",
|
|
28
26
|
"node": {
|
|
29
|
-
"
|
|
30
|
-
"default": "./dist/lib/node-esm/types/index.mjs"
|
|
27
|
+
"default": "./dist/lib/node/types/index.cjs"
|
|
31
28
|
},
|
|
32
29
|
"types": "./dist/types/src/types/index.d.ts"
|
|
33
30
|
}
|
|
@@ -49,31 +46,29 @@
|
|
|
49
46
|
],
|
|
50
47
|
"dependencies": {
|
|
51
48
|
"@codemirror/search": "^6.5.6",
|
|
52
|
-
"@codemirror/view": "^6.
|
|
53
|
-
"@effect/schema": "^0.75.1",
|
|
49
|
+
"@codemirror/view": "^6.29.1",
|
|
54
50
|
"@preact/signals-core": "^1.6.0",
|
|
55
|
-
"@dxos/app-framework": "0.6.13-
|
|
56
|
-
"@dxos/async": "0.6.13-
|
|
57
|
-
"@dxos/echo-schema": "0.6.13-
|
|
58
|
-
"@dxos/
|
|
59
|
-
"@dxos/
|
|
60
|
-
"@dxos/
|
|
61
|
-
"@dxos/log": "0.6.13-
|
|
62
|
-
"@dxos/plugin-attention": "0.6.13-
|
|
63
|
-
"@dxos/plugin-client": "0.6.13-
|
|
64
|
-
"@dxos/plugin-graph": "0.6.13-
|
|
65
|
-
"@dxos/plugin-space": "0.6.13-
|
|
66
|
-
"@dxos/plugin-
|
|
67
|
-
"@dxos/plugin-
|
|
68
|
-
"@dxos/react-client": "0.6.13-
|
|
69
|
-
"@dxos/react-hooks": "0.6.13-
|
|
70
|
-
"@dxos/react-ui-
|
|
71
|
-
"@dxos/react-ui-card": "0.6.13-
|
|
72
|
-
"@dxos/react-ui-
|
|
73
|
-
"@dxos/react-ui-
|
|
74
|
-
"@dxos/react-ui-stack": "0.6.13-
|
|
75
|
-
"@dxos/util": "0.6.13-
|
|
76
|
-
"@dxos/react-ui-mosaic": "0.6.13-main.ed424a1"
|
|
51
|
+
"@dxos/app-framework": "0.6.13-staging.1e988a3",
|
|
52
|
+
"@dxos/async": "0.6.13-staging.1e988a3",
|
|
53
|
+
"@dxos/echo-schema": "0.6.13-staging.1e988a3",
|
|
54
|
+
"@dxos/keys": "0.6.13-staging.1e988a3",
|
|
55
|
+
"@dxos/local-storage": "0.6.13-staging.1e988a3",
|
|
56
|
+
"@dxos/invariant": "0.6.13-staging.1e988a3",
|
|
57
|
+
"@dxos/log": "0.6.13-staging.1e988a3",
|
|
58
|
+
"@dxos/plugin-attention": "0.6.13-staging.1e988a3",
|
|
59
|
+
"@dxos/plugin-client": "0.6.13-staging.1e988a3",
|
|
60
|
+
"@dxos/plugin-graph": "0.6.13-staging.1e988a3",
|
|
61
|
+
"@dxos/plugin-space": "0.6.13-staging.1e988a3",
|
|
62
|
+
"@dxos/plugin-theme": "0.6.13-staging.1e988a3",
|
|
63
|
+
"@dxos/plugin-settings": "0.6.13-staging.1e988a3",
|
|
64
|
+
"@dxos/react-client": "0.6.13-staging.1e988a3",
|
|
65
|
+
"@dxos/react-hooks": "0.6.13-staging.1e988a3",
|
|
66
|
+
"@dxos/react-ui-deck": "0.6.13-staging.1e988a3",
|
|
67
|
+
"@dxos/react-ui-card": "0.6.13-staging.1e988a3",
|
|
68
|
+
"@dxos/react-ui-editor": "0.6.13-staging.1e988a3",
|
|
69
|
+
"@dxos/react-ui-mosaic": "0.6.13-staging.1e988a3",
|
|
70
|
+
"@dxos/react-ui-stack": "0.6.13-staging.1e988a3",
|
|
71
|
+
"@dxos/util": "0.6.13-staging.1e988a3"
|
|
77
72
|
},
|
|
78
73
|
"devDependencies": {
|
|
79
74
|
"@phosphor-icons/react": "^2.1.5",
|
|
@@ -81,18 +76,18 @@
|
|
|
81
76
|
"@types/react-dom": "~18.2.0",
|
|
82
77
|
"react": "~18.2.0",
|
|
83
78
|
"react-dom": "~18.2.0",
|
|
84
|
-
"vite": "5.4
|
|
85
|
-
"@dxos/
|
|
86
|
-
"@dxos/
|
|
87
|
-
"@dxos/react-ui
|
|
88
|
-
"@dxos/
|
|
79
|
+
"vite": "^5.3.4",
|
|
80
|
+
"@dxos/random": "0.6.13-staging.1e988a3",
|
|
81
|
+
"@dxos/storybook-utils": "0.6.13-staging.1e988a3",
|
|
82
|
+
"@dxos/react-ui": "0.6.13-staging.1e988a3",
|
|
83
|
+
"@dxos/react-ui-theme": "0.6.13-staging.1e988a3"
|
|
89
84
|
},
|
|
90
|
-
"
|
|
85
|
+
"optionalDependencies": {
|
|
91
86
|
"@phosphor-icons/react": "^2.1.5",
|
|
92
|
-
"react": "
|
|
93
|
-
"react-dom": "
|
|
94
|
-
"@dxos/react-ui": "0.6.13-
|
|
95
|
-
"@dxos/react-ui-theme": "0.6.13-
|
|
87
|
+
"react": "^18.0.0",
|
|
88
|
+
"react-dom": "^18.0.0",
|
|
89
|
+
"@dxos/react-ui": "0.6.13-staging.1e988a3",
|
|
90
|
+
"@dxos/react-ui-theme": "0.6.13-staging.1e988a3"
|
|
96
91
|
},
|
|
97
92
|
"publishConfig": {
|
|
98
93
|
"access": "public"
|
package/src/MarkdownPlugin.tsx
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { TextAa } from '@phosphor-icons/react';
|
|
6
|
-
import React from 'react';
|
|
5
|
+
import { type IconProps, TextAa } from '@phosphor-icons/react';
|
|
6
|
+
import React, { type Ref } from 'react';
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
+
isObject,
|
|
9
10
|
parseIntentPlugin,
|
|
10
11
|
resolvePlugin,
|
|
11
12
|
LayoutAction,
|
|
@@ -15,6 +16,7 @@ import {
|
|
|
15
16
|
} from '@dxos/app-framework';
|
|
16
17
|
import { create } from '@dxos/echo-schema';
|
|
17
18
|
import { LocalStorageStore } from '@dxos/local-storage';
|
|
19
|
+
import { log } from '@dxos/log';
|
|
18
20
|
import { parseClientPlugin } from '@dxos/plugin-client';
|
|
19
21
|
import { type ActionGroup, createExtension, isActionGroup } from '@dxos/plugin-graph';
|
|
20
22
|
import { SpaceAction } from '@dxos/plugin-space';
|
|
@@ -32,11 +34,12 @@ import {
|
|
|
32
34
|
EditorViewModes,
|
|
33
35
|
translations as editorTranslations,
|
|
34
36
|
} from '@dxos/react-ui-editor';
|
|
37
|
+
import { isTileComponentProps } from '@dxos/react-ui-mosaic';
|
|
35
38
|
|
|
36
|
-
import {
|
|
39
|
+
import { type DocumentItemProps, DocumentCard, DocumentEditor, MarkdownEditor, MarkdownSettings } from './components';
|
|
37
40
|
import meta, { MARKDOWN_PLUGIN } from './meta';
|
|
38
41
|
import translations from './translations';
|
|
39
|
-
import { DocumentType,
|
|
42
|
+
import { DocumentType, TextType } from './types';
|
|
40
43
|
import {
|
|
41
44
|
type MarkdownPluginProvides,
|
|
42
45
|
type MarkdownSettingsProps,
|
|
@@ -45,22 +48,37 @@ import {
|
|
|
45
48
|
} from './types';
|
|
46
49
|
import { markdownExtensionPlugins, serializer } from './util';
|
|
47
50
|
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Checks if an object conforms to the interface needed to render an editor.
|
|
53
|
+
*/
|
|
54
|
+
const isEditorModel = (data: any): data is { id: string; text: string } => {
|
|
55
|
+
return (
|
|
56
|
+
data &&
|
|
57
|
+
typeof data === 'object' &&
|
|
58
|
+
'id' in data &&
|
|
59
|
+
typeof data.id === 'string' &&
|
|
60
|
+
'text' in data &&
|
|
61
|
+
typeof data.text === 'string'
|
|
62
|
+
);
|
|
63
|
+
};
|
|
50
64
|
|
|
51
65
|
export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
52
66
|
const settings = new LocalStorageStore<MarkdownSettingsProps>(MARKDOWN_PLUGIN, {
|
|
53
67
|
defaultViewMode: 'preview',
|
|
54
68
|
toolbar: true,
|
|
55
|
-
numberedHeadings: true,
|
|
56
69
|
folding: false,
|
|
57
70
|
experimental: false,
|
|
58
71
|
});
|
|
59
72
|
|
|
60
73
|
const state = new LocalStorageStore<MarkdownPluginState>(MARKDOWN_PLUGIN, { extensionProviders: [], viewMode: {} });
|
|
61
74
|
|
|
62
|
-
const getViewMode = (id
|
|
63
|
-
|
|
75
|
+
const getViewMode = (id?: string) => {
|
|
76
|
+
return (id && state.values.viewMode[id]) || settings.values.defaultViewMode;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const setViewMode = (id: string, nextViewMode: EditorViewMode) => {
|
|
80
|
+
state.values.viewMode[id] = nextViewMode;
|
|
81
|
+
};
|
|
64
82
|
|
|
65
83
|
return {
|
|
66
84
|
meta,
|
|
@@ -91,7 +109,7 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
91
109
|
|
|
92
110
|
markdownExtensionPlugins(plugins).forEach((plugin) => {
|
|
93
111
|
const { extensions } = plugin.provides.markdown;
|
|
94
|
-
state.values.extensionProviders
|
|
112
|
+
state.values.extensionProviders.push(extensions);
|
|
95
113
|
});
|
|
96
114
|
},
|
|
97
115
|
provides: {
|
|
@@ -99,9 +117,10 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
99
117
|
metadata: {
|
|
100
118
|
records: {
|
|
101
119
|
[DocumentType.typename]: {
|
|
102
|
-
label: (object: any) => (object instanceof DocumentType ? object.name
|
|
120
|
+
label: (object: any) => (object instanceof DocumentType ? object.name ?? object.fallbackName : undefined),
|
|
103
121
|
placeholder: ['document title placeholder', { ns: MARKDOWN_PLUGIN }],
|
|
104
|
-
icon:
|
|
122
|
+
icon: (props: IconProps) => <TextAa {...props} />,
|
|
123
|
+
iconSymbol: 'ph--text-aa--regular',
|
|
105
124
|
graphProps: {
|
|
106
125
|
managesAutofocus: true,
|
|
107
126
|
},
|
|
@@ -115,12 +134,6 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
115
134
|
echo: {
|
|
116
135
|
schema: [DocumentType, TextType],
|
|
117
136
|
},
|
|
118
|
-
space: {
|
|
119
|
-
onSpaceCreate: {
|
|
120
|
-
label: ['create document label', { ns: MARKDOWN_PLUGIN }],
|
|
121
|
-
action: MarkdownAction.CREATE,
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
137
|
graph: {
|
|
125
138
|
builder: (plugins) => {
|
|
126
139
|
const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;
|
|
@@ -154,7 +167,8 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
154
167
|
},
|
|
155
168
|
properties: {
|
|
156
169
|
label: ['create document label', { ns: MARKDOWN_PLUGIN }],
|
|
157
|
-
icon:
|
|
170
|
+
icon: (props: IconProps) => <TextAa {...props} />,
|
|
171
|
+
iconSymbol: 'ph--text-aa--regular',
|
|
158
172
|
testId: 'markdownPlugin.createObject',
|
|
159
173
|
},
|
|
160
174
|
},
|
|
@@ -227,10 +241,13 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
227
241
|
],
|
|
228
242
|
},
|
|
229
243
|
thread: {
|
|
244
|
+
// TODO(Zan): How to better handle the type predicate?
|
|
230
245
|
predicate: (obj) => obj instanceof DocumentType,
|
|
231
246
|
createSort: (doc: DocumentType) => {
|
|
232
247
|
const accessor = doc.content ? createDocAccessor(doc.content, ['content']) : undefined;
|
|
248
|
+
|
|
233
249
|
if (!accessor) {
|
|
250
|
+
log.warn('No accessor found for document content.');
|
|
234
251
|
return (_) => 0;
|
|
235
252
|
}
|
|
236
253
|
|
|
@@ -239,45 +256,75 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
239
256
|
return range?.start ?? Number.MAX_SAFE_INTEGER;
|
|
240
257
|
};
|
|
241
258
|
|
|
242
|
-
return (anchorA: string
|
|
243
|
-
if (anchorA === undefined || anchorB === undefined) {
|
|
244
|
-
return 0;
|
|
245
|
-
}
|
|
246
|
-
const posA = getStartPosition(anchorA);
|
|
247
|
-
const posB = getStartPosition(anchorB);
|
|
248
|
-
return posA - posB;
|
|
249
|
-
};
|
|
259
|
+
return (anchorA: string, anchorB: string) => getStartPosition(anchorA) - getStartPosition(anchorB);
|
|
250
260
|
},
|
|
251
261
|
},
|
|
252
262
|
surface: {
|
|
253
|
-
component: ({ data, role }) => {
|
|
263
|
+
component: ({ data, role, ...props }, forwardedRef) => {
|
|
264
|
+
const doc =
|
|
265
|
+
data.active instanceof DocumentType
|
|
266
|
+
? data.active
|
|
267
|
+
: data.object instanceof DocumentType
|
|
268
|
+
? data.object
|
|
269
|
+
: undefined;
|
|
270
|
+
|
|
254
271
|
switch (role) {
|
|
255
272
|
case 'section':
|
|
256
273
|
case 'article': {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
274
|
+
if (doc && doc.content) {
|
|
275
|
+
return (
|
|
276
|
+
<DocumentEditor
|
|
277
|
+
role={role}
|
|
278
|
+
coordinate={data.coordinate as LayoutCoordinate}
|
|
279
|
+
document={doc}
|
|
280
|
+
extensionProviders={state.values.extensionProviders}
|
|
281
|
+
settings={settings.values}
|
|
282
|
+
scrollPastEnd
|
|
283
|
+
viewMode={getViewMode(fullyQualifiedId(doc))}
|
|
284
|
+
onViewModeChange={setViewMode}
|
|
285
|
+
/>
|
|
286
|
+
);
|
|
287
|
+
} else if (isEditorModel(data.object)) {
|
|
288
|
+
return (
|
|
289
|
+
<MarkdownEditor
|
|
290
|
+
id={data.object.id}
|
|
291
|
+
role={role}
|
|
292
|
+
coordinate={data.coordinate as LayoutCoordinate}
|
|
293
|
+
initialValue={data.object.text}
|
|
294
|
+
extensionProviders={state.values.extensionProviders}
|
|
295
|
+
inputMode={settings.values.editorInputMode}
|
|
296
|
+
toolbar={settings.values.toolbar}
|
|
297
|
+
scrollPastEnd
|
|
298
|
+
viewMode={getViewMode(data.object.id)}
|
|
299
|
+
onViewModeChange={setViewMode}
|
|
300
|
+
/>
|
|
301
|
+
);
|
|
267
302
|
}
|
|
303
|
+
break;
|
|
304
|
+
}
|
|
268
305
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
306
|
+
case 'card': {
|
|
307
|
+
if (
|
|
308
|
+
isObject(data.content) &&
|
|
309
|
+
typeof data.content.id === 'string' &&
|
|
310
|
+
data.content.object instanceof DocumentType
|
|
311
|
+
) {
|
|
312
|
+
// isTileComponentProps is a type guard for these props.
|
|
313
|
+
// `props` will not pass this guard without transforming `data` into `item`.
|
|
314
|
+
const cardProps = {
|
|
315
|
+
...props,
|
|
316
|
+
item: {
|
|
317
|
+
id: data.content.id,
|
|
318
|
+
object: data.content.object,
|
|
319
|
+
color: typeof data.content.color === 'string' ? data.content.color : undefined,
|
|
320
|
+
} as DocumentItemProps,
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
return isTileComponentProps(cardProps) ? (
|
|
324
|
+
<DocumentCard {...cardProps} settings={settings.values} ref={forwardedRef as Ref<HTMLDivElement>} />
|
|
325
|
+
) : null;
|
|
326
|
+
}
|
|
327
|
+
break;
|
|
281
328
|
}
|
|
282
329
|
|
|
283
330
|
case 'settings': {
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React, { forwardRef } from 'react';
|
|
6
|
+
|
|
7
|
+
import { createDocAccessor } from '@dxos/react-client/echo';
|
|
8
|
+
import { DropdownMenu, Input, useThemeContext, useTranslation } from '@dxos/react-ui';
|
|
9
|
+
import { Card } from '@dxos/react-ui-card';
|
|
10
|
+
import {
|
|
11
|
+
createBasicExtensions,
|
|
12
|
+
createDataExtensions,
|
|
13
|
+
createThemeExtensions,
|
|
14
|
+
useTextEditor,
|
|
15
|
+
} from '@dxos/react-ui-editor';
|
|
16
|
+
import type { MosaicTileComponent } from '@dxos/react-ui-mosaic';
|
|
17
|
+
import { focusRing, mx } from '@dxos/react-ui-theme';
|
|
18
|
+
|
|
19
|
+
import { createBaseExtensions } from '../extensions';
|
|
20
|
+
import { MARKDOWN_PLUGIN } from '../meta';
|
|
21
|
+
import { type DocumentType, type MarkdownSettingsProps } from '../types';
|
|
22
|
+
|
|
23
|
+
export type DocumentItemProps = {
|
|
24
|
+
id: string;
|
|
25
|
+
object: DocumentType;
|
|
26
|
+
color?: string;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export type DocumentCardProps = {
|
|
30
|
+
settings: MarkdownSettingsProps;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @deprecated
|
|
35
|
+
*/
|
|
36
|
+
// TODO(wittjosiah): Unify with DocumentEditor.
|
|
37
|
+
export const DocumentCard: MosaicTileComponent<DocumentItemProps, HTMLDivElement, DocumentCardProps> = forwardRef(
|
|
38
|
+
(
|
|
39
|
+
{
|
|
40
|
+
classNames,
|
|
41
|
+
isDragging,
|
|
42
|
+
draggableStyle,
|
|
43
|
+
draggableProps,
|
|
44
|
+
item: { id, object, color },
|
|
45
|
+
grow,
|
|
46
|
+
settings,
|
|
47
|
+
onSelect,
|
|
48
|
+
onAction,
|
|
49
|
+
},
|
|
50
|
+
forwardRef,
|
|
51
|
+
) => {
|
|
52
|
+
const { t } = useTranslation(MARKDOWN_PLUGIN);
|
|
53
|
+
const { themeMode } = useThemeContext();
|
|
54
|
+
const { parentRef, focusAttributes } = useTextEditor(
|
|
55
|
+
() => ({
|
|
56
|
+
initialValue: object.content?.content,
|
|
57
|
+
extensions: [
|
|
58
|
+
createBasicExtensions({ placeholder: t('editor placeholder') }),
|
|
59
|
+
createThemeExtensions({ themeMode }),
|
|
60
|
+
createDataExtensions({
|
|
61
|
+
id: object.id,
|
|
62
|
+
text: object.content && createDocAccessor(object.content, ['content']),
|
|
63
|
+
}),
|
|
64
|
+
createBaseExtensions({
|
|
65
|
+
document: object,
|
|
66
|
+
debug: settings.debug,
|
|
67
|
+
experimental: settings.experimental,
|
|
68
|
+
}),
|
|
69
|
+
],
|
|
70
|
+
}),
|
|
71
|
+
[object, object.content, themeMode],
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
return (
|
|
75
|
+
<div role='none' ref={forwardRef} className='flex w-full' style={draggableStyle}>
|
|
76
|
+
<Card.Root classNames={mx('w-full snap-center', color, isDragging && 'opacity-20', classNames)} grow={grow}>
|
|
77
|
+
<Card.Header onDoubleClick={() => onSelect?.()}>
|
|
78
|
+
<Card.DragHandle {...draggableProps} />
|
|
79
|
+
<Input.Root>
|
|
80
|
+
<Input.TextInput
|
|
81
|
+
variant='subdued'
|
|
82
|
+
classNames='p-0'
|
|
83
|
+
placeholder={t('document title placeholder')}
|
|
84
|
+
value={object.name}
|
|
85
|
+
onChange={(event) => (object.name = event.target.value)}
|
|
86
|
+
/>
|
|
87
|
+
</Input.Root>
|
|
88
|
+
<Card.Menu>
|
|
89
|
+
{/* TODO(burdon): Handle events/intents? */}
|
|
90
|
+
<DropdownMenu.Item onClick={() => onAction?.({ id, action: 'delete' })}>
|
|
91
|
+
<span className='grow'>Delete</span>
|
|
92
|
+
</DropdownMenu.Item>
|
|
93
|
+
<DropdownMenu.Item onClick={() => onAction?.({ id, action: 'set-color' })}>
|
|
94
|
+
<span className='grow'>Change color</span>
|
|
95
|
+
</DropdownMenu.Item>
|
|
96
|
+
</Card.Menu>
|
|
97
|
+
</Card.Header>
|
|
98
|
+
<Card.Body>
|
|
99
|
+
<div {...focusAttributes} ref={parentRef} className={mx(focusRing, 'rounded-sm h-full p-1 text-sm')} />
|
|
100
|
+
</Card.Body>
|
|
101
|
+
</Card.Root>
|
|
102
|
+
</div>
|
|
103
|
+
);
|
|
104
|
+
},
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
export default DocumentCard;
|