@dxos/plugin-markdown 0.6.13-main.ed424a1 → 0.6.13

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.
Files changed (122) hide show
  1. package/dist/lib/browser/DocumentCard-2P4EICBA.mjs +11 -0
  2. package/dist/lib/browser/DocumentEditor-GPWV3VN3.mjs +11 -0
  3. package/dist/lib/browser/MarkdownEditor-EKJJQEFL.mjs +10 -0
  4. package/dist/lib/browser/MarkdownEditor-EKJJQEFL.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-354DCID5.mjs +117 -0
  6. package/dist/lib/browser/chunk-354DCID5.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-4GGD6YJO.mjs +19 -0
  8. package/dist/lib/browser/chunk-4GGD6YJO.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-7AF2JLK4.mjs +164 -0
  10. package/dist/lib/browser/chunk-7AF2JLK4.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-US5O2P3R.mjs → chunk-CQJL4G4X.mjs} +2 -4
  12. package/dist/lib/browser/chunk-CQJL4G4X.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-RL7QY322.mjs +86 -0
  14. package/dist/lib/browser/chunk-RL7QY322.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-VUN4QKTT.mjs +208 -0
  16. package/dist/lib/browser/chunk-VUN4QKTT.mjs.map +7 -0
  17. package/dist/lib/browser/index.mjs +117 -78
  18. package/dist/lib/browser/index.mjs.map +4 -4
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/meta.mjs +1 -1
  21. package/dist/lib/browser/types/index.mjs +4 -6
  22. package/dist/lib/node/{chunk-P7YU53RP.cjs → DocumentCard-EHJDDSRY.cjs} +10 -16
  23. package/dist/lib/node/DocumentCard-EHJDDSRY.cjs.map +7 -0
  24. package/dist/lib/node/DocumentEditor-I5GCRBKU.cjs +29 -0
  25. package/dist/lib/node/DocumentEditor-I5GCRBKU.cjs.map +7 -0
  26. package/dist/lib/node/MarkdownEditor-UE23H75V.cjs +31 -0
  27. package/dist/lib/node/MarkdownEditor-UE23H75V.cjs.map +7 -0
  28. package/dist/lib/node/chunk-7XIBNEI7.cjs +238 -0
  29. package/dist/lib/node/chunk-7XIBNEI7.cjs.map +7 -0
  30. package/dist/lib/node/chunk-KTYIOXL5.cjs +149 -0
  31. package/dist/lib/node/chunk-KTYIOXL5.cjs.map +7 -0
  32. package/dist/lib/node/chunk-Q4ZSCBQE.cjs +114 -0
  33. package/dist/lib/node/chunk-Q4ZSCBQE.cjs.map +7 -0
  34. package/dist/lib/node/chunk-RVGN72IX.cjs +189 -0
  35. package/dist/lib/node/chunk-RVGN72IX.cjs.map +7 -0
  36. package/dist/lib/node/chunk-TGMR2CKU.cjs +52 -0
  37. package/dist/lib/node/chunk-TGMR2CKU.cjs.map +7 -0
  38. package/dist/lib/node/{chunk-UJMOZCIA.cjs → chunk-VWQH4WC2.cjs} +8 -11
  39. package/dist/lib/node/chunk-VWQH4WC2.cjs.map +7 -0
  40. package/dist/lib/node/index.cjs +147 -112
  41. package/dist/lib/node/index.cjs.map +4 -4
  42. package/dist/lib/node/meta.cjs +3 -3
  43. package/dist/lib/node/meta.cjs.map +1 -1
  44. package/dist/lib/node/meta.json +1 -1
  45. package/dist/lib/node/types/index.cjs +6 -8
  46. package/dist/lib/node/types/index.cjs.map +2 -2
  47. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  48. package/dist/types/src/components/DocumentCard.d.ts +16 -0
  49. package/dist/types/src/components/DocumentCard.d.ts.map +1 -0
  50. package/dist/types/src/components/DocumentEditor.d.ts +14 -0
  51. package/dist/types/src/components/DocumentEditor.d.ts.map +1 -0
  52. package/dist/types/src/components/HeadingMenu.d.ts +13 -0
  53. package/dist/types/src/components/HeadingMenu.d.ts.map +1 -0
  54. package/dist/types/src/components/Layout.d.ts +6 -0
  55. package/dist/types/src/components/Layout.d.ts.map +1 -0
  56. package/dist/types/src/components/MarkdownEditor.d.ts +3 -8
  57. package/dist/types/src/components/MarkdownEditor.d.ts.map +1 -1
  58. package/dist/types/src/components/MarkdownEditor.stories.d.ts +3 -3
  59. package/dist/types/src/components/MarkdownEditor.stories.d.ts.map +1 -1
  60. package/dist/types/src/components/index.d.ts +11 -2
  61. package/dist/types/src/components/index.d.ts.map +1 -1
  62. package/dist/types/src/extensions.d.ts +15 -11
  63. package/dist/types/src/extensions.d.ts.map +1 -1
  64. package/dist/types/src/meta.d.ts +9 -4
  65. package/dist/types/src/meta.d.ts.map +1 -1
  66. package/dist/types/src/types/document.d.ts +1 -10
  67. package/dist/types/src/types/document.d.ts.map +1 -1
  68. package/dist/types/src/types/types.d.ts +9 -8
  69. package/dist/types/src/types/types.d.ts.map +1 -1
  70. package/package.json +36 -41
  71. package/src/MarkdownPlugin.tsx +97 -50
  72. package/src/components/DocumentCard.tsx +107 -0
  73. package/src/components/DocumentEditor.tsx +137 -0
  74. package/src/components/HeadingMenu.tsx +46 -0
  75. package/src/components/Layout.tsx +27 -0
  76. package/src/components/MarkdownEditor.stories.tsx +7 -13
  77. package/src/components/MarkdownEditor.tsx +75 -40
  78. package/src/components/Toolbar.stories.tsx +2 -2
  79. package/src/components/index.ts +14 -2
  80. package/src/extensions.tsx +67 -124
  81. package/src/meta.tsx +19 -0
  82. package/src/types/document.ts +0 -12
  83. package/src/types/types.ts +7 -10
  84. package/src/util.tsx +2 -2
  85. package/dist/lib/browser/MarkdownContainer-AYBJNSXD.mjs +0 -467
  86. package/dist/lib/browser/MarkdownContainer-AYBJNSXD.mjs.map +0 -7
  87. package/dist/lib/browser/chunk-45N5MEOV.mjs +0 -50
  88. package/dist/lib/browser/chunk-45N5MEOV.mjs.map +0 -7
  89. package/dist/lib/browser/chunk-DRJ3FPYF.mjs +0 -15
  90. package/dist/lib/browser/chunk-DRJ3FPYF.mjs.map +0 -7
  91. package/dist/lib/browser/chunk-US5O2P3R.mjs.map +0 -7
  92. package/dist/lib/node/MarkdownContainer-IM3V72FY.cjs +0 -482
  93. package/dist/lib/node/MarkdownContainer-IM3V72FY.cjs.map +0 -7
  94. package/dist/lib/node/chunk-P7YU53RP.cjs.map +0 -7
  95. package/dist/lib/node/chunk-UJMOZCIA.cjs.map +0 -7
  96. package/dist/lib/node/chunk-W2YJVZ3N.cjs +0 -72
  97. package/dist/lib/node/chunk-W2YJVZ3N.cjs.map +0 -7
  98. package/dist/lib/node-esm/MarkdownContainer-56YBSFBE.mjs +0 -468
  99. package/dist/lib/node-esm/MarkdownContainer-56YBSFBE.mjs.map +0 -7
  100. package/dist/lib/node-esm/chunk-MIDCCMIX.mjs +0 -42
  101. package/dist/lib/node-esm/chunk-MIDCCMIX.mjs.map +0 -7
  102. package/dist/lib/node-esm/chunk-NEVN5WR6.mjs +0 -17
  103. package/dist/lib/node-esm/chunk-NEVN5WR6.mjs.map +0 -7
  104. package/dist/lib/node-esm/chunk-UCNOGIBC.mjs +0 -51
  105. package/dist/lib/node-esm/chunk-UCNOGIBC.mjs.map +0 -7
  106. package/dist/lib/node-esm/index.mjs +0 -494
  107. package/dist/lib/node-esm/index.mjs.map +0 -7
  108. package/dist/lib/node-esm/meta.json +0 -1
  109. package/dist/lib/node-esm/meta.mjs +0 -10
  110. package/dist/lib/node-esm/types/index.mjs +0 -15
  111. package/dist/types/src/components/MarkdownContainer.d.ts +0 -15
  112. package/dist/types/src/components/MarkdownContainer.d.ts.map +0 -1
  113. package/dist/types/src/hooks/index.d.ts +0 -2
  114. package/dist/types/src/hooks/index.d.ts.map +0 -1
  115. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +0 -6
  116. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +0 -1
  117. package/src/components/MarkdownContainer.tsx +0 -108
  118. package/src/hooks/index.ts +0 -5
  119. package/src/hooks/useSelectCurrentThread.tsx +0 -46
  120. package/src/meta.ts +0 -15
  121. /package/dist/lib/{node-esm/meta.mjs.map → browser/DocumentCard-2P4EICBA.mjs.map} +0 -0
  122. /package/dist/lib/{node-esm/types/index.mjs.map → browser/DocumentEditor-GPWV3VN3.mjs.map} +0 -0
