@dxos/plugin-preview 0.8.4-main.c1de068 → 0.8.4-main.c4373fc

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/{chunk-Z73ENKLE.mjs → chunk-XKCIQK3C.mjs} +2 -4
  2. package/dist/lib/browser/chunk-XKCIQK3C.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +8 -7
  4. package/dist/lib/browser/index.mjs.map +2 -2
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/{preview-popover-2UCEZUQW.mjs → preview-popover-EIATF2VR.mjs} +8 -12
  7. package/dist/lib/browser/preview-popover-EIATF2VR.mjs.map +7 -0
  8. package/dist/lib/browser/react-surface-X5EXLQX7.mjs +471 -0
  9. package/dist/lib/browser/react-surface-X5EXLQX7.mjs.map +7 -0
  10. package/dist/lib/node-esm/{chunk-2ORSL4GJ.mjs → chunk-L3IZVX56.mjs} +2 -4
  11. package/dist/lib/node-esm/chunk-L3IZVX56.mjs.map +7 -0
  12. package/dist/lib/node-esm/index.mjs +8 -7
  13. package/dist/lib/node-esm/index.mjs.map +2 -2
  14. package/dist/lib/node-esm/meta.json +1 -1
  15. package/dist/lib/node-esm/{preview-popover-OSHWR2YE.mjs → preview-popover-623SB5KV.mjs} +8 -12
  16. package/dist/lib/node-esm/preview-popover-623SB5KV.mjs.map +7 -0
  17. package/dist/lib/node-esm/react-surface-EO4RGRB5.mjs +472 -0
  18. package/dist/lib/node-esm/react-surface-EO4RGRB5.mjs.map +7 -0
  19. package/dist/types/src/PreviewPlugin.d.ts +1 -1
  20. package/dist/types/src/PreviewPlugin.d.ts.map +1 -1
  21. package/dist/types/src/capabilities/index.d.ts +2 -2
  22. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  23. package/dist/types/src/capabilities/preview-popover.d.ts +1 -1
  24. package/dist/types/src/capabilities/preview-popover.d.ts.map +1 -1
  25. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  26. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  27. package/dist/types/src/components/CardSubjectMenu.d.ts +12 -0
  28. package/dist/types/src/components/CardSubjectMenu.d.ts.map +1 -0
  29. package/dist/types/src/components/ContactCard.d.ts +1 -1
  30. package/dist/types/src/components/ContactCard.d.ts.map +1 -1
  31. package/dist/types/src/components/OrganizationCard.d.ts +1 -1
  32. package/dist/types/src/components/OrganizationCard.d.ts.map +1 -1
  33. package/dist/types/src/components/ProjectCard.d.ts +1 -1
  34. package/dist/types/src/components/ProjectCard.d.ts.map +1 -1
  35. package/dist/types/src/components/TaskCard.d.ts +5 -0
  36. package/dist/types/src/components/TaskCard.d.ts.map +1 -0
  37. package/dist/types/src/meta.d.ts +0 -1
  38. package/dist/types/src/meta.d.ts.map +1 -1
  39. package/dist/types/src/stories/Card.stories.d.ts +27 -0
  40. package/dist/types/src/stories/Card.stories.d.ts.map +1 -0
  41. package/dist/types/src/stories/testing.d.ts +17 -0
  42. package/dist/types/src/stories/testing.d.ts.map +1 -0
  43. package/dist/types/src/translations.d.ts +3 -0
  44. package/dist/types/src/translations.d.ts.map +1 -1
  45. package/dist/types/src/types.d.ts +4 -1
  46. package/dist/types/src/types.d.ts.map +1 -1
  47. package/dist/types/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +33 -29
  49. package/src/PreviewPlugin.tsx +22 -23
  50. package/src/capabilities/preview-popover.ts +8 -13
  51. package/src/capabilities/react-surface.tsx +41 -23
  52. package/src/components/CardSubjectMenu.tsx +68 -0
  53. package/src/components/ContactCard.tsx +30 -22
  54. package/src/components/OrganizationCard.tsx +11 -8
  55. package/src/components/ProjectCard.tsx +12 -4
  56. package/src/components/TaskCard.tsx +46 -0
  57. package/src/meta.ts +1 -3
  58. package/src/stories/Card.stories.tsx +59 -0
  59. package/src/stories/testing.tsx +114 -0
  60. package/src/translations.ts +3 -0
  61. package/src/types.ts +5 -2
  62. package/dist/lib/browser/chunk-Z73ENKLE.mjs.map +0 -7
  63. package/dist/lib/browser/preview-popover-2UCEZUQW.mjs.map +0 -7
  64. package/dist/lib/browser/react-surface-CZMUEWPV.mjs +0 -303
  65. package/dist/lib/browser/react-surface-CZMUEWPV.mjs.map +0 -7
  66. package/dist/lib/node-esm/chunk-2ORSL4GJ.mjs.map +0 -7
  67. package/dist/lib/node-esm/preview-popover-OSHWR2YE.mjs.map +0 -7
  68. package/dist/lib/node-esm/react-surface-IPZBISWS.mjs +0 -304
  69. package/dist/lib/node-esm/react-surface-IPZBISWS.mjs.map +0 -7
  70. package/dist/types/src/testing/ExtrinsicPreviews.stories.d.ts +0 -35
  71. package/dist/types/src/testing/ExtrinsicPreviews.stories.d.ts.map +0 -1
  72. package/dist/types/src/testing/IntrinsicPreviews.stories.d.ts +0 -35
  73. package/dist/types/src/testing/IntrinsicPreviews.stories.d.ts.map +0 -1
  74. package/dist/types/src/testing/PopoverPreviews.stories.d.ts +0 -35
  75. package/dist/types/src/testing/PopoverPreviews.stories.d.ts.map +0 -1
  76. package/dist/types/src/testing/util.d.ts +0 -80
  77. package/dist/types/src/testing/util.d.ts.map +0 -1
  78. package/src/testing/ExtrinsicPreviews.stories.tsx +0 -55
  79. package/src/testing/IntrinsicPreviews.stories.tsx +0 -55
  80. package/src/testing/PopoverPreviews.stories.tsx +0 -55
  81. package/src/testing/util.tsx +0 -79
