@dxos/plugin-markdown 0.7.4 → 0.7.5-feature-compute.4d9d99a

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 (175) hide show
  1. package/dist/lib/browser/{MarkdownContainer-6OPC5MKP.mjs → MarkdownContainer-ARRY4I6S.mjs} +175 -126
  2. package/dist/lib/browser/MarkdownContainer-ARRY4I6S.mjs.map +7 -0
  3. package/dist/lib/browser/app-graph-serializer-HHWSLYIW.mjs +51 -0
  4. package/dist/lib/browser/app-graph-serializer-HHWSLYIW.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-TZN5FGB2.mjs → chunk-ADAYSA5G.mjs} +24 -13
  6. package/dist/lib/browser/chunk-ADAYSA5G.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-EMIIXXVX.mjs +66 -0
  8. package/dist/lib/browser/chunk-EMIIXXVX.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-FSAYVXSE.mjs +16 -0
  10. package/dist/lib/browser/chunk-FSAYVXSE.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-4X6YX3KU.mjs → chunk-YB2TJFNH.mjs} +3 -3
  12. package/dist/lib/browser/chunk-YB2TJFNH.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-YPDWX3WI.mjs +47 -0
  14. package/dist/lib/browser/chunk-YPDWX3WI.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +99 -452
  16. package/dist/lib/browser/index.mjs.map +4 -4
  17. package/dist/lib/browser/intent-resolver-4KWMUMND.mjs +37 -0
  18. package/dist/lib/browser/intent-resolver-4KWMUMND.mjs.map +7 -0
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/react-surface-RL4CISJZ.mjs +152 -0
  21. package/dist/lib/browser/react-surface-RL4CISJZ.mjs.map +7 -0
  22. package/dist/lib/browser/settings-PTF73JDL.mjs +28 -0
  23. package/dist/lib/browser/settings-PTF73JDL.mjs.map +7 -0
  24. package/dist/lib/browser/state-DOVZP7XJ.mjs +37 -0
  25. package/dist/lib/browser/state-DOVZP7XJ.mjs.map +7 -0
  26. package/dist/lib/browser/thread-G4RS7NBZ.mjs +36 -0
  27. package/dist/lib/browser/thread-G4RS7NBZ.mjs.map +7 -0
  28. package/dist/lib/browser/types/index.mjs +4 -4
  29. package/dist/lib/node/{MarkdownContainer-6OKJOHTZ.cjs → MarkdownContainer-TV6W64EN.cjs} +167 -120
  30. package/dist/lib/node/MarkdownContainer-TV6W64EN.cjs.map +7 -0
  31. package/dist/lib/node/app-graph-serializer-PJRST43Q.cjs +62 -0
  32. package/dist/lib/node/app-graph-serializer-PJRST43Q.cjs.map +7 -0
  33. package/dist/lib/node/chunk-34WFGSZU.cjs +86 -0
  34. package/dist/lib/node/chunk-34WFGSZU.cjs.map +7 -0
  35. package/dist/lib/node/chunk-7WZANRNS.cjs +64 -0
  36. package/dist/lib/node/chunk-7WZANRNS.cjs.map +7 -0
  37. package/dist/lib/node/{meta.cjs → chunk-G7WKHUGU.cjs} +13 -8
  38. package/dist/lib/node/chunk-G7WKHUGU.cjs.map +7 -0
  39. package/dist/lib/node/{chunk-PHHIPRJC.cjs → chunk-HTWAAR54.cjs} +7 -7
  40. package/dist/lib/node/chunk-HTWAAR54.cjs.map +7 -0
  41. package/dist/lib/node/{chunk-KEPAM4JP.cjs → chunk-UFFFUC6W.cjs} +39 -14
  42. package/dist/lib/node/chunk-UFFFUC6W.cjs.map +7 -0
  43. package/dist/lib/node/index.cjs +90 -450
  44. package/dist/lib/node/index.cjs.map +4 -4
  45. package/dist/lib/node/intent-resolver-QN25AFOP.cjs +50 -0
  46. package/dist/lib/node/intent-resolver-QN25AFOP.cjs.map +7 -0
  47. package/dist/lib/node/meta.json +1 -1
  48. package/dist/lib/node/react-surface-RZ2XV56V.cjs +165 -0
  49. package/dist/lib/node/react-surface-RZ2XV56V.cjs.map +7 -0
  50. package/dist/lib/node/settings-BO5P5R4I.cjs +42 -0
  51. package/dist/lib/node/settings-BO5P5R4I.cjs.map +7 -0
  52. package/dist/lib/node/state-F26NQP7F.cjs +51 -0
  53. package/dist/lib/node/state-F26NQP7F.cjs.map +7 -0
  54. package/dist/lib/node/thread-THWQ67WS.cjs +52 -0
  55. package/dist/lib/node/thread-THWQ67WS.cjs.map +7 -0
  56. package/dist/lib/node/types/index.cjs +7 -7
  57. package/dist/lib/node/types/index.cjs.map +1 -1
  58. package/dist/lib/node-esm/{MarkdownContainer-GBNSGROQ.mjs → MarkdownContainer-3ZHQTTMQ.mjs} +175 -126
  59. package/dist/lib/node-esm/MarkdownContainer-3ZHQTTMQ.mjs.map +7 -0
  60. package/dist/lib/node-esm/app-graph-serializer-JTHJUUS2.mjs +52 -0
  61. package/dist/lib/node-esm/app-graph-serializer-JTHJUUS2.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-2GHK262V.mjs +17 -0
  63. package/dist/lib/node-esm/chunk-2GHK262V.mjs.map +7 -0
  64. package/dist/lib/node-esm/{chunk-BABK7FMW.mjs → chunk-AOKWCL3O.mjs} +3 -3
  65. package/dist/lib/node-esm/chunk-AOKWCL3O.mjs.map +7 -0
  66. package/dist/lib/node-esm/chunk-CDFNMFGT.mjs +67 -0
  67. package/dist/lib/node-esm/chunk-CDFNMFGT.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-HLP536EW.mjs +48 -0
  69. package/dist/lib/node-esm/chunk-HLP536EW.mjs.map +7 -0
  70. package/dist/lib/node-esm/{chunk-NUMUUCYF.mjs → chunk-Y5RSQVGH.mjs} +24 -13
  71. package/dist/lib/node-esm/chunk-Y5RSQVGH.mjs.map +7 -0
  72. package/dist/lib/node-esm/index.mjs +99 -452
  73. package/dist/lib/node-esm/index.mjs.map +4 -4
  74. package/dist/lib/node-esm/intent-resolver-F7MQOTG7.mjs +38 -0
  75. package/dist/lib/node-esm/intent-resolver-F7MQOTG7.mjs.map +7 -0
  76. package/dist/lib/node-esm/meta.json +1 -1
  77. package/dist/lib/node-esm/react-surface-RRXHEW4R.mjs +153 -0
  78. package/dist/lib/node-esm/react-surface-RRXHEW4R.mjs.map +7 -0
  79. package/dist/lib/node-esm/settings-E7P5FQ3F.mjs +29 -0
  80. package/dist/lib/node-esm/settings-E7P5FQ3F.mjs.map +7 -0
  81. package/dist/lib/node-esm/state-HXSOQNOV.mjs +38 -0
  82. package/dist/lib/node-esm/state-HXSOQNOV.mjs.map +7 -0
  83. package/dist/lib/node-esm/thread-CYEXBXTW.mjs +37 -0
  84. package/dist/lib/node-esm/thread-CYEXBXTW.mjs.map +7 -0
  85. package/dist/lib/node-esm/types/index.mjs +4 -4
  86. package/dist/types/src/MarkdownPlugin.d.ts +1 -3
  87. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/app-graph-serializer.d.ts +4 -0
  89. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -0
  90. package/dist/types/src/capabilities/capabilities.d.ts +12 -0
  91. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/index.d.ts +16 -0
  93. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  94. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
  95. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
  96. package/dist/types/src/capabilities/react-surface.d.ts +4 -0
  97. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  98. package/dist/types/src/capabilities/settings.d.ts +4 -0
  99. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  100. package/dist/types/src/capabilities/state.d.ts +11 -0
  101. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  102. package/dist/types/src/capabilities/thread.d.ts +6 -0
  103. package/dist/types/src/capabilities/thread.d.ts.map +1 -0
  104. package/dist/types/src/components/MarkdownContainer.d.ts +1 -1
  105. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  106. package/dist/types/src/components/MarkdownEditor.d.ts +15 -0
  107. package/dist/types/src/components/MarkdownEditor.d.ts.map +1 -1
  108. package/dist/types/src/components/MarkdownEditor.stories.d.ts.map +1 -1
  109. package/dist/types/src/components/Toolbar.stories.d.ts +2 -2
  110. package/dist/types/src/components/Toolbar.stories.d.ts.map +1 -1
  111. package/dist/types/src/components/index.d.ts +1 -1
  112. package/dist/types/src/components/index.d.ts.map +1 -1
  113. package/dist/types/src/extensions.d.ts +4 -4
  114. package/dist/types/src/extensions.d.ts.map +1 -1
  115. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +1 -1
  116. package/dist/types/src/index.d.ts +2 -3
  117. package/dist/types/src/index.d.ts.map +1 -1
  118. package/dist/types/src/meta.d.ts +1 -2
  119. package/dist/types/src/meta.d.ts.map +1 -1
  120. package/dist/types/src/translations.d.ts +3 -0
  121. package/dist/types/src/translations.d.ts.map +1 -1
  122. package/dist/types/src/types/index.d.ts +1 -1
  123. package/dist/types/src/types/index.d.ts.map +1 -1
  124. package/dist/types/src/types/schema.d.ts +75 -0
  125. package/dist/types/src/types/schema.d.ts.map +1 -0
  126. package/dist/types/src/types/types.d.ts +40 -35
  127. package/dist/types/src/types/types.d.ts.map +1 -1
  128. package/dist/types/src/util.d.ts +1 -5
  129. package/dist/types/src/util.d.ts.map +1 -1
  130. package/dist/types/tsconfig.tsbuildinfo +1 -0
  131. package/package.json +33 -37
  132. package/src/MarkdownPlugin.tsx +84 -283
  133. package/src/capabilities/app-graph-serializer.ts +50 -0
  134. package/src/capabilities/capabilities.ts +20 -0
  135. package/src/capabilities/index.ts +14 -0
  136. package/src/capabilities/intent-resolver.ts +27 -0
  137. package/src/capabilities/react-surface.tsx +73 -0
  138. package/src/capabilities/settings.ts +25 -0
  139. package/src/capabilities/state.ts +31 -0
  140. package/src/capabilities/thread.ts +34 -0
  141. package/src/components/MarkdownContainer.tsx +14 -10
  142. package/src/components/MarkdownEditor.stories.tsx +16 -5
  143. package/src/components/MarkdownEditor.tsx +87 -61
  144. package/src/components/Toolbar.stories.tsx +16 -22
  145. package/src/extensions.tsx +21 -19
  146. package/src/hooks/useSelectCurrentThread.tsx +17 -14
  147. package/src/index.ts +2 -5
  148. package/src/meta.ts +1 -1
  149. package/src/translations.ts +1 -0
  150. package/src/types/index.ts +1 -1
  151. package/src/types/{document.ts → schema.ts} +4 -7
  152. package/src/types/types.ts +36 -58
  153. package/src/util.tsx +5 -11
  154. package/dist/lib/browser/MarkdownContainer-6OPC5MKP.mjs.map +0 -7
  155. package/dist/lib/browser/chunk-4X6YX3KU.mjs.map +0 -7
  156. package/dist/lib/browser/chunk-CMSUKMPM.mjs +0 -41
  157. package/dist/lib/browser/chunk-CMSUKMPM.mjs.map +0 -7
  158. package/dist/lib/browser/chunk-TZN5FGB2.mjs.map +0 -7
  159. package/dist/lib/browser/meta.mjs +0 -9
  160. package/dist/lib/browser/meta.mjs.map +0 -7
  161. package/dist/lib/node/MarkdownContainer-6OKJOHTZ.cjs.map +0 -7
  162. package/dist/lib/node/chunk-KEPAM4JP.cjs.map +0 -7
  163. package/dist/lib/node/chunk-PHHIPRJC.cjs.map +0 -7
  164. package/dist/lib/node/chunk-YGMWZIIJ.cjs +0 -61
  165. package/dist/lib/node/chunk-YGMWZIIJ.cjs.map +0 -7
  166. package/dist/lib/node/meta.cjs.map +0 -7
  167. package/dist/lib/node-esm/MarkdownContainer-GBNSGROQ.mjs.map +0 -7
  168. package/dist/lib/node-esm/chunk-BABK7FMW.mjs.map +0 -7
  169. package/dist/lib/node-esm/chunk-ERJ52KN2.mjs +0 -42
  170. package/dist/lib/node-esm/chunk-ERJ52KN2.mjs.map +0 -7
  171. package/dist/lib/node-esm/chunk-NUMUUCYF.mjs.map +0 -7
  172. package/dist/lib/node-esm/meta.mjs +0 -10
  173. package/dist/lib/node-esm/meta.mjs.map +0 -7
  174. package/dist/types/src/types/document.d.ts +0 -106
  175. package/dist/types/src/types/document.d.ts.map +0 -1
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var state_F26NQP7F_exports = {};
20
+ __export(state_F26NQP7F_exports, {
21
+ default: () => state_default
22
+ });
23
+ module.exports = __toCommonJS(state_F26NQP7F_exports);
24
+ var import_chunk_G7WKHUGU = require("./chunk-G7WKHUGU.cjs");
25
+ var import_chunk_HTWAAR54 = require("./chunk-HTWAAR54.cjs");
26
+ var import_app_framework = require("@dxos/app-framework");
27
+ var import_local_storage = require("@dxos/local-storage");
28
+ var import_react_ui_editor = require("@dxos/react-ui-editor");
29
+ var state_default = (context) => {
30
+ const state = new import_local_storage.LocalStorageStore(import_chunk_HTWAAR54.MARKDOWN_PLUGIN, {
31
+ extensionProviders: [],
32
+ viewMode: {}
33
+ });
34
+ state.prop({
35
+ key: "viewMode",
36
+ type: import_local_storage.LocalStorageStore.json()
37
+ });
38
+ const editorState = (0, import_react_ui_editor.createEditorStateStore)(`${import_chunk_HTWAAR54.MARKDOWN_PLUGIN}/editor`);
39
+ const getViewMode = (id) => {
40
+ const defaultViewMode = context.requestCapability(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_HTWAAR54.MARKDOWN_PLUGIN).value.defaultViewMode;
41
+ return id && state.values.viewMode[id] || defaultViewMode;
42
+ };
43
+ const setViewMode = (id, viewMode) => state.values.viewMode[id] = viewMode;
44
+ return (0, import_app_framework.contributes)(import_chunk_G7WKHUGU.MarkdownCapabilities.State, {
45
+ state: state.values,
46
+ editorState,
47
+ getViewMode,
48
+ setViewMode
49
+ });
50
+ };
51
+ //# sourceMappingURL=state-F26NQP7F.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/state.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { LocalStorageStore } from '@dxos/local-storage';\nimport { type EditorViewMode, createEditorStateStore } from '@dxos/react-ui-editor';\n\nimport { MarkdownCapabilities } from './capabilities';\nimport { MARKDOWN_PLUGIN } from '../meta';\nimport { type MarkdownPluginState, type MarkdownSettingsProps } from '../types';\n\nexport default (context: PluginsContext) => {\n const state = new LocalStorageStore<MarkdownPluginState>(MARKDOWN_PLUGIN, { extensionProviders: [], viewMode: {} });\n\n state.prop({ key: 'viewMode', type: LocalStorageStore.json<{ [key: string]: EditorViewMode }>() });\n\n // TODO(wittjosiah): Fold into state.\n const editorState = createEditorStateStore(`${MARKDOWN_PLUGIN}/editor`);\n\n const getViewMode = (id: string) => {\n const defaultViewMode = context\n .requestCapability(Capabilities.SettingsStore)\n .getStore<MarkdownSettingsProps>(MARKDOWN_PLUGIN)!.value.defaultViewMode;\n return (id && state.values.viewMode[id]) || defaultViewMode;\n };\n\n const setViewMode = (id: string, viewMode: EditorViewMode) => (state.values.viewMode[id] = viewMode);\n\n return contributes(MarkdownCapabilities.State, { state: state.values, editorState, getViewMode, setViewMode });\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAA+D;AAC/D,2BAAkC;AAClC,6BAA4D;AAM5D,IAAA,gBAAe,CAACA,YAAAA;AACd,QAAMC,QAAQ,IAAIC,uCAAuCC,uCAAiB;IAAEC,oBAAoB,CAAA;IAAIC,UAAU,CAAC;EAAE,CAAA;AAEjHJ,QAAMK,KAAK;IAAEC,KAAK;IAAYC,MAAMN,uCAAkBO,KAAI;EAAsC,CAAA;AAGhG,QAAMC,kBAAcC,+CAAuB,GAAGR,qCAAAA,SAAwB;AAEtE,QAAMS,cAAc,CAACC,OAAAA;AACnB,UAAMC,kBAAkBd,QACrBe,kBAAkBC,kCAAaC,aAAa,EAC5CC,SAAgCf,qCAAAA,EAAkBgB,MAAML;AAC3D,WAAQD,MAAMZ,MAAMmB,OAAOf,SAASQ,EAAAA,KAAQC;EAC9C;AAEA,QAAMO,cAAc,CAACR,IAAYR,aAA8BJ,MAAMmB,OAAOf,SAASQ,EAAAA,IAAMR;AAE3F,aAAOiB,kCAAYC,2CAAqBC,OAAO;IAAEvB,OAAOA,MAAMmB;IAAQV;IAAaE;IAAaS;EAAY,CAAA;AAC9G;",
6
+ "names": ["context", "state", "LocalStorageStore", "MARKDOWN_PLUGIN", "extensionProviders", "viewMode", "prop", "key", "type", "json", "editorState", "createEditorStateStore", "getViewMode", "id", "defaultViewMode", "requestCapability", "Capabilities", "SettingsStore", "getStore", "value", "values", "setViewMode", "contributes", "MarkdownCapabilities", "State"]
7
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var thread_THWQ67WS_exports = {};
20
+ __export(thread_THWQ67WS_exports, {
21
+ default: () => thread_default
22
+ });
23
+ module.exports = __toCommonJS(thread_THWQ67WS_exports);
24
+ var import_chunk_34WFGSZU = require("./chunk-34WFGSZU.cjs");
25
+ var import_chunk_HTWAAR54 = require("./chunk-HTWAAR54.cjs");
26
+ var import_app_framework = require("@dxos/app-framework");
27
+ var import_plugin_space = require("@dxos/plugin-space");
28
+ var import_echo = require("@dxos/react-client/echo");
29
+ var thread_default = () => (0, import_app_framework.contributes)(import_plugin_space.ThreadCapabilities.Thread, {
30
+ predicate: (obj) => obj instanceof import_chunk_34WFGSZU.DocumentType,
31
+ createSort: (doc) => {
32
+ const accessor = doc.content.target ? (0, import_echo.createDocAccessor)(doc.content.target, [
33
+ "content"
34
+ ]) : void 0;
35
+ if (!accessor) {
36
+ return (_) => 0;
37
+ }
38
+ const getStartPosition = (cursor) => {
39
+ const range = cursor ? (0, import_echo.getRangeFromCursor)(accessor, cursor) : void 0;
40
+ return range?.start ?? Number.MAX_SAFE_INTEGER;
41
+ };
42
+ return (anchorA, anchorB) => {
43
+ if (anchorA === void 0 || anchorB === void 0) {
44
+ return 0;
45
+ }
46
+ const posA = getStartPosition(anchorA);
47
+ const posB = getStartPosition(anchorB);
48
+ return posA - posB;
49
+ };
50
+ }
51
+ });
52
+ //# sourceMappingURL=thread-THWQ67WS.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/thread.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes } from '@dxos/app-framework';\nimport { ThreadCapabilities } from '@dxos/plugin-space';\nimport { createDocAccessor, getRangeFromCursor } from '@dxos/react-client/echo';\n\nimport { DocumentType } from '../types';\n\nexport default () =>\n contributes(ThreadCapabilities.Thread, {\n predicate: (obj) => obj instanceof DocumentType,\n createSort: (doc: DocumentType) => {\n const accessor = doc.content.target ? createDocAccessor(doc.content.target, ['content']) : undefined;\n if (!accessor) {\n return (_) => 0;\n }\n\n const getStartPosition = (cursor: string | undefined) => {\n const range = cursor ? getRangeFromCursor(accessor, cursor) : undefined;\n return range?.start ?? Number.MAX_SAFE_INTEGER;\n };\n\n return (anchorA: string | undefined, anchorB: string | undefined): number => {\n if (anchorA === undefined || anchorB === undefined) {\n return 0;\n }\n const posA = getStartPosition(anchorA);\n const posB = getStartPosition(anchorB);\n return posA - posB;\n };\n },\n });\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAA4B;AAC5B,0BAAmC;AACnC,kBAAsD;AAItD,IAAA,iBAAe,UACbA,kCAAYC,uCAAmBC,QAAQ;EACrCC,WAAW,CAACC,QAAQA,eAAeC;EACnCC,YAAY,CAACC,QAAAA;AACX,UAAMC,WAAWD,IAAIE,QAAQC,aAASC,+BAAkBJ,IAAIE,QAAQC,QAAQ;MAAC;KAAU,IAAIE;AAC3F,QAAI,CAACJ,UAAU;AACb,aAAO,CAACK,MAAM;IAChB;AAEA,UAAMC,mBAAmB,CAACC,WAAAA;AACxB,YAAMC,QAAQD,aAASE,gCAAmBT,UAAUO,MAAAA,IAAUH;AAC9D,aAAOI,OAAOE,SAASC,OAAOC;IAChC;AAEA,WAAO,CAACC,SAA6BC,YAAAA;AACnC,UAAID,YAAYT,UAAaU,YAAYV,QAAW;AAClD,eAAO;MACT;AACA,YAAMW,OAAOT,iBAAiBO,OAAAA;AAC9B,YAAMG,OAAOV,iBAAiBQ,OAAAA;AAC9B,aAAOC,OAAOC;IAChB;EACF;AACF,CAAA;",
6
+ "names": ["contributes", "ThreadCapabilities", "Thread", "predicate", "obj", "DocumentType", "createSort", "doc", "accessor", "content", "target", "createDocAccessor", "undefined", "_", "getStartPosition", "cursor", "range", "getRangeFromCursor", "start", "Number", "MAX_SAFE_INTEGER", "anchorA", "anchorB", "posA", "posB"]
7
+ }
@@ -18,19 +18,19 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var types_exports = {};
20
20
  __export(types_exports, {
21
- DocumentType: () => import_chunk_YGMWZIIJ.DocumentType,
22
- MarkdownAction: () => import_chunk_YGMWZIIJ.MarkdownAction,
23
- TextType: () => import_chunk_YGMWZIIJ.TextType,
24
- isEditorModel: () => import_chunk_YGMWZIIJ.isEditorModel
21
+ DocumentType: () => import_chunk_34WFGSZU.DocumentType,
22
+ MarkdownAction: () => import_chunk_34WFGSZU.MarkdownAction,
23
+ MarkdownSettingsSchema: () => import_chunk_34WFGSZU.MarkdownSettingsSchema,
24
+ isEditorModel: () => import_chunk_34WFGSZU.isEditorModel
25
25
  });
