@dxos/plugin-markdown 0.6.12-staging.e11e696 → 0.6.12
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/{node-esm/chunk-2BGTVWHN.mjs → browser/chunk-4GGD6YJO.mjs} +5 -4
- 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-OUZCML5B.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 +116 -76
- 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-LPD4NOTH.cjs → DocumentCard-EHJDDSRY.cjs} +10 -17
- 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-HVDIBL5H.cjs → chunk-VWQH4WC2.cjs} +8 -11
- package/dist/lib/node/chunk-VWQH4WC2.cjs.map +7 -0
- package/dist/lib/node/index.cjs +147 -111
- 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 +4 -1
- 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 +96 -48
- 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 +5 -11
- package/src/components/MarkdownEditor.tsx +74 -36
- package/src/components/index.ts +14 -2
- package/src/extensions.tsx +67 -124
- package/src/meta.tsx +5 -1
- package/src/types/document.ts +0 -12
- package/src/types/types.ts +7 -10
- package/dist/lib/browser/MarkdownContainer-OWVU5WMN.mjs +0 -467
- package/dist/lib/browser/MarkdownContainer-OWVU5WMN.mjs.map +0 -7
- package/dist/lib/browser/chunk-2SJN46PA.mjs +0 -16
- package/dist/lib/browser/chunk-2SJN46PA.mjs.map +0 -7
- package/dist/lib/browser/chunk-7WORDTCY.mjs +0 -50
- package/dist/lib/browser/chunk-7WORDTCY.mjs.map +0 -7
- package/dist/lib/browser/chunk-OUZCML5B.mjs.map +0 -7
- package/dist/lib/node/MarkdownContainer-IWMLWI6Z.cjs +0 -482
- package/dist/lib/node/MarkdownContainer-IWMLWI6Z.cjs.map +0 -7
- package/dist/lib/node/chunk-HVDIBL5H.cjs.map +0 -7
- package/dist/lib/node/chunk-L2FIDO4L.cjs +0 -72
- package/dist/lib/node/chunk-L2FIDO4L.cjs.map +0 -7
- package/dist/lib/node/chunk-LPD4NOTH.cjs.map +0 -7
- package/dist/lib/node-esm/MarkdownContainer-MLTDWWGB.mjs +0 -468
- package/dist/lib/node-esm/MarkdownContainer-MLTDWWGB.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2BGTVWHN.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-4AGP7IJE.mjs +0 -42
- package/dist/lib/node-esm/chunk-4AGP7IJE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YOIARYUO.mjs +0 -51
- package/dist/lib/node-esm/chunk-YOIARYUO.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -493
- 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/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,3 +1,5 @@
|
|
|
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;
|
|
@@ -6,7 +8,8 @@ declare const _default: {
|
|
|
6
8
|
description?: string;
|
|
7
9
|
homePage?: string;
|
|
8
10
|
tags?: string[];
|
|
9
|
-
|
|
11
|
+
iconComponent?: React.FC<IconProps>;
|
|
12
|
+
iconSymbol?: string;
|
|
10
13
|
};
|
|
11
14
|
export default _default;
|
|
12
15
|
//# sourceMappingURL=meta.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.tsx"],"names":[],"mappings":"
|
|
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.12
|
|
3
|
+
"version": "0.6.12",
|
|
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.67.16",
|
|
49
|
+
"@codemirror/view": "^6.29.1",
|
|
54
50
|
"@preact/signals-core": "^1.6.0",
|
|
55
|
-
"@dxos/app-framework": "0.6.12
|
|
56
|
-
"@dxos/async": "0.6.12
|
|
57
|
-
"@dxos/
|
|
58
|
-
"@dxos/
|
|
59
|
-
"@dxos/
|
|
60
|
-
"@dxos/
|
|
61
|
-
"@dxos/
|
|
62
|
-
"@dxos/
|
|
63
|
-
"@dxos/plugin-client": "0.6.12
|
|
64
|
-
"@dxos/plugin-graph": "0.6.12
|
|
65
|
-
"@dxos/plugin-settings": "0.6.12
|
|
66
|
-
"@dxos/
|
|
67
|
-
"@dxos/plugin-
|
|
68
|
-
"@dxos/
|
|
69
|
-
"@dxos/react-
|
|
70
|
-
"@dxos/react-ui-
|
|
71
|
-
"@dxos/react-ui-
|
|
72
|
-
"@dxos/react-ui-
|
|
73
|
-
"@dxos/react-ui-mosaic": "0.6.12
|
|
74
|
-
"@dxos/
|
|
75
|
-
"@dxos/react-ui-stack": "0.6.12
|
|
76
|
-
"@dxos/util": "0.6.12-staging.e11e696"
|
|
51
|
+
"@dxos/app-framework": "0.6.12",
|
|
52
|
+
"@dxos/async": "0.6.12",
|
|
53
|
+
"@dxos/echo-schema": "0.6.12",
|
|
54
|
+
"@dxos/local-storage": "0.6.12",
|
|
55
|
+
"@dxos/invariant": "0.6.12",
|
|
56
|
+
"@dxos/keys": "0.6.12",
|
|
57
|
+
"@dxos/plugin-attention": "0.6.12",
|
|
58
|
+
"@dxos/log": "0.6.12",
|
|
59
|
+
"@dxos/plugin-client": "0.6.12",
|
|
60
|
+
"@dxos/plugin-graph": "0.6.12",
|
|
61
|
+
"@dxos/plugin-settings": "0.6.12",
|
|
62
|
+
"@dxos/plugin-space": "0.6.12",
|
|
63
|
+
"@dxos/plugin-theme": "0.6.12",
|
|
64
|
+
"@dxos/react-hooks": "0.6.12",
|
|
65
|
+
"@dxos/react-client": "0.6.12",
|
|
66
|
+
"@dxos/react-ui-card": "0.6.12",
|
|
67
|
+
"@dxos/react-ui-deck": "0.6.12",
|
|
68
|
+
"@dxos/react-ui-editor": "0.6.12",
|
|
69
|
+
"@dxos/react-ui-mosaic": "0.6.12",
|
|
70
|
+
"@dxos/util": "0.6.12",
|
|
71
|
+
"@dxos/react-ui-stack": "0.6.12"
|
|
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/random": "0.6.12
|
|
86
|
-
"@dxos/react-ui": "0.6.12
|
|
87
|
-
"@dxos/
|
|
88
|
-
"@dxos/
|
|
79
|
+
"vite": "^5.3.4",
|
|
80
|
+
"@dxos/random": "0.6.12",
|
|
81
|
+
"@dxos/react-ui-theme": "0.6.12",
|
|
82
|
+
"@dxos/storybook-utils": "0.6.12",
|
|
83
|
+
"@dxos/react-ui": "0.6.12"
|
|
89
84
|
},
|
|
90
|
-
"
|
|
85
|
+
"optionalDependencies": {
|
|
91
86
|
"@phosphor-icons/react": "^2.1.5",
|
|
92
|
-
"react": "
|
|
93
|
-
"react-dom": "
|
|
94
|
-
"@dxos/react-ui
|
|
95
|
-
"@dxos/react-ui": "0.6.12
|
|
87
|
+
"react": "^18.0.0",
|
|
88
|
+
"react-dom": "^18.0.0",
|
|
89
|
+
"@dxos/react-ui": "0.6.12",
|
|
90
|
+
"@dxos/react-ui-theme": "0.6.12"
|
|
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,8 +48,19 @@ 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, {
|
|
@@ -58,8 +72,13 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
58
72
|
|
|
59
73
|
const state = new LocalStorageStore<MarkdownPluginState>(MARKDOWN_PLUGIN, { extensionProviders: [], viewMode: {} });
|
|
60
74
|
|
|
61
|
-
const getViewMode = (id
|
|
62
|
-
|
|
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
|
+
};
|
|
63
82
|
|
|
64
83
|
return {
|
|
65
84
|
meta,
|
|
@@ -90,7 +109,7 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
90
109
|
|
|
91
110
|
markdownExtensionPlugins(plugins).forEach((plugin) => {
|
|
92
111
|
const { extensions } = plugin.provides.markdown;
|
|
93
|
-
state.values.extensionProviders
|
|
112
|
+
state.values.extensionProviders.push(extensions);
|
|
94
113
|
});
|
|
95
114
|
},
|
|
96
115
|
provides: {
|
|
@@ -100,7 +119,8 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
100
119
|
[DocumentType.typename]: {
|
|
101
120
|
label: (object: any) => (object instanceof DocumentType ? object.name ?? object.fallbackName : undefined),
|
|
102
121
|
placeholder: ['document title placeholder', { ns: MARKDOWN_PLUGIN }],
|
|
103
|
-
icon:
|
|
122
|
+
icon: (props: IconProps) => <TextAa {...props} />,
|
|
123
|
+
iconSymbol: 'ph--text-aa--regular',
|
|
104
124
|
graphProps: {
|
|
105
125
|
managesAutofocus: true,
|
|
106
126
|
},
|
|
@@ -114,12 +134,6 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
114
134
|
echo: {
|
|
115
135
|
schema: [DocumentType, TextType],
|
|
116
136
|
},
|
|
117
|
-
space: {
|
|
118
|
-
onSpaceCreate: {
|
|
119
|
-
label: ['create document label', { ns: MARKDOWN_PLUGIN }],
|
|
120
|
-
action: MarkdownAction.CREATE,
|
|
121
|
-
},
|
|
122
|
-
},
|
|
123
137
|
graph: {
|
|
124
138
|
builder: (plugins) => {
|
|
125
139
|
const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;
|
|
@@ -153,7 +167,8 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
153
167
|
},
|
|
154
168
|
properties: {
|
|
155
169
|
label: ['create document label', { ns: MARKDOWN_PLUGIN }],
|
|
156
|
-
icon:
|
|
170
|
+
icon: (props: IconProps) => <TextAa {...props} />,
|
|
171
|
+
iconSymbol: 'ph--text-aa--regular',
|
|
157
172
|
testId: 'markdownPlugin.createObject',
|
|
158
173
|
},
|
|
159
174
|
},
|
|
@@ -226,10 +241,13 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
226
241
|
],
|
|
227
242
|
},
|
|
228
243
|
thread: {
|
|
244
|
+
// TODO(Zan): How to better handle the type predicate?
|
|
229
245
|
predicate: (obj) => obj instanceof DocumentType,
|
|
230
246
|
createSort: (doc: DocumentType) => {
|
|
231
247
|
const accessor = doc.content ? createDocAccessor(doc.content, ['content']) : undefined;
|
|
248
|
+
|
|
232
249
|
if (!accessor) {
|
|
250
|
+
log.warn('No accessor found for document content.');
|
|
233
251
|
return (_) => 0;
|
|
234
252
|
}
|
|
235
253
|
|
|
@@ -238,45 +256,75 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
238
256
|
return range?.start ?? Number.MAX_SAFE_INTEGER;
|
|
239
257
|
};
|
|
240
258
|
|
|
241
|
-
return (anchorA: string
|
|
242
|
-
if (anchorA === undefined || anchorB === undefined) {
|
|
243
|
-
return 0;
|
|
244
|
-
}
|
|
245
|
-
const posA = getStartPosition(anchorA);
|
|
246
|
-
const posB = getStartPosition(anchorB);
|
|
247
|
-
return posA - posB;
|
|
248
|
-
};
|
|
259
|
+
return (anchorA: string, anchorB: string) => getStartPosition(anchorA) - getStartPosition(anchorB);
|
|
249
260
|
},
|
|
250
261
|
},
|
|
251
262
|
surface: {
|
|
252
|
-
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
|
+
|
|
253
271
|
switch (role) {
|
|
254
272
|
case 'section':
|
|
255
273
|
case 'article': {
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
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
|
+
);
|
|
266
302
|
}
|
|
303
|
+
break;
|
|
304
|
+
}
|
|
267
305
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
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;
|
|
280
328
|
}
|
|
281
329
|
|
|
282
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;
|