@dxos/plugin-markdown 0.7.4 → 0.7.5-labs.071a3e2

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 (178) hide show
  1. package/dist/lib/browser/{MarkdownContainer-6OPC5MKP.mjs → MarkdownContainer-ZVCWASOD.mjs} +187 -124
  2. package/dist/lib/browser/MarkdownContainer-ZVCWASOD.mjs.map +7 -0
  3. package/dist/lib/browser/app-graph-serializer-BG3MHYI4.mjs +51 -0
  4. package/dist/lib/browser/app-graph-serializer-BG3MHYI4.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-EZ65DY2X.mjs +16 -0
  6. package/dist/lib/browser/chunk-EZ65DY2X.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-TZN5FGB2.mjs → chunk-NPLFZ76Q.mjs} +24 -13
  8. package/dist/lib/browser/chunk-NPLFZ76Q.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-P4K367ZX.mjs +66 -0
  10. package/dist/lib/browser/chunk-P4K367ZX.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-ROJ4VUZB.mjs +47 -0
  12. package/dist/lib/browser/chunk-ROJ4VUZB.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-YTHIPV5Q.mjs +22 -0
  14. package/dist/lib/browser/chunk-YTHIPV5Q.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-CCOPGHVY.mjs +43 -0
  18. package/dist/lib/browser/intent-resolver-CCOPGHVY.mjs.map +7 -0
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/react-surface-FDSOMV5N.mjs +149 -0
  21. package/dist/lib/browser/react-surface-FDSOMV5N.mjs.map +7 -0
  22. package/dist/lib/browser/settings-U7E4DUWJ.mjs +28 -0
  23. package/dist/lib/browser/settings-U7E4DUWJ.mjs.map +7 -0
  24. package/dist/lib/browser/state-QMQXUPSI.mjs +37 -0
  25. package/dist/lib/browser/state-QMQXUPSI.mjs.map +7 -0
  26. package/dist/lib/browser/thread-Y4WMNFBC.mjs +36 -0
  27. package/dist/lib/browser/thread-Y4WMNFBC.mjs.map +7 -0
  28. package/dist/lib/browser/types/index.mjs +4 -4
  29. package/dist/lib/node/{MarkdownContainer-6OKJOHTZ.cjs → MarkdownContainer-HJR4TB7X.cjs} +179 -118
  30. package/dist/lib/node/MarkdownContainer-HJR4TB7X.cjs.map +7 -0
  31. package/dist/lib/node/app-graph-serializer-QZWERV4M.cjs +62 -0
  32. package/dist/lib/node/app-graph-serializer-QZWERV4M.cjs.map +7 -0
  33. package/dist/lib/node/{meta.cjs → chunk-23NQGZX3.cjs} +13 -8
  34. package/dist/lib/node/chunk-23NQGZX3.cjs.map +7 -0
  35. package/dist/lib/node/{chunk-KEPAM4JP.cjs → chunk-2WJ7TUBY.cjs} +39 -14
  36. package/dist/lib/node/chunk-2WJ7TUBY.cjs.map +7 -0
  37. package/dist/lib/node/chunk-CZXXBKMN.cjs +86 -0
  38. package/dist/lib/node/chunk-CZXXBKMN.cjs.map +7 -0
  39. package/dist/lib/node/{chunk-PHHIPRJC.cjs → chunk-QZ4XQYNC.cjs} +16 -9
  40. package/dist/lib/node/chunk-QZ4XQYNC.cjs.map +7 -0
  41. package/dist/lib/node/chunk-ZO5ABSHT.cjs +64 -0
  42. package/dist/lib/node/chunk-ZO5ABSHT.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-5LCIY27K.cjs +56 -0
  46. package/dist/lib/node/intent-resolver-5LCIY27K.cjs.map +7 -0
  47. package/dist/lib/node/meta.json +1 -1
  48. package/dist/lib/node/react-surface-Y4IB5T27.cjs +162 -0
  49. package/dist/lib/node/react-surface-Y4IB5T27.cjs.map +7 -0
  50. package/dist/lib/node/settings-4OYDMRVY.cjs +42 -0
  51. package/dist/lib/node/settings-4OYDMRVY.cjs.map +7 -0
  52. package/dist/lib/node/state-QSA5AOLH.cjs +51 -0
  53. package/dist/lib/node/state-QSA5AOLH.cjs.map +7 -0
  54. package/dist/lib/node/thread-BZE6RKFE.cjs +52 -0
  55. package/dist/lib/node/thread-BZE6RKFE.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-ILR7OVRM.mjs} +187 -124
  59. package/dist/lib/node-esm/MarkdownContainer-ILR7OVRM.mjs.map +7 -0
  60. package/dist/lib/node-esm/app-graph-serializer-H7LI476D.mjs +52 -0
  61. package/dist/lib/node-esm/app-graph-serializer-H7LI476D.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-BBVPC53M.mjs +24 -0
  63. package/dist/lib/node-esm/chunk-BBVPC53M.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-MMVIEZ43.mjs +67 -0
  65. package/dist/lib/node-esm/chunk-MMVIEZ43.mjs.map +7 -0
  66. package/dist/lib/node-esm/chunk-OXPPXUUU.mjs +48 -0
  67. package/dist/lib/node-esm/chunk-OXPPXUUU.mjs.map +7 -0
  68. package/dist/lib/node-esm/{chunk-NUMUUCYF.mjs → chunk-T62F7XQE.mjs} +24 -13
  69. package/dist/lib/node-esm/chunk-T62F7XQE.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-Y5QKDC4V.mjs +17 -0
  71. package/dist/lib/node-esm/chunk-Y5QKDC4V.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-HFEI5NFC.mjs +44 -0
  75. package/dist/lib/node-esm/intent-resolver-HFEI5NFC.mjs.map +7 -0
  76. package/dist/lib/node-esm/meta.json +1 -1
  77. package/dist/lib/node-esm/react-surface-N5F4I26E.mjs +150 -0
  78. package/dist/lib/node-esm/react-surface-N5F4I26E.mjs.map +7 -0
  79. package/dist/lib/node-esm/settings-MEN2YBLA.mjs +29 -0
  80. package/dist/lib/node-esm/settings-MEN2YBLA.mjs.map +7 -0
  81. package/dist/lib/node-esm/state-FF4NXLWU.mjs +38 -0
  82. package/dist/lib/node-esm/state-FF4NXLWU.mjs.map +7 -0
  83. package/dist/lib/node-esm/thread-O2YDKT77.mjs +37 -0
  84. package/dist/lib/node-esm/thread-O2YDKT77.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 +2 -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 +76 -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 +33 -0
  137. package/src/capabilities/react-surface.tsx +71 -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 +91 -61
  144. package/src/components/MarkdownSettings.tsx +3 -3
  145. package/src/components/Toolbar.stories.tsx +16 -22
  146. package/src/extensions.tsx +25 -22
  147. package/src/hooks/useSelectCurrentThread.tsx +22 -14
  148. package/src/index.ts +2 -5
  149. package/src/meta.ts +7 -2
  150. package/src/translations.ts +1 -0
  151. package/src/types/index.ts +1 -1
  152. package/src/types/{document.ts → schema.ts} +4 -7
  153. package/src/types/types.ts +36 -58
  154. package/src/util.tsx +5 -11
  155. package/dist/lib/browser/MarkdownContainer-6OPC5MKP.mjs.map +0 -7
  156. package/dist/lib/browser/chunk-4X6YX3KU.mjs +0 -15
  157. package/dist/lib/browser/chunk-4X6YX3KU.mjs.map +0 -7
  158. package/dist/lib/browser/chunk-CMSUKMPM.mjs +0 -41
  159. package/dist/lib/browser/chunk-CMSUKMPM.mjs.map +0 -7
  160. package/dist/lib/browser/chunk-TZN5FGB2.mjs.map +0 -7
  161. package/dist/lib/browser/meta.mjs +0 -9
  162. package/dist/lib/browser/meta.mjs.map +0 -7
  163. package/dist/lib/node/MarkdownContainer-6OKJOHTZ.cjs.map +0 -7
  164. package/dist/lib/node/chunk-KEPAM4JP.cjs.map +0 -7
  165. package/dist/lib/node/chunk-PHHIPRJC.cjs.map +0 -7
  166. package/dist/lib/node/chunk-YGMWZIIJ.cjs +0 -61
  167. package/dist/lib/node/chunk-YGMWZIIJ.cjs.map +0 -7
  168. package/dist/lib/node/meta.cjs.map +0 -7
  169. package/dist/lib/node-esm/MarkdownContainer-GBNSGROQ.mjs.map +0 -7
  170. package/dist/lib/node-esm/chunk-BABK7FMW.mjs +0 -17
  171. package/dist/lib/node-esm/chunk-BABK7FMW.mjs.map +0 -7
  172. package/dist/lib/node-esm/chunk-ERJ52KN2.mjs +0 -42
  173. package/dist/lib/node-esm/chunk-ERJ52KN2.mjs.map +0 -7
  174. package/dist/lib/node-esm/chunk-NUMUUCYF.mjs.map +0 -7
  175. package/dist/lib/node-esm/meta.mjs +0 -10
  176. package/dist/lib/node-esm/meta.mjs.map +0 -7
  177. package/dist/types/src/types/document.d.ts +0 -106
  178. 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_QSA5AOLH_exports = {};
