@dxos/plugin-stack 0.8.4-main.84f28bd → 0.8.4-main.937b3ca

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 (81) hide show
  1. package/dist/lib/browser/StackContainer-FUGH3ZJH.mjs +274 -0
  2. package/dist/lib/browser/StackContainer-FUGH3ZJH.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-FVB7LGW7.mjs → chunk-4X7CK6FM.mjs} +7 -5
  4. package/dist/lib/browser/chunk-4X7CK6FM.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-VDSBIEAC.mjs → chunk-MZUNZ6A3.mjs} +8 -9
  6. package/dist/lib/browser/chunk-MZUNZ6A3.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +38 -55
  8. package/dist/lib/browser/index.mjs.map +4 -4
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/react-surface-ZEFLABZS.mjs +40 -0
  11. package/dist/lib/browser/react-surface-ZEFLABZS.mjs.map +7 -0
  12. package/dist/lib/browser/types/index.mjs +1 -1
  13. package/dist/lib/node-esm/StackContainer-PTZGEQFQ.mjs +275 -0
  14. package/dist/lib/node-esm/StackContainer-PTZGEQFQ.mjs.map +7 -0
  15. package/dist/lib/node-esm/{chunk-GOXSWCA4.mjs → chunk-BHDJHEFJ.mjs} +8 -9
  16. package/dist/lib/node-esm/chunk-BHDJHEFJ.mjs.map +7 -0
  17. package/dist/lib/node-esm/{chunk-UN5PA7TK.mjs → chunk-HEEGXPSW.mjs} +7 -5
  18. package/dist/lib/node-esm/chunk-HEEGXPSW.mjs.map +7 -0
  19. package/dist/lib/node-esm/index.mjs +38 -55
  20. package/dist/lib/node-esm/index.mjs.map +4 -4
  21. package/dist/lib/node-esm/meta.json +1 -1
  22. package/dist/lib/node-esm/react-surface-JQOFHBYS.mjs +41 -0
  23. package/dist/lib/node-esm/react-surface-JQOFHBYS.mjs.map +7 -0
  24. package/dist/lib/node-esm/types/index.mjs +1 -1
  25. package/dist/types/src/StackPlugin.d.ts +2 -1
  26. package/dist/types/src/StackPlugin.d.ts.map +1 -1
  27. package/dist/types/src/capabilities/index.d.ts +1 -1
  28. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  29. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  30. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  31. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  32. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  33. package/dist/types/src/components/StackContainer.d.ts +9 -0
  34. package/dist/types/src/components/StackContainer.d.ts.map +1 -0
  35. package/dist/types/src/components/StackSection.d.ts.map +1 -1
  36. package/dist/types/src/components/StackSettings.d.ts.map +1 -1
  37. package/dist/types/src/components/index.d.ts +7 -2
  38. package/dist/types/src/components/index.d.ts.map +1 -1
  39. package/dist/types/src/meta.d.ts +2 -3
  40. package/dist/types/src/meta.d.ts.map +1 -1
  41. package/dist/types/src/translations.d.ts +5 -4
  42. package/dist/types/src/translations.d.ts.map +1 -1
  43. package/dist/types/src/types/index.d.ts +1 -1
  44. package/dist/types/src/types/index.d.ts.map +1 -1
  45. package/dist/types/src/types/stack.d.ts +13 -14
  46. package/dist/types/src/types/stack.d.ts.map +1 -1
  47. package/dist/types/src/types/types.d.ts +7 -5
  48. package/dist/types/src/types/types.d.ts.map +1 -1
  49. package/dist/types/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +41 -39
  51. package/src/StackPlugin.ts +25 -42
  52. package/src/capabilities/index.ts +1 -3
  53. package/src/capabilities/react-surface/index.ts +7 -0
  54. package/src/capabilities/react-surface/react-surface.tsx +33 -0
  55. package/src/components/StackContainer.tsx +166 -0
  56. package/src/components/StackSection.tsx +7 -6
  57. package/src/components/StackSettings.tsx +15 -8
  58. package/src/components/index.ts +1 -1
  59. package/src/meta.ts +8 -5
  60. package/src/translations.ts +4 -3
  61. package/src/types/index.ts +1 -1
  62. package/src/types/stack.ts +11 -7
  63. package/src/types/types.ts +4 -5
  64. package/dist/lib/browser/StackMain-6EC3A3IC.mjs +0 -298
  65. package/dist/lib/browser/StackMain-6EC3A3IC.mjs.map +0 -7
  66. package/dist/lib/browser/chunk-FVB7LGW7.mjs.map +0 -7
  67. package/dist/lib/browser/chunk-VDSBIEAC.mjs.map +0 -7
  68. package/dist/lib/browser/react-surface-KLOW5O2E.mjs +0 -46
  69. package/dist/lib/browser/react-surface-KLOW5O2E.mjs.map +0 -7
  70. package/dist/lib/node-esm/StackMain-G55P33OY.mjs +0 -299
  71. package/dist/lib/node-esm/StackMain-G55P33OY.mjs.map +0 -7
  72. package/dist/lib/node-esm/chunk-GOXSWCA4.mjs.map +0 -7
  73. package/dist/lib/node-esm/chunk-UN5PA7TK.mjs.map +0 -7
  74. package/dist/lib/node-esm/react-surface-H33L4IMD.mjs +0 -47
  75. package/dist/lib/node-esm/react-surface-H33L4IMD.mjs.map +0 -7
  76. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  77. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  78. package/dist/types/src/components/StackMain.d.ts +0 -9
  79. package/dist/types/src/components/StackMain.d.ts.map +0 -1
  80. package/src/capabilities/react-surface.tsx +0 -34
  81. package/src/components/StackMain.tsx +0 -160
