@dxos/plugin-space 0.6.12-main.f9d0246 → 0.6.12-staging.0b4bb48

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 (69) hide show
  1. package/dist/lib/browser/{chunk-WBMH5WIP.mjs → chunk-DTVUOG2C.mjs} +2 -14
  2. package/dist/lib/browser/chunk-DTVUOG2C.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +185 -497
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/types/index.mjs +3 -7
  7. package/dist/lib/node/{chunk-GF3SRAQM.cjs → chunk-CVZPI2P3.cjs} +6 -20
  8. package/dist/lib/node/chunk-CVZPI2P3.cjs.map +7 -0
  9. package/dist/lib/node/index.cjs +278 -586
  10. package/dist/lib/node/index.cjs.map +4 -4
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/types/index.cjs +10 -14
  13. package/dist/lib/node/types/index.cjs.map +2 -2
  14. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  15. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  16. package/dist/types/src/components/ShareSpaceButton.stories.d.ts +0 -2
  17. package/dist/types/src/components/ShareSpaceButton.stories.d.ts.map +1 -1
  18. package/dist/types/src/components/SpaceMain/SpaceMain.d.ts.map +1 -1
  19. package/dist/types/src/components/SpacePresence.stories.d.ts +0 -2
  20. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  21. package/dist/types/src/components/SpaceSettings.d.ts.map +1 -1
  22. package/dist/types/src/components/index.d.ts +0 -2
  23. package/dist/types/src/components/index.d.ts.map +1 -1
  24. package/dist/types/src/translations.d.ts +0 -2
  25. package/dist/types/src/translations.d.ts.map +1 -1
  26. package/dist/types/src/types/thread.d.ts +0 -13
  27. package/dist/types/src/types/thread.d.ts.map +1 -1
  28. package/dist/types/src/types/types.d.ts +1 -18
  29. package/dist/types/src/types/types.d.ts.map +1 -1
  30. package/dist/types/src/util.d.ts +4 -1
  31. package/dist/types/src/util.d.ts.map +1 -1
  32. package/package.json +34 -41
  33. package/src/SpacePlugin.tsx +23 -38
  34. package/src/components/MenuFooter.tsx +0 -1
  35. package/src/components/SpaceMain/SpaceMain.tsx +22 -1
  36. package/src/components/SpaceSettings.tsx +3 -32
  37. package/src/components/index.ts +0 -2
  38. package/src/translations.ts +0 -2
  39. package/src/types/thread.ts +0 -9
  40. package/src/types/types.ts +1 -25
  41. package/src/util.tsx +50 -15
  42. package/dist/lib/browser/chunk-WBMH5WIP.mjs.map +0 -7
  43. package/dist/lib/node/chunk-GF3SRAQM.cjs.map +0 -7
  44. package/dist/lib/node-esm/chunk-GM2YUC77.mjs +0 -37
  45. package/dist/lib/node-esm/chunk-GM2YUC77.mjs.map +0 -7
  46. package/dist/lib/node-esm/chunk-N5VC55UM.mjs +0 -109
  47. package/dist/lib/node-esm/chunk-N5VC55UM.mjs.map +0 -7
  48. package/dist/lib/node-esm/index.mjs +0 -2953
  49. package/dist/lib/node-esm/index.mjs.map +0 -7
  50. package/dist/lib/node-esm/meta.json +0 -1
  51. package/dist/lib/node-esm/meta.mjs +0 -14
  52. package/dist/lib/node-esm/meta.mjs.map +0 -7
  53. package/dist/lib/node-esm/types/index.mjs +0 -26
  54. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  55. package/dist/types/src/components/SaveStatus.d.ts +0 -3
  56. package/dist/types/src/components/SaveStatus.d.ts.map +0 -1
  57. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +0 -13
  58. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +0 -1
  59. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +0 -115
  60. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +0 -1
  61. package/dist/types/src/components/SyncStatus/index.d.ts +0 -2
  62. package/dist/types/src/components/SyncStatus/index.d.ts.map +0 -1
  63. package/dist/types/src/components/SyncStatus/types.d.ts +0 -14
  64. package/dist/types/src/components/SyncStatus/types.d.ts.map +0 -1
  65. package/src/components/SaveStatus.tsx +0 -95
  66. package/src/components/SyncStatus/SyncStatus.stories.tsx +0 -62
  67. package/src/components/SyncStatus/SyncStatus.tsx +0 -188
  68. package/src/components/SyncStatus/index.ts +0 -5
  69. package/src/components/SyncStatus/types.ts +0 -77
