@dxos/plugin-markdown 0.8.4-main.422d1c7879 → 0.8.4-main.51f1e5ca51

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 (187) hide show
  1. package/dist/lib/browser/{MarkdownSettings-62YSRY7L.mjs → MarkdownSettings-YCTZJL5V.mjs} +4 -4
  2. package/dist/lib/browser/MarkdownSettings-YCTZJL5V.mjs.map +7 -0
  3. package/dist/lib/browser/blueprints/index.mjs +3 -3
  4. package/dist/lib/browser/blueprints/index.mjs.map +2 -2
  5. package/dist/lib/browser/{chunk-QFPZONKP.mjs → chunk-5T3SYJIP.mjs} +3 -3
  6. package/dist/lib/browser/chunk-5T3SYJIP.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-4KOZEH2H.mjs → chunk-FG2ZL4PE.mjs} +4 -4
  8. package/dist/lib/browser/chunk-FG2ZL4PE.mjs.map +7 -0
  9. package/dist/lib/browser/cli/index.mjs +1 -1
  10. package/dist/lib/browser/cli/index.mjs.map +3 -3
  11. package/dist/lib/browser/{create-YL5ELZWP.mjs → create-VSHCHZS4.mjs} +4 -4
  12. package/dist/lib/browser/create-VSHCHZS4.mjs.map +7 -0
  13. package/dist/lib/browser/{create-markdown-LU5IDKMH.mjs → create-markdown-6LRG62W3.mjs} +4 -4
  14. package/dist/lib/browser/{create-markdown-LU5IDKMH.mjs.map → create-markdown-6LRG62W3.mjs.map} +1 -1
  15. package/dist/lib/browser/index.mjs +18 -63
  16. package/dist/lib/browser/index.mjs.map +4 -4
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/{open-AFSOZZ6G.mjs → open-TKTPEN3D.mjs} +4 -4
  19. package/dist/lib/browser/open-TKTPEN3D.mjs.map +7 -0
  20. package/dist/lib/browser/operations/index.mjs +4 -4
  21. package/dist/lib/browser/operations/index.mjs.map +3 -3
  22. package/dist/lib/browser/{scroll-to-anchor-IPXV32A6.mjs → scroll-to-anchor-HWERBJKN.mjs} +4 -4
  23. package/dist/lib/browser/{scroll-to-anchor-IPXV32A6.mjs.map → scroll-to-anchor-HWERBJKN.mjs.map} +1 -1
  24. package/dist/lib/browser/{set-view-mode-2QWB24RR.mjs → set-view-mode-Z7HGT7TY.mjs} +4 -4
  25. package/dist/lib/browser/{set-view-mode-2QWB24RR.mjs.map → set-view-mode-Z7HGT7TY.mjs.map} +1 -1
  26. package/dist/lib/browser/translations.mjs +43 -0
  27. package/dist/lib/browser/translations.mjs.map +7 -0
  28. package/dist/lib/browser/types/index.mjs +1 -1
  29. package/dist/lib/browser/{update-HZNVYBMO.mjs → update-markdown-EJSHQRSC.mjs} +7 -7
  30. package/dist/lib/browser/update-markdown-EJSHQRSC.mjs.map +7 -0
  31. package/dist/lib/node-esm/{MarkdownSettings-QMPISOEU.mjs → MarkdownSettings-LE66LODL.mjs} +4 -4
  32. package/dist/lib/node-esm/MarkdownSettings-LE66LODL.mjs.map +7 -0
  33. package/dist/lib/node-esm/blueprints/index.mjs +3 -3
  34. package/dist/lib/node-esm/blueprints/index.mjs.map +2 -2
  35. package/dist/lib/node-esm/{chunk-JUGS6RKO.mjs → chunk-43GF7QLH.mjs} +3 -3
  36. package/dist/lib/node-esm/chunk-43GF7QLH.mjs.map +7 -0
  37. package/dist/lib/node-esm/{chunk-3OPDJJJH.mjs → chunk-IHC6DFTK.mjs} +4 -4
  38. package/dist/lib/node-esm/chunk-IHC6DFTK.mjs.map +7 -0
  39. package/dist/lib/node-esm/cli/index.mjs +1 -1
  40. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  41. package/dist/lib/node-esm/{create-SMQAIM3V.mjs → create-PDW42WOY.mjs} +4 -4
  42. package/dist/lib/node-esm/create-PDW42WOY.mjs.map +7 -0
  43. package/dist/lib/node-esm/{create-markdown-X2OASYKG.mjs → create-markdown-BBPZPLQN.mjs} +4 -4
  44. package/dist/lib/node-esm/{create-markdown-X2OASYKG.mjs.map → create-markdown-BBPZPLQN.mjs.map} +1 -1
  45. package/dist/lib/node-esm/index.mjs +18 -63
  46. package/dist/lib/node-esm/index.mjs.map +4 -4
  47. package/dist/lib/node-esm/meta.json +1 -1
  48. package/dist/lib/node-esm/{open-SRWLLOKE.mjs → open-B6GFN5DR.mjs} +4 -4
  49. package/dist/lib/node-esm/open-B6GFN5DR.mjs.map +7 -0
  50. package/dist/lib/node-esm/operations/index.mjs +4 -4
  51. package/dist/lib/node-esm/operations/index.mjs.map +3 -3
  52. package/dist/lib/node-esm/{scroll-to-anchor-M76GXKYQ.mjs → scroll-to-anchor-CWEWWIS7.mjs} +4 -4
  53. package/dist/lib/node-esm/{scroll-to-anchor-M76GXKYQ.mjs.map → scroll-to-anchor-CWEWWIS7.mjs.map} +1 -1
  54. package/dist/lib/node-esm/{set-view-mode-6BB6KIDS.mjs → set-view-mode-OMNNTSNM.mjs} +4 -4
  55. package/dist/lib/node-esm/{set-view-mode-6BB6KIDS.mjs.map → set-view-mode-OMNNTSNM.mjs.map} +1 -1
  56. package/dist/lib/node-esm/translations.mjs +44 -0
  57. package/dist/lib/node-esm/translations.mjs.map +7 -0
  58. package/dist/lib/node-esm/types/index.mjs +1 -1
  59. package/dist/lib/node-esm/{update-4CELTLXK.mjs → update-markdown-TAEAHVD2.mjs} +7 -7
  60. package/dist/lib/node-esm/update-markdown-TAEAHVD2.mjs.map +7 -0
  61. package/dist/types/src/blueprints/markdown-blueprint.d.ts +2 -2
  62. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -1
  63. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  64. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  65. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  66. package/dist/types/src/capabilities/blueprint-definition.d.ts +1 -2
  67. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  68. package/dist/types/src/capabilities/index.d.ts +3 -3
  69. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  70. package/dist/types/src/capabilities/node.d.ts +1 -1
  71. package/dist/types/src/capabilities/node.d.ts.map +1 -1
  72. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  73. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  74. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  76. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  77. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +13 -5
  78. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  79. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  80. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +2 -1
  81. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  82. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +1 -1
  83. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  84. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +46 -46
  85. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -1
  86. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -1
  87. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts +1 -1
  88. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -1
  89. package/dist/types/src/containers/MarkdownCard/MarkdownEditableCard.d.ts +15 -0
  90. package/dist/types/src/containers/MarkdownCard/MarkdownEditableCard.d.ts.map +1 -0
  91. package/dist/types/src/containers/MarkdownCard/index.d.ts +1 -0
  92. package/dist/types/src/containers/MarkdownCard/index.d.ts.map +1 -1
  93. package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -1
  94. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts +5 -5
  95. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +1 -1
  96. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts +70 -50
  97. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +1 -1
  98. package/dist/types/src/containers/index.d.ts +1 -0
  99. package/dist/types/src/containers/index.d.ts.map +1 -1
  100. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -1
  101. package/dist/types/src/hooks/useExtensions.d.ts +2 -1
  102. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  103. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  104. package/dist/types/src/index.d.ts +0 -1
  105. package/dist/types/src/index.d.ts.map +1 -1
  106. package/dist/types/src/operations/create-markdown.d.ts +1 -1
  107. package/dist/types/src/operations/create-markdown.d.ts.map +1 -1
  108. package/dist/types/src/operations/create.d.ts +1 -1
  109. package/dist/types/src/operations/create.d.ts.map +1 -1
  110. package/dist/types/src/operations/definitions.d.ts +4 -4
  111. package/dist/types/src/operations/definitions.d.ts.map +1 -1
  112. package/dist/types/src/operations/index.d.ts +1 -1
  113. package/dist/types/src/operations/index.d.ts.map +1 -1
  114. package/dist/types/src/operations/open.d.ts +1 -1
  115. package/dist/types/src/operations/open.d.ts.map +1 -1
  116. package/dist/types/src/operations/scroll-to-anchor.d.ts +1 -1
  117. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -1
  118. package/dist/types/src/operations/set-view-mode.d.ts +1 -1
  119. package/dist/types/src/operations/set-view-mode.d.ts.map +1 -1
  120. package/dist/types/src/operations/{update.d.ts → update-markdown.d.ts} +2 -2
  121. package/dist/types/src/operations/update-markdown.d.ts.map +1 -0
  122. package/dist/types/src/testing.d.ts.map +1 -1
  123. package/dist/types/src/translations.d.ts +70 -51
  124. package/dist/types/src/translations.d.ts.map +1 -1
  125. package/dist/types/src/types/Markdown.d.ts +3 -3
  126. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  127. package/dist/types/src/types/Settings.d.ts +1 -1
  128. package/dist/types/src/types/capabilities.d.ts +2 -1
  129. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  130. package/dist/types/src/types/events.d.ts.map +1 -1
  131. package/dist/types/src/types/types.d.ts +1 -0
  132. package/dist/types/src/types/types.d.ts.map +1 -1
  133. package/dist/types/src/util.d.ts.map +1 -1
  134. package/dist/types/tsconfig.tsbuildinfo +1 -1
  135. package/package.json +53 -48
  136. package/src/MarkdownPlugin.tsx +3 -3
  137. package/src/blueprints/markdown-blueprint.ts +2 -3
  138. package/src/capabilities/app-graph-serializer.ts +1 -2
  139. package/src/capabilities/artifact-definition.ts +1 -1
  140. package/src/capabilities/index.ts +1 -1
  141. package/src/capabilities/node.ts +1 -1
  142. package/src/capabilities/operation-handler.ts +1 -1
  143. package/src/capabilities/react-surface.tsx +9 -3
  144. package/src/cli/plugin.ts +1 -1
  145. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +3 -2
  146. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +1 -1
  147. package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +2 -1
  148. package/src/components/MarkdownSettings/MarkdownSettings.tsx +3 -3
  149. package/src/containers/MarkdownCard/MarkdownCard.stories.tsx +2 -1
  150. package/src/containers/MarkdownCard/MarkdownEditableCard.tsx +42 -0
  151. package/src/containers/MarkdownCard/index.ts +1 -0
  152. package/src/containers/MarkdownCard/snippet.ts +3 -1
  153. package/src/containers/MarkdownContainer/MarkdownContainer.stories.tsx +1 -1
  154. package/src/containers/MarkdownContainer/MarkdownContainer.tsx +5 -4
  155. package/src/containers/index.ts +3 -0
  156. package/src/hooks/useExtensions.tsx +4 -6
  157. package/src/index.ts +0 -1
  158. package/src/operations/create-markdown.ts +1 -1
  159. package/src/operations/create.conversations.json +1 -1
  160. package/src/operations/create.test.ts +4 -4
  161. package/src/operations/create.ts +1 -1
  162. package/src/operations/definitions.ts +1 -1
  163. package/src/operations/index.ts +2 -2
  164. package/src/operations/open.ts +1 -1
  165. package/src/operations/scroll-to-anchor.ts +1 -1
  166. package/src/operations/set-view-mode.ts +1 -1
  167. package/src/operations/{update.ts → update-markdown.ts} +1 -1
  168. package/src/operations/update.conversations.json +1 -1
  169. package/src/operations/update.test.ts +4 -4
  170. package/src/translations.ts +2 -2
  171. package/src/types/Settings.ts +3 -3
  172. package/src/types/capabilities.ts +2 -1
  173. package/src/types/types.ts +4 -1
  174. package/src/util.tsx +1 -1
  175. package/dist/lib/browser/MarkdownSettings-62YSRY7L.mjs.map +0 -7
  176. package/dist/lib/browser/chunk-4KOZEH2H.mjs.map +0 -7
  177. package/dist/lib/browser/chunk-QFPZONKP.mjs.map +0 -7
  178. package/dist/lib/browser/create-YL5ELZWP.mjs.map +0 -7
  179. package/dist/lib/browser/open-AFSOZZ6G.mjs.map +0 -7
  180. package/dist/lib/browser/update-HZNVYBMO.mjs.map +0 -7
  181. package/dist/lib/node-esm/MarkdownSettings-QMPISOEU.mjs.map +0 -7
  182. package/dist/lib/node-esm/chunk-3OPDJJJH.mjs.map +0 -7
  183. package/dist/lib/node-esm/chunk-JUGS6RKO.mjs.map +0 -7
  184. package/dist/lib/node-esm/create-SMQAIM3V.mjs.map +0 -7
  185. package/dist/lib/node-esm/open-SRWLLOKE.mjs.map +0 -7
  186. package/dist/lib/node-esm/update-4CELTLXK.mjs.map +0 -7
  187. package/dist/types/src/operations/update.d.ts.map +0 -1
