@dxos/plugin-markdown 0.8.4-main.9be5663bfe → 0.8.4-main.abd8ff62ef

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 (208) hide show
  1. package/dist/lib/browser/blueprints/index.mjs +3 -4
  2. package/dist/lib/browser/blueprints/index.mjs.map +2 -2
  3. package/dist/lib/browser/{chunk-XKUKZNUS.mjs → chunk-DNSKDWUL.mjs} +4 -6
  4. package/dist/lib/browser/chunk-DNSKDWUL.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-46WIDM4R.mjs → chunk-SW6IK2GJ.mjs} +39 -13
  6. package/dist/lib/browser/chunk-SW6IK2GJ.mjs.map +7 -0
  7. package/dist/lib/browser/{create-HSXPXCC5.mjs → create-SRADQOTE.mjs} +4 -5
  8. package/dist/lib/browser/create-SRADQOTE.mjs.map +7 -0
  9. package/dist/lib/browser/{create-markdown-WB7DH3UF.mjs → create-markdown-A2ERCEOZ.mjs} +4 -5
  10. package/dist/lib/browser/create-markdown-A2ERCEOZ.mjs.map +7 -0
  11. package/dist/lib/browser/index.mjs +7 -545
  12. package/dist/lib/browser/index.mjs.map +4 -4
  13. package/dist/lib/browser/meta.json +1 -1
  14. package/dist/lib/browser/{open-N6PAX6DY.mjs → open-ANTKMST5.mjs} +4 -5
  15. package/dist/lib/browser/open-ANTKMST5.mjs.map +7 -0
  16. package/dist/lib/browser/operations/index.mjs +4 -5
  17. package/dist/lib/browser/operations/index.mjs.map +3 -3
  18. package/dist/lib/browser/{scroll-to-anchor-5M4F24AB.mjs → scroll-to-anchor-4RJ6MQ7I.mjs} +4 -5
  19. package/dist/lib/browser/scroll-to-anchor-4RJ6MQ7I.mjs.map +7 -0
  20. package/dist/lib/browser/{set-view-mode-NBNF2I5W.mjs → set-view-mode-2S7KKY7C.mjs} +4 -5
  21. package/dist/lib/browser/set-view-mode-2S7KKY7C.mjs.map +7 -0
  22. package/dist/lib/browser/types/index.mjs +1 -2
  23. package/dist/lib/browser/{update-5QIRVGTL.mjs → update-markdown-CPM5KOQW.mjs} +7 -8
  24. package/dist/lib/browser/update-markdown-CPM5KOQW.mjs.map +7 -0
  25. package/dist/lib/node-esm/blueprints/index.mjs +3 -4
  26. package/dist/lib/node-esm/blueprints/index.mjs.map +2 -2
  27. package/dist/lib/node-esm/{chunk-E4BQCEXF.mjs → chunk-MWYFGI2J.mjs} +4 -6
  28. package/dist/lib/node-esm/chunk-MWYFGI2J.mjs.map +7 -0
  29. package/dist/lib/node-esm/{chunk-4MSJO6IJ.mjs → chunk-ZE6QJ4S5.mjs} +39 -13
  30. package/dist/lib/node-esm/chunk-ZE6QJ4S5.mjs.map +7 -0
  31. package/dist/lib/node-esm/{create-6Z2KYISY.mjs → create-6JGQPPQ6.mjs} +4 -5
  32. package/dist/lib/node-esm/create-6JGQPPQ6.mjs.map +7 -0
  33. package/dist/lib/node-esm/{create-markdown-JWQZICKY.mjs → create-markdown-KXSM2I2M.mjs} +4 -5
  34. package/dist/lib/{browser/create-markdown-WB7DH3UF.mjs.map → node-esm/create-markdown-KXSM2I2M.mjs.map} +1 -1
  35. package/dist/lib/node-esm/index.mjs +7 -545
  36. package/dist/lib/node-esm/index.mjs.map +4 -4
  37. package/dist/lib/node-esm/meta.json +1 -1
  38. package/dist/lib/node-esm/{open-DSNFRSNZ.mjs → open-GB6HNBHS.mjs} +4 -5
  39. package/dist/lib/node-esm/open-GB6HNBHS.mjs.map +7 -0
  40. package/dist/lib/node-esm/operations/index.mjs +4 -5
  41. package/dist/lib/node-esm/operations/index.mjs.map +3 -3
  42. package/dist/lib/node-esm/{scroll-to-anchor-D6SHGU2R.mjs → scroll-to-anchor-UABP74RR.mjs} +4 -5
  43. package/dist/lib/{browser/scroll-to-anchor-5M4F24AB.mjs.map → node-esm/scroll-to-anchor-UABP74RR.mjs.map} +1 -1
  44. package/dist/lib/node-esm/{set-view-mode-REYB4L7J.mjs → set-view-mode-JEDC5ZL7.mjs} +4 -5
  45. package/dist/lib/{browser/set-view-mode-NBNF2I5W.mjs.map → node-esm/set-view-mode-JEDC5ZL7.mjs.map} +1 -1
  46. package/dist/lib/node-esm/types/index.mjs +1 -2
  47. package/dist/lib/node-esm/{update-YMQAIKOF.mjs → update-markdown-AXLYHK6S.mjs} +7 -8
  48. package/dist/lib/node-esm/update-markdown-AXLYHK6S.mjs.map +7 -0
  49. package/dist/types/src/MarkdownPlugin.d.ts +1 -0
  50. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  51. package/dist/types/src/{cli/plugin.d.ts → MarkdownPlugin.node.d.ts} +2 -1
  52. package/dist/types/src/MarkdownPlugin.node.d.ts.map +1 -0
  53. package/dist/types/src/MarkdownPlugin.test.d.ts +2 -0
  54. package/dist/types/src/MarkdownPlugin.test.d.ts.map +1 -0
  55. package/dist/types/src/blueprints/markdown-blueprint.d.ts +2 -2
  56. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -1
  57. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  58. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  59. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  60. package/dist/types/src/capabilities/blueprint-definition.d.ts +2 -2
  61. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  62. package/dist/types/src/capabilities/index.d.ts +3 -21
  63. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  64. package/dist/types/src/capabilities/node.d.ts +1 -1
  65. package/dist/types/src/capabilities/node.d.ts.map +1 -1
  66. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  67. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  68. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/settings.d.ts +1 -19
  70. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  71. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  72. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +14 -6
  73. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  74. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  75. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +2 -1
  76. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  77. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +2 -2
  78. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  79. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +1 -1
  80. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  81. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +46 -90
  82. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -1
  83. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -1
  84. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts +1 -1
  85. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -1
  86. package/dist/types/src/containers/MarkdownCard/MarkdownEditableCard.d.ts +15 -0
  87. package/dist/types/src/containers/MarkdownCard/MarkdownEditableCard.d.ts.map +1 -0
  88. package/dist/types/src/containers/MarkdownCard/index.d.ts +1 -0
  89. package/dist/types/src/containers/MarkdownCard/index.d.ts.map +1 -1
  90. package/dist/types/src/containers/MarkdownCard/snippet.d.ts +7 -5
  91. package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -1
  92. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts +4 -4
  93. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +1 -1
  94. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts +70 -72
  95. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +1 -1
  96. package/dist/types/src/containers/index.d.ts +1 -0
  97. package/dist/types/src/containers/index.d.ts.map +1 -1
  98. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -1
  99. package/dist/types/src/hooks/useExtensions.d.ts +3 -1
  100. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  101. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  102. package/dist/types/src/index.d.ts +2 -3
  103. package/dist/types/src/index.d.ts.map +1 -1
  104. package/dist/types/src/operations/create-markdown.d.ts +1 -1
  105. package/dist/types/src/operations/create-markdown.d.ts.map +1 -1
  106. package/dist/types/src/operations/create.d.ts +1 -1
  107. package/dist/types/src/operations/create.d.ts.map +1 -1
  108. package/dist/types/src/operations/definitions.d.ts +2 -2
  109. package/dist/types/src/operations/definitions.d.ts.map +1 -1
  110. package/dist/types/src/operations/index.d.ts +1 -1
  111. package/dist/types/src/operations/index.d.ts.map +1 -1
  112. package/dist/types/src/operations/open.d.ts +1 -1
  113. package/dist/types/src/operations/open.d.ts.map +1 -1
  114. package/dist/types/src/operations/scroll-to-anchor.d.ts +1 -1
  115. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -1
  116. package/dist/types/src/operations/set-view-mode.d.ts +1 -1
  117. package/dist/types/src/operations/set-view-mode.d.ts.map +1 -1
  118. package/dist/types/src/operations/{update.d.ts → update-markdown.d.ts} +2 -2
  119. package/dist/types/src/operations/update-markdown.d.ts.map +1 -0
  120. package/dist/types/src/testing.d.ts.map +1 -1
  121. package/dist/types/src/translations.d.ts +70 -73
  122. package/dist/types/src/translations.d.ts.map +1 -1
  123. package/dist/types/src/types/Markdown.d.ts +8 -8
  124. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  125. package/dist/types/src/types/Settings.d.ts +10 -9
  126. package/dist/types/src/types/Settings.d.ts.map +1 -1
  127. package/dist/types/src/types/capabilities.d.ts +3 -20
  128. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  129. package/dist/types/src/types/events.d.ts.map +1 -1
  130. package/dist/types/src/types/types.d.ts +1 -0
  131. package/dist/types/src/types/types.d.ts.map +1 -1
  132. package/dist/types/src/util.d.ts.map +1 -1
  133. package/dist/types/tsconfig.tsbuildinfo +1 -1
  134. package/package.json +60 -73
  135. package/src/{cli/plugin.ts → MarkdownPlugin.node.ts} +4 -2
  136. package/src/MarkdownPlugin.test.ts +26 -0
  137. package/src/MarkdownPlugin.tsx +6 -4
  138. package/src/blueprints/markdown-blueprint.ts +2 -3
  139. package/src/capabilities/app-graph-serializer.ts +1 -2
  140. package/src/capabilities/artifact-definition.ts +1 -1
  141. package/src/capabilities/blueprint-definition.ts +2 -0
  142. package/src/capabilities/index.ts +2 -1
  143. package/src/capabilities/node.ts +1 -1
  144. package/src/capabilities/operation-handler.ts +1 -1
  145. package/src/capabilities/react-surface.tsx +15 -8
  146. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +3 -2
  147. package/src/components/MarkdownEditor/MarkdownEditor.tsx +4 -4
  148. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +3 -3
  149. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +4 -15
  150. package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +2 -1
  151. package/src/components/MarkdownSettings/MarkdownSettings.tsx +16 -119
  152. package/src/containers/MarkdownCard/MarkdownCard.stories.tsx +3 -2
  153. package/src/containers/MarkdownCard/MarkdownCard.tsx +13 -7
  154. package/src/containers/MarkdownCard/MarkdownEditableCard.tsx +42 -0
  155. package/src/containers/MarkdownCard/index.ts +1 -0
  156. package/src/containers/MarkdownCard/snippet.ts +27 -51
  157. package/src/containers/MarkdownContainer/MarkdownContainer.stories.tsx +4 -3
  158. package/src/containers/MarkdownContainer/MarkdownContainer.tsx +5 -4
  159. package/src/containers/index.ts +3 -0
  160. package/src/hooks/useExtensions.tsx +7 -8
  161. package/src/index.ts +5 -4
  162. package/src/operations/create-markdown.ts +1 -1
  163. package/src/operations/create.conversations.json +1 -1
  164. package/src/operations/create.test.ts +4 -5
  165. package/src/operations/create.ts +1 -1
  166. package/src/operations/definitions.ts +1 -1
  167. package/src/operations/index.ts +2 -2
  168. package/src/operations/open.ts +1 -1
  169. package/src/operations/scroll-to-anchor.ts +1 -1
  170. package/src/operations/set-view-mode.ts +1 -1
  171. package/src/operations/{update.ts → update-markdown.ts} +1 -1
  172. package/src/operations/update.conversations.json +1 -1
  173. package/src/operations/update.test.ts +4 -5
  174. package/src/translations.ts +2 -26
  175. package/src/types/Settings.ts +47 -10
  176. package/src/types/capabilities.ts +2 -1
  177. package/src/types/types.ts +4 -1
  178. package/src/util.tsx +1 -1
  179. package/dist/lib/browser/MarkdownSettings-YZFNSJJY.mjs +0 -121
  180. package/dist/lib/browser/MarkdownSettings-YZFNSJJY.mjs.map +0 -7
  181. package/dist/lib/browser/chunk-46WIDM4R.mjs.map +0 -7
  182. package/dist/lib/browser/chunk-J5LGTIGS.mjs +0 -10
  183. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +0 -7
  184. package/dist/lib/browser/chunk-XKUKZNUS.mjs.map +0 -7
  185. package/dist/lib/browser/cli/index.mjs +0 -39
  186. package/dist/lib/browser/cli/index.mjs.map +0 -7
  187. package/dist/lib/browser/create-HSXPXCC5.mjs.map +0 -7
  188. package/dist/lib/browser/open-N6PAX6DY.mjs.map +0 -7
  189. package/dist/lib/browser/update-5QIRVGTL.mjs.map +0 -7
  190. package/dist/lib/node-esm/MarkdownSettings-X6SDS35F.mjs +0 -122
  191. package/dist/lib/node-esm/MarkdownSettings-X6SDS35F.mjs.map +0 -7
  192. package/dist/lib/node-esm/chunk-4MSJO6IJ.mjs.map +0 -7
  193. package/dist/lib/node-esm/chunk-E4BQCEXF.mjs.map +0 -7
  194. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  195. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
  196. package/dist/lib/node-esm/cli/index.mjs +0 -40
  197. package/dist/lib/node-esm/cli/index.mjs.map +0 -7
  198. package/dist/lib/node-esm/create-6Z2KYISY.mjs.map +0 -7
  199. package/dist/lib/node-esm/create-markdown-JWQZICKY.mjs.map +0 -7
  200. package/dist/lib/node-esm/open-DSNFRSNZ.mjs.map +0 -7
  201. package/dist/lib/node-esm/scroll-to-anchor-D6SHGU2R.mjs.map +0 -7
  202. package/dist/lib/node-esm/set-view-mode-REYB4L7J.mjs.map +0 -7
  203. package/dist/lib/node-esm/update-YMQAIKOF.mjs.map +0 -7
  204. package/dist/types/src/cli/index.d.ts +0 -2
  205. package/dist/types/src/cli/index.d.ts.map +0 -1
  206. package/dist/types/src/cli/plugin.d.ts.map +0 -1
  207. package/dist/types/src/operations/update.d.ts.map +0 -1
  208. package/src/cli/index.ts +0 -5