20
+ __export(state_QSA5AOLH_exports, {
21
+ default: () => state_default
22
+ });
23
+ module.exports = __toCommonJS(state_QSA5AOLH_exports);
24
+ var import_chunk_23NQGZX3 = require("./chunk-23NQGZX3.cjs");
25
+ var import_chunk_QZ4XQYNC = require("./chunk-QZ4XQYNC.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_QZ4XQYNC.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_QZ4XQYNC.MARKDOWN_PLUGIN}/editor`);
39
+ const getViewMode = (id) => {
40
+ const defaultViewMode = context.requestCapability(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_QZ4XQYNC.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_23NQGZX3.MarkdownCapabilities.State, {
45
+ state: state.values,
46
+ editorState,
47
+ getViewMode,
48
+ setViewMode
49
+ });
50
+ };
51
+ //# sourceMappingURL=state-QSA5AOLH.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_BZE6RKFE_exports = {};
20
+ __export(thread_BZE6RKFE_exports, {
21
+ default: () => thread_default
22
+ });
23
+ module.exports = __toCommonJS(thread_BZE6RKFE_exports);
24
+ var import_chunk_CZXXBKMN = require("./chunk-CZXXBKMN.cjs");
25
+ var import_chunk_QZ4XQYNC = require("./chunk-QZ4XQYNC.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_CZXXBKMN.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-BZE6RKFE.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_CZXXBKMN.DocumentType,
22
+ MarkdownAction: () => import_chunk_CZXXBKMN.MarkdownAction,
23
+ MarkdownSettingsSchema: () => import_chunk_CZXXBKMN.MarkdownSettingsSchema,
24
+ isEditorModel: () => import_chunk_CZXXBKMN.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_CZXXBKMN = require("../chunk-CZXXBKMN.cjs");
28
+ var import_chunk_QZ4XQYNC = require("../chunk-QZ4XQYNC.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-CZXXBKMN.cjs\";\nimport \"../chunk-QZ4XQYNC.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,116 @@ 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-T62F7XQE.mjs";
6
6
  import {
7
7
  DocumentType
8
- } from "./chunk-ERJ52KN2.mjs";
8
+ } from "./chunk-MMVIEZ43.mjs";
9
+ import {
10
+ MarkdownCapabilities
11
+ } from "./chunk-Y5QKDC4V.mjs";
9
12
  import {
10
13
  MARKDOWN_PLUGIN
11
- } from "./chunk-BABK7FMW.mjs";
14
+ } from "./chunk-BBVPC53M.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, 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 { S } from "@dxos/echo-schema";
36
+ import { invariant } from "@dxos/invariant";
33
37
  import { Cursor, setSelection } from "@dxos/react-ui-editor";
38
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx";
34
39
  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
- };
40
+ const scrollIntoViewResolver = useMemo(() => createResolver({
41
+ intent: LayoutAction.UpdateLayout,
42
+ position: "hoist",
43
+ filter: (data) => {
44
+ if (!S.is(LayoutAction.ScrollIntoView.fields.input)(data)) {
45
+ return false;
46
+ }
47
+ return !!editorView && data.subject === documentId && !!data.options?.cursor;
48
+ },
49
+ resolve: ({ options: { cursor } }) => {
50
+ invariant(editorView, "Editor view is not defined.", {
51
+ F: __dxlog_file,
52
+ L: 32,
53
+ S: void 0,
54
+ A: [
55
+ "editorView",
56
+ "'Editor view is not defined.'"
57
+ ]
58
+ });
59
+ const range = Cursor.getRangeFromCursor(editorView.state, cursor);
60
+ if (range) {
61
+ const selection = editorView.state.selection.main.from !== range.from ? {
62
+ anchor: range.from
63
+ } : void 0;
64
+ const effects = [
65
+ // NOTE: This does not use the DOM scrollIntoView function.
66
+ EditorView.scrollIntoView(range.from, {
67
+ y: "start",
68
+ yMargin: 96
69
+ })
70
+ ];
71
+ if (selection) {
72
+ effects.push(setSelection.of({
73
+ current: documentId
74
+ }));
64
75
  }
76
+ editorView.dispatch({
77
+ effects,
78
+ selection: selection ? {
79
+ anchor: range.from
80
+ } : void 0
81
+ });
65
82
  }
66
83
  }
67
- }, [
84
+ }), [
68
85
  documentId,
69
86
  editorView
70
87
  ]);