26
26
  module.exports = __toCommonJS(types_exports);
27
- var import_chunk_YGMWZIIJ = require("../chunk-YGMWZIIJ.cjs");
28
- var import_chunk_PHHIPRJC = require("../chunk-PHHIPRJC.cjs");
27
+ var import_chunk_34WFGSZU = require("../chunk-34WFGSZU.cjs");
28
+ var import_chunk_HTWAAR54 = require("../chunk-HTWAAR54.cjs");
29
29
  // Annotate the CommonJS export names for ESM import in node:
30
30
  0 && (module.exports = {
31
31
  DocumentType,
32
32
  MarkdownAction,
33
- TextType,
33
+ MarkdownSettingsSchema,
34
34
  isEditorModel
35
35
  });
36
36
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["index.cjs"],
4
- "sourcesContent": ["import {\n DocumentType,\n MarkdownAction,\n TextType,\n isEditorModel\n} from \"../chunk-YGMWZIIJ.cjs\";\nimport \"../chunk-PHHIPRJC.cjs\";\nexport {\n DocumentType,\n MarkdownAction,\n TextType,\n isEditorModel\n};\n//# sourceMappingURL=index.cjs.map\n"],
4
+ "sourcesContent": ["import {\n DocumentType,\n MarkdownAction,\n MarkdownSettingsSchema,\n isEditorModel\n} from \"../chunk-34WFGSZU.cjs\";\nimport \"../chunk-HTWAAR54.cjs\";\nexport {\n DocumentType,\n MarkdownAction,\n MarkdownSettingsSchema,\n isEditorModel\n};\n//# sourceMappingURL=index.cjs.map\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAKO;AACP,4BAAO;",
6
6
  "names": []
7
7
  }