@@ -5,8 +5,10 @@ import {
5
5
  MarkdownStateSchema,
6
6
  Markdown_exports,
7
7
  Settings_exports
8
- } from "./chunk-4MSJO6IJ.mjs";
9
- import "./chunk-HSLMI22Q.mjs";
8
+ } from "./chunk-ZE6QJ4S5.mjs";
9
+
10
+ // src/index.ts
11
+ import { Plugin } from "@dxos/app-framework";
10
12
 
11
13
  // src/meta.ts
12
14
  import { trim } from "@dxos/util";
@@ -90,7 +92,7 @@ var getContentSnippet = (content = "", maxLines = 3) => {
90
92
  var setFallbackName = debounce((doc, content = "") => {
91
93
  const name = getFallbackName(content);
92
94
  if (doc.fallbackName !== name) {
93
- Obj.change(doc, (doc2) => {
95
+ Obj.update(doc, (doc2) => {
94
96
  doc2.fallbackName = name;
95
97
  });
96
98
  }
@@ -114,551 +116,11 @@ var serializer = {
114
116
  }
115
117
  };
116
118
 
117
- // src/MarkdownPlugin.tsx
118
- import * as Effect from "effect/Effect";
119
- import * as Option from "effect/Option";
120
- import { Plugin } from "@dxos/app-framework";
121
- import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
122
- import { Annotation, Ref } from "@dxos/echo";
123
- import { createDocAccessor, getTextInRange } from "@dxos/echo-db";
124
- import { Operation } from "@dxos/operation";
125
- import { SpaceOperation } from "@dxos/plugin-space/operations";
126
- import { translations as editorTranslations2 } from "@dxos/react-ui-editor";
127
- import { Text } from "@dxos/schema";
128
- import { MarkdownBlueprint } from "#blueprints";
129
- import { AnchorSort, AppGraphSerializer, BlueprintDefinition, MarkdownSettings, MarkdownState, OperationHandler, ReactSurface } from "#capabilities";
130
- import { meta as meta3 } from "#meta";
131
- import { MarkdownOperation } from "#operations";
132
- import { Markdown as Markdown3, MarkdownEvents as MarkdownEvents2 } from "#types";
133
-
134
- // src/translations.ts
135
- import { translations as editorTranslations } from "@dxos/react-ui-editor";
136
- import { meta as meta2 } from "#meta";
137
- import { Markdown as Markdown2 } from "#types";
138
- var translations = [
139
- {
140
- "en-US": {
141
- [Markdown2.Document.typename]: {
142
- "typename.label": "Document",
143
- "typename.label_zero": "Documents",
144
- "typename.label_one": "Document",
145
- "typename.label_other": "Documents",
146
- "object-name.placeholder": "New document",
147
- "add-object.label": "Add document",
148
- "rename-object.label": "Rename document",
149
- "delete-object.label": "Delete document",
150
- "object-deleted.label": "Document deleted"
151
- },
152
- [meta2.id]: {
153
- "plugin.name": "Editor",
154
- "settings.title": "Editor settings",
155
- "choose-markdown-from-space-dialog.title": "Choose one or more documents to add",
156
- // TODO(burdon): Style-guide for user-facing text (e.g., hints, questions, capitalization, etc.)
157
- "empty-choose-markdown-from-space.message": "None available; try creating a new one instead?",
158
- "chooser-done.label": "Add selected",
159
- "editor.placeholder": "Start typing\u2026",
160
- "editor-input-mode.label": "Editor input mode",
161
- "editor-input-mode.description": "Choose keyboard bindings for the editor.",
162
- "select-editor-input-mode.placeholder": "Select editor input mode\u2026",
163
- "settings.editor-input-mode.default.label": "Default",
164
- "settings.editor-input-mode.vim.label": "Vim",
165
- "settings.editor-input-mode.vscode.label": "VS Code",
166
- "settings.toolbar.label": "Show toolbar",
167
- "settings.toolbar.description": "Display a formatting toolbar above the editor.",
168
- "settings.numbered-headings.label": "Numbered headings",
169
- "settings.numbered-headings.description": "Automatically number heading levels in the document.",
170
- "settings.folding.label": "Folding",
171
- "settings.folding.description": "Allow collapsing and expanding sections by heading.",
172
- "settings.experimental.label": "Enable experimental features",
173
- "settings.experimental.description": "Turn on features that are still in development.",
174
- "settings.debug.label": "Enable debugging features",
175
- "settings.debug.description": "Show developer tools and diagnostics for the editor.",
176
- "settings.debug-typewriter.label": "Typewriter script",
177
- "settings.debug-typewriter.description": "Script to replay typed input for testing purposes.",
178
- "settings.debug-typewriter.placeholder": "Typewriter script...",
179
- "toggle-view-mode.label": "Toggle read-only",
180
- "default-view-mode.label": "Default view mode",
181
- "default-view-mode.description": "Set whether documents open in editing or read-only mode.",
182
- "upload-image.label": "Upload image",
183
- "fallback.title": "Untitled",
184
- "navigate-to-document.label": "Open document",
185
- "words.label": "words",
186
- "words.label_zero": "words",
187
- "words.label_one": "word",
188
- "words.label_other": "words"
189
- }
190
- }
191
- },
192
- ...editorTranslations
193
- ];
194
-
195
- // src/MarkdownPlugin.tsx
196
- var MarkdownPlugin = Plugin.define(meta3).pipe(AppPlugin.addBlueprintDefinitionModule({
197
- activate: BlueprintDefinition
198
- }), AppPlugin.addMetadataModule({
199
- metadata: {
200
- id: Markdown3.Document.typename,
201
- metadata: {
202
- // TODO(dmaretskyi): Remove label, icon and iconHue and query them of schema.
203
- label: (object) => object.name || object.fallbackName,
204
- icon: Annotation.IconAnnotation.get(Markdown3.Document).pipe(Option.getOrThrow).icon,
205
- iconHue: Annotation.IconAnnotation.get(Markdown3.Document).pipe(Option.getOrThrow).hue ?? "white",
206
- blueprints: [
207
- MarkdownBlueprint.key
208
- ],
209
- graphProps: {
210
- managesAutofocus: true
211
- },
212
- // TODO(wittjosiah): Move out of metadata.
213
- loadReferences: async (doc) => await Ref.Array.loadAll([
214
- doc.content
215
- ]),
216
- serializer,
217
- // TODO(wittjosiah): Consider how to do generic comments without these.
218
- comments: "anchored",
219
- selectionMode: "multi-range",
220
- getAnchorLabel: (doc, anchor) => {
221
- if (doc.content) {
222
- const [start, end] = anchor.split(":");
223
- return getTextInRange(createDocAccessor(doc.content.target, [
224
- "content"
225
- ]), start, end);
226
- }
227
- },
228
- createObject: (props, options) => Effect.gen(function* () {
229
- const object = Markdown3.make(props);
230
- return yield* Operation.invoke(SpaceOperation.AddObject, {
231
- object,
232
- target: options.target,
233
- hidden: true,
234
- targetNodeId: options.targetNodeId
235
- });
236
- }),
237
- scrollToAnchor: MarkdownOperation.ScrollToAnchor
238
- }
239
- }
240
- }), AppPlugin.addOperationHandlerModule({
241
- activate: OperationHandler
242
- }), AppPlugin.addSchemaModule({
243
- schema: [
244
- Markdown3.Document,
245
- Text.Text
246
- ]
247
- }), AppPlugin.addSurfaceModule({
248
- activate: ReactSurface,
249
- activatesBefore: [
250
- MarkdownEvents2.SetupExtensions
251
- ]
252
- }), AppPlugin.addTranslationsModule({
253
- translations: [
254
- ...translations,
255
- ...editorTranslations2
256
- ]
257
- }), Plugin.addModule({
258
- activatesOn: AppActivationEvents.SetupSettings,
259
- activate: MarkdownSettings
260
- }), Plugin.addModule({
261
- id: "state",
262
- // TODO(wittjosiah): Does not integrate with settings store.
263
- // Should this be a different event?
264
- // Should settings store be renamed to be more generic?
265
- activatesOn: AppActivationEvents.SetupSettings,
266
- activate: MarkdownState
267
- }), Plugin.addModule({
268
- activatesOn: AppActivationEvents.AppGraphReady,
269
- activate: AppGraphSerializer
270
- }), Plugin.addModule({
271
- // TODO(wittjosiah): More relevant event?
272
- activatesOn: AppActivationEvents.AppGraphReady,
273
- activate: AnchorSort
274
- }), Plugin.make);
275
-
276
- // src/components/index.ts
277
- import { lazy } from "react";
278
-
279
- // src/components/MarkdownEditor/MarkdownEditor.tsx
280
- import { createContext } from "@radix-ui/react-context";
281
- import React4, { useCallback as useCallback3, useMemo as useMemo2, useState as useState2 } from "react";
282
- import { createPortal as createPortal2 } from "react-dom";
283
- import { Surface } from "@dxos/app-framework/ui";
284
- import { Obj as Obj2 } from "@dxos/echo";
285
- import { DXN } from "@dxos/keys";
286
- import { useClient } from "@dxos/react-client";
287
- import { createEditorController, useEditorContext } from "@dxos/react-ui-editor";
288
- import { composable as composable2, composableProps as composableProps2 } from "@dxos/ui-theme";
289
- import { isNonNullable } from "@dxos/util";
290
- import { useEditorMenuOptions, useExtensions } from "#hooks";
291
-
292
- // src/components/MarkdownEditor/MarkdownEditorContent.tsx
293
- import { RegistryContext } from "@effect-atom/atom-react";
294
- import React, { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo } from "react";
295
- import { useCapabilities } from "@dxos/app-framework/ui";
296
- import { useThemeContext, useTranslation } from "@dxos/react-ui";
297
- import { useTextEditor } from "@dxos/react-ui-editor";
298
- import { compactSlots, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, documentSlots, formattingListener, processEditorPayload, editorClassNames } from "@dxos/ui-editor";
299
- import { mx } from "@dxos/ui-theme";
300
- import { isTruthy } from "@dxos/util";
301
- import { meta as meta4 } from "#meta";
302
- import { MarkdownCapabilities as MarkdownCapabilities2 } from "#types";
303
- var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attendableId, role, compact, viewMode, initialValue, editorStateStore, toolbarState, extensions, slots, onFileUpload }, forwardedRef) => {
304
- const { t } = useTranslation(meta4.id);
305
- const { themeMode } = useThemeContext();
306
- const registry = useContext(RegistryContext);
307
- const updateToolbarState = useCallback((formatting) => {
308
- if (toolbarState) {
309
- registry.set(toolbarState, {
310
- ...registry.get(toolbarState),
311
- ...formatting
312
- });
313
- }
314
- }, [
315
- registry,
316
- toolbarState
317
- ]);
318
- const { scrollTo, selection } = useMemo(() => editorStateStore?.getState(id) ?? {}, [
319
- id
320
- ]);
321
- const { parentRef, view: editorView, focusAttributes } = useTextEditor(() => ({
322
- ...role !== "section" && {
323
- id,
324
- scrollTo,
325
- selection,
326
- selectionEnd: true
327
- },
328
- initialValue,
329
- extensions: [
330
- createBasicExtensions({
331
- readOnly: viewMode === "readonly",
332
- placeholder: t("editor.placeholder"),
333
- scrollPastEnd: !compact,
334
- search: true
335
- }),
336
- createThemeExtensions({
337
- themeMode,
338
- slots: slots ?? (compact ? compactSlots : documentSlots),
339
- syntaxHighlighting: true
340
- }),
341
- createMarkdownExtensions(),
342
- toolbarState && formattingListener(updateToolbarState),
343
- role !== "section" && onFileUpload && dropFile({
344
- // TODO(wittjosiah): Factor out to file uploader plugin.
345
- onDrop: async (view, { files }) => {
346
- const file = files[0];
347
- const info = file && onFileUpload ? await onFileUpload(file) : void 0;
348
- if (info) {
349
- processEditorPayload(view, {
350
- type: "image",
351
- data: info.url
352
- });
353
- }
354
- }
355
- }),
356
- extensions
357
- ].filter(isTruthy)
358
- }), [
359
- id,
360
- viewMode,
361
- themeMode,
362
- extensions
363
- ]);
364
- useImperativeHandle(forwardedRef, () => editorView, [
365
- editorView
366
- ]);
367
- const [editorViewRegistry] = useCapabilities(MarkdownCapabilities2.EditorViews);
368
- useEffect(() => {
369
- if (editorView && editorViewRegistry) {
370
- editorViewRegistry.register(attendableId ?? id, editorView, id);
371
- return () => editorViewRegistry.unregister(attendableId ?? id);
372
- }
373
- }, [
374
- editorView,
375
- editorViewRegistry,
376
- attendableId,
377
- id
378
- ]);
379
- useTest(editorView);
380
- return /* @__PURE__ */ React.createElement("div", {
381
- ...focusAttributes,
382
- className: mx(editorClassNames(role), classNames),
383
- role: "none",
384
- "data-testid": "composer.markdownRoot",
385
- "data-popover-collision-boundary": true,
386
- ref: parentRef
387
- });
388
- });
389
- var useTest = (view) => {
390
- useEffect(() => {
391
- const composer = window.composer;
392
- if (composer) {
393
- composer.editorView = view;
394
- }
395
- }, [
396
- view
397
- ]);
398
- };
399
-
400
- // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
401
- import React3, { useCallback as useCallback2, useState } from "react";
402
- import { invariant } from "@dxos/invariant";
403
- import { EditorToolbar } from "@dxos/react-ui-editor";
404
- import { composable, composableProps } from "@dxos/ui-theme";
405
-
406
- // src/components/MarkdownEditor/FileUpload.tsx
407
- import React2, { forwardRef as forwardRef2, useEffect as useEffect2, useImperativeHandle as useImperativeHandle2 } from "react";
408
- import { createPortal } from "react-dom";
409
- import { useDropzone } from "react-dropzone";
410
- import { addLink } from "@dxos/ui-editor";
411
- var IMAGE_FILES = [
412
- ".jpg",
413
- ".jpeg",
414
- ".png",
415
- ".gif"
416
- ];
417
- var FileUpload = /* @__PURE__ */ forwardRef2(({ editorView, onFileUpload }, forwardedRef) => {
418
- const { acceptedFiles, open, inputRef } = useDropzone({
419
- disabled: !onFileUpload,
420
- multiple: false,
421
- noDrag: true,
422
- accept: {
423
- "image/*": IMAGE_FILES
424
- }
425
- });
426
- useImperativeHandle2(forwardedRef, () => open, []);
427
- useEffect2(() => {
428
- if (editorView && acceptedFiles.length && onFileUpload) {
429
- requestAnimationFrame(async () => {
430
- const f = acceptedFiles[0];
431
- const file = new File([
432
- f
433
- ], f.name, {
434
- type: f.type,
435
- lastModified: f.lastModified
436
- });
437
- const info = await onFileUpload(file);
438
- if (info) {
439
- addLink({
440
- url: info.url,
441
- image: true
442
- })(editorView);
443
- }
444
- });
445
- }
446
- }, [
447
- editorView,
448
- acceptedFiles,
449
- onFileUpload
450
- ]);
451
- if (!onFileUpload) {
452
- return null;
453
- }
454
- return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ createPortal(/* @__PURE__ */ React2.createElement("input", {
455
- ref: inputRef
456
- }), document.body), " ");
457
- });
458
-
459
- // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
460
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx";
461
- var MarkdownEditorToolbar = composable(({ id, role, state, editorView, customActions, onAction, onFileUpload, onViewModeChange, ...props }, forwardedRef) => {
462
- const { className, ...rest } = composableProps(props);
463
- const [upload, setUpload] = useState(null);
464
- const uploadRef = useCallback2((next) => setUpload(() => next), []);
465
- const getView = useCallback2(() => {
466
- invariant(editorView, void 0, {
467
- F: __dxlog_file,
468
- L: 31,
469
- S: void 0,
470
- A: [
471
- "editorView",
472
- ""
473
- ]
474
- });
475
- return editorView;
476
- }, [
477
- editorView
478
- ]);
479
- if (!editorView) {
480
- return /* @__PURE__ */ React3.createElement("div", {
481
- className,
482
- ...rest,
483
- ref: forwardedRef
484
- });
485
- }
486
- return /* @__PURE__ */ React3.createElement("div", {
487
- role: "none",
488
- className: "contents",
489
- ref: forwardedRef
490
- }, /* @__PURE__ */ React3.createElement(EditorToolbar, {
491
- ...rest,
492
- classNames: className,
493
- attendableId: id,
494
- role,
495
- state,
496
- customActions,
497
- getView,
498
- onAction,
499
- onImageUpload: upload ?? void 0,
500
- onViewModeChange
501
- }), onFileUpload && /* @__PURE__ */ React3.createElement(FileUpload, {
502
- ref: uploadRef,
503
- editorView,
504
- onFileUpload
505
- }));
506
- });
507
-
508
- // src/components/MarkdownEditor/MarkdownEditor.tsx
509
- var [MarkdownEditorContextProvider, useMarkdownEditorContext] = createContext("MarkdownEditor.Context");
510
- var MarkdownEditorProvider = ({ children, id, attendableId, object, settings, compact, viewMode, selectionManager, editorStateStore, extensions: extensionsProp, slashCommandGroups, onLinkQuery, onSelectObject, onAction, onFileUpload, onViewModeChange }) => {
511
- const [previewBlocks, setPreviewBlocks] = useState2([]);
512
- const previewOptions = useMemo2(() => ({
513
- db: Obj2.isObject(object) ? Obj2.getDatabase(object) : void 0,
514
- addBlockContainer: (block) => {
515
- setPreviewBlocks((prev) => [
516
- ...prev,
517
- block
518
- ]);
519
- },
520
- removeBlockContainer: ({ link }) => {
521
- setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== link.dxn));
522
- }
523
- }), [
524
- object
525
- ]);
526
- const menuOptions = useEditorMenuOptions({
527
- slashCommandGroups,
528
- onLinkQuery
529
- });
530
- const coreExtensions = useExtensions({
531
- id,
532
- object,
533
- compact,
534
- viewMode,
535
- selectionManager,
536
- editorStateStore,
537
- previewOptions,
538
- settings,
539
- onSelectObject
540
- });
541
- const extensions = useMemo2(() => [
542
- coreExtensions,
543
- extensionsProp
544
- ].filter(isNonNullable).flat(), [
545
- coreExtensions,
546
- extensionsProp
547
- ]);
548
- const editorRootProps = useMemo2(() => ({
549
- extensions,
550
- viewMode,
551
- getMenu: menuOptions.getMenu,
552
- trigger: menuOptions.trigger,
553
- placeholder: menuOptions.placeholder,
554
- ...menuOptions.filter !== void 0 ? {
555
- filter: menuOptions.filter
556
- } : {},
557
- ...menuOptions.triggerKey !== void 0 ? {
558
- triggerKey: menuOptions.triggerKey
559
- } : {}
560
- }), [
561
- extensions,
562
- viewMode,
563
- menuOptions
564
- ]);
565
- const markdownContextValue = useMemo2(() => ({
566
- id,
567
- attendableId,
568
- compact,
569
- viewMode,
570
- previewBlocks,
571
- onAction,
572
- onFileUpload,
573
- onViewModeChange
574
- }), [
575
- id,
576
- attendableId,
577
- compact,
578
- viewMode,
579
- previewBlocks,
580
- onAction,
581
- onFileUpload,
582
- onViewModeChange
583
- ]);
584
- return /* @__PURE__ */ React4.createElement(MarkdownEditorContextProvider, markdownContextValue, children(editorRootProps));
585
- };
586
- MarkdownEditorProvider.displayName = "MarkdownEditor.Provider";
587
- var MARKDOWN_EDITOR_CONTENT_NAME = "MarkdownEditor.Content";
588
- var MarkdownEditorContent2 = composable2(({ ...props }, _forwardedRef) => {
589
- const { id, attendableId, compact, viewMode, onFileUpload } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
590
- const { extensions, setController, state } = useEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
591
- const handleRef = useCallback3((view) => {
592
- setController(createEditorController(view));
593
- }, [
594
- setController
595
- ]);
596
- return /* @__PURE__ */ React4.createElement(MarkdownEditorContent, {
597
- ...composableProps2(props),
598
- id,
599
- attendableId,
600
- compact,
601
- viewMode,
602
- toolbarState: state,
603
- extensions,
604
- onFileUpload,
605
- ref: handleRef
606
- });
607
- });
608
- MarkdownEditorContent2.displayName = MARKDOWN_EDITOR_CONTENT_NAME;
609
- var MARKDOWN_EDITOR_TOOLBAR_NAME = "MarkdownEditor.Toolbar";
610
- var MarkdownEditorToolbar2 = (props) => {
611
- const { id, attendableId, onAction, onFileUpload, onViewModeChange } = useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
612
- const { controller, state } = useEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
613
- return /* @__PURE__ */ React4.createElement(MarkdownEditorToolbar, {
614
- ...props,
615
- id: attendableId ?? id,
616
- editorView: controller?.view ?? void 0,
617
- state,
618
- onAction,
619
- onFileUpload,
620
- onViewModeChange
621
- });
622
- };
623
- MarkdownEditorToolbar2.displayName = MARKDOWN_EDITOR_TOOLBAR_NAME;
624
- var MARKDOWN_EDITOR_BLOCKS_NAME = "MarkdownEditor.Blocks";
625
- var MarkdownEditorBlocks = (_props) => {
626
- const { previewBlocks } = useMarkdownEditorContext(MARKDOWN_EDITOR_BLOCKS_NAME);
627
- return /* @__PURE__ */ React4.createElement(React4.Fragment, null, previewBlocks.map(({ link, el }) => /* @__PURE__ */ React4.createElement(PreviewBlock, {
628
- key: link.dxn,
629
- link,
630
- el
631
- })));
632
- };
633
- MarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;
634
- var PreviewBlock = ({ el, link }) => {
635
- const client = useClient();
636
- const dxn = DXN.parse(link.dxn);
637
- const subject = client.graph.makeRef(dxn).target;
638
- const data = useMemo2(() => ({
639
- subject
640
- }), [
641
- subject
642
- ]);
643
- return /* @__PURE__ */ createPortal2(/* @__PURE__ */ React4.createElement(Surface.Surface, {
644
- role: "card--content",
645
- data,
646
- limit: 1
647
- }), el);
648
- };
649
- var MarkdownEditor = {
650
- Content: MarkdownEditorContent2,
651
- Toolbar: MarkdownEditorToolbar2,
652
- Blocks: MarkdownEditorBlocks
653
- };
654
-
655
- // src/components/index.ts
656
- var MarkdownSettings2 = lazy(() => import("./MarkdownSettings-X6SDS35F.mjs"));
119
+ // src/index.ts
120
+ var MarkdownPlugin = Plugin.lazy(meta, () => import("#plugin"));
657
121
  export {
658
122
  Markdown_exports as Markdown,
659
123
  MarkdownCapabilities,
660
- MarkdownEditor,
661
- MarkdownEditorProvider,
662
124
  MarkdownEvents,
663
125
  MarkdownPlugin,
664
126
  MarkdownStateSchema,