71
- useIntentResolver(MARKDOWN_PLUGIN, handleScrollIntoView);
88
+ useIntentResolver(MARKDOWN_PLUGIN, scrollIntoViewResolver);
72
89
  };
73
90
 
74
91
  // packages/plugins/plugin-markdown/src/components/MarkdownEditor.tsx
75
- var DEFAULT_VIEW_MODE = "preview";
76
92
  var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensionProviders, scrollPastEnd, toolbar, viewMode, editorStateStore, onFileUpload, onViewModeChange }) => {
77
93
  const { t } = useTranslation(MARKDOWN_PLUGIN);
78
94
  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) ?? {}, [
95
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
96
+ const toolbarState = useEditorToolbarState({
97
+ viewMode
98
+ });
99
+ const formattingObserver = useFormattingState(toolbarState);
100
+ const { scrollTo, selection } = useMemo2(() => editorStateStore?.getState(id) ?? {}, [
83
101
  id
84
102
  ]);
85
- const providerExtensions = useMemo(() => extensionProviders?.flatMap((provider) => provider({})).filter(nonNullable), [
103
+ const providerExtensions = useMemo2(() => extensionProviders?.flatMap((provider) => provider({})).filter(nonNullable), [
86
104
  extensionProviders
87
105
  ]);
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
- }
106
+ const commentObserver = useCommentState(toolbarState);
107
+ const onCommentClick = useCallback(async () => {
108
+ await dispatch(createIntent(LayoutAction2.UpdateComplementary, {
109
+ part: "complementary",
110
+ subject: "comments",
111
+ options: {
112
+ state: "expanded"
105
113
  }
106
- ]);
114
+ }));
107
115
  }, [
108
116
  dispatch
109
117
  ]);