@@ -2,108 +2,110 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  getFallbackName,
4
4
  setFallbackName
5
- } from "./chunk-NUMUUCYF.mjs";
5
+ } from "./chunk-Y5RSQVGH.mjs";
6
6
  import {
7
7
  DocumentType
8
- } from "./chunk-ERJ52KN2.mjs";
8
+ } from "./chunk-CDFNMFGT.mjs";
9
+ import {
10
+ MarkdownCapabilities
11
+ } from "./chunk-2GHK262V.mjs";
9
12
  import {
10
13
  MARKDOWN_PLUGIN
11
- } from "./chunk-BABK7FMW.mjs";
14
+ } from "./chunk-AOKWCL3O.mjs";
12
15
 
13
16
  // packages/plugins/plugin-markdown/src/components/MarkdownContainer.tsx
14
- import React3, { useEffect as useEffect2, useMemo as useMemo3 } from "react";
15
- import { useResolvePlugin, parseFileManagerPlugin } from "@dxos/app-framework";
17
+ import React3, { useEffect as useEffect2, useMemo as useMemo4 } from "react";
18
+ import { Capabilities, useCapabilities as useCapabilities2 } from "@dxos/app-framework";
16
19
  import { fullyQualifiedId as fullyQualifiedId2, getSpace as getSpace2 } from "@dxos/react-client/echo";
