@dxos/plugin-markdown 0.8.2-staging.7ac8446 → 0.8.3-main.672df60

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 (227) hide show
  1. package/dist/lib/browser/MarkdownContainer-DGPA7SEG.mjs +588 -0
  2. package/dist/lib/browser/MarkdownContainer-DGPA7SEG.mjs.map +7 -0
  3. package/dist/lib/browser/MarkdownPreview-KQN2TGK6.mjs +80 -0
  4. package/dist/lib/browser/MarkdownPreview-KQN2TGK6.mjs.map +7 -0
  5. package/dist/lib/browser/anchor-sort-VS4OZVPP.mjs +32 -0
  6. package/dist/lib/browser/anchor-sort-VS4OZVPP.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-serializer-NOXI4IQ5.mjs → app-graph-serializer-V6RLEHVY.mjs} +5 -6
  8. package/dist/lib/browser/app-graph-serializer-V6RLEHVY.mjs.map +7 -0
  9. package/dist/lib/browser/{artifact-definition-CE6J6NY4.mjs → artifact-definition-5NAODQLG.mjs} +65 -17
  10. package/dist/lib/browser/artifact-definition-5NAODQLG.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-3ULJ4FIJ.mjs → chunk-77NGW7EO.mjs} +12 -26
  12. package/dist/lib/browser/chunk-77NGW7EO.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-QXDKFACU.mjs → chunk-C5RABVIX.mjs} +6 -5
  14. package/dist/lib/browser/chunk-C5RABVIX.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-ECSM56YC.mjs +80 -0
  16. package/dist/lib/browser/chunk-ECSM56YC.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-OTOPAFWC.mjs +20 -0
  18. package/dist/lib/browser/chunk-OTOPAFWC.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-NAGMSX77.mjs → chunk-QVJETNGS.mjs} +2 -2
  20. package/dist/lib/{node-esm/chunk-ETXPC5VP.mjs.map → browser/chunk-QVJETNGS.mjs.map} +1 -1
  21. package/dist/lib/browser/index.mjs +34 -18
  22. package/dist/lib/browser/index.mjs.map +3 -3
  23. package/dist/lib/browser/intent-resolver-4GDYST4Y.mjs +65 -0
  24. package/dist/lib/browser/intent-resolver-4GDYST4Y.mjs.map +7 -0
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/react-surface-DM6B4UUJ.mjs +200 -0
  27. package/dist/lib/browser/react-surface-DM6B4UUJ.mjs.map +7 -0
  28. package/dist/lib/browser/{settings-GCSS3Y4Z.mjs → settings-W5CK4PXP.mjs} +4 -4
  29. package/dist/lib/browser/settings-W5CK4PXP.mjs.map +7 -0
  30. package/dist/lib/browser/{state-O7P5JDIH.mjs → state-KI6PJ6DT.mjs} +3 -3
  31. package/dist/lib/browser/state-KI6PJ6DT.mjs.map +7 -0
  32. package/dist/lib/browser/types/index.mjs +3 -1
  33. package/dist/lib/node/MarkdownContainer-BZK66EQD.cjs +601 -0
  34. package/dist/lib/node/MarkdownContainer-BZK66EQD.cjs.map +7 -0
  35. package/dist/lib/node/MarkdownPreview-H7FFIWJH.cjs +103 -0
  36. package/dist/lib/node/MarkdownPreview-H7FFIWJH.cjs.map +7 -0
  37. package/dist/lib/node/{thread-42R57L4K.cjs → anchor-sort-NHVF23EU.cjs} +15 -20
  38. package/dist/lib/node/anchor-sort-NHVF23EU.cjs.map +7 -0
  39. package/dist/lib/node/{app-graph-serializer-HKK3SEDN.cjs → app-graph-serializer-CLALIYN3.cjs} +10 -11
  40. package/dist/lib/node/app-graph-serializer-CLALIYN3.cjs.map +7 -0
  41. package/dist/lib/node/{artifact-definition-XGADFWCQ.cjs → artifact-definition-VEAHK7BX.cjs} +68 -21
  42. package/dist/lib/node/artifact-definition-VEAHK7BX.cjs.map +7 -0
  43. package/dist/lib/node/chunk-BBDDZLQH.cjs +58 -0
  44. package/dist/lib/node/chunk-BBDDZLQH.cjs.map +7 -0
  45. package/dist/lib/node/{chunk-7QVONRSI.cjs → chunk-G7RBJX22.cjs} +13 -41
  46. package/dist/lib/node/chunk-G7RBJX22.cjs.map +7 -0
  47. package/dist/lib/node/{chunk-DZXTXSXX.cjs → chunk-IFYSBQE5.cjs} +5 -5
  48. package/dist/lib/node/{chunk-DZXTXSXX.cjs.map → chunk-IFYSBQE5.cjs.map} +1 -1
  49. package/dist/lib/node/{chunk-UEXGNGSS.cjs → chunk-RQS4KBMG.cjs} +45 -39
  50. package/dist/lib/node/chunk-RQS4KBMG.cjs.map +7 -0
  51. package/dist/lib/node/{chunk-H5MYVP6F.cjs → chunk-ZDTL47I7.cjs} +9 -8
  52. package/dist/lib/node/chunk-ZDTL47I7.cjs.map +7 -0
  53. package/dist/lib/node/index.cjs +43 -28
  54. package/dist/lib/node/index.cjs.map +3 -3
  55. package/dist/lib/node/intent-resolver-AUZVK3NZ.cjs +78 -0
  56. package/dist/lib/node/intent-resolver-AUZVK3NZ.cjs.map +7 -0
  57. package/dist/lib/node/meta.json +1 -1
  58. package/dist/lib/node/react-surface-QBW4FFXF.cjs +213 -0
  59. package/dist/lib/node/react-surface-QBW4FFXF.cjs.map +7 -0
  60. package/dist/lib/node/{settings-S2ISUVIH.cjs → settings-IRKU3WPM.cjs} +7 -7
  61. package/dist/lib/node/settings-IRKU3WPM.cjs.map +7 -0
  62. package/dist/lib/node/{state-L44SG3ZM.cjs → state-KKDRAG7X.cjs} +7 -7
  63. package/dist/lib/node/state-KKDRAG7X.cjs.map +7 -0
  64. package/dist/lib/node/types/index.cjs +8 -6
  65. package/dist/lib/node/types/index.cjs.map +2 -2
  66. package/dist/lib/node-esm/MarkdownContainer-2DYVQ6RC.mjs +589 -0
  67. package/dist/lib/node-esm/MarkdownContainer-2DYVQ6RC.mjs.map +7 -0
  68. package/dist/lib/node-esm/MarkdownPreview-JUIXYYKF.mjs +81 -0
  69. package/dist/lib/node-esm/MarkdownPreview-JUIXYYKF.mjs.map +7 -0
  70. package/dist/lib/node-esm/anchor-sort-G2HLCYFK.mjs +33 -0
  71. package/dist/lib/node-esm/anchor-sort-G2HLCYFK.mjs.map +7 -0
  72. package/dist/lib/node-esm/{app-graph-serializer-QQ2CTHOQ.mjs → app-graph-serializer-C3RNTQGM.mjs} +5 -6
  73. package/dist/lib/node-esm/app-graph-serializer-C3RNTQGM.mjs.map +7 -0
  74. package/dist/lib/node-esm/{artifact-definition-WRG5ZRN5.mjs → artifact-definition-7TIJW2CO.mjs} +65 -17
  75. package/dist/lib/node-esm/artifact-definition-7TIJW2CO.mjs.map +7 -0
  76. package/dist/lib/node-esm/{chunk-F6UHVLH7.mjs → chunk-6RPARLIK.mjs} +12 -26
  77. package/dist/lib/node-esm/chunk-6RPARLIK.mjs.map +7 -0
  78. package/dist/lib/node-esm/{chunk-ETXPC5VP.mjs → chunk-JXXDCSMW.mjs} +2 -2
  79. package/dist/lib/{browser/chunk-NAGMSX77.mjs.map → node-esm/chunk-JXXDCSMW.mjs.map} +1 -1
  80. package/dist/lib/node-esm/chunk-KK7LP3UQ.mjs +22 -0
  81. package/dist/lib/node-esm/chunk-KK7LP3UQ.mjs.map +7 -0
  82. package/dist/lib/node-esm/chunk-NCMPVEXO.mjs +81 -0
  83. package/dist/lib/node-esm/chunk-NCMPVEXO.mjs.map +7 -0
  84. package/dist/lib/node-esm/{chunk-JAVD67QP.mjs → chunk-TCFJNUAE.mjs} +6 -5
  85. package/dist/lib/node-esm/chunk-TCFJNUAE.mjs.map +7 -0
  86. package/dist/lib/node-esm/index.mjs +34 -18
  87. package/dist/lib/node-esm/index.mjs.map +3 -3
  88. package/dist/lib/node-esm/intent-resolver-FTNXUNI2.mjs +66 -0
  89. package/dist/lib/node-esm/intent-resolver-FTNXUNI2.mjs.map +7 -0
  90. package/dist/lib/node-esm/meta.json +1 -1
  91. package/dist/lib/node-esm/react-surface-A4VAOQG6.mjs +201 -0
  92. package/dist/lib/node-esm/react-surface-A4VAOQG6.mjs.map +7 -0
  93. package/dist/lib/node-esm/{settings-ZDIFTK4N.mjs → settings-MK7D7LHQ.mjs} +4 -4
  94. package/dist/lib/node-esm/settings-MK7D7LHQ.mjs.map +7 -0
  95. package/dist/lib/node-esm/{state-DWPOKLEY.mjs → state-LLGVRYKL.mjs} +3 -3
  96. package/dist/lib/node-esm/state-LLGVRYKL.mjs.map +7 -0
  97. package/dist/lib/node-esm/types/index.mjs +3 -1
  98. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/anchor-sort.d.ts +6 -0
  100. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -0
  101. package/dist/types/src/capabilities/app-graph-serializer.d.ts +2 -2
  102. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/index.d.ts +7 -7
  105. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  107. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/state.d.ts +2 -2
  110. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  111. package/dist/types/src/components/MarkdownContainer.d.ts +5 -3
  112. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  113. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +24 -0
  114. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -0
  115. package/dist/types/src/components/{MarkdownEditor.stories.d.ts → MarkdownEditor/MarkdownEditor.stories.d.ts} +3 -3
  116. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -0
  117. package/dist/types/src/components/MarkdownEditor/index.d.ts +2 -0
  118. package/dist/types/src/components/MarkdownEditor/index.d.ts.map +1 -0
  119. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts +6 -0
  120. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts.map +1 -0
  121. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts +23 -0
  122. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts.map +1 -0
  123. package/dist/types/src/components/MarkdownPreview/index.d.ts +4 -0
  124. package/dist/types/src/components/MarkdownPreview/index.d.ts.map +1 -0
  125. package/dist/types/src/components/{MarkdownSettings.d.ts → MarkdownSettings/MarkdownSettings.d.ts} +1 -1
  126. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -0
  127. package/dist/types/src/components/MarkdownSettings/index.d.ts +2 -0
  128. package/dist/types/src/components/MarkdownSettings/index.d.ts.map +1 -0
  129. package/dist/types/src/components/Suggestions.stories.d.ts +12 -0
  130. package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -0
  131. package/dist/types/src/components/Toolbar.stories.d.ts +2 -2
  132. package/dist/types/src/components/Toolbar.stories.d.ts.map +1 -1
  133. package/dist/types/src/components/index.d.ts +2 -1
  134. package/dist/types/src/components/index.d.ts.map +1 -1
  135. package/dist/types/src/extensions.d.ts +8 -5
  136. package/dist/types/src/extensions.d.ts.map +1 -1
  137. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +1 -1
  138. package/dist/types/src/translations.d.ts +4 -42
  139. package/dist/types/src/translations.d.ts.map +1 -1
  140. package/dist/types/src/types/schema.d.ts +29 -129
  141. package/dist/types/src/types/schema.d.ts.map +1 -1
  142. package/dist/types/src/types/types.d.ts +40 -88
  143. package/dist/types/src/types/types.d.ts.map +1 -1
  144. package/dist/types/src/util.d.ts +1 -0
  145. package/dist/types/src/util.d.ts.map +1 -1
  146. package/dist/types/tsconfig.tsbuildinfo +1 -1
  147. package/package.json +47 -34
  148. package/src/MarkdownPlugin.tsx +22 -12
  149. package/src/capabilities/anchor-sort.ts +30 -0
  150. package/src/capabilities/app-graph-serializer.ts +4 -5
  151. package/src/capabilities/artifact-definition.ts +48 -10
  152. package/src/capabilities/index.ts +1 -1
  153. package/src/capabilities/intent-resolver.ts +40 -12
  154. package/src/capabilities/react-surface.tsx +20 -5
  155. package/src/capabilities/settings.ts +2 -2
  156. package/src/capabilities/state.ts +4 -4
  157. package/src/components/MarkdownContainer.tsx +20 -7
  158. package/src/components/{MarkdownEditor.stories.tsx → MarkdownEditor/MarkdownEditor.stories.tsx} +22 -35
  159. package/src/components/{MarkdownEditor.tsx → MarkdownEditor/MarkdownEditor.tsx} +32 -73
  160. package/src/components/MarkdownEditor/index.ts +5 -0
  161. package/src/components/MarkdownPreview/MarkdownPreview.stories.tsx +73 -0
  162. package/src/components/MarkdownPreview/MarkdownPreview.tsx +71 -0
  163. package/src/components/MarkdownPreview/index.ts +9 -0
  164. package/src/components/{MarkdownSettings.tsx → MarkdownSettings/MarkdownSettings.tsx} +2 -2
  165. package/src/components/MarkdownSettings/index.ts +5 -0
  166. package/src/components/Suggestions.stories.tsx +217 -0
  167. package/src/components/Toolbar.stories.tsx +29 -29
  168. package/src/components/index.ts +1 -0
  169. package/src/extensions.tsx +82 -48
  170. package/src/hooks/useSelectCurrentThread.tsx +2 -2
  171. package/src/translations.ts +3 -3
  172. package/src/types/schema.ts +22 -15
  173. package/src/types/types.ts +23 -21
  174. package/src/util.tsx +8 -4
  175. package/dist/lib/browser/MarkdownContainer-T3HU27RE.mjs +0 -563
  176. package/dist/lib/browser/MarkdownContainer-T3HU27RE.mjs.map +0 -7
  177. package/dist/lib/browser/app-graph-serializer-NOXI4IQ5.mjs.map +0 -7
  178. package/dist/lib/browser/artifact-definition-CE6J6NY4.mjs.map +0 -7
  179. package/dist/lib/browser/chunk-3ULJ4FIJ.mjs.map +0 -7
  180. package/dist/lib/browser/chunk-QXDKFACU.mjs.map +0 -7
  181. package/dist/lib/browser/chunk-YCJNW2RU.mjs +0 -75
  182. package/dist/lib/browser/chunk-YCJNW2RU.mjs.map +0 -7
  183. package/dist/lib/browser/intent-resolver-42GQ6HNZ.mjs +0 -50
  184. package/dist/lib/browser/intent-resolver-42GQ6HNZ.mjs.map +0 -7
  185. package/dist/lib/browser/react-surface-RQX3CPFV.mjs +0 -176
  186. package/dist/lib/browser/react-surface-RQX3CPFV.mjs.map +0 -7
  187. package/dist/lib/browser/settings-GCSS3Y4Z.mjs.map +0 -7
  188. package/dist/lib/browser/state-O7P5JDIH.mjs.map +0 -7
  189. package/dist/lib/browser/thread-3QGCFNVZ.mjs +0 -37
  190. package/dist/lib/browser/thread-3QGCFNVZ.mjs.map +0 -7
  191. package/dist/lib/node/MarkdownContainer-6ZJIFAP6.cjs +0 -576
  192. package/dist/lib/node/MarkdownContainer-6ZJIFAP6.cjs.map +0 -7
  193. package/dist/lib/node/app-graph-serializer-HKK3SEDN.cjs.map +0 -7
  194. package/dist/lib/node/artifact-definition-XGADFWCQ.cjs.map +0 -7
  195. package/dist/lib/node/chunk-7QVONRSI.cjs.map +0 -7
  196. package/dist/lib/node/chunk-H5MYVP6F.cjs.map +0 -7
  197. package/dist/lib/node/chunk-UEXGNGSS.cjs.map +0 -7
  198. package/dist/lib/node/intent-resolver-NW27BF3W.cjs +0 -63
  199. package/dist/lib/node/intent-resolver-NW27BF3W.cjs.map +0 -7
  200. package/dist/lib/node/react-surface-5X3SMHGI.cjs +0 -189
  201. package/dist/lib/node/react-surface-5X3SMHGI.cjs.map +0 -7
  202. package/dist/lib/node/settings-S2ISUVIH.cjs.map +0 -7
  203. package/dist/lib/node/state-L44SG3ZM.cjs.map +0 -7
  204. package/dist/lib/node/thread-42R57L4K.cjs.map +0 -7
  205. package/dist/lib/node-esm/MarkdownContainer-URAPTO37.mjs +0 -564
  206. package/dist/lib/node-esm/MarkdownContainer-URAPTO37.mjs.map +0 -7
  207. package/dist/lib/node-esm/app-graph-serializer-QQ2CTHOQ.mjs.map +0 -7
  208. package/dist/lib/node-esm/artifact-definition-WRG5ZRN5.mjs.map +0 -7
  209. package/dist/lib/node-esm/chunk-4AM4VU3Y.mjs +0 -76
  210. package/dist/lib/node-esm/chunk-4AM4VU3Y.mjs.map +0 -7
  211. package/dist/lib/node-esm/chunk-F6UHVLH7.mjs.map +0 -7
  212. package/dist/lib/node-esm/chunk-JAVD67QP.mjs.map +0 -7
  213. package/dist/lib/node-esm/intent-resolver-7HOMUVHR.mjs +0 -51
  214. package/dist/lib/node-esm/intent-resolver-7HOMUVHR.mjs.map +0 -7
  215. package/dist/lib/node-esm/react-surface-6IKC3G46.mjs +0 -177
  216. package/dist/lib/node-esm/react-surface-6IKC3G46.mjs.map +0 -7
  217. package/dist/lib/node-esm/settings-ZDIFTK4N.mjs.map +0 -7
  218. package/dist/lib/node-esm/state-DWPOKLEY.mjs.map +0 -7
  219. package/dist/lib/node-esm/thread-R2KHZD6V.mjs +0 -38
  220. package/dist/lib/node-esm/thread-R2KHZD6V.mjs.map +0 -7
  221. package/dist/types/src/capabilities/thread.d.ts +0 -6
  222. package/dist/types/src/capabilities/thread.d.ts.map +0 -1
  223. package/dist/types/src/components/MarkdownEditor.d.ts +0 -39
  224. package/dist/types/src/components/MarkdownEditor.d.ts.map +0 -1
  225. package/dist/types/src/components/MarkdownEditor.stories.d.ts.map +0 -1
  226. package/dist/types/src/components/MarkdownSettings.d.ts.map +0 -1
  227. package/src/capabilities/thread.ts +0 -35