@@ -1 +1 @@
1
- {"inputs":{"src/meta.ts":{"bytes":2205,"imports":[],"format":"esm"},"src/components/StackSettings.tsx":{"bytes":2955,"imports":[{"path":"@preact-signals/safe-react/tracking","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-form","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/components/StackContext.tsx":{"bytes":1834,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/components/CaretDownUp.tsx":{"bytes":3228,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/components/StackSection.tsx":{"bytes":17885,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","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-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"src/components/CaretDownUp.tsx","kind":"import-statement","original":"./CaretDownUp"},{"path":"src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/components/StackMain.tsx":{"bytes":19135,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","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-stack","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"},{"path":"src/components/StackSection.tsx","kind":"import-statement","original":"./StackSection"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/components/index.ts":{"bytes":824,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/components/StackSettings.tsx","kind":"import-statement","original":"./StackSettings"},{"path":"src/components/StackMain.tsx","kind":"dynamic-import","original":"./StackMain"}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":4541,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":778,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"src/translations.ts":{"bytes":4290,"imports":[{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/types/stack.ts":{"bytes":3625,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"src/types/types.ts":{"bytes":1994,"imports":[],"format":"esm"},"src/types/index.ts":{"bytes":536,"imports":[{"path":"src/types/stack.ts","kind":"import-statement","original":"./stack"},{"path":"src/types/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/StackPlugin.ts":{"bytes":6789,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/index.ts":{"bytes":547,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/StackPlugin.ts","kind":"import-statement","original":"./StackPlugin"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5384},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-VDSBIEAC.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-FVB7LGW7.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/react-surface-KLOW5O2E.mjs","kind":"dynamic-import"},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true}],"exports":["SECTION_IDENTIFIER","STACK_PLUGIN","StackPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/StackPlugin.ts":{"bytesInOutput":1394},"src/capabilities/index.ts":{"bytesInOutput":115},"src/translations.ts":{"bytesInOutput":1217}},"bytes":3074},"dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/types/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-VDSBIEAC.mjs","kind":"import-statement"}],"exports":["SectionSchema","StackViewType"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":154},"dist/lib/browser/chunk-VDSBIEAC.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1752},"dist/lib/browser/chunk-VDSBIEAC.mjs":{"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"exports":["SectionSchema","StackViewType"],"inputs":{"src/types/stack.ts":{"bytesInOutput":595},"src/types/index.ts":{"bytesInOutput":0}},"bytes":707},"dist/lib/browser/StackMain-6EC3A3IC.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":21556},"dist/lib/browser/StackMain-6EC3A3IC.mjs":{"imports":[{"path":"dist/lib/browser/chunk-FVB7LGW7.mjs","kind":"import-statement"},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","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-stack","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","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-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/components/StackMain.tsx","inputs":{"src/components/StackMain.tsx":{"bytesInOutput":4483},"src/components/StackContext.tsx":{"bytesInOutput":265},"src/components/StackSection.tsx":{"bytesInOutput":5411},"src/components/CaretDownUp.tsx":{"bytesInOutput":972}},"bytes":11486},"dist/lib/browser/react-surface-KLOW5O2E.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3549},"dist/lib/browser/react-surface-KLOW5O2E.mjs":{"imports":[{"path":"dist/lib/browser/chunk-FVB7LGW7.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","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-form","kind":"import-statement","external":true},{"path":"dist/lib/browser/StackMain-6EC3A3IC.mjs","kind":"dynamic-import"}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":861},"src/components/index.ts":{"bytesInOutput":94},"src/components/StackSettings.tsx":{"bytesInOutput":248}},"bytes":1528},"dist/lib/browser/chunk-FVB7LGW7.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1034},"dist/lib/browser/chunk-FVB7LGW7.mjs":{"imports":[],"exports":["SECTION_IDENTIFIER","STACK_PLUGIN","meta"],"inputs":{"src/meta.ts":{"bytesInOutput":557}},"bytes":674}}}
1
+ {"inputs":{"src/meta.ts":{"bytes":2522,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/components/StackSettings.tsx":{"bytes":3327,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/components/StackContext.tsx":{"bytes":1834,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/components/CaretDownUp.tsx":{"bytes":2962,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/components/StackSection.tsx":{"bytes":17302,"imports":[{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/react","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-stack","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/components/CaretDownUp.tsx","kind":"import-statement","original":"./CaretDownUp"},{"path":"src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"src/components/StackContainer.tsx":{"bytes":18868,"imports":[{"path":"effect/Option","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","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-stack","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"},{"path":"src/components/StackSection.tsx","kind":"import-statement","original":"./StackSection"}],"format":"esm"},"src/components/index.ts":{"bytes":858,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/components/StackSettings.tsx","kind":"import-statement","original":"./StackSettings"},{"path":"src/components/StackContainer.tsx","kind":"dynamic-import","original":"./StackContainer"}],"format":"esm"},"src/capabilities/react-surface/react-surface.tsx":{"bytes":4363,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../../components"},{"path":"src/meta.ts","kind":"import-statement","original":"../../meta"}],"format":"esm"},"src/capabilities/react-surface/index.ts":{"bytes":909,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/react-surface/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":486,"imports":[{"path":"src/capabilities/react-surface/index.ts","kind":"import-statement","original":"./react-surface"}],"format":"esm"},"src/translations.ts":{"bytes":4451,"imports":[{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/types/stack.ts":{"bytes":3826,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true}],"format":"esm"},"src/types/index.ts":{"bytes":499,"imports":[{"path":"src/types/stack.ts","kind":"import-statement","original":"./stack"}],"format":"esm"},"src/StackPlugin.ts":{"bytes":4311,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/index.ts":{"bytes":547,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/StackPlugin.ts","kind":"import-statement","original":"./StackPlugin"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4431},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-MZUNZ6A3.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-4X7CK6FM.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/react-surface-ZEFLABZS.mjs","kind":"dynamic-import"},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true}],"exports":["SECTION_IDENTIFIER","StackPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/StackPlugin.ts":{"bytesInOutput":774},"src/capabilities/react-surface/index.ts":{"bytesInOutput":148},"src/capabilities/index.ts":{"bytesInOutput":0},"src/translations.ts":{"bytesInOutput":1274}},"bytes":2526},"dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/types/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-MZUNZ6A3.mjs","kind":"import-statement"}],"exports":["SectionSchema","StackViewType"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":154},"dist/lib/browser/chunk-MZUNZ6A3.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1799},"dist/lib/browser/chunk-MZUNZ6A3.mjs":{"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true}],"exports":["SectionSchema","StackViewType"],"inputs":{"src/types/stack.ts":{"bytesInOutput":591},"src/types/index.ts":{"bytesInOutput":0}},"bytes":703},"dist/lib/browser/StackContainer-FUGH3ZJH.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":21662},"dist/lib/browser/StackContainer-FUGH3ZJH.mjs":{"imports":[{"path":"dist/lib/browser/chunk-4X7CK6FM.mjs","kind":"import-statement"},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","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-stack","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/react","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-stack","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/components/StackContainer.tsx","inputs":{"src/components/StackContainer.tsx":{"bytesInOutput":4032},"src/components/StackContext.tsx":{"bytesInOutput":265},"src/components/StackSection.tsx":{"bytesInOutput":5057},"src/components/CaretDownUp.tsx":{"bytesInOutput":771}},"bytes":10492},"dist/lib/browser/react-surface-ZEFLABZS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3667},"dist/lib/browser/react-surface-ZEFLABZS.mjs":{"imports":[{"path":"dist/lib/browser/chunk-4X7CK6FM.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","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-form","kind":"import-statement","external":true},{"path":"dist/lib/browser/StackContainer-FUGH3ZJH.mjs","kind":"dynamic-import"}],"exports":["default"],"entryPoint":"src/capabilities/react-surface/react-surface.tsx","inputs":{"src/capabilities/react-surface/react-surface.tsx":{"bytesInOutput":749},"src/components/index.ts":{"bytesInOutput":104},"src/components/StackSettings.tsx":{"bytesInOutput":182}},"bytes":1380},"dist/lib/browser/chunk-4X7CK6FM.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1165},"dist/lib/browser/chunk-4X7CK6FM.mjs":{"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["SECTION_IDENTIFIER","meta"],"inputs":{"src/meta.ts":{"bytesInOutput":695}},"bytes":796}}}
@@ -0,0 +1,40 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-4X7CK6FM.mjs";
4
+
5
+ // src/capabilities/react-surface/react-surface.tsx
6
+ import * as Effect from "effect/Effect";
7
+ import React2 from "react";
8
+ import { Capability, Common } from "@dxos/app-framework";
9
+ import { Obj } from "@dxos/echo";
10
+ import { Collection } from "@dxos/schema";
11
+
12
+ // src/components/index.ts
13
+ import { lazy } from "react";
14
+
15
+ // src/components/StackSettings.tsx
16
+ import React from "react";
17
+ import { Input, useTranslation } from "@dxos/react-ui";
18
+ import { ControlGroup, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
19
+
20
+ // src/components/index.ts
21
+ var StackContainer = lazy(() => import("./StackContainer-FUGH3ZJH.mjs"));
22
+
23
+ // src/capabilities/react-surface/react-surface.tsx
24
+ var react_surface_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(Common.Capability.ReactSurface, Common.createSurface({
25
+ id: `${meta.id}/article`,
26
+ role: "article",
27
+ filter: (data) => Obj.instanceOf(Collection.Collection, data.subject),
28
+ component: ({ role, data }) => {
29
+ const id = typeof data.id === "string" ? data.id : void 0;
30
+ return /* @__PURE__ */ React2.createElement(StackContainer, {
31
+ id: id ?? Obj.getDXN(data.subject).toString(),
32
+ role,
33
+ subject: data.subject
34
+ });
35
+ }
36
+ }))));
37
+ export {
38
+ react_surface_default as default
39
+ };
40
+ //# sourceMappingURL=react-surface-ZEFLABZS.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface/react-surface.tsx", "../../../src/components/index.ts", "../../../src/components/StackSettings.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React from 'react';\n\nimport { Capability, Common } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { Collection } from '@dxos/schema';\n\nimport { StackContainer } from '../../components';\nimport { meta } from '../../meta';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(\n Common.Capability.ReactSurface,\n Common.createSurface({\n id: `${meta.id}/article`,\n role: 'article',\n filter: (data): data is { id?: string; subject: Collection.Collection } =>\n Obj.instanceOf(Collection.Collection, data.subject),\n component: ({ role, data }) => {\n // This allows the id to be overridden by the surface for situations where the id of the collection\n // is not the same as the id of what is being represented (e.g., a space with a root collection).\n const id = typeof data.id === 'string' ? data.id : undefined;\n return <StackContainer id={id ?? Obj.getDXN(data.subject).toString()} role={role} subject={data.subject} />;\n },\n }),\n ),\n ),\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport const StackContainer = lazy(() => import('./StackContainer'));\n\nexport * from './StackSettings';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Input, useTranslation } from '@dxos/react-ui';\nimport { ControlGroup, ControlItemInput, ControlPage, ControlSection } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\nimport { type StackSettingsProps } from '../types';\n\nexport const StackSettings = ({ settings }: { settings: StackSettingsProps }) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <ControlPage>\n <ControlSection title={t('settings title', { ns: meta.id })}>\n <ControlGroup>\n <ControlItemInput title={t('settings separation label')}>\n <Input.Switch\n checked={settings.separation}\n onCheckedChange={(checked) => (settings.separation = !!checked)}\n />\n </ControlItemInput>\n </ControlGroup>\n </ControlSection>\n </ControlPage>\n );\n};\n"],
5
+ "mappings": ";;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,YAAW;AAElB,SAASC,YAAYC,cAAc;AACnC,SAASC,WAAW;AACpB,SAASC,kBAAkB;;;ACL3B,SAASC,YAAY;;;ACArB,OAAOC,WAAW;AAElB,SAASC,OAAOC,sBAAsB;AACtC,SAASC,cAAcC,kBAAkBC,aAAaC,sBAAsB;;;ADDrE,IAAMC,iBAAiBC,KAAK,MAAM,OAAO,+BAAA,CAAA;;;ADQhD,IAAA,wBAAeC,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YACTC,OAAOJ,WAAWK,cAClBD,OAAOE,cAAc;EACnBC,IAAI,GAAGC,KAAKD,EAAE;EACdE,MAAM;EACNC,QAAQ,CAACC,SACPC,IAAIC,WAAWC,WAAWA,YAAYH,KAAKI,OAAO;EACpDC,WAAW,CAAC,EAAEP,MAAME,KAAI,MAAE;AAGxB,UAAMJ,KAAK,OAAOI,KAAKJ,OAAO,WAAWI,KAAKJ,KAAKU;AACnD,WAAO,gBAAAC,OAAA,cAACC,gBAAAA;MAAeZ,IAAIA,MAAMK,IAAIQ,OAAOT,KAAKI,OAAO,EAAEM,SAAQ;MAAIZ;MAAYM,SAASJ,KAAKI;;EAClG;AACF,CAAA,CAAA,CAAA,CAAA;",
6
+ "names": ["Effect", "React", "Capability", "Common", "Obj", "Collection", "lazy", "React", "Input", "useTranslation", "ControlGroup", "ControlItemInput", "ControlPage", "ControlSection", "StackContainer", "lazy", "Capability", "makeModule", "succeed", "contributes", "Common", "ReactSurface", "createSurface", "id", "meta", "role", "filter", "data", "Obj", "instanceOf", "Collection", "subject", "component", "undefined", "React", "StackContainer", "getDXN", "toString"]
7
+ }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SectionSchema,
3
3
  StackViewType
4
- } from "../chunk-VDSBIEAC.mjs";
4
+ } from "../chunk-MZUNZ6A3.mjs";
5
5
  export {
6
6
  SectionSchema,
7
7
  StackViewType
@@ -0,0 +1,275 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ meta
4
+ } from "./chunk-HEEGXPSW.mjs";
5
+
6
+ // src/components/StackContainer.tsx
7
+ import * as Option from "effect/Option";
8
+ import React3, { useCallback, useState as useState2 } from "react";
9
+ import { Common } from "@dxos/app-framework";
10
+ import { useAppGraph, useCapabilities, useOperationInvoker } from "@dxos/app-framework/react";
11
+ import { Obj } from "@dxos/echo";
12
+ import { Graph } from "@dxos/plugin-graph";
13
+ import { SpaceOperation } from "@dxos/plugin-space/types";
14
+ import { Toolbar, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
15
+ import { AttentionProvider } from "@dxos/react-ui-attention";
16
+ import { Stack, StackItem as StackItem2 } from "@dxos/react-ui-stack";
17
+ import { isNonNullable } from "@dxos/util";
18
+
19
+ // src/components/StackContext.tsx
20
+ import { createContext, useContext } from "react";
21
+ var StackContext = /* @__PURE__ */ createContext({
22
+ onCollapse: () => {
23
+ },
24
+ onNavigate: async () => {
25
+ },
26
+ onDelete: async () => {
27
+ },
28
+ onAdd: () => {
29
+ }
30
+ });
31
+ var useStack = () => useContext(StackContext);
32
+
33
+ // src/components/StackSection.tsx
34
+ import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
35
+ import React2, { useMemo, useState } from "react";
36
+ import { Surface } from "@dxos/app-framework/react";
37
+ import { DropdownMenu, Icon, IconButton, useTranslation } from "@dxos/react-ui";
38
+ import { useAttentionAttributes } from "@dxos/react-ui-attention";
39
+ import { StackItem } from "@dxos/react-ui-stack";
40
+ import { getSize, mx, textBlockWidth } from "@dxos/ui-theme";
41
+
42
+ // src/components/CaretDownUp.tsx
43
+ import React from "react";
44
+ var CaretDownUp = ({ children, ...props }) => {
45
+ return /* @__PURE__ */ React.createElement("svg", {
46
+ xmlns: "http://www.w3.org/2000/svg",
47
+ viewBox: "0 0 256 256",
48
+ ...props
49
+ }, /* @__PURE__ */ React.createElement("rect", {
50
+ width: "256",
51
+ height: "256",
52
+ fill: "none"
53
+ }), /* @__PURE__ */ React.createElement("polyline", {
54
+ points: "80 224 128 176 176 224",
55
+ fill: "none",
56
+ stroke: "currentColor",
57
+ strokeLinecap: "round",
58
+ strokeLinejoin: "round",
59
+ strokeWidth: "16"
60
+ }), /* @__PURE__ */ React.createElement("polyline", {
61
+ points: "80 32 128 80 176 32",
62
+ fill: "none",
63
+ stroke: "currentColor",
64
+ strokeLinecap: "round",
65
+ strokeLinejoin: "round",
66
+ strokeWidth: "16"
67
+ }), children);
68
+ };
69
+
70
+ // src/components/StackSection.tsx
71
+ var sectionActionDimensions = "p-1 mlb-1 shrink-0 min-bs-0 is-[--rail-action] bs-min";
72
+ var StackSection = ({ id, view, object, metadata: { icon = "ph--placeholder--regular" } }) => {
73
+ const { t } = useTranslation(meta.id);
74
+ const { onNavigate, onAdd, onCollapse, onDelete } = useStack();
75
+ const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);
76
+ const attentionAttrs = useAttentionAttributes(id);
77
+ const stackItem = useMemo(() => ({
78
+ id
79
+ }), [
80
+ id
81
+ ]);
82
+ return /* @__PURE__ */ React2.createElement(CollapsiblePrimitive.Root, {
83
+ asChild: true,
84
+ open: !view.collapsed,
85
+ onOpenChange: (nextOpen) => onCollapse?.(id, !nextOpen)
86
+ }, /* @__PURE__ */ React2.createElement(StackItem.Root, {
87
+ item: stackItem,
88
+ role: "section",
89
+ ...attentionAttrs
90
+ }, /* @__PURE__ */ React2.createElement(StackItem.Heading, {
91
+ classNames: "attention-surface"
92
+ }, /* @__PURE__ */ React2.createElement("span", {
93
+ className: "sr-only"
94
+ }, view.title), /* @__PURE__ */ React2.createElement(StackItem.HeadingStickyContent, null, /* @__PURE__ */ React2.createElement(DropdownMenu.Root, {
95
+ open: optionsMenuOpen,
96
+ onOpenChange: setOptionsMenuOpen
97
+ }, /* @__PURE__ */ React2.createElement(DropdownMenu.Trigger, {
98
+ asChild: true
99
+ }, /* @__PURE__ */ React2.createElement(StackItem.SigilButton, null, /* @__PURE__ */ React2.createElement(Icon, {
100
+ icon,
101
+ size: 5,
102
+ classNames: "transition-opacity"
103
+ }))), /* @__PURE__ */ React2.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React2.createElement(DropdownMenu.Content, null, /* @__PURE__ */ React2.createElement(DropdownMenu.Viewport, null, view.collapsed ? /* @__PURE__ */ React2.createElement(DropdownMenu.Item, {
104
+ onClick: () => onNavigate(id),
105
+ "data-testid": "section.navigate-to"
106
+ }, /* @__PURE__ */ React2.createElement(Icon, {
107
+ icon: "ph--arrow-right--regular",
108
+ size: 5
109
+ }), /* @__PURE__ */ React2.createElement("span", {
110
+ className: "mis-2 grow"
111
+ }, t("navigate to section label"))) : /* @__PURE__ */ React2.createElement(CollapsiblePrimitive.Trigger, {
112
+ asChild: true
113
+ }, /* @__PURE__ */ React2.createElement(DropdownMenu.Item, null, /* @__PURE__ */ React2.createElement(CaretDownUp, {
114
+ className: getSize(5)
115
+ }), /* @__PURE__ */ React2.createElement("span", {
116
+ className: "mis-2 grow"
117
+ }, t("collapse label")))), /* @__PURE__ */ React2.createElement(DropdownMenu.Item, {
118
+ onClick: () => onAdd(id, "before"),
119
+ "data-testid": "section.add-before"
120
+ }, /* @__PURE__ */ React2.createElement(Icon, {
121
+ icon: "ph--arrow-line-up--regular",
122
+ size: 5
123
+ }), /* @__PURE__ */ React2.createElement("span", {
124
+ className: "mis-2 grow"
125
+ }, t("add section before label"))), /* @__PURE__ */ React2.createElement(DropdownMenu.Item, {
126
+ onClick: () => onAdd(id, "after"),
127
+ "data-testid": "section.add-after"
128
+ }, /* @__PURE__ */ React2.createElement(Icon, {
129
+ icon: "ph--arrow-line-down--regular",
130
+ size: 5
131
+ }), /* @__PURE__ */ React2.createElement("span", {
132
+ className: "mis-2 grow"
133
+ }, t("add section after label"))), /* @__PURE__ */ React2.createElement(DropdownMenu.Item, {
134
+ onClick: () => onDelete(id),
135
+ "data-testid": "section.remove"
136
+ }, /* @__PURE__ */ React2.createElement(Icon, {
137
+ icon: "ph--trash--regular",
138
+ size: 5
139
+ }), /* @__PURE__ */ React2.createElement("span", {
140
+ className: "mis-2 grow"
141
+ }, t("remove section label")))), /* @__PURE__ */ React2.createElement(DropdownMenu.Arrow, null)))), view.collapsed ? /* @__PURE__ */ React2.createElement(CollapsiblePrimitive.Trigger, {
142
+ asChild: true
143
+ }, /* @__PURE__ */ React2.createElement(IconButton, {
144
+ iconOnly: true,
145
+ variant: "ghost",
146
+ label: t("expand label"),
147
+ icon: "ph--caret-up-down--regular",
148
+ classNames: sectionActionDimensions
149
+ })) : /* @__PURE__ */ React2.createElement(IconButton, {
150
+ iconOnly: true,
151
+ variant: "ghost",
152
+ onClick: () => onNavigate(id),
153
+ label: t("navigate to section label"),
154
+ icon: "ph--arrow-right--regular",
155
+ "data-testid": "section.navigate-to",
156
+ classNames: sectionActionDimensions
157
+ }))), /* @__PURE__ */ React2.createElement(CollapsiblePrimitive.Content, null, /* @__PURE__ */ React2.createElement(Surface, {
158
+ role: "section",
159
+ data: {
160
+ subject: object
161
+ },
162
+ limit: 1,
163
+ placeholder: /* @__PURE__ */ React2.createElement(React2.Fragment, null)
164
+ })), view.collapsed && /* @__PURE__ */ React2.createElement(StackItem.Content, {
165
+ classNames: "attention-surface"
166
+ }, /* @__PURE__ */ React2.createElement("h2", {
167
+ className: mx("flex items-center p-4 font-medium", textBlockWidth)
168
+ }, view.title))));
169
+ };
170
+
171
+ // src/components/StackContainer.tsx
172
+ var StackContainer = ({ id, subject: collection }) => {
173
+ const { invokePromise } = useOperationInvoker();
174
+ const { graph } = useAppGraph();
175
+ const { t } = useTranslation2(meta.id);
176
+ const allMetadata = useCapabilities(Common.Capability.Metadata);
177
+ const [collapsedSections, setCollapsedSections] = useState2({});
178
+ const items = collection.objects.map((object) => object.target).filter(isNonNullable).map((object) => {
179
+ const metadata = allMetadata.find((m) => m.id === (Obj.getTypename(object) ?? "never"))?.metadata;
180
+ const view = {
181
+ // ...stack.sections[object.id],
182
+ collapsed: collapsedSections[Obj.getDXN(object).toString()],
183
+ title: object?.title ?? // TODO(wittjosiah): `getNode` is not reactive.
184
+ toLocalizedString(Graph.getNode(graph, Obj.getDXN(object).toString()).pipe(Option.getOrNull)?.properties.label, t)
185
+ };
186
+ return {
187
+ id: Obj.getDXN(object).toString(),
188
+ object,
189
+ metadata,
190
+ view
191
+ };
192
+ }) ?? [];
193
+ const handleDelete = useCallback(async (id2) => {
194
+ const index = collection.objects.map((object2) => object2.target).filter(isNonNullable).findIndex((section) => Obj.getDXN(section).toString() === id2);
195
+ const object = collection.objects[index].target;
196
+ if (Obj.isObject(object)) {
197
+ await invokePromise(SpaceOperation.RemoveObjects, {
198
+ objects: [
199
+ object
200
+ ],
201
+ target: collection
202
+ });
203
+ }
204
+ }, [
205
+ collection,
206
+ invokePromise
207
+ ]);
208
+ const handleAdd = useCallback(async (id2, position) => {
209
+ await invokePromise(Common.LayoutOperation.UpdateDialog, {
210
+ subject: `${meta.id}/AddSectionDialog`,
211
+ blockAlign: "start",
212
+ props: {
213
+ path: id2,
214
+ position,
215
+ collection
216
+ }
217
+ });
218
+ }, [
219
+ collection,
220
+ invokePromise
221
+ ]);
222
+ const handleNavigate = useCallback(async (id2) => {
223
+ await invokePromise(Common.LayoutOperation.Open, {
224
+ subject: [
225
+ id2
226
+ ]
227
+ });
228
+ }, [
229
+ invokePromise
230
+ ]);
231
+ const handleCollapse = useCallback((id2, collapsed) => setCollapsedSections((prev) => ({
232
+ ...prev,
233
+ [id2]: collapsed
234
+ })), []);
235
+ const handleAddSection = useCallback(() => invokePromise(SpaceOperation.OpenCreateObject, {
236
+ target: collection,
237
+ navigable: false
238
+ }), [
239
+ collection,
240
+ invokePromise
241
+ ]);
242
+ return /* @__PURE__ */ React3.createElement(StackItem2.Content, {
243
+ toolbar: true,
244
+ classNames: "container-max-width overflow-hidden border-l border-r border-subduedSeparator"
245
+ }, /* @__PURE__ */ React3.createElement(Toolbar.Root, null, /* @__PURE__ */ React3.createElement(Toolbar.IconButton, {
246
+ icon: "ph--plus--regular",
247
+ iconOnly: true,
248
+ label: "Add section",
249
+ "data-testid": "stack.addSection",
250
+ onClick: handleAddSection
251
+ })), /* @__PURE__ */ React3.createElement(AttentionProvider, {
252
+ id
253
+ }, /* @__PURE__ */ React3.createElement(StackContext.Provider, {
254
+ value: {
255
+ onCollapse: handleCollapse,
256
+ onNavigate: handleNavigate,
257
+ onDelete: handleDelete,
258
+ onAdd: handleAdd
259
+ }
260
+ }, /* @__PURE__ */ React3.createElement(Stack, {
261
+ orientation: "vertical",
262
+ size: "intrinsic",
263
+ id,
264
+ "data-testid": "main.stack",
265
+ classNames: "overflow-y-auto"
266
+ }, items.map((item) => /* @__PURE__ */ React3.createElement(StackSection, {
267
+ key: item.id,
268
+ ...item
269
+ }))))));
270
+ };
271
+ var StackContainer_default = StackContainer;
272
+ export {
273
+ StackContainer_default as default
274
+ };
275
+ //# sourceMappingURL=StackContainer-PTZGEQFQ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/StackContainer.tsx", "../../../src/components/StackContext.tsx", "../../../src/components/StackSection.tsx", "../../../src/components/CaretDownUp.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { useCallback, useState } from 'react';\n\nimport { Common } from '@dxos/app-framework';\nimport { useAppGraph, useCapabilities, useOperationInvoker } from '@dxos/app-framework/react';\nimport { type SurfaceComponentProps } from '@dxos/app-framework/react';\nimport { Obj } from '@dxos/echo';\nimport { Graph } from '@dxos/plugin-graph';\nimport { SpaceOperation } from '@dxos/plugin-space/types';\nimport { Toolbar, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { AttentionProvider } from '@dxos/react-ui-attention';\nimport { Stack, StackItem } from '@dxos/react-ui-stack';\nimport { type Collection } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../meta';\nimport {\n type AddSectionPosition,\n type CollapsedSections,\n type StackSectionItem,\n type StackSectionMetadata,\n type StackSectionView,\n} from '../types';\n\nimport { StackContext } from './StackContext';\nimport { StackSection } from './StackSection';\n\ntype StackContainerProps = SurfaceComponentProps<Collection.Collection> & {\n id: string;\n};\n\nconst StackContainer = ({ id, subject: collection }: StackContainerProps) => {\n const { invokePromise } = useOperationInvoker();\n const { graph } = useAppGraph();\n const { t } = useTranslation(meta.id);\n const allMetadata = useCapabilities(Common.Capability.Metadata);\n const [collapsedSections, setCollapsedSections] = useState<CollapsedSections>({});\n\n // TODO(wittjosiah): Re-implement stack views with relations.\n // const defaultStack = useMemo(() => Obj.make(StackViewType, { sections: {} }), [collection]);\n // const stack = (collection.views[StackViewType.typename]?.target as StackViewType | undefined) ?? defaultStack;\n // useEffect(() => {\n // if (!collection.views[StackViewType.typename]) {\n // collection.views[StackViewType.typename] = Ref.make(stack);\n // }\n // }, [collection, stack]);\n\n const items =\n collection.objects\n // TODO(wittjosiah): Should the database handle this differently?\n // TODO(wittjosiah): Render placeholders for missing objects so they can be removed from the stack?\n .map((object) => object.target)\n .filter(isNonNullable)\n .map((object) => {\n const metadata = allMetadata.find((m) => m.id === (Obj.getTypename(object) ?? 'never'))\n ?.metadata as StackSectionMetadata;\n const view = {\n // ...stack.sections[object.id],\n collapsed: collapsedSections[Obj.getDXN(object).toString()],\n title:\n (object as any)?.title ??\n // TODO(wittjosiah): `getNode` is not reactive.\n toLocalizedString(\n Graph.getNode(graph, Obj.getDXN(object).toString()).pipe(Option.getOrNull)?.properties.label,\n t,\n ),\n } as StackSectionView;\n return { id: Obj.getDXN(object).toString(), object, metadata, view } satisfies StackSectionItem;\n }) ?? [];\n\n const handleDelete = useCallback(\n async (id: string) => {\n const index = collection.objects\n .map((object) => object.target)\n .filter(isNonNullable)\n .findIndex((section) => Obj.getDXN(section).toString() === id);\n const object = collection.objects[index].target;\n if (Obj.isObject(object)) {\n await invokePromise(SpaceOperation.RemoveObjects, {\n objects: [object],\n target: collection,\n });\n\n // TODO(wittjosiah): The section should also be removed, but needs to be restored if the action is undone.\n // delete stack.sections[Path.last(path)];\n }\n },\n [collection, invokePromise],\n );\n\n const handleAdd = useCallback(\n async (id: string, position: AddSectionPosition) => {\n // TODO(wittjosiah): Use object creation dialog.\n await invokePromise(Common.LayoutOperation.UpdateDialog, {\n subject: `${meta.id}/AddSectionDialog`,\n blockAlign: 'start',\n props: {\n path: id,\n position,\n collection,\n },\n });\n },\n [collection, invokePromise],\n );\n\n const handleNavigate = useCallback(\n async (id: string) => {\n await invokePromise(Common.LayoutOperation.Open, { subject: [id] });\n },\n [invokePromise],\n );\n\n const handleCollapse = useCallback(\n (id: string, collapsed: boolean) => setCollapsedSections((prev) => ({ ...prev, [id]: collapsed })),\n [],\n );\n\n const handleAddSection = useCallback(\n () =>\n invokePromise(SpaceOperation.OpenCreateObject, {\n target: collection,\n navigable: false,\n }),\n [collection, invokePromise],\n );\n\n return (\n <StackItem.Content\n toolbar\n classNames='container-max-width overflow-hidden border-l border-r border-subduedSeparator'\n >\n <Toolbar.Root>\n <Toolbar.IconButton\n icon='ph--plus--regular'\n iconOnly\n label='Add section'\n data-testid='stack.addSection'\n onClick={handleAddSection}\n />\n </Toolbar.Root>\n <AttentionProvider id={id}>\n <StackContext.Provider\n value={{\n onCollapse: handleCollapse,\n onNavigate: handleNavigate,\n onDelete: handleDelete,\n onAdd: handleAdd,\n }}\n >\n <Stack orientation='vertical' size='intrinsic' id={id} data-testid='main.stack' classNames='overflow-y-auto'>\n {items.map((item) => (\n <StackSection key={item.id} {...item} />\n ))}\n </Stack>\n </StackContext.Provider>\n </AttentionProvider>\n </StackItem.Content>\n );\n};\n\nexport default StackContainer;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { type AddSectionPosition } from '../types';\n\nexport type StackContextValue = {\n onCollapse: (id: string, collapsed: boolean) => void;\n onNavigate: (id: string) => Promise<void>;\n onDelete: (id: string) => Promise<void>;\n onAdd: (id: string, position: AddSectionPosition) => void;\n};\n\nexport const StackContext = createContext<StackContextValue>({\n onCollapse: () => {},\n onNavigate: async () => {},\n onDelete: async () => {},\n onAdd: () => {},\n});\n\nexport const useStack = () => useContext(StackContext);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport React, { useMemo, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework/react';\nimport { DropdownMenu, Icon, IconButton, useTranslation } from '@dxos/react-ui';\nimport { useAttentionAttributes } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { getSize, mx, textBlockWidth } from '@dxos/ui-theme';\n\nimport { meta } from '../meta';\nimport { type StackSectionItem } from '../types';\n\nimport { CaretDownUp } from './CaretDownUp';\nimport { useStack } from './StackContext';\n\nconst sectionActionDimensions = 'p-1 mlb-1 shrink-0 min-bs-0 is-[--rail-action] bs-min';\n\nexport type StackSectionProps = StackSectionItem;\n\nexport const StackSection = ({\n id,\n view,\n object,\n metadata: { icon = 'ph--placeholder--regular' },\n}: StackSectionProps) => {\n const { t } = useTranslation(meta.id);\n const { onNavigate, onAdd, onCollapse, onDelete } = useStack();\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n const attentionAttrs = useAttentionAttributes(id);\n const stackItem = useMemo(() => ({ id }), [id]);\n\n return (\n <CollapsiblePrimitive.Root asChild open={!view.collapsed} onOpenChange={(nextOpen) => onCollapse?.(id, !nextOpen)}>\n <StackItem.Root item={stackItem} role='section' {...attentionAttrs}>\n <StackItem.Heading classNames='attention-surface'>\n <span className='sr-only'>{view.title}</span>\n <StackItem.HeadingStickyContent>\n <DropdownMenu.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: setOptionsMenuOpen,\n }}\n >\n <DropdownMenu.Trigger asChild>\n <StackItem.SigilButton>\n <Icon icon={icon} size={5} classNames='transition-opacity' />\n </StackItem.SigilButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>\n {view.collapsed ? (\n <DropdownMenu.Item onClick={() => onNavigate(id)} data-testid='section.navigate-to'>\n <Icon icon='ph--arrow-right--regular' size={5} />\n <span className='mis-2 grow'>{t('navigate to section label')}</span>\n </DropdownMenu.Item>\n ) : (\n <CollapsiblePrimitive.Trigger asChild>\n <DropdownMenu.Item>\n <CaretDownUp className={getSize(5)} />\n <span className='mis-2 grow'>{t('collapse label')}</span>\n </DropdownMenu.Item>\n </CollapsiblePrimitive.Trigger>\n )}\n <DropdownMenu.Item onClick={() => onAdd(id, 'before')} data-testid='section.add-before'>\n <Icon icon='ph--arrow-line-up--regular' size={5} />\n <span className='mis-2 grow'>{t('add section before label')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onAdd(id, 'after')} data-testid='section.add-after'>\n <Icon icon='ph--arrow-line-down--regular' size={5} />\n <span className='mis-2 grow'>{t('add section after label')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onDelete(id)} data-testid='section.remove'>\n <Icon icon='ph--trash--regular' size={5} />\n <span className='mis-2 grow'>{t('remove section label')}</span>\n </DropdownMenu.Item>\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n {view.collapsed ? (\n <CollapsiblePrimitive.Trigger asChild>\n <IconButton\n iconOnly\n variant='ghost'\n label={t('expand label')}\n icon='ph--caret-up-down--regular'\n classNames={sectionActionDimensions}\n />\n </CollapsiblePrimitive.Trigger>\n ) : (\n <IconButton\n iconOnly\n variant='ghost'\n onClick={() => onNavigate(id)}\n label={t('navigate to section label')}\n icon='ph--arrow-right--regular'\n data-testid='section.navigate-to'\n classNames={sectionActionDimensions}\n />\n )}\n </StackItem.HeadingStickyContent>\n </StackItem.Heading>\n <CollapsiblePrimitive.Content>\n <Surface role='section' data={{ subject: object }} limit={1} placeholder={<></>} />\n </CollapsiblePrimitive.Content>\n {view.collapsed && (\n <StackItem.Content classNames='attention-surface'>\n <h2 className={mx('flex items-center p-4 font-medium', textBlockWidth)}>{view.title}</h2>\n </StackItem.Content>\n )}\n </StackItem.Root>\n </CollapsiblePrimitive.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type ComponentPropsWithoutRef } from 'react';\n\nexport const CaretDownUp = ({ children, ...props }: ComponentPropsWithoutRef<'svg'>) => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' {...props}>\n <rect width='256' height='256' fill='none' />\n <polyline\n points='80 224 128 176 176 224'\n fill='none'\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='16'\n />\n <polyline\n points='80 32 128 80 176 32'\n fill='none'\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='16'\n />\n {children}\n </svg>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Option", "React", "useCallback", "useState", "Common", "useAppGraph", "useCapabilities", "useOperationInvoker", "Obj", "Graph", "SpaceOperation", "Toolbar", "toLocalizedString", "useTranslation", "AttentionProvider", "Stack", "StackItem", "isNonNullable", "createContext", "useContext", "StackContext", "createContext", "onCollapse", "onNavigate", "onDelete", "onAdd", "useStack", "useContext", "CollapsiblePrimitive", "React", "useMemo", "useState", "Surface", "DropdownMenu", "Icon", "IconButton", "useTranslation", "useAttentionAttributes", "StackItem", "getSize", "mx", "textBlockWidth", "React", "CaretDownUp", "children", "props", "svg", "xmlns", "viewBox", "rect", "width", "height", "fill", "polyline", "points", "stroke", "strokeLinecap", "strokeLinejoin", "strokeWidth", "sectionActionDimensions", "StackSection", "id", "view", "object", "metadata", "icon", "t", "useTranslation", "meta", "onNavigate", "onAdd", "onCollapse", "onDelete", "useStack", "optionsMenuOpen", "setOptionsMenuOpen", "useState", "attentionAttrs", "useAttentionAttributes", "stackItem", "useMemo", "React", "Root", "asChild", "open", "collapsed", "onOpenChange", "nextOpen", "StackItem", "item", "role", "Heading", "classNames", "span", "className", "title", "HeadingStickyContent", "DropdownMenu", "Trigger", "SigilButton", "Icon", "size", "Portal", "Content", "Viewport", "Item", "onClick", "data-testid", "CaretDownUp", "getSize", "Arrow", "IconButton", "iconOnly", "variant", "label", "Surface", "data", "subject", "limit", "placeholder", "h2", "mx", "textBlockWidth", "StackContainer", "id", "subject", "collection", "invokePromise", "useOperationInvoker", "graph", "useAppGraph", "t", "useTranslation", "meta", "allMetadata", "useCapabilities", "Common", "Capability", "Metadata", "collapsedSections", "setCollapsedSections", "useState", "items", "objects", "map", "object", "target", "filter", "isNonNullable", "metadata", "find", "m", "Obj", "getTypename", "view", "collapsed", "getDXN", "toString", "title", "toLocalizedString", "Graph", "getNode", "pipe", "getOrNull", "properties", "label", "handleDelete", "useCallback", "index", "findIndex", "section", "isObject", "SpaceOperation", "RemoveObjects", "handleAdd", "position", "LayoutOperation", "UpdateDialog", "blockAlign", "props", "path", "handleNavigate", "Open", "handleCollapse", "prev", "handleAddSection", "OpenCreateObject", "navigable", "React", "StackItem", "Content", "toolbar", "classNames", "Toolbar", "Root", "IconButton", "icon", "iconOnly", "data-testid", "onClick", "AttentionProvider", "StackContext", "Provider", "value", "onCollapse", "onNavigate", "onDelete", "onAdd", "Stack", "orientation", "size", "item", "StackSection", "key"]
7
+ }
@@ -1,8 +1,8 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
3
  // src/types/stack.ts
4
- import { Schema } from "effect";
5
- import { TypedObject } from "@dxos/echo-schema";
4
+ import * as Schema from "effect/Schema";
5
+ import { Type } from "@dxos/echo";
6
6
  var SectionSchema = Schema.Struct({
7
7
  height: Schema.optional(Schema.Number),
8
8
  // Space for data that isn't stack-specific but is specific to this view instance.
@@ -12,19 +12,18 @@ var SectionSchema = Schema.Struct({
12
12
  value: Schema.Any
13
13
  }))
14
14
  });