17
20
 
18
21
  // packages/plugins/plugin-markdown/src/components/MarkdownEditor.tsx
19
22
  import { openSearchPanel } from "@codemirror/search";
20
- import React, { useMemo, useEffect, useCallback as useCallback2 } from "react";
21
- import { LayoutAction as LayoutAction2, NavigationAction, useIntentDispatcher } from "@dxos/app-framework";
23
+ import React, { useMemo as useMemo2, useEffect, useCallback } from "react";
24
+ import { useDropzone } from "react-dropzone";
25
+ import { createIntent, LayoutAction as LayoutAction2, NavigationAction, useIntentDispatcher } from "@dxos/app-framework";
22
26
  import { useThemeContext, useTranslation } from "@dxos/react-ui";
23
- import { useAttention } from "@dxos/react-ui-attention";
24
- import { Toolbar, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, editorContent, editorGutter, processAction, useActionHandler, useCommentState, useCommentClickListener, useFormattingState, useTextEditor } from "@dxos/react-ui-editor";
27
+ import { EditorToolbar, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, editorContent, editorGutter, processEditorPayload, useActionHandler, useCommentState, useCommentClickListener, useFormattingState, useTextEditor, stackItemContentEditorClassNames, useEditorToolbarState, createEditorAction } from "@dxos/react-ui-editor";
25
28
  import { StackItem } from "@dxos/react-ui-stack";