@@ -0,0 +1,601 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var MarkdownContainer_BZK66EQD_exports = {};
30
+ __export(MarkdownContainer_BZK66EQD_exports, {
31
+ DocumentEditor: () => DocumentEditor,
32
+ default: () => MarkdownContainer_default
33
+ });
34
+ module.exports = __toCommonJS(MarkdownContainer_BZK66EQD_exports);
35
+ var import_chunk_BBDDZLQH = require("./chunk-BBDDZLQH.cjs");
36
+ var import_chunk_IFYSBQE5 = require("./chunk-IFYSBQE5.cjs");
37
+ var import_chunk_G7RBJX22 = require("./chunk-G7RBJX22.cjs");
38
+ var import_chunk_RQS4KBMG = require("./chunk-RQS4KBMG.cjs");
39
+ var import_chunk_ZU5OIHCY = require("./chunk-ZU5OIHCY.cjs");
40
+ var import_tracking = require("@preact-signals/safe-react/tracking");
41
+ var import_rx_react = require("@effect-rx/rx-react");
42
+ var import_react = __toESM(require("react"));
43
+ var import_app_framework = require("@dxos/app-framework");
44
+ var import_echo_schema = require("@dxos/echo-schema");
45
+ var import_echo = require("@dxos/react-client/echo");
46
+ var import_schema = require("@dxos/schema");
47
+ var import_tracking2 = require("@preact-signals/safe-react/tracking");
48
+ var import_react2 = __toESM(require("react"));
49
+ var import_react_dropzone = require("react-dropzone");
50
+ var import_invariant = require("@dxos/invariant");
51
+ var import_react_ui = require("@dxos/react-ui");
52
+ var import_react_ui_editor = require("@dxos/react-ui-editor");
53
+ var import_react_ui_stack = require("@dxos/react-ui-stack");
54
+ var import_util = require("@dxos/util");
55
+ var import_view = require("@codemirror/view");
56
+ var import_effect = require("effect");
57
+ var import_react3 = require("react");
58
+ var import_app_framework2 = require("@dxos/app-framework");
59
+ var import_invariant2 = require("@dxos/invariant");
60
+ var import_react_ui_editor2 = require("@dxos/react-ui-editor");
61
+ var import_react4 = __toESM(require("react"));
62
+ var import_client = require("react-dom/client");
63
+ var import_app_framework3 = require("@dxos/app-framework");
64
+ var import_invariant3 = require("@dxos/invariant");
65
+ var import_echo2 = require("@dxos/react-client/echo");
66
+ var import_halo = require("@dxos/react-client/halo");
67
+ var import_react_ui2 = require("@dxos/react-ui");
68
+ var import_react_ui_editor3 = require("@dxos/react-ui-editor");
69
+ var import_react_ui_theme = require("@dxos/react-ui-theme");
70
+ var import_util2 = require("@dxos/util");
71
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx";
72
+ var useSelectCurrentThread = (editorView, documentId2) => {
73
+ const scrollIntoViewResolver = (0, import_react3.useMemo)(() => (0, import_app_framework2.createResolver)({
74
+ intent: import_app_framework2.LayoutAction.UpdateLayout,
75
+ position: "hoist",
76
+ filter: (data) => {
77
+ if (!import_effect.Schema.is(import_app_framework2.LayoutAction.ScrollIntoView.fields.input)(data)) {
78
+ return false;
79
+ }
80
+ return !!editorView && data.subject === documentId2 && !!data.options?.cursor;
81
+ },
82
+ resolve: ({ options: { cursor } }) => {
83
+ (0, import_invariant2.invariant)(editorView, "Editor view is not defined.", {
84
+ F: __dxlog_file,
85
+ L: 32,
86
+ S: void 0,
87
+ A: [
88
+ "editorView",
89
+ "'Editor view is not defined.'"
90
+ ]
91
+ });
92
+ const range = import_react_ui_editor2.Cursor.getRangeFromCursor(editorView.state, cursor);
93
+ if (range) {
94
+ const selection = editorView.state.selection.main.from !== range.from ? {
95
+ anchor: range.from
96
+ } : void 0;
97
+ const effects = [
98
+ // NOTE: This does not use the DOM scrollIntoView function.
99
+ import_view.EditorView.scrollIntoView(range.from, {
100
+ y: "start",
101
+ yMargin: 96
102
+ })
103
+ ];
104
+ if (selection) {
105
+ effects.push(import_react_ui_editor2.setSelection.of({
106
+ current: documentId2
107
+ }));
108
+ }
109
+ editorView.dispatch({
110
+ effects,
111
+ selection: selection ? {
112
+ anchor: range.from
113
+ } : void 0
114
+ });
115
+ }
116
+ }
117
+ }), [
118
+ documentId2,
119
+ editorView
120
+ ]);
121
+ (0, import_app_framework2.useIntentResolver)(import_chunk_ZU5OIHCY.MARKDOWN_PLUGIN, scrollIntoViewResolver);
122
+ };
123
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditor.tsx";
124
+ var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensionProviders, scrollPastEnd, toolbar, customActions, viewMode, editorStateStore, onFileUpload, onViewModeChange }) => {
125
+ var _effect = (0, import_tracking2.useSignals)();
126
+ try {
127
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_ZU5OIHCY.MARKDOWN_PLUGIN);
128
+ const { themeMode } = (0, import_react_ui.useThemeContext)();
129
+ const toolbarState = (0, import_react_ui_editor.useEditorToolbarState)({
130
+ viewMode
131
+ });
132
+ const formattingObserver = (0, import_react_ui_editor.useFormattingState)(toolbarState);
133
+ const { scrollTo, selection } = (0, import_react2.useMemo)(() => editorStateStore?.getState(id) ?? {}, [
134
+ id
135
+ ]);
136
+ const providerExtensions = (0, import_react2.useMemo)(() => extensionProviders?.flatMap((provider) => provider({})).filter(import_util.isNonNullable), [
137
+ extensionProviders
138
+ ]);
139
+ const handleDrop = async (view, { files }) => {
140
+ const file = files[0];
141
+ const info = file && onFileUpload ? await onFileUpload(file) : void 0;
142
+ if (info) {
143
+ (0, import_react_ui_editor.processEditorPayload)(view, {
144
+ type: "image",
145
+ data: info.url
146
+ });
147
+ }
148
+ };
149
+ const { parentRef, view: editorView, focusAttributes } = (0, import_react_ui_editor.useTextEditor)(() => ({
150
+ initialValue,
151
+ extensions: [
152
+ formattingObserver,
153
+ (0, import_react_ui_editor.createBasicExtensions)({
154
+ readOnly: viewMode === "readonly",
155
+ placeholder: t("editor placeholder"),
156
+ scrollPastEnd: role === "section" ? false : scrollPastEnd
157
+ }),
158
+ (0, import_react_ui_editor.createMarkdownExtensions)({
159
+ themeMode
160
+ }),
161
+ (0, import_react_ui_editor.createThemeExtensions)({
162
+ themeMode,
163
+ syntaxHighlighting: true,
164
+ slots: import_react_ui_editor.editorSlots
165
+ }),
166
+ import_react_ui_editor.editorGutter,
167
+ role !== "section" && onFileUpload && (0, import_react_ui_editor.dropFile)({
168
+ onDrop: handleDrop
169
+ }),
170
+ providerExtensions,
171
+ extensions
172
+ ].filter(import_util.isNotFalsy),
173
+ ...role !== "section" && {
174
+ id,
175
+ scrollTo,
176
+ selection,
177
+ // TODO(wittjosiah): Autofocus based on layout is racy.
178
+ // autoFocus: layoutPlugin?.provides.layout ? layoutPlugin?.provides.layout.scrollIntoView === id : true,
179
+ moveToEndOfLine: true
180
+ }
181
+ }), [
182
+ id,
183
+ formattingObserver,
184
+ viewMode,
185
+ themeMode,
186
+ extensions,
187
+ providerExtensions
188
+ ]);
189
+ useTest(editorView);
190
+ useSelectCurrentThread(editorView, id);
191
+ const { acceptedFiles, getInputProps, open } = (0, import_react_dropzone.useDropzone)({
192
+ multiple: false,
193
+ noDrag: true,
194
+ accept: {
195
+ "image/*": [
196
+ ".jpg",
197
+ ".jpeg",
198
+ ".png",
199
+ ".gif"
200
+ ]
201
+ }
202
+ });
203
+ (0, import_react2.useEffect)(() => {
204
+ if (editorView && onFileUpload && acceptedFiles.length) {
205
+ requestAnimationFrame(async () => {
206
+ const f = acceptedFiles[0];
207
+ const file = new File([
208
+ f
209
+ ], f.name, {
210
+ type: f.type,
211
+ lastModified: f.lastModified
212
+ });
213
+ const info = await onFileUpload(file);
214
+ if (info) {
215
+ (0, import_react_ui_editor.addLink)({
216
+ url: info.url,
217
+ image: true
218
+ })(editorView);
219
+ }
220
+ });
221
+ }
222
+ }, [
223
+ acceptedFiles,
224
+ editorView,
225
+ onFileUpload
226
+ ]);
227
+ const getView = (0, import_react2.useCallback)(() => {
228
+ (0, import_invariant.invariant)(editorView, void 0, {
229
+ F: __dxlog_file2,
230
+ L: 165,
231
+ S: void 0,
232
+ A: [
233
+ "editorView",
234
+ ""
235
+ ]
236
+ });
237
+ return editorView;
238
+ }, [
239
+ editorView
240
+ ]);
241
+ const handleViewModeChange = (0, import_react2.useCallback)((mode) => onViewModeChange?.(id, mode), [
242
+ id,
243
+ onViewModeChange
244
+ ]);
245
+ const handleImageUpload = (0, import_react2.useCallback)(() => {
246
+ if (onFileUpload) {
247
+ open();
248
+ }
249
+ }, [
250
+ onFileUpload
251
+ ]);
252
+ return /* @__PURE__ */ import_react2.default.createElement(import_react_ui_stack.StackItem.Content, {
253
+ toolbar: !!toolbar
254
+ }, toolbar && /* @__PURE__ */ import_react2.default.createElement(import_react2.default.Fragment, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_editor.EditorToolbar, {
255
+ attendableId: id,
256
+ role,
257
+ state: toolbarState,
258
+ customActions,
259
+ getView,
260
+ image: handleImageUpload,
261
+ viewMode: handleViewModeChange
262
+ }), /* @__PURE__ */ import_react2.default.createElement("input", getInputProps())), /* @__PURE__ */ import_react2.default.createElement("div", {
263
+ role: "none",
264
+ ref: parentRef,
265
+ "data-testid": "composer.markdownRoot",
266
+ "data-toolbar": toolbar ? "enabled" : "disabled",
267
+ className: (0, import_react_ui_editor.stackItemContentEditorClassNames)(role),
268
+ "data-popover-collision-boundary": true,
269
+ ...focusAttributes
270
+ }));
271
+ } finally {
272
+ _effect.f();
273
+ }
274
+ };
275
+ var useTest = (view) => {
276
+ (0, import_react2.useEffect)(() => {
277
+ const composer = window.composer;
278
+ if (composer) {
279
+ composer.editorView = view;
280
+ }
281
+ }, [
282
+ view
283
+ ]);
284
+ };
285
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-markdown/src/extensions.tsx";
286
+ var useExtensions = ({ document, id, text, settings, selectionManager, viewMode, editorStateStore }) => {
287
+ const { dispatchPromise: dispatch } = (0, import_app_framework3.useIntentDispatcher)();
288
+ const identity = (0, import_halo.useIdentity)();
289
+ const space = (0, import_echo2.getSpace)(document) ?? (0, import_echo2.getSpace)(text);
290
+ const baseExtensions = (0, import_react4.useMemo)(() => createBaseExtensions({
291
+ document,
292
+ id,
293
+ text,
294
+ settings,
295
+ selectionManager,
296
+ viewMode,
297
+ dispatch
298
+ }), [
299
+ document,
300
+ id,
301
+ text,
302
+ viewMode,
303
+ dispatch,
304
+ settings,
305
+ settings.editorInputMode,
306
+ settings.folding,
307
+ settings.numberedHeadings,
308
+ settings.debug,
309
+ settings.typewriter,
310
+ selectionManager
311
+ ]);
312
+ const extensionProviders = (0, import_app_framework3.useCapabilities)(import_chunk_IFYSBQE5.MarkdownCapabilities.Extensions);
313
+ const pluginExtensions = (0, import_react4.useMemo)(() => {
314
+ if (!document) {
315
+ return [];
316
+ }
317
+ return extensionProviders.flat().reduce((acc, provider) => {
318
+ const extension = typeof provider === "function" ? provider({
319
+ document
320
+ }) : provider;
321
+ if (extension) {
322
+ acc.push(extension);
323
+ }
324
+ return acc;
325
+ }, []);
326
+ }, [
327
+ extensionProviders,
328
+ document
329
+ ]);
330
+ return (0, import_react4.useMemo)(() => [
331
+ // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
332
+ document && (0, import_react_ui_editor3.createDataExtensions)({
333
+ id: document.id,
334
+ text: document.content.target && (0, import_echo2.createDocAccessor)(document.content.target, [
335
+ "content"
336
+ ]),
337
+ space,
338
+ identity
339
+ }),
340
+ text && id && (0, import_react_ui_editor3.createDataExtensions)({
341
+ id,
342
+ text: (0, import_echo2.createDocAccessor)(text, [
343
+ "content"
344
+ ]),
345
+ space,
346
+ identity
347
+ }),
348
+ (0, import_react_ui_editor3.selectionState)(editorStateStore),
349
+ document && (0, import_react_ui_editor3.listener)({
350
+ onChange: (text2) => (0, import_chunk_G7RBJX22.setFallbackName)(document, text2)
351
+ }),
352
+ baseExtensions,
353
+ pluginExtensions
354
+ ].filter(import_util2.isNotFalsy), [
355
+ baseExtensions,
356
+ pluginExtensions,
357
+ document,
358
+ document?.content?.target,
359
+ text,
360
+ id,
361
+ space,
362
+ identity
363
+ ]);
364
+ };
365
+ var createBaseExtensions = ({ document, id, dispatch, settings, selectionManager, query, viewMode }) => {
366
+ const extensions = [
367
+ selectionManager && selectionChange(selectionManager),
368
+ settings.editorInputMode && import_react_ui_editor3.InputModeExtensions[settings.editorInputMode],
369
+ settings.folding && (0, import_react_ui_editor3.folding)()
370
+ ].filter(import_util2.isNotFalsy);
371
+ if (viewMode !== "source") {
372
+ extensions.push(...[
373
+ (0, import_react_ui_editor3.formattingKeymap)(),
374
+ (0, import_react_ui_editor3.decorateMarkdown)({
375
+ selectionChangeDelay: 100,
376
+ numberedHeadings: settings.numberedHeadings ? {
377
+ from: 2
378
+ } : void 0,
379
+ // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
380
+ renderLinkButton: dispatch && (document || id) ? createLinkRenderer((id2) => {
381
+ void dispatch((0, import_app_framework3.createIntent)(import_app_framework3.LayoutAction.Open, {
382
+ part: "main",
383
+ subject: [
384
+ id2
385
+ ],
386
+ options: {
387
+ pivotId: document ? (0, import_echo2.fullyQualifiedId)(document) : id2
388
+ }
389
+ }));
390
+ }) : void 0
391
+ }),
392
+ (0, import_react_ui_editor3.linkTooltip)(renderLinkTooltip),
393
+ (0, import_react_ui_editor3.preview)()
394
+ ]);
395
+ }
396
+ if (query) {
397
+ extensions.push((0, import_react_ui_editor3.autocomplete)({
398
+ onSearch: (text) => {
399
+ return query.objects.map((object) => object.name?.length && object.id !== document?.id ? {
400
+ label: object.name,
401
+ // TODO(burdon): Factor out URL builder.
402
+ apply: `[${object.name}](/${(0, import_echo2.fullyQualifiedId)(object)})`
403
+ } : void 0).filter(import_util2.isNotFalsy);
404
+ }
405
+ }));
406
+ }
407
+ if (settings.debug) {
408
+ const items = settings.typewriter?.split(/[,\n]/) ?? "";
409
+ if (items) {
410
+ extensions.push((0, import_react_ui_editor3.typewriter)({
411
+ items
412
+ }));
413
+ }
414
+ }
415
+ return extensions;
416
+ };
417
+ var selectionChange = (selectionManager) => {
418
+ return import_react_ui_editor3.EditorView.updateListener.of((update) => {
419
+ if (update.selectionSet) {
420
+ const id = update.state.facet(import_react_ui_editor3.documentId);
421
+ const cursorConverter = update.state.facet(import_react_ui_editor3.Cursor.converter);
422
+ const selection = update.state.selection;
423
+ const ranges = selection.ranges.map((range) => ({
424
+ from: cursorConverter.toCursor(range.from),
425
+ to: cursorConverter.toCursor(range.to)
426
+ })).filter(({ from, to }) => to > from);
427
+ selectionManager.updateMultiRange(id, ranges);
428
+ }
429
+ });
430
+ };
431
+ var style = {
432
+ hover: "rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400",
433
+ icon: "inline-block leading-none mis-1 cursor-pointer"
434
+ };
435
+ var createLinkRenderer = (onSelectObject) => (el, { url }) => {
436
+ const isInternal = url.startsWith("/") || // TODO(wittjosiah): This should probably be parsed out on paste?
437
+ url.startsWith(window.location.origin);
438
+ const options = isInternal ? {
439
+ onClick: () => {
440
+ const qualifiedId = url.split("/").at(-1);
441
+ (0, import_invariant3.invariant)(qualifiedId, "Invalid link format.", {
442
+ F: __dxlog_file3,
443
+ L: 281,
444
+ S: void 0,
445
+ A: [
446
+ "qualifiedId",
447
+ "'Invalid link format.'"
448
+ ]
449
+ });
450
+ onSelectObject(qualifiedId);
451
+ }
452
+ } : {
453
+ href: url,
454
+ rel: "noreferrer",
455
+ target: "_blank"
456
+ };
457
+ renderRoot(el, /* @__PURE__ */ import_react4.default.createElement("a", {
458
+ ...options,
459
+ className: style.hover
460
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Icon, {
461
+ icon: isInternal ? "ph--arrow-square-down--bold" : "ph--arrow-square-out--bold",
462
+ size: 4,
463
+ classNames: style.icon
464
+ })));
465
+ };
466
+ var renderLinkTooltip = (el, { url }) => {
467
+ const web = new URL(url);
468
+ renderRoot(el, /* @__PURE__ */ import_react4.default.createElement("a", {
469
+ href: url,
470
+ rel: "noreferrer",
471
+ target: "_blank",
472
+ className: style.hover
473
+ }, web.origin, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Icon, {
474
+ icon: "ph--arrow-square-out--bold",
475
+ size: 4,
476
+ classNames: style.icon
477
+ })));
478
+ };
479
+ var renderRoot = (root, node) => {
480
+ (0, import_client.createRoot)(root).render(/* @__PURE__ */ import_react4.default.createElement(import_react_ui2.ThemeProvider, {
481
+ tx: import_react_ui_theme.defaultTx
482
+ }, node));
483
+ return root;
484
+ };
485
+ var MarkdownContainer = ({ id, role, object, settings, selectionManager, viewMode, editorStateStore, onViewModeChange }) => {
486
+ var _effect = (0, import_tracking.useSignals)();
487
+ try {
488
+ const scrollPastEnd = role === "article";
489
+ const doc = (0, import_echo_schema.isInstanceOf)(import_chunk_RQS4KBMG.DocumentType, object) ? object : void 0;
490
+ const text = (0, import_echo_schema.isInstanceOf)(import_schema.DataType.Text, object) ? object : void 0;
491
+ const extensions = useExtensions({
492
+ document: doc,
493
+ text,
494
+ id,
495
+ settings,
496
+ selectionManager,
497
+ viewMode,
498
+ editorStateStore
499
+ });
500
+ if (doc) {
501
+ return /* @__PURE__ */ import_react.default.createElement(DocumentEditor, {
502
+ id: (0, import_echo.fullyQualifiedId)(object),
503
+ role,
504
+ document: doc,
505
+ extensions,
506
+ viewMode,
507
+ settings,
508
+ scrollPastEnd,
509
+ onViewModeChange
510
+ });
511
+ } else if (text) {
512
+ return /* @__PURE__ */ import_react.default.createElement(MarkdownEditor, {
513
+ id,
514
+ role,
515
+ initialValue: text.content,
516
+ extensions,
517
+ viewMode,
518
+ toolbar: settings.toolbar,
519
+ inputMode: settings.editorInputMode,
520
+ scrollPastEnd,
521
+ onViewModeChange
522
+ });
523
+ } else {
524
+ return /* @__PURE__ */ import_react.default.createElement(MarkdownEditor, {
525
+ id,
526
+ role,
527
+ initialValue: object.text,
528
+ extensions,
529
+ viewMode,
530
+ toolbar: settings.toolbar,
531
+ inputMode: settings.editorInputMode,
532
+ scrollPastEnd,
533
+ onViewModeChange
534
+ });
535
+ }
536
+ } finally {
537
+ _effect.f();
538
+ }
539
+ };
540
+ var DocumentEditor = ({ id, document: doc, settings, viewMode, ...props }) => {
541
+ var _effect = (0, import_tracking.useSignals)();
542
+ try {
543
+ const space = (0, import_echo.getSpace)(doc);
544
+ (0, import_react.useEffect)(() => {
545
+ if (typeof doc.fallbackName === "string") {
546
+ return;
547
+ }
548
+ const fallbackName = doc.content?.target?.content ? (0, import_chunk_G7RBJX22.getFallbackName)(doc.content.target.content) : void 0;
549
+ if (fallbackName) {
550
+ doc.fallbackName = fallbackName;
551
+ }
552
+ }, [
553
+ doc,
554
+ doc.content
555
+ ]);
556
+ const [upload] = (0, import_app_framework.useCapabilities)(import_app_framework.Capabilities.FileUploader);
557
+ const handleFileUpload = (0, import_react.useMemo)(() => {
558
+ if (space === void 0 || upload === void 0) {
559
+ return void 0;
560
+ }
561
+ return async (file) => upload(file, space);
562
+ }, [
563
+ space,
564
+ upload
565
+ ]);
566
+ const { graph } = (0, import_app_framework.useAppGraph)();
567
+ const customActions = (0, import_react.useMemo)(() => {
568
+ return import_rx_react.Rx.make((get) => {
569
+ const actions = get(graph.actions(id));
570
+ const nodes = actions.filter((action) => action.properties.disposition === "toolbar");
571
+ return {
572
+ nodes,
573
+ edges: nodes.map((node) => ({
574
+ source: "root",
575
+ target: node.id
576
+ }))
577
+ };
578
+ });
579
+ }, [
580
+ graph
581
+ ]);
582
+ return /* @__PURE__ */ import_react.default.createElement(MarkdownEditor, {
583
+ id,
584
+ initialValue: doc.content?.target?.content,
585
+ viewMode,
586
+ toolbar: settings.toolbar,
587
+ customActions,
588
+ inputMode: settings.editorInputMode,
589
+ onFileUpload: handleFileUpload,
590
+ ...props
591
+ });
592
+ } finally {
593
+ _effect.f();
594
+ }
595
+ };
596
+ var MarkdownContainer_default = MarkdownContainer;
597
+ // Annotate the CommonJS export names for ESM import in node:
598
+ 0 && (module.exports = {
599
+ DocumentEditor
600
+ });
601
+ //# sourceMappingURL=MarkdownContainer-BZK66EQD.cjs.map