@dxos/plugin-markdown 0.6.14-main.f49f251 → 0.6.14-staging.3e2eaca
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-HRGXWEA4.mjs → MarkdownContainer-UBYHA366.mjs} +44 -54
- package/dist/lib/browser/MarkdownContainer-UBYHA366.mjs.map +7 -0
- package/dist/lib/browser/{chunk-DRJ3FPYF.mjs → chunk-4X6YX3KU.mjs} +3 -3
- package/dist/lib/browser/chunk-4X6YX3KU.mjs.map +7 -0
- package/dist/lib/browser/{chunk-VGIHBUXB.mjs → chunk-PV4AWYWK.mjs} +2 -2
- package/dist/lib/browser/{chunk-US5O2P3R.mjs → chunk-VZAGHNHU.mjs} +2 -2
- package/dist/lib/browser/index.mjs +13 -14
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/meta.mjs +1 -1
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node/{MarkdownContainer-QZ4YLO7M.cjs → MarkdownContainer-2S666KPG.cjs} +48 -58
- package/dist/lib/node/MarkdownContainer-2S666KPG.cjs.map +7 -0
- package/dist/lib/node/{chunk-6HPTH2F5.cjs → chunk-2A5P424C.cjs} +7 -7
- package/dist/lib/node/{chunk-UJMOZCIA.cjs → chunk-BHPFK7YI.cjs} +6 -6
- package/dist/lib/node/{chunk-P7YU53RP.cjs → chunk-PHHIPRJC.cjs} +6 -6
- package/dist/lib/node/chunk-PHHIPRJC.cjs.map +7 -0
- package/dist/lib/node/index.cjs +57 -58
- package/dist/lib/node/index.cjs.map +3 -3
- 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 -6
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/lib/node-esm/{MarkdownContainer-FSWQL76V.mjs → MarkdownContainer-IITZD46A.mjs} +44 -54
- package/dist/lib/node-esm/MarkdownContainer-IITZD46A.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-NEVN5WR6.mjs → chunk-BABK7FMW.mjs} +3 -3
- package/dist/lib/node-esm/chunk-BABK7FMW.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HPOTHJC4.mjs → chunk-EREAR7QS.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-MIDCCMIX.mjs → chunk-OEMU3XY7.mjs} +2 -2
- package/dist/lib/node-esm/index.mjs +13 -14
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/meta.mjs +1 -1
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownContainer.d.ts +5 -5
- package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor.d.ts +1 -2
- package/dist/types/src/components/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/extensions.d.ts +1 -1
- package/dist/types/src/extensions.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -1
- package/package.json +28 -29
- package/src/MarkdownPlugin.tsx +1 -4
- package/src/components/MarkdownContainer.tsx +29 -24
- package/src/components/MarkdownEditor.tsx +19 -41
- package/src/components/MarkdownSettings.tsx +15 -15
- package/src/extensions.tsx +25 -13
- package/src/meta.ts +2 -2
- package/dist/lib/browser/MarkdownContainer-HRGXWEA4.mjs.map +0 -7
- package/dist/lib/browser/chunk-DRJ3FPYF.mjs.map +0 -7
- package/dist/lib/node/MarkdownContainer-QZ4YLO7M.cjs.map +0 -7
- package/dist/lib/node/chunk-P7YU53RP.cjs.map +0 -7
- package/dist/lib/node-esm/MarkdownContainer-FSWQL76V.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NEVN5WR6.mjs.map +0 -7
- /package/dist/lib/browser/{chunk-VGIHBUXB.mjs.map → chunk-PV4AWYWK.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-US5O2P3R.mjs.map → chunk-VZAGHNHU.mjs.map} +0 -0
- /package/dist/lib/node/{chunk-6HPTH2F5.cjs.map → chunk-2A5P424C.cjs.map} +0 -0
- /package/dist/lib/node/{chunk-UJMOZCIA.cjs.map → chunk-BHPFK7YI.cjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-HPOTHJC4.mjs.map → chunk-EREAR7QS.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-MIDCCMIX.mjs.map → chunk-OEMU3XY7.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/MarkdownContainer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAKlD,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGpE,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,mBAAmB,EACnB,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"MarkdownContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/MarkdownContainer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAKlD,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGpE,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,mBAAmB,EACnB,MAAM,GAAG,oBAAoB,GAAG,UAAU,GAAG,kBAAkB,GAAG,kBAAkB,CACrF,GAAG;IACF,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,GAAG,GAAG,CAAC;IAC3B,QAAQ,EAAE,qBAAqB,CAAC;CACjC,CAAC;AAIF,QAAA,MAAM,iBAAiB,sGASpB,sBAAsB,sBAgCxB,CAAC;AAEF,KAAK,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,QAAQ,GAAG,oBAAoB,GAAG,kBAAkB,CAAC,GAC3G,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,eAAe,GAAG,YAAY,CAAC,GAAG;IACjE,QAAQ,EAAE,YAAY,CAAC;CACxB,CAAC;AAEJ,eAAO,MAAM,cAAc,wDAAyD,mBAAmB,sBAgCtG,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { type FileInfo
|
|
2
|
+
import { type FileInfo } from '@dxos/app-framework';
|
|
3
3
|
import { type EditorViewMode, type EditorInputMode, type EditorStateStore, type UseTextEditorProps } from '@dxos/react-ui-editor';
|
|
4
4
|
import { type MarkdownPluginState } from '../types';
|
|
5
5
|
export type MarkdownEditorProps = {
|
|
6
6
|
id: string;
|
|
7
7
|
role?: string;
|
|
8
|
-
coordinate?: LayoutCoordinate;
|
|
9
8
|
inputMode?: EditorInputMode;
|
|
10
9
|
scrollPastEnd?: boolean;
|
|
11
10
|
toolbar?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownEditor.d.ts","sourceRoot":"","sources":["../../../../src/components/MarkdownEditor.tsx"],"names":[],"mappings":"AAMA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAE/D,OAAO,EAAE,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"MarkdownEditor.d.ts","sourceRoot":"","sources":["../../../../src/components/MarkdownEditor.tsx"],"names":[],"mappings":"AAMA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAE/D,OAAO,EAAE,KAAK,QAAQ,EAAqC,MAAM,qBAAqB,CAAC;AAGvF,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EAErB,KAAK,kBAAkB,EAaxB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAIpD,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;CAC9D,GAAG,IAAI,CAAC,kBAAkB,EAAE,cAAc,GAAG,YAAY,CAAC,GACzD,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAE3D;;;;;GAKG;AACH,eAAO,MAAM,cAAc,oJAYxB,mBAAmB,sBAqIrB,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from './MarkdownSettings';
|
|
2
|
-
export declare const MarkdownContainer: import("react").LazyExoticComponent<({ id, role, object, settings,
|
|
2
|
+
export declare const MarkdownContainer: import("react").LazyExoticComponent<({ id, role, object, extensionProviders, settings, viewMode, editorStateStore, onViewModeChange, }: import("./MarkdownContainer").MarkdownContainerProps) => import("react").JSX.Element>;
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAMA,cAAc,oBAAoB,CAAC;AAEnC,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAMA,cAAc,oBAAoB,CAAC;AAEnC,eAAO,MAAM,iBAAiB,+NAA4C,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { type Query } from '@dxos/react-client/echo';
|
|
|
4
4
|
import { type EditorStateStore, type EditorViewMode, type Extension } from '@dxos/react-ui-editor';
|
|
5
5
|
import { type DocumentType, type MarkdownPluginState, type MarkdownSettingsProps } from './types';
|
|
6
6
|
type ExtensionsOptions = {
|
|
7
|
-
document
|
|
7
|
+
document?: DocumentType;
|
|
8
8
|
dispatch?: IntentDispatcher;
|
|
9
9
|
query?: Query<DocumentType>;
|
|
10
10
|
settings: MarkdownSettingsProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../../src/extensions.tsx"],"names":[],"mappings":"AAIA,OAAc,EAA6B,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAGlF,OAAO,EAAE,KAAK,gBAAgB,EAAyC,MAAM,qBAAqB,CAAC;AAEnG,OAAO,EAAiD,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAGpG,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,SAAS,EAWf,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAGlG,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../../src/extensions.tsx"],"names":[],"mappings":"AAIA,OAAc,EAA6B,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAGlF,OAAO,EAAE,KAAK,gBAAgB,EAAyC,MAAM,qBAAqB,CAAC;AAEnG,OAAO,EAAiD,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAGpG,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,SAAS,EAWf,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAGlG,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAGF,eAAO,MAAM,aAAa,4EAMvB,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,KAAG,SAAS,EAuEjF,CAAC;AA+HF,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,OAAO,QAAQ,CAAC,QAAQ,SAAS,KAAG,CAGxE,CAAC"}
|
package/dist/types/src/meta.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-markdown",
|
|
3
|
-
"version": "0.6.14-
|
|
3
|
+
"version": "0.6.14-staging.3e2eaca",
|
|
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",
|
|
@@ -44,28 +44,27 @@
|
|
|
44
44
|
"@codemirror/view": "^6.34.1",
|
|
45
45
|
"@effect/schema": "^0.75.1",
|
|
46
46
|
"@preact/signals-core": "^1.6.0",
|
|
47
|
-
"@dxos/app-framework": "0.6.14-
|
|
48
|
-
"@dxos/
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/
|
|
54
|
-
"@dxos/plugin-attention": "0.6.14-
|
|
55
|
-
"@dxos/plugin-
|
|
56
|
-
"@dxos/plugin-
|
|
57
|
-
"@dxos/plugin-space": "0.6.14-
|
|
58
|
-
"@dxos/plugin-theme": "0.6.14-
|
|
59
|
-
"@dxos/react-
|
|
60
|
-
"@dxos/react-
|
|
61
|
-
"@dxos/react-ui-attention": "0.6.14-
|
|
62
|
-
"@dxos/react-ui-card": "0.6.14-
|
|
63
|
-
"@dxos/react-ui-data": "0.6.14-
|
|
64
|
-
"@dxos/react-ui-editor": "0.6.14-
|
|
65
|
-
"@dxos/react-ui-
|
|
66
|
-
"@dxos/
|
|
67
|
-
"@dxos/
|
|
68
|
-
"@dxos/react-ui-stack": "0.6.14-main.f49f251"
|
|
47
|
+
"@dxos/app-framework": "0.6.14-staging.3e2eaca",
|
|
48
|
+
"@dxos/echo-schema": "0.6.14-staging.3e2eaca",
|
|
49
|
+
"@dxos/async": "0.6.14-staging.3e2eaca",
|
|
50
|
+
"@dxos/invariant": "0.6.14-staging.3e2eaca",
|
|
51
|
+
"@dxos/local-storage": "0.6.14-staging.3e2eaca",
|
|
52
|
+
"@dxos/keys": "0.6.14-staging.3e2eaca",
|
|
53
|
+
"@dxos/log": "0.6.14-staging.3e2eaca",
|
|
54
|
+
"@dxos/plugin-attention": "0.6.14-staging.3e2eaca",
|
|
55
|
+
"@dxos/plugin-graph": "0.6.14-staging.3e2eaca",
|
|
56
|
+
"@dxos/plugin-client": "0.6.14-staging.3e2eaca",
|
|
57
|
+
"@dxos/plugin-space": "0.6.14-staging.3e2eaca",
|
|
58
|
+
"@dxos/plugin-theme": "0.6.14-staging.3e2eaca",
|
|
59
|
+
"@dxos/react-client": "0.6.14-staging.3e2eaca",
|
|
60
|
+
"@dxos/react-hooks": "0.6.14-staging.3e2eaca",
|
|
61
|
+
"@dxos/react-ui-attention": "0.6.14-staging.3e2eaca",
|
|
62
|
+
"@dxos/react-ui-card": "0.6.14-staging.3e2eaca",
|
|
63
|
+
"@dxos/react-ui-data": "0.6.14-staging.3e2eaca",
|
|
64
|
+
"@dxos/react-ui-editor": "0.6.14-staging.3e2eaca",
|
|
65
|
+
"@dxos/react-ui-mosaic": "0.6.14-staging.3e2eaca",
|
|
66
|
+
"@dxos/react-ui-stack": "0.6.14-staging.3e2eaca",
|
|
67
|
+
"@dxos/util": "0.6.14-staging.3e2eaca"
|
|
69
68
|
},
|
|
70
69
|
"devDependencies": {
|
|
71
70
|
"@phosphor-icons/react": "^2.1.5",
|
|
@@ -74,17 +73,17 @@
|
|
|
74
73
|
"react": "~18.2.0",
|
|
75
74
|
"react-dom": "~18.2.0",
|
|
76
75
|
"vite": "5.4.7",
|
|
77
|
-
"@dxos/random": "0.6.14-
|
|
78
|
-
"@dxos/react-ui": "0.6.14-
|
|
79
|
-
"@dxos/react-ui-theme": "0.6.14-
|
|
80
|
-
"@dxos/storybook-utils": "0.6.14-
|
|
76
|
+
"@dxos/random": "0.6.14-staging.3e2eaca",
|
|
77
|
+
"@dxos/react-ui": "0.6.14-staging.3e2eaca",
|
|
78
|
+
"@dxos/react-ui-theme": "0.6.14-staging.3e2eaca",
|
|
79
|
+
"@dxos/storybook-utils": "0.6.14-staging.3e2eaca"
|
|
81
80
|
},
|
|
82
81
|
"peerDependencies": {
|
|
83
82
|
"@phosphor-icons/react": "^2.1.5",
|
|
84
83
|
"react": "~18.2.0",
|
|
85
84
|
"react-dom": "~18.2.0",
|
|
86
|
-
"@dxos/react-ui": "0.6.14-
|
|
87
|
-
"@dxos/react-ui
|
|
85
|
+
"@dxos/react-ui-theme": "0.6.14-staging.3e2eaca",
|
|
86
|
+
"@dxos/react-ui": "0.6.14-staging.3e2eaca"
|
|
88
87
|
},
|
|
89
88
|
"publishConfig": {
|
|
90
89
|
"access": "public"
|
package/src/MarkdownPlugin.tsx
CHANGED
|
@@ -9,7 +9,6 @@ import {
|
|
|
9
9
|
parseIntentPlugin,
|
|
10
10
|
resolvePlugin,
|
|
11
11
|
LayoutAction,
|
|
12
|
-
type LayoutCoordinate,
|
|
13
12
|
NavigationAction,
|
|
14
13
|
type PluginDefinition,
|
|
15
14
|
} from '@dxos/app-framework';
|
|
@@ -245,8 +244,7 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
245
244
|
switch (role) {
|
|
246
245
|
case 'section':
|
|
247
246
|
case 'article': {
|
|
248
|
-
|
|
249
|
-
const doc = getDoc(data.active) ?? getDoc(data.object);
|
|
247
|
+
const doc = getDoc(data.object);
|
|
250
248
|
const { id, object } = isEditorModel(data.object)
|
|
251
249
|
? { id: data.object.id, object: data.object }
|
|
252
250
|
: doc
|
|
@@ -262,7 +260,6 @@ export const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {
|
|
|
262
260
|
id={id}
|
|
263
261
|
object={object}
|
|
264
262
|
role={role}
|
|
265
|
-
coordinate={data.coordinate as LayoutCoordinate}
|
|
266
263
|
settings={settings.values}
|
|
267
264
|
extensionProviders={state.values.extensionProviders}
|
|
268
265
|
viewMode={getViewMode(id)}
|
|
@@ -14,7 +14,7 @@ import { getFallbackName } from '../util';
|
|
|
14
14
|
|
|
15
15
|
export type MarkdownContainerProps = Pick<
|
|
16
16
|
MarkdownEditorProps,
|
|
17
|
-
'role' | '
|
|
17
|
+
'role' | 'extensionProviders' | 'viewMode' | 'editorStateStore' | 'onViewModeChange'
|
|
18
18
|
> & {
|
|
19
19
|
id: string;
|
|
20
20
|
object: DocumentType | any;
|
|
@@ -23,17 +23,30 @@ export type MarkdownContainerProps = Pick<
|
|
|
23
23
|
|
|
24
24
|
// TODO(burdon): Move toolbar here.
|
|
25
25
|
// TODO(burdon): Factor out difference for ECHO and non-ECHO objects; i.e., single component.
|
|
26
|
-
const MarkdownContainer = ({
|
|
26
|
+
const MarkdownContainer = ({
|
|
27
|
+
id,
|
|
28
|
+
role,
|
|
29
|
+
object,
|
|
30
|
+
extensionProviders,
|
|
31
|
+
settings,
|
|
32
|
+
viewMode,
|
|
33
|
+
editorStateStore,
|
|
34
|
+
onViewModeChange,
|
|
35
|
+
}: MarkdownContainerProps) => {
|
|
27
36
|
const scrollPastEnd = role === 'article';
|
|
28
|
-
|
|
37
|
+
const doc = object instanceof DocumentType ? object : undefined;
|
|
38
|
+
const extensions = useExtensions({ extensionProviders, document: doc, settings, viewMode, editorStateStore });
|
|
39
|
+
|
|
40
|
+
if (doc) {
|
|
29
41
|
return (
|
|
30
42
|
<DocumentEditor
|
|
31
43
|
id={fullyQualifiedId(object)}
|
|
32
44
|
role={role}
|
|
33
|
-
document={
|
|
45
|
+
document={doc}
|
|
46
|
+
extensions={extensions}
|
|
34
47
|
settings={settings}
|
|
35
48
|
scrollPastEnd={scrollPastEnd}
|
|
36
|
-
{
|
|
49
|
+
onViewModeChange={onViewModeChange}
|
|
37
50
|
/>
|
|
38
51
|
);
|
|
39
52
|
} else {
|
|
@@ -42,31 +55,24 @@ const MarkdownContainer = ({ id, role, object, settings, ...props }: MarkdownCon
|
|
|
42
55
|
id={id}
|
|
43
56
|
role={role}
|
|
44
57
|
initialValue={object.text}
|
|
58
|
+
extensions={extensions}
|
|
59
|
+
viewMode={viewMode}
|
|
45
60
|
toolbar={settings.toolbar}
|
|
61
|
+
inputMode={settings.editorInputMode}
|
|
46
62
|
scrollPastEnd={scrollPastEnd}
|
|
47
|
-
{
|
|
63
|
+
onViewModeChange={onViewModeChange}
|
|
48
64
|
/>
|
|
49
65
|
);
|
|
50
66
|
}
|
|
51
67
|
};
|
|
52
68
|
|
|
53
|
-
type DocumentEditorProps = Omit<MarkdownContainerProps, 'object'
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
69
|
+
type DocumentEditorProps = Omit<MarkdownContainerProps, 'object' | 'extensionProviders' | 'editorStateStore'> &
|
|
70
|
+
Pick<MarkdownEditorProps, 'id' | 'scrollPastEnd' | 'extensions'> & {
|
|
71
|
+
document: DocumentType;
|
|
72
|
+
};
|
|
57
73
|
|
|
58
|
-
export const DocumentEditor = ({
|
|
59
|
-
id,
|
|
60
|
-
document: doc,
|
|
61
|
-
extensionProviders,
|
|
62
|
-
settings,
|
|
63
|
-
viewMode,
|
|
64
|
-
editorStateStore,
|
|
65
|
-
...props
|
|
66
|
-
}: DocumentEditorProps) => {
|
|
74
|
+
export const DocumentEditor = ({ id, document: doc, settings, viewMode, ...props }: DocumentEditorProps) => {
|
|
67
75
|
const space = getSpace(doc);
|
|
68
|
-
const initialValue = useMemo(() => doc.content?.content, [doc.content]);
|
|
69
|
-
const extensions = useExtensions({ extensionProviders, document: doc, settings, viewMode, editorStateStore });
|
|
70
76
|
|
|
71
77
|
// Migrate gradually to `fallbackName`.
|
|
72
78
|
useEffect(() => {
|
|
@@ -89,11 +95,10 @@ export const DocumentEditor = ({
|
|
|
89
95
|
return (
|
|
90
96
|
<MarkdownEditor
|
|
91
97
|
id={id}
|
|
92
|
-
initialValue={
|
|
93
|
-
|
|
98
|
+
initialValue={doc.content?.content}
|
|
99
|
+
viewMode={viewMode}
|
|
94
100
|
toolbar={settings.toolbar}
|
|
95
101
|
inputMode={settings.editorInputMode}
|
|
96
|
-
viewMode={viewMode}
|
|
97
102
|
onFileUpload={handleFileUpload}
|
|
98
103
|
{...props}
|
|
99
104
|
/>
|
|
@@ -6,9 +6,9 @@ import { openSearchPanel } from '@codemirror/search';
|
|
|
6
6
|
import { type EditorView } from '@codemirror/view';
|
|
7
7
|
import React, { useMemo, useEffect, useCallback } from 'react';
|
|
8
8
|
|
|
9
|
-
import { type FileInfo, LayoutAction,
|
|
9
|
+
import { type FileInfo, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
|
|
10
10
|
import { useThemeContext, useTranslation } from '@dxos/react-ui';
|
|
11
|
-
import {
|
|
11
|
+
import { useAttention } from '@dxos/react-ui-attention';
|
|
12
12
|
import {
|
|
13
13
|
type Action,
|
|
14
14
|
type DNDOptions,
|
|
@@ -31,8 +31,8 @@ import {
|
|
|
31
31
|
useFormattingState,
|
|
32
32
|
useTextEditor,
|
|
33
33
|
} from '@dxos/react-ui-editor';
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
34
|
+
import { StackItem } from '@dxos/react-ui-stack';
|
|
35
|
+
import { mx, textBlockWidth } from '@dxos/react-ui-theme';
|
|
36
36
|
import { isNotFalsy, nonNullable } from '@dxos/util';
|
|
37
37
|
|
|
38
38
|
import { useSelectCurrentThread } from '../hooks';
|
|
@@ -44,7 +44,6 @@ const DEFAULT_VIEW_MODE: EditorViewMode = 'preview';
|
|
|
44
44
|
export type MarkdownEditorProps = {
|
|
45
45
|
id: string;
|
|
46
46
|
role?: string;
|
|
47
|
-
coordinate?: LayoutCoordinate;
|
|
48
47
|
inputMode?: EditorInputMode;
|
|
49
48
|
scrollPastEnd?: boolean;
|
|
50
49
|
toolbar?: boolean;
|
|
@@ -78,7 +77,6 @@ export const MarkdownEditor = ({
|
|
|
78
77
|
const { themeMode } = useThemeContext();
|
|
79
78
|
const dispatch = useIntentDispatcher();
|
|
80
79
|
const [formattingState, formattingObserver] = useFormattingState();
|
|
81
|
-
const attendableAttributes = useAttendableAttributes(id);
|
|
82
80
|
const { hasAttention } = useAttention(id);
|
|
83
81
|
|
|
84
82
|
// Restore last selection and scroll point.
|
|
@@ -146,7 +144,7 @@ export const MarkdownEditor = ({
|
|
|
146
144
|
moveToEndOfLine: true,
|
|
147
145
|
}),
|
|
148
146
|
}),
|
|
149
|
-
[id,
|
|
147
|
+
[id, formattingObserver, viewMode, themeMode, extensions, providerExtensions],
|
|
150
148
|
);
|
|
151
149
|
|
|
152
150
|
useTest(editorView);
|
|
@@ -172,30 +170,17 @@ export const MarkdownEditor = ({
|
|
|
172
170
|
};
|
|
173
171
|
|
|
174
172
|
return (
|
|
175
|
-
<
|
|
176
|
-
role='none'
|
|
177
|
-
{...(role === 'section'
|
|
178
|
-
? { className: 'flex flex-col' }
|
|
179
|
-
: {
|
|
180
|
-
className: 'contents',
|
|
181
|
-
// TODO(wittjosiah): Factor out to `useAttendableAttributes`?
|
|
182
|
-
...(hasAttention && { 'aria-current': 'location' }),
|
|
183
|
-
...attendableAttributes,
|
|
184
|
-
})}
|
|
185
|
-
>
|
|
173
|
+
<StackItem.Content toolbar={toolbar} contentSize={role === 'article' ? 'cover' : 'intrinsic'}>
|
|
186
174
|
{toolbar && (
|
|
187
|
-
<div
|
|
175
|
+
<div
|
|
176
|
+
role='none'
|
|
177
|
+
className={mx(
|
|
178
|
+
'attention-surface is-full',
|
|
179
|
+
role === 'section' && 'sticky block-start-0 z-[1] border-be !border-separator -mbe-px min-is-0',
|
|
180
|
+
)}
|
|
181
|
+
>
|
|
188
182
|
<Toolbar.Root
|
|
189
|
-
classNames={
|
|
190
|
-
role === 'section'
|
|
191
|
-
? [
|
|
192
|
-
textBlockWidth,
|
|
193
|
-
'z-[2] group-focus-within/section:visible',
|
|
194
|
-
!hasAttention && 'invisible',
|
|
195
|
-
sectionToolbarLayout,
|
|
196
|
-
]
|
|
197
|
-
: [textBlockWidth]
|
|
198
|
-
}
|
|
183
|
+
classNames={[textBlockWidth, !hasAttention && 'opacity-20']}
|
|
199
184
|
state={formattingState && { ...formattingState, ...commentsState }}
|
|
200
185
|
onAction={handleAction}
|
|
201
186
|
>
|
|
@@ -212,20 +197,13 @@ export const MarkdownEditor = ({
|
|
|
212
197
|
ref={parentRef}
|
|
213
198
|
data-testid='composer.markdownRoot'
|
|
214
199
|
data-toolbar={toolbar ? 'enabled' : 'disabled'}
|
|
215
|
-
className={
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
'flex is-full bs-full overflow-hidden',
|
|
220
|
-
focusRing,
|
|
221
|
-
'focus-visible:ring-inset attention-surface',
|
|
222
|
-
'p-0.5', // TODO(burdon): Handle padding for focusRing consistently.
|
|
223
|
-
'data-[toolbar=disabled]:pbs-2 data-[toolbar=disabled]:row-span-2',
|
|
224
|
-
)
|
|
225
|
-
}
|
|
200
|
+
className={mx(
|
|
201
|
+
'ch-focus-ring-inset data-[toolbar=disabled]:pbs-2 attention-surface',
|
|
202
|
+
role === 'article' ? 'min-bs-0' : '[&_.cm-scroller]:overflow-hidden [&_.cm-scroller]:min-bs-24',
|
|
203
|
+
)}
|
|
226
204
|
{...focusAttributes}
|
|
227
205
|
/>
|
|
228
|
-
</
|
|
206
|
+
</StackItem.Content>
|
|
229
207
|
);
|
|
230
208
|
};
|
|
231
209
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import React from 'react';
|
|
6
6
|
|
|
7
7
|
import { Input, Select, useTranslation } from '@dxos/react-ui';
|
|
8
|
-
import {
|
|
8
|
+
import { DeprecatedFormInput } from '@dxos/react-ui-data';
|
|
9
9
|
import { type EditorInputMode, EditorInputModes, type EditorViewMode, EditorViewModes } from '@dxos/react-ui-editor';
|
|
10
10
|
|
|
11
11
|
import { MARKDOWN_PLUGIN } from '../meta';
|
|
@@ -17,7 +17,7 @@ export const MarkdownSettings = ({ settings }: { settings: MarkdownSettingsProps
|
|
|
17
17
|
// TODO(wittjosiah): Add skill test confirmation for entering vim mode.
|
|
18
18
|
return (
|
|
19
19
|
<>
|
|
20
|
-
<
|
|
20
|
+
<DeprecatedFormInput label={t('default view mode label')}>
|
|
21
21
|
<Select.Root
|
|
22
22
|
value={settings.defaultViewMode}
|
|
23
23
|
onValueChange={(value) => {
|
|
@@ -37,9 +37,9 @@ export const MarkdownSettings = ({ settings }: { settings: MarkdownSettingsProps
|
|
|
37
37
|
</Select.Content>
|
|
38
38
|
</Select.Portal>
|
|
39
39
|
</Select.Root>
|
|
40
|
-
</
|
|
40
|
+
</DeprecatedFormInput>
|
|
41
41
|
|
|
42
|
-
<
|
|
42
|
+
<DeprecatedFormInput label={t('editor input mode label')}>
|
|
43
43
|
<Select.Root
|
|
44
44
|
value={settings.editorInputMode ?? 'default'}
|
|
45
45
|
onValueChange={(value) => {
|
|
@@ -59,31 +59,31 @@ export const MarkdownSettings = ({ settings }: { settings: MarkdownSettingsProps
|
|
|
59
59
|
</Select.Content>
|
|
60
60
|
</Select.Portal>
|
|
61
61
|
</Select.Root>
|
|
62
|
-
</
|
|
62
|
+
</DeprecatedFormInput>
|
|
63
63
|
|
|
64
|
-
<
|
|
64
|
+
<DeprecatedFormInput label={t('settings toolbar label')}>
|
|
65
65
|
<Input.Switch checked={settings.toolbar} onCheckedChange={(checked) => (settings.toolbar = !!checked)} />
|
|
66
|
-
</
|
|
66
|
+
</DeprecatedFormInput>
|
|
67
67
|
|
|
68
|
-
<
|
|
68
|
+
<DeprecatedFormInput label={t('settings numbered headings label')}>
|
|
69
69
|
<Input.Switch
|
|
70
70
|
checked={settings.numberedHeadings}
|
|
71
71
|
onCheckedChange={(checked) => (settings.numberedHeadings = !!checked)}
|
|
72
72
|
/>
|
|
73
|
-
</
|
|
73
|
+
</DeprecatedFormInput>
|
|
74
74
|
|
|
75
|
-
<
|
|
75
|
+
<DeprecatedFormInput label={t('settings folding label')}>
|
|
76
76
|
<Input.Switch checked={settings.folding} onCheckedChange={(checked) => (settings.folding = !!checked)} />
|
|
77
|
-
</
|
|
77
|
+
</DeprecatedFormInput>
|
|
78
78
|
|
|
79
|
-
<
|
|
79
|
+
<DeprecatedFormInput label={t('settings experimental label')}>
|
|
80
80
|
<Input.Switch
|
|
81
81
|
checked={settings.experimental}
|
|
82
82
|
onCheckedChange={(checked) => (settings.experimental = !!checked)}
|
|
83
83
|
/>
|
|
84
|
-
</
|
|
84
|
+
</DeprecatedFormInput>
|
|
85
85
|
|
|
86
|
-
<
|
|
86
|
+
<DeprecatedFormInput
|
|
87
87
|
label={t('settings debug label')}
|
|
88
88
|
secondary={
|
|
89
89
|
settings.debug ? (
|
|
@@ -99,7 +99,7 @@ export const MarkdownSettings = ({ settings }: { settings: MarkdownSettingsProps
|
|
|
99
99
|
}
|
|
100
100
|
>
|
|
101
101
|
<Input.Switch checked={settings.debug} onCheckedChange={(checked) => (settings.debug = !!checked)} />
|
|
102
|
-
</
|
|
102
|
+
</DeprecatedFormInput>
|
|
103
103
|
</>
|
|
104
104
|
);
|
|
105
105
|
};
|
package/src/extensions.tsx
CHANGED
|
@@ -33,7 +33,7 @@ import { type DocumentType, type MarkdownPluginState, type MarkdownSettingsProps
|
|
|
33
33
|
import { setFallbackName } from './util';
|
|
34
34
|
|
|
35
35
|
type ExtensionsOptions = {
|
|
36
|
-
document
|
|
36
|
+
document?: DocumentType;
|
|
37
37
|
dispatch?: IntentDispatcher;
|
|
38
38
|
query?: Query<DocumentType>;
|
|
39
39
|
settings: MarkdownSettingsProps;
|
|
@@ -66,7 +66,17 @@ export const useExtensions = ({
|
|
|
66
66
|
dispatch,
|
|
67
67
|
// query,
|
|
68
68
|
}),
|
|
69
|
-
[
|
|
69
|
+
[
|
|
70
|
+
document,
|
|
71
|
+
viewMode,
|
|
72
|
+
dispatch,
|
|
73
|
+
settings,
|
|
74
|
+
settings.editorInputMode,
|
|
75
|
+
settings.folding,
|
|
76
|
+
settings.numberedHeadings,
|
|
77
|
+
settings.debug,
|
|
78
|
+
settings.typewriter,
|
|
79
|
+
],
|
|
70
80
|
);
|
|
71
81
|
|
|
72
82
|
//
|
|
@@ -82,7 +92,7 @@ export const useExtensions = ({
|
|
|
82
92
|
|
|
83
93
|
return acc;
|
|
84
94
|
}, []),
|
|
85
|
-
[extensionProviders],
|
|
95
|
+
[extensionProviders, document],
|
|
86
96
|
);
|
|
87
97
|
|
|
88
98
|
//
|
|
@@ -92,20 +102,22 @@ export const useExtensions = ({
|
|
|
92
102
|
() =>
|
|
93
103
|
[
|
|
94
104
|
// NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
105
|
+
document &&
|
|
106
|
+
createDataExtensions({
|
|
107
|
+
id: document.id,
|
|
108
|
+
text: document.content && createDocAccessor(document.content, ['content']),
|
|
109
|
+
space,
|
|
110
|
+
identity,
|
|
111
|
+
}),
|
|
101
112
|
selectionState(editorStateStore),
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
113
|
+
document &&
|
|
114
|
+
listener({
|
|
115
|
+
onChange: (text) => setFallbackName(document, text),
|
|
116
|
+
}),
|
|
105
117
|
baseExtensions,
|
|
106
118
|
pluginExtensions,
|
|
107
119
|
].filter(isNotFalsy),
|
|
108
|
-
[baseExtensions, pluginExtensions, document, document
|
|
120
|
+
[baseExtensions, pluginExtensions, document, document?.content, space, identity],
|
|
109
121
|
);
|
|
110
122
|
};
|
|
111
123
|
|
package/src/meta.ts
CHANGED
|
@@ -8,8 +8,8 @@ export const MARKDOWN_PLUGIN = 'dxos.org/plugin/markdown';
|
|
|
8
8
|
|
|
9
9
|
export default {
|
|
10
10
|
id: MARKDOWN_PLUGIN,
|
|
11
|
-
name: 'Markdown
|
|
11
|
+
name: 'Markdown',
|
|
12
12
|
description: 'Text editor supporting extended Markdown.',
|
|
13
|
-
|
|
13
|
+
source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown',
|
|
14
14
|
icon: 'ph--text-aa--regular',
|
|
15
15
|
} satisfies PluginMeta;
|