26
- import { mx, textBlockWidth } from "@dxos/react-ui-theme";
27
29
  import { isNotFalsy, nonNullable } from "@dxos/util";
28
30
 
29
31
  // packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx
30
32
  import { EditorView } from "@codemirror/view";
31
- import { useCallback } from "react";
32
- import { LayoutAction, useIntentResolver } from "@dxos/app-framework";
33
+ import { useMemo } from "react";
34
+ import { createResolver, LayoutAction, useIntentResolver } from "@dxos/app-framework";
35
+ import { invariant } from "@dxos/invariant";
33
36
  import { Cursor, setSelection } from "@dxos/react-ui-editor";
37
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx";
34
38
  var useSelectCurrentThread = (editorView, documentId) => {
35
- const handleScrollIntoView = useCallback(({ action, data }) => {
36
- if (action === LayoutAction.SCROLL_INTO_VIEW) {
37
- if (editorView && data?.id === documentId && data?.cursor) {
38
- const range = Cursor.getRangeFromCursor(editorView.state, data.cursor);
39
- if (range) {
40
- const selection = editorView.state.selection.main.from !== range.from ? {
41
- anchor: range.from
42
- } : void 0;
43
- const effects = [
44
- // NOTE: This does not use the DOM scrollIntoView function.
45
- EditorView.scrollIntoView(range.from, {
46
- y: "start",
47
- yMargin: 96
48
- })
49
- ];
50
- if (selection) {
51
- effects.push(setSelection.of({
52
- current: documentId
53
- }));
54
- }
55
- editorView.dispatch({
56
- effects,
57
- selection: selection ? {
58
- anchor: range.from
59
- } : void 0
60
- });
61
- return {
62
- data: true
63
- };
64
- }
39
+ const scrollIntoViewResolver = useMemo(() => createResolver(LayoutAction.ScrollIntoView, ({ cursor }) => {
40
+ invariant(editorView, "Editor view is not defined.", {
41
+ F: __dxlog_file,
42
+ L: 23,
43
+ S: void 0,
44
+ A: [
45
+ "editorView",
46
+ "'Editor view is not defined.'"
47
+ ]
48
+ });
49
+ const range = Cursor.getRangeFromCursor(editorView.state, cursor);
50
+ if (range) {
51
+ const selection = editorView.state.selection.main.from !== range.from ? {
52
+ anchor: range.from
53
+ } : void 0;
54
+ const effects = [
55
+ // NOTE: This does not use the DOM scrollIntoView function.
56
+ EditorView.scrollIntoView(range.from, {
57
+ y: "start",
58
+ yMargin: 96
59
+ })
60
+ ];
61
+ if (selection) {
62
+ effects.push(setSelection.of({
63
+ current: documentId
64
+ }));
65
65
  }
66
+ editorView.dispatch({
67
+ effects,
68
+ selection: selection ? {
69
+ anchor: range.from
70
+ } : void 0
71
+ });
66
72
  }
67
- }, [
73
+ }, {
74
+ disposition: "hoist",
75
+ filter: (data) => !!editorView && data.id === documentId && !!data.cursor
76
+ }), [
68
77
  documentId,
69
78
  editorView
70
79
  ]);
71
- useIntentResolver(MARKDOWN_PLUGIN, handleScrollIntoView);
80
+ useIntentResolver(MARKDOWN_PLUGIN, scrollIntoViewResolver);
72
81
  };
73
82
 
74
83
  // packages/plugins/plugin-markdown/src/components/MarkdownEditor.tsx
75
- var DEFAULT_VIEW_MODE = "preview";
76
84
  var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensionProviders, scrollPastEnd, toolbar, viewMode, editorStateStore, onFileUpload, onViewModeChange }) => {
77
85
  const { t } = useTranslation(MARKDOWN_PLUGIN);
78
86
  const { themeMode } = useThemeContext();
79
- const dispatch = useIntentDispatcher();
80
- const [formattingState, formattingObserver] = useFormattingState();
81
- const { hasAttention } = useAttention(id);
82
- const { scrollTo, selection } = useMemo(() => editorStateStore?.getState(id) ?? {}, [
87
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
88
+ const toolbarState = useEditorToolbarState({
89
+ viewMode
90
+ });
91
+ const formattingObserver = useFormattingState(toolbarState);
92
+ const { scrollTo, selection } = useMemo2(() => editorStateStore?.getState(id) ?? {}, [
83
93
  id
84
94
  ]);
85
- const providerExtensions = useMemo(() => extensionProviders?.flatMap((provider) => provider({})).filter(nonNullable), [
95
+ const providerExtensions = useMemo2(() => extensionProviders?.flatMap((provider) => provider({})).filter(nonNullable), [
86
96
  extensionProviders
87
97
  ]);
88
- const [commentsState, commentObserver] = useCommentState();
89
- const onCommentClick = useCallback2(() => {
90
- void dispatch([
91
- {
92
- action: NavigationAction.OPEN,
93
- data: {
94
- activeParts: {
95
- complementary: "comments"
96
- }
97
- }
98
- },
99
- {
100
- action: LayoutAction2.SET_LAYOUT,
101
- data: {
102
- element: "complementary",
103
- state: true
104
- }
98
+ const commentObserver = useCommentState(toolbarState);
99
+ const onCommentClick = useCallback(async () => {
100
+ await dispatch(createIntent(NavigationAction.Open, {
101
+ activeParts: {
102
+ complementary: "comments"
105
103
  }
106
- ]);
104
+ }));
105
+ await dispatch(createIntent(LayoutAction2.SetLayout, {
106
+ element: "complementary",
107
+ state: true
108
+ }));
107
109
  }, [
108
110
  dispatch
109
111
  ]);
@@ -112,7 +114,7 @@ var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensio
112
114
  const file = files[0];
113
115
  const info = file && onFileUpload ? await onFileUpload(file) : void 0;
114
116
  if (info) {
115
- processAction(view, {
117
+ processEditorPayload(view, {
116
118
  type: "image",
117
119
  data: info.url
118
120
  });
@@ -166,9 +168,44 @@ var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensio
166
168
  ]);
167
169
  useTest(editorView);
168
170
  useSelectCurrentThread(editorView, id);
171
+ const { acceptedFiles, getInputProps, open } = useDropzone({
172
+ multiple: false,
173
+ noDrag: true,
174
+ accept: {
175
+ "image/*": [
176
+ ".jpg",
177
+ ".jpeg",
178
+ ".png",
179
+ ".gif"
180
+ ]
181
+ }
182
+ });
183
+ useEffect(() => {
184
+ if (editorView && onFileUpload && acceptedFiles.length) {
185
+ requestAnimationFrame(async () => {
186
+ const f = acceptedFiles[0];
187
+ const file = new File([
188
+ f
189
+ ], f.name, {
190
+ type: f.type,
191
+ lastModified: f.lastModified
192
+ });
193
+ const info = await onFileUpload(file);
194
+ if (info) {
195
+ processEditorPayload(editorView, {
196
+ type: "image",
197
+ data: info.url
198
+ });
199
+ }
200
+ });
201
+ }
202
+ }, [
203
+ acceptedFiles,
204
+ editorView
205
+ ]);
169
206
  const handleToolbarAction = useActionHandler(editorView);
170
- const handleAction = (action) => {
171
- switch (action.type) {
207
+ const handleAction = useCallback((action) => {
208
+ switch (action.properties.type) {
172
209
  case "search": {
173
210
  if (editorView) {
174
211
  openSearchPanel(editorView);
@@ -176,37 +213,34 @@ var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensio
176
213
  return;
177
214
  }
178
215
  case "view-mode": {
179
- onViewModeChange?.(id, action.data);
216
+ onViewModeChange?.(id, action.properties.data);
217
+ return;
218
+ }
219
+ case "image": {
220
+ open();
180
221
  return;
181
222
  }
182
223
  }
183
224
  handleToolbarAction?.(action);
184
- };
225
+ }, [
226
+ editorView,
227
+ onViewModeChange,
228
+ open
229
+ ]);
185
230
  return /* @__PURE__ */ React.createElement(StackItem.Content, {
186
- toolbar
187
- }, toolbar && /* @__PURE__ */ React.createElement("div", {
188
- role: "none",
189
- className: mx("attention-surface is-full border-be !border-separator", role === "section" && "sticky block-start-0 z-[1] -mbe-px min-is-0")
190
- }, /* @__PURE__ */ React.createElement(Toolbar.Root, {
191
- classNames: [
192
- textBlockWidth,
193
- !hasAttention && "opacity-20"
194
- ],
195
- state: formattingState && {
196
- ...formattingState,
197
- ...commentsState
198
- },
231
+ toolbar: !!toolbar
232
+ }, toolbar && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(EditorToolbar, {
233
+ attendableId: id,
234
+ role,
235
+ state: toolbarState,
236
+ customActions: onFileUpload ? createUploadAction : void 0,
199
237
  onAction: handleAction
200
- }, /* @__PURE__ */ React.createElement(Toolbar.Markdown, null), onFileUpload && /* @__PURE__ */ React.createElement(Toolbar.Custom, {
201
- onUpload: onFileUpload
202
- }), /* @__PURE__ */ React.createElement(Toolbar.Separator, null), /* @__PURE__ */ React.createElement(Toolbar.View, {
203
- mode: viewMode ?? DEFAULT_VIEW_MODE
204
- }), /* @__PURE__ */ React.createElement(Toolbar.Actions, null))), /* @__PURE__ */ React.createElement("div", {
238
+ }), /* @__PURE__ */ React.createElement("input", getInputProps())), /* @__PURE__ */ React.createElement("div", {
205
239
  role: "none",
206
240
  ref: parentRef,
207
241
  "data-testid": "composer.markdownRoot",
208
242
  "data-toolbar": toolbar ? "enabled" : "disabled",
209
- className: mx("ch-focus-ring-inset data-[toolbar=disabled]:pbs-2 attention-surface", role === "article" ? "min-bs-0" : "[&_.cm-scroller]:overflow-hidden [&_.cm-scroller]:min-bs-24"),
243
+ className: stackItemContentEditorClassNames(role),
210
244
  ...focusAttributes
211
245
  }));
212
246
  };
@@ -220,24 +254,38 @@ var useTest = (view) => {
220
254
  view
221
255
  ]);
222
256
  };
257
+ var createUploadAction = () => ({
258
+ nodes: [
259
+ createEditorAction({
260
+ type: "image",
261
+ testId: "editor.toolbar.image"
262
+ }, "ph--image-square--regular", "upload image label")
263
+ ],
264
+ edges: [
265
+ {
266
+ source: "root",
267
+ target: "image"
268
+ }
269
+ ]
270
+ });
223
271
 
224
272
  // packages/plugins/plugin-markdown/src/extensions.tsx
225
- import React2, { useMemo as useMemo2 } from "react";
273
+ import React2, { useMemo as useMemo3 } from "react";
226
274
  import { createRoot } from "react-dom/client";
227
- import { NavigationAction as NavigationAction2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
228
- import { invariant } from "@dxos/invariant";
275
+ import { createIntent as createIntent2, NavigationAction as NavigationAction2, useCapabilities, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
276
+ import { invariant as invariant2 } from "@dxos/invariant";
229
277
  import { createDocAccessor, fullyQualifiedId, getSpace } from "@dxos/react-client/echo";
230
278
  import { useIdentity } from "@dxos/react-client/halo";
231
279
  import { Icon, ThemeProvider } from "@dxos/react-ui";
232
280
  import { InputModeExtensions, createDataExtensions, autocomplete, decorateMarkdown, folding, formattingKeymap, linkTooltip, listener, selectionState, typewriter } from "@dxos/react-ui-editor";
233
281
  import { defaultTx } from "@dxos/react-ui-theme";
234
282
  import { isNotFalsy as isNotFalsy2 } from "@dxos/util";
235
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-markdown/src/extensions.tsx";
236
- var useExtensions = ({ document, settings, viewMode, editorStateStore, extensionProviders }) => {
237
- const dispatch = useIntentDispatcher2();
283
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-markdown/src/extensions.tsx";
284
+ var useExtensions = ({ document, settings, viewMode, editorStateStore }) => {
285
+ const { dispatchPromise: dispatch } = useIntentDispatcher2();
238
286
  const identity = useIdentity();
239
287
  const space = getSpace(document);
240
- const baseExtensions = useMemo2(() => createBaseExtensions({
288
+ const baseExtensions = useMemo3(() => createBaseExtensions({
241
289
  document,
242
290
  settings,
243
291
  viewMode,
@@ -253,7 +301,8 @@ var useExtensions = ({ document, settings, viewMode, editorStateStore, extension
253
301
  settings.debug,
254
302
  settings.typewriter
255
303
  ]);
256
- const pluginExtensions = useMemo2(() => extensionProviders?.reduce((acc, provider) => {
304
+ const extensionProviders = useCapabilities(MarkdownCapabilities.Extensions);
305
+ const pluginExtensions = useMemo3(() => extensionProviders.flat().reduce((acc, provider) => {
257
306
  const extension = typeof provider === "function" ? provider({
258
307
  document
259
308
  }) : provider;
@@ -265,11 +314,11 @@ var useExtensions = ({ document, settings, viewMode, editorStateStore, extension
265
314
  extensionProviders,
266
315
  document
267
316
  ]);
268
- return useMemo2(() => [
317
+ return useMemo3(() => [
269
318
  // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
270
319
  document && createDataExtensions({
271
320
  id: document.id,
272
- text: document.content && createDocAccessor(document.content, [
321
+ text: document.content.target && createDocAccessor(document.content.target, [
273
322
  "content"
274
323
  ]),
275
324
  space,
@@ -285,7 +334,7 @@ var useExtensions = ({ document, settings, viewMode, editorStateStore, extension
285
334
  baseExtensions,
286
335
  pluginExtensions,
287
336
  document,
288
- document?.content,
337
+ document?.content?.target,
289
338
  space,
290
339
  identity
291
340
  ]);
@@ -305,15 +354,12 @@ var createBaseExtensions = ({ document, dispatch, settings, query, viewMode }) =
305
354
  } : void 0,
306
355
  // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
307
356
  renderLinkButton: dispatch && document ? onRenderLink((id) => {
308
- void dispatch({
309
- action: NavigationAction2.ADD_TO_ACTIVE,
310
- data: {
311
- id,
312
- part: "main",
313
- pivotId: fullyQualifiedId(document),
314
- scrollIntoView: true
315
- }
316
- });
357
+ void dispatch(createIntent2(NavigationAction2.AddToActive, {
358
+ id,
359
+ part: "main",
360
+ pivotId: fullyQualifiedId(document),
361
+ scrollIntoView: true
362
+ }));
317
363
  }) : void 0
318
364
  }),
319
365
  linkTooltip(renderLinkTooltip)
@@ -350,9 +396,9 @@ var onRenderLink = (onSelectObject) => (el, url) => {
350
396
  const options = isInternal ? {
351
397
  onClick: () => {
352
398
  const qualifiedId = url.split("/").at(-1);
353
- invariant(qualifiedId, "Invalid link format.", {
354
- F: __dxlog_file,
355
- L: 215,
399
+ invariant2(qualifiedId, "Invalid link format.", {
400
+ F: __dxlog_file2,
401
+ L: 217,
356
402
  S: void 0,
357
403
  A: [
358
404
  "qualifiedId",
@@ -396,11 +442,10 @@ var renderRoot = (root, node) => {
396
442
  };
397
443
 
398
444
  // packages/plugins/plugin-markdown/src/components/MarkdownContainer.tsx
399
- var MarkdownContainer = ({ id, role, object, extensionProviders, settings, viewMode, editorStateStore, onViewModeChange }) => {
445
+ var MarkdownContainer = ({ id, role, object, settings, viewMode, editorStateStore, onViewModeChange }) => {
400
446
  const scrollPastEnd = role === "article";
401
447
  const doc = object instanceof DocumentType ? object : void 0;
402
448
  const extensions = useExtensions({
403
- extensionProviders,
404
449
  document: doc,
405
450
  settings,
406
451
  viewMode,
@@ -434,26 +479,30 @@ var MarkdownContainer = ({ id, role, object, extensionProviders, settings, viewM
434
479
  var DocumentEditor = ({ id, document: doc, settings, viewMode, ...props }) => {
435
480
  const space = getSpace2(doc);
436
481
  useEffect2(() => {
437
- if (!doc.fallbackName && doc.content?.content) {
438
- doc.fallbackName = getFallbackName(doc.content.content);
482
+ if (typeof doc.fallbackName === "string") {
483
+ return;
484
+ }
485
+ const fallbackName = doc.content?.target?.content ? getFallbackName(doc.content.target.content) : void 0;
486
+ if (fallbackName) {
487
+ doc.fallbackName = fallbackName;
439
488
  }
440
489
  }, [
441
490
  doc,
442
491
  doc.content
443
492
  ]);
444
- const fileManagerPlugin = useResolvePlugin(parseFileManagerPlugin);
445
- const handleFileUpload = useMemo3(() => {
446
- if (space === void 0 || fileManagerPlugin?.provides.file.upload === void 0) {
493
+ const [upload] = useCapabilities2(Capabilities.FileUploader);
494
+ const handleFileUpload = useMemo4(() => {
495
+ if (space === void 0 || upload === void 0) {
447
496
  return void 0;
448
497
  }
449
- return async (file) => fileManagerPlugin?.provides?.file?.upload?.(file, space);
498
+ return async (file) => upload(file, space);
450
499
  }, [
451
500
  space,
452
- fileManagerPlugin
501
+ upload
453
502
  ]);
454
503
  return /* @__PURE__ */ React3.createElement(MarkdownEditor, {
455
504
  id,
456
- initialValue: doc.content?.content,
505
+ initialValue: doc.content?.target?.content,
457
506
  viewMode,
458
507
  toolbar: settings.toolbar,
459
508
  inputMode: settings.editorInputMode,
@@ -466,4 +515,4 @@ export {
466
515
  DocumentEditor,
467
516
  MarkdownContainer_default as default
468
517
  };
469
- //# sourceMappingURL=MarkdownContainer-GBNSGROQ.mjs.map
518
+ //# sourceMappingURL=MarkdownContainer-3ZHQTTMQ.mjs.map