@@ -2,117 +2,63 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import React, { type AnchorHTMLAttributes, type ReactNode, useMemo } from 'react';
5
+ import { ArrowSquareDown, ArrowSquareOut, type Icon } from '@phosphor-icons/react';
6
+ import React, { type AnchorHTMLAttributes, StrictMode } from 'react';
6
7
  import { createRoot } from 'react-dom/client';
7
8
 
8
- import { type IntentDispatcher, NavigationAction, useIntentDispatcher } from '@dxos/app-framework';
9
+ import { type IntentDispatcher, NavigationAction } from '@dxos/app-framework';
9
10
  import { invariant } from '@dxos/invariant';
10
- import { createDocAccessor, fullyQualifiedId, getSpace, type Query } from '@dxos/react-client/echo';
11
- import { useIdentity } from '@dxos/react-client/halo';
12
- import { Icon, ThemeProvider } from '@dxos/react-ui';
13
- import { createDataExtensions, listener, localStorageStateStoreAdapter, state } from '@dxos/react-ui-editor';
11
+ import { fullyQualifiedId, type Query } from '@dxos/react-client/echo';
14
12
  import {
15
13
  type AutocompleteResult,
16
- type EditorViewMode,
17
14
  type Extension,
18
- InputModeExtensions,
15
+ type EditorViewMode,
19
16
  autocomplete,
20
17
  decorateMarkdown,
21
- folding,
22
- formattingKeymap,
23
18
  linkTooltip,
24
19
  typewriter,
20
+ formattingKeymap,
21
+ InputModeExtensions,
22
+ folding,
25
23
  } from '@dxos/react-ui-editor';