15
- var StackViewType = class extends TypedObject({
16
- typename: "dxos.org/type/StackView",
17
- version: "0.1.0"
18
- })({
15
+ var StackViewType = Schema.Struct({
19
16
  sections: Schema.mutable(Schema.Record({
20
17
  key: Schema.String,
21
18
  value: SectionSchema
22
19
  }))
23
- }) {
24
- };
20
+ }).pipe(Type.object({
21
+ typename: "dxos.org/type/StackView",
22
+ version: "0.1.0"
23
+ }));
25
24
 
26
25
  export {
27
26
  SectionSchema,
28
27
  StackViewType
29
28
  };
30
- //# sourceMappingURL=chunk-GOXSWCA4.mjs.map
29
+ //# sourceMappingURL=chunk-BHDJHEFJ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/stack.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Type } from '@dxos/echo';\n\n// All section metadata needs to be optional/have defaults.\n// Any objects added to the collection will start with the section defaults.\n// If an object is removed from the collection without removing the section metadata this is fine.\n// Stack components should clean-up the superfluous data on future edits.\n\nexport const SectionSchema = Schema.Struct({\n height: Schema.optional(Schema.Number),\n // Space for data that isn't stack-specific but is specific to this view instance.\n // e.g. cover/fill for an image\n custom: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),\n});\n\n// TODO(wittjosiah): This needs a relation to be connected to a stack.\nexport const StackViewType = Schema.Struct({\n sections: Schema.mutable(Schema.Record({ key: Schema.String, value: SectionSchema })),\n}).pipe(\n Type.object({\n typename: 'dxos.org/type/StackView',\n version: '0.1.0',\n }),\n);\n\nexport interface StackViewType extends Schema.Schema.Type<typeof StackViewType> {}\n"],
5
+ "mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,YAAY;AAOd,IAAMC,gBAAuBC,cAAO;EACzCC,QAAeC,gBAAgBC,aAAM;;;EAGrCC,QAAeF,gBAAgBG,cAAO;IAAEC,KAAYC;IAAQC,OAAcC;EAAI,CAAA,CAAA;AAChF,CAAA;AAGO,IAAMC,gBAAuBV,cAAO;EACzCW,UAAiBC,eAAeP,cAAO;IAAEC,KAAYC;IAAQC,OAAOT;EAAc,CAAA,CAAA;AACpF,CAAA,EAAGc,KACDC,KAAKC,OAAO;EACVC,UAAU;EACVC,SAAS;AACX,CAAA,CAAA;",
6
+ "names": ["Schema", "Type", "SectionSchema", "Struct", "height", "optional", "Number", "custom", "Record", "key", "String", "value", "Any", "StackViewType", "sections", "mutable", "pipe", "Type", "object", "typename", "version"]
7
+ }
@@ -1,21 +1,23 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
3
  // src/meta.ts
