@dxos/plugin-markdown 0.8.4-main.fcfe5033a5 → 0.8.4-staging.60fe92afc8
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.
- package/LICENSE +102 -5
- package/README.md +1 -1
- package/dist/lib/neutral/EditableMarkdownCard-AW7MD35U.mjs +34 -0
- package/dist/lib/neutral/EditableMarkdownCard-AW7MD35U.mjs.map +7 -0
- package/dist/lib/neutral/MarkdownArticle-LWT5RFFJ.mjs +126 -0
- package/dist/lib/neutral/MarkdownArticle-LWT5RFFJ.mjs.map +7 -0
- package/dist/lib/neutral/MarkdownCard-TBLIRDBO.mjs +108 -0
- package/dist/lib/neutral/MarkdownCard-TBLIRDBO.mjs.map +7 -0
- package/dist/lib/neutral/MarkdownPlugin.mjs +62 -0
- package/dist/lib/neutral/MarkdownPlugin.mjs.map +7 -0
- package/dist/lib/neutral/MarkdownPlugin.node.mjs +25 -0
- package/dist/lib/neutral/MarkdownPlugin.node.mjs.map +7 -0
- package/dist/lib/neutral/MarkdownPlugin.workerd.mjs +23 -0
- package/dist/lib/neutral/MarkdownPlugin.workerd.mjs.map +7 -0
- package/dist/lib/{browser/MarkdownSettings-62YSRY7L.mjs → neutral/MarkdownSettings-YCTZJL5V.mjs} +4 -4
- package/dist/lib/neutral/MarkdownSettings-YCTZJL5V.mjs.map +7 -0
- package/dist/lib/neutral/anchor-sort-UXN4RHFX.mjs +32 -0
- package/dist/lib/neutral/anchor-sort-UXN4RHFX.mjs.map +7 -0
- package/dist/lib/neutral/app-graph-builder-BWBA23FF.mjs +67 -0
- package/dist/lib/neutral/app-graph-builder-BWBA23FF.mjs.map +7 -0
- package/dist/lib/neutral/app-graph-serializer-EN5E3BMG.mjs +56 -0
- package/dist/lib/neutral/app-graph-serializer-EN5E3BMG.mjs.map +7 -0
- package/dist/lib/neutral/blueprint-definition-DSPXK77L.mjs +15 -0
- package/dist/lib/neutral/blueprint-definition-DSPXK77L.mjs.map +7 -0
- package/dist/lib/neutral/blueprints/index.mjs +8 -0
- package/dist/lib/neutral/capabilities/index.mjs +29 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/node.mjs +11 -0
- package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
- package/dist/lib/neutral/chunk-36QFEVOZ.mjs +30 -0
- package/dist/lib/neutral/chunk-36QFEVOZ.mjs.map +7 -0
- package/dist/lib/neutral/chunk-67DKWOKF.mjs +10 -0
- package/dist/lib/neutral/chunk-67DKWOKF.mjs.map +7 -0
- package/dist/lib/neutral/chunk-CIJD7P6X.mjs +8 -0
- package/dist/lib/neutral/chunk-CIJD7P6X.mjs.map +7 -0
- package/dist/lib/neutral/chunk-KDN4GKG2.mjs +98 -0
- package/dist/lib/neutral/chunk-KDN4GKG2.mjs.map +7 -0
- package/dist/lib/{browser/blueprints/index.mjs → neutral/chunk-LXNSKCPD.mjs} +10 -17
- package/dist/lib/neutral/chunk-LXNSKCPD.mjs.map +7 -0
- package/dist/lib/neutral/chunk-Y2LQRUU7.mjs +285 -0
- package/dist/lib/neutral/chunk-Y2LQRUU7.mjs.map +7 -0
- package/dist/lib/neutral/comment-config-EGY7RPPW.mjs +32 -0
- package/dist/lib/neutral/comment-config-EGY7RPPW.mjs.map +7 -0
- package/dist/lib/{browser → neutral/components}/index.mjs +33 -287
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +13 -0
- package/dist/lib/neutral/containers/index.mjs.map +7 -0
- package/dist/lib/neutral/create-JK35XC4R.mjs +29 -0
- package/dist/lib/neutral/create-JK35XC4R.mjs.map +7 -0
- package/dist/lib/{browser/create-markdown-LU5IDKMH.mjs → neutral/create-markdown-7MLE625M.mjs} +5 -7
- package/dist/lib/neutral/create-markdown-7MLE625M.mjs.map +7 -0
- package/dist/lib/neutral/create-object-MU2LGXG6.mjs +31 -0
- package/dist/lib/neutral/create-object-MU2LGXG6.mjs.map +7 -0
- package/dist/lib/neutral/hooks/index.mjs +317 -0
- package/dist/lib/neutral/hooks/index.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +48 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +8 -0
- package/dist/lib/neutral/navigation-resolver-3KBOMN4U.mjs +14 -0
- package/dist/lib/neutral/navigation-resolver-3KBOMN4U.mjs.map +7 -0
- package/dist/lib/{browser/open-AFSOZZ6G.mjs → neutral/open-5YC77C4O.mjs} +5 -6
- package/dist/lib/neutral/open-5YC77C4O.mjs.map +7 -0
- package/dist/lib/neutral/operation-handler-2ARMPBGZ.mjs +13 -0
- package/dist/lib/neutral/operation-handler-2ARMPBGZ.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +8 -0
- package/dist/lib/neutral/operations/index.mjs.map +7 -0
- package/dist/lib/neutral/plugin.mjs +16 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/neutral/react-surface-XYZJBKHZ.mjs +119 -0
- package/dist/lib/neutral/react-surface-XYZJBKHZ.mjs.map +7 -0
- package/dist/lib/neutral/scroll-to-anchor-GAFB7W55.mjs +38 -0
- package/dist/lib/neutral/scroll-to-anchor-GAFB7W55.mjs.map +7 -0
- package/dist/lib/neutral/set-view-mode-N7UHYMPG.mjs +24 -0
- package/dist/lib/neutral/set-view-mode-N7UHYMPG.mjs.map +7 -0
- package/dist/lib/neutral/settings-TDGDLCUR.mjs +34 -0
- package/dist/lib/neutral/settings-TDGDLCUR.mjs.map +7 -0
- package/dist/lib/neutral/state-5COCF5PN.mjs +44 -0
- package/dist/lib/neutral/state-5COCF5PN.mjs.map +7 -0
- package/dist/lib/neutral/testing.mjs +30 -0
- package/dist/lib/neutral/testing.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +44 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/neutral/types/index.mjs +16 -0
- package/dist/lib/neutral/types/index.mjs.map +7 -0
- package/dist/lib/{browser/update-HZNVYBMO.mjs → neutral/update-markdown-NNINDDV5.mjs} +9 -10
- package/dist/lib/neutral/update-markdown-NNINDDV5.mjs.map +7 -0
- package/dist/types/src/MarkdownPlugin.d.ts +1 -0
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/{cli/plugin.d.ts → MarkdownPlugin.node.d.ts} +2 -1
- package/dist/types/src/MarkdownPlugin.node.d.ts.map +1 -0
- package/dist/types/src/MarkdownPlugin.test.d.ts +2 -0
- package/dist/types/src/MarkdownPlugin.test.d.ts.map +1 -0
- package/dist/types/src/MarkdownPlugin.workerd.d.ts +4 -0
- package/dist/types/src/MarkdownPlugin.workerd.d.ts.map +1 -0
- package/dist/types/src/blueprints/markdown-blueprint.d.ts +2 -2
- package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -1
- package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +6 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +1 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
- package/dist/types/src/capabilities/comment-config.d.ts +6 -0
- package/dist/types/src/capabilities/comment-config.d.ts.map +1 -0
- package/dist/types/src/capabilities/create-object.d.ts +11 -0
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +15 -5
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/navigation-resolver.d.ts +6 -0
- package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/node.d.ts +7 -1
- package/dist/types/src/capabilities/node.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
- package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +2 -2
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +1 -1
- package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +14 -6
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +2 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +2 -2
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +46 -46
- package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -1
- package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.d.ts +15 -0
- package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.d.ts.map +1 -0
- package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.stories.d.ts +9 -0
- package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.stories.d.ts.map +1 -0
- package/dist/types/src/containers/EditableMarkdownCard/index.d.ts +3 -0
- package/dist/types/src/containers/EditableMarkdownCard/index.d.ts.map +1 -0
- package/dist/types/src/containers/{MarkdownContainer/MarkdownContainer.d.ts → MarkdownArticle/MarkdownArticle.d.ts} +14 -10
- package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts.map +1 -0
- package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts +97 -0
- package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts.map +1 -0
- package/dist/types/src/containers/MarkdownArticle/index.d.ts +3 -0
- package/dist/types/src/containers/MarkdownArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -1
- package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts +1 -1
- package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -1
- package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -1
- package/dist/types/src/containers/index.d.ts +3 -2
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -1
- package/dist/types/src/hooks/useExtensions.d.ts +2 -1
- package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
- package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +3 -4
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/create-markdown.d.ts +3 -3
- package/dist/types/src/operations/create-markdown.d.ts.map +1 -1
- package/dist/types/src/operations/create.d.ts +3 -3
- package/dist/types/src/operations/create.d.ts.map +1 -1
- package/dist/types/src/operations/index.d.ts +1 -2
- package/dist/types/src/operations/index.d.ts.map +1 -1
- package/dist/types/src/operations/open.d.ts +3 -3
- package/dist/types/src/operations/open.d.ts.map +1 -1
- package/dist/types/src/operations/scroll-to-anchor.d.ts +3 -3
- package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -1
- package/dist/types/src/operations/set-view-mode.d.ts +3 -3
- package/dist/types/src/operations/set-view-mode.d.ts.map +1 -1
- package/dist/types/src/operations/update-markdown.d.ts +5 -0
- package/dist/types/src/operations/update-markdown.d.ts.map +1 -0
- package/dist/types/src/paths.d.ts +3 -0
- package/dist/types/src/paths.d.ts.map +1 -0
- package/dist/types/src/plugin.d.ts +4 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/testing.d.ts +1 -0
- package/dist/types/src/testing.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +70 -51
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Markdown.d.ts +12 -10
- package/dist/types/src/types/Markdown.d.ts.map +1 -1
- package/dist/types/src/types/MarkdownCapabilities.d.ts +32 -0
- package/dist/types/src/types/MarkdownCapabilities.d.ts.map +1 -0
- package/dist/types/src/types/MarkdownEvents.d.ts +3 -0
- package/dist/types/src/types/MarkdownEvents.d.ts.map +1 -0
- package/dist/types/src/{operations/definitions.d.ts → types/MarkdownOperation.d.ts} +17 -17
- package/dist/types/src/types/MarkdownOperation.d.ts.map +1 -0
- package/dist/types/src/types/Settings.d.ts +14 -1
- package/dist/types/src/types/Settings.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts +3 -2
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +1 -0
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +1 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +127 -107
- package/src/MarkdownPlugin.node.ts +20 -0
- package/src/MarkdownPlugin.test.ts +26 -0
- package/src/MarkdownPlugin.tsx +12 -52
- package/src/MarkdownPlugin.workerd.ts +19 -0
- package/src/blueprints/markdown-blueprint.ts +8 -9
- package/src/capabilities/anchor-sort.ts +3 -3
- package/src/capabilities/app-graph-builder.ts +63 -0
- package/src/capabilities/app-graph-serializer.ts +9 -10
- package/src/capabilities/blueprint-definition.ts +6 -4
- package/src/capabilities/comment-config.ts +36 -0
- package/src/capabilities/create-object.ts +33 -0
- package/src/capabilities/index.ts +17 -2
- package/src/capabilities/navigation-resolver.ts +19 -0
- package/src/capabilities/node.ts +3 -1
- package/src/capabilities/operation-handler.ts +1 -1
- package/src/capabilities/react-surface.tsx +17 -10
- package/src/capabilities/state.ts +4 -4
- package/src/components/MarkdownEditor/FileUpload.tsx +42 -37
- package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +5 -4
- package/src/components/MarkdownEditor/MarkdownEditor.tsx +41 -30
- package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +4 -3
- package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +9 -6
- package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +2 -1
- package/src/components/MarkdownSettings/MarkdownSettings.tsx +3 -3
- package/src/containers/EditableMarkdownCard/EditableMarkdownCard.stories.tsx +86 -0
- package/src/containers/EditableMarkdownCard/EditableMarkdownCard.tsx +44 -0
- package/src/containers/EditableMarkdownCard/index.ts +6 -0
- package/src/containers/{MarkdownContainer/MarkdownContainer.stories.tsx → MarkdownArticle/MarkdownArticle.stories.tsx} +15 -9
- package/src/containers/{MarkdownContainer/MarkdownContainer.tsx → MarkdownArticle/MarkdownArticle.tsx} +8 -7
- package/src/containers/MarkdownArticle/index.ts +6 -0
- package/src/containers/MarkdownCard/MarkdownCard.stories.tsx +8 -7
- package/src/containers/MarkdownCard/MarkdownCard.tsx +29 -21
- package/src/containers/MarkdownCard/snippet.ts +3 -1
- package/src/containers/index.ts +3 -2
- package/src/hooks/useExtensions.tsx +13 -9
- package/src/hooks/useLinkQuery.ts +21 -35
- package/src/index.ts +3 -7
- package/src/meta.ts +17 -7
- package/src/operations/create-markdown.ts +3 -4
- package/src/operations/create.conversations.json +1 -1
- package/src/operations/create.test.ts +11 -13
- package/src/operations/create.ts +22 -9
- package/src/operations/index.ts +2 -4
- package/src/operations/open.ts +3 -3
- package/src/operations/scroll-to-anchor.ts +18 -16
- package/src/operations/set-view-mode.ts +3 -4
- package/src/operations/{update.ts → update-markdown.ts} +4 -4
- package/src/operations/update.conversations.json +1 -1
- package/src/operations/update.test.ts +14 -16
- package/src/paths.ts +11 -0
- package/src/plugin.ts +11 -0
- package/src/testing.ts +22 -9
- package/src/translations.ts +4 -3
- package/src/types/Markdown.ts +10 -11
- package/src/types/MarkdownCapabilities.ts +51 -0
- package/src/types/MarkdownEvents.ts +14 -0
- package/src/{operations/definitions.ts → types/MarkdownOperation.ts} +24 -11
- package/src/types/Settings.ts +23 -3
- package/src/types/index.ts +3 -2
- package/src/types/types.ts +4 -1
- package/src/util.tsx +2 -2
- package/dist/lib/browser/MarkdownSettings-62YSRY7L.mjs.map +0 -7
- package/dist/lib/browser/blueprints/index.mjs.map +0 -7
- package/dist/lib/browser/chunk-4KOZEH2H.mjs +0 -121
- package/dist/lib/browser/chunk-4KOZEH2H.mjs.map +0 -7
- package/dist/lib/browser/chunk-QFPZONKP.mjs +0 -158
- package/dist/lib/browser/chunk-QFPZONKP.mjs.map +0 -7
- package/dist/lib/browser/cli/index.mjs +0 -39
- package/dist/lib/browser/cli/index.mjs.map +0 -7
- package/dist/lib/browser/create-YL5ELZWP.mjs +0 -30
- package/dist/lib/browser/create-YL5ELZWP.mjs.map +0 -7
- package/dist/lib/browser/create-markdown-LU5IDKMH.mjs.map +0 -7
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/open-AFSOZZ6G.mjs.map +0 -7
- package/dist/lib/browser/operations/index.mjs +0 -14
- package/dist/lib/browser/operations/index.mjs.map +0 -7
- package/dist/lib/browser/scroll-to-anchor-IPXV32A6.mjs +0 -49
- package/dist/lib/browser/scroll-to-anchor-IPXV32A6.mjs.map +0 -7
- package/dist/lib/browser/set-view-mode-2QWB24RR.mjs +0 -26
- package/dist/lib/browser/set-view-mode-2QWB24RR.mjs.map +0 -7
- package/dist/lib/browser/types/index.mjs +0 -16
- package/dist/lib/browser/update-HZNVYBMO.mjs.map +0 -7
- package/dist/lib/node-esm/MarkdownSettings-QMPISOEU.mjs +0 -33
- package/dist/lib/node-esm/MarkdownSettings-QMPISOEU.mjs.map +0 -7
- package/dist/lib/node-esm/blueprints/index.mjs +0 -52
- package/dist/lib/node-esm/blueprints/index.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3OPDJJJH.mjs +0 -122
- package/dist/lib/node-esm/chunk-3OPDJJJH.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
- package/dist/lib/node-esm/chunk-JUGS6RKO.mjs +0 -159
- package/dist/lib/node-esm/chunk-JUGS6RKO.mjs.map +0 -7
- package/dist/lib/node-esm/cli/index.mjs +0 -40
- package/dist/lib/node-esm/cli/index.mjs.map +0 -7
- package/dist/lib/node-esm/create-SMQAIM3V.mjs +0 -31
- package/dist/lib/node-esm/create-SMQAIM3V.mjs.map +0 -7
- package/dist/lib/node-esm/create-markdown-X2OASYKG.mjs +0 -23
- package/dist/lib/node-esm/create-markdown-X2OASYKG.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -633
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/open-SRWLLOKE.mjs +0 -22
- package/dist/lib/node-esm/open-SRWLLOKE.mjs.map +0 -7
- package/dist/lib/node-esm/operations/index.mjs +0 -15
- package/dist/lib/node-esm/operations/index.mjs.map +0 -7
- package/dist/lib/node-esm/scroll-to-anchor-M76GXKYQ.mjs +0 -50
- package/dist/lib/node-esm/scroll-to-anchor-M76GXKYQ.mjs.map +0 -7
- package/dist/lib/node-esm/set-view-mode-6BB6KIDS.mjs +0 -27
- package/dist/lib/node-esm/set-view-mode-6BB6KIDS.mjs.map +0 -7
- package/dist/lib/node-esm/types/index.mjs +0 -17
- package/dist/lib/node-esm/update-4CELTLXK.mjs +0 -46
- package/dist/lib/node-esm/update-4CELTLXK.mjs.map +0 -7
- package/dist/types/src/capabilities/artifact-definition.d.ts +0 -5
- package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
- package/dist/types/src/cli/index.d.ts +0 -2
- package/dist/types/src/cli/index.d.ts.map +0 -1
- package/dist/types/src/cli/plugin.d.ts.map +0 -1
- package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +0 -1
- package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts +0 -77
- package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +0 -1
- package/dist/types/src/containers/MarkdownContainer/index.d.ts +0 -3
- package/dist/types/src/containers/MarkdownContainer/index.d.ts.map +0 -1
- package/dist/types/src/operations/definitions.d.ts.map +0 -1
- package/dist/types/src/operations/update.d.ts +0 -5
- package/dist/types/src/operations/update.d.ts.map +0 -1
- package/dist/types/src/types/capabilities.d.ts +0 -33
- package/dist/types/src/types/capabilities.d.ts.map +0 -1
- package/dist/types/src/types/events.d.ts +0 -5
- package/dist/types/src/types/events.d.ts.map +0 -1
- package/src/capabilities/artifact-definition.ts +0 -110
- package/src/cli/index.ts +0 -5
- package/src/cli/plugin.ts +0 -39
- package/src/containers/MarkdownContainer/index.ts +0 -6
- package/src/types/capabilities.ts +0 -50
- package/src/types/events.ts +0 -14
- /package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
- /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs.map +0 -0
- /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
- /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/meta.mjs.map} +0 -0
|
@@ -1,253 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
MarkdownCapabilities,
|
|
3
|
-
MarkdownEvents,
|
|
4
|
-
MarkdownStateSchema,
|
|
5
|
-
Markdown_exports,
|
|
6
|
-
Settings_exports
|
|
7
|
-
} from "./chunk-4KOZEH2H.mjs";
|
|
8
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
9
|
-
|
|
10
|
-
// src/meta.ts
|
|
11
|
-
import { trim } from "@dxos/util";
|
|
12
|
-
var meta = {
|
|
13
|
-
id: "org.dxos.plugin.markdown",
|
|
14
|
-
name: "Markdown",
|
|
15
|
-
description: trim`
|
|
16
|
-
Full-featured collaborative markdown editor with real-time editing, inline comments, and rich formatting.
|
|
17
|
-
Supports AI-powered editing assistance and seamlessly integrates with other workspace objects.
|
|
18
|
-
`,
|
|
19
|
-
icon: "ph--text-aa--regular",
|
|
20
|
-
iconHue: "indigo",
|
|
21
|
-
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown",
|
|
22
|
-
screenshots: [
|
|
23
|
-
"https://dxos.network/plugin-details-markdown-dark.png"
|
|
24
|
-
]
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
// src/util.tsx
|
|
28
|
-
import { debounce } from "@dxos/async";
|
|
29
|
-
import { Obj } from "@dxos/echo";
|
|
30
|
-
import { Markdown } from "#types";
|
|
31
|
-
var isEditorModel = (data) => data && typeof data === "object" && "id" in data && typeof data.id === "string" && "text" in data && typeof data.text === "string";
|
|
32
|
-
var isMarkdownProperties = (data) => Obj.isObject(data) ? true : data && typeof data === "object" ? "title" in data && typeof data.title === "string" : false;
|
|
33
|
-
var nonTitleChars = /[^\w ]/g;
|
|
34
|
-
var skipPatterns = [
|
|
35
|
-
/^!\[/,
|
|
36
|
-
/^---\s*$/,
|
|
37
|
-
/^```/,
|
|
38
|
-
/^\s*$/
|
|
39
|
-
];
|
|
40
|
-
var titlePatterns = [
|
|
41
|
-
/^#{1,6}\s+(.+)/
|
|
42
|
-
];
|
|
43
|
-
var getFallbackName = (content = "") => {
|
|
44
|
-
const len = content.length;
|
|
45
|
-
let i = 0;
|
|
46
|
-
while (i < len) {
|
|
47
|
-
let lineEnd = i;
|
|
48
|
-
while (lineEnd < len && content[lineEnd] !== "\n") {
|
|
49
|
-
lineEnd++;
|
|
50
|
-
}
|
|
51
|
-
const line = content.slice(i, lineEnd).trim();
|
|
52
|
-
i = lineEnd + 1;
|
|
53
|
-
if (skipPatterns.some((pattern) => pattern.test(line))) {
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
for (const pattern of titlePatterns) {
|
|
57
|
-
const match = pattern.exec(line);
|
|
58
|
-
if (match) {
|
|
59
|
-
const text2 = match[1].replaceAll(nonTitleChars, "").trim();
|
|
60
|
-
if (text2.length > 0) {
|
|
61
|
-
return text2;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
const maxLen = 32;
|
|
66
|
-
const text = line.replaceAll(nonTitleChars, "").trim();
|
|
67
|
-
if (text.length > 0) {
|
|
68
|
-
if (text.length > maxLen) {
|
|
69
|
-
const words = text.split(/\s+/);
|
|
70
|
-
let result = "";
|
|
71
|
-
for (const word of words) {
|
|
72
|
-
const next = result.length === 0 ? word : result + " " + word;
|
|
73
|
-
if (next.length > maxLen) {
|
|
74
|
-
break;
|
|
75
|
-
}
|
|
76
|
-
result = next;
|
|
77
|
-
}
|
|
78
|
-
return result + "\u2026";
|
|
79
|
-
}
|
|
80
|
-
return text;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return "";
|
|
84
|
-
};
|
|
85
|
-
var getContentSnippet = (content = "", maxLines = 3) => {
|
|
86
|
-
const abstract = content.split("\n").filter((line) => !line.startsWith("!")).filter((line) => line.trim() !== "");
|
|
87
|
-
return abstract.slice(0, maxLines).join("\n") ?? "";
|
|
88
|
-
};
|
|
89
|
-
var setFallbackName = debounce((doc, content = "") => {
|
|
90
|
-
const name = getFallbackName(content);
|
|
91
|
-
if (doc.fallbackName !== name) {
|
|
92
|
-
Obj.change(doc, (doc2) => {
|
|
93
|
-
doc2.fallbackName = name;
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}, 200);
|
|
97
|
-
var serializer = {
|
|
98
|
-
serialize: async ({ object }) => {
|
|
99
|
-
const { content } = await object.content.load();
|
|
100
|
-
return JSON.stringify({
|
|
101
|
-
name: object.name,
|
|
102
|
-
fallbackName: object.fallbackName,
|
|
103
|
-
content
|
|
104
|
-
});
|
|
105
|
-
},
|
|
106
|
-
deserialize: async ({ content: serialized }) => {
|
|
107
|
-
const { name, fallbackName, content } = JSON.parse(serialized);
|
|
108
|
-
return Markdown.make({
|
|
109
|
-
name,
|
|
110
|
-
fallbackName,
|
|
111
|
-
content
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
// src/MarkdownPlugin.tsx
|
|
117
|
-
import * as Effect from "effect/Effect";
|
|
118
|
-
import * as Option from "effect/Option";
|
|
119
|
-
import { Plugin } from "@dxos/app-framework";
|
|
120
|
-
import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
|
|
121
|
-
import { Annotation, Ref } from "@dxos/echo";
|
|
122
|
-
import { createDocAccessor, getTextInRange } from "@dxos/echo-db";
|
|
123
|
-
import { Operation } from "@dxos/operation";
|
|
124
|
-
import { SpaceOperation } from "@dxos/plugin-space/operations";
|
|
125
|
-
import { translations as editorTranslations2 } from "@dxos/react-ui-editor";
|
|
126
|
-
import { Text } from "@dxos/schema";
|
|
127
|
-
import { MarkdownBlueprint } from "#blueprints";
|
|
128
|
-
import { AnchorSort, AppGraphSerializer, BlueprintDefinition, MarkdownSettings, MarkdownState, OperationHandler, ReactSurface } from "#capabilities";
|
|
129
|
-
import { meta as meta3 } from "#meta";
|
|
130
|
-
import { MarkdownOperation } from "#operations";
|
|
131
|
-
import { Markdown as Markdown3, MarkdownEvents as MarkdownEvents2 } from "#types";
|
|
132
|
-
|
|
133
|
-
// src/translations.ts
|
|
134
|
-
import { translations as editorTranslations } from "@dxos/react-ui-editor";
|
|
135
|
-
import { meta as meta2 } from "#meta";
|
|
136
|
-
import { Markdown as Markdown2 } from "#types";
|
|
137
|
-
var translations = [
|
|
138
|
-
{
|
|
139
|
-
"en-US": {
|
|
140
|
-
[Markdown2.Document.typename]: {
|
|
141
|
-
"typename.label": "Document",
|
|
142
|
-
"typename.label_zero": "Documents",
|
|
143
|
-
"typename.label_one": "Document",
|
|
144
|
-
"typename.label_other": "Documents",
|
|
145
|
-
"object-name.placeholder": "New document",
|
|
146
|
-
"add-object.label": "Add document",
|
|
147
|
-
"rename-object.label": "Rename document",
|
|
148
|
-
"delete-object.label": "Delete document",
|
|
149
|
-
"object-deleted.label": "Document deleted"
|
|
150
|
-
},
|
|
151
|
-
[meta2.id]: {
|
|
152
|
-
"plugin.name": "Editor",
|
|
153
|
-
"choose-markdown-from-space-dialog.title": "Choose one or more documents to add",
|
|
154
|
-
"empty-choose-markdown-from-space.message": "None available; try creating a new one instead?",
|
|
155
|
-
"chooser-done.label": "Add selected",
|
|
156
|
-
"editor.placeholder": "Start typing\u2026",
|
|
157
|
-
"toggle-view-mode.label": "Toggle read-only",
|
|
158
|
-
"upload-image.label": "Upload image",
|
|
159
|
-
"fallback.title": "Untitled",
|
|
160
|
-
"navigate-to-document.label": "Open document",
|
|
161
|
-
"words.label": "words",
|
|
162
|
-
"words.label_zero": "words",
|
|
163
|
-
"words.label_one": "word",
|
|
164
|
-
"words.label_other": "words"
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
},
|
|
168
|
-
...editorTranslations
|
|
169
|
-
];
|
|
170
|
-
|
|
171
|
-
// src/MarkdownPlugin.tsx
|
|
172
|
-
var MarkdownPlugin = Plugin.define(meta3).pipe(AppPlugin.addBlueprintDefinitionModule({
|
|
173
|
-
activate: BlueprintDefinition
|
|
174
|
-
}), AppPlugin.addMetadataModule({
|
|
175
|
-
metadata: {
|
|
176
|
-
id: Markdown3.Document.typename,
|
|
177
|
-
metadata: {
|
|
178
|
-
// TODO(dmaretskyi): Remove label, icon and iconHue and query them of schema.
|
|
179
|
-
label: (object) => object.name || object.fallbackName,
|
|
180
|
-
icon: Annotation.IconAnnotation.get(Markdown3.Document).pipe(Option.getOrThrow).icon,
|
|
181
|
-
iconHue: Annotation.IconAnnotation.get(Markdown3.Document).pipe(Option.getOrThrow).hue ?? "white",
|
|
182
|
-
blueprints: [
|
|
183
|
-
MarkdownBlueprint.key
|
|
184
|
-
],
|
|
185
|
-
graphProps: {
|
|
186
|
-
managesAutofocus: true
|
|
187
|
-
},
|
|
188
|
-
// TODO(wittjosiah): Move out of metadata.
|
|
189
|
-
loadReferences: async (doc) => await Ref.Array.loadAll([
|
|
190
|
-
doc.content
|
|
191
|
-
]),
|
|
192
|
-
serializer,
|
|
193
|
-
// TODO(wittjosiah): Consider how to do generic comments without these.
|
|
194
|
-
comments: "anchored",
|
|
195
|
-
selectionMode: "multi-range",
|
|
196
|
-
getAnchorLabel: (doc, anchor) => {
|
|
197
|
-
if (doc.content) {
|
|
198
|
-
const [start, end] = anchor.split(":");
|
|
199
|
-
return getTextInRange(createDocAccessor(doc.content.target, [
|
|
200
|
-
"content"
|
|
201
|
-
]), start, end);
|
|
202
|
-
}
|
|
203
|
-
},
|
|
204
|
-
createObject: (props, options) => Effect.gen(function* () {
|
|
205
|
-
const object = Markdown3.make(props);
|
|
206
|
-
return yield* Operation.invoke(SpaceOperation.AddObject, {
|
|
207
|
-
object,
|
|
208
|
-
target: options.target,
|
|
209
|
-
hidden: true,
|
|
210
|
-
targetNodeId: options.targetNodeId
|
|
211
|
-
});
|
|
212
|
-
}),
|
|
213
|
-
scrollToAnchor: MarkdownOperation.ScrollToAnchor
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}), AppPlugin.addOperationHandlerModule({
|
|
217
|
-
activate: OperationHandler
|
|
218
|
-
}), AppPlugin.addSchemaModule({
|
|
219
|
-
schema: [
|
|
220
|
-
Markdown3.Document,
|
|
221
|
-
Text.Text
|
|
222
|
-
]
|
|
223
|
-
}), AppPlugin.addSurfaceModule({
|
|
224
|
-
activate: ReactSurface,
|
|
225
|
-
firesBeforeActivation: [
|
|
226
|
-
MarkdownEvents2.SetupExtensions
|
|
227
|
-
]
|
|
228
|
-
}), AppPlugin.addTranslationsModule({
|
|
229
|
-
translations: [
|
|
230
|
-
...translations,
|
|
231
|
-
...editorTranslations2
|
|
232
|
-
]
|
|
233
|
-
}), Plugin.addModule({
|
|
234
|
-
activatesOn: AppActivationEvents.SetupSettings,
|
|
235
|
-
activate: MarkdownSettings
|
|
236
|
-
}), Plugin.addModule({
|
|
237
|
-
id: "state",
|
|
238
|
-
// TODO(wittjosiah): Does not integrate with settings store.
|
|
239
|
-
// Should this be a different event?
|
|
240
|
-
// Should settings store be renamed to be more generic?
|
|
241
|
-
activatesOn: AppActivationEvents.SetupSettings,
|
|
242
|
-
activate: MarkdownState
|
|
243
|
-
}), Plugin.addModule({
|
|
244
|
-
activatesOn: AppActivationEvents.AppGraphReady,
|
|
245
|
-
activate: AppGraphSerializer
|
|
246
|
-
}), Plugin.addModule({
|
|
247
|
-
// TODO(wittjosiah): More relevant event?
|
|
248
|
-
activatesOn: AppActivationEvents.AppGraphReady,
|
|
249
|
-
activate: AnchorSort
|
|
250
|
-
}), Plugin.make);
|
|
1
|
+
import "../chunk-J5LGTIGS.mjs";
|
|
251
2
|
|
|
252
3
|
// src/components/index.ts
|
|
253
4
|
import { lazy } from "react";
|
|
@@ -258,11 +9,11 @@ import React4, { useCallback as useCallback3, useMemo as useMemo2, useState as u
|
|
|
258
9
|
import { createPortal as createPortal2 } from "react-dom";
|
|
259
10
|
import { Surface } from "@dxos/app-framework/ui";
|
|
260
11
|
import { AppSurface } from "@dxos/app-toolkit/ui";
|
|
261
|
-
import { Obj
|
|
262
|
-
import {
|
|
12
|
+
import { Obj } from "@dxos/echo";
|
|
13
|
+
import { URI } from "@dxos/keys";
|
|
263
14
|
import { useClient } from "@dxos/react-client";
|
|
15
|
+
import { composable as composable2, composableProps as composableProps2 } from "@dxos/react-ui";
|
|
264
16
|
import { createEditorController, useEditorContext } from "@dxos/react-ui-editor";
|
|
265
|
-
import { composable as composable2, composableProps as composableProps2 } from "@dxos/ui-theme";
|
|
266
17
|
import { isNonNullable } from "@dxos/util";
|
|
267
18
|
import { useEditorMenuOptions, useExtensions } from "#hooks";
|
|
268
19
|
|
|
@@ -272,13 +23,13 @@ import React, { forwardRef, useCallback, useContext, useEffect, useImperativeHan
|
|
|
272
23
|
import { useCapabilities } from "@dxos/app-framework/ui";
|
|
273
24
|
import { useThemeContext, useTranslation } from "@dxos/react-ui";
|
|
274
25
|
import { useTextEditor } from "@dxos/react-ui-editor";
|
|
275
|
-
import { mobileSlots, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, documentSlots, formattingListener, processEditorPayload, editorClassNames } from "@dxos/ui-editor";
|
|
26
|
+
import { mobileSlots, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, documentSlots, formattingListener, processEditorPayload, editorClassNames, scrollbarAutohide } from "@dxos/ui-editor";
|
|
276
27
|
import { mx } from "@dxos/ui-theme";
|
|
277
28
|
import { isTruthy } from "@dxos/util";
|
|
278
|
-
import { meta
|
|
279
|
-
import { MarkdownCapabilities
|
|
29
|
+
import { meta } from "#meta";
|
|
30
|
+
import { MarkdownCapabilities } from "#types";
|
|
280
31
|
var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attendableId, role, compact, viewMode, initialValue, editorStateStore, toolbarState, extensions, slots, onFileUpload }, forwardedRef) => {
|
|
281
|
-
const { t } = useTranslation(
|
|
32
|
+
const { t } = useTranslation(meta.id);
|
|
282
33
|
const { themeMode } = useThemeContext();
|
|
283
34
|
const registry = useContext(RegistryContext);
|
|
284
35
|
const updateToolbarState = useCallback((formatting) => {
|
|
@@ -316,6 +67,7 @@ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attend
|
|
|
316
67
|
syntaxHighlighting: true
|
|
317
68
|
}),
|
|
318
69
|
createMarkdownExtensions(),
|
|
70
|
+
scrollbarAutohide(),
|
|
319
71
|
toolbarState && formattingListener(updateToolbarState),
|
|
320
72
|
role !== "section" && onFileUpload && dropFile({
|
|
321
73
|
// TODO(wittjosiah): Factor out to file uploader plugin.
|
|
@@ -336,12 +88,13 @@ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attend
|
|
|
336
88
|
id,
|
|
337
89
|
viewMode,
|
|
338
90
|
themeMode,
|
|
339
|
-
extensions
|
|
91
|
+
extensions,
|
|
92
|
+
compact
|
|
340
93
|
]);
|
|
341
94
|
useImperativeHandle(forwardedRef, () => editorView, [
|
|
342
95
|
editorView
|
|
343
96
|
]);
|
|
344
|
-
const [editorViewRegistry] = useCapabilities(
|
|
97
|
+
const [editorViewRegistry] = useCapabilities(MarkdownCapabilities.EditorViews);
|
|
345
98
|
useEffect(() => {
|
|
346
99
|
if (editorView && editorViewRegistry) {
|
|
347
100
|
editorViewRegistry.register(attendableId ?? id, editorView, id);
|
|
@@ -357,7 +110,6 @@ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attend
|
|
|
357
110
|
return /* @__PURE__ */ React.createElement("div", {
|
|
358
111
|
...focusAttributes,
|
|
359
112
|
className: mx(editorClassNames(role), classNames),
|
|
360
|
-
role: "none",
|
|
361
113
|
"data-testid": "composer.markdownRoot",
|
|
362
114
|
"data-popover-collision-boundary": true,
|
|
363
115
|
ref: parentRef
|
|
@@ -376,8 +128,8 @@ var useTest = (view) => {
|
|
|
376
128
|
|
|
377
129
|
// src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
|
|
378
130
|
import React3, { useCallback as useCallback2, useState } from "react";
|
|
131
|
+
import { composable, composableProps } from "@dxos/react-ui";
|
|
379
132
|
import { Editor } from "@dxos/react-ui-editor";
|
|
380
|
-
import { composable, composableProps } from "@dxos/ui-theme";
|
|
381
133
|
|
|
382
134
|
// src/components/MarkdownEditor/FileUpload.tsx
|
|
383
135
|
import React2, { forwardRef as forwardRef2, useEffect as useEffect2, useImperativeHandle as useImperativeHandle2 } from "react";
|
|
@@ -390,7 +142,7 @@ var IMAGE_FILES = [
|
|
|
390
142
|
".png",
|
|
391
143
|
".gif"
|
|
392
144
|
];
|
|
393
|
-
var FileUpload = /* @__PURE__ */ forwardRef2(({
|
|
145
|
+
var FileUpload = /* @__PURE__ */ forwardRef2(({ getView, onFileUpload }, forwardedRef) => {
|
|
394
146
|
const { acceptedFiles, open, inputRef } = useDropzone({
|
|
395
147
|
disabled: !onFileUpload,
|
|
396
148
|
multiple: false,
|
|
@@ -401,8 +153,12 @@ var FileUpload = /* @__PURE__ */ forwardRef2(({ editorView, onFileUpload }, forw
|
|
|
401
153
|
});
|
|
402
154
|
useImperativeHandle2(forwardedRef, () => open, []);
|
|
403
155
|
useEffect2(() => {
|
|
404
|
-
if (
|
|
156
|
+
if (acceptedFiles.length && onFileUpload) {
|
|
405
157
|
requestAnimationFrame(async () => {
|
|
158
|
+
const editorView = getView?.();
|
|
159
|
+
if (!editorView) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
406
162
|
const f = acceptedFiles[0];
|
|
407
163
|
const file = new File([
|
|
408
164
|
f
|
|
@@ -420,7 +176,7 @@ var FileUpload = /* @__PURE__ */ forwardRef2(({ editorView, onFileUpload }, forw
|
|
|
420
176
|
});
|
|
421
177
|
}
|
|
422
178
|
}, [
|
|
423
|
-
|
|
179
|
+
getView,
|
|
424
180
|
acceptedFiles,
|
|
425
181
|
onFileUpload
|
|
426
182
|
]);
|
|
@@ -433,11 +189,11 @@ var FileUpload = /* @__PURE__ */ forwardRef2(({ editorView, onFileUpload }, forw
|
|
|
433
189
|
});
|
|
434
190
|
|
|
435
191
|
// src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
|
|
436
|
-
var MarkdownEditorToolbar = composable(({ id, role,
|
|
192
|
+
var MarkdownEditorToolbar = composable(({ id, role, getView, customActions, onAction, onFileUpload, onViewModeChange, ...props }, forwardedRef) => {
|
|
437
193
|
const { className, ...rest } = composableProps(props);
|
|
438
194
|
const [upload, setUpload] = useState(null);
|
|
439
195
|
const uploadRef = useCallback2((next) => setUpload(() => next), []);
|
|
440
|
-
if (!
|
|
196
|
+
if (!getView?.()) {
|
|
441
197
|
return /* @__PURE__ */ React3.createElement("div", {
|
|
442
198
|
className,
|
|
443
199
|
...rest,
|
|
@@ -445,7 +201,6 @@ var MarkdownEditorToolbar = composable(({ id, role, editorView, customActions, o
|
|
|
445
201
|
});
|
|
446
202
|
}
|
|
447
203
|
return /* @__PURE__ */ React3.createElement("div", {
|
|
448
|
-
role: "none",
|
|
449
204
|
className: "contents",
|
|
450
205
|
ref: forwardedRef
|
|
451
206
|
}, /* @__PURE__ */ React3.createElement(Editor.Toolbar, {
|
|
@@ -459,7 +214,7 @@ var MarkdownEditorToolbar = composable(({ id, role, editorView, customActions, o
|
|
|
459
214
|
onViewModeChange
|
|
460
215
|
}), onFileUpload && /* @__PURE__ */ React3.createElement(FileUpload, {
|
|
461
216
|
ref: uploadRef,
|
|
462
|
-
|
|
217
|
+
getView,
|
|
463
218
|
onFileUpload
|
|
464
219
|
}));
|
|
465
220
|
});
|
|
@@ -469,7 +224,7 @@ var [MarkdownEditorContextProvider, useMarkdownEditorContext] = createContext("M
|
|
|
469
224
|
var MarkdownEditorProvider = ({ children, id, attendableId, object, settings, compact, viewMode, selectionManager, editorStateStore, extensions: extensionsProp, slashCommandGroups, onLinkQuery, onSelectObject, onAction, onFileUpload, onViewModeChange }) => {
|
|
470
225
|
const [previewBlocks, setPreviewBlocks] = useState2([]);
|
|
471
226
|
const previewOptions = useMemo2(() => ({
|
|
472
|
-
db:
|
|
227
|
+
db: Obj.isObject(object) ? Obj.getDatabase(object) : void 0,
|
|
473
228
|
addBlockContainer: (block) => {
|
|
474
229
|
setPreviewBlocks((prev) => [
|
|
475
230
|
...prev,
|
|
@@ -544,8 +299,8 @@ var MarkdownEditorProvider = ({ children, id, attendableId, object, settings, co
|
|
|
544
299
|
};
|
|
545
300
|
MarkdownEditorProvider.displayName = "MarkdownEditor.Provider";
|
|
546
301
|
var MARKDOWN_EDITOR_CONTENT_NAME = "MarkdownEditor.Content";
|
|
547
|
-
var MarkdownEditorContent2 = composable2(({ ...props }, _forwardedRef) => {
|
|
548
|
-
const { id, attendableId, compact, viewMode, onFileUpload } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
|
|
302
|
+
var MarkdownEditorContent2 = composable2(({ compact: compactProp, ...props }, _forwardedRef) => {
|
|
303
|
+
const { id, attendableId, compact = compactProp, viewMode, onFileUpload } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
|
|
549
304
|
const { extensions, setController, state } = useEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
|
|
550
305
|
const handleRef = useCallback3((view) => {
|
|
551
306
|
setController(createEditorController(view));
|
|
@@ -569,10 +324,13 @@ var MARKDOWN_EDITOR_TOOLBAR_NAME = "MarkdownEditor.Toolbar";
|
|
|
569
324
|
var MarkdownEditorToolbar2 = (props) => {
|
|
570
325
|
const { id, attendableId, onAction, onFileUpload, onViewModeChange } = useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
|
|
571
326
|
const { controller } = useEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
|
|
327
|
+
const getView = useCallback3(() => controller?.view ?? null, [
|
|
328
|
+
controller
|
|
329
|
+
]);
|
|
572
330
|
return /* @__PURE__ */ React4.createElement(MarkdownEditorToolbar, {
|
|
573
331
|
...props,
|
|
574
332
|
id: attendableId ?? id,
|
|
575
|
-
|
|
333
|
+
getView,
|
|
576
334
|
onAction,
|
|
577
335
|
onFileUpload,
|
|
578
336
|
onViewModeChange
|
|
@@ -591,7 +349,7 @@ var MarkdownEditorBlocks = (_props) => {
|
|
|
591
349
|
MarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;
|
|
592
350
|
var PreviewBlock = ({ el, link }) => {
|
|
593
351
|
const client = useClient();
|
|
594
|
-
const dxn =
|
|
352
|
+
const dxn = URI.make(link.dxn);
|
|
595
353
|
const subject = client.graph.makeRef(dxn).target;
|
|
596
354
|
const data = useMemo2(() => ({
|
|
597
355
|
subject
|
|
@@ -611,22 +369,10 @@ var MarkdownEditor = {
|
|
|
611
369
|
};
|
|
612
370
|
|
|
613
371
|
// src/components/index.ts
|
|
614
|
-
var
|
|
372
|
+
var MarkdownSettings = lazy(() => import("../MarkdownSettings-YCTZJL5V.mjs"));
|
|
615
373
|
export {
|
|
616
|
-
Markdown_exports as Markdown,
|
|
617
|
-
MarkdownCapabilities,
|
|
618
374
|
MarkdownEditor,
|
|
619
375
|
MarkdownEditorProvider,
|
|
620
|
-
|
|
621
|
-
MarkdownPlugin,
|
|
622
|
-
MarkdownStateSchema,
|
|
623
|
-
Settings_exports as Settings,
|
|
624
|
-
getContentSnippet,
|
|
625
|
-
getFallbackName,
|
|
626
|
-
isEditorModel,
|
|
627
|
-
isMarkdownProperties,
|
|
628
|
-
meta,
|
|
629
|
-
serializer,
|
|
630
|
-
setFallbackName
|
|
376
|
+
MarkdownSettings
|
|
631
377
|
};
|
|
632
378
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/index.ts", "../../../../src/components/MarkdownEditor/MarkdownEditor.tsx", "../../../../src/components/MarkdownEditor/MarkdownEditorContent.tsx", "../../../../src/components/MarkdownEditor/MarkdownEditorToolbar.tsx", "../../../../src/components/MarkdownEditor/FileUpload.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport * from './MarkdownEditor';\n\nexport const MarkdownSettings: ComponentType<any> = lazy(() => import('./MarkdownSettings'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { type EditorView } from '@codemirror/view';\nimport { type Atom } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type ReactNode, useCallback, useMemo, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { Obj } from '@dxos/echo';\nimport { URI } from '@dxos/keys';\nimport { useClient } from '@dxos/react-client';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { composable, composableProps } from '@dxos/react-ui';\nimport {\n type EditorRootProps,\n type EditorToolbarState,\n createEditorController,\n useEditorContext,\n} from '@dxos/react-ui-editor';\nimport { type PreviewBlock, type PreviewOptions } from '@dxos/ui-editor';\nimport { isNonNullable } from '@dxos/util';\n\nimport {\n type DocumentType,\n type ExtensionsOptions,\n type UseEditorMenuOptionsProps,\n useEditorMenuOptions,\n useExtensions,\n} from '#hooks';\n\nimport {\n MarkdownEditorContent as NaturalMarkdownEditorContent,\n type MarkdownEditorContentProps as NaturalMarkdownEditorContentProps,\n} from './MarkdownEditorContent';\nimport {\n MarkdownEditorToolbar as NaturalMarkdownToolbar,\n type MarkdownEditorToolbarProps as NaturalMarkdownToolbarProps,\n} from './MarkdownEditorToolbar';\n\n//\n// Context\n//\n\ntype MarkdownEditorContextValue = {\n id: string;\n attendableId?: string;\n previewBlocks: PreviewBlock[];\n} & Pick<ExtensionsOptions, 'compact' | 'viewMode'> &\n Pick<NaturalMarkdownToolbarProps, 'onAction' | 'onFileUpload' | 'onViewModeChange'>;\n\nconst [MarkdownEditorContextProvider, useMarkdownEditorContext] =\n createContext<MarkdownEditorContextValue>('MarkdownEditor.Context');\n\n/**\n * Props to spread onto `Editor.Root` from `MarkdownEditorProvider`'s render callback.\n */\nexport type MarkdownEditorEditorRootProps = Omit<EditorRootProps, 'children'>;\n\n//\n// MarkdownEditorProvider\n//\n\nexport type MarkdownEditorProviderProps = {\n object?: DocumentType;\n extensions?: Extension[];\n children: (editorRootProps: MarkdownEditorEditorRootProps) => ReactNode;\n} & Pick<\n MarkdownEditorContextValue,\n 'id' | 'attendableId' | 'viewMode' | 'compact' | 'onAction' | 'onFileUpload' | 'onViewModeChange'\n> &\n Pick<UseEditorMenuOptionsProps, 'slashCommandGroups' | 'onLinkQuery'> &\n Pick<ExtensionsOptions, 'editorStateStore' | 'selectionManager' | 'settings' | 'onSelectObject'>;\n\nexport const MarkdownEditorProvider = ({\n children,\n id,\n attendableId,\n object,\n settings,\n compact,\n viewMode,\n selectionManager,\n editorStateStore,\n extensions: extensionsProp,\n slashCommandGroups,\n onLinkQuery,\n onSelectObject,\n onAction,\n onFileUpload,\n onViewModeChange,\n}: MarkdownEditorProviderProps) => {\n // Preview blocks.\n const [previewBlocks, setPreviewBlocks] = useState<PreviewBlock[]>([]);\n const previewOptions = useMemo<PreviewOptions>(\n () => ({\n db: Obj.isObject(object) ? Obj.getDatabase(object) : undefined,\n addBlockContainer: (block) => {\n setPreviewBlocks((prev) => [...prev, block]);\n },\n removeBlockContainer: ({ link }) => {\n setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== link.dxn));\n },\n }),\n [object],\n );\n\n // Context menu options (Editor.Root calls useEditorMenu with these props).\n const menuOptions = useEditorMenuOptions({ slashCommandGroups, onLinkQuery });\n\n // Core markdown extensions (popover/menu extension is added by Editor.Root).\n const coreExtensions = useExtensions({\n id,\n object,\n compact,\n viewMode,\n selectionManager,\n editorStateStore,\n previewOptions,\n settings,\n onSelectObject,\n });\n\n const extensions = useMemo(\n () => [coreExtensions, extensionsProp].filter(isNonNullable).flat(),\n [coreExtensions, extensionsProp],\n );\n\n const editorRootProps = useMemo<MarkdownEditorEditorRootProps>(\n () => ({\n extensions,\n viewMode,\n getMenu: menuOptions.getMenu,\n trigger: menuOptions.trigger,\n placeholder: menuOptions.placeholder,\n ...(menuOptions.filter !== undefined ? { filter: menuOptions.filter } : {}),\n ...(menuOptions.triggerKey !== undefined ? { triggerKey: menuOptions.triggerKey } : {}),\n }),\n [extensions, viewMode, menuOptions],\n );\n\n const markdownContextValue = useMemo<MarkdownEditorContextValue>(\n () => ({\n id,\n attendableId,\n compact,\n viewMode,\n previewBlocks,\n onAction,\n onFileUpload,\n onViewModeChange,\n }),\n [id, attendableId, compact, viewMode, previewBlocks, onAction, onFileUpload, onViewModeChange],\n );\n\n return (\n <MarkdownEditorContextProvider {...markdownContextValue}>{children(editorRootProps)}</MarkdownEditorContextProvider>\n );\n};\n\nMarkdownEditorProvider.displayName = 'MarkdownEditor.Provider';\n\n//\n// MarkdownEditor.Content\n//\n\nconst MARKDOWN_EDITOR_CONTENT_NAME = 'MarkdownEditor.Content';\n\ntype MarkdownEditorContentProps = Omit<NaturalMarkdownEditorContentProps, 'id' | 'extensions' | 'toolbarState'>;\n\nconst MarkdownEditorContent = composable<HTMLDivElement, MarkdownEditorContentProps>(\n ({ compact: compactProp, ...props }, _forwardedRef) => {\n const {\n id,\n attendableId,\n compact = compactProp,\n viewMode,\n onFileUpload,\n } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);\n const { extensions, setController, state } = useEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);\n\n const handleRef = useCallback(\n (view: EditorView | null) => {\n setController(createEditorController(view));\n },\n [setController],\n );\n\n return (\n <NaturalMarkdownEditorContent\n {...composableProps(props)}\n id={id}\n attendableId={attendableId}\n compact={compact}\n viewMode={viewMode}\n toolbarState={state as Atom.Writable<EditorToolbarState>}\n extensions={extensions}\n onFileUpload={onFileUpload}\n ref={handleRef}\n />\n );\n },\n);\n\nMarkdownEditorContent.displayName = MARKDOWN_EDITOR_CONTENT_NAME;\n\n//\n// MarkdownEditor.Toolbar\n//\n\nconst MARKDOWN_EDITOR_TOOLBAR_NAME = 'MarkdownEditor.Toolbar';\n\ntype MarkdownEditorToolbarProps = ThemedClassName<\n Omit<NaturalMarkdownToolbarProps, 'getView' | 'onAction' | 'onFileUpload' | 'onViewModeChange' | 'id'>\n>;\n\nconst MarkdownEditorToolbar = (props: MarkdownEditorToolbarProps) => {\n const { id, attendableId, onAction, onFileUpload, onViewModeChange } =\n useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);\n\n const { controller } = useEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);\n\n // Stable getter identity (changes only when the controller does) so the FileUpload effect, whose\n // deps include `getView`, does not re-run every render and re-upload the same file.\n const getView = useCallback(() => controller?.view ?? null, [controller]);\n\n return (\n <NaturalMarkdownToolbar\n {...props}\n id={attendableId ?? id}\n getView={getView}\n onAction={onAction}\n onFileUpload={onFileUpload}\n onViewModeChange={onViewModeChange}\n />\n );\n};\n\nMarkdownEditorToolbar.displayName = MARKDOWN_EDITOR_TOOLBAR_NAME;\n\n//\n// MarkdownEditor.Blocks (embedded objects)\n//\n\nconst MARKDOWN_EDITOR_BLOCKS_NAME = 'MarkdownEditor.Blocks';\n\ntype MarkdownEditorBlocksProps = {};\n\nconst MarkdownEditorBlocks = (_props: MarkdownEditorBlocksProps) => {\n const { previewBlocks } = useMarkdownEditorContext(MARKDOWN_EDITOR_BLOCKS_NAME);\n\n return (\n <>\n {previewBlocks.map(({ link, el }) => (\n <PreviewBlock key={link.dxn} link={link} el={el} />\n ))}\n </>\n );\n};\n\nMarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;\n\nconst PreviewBlock = ({ el, link }: PreviewBlock) => {\n const client = useClient();\n const dxn = URI.make(link.dxn);\n const subject = client.graph.makeRef(dxn).target;\n const data = useMemo(() => ({ subject }), [subject]);\n\n return createPortal(<Surface.Surface type={AppSurface.Card} data={data} limit={1} />, el);\n};\n\n//\n// MarkdownEditor\n//\n\n/** @private */\nexport const MarkdownEditor = {\n Content: MarkdownEditorContent,\n Toolbar: MarkdownEditorToolbar,\n Blocks: MarkdownEditorBlocks,\n};\n\nexport type { MarkdownEditorContentProps, MarkdownEditorToolbarProps, MarkdownEditorBlocksProps };\n\n/** @deprecated Use `MarkdownEditorProviderProps`. */\nexport type MarkdownEditorRootProps = MarkdownEditorProviderProps;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { type Atom, RegistryContext } from '@effect-atom/atom-react';\nimport React, { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo } from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework/ui';\nimport { type ThemedClassName, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport {\n type EditorMenuGroup,\n type EditorToolbarState,\n type UseTextEditorProps,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport {\n type EditorSelectionState,\n type EditorStateStore,\n type ThemeExtensionsOptions,\n mobileSlots,\n createBasicExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n dropFile,\n documentSlots,\n formattingListener,\n processEditorPayload,\n editorClassNames,\n scrollbarAutohide,\n} from '@dxos/ui-editor';\nimport { type EditorViewMode } from '@dxos/ui-editor/types';\nimport { mx } from '@dxos/ui-theme';\nimport { isTruthy } from '@dxos/util';\n\nimport { meta } from '#meta';\nimport { MarkdownCapabilities } from '#types';\n\nimport { type MarkdownEditorToolbarProps } from './MarkdownEditorToolbar';\n\nexport type MarkdownEditorContentProps = ThemedClassName<{\n id: string;\n attendableId?: string;\n role?: string;\n compact?: boolean;\n viewMode?: EditorViewMode;\n slashCommandGroups?: EditorMenuGroup[];\n editorStateStore?: EditorStateStore;\n toolbarState?: Atom.Writable<EditorToolbarState>;\n onLinkQuery?: (query?: string) => Promise<EditorMenuGroup[]>;\n}> &\n Pick<UseTextEditorProps, 'initialValue' | 'extensions'> &\n Pick<MarkdownEditorToolbarProps, 'onFileUpload'> &\n Pick<ThemeExtensionsOptions, 'slots'>;\n\n// TODO(burdon): Move controller to Root.\nexport const MarkdownEditorContent = forwardRef<EditorView | null, MarkdownEditorContentProps>(\n (\n {\n classNames,\n id,\n attendableId,\n role,\n compact,\n viewMode,\n initialValue,\n editorStateStore,\n toolbarState,\n extensions,\n slots,\n onFileUpload,\n },\n forwardedRef,\n ) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n const registry = useContext(RegistryContext);\n\n // Callback to update toolbar state atom.\n const updateToolbarState = useCallback(\n (formatting: EditorToolbarState) => {\n if (toolbarState) {\n registry.set(toolbarState, { ...registry.get(toolbarState), ...formatting });\n }\n },\n [registry, toolbarState],\n );\n\n // Restore last selection and scroll point.\n const { scrollTo, selection } = useMemo<EditorSelectionState>(() => editorStateStore?.getState(id) ?? {}, [id]);\n\n const {\n parentRef,\n view: editorView,\n focusAttributes,\n } = useTextEditor(\n () => ({\n ...(role !== 'section' && {\n id,\n scrollTo,\n selection,\n selectionEnd: true,\n }),\n initialValue,\n extensions: [\n createBasicExtensions({\n readOnly: viewMode === 'readonly',\n placeholder: t('editor.placeholder'),\n scrollPastEnd: !compact,\n search: true,\n }),\n createThemeExtensions({\n themeMode,\n slots: slots ?? (compact ? mobileSlots : documentSlots),\n syntaxHighlighting: true,\n }),\n createMarkdownExtensions(),\n scrollbarAutohide(),\n toolbarState && formattingListener(updateToolbarState),\n role !== 'section' &&\n onFileUpload &&\n dropFile({\n // TODO(wittjosiah): Factor out to file uploader plugin.\n onDrop: async (view, { files }) => {\n const file = files[0];\n const info = file && onFileUpload ? await onFileUpload(file) : undefined;\n if (info) {\n processEditorPayload(view, { type: 'image', data: info.url });\n }\n },\n }),\n extensions,\n ].filter(isTruthy),\n }),\n [id, viewMode, themeMode, extensions, compact],\n );\n\n useImperativeHandle<EditorView | null, EditorView | null>(forwardedRef, () => editorView, [editorView]);\n\n const [editorViewRegistry] = useCapabilities(MarkdownCapabilities.EditorViews);\n useEffect(() => {\n if (editorView && editorViewRegistry) {\n editorViewRegistry.register(attendableId ?? id, editorView, id);\n return () => editorViewRegistry.unregister(attendableId ?? id);\n }\n }, [editorView, editorViewRegistry, attendableId, id]);\n\n useTest(editorView);\n\n return (\n <div\n {...focusAttributes}\n className={mx(editorClassNames(role), classNames)}\n data-testid='composer.markdownRoot'\n data-popover-collision-boundary={true}\n ref={parentRef}\n />\n );\n },\n);\n\n// Expose editor view for playwright tests.\n// TODO(wittjosiah): Find a better way to expose this or find a way to limit it to test runs.\nconst useTest = (view: EditorView | null) => {\n useEffect(() => {\n const composer = (window as any).composer;\n if (composer) {\n composer.editorView = view;\n }\n }, [view]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { useCallback, useState } from 'react';\n\nimport { type FileInfo } from '@dxos/app-toolkit';\nimport { composable, composableProps } from '@dxos/react-ui';\nimport { Editor, type EditorToolbarProps } from '@dxos/react-ui-editor';\n\nimport { FileUpload, type FileUploadAction } from './FileUpload';\n\nexport type MarkdownEditorToolbarProps = {\n id: string;\n // Provided as a getter (not a value prop) so the live `EditorView` is never carried in a React prop\n // that React 19.2's dev render-logger would walk into a cross-origin frame. See\n // `react-ui-editor/.../controller.ts` for the full rationale.\n getView?: () => EditorView | null;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n} & Pick<EditorToolbarProps, 'role' | 'customActions' | 'onAction' | 'onViewModeChange'>;\n\nexport const MarkdownEditorToolbar = composable<HTMLDivElement, MarkdownEditorToolbarProps>(\n ({ id, role, getView, customActions, onAction, onFileUpload, onViewModeChange, ...props }, forwardedRef) => {\n const { className, ...rest } = composableProps(props);\n const [upload, setUpload] = useState<FileUploadAction | null>(null);\n const uploadRef = useCallback((next: FileUploadAction) => setUpload(() => next), []);\n\n if (!getView?.()) {\n return <div className={className} {...rest} ref={forwardedRef} />;\n }\n\n return (\n <div className='contents' ref={forwardedRef}>\n <Editor.Toolbar\n {...rest}\n classNames={className}\n attendableId={id}\n role={role}\n customActions={customActions}\n onAction={onAction}\n onImageUpload={upload ?? undefined}\n onViewModeChange={onViewModeChange}\n />\n\n {onFileUpload && <FileUpload ref={uploadRef} getView={getView} onFileUpload={onFileUpload} />}\n </div>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { forwardRef, useEffect, useImperativeHandle } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useDropzone } from 'react-dropzone';\n\nimport { type FileInfo } from '@dxos/app-toolkit';\nimport { addLink } from '@dxos/ui-editor';\n\nexport const IMAGE_FILES = ['.jpg', '.jpeg', '.png', '.gif'];\n\nexport type FileUploadAction = () => void;\n\nexport type FileUploadProps = {\n // Provided as a getter (not a value prop) so the live `EditorView` is never carried in a React prop\n // that React 19.2's dev render-logger would walk into a cross-origin frame. See\n // `react-ui-editor/.../controller.ts` for the full rationale.\n getView?: () => EditorView | null;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n};\n\n// TODO(burdon): Factor out.\n// TODO(burdon): Move to root? (support drag into document via dropzone).\nexport const FileUpload = forwardRef<FileUploadAction, FileUploadProps>(({ getView, onFileUpload }, forwardedRef) => {\n // https://react-dropzone.js.org\n const { acceptedFiles, open, inputRef } = useDropzone({\n disabled: !onFileUpload,\n multiple: false,\n noDrag: true,\n accept: {\n 'image/*': IMAGE_FILES,\n },\n });\n\n useImperativeHandle(forwardedRef, () => open, []);\n\n useEffect(() => {\n if (acceptedFiles.length && onFileUpload) {\n requestAnimationFrame(async () => {\n const editorView = getView?.();\n if (!editorView) {\n return;\n }\n // NOTE: Clone file since react-dropzone patches in a non-standard `path` property, which confuses IPFS.\n const f = acceptedFiles[0];\n const file = new File([f], f.name, {\n type: f.type,\n lastModified: f.lastModified,\n });\n\n // TODO(burdon): Factor out.\n const info = await onFileUpload(file);\n if (info) {\n addLink({ url: info.url, image: true })(editorView);\n }\n });\n }\n }, [getView, acceptedFiles, onFileUpload]);\n\n if (!onFileUpload) {\n return null;\n }\n\n return <>{createPortal(<input ref={inputRef} />, document.body)} </>;\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["lazy", "createContext", "React", "useCallback", "useMemo", "useState", "createPortal", "Surface", "AppSurface", "Obj", "URI", "useClient", "composable", "composableProps", "createEditorController", "useEditorContext", "isNonNullable", "useEditorMenuOptions", "useExtensions", "RegistryContext", "React", "forwardRef", "useCallback", "useContext", "useEffect", "useImperativeHandle", "useMemo", "useCapabilities", "useThemeContext", "useTranslation", "useTextEditor", "mobileSlots", "createBasicExtensions", "createMarkdownExtensions", "createThemeExtensions", "dropFile", "documentSlots", "formattingListener", "processEditorPayload", "editorClassNames", "scrollbarAutohide", "mx", "isTruthy", "meta", "MarkdownCapabilities", "MarkdownEditorContent", "classNames", "id", "attendableId", "role", "compact", "viewMode", "initialValue", "editorStateStore", "toolbarState", "extensions", "slots", "onFileUpload", "forwardedRef", "t", "themeMode", "registry", "updateToolbarState", "formatting", "set", "get", "scrollTo", "selection", "getState", "parentRef", "view", "editorView", "focusAttributes", "selectionEnd", "readOnly", "placeholder", "scrollPastEnd", "search", "syntaxHighlighting", "onDrop", "files", "file", "info", "undefined", "type", "data", "url", "filter", "editorViewRegistry", "EditorViews", "register", "unregister", "useTest", "div", "className", "data-testid", "data-popover-collision-boundary", "ref", "composer", "window", "React", "useCallback", "useState", "composable", "composableProps", "Editor", "React", "forwardRef", "useEffect", "useImperativeHandle", "createPortal", "useDropzone", "addLink", "IMAGE_FILES", "FileUpload", "getView", "onFileUpload", "forwardedRef", "acceptedFiles", "open", "inputRef", "disabled", "multiple", "noDrag", "accept", "length", "requestAnimationFrame", "editorView", "f", "file", "File", "name", "type", "lastModified", "info", "url", "image", "input", "ref", "document", "body", "MarkdownEditorToolbar", "composable", "id", "role", "getView", "customActions", "onAction", "onFileUpload", "onViewModeChange", "props", "forwardedRef", "className", "rest", "composableProps", "upload", "setUpload", "useState", "uploadRef", "useCallback", "next", "React", "div", "ref", "Editor", "Toolbar", "classNames", "attendableId", "onImageUpload", "undefined", "FileUpload", "MarkdownEditorContextProvider", "useMarkdownEditorContext", "createContext", "MarkdownEditorProvider", "children", "id", "attendableId", "object", "settings", "compact", "viewMode", "selectionManager", "editorStateStore", "extensions", "extensionsProp", "slashCommandGroups", "onLinkQuery", "onSelectObject", "onAction", "onFileUpload", "onViewModeChange", "previewBlocks", "setPreviewBlocks", "useState", "previewOptions", "useMemo", "db", "Obj", "isObject", "getDatabase", "undefined", "addBlockContainer", "block", "prev", "removeBlockContainer", "link", "filter", "prevLink", "dxn", "menuOptions", "useEditorMenuOptions", "coreExtensions", "useExtensions", "isNonNullable", "flat", "editorRootProps", "getMenu", "trigger", "placeholder", "triggerKey", "markdownContextValue", "React", "displayName", "MARKDOWN_EDITOR_CONTENT_NAME", "MarkdownEditorContent", "composable", "compactProp", "props", "_forwardedRef", "setController", "state", "useEditorContext", "handleRef", "useCallback", "view", "createEditorController", "NaturalMarkdownEditorContent", "composableProps", "toolbarState", "ref", "MARKDOWN_EDITOR_TOOLBAR_NAME", "MarkdownEditorToolbar", "controller", "getView", "NaturalMarkdownToolbar", "MARKDOWN_EDITOR_BLOCKS_NAME", "MarkdownEditorBlocks", "_props", "map", "el", "PreviewBlock", "key", "client", "useClient", "URI", "make", "subject", "graph", "makeRef", "target", "data", "createPortal", "Surface", "type", "AppSurface", "Card", "limit", "MarkdownEditor", "Content", "Toolbar", "Blocks", "MarkdownSettings", "lazy"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import "../chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/containers/index.ts
|
|
4
|
+
import { lazy } from "react";
|
|
5
|
+
var MarkdownCard = lazy(() => import("../MarkdownCard-TBLIRDBO.mjs"));
|
|
6
|
+
var EditableMarkdownCard = lazy(() => import("../EditableMarkdownCard-AW7MD35U.mjs"));
|
|
7
|
+
var MarkdownArticle = lazy(() => import("../MarkdownArticle-LWT5RFFJ.mjs"));
|
|
8
|
+
export {
|
|
9
|
+
EditableMarkdownCard,
|
|
10
|
+
MarkdownArticle,
|
|
11
|
+
MarkdownCard
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/containers/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport type { MarkdownArticleProps } from './MarkdownArticle';\n\nexport const MarkdownCard: ComponentType<any> = lazy(() => import('./MarkdownCard'));\nexport const EditableMarkdownCard: ComponentType<any> = lazy(() => import('./EditableMarkdownCard'));\nexport const MarkdownArticle: ComponentType<any> = lazy(() => import('./MarkdownArticle'));\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAA6BA,YAAY;AAIlC,IAAMC,eAAmCD,KAAK,MAAM,OAAO,8BAAA,CAAA;AAC3D,IAAME,uBAA2CF,KAAK,MAAM,OAAO,sCAAA,CAAA;AACnE,IAAMG,kBAAsCH,KAAK,MAAM,OAAO,iCAAA,CAAA;",
|
|
6
|
+
"names": ["lazy", "MarkdownCard", "EditableMarkdownCard", "MarkdownArticle"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import {
|
|
2
|
+
MarkdownOperation_exports,
|
|
3
|
+
Markdown_exports
|
|
4
|
+
} from "./chunk-Y2LQRUU7.mjs";
|
|
5
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
6
|
+
|
|
7
|
+
// src/operations/create.ts
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import { CollectionModel } from "@dxos/app-toolkit";
|
|
10
|
+
import { Operation } from "@dxos/compute";
|
|
11
|
+
import { Database, Obj } from "@dxos/echo";
|
|
12
|
+
var handler = MarkdownOperation_exports.Create.pipe(Operation.withHandler(Effect.fn(function* ({ name, content }) {
|
|
13
|
+
const object = yield* Database.add(Markdown_exports.make({
|
|
14
|
+
name,
|
|
15
|
+
content
|
|
16
|
+
}));
|
|
17
|
+
yield* CollectionModel.add({
|
|
18
|
+
object
|
|
19
|
+
}).pipe(Effect.catchTag("EntityNotFoundError", () => Effect.void));
|
|
20
|
+
yield* Database.flush();
|
|
21
|
+
return {
|
|
22
|
+
id: Obj.getURI(object)
|
|
23
|
+
};
|
|
24
|
+
})));
|
|
25
|
+
var create_default = handler;
|
|
26
|
+
export {
|
|
27
|
+
create_default as default
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=create-JK35XC4R.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
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 { CollectionModel } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\nimport { Database, Obj } from '@dxos/echo';\n\nimport { Markdown, MarkdownOperation } from '../types';\n\nconst handler: Operation.WithHandler<typeof MarkdownOperation.Create> = MarkdownOperation.Create.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ name, content }) {\n // Add the object to the database directly so it is persisted with a space-qualified URI and is\n // resolvable by id. `CollectionModel.add` only pushes a `Ref` into the space root collection;\n // when that collection does not yet exist (e.g. a freshly-created space in a headless/agent\n // flow) it builds a detached collection that never triggers the transitive ref-save, leaving\n // the object unattached — so a returned `echo:/<id>` never resolves.\n const object = yield* Database.add(Markdown.make({ name, content }));\n\n // Best-effort: add to the space root collection for navigation. Concurrent sub-agents both\n // materializing the root collection can throw EntityNotFoundError while loading a\n // not-yet-flushed collection ref; the document itself is already persisted above, so swallow\n // ONLY that transient case and let any other (non-race) failure surface.\n yield* CollectionModel.add({ object }).pipe(Effect.catchTag('EntityNotFoundError', () => Effect.void));\n\n // Persist before returning the id so other tools/processes (e.g. an agent's add-artifact, run\n // as a separate invocation) can resolve the freshly-created document.\n yield* Database.flush();\n\n return {\n id: Obj.getURI(object),\n };\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
+
"mappings": ";;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,uBAAuB;AAChC,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,WAAW;AAI9B,IAAMC,UAAkEC,0BAAkBC,OAAOC,KAC/FC,UAAUC,YACDC,UAAG,WAAW,EAAEC,MAAMC,QAAO,GAAE;AAMpC,QAAMC,SAAS,OAAOC,SAASC,IAAIC,iBAASC,KAAK;IAAEN;IAAMC;EAAQ,CAAA,CAAA;AAMjE,SAAOM,gBAAgBH,IAAI;IAAEF;EAAO,CAAA,EAAGN,KAAYY,gBAAS,uBAAuB,MAAaC,WAAI,CAAA;AAIpG,SAAON,SAASO,MAAK;AAErB,SAAO;IACLC,IAAIC,IAAIC,OAAOX,MAAAA;EACjB;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,iBAAeT;",
|
|
6
|
+
"names": ["Effect", "CollectionModel", "Operation", "Database", "Obj", "handler", "MarkdownOperation", "Create", "pipe", "Operation", "withHandler", "fn", "name", "content", "object", "Database", "add", "Markdown", "make", "CollectionModel", "catchTag", "void", "flush", "id", "Obj", "getURI"]
|
|
7
|
+
}
|
package/dist/lib/{browser/create-markdown-LU5IDKMH.mjs → neutral/create-markdown-7MLE625M.mjs}
RENAMED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./chunk-QFPZONKP.mjs";
|
|
4
|
-
import {
|
|
2
|
+
MarkdownOperation_exports,
|
|
5
3
|
Markdown_exports
|
|
6
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-Y2LQRUU7.mjs";
|
|
7
5
|
import "./chunk-J5LGTIGS.mjs";
|
|
8
6
|
|
|
9
7
|
// src/operations/create-markdown.ts
|
|
10
8
|
import * as Effect from "effect/Effect";
|
|
11
|
-
import { Operation } from "@dxos/
|
|
12
|
-
var handler = CreateMarkdown.pipe(Operation.withHandler(({ name, content }) => Effect.succeed({
|
|
9
|
+
import { Operation } from "@dxos/compute";
|
|
10
|
+
var handler = MarkdownOperation_exports.CreateMarkdown.pipe(Operation.withHandler(({ name, content }) => Effect.succeed({
|
|
13
11
|
object: Markdown_exports.make({
|
|
14
12
|
name,
|
|
15
13
|
content
|
|
@@ -19,4 +17,4 @@ var create_markdown_default = handler;
|
|
|
19
17
|
export {
|
|
20
18
|
create_markdown_default as default
|
|
21
19
|
};
|
|
22
|
-
//# sourceMappingURL=create-markdown-
|
|
20
|
+
//# sourceMappingURL=create-markdown-7MLE625M.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/operations/create-markdown.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\n\nimport { Markdown, MarkdownOperation } from '../types';\n\nconst handler: Operation.WithHandler<typeof MarkdownOperation.CreateMarkdown> = MarkdownOperation.CreateMarkdown.pipe(\n Operation.withHandler(({ name, content }) =>\n Effect.succeed({\n object: Markdown.make({ name, content }),\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
+
"mappings": ";;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAI1B,IAAMC,UAA0EC,0BAAkBC,eAAeC,KAC/GC,UAAUC,YAAY,CAAC,EAAEC,MAAMC,QAAO,MAC7BC,eAAQ;EACbC,QAAQC,iBAASC,KAAK;IAAEL;IAAMC;EAAQ,CAAA;AACxC,CAAA,CAAA,CAAA;AAIJ,IAAA,0BAAeP;",
|
|
6
|
+
"names": ["Effect", "Operation", "handler", "MarkdownOperation", "CreateMarkdown", "pipe", "Operation", "withHandler", "name", "content", "succeed", "object", "Markdown", "make"]
|
|
7
|
+
}
|