@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.
Files changed (40) hide show
  1. package/dist/lib/browser/{MarkdownContainer-6VGH47F5.mjs → MarkdownContainer-HRGXWEA4.mjs} +13 -17
  2. package/dist/lib/browser/MarkdownContainer-HRGXWEA4.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-45N5MEOV.mjs → chunk-VGIHBUXB.mjs} +4 -2
  4. package/dist/lib/browser/{chunk-45N5MEOV.mjs.map → chunk-VGIHBUXB.mjs.map} +2 -2
  5. package/dist/lib/browser/index.mjs +14 -15
  6. package/dist/lib/browser/index.mjs.map +3 -3
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/node/{MarkdownContainer-OXS7TME6.cjs → MarkdownContainer-QZ4YLO7M.cjs} +47 -51
  9. package/dist/lib/node/MarkdownContainer-QZ4YLO7M.cjs.map +7 -0
  10. package/dist/lib/node/{chunk-W2YJVZ3N.cjs → chunk-6HPTH2F5.cjs} +7 -5
  11. package/dist/lib/node/{chunk-W2YJVZ3N.cjs.map → chunk-6HPTH2F5.cjs.map} +2 -2
  12. package/dist/lib/node/index.cjs +20 -21
  13. package/dist/lib/node/index.cjs.map +3 -3
  14. package/dist/lib/node/meta.json +1 -1
  15. package/dist/lib/node-esm/{MarkdownContainer-IYX45C2U.mjs → MarkdownContainer-FSWQL76V.mjs} +13 -17
  16. package/dist/lib/node-esm/MarkdownContainer-FSWQL76V.mjs.map +7 -0
  17. package/dist/lib/node-esm/{chunk-UCNOGIBC.mjs → chunk-HPOTHJC4.mjs} +4 -2
  18. package/dist/lib/node-esm/{chunk-UCNOGIBC.mjs.map → chunk-HPOTHJC4.mjs.map} +2 -2
  19. package/dist/lib/node-esm/index.mjs +14 -15
  20. package/dist/lib/node-esm/index.mjs.map +3 -3
  21. package/dist/lib/node-esm/meta.json +1 -1
  22. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  23. package/dist/types/src/components/MarkdownContainer.d.ts +2 -2
  24. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  25. package/dist/types/src/components/MarkdownEditor.d.ts +4 -3
  26. package/dist/types/src/components/MarkdownEditor.d.ts.map +1 -1
  27. package/dist/types/src/extensions.d.ts +3 -2
  28. package/dist/types/src/extensions.d.ts.map +1 -1
  29. package/dist/types/src/util.d.ts.map +1 -1
  30. package/package.json +36 -45
  31. package/src/MarkdownPlugin.tsx +7 -15
  32. package/src/components/MarkdownContainer.tsx +3 -11
  33. package/src/components/MarkdownEditor.tsx +8 -3
  34. package/src/components/MarkdownSettings.tsx +15 -15
  35. package/src/extensions.tsx +10 -6
  36. package/src/translations.ts +1 -1
  37. package/src/util.tsx +5 -3
  38. package/dist/lib/browser/MarkdownContainer-6VGH47F5.mjs.map +0 -7
  39. package/dist/lib/node/MarkdownContainer-OXS7TME6.cjs.map +0 -7
  40. 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 MarkdownContainer_OXS7TME6_exports = {};