@@ -6,16 +6,16 @@ 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 } from '@dxos/compute';
11
+ import { Operation } from '@dxos/compute';
13
12
  import { Database, Feed, Obj, Query, Ref } from '@dxos/echo';
14
13
  import { Collection } from '@dxos/echo';
15
14
  import { TestHelpers } from '@dxos/effect/testing';
15
+ import { AgentService } from '@dxos/functions-runtime';
16
+ import { AssistantTestLayer } from '@dxos/functions-runtime/testing';
16
17
  import { invariant } from '@dxos/invariant';
17
18
  import { ObjectId } from '@dxos/keys';
18
- import { Operation } from '@dxos/operation';
19
19
  import { Markdown } from '@dxos/plugin-markdown/types';
20
20
  import { HasSubject } from '@dxos/types';
21
21
  import { trim } from '@dxos/util';
@@ -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';
@@ -27,7 +27,7 @@ export const translations = [
27
27
  'choose-markdown-from-space-dialog.title': 'Choose one or more documents to add',
28
28
  'empty-choose-markdown-from-space.message': 'None available; try creating a new one instead?',
29
29
  'chooser-done.label': 'Add selected',
30
- 'editor.placeholder': 'Start typing…',
30
+ 'editor.placeholder': 'Enter text…',
31
31
  'toggle-view-mode.label': 'Toggle read-only',
32
32
  'upload-image.label': 'Upload image',
33
33
  'fallback.title': 'Untitled',
@@ -53,10 +53,10 @@ export const Settings = Schema.mutable(
53
53
  description: 'Show developer tools and diagnostics for the editor.',
54
54
  }),