@@ -112,7 +120,7 @@ var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensio
112
120
  const file = files[0];
113
121
  const info = file && onFileUpload ? await onFileUpload(file) : void 0;
114
122
  if (info) {
115
- processAction(view, {
123
+ processEditorPayload(view, {
116
124
  type: "image",
117
125
  data: info.url
118
126
  });
@@ -166,9 +174,44 @@ var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensio
166
174
  ]);
167
175
  useTest(editorView);
168
176
  useSelectCurrentThread(editorView, id);
177
+ const { acceptedFiles, getInputProps, open } = useDropzone({
178
+ multiple: false,
179
+ noDrag: true,
180
+ accept: {
181
+ "image/*": [
182
+ ".jpg",
183
+ ".jpeg",
184
+ ".png",
185
+ ".gif"
186
+ ]
187
+ }
188
+ });
189
+ useEffect(() => {
190
+ if (editorView && onFileUpload && acceptedFiles.length) {
191
+ requestAnimationFrame(async () => {
192
+ const f = acceptedFiles[0];
193
+ const file = new File([
194
+ f
195
+ ], f.name, {
196
+ type: f.type,
197
+ lastModified: f.lastModified
198
+ });
199
+ const info = await onFileUpload(file);
200
+ if (info) {
201
+ processEditorPayload(editorView, {
202
+ type: "image",
203
+ data: info.url
204
+ });
205
+ }
206
+ });
207
+ }
208
+ }, [
209
+ acceptedFiles,
210
+ editorView
211
+ ]);
169
212
  const handleToolbarAction = useActionHandler(editorView);
170
- const handleAction = (action) => {
171
- switch (action.type) {
213
+ const handleAction = useCallback((action) => {
214
+ switch (action.properties.type) {
172
215
  case "search": {
173
216
  if (editorView) {
174
217
  openSearchPanel(editorView);
@@ -176,37 +219,34 @@ var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensio
176
219
  return;
177
220
  }
178
221
  case "view-mode": {
179
- onViewModeChange?.(id, action.data);
222
+ onViewModeChange?.(id, action.properties.data);
223
+ return;
224
+ }
225
+ case "image": {
226
+ open();
180
227
  return;
181
228
  }
182
229
  }
183
230
  handleToolbarAction?.(action);
184
- };
231
+ }, [
232
+ editorView,
233
+ onViewModeChange,
234
+ open
235
+ ]);
185
236
  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
- },
237
+ toolbar: !!toolbar
238
+ }, toolbar && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(EditorToolbar, {
239
+ attendableId: id,
240
+ role,
241
+ state: toolbarState,
242
+ customActions: onFileUpload ? createUploadAction : void 0,
199
243
  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", {
244
+ }), /* @__PURE__ */ React.createElement("input", getInputProps())), /* @__PURE__ */ React.createElement("div", {
205
245
  role: "none",
206
246
  ref: parentRef,
207
247
  "data-testid": "composer.markdownRoot",
208
248
  "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"),
249
+ className: stackItemContentEditorClassNames(role),
210
250
  ...focusAttributes
211
251
  }));