@@ -1 +1 @@
1
- {"inputs":{"src/meta.ts":{"bytes":1243,"imports":[],"format":"esm"},"src/capabilities/preview-popover.ts":{"bytes":8497,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true}],"format":"esm"},"src/components/ContactCard.tsx":{"bytes":9246,"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-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"src/components/OrganizationCard.tsx":{"bytes":4740,"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-stack","kind":"import-statement","external":true}],"format":"esm"},"src/components/ProjectCard.tsx":{"bytes":2578,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true}],"format":"esm"},"src/components/index.ts":{"bytes":687,"imports":[{"path":"src/components/ContactCard.tsx","kind":"import-statement","original":"./ContactCard"},{"path":"src/components/OrganizationCard.tsx","kind":"import-statement","original":"./OrganizationCard"},{"path":"src/components/ProjectCard.tsx","kind":"import-statement","original":"./ProjectCard"}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":24033,"imports":[{"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/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-deck/types","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-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-table/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","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":1037,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/preview-popover.ts","kind":"dynamic-import","original":"./preview-popover"},{"path":"src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"src/translations.ts":{"bytes":1178,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/PreviewPlugin.tsx":{"bytes":4743,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/schema","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"}],"format":"esm"},"src/index.ts":{"bytes":595,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/PreviewPlugin.tsx","kind":"import-statement","original":"./PreviewPlugin"}],"format":"esm"}},"outputs":{"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3231},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-2ORSL4GJ.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/node-esm/preview-popover-OSHWR2YE.mjs","kind":"dynamic-import"},{"path":"dist/lib/node-esm/react-surface-IPZBISWS.mjs","kind":"dynamic-import"}],"exports":["PREVIEW_PLUGIN","PreviewPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/PreviewPlugin.tsx":{"bytesInOutput":952},"src/capabilities/index.ts":{"bytesInOutput":190},"src/translations.ts":{"bytesInOutput":137}},"bytes":1631},"dist/lib/node-esm/preview-popover-OSHWR2YE.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4454},"dist/lib/node-esm/preview-popover-OSHWR2YE.mjs":{"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/preview-popover.ts","inputs":{"src/capabilities/preview-popover.ts":{"bytesInOutput":2066}},"bytes":2301},"dist/lib/node-esm/react-surface-IPZBISWS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":19895},"dist/lib/node-esm/react-surface-IPZBISWS.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-2ORSL4GJ.mjs","kind":"import-statement"},{"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/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-deck/types","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-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-table/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","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-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},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","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-stack","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":5926},"src/components/ContactCard.tsx":{"bytesInOutput":2884},"src/components/index.ts":{"bytesInOutput":0},"src/components/OrganizationCard.tsx":{"bytesInOutput":1438},"src/components/ProjectCard.tsx":{"bytesInOutput":709}},"bytes":11393},"dist/lib/node-esm/chunk-2ORSL4GJ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":615},"dist/lib/node-esm/chunk-2ORSL4GJ.mjs":{"imports":[],"exports":["PREVIEW_PLUGIN","meta"],"inputs":{"src/meta.ts":{"bytesInOutput":216}},"bytes":406}}}
1
+ {"inputs":{"src/meta.ts":{"bytes":1069,"imports":[],"format":"esm"},"src/capabilities/preview-popover.ts":{"bytes":8310,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"src/components/CardSubjectMenu.tsx":{"bytes":8243,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@effect-rx/rx-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","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-menu","kind":"import-statement","external":true}],"format":"esm"},"src/components/ContactCard.tsx":{"bytes":10312,"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-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"src/components/CardSubjectMenu.tsx","kind":"import-statement","original":"./CardSubjectMenu"}],"format":"esm"},"src/components/OrganizationCard.tsx":{"bytes":6117,"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-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"src/components/CardSubjectMenu.tsx","kind":"import-statement","original":"./CardSubjectMenu"}],"format":"esm"},"src/components/ProjectCard.tsx":{"bytes":4160,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","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/CardSubjectMenu.tsx","kind":"import-statement","original":"./CardSubjectMenu"}],"format":"esm"},"src/components/index.ts":{"bytes":687,"imports":[{"path":"src/components/ContactCard.tsx","kind":"import-statement","original":"./ContactCard"},{"path":"src/components/OrganizationCard.tsx","kind":"import-statement","original":"./OrganizationCard"},{"path":"src/components/ProjectCard.tsx","kind":"import-statement","original":"./ProjectCard"}],"format":"esm"},"src/components/TaskCard.tsx":{"bytes":6988,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/components/CardSubjectMenu.tsx","kind":"import-statement","original":"./CardSubjectMenu"}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":27261,"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/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-deck/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","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-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-table/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","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/components/TaskCard.tsx","kind":"import-statement","original":"../components/TaskCard"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":1037,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/preview-popover.ts","kind":"dynamic-import","original":"./preview-popover"},{"path":"src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"src/translations.ts":{"bytes":1503,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/PreviewPlugin.tsx":{"bytes":4683,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/schema","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"}],"format":"esm"},"src/index.ts":{"bytes":595,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/PreviewPlugin.tsx","kind":"import-statement","original":"./PreviewPlugin"}],"format":"esm"}},"outputs":{"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3326},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-L3IZVX56.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/node-esm/preview-popover-623SB5KV.mjs","kind":"dynamic-import"},{"path":"dist/lib/node-esm/react-surface-EO4RGRB5.mjs","kind":"dynamic-import"}],"exports":["PreviewPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/PreviewPlugin.tsx":{"bytesInOutput":952},"src/capabilities/index.ts":{"bytesInOutput":190},"src/translations.ts":{"bytesInOutput":242}},"bytes":1700},"dist/lib/node-esm/preview-popover-623SB5KV.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4361},"dist/lib/node-esm/preview-popover-623SB5KV.mjs":{"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/preview-popover.ts","inputs":{"src/capabilities/preview-popover.ts":{"bytesInOutput":2007}},"bytes":2242},"dist/lib/node-esm/react-surface-EO4RGRB5.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":31272},"dist/lib/node-esm/react-surface-EO4RGRB5.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-L3IZVX56.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/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-deck/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","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-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-table/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","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-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":"@effect-rx/rx-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","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-menu","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-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},{"path":"@dxos/echo","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":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":6826},"src/components/ContactCard.tsx":{"bytesInOutput":3174},"src/components/CardSubjectMenu.tsx":{"bytesInOutput":2133},"src/components/index.ts":{"bytesInOutput":0},"src/components/OrganizationCard.tsx":{"bytesInOutput":1836},"src/components/ProjectCard.tsx":{"bytesInOutput":1189},"src/components/TaskCard.tsx":{"bytesInOutput":1787}},"bytes":17477},"dist/lib/node-esm/chunk-L3IZVX56.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":528},"dist/lib/node-esm/chunk-L3IZVX56.mjs":{"imports":[],"exports":["meta"],"inputs":{"src/meta.ts":{"bytesInOutput":179}},"bytes":351}}}
@@ -3,11 +3,11 @@ import { createRequire } from 'node:module';const require = createRequire(import
3
3
  // src/capabilities/preview-popover.ts
4
4
  import { Capabilities, LayoutAction, contributes, createIntent } from "@dxos/app-framework";
5
5
  import { addEventListener } from "@dxos/async";
6
- import { resolveRef } from "@dxos/client";
7
6
  import { parseId } from "@dxos/client/echo";
8
7
  import { DXN } from "@dxos/keys";
9
8
  import { log } from "@dxos/log";
10
9
  import { ClientCapabilities } from "@dxos/plugin-client";
10
+ import { DX_ANCHOR_ACTIVATE } from "@dxos/react-ui";
11
11
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-preview/src/capabilities/preview-popover.ts";
12
12
  var customEventOptions = {
13
13
  capture: true,
@@ -15,11 +15,7 @@ var customEventOptions = {
15
15
  };
16
16
  var handlePreviewLookup = async (client, defaultSpace, { ref, label }) => {
17
17
  try {
18
- const dxn = DXN.parse(ref);
19
- if (!dxn) {
20
- return null;
21
- }
22
- const object = await resolveRef(client, dxn, defaultSpace);
18
+ const object = await defaultSpace.db.ref(DXN.parse(ref)).load();
23
19
  return {
24
20
  label,
25
21
  object
@@ -28,8 +24,8 @@ var handlePreviewLookup = async (client, defaultSpace, { ref, label }) => {
28
24
  return null;
29
25
  }
30
26
  };
31
- var preview_popover_default = (context) => {
32
- const handleDxRefTagActivate = async ({ refId, label, trigger }) => {
27
+ var preview_popover_default = ((context) => {
28
+ const handleDxAnchorActivate = async ({ refId, label, trigger }) => {
33
29
  const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
34
30
  const client = context.getCapability(ClientCapabilities.Client);
35
31
  const [layout] = context.getCapabilities(Capabilities.Layout);
@@ -54,18 +50,18 @@ var preview_popover_default = (context) => {
54
50
  };
55
51
  let cleanup;
56
52
  if (document.defaultView) {
57
- cleanup = addEventListener(document.defaultView, "dx-ref-tag-activate", handleDxRefTagActivate, customEventOptions);
53
+ cleanup = addEventListener(document.defaultView, DX_ANCHOR_ACTIVATE, handleDxAnchorActivate, customEventOptions);
58
54
  } else {
59
55
  log.warn("No default view found", void 0, {
60
56
  F: __dxlog_file,
61
- L: 70,
57
+ L: 65,
62
58
  S: void 0,
63
59
  C: (f, a) => f(...a)
64
60
  });
65
61
  }
66
62
  return contributes(Capabilities.Null, null, () => cleanup());
67
- };
63
+ });
68
64
  export {
69
65
  preview_popover_default as default
70
66
  };
71
- //# sourceMappingURL=preview-popover-OSHWR2YE.mjs.map
67
+ //# sourceMappingURL=preview-popover-623SB5KV.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/preview-popover.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, LayoutAction, type PluginContext, contributes, createIntent } from '@dxos/app-framework';\nimport { addEventListener } from '@dxos/async';\nimport { type Client } from '@dxos/client';\nimport { type Space, parseId } from '@dxos/client/echo';\nimport { DXN } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { DX_ANCHOR_ACTIVATE, type DxAnchorActivate } from '@dxos/react-ui';\nimport { type PreviewLinkRef, type PreviewLinkTarget } from '@dxos/react-ui-editor';\n\nconst customEventOptions = { capture: true, passive: false };\n\nconst handlePreviewLookup = async (\n client: Client,\n defaultSpace: Space,\n { ref, label }: PreviewLinkRef,\n): Promise<PreviewLinkTarget | null> => {\n try {\n const object = await defaultSpace.db.ref(DXN.parse(ref)).load();\n return { label, object };\n } catch (err) {\n return null;\n }\n};\n\nexport default (context: PluginContext) => {\n // TODO(wittjosiah): Factor out lookup handlers to other plugins to make not ECHO-specific.\n const handleDxAnchorActivate = async ({ refId, label, trigger }: DxAnchorActivate) => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const [layout] = context.getCapabilities(Capabilities.Layout);\n const { spaceId } = parseId(layout.workspace);\n const space = (spaceId && client.spaces.get(spaceId)) ?? client.spaces.default;\n const result = await handlePreviewLookup(client, space, { ref: refId, label });\n if (!result) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n subject: result.object,\n options: {\n state: true,\n variant: 'virtual',\n anchor: trigger,\n },\n }),\n );\n };\n\n let cleanup: () => void;\n if (document.defaultView) {\n cleanup = addEventListener(\n document.defaultView,\n DX_ANCHOR_ACTIVATE as any,\n handleDxAnchorActivate,\n customEventOptions,\n );\n } else {\n log.warn('No default view found');\n }\n\n return contributes(Capabilities.Null, null, () => cleanup());\n};\n"],
5
+ "mappings": ";;;AAIA,SAASA,cAAcC,cAAkCC,aAAaC,oBAAoB;AAC1F,SAASC,wBAAwB;AAEjC,SAAqBC,eAAe;AACpC,SAASC,WAAW;AACpB,SAASC,WAAW;AACpB,SAASC,0BAA0B;AACnC,SAASC,0BAAiD;;AAG1D,IAAMC,qBAAqB;EAAEC,SAAS;EAAMC,SAAS;AAAM;AAE3D,IAAMC,sBAAsB,OAC1BC,QACAC,cACA,EAAEC,KAAKC,MAAK,MAAkB;AAE9B,MAAI;AACF,UAAMC,SAAS,MAAMH,aAAaI,GAAGH,IAAIV,IAAIc,MAAMJ,GAAAA,CAAAA,EAAMK,KAAI;AAC7D,WAAO;MAAEJ;MAAOC;IAAO;EACzB,SAASI,KAAK;AACZ,WAAO;EACT;AACF;AAEA,IAAA,2BAAe,CAACC,YAAAA;AAEd,QAAMC,yBAAyB,OAAO,EAAEC,OAAOR,OAAOS,QAAO,MAAoB;AAC/E,UAAM,EAAEC,iBAAiBC,SAAQ,IAAKL,QAAQM,cAAc7B,aAAa8B,gBAAgB;AACzF,UAAMhB,SAASS,QAAQM,cAAcrB,mBAAmBuB,MAAM;AAC9D,UAAM,CAACC,MAAAA,IAAUT,QAAQU,gBAAgBjC,aAAakC,MAAM;AAC5D,UAAM,EAAEC,QAAO,IAAK9B,QAAQ2B,OAAOI,SAAS;AAC5C,UAAMC,SAASF,WAAWrB,OAAOwB,OAAOC,IAAIJ,OAAAA,MAAarB,OAAOwB,OAAOE;AACvE,UAAMC,SAAS,MAAM5B,oBAAoBC,QAAQuB,OAAO;MAAErB,KAAKS;MAAOR;IAAM,CAAA;AAC5E,QAAI,CAACwB,QAAQ;AACX;IACF;AAEA,UAAMb,SACJzB,aAAaF,aAAayC,eAAe;MACvCC,MAAM;MACNC,SAASH,OAAOvB;MAChB2B,SAAS;QACPC,OAAO;QACPC,SAAS;QACTC,QAAQtB;MACV;IACF,CAAA,CAAA;EAEJ;AAEA,MAAIuB;AACJ,MAAIC,SAASC,aAAa;AACxBF,cAAU7C,iBACR8C,SAASC,aACT1C,oBACAe,wBACAd,kBAAAA;EAEJ,OAAO;AACLH,QAAI6C,KAAK,yBAAA,QAAA;;;;;;EACX;AAEA,SAAOlD,YAAYF,aAAaqD,MAAM,MAAM,MAAMJ,QAAAA,CAAAA;AACpD;",
6
+ "names": ["Capabilities", "LayoutAction", "contributes", "createIntent", "addEventListener", "parseId", "DXN", "log", "ClientCapabilities", "DX_ANCHOR_ACTIVATE", "customEventOptions", "capture", "passive", "handlePreviewLookup", "client", "defaultSpace", "ref", "label", "object", "db", "parse", "load", "err", "context", "handleDxAnchorActivate", "refId", "trigger", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "Client", "layout", "getCapabilities", "Layout", "spaceId", "workspace", "space", "spaces", "get", "default", "result", "UpdatePopover", "part", "subject", "options", "state", "variant", "anchor", "cleanup", "document", "defaultView", "warn", "Null"]
7
+ }
@@ -0,0 +1,472 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ meta
4
+ } from "./chunk-L3IZVX56.mjs";
5
+
6
+ // src/capabilities/react-surface.tsx
7
+ import * as Effect from "effect/Effect";
8
+ import React6, { useCallback } from "react";
9
+ import { Capabilities, LayoutAction, Surface, contributes, createIntent as createIntent2, createSurface, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
10
+ import { fullyQualifiedId, getSchema, getSpace } from "@dxos/client/echo";
11
+ import { Filter, Obj as Obj3 } from "@dxos/echo";
12
+ import { setValue } from "@dxos/echo/internal";
13
+ import { AttentionAction } from "@dxos/plugin-attention/types";
14
+ import { ATTENDABLE_PATH_SEPARATOR, DeckAction } from "@dxos/plugin-deck/types";
15
+ import { useActiveSpace } from "@dxos/plugin-space";
16
+ import { useQuery, useSpace } from "@dxos/react-client/echo";
17
+ import { useTranslation as useTranslation2 } from "@dxos/react-ui";
18
+ import { Form } from "@dxos/react-ui-form";
19
+ import { Card as Card5 } from "@dxos/react-ui-stack";
20
+ import { Table } from "@dxos/react-ui-table/types";
21
+ import { descriptionMessage, mx as mx5 } from "@dxos/react-ui-theme";
22
+ import { DataType as DataType2, getTypenameFromQuery } from "@dxos/schema";
23
+
24
+ // src/components/ContactCard.tsx
25
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
26
+ import React2, { Fragment } from "react";
27
+ import { Avatar, Button, Icon } from "@dxos/react-ui";
28
+ import { Card, cardHeading, cardText } from "@dxos/react-ui-stack";
29
+ import { mx } from "@dxos/react-ui-theme";
30
+
31
+ // src/components/CardSubjectMenu.tsx
32
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
33
+ import { Rx } from "@effect-rx/rx-react";
34
+ import React from "react";
35
+ import { createIntent, useIntentDispatcher } from "@dxos/app-framework";
36
+ import { ACTION_TYPE } from "@dxos/app-graph";
37
+ import { Obj } from "@dxos/echo";
38
+ import { SpaceAction } from "@dxos/plugin-space/types";
39
+ import { IconButton, useTranslation } from "@dxos/react-ui";
40
+ import { DropdownMenu, MenuProvider, useMenuActions } from "@dxos/react-ui-menu";
41
+ var useSubjectMenuGroupItems = (subject, activeSpace) => {
42
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
43
+ const result = {
44
+ edges: [],
45
+ nodes: []
46
+ };
47
+ if (activeSpace && Obj.getDXN(subject).asQueueDXN()) {
48
+ result.nodes.push({
49
+ type: ACTION_TYPE,
50
+ id: `${subject.id}/add-to-space`,
51
+ // TODO(wittjosiah): Update reference to point to db object when adding?
52
+ data: () => dispatch(createIntent(SpaceAction.AddObject, {
53
+ object: subject,
54
+ target: activeSpace,
55
+ hidden: true
56
+ })),
57
+ properties: {
58
+ label: [
59
+ "add object to space label",
60
+ {
61
+ ns: "os"
62
+ }
63
+ ],
64
+ icon: "ph--file-plus--regular"
65
+ }
66
+ });
67
+ }
68
+ result.nodes.forEach(({ id: target }) => {
69
+ result.edges.push({
70
+ source: "root",
71
+ target
72
+ });
73
+ });
74
+ return useMenuActions(Rx.make(result));
75
+ };
76
+ var CardSubjectMenu = ({ subject, activeSpace, ...props }) => {
77
+ var _effect = _useSignals();
78
+ try {
79
+ const { t } = useTranslation("os");
80
+ const menuProps = useSubjectMenuGroupItems(subject, activeSpace);
81
+ if (!activeSpace) {
82
+ return null;
83
+ }
84
+ return /* @__PURE__ */ React.createElement(MenuProvider, menuProps, /* @__PURE__ */ React.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React.createElement(DropdownMenu.Trigger, {
85
+ asChild: true
86
+ }, /* @__PURE__ */ React.createElement(IconButton, {
87
+ iconOnly: true,
88
+ variant: "ghost",
89
+ icon: "ph--dots-three-vertical--bold",
90
+ label: t("more options label"),
91
+ ...props
92
+ }))));
93
+ } finally {
94
+ _effect.f();
95
+ }
96
+ };
97
+
98
+ // src/components/ContactCard.tsx
99
+ var ContactCard = ({ children, subject, activeSpace, onOrgClick, role }) => {
100
+ var _effect = _useSignals2();
101
+ try {
102
+ const { fullName, image, organization, emails } = subject;
103
+ const organizationName = organization && typeof organization === "object" ? organization.target?.name : organization;
104
+ return /* @__PURE__ */ React2.createElement(Card.SurfaceRoot, {
105
+ role
106
+ }, /* @__PURE__ */ React2.createElement(Avatar.Root, null, /* @__PURE__ */ React2.createElement(Card.Text, {
107
+ role: "group",
108
+ classNames: "grid gap-3 grid-cols-[min-content_1fr]"
109
+ }, /* @__PURE__ */ React2.createElement(Avatar.Content, {
110
+ imgSrc: image,
111
+ icon: "ph--user--regular",
112
+ size: 16,
113
+ hue: "neutral"
114
+ }), /* @__PURE__ */ React2.createElement("div", {
115
+ role: "none",
116
+ className: "bs-min self-center flex items-center"
117
+ }, /* @__PURE__ */ React2.createElement(Avatar.Label, {
118
+ asChild: true
119
+ }, /* @__PURE__ */ React2.createElement("h2", {
120
+ className: mx(cardHeading, "grow")
121
+ }, fullName)), /* @__PURE__ */ React2.createElement(CardSubjectMenu, {
122
+ subject,
123
+ activeSpace
124
+ })))), organizationName && /* @__PURE__ */ React2.createElement(Card.Chrome, null, typeof organization === "object" && onOrgClick ? /* @__PURE__ */ React2.createElement(Button, {
125
+ variant: "ghost",
126
+ classNames: "gap-2 text-start",
127
+ onClick: () => onOrgClick(organization.target)
128
+ }, /* @__PURE__ */ React2.createElement(Icon, {
129
+ icon: "ph--buildings--regular",
130
+ size: 5,
131
+ classNames: "text-subdued"
132
+ }), /* @__PURE__ */ React2.createElement("span", {
133
+ className: "min-is-0 flex-1 truncate"
134
+ }, organizationName), /* @__PURE__ */ React2.createElement(Icon, {
135
+ icon: "ph--arrow-right--regular"
136
+ })) : /* @__PURE__ */ React2.createElement("p", {
137
+ className: "dx-button gap-2",
138
+ "data-variant": "ghost"
139
+ }, /* @__PURE__ */ React2.createElement(Icon, {
140
+ icon: "ph--buildings--regular",
141
+ size: 5,
142
+ classNames: "text-subdued"
143
+ }), /* @__PURE__ */ React2.createElement("span", {
144
+ className: "min-is-0 flex-1 truncate"
145
+ }, organizationName))), emails?.length && /* @__PURE__ */ React2.createElement("dl", {
146
+ className: mx(cardText, "grid gap-2 grid-cols-[min-content_1fr] [&_dt]:text-subdued [&_dt]:pbs-0.5 [&_dd]:min-is-0")
147
+ }, emails?.length && emails.map(({ label, value }) => /* @__PURE__ */ React2.createElement(Fragment, {
148
+ key: value
149
+ }, /* @__PURE__ */ React2.createElement("dt", null, /* @__PURE__ */ React2.createElement("span", {
150
+ className: "sr-only"
151
+ }, label), /* @__PURE__ */ React2.createElement(Icon, {
152
+ icon: "ph--at--regular",
153
+ size: 5
154
+ })), /* @__PURE__ */ React2.createElement("dd", {
155
+ key: value,
156
+ className: "break-words"
157
+ }, value)))), children);
158
+ } finally {
159
+ _effect.f();
160
+ }
161
+ };
162
+
163
+ // src/components/OrganizationCard.tsx
164
+ import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
165
+ import React3 from "react";
166
+ import { Icon as Icon2 } from "@dxos/react-ui";
167
+ import { Card as Card2, cardNoSpacing, cardSpacing } from "@dxos/react-ui-stack";
168
+ import { mx as mx2 } from "@dxos/react-ui-theme";
169
+ var OrganizationCard = ({ children, subject, role, activeSpace }) => {
170
+ var _effect = _useSignals3();
171
+ try {
172
+ const { name, image, description, website } = subject;
173
+ return /* @__PURE__ */ React3.createElement(Card2.SurfaceRoot, {
174
+ role
175
+ }, /* @__PURE__ */ React3.createElement(Card2.Poster, {
176
+ alt: name,
177
+ ...image ? {
178
+ image
179
+ } : {
180
+ icon: "ph--building-office--regular"
181
+ }
182
+ }), /* @__PURE__ */ React3.createElement("div", {
183
+ role: "none",
184
+ className: mx2("flex items-center gap-2", cardSpacing)
185
+ }, /* @__PURE__ */ React3.createElement(Card2.Heading, {
186
+ classNames: cardNoSpacing
187
+ }, name), /* @__PURE__ */ React3.createElement(CardSubjectMenu, {
188
+ subject,
189
+ activeSpace
190
+ })), description && /* @__PURE__ */ React3.createElement(Card2.Text, {
191
+ classNames: "line-clamp-2"
192
+ }, description), website && /* @__PURE__ */ React3.createElement(Card2.Chrome, null, /* @__PURE__ */ React3.createElement("a", {
193
+ className: "dx-button dx-focus-ring gap-2",
194
+ "data-variant": "ghost",
195
+ href: website,
196
+ target: "_blank",
197
+ rel: "noreferrer"
198
+ }, /* @__PURE__ */ React3.createElement(Icon2, {
199
+ icon: "ph--link--regular",
200
+ size: 5,
201
+ classNames: "text-subdued"
202
+ }), /* @__PURE__ */ React3.createElement("span", {
203
+ className: "min-is-0 flex-1 truncate"
204
+ }, website), /* @__PURE__ */ React3.createElement(Icon2, {
205
+ icon: "ph--arrow-square-out--regular"
206
+ }))), children);
207
+ } finally {
208
+ _effect.f();
209
+ }
210
+ };
211
+
212
+ // src/components/ProjectCard.tsx
213
+ import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
214
+ import React4 from "react";
215
+ import { Obj as Obj2 } from "@dxos/echo";
216
+ import { Card as Card3, cardNoSpacing as cardNoSpacing2, cardSpacing as cardSpacing2 } from "@dxos/react-ui-stack";
217
+ import { mx as mx3 } from "@dxos/react-ui-theme";
218
+ var ProjectCard = ({ subject, role, activeSpace }) => {
219
+ var _effect = _useSignals4();
220
+ try {
221
+ const { name, image, description } = subject;
222
+ return /* @__PURE__ */ React4.createElement(Card3.SurfaceRoot, {
223
+ role
224
+ }, image && /* @__PURE__ */ React4.createElement(Card3.Poster, {
225
+ image,
226
+ alt: Obj2.getLabel(subject) ?? "",
227
+ aspect: "auto"
228
+ }), /* @__PURE__ */ React4.createElement("div", {
229
+ role: "none",
230
+ className: mx3("flex items-center gap-2", cardSpacing2)
231
+ }, /* @__PURE__ */ React4.createElement(Card3.Heading, {
232
+ classNames: cardNoSpacing2
233
+ }, name), /* @__PURE__ */ React4.createElement(CardSubjectMenu, {
234
+ subject,
235
+ activeSpace
236
+ })), description && /* @__PURE__ */ React4.createElement(Card3.Text, {
237
+ classNames: "line-clamp-2"
238
+ }, description));
239
+ } finally {
240
+ _effect.f();
241
+ }
242
+ };
243
+
244
+ // src/components/TaskCard.tsx
245
+ import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
246
+ import * as SchemaAST from "effect/SchemaAST";
247
+ import React5 from "react";
248
+ import { PropertyMetaAnnotationId } from "@dxos/echo/internal";
249
+ import { Card as Card4, cardNoSpacing as cardNoSpacing3, cardSpacing as cardSpacing3 } from "@dxos/react-ui-stack";
250
+ import { mx as mx4 } from "@dxos/react-ui-theme";
251
+ import { DataType } from "@dxos/schema";
252
+ var getActiveStatusOption = (status) => {
253
+ const properties = SchemaAST.getPropertySignatures(DataType.Task.ast);
254
+ const statusProperty = properties.find((p) => p.name === "status");
255
+ const statusMeta = SchemaAST.getAnnotation(PropertyMetaAnnotationId)(
256
+ // TODO(thure): Typescript asserts `.type` doesn’t have `.types`, but in runtime it does.
257
+ statusProperty.type.types[0]
258
+ );
259
+ const options = statusMeta.value.singleSelect.options;
260
+ return options.find(({ id }) => id === status);
261
+ };
262
+ var TaskCard = ({ subject, role, activeSpace }) => {
263
+ var _effect = _useSignals5();
264
+ try {
265
+ const { title, status } = subject;
266
+ const statusOption = getActiveStatusOption(status);
267
+ return /* @__PURE__ */ React5.createElement(Card4.SurfaceRoot, {
268
+ role
269
+ }, /* @__PURE__ */ React5.createElement("div", {
270
+ role: "none",
271
+ className: mx4("flex items-center gap-2", cardSpacing3)
272
+ }, /* @__PURE__ */ React5.createElement(Card4.Heading, {
273
+ classNames: [
274
+ cardNoSpacing3,
275
+ "min-is-0 flex-1 truncate"
276
+ ]
277
+ }, title), statusOption && /* @__PURE__ */ React5.createElement("span", {
278
+ className: "dx-tag",
279
+ "data-hue": statusOption.color
280
+ }, statusOption.title), /* @__PURE__ */ React5.createElement(CardSubjectMenu, {
281
+ subject,
282
+ activeSpace
283
+ })));
284
+ } finally {
285
+ _effect.f();
286
+ }
287
+ };
288
+
289
+ // src/capabilities/react-surface.tsx
290
+ var react_surface_default = (() => contributes(Capabilities.ReactSurface, [
291
+ //
292
+ // Specific schema types.
293
+ //
294
+ createSurface({
295
+ id: `${meta.id}/schema-popover--contact`,
296
+ role: [
297
+ "card--popover",
298
+ "card--intrinsic",
299
+ "card--transclusion",
300
+ "card--extrinsic",
301
+ "card"
302
+ ],
303
+ filter: (data) => Obj3.instanceOf(DataType2.Person, data.subject),
304
+ component: ({ data, role }) => {
305
+ const { dispatch } = useIntentDispatcher2();
306
+ const space = getSpace(data.subject);
307
+ const defaultSpace = useSpace();
308
+ const activeSpace = useActiveSpace();
309
+ const currentSpaceOrgs = useQuery(space, Filter.type(DataType2.Organization));
310
+ const currentSpaceViews = useQuery(space, Filter.type(DataType2.View));
311
+ const defaultSpaceViews = useQuery(defaultSpace, Filter.type(DataType2.View));
312
+ const currentSpaceOrgTable = currentSpaceViews.find((view) => getTypenameFromQuery(view.query.ast) === DataType2.Organization.typename && Obj3.instanceOf(Table.Table, view.presentation.target));
313
+ const defaultSpaceOrgTable = defaultSpaceViews.find((view) => getTypenameFromQuery(view.query.ast) === DataType2.Organization.typename && Obj3.instanceOf(Table.Table, view.presentation.target));
314
+ const handleOrgClick = useCallback((org) => Effect.gen(function* () {
315
+ const view = currentSpaceOrgs.includes(org) ? currentSpaceOrgTable : defaultSpaceOrgTable;
316
+ yield* dispatch(createIntent2(LayoutAction.UpdatePopover, {
317
+ part: "popover",
318
+ options: {
319
+ state: false,
320
+ anchorId: ""
321
+ }
322
+ }));
323
+ if (view) {
324
+ const id = fullyQualifiedId(view);
325
+ yield* dispatch(createIntent2(LayoutAction.Open, {
326
+ part: "main",
327
+ subject: [
328
+ id
329
+ ],
330
+ options: {
331
+ workspace: space?.id
332
+ }
333
+ }));
334
+ yield* dispatch(createIntent2(DeckAction.ChangeCompanion, {
335
+ primary: id,
336
+ companion: [
337
+ id,
338
+ "selected-objects"
339
+ ].join(ATTENDABLE_PATH_SEPARATOR)
340
+ }));
341
+ yield* dispatch(createIntent2(AttentionAction.Select, {
342
+ contextId: id,
343
+ selection: {
344
+ mode: "multi",
345
+ ids: [
346
+ org.id
347
+ ]
348
+ }
349
+ }));
350
+ }
351
+ }).pipe(Effect.runPromise), [
352
+ dispatch,
353
+ currentSpaceOrgs,
354
+ currentSpaceOrgTable,
355
+ defaultSpaceOrgTable
356
+ ]);
357
+ return /* @__PURE__ */ React6.createElement(ContactCard, {
358
+ role,
359
+ subject: data.subject,
360
+ activeSpace,
361
+ onOrgClick: handleOrgClick
362
+ }, role === "card--popover" && /* @__PURE__ */ React6.createElement(Surface, {
363
+ role: "related",
364
+ data
365
+ }));
366
+ }
367
+ }),
368
+ createSurface({
369
+ id: `${meta.id}/schema-popover--organization`,
370
+ role: [
371
+ "card--popover",
372
+ "card--intrinsic",
373
+ "card--transclusion",
374
+ "card--extrinsic",
375
+ "card"
376
+ ],
377
+ filter: (data) => Obj3.instanceOf(DataType2.Organization, data.subject),
378
+ component: ({ data, role }) => {
379
+ const activeSpace = useActiveSpace();
380
+ return /* @__PURE__ */ React6.createElement(OrganizationCard, {
381
+ role,
382
+ subject: data.subject,
383
+ activeSpace
384
+ }, role === "card--popover" && /* @__PURE__ */ React6.createElement(Surface, {
385
+ role: "related",
386
+ data
387
+ }));
388
+ }
389
+ }),
390
+ createSurface({
391
+ id: `${meta.id}/schema-popover--project`,
392
+ role: [
393
+ "card--popover",
394
+ "card--intrinsic",
395
+ "card--transclusion",
396
+ "card--extrinsic",
397
+ "card"
398
+ ],
399
+ filter: (data) => Obj3.instanceOf(DataType2.Project, data.subject),
400
+ component: ({ data, role }) => {
401
+ const activeSpace = useActiveSpace();
402
+ return /* @__PURE__ */ React6.createElement(ProjectCard, {
403
+ subject: data.subject,
404
+ role,
405
+ activeSpace
406
+ });
407
+ }
408
+ }),
409
+ createSurface({
410
+ id: `${meta.id}/schema-popover--task`,
411
+ role: [
412
+ "card--popover",
413
+ "card--intrinsic",
414
+ "card--transclusion",
415
+ "card--extrinsic",
416
+ "card"
417
+ ],
418
+ filter: (data) => Obj3.instanceOf(DataType2.Task, data.subject),
419
+ component: ({ data, role }) => /* @__PURE__ */ React6.createElement(TaskCard, {
420
+ subject: data.subject,
421
+ role
422
+ })
423
+ }),
424
+ //
425
+ // Fallback for any object.
426
+ //
427
+ createSurface({
428
+ id: `${meta.id}/fallback-popover`,
429
+ role: [
430
+ "card--popover",
431
+ "card--intrinsic",
432
+ "card--transclusion",
433
+ "card--extrinsic",
434
+ "card"
435
+ ],
436
+ position: "fallback",
437
+ filter: (data) => Obj3.isObject(data.subject),
438
+ component: ({ data, role }) => {
439
+ const schema = getSchema(data.subject);
440
+ const { t } = useTranslation2(meta.id);
441
+ if (!schema) {
442
+ return /* @__PURE__ */ React6.createElement("p", {
443
+ className: mx5(descriptionMessage)
444
+ }, t("unable to create preview message"));
445
+ }
446
+ const handleSave = useCallback((values, { changed }) => {
447
+ const changedPaths = Object.keys(changed).filter((path) => changed[path]);
448
+ for (const path of changedPaths) {
449
+ const value = values[path];
450
+ setValue(data.subject, path, value);
451
+ }
452
+ }, []);
453
+ return /* @__PURE__ */ React6.createElement(Card5.SurfaceRoot, {
454
+ role
455
+ }, /* @__PURE__ */ React6.createElement(Form, {
456
+ schema,
457
+ projection: data.projection,
458
+ values: data.subject,
459
+ readonly: role === "card--popover" ? "static" : false,
460
+ onSave: handleSave,
461
+ autoSave: true,
462
+ ...role === "card--intrinsic" && {
463
+ outerSpacing: "blockStart-0"
464
+ }
465
+ }));
466
+ }
467
+ })
468
+ ]));
469
+ export {
470
+ react_surface_default as default
471
+ };
472
+ //# sourceMappingURL=react-surface-EO4RGRB5.mjs.map