55
55
  ),
56
- typewriter: Schema.optional(
56
+ snippets: Schema.optional(
57
57
  Schema.String.annotations({
58
- title: 'Typewriter script',
59
- description: 'Script to replay typed input for testing purposes.',
58
+ title: 'Snippets',
59
+ description: 'Input snippets to replay for testing purposes.',
60
60
  }),
61
61
  ),
62
62
  }),
@@ -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,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 } from '@dxos/react-ui';\nimport { Settings as SettingsForm, type SettingsFieldProps } from '@dxos/react-ui-form';\n\nimport { meta } from '#meta';\nimport { Markdown } from '#types';\n\nexport type MarkdownSettingsProps = AppSurface.SettingsArticleProps<Markdown.Settings>;\n\nconst TypewriterField = ({ value, onChange, readonly }: SettingsFieldProps<string>) => (\n <Input.TextArea disabled={readonly} rows={5} value={value ?? ''} onChange={(event) => onChange(event.target.value)} />\n);\n\nexport const MarkdownSettings = ({ settings, onSettingsChange }: MarkdownSettingsProps) => {\n return (\n <SettingsForm.Viewport>\n <SettingsForm.Section title={meta.name ?? 'Editor'}>\n <SettingsForm.FieldSet\n readonly={!onSettingsChange}\n schema={Markdown.Settings}\n visible={(path, values) => path !== 'typewriter' || !!values.debug}\n fieldMap={{ typewriter: TypewriterField }}\n values={settings}\n onValuesChanged={(values) => onSettingsChange?.(() => values)}\n />\n </SettingsForm.Section>\n </SettingsForm.Viewport>\n );\n};\n"],
5
- "mappings": ";;;AAIA,OAAOA,WAAW;AAGlB,SAASC,aAAa;AACtB,SAASC,YAAYC,oBAA6C;AAElE,SAASC,YAAY;AACrB,SAASC,gBAAgB;AAIzB,IAAMC,kBAAkB,CAAC,EAAEC,OAAOC,UAAUC,SAAQ,MAClD,sBAAA,cAACC,MAAMC,UAAQ;EAACC,UAAUH;EAAUI,MAAM;EAAGN,OAAOA,SAAS;EAAIC,UAAU,CAACM,UAAUN,SAASM,MAAMC,OAAOR,KAAK;;AAG5G,IAAMS,mBAAmB,CAAC,EAAEC,UAAUC,iBAAgB,MAAyB;AACpF,SACE,sBAAA,cAACC,aAAaC,UAAQ,MACpB,sBAAA,cAACD,aAAaE,SAAO;IAACC,OAAOC,KAAKC,QAAQ;KACxC,sBAAA,cAACL,aAAaM,UAAQ;IACpBhB,UAAU,CAACS;IACXQ,QAAQC,SAASC;IACjBC,SAAS,CAACC,MAAMC,WAAWD,SAAS,gBAAgB,CAAC,CAACC,OAAOC;IAC7DC,UAAU;MAAEC,YAAY5B;IAAgB;IACxCyB,QAAQd;IACRkB,iBAAiB,CAACJ,WAAWb,mBAAmB,MAAMa,MAAAA;;AAKhE;",
6
- "names": ["React", "Input", "Settings", "SettingsForm", "meta", "Markdown", "TypewriterField", "value", "onChange", "readonly", "Input", "TextArea", "disabled", "rows", "event", "target", "MarkdownSettings", "settings", "onSettingsChange", "SettingsForm", "Viewport", "Section", "title", "meta", "name", "FieldSet", "schema", "Markdown", "Settings", "visible", "path", "values", "debug", "fieldMap", "typewriter", "onValuesChanged"]
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.annotations({\n title: 'Default view mode',\n description: 'Set whether documents open in editing or read-only mode.',\n }),\n editorInputMode: Schema.optional(\n EditorInputMode.annotations({\n title: 'Editor input mode',\n description: 'Choose keyboard bindings for the editor.',\n }),\n ),\n toolbar: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Show toolbar',\n description: 'Display a formatting toolbar above the editor.',\n }),\n ),\n numberedHeadings: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Numbered headings',\n description: 'Automatically number heading levels in the document.',\n }),\n ),\n folding: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Folding',\n description: 'Allow collapsing and expanding sections by heading.',\n }),\n ),\n experimental: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Enable experimental features',\n description: 'Turn on features that are still in development.',\n }),\n ),\n debug: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Enable debugging features',\n description: 'Show developer tools and diagnostics for the editor.',\n }),\n ),\n typewriter: Schema.optional(\n Schema.String.annotations({\n title: 'Typewriter script',\n description: 'Script to replay typed input for testing purposes.',\n }),\n ),\n }),\n);\n\nexport interface Settings extends Schema.Schema.Type<typeof Settings> {}\n"],
5
- "mappings": "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",
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", "annotations", "title", "description", "editorInputMode", "optional", "EditorInputMode", "toolbar", "Boolean", "numberedHeadings", "folding", "experimental", "debug", "typewriter", "String", "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,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,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,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 } from '@dxos/react-ui';\nimport { Settings as SettingsForm, type SettingsFieldProps } from '@dxos/react-ui-form';\n\nimport { meta } from '#meta';\nimport { Markdown } from '#types';\n\nexport type MarkdownSettingsProps = AppSurface.SettingsArticleProps<Markdown.Settings>;\n\nconst TypewriterField = ({ value, onChange, readonly }: SettingsFieldProps<string>) => (\n <Input.TextArea disabled={readonly} rows={5} value={value ?? ''} onChange={(event) => onChange(event.target.value)} />\n);\n\nexport const MarkdownSettings = ({ settings, onSettingsChange }: MarkdownSettingsProps) => {\n return (\n <SettingsForm.Viewport>\n <SettingsForm.Section title={meta.name ?? 'Editor'}>\n <SettingsForm.FieldSet\n readonly={!onSettingsChange}\n schema={Markdown.Settings}\n visible={(path, values) => path !== 'typewriter' || !!values.debug}\n fieldMap={{ typewriter: TypewriterField }}\n values={settings}\n onValuesChanged={(values) => onSettingsChange?.(() => values)}\n />\n </SettingsForm.Section>\n </SettingsForm.Viewport>\n );\n};\n"],
5
- "mappings": ";;;;AAIA,OAAOA,WAAW;AAGlB,SAASC,aAAa;AACtB,SAASC,YAAYC,oBAA6C;AAElE,SAASC,YAAY;AACrB,SAASC,gBAAgB;AAIzB,IAAMC,kBAAkB,CAAC,EAAEC,OAAOC,UAAUC,SAAQ,MAClD,sBAAA,cAACC,MAAMC,UAAQ;EAACC,UAAUH;EAAUI,MAAM;EAAGN,OAAOA,SAAS;EAAIC,UAAU,CAACM,UAAUN,SAASM,MAAMC,OAAOR,KAAK;;AAG5G,IAAMS,mBAAmB,CAAC,EAAEC,UAAUC,iBAAgB,MAAyB;AACpF,SACE,sBAAA,cAACC,aAAaC,UAAQ,MACpB,sBAAA,cAACD,aAAaE,SAAO;IAACC,OAAOC,KAAKC,QAAQ;KACxC,sBAAA,cAACL,aAAaM,UAAQ;IACpBhB,UAAU,CAACS;IACXQ,QAAQC,SAASC;IACjBC,SAAS,CAACC,MAAMC,WAAWD,SAAS,gBAAgB,CAAC,CAACC,OAAOC;IAC7DC,UAAU;MAAEC,YAAY5B;IAAgB;IACxCyB,QAAQd;IACRkB,iBAAiB,CAACJ,WAAWb,mBAAmB,MAAMa,MAAAA;;AAKhE;",
6
- "names": ["React", "Input", "Settings", "SettingsForm", "meta", "Markdown", "TypewriterField", "value", "onChange", "readonly", "Input", "TextArea", "disabled", "rows", "event", "target", "MarkdownSettings", "settings", "onSettingsChange", "SettingsForm", "Viewport", "Section", "title", "meta", "name", "FieldSet", "schema", "Markdown", "Settings", "visible", "path", "values", "debug", "fieldMap", "typewriter", "onValuesChanged"]
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.annotations({\n title: 'Default view mode',\n description: 'Set whether documents open in editing or read-only mode.',\n }),\n editorInputMode: Schema.optional(\n EditorInputMode.annotations({\n title: 'Editor input mode',\n description: 'Choose keyboard bindings for the editor.',\n }),\n ),\n toolbar: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Show toolbar',\n description: 'Display a formatting toolbar above the editor.',\n }),\n ),\n numberedHeadings: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Numbered headings',\n description: 'Automatically number heading levels in the document.',\n }),\n ),\n folding: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Folding',\n description: 'Allow collapsing and expanding sections by heading.',\n }),\n ),\n experimental: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Enable experimental features',\n description: 'Turn on features that are still in development.',\n }),\n ),\n debug: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Enable debugging features',\n description: 'Show developer tools and diagnostics for the editor.',\n }),\n ),\n typewriter: Schema.optional(\n Schema.String.annotations({\n title: 'Typewriter script',\n description: 'Script to replay typed input for testing purposes.',\n }),\n ),\n }),\n);\n\nexport interface Settings extends Schema.Schema.Type<typeof Settings> {}\n"],
5
- "mappings": "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",
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", "annotations", "title", "description", "editorInputMode", "optional", "EditorInputMode", "toolbar", "Boolean", "numberedHeadings", "folding", "experimental", "debug", "typewriter", "String", "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,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,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 +0,0 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/operations/update.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,QAAA,MAAM,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,OAAO,MAAM,CAmCjD,CAAC;AAEF,eAAe,OAAO,CAAC"}