212
252
  };
@@ -220,24 +260,43 @@ var useTest = (view) => {
220
260
  view
221
261
  ]);
222
262
  };
263
+ var createUploadAction = () => ({
264
+ nodes: [
265
+ createEditorAction({
266
+ type: "image",
267
+ testId: "editor.toolbar.image"
268
+ }, "ph--image-square--regular", [
269
+ "upload image label",
270
+ {
271
+ ns: MARKDOWN_PLUGIN
272
+ }
273
+ ])
274
+ ],
275
+ edges: [
276
+ {
277
+ source: "root",
278
+ target: "image"
279
+ }
280
+ ]
281
+ });
223
282
 
224
283
  // packages/plugins/plugin-markdown/src/extensions.tsx
225
- import React2, { useMemo as useMemo2 } from "react";
284
+ import React2, { useMemo as useMemo3 } from "react";
226
285
  import { createRoot } from "react-dom/client";
227
- import { NavigationAction as NavigationAction2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
228
- import { invariant } from "@dxos/invariant";
286
+ import { createIntent as createIntent2, LayoutAction as LayoutAction3, useCapabilities, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
287
+ import { invariant as invariant2 } from "@dxos/invariant";
229
288
  import { createDocAccessor, fullyQualifiedId, getSpace } from "@dxos/react-client/echo";
230
289
  import { useIdentity } from "@dxos/react-client/halo";
231
290
  import { Icon, ThemeProvider } from "@dxos/react-ui";
232
291
  import { InputModeExtensions, createDataExtensions, autocomplete, decorateMarkdown, folding, formattingKeymap, linkTooltip, listener, selectionState, typewriter } from "@dxos/react-ui-editor";
233
292
  import { defaultTx } from "@dxos/react-ui-theme";
234
293
  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();
294
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-markdown/src/extensions.tsx";
295
+ var useExtensions = ({ document, settings, viewMode, editorStateStore }) => {
296
+ const { dispatchPromise: dispatch } = useIntentDispatcher2();
238
297
  const identity = useIdentity();
239
298
  const space = getSpace(document);
240
- const baseExtensions = useMemo2(() => createBaseExtensions({
299
+ const baseExtensions = useMemo3(() => createBaseExtensions({
241
300
  document,
242
301
  settings,
243
302
  viewMode,
@@ -253,7 +312,8 @@ var useExtensions = ({ document, settings, viewMode, editorStateStore, extension
253
312
  settings.debug,
254
313
  settings.typewriter
255
314
  ]);
256
- const pluginExtensions = useMemo2(() => extensionProviders?.reduce((acc, provider) => {
315
+ const extensionProviders = useCapabilities(MarkdownCapabilities.Extensions);
316
+ const pluginExtensions = useMemo3(() => extensionProviders.flat().reduce((acc, provider) => {
257
317
  const extension = typeof provider === "function" ? provider({
258
318
  document
259
319
  }) : provider;
@@ -265,11 +325,11 @@ var useExtensions = ({ document, settings, viewMode, editorStateStore, extension
265
325
  extensionProviders,
266
326
  document
267
327
  ]);
268
- return useMemo2(() => [
328
+ return useMemo3(() => [
269
329
  // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
270
330
  document && createDataExtensions({
271
331
  id: document.id,
272
- text: document.content && createDocAccessor(document.content, [
332
+ text: document.content.target && createDocAccessor(document.content.target, [
273
333
  "content"
274
334
  ]),
275
335
  space,
@@ -285,7 +345,7 @@ var useExtensions = ({ document, settings, viewMode, editorStateStore, extension
285
345
  baseExtensions,
286
346
  pluginExtensions,
287
347
  document,
288
- document?.content,
348
+ document?.content?.target,
289
349
  space,
290
350
  identity
291
351
  ]);
@@ -305,15 +365,15 @@ var createBaseExtensions = ({ document, dispatch, settings, query, viewMode }) =
305
365
  } : void 0,
306
366
  // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
307
367
  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
368
+ void dispatch(createIntent2(LayoutAction3.Open, {
369
+ part: "main",
370
+ subject: [
371
+ id
372
+ ],
373
+ options: {
374
+ pivotId: fullyQualifiedId(document)
315
375
  }
316
- });
376
+ }));
317
377
  }) : void 0
318
378
  }),
319
379
  linkTooltip(renderLinkTooltip)
@@ -350,9 +410,9 @@ var onRenderLink = (onSelectObject) => (el, url) => {
350
410
  const options = isInternal ? {
351
411
  onClick: () => {
352
412
  const qualifiedId = url.split("/").at(-1);
353
- invariant(qualifiedId, "Invalid link format.", {
354
- F: __dxlog_file,
355
- L: 215,
413
+ invariant2(qualifiedId, "Invalid link format.", {
414
+ F: __dxlog_file2,
415
+ L: 218,
356
416
  S: void 0,
357
417
  A: [
358
418
  "qualifiedId",
@@ -396,11 +456,10 @@ var renderRoot = (root, node) => {
396
456
  };
397
457
 
398
458
  // packages/plugins/plugin-markdown/src/components/MarkdownContainer.tsx
399
- var MarkdownContainer = ({ id, role, object, extensionProviders, settings, viewMode, editorStateStore, onViewModeChange }) => {
459
+ var MarkdownContainer = ({ id, role, object, settings, viewMode, editorStateStore, onViewModeChange }) => {
400
460
  const scrollPastEnd = role === "article";
401
461
  const doc = object instanceof DocumentType ? object : void 0;
402
462
  const extensions = useExtensions({
403
- extensionProviders,
404
463
  document: doc,
405
464
  settings,
406
465
  viewMode,
@@ -434,26 +493,30 @@ var MarkdownContainer = ({ id, role, object, extensionProviders, settings, viewM
434
493
  var DocumentEditor = ({ id, document: doc, settings, viewMode, ...props }) => {
435
494
  const space = getSpace2(doc);
436
495
  useEffect2(() => {
437
- if (!doc.fallbackName && doc.content?.content) {
438
- doc.fallbackName = getFallbackName(doc.content.content);
496
+ if (typeof doc.fallbackName === "string") {
497
+ return;
498
+ }
499
+ const fallbackName = doc.content?.target?.content ? getFallbackName(doc.content.target.content) : void 0;
500
+ if (fallbackName) {
501
+ doc.fallbackName = fallbackName;
439
502
  }
440
503
  }, [
441
504
  doc,
442
505
  doc.content
443
506
  ]);
444
- const fileManagerPlugin = useResolvePlugin(parseFileManagerPlugin);
445
- const handleFileUpload = useMemo3(() => {
446
- if (space === void 0 || fileManagerPlugin?.provides.file.upload === void 0) {
507
+ const [upload] = useCapabilities2(Capabilities.FileUploader);
508
+ const handleFileUpload = useMemo4(() => {
509
+ if (space === void 0 || upload === void 0) {
447
510
  return void 0;
448
511
  }
449
- return async (file) => fileManagerPlugin?.provides?.file?.upload?.(file, space);
512
+ return async (file) => upload(file, space);
450
513
  }, [
451
514
  space,
452
- fileManagerPlugin
515
+ upload
453
516
  ]);
454
517
  return /* @__PURE__ */ React3.createElement(MarkdownEditor, {
455
518
  id,
456
- initialValue: doc.content?.content,
519
+ initialValue: doc.content?.target?.content,
457
520
  viewMode,
458
521
  toolbar: settings.toolbar,
459
522
  inputMode: settings.editorInputMode,
@@ -466,4 +529,4 @@ export {
466
529
  DocumentEditor,
467
530
  MarkdownContainer_default as default
468
531
  };
469
- //# sourceMappingURL=MarkdownContainer-GBNSGROQ.mjs.map
532
+ //# sourceMappingURL=MarkdownContainer-ILR7OVRM.mjs.map