@@ -1 +0,0 @@
1
- {"inputs":{"packages/plugins/plugin-space/src/meta.ts":{"bytes":4308,"imports":[],"format":"esm"},"packages/plugins/plugin-space/src/components/AwaitingObject.tsx":{"bytes":13778,"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/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/components/CollectionMain.tsx":{"bytes":3145,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/components/CollectionSection.tsx":{"bytes":2283,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/components/EmptySpace.tsx":{"bytes":2119,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/components/EmptyTree.tsx":{"bytes":2112,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/types/collection.ts":{"bytes":3094,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-space/src/types/thread.ts":{"bytes":9902,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-space/src/types/types.ts":{"bytes":4589,"imports":[],"format":"esm"},"packages/plugins/plugin-space/src/types/index.ts":{"bytes":680,"imports":[{"path":"packages/plugins/plugin-space/src/types/collection.ts","kind":"import-statement","original":"./collection"},{"path":"packages/plugins/plugin-space/src/types/thread.ts","kind":"import-statement","original":"./thread"},{"path":"packages/plugins/plugin-space/src/types/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-space/src/util.tsx":{"bytes":64136,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/migrations","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-space/src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-space/src/components/MenuFooter.tsx":{"bytes":4727,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-space/src/util.tsx","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/plugins/plugin-space/src/components/MissingObject.tsx":{"bytes":5838,"imports":[{"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-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/components/PersistenceStatus.tsx":{"bytes":10909,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx":{"bytes":6883,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/components/PopoverRenameSpace.tsx":{"bytes":6155,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/components/ShareSpaceButton.tsx":{"bytes":3357,"imports":[{"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":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/components/SpaceMain/SpaceMembersSection.tsx":{"bytes":28293,"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/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/invitations","kind":"import-statement","external":true},{"path":"@dxos/react-client/invitations","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/shell/react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/components/SpaceMain/SpaceMain.tsx":{"bytes":8374,"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/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/shell/react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/components/SpaceMain/SpaceMembersSection.tsx","kind":"import-statement","original":"./SpaceMembersSection"},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/components/SpaceMain/index.ts":{"bytes":523,"imports":[{"path":"packages/plugins/plugin-space/src/components/SpaceMain/SpaceMain.tsx","kind":"import-statement","original":"./SpaceMain"}],"format":"esm"},"packages/plugins/plugin-space/src/components/SpacePresence.tsx":{"bytes":27623,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/display-name","kind":"import-statement","external":true},{"path":"@dxos/react-client","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-attention","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/components/SpaceSettings.tsx":{"bytes":6878,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-settings","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-space/src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-space/src/components/SaveStatus.tsx":{"bytes":10018,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/plugin-status-bar","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/components/SyncStatus/types.ts":{"bytes":8538,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-space/src/components/SyncStatus/SyncStatus.tsx":{"bytes":19726,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/plugin-status-bar","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-syntax-highlighter","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/components/SyncStatus/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"../../meta"}],"format":"esm"},"packages/plugins/plugin-space/src/components/SyncStatus/index.ts":{"bytes":529,"imports":[{"path":"packages/plugins/plugin-space/src/components/SyncStatus/SyncStatus.tsx","kind":"import-statement","original":"./SyncStatus"}],"format":"esm"},"packages/plugins/plugin-space/src/components/index.ts":{"bytes":2076,"imports":[{"path":"packages/plugins/plugin-space/src/components/AwaitingObject.tsx","kind":"import-statement","original":"./AwaitingObject"},{"path":"packages/plugins/plugin-space/src/components/CollectionMain.tsx","kind":"import-statement","original":"./CollectionMain"},{"path":"packages/plugins/plugin-space/src/components/CollectionSection.tsx","kind":"import-statement","original":"./CollectionSection"},{"path":"packages/plugins/plugin-space/src/components/EmptySpace.tsx","kind":"import-statement","original":"./EmptySpace"},{"path":"packages/plugins/plugin-space/src/components/EmptyTree.tsx","kind":"import-statement","original":"./EmptyTree"},{"path":"packages/plugins/plugin-space/src/components/MenuFooter.tsx","kind":"import-statement","original":"./MenuFooter"},{"path":"packages/plugins/plugin-space/src/components/MissingObject.tsx","kind":"import-statement","original":"./MissingObject"},{"path":"packages/plugins/plugin-space/src/components/PersistenceStatus.tsx","kind":"import-statement","original":"./PersistenceStatus"},{"path":"packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx","kind":"import-statement","original":"./PopoverRenameObject"},{"path":"packages/plugins/plugin-space/src/components/PopoverRenameSpace.tsx","kind":"import-statement","original":"./PopoverRenameSpace"},{"path":"packages/plugins/plugin-space/src/components/ShareSpaceButton.tsx","kind":"import-statement","original":"./ShareSpaceButton"},{"path":"packages/plugins/plugin-space/src/components/SpaceMain/index.ts","kind":"import-statement","original":"./SpaceMain"},{"path":"packages/plugins/plugin-space/src/components/SpacePresence.tsx","kind":"import-statement","original":"./SpacePresence"},{"path":"packages/plugins/plugin-space/src/components/SpaceSettings.tsx","kind":"import-statement","original":"./SpaceSettings"},{"path":"packages/plugins/plugin-space/src/components/SaveStatus.tsx","kind":"import-statement","original":"./SaveStatus"},{"path":"packages/plugins/plugin-space/src/components/SyncStatus/index.ts","kind":"import-statement","original":"./SyncStatus"}],"format":"esm"},"packages/plugins/plugin-space/src/translations.ts":{"bytes":13538,"imports":[{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-space/src/SpacePlugin.tsx":{"bytes":175498,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/async","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/log","kind":"import-statement","external":true},{"path":"@dxos/migrations","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention","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-observability/meta","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/shell/react","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-space/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-space/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/plugin-space/src/types/index.ts","kind":"import-statement","original":"./types"},{"path":"packages/plugins/plugin-space/src/util.tsx","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/plugins/plugin-space/src/index.ts":{"bytes":1326,"imports":[{"path":"packages/plugins/plugin-space/src/SpacePlugin.tsx","kind":"import-statement","original":"./SpacePlugin"},{"path":"packages/plugins/plugin-space/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-space/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-space/src/types/index.ts","kind":"import-statement","original":"./types"},{"path":"packages/plugins/plugin-space/src/util.tsx","kind":"import-statement","original":"./util"},{"path":"packages/plugins/plugin-space/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/plugin-space/src/SpacePlugin.tsx","kind":"import-statement","original":"./SpacePlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-space/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":203596},"packages/plugins/plugin-space/dist/lib/node-esm/index.mjs":{"imports":[{"path":"packages/plugins/plugin-space/dist/lib/node-esm/chunk-GM2YUC77.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-space/dist/lib/node-esm/chunk-N5VC55UM.mjs","kind":"import-statement"},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/async","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/log","kind":"import-statement","external":true},{"path":"@dxos/migrations","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention","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-observability/meta","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/shell/react","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"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/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","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-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","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-theme","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-theme","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","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/invariant","kind":"import-statement","external":true},{"path":"@dxos/migrations","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","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-theme","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","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":"@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/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/shell/react","kind":"import-statement","external":true},{"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/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/invitations","kind":"import-statement","external":true},{"path":"@dxos/react-client/invitations","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/shell/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/display-name","kind":"import-statement","external":true},{"path":"@dxos/react-client","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-attention","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-settings","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/plugin-status-bar","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/plugin-status-bar","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-syntax-highlighter","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true}],"exports":["ActorSchema","AwaitingObject","COMPOSER_SPACE_LOCK","ChannelType","CollectionMain","CollectionSection","CollectionType","ContactType","EmptySpace","EmptyTree","FullPresence","MenuFooter","MessageState","MessageType","MissingObject","PersistenceStatus","PopoverRenameObject","PopoverRenameSpace","SHARED","SPACES","SPACE_DIRECTORY_HANDLE","SPACE_PLUGIN","SPACE_PLUGIN_SHORT_ID","SPACE_TYPE","SaveStatus","ShareSpaceButton","ShareSpaceButtonImpl","SmallPresence","SmallPresenceLive","SpaceAction","SpaceMain","SpacePlugin","SpacePresence","SpaceSettings","SyncStatus","SyncStatusDetail","SyncStatusIndicator","ThreadStatus","ThreadType","cloneObject","constructObjectActionGroups","constructObjectActions","constructSpaceActionGroups","constructSpaceActions","constructSpaceNode","createObjectNode","default","getActiveSpace","getNestedObjects","getSpaceDisplayName","memoizeQuery","parseSpaceInitPlugin","parseSpacePlugin","translations"],"entryPoint":"packages/plugins/plugin-space/src/index.ts","inputs":{"packages/plugins/plugin-space/src/SpacePlugin.tsx":{"bytesInOutput":45291},"packages/plugins/plugin-space/src/components/AwaitingObject.tsx":{"bytesInOutput":3833},"packages/plugins/plugin-space/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-space/src/components/CollectionMain.tsx":{"bytesInOutput":752},"packages/plugins/plugin-space/src/components/CollectionSection.tsx":{"bytesInOutput":469},"packages/plugins/plugin-space/src/components/EmptySpace.tsx":{"bytesInOutput":485},"packages/plugins/plugin-space/src/components/EmptyTree.tsx":{"bytesInOutput":483},"packages/plugins/plugin-space/src/components/MenuFooter.tsx":{"bytesInOutput":1295},"packages/plugins/plugin-space/src/util.tsx":{"bytesInOutput":15740},"packages/plugins/plugin-space/src/components/MissingObject.tsx":{"bytesInOutput":1590},"packages/plugins/plugin-space/src/components/PersistenceStatus.tsx":{"bytesInOutput":2741},"packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx":{"bytesInOutput":1863},"packages/plugins/plugin-space/src/components/PopoverRenameSpace.tsx":{"bytesInOutput":1619},"packages/plugins/plugin-space/src/components/ShareSpaceButton.tsx":{"bytesInOutput":721},"packages/plugins/plugin-space/src/components/SpaceMain/SpaceMain.tsx":{"bytesInOutput":2303},"packages/plugins/plugin-space/src/components/SpaceMain/SpaceMembersSection.tsx":{"bytesInOutput":7933},"packages/plugins/plugin-space/src/components/SpaceMain/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-space/src/components/SpacePresence.tsx":{"bytesInOutput":7031},"packages/plugins/plugin-space/src/components/SpaceSettings.tsx":{"bytesInOutput":1707},"packages/plugins/plugin-space/src/components/SaveStatus.tsx":{"bytesInOutput":2550},"packages/plugins/plugin-space/src/components/SyncStatus/SyncStatus.tsx":{"bytesInOutput":5505},"packages/plugins/plugin-space/src/components/SyncStatus/types.ts":{"bytesInOutput":2060},"packages/plugins/plugin-space/src/components/SyncStatus/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-space/src/translations.ts":{"bytesInOutput":4535},"packages/plugins/plugin-space/src/index.ts":{"bytesInOutput":31}},"bytes":113747},"packages/plugins/plugin-space/dist/lib/node-esm/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-space/dist/lib/node-esm/meta.mjs":{"imports":[{"path":"packages/plugins/plugin-space/dist/lib/node-esm/chunk-GM2YUC77.mjs","kind":"import-statement"}],"exports":["SPACE_PLUGIN","SPACE_PLUGIN_SHORT_ID","SpaceAction","default"],"entryPoint":"packages/plugins/plugin-space/src/meta.ts","inputs":{},"bytes":331},"packages/plugins/plugin-space/dist/lib/node-esm/chunk-GM2YUC77.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1795},"packages/plugins/plugin-space/dist/lib/node-esm/chunk-GM2YUC77.mjs":{"imports":[],"exports":["SPACE_PLUGIN","SPACE_PLUGIN_SHORT_ID","SpaceAction","meta_default"],"inputs":{"packages/plugins/plugin-space/src/meta.ts":{"bytesInOutput":1584}},"bytes":1850},"packages/plugins/plugin-space/dist/lib/node-esm/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-space/dist/lib/node-esm/types/index.mjs":{"imports":[{"path":"packages/plugins/plugin-space/dist/lib/node-esm/chunk-N5VC55UM.mjs","kind":"import-statement"}],"exports":["ActorSchema","ChannelType","CollectionType","ContactType","MessageState","MessageType","SPACE_DIRECTORY_HANDLE","ThreadStatus","ThreadType","parseSpaceInitPlugin"],"entryPoint":"packages/plugins/plugin-space/src/types/index.ts","inputs":{},"bytes":526},"packages/plugins/plugin-space/dist/lib/node-esm/chunk-N5VC55UM.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9385},"packages/plugins/plugin-space/dist/lib/node-esm/chunk-N5VC55UM.mjs":{"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"exports":["ActorSchema","ChannelType","CollectionType","ContactType","MessageState","MessageType","SPACE_DIRECTORY_HANDLE","ThreadStatus","ThreadType","parseSpaceInitPlugin"],"inputs":{"packages/plugins/plugin-space/src/types/collection.ts":{"bytesInOutput":830},"packages/plugins/plugin-space/src/types/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-space/src/types/thread.ts":{"bytesInOutput":2676},"packages/plugins/plugin-space/src/types/types.ts":{"bytesInOutput":179}},"bytes":4172}}}
@@ -1,14 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- SPACE_PLUGIN,
4
- SPACE_PLUGIN_SHORT_ID,
5
- SpaceAction,
6
- meta_default
7
- } from "./chunk-GM2YUC77.mjs";
8
- export {
9
- SPACE_PLUGIN,
10
- SPACE_PLUGIN_SHORT_ID,
11
- SpaceAction,
12
- meta_default as default
13
- };
14
- //# sourceMappingURL=meta.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,26 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- ActorSchema,
4
- ChannelType,
5
- CollectionType,
6
- ContactType,
7
- MessageState,
8
- MessageType,
9
- SPACE_DIRECTORY_HANDLE,
10
- ThreadStatus,
11
- ThreadType,
12
- parseSpaceInitPlugin
13
- } from "../chunk-N5VC55UM.mjs";
14
- export {
15
- ActorSchema,
16
- ChannelType,
17
- CollectionType,
18
- ContactType,
19
- MessageState,
20
- MessageType,
21
- SPACE_DIRECTORY_HANDLE,
22
- ThreadStatus,
23
- ThreadType,
24
- parseSpaceInitPlugin
25
- };
26
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare const SaveStatus: () => React.JSX.Element;
3
- //# sourceMappingURL=SaveStatus.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SaveStatus.d.ts","sourceRoot":"","sources":["../../../../src/components/SaveStatus.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAYnD,eAAO,MAAM,UAAU,yBAetB,CAAC"}
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- import { type ThemedClassName } from '@dxos/react-ui';
3
- import { type PeerSyncState, type SpaceSyncStateMap } from './types';
4
- export declare const SyncStatus: () => React.JSX.Element;
5
- export declare const SyncStatusIndicator: ({ state }: {
6
- state: SpaceSyncStateMap;
7
- }) => React.JSX.Element;
8
- export declare const SyncStatusDetail: ({ classNames, state, summary, debug, }: ThemedClassName<{
9
- state: SpaceSyncStateMap;
10
- summary: PeerSyncState;
11
- debug?: boolean;
12
- }>) => React.JSX.Element;
13
- //# sourceMappingURL=SyncStatus.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SyncStatus.d.ts","sourceRoot":"","sources":["../../../../../src/components/SyncStatus/SyncStatus.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAItD,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAgC,MAAM,SAAS,CAAC;AAWlH,eAAO,MAAM,UAAU,yBAGtB,CAAC;AAEF,eAAO,MAAM,mBAAmB,cAAe;IAAE,KAAK,EAAE,iBAAiB,CAAA;CAAE,sBA2C1E,CAAC;AAEF,eAAO,MAAM,gBAAgB,2CAK1B,eAAe,CAAC;IACjB,KAAK,EAAE,iBAAiB,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC,sBAgBD,CAAC"}
@@ -1,115 +0,0 @@
1
- import '@dxos-theme';
2
- import React from 'react';
3
- import { type SpaceSyncStateMap } from './types';
4
- declare const _default: {
5
- title: string;
6
- decorators: import("@storybook/react/*").Decorator[];
7
- component: ({ state }: {
8
- state: SpaceSyncStateMap;
9
- }) => React.JSX.Element;
10
- parameters: {
11
- translations: {
12
- 'en-US': {
13
- "dxos.org/plugin/space": {
14
- 'plugin name': string;
15
- 'first run message': string;
16
- 'create space label': string;
17
- 'join space label': string;
18
- 'empty space message': string;
19
- 'empty tree message': string;
20
- 'unnamed space label': string;
21
- 'closed space label': string;
22
- 'loading space label': string;
23
- 'lock space label': string;
24
- 'unlock space label': string;
25
- 'rename space label': string;
26
- 'active space label': string;
27
- 'space name label': string;
28
- 'object name label': string;
29
- 'close space label': string;
30
- 'open space label': string;
31
- 'export data label': string;
32
- 'import data label': string;
33
- 'migrate space label': string;
34
- 'share space': string;
35
- 'save space to disk label': string;
36
- 'load space from disk label': string;
37
- 'confirm restore title': string;
38
- 'confirm restore body': string;
39
- 'upload file message': string;
40
- 'object title placeholder': string;
41
- 'personal space label': string;
42
- 'spaces label': string;
43
- 'show hidden spaces label': string;
44
- 'save files to directory label': string;
45
- 'select path label': string;
46
- 'rename collection label': string;
47
- 'rename object label': string;
48
- 'duplicate object label': string;
49
- 'delete collection label': string;
50
- 'delete object label': string;
51
- 'collection deleted label': string;
52
- 'object deleted label': string;
53
- 'go to object label': string;
54
- 'found object label': string;
55
- 'found object description': string;
56
- 'waiting for object label': string;
57
- 'waiting for object description': string;
58
- 'object not found label': string;
59
- 'object not found description': string;
60
- 'missing object message': string;
61
- 'missing object description': string;
62
- 'create collection label': string;
63
- 'unnamed object label': string;
64
- 'unnamed collection label': string;
65
- 'create object in space label': string;
66
- 'create object in collection label': string;
67
- 'share space label': string;
68
- 'space members label': string;
69
- 'active space members heading': string;
70
- 'inactive space members heading': string;
71
- 'presence label_zero': string;
72
- 'presence label_one': string;
73
- 'presence label_other': string;
74
- 'persisted locally label': string;
75
- 'persisted locally message': string;
76
- 'persistence pending label': string;
77
- 'persistence error label': string;
78
- 'more actions label': string;
79
- 'invitations heading': string;
80
- 'keyshortcuts label': string;
81
- 'menu footer label': string;
82
- 'location label': string;
83
- 'space limit label': string;
84
- 'space limit description': string;
85
- 'space limit close label': string;
86
- 'remove deleted objects label': string;
87
- 'remove deleted objects alt': string;
88
- 'copy link label': string;
89
- 'default on space create label': string;
90
- 'sync status title': string;
91
- };
92
- };
93
- }[];
94
- };
95
- render: (props: any) => React.JSX.Element;
96
- };
97
- export default _default;
98
- export declare const Default: {
99
- args: {
100
- state: SpaceSyncStateMap;
101
- };
102
- };
103
- export declare const Detail: {
104
- render: ({ classNames, state, summary, debug, }: import("packages/ui/react-ui/dist/types/src").ThemedClassName<{
105
- state: SpaceSyncStateMap;
106
- summary: import("./types").PeerSyncState;
107
- debug?: boolean;
108
- }>) => React.JSX.Element;
109
- args: {
110
- state: SpaceSyncStateMap;
111
- summary: import("./types").PeerSyncState;
112
- classNames: string;
113
- };
114
- };
115
- //# sourceMappingURL=SyncStatus.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SyncStatus.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/SyncStatus/SyncStatus.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAErB,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAG3C,GAAG;;AAQzB,wBAME;AAmBF,eAAO,MAAM,OAAO;;;;CAInB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;aAQqyB,CAAC;;;;;;;CADxzB,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './SyncStatus';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/SyncStatus/index.ts"],"names":[],"mappings":"AAIA,cAAc,cAAc,CAAC"}
@@ -1,14 +0,0 @@
1
- import { type SpaceId, type SpaceSyncState } from '@dxos/client/echo';
2
- export type Progress = {
3
- count: number;
4
- total: number;
5
- };
6
- export type PeerSyncState = Omit<SpaceSyncState.PeerState, 'peerId'>;
7
- export type SpaceSyncStateMap = Record<SpaceId, PeerSyncState>;
8
- export declare const createEmptyEdgeSyncState: () => PeerSyncState;
9
- export declare const getSyncSummary: (syncMap: SpaceSyncStateMap) => PeerSyncState;
10
- /**
11
- * Hook Subscribes to sync state for each space.
12
- */
13
- export declare const useSyncState: () => SpaceSyncStateMap;
14
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/SyncStatus/types.ts"],"names":[],"mappings":"AAMA,OAAO,EAAc,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKlF,MAAM,MAAM,QAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAErE,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAE/D,eAAO,MAAM,wBAAwB,QAAO,aAM1C,CAAC;AAEH,eAAO,MAAM,cAAc,YAAa,iBAAiB,KAAG,aAS3D,CAAC;AAKF;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,iBAkC/B,CAAC"}
@@ -1,95 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import React, { useEffect, useState } from 'react';
6
-
7
- import { type UnsubscribeCallback } from '@dxos/async';
8
- import { type Client } from '@dxos/client';
9
- import { type Space, type SpaceId } from '@dxos/client/echo';
10
- import { Context } from '@dxos/context';
11
- import { StatusBar } from '@dxos/plugin-status-bar';
12
- import { useClient } from '@dxos/react-client';
13
- import { Icon, useTranslation } from '@dxos/react-ui';
14
-
15
- import { SPACE_PLUGIN } from '../meta';
16
-
17
- export const SaveStatus = () => {
18
- const { t } = useTranslation(SPACE_PLUGIN);
19
- const client = useClient();
20
- const [state, setState] = useState<'saved' | 'saving'>('saved');
21
- useEffect(() => {
22
- return createClientSaveTracker(client, (state) => {
23
- setState(state);
24
- });
25
- }, []);
26
-
27
- return (
28
- <StatusBar.Item title={state === 'saving' ? t('saving label') : t('saved label')}>
29
- <Icon icon={state === 'saving' ? 'ph--arrows-clockwise--regular' : 'ph--check-circle--regular'} size={4} />
30
- </StatusBar.Item>
31
- );
32
- };
33
-
34
- const createClientSaveTracker = (client: Client, cb: (state: 'saved' | 'saving') => void) => {
35
- const unsubscribeCallbacks: Record<SpaceId, UnsubscribeCallback> = {};
36
- const state: Record<SpaceId, 'saved' | 'saving'> = {};
37
-
38
- const install = (spaces: Space[]) => {
39
- for (const space of spaces) {
40
- if (state[space.id]) {
41
- continue;
42
- }
43
-
44
- state[space.id] = 'saved';
45
- unsubscribeCallbacks[space.id] = createSpaceSaveTracker(space, (s) => {
46
- state[space.id] = s;
47
- cb(Object.values(state).some((s) => s === 'saving') ? 'saving' : 'saved');
48
- });
49
- }
50
- };
51
- client.spaces.subscribe((spaces) => {
52
- install(spaces);
53
- });
54
- install(client.spaces.get());
55
-
56
- return () => {
57
- for (const unsubscribe of Object.values(unsubscribeCallbacks)) {
58
- unsubscribe();
59
- }
60
- };
61
- };
62
-
63
- const createSpaceSaveTracker = (space: Space, cb: (state: 'saved' | 'saving') => void): UnsubscribeCallback => {
64
- const ctx = new Context();
65
-
66
- void space.waitUntilReady().then(() => {
67
- if (ctx.disposed) {
68
- return;
69
- }
70
-
71
- let hasUnsavedChanges = false;
72
- let lastFlushPromise: Promise<void> | undefined;
73
- space.crud.saveStateChanged.on(ctx, ({ unsavedDocuments }) => {
74
- hasUnsavedChanges = unsavedDocuments.length > 0;
75
- });
76
- space.crud.saveStateChanged.debounce(500).on(ctx, () => {
77
- if (hasUnsavedChanges) {
78
- lastFlushPromise = undefined;
79
- cb('saving');
80
- } else {
81
- const flushPromise = space.crud.flush();
82
- lastFlushPromise = flushPromise;
83
- void flushPromise.then(() => {
84
- if (lastFlushPromise === flushPromise) {
85
- cb('saved');
86
- }
87
- });
88
- }
89
- });
90
- });
91
-
92
- return () => {
93
- void ctx.dispose();
94
- };
95
- };
@@ -1,62 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import '@dxos-theme';
6
-
7
- import React from 'react';
8
-
9
- import { SpaceId } from '@dxos/keys';
10
- import { withTheme, withLayout } from '@dxos/storybook-utils';
11
-
12
- import { SyncStatusDetail, SyncStatusIndicator } from './SyncStatus';
13
- import { getSyncSummary, type SpaceSyncStateMap } from './types';
14
- import translations from '../../translations';
15
-
16
- const Story = (props: any) => {
17
- return (
18
- <div className='flex flex-col-reverse p-4 '>
19
- <SyncStatusIndicator {...props} />
20
- </div>
21
- );
22
- };
23
-
24
- export default {
25
- title: 'plugin-space/SyncStatusIndicator',
26
- decorators: [withTheme, withLayout({ fullscreen: true })],
27
- component: SyncStatusIndicator,
28
- parameters: { translations },
29
- render: Story,
30
- };
31
-
32
- const random = ({ min, max }: { min: number; max: number }) => min + Math.floor(Math.random() * (max - min));
33
-
34
- const state: SpaceSyncStateMap = Array.from({ length: 5 }).reduce<SpaceSyncStateMap>((map) => {
35
- const total = random({ min: 10, max: 500 });
36
- const haveLocal = random({ min: 0, max: total });
37
- const haveRemote = random({ min: 0, max: total });
38
- map[SpaceId.random()] = {
39
- localDocumentCount: haveLocal,
40
- remoteDocumentCount: haveRemote,
41
- missingOnLocal: total - haveLocal,
42
- missingOnRemote: total - haveRemote,
43
- differentDocuments: 0,
44
- };
45
-
46
- return map;
47
- }, {});
48
-
49
- export const Default = {
50
- args: {
51
- state,
52
- },
53
- };
54
-
55
- export const Detail = {
56
- render: SyncStatusDetail,
57
- args: {
58
- state,
59
- summary: getSyncSummary(state),
60
- classNames: 'm-2 w-[200px] border border-separator rounded-md',
61
- },
62
- };