4
- var STACK_PLUGIN = "dxos.org/plugin/stack";
4
+ import { trim } from "@dxos/util";
5
5
  var SECTION_IDENTIFIER = "dxos.org/type/StackSection";
6
6
  var meta = {
7
- id: STACK_PLUGIN,
7
+ id: "dxos.org/plugin/stack",
8
8
  // TODO(wittjosiah): Prevents "stacks" language from being exposed to users in settings panel.
9
9
  // Conside renaming this to the collection plugin and trying to factor more collections logic from the space plugin.
10
10
  name: "Collections",
11
- description: "View collections of objects within the deck.",
11
+ description: trim`
12
+ Organize and view curated collections of workspace objects in customizable layouts.
13
+ Group related items together and manage collections with sections and filtering.
14
+ `,
12
15
  icon: "ph--stack-simple--regular",
13
16
  source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-stack"
14
17
  };
15
18
 
16
19
  export {
17
- STACK_PLUGIN,
18
20
  SECTION_IDENTIFIER,
19
21
  meta
20
22
  };
21
- //# sourceMappingURL=chunk-UN5PA7TK.mjs.map
23
+ //# sourceMappingURL=chunk-HEEGXPSW.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const SECTION_IDENTIFIER = 'dxos.org/type/StackSection';\n\nexport const meta: Plugin.Meta = {\n id: 'dxos.org/plugin/stack',\n // TODO(wittjosiah): Prevents \"stacks\" language from being exposed to users in settings panel.\n // Conside renaming this to the collection plugin and trying to factor more collections logic from the space plugin.\n name: 'Collections',\n description: trim`\n Organize and view curated collections of workspace objects in customizable layouts.\n Group related items together and manage collections with sections and filtering.\n `,\n icon: 'ph--stack-simple--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-stack',\n};\n"],
5
+ "mappings": ";;;AAKA,SAASA,YAAY;AAEd,IAAMC,qBAAqB;AAE3B,IAAMC,OAAoB;EAC/BC,IAAI;;;EAGJC,MAAM;EACNC,aAAaC;;;;EAIbC,MAAM;EACNC,QAAQ;AACV;",
6
+ "names": ["trim", "SECTION_IDENTIFIER", "meta", "id", "name", "description", "trim", "icon", "source"]
7
+ }