@dxos/plugin-markdown 0.6.14-main.2b6a0f3 → 0.6.14-main.69511f5
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/dist/lib/browser/{MarkdownContainer-6VGH47F5.mjs → MarkdownContainer-HRGXWEA4.mjs} +13 -17
- package/dist/lib/browser/MarkdownContainer-HRGXWEA4.mjs.map +7 -0
- package/dist/lib/browser/{chunk-45N5MEOV.mjs → chunk-VGIHBUXB.mjs} +4 -2
- package/dist/lib/browser/{chunk-45N5MEOV.mjs.map → chunk-VGIHBUXB.mjs.map} +2 -2
- package/dist/lib/browser/index.mjs +14 -15
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/{MarkdownContainer-OXS7TME6.cjs → MarkdownContainer-QZ4YLO7M.cjs} +47 -51
- package/dist/lib/node/MarkdownContainer-QZ4YLO7M.cjs.map +7 -0
- package/dist/lib/node/{chunk-W2YJVZ3N.cjs → chunk-6HPTH2F5.cjs} +7 -5
- package/dist/lib/node/{chunk-W2YJVZ3N.cjs.map → chunk-6HPTH2F5.cjs.map} +2 -2
- package/dist/lib/node/index.cjs +20 -21
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/{MarkdownContainer-IYX45C2U.mjs → MarkdownContainer-FSWQL76V.mjs} +13 -17
- package/dist/lib/node-esm/MarkdownContainer-FSWQL76V.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-UCNOGIBC.mjs → chunk-HPOTHJC4.mjs} +4 -2
- package/dist/lib/node-esm/{chunk-UCNOGIBC.mjs.map → chunk-HPOTHJC4.mjs.map} +2 -2
- package/dist/lib/node-esm/index.mjs +14 -15
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownContainer.d.ts +2 -2
- package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor.d.ts +4 -3
- package/dist/types/src/components/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/src/extensions.d.ts +3 -2
- package/dist/types/src/extensions.d.ts.map +1 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/package.json +36 -45
- package/src/MarkdownPlugin.tsx +7 -15
- package/src/components/MarkdownContainer.tsx +3 -11
- package/src/components/MarkdownEditor.tsx +8 -3
- package/src/components/MarkdownSettings.tsx +15 -15
- package/src/extensions.tsx +10 -6
- package/src/translations.ts +1 -1
- package/src/util.tsx +5 -3
- package/dist/lib/browser/MarkdownContainer-6VGH47F5.mjs.map +0 -7
- package/dist/lib/node/MarkdownContainer-OXS7TME6.cjs.map +0 -7
- package/dist/lib/node-esm/MarkdownContainer-IYX45C2U.mjs.map +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/plugins/plugin-markdown/src/meta.ts":{"bytes":1509,"imports":[],"format":"esm"},"packages/plugins/plugin-markdown/src/components/MarkdownSettings.tsx":{"bytes":12506,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/plugin-settings","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx":{"bytes":6483,"imports":[{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-markdown/src/hooks/index.ts":{"bytes":544,"imports":[{"path":"packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx","kind":"import-statement","original":"./useSelectCurrentThread"}],"format":"esm"},"packages/plugins/plugin-markdown/src/components/MarkdownEditor.tsx":{"bytes":24547,"imports":[{"path":"@codemirror/search","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/hooks/index.ts","kind":"import-statement","original":"../hooks"},{"path":"packages/plugins/plugin-markdown/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-markdown/src/types/document.ts":{"bytes":3473,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-markdown/src/types/types.ts":{"bytes":4453,"imports":[{"path":"packages/plugins/plugin-markdown/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-markdown/src/types/index.ts":{"bytes":591,"imports":[{"path":"packages/plugins/plugin-markdown/src/types/document.ts","kind":"import-statement","original":"./document"},{"path":"packages/plugins/plugin-markdown/src/types/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-markdown/src/util.tsx":{"bytes":6297,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-markdown/src/extensions.tsx":{"bytes":23896,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"react-dom/client","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/util.tsx","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/plugins/plugin-markdown/src/components/MarkdownContainer.tsx":{"bytes":11043,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/components/MarkdownEditor.tsx","kind":"import-statement","original":"./MarkdownEditor"},{"path":"packages/plugins/plugin-markdown/src/extensions.tsx","kind":"import-statement","original":"../extensions"},{"path":"packages/plugins/plugin-markdown/src/types/index.ts","kind":"import-statement","original":"../types"},{"path":"packages/plugins/plugin-markdown/src/util.tsx","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/plugins/plugin-markdown/src/components/index.ts":{"bytes":931,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/components/MarkdownSettings.tsx","kind":"import-statement","original":"./MarkdownSettings"},{"path":"packages/plugins/plugin-markdown/src/components/MarkdownContainer.tsx","kind":"dynamic-import","original":"./MarkdownContainer"}],"format":"esm"},"packages/plugins/plugin-markdown/src/translations.ts":{"bytes":4765,"imports":[{"path":"packages/plugins/plugin-markdown/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-markdown/src/MarkdownPlugin.tsx":{"bytes":44616,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-markdown/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-markdown/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/plugin-markdown/src/types/index.ts","kind":"import-statement","original":"./types"},{"path":"packages/plugins/plugin-markdown/src/types/index.ts","kind":"import-statement","original":"./types"},{"path":"packages/plugins/plugin-markdown/src/util.tsx","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/plugins/plugin-markdown/src/index.ts":{"bytes":969,"imports":[{"path":"packages/plugins/plugin-markdown/src/MarkdownPlugin.tsx","kind":"import-statement","original":"./MarkdownPlugin"},{"path":"packages/plugins/plugin-markdown/src/MarkdownPlugin.tsx","kind":"import-statement","original":"./MarkdownPlugin"},{"path":"packages/plugins/plugin-markdown/src/types/index.ts","kind":"import-statement","original":"./types"},{"path":"packages/plugins/plugin-markdown/src/util.tsx","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-markdown/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":29355},"packages/plugins/plugin-markdown/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-45N5MEOV.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-US5O2P3R.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-DRJ3FPYF.mjs","kind":"import-statement"},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/plugin-settings","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/dist/lib/browser/MarkdownContainer-6VGH47F5.mjs","kind":"dynamic-import"}],"exports":["DocumentType","MarkdownAction","MarkdownPlugin","TextType","default","getFallbackName","isEditorModel","isMarkdownProperties","markdownExtensionPlugins","serializer","setFallbackName"],"entryPoint":"packages/plugins/plugin-markdown/src/index.ts","inputs":{"packages/plugins/plugin-markdown/src/MarkdownPlugin.tsx":{"bytesInOutput":11603},"packages/plugins/plugin-markdown/src/components/index.ts":{"bytesInOutput":110},"packages/plugins/plugin-markdown/src/components/MarkdownSettings.tsx":{"bytesInOutput":3448},"packages/plugins/plugin-markdown/src/translations.ts":{"bytesInOutput":1463},"packages/plugins/plugin-markdown/src/index.ts":{"bytesInOutput":34}},"bytes":17656},"packages/plugins/plugin-markdown/dist/lib/browser/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-markdown/dist/lib/browser/meta.mjs":{"imports":[{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-DRJ3FPYF.mjs","kind":"import-statement"}],"exports":["MARKDOWN_PLUGIN","default"],"entryPoint":"packages/plugins/plugin-markdown/src/meta.ts","inputs":{},"bytes":165},"packages/plugins/plugin-markdown/dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-markdown/dist/lib/browser/types/index.mjs":{"imports":[{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-US5O2P3R.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-DRJ3FPYF.mjs","kind":"import-statement"}],"exports":["DocumentType","MarkdownAction","TextType","isEditorModel"],"entryPoint":"packages/plugins/plugin-markdown/src/types/index.ts","inputs":{},"bytes":244},"packages/plugins/plugin-markdown/dist/lib/browser/MarkdownContainer-6VGH47F5.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":33644},"packages/plugins/plugin-markdown/dist/lib/browser/MarkdownContainer-6VGH47F5.mjs":{"imports":[{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-45N5MEOV.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-US5O2P3R.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-DRJ3FPYF.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@codemirror/search","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom/client","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["DocumentEditor","default"],"entryPoint":"packages/plugins/plugin-markdown/src/components/MarkdownContainer.tsx","inputs":{"packages/plugins/plugin-markdown/src/components/MarkdownContainer.tsx":{"bytesInOutput":2256},"packages/plugins/plugin-markdown/src/components/MarkdownEditor.tsx":{"bytesInOutput":5744},"packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx":{"bytesInOutput":1356},"packages/plugins/plugin-markdown/src/extensions.tsx":{"bytesInOutput":5517}},"bytes":15608},"packages/plugins/plugin-markdown/dist/lib/browser/chunk-45N5MEOV.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3478},"packages/plugins/plugin-markdown/dist/lib/browser/chunk-45N5MEOV.mjs":{"imports":[{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-US5O2P3R.mjs","kind":"import-statement"},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true}],"exports":["getFallbackName","isMarkdownProperties","markdownExtensionPlugins","serializer","setFallbackName"],"inputs":{"packages/plugins/plugin-markdown/src/util.tsx":{"bytesInOutput":1238}},"bytes":1515},"packages/plugins/plugin-markdown/dist/lib/browser/chunk-US5O2P3R.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4599},"packages/plugins/plugin-markdown/dist/lib/browser/chunk-US5O2P3R.mjs":{"imports":[{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-DRJ3FPYF.mjs","kind":"import-statement"},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true}],"exports":["DocumentType","MarkdownAction","TextType","isEditorModel"],"inputs":{"packages/plugins/plugin-markdown/src/types/document.ts":{"bytesInOutput":661},"packages/plugins/plugin-markdown/src/types/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-markdown/src/types/types.ts":{"bytesInOutput":340}},"bytes":1293},"packages/plugins/plugin-markdown/dist/lib/browser/chunk-DRJ3FPYF.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":719},"packages/plugins/plugin-markdown/dist/lib/browser/chunk-DRJ3FPYF.mjs":{"imports":[],"exports":["MARKDOWN_PLUGIN","meta_default"],"inputs":{"packages/plugins/plugin-markdown/src/meta.ts":{"bytesInOutput":307}},"bytes":446}}}
|
|
1
|
+
{"inputs":{"packages/plugins/plugin-markdown/src/meta.ts":{"bytes":1509,"imports":[],"format":"esm"},"packages/plugins/plugin-markdown/src/components/MarkdownSettings.tsx":{"bytes":12392,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-data","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx":{"bytes":6483,"imports":[{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-markdown/src/hooks/index.ts":{"bytes":544,"imports":[{"path":"packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx","kind":"import-statement","original":"./useSelectCurrentThread"}],"format":"esm"},"packages/plugins/plugin-markdown/src/components/MarkdownEditor.tsx":{"bytes":25191,"imports":[{"path":"@codemirror/search","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/hooks/index.ts","kind":"import-statement","original":"../hooks"},{"path":"packages/plugins/plugin-markdown/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-markdown/src/types/document.ts":{"bytes":3473,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-markdown/src/types/types.ts":{"bytes":4453,"imports":[{"path":"packages/plugins/plugin-markdown/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-markdown/src/types/index.ts":{"bytes":591,"imports":[{"path":"packages/plugins/plugin-markdown/src/types/document.ts","kind":"import-statement","original":"./document"},{"path":"packages/plugins/plugin-markdown/src/types/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-markdown/src/util.tsx":{"bytes":6544,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-markdown/src/extensions.tsx":{"bytes":23800,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"react-dom/client","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/util.tsx","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/plugins/plugin-markdown/src/components/MarkdownContainer.tsx":{"bytes":10102,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/components/MarkdownEditor.tsx","kind":"import-statement","original":"./MarkdownEditor"},{"path":"packages/plugins/plugin-markdown/src/extensions.tsx","kind":"import-statement","original":"../extensions"},{"path":"packages/plugins/plugin-markdown/src/types/index.ts","kind":"import-statement","original":"../types"},{"path":"packages/plugins/plugin-markdown/src/util.tsx","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/plugins/plugin-markdown/src/components/index.ts":{"bytes":931,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/components/MarkdownSettings.tsx","kind":"import-statement","original":"./MarkdownSettings"},{"path":"packages/plugins/plugin-markdown/src/components/MarkdownContainer.tsx","kind":"dynamic-import","original":"./MarkdownContainer"}],"format":"esm"},"packages/plugins/plugin-markdown/src/translations.ts":{"bytes":4737,"imports":[{"path":"packages/plugins/plugin-markdown/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-markdown/src/MarkdownPlugin.tsx":{"bytes":44721,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-markdown/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-markdown/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/plugin-markdown/src/types/index.ts","kind":"import-statement","original":"./types"},{"path":"packages/plugins/plugin-markdown/src/types/index.ts","kind":"import-statement","original":"./types"},{"path":"packages/plugins/plugin-markdown/src/util.tsx","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/plugins/plugin-markdown/src/index.ts":{"bytes":969,"imports":[{"path":"packages/plugins/plugin-markdown/src/MarkdownPlugin.tsx","kind":"import-statement","original":"./MarkdownPlugin"},{"path":"packages/plugins/plugin-markdown/src/MarkdownPlugin.tsx","kind":"import-statement","original":"./MarkdownPlugin"},{"path":"packages/plugins/plugin-markdown/src/types/index.ts","kind":"import-statement","original":"./types"},{"path":"packages/plugins/plugin-markdown/src/util.tsx","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-markdown/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":29321},"packages/plugins/plugin-markdown/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-VGIHBUXB.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-US5O2P3R.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-DRJ3FPYF.mjs","kind":"import-statement"},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-data","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-markdown/dist/lib/browser/MarkdownContainer-HRGXWEA4.mjs","kind":"dynamic-import"}],"exports":["DocumentType","MarkdownAction","MarkdownPlugin","TextType","default","getFallbackName","isEditorModel","isMarkdownProperties","markdownExtensionPlugins","serializer","setFallbackName"],"entryPoint":"packages/plugins/plugin-markdown/src/index.ts","inputs":{"packages/plugins/plugin-markdown/src/MarkdownPlugin.tsx":{"bytesInOutput":11632},"packages/plugins/plugin-markdown/src/components/index.ts":{"bytesInOutput":110},"packages/plugins/plugin-markdown/src/components/MarkdownSettings.tsx":{"bytesInOutput":3414},"packages/plugins/plugin-markdown/src/translations.ts":{"bytesInOutput":1451},"packages/plugins/plugin-markdown/src/index.ts":{"bytesInOutput":34}},"bytes":17639},"packages/plugins/plugin-markdown/dist/lib/browser/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-markdown/dist/lib/browser/meta.mjs":{"imports":[{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-DRJ3FPYF.mjs","kind":"import-statement"}],"exports":["MARKDOWN_PLUGIN","default"],"entryPoint":"packages/plugins/plugin-markdown/src/meta.ts","inputs":{},"bytes":165},"packages/plugins/plugin-markdown/dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-markdown/dist/lib/browser/types/index.mjs":{"imports":[{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-US5O2P3R.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-DRJ3FPYF.mjs","kind":"import-statement"}],"exports":["DocumentType","MarkdownAction","TextType","isEditorModel"],"entryPoint":"packages/plugins/plugin-markdown/src/types/index.ts","inputs":{},"bytes":244},"packages/plugins/plugin-markdown/dist/lib/browser/MarkdownContainer-HRGXWEA4.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":33439},"packages/plugins/plugin-markdown/dist/lib/browser/MarkdownContainer-HRGXWEA4.mjs":{"imports":[{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-VGIHBUXB.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-US5O2P3R.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-DRJ3FPYF.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@codemirror/search","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom/client","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["DocumentEditor","default"],"entryPoint":"packages/plugins/plugin-markdown/src/components/MarkdownContainer.tsx","inputs":{"packages/plugins/plugin-markdown/src/components/MarkdownContainer.tsx":{"bytesInOutput":2038},"packages/plugins/plugin-markdown/src/components/MarkdownEditor.tsx":{"bytesInOutput":5842},"packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx":{"bytesInOutput":1356},"packages/plugins/plugin-markdown/src/hooks/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-markdown/src/extensions.tsx":{"bytesInOutput":5469}},"bytes":15440},"packages/plugins/plugin-markdown/dist/lib/browser/chunk-VGIHBUXB.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3586},"packages/plugins/plugin-markdown/dist/lib/browser/chunk-VGIHBUXB.mjs":{"imports":[{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-US5O2P3R.mjs","kind":"import-statement"},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true}],"exports":["getFallbackName","isMarkdownProperties","markdownExtensionPlugins","serializer","setFallbackName"],"inputs":{"packages/plugins/plugin-markdown/src/util.tsx":{"bytesInOutput":1313}},"bytes":1590},"packages/plugins/plugin-markdown/dist/lib/browser/chunk-US5O2P3R.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4599},"packages/plugins/plugin-markdown/dist/lib/browser/chunk-US5O2P3R.mjs":{"imports":[{"path":"packages/plugins/plugin-markdown/dist/lib/browser/chunk-DRJ3FPYF.mjs","kind":"import-statement"},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true}],"exports":["DocumentType","MarkdownAction","TextType","isEditorModel"],"inputs":{"packages/plugins/plugin-markdown/src/types/document.ts":{"bytesInOutput":661},"packages/plugins/plugin-markdown/src/types/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-markdown/src/types/types.ts":{"bytesInOutput":340}},"bytes":1293},"packages/plugins/plugin-markdown/dist/lib/browser/chunk-DRJ3FPYF.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":719},"packages/plugins/plugin-markdown/dist/lib/browser/chunk-DRJ3FPYF.mjs":{"imports":[],"exports":["MARKDOWN_PLUGIN","meta_default"],"inputs":{"packages/plugins/plugin-markdown/src/meta.ts":{"bytesInOutput":307}},"bytes":446}}}
|
|
@@ -26,32 +26,31 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var MarkdownContainer_QZ4YLO7M_exports = {};
|
|
30
|
+
__export(MarkdownContainer_QZ4YLO7M_exports, {
|
|
31
31
|
DocumentEditor: () => DocumentEditor,
|
|
32
32
|
default: () => MarkdownContainer_default
|
|
33
33
|
});
|
|
34
|
-
module.exports = __toCommonJS(
|
|
35
|
-
var
|
|
34
|
+
module.exports = __toCommonJS(MarkdownContainer_QZ4YLO7M_exports);
|
|
35
|
+
var import_chunk_6HPTH2F5 = require("./chunk-6HPTH2F5.cjs");
|
|
36
36
|
var import_chunk_UJMOZCIA = require("./chunk-UJMOZCIA.cjs");
|
|
37
37
|
var import_chunk_P7YU53RP = require("./chunk-P7YU53RP.cjs");
|
|
38
38
|
var import_react = __toESM(require("react"));
|
|
39
39
|
var import_app_framework = require("@dxos/app-framework");
|
|
40
40
|
var import_echo = require("@dxos/react-client/echo");
|
|
41
|
-
var import_react_ui_editor = require("@dxos/react-ui-editor");
|
|
42
41
|
var import_search = require("@codemirror/search");
|
|
43
42
|
var import_react2 = __toESM(require("react"));
|
|
44
43
|
var import_app_framework2 = require("@dxos/app-framework");
|
|
45
44
|
var import_react_ui = require("@dxos/react-ui");
|
|
46
45
|
var import_react_ui_attention = require("@dxos/react-ui-attention");
|
|
47
|
-
var
|
|
46
|
+
var import_react_ui_editor = require("@dxos/react-ui-editor");
|
|
48
47
|
var import_react_ui_stack = require("@dxos/react-ui-stack");
|
|
49
48
|
var import_react_ui_theme = require("@dxos/react-ui-theme");
|
|
50
49
|
var import_util = require("@dxos/util");
|
|
51
50
|
var import_view = require("@codemirror/view");
|
|
52
51
|
var import_react3 = require("react");
|
|
53
52
|
var import_app_framework3 = require("@dxos/app-framework");
|
|
54
|
-
var
|
|
53
|
+
var import_react_ui_editor2 = require("@dxos/react-ui-editor");
|
|
55
54
|
var import_react4 = __toESM(require("react"));
|
|
56
55
|
var import_client = require("react-dom/client");
|
|
57
56
|
var import_app_framework4 = require("@dxos/app-framework");
|
|
@@ -59,15 +58,14 @@ var import_invariant = require("@dxos/invariant");
|
|
|
59
58
|
var import_echo2 = require("@dxos/react-client/echo");
|
|
60
59
|
var import_halo = require("@dxos/react-client/halo");
|
|
61
60
|
var import_react_ui2 = require("@dxos/react-ui");
|
|
62
|
-
var
|
|
63
|
-
var import_react_ui_editor5 = require("@dxos/react-ui-editor");
|
|
61
|
+
var import_react_ui_editor3 = require("@dxos/react-ui-editor");
|
|
64
62
|
var import_react_ui_theme2 = require("@dxos/react-ui-theme");
|
|
65
63
|
var import_util2 = require("@dxos/util");
|
|
66
64
|
var useSelectCurrentThread = (editorView, documentId) => {
|
|
67
65
|
const handleScrollIntoView = (0, import_react3.useCallback)(({ action, data }) => {
|
|
68
66
|
if (action === import_app_framework3.LayoutAction.SCROLL_INTO_VIEW) {
|
|
69
67
|
if (editorView && data?.id === documentId && data?.cursor) {
|
|
70
|
-
const range =
|
|
68
|
+
const range = import_react_ui_editor2.Cursor.getRangeFromCursor(editorView.state, data.cursor);
|
|
71
69
|
if (range) {
|
|
72
70
|
const selection = editorView.state.selection.main.from !== range.from ? {
|
|
73
71
|
anchor: range.from
|
|
@@ -80,7 +78,7 @@ var useSelectCurrentThread = (editorView, documentId) => {
|
|
|
80
78
|
})
|
|
81
79
|
];
|
|
82
80
|
if (selection) {
|
|
83
|
-
effects.push(
|
|
81
|
+
effects.push(import_react_ui_editor2.setSelection.of({
|
|
84
82
|
current: documentId
|
|
85
83
|
}));
|
|
86
84
|
}
|
|
@@ -100,17 +98,20 @@ var useSelectCurrentThread = (editorView, documentId) => {
|
|
|
100
98
|
(0, import_app_framework3.useIntentResolver)(import_chunk_P7YU53RP.MARKDOWN_PLUGIN, handleScrollIntoView);
|
|
101
99
|
};
|
|
102
100
|
var DEFAULT_VIEW_MODE = "preview";
|
|
103
|
-
var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensionProviders, scrollPastEnd,
|
|
101
|
+
var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensionProviders, scrollPastEnd, toolbar, viewMode, editorStateStore, onFileUpload, onViewModeChange }) => {
|
|
104
102
|
const { t } = (0, import_react_ui.useTranslation)(import_chunk_P7YU53RP.MARKDOWN_PLUGIN);
|
|
105
103
|
const { themeMode } = (0, import_react_ui.useThemeContext)();
|
|
106
104
|
const dispatch = (0, import_app_framework2.useIntentDispatcher)();
|
|
107
|
-
const [formattingState, formattingObserver] = (0,
|
|
105
|
+
const [formattingState, formattingObserver] = (0, import_react_ui_editor.useFormattingState)();
|
|
108
106
|
const attendableAttributes = (0, import_react_ui_attention.useAttendableAttributes)(id);
|
|
109
107
|
const { hasAttention } = (0, import_react_ui_attention.useAttention)(id);
|
|
108
|
+
const { scrollTo, selection } = (0, import_react2.useMemo)(() => editorStateStore?.getState(id) ?? {}, [
|
|
109
|
+
id
|
|
110
|
+
]);
|
|
110
111
|
const providerExtensions = (0, import_react2.useMemo)(() => extensionProviders?.flatMap((provider) => provider({})).filter(import_util.nonNullable), [
|
|
111
112
|
extensionProviders
|
|
112
113
|
]);
|
|
113
|
-
const [commentsState, commentObserver] = (0,
|
|
114
|
+
const [commentsState, commentObserver] = (0, import_react_ui_editor.useCommentState)();
|
|
114
115
|
const onCommentClick = (0, import_react2.useCallback)(() => {
|
|
115
116
|
void dispatch({
|
|
116
117
|
action: import_app_framework2.LayoutAction.SET_LAYOUT,
|
|
@@ -122,42 +123,42 @@ var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensio
|
|
|
122
123
|
}, [
|
|
123
124
|
dispatch
|
|
124
125
|
]);
|
|
125
|
-
const commentClickObserver = (0,
|
|
126
|
+
const commentClickObserver = (0, import_react_ui_editor.useCommentClickListener)(onCommentClick);
|
|
126
127
|
const handleDrop = async (view, { files }) => {
|
|
127
128
|
const file = files[0];
|
|
128
129
|
const info = file && onFileUpload ? await onFileUpload(file) : void 0;
|
|
129
130
|
if (info) {
|
|
130
|
-
(0,
|
|
131
|
+
(0, import_react_ui_editor.processAction)(view, {
|
|
131
132
|
type: "image",
|
|
132
133
|
data: info.url
|
|
133
134
|
});
|
|
134
135
|
}
|
|
135
136
|
};
|
|
136
|
-
const { parentRef, view: editorView, focusAttributes } = (0,
|
|
137
|
+
const { parentRef, view: editorView, focusAttributes } = (0, import_react_ui_editor.useTextEditor)(() => ({
|
|
137
138
|
initialValue,
|
|
138
139
|
extensions: [
|
|
139
140
|
formattingObserver,
|
|
140
141
|
commentObserver,
|
|
141
142
|
commentClickObserver,
|
|
142
|
-
(0,
|
|
143
|
+
(0, import_react_ui_editor.createBasicExtensions)({
|
|
143
144
|
readonly: viewMode === "readonly",
|
|
144
145
|
placeholder: t("editor placeholder"),
|
|
145
146
|
scrollPastEnd: role === "section" ? false : scrollPastEnd
|
|
146
147
|
}),
|
|
147
|
-
(0,
|
|
148
|
+
(0, import_react_ui_editor.createMarkdownExtensions)({
|
|
148
149
|
themeMode
|
|
149
150
|
}),
|
|
150
|
-
(0,
|
|
151
|
+
(0, import_react_ui_editor.createThemeExtensions)({
|
|
151
152
|
themeMode,
|
|
152
153
|
syntaxHighlighting: true,
|
|
153
154
|
slots: {
|
|
154
155
|
content: {
|
|
155
|
-
className:
|
|
156
|
+
className: import_react_ui_editor.editorContent
|
|
156
157
|
}
|
|
157
158
|
}
|
|
158
159
|
}),
|
|
159
|
-
|
|
160
|
-
role !== "section" && onFileUpload && (0,
|
|
160
|
+
import_react_ui_editor.editorGutter,
|
|
161
|
+
role !== "section" && onFileUpload && (0, import_react_ui_editor.dropFile)({
|
|
161
162
|
onDrop: handleDrop
|
|
162
163
|
}),
|
|
163
164
|
providerExtensions,
|
|
@@ -182,7 +183,7 @@ var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensio
|
|
|
182
183
|
]);
|
|
183
184
|
useTest(editorView);
|
|
184
185
|
useSelectCurrentThread(editorView, id);
|
|
185
|
-
const handleToolbarAction = (0,
|
|
186
|
+
const handleToolbarAction = (0, import_react_ui_editor.useActionHandler)(editorView);
|
|
186
187
|
const handleAction = (action) => {
|
|
187
188
|
switch (action.type) {
|
|
188
189
|
case "search": {
|
|
@@ -213,7 +214,7 @@ var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensio
|
|
|
213
214
|
}, toolbar && /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
214
215
|
role: "none",
|
|
215
216
|
className: "flex shrink-0 justify-center overflow-x-auto attention-surface"
|
|
216
|
-
}, /* @__PURE__ */ import_react2.default.createElement(
|
|
217
|
+
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_editor.Toolbar.Root, {
|
|
217
218
|
classNames: role === "section" ? [
|
|
218
219
|
import_react_ui_theme.textBlockWidth,
|
|
219
220
|
"z-[2] group-focus-within/section:visible",
|
|
@@ -227,11 +228,11 @@ var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensio
|
|
|
227
228
|
...commentsState
|
|
228
229
|
},
|
|
229
230
|
onAction: handleAction
|
|
230
|
-
}, /* @__PURE__ */ import_react2.default.createElement(
|
|
231
|
+
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_editor.Toolbar.Markdown, null), onFileUpload && /* @__PURE__ */ import_react2.default.createElement(import_react_ui_editor.Toolbar.Custom, {
|
|
231
232
|
onUpload: onFileUpload
|
|
232
|
-
}), /* @__PURE__ */ import_react2.default.createElement(
|
|
233
|
+
}), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_editor.Toolbar.Separator, null), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_editor.Toolbar.View, {
|
|
233
234
|
mode: viewMode ?? DEFAULT_VIEW_MODE
|
|
234
|
-
}), /* @__PURE__ */ import_react2.default.createElement(
|
|
235
|
+
}), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_editor.Toolbar.Actions, null))), /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
235
236
|
role: "none",
|
|
236
237
|
ref: parentRef,
|
|
237
238
|
"data-testid": "composer.markdownRoot",
|
|
@@ -251,7 +252,7 @@ var useTest = (view) => {
|
|
|
251
252
|
]);
|
|
252
253
|
};
|
|
253
254
|
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-markdown/src/extensions.tsx";
|
|
254
|
-
var useExtensions = ({
|
|
255
|
+
var useExtensions = ({ document, settings, viewMode, editorStateStore, extensionProviders }) => {
|
|
255
256
|
const dispatch = (0, import_app_framework4.useIntentDispatcher)();
|
|
256
257
|
const identity = (0, import_halo.useIdentity)();
|
|
257
258
|
const space = (0, import_echo2.getSpace)(document);
|
|
@@ -281,7 +282,7 @@ var useExtensions = ({ extensionProviders, document, settings, viewMode }) => {
|
|
|
281
282
|
]);
|
|
282
283
|
return (0, import_react4.useMemo)(() => [
|
|
283
284
|
// NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
|
|
284
|
-
(0,
|
|
285
|
+
(0, import_react_ui_editor3.createDataExtensions)({
|
|
285
286
|
id: document.id,
|
|
286
287
|
text: document.content && (0, import_echo2.createDocAccessor)(document.content, [
|
|
287
288
|
"content"
|
|
@@ -289,9 +290,9 @@ var useExtensions = ({ extensionProviders, document, settings, viewMode }) => {
|
|
|
289
290
|
space,
|
|
290
291
|
identity
|
|
291
292
|
}),
|
|
292
|
-
(0,
|
|
293
|
-
(0,
|
|
294
|
-
onChange: (text) => (0,
|
|
293
|
+
(0, import_react_ui_editor3.selectionState)(editorStateStore),
|
|
294
|
+
(0, import_react_ui_editor3.listener)({
|
|
295
|
+
onChange: (text) => (0, import_chunk_6HPTH2F5.setFallbackName)(document, text)
|
|
295
296
|
}),
|
|
296
297
|
baseExtensions,
|
|
297
298
|
pluginExtensions
|
|
@@ -306,13 +307,13 @@ var useExtensions = ({ extensionProviders, document, settings, viewMode }) => {
|
|
|
306
307
|
};
|
|
307
308
|
var createBaseExtensions = ({ document, dispatch, settings, query, viewMode }) => {
|
|
308
309
|
const extensions = [
|
|
309
|
-
settings.editorInputMode &&
|
|
310
|
-
settings.folding && (0,
|
|
310
|
+
settings.editorInputMode && import_react_ui_editor3.InputModeExtensions[settings.editorInputMode],
|
|
311
|
+
settings.folding && (0, import_react_ui_editor3.folding)()
|
|
311
312
|
].filter(import_util2.isNotFalsy);
|
|
312
313
|
if (viewMode !== "source") {
|
|
313
314
|
extensions.push(...[
|
|
314
|
-
(0,
|
|
315
|
-
(0,
|
|
315
|
+
(0, import_react_ui_editor3.formattingKeymap)(),
|
|
316
|
+
(0, import_react_ui_editor3.decorateMarkdown)({
|
|
316
317
|
selectionChangeDelay: 100,
|
|
317
318
|
numberedHeadings: settings.numberedHeadings ? {
|
|
318
319
|
from: 2
|
|
@@ -330,11 +331,11 @@ var createBaseExtensions = ({ document, dispatch, settings, query, viewMode }) =
|
|
|
330
331
|
});
|
|
331
332
|
}) : void 0
|
|
332
333
|
}),
|
|
333
|
-
(0,
|
|
334
|
+
(0, import_react_ui_editor3.linkTooltip)(renderLinkTooltip)
|
|
334
335
|
]);
|
|
335
336
|
}
|
|
336
337
|
if (query) {
|
|
337
|
-
extensions.push((0,
|
|
338
|
+
extensions.push((0, import_react_ui_editor3.autocomplete)({
|
|
338
339
|
onSearch: (text) => {
|
|
339
340
|
return query.objects.map((object) => object.name?.length && object.id !== document?.id ? {
|
|
340
341
|
label: object.name,
|
|
@@ -347,7 +348,7 @@ var createBaseExtensions = ({ document, dispatch, settings, query, viewMode }) =
|
|
|
347
348
|
if (settings.debug) {
|
|
348
349
|
const items = settings.typewriter?.split(/[,\n]/) ?? "";
|
|
349
350
|
if (items) {
|
|
350
|
-
extensions.push((0,
|
|
351
|
+
extensions.push((0, import_react_ui_editor3.typewriter)({
|
|
351
352
|
items
|
|
352
353
|
}));
|
|
353
354
|
}
|
|
@@ -366,7 +367,7 @@ var onRenderLink = (onSelectObject) => (el, url) => {
|
|
|
366
367
|
const qualifiedId = url.split("/").at(-1);
|
|
367
368
|
(0, import_invariant.invariant)(qualifiedId, "Invalid link format.", {
|
|
368
369
|
F: __dxlog_file,
|
|
369
|
-
L:
|
|
370
|
+
L: 203,
|
|
370
371
|
S: void 0,
|
|
371
372
|
A: [
|
|
372
373
|
"qualifiedId",
|
|
@@ -430,7 +431,7 @@ var MarkdownContainer = ({ id, role, object, settings, ...props }) => {
|
|
|
430
431
|
});
|
|
431
432
|
}
|
|
432
433
|
};
|
|
433
|
-
var DocumentEditor = ({ id, document: doc, extensionProviders, settings, viewMode, ...props }) => {
|
|
434
|
+
var DocumentEditor = ({ id, document: doc, extensionProviders, settings, viewMode, editorStateStore, ...props }) => {
|
|
434
435
|
const space = (0, import_echo.getSpace)(doc);
|
|
435
436
|
const initialValue = (0, import_react.useMemo)(() => doc.content?.content, [
|
|
436
437
|
doc.content
|
|
@@ -439,20 +440,17 @@ var DocumentEditor = ({ id, document: doc, extensionProviders, settings, viewMod
|
|
|
439
440
|
extensionProviders,
|
|
440
441
|
document: doc,
|
|
441
442
|
settings,
|
|
442
|
-
viewMode
|
|
443
|
+
viewMode,
|
|
444
|
+
editorStateStore
|
|
443
445
|
});
|
|
444
446
|
(0, import_react.useEffect)(() => {
|
|
445
447
|
if (!doc.fallbackName && doc.content?.content) {
|
|
446
|
-
doc.fallbackName = (0,
|
|
448
|
+
doc.fallbackName = (0, import_chunk_6HPTH2F5.getFallbackName)(doc.content.content);
|
|
447
449
|
}
|
|
448
450
|
}, [
|
|
449
451
|
doc,
|
|
450
452
|
doc.content
|
|
451
453
|
]);
|
|
452
|
-
const { scrollTo, selection } = (0, import_react.useMemo)(() => import_react_ui_editor.localStorageStateStoreAdapter.getState(id) ?? {}, [
|
|
453
|
-
id,
|
|
454
|
-
doc
|
|
455
|
-
]);
|
|
456
454
|
const fileManagerPlugin = (0, import_app_framework.useResolvePlugin)(import_app_framework.parseFileManagerPlugin);
|
|
457
455
|
const handleFileUpload = (0, import_react.useMemo)(() => {
|
|
458
456
|
if (space === void 0 || fileManagerPlugin?.provides.file.upload === void 0) {
|
|
@@ -467,8 +465,6 @@ var DocumentEditor = ({ id, document: doc, extensionProviders, settings, viewMod
|
|
|
467
465
|
id,
|
|
468
466
|
initialValue,
|
|
469
467
|
extensions,
|
|
470
|
-
scrollTo,
|
|
471
|
-
selection,
|
|
472
468
|
toolbar: settings.toolbar,
|
|
473
469
|
inputMode: settings.editorInputMode,
|
|
474
470
|
viewMode,
|
|
@@ -481,4 +477,4 @@ var MarkdownContainer_default = MarkdownContainer;
|
|
|
481
477
|
0 && (module.exports = {
|
|
482
478
|
DocumentEditor
|
|
483
479
|
});
|
|
484
|
-
//# sourceMappingURL=MarkdownContainer-
|
|
480
|
+
//# sourceMappingURL=MarkdownContainer-QZ4YLO7M.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/MarkdownContainer.tsx", "../../../src/components/MarkdownEditor.tsx", "../../../src/hooks/useSelectCurrentThread.tsx", "../../../src/extensions.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect, useMemo } from 'react';\n\nimport { useResolvePlugin, parseFileManagerPlugin } from '@dxos/app-framework';\nimport { fullyQualifiedId, getSpace } from '@dxos/react-client/echo';\n\nimport { MarkdownEditor, type MarkdownEditorProps } from './MarkdownEditor';\nimport { useExtensions } from '../extensions';\nimport { DocumentType, type MarkdownSettingsProps } from '../types';\nimport { getFallbackName } from '../util';\n\nexport type MarkdownContainerProps = Pick<\n MarkdownEditorProps,\n 'role' | 'coordinate' | 'extensionProviders' | 'viewMode' | 'editorStateStore' | 'onViewModeChange'\n> & {\n id: string;\n object: DocumentType | any;\n settings: MarkdownSettingsProps;\n};\n\n// TODO(burdon): Move toolbar here.\n// TODO(burdon): Factor out difference for ECHO and non-ECHO objects; i.e., single component.\nconst MarkdownContainer = ({ id, role, object, settings, ...props }: MarkdownContainerProps) => {\n const scrollPastEnd = role === 'article';\n if (object instanceof DocumentType) {\n return (\n <DocumentEditor\n id={fullyQualifiedId(object)}\n role={role}\n document={object}\n settings={settings}\n scrollPastEnd={scrollPastEnd}\n {...props}\n />\n );\n } else {\n return (\n <MarkdownEditor\n id={id}\n role={role}\n initialValue={object.text}\n toolbar={settings.toolbar}\n scrollPastEnd={scrollPastEnd}\n {...props}\n />\n );\n }\n};\n\ntype DocumentEditorProps = Omit<MarkdownContainerProps, 'object'> & { document: DocumentType } & Pick<\n MarkdownEditorProps,\n 'id' | 'scrollPastEnd'\n >;\n\nexport const DocumentEditor = ({\n id,\n document: doc,\n extensionProviders,\n settings,\n viewMode,\n editorStateStore,\n ...props\n}: DocumentEditorProps) => {\n const space = getSpace(doc);\n const initialValue = useMemo(() => doc.content?.content, [doc.content]);\n const extensions = useExtensions({ extensionProviders, document: doc, settings, viewMode, editorStateStore });\n\n // Migrate gradually to `fallbackName`.\n useEffect(() => {\n if (!doc.fallbackName && doc.content?.content) {\n doc.fallbackName = getFallbackName(doc.content.content);\n }\n }, [doc, doc.content]);\n\n // File dragging.\n const fileManagerPlugin = useResolvePlugin(parseFileManagerPlugin);\n const handleFileUpload = useMemo(() => {\n if (space === undefined || fileManagerPlugin?.provides.file.upload === undefined) {\n return undefined;\n }\n\n // TODO(burdon): Re-order props: space, file.\n return async (file: File) => fileManagerPlugin?.provides?.file?.upload?.(file, space);\n }, [space, fileManagerPlugin]);\n\n return (\n <MarkdownEditor\n id={id}\n initialValue={initialValue}\n extensions={extensions}\n toolbar={settings.toolbar}\n inputMode={settings.editorInputMode}\n viewMode={viewMode}\n onFileUpload={handleFileUpload}\n {...props}\n />\n );\n};\n\nexport default MarkdownContainer;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { openSearchPanel } from '@codemirror/search';\nimport { type EditorView } from '@codemirror/view';\nimport React, { useMemo, useEffect, useCallback } from 'react';\n\nimport { type FileInfo, LayoutAction, type LayoutCoordinate, useIntentDispatcher } from '@dxos/app-framework';\nimport { useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { useAttendableAttributes, useAttention } from '@dxos/react-ui-attention';\nimport {\n type Action,\n type DNDOptions,\n type EditorViewMode,\n type EditorInputMode,\n type EditorSelectionState,\n type EditorStateStore,\n Toolbar,\n type UseTextEditorProps,\n createBasicExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n dropFile,\n editorContent,\n editorGutter,\n processAction,\n useActionHandler,\n useCommentState,\n useCommentClickListener,\n useFormattingState,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { sectionToolbarLayout } from '@dxos/react-ui-stack';\nimport { textBlockWidth, focusRing, mx } from '@dxos/react-ui-theme';\nimport { isNotFalsy, nonNullable } from '@dxos/util';\n\nimport { useSelectCurrentThread } from '../hooks';\nimport { MARKDOWN_PLUGIN } from '../meta';\nimport { type MarkdownPluginState } from '../types';\n\nconst DEFAULT_VIEW_MODE: EditorViewMode = 'preview';\n\nexport type MarkdownEditorProps = {\n id: string;\n role?: string;\n coordinate?: LayoutCoordinate;\n inputMode?: EditorInputMode;\n scrollPastEnd?: boolean;\n toolbar?: boolean;\n viewMode?: EditorViewMode;\n editorStateStore?: EditorStateStore;\n onViewModeChange?: (id: string, mode: EditorViewMode) => void;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n} & Pick<UseTextEditorProps, 'initialValue' | 'extensions'> &\n Partial<Pick<MarkdownPluginState, 'extensionProviders'>>;\n\n/**\n * Base markdown editor component.\n *\n * This component provides all the features of the markdown editor that do no depend on ECHO.\n * This allows it to be used as a common editor for markdown content on arbitrary backends (e.g. files).\n */\nexport const MarkdownEditor = ({\n id,\n role = 'article',\n initialValue,\n extensions,\n extensionProviders,\n scrollPastEnd,\n toolbar,\n viewMode,\n editorStateStore,\n onFileUpload,\n onViewModeChange,\n}: MarkdownEditorProps) => {\n const { t } = useTranslation(MARKDOWN_PLUGIN);\n const { themeMode } = useThemeContext();\n const dispatch = useIntentDispatcher();\n const [formattingState, formattingObserver] = useFormattingState();\n const attendableAttributes = useAttendableAttributes(id);\n const { hasAttention } = useAttention(id);\n\n // Restore last selection and scroll point.\n const { scrollTo, selection } = useMemo<EditorSelectionState>(() => editorStateStore?.getState(id) ?? {}, [id]);\n\n // Extensions from other plugins.\n // TODO(burdon): Reconcile with DocumentEditor.useExtensions.\n const providerExtensions = useMemo(\n () => extensionProviders?.flatMap((provider) => provider({})).filter(nonNullable),\n [extensionProviders],\n );\n\n // TODO(Zan): Move these into thread plugin as well?\n const [commentsState, commentObserver] = useCommentState();\n const onCommentClick = useCallback(() => {\n void dispatch({\n action: LayoutAction.SET_LAYOUT,\n data: { element: 'complementary', state: true },\n });\n }, [dispatch]);\n const commentClickObserver = useCommentClickListener(onCommentClick);\n\n // Drag files.\n const handleDrop: DNDOptions['onDrop'] = async (view, { files }) => {\n const file = files[0];\n const info = file && onFileUpload ? await onFileUpload(file) : undefined;\n if (info) {\n processAction(view, { type: 'image', data: info.url });\n }\n };\n\n const {\n parentRef,\n view: editorView,\n focusAttributes,\n } = useTextEditor(\n () => ({\n initialValue,\n extensions: [\n formattingObserver,\n commentObserver,\n commentClickObserver,\n createBasicExtensions({\n readonly: viewMode === 'readonly',\n placeholder: t('editor placeholder'),\n scrollPastEnd: role === 'section' ? false : scrollPastEnd,\n }),\n createMarkdownExtensions({ themeMode }),\n createThemeExtensions({\n themeMode,\n syntaxHighlighting: true,\n slots: { content: { className: editorContent } },\n }),\n editorGutter,\n role !== 'section' && onFileUpload && dropFile({ onDrop: handleDrop }),\n providerExtensions,\n extensions,\n ].filter(isNotFalsy),\n ...(role !== 'section' && {\n id,\n scrollTo,\n selection,\n // TODO(wittjosiah): Autofocus based on layout is racy.\n // autoFocus: layoutPlugin?.provides.layout ? layoutPlugin?.provides.layout.scrollIntoView === id : true,\n moveToEndOfLine: true,\n }),\n }),\n [id, initialValue, formattingObserver, viewMode, themeMode, extensions, providerExtensions],\n );\n\n useTest(editorView);\n useSelectCurrentThread(editorView, id);\n\n // Toolbar handler.\n const handleToolbarAction = useActionHandler(editorView);\n const handleAction = (action: Action) => {\n switch (action.type) {\n case 'search': {\n if (editorView) {\n openSearchPanel(editorView);\n }\n return;\n }\n case 'view-mode': {\n onViewModeChange?.(id, action.data);\n return;\n }\n }\n\n handleToolbarAction?.(action);\n };\n\n return (\n <div\n role='none'\n {...(role === 'section'\n ? { className: 'flex flex-col' }\n : {\n className: 'contents',\n // TODO(wittjosiah): Factor out to `useAttendableAttributes`?\n ...(hasAttention && { 'aria-current': 'location' }),\n ...attendableAttributes,\n })}\n >\n {toolbar && (\n <div role='none' className='flex shrink-0 justify-center overflow-x-auto attention-surface'>\n <Toolbar.Root\n classNames={\n role === 'section'\n ? [\n textBlockWidth,\n 'z-[2] group-focus-within/section:visible',\n !hasAttention && 'invisible',\n sectionToolbarLayout,\n ]\n : [textBlockWidth]\n }\n state={formattingState && { ...formattingState, ...commentsState }}\n onAction={handleAction}\n >\n <Toolbar.Markdown />\n {onFileUpload && <Toolbar.Custom onUpload={onFileUpload} />}\n <Toolbar.Separator />\n <Toolbar.View mode={viewMode ?? DEFAULT_VIEW_MODE} />\n <Toolbar.Actions />\n </Toolbar.Root>\n </div>\n )}\n <div\n role='none'\n ref={parentRef}\n data-testid='composer.markdownRoot'\n data-toolbar={toolbar ? 'enabled' : 'disabled'}\n className={\n role === 'section'\n ? mx('flex flex-col flex-1 min-bs-[12rem]', focusRing)\n : mx(\n 'flex is-full bs-full overflow-hidden',\n focusRing,\n 'focus-visible:ring-inset attention-surface',\n 'p-0.5', // TODO(burdon): Handle padding for focusRing consistently.\n 'data-[toolbar=disabled]:pbs-2 data-[toolbar=disabled]:row-span-2',\n )\n }\n {...focusAttributes}\n />\n </div>\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) => {\n useEffect(() => {\n const composer = (window as any).composer;\n if (composer) {\n composer.editorView = view;\n }\n }, [view]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\nimport { useCallback } from 'react';\n\nimport { LayoutAction, useIntentResolver } from '@dxos/app-framework';\nimport { Cursor, setSelection } from '@dxos/react-ui-editor';\n\nimport { MARKDOWN_PLUGIN } from '../meta';\n\n/**\n * Handle scrolling and selection of the current thread in a markdown editor.\n */\nexport const useSelectCurrentThread = (editorView: EditorView | undefined, documentId: string) => {\n const handleScrollIntoView = useCallback(\n ({ action, data }: { action: string; data?: any }) => {\n if (action === LayoutAction.SCROLL_INTO_VIEW) {\n if (editorView && data?.id === documentId && data?.cursor) {\n // TODO(burdon): We need typed intents.\n const range = Cursor.getRangeFromCursor(editorView.state, data.cursor);\n if (range) {\n const selection = editorView.state.selection.main.from !== range.from ? { anchor: range.from } : undefined;\n const effects = [\n // NOTE: This does not use the DOM scrollIntoView function.\n EditorView.scrollIntoView(range.from, { y: 'start', yMargin: 96 }),\n ];\n if (selection) {\n // Update the editor selection to get bi-directional highlighting.\n effects.push(setSelection.of({ current: documentId }));\n }\n\n editorView.dispatch({\n effects,\n selection: selection ? { anchor: range.from } : undefined,\n });\n }\n }\n }\n },\n [documentId, editorView],\n );\n\n useIntentResolver(MARKDOWN_PLUGIN, handleScrollIntoView);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type AnchorHTMLAttributes, type ReactNode, useMemo } from 'react';\nimport { createRoot } from 'react-dom/client';\n\nimport { type IntentDispatcher, NavigationAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { createDocAccessor, fullyQualifiedId, getSpace, type Query } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Icon, ThemeProvider } from '@dxos/react-ui';\nimport {\n type AutocompleteResult,\n type EditorStateStore,\n type EditorViewMode,\n type Extension,\n InputModeExtensions,\n createDataExtensions,\n autocomplete,\n decorateMarkdown,\n folding,\n formattingKeymap,\n linkTooltip,\n listener,\n selectionState,\n typewriter,\n} from '@dxos/react-ui-editor';\nimport { defaultTx } from '@dxos/react-ui-theme';\nimport { isNotFalsy } from '@dxos/util';\n\nimport { type DocumentType, type MarkdownPluginState, type MarkdownSettingsProps } from './types';\nimport { setFallbackName } from './util';\n\ntype ExtensionsOptions = {\n document: DocumentType;\n dispatch?: IntentDispatcher;\n query?: Query<DocumentType>;\n settings: MarkdownSettingsProps;\n viewMode?: EditorViewMode;\n editorStateStore?: EditorStateStore;\n};\n\n// TODO(burdon): Merge with createBaseExtensions below.\nexport const useExtensions = ({\n document,\n settings,\n viewMode,\n editorStateStore,\n extensionProviders,\n}: ExtensionsOptions & Pick<MarkdownPluginState, 'extensionProviders'>): Extension[] => {\n const dispatch = useIntentDispatcher();\n const identity = useIdentity();\n const space = getSpace(document);\n\n // TODO(wittjosiah): Autocomplete is not working and this query is causing performance issues.\n // TODO(burdon): Unsubscribe.\n // const query = space?.db.query(Filter.schema(DocumentType));\n // query?.subscribe();\n const baseExtensions = useMemo(\n () =>\n createBaseExtensions({\n document,\n settings,\n viewMode,\n dispatch,\n // query,\n }),\n [document, viewMode, dispatch, settings, settings.folding, settings.numberedHeadings],\n );\n\n //\n // External extensions from other plugins.\n //\n const pluginExtensions = useMemo<Extension[] | undefined>(\n () =>\n extensionProviders?.reduce((acc: Extension[], provider) => {\n const extension = typeof provider === 'function' ? provider({ document }) : provider;\n if (extension) {\n acc.push(extension);\n }\n\n return acc;\n }, []),\n [extensionProviders],\n );\n\n //\n // Basic plugins.\n //\n return useMemo<Extension[]>(\n () =>\n [\n // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.\n createDataExtensions({\n id: document.id,\n text: document.content && createDocAccessor(document.content, ['content']),\n space,\n identity,\n }),\n selectionState(editorStateStore),\n listener({\n onChange: (text) => setFallbackName(document, text),\n }),\n baseExtensions,\n pluginExtensions,\n ].filter(isNotFalsy),\n [baseExtensions, pluginExtensions, document, document.content, space, identity],\n );\n};\n\n/**\n * Create extension instances for editor.\n */\nconst createBaseExtensions = ({ document, dispatch, settings, query, viewMode }: ExtensionsOptions): Extension[] => {\n const extensions: Extension[] = [\n settings.editorInputMode && InputModeExtensions[settings.editorInputMode],\n settings.folding && folding(),\n ].filter(isNotFalsy);\n\n //\n // Markdown\n //\n if (viewMode !== 'source') {\n extensions.push(\n ...[\n formattingKeymap(),\n decorateMarkdown({\n selectionChangeDelay: 100,\n numberedHeadings: settings.numberedHeadings ? { from: 2 } : undefined,\n // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.\n renderLinkButton:\n dispatch && document\n ? onRenderLink((id: string) => {\n void dispatch({\n action: NavigationAction.ADD_TO_ACTIVE,\n data: {\n id,\n part: 'main',\n pivotId: fullyQualifiedId(document),\n scrollIntoView: true,\n },\n });\n })\n : undefined,\n }),\n linkTooltip(renderLinkTooltip),\n ],\n );\n }\n\n //\n // Autocomplete object links.\n //\n if (query) {\n extensions.push(\n autocomplete({\n onSearch: (text: string) => {\n // TODO(burdon): Specify filter (e.g., stack).\n return query.objects\n .map<AutocompleteResult | undefined>((object) =>\n object.name?.length && object.id !== document?.id\n ? {\n label: object.name,\n // TODO(burdon): Factor out URL builder.\n apply: `[${object.name}](/${fullyQualifiedId(object)})`,\n }\n : undefined,\n )\n .filter(isNotFalsy);\n },\n }),\n );\n }\n\n if (settings.debug) {\n const items = settings.typewriter?.split(/[,\\n]/) ?? '';\n if (items) {\n extensions.push(typewriter({ items }));\n }\n }\n\n return extensions;\n};\n\n// TODO(burdon): Factor out styles.\nconst style = {\n hover: 'rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400',\n icon: 'inline-block leading-none mis-1 cursor-pointer',\n};\n\nconst onRenderLink = (onSelectObject: (id: string) => void) => (el: Element, url: string) => {\n // TODO(burdon): Formalize/document internal link format.\n const isInternal =\n url.startsWith('/') ||\n // TODO(wittjosiah): This should probably be parsed out on paste?\n url.startsWith(window.location.origin);\n\n const options: AnchorHTMLAttributes<any> = isInternal\n ? {\n onClick: () => {\n const qualifiedId = url.split('/').at(-1);\n invariant(qualifiedId, 'Invalid link format.');\n onSelectObject(qualifiedId);\n },\n }\n : {\n href: url,\n rel: 'noreferrer',\n target: '_blank',\n };\n\n renderRoot(\n el,\n <a {...options} className={style.hover}>\n <Icon\n icon={isInternal ? 'ph--arrow-square-down--bold' : 'ph--arrow-square-out--bold'}\n size={4}\n classNames={style.icon}\n />\n </a>,\n );\n};\n\nconst renderLinkTooltip = (el: Element, url: string) => {\n const web = new URL(url);\n renderRoot(\n el,\n <a href={url} rel='noreferrer' target='_blank' className={style.hover}>\n {web.origin}\n <Icon icon='ph--arrow-square-out--bold' size={4} classNames={style.icon} />\n </a>,\n );\n};\n\n// TODO(burdon): Remove react rendering; use DOM directly.\nexport const renderRoot = <T extends Element>(root: T, node: ReactNode): T => {\n createRoot(root).render(<ThemeProvider tx={defaultTx}>{node}</ThemeProvider>);\n return root;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_react", "import_app_framework", "import_react_ui_editor", "import_echo", "import_react_ui", "import_react_ui_theme", "import_util", "useSelectCurrentThread", "editorView", "documentId", "handleScrollIntoView", "useCallback", "action", "data", "LayoutAction", "SCROLL_INTO_VIEW", "id", "cursor", "range", "Cursor", "getRangeFromCursor", "state", "selection", "main", "from", "anchor", "undefined", "effects", "EditorView", "scrollIntoView", "y", "yMargin", "push", "setSelection", "of", "current", "dispatch", "useIntentResolver", "MARKDOWN_PLUGIN", "DEFAULT_VIEW_MODE", "MarkdownEditor", "role", "initialValue", "extensions", "extensionProviders", "scrollPastEnd", "toolbar", "viewMode", "editorStateStore", "onFileUpload", "onViewModeChange", "t", "useTranslation", "themeMode", "useThemeContext", "useIntentDispatcher", "formattingState", "formattingObserver", "useFormattingState", "attendableAttributes", "useAttendableAttributes", "hasAttention", "useAttention", "scrollTo", "useMemo", "getState", "providerExtensions", "flatMap", "provider", "filter", "nonNullable", "commentsState", "commentObserver", "useCommentState", "onCommentClick", "SET_LAYOUT", "element", "commentClickObserver", "useCommentClickListener", "handleDrop", "view", "files", "file", "info", "processAction", "type", "url", "parentRef", "focusAttributes", "useTextEditor", "createBasicExtensions", "readonly", "placeholder", "createMarkdownExtensions", "createThemeExtensions", "syntaxHighlighting", "slots", "content", "className", "editorContent", "editorGutter", "dropFile", "onDrop", "isNotFalsy", "moveToEndOfLine", "useTest", "handleToolbarAction", "useActionHandler", "handleAction", "openSearchPanel", "React", "div", "Toolbar", "Root", "classNames", "textBlockWidth", "sectionToolbarLayout", "onAction", "Markdown", "Custom", "onUpload", "Separator", "View", "mode", "Actions", "ref", "data-testid", "data-toolbar", "mx", "focusRing", "useEffect", "composer", "window", "useExtensions", "document", "settings", "identity", "useIdentity", "space", "getSpace", "baseExtensions", "createBaseExtensions", "folding", "numberedHeadings", "pluginExtensions", "reduce", "acc", "extension", "createDataExtensions", "text", "createDocAccessor", "selectionState", "listener", "onChange", "setFallbackName", "query", "editorInputMode", "InputModeExtensions", "formattingKeymap", "decorateMarkdown", "selectionChangeDelay", "renderLinkButton", "onRenderLink", "NavigationAction", "ADD_TO_ACTIVE", "part", "pivotId", "fullyQualifiedId", "linkTooltip", "renderLinkTooltip", "autocomplete", "onSearch", "objects", "map", "object", "name", "length", "label", "apply", "debug", "items", "typewriter", "split", "style", "hover", "icon", "onSelectObject", "el", "isInternal", "startsWith", "location", "origin", "options", "onClick", "qualifiedId", "at", "invariant", "href", "rel", "target", "renderRoot", "a", "Icon", "size", "web", "URL", "root", "node", "createRoot", "render", "ThemeProvider", "tx", "defaultTx", "MarkdownContainer", "props", "DocumentType", "DocumentEditor", "doc", "fallbackName", "getFallbackName", "fileManagerPlugin", "useResolvePlugin", "parseFileManagerPlugin", "handleFileUpload", "provides", "upload", "inputMode"]
|
|
7
|
+
}
|
|
@@ -16,15 +16,15 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var chunk_6HPTH2F5_exports = {};
|
|
20
|
+
__export(chunk_6HPTH2F5_exports, {
|
|
21
21
|
getFallbackName: () => getFallbackName,
|
|
22
22
|
isMarkdownProperties: () => isMarkdownProperties,
|
|
23
23
|
markdownExtensionPlugins: () => markdownExtensionPlugins,
|
|
24
24
|
serializer: () => serializer,
|
|
25
25
|
setFallbackName: () => setFallbackName
|
|
26
26
|
});
|
|
27
|
-
module.exports = __toCommonJS(
|
|
27
|
+
module.exports = __toCommonJS(chunk_6HPTH2F5_exports);
|
|
28
28
|
var import_chunk_UJMOZCIA = require("./chunk-UJMOZCIA.cjs");
|
|
29
29
|
var import_async = require("@dxos/async");
|
|
30
30
|
var import_echo = require("@dxos/react-client/echo");
|
|
@@ -47,13 +47,15 @@ var serializer = {
|
|
|
47
47
|
const content = await (0, import_echo.loadObjectReferences)(object, (doc) => doc.content);
|
|
48
48
|
return JSON.stringify({
|
|
49
49
|
name: object.name,
|
|
50
|
+
fallbackName: object.fallbackName,
|
|
50
51
|
content: content.content
|
|
51
52
|
});
|
|
52
53
|
},
|
|
53
54
|
deserialize: async ({ content: serialized }) => {
|
|
54
|
-
const { name, content } = JSON.parse(serialized);
|
|
55
|
+
const { name, fallbackName, content } = JSON.parse(serialized);
|
|
55
56
|
return (0, import_echo.createObject)((0, import_echo.create)(import_chunk_UJMOZCIA.DocumentType, {
|
|
56
57
|
name,
|
|
58
|
+
fallbackName,
|
|
57
59
|
content: (0, import_echo.create)(import_chunk_UJMOZCIA.TextType, {
|
|
58
60
|
content
|
|
59
61
|
}),
|
|
@@ -69,4 +71,4 @@ var serializer = {
|
|
|
69
71
|
serializer,
|
|
70
72
|
setFallbackName
|
|
71
73
|
});
|
|
72
|
-
//# sourceMappingURL=chunk-
|
|
74
|
+
//# sourceMappingURL=chunk-6HPTH2F5.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/util.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { debounce } from '@dxos/async';\nimport { type TypedObjectSerializer } from '@dxos/plugin-space/types';\nimport { create, createObject, isEchoObject, loadObjectReferences } from '@dxos/react-client/echo';\n\nimport { DocumentType, type MarkdownProperties, type MarkdownExtensionProvides, TextType } from './types';\n\nexport const isMarkdownProperties = (data: unknown): data is MarkdownProperties =>\n isEchoObject(data)\n ? true\n : data && typeof data === 'object'\n ? 'title' in data && typeof data.title === 'string'\n : false;\n\ntype MarkdownExtensionPlugin = Plugin<MarkdownExtensionProvides>;\n\nexport const markdownExtensionPlugins = (plugins: Plugin[]): MarkdownExtensionPlugin[] => {\n return (plugins as MarkdownExtensionPlugin[]).filter((plugin) => Boolean(plugin.provides?.markdown));\n};\n\nconst nonTitleChars = /[^\\w ]/g;\n\nexport const getFallbackName = (content: string) => {\n return content.substring(0, 31).split('\\n')[0].replaceAll(nonTitleChars, '').trim();\n};\n\nexport const setFallbackName = debounce((doc: DocumentType, content: string) => {\n const name = getFallbackName(content);\n if (doc.fallbackName !== name) {\n doc.fallbackName = name;\n }\n}, 200);\n\nexport const serializer: TypedObjectSerializer<DocumentType> = {\n serialize: async ({ object }): Promise<string> => {\n const content = await loadObjectReferences(object, (doc) => doc.content);\n return JSON.stringify({ name: object.name, content: content.content });\n },\n\n deserialize: async ({ content: serialized }) => {\n const { name, content } = JSON.parse(serialized);\n return createObject(create(DocumentType, { name, content: create(TextType, { content }), threads: [] }));\n },\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,mBAAyB;AAEzB,kBAAyE;AAIlE,IAAMA,uBAAuB,CAACC,aACnCC,0BAAaD,IAAAA,IACT,OACAA,QAAQ,OAAOA,SAAS,WACtB,WAAWA,QAAQ,OAAOA,KAAKE,UAAU,WACzC;AAID,IAAMC,2BAA2B,CAACC,YAAAA;AACvC,SAAQA,QAAsCC,OAAO,CAACC,WAAWC,QAAQD,OAAOE,UAAUC,QAAAA,CAAAA;AAC5F;AAEA,IAAMC,gBAAgB;AAEf,IAAMC,kBAAkB,CAACC,YAAAA;AAC9B,SAAOA,QAAQC,UAAU,GAAG,EAAA,EAAIC,MAAM,IAAA,EAAM,CAAA,EAAGC,WAAWL,eAAe,EAAA,EAAIM,KAAI;AACnF;AAEO,IAAMC,sBAAkBC,uBAAS,CAACC,KAAmBP,YAAAA;AAC1D,QAAMQ,OAAOT,gBAAgBC,OAAAA;AAC7B,MAAIO,IAAIE,iBAAiBD,MAAM;AAC7BD,QAAIE,eAAeD;EACrB;AACF,GAAG,GAAA;AAEI,IAAME,aAAkD;EAC7DC,WAAW,OAAO,EAAEC,OAAM,MAAE;AAC1B,UAAMZ,UAAU,UAAMa,kCAAqBD,QAAQ,CAACL,QAAQA,IAAIP,OAAO;AACvE,WAAOc,KAAKC,UAAU;MAAEP,MAAMI,OAAOJ;
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { debounce } from '@dxos/async';\nimport { type TypedObjectSerializer } from '@dxos/plugin-space/types';\nimport { create, createObject, isEchoObject, loadObjectReferences } from '@dxos/react-client/echo';\n\nimport { DocumentType, type MarkdownProperties, type MarkdownExtensionProvides, TextType } from './types';\n\nexport const isMarkdownProperties = (data: unknown): data is MarkdownProperties =>\n isEchoObject(data)\n ? true\n : data && typeof data === 'object'\n ? 'title' in data && typeof data.title === 'string'\n : false;\n\ntype MarkdownExtensionPlugin = Plugin<MarkdownExtensionProvides>;\n\nexport const markdownExtensionPlugins = (plugins: Plugin[]): MarkdownExtensionPlugin[] => {\n return (plugins as MarkdownExtensionPlugin[]).filter((plugin) => Boolean(plugin.provides?.markdown));\n};\n\nconst nonTitleChars = /[^\\w ]/g;\n\nexport const getFallbackName = (content: string) => {\n return content.substring(0, 31).split('\\n')[0].replaceAll(nonTitleChars, '').trim();\n};\n\nexport const setFallbackName = debounce((doc: DocumentType, content: string) => {\n const name = getFallbackName(content);\n if (doc.fallbackName !== name) {\n doc.fallbackName = name;\n }\n}, 200);\n\nexport const serializer: TypedObjectSerializer<DocumentType> = {\n serialize: async ({ object }): Promise<string> => {\n const content = await loadObjectReferences(object, (doc) => doc.content);\n return JSON.stringify({ name: object.name, fallbackName: object.fallbackName, content: content.content });\n },\n\n deserialize: async ({ content: serialized }) => {\n const { name, fallbackName, content } = JSON.parse(serialized);\n return createObject(\n create(DocumentType, { name, fallbackName, content: create(TextType, { content }), threads: [] }),\n );\n },\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,mBAAyB;AAEzB,kBAAyE;AAIlE,IAAMA,uBAAuB,CAACC,aACnCC,0BAAaD,IAAAA,IACT,OACAA,QAAQ,OAAOA,SAAS,WACtB,WAAWA,QAAQ,OAAOA,KAAKE,UAAU,WACzC;AAID,IAAMC,2BAA2B,CAACC,YAAAA;AACvC,SAAQA,QAAsCC,OAAO,CAACC,WAAWC,QAAQD,OAAOE,UAAUC,QAAAA,CAAAA;AAC5F;AAEA,IAAMC,gBAAgB;AAEf,IAAMC,kBAAkB,CAACC,YAAAA;AAC9B,SAAOA,QAAQC,UAAU,GAAG,EAAA,EAAIC,MAAM,IAAA,EAAM,CAAA,EAAGC,WAAWL,eAAe,EAAA,EAAIM,KAAI;AACnF;AAEO,IAAMC,sBAAkBC,uBAAS,CAACC,KAAmBP,YAAAA;AAC1D,QAAMQ,OAAOT,gBAAgBC,OAAAA;AAC7B,MAAIO,IAAIE,iBAAiBD,MAAM;AAC7BD,QAAIE,eAAeD;EACrB;AACF,GAAG,GAAA;AAEI,IAAME,aAAkD;EAC7DC,WAAW,OAAO,EAAEC,OAAM,MAAE;AAC1B,UAAMZ,UAAU,UAAMa,kCAAqBD,QAAQ,CAACL,QAAQA,IAAIP,OAAO;AACvE,WAAOc,KAAKC,UAAU;MAAEP,MAAMI,OAAOJ;MAAMC,cAAcG,OAAOH;MAAcT,SAASA,QAAQA;IAAQ,CAAA;EACzG;EAEAgB,aAAa,OAAO,EAAEhB,SAASiB,WAAU,MAAE;AACzC,UAAM,EAAET,MAAMC,cAAcT,QAAO,IAAKc,KAAKI,MAAMD,UAAAA;AACnD,eAAOE,8BACLC,oBAAOC,oCAAc;MAAEb;MAAMC;MAAcT,aAASoB,oBAAOE,gCAAU;QAAEtB;MAAQ,CAAA;MAAIuB,SAAS,CAAA;IAAG,CAAA,CAAA;EAEnG;AACF;",
|
|
6
6
|
"names": ["isMarkdownProperties", "data", "isEchoObject", "title", "markdownExtensionPlugins", "plugins", "filter", "plugin", "Boolean", "provides", "markdown", "nonTitleChars", "getFallbackName", "content", "substring", "split", "replaceAll", "trim", "setFallbackName", "debounce", "doc", "name", "fallbackName", "serializer", "serialize", "object", "loadObjectReferences", "JSON", "stringify", "deserialize", "serialized", "parse", "createObject", "create", "DocumentType", "TextType", "threads"]
|
|
7
7
|
}
|