26
- import { defaultTx } from '@dxos/react-ui-theme';
27
- import { isNotFalsy } from '@dxos/util';
24
+ import { getSize, mx } from '@dxos/react-ui-theme';
25
+ import { isNotFalsy, nonNullable } from '@dxos/util';
28
26
 
29
- import { type DocumentType, type MarkdownPluginState, type MarkdownSettingsProps } from './types';
30
- import { setFallbackName } from './util';
27
+ import { type DocumentType, type MarkdownSettingsProps } from './types';
31
28
 
32
- type ExtensionsOptions = {
33
- document: DocumentType;
34
- dispatch?: IntentDispatcher;
35
- query?: Query<DocumentType>;
36
- settings: MarkdownSettingsProps;
29
+ export type ExtensionsOptions = {
37
30
  viewMode?: EditorViewMode;
31
+ settings?: MarkdownSettingsProps;
32
+ document?: DocumentType;
33
+ debug?: boolean;
34
+ experimental?: boolean;
35
+ numberedHeadings?: boolean;
36
+ folding?: boolean;
37
+ query?: Query<DocumentType>;
38
+ dispatch?: IntentDispatcher;
38
39
  };
39
40
 
40
- // TODO(burdon): Merge with createBaseExtensions above.
41
- export const useExtensions = ({
42
- extensionProviders,
43
- document,
44
- settings,
41
+ /**
42
+ * Create extension instances for editor.
43
+ */
44
+ export const createBaseExtensions = ({
45
45
  viewMode,
46
- }: Pick<ExtensionsOptions, 'document' | 'settings' | 'viewMode'> &
47
- Pick<MarkdownPluginState, 'extensionProviders'>): Extension[] => {
48
- const dispatch = useIntentDispatcher();
49
- const identity = useIdentity();
50
- const space = getSpace(document);
51
-
52
- // TODO(wittjosiah): Autocomplete is not working and this query is causing performance issues.
53
- // TODO(burdon): Unsubscribe.
54
- // const query = space?.db.query(Filter.schema(DocumentType));
55
- // query?.subscribe();
56
- const baseExtensions = useMemo(
57
- () =>
58
- createBaseExtensions({
59
- document,
60
- settings,
61
- viewMode,
62
- dispatch,
63
- // query,
64
- }),
65
- [document, viewMode, dispatch, settings, settings.folding, settings.numberedHeadings],
66
- );
67
-
68
- //
69
- // External extensions from other plugins.
70
- //
71
- const pluginExtensions = useMemo<Extension[] | undefined>(
72
- () =>
73
- extensionProviders?.reduce((acc: Extension[], provider) => {
74
- const extension = typeof provider === 'function' ? provider({ document }) : provider;
75
- if (extension) {
76
- acc.push(extension);
77
- }
78
-
79
- return acc;
80
- }, []),
81
- [extensionProviders],
82
- );
46
+ settings,
47
+ document,
48
+ query,
49
+ dispatch,
50
+ }: ExtensionsOptions): Extension[] => {
51
+ const extensions: Extension[] = [];
83
52
 
84
53
  //
85
- // Basic plugins.
54
+ // Editor mode.
86
55
  //
87
- return useMemo<Extension[]>(
88
- () =>
89
- [
90
- // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
91
- createDataExtensions({
92
- id: document.id,
93
- text: document.content && createDocAccessor(document.content, ['content']),
94
- space,
95
- identity,
96
- }),
97
- state(localStorageStateStoreAdapter),
98
- listener({
99
- onChange: (text) => setFallbackName(document, text),
100
- }),
101
- baseExtensions,
102
- pluginExtensions,
103
- ].filter(isNotFalsy),
104
- [baseExtensions, pluginExtensions, document, document.content, space, identity],
105
- );
106
- };
107
-
108
- /**
109
- * Create extension instances for editor.
110
- */
111
- const createBaseExtensions = ({ document, dispatch, settings, query, viewMode }: ExtensionsOptions): Extension[] => {
112
- const extensions: Extension[] = [
113
- settings.editorInputMode && InputModeExtensions[settings.editorInputMode],
114
- settings.folding && folding(),
115
- ].filter(isNotFalsy);
56
+ if (settings?.editorInputMode) {
57
+ const extension = InputModeExtensions[settings.editorInputMode];
58
+ if (extension) {
59
+ extensions.push(extension);
60
+ }
61
+ }
116
62
 
117
63
  //
118
64
  // Markdown
@@ -123,7 +69,7 @@ const createBaseExtensions = ({ document, dispatch, settings, query, viewMode }:
123
69
  formattingKeymap(),
124
70
  decorateMarkdown({
125
71
  selectionChangeDelay: 100,
126
- numberedHeadings: settings.numberedHeadings ? { from: 2 } : undefined,
72
+ numberedHeadings: settings?.numberedHeadings ? { from: 2 } : undefined,
127
73
  // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
128
74
  renderLinkButton:
129
75
  dispatch && document
@@ -152,6 +98,7 @@ const createBaseExtensions = ({ document, dispatch, settings, query, viewMode }:
152
98
  extensions.push(
153
99
  autocomplete({
154
100
  onSearch: (text: string) => {
101
+ // TODO query
155
102
  // TODO(burdon): Specify filter (e.g., stack).
156
103
  return query.objects
157
104
  .map<AutocompleteResult | undefined>((object) =>
@@ -163,27 +110,29 @@ const createBaseExtensions = ({ document, dispatch, settings, query, viewMode }:
163
110
  }
164
111
  : undefined,
165
112
  )
166
- .filter(isNotFalsy);
113
+ .filter(nonNullable);
167
114
  },
168
115
  }),
169
116
  );
170
117
  }
171
118
 
172
- if (settings.debug) {
173
- const items = settings.typewriter?.split(/[,\n]/) ?? '';
174
- if (items) {
175
- extensions.push(typewriter({ items }));
176
- }
119
+ extensions.push(
120
+ ...[
121
+ //
122
+ settings?.folding && folding(),
123
+ ].filter(isNotFalsy),
124
+ );
125
+
126
+ if (settings?.debug) {
127
+ const items = settings.typewriter ?? '';
128
+ extensions.push(...[items ? typewriter({ items: items.split(/[,\n]/) }) : undefined].filter(nonNullable));
177
129
  }
178
130
 
179
131
  return extensions;
180
132
  };
181
133
 
182
- // TODO(burdon): Factor out styles.
183
- const style = {
184
- hover: 'rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400',
185
- icon: 'inline-block leading-none mis-1 cursor-pointer',
186
- };
134
+ // TODO(burdon): Factor out style.
135
+ const hover = 'rounded-sm text-primary-600 hover:text-primary-500 dark:text-primary-300 hover:dark:text-primary-200';
187
136
 
188
137
  const onRenderLink = (onSelectObject: (id: string) => void) => (el: Element, url: string) => {
189
138
  // TODO(burdon): Formalize/document internal link format.
@@ -206,31 +155,25 @@ const onRenderLink = (onSelectObject: (id: string) => void) => (el: Element, url
206
155
  target: '_blank',
207
156
  };
208
157
 
209
- renderRoot(
210
- el,
211
- <a {...options} className={style.hover}>
212
- <Icon
213
- icon={isInternal ? 'ph--arrow-square-down--bold' : 'ph--arrow-square-out--bold'}
214
- size={4}
215
- classNames={style.icon}
216
- />
217
- </a>,
158
+ const LinkIcon: Icon = isInternal ? ArrowSquareDown : ArrowSquareOut;
159
+
160
+ createRoot(el).render(
161
+ <StrictMode>
162
+ <a {...options} className={hover}>
163
+ <LinkIcon weight='bold' className={mx(getSize(4), 'inline-block leading-none mis-1 cursor-pointer')} />
164
+ </a>
165
+ </StrictMode>,
218
166
  );
219
167
  };
220
168
 
221
169
  const renderLinkTooltip = (el: Element, url: string) => {
222
170
  const web = new URL(url);
223
- renderRoot(
224
- el,
225
- <a href={url} rel='noreferrer' target='_blank' className={style.hover}>
226
- {web.origin}
227
- <Icon icon='ph--arrow-square-out--bold' size={4} classNames={style.icon} />
228
- </a>,
171
+ createRoot(el).render(
172
+ <StrictMode>
173
+ <a href={url} target='_blank' rel='noreferrer' className={hover}>
174
+ {web.origin}
175
+ <ArrowSquareOut weight='bold' className={mx(getSize(4), 'inline-block leading-none mis-1 cursor-pointer')} />
176
+ </a>
177
+ </StrictMode>,
229
178
  );
230
179
  };
231
-
232
- // TODO(burdon): Remove react rendering; use DOM directly.
233
- export const renderRoot = <T extends Element>(root: T, node: ReactNode): T => {
234
- createRoot(root).render(<ThemeProvider tx={defaultTx}>{node}</ThemeProvider>);
235
- return root;
236
- };
package/src/meta.tsx ADDED
@@ -0,0 +1,19 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type IconProps, TextAa } from '@phosphor-icons/react';
6
+ import React from 'react';
7
+
8
+ import { pluginMeta } from '@dxos/app-framework';
9
+
10
+ export const MARKDOWN_PLUGIN = 'dxos.org/plugin/markdown';
11
+
12
+ export default pluginMeta({
13
+ id: MARKDOWN_PLUGIN,
14
+ name: 'Editor',
15
+ description: 'Markdown text editor.',
16
+ homePage: 'https://github.com/dxos/dxos/tree/main/packages/apps/plugins/plugin-markdown',
17
+ iconComponent: (props: IconProps) => <TextAa {...props} />,
18
+ iconSymbol: 'ph--text-aa--regular',
19
+ });
@@ -15,15 +15,3 @@ export class DocumentType extends TypedObject({ typename: 'dxos.org/type/Documen
15
15
  content: ref(TextType),
16
16
  threads: S.mutable(S.Array(ref(ThreadType))),
17
17
  }) {}
18
-
19
- /**
20
- * Checks if an object conforms to the interface needed to render an editor.
21
- */
22
- // TODO(burdon): Normalize types (from FilesPlugin).
23
- export const isEditorModel = (data: any): data is { id: string; text: string } =>
24
- data &&
25
- typeof data === 'object' &&
26
- 'id' in data &&
27
- typeof data.id === 'string' &&
28
- 'text' in data &&
29
- typeof data.text === 'string';
@@ -12,7 +12,6 @@ import type {
12
12
  TranslationsProvides,
13
13
  } from '@dxos/app-framework';
14
14
  import { type SchemaProvides } from '@dxos/plugin-client';
15
- import { type SpaceInitProvides } from '@dxos/plugin-space';
16
15
  import { type Extension, type EditorInputMode, type EditorViewMode } from '@dxos/react-ui-editor';
17
16
 
18
17
  import { type DocumentType } from './document';
@@ -27,15 +26,13 @@ export enum MarkdownAction {
27
26
 
28
27
  export type MarkdownProperties = Record<string, any>;
29
28
 
30
- // TODO(burdon): Async.
31
- export type MarkdownExtensionProvider = (props: { document?: DocumentType }) => Extension | undefined;
29
+ export type ExtensionsProvider = (props: { document?: DocumentType }) => Extension[];
32
30
 
33
31
  export type OnChange = (text: string) => void;
34
32
 
35
33
  export type MarkdownExtensionProvides = {
36
- // TODO(burdon): Rename.
37
34
  markdown: {
38
- extensions: MarkdownExtensionProvider;
35
+ extensions: ExtensionsProvider;
39
36
  };
40
37
  };
41
38
 
@@ -48,11 +45,11 @@ type StackProvides = {
48
45
 
49
46
  export type MarkdownPluginState = {
50
47
  // Codemirror extensions provided by other plugins.
51
- extensionProviders?: MarkdownExtensionProvider[];
48
+ extensionProviders: NonNullable<ExtensionsProvider>[];
52
49
 
53
50
  // TODO(burdon): Extend view mode per document to include scroll position, etc.
54
51
  // View mode per document.
55
- viewMode: Record<string, EditorViewMode>;
52
+ viewMode: { [key: string]: EditorViewMode };
56
53
  };
57
54
 
58
55
  export type MarkdownSettingsProps = {
@@ -67,11 +64,12 @@ export type MarkdownSettingsProps = {
67
64
  folding?: boolean;
68
65
  };
69
66
 
70
- // TODO(Zan): Move this to the plugin-space plugin or another common location when we implement comments in sheets.
67
+ // TODO(Zan): Move this to the plugin-space plugin or another common location
68
+ // when we implement comments in sheets.
71
69
  type ThreadProvides<T> = {
72
70
  thread: {
73
71
  predicate: (obj: any) => obj is T;
74
- createSort: (obj: T) => (anchorA: string | undefined, anchorB: string | undefined) => number;
72
+ createSort: (obj: T) => (anchorA: string, anchorB: string) => number;
75
73
  };
76
74
  };
77
75
 
@@ -83,6 +81,5 @@ export type MarkdownPluginProvides = SurfaceProvides &
83
81
  SettingsProvides<MarkdownSettingsProps> &
84
82
  TranslationsProvides &
85
83
  SchemaProvides &
86
- SpaceInitProvides &
87
84
  StackProvides &
88
85
  ThreadProvides<DocumentType>;
package/src/util.tsx CHANGED
@@ -5,7 +5,7 @@
5
5
  import { type Plugin } from '@dxos/app-framework';
6
6
  import { debounce } from '@dxos/async';
7
7
  import { type TypedObjectSerializer } from '@dxos/plugin-space/types';
8
- import { create, createObject, isEchoObject, loadObjectReferences } from '@dxos/react-client/echo';
8
+ import { create, createEchoObject, isEchoObject, loadObjectReferences } from '@dxos/react-client/echo';
9
9
 
10
10
  import { DocumentType, type MarkdownProperties, type MarkdownExtensionProvides, TextType } from './types';
11
11
 
@@ -43,6 +43,6 @@ export const serializer: TypedObjectSerializer<DocumentType> = {
43
43
 
44
44
  deserialize: async ({ content: serialized }) => {
45
45
  const { name, content } = JSON.parse(serialized);
46
- return createObject(create(DocumentType, { name, content: create(TextType, { content }), threads: [] }));
46
+ return createEchoObject(create(DocumentType, { name, content: create(TextType, { content }), threads: [] }));
47
47
  },
48
48
  };