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