@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
@@ -6,14 +6,13 @@ import { describe, expect, it } from '@effect/vitest';
6
6
  import * as Effect from 'effect/Effect';
7
7
 
8
8
  import { MemoizedAiService } from '@dxos/ai/testing';
9
- import { AgentService } from '@dxos/assistant';
10
- import { AssistantTestLayer } from '@dxos/assistant/testing';
11
- import { Blueprint } from '@dxos/blueprints';
12
9
  import { SpaceProperties } from '@dxos/client-protocol';
10
+ import { Blueprint, Operation } from '@dxos/compute';
13
11
  import { Database, Feed, Obj, Query, Ref } from '@dxos/echo';
14
12
  import { Collection } from '@dxos/echo';
15
13
  import { TestHelpers } from '@dxos/effect/testing';
16
- import { FunctionInvocationService } from '@dxos/functions';
14
+ import { AgentService } from '@dxos/functions-runtime';
15
+ import { AssistantTestLayer } from '@dxos/functions-runtime/testing';
17
16
  import { invariant } from '@dxos/invariant';
18
17
  import { ObjectId } from '@dxos/keys';
19
18
  import { Markdown } from '@dxos/plugin-markdown/types';
@@ -54,7 +53,7 @@ describe('update', () => {
54
53
  });
55
54
  yield* Database.add(doc);
56
55
 