30
- __export(MarkdownContainer_OXS7TME6_exports, {
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(MarkdownContainer_OXS7TME6_exports);
35
- var import_chunk_W2YJVZ3N = require("./chunk-W2YJVZ3N.cjs");
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 import_react_ui_editor2 = require("@dxos/react-ui-editor");
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 import_react_ui_editor3 = require("@dxos/react-ui-editor");
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 import_react_ui_editor4 = require("@dxos/react-ui-editor");
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 = import_react_ui_editor3.Cursor.getRangeFromCursor(editorView.state, data.cursor);
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(import_react_ui_editor3.setSelection.of({
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, scrollTo, selection, toolbar, viewMode, onFileUpload, onViewModeChange }) => {
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, import_react_ui_editor2.useFormattingState)();
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, import_react_ui_editor2.useCommentState)();
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, import_react_ui_editor2.useCommentClickListener)(onCommentClick);
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, import_react_ui_editor2.processAction)(view, {
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, import_react_ui_editor2.useTextEditor)(() => ({
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, import_react_ui_editor2.createBasicExtensions)({
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, import_react_ui_editor2.createMarkdownExtensions)({
148
+ (0, import_react_ui_editor.createMarkdownExtensions)({
148
149
  themeMode
149
150
  }),
150
- (0, import_react_ui_editor2.createThemeExtensions)({
151
+ (0, import_react_ui_editor.createThemeExtensions)({
151
152
  themeMode,
152
153
  syntaxHighlighting: true,
153
154
  slots: {
154
155
  content: {
155
- className: import_react_ui_editor2.editorContent
156
+ className: import_react_ui_editor.editorContent
156
157
  }
157
158
  }
158
159
  }),
159
- import_react_ui_editor2.editorGutter,
160
- role !== "section" && onFileUpload && (0, import_react_ui_editor2.dropFile)({
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, import_react_ui_editor2.useActionHandler)(editorView);
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(import_react_ui_editor2.Toolbar.Root, {
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(import_react_ui_editor2.Toolbar.Markdown, null), onFileUpload && /* @__PURE__ */ import_react2.default.createElement(import_react_ui_editor2.Toolbar.Custom, {
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(import_react_ui_editor2.Toolbar.Separator, null), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_editor2.Toolbar.View, {
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(import_react_ui_editor2.Toolbar.Actions, null))), /* @__PURE__ */ import_react2.default.createElement("div", {
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 = ({ extensionProviders, document, settings, viewMode }) => {
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, import_react_ui_editor4.createDataExtensions)({
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, import_react_ui_editor4.state)(import_react_ui_editor4.localStorageStateStoreAdapter),
293
- (0, import_react_ui_editor4.listener)({
294
- onChange: (text) => (0, import_chunk_W2YJVZ3N.setFallbackName)(document, text)
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 && import_react_ui_editor5.InputModeExtensions[settings.editorInputMode],
310
- settings.folding && (0, import_react_ui_editor5.folding)()
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, import_react_ui_editor5.formattingKeymap)(),
315
- (0, import_react_ui_editor5.decorateMarkdown)({
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, import_react_ui_editor5.linkTooltip)(renderLinkTooltip)
334
+ (0, import_react_ui_editor3.linkTooltip)(renderLinkTooltip)
334
335
  ]);
335
336
  }
336
337
  if (query) {
337
- extensions.push((0, import_react_ui_editor5.autocomplete)({
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, import_react_ui_editor5.typewriter)({
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: 199,
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, import_chunk_W2YJVZ3N.getFallbackName)(doc.content.content);
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-OXS7TME6.cjs.map
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 chunk_W2YJVZ3N_exports = {};
20
- __export(chunk_W2YJVZ3N_exports, {
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(chunk_W2YJVZ3N_exports);
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-W2YJVZ3N.cjs.map
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;MAAMR,SAASA,QAAQA;IAAQ,CAAA;EACtE;EAEAgB,aAAa,OAAO,EAAEhB,SAASiB,WAAU,MAAE;AACzC,UAAM,EAAET,MAAMR,QAAO,IAAKc,KAAKI,MAAMD,UAAAA;AACrC,eAAOE,8BAAaC,oBAAOC,oCAAc;MAAEb;MAAMR,aAASoB,oBAAOE,gCAAU;QAAEtB;MAAQ,CAAA;MAAIuB,SAAS,CAAA;IAAG,CAAA,CAAA;EACvG;AACF;",
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
  }