57
- yield* FunctionInvocationService.invokeFunction(Update, {
56
+ yield* Operation.invoke(Update, {
58
57
  doc: Ref.make(doc),
59
58
  edits: [{ oldString: 'Founders', newString: '# Founders' }],
60
59
  });
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import { type Resource } from '@dxos/react-ui';
6
- import { translations as editorTranslations } from '@dxos/react-ui-editor';
6
+ import { translations as editorTranslations } from '@dxos/react-ui-editor/translations';
7
7
 
8
8
  import { meta } from '#meta';
9
9
  import { Markdown } from '#types';
@@ -24,38 +24,14 @@ export const translations = [
24
24
  },
25
25
  [meta.id]: {
26
26
  'plugin.name': 'Editor',
27
- 'settings.title': 'Editor settings',
28
27
  'choose-markdown-from-space-dialog.title': 'Choose one or more documents to add',
29
- // TODO(burdon): Style-guide for user-facing text (e.g., hints, questions, capitalization, etc.)
30
28
  'empty-choose-markdown-from-space.message': 'None available; try creating a new one instead?',
31
29
  'chooser-done.label': 'Add selected',
32
- 'editor.placeholder': 'Start typing…',
33
- 'editor-input-mode.label': 'Editor input mode',
34
- 'editor-input-mode.description': 'Choose keyboard bindings for the editor.',
35
- 'select-editor-input-mode.placeholder': 'Select editor input mode…',
36
- 'settings.editor-input-mode.default.label': 'Default',
37
- 'settings.editor-input-mode.vim.label': 'Vim',
38
- 'settings.editor-input-mode.vscode.label': 'VS Code',
39
- 'settings.toolbar.label': 'Show toolbar',
40
- 'settings.toolbar.description': 'Display a formatting toolbar above the editor.',
41
- 'settings.numbered-headings.label': 'Numbered headings',
42
- 'settings.numbered-headings.description': 'Automatically number heading levels in the document.',
43
- 'settings.folding.label': 'Folding',
44
- 'settings.folding.description': 'Allow collapsing and expanding sections by heading.',
45
- 'settings.experimental.label': 'Enable experimental features',
46
- 'settings.experimental.description': 'Turn on features that are still in development.',
47
- 'settings.debug.label': 'Enable debugging features',
48
- 'settings.debug.description': 'Show developer tools and diagnostics for the editor.',
49
- 'settings.debug-typewriter.label': 'Typewriter script',
50
- 'settings.debug-typewriter.description': 'Script to replay typed input for testing purposes.',
51
- 'settings.debug-typewriter.placeholder': 'Typewriter script...',
30
+ 'editor.placeholder': 'Enter text…',
52
31
  'toggle-view-mode.label': 'Toggle read-only',
53
- 'default-view-mode.label': 'Default view mode',
54
- 'default-view-mode.description': 'Set whether documents open in editing or read-only mode.',
55
32
  'upload-image.label': 'Upload image',
56
33
  'fallback.title': 'Untitled',
57
34
  'navigate-to-document.label': 'Open document',
58
-
59
35
  'words.label': 'words',
60
36
  'words.label_zero': 'words',
61
37
  'words.label_one': 'word',
@@ -13,16 +13,53 @@ import { EditorInputMode, EditorViewMode } from '@dxos/ui-editor/types';
13
13
  */
14
14
  export const Settings = Schema.mutable(
15
15
  Schema.Struct({
16
- defaultViewMode: EditorViewMode,
17
- editorInputMode: Schema.optional(EditorInputMode),
18
- experimental: Schema.optional(Schema.Boolean),
19
- debug: Schema.optional(Schema.Boolean),
20
- toolbar: Schema.optional(Schema.Boolean),
21
- typewriter: Schema.optional(Schema.String),
22
- // TODO(burdon): Per document settings.
23
- numberedHeadings: Schema.optional(Schema.Boolean),
24
- folding: Schema.optional(Schema.Boolean),
16
+ defaultViewMode: EditorViewMode.annotations({
17
+ title: 'Default view mode',
18
+ description: 'Set whether documents open in editing or read-only mode.',
19
+ }),
20
+ editorInputMode: Schema.optional(
21
+ EditorInputMode.annotations({
22
+ title: 'Editor input mode',
23
+ description: 'Choose keyboard bindings for the editor.',
24
+ }),
25
+ ),
26
+ toolbar: Schema.optional(
27
+ Schema.Boolean.annotations({
28
+ title: 'Show toolbar',
29
+ description: 'Display a formatting toolbar above the editor.',
30
+ }),
31
+ ),
32
+ numberedHeadings: Schema.optional(
33
+ Schema.Boolean.annotations({
34
+ title: 'Numbered headings',
35
+ description: 'Automatically number heading levels in the document.',
36
+ }),
37
+ ),
38
+ folding: Schema.optional(
39
+ Schema.Boolean.annotations({
40
+ title: 'Folding',
41
+ description: 'Allow collapsing and expanding sections by heading.',
42
+ }),
43
+ ),
44
+ experimental: Schema.optional(
45
+ Schema.Boolean.annotations({
46
+ title: 'Enable experimental features',
47
+ description: 'Turn on features that are still in development.',
48
+ }),
49
+ ),
50
+ debug: Schema.optional(
51
+ Schema.Boolean.annotations({
52
+ title: 'Enable debugging features',
53
+ description: 'Show developer tools and diagnostics for the editor.',
54
+ }),
55
+ ),
56
+ snippets: Schema.optional(
57
+ Schema.String.annotations({
58
+ title: 'Snippets',
59
+ description: 'Input snippets to replay for testing purposes.',
60
+ }),
61
+ ),
25
62
  }),
26
63
  );
27
64
 
28
- export type Settings = Schema.Schema.Type<typeof Settings>;
65
+ export interface Settings extends Schema.Schema.Type<typeof Settings> {}
@@ -7,7 +7,8 @@ import { type Atom } from '@effect-atom/atom-react';
7
7
  import * as Schema from 'effect/Schema';
8
8
 
9
9
  import { Capability } from '@dxos/app-framework';
10
- import { type EditorStateStore, type EditorViewMode } from '@dxos/ui-editor';
10
+ import { type EditorStateStore } from '@dxos/ui-editor';
11
+ import { type EditorViewMode } from '@dxos/ui-editor/types';
11
12
 
12
13
  import { meta } from '#meta';
13
14
 
@@ -12,7 +12,10 @@ import { type Document } from './Markdown';
12
12
  // TODO(wittjosiah): MarkdownExtensionProvider is a part of the MarkdownCapabilities api which should be in ./types.
13
13
 
14
14
  // TODO(burdon): Async?
15
- export type MarkdownExtensionProvider = (props: { document?: Document }) => Extension | undefined;
15
+ export type MarkdownExtensionProvider = (props: {
16
+ document?: Document;
17
+ viewMode?: EditorViewMode;
18
+ }) => Extension | undefined;
16
19
 
17
20
  export type MarkdownPluginState = {
18
21
  // Codemirror extensions provided by other plugins.
package/src/util.tsx CHANGED
@@ -116,7 +116,7 @@ export const getContentSnippet = (content = '', maxLines = 3) => {
116
116
  export const setFallbackName = debounce((doc: Markdown.Document, content = '') => {
117
117
  const name = getFallbackName(content);
118
118
  if (doc.fallbackName !== name) {
119
- Obj.change(doc, (doc) => {
119
+ Obj.update(doc, (doc) => {
120
120
  doc.fallbackName = name;
121
121
  });
122
122
  }
@@ -1,121 +0,0 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/components/MarkdownSettings/MarkdownSettings.tsx
4
- import React from "react";
5
- import { Input, Select, useTranslation } from "@dxos/react-ui";
6
- import { Settings as SettingsForm } from "@dxos/react-ui-form";
7
- import { EditorInputModes, EditorViewModes } from "@dxos/ui-editor";
8
- import { meta } from "#meta";
9
- var MarkdownSettings = ({ settings, onSettingsChange }) => {
10
- const { t } = useTranslation(meta.id);
11
- return /* @__PURE__ */ React.createElement(SettingsForm.Viewport, null, /* @__PURE__ */ React.createElement(SettingsForm.Section, {
12
- title: t("settings.title", {
13
- ns: meta.id
14
- })
15
- }, /* @__PURE__ */ React.createElement(SettingsForm.Item, {
16
- title: t("default-view-mode.label"),
17
- description: t("default-view-mode.description")
18
- }, /* @__PURE__ */ React.createElement(Select.Root, {
19
- disabled: !onSettingsChange,
20
- value: settings.defaultViewMode,
21
- onValueChange: (value) => {
22
- onSettingsChange?.((s) => ({
23
- ...s,
24
- defaultViewMode: value
25
- }));
26
- }
27
- }, /* @__PURE__ */ React.createElement(Select.TriggerButton, {
28
- disabled: !onSettingsChange
29
- }), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, EditorViewModes.map((mode) => /* @__PURE__ */ React.createElement(Select.Option, {
30
- key: mode,
31
- value: mode
32
- }, t(`view-mode.${mode}.label`, {
33
- ns: "@dxos/react-ui-editor"
34
- })))), /* @__PURE__ */ React.createElement(Select.Arrow, null))))), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
35
- title: t("editor-input-mode.label"),
36
- description: t("editor-input-mode.description")
37
- }, /* @__PURE__ */ React.createElement(Select.Root, {
38
- disabled: !onSettingsChange,
39
- value: settings.editorInputMode ?? "default",
40
- onValueChange: (value) => {
41
- onSettingsChange?.((s) => ({
42
- ...s,
43
- editorInputMode: value
44
- }));
45
- }
46
- }, /* @__PURE__ */ React.createElement(Select.TriggerButton, {
47
- disabled: !onSettingsChange,
48
- placeholder: t("select-editor-input-mode.placeholder")
49
- }), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, EditorInputModes.map((mode) => /* @__PURE__ */ React.createElement(Select.Option, {
50
- key: mode,
51
- value: mode
52
- }, t(`settings.editor-input-mode.${mode}.label`)))), /* @__PURE__ */ React.createElement(Select.Arrow, null))))), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
53
- title: t("settings.toolbar.label"),
54
- description: t("settings.toolbar.description")
55
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
56
- disabled: !onSettingsChange,
57
- checked: settings.toolbar,
58
- onCheckedChange: (checked) => onSettingsChange?.((s) => ({
59
- ...s,
60
- toolbar: !!checked
61
- }))
62
- })), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
63
- title: t("settings.numbered-headings.label"),
64
- description: t("settings.numbered-headings.description")
65
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
66
- disabled: !onSettingsChange,
67
- checked: settings.numberedHeadings,
68
- onCheckedChange: (checked) => onSettingsChange?.((s) => ({
69
- ...s,
70
- numberedHeadings: !!checked
71
- }))
72
- })), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
73
- title: t("settings.folding.label"),
74
- description: t("settings.folding.description")
75
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
76
- disabled: !onSettingsChange,
77
- checked: settings.folding,
78
- onCheckedChange: (checked) => onSettingsChange?.((s) => ({
79
- ...s,
80
- folding: !!checked
81
- }))
82
- })), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
83
- title: t("settings.experimental.label"),
84
- description: t("settings.experimental.description")
85
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
86
- disabled: !onSettingsChange,
87
- checked: settings.experimental,
88
- onCheckedChange: (checked) => onSettingsChange?.((s) => ({
89
- ...s,
90
- experimental: !!checked
91
- }))
92
- })), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
93
- title: t("settings.debug.label"),
94
- description: t("settings.debug.description")
95
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
96
- disabled: !onSettingsChange,
97
- checked: settings.debug,
98
- onCheckedChange: (checked) => onSettingsChange?.((s) => ({
99
- ...s,
100
- debug: !!checked
101
- }))
102
- })), settings.debug && /* @__PURE__ */ React.createElement(SettingsForm.Item, {
103
- title: t("settings.debug-typewriter.label", {
104
- ns: meta.id
105
- }),
106
- description: t("settings.debug-typewriter.description")
107
- }, /* @__PURE__ */ React.createElement(Input.TextArea, {
108
- disabled: !onSettingsChange,
109
- rows: 5,
110
- value: settings.typewriter,
111
- onChange: ({ target: { value } }) => onSettingsChange?.((s) => ({
112
- ...s,
113
- typewriter: value
114
- })),
115
- placeholder: t("settings.debug-typewriter.placeholder")
116
- }))));
117
- };
118
- export {
119
- MarkdownSettings as default
120
- };
121
- //# sourceMappingURL=MarkdownSettings-YZFNSJJY.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/MarkdownSettings/MarkdownSettings.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { Settings as SettingsForm } from '@dxos/react-ui-form';\nimport { type EditorInputMode, EditorInputModes, type EditorViewMode, EditorViewModes } from '@dxos/ui-editor';\n\nimport { meta } from '#meta';\nimport { type Markdown } from '#types';\n\nexport type MarkdownSettingsProps = AppSurface.SettingsArticleProps<Markdown.Settings>;\n\nexport const MarkdownSettings = ({ settings, onSettingsChange }: MarkdownSettingsProps) => {\n const { t } = useTranslation(meta.id);\n\n // TODO(wittjosiah): Add skill test confirmation for entering vim mode.\n return (\n <SettingsForm.Viewport>\n <SettingsForm.Section title={t('settings.title', { ns: meta.id })}>\n <SettingsForm.Item title={t('default-view-mode.label')} description={t('default-view-mode.description')}>\n <Select.Root\n disabled={!onSettingsChange}\n value={settings.defaultViewMode}\n onValueChange={(value) => {\n onSettingsChange?.((s) => ({ ...s, defaultViewMode: value as EditorViewMode }));\n }}\n >\n <Select.TriggerButton disabled={!onSettingsChange} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {EditorViewModes.map((mode) => (\n <Select.Option key={mode} value={mode}>\n {t(`view-mode.${mode}.label`, { ns: '@dxos/react-ui-editor' })}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </SettingsForm.Item>\n\n <SettingsForm.Item title={t('editor-input-mode.label')} description={t('editor-input-mode.description')}>\n <Select.Root\n disabled={!onSettingsChange}\n value={settings.editorInputMode ?? 'default'}\n onValueChange={(value) => {\n onSettingsChange?.((s) => ({ ...s, editorInputMode: value as EditorInputMode }));\n }}\n >\n <Select.TriggerButton\n disabled={!onSettingsChange}\n placeholder={t('select-editor-input-mode.placeholder')}\n />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {EditorInputModes.map((mode) => (\n <Select.Option key={mode} value={mode}>\n {t(`settings.editor-input-mode.${mode}.label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </SettingsForm.Item>\n\n <SettingsForm.Item title={t('settings.toolbar.label')} description={t('settings.toolbar.description')}>\n <Input.Switch\n disabled={!onSettingsChange}\n checked={settings.toolbar}\n onCheckedChange={(checked) => onSettingsChange?.((s) => ({ ...s, toolbar: !!checked }))}\n />\n </SettingsForm.Item>\n\n <SettingsForm.Item\n title={t('settings.numbered-headings.label')}\n description={t('settings.numbered-headings.description')}\n >\n <Input.Switch\n disabled={!onSettingsChange}\n checked={settings.numberedHeadings}\n onCheckedChange={(checked) => onSettingsChange?.((s) => ({ ...s, numberedHeadings: !!checked }))}\n />\n </SettingsForm.Item>\n\n <SettingsForm.Item title={t('settings.folding.label')} description={t('settings.folding.description')}>\n <Input.Switch\n disabled={!onSettingsChange}\n checked={settings.folding}\n onCheckedChange={(checked) => onSettingsChange?.((s) => ({ ...s, folding: !!checked }))}\n />\n </SettingsForm.Item>\n\n <SettingsForm.Item\n title={t('settings.experimental.label')}\n description={t('settings.experimental.description')}\n >\n <Input.Switch\n disabled={!onSettingsChange}\n checked={settings.experimental}\n onCheckedChange={(checked) => onSettingsChange?.((s) => ({ ...s, experimental: !!checked }))}\n />\n </SettingsForm.Item>\n\n <SettingsForm.Item title={t('settings.debug.label')} description={t('settings.debug.description')}>\n <Input.Switch\n disabled={!onSettingsChange}\n checked={settings.debug}\n onCheckedChange={(checked) => onSettingsChange?.((s) => ({ ...s, debug: !!checked }))}\n />\n </SettingsForm.Item>\n\n {settings.debug && (\n <SettingsForm.Item\n title={t('settings.debug-typewriter.label', { ns: meta.id })}\n description={t('settings.debug-typewriter.description')}\n >\n <Input.TextArea\n disabled={!onSettingsChange}\n rows={5}\n value={settings.typewriter}\n onChange={({ target: { value } }) => onSettingsChange?.((s) => ({ ...s, typewriter: value }))}\n placeholder={t('settings.debug-typewriter.placeholder')}\n />\n </SettingsForm.Item>\n )}\n </SettingsForm.Section>\n </SettingsForm.Viewport>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["React", "Input", "Select", "useTranslation", "Settings", "SettingsForm", "EditorInputModes", "EditorViewModes", "meta", "MarkdownSettings", "settings", "onSettingsChange", "t", "useTranslation", "meta", "id", "SettingsForm", "Viewport", "Section", "title", "ns", "Item", "description", "Select", "Root", "disabled", "value", "defaultViewMode", "onValueChange", "s", "TriggerButton", "Portal", "Content", "EditorViewModes", "map", "mode", "Option", "key", "Arrow", "editorInputMode", "placeholder", "EditorInputModes", "Input", "Switch", "checked", "toolbar", "onCheckedChange", "numberedHeadings", "folding", "experimental", "debug", "TextArea", "rows", "typewriter", "onChange", "target"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/capabilities.ts", "../../../src/types/events.ts", "../../../src/types/Markdown.ts", "../../../src/types/Settings.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { type Atom } from '@effect-atom/atom-react';\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { type EditorStateStore, type EditorViewMode } from '@dxos/ui-editor';\n\nimport { meta } from '#meta';\n\nimport type * as Markdown from './Markdown';\nimport { type MarkdownExtensionProvider } from './types';\n\n/** Schema for persisted markdown state. */\nexport const MarkdownStateSchema = Schema.mutable(\n Schema.Struct({\n viewMode: Schema.Record({ key: Schema.String, value: Schema.String }),\n }),\n);\n\nexport type MarkdownState = {\n viewMode: Record<string, EditorViewMode>;\n};\n\nexport type EditorViewEntry = { view: EditorView; documentId: string };\n\nexport type EditorViewRegistry = {\n register: (attendableId: string, view: EditorView, documentId: string) => void;\n unregister: (attendableId: string) => void;\n get: (attendableId: string) => EditorViewEntry | undefined;\n};\n\nexport namespace MarkdownCapabilities {\n export const Settings = Capability.make<Atom.Writable<Markdown.Settings>>(`${meta.id}.capability.settings`);\n\n /** Persisted state atom for view mode per document. */\n export const State = Capability.make<Atom.Writable<MarkdownState>>(`${meta.id}.capability.state`);\n\n /** Editor state store for cursor positions, scroll state, etc. */\n export const EditorState = Capability.make<EditorStateStore>(`${meta.id}.capability.editor-state`);\n\n /** Registry of active EditorView instances keyed by attendable ID. */\n export const EditorViews = Capability.make<EditorViewRegistry>(`${meta.id}.capability.editor-views`);\n\n // TODO(burdon): Move to ./types (external API)?\n export const Extensions = Capability.make<MarkdownExtensionProvider[]>(`${meta.id}.capability.extensions`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ActivationEvent } from '@dxos/app-framework';\nimport { AppActivationEvents } from '@dxos/app-toolkit';\n\nimport { meta } from '#meta';\n\nexport namespace MarkdownEvents {\n export const SetupExtensions: ActivationEvent.ActivationEvent = AppActivationEvents.createStateEvent(\n `${meta.id}.event.setup-extensions`,\n );\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Annotation, Obj, Ref, Type } from '@dxos/echo';\nimport { DescriptionAnnotation, FormInputAnnotation, LabelAnnotation } from '@dxos/echo/internal';\nimport { Text } from '@dxos/schema';\n\n// Re-export Settings as merged const/type (not as namespace).\nimport * as SettingsModule from './Settings';\nexport const Settings = SettingsModule.Settings;\nexport type Settings = SettingsModule.Settings;\n\n/**\n * Document Item type.\n */\nexport const Document = Schema.Struct({\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n fallbackName: Schema.String.pipe(FormInputAnnotation.set(false), Schema.optional),\n content: Ref.Ref(Text.Text).pipe(FormInputAnnotation.set(false)),\n}).pipe(\n Type.object({\n typename: 'org.dxos.type.document',\n version: '0.1.0',\n }),\n LabelAnnotation.set(['name', 'fallbackName']),\n DescriptionAnnotation.set('description'),\n Annotation.IconAnnotation.set({\n icon: 'ph--text-aa--regular',\n hue: 'indigo',\n }),\n);\n\nexport type Document = Schema.Schema.Type<typeof Document>;\n\n/**\n * Document factory.\n */\nexport const make = ({\n content = '',\n ...props\n}: Partial<{ name: string; fallbackName: string; content: string }> = {}) => {\n const doc = Obj.make(Document, { ...props, content: Ref.make(Text.make({ content })) });\n // TODO(dmaretskyi): We need a better way to set parents when creating hierarchies.\n Obj.setParent(doc.content.target!, doc);\n return doc;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { EditorInputMode, EditorViewMode } from '@dxos/ui-editor/types';\n\n/**\n * Plugin settings.\n */\nexport const Settings = Schema.mutable(\n Schema.Struct({\n defaultViewMode: EditorViewMode,\n editorInputMode: Schema.optional(EditorInputMode),\n experimental: Schema.optional(Schema.Boolean),\n debug: Schema.optional(Schema.Boolean),\n toolbar: Schema.optional(Schema.Boolean),\n typewriter: Schema.optional(Schema.String),\n // TODO(burdon): Per document settings.\n numberedHeadings: Schema.optional(Schema.Boolean),\n folding: Schema.optional(Schema.Boolean),\n }),\n);\n\nexport type Settings = Schema.Schema.Type<typeof Settings>;\n"],
5
- "mappings": ";;;;;AAMA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAG3B,SAASC,YAAY;AAMd,IAAMC,sBAA6BC,eACjCC,cAAO;EACZC,UAAiBC,cAAO;IAAEC,KAAYC;IAAQC,OAAcD;EAAO,CAAA;AACrE,CAAA,CAAA;UAeeE,uBAAAA;wBACFC,WAAWC,WAAWC,KAAuC,GAAGC,KAAKC,EAAE,sBAAsB;wBAG7FC,QAAQJ,WAAWC,KAAmC,GAAGC,KAAKC,EAAE,mBAAmB;wBAGnFE,cAAcL,WAAWC,KAAuB,GAAGC,KAAKC,EAAE,0BAA0B;wBAGpFG,cAAcN,WAAWC,KAAyB,GAAGC,KAAKC,EAAE,0BAA0B;wBAGtFI,aAAaP,WAAWC,KAAkC,GAAGC,KAAKC,EAAE,wBAAwB;AAC3G,GAdiBL,yBAAAA,uBAAAA,CAAAA,EAAAA;;;;AC9BjB,SAASU,2BAA2B;AAEpC,SAASC,QAAAA,aAAY;UAEJC,iBAAAA;kBACFC,kBAAmDC,oBAAoBC,iBAClF,GAAGC,MAAKC,EAAE,yBAAyB;AAEvC,GAJiBL,mBAAAA,iBAAAA,CAAAA,EAAAA;;;;ACTjB;;;kBAAAM;EAAA;;AAIA,YAAYC,aAAY;AAExB,SAASC,YAAYC,KAAKC,KAAKC,YAAY;AAC3C,SAASC,uBAAuBC,qBAAqBC,uBAAuB;AAC5E,SAASC,YAAY;;;ACRrB;;;;AAMA,YAAYC,aAAY;AAExB,SAASC,iBAAiBC,sBAAsB;AAKzC,IAAMC,WAAkBC,gBACtBC,eAAO;EACZC,iBAAiBC;EACjBC,iBAAwBC,iBAASC,eAAAA;EACjCC,cAAqBF,iBAAgBG,eAAO;EAC5CC,OAAcJ,iBAAgBG,eAAO;EACrCE,SAAgBL,iBAAgBG,eAAO;EACvCG,YAAmBN,iBAAgBO,cAAM;;EAEzCC,kBAAyBR,iBAAgBG,eAAO;EAChDM,SAAgBT,iBAAgBG,eAAO;AACzC,CAAA,CAAA;;;ADZK,IAAMO,YAA0BA;AAMhC,IAAMC,WAAkBC,eAAO;EACpCC,MAAaC,iBAAgBC,cAAM;EACnCC,aAAoBF,iBAAgBC,cAAM;EAC1CE,cAAqBF,eAAOG,KAAKC,oBAAoBC,IAAI,KAAA,GAAeN,gBAAQ;EAChFO,SAASC,IAAIA,IAAIC,KAAKA,IAAI,EAAEL,KAAKC,oBAAoBC,IAAI,KAAA,CAAA;AAC3D,CAAA,EAAGF,KACDM,KAAKC,OAAO;EACVC,UAAU;EACVC,SAAS;AACX,CAAA,GACAC,gBAAgBR,IAAI;EAAC;EAAQ;CAAe,GAC5CS,sBAAsBT,IAAI,aAAA,GAC1BU,WAAWC,eAAeX,IAAI;EAC5BY,MAAM;EACNC,KAAK;AACP,CAAA,CAAA;AAQK,IAAMC,OAAO,CAAC,EACnBb,UAAU,IACV,GAAGc,MAAAA,IACiE,CAAC,MAAC;AACtE,QAAMC,MAAMC,IAAIH,KAAKvB,UAAU;IAAE,GAAGwB;IAAOd,SAASC,IAAIY,KAAKX,KAAKW,KAAK;MAAEb;IAAQ,CAAA,CAAA;EAAI,CAAA;AAErFgB,MAAIC,UAAUF,IAAIf,QAAQkB,QAASH,GAAAA;AACnC,SAAOA;AACT;",
6
- "names": ["Schema", "Capability", "meta", "MarkdownStateSchema", "mutable", "Struct", "viewMode", "Record", "key", "String", "value", "MarkdownCapabilities", "Settings", "Capability", "make", "meta", "id", "State", "EditorState", "EditorViews", "Extensions", "AppActivationEvents", "meta", "MarkdownEvents", "SetupExtensions", "AppActivationEvents", "createStateEvent", "meta", "id", "Settings", "Schema", "Annotation", "Obj", "Ref", "Type", "DescriptionAnnotation", "FormInputAnnotation", "LabelAnnotation", "Text", "Schema", "EditorInputMode", "EditorViewMode", "Settings", "mutable", "Struct", "defaultViewMode", "EditorViewMode", "editorInputMode", "optional", "EditorInputMode", "experimental", "Boolean", "debug", "toolbar", "typewriter", "String", "numberedHeadings", "folding", "Settings", "Document", "Struct", "name", "optional", "String", "description", "fallbackName", "pipe", "FormInputAnnotation", "set", "content", "Ref", "Text", "Type", "object", "typename", "version", "LabelAnnotation", "DescriptionAnnotation", "Annotation", "IconAnnotation", "icon", "hue", "make", "props", "doc", "Obj", "setParent", "target"]
7
- }
@@ -1,10 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __export = (target, all) => {
3
- for (var name in all)
4
- __defProp(target, name, { get: all[name], enumerable: true });
5
- };
6
-
7
- export {
8
- __export
9
- };
10
- //# sourceMappingURL=chunk-J5LGTIGS.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/definitions.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Database, Ref } from '@dxos/echo';\nimport { Operation } from '@dxos/operation';\nimport { EditorViewMode } from '@dxos/ui-editor/types';\nimport { trim } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nimport { Markdown } from '../types';\n\nconst MARKDOWN_OPERATION = `${meta.id}.operation`;\n\nconst Edit = Schema.Struct({\n oldString: Schema.String.annotations({\n description: 'The text to find in the document.',\n }),\n newString: Schema.String.annotations({\n description: 'The text to replace it with.',\n }),\n replaceAll: Schema.optional(Schema.Boolean).annotations({\n description: 'If true, replaces all occurrences. Defaults to false (first occurrence only).',\n }),\n});\n\nexport const Create = Operation.make({\n meta: {\n key: 'org.dxos.function.markdown.create',\n name: 'Create',\n description: 'Creates a new markdown document and adds it to the space.',\n },\n input: Schema.Struct({\n name: Schema.String,\n content: Schema.String,\n }),\n output: Schema.Struct({\n id: Schema.String.annotations({\n description: 'The DXN of the created document.',\n }),\n }),\n services: [Database.Service],\n});\n\nexport const CreateMarkdown = Operation.make({\n meta: { key: `${MARKDOWN_OPERATION}.create`, name: 'Create Markdown Document' },\n services: [Capability.Service],\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n content: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Markdown.Document,\n }),\n});\n\nexport const Open = Operation.make({\n meta: {\n key: 'org.dxos.function.markdown.open',\n name: 'Open',\n description: 'Opens and reads the contents of a new markdown document.',\n },\n input: Schema.Struct({\n doc: Ref.Ref(Markdown.Document).annotations({\n description: 'The ID of the markdown document.',\n }),\n }),\n output: Schema.Struct({\n content: Schema.String,\n }),\n services: [Database.Service],\n});\n\nexport const ScrollToAnchor = Operation.make({\n meta: { key: `${MARKDOWN_OPERATION}.scroll-to-anchor`, name: 'Scroll To Anchor' },\n services: [Capability.Service],\n input: Schema.Struct({\n subject: Schema.String.annotations({ description: 'Attendable ID of the markdown editor.' }),\n cursor: Schema.String.annotations({ description: 'Cursor position to scroll to.' }),\n ref: Schema.optional(Schema.String.annotations({ description: 'Reference ID (e.g. thread ID).' })),\n }),\n output: Schema.Void,\n});\n\n// TODO(wittjosiah): This appears to be unused.\nexport const SetViewMode = Operation.make({\n meta: { key: `${MARKDOWN_OPERATION}.set-view-mode`, name: 'Set View Mode' },\n services: [Capability.Service],\n input: Schema.Struct({\n id: Schema.String,\n viewMode: EditorViewMode,\n }),\n output: Schema.Void,\n});\n\nexport const Update = Operation.make({\n meta: {\n key: 'org.dxos.function.markdown.update',\n name: 'Update',\n description: trim`\n Applies a set of edits to the markdown document.\n `,\n },\n input: Schema.Struct({\n doc: Ref.Ref(Markdown.Document).annotations({\n description: 'The ID of the markdown document.',\n }),\n edits: Schema.Array(Edit).annotations({\n description: 'The edits to apply to the document. Each edit finds oldString and replaces it with newString.',\n }),\n }),\n output: Schema.Struct({\n newContent: Schema.String,\n }),\n services: [Database.Service],\n});\n"],
5
- "mappings": ";;;;;;;;AAAA;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,UAAUC,WAAW;AAC9B,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB;AAC/B,SAASC,YAAY;AAErB,SAASC,YAAY;AAIrB,IAAMC,qBAAqB,GAAGC,KAAKC,EAAE;AAErC,IAAMC,OAAcC,cAAO;EACzBC,WAAkBC,cAAOC,YAAY;IACnCC,aAAa;EACf,CAAA;EACAC,WAAkBH,cAAOC,YAAY;IACnCC,aAAa;EACf,CAAA;EACAE,YAAmBC,gBAAgBC,cAAO,EAAEL,YAAY;IACtDC,aAAa;EACf,CAAA;AACF,CAAA;AAEO,IAAMK,SAASC,UAAUC,KAAK;EACnCd,MAAM;IACJe,KAAK;IACLC,MAAM;IACNT,aAAa;EACf;EACAU,OAAcd,cAAO;IACnBa,MAAaX;IACba,SAAgBb;EAClB,CAAA;EACAc,QAAehB,cAAO;IACpBF,IAAWI,cAAOC,YAAY;MAC5BC,aAAa;IACf,CAAA;EACF,CAAA;EACAa,UAAU;IAACC,SAASC;;AACtB,CAAA;AAEO,IAAMC,iBAAiBV,UAAUC,KAAK;EAC3Cd,MAAM;IAAEe,KAAK,GAAGhB,kBAAAA;IAA6BiB,MAAM;EAA2B;EAC9EI,UAAU;IAACI,WAAWF;;EACtBL,OAAcd,cAAO;IACnBa,MAAaN,gBAAgBL,aAAM;IACnCa,SAAgBR,gBAAgBL,aAAM;EACxC,CAAA;EACAc,QAAehB,cAAO;IACpBsB,QAAQC,iBAASC;EACnB,CAAA;AACF,CAAA;AAEO,IAAMC,OAAOf,UAAUC,KAAK;EACjCd,MAAM;IACJe,KAAK;IACLC,MAAM;IACNT,aAAa;EACf;EACAU,OAAcd,cAAO;IACnB0B,KAAKC,IAAIA,IAAIJ,iBAASC,QAAQ,EAAErB,YAAY;MAC1CC,aAAa;IACf,CAAA;EACF,CAAA;EACAY,QAAehB,cAAO;IACpBe,SAAgBb;EAClB,CAAA;EACAe,UAAU;IAACC,SAASC;;AACtB,CAAA;AAEO,IAAMS,iBAAiBlB,UAAUC,KAAK;EAC3Cd,MAAM;IAAEe,KAAK,GAAGhB,kBAAAA;IAAuCiB,MAAM;EAAmB;EAChFI,UAAU;IAACI,WAAWF;;EACtBL,OAAcd,cAAO;IACnB6B,SAAgB3B,cAAOC,YAAY;MAAEC,aAAa;IAAwC,CAAA;IAC1F0B,QAAe5B,cAAOC,YAAY;MAAEC,aAAa;IAAgC,CAAA;IACjF2B,KAAYxB,gBAAgBL,cAAOC,YAAY;MAAEC,aAAa;IAAiC,CAAA,CAAA;EACjG,CAAA;EACAY,QAAegB;AACjB,CAAA;AAGO,IAAMC,cAAcvB,UAAUC,KAAK;EACxCd,MAAM;IAAEe,KAAK,GAAGhB,kBAAAA;IAAoCiB,MAAM;EAAgB;EAC1EI,UAAU;IAACI,WAAWF;;EACtBL,OAAcd,cAAO;IACnBF,IAAWI;IACXgC,UAAUC;EACZ,CAAA;EACAnB,QAAegB;AACjB,CAAA;AAEO,IAAMI,SAAS1B,UAAUC,KAAK;EACnCd,MAAM;IACJe,KAAK;IACLC,MAAM;IACNT,aAAaiC;;;EAGf;EACAvB,OAAcd,cAAO;IACnB0B,KAAKC,IAAIA,IAAIJ,iBAASC,QAAQ,EAAErB,YAAY;MAC1CC,aAAa;IACf,CAAA;IACAkC,OAAcC,aAAMxC,IAAAA,EAAMI,YAAY;MACpCC,aAAa;IACf,CAAA;EACF,CAAA;EACAY,QAAehB,cAAO;IACpBwC,YAAmBtC;EACrB,CAAA;EACAe,UAAU;IAACC,SAASC;;AACtB,CAAA;",
6
- "names": ["Schema", "Capability", "Database", "Ref", "Operation", "EditorViewMode", "trim", "meta", "MARKDOWN_OPERATION", "meta", "id", "Edit", "Struct", "oldString", "String", "annotations", "description", "newString", "replaceAll", "optional", "Boolean", "Create", "Operation", "make", "key", "name", "input", "content", "output", "services", "Database", "Service", "CreateMarkdown", "Capability", "object", "Markdown", "Document", "Open", "doc", "Ref", "ScrollToAnchor", "subject", "cursor", "ref", "Void", "SetViewMode", "viewMode", "EditorViewMode", "Update", "trim", "edits", "Array", "newContent"]
7
- }
@@ -1,39 +0,0 @@
1
- import "../chunk-J5LGTIGS.mjs";
2
-
3
- // src/cli/plugin.ts
4
- import * as Effect from "effect/Effect";
5
- import { Plugin } from "@dxos/app-framework";
6
- import { AppPlugin } from "@dxos/app-toolkit";
7
- import { Operation } from "@dxos/operation";
8
- import { SpaceOperation } from "@dxos/plugin-space/operations";
9
- import { Text } from "@dxos/schema";
10
- import { OperationHandler } from "#capabilities";
11
- import { meta } from "#meta";
12
- import { Markdown } from "#types";
13
- var MarkdownPlugin = Plugin.define(meta).pipe(AppPlugin.addMetadataModule({
14
- metadata: {
15
- id: Markdown.Document.typename,
16
- metadata: {
17
- createObject: (props, options) => Effect.gen(function* () {
18
- const object = Markdown.make(props);
19
- return yield* Operation.invoke(SpaceOperation.AddObject, {
20
- object,
21
- target: options.target,
22
- hidden: true,
23
- targetNodeId: options.targetNodeId
24
- });
25
- })
26
- }
27
- }
28
- }), AppPlugin.addOperationHandlerModule({
29
- activate: OperationHandler
30
- }), AppPlugin.addSchemaModule({
31
- schema: [
32
- Markdown.Document,
33
- Text.Text
34
- ]
35
- }), Plugin.make);
36
- export {
37
- MarkdownPlugin
38
- };
39
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/cli/plugin.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/operation';\nimport { SpaceOperation } from '@dxos/plugin-space/operations';\nimport { type CreateObject } from '@dxos/plugin-space/types';\nimport { Text } from '@dxos/schema';\n\nimport { OperationHandler } from '#capabilities';\nimport { meta } from '#meta';\nimport { Markdown } from '#types';\n\nexport const MarkdownPlugin = Plugin.define(meta).pipe(\n AppPlugin.addMetadataModule({\n metadata: {\n id: Markdown.Document.typename,\n metadata: {\n createObject: ((props, options) =>\n Effect.gen(function* () {\n const object = Markdown.make(props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n })) satisfies CreateObject,\n },\n },\n }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSchemaModule({ schema: [Markdown.Document, Text.Text] }),\n Plugin.make,\n);\n"],
5
- "mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAc;AACvB,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB;AAE/B,SAASC,YAAY;AAErB,SAASC,wBAAwB;AACjC,SAASC,YAAY;AACrB,SAASC,gBAAgB;AAElB,IAAMC,iBAAiBC,OAAOC,OAAOC,IAAAA,EAAMC,KAChDC,UAAUC,kBAAkB;EAC1BC,UAAU;IACRC,IAAIC,SAASC,SAASC;IACtBJ,UAAU;MACRK,cAAe,CAACC,OAAOC,YACdC,WAAI,aAAA;AACT,cAAMC,SAASP,SAASQ,KAAKJ,KAAAA;AAC7B,eAAO,OAAOK,UAAUC,OAAOC,eAAeC,WAAW;UACvDL;UACAM,QAAQR,QAAQQ;UAChBC,QAAQ;UACRC,cAAcV,QAAQU;QACxB,CAAA;MACF,CAAA;IACJ;EACF;AACF,CAAA,GACAnB,UAAUoB,0BAA0B;EAAEC,UAAUC;AAAiB,CAAA,GACjEtB,UAAUuB,gBAAgB;EAAEC,QAAQ;IAACpB,SAASC;IAAUoB,KAAKA;;AAAM,CAAA,GACnE7B,OAAOgB,IAAI;",
6
- "names": ["Effect", "Plugin", "AppPlugin", "Operation", "SpaceOperation", "Text", "OperationHandler", "meta", "Markdown", "MarkdownPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addMetadataModule", "metadata", "id", "Markdown", "Document", "typename", "createObject", "props", "options", "gen", "object", "make", "Operation", "invoke", "SpaceOperation", "AddObject", "target", "hidden", "targetNodeId", "addOperationHandlerModule", "activate", "OperationHandler", "addSchemaModule", "schema", "Text"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/create.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Obj } from '@dxos/echo';\nimport { Operation } from '@dxos/operation';\nimport { CollectionModel } from '@dxos/schema';\n\nimport { Markdown } from '../types';\nimport { Create } from './definitions';\n\nconst handler: Operation.WithHandler<typeof Create> = Create.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ name, content }) {\n const object = Markdown.make({ name, content });\n yield* CollectionModel.add({ object });\n\n return {\n id: Obj.getDXN(object).toString(),\n };\n }),\n ),\n);\n\nexport default handler;\n"],
5
- "mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,WAAW;AACpB,SAASC,iBAAiB;AAC1B,SAASC,uBAAuB;AAKhC,IAAMC,UAAgDC,OAAOC,KAC3DC,UAAUC,YACDC,UAAG,WAAW,EAAEC,MAAMC,QAAO,GAAE;AACpC,QAAMC,SAASC,iBAASC,KAAK;IAAEJ;IAAMC;EAAQ,CAAA;AAC7C,SAAOI,gBAAgBC,IAAI;IAAEJ;EAAO,CAAA;AAEpC,SAAO;IACLK,IAAIC,IAAIC,OAAOP,MAAAA,EAAQQ,SAAQ;EACjC;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,iBAAehB;",
6
- "names": ["Effect", "Obj", "Operation", "CollectionModel", "handler", "Create", "pipe", "Operation", "withHandler", "fn", "name", "content", "object", "Markdown", "make", "CollectionModel", "add", "id", "Obj", "getDXN", "toString"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/open.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Database } from '@dxos/echo';\nimport { Operation } from '@dxos/operation';\n\nimport { Open } from './definitions';\n\nconst handler: Operation.WithHandler<typeof Open> = Open.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ doc }) {\n const { content } = yield* doc.pipe(\n Database.load,\n Effect.map((_) => _.content),\n Effect.flatMap(Database.load),\n );\n return { content };\n }),\n ),\n);\n\nexport default handler;\n"],
5
- "mappings": ";;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAI1B,IAAMC,UAA8CC,KAAKC,KACvDC,UAAUC,YACDC,UAAG,WAAW,EAAEC,IAAG,GAAE;AAC1B,QAAM,EAAEC,QAAO,IAAK,OAAOD,IAAIJ,KAC7BM,SAASC,MACFC,WAAI,CAACC,MAAMA,EAAEJ,OAAO,GACpBK,eAAQJ,SAASC,IAAI,CAAA;AAE9B,SAAO;IAAEF;EAAQ;AACnB,CAAA,CAAA,CAAA;AAIJ,IAAA,eAAeP;",
6
- "names": ["Effect", "Database", "Operation", "handler", "Open", "pipe", "Operation", "withHandler", "fn", "doc", "content", "Database", "load", "map", "_", "flatMap"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/update.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { next as A, type Doc } from '@automerge/automerge';\nimport * as Effect from 'effect/Effect';\n\nimport { Database } from '@dxos/echo';\nimport { DocAccessor, createDocAccessor } from '@dxos/echo-db';\nimport { Operation } from '@dxos/operation';\n\nimport { Update } from './definitions';\n\nconst handler: Operation.WithHandler<typeof Update> = Update.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ doc, edits }) {\n const content = yield* doc.pipe(\n Database.load,\n Effect.map((_) => _.content),\n Effect.flatMap(Database.load),\n );\n const accessor = createDocAccessor(content, ['content']);\n\n for (const edit of edits) {\n accessor.handle.change((doc: Doc<typeof content>) => {\n const text = DocAccessor.getValue<string>(accessor);\n if (edit.replaceAll) {\n let idx = text.indexOf(edit.oldString);\n while (idx !== -1) {\n A.splice(doc, accessor.path as A.Prop[], idx, edit.oldString.length, edit.newString);\n const updated = DocAccessor.getValue<string>(accessor);\n idx = updated.indexOf(edit.oldString, idx + edit.newString.length);\n }\n } else {\n const idx = text.indexOf(edit.oldString);\n if (idx === -1) {\n throw new Error(`Edit not found: ${JSON.stringify(edit.oldString)}`);\n }\n A.splice(doc, accessor.path as A.Prop[], idx, edit.oldString.length, edit.newString);\n }\n });\n }\n\n return {\n newContent: DocAccessor.getValue<string>(accessor),\n };\n }),\n ),\n);\n\nexport default handler;\n"],
5
- "mappings": ";;;;;;;AAIA,SAASA,QAAQC,SAAmB;AACpC,YAAYC,YAAY;AAExB,SAASC,gBAAgB;AACzB,SAASC,aAAaC,yBAAyB;AAC/C,SAASC,iBAAiB;AAI1B,IAAMC,UAAgDC,OAAOC,KAC3DC,UAAUC,YACDC,UAAG,WAAW,EAAEC,KAAKC,MAAK,GAAE;AACjC,QAAMC,UAAU,OAAOF,IAAIJ,KACzBO,SAASC,MACFC,WAAI,CAACC,MAAMA,EAAEJ,OAAO,GACpBK,eAAQJ,SAASC,IAAI,CAAA;AAE9B,QAAMI,WAAWC,kBAAkBP,SAAS;IAAC;GAAU;AAEvD,aAAWQ,QAAQT,OAAO;AACxBO,aAASG,OAAOC,OAAO,CAACZ,SAAAA;AACtB,YAAMa,OAAOC,YAAYC,SAAiBP,QAAAA;AAC1C,UAAIE,KAAKM,YAAY;AACnB,YAAIC,MAAMJ,KAAKK,QAAQR,KAAKS,SAAS;AACrC,eAAOF,QAAQ,IAAI;AACjBG,YAAEC,OAAOrB,MAAKQ,SAASc,MAAkBL,KAAKP,KAAKS,UAAUI,QAAQb,KAAKc,SAAS;AACnF,gBAAMC,UAAUX,YAAYC,SAAiBP,QAAAA;AAC7CS,gBAAMQ,QAAQP,QAAQR,KAAKS,WAAWF,MAAMP,KAAKc,UAAUD,MAAM;QACnE;MACF,OAAO;AACL,cAAMN,MAAMJ,KAAKK,QAAQR,KAAKS,SAAS;AACvC,YAAIF,QAAQ,IAAI;AACd,gBAAM,IAAIS,MAAM,mBAAmBC,KAAKC,UAAUlB,KAAKS,SAAS,CAAA,EAAG;QACrE;AACAC,UAAEC,OAAOrB,MAAKQ,SAASc,MAAkBL,KAAKP,KAAKS,UAAUI,QAAQb,KAAKc,SAAS;MACrF;IACF,CAAA;EACF;AAEA,SAAO;IACLK,YAAYf,YAAYC,SAAiBP,QAAAA;EAC3C;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,iBAAed;",
6
- "names": ["next", "A", "Effect", "Database", "DocAccessor", "createDocAccessor", "Operation", "handler", "Update", "pipe", "Operation", "withHandler", "fn", "doc", "edits", "content", "Database", "load", "map", "_", "flatMap", "accessor", "createDocAccessor", "edit", "handle", "change", "text", "DocAccessor", "getValue", "replaceAll", "idx", "indexOf", "oldString", "A", "splice", "path", "length", "newString", "updated", "Error", "JSON", "stringify", "newContent"]
7
- }
@@ -1,122 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import "./chunk-HSLMI22Q.mjs";
3
-
4
- // src/components/MarkdownSettings/MarkdownSettings.tsx
5
- import React from "react";
6
- import { Input, Select, useTranslation } from "@dxos/react-ui";
7
- import { Settings as SettingsForm } from "@dxos/react-ui-form";
8
- import { EditorInputModes, EditorViewModes } from "@dxos/ui-editor";
9
- import { meta } from "#meta";
10
- var MarkdownSettings = ({ settings, onSettingsChange }) => {
11
- const { t } = useTranslation(meta.id);
12
- return /* @__PURE__ */ React.createElement(SettingsForm.Viewport, null, /* @__PURE__ */ React.createElement(SettingsForm.Section, {
13
- title: t("settings.title", {
14
- ns: meta.id
15
- })
16
- }, /* @__PURE__ */ React.createElement(SettingsForm.Item, {
17
- title: t("default-view-mode.label"),
18
- description: t("default-view-mode.description")
19
- }, /* @__PURE__ */ React.createElement(Select.Root, {
20
- disabled: !onSettingsChange,
21
- value: settings.defaultViewMode,
22
- onValueChange: (value) => {
23
- onSettingsChange?.((s) => ({
24
- ...s,
25
- defaultViewMode: value
26
- }));
27
- }
28
- }, /* @__PURE__ */ React.createElement(Select.TriggerButton, {
29
- disabled: !onSettingsChange
30
- }), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, EditorViewModes.map((mode) => /* @__PURE__ */ React.createElement(Select.Option, {
31
- key: mode,
32
- value: mode
33
- }, t(`view-mode.${mode}.label`, {
34
- ns: "@dxos/react-ui-editor"
35
- })))), /* @__PURE__ */ React.createElement(Select.Arrow, null))))), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
36
- title: t("editor-input-mode.label"),
37
- description: t("editor-input-mode.description")
38
- }, /* @__PURE__ */ React.createElement(Select.Root, {
39
- disabled: !onSettingsChange,
40
- value: settings.editorInputMode ?? "default",
41
- onValueChange: (value) => {
42
- onSettingsChange?.((s) => ({
43
- ...s,
44
- editorInputMode: value
45
- }));
46
- }
47
- }, /* @__PURE__ */ React.createElement(Select.TriggerButton, {
48
- disabled: !onSettingsChange,
49
- placeholder: t("select-editor-input-mode.placeholder")
50
- }), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, EditorInputModes.map((mode) => /* @__PURE__ */ React.createElement(Select.Option, {
51
- key: mode,
52
- value: mode
53
- }, t(`settings.editor-input-mode.${mode}.label`)))), /* @__PURE__ */ React.createElement(Select.Arrow, null))))), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
54
- title: t("settings.toolbar.label"),
55
- description: t("settings.toolbar.description")
56
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
57
- disabled: !onSettingsChange,
58
- checked: settings.toolbar,
59
- onCheckedChange: (checked) => onSettingsChange?.((s) => ({
60
- ...s,
61
- toolbar: !!checked
62
- }))
63
- })), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
64
- title: t("settings.numbered-headings.label"),
65
- description: t("settings.numbered-headings.description")
66
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
67
- disabled: !onSettingsChange,
68
- checked: settings.numberedHeadings,
69
- onCheckedChange: (checked) => onSettingsChange?.((s) => ({
70
- ...s,
71
- numberedHeadings: !!checked
72
- }))
73
- })), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
74
- title: t("settings.folding.label"),
75
- description: t("settings.folding.description")
76
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
77
- disabled: !onSettingsChange,
78
- checked: settings.folding,
79
- onCheckedChange: (checked) => onSettingsChange?.((s) => ({
80
- ...s,
81
- folding: !!checked
82
- }))
83
- })), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
84
- title: t("settings.experimental.label"),
85
- description: t("settings.experimental.description")
86
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
87
- disabled: !onSettingsChange,
88
- checked: settings.experimental,
89
- onCheckedChange: (checked) => onSettingsChange?.((s) => ({
90
- ...s,
91
- experimental: !!checked
92
- }))
93
- })), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
94
- title: t("settings.debug.label"),
95
- description: t("settings.debug.description")
96
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
97
- disabled: !onSettingsChange,
98
- checked: settings.debug,
99
- onCheckedChange: (checked) => onSettingsChange?.((s) => ({
100
- ...s,
101
- debug: !!checked
102
- }))
103
- })), settings.debug && /* @__PURE__ */ React.createElement(SettingsForm.Item, {
104
- title: t("settings.debug-typewriter.label", {
105
- ns: meta.id
106
- }),
107
- description: t("settings.debug-typewriter.description")
108
- }, /* @__PURE__ */ React.createElement(Input.TextArea, {
109
- disabled: !onSettingsChange,
110
- rows: 5,
111
- value: settings.typewriter,
112
- onChange: ({ target: { value } }) => onSettingsChange?.((s) => ({
113
- ...s,
114
- typewriter: value
115
- })),
116
- placeholder: t("settings.debug-typewriter.placeholder")
117
- }))));
118
- };
119
- export {
120
- MarkdownSettings as default
121
- };
122
- //# sourceMappingURL=MarkdownSettings-X6SDS35F.mjs.map