@dxos/plugin-preview 0.8.4-main.ead640a → 0.8.4-main.effb148878

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 (129) hide show
  1. package/LICENSE +102 -5
  2. package/dist/lib/neutral/PreviewPlugin.mjs +9 -0
  3. package/dist/lib/neutral/PreviewPlugin.mjs.map +7 -0
  4. package/dist/lib/neutral/PreviewPlugin.node.mjs +17 -0
  5. package/dist/lib/neutral/PreviewPlugin.node.mjs.map +7 -0
  6. package/dist/lib/neutral/PreviewPlugin.workerd.mjs +17 -0
  7. package/dist/lib/neutral/PreviewPlugin.workerd.mjs.map +7 -0
  8. package/dist/lib/neutral/capabilities/index.mjs +9 -0
  9. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  10. package/dist/lib/neutral/chunk-3SWUVHXJ.mjs +28 -0
  11. package/dist/lib/neutral/chunk-3SWUVHXJ.mjs.map +7 -0
  12. package/dist/lib/neutral/chunk-XD3EYTHF.mjs +21 -0
  13. package/dist/lib/neutral/chunk-XD3EYTHF.mjs.map +7 -0
  14. package/dist/lib/neutral/index.mjs +7 -0
  15. package/dist/lib/neutral/index.mjs.map +7 -0
  16. package/dist/lib/neutral/meta.json +1 -0
  17. package/dist/lib/neutral/meta.mjs +7 -0
  18. package/dist/lib/neutral/meta.mjs.map +7 -0
  19. package/dist/lib/neutral/plugin.mjs +11 -0
  20. package/dist/lib/neutral/plugin.mjs.map +7 -0
  21. package/dist/lib/neutral/preview-popover-F33UBSBM.mjs +80 -0
  22. package/dist/lib/neutral/preview-popover-F33UBSBM.mjs.map +7 -0
  23. package/dist/lib/neutral/react-surface-3UPRCM4X.mjs +408 -0
  24. package/dist/lib/neutral/react-surface-3UPRCM4X.mjs.map +7 -0
  25. package/dist/lib/neutral/testing.mjs +7 -0
  26. package/dist/lib/neutral/testing.mjs.map +7 -0
  27. package/dist/lib/neutral/translations.mjs +21 -0
  28. package/dist/lib/neutral/translations.mjs.map +7 -0
  29. package/dist/types/src/PreviewPlugin.d.ts +3 -1
  30. package/dist/types/src/PreviewPlugin.d.ts.map +1 -1
  31. package/dist/types/src/PreviewPlugin.node.d.ts +4 -0
  32. package/dist/types/src/PreviewPlugin.node.d.ts.map +1 -0
  33. package/dist/types/src/PreviewPlugin.test.d.ts +2 -0
  34. package/dist/types/src/PreviewPlugin.test.d.ts.map +1 -0
  35. package/dist/types/src/PreviewPlugin.workerd.d.ts +4 -0
  36. package/dist/types/src/PreviewPlugin.workerd.d.ts.map +1 -0
  37. package/dist/types/src/capabilities/index.d.ts +3 -2
  38. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  39. package/dist/types/src/capabilities/preview-popover.d.ts +3 -2
  40. package/dist/types/src/capabilities/preview-popover.d.ts.map +1 -1
  41. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  42. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  43. package/dist/types/src/cards/ExpandoCard.d.ts +4 -0
  44. package/dist/types/src/cards/ExpandoCard.d.ts.map +1 -0
  45. package/dist/types/src/cards/FormCard.d.ts +17 -0
  46. package/dist/types/src/cards/FormCard.d.ts.map +1 -0
  47. package/dist/types/src/cards/JsonCard.d.ts +5 -0
  48. package/dist/types/src/cards/JsonCard.d.ts.map +1 -0
  49. package/dist/types/src/cards/OrganizationCard.d.ts +3 -3
  50. package/dist/types/src/cards/OrganizationCard.d.ts.map +1 -1
  51. package/dist/types/src/cards/PersonCard.d.ts +5 -0
  52. package/dist/types/src/cards/PersonCard.d.ts.map +1 -0
  53. package/dist/types/src/cards/ProjectCard.d.ts +3 -3
  54. package/dist/types/src/cards/ProjectCard.d.ts.map +1 -1
  55. package/dist/types/src/cards/TaskCard.d.ts +3 -3
  56. package/dist/types/src/cards/TaskCard.d.ts.map +1 -1
  57. package/dist/types/src/cards/index.d.ts +4 -1
  58. package/dist/types/src/cards/index.d.ts.map +1 -1
  59. package/dist/types/src/index.d.ts +0 -2
  60. package/dist/types/src/index.d.ts.map +1 -1
  61. package/dist/types/src/meta.d.ts +2 -2
  62. package/dist/types/src/meta.d.ts.map +1 -1
  63. package/dist/types/src/plugin.d.ts +3 -0
  64. package/dist/types/src/plugin.d.ts.map +1 -0
  65. package/dist/types/src/stories/Card.stories.d.ts +42 -14
  66. package/dist/types/src/stories/Card.stories.d.ts.map +1 -1
  67. package/dist/types/src/stories/testing.d.ts +52 -12
  68. package/dist/types/src/stories/testing.d.ts.map +1 -1
  69. package/dist/types/src/testing.d.ts +2 -0
  70. package/dist/types/src/testing.d.ts.map +1 -0
  71. package/dist/types/src/translations.d.ts +8 -9
  72. package/dist/types/src/translations.d.ts.map +1 -1
  73. package/dist/types/tsconfig.tsbuildinfo +1 -1
  74. package/package.json +92 -39
  75. package/src/PreviewPlugin.node.ts +16 -0
  76. package/src/PreviewPlugin.test.ts +25 -0
  77. package/src/PreviewPlugin.tsx +17 -26
  78. package/src/PreviewPlugin.workerd.ts +16 -0
  79. package/src/capabilities/index.ts +3 -3
  80. package/src/capabilities/preview-popover.ts +69 -42
  81. package/src/capabilities/react-surface.tsx +132 -120
  82. package/src/cards/ExpandoCard.tsx +76 -0
  83. package/src/cards/FormCard.tsx +115 -0
  84. package/src/cards/JsonCard.tsx +19 -0
  85. package/src/cards/OrganizationCard.tsx +17 -13
  86. package/src/cards/PersonCard.tsx +65 -0
  87. package/src/cards/ProjectCard.tsx +9 -11
  88. package/src/cards/TaskCard.tsx +27 -28
  89. package/src/cards/index.ts +4 -1
  90. package/src/index.ts +0 -3
  91. package/src/meta.ts +10 -3
  92. package/src/plugin.ts +9 -0
  93. package/src/stories/Card.stories.tsx +139 -24
  94. package/src/stories/testing.tsx +117 -77
  95. package/src/testing.ts +7 -0
  96. package/src/translations.ts +8 -8
  97. package/dist/lib/browser/chunk-XKCIQK3C.mjs +0 -12
  98. package/dist/lib/browser/chunk-XKCIQK3C.mjs.map +0 -7
  99. package/dist/lib/browser/index.mjs +0 -64
  100. package/dist/lib/browser/index.mjs.map +0 -7
  101. package/dist/lib/browser/meta.json +0 -1
  102. package/dist/lib/browser/preview-popover-RKHENTFP.mjs +0 -65
  103. package/dist/lib/browser/preview-popover-RKHENTFP.mjs.map +0 -7
  104. package/dist/lib/browser/react-surface-CPGRW3OV.mjs +0 -493
  105. package/dist/lib/browser/react-surface-CPGRW3OV.mjs.map +0 -7
  106. package/dist/lib/node-esm/chunk-L3IZVX56.mjs +0 -14
  107. package/dist/lib/node-esm/chunk-L3IZVX56.mjs.map +0 -7
  108. package/dist/lib/node-esm/index.mjs +0 -65
  109. package/dist/lib/node-esm/index.mjs.map +0 -7
  110. package/dist/lib/node-esm/meta.json +0 -1
  111. package/dist/lib/node-esm/preview-popover-TZKX67EY.mjs +0 -67
  112. package/dist/lib/node-esm/preview-popover-TZKX67EY.mjs.map +0 -7
  113. package/dist/lib/node-esm/react-surface-XJKNWCPR.mjs +0 -494
  114. package/dist/lib/node-esm/react-surface-XJKNWCPR.mjs.map +0 -7
  115. package/dist/types/src/cards/ContactCard.d.ts +0 -5
  116. package/dist/types/src/cards/ContactCard.d.ts.map +0 -1
  117. package/dist/types/src/components/CardComponents.d.ts +0 -16
  118. package/dist/types/src/components/CardComponents.d.ts.map +0 -1
  119. package/dist/types/src/components/CardSubjectMenu.d.ts +0 -8
  120. package/dist/types/src/components/CardSubjectMenu.d.ts.map +0 -1
  121. package/dist/types/src/components/index.d.ts +0 -3
  122. package/dist/types/src/components/index.d.ts.map +0 -1
  123. package/dist/types/src/types.d.ts +0 -10
  124. package/dist/types/src/types.d.ts.map +0 -1
  125. package/src/cards/ContactCard.tsx +0 -58
  126. package/src/components/CardComponents.tsx +0 -67
  127. package/src/components/CardSubjectMenu.tsx +0 -91
  128. package/src/components/index.ts +0 -6
  129. package/src/types.ts +0 -15
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/PreviewPlugin.tsx", "../../../src/capabilities/index.ts", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, Events, contributes, defineModule, definePlugin } from '@dxos/app-framework';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { DataType } from '@dxos/schema';\n\nimport { PreviewPopover, ReactSurface } from './capabilities';\nimport { meta } from './meta';\nimport { translations } from './translations';\n\nexport const PreviewPlugin = definePlugin(meta, () => [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => [contributes(ClientCapabilities.Schema, [DataType.Person, DataType.Organization])],\n }),\n defineModule({\n id: `${meta.id}/module/preview-popover`,\n activatesOn: Events.Startup,\n activate: PreviewPopover,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const PreviewPopover = lazy(() => import('./preview-popover'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from './meta';\n\nexport const translations = [\n {\n 'en-US': {\n [meta.id]: {\n 'unable to create preview message': 'No preview',\n 'todo label': 'To do',\n 'in-progress label': 'In progress',\n 'done label': 'Done',\n 'open object label': 'Open',\n 'add object to space label': 'Add to space',\n 'more options label': 'More options',\n },\n },\n },\n] as const satisfies Resource[];\n"],
5
- "mappings": ";;;;;;AAIA,SAASA,cAAcC,QAAQC,aAAaC,cAAcC,oBAAoB;AAC9E,SAASC,oBAAoBC,oBAAoB;AACjD,SAASC,gBAAgB;;;ACFzB,SAASC,YAAY;AAEd,IAAMC,iBAAiBC,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMC,eAAeD,KAAK,MAAM,OAAO,8BAAA,CAAA;;;ACCvC,IAAME,eAAe;EAC1B;IACE,SAAS;MACP,CAACC,KAAKC,EAAE,GAAG;QACT,oCAAoC;QACpC,cAAc;QACd,qBAAqB;QACrB,cAAc;QACd,qBAAqB;QACrB,6BAA6B;QAC7B,sBAAsB;MACxB;IACF;EACF;;;;AFTK,IAAMC,gBAAgBC,aAAaC,MAAM,MAAM;EACpDC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,UAAU,MAAMC,YAAYC,aAAaC,cAAcC,YAAAA;EACzD,CAAA;EACAT,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaQ,aAAaC;IAC1BN,UAAU,MAAM;MAACC,YAAYM,mBAAmBC,QAAQ;QAACC,SAASC;QAAQD,SAASE;OAAa;;EAClG,CAAA;EACAhB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOc;IACpBZ,UAAUa;EACZ,CAAA;EACAlB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOgB;IACpBd,UAAUe;EACZ,CAAA;CACD;",
6
- "names": ["Capabilities", "Events", "contributes", "defineModule", "definePlugin", "ClientCapabilities", "ClientEvents", "DataType", "lazy", "PreviewPopover", "lazy", "ReactSurface", "translations", "meta", "id", "PreviewPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "ClientEvents", "SetupSchema", "ClientCapabilities", "Schema", "DataType", "Person", "Organization", "Startup", "PreviewPopover", "SetupReactSurface", "ReactSurface"]
7
- }
@@ -1 +0,0 @@
1
- {"inputs":{"src/meta.ts":{"bytes":1069,"imports":[],"format":"esm"},"src/capabilities/preview-popover.ts":{"bytes":8281,"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":10351,"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-client/echo","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":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/components/CardComponents.tsx":{"bytes":8366,"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/index.ts":{"bytes":594,"imports":[{"path":"src/components/CardComponents.tsx","kind":"import-statement","original":"./CardComponents"},{"path":"src/components/CardSubjectMenu.tsx","kind":"import-statement","original":"./CardSubjectMenu"}],"format":"esm"},"src/cards/ContactCard.tsx":{"bytes":8167,"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/index.ts","kind":"import-statement","original":"../components"}],"format":"esm"},"src/cards/OrganizationCard.tsx":{"bytes":3709,"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},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"}],"format":"esm"},"src/cards/ProjectCard.tsx":{"bytes":3254,"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":"src/components/index.ts","kind":"import-statement","original":"../components"}],"format":"esm"},"src/cards/TaskCard.tsx":{"bytes":6971,"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/index.ts","kind":"import-statement","original":"../components"}],"format":"esm"},"src/cards/index.ts":{"bytes":770,"imports":[{"path":"src/cards/ContactCard.tsx","kind":"import-statement","original":"./ContactCard"},{"path":"src/cards/OrganizationCard.tsx","kind":"import-statement","original":"./OrganizationCard"},{"path":"src/cards/ProjectCard.tsx","kind":"import-statement","original":"./ProjectCard"},{"path":"src/cards/TaskCard.tsx","kind":"import-statement","original":"./TaskCard"}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":18821,"imports":[{"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-space","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-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/cards/index.ts","kind":"import-statement","original":"../cards"},{"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":1903,"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":3503},"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-TZKX67EY.mjs","kind":"dynamic-import"},{"path":"dist/lib/node-esm/react-surface-XJKNWCPR.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":378}},"bytes":1836},"dist/lib/node-esm/preview-popover-TZKX67EY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4341},"dist/lib/node-esm/preview-popover-TZKX67EY.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":2001}},"bytes":2236},"dist/lib/node-esm/react-surface-XJKNWCPR.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":29118},"dist/lib/node-esm/react-surface-XJKNWCPR.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-L3IZVX56.mjs","kind":"import-statement"},{"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-space","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-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":"@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-client/echo","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-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/echo","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":"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":4848},"src/cards/ContactCard.tsx":{"bytesInOutput":2371},"src/components/CardComponents.tsx":{"bytesInOutput":2664},"src/components/CardSubjectMenu.tsx":{"bytesInOutput":2638},"src/components/index.ts":{"bytesInOutput":0},"src/cards/index.ts":{"bytesInOutput":0},"src/cards/OrganizationCard.tsx":{"bytesInOutput":993},"src/cards/ProjectCard.tsx":{"bytesInOutput":854},"src/cards/TaskCard.tsx":{"bytesInOutput":1787}},"bytes":16738},"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}}}
@@ -1,67 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
-
3
- // src/capabilities/preview-popover.ts
4
- import { Capabilities, LayoutAction, contributes, createIntent } from "@dxos/app-framework";
5
- import { addEventListener } from "@dxos/async";
6
- import { parseId } from "@dxos/client/echo";
7
- import { DXN } from "@dxos/keys";
8
- import { log } from "@dxos/log";
9
- import { ClientCapabilities } from "@dxos/plugin-client";
10
- import { DX_ANCHOR_ACTIVATE } from "@dxos/react-ui";
11
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-preview/src/capabilities/preview-popover.ts";
12
- var customEventOptions = {
13
- capture: true,
14
- passive: false
15
- };
16
- var handlePreviewLookup = async (client, defaultSpace, { ref, label }) => {
17
- try {
18
- const object = await defaultSpace.db.ref(DXN.parse(ref)).load();
19
- return {
20
- label,
21
- object
22
- };
23
- } catch {
24
- return null;
25
- }
26
- };
27
- var preview_popover_default = ((context) => {
28
- const handleDxAnchorActivate = async ({ refId, label, trigger }) => {
29
- const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
30
- const client = context.getCapability(ClientCapabilities.Client);
31
- const [layout] = context.getCapabilities(Capabilities.Layout);
32
- const { spaceId } = parseId(layout.workspace);
33
- const space = (spaceId && client.spaces.get(spaceId)) ?? client.spaces.default;
34
- const result = await handlePreviewLookup(client, space, {
35
- ref: refId,
36
- label
37
- });
38
- if (!result) {
39
- return;
40
- }
41
- await dispatch(createIntent(LayoutAction.UpdatePopover, {
42
- part: "popover",
43
- subject: result.object,
44
- options: {
45
- state: true,
46
- variant: "virtual",
47
- anchor: trigger
48
- }
49
- }));
50
- };
51
- let cleanup;
52
- if (document.defaultView) {
53
- cleanup = addEventListener(document.defaultView, DX_ANCHOR_ACTIVATE, handleDxAnchorActivate, customEventOptions);
54
- } else {
55
- log.warn("No default view found", void 0, {
56
- F: __dxlog_file,
57
- L: 65,
58
- S: void 0,
59
- C: (f, a) => f(...a)
60
- });
61
- }
62
- return contributes(Capabilities.Null, null, () => cleanup());
63
- });
64
- export {
65
- preview_popover_default as default
66
- };
67
- //# sourceMappingURL=preview-popover-TZKX67EY.mjs.map
@@ -1,7 +0,0 @@
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 {\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,QAAQ;AACN,WAAO;EACT;AACF;AAEA,IAAA,2BAAe,CAACI,YAAAA;AAEd,QAAMC,yBAAyB,OAAO,EAAEC,OAAOP,OAAOQ,QAAO,MAAoB;AAC/E,UAAM,EAAEC,iBAAiBC,SAAQ,IAAKL,QAAQM,cAAc5B,aAAa6B,gBAAgB;AACzF,UAAMf,SAASQ,QAAQM,cAAcpB,mBAAmBsB,MAAM;AAC9D,UAAM,CAACC,MAAAA,IAAUT,QAAQU,gBAAgBhC,aAAaiC,MAAM;AAC5D,UAAM,EAAEC,QAAO,IAAK7B,QAAQ0B,OAAOI,SAAS;AAC5C,UAAMC,SAASF,WAAWpB,OAAOuB,OAAOC,IAAIJ,OAAAA,MAAapB,OAAOuB,OAAOE;AACvE,UAAMC,SAAS,MAAM3B,oBAAoBC,QAAQsB,OAAO;MAAEpB,KAAKQ;MAAOP;IAAM,CAAA;AAC5E,QAAI,CAACuB,QAAQ;AACX;IACF;AAEA,UAAMb,SACJxB,aAAaF,aAAawC,eAAe;MACvCC,MAAM;MACNC,SAASH,OAAOtB;MAChB0B,SAAS;QACPC,OAAO;QACPC,SAAS;QACTC,QAAQtB;MACV;IACF,CAAA,CAAA;EAEJ;AAEA,MAAIuB;AACJ,MAAIC,SAASC,aAAa;AACxBF,cAAU5C,iBACR6C,SAASC,aACTzC,oBACAc,wBACAb,kBAAAA;EAEJ,OAAO;AACLH,QAAI4C,KAAK,yBAAA,QAAA;;;;;;EACX;AAEA,SAAOjD,YAAYF,aAAaoD,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", "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
- }
@@ -1,494 +0,0 @@
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 React7, { useCallback } from "react";
8
- import { Capabilities, LayoutAction as LayoutAction2, Surface, contributes, createIntent as createIntent2, createSurface, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
9
- import { fullyQualifiedId as fullyQualifiedId2, getSchema, getSpace } from "@dxos/client/echo";
10
- import { Obj as Obj3 } from "@dxos/echo";
11
- import { setValue } from "@dxos/echo/internal";
12
- import { useActiveSpace } from "@dxos/plugin-space";
13
- import { useTranslation as useTranslation2 } from "@dxos/react-ui";
14
- import { Form } from "@dxos/react-ui-form";
15
- import { Card as Card6 } from "@dxos/react-ui-stack";
16
- import { descriptionMessage, mx as mx4 } from "@dxos/react-ui-theme";
17
- import { DataType as DataType2 } from "@dxos/schema";
18
-
19
- // src/cards/ContactCard.tsx
20
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
21
- import React3, { Fragment } from "react";
22
- import { Avatar, Icon as Icon2 } from "@dxos/react-ui";
23
- import { Card as Card2, cardHeading, cardText } from "@dxos/react-ui-stack";
24
- import { mx as mx2 } from "@dxos/react-ui-theme";
25
-
26
- // src/components/CardComponents.tsx
27
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
28
- import React2 from "react";
29
- import { Button, Icon } from "@dxos/react-ui";
30
- import { Card, cardNoSpacing, cardSpacing } from "@dxos/react-ui-stack";
31
- import { mx } from "@dxos/react-ui-theme";
32
-
33
- // src/components/CardSubjectMenu.tsx
34
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
35
- import { Rx } from "@effect-rx/rx-react";
36
- import React from "react";
37
- import { LayoutAction, createIntent, useIntentDispatcher } from "@dxos/app-framework";
38
- import { ACTION_TYPE } from "@dxos/app-graph";
39
- import { Obj } from "@dxos/echo";
40
- import { SpaceAction } from "@dxos/plugin-space/types";
41
- import { fullyQualifiedId } from "@dxos/react-client/echo";
42
- import { IconButton, useTranslation } from "@dxos/react-ui";
43
- import { DropdownMenu, MenuProvider, useMenuActions } from "@dxos/react-ui-menu";
44
- var CardSubjectMenu = ({ subject, activeSpace, ...props }) => {
45
- var _effect = _useSignals();
46
- try {
47
- const { t } = useTranslation(meta.id);
48
- const menuProps = useSubjectMenuGroupItems({
49
- subject,
50
- activeSpace
51
- });
52
- if (!activeSpace) {
53
- return null;
54
- }
55
- return /* @__PURE__ */ React.createElement(MenuProvider, menuProps, /* @__PURE__ */ React.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React.createElement(DropdownMenu.Trigger, {
56
- asChild: true
57
- }, /* @__PURE__ */ React.createElement(IconButton, {
58
- variant: "ghost",
59
- icon: "ph--dots-three-vertical--bold",
60
- iconOnly: true,
61
- label: t("more options label"),
62
- size: 5,
63
- ...props
64
- }))));
65
- } finally {
66
- _effect.f();
67
- }
68
- };
69
- var useSubjectMenuGroupItems = ({ subject, activeSpace }) => {
70
- const { dispatchPromise: dispatch } = useIntentDispatcher();
71
- const result = {
72
- edges: [],
73
- nodes: []
74
- };
75
- result.nodes.push({
76
- type: ACTION_TYPE,
77
- id: `${subject.id}/open`,
78
- data: () => dispatch(createIntent(LayoutAction.Open, {
79
- part: "main",
80
- subject: [
81
- fullyQualifiedId(subject)
82
- ]
83
- })),
84
- properties: {
85
- label: [
86
- "open object label",
87
- {
88
- ns: meta.id
89
- }
90
- ],
91
- icon: "ph--arrow-right--regular"
92
- }
93
- });
94
- if (activeSpace && Obj.getDXN(subject).asQueueDXN()) {
95
- result.nodes.push({
96
- type: ACTION_TYPE,
97
- id: `${subject.id}/add-to-space`,
98
- // TODO(wittjosiah): Update reference to point to db object when adding?
99
- data: () => dispatch(createIntent(SpaceAction.AddObject, {
100
- object: subject,
101
- target: activeSpace,
102
- hidden: true
103
- })),
104
- properties: {
105
- label: [
106
- "add object to space label",
107
- {
108
- ns: meta.id
109
- }
110
- ],
111
- icon: "ph--file-plus--regular"
112
- }
113
- });
114
- }
115
- result.nodes.forEach(({ id: target }) => {
116
- result.edges.push({
117
- source: "root",
118
- target
119
- });
120
- });
121
- return useMenuActions(Rx.make(result));
122
- };
123
-
124
- // src/components/CardComponents.tsx
125
- var gridRow = "is-full grid grid-cols-[1.5rem_1fr_min-content] gap-2 items-center";
126
- var CardHeader = ({ label, subject, activeSpace }) => {
127
- var _effect = _useSignals2();
128
- try {
129
- return /* @__PURE__ */ React2.createElement("div", {
130
- role: "none",
131
- className: mx("flex items-center gap-2", cardSpacing)
132
- }, /* @__PURE__ */ React2.createElement(Card.Heading, {
133
- classNames: cardNoSpacing
134
- }, label), /* @__PURE__ */ React2.createElement(CardSubjectMenu, {
135
- subject,
136
- activeSpace
137
- }));
138
- } finally {
139
- _effect.f();
140
- }
141
- };
142
- var CardRow = ({ icon, label, onClick }) => {
143
- var _effect = _useSignals2();
144
- try {
145
- if (!onClick) {
146
- return /* @__PURE__ */ React2.createElement(Card.Chrome, null, /* @__PURE__ */ React2.createElement("p", {
147
- "data-variant": "ghost",
148
- className: mx(gridRow, "dx-button")
149
- }, /* @__PURE__ */ React2.createElement(Icon, {
150
- icon,
151
- size: 5,
152
- classNames: "text-subdued"
153
- }), /* @__PURE__ */ React2.createElement("span", {
154
- className: "min-is-0 flex-1 truncate col-span-2"
155
- }, label)));
156
- }
157
- return /* @__PURE__ */ React2.createElement(Card.Chrome, null, /* @__PURE__ */ React2.createElement(Button, {
158
- variant: "ghost",
159
- classNames: mx(gridRow, "text-start"),
160
- onClick
161
- }, /* @__PURE__ */ React2.createElement(Icon, {
162
- icon,
163
- size: 5,
164
- classNames: "text-subdued"
165
- }), /* @__PURE__ */ React2.createElement("span", {
166
- className: "min-is-0 flex-1 truncate"
167
- }, label), /* @__PURE__ */ React2.createElement(Icon, {
168
- icon: "ph--arrow-right--regular"
169
- })));
170
- } finally {
171
- _effect.f();
172
- }
173
- };
174
- var CardLink = ({ label, href }) => {
175
- var _effect = _useSignals2();
176
- try {
177
- return /* @__PURE__ */ React2.createElement(Card.Chrome, null, /* @__PURE__ */ React2.createElement("a", {
178
- className: mx(gridRow, "dx-button dx-focus-ring"),
179
- "data-variant": "ghost",
180
- href,
181
- target: "_blank",
182
- rel: "noreferrer"
183
- }, /* @__PURE__ */ React2.createElement(Icon, {
184
- icon: "ph--link--regular",
185
- size: 5,
186
- classNames: "text-subdued"
187
- }), /* @__PURE__ */ React2.createElement("span", {
188
- className: "min-is-0 flex-1 truncate"
189
- }, label), /* @__PURE__ */ React2.createElement(Icon, {
190
- icon: "ph--arrow-square-out--regular"
191
- })));
192
- } finally {
193
- _effect.f();
194
- }
195
- };
196
-
197
- // src/cards/ContactCard.tsx
198
- var ContactCard = ({ children, role, subject, activeSpace, onSelect }) => {
199
- var _effect = _useSignals3();
200
- try {
201
- const { fullName, image, organization: { target: organization } = {}, emails } = subject;
202
- return /* @__PURE__ */ React3.createElement(Card2.SurfaceRoot, {
203
- role
204
- }, /* @__PURE__ */ React3.createElement(Avatar.Root, null, /* @__PURE__ */ React3.createElement(Card2.Text, {
205
- role: "group",
206
- classNames: mx2("grid gap-2 grid-cols-[1fr_min-content]")
207
- }, /* @__PURE__ */ React3.createElement("div", {
208
- role: "none",
209
- className: mx2(gridRow, "grid-rows-2")
210
- }, activeSpace ? /* @__PURE__ */ React3.createElement(CardSubjectMenu, {
211
- subject,
212
- activeSpace
213
- }) : /* @__PURE__ */ React3.createElement("div", null), /* @__PURE__ */ React3.createElement(Avatar.Label, {
214
- asChild: true
215
- }, /* @__PURE__ */ React3.createElement("h2", {
216
- className: mx2(cardHeading, "grow truncate")
217
- }, fullName))), /* @__PURE__ */ React3.createElement(Avatar.Content, {
218
- imgSrc: image,
219
- icon: "ph--user--regular",
220
- size: 16,
221
- hue: "neutral",
222
- variant: "square"
223
- }))), organization?.name && /* @__PURE__ */ React3.createElement(CardRow, {
224
- icon: "ph--buildings--regular",
225
- label: organization.name,
226
- onClick: onSelect ? () => onSelect(organization) : void 0
227
- }), emails?.length && /* @__PURE__ */ React3.createElement("dl", {
228
- className: mx2(cardText, gridRow, "[&_dt]:text-subdued [&_dt]:pbs-0.5 [&_dd]:min-is-0")
229
- }, emails?.length && emails.map(({ label, value }) => /* @__PURE__ */ React3.createElement(Fragment, {
230
- key: value
231
- }, /* @__PURE__ */ React3.createElement("dt", null, /* @__PURE__ */ React3.createElement("span", {
232
- className: "sr-only"
233
- }, label), /* @__PURE__ */ React3.createElement(Icon2, {
234
- icon: "ph--at--regular",
235
- size: 5
236
- })), /* @__PURE__ */ React3.createElement("dd", {
237
- key: value,
238
- className: "col-span-2 break-words"
239
- }, value)))), children);
240
- } finally {
241
- _effect.f();
242
- }
243
- };
244
-
245
- // src/cards/OrganizationCard.tsx
246
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
247
- import React4 from "react";
248
- import { Card as Card3 } from "@dxos/react-ui-stack";
249
- var OrganizationCard = ({ children, subject, role, activeSpace }) => {
250
- var _effect = _useSignals4();
251
- try {
252
- const { name, image, description, website } = subject;
253
- return /* @__PURE__ */ React4.createElement(Card3.SurfaceRoot, {
254
- role
255
- }, /* @__PURE__ */ React4.createElement(Card3.Poster, {
256
- alt: name ?? "",
257
- ...image ? {
258
- image
259
- } : {
260
- icon: "ph--building-office--regular"
261
- }
262
- }), /* @__PURE__ */ React4.createElement(CardHeader, {
263
- label: name,
264
- subject,
265
- activeSpace
266
- }), description && /* @__PURE__ */ React4.createElement(Card3.Text, {
267
- classNames: "line-clamp-2"
268
- }, description), website && /* @__PURE__ */ React4.createElement(CardLink, {
269
- label: website,
270
- href: website
271
- }), children);
272
- } finally {
273
- _effect.f();
274
- }
275
- };
276
-
277
- // src/cards/ProjectCard.tsx
278
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
279
- import React5 from "react";
280
- import { Obj as Obj2 } from "@dxos/echo";
281
- import { Card as Card4 } from "@dxos/react-ui-stack";
282
- var ProjectCard = ({ subject, role, activeSpace }) => {
283
- var _effect = _useSignals5();
284
- try {
285
- const { name, image, description } = subject;
286
- return /* @__PURE__ */ React5.createElement(Card4.SurfaceRoot, {
287
- role
288
- }, image && /* @__PURE__ */ React5.createElement(Card4.Poster, {
289
- image,
290
- alt: Obj2.getLabel(subject) ?? "",
291
- aspect: "auto"
292
- }), /* @__PURE__ */ React5.createElement(CardHeader, {
293
- label: name,
294
- subject,
295
- activeSpace
296
- }), description && /* @__PURE__ */ React5.createElement(Card4.Text, {
297
- classNames: "line-clamp-2"
298
- }, description));
299
- } finally {
300
- _effect.f();
301
- }
302
- };
303
-
304
- // src/cards/TaskCard.tsx
305
- import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
306
- import * as SchemaAST from "effect/SchemaAST";
307
- import React6 from "react";
308
- import { PropertyMetaAnnotationId } from "@dxos/echo/internal";
309
- import { Card as Card5, cardNoSpacing as cardNoSpacing2, cardSpacing as cardSpacing2 } from "@dxos/react-ui-stack";
310
- import { mx as mx3 } from "@dxos/react-ui-theme";
311
- import { DataType } from "@dxos/schema";
312
- var getActiveStatusOption = (status) => {
313
- const properties = SchemaAST.getPropertySignatures(DataType.Task.ast);
314
- const statusProperty = properties.find((p) => p.name === "status");
315
- const statusMeta = SchemaAST.getAnnotation(PropertyMetaAnnotationId)(
316
- // TODO(thure): Typescript asserts `.type` doesn’t have `.types`, but in runtime it does.
317
- statusProperty.type.types[0]
318
- );
319
- const options = statusMeta.value.singleSelect.options;
320
- return options.find(({ id }) => id === status);
321
- };
322
- var TaskCard = ({ subject, role, activeSpace }) => {
323
- var _effect = _useSignals6();
324
- try {
325
- const { title, status } = subject;
326
- const statusOption = getActiveStatusOption(status);
327
- return /* @__PURE__ */ React6.createElement(Card5.SurfaceRoot, {
328
- role
329
- }, /* @__PURE__ */ React6.createElement("div", {
330
- role: "none",
331
- className: mx3("flex items-center gap-2", cardSpacing2)
332
- }, /* @__PURE__ */ React6.createElement(Card5.Heading, {
333
- classNames: [
334
- cardNoSpacing2,
335
- "min-is-0 flex-1 truncate"
336
- ]
337
- }, title), statusOption && /* @__PURE__ */ React6.createElement("span", {
338
- className: "dx-tag",
339
- "data-hue": statusOption.color
340
- }, statusOption.title), /* @__PURE__ */ React6.createElement(CardSubjectMenu, {
341
- subject,
342
- activeSpace
343
- })));
344
- } finally {
345
- _effect.f();
346
- }
347
- };
348
-
349
- // src/capabilities/react-surface.tsx
350
- var react_surface_default = (() => contributes(Capabilities.ReactSurface, [
351
- //
352
- // Specific schema types.
353
- //
354
- createSurface({
355
- id: `${meta.id}/schema-popover--contact`,
356
- role: [
357
- "card--popover",
358
- "card--intrinsic",
359
- "card--transclusion",
360
- "card--extrinsic",
361
- "card"
362
- ],
363
- filter: (data) => Obj3.instanceOf(DataType2.Person, data.subject),
364
- component: ({ data, role }) => {
365
- const { dispatchPromise: dispatch } = useIntentDispatcher2();
366
- const space = getSpace(data.subject);
367
- const activeSpace = useActiveSpace();
368
- const handleSelect = useCallback((org) => dispatch(createIntent2(LayoutAction2.Open, {
369
- part: "main",
370
- subject: [
371
- fullyQualifiedId2(org)
372
- ],
373
- options: {
374
- workspace: space?.id
375
- }
376
- })), [
377
- dispatch
378
- ]);
379
- return /* @__PURE__ */ React7.createElement(ContactCard, {
380
- role,
381
- subject: data.subject,
382
- activeSpace,
383
- onSelect: handleSelect
384
- }, role === "card--popover" && /* @__PURE__ */ React7.createElement(Surface, {
385
- role: "related",
386
- data
387
- }));
388
- }
389
- }),
390
- createSurface({
391
- id: `${meta.id}/schema-popover--organization`,
392
- role: [
393
- "card--popover",
394
- "card--intrinsic",
395
- "card--transclusion",
396
- "card--extrinsic",
397
- "card"
398
- ],
399
- filter: (data) => Obj3.instanceOf(DataType2.Organization, data.subject),
400
- component: ({ data, role }) => {
401
- const activeSpace = useActiveSpace();
402
- return /* @__PURE__ */ React7.createElement(OrganizationCard, {
403
- role,
404
- subject: data.subject,
405
- activeSpace
406
- }, role === "card--popover" && /* @__PURE__ */ React7.createElement(Surface, {
407
- role: "related",
408
- data
409
- }));
410
- }
411
- }),
412
- createSurface({
413
- id: `${meta.id}/schema-popover--project`,
414
- role: [
415
- "card--popover",
416
- "card--intrinsic",
417
- "card--transclusion",
418
- "card--extrinsic",
419
- "card"
420
- ],
421
- filter: (data) => Obj3.instanceOf(DataType2.Project, data.subject),
422
- component: ({ data, role }) => {
423
- const activeSpace = useActiveSpace();
424
- return /* @__PURE__ */ React7.createElement(ProjectCard, {
425
- subject: data.subject,
426
- role,
427
- activeSpace
428
- });
429
- }
430
- }),
431
- createSurface({
432
- id: `${meta.id}/schema-popover--task`,
433
- role: [
434
- "card--popover",
435
- "card--intrinsic",
436
- "card--transclusion",
437
- "card--extrinsic",
438
- "card"
439
- ],
440
- filter: (data) => Obj3.instanceOf(DataType2.Task, data.subject),
441
- component: ({ data, role }) => /* @__PURE__ */ React7.createElement(TaskCard, {
442
- subject: data.subject,
443
- role
444
- })
445
- }),
446
- //
447
- // Fallback for any object.
448
- //
449
- createSurface({
450
- id: `${meta.id}/fallback-popover`,
451
- role: [
452
- "card--popover",
453
- "card--intrinsic",
454
- "card--transclusion",
455
- "card--extrinsic",
456
- "card"
457
- ],
458
- position: "fallback",
459
- filter: (data) => Obj3.isObject(data.subject),
460
- component: ({ data, role }) => {
461
- const schema = getSchema(data.subject);
462
- const { t } = useTranslation2(meta.id);
463
- if (!schema) {
464
- return /* @__PURE__ */ React7.createElement("p", {
465
- className: mx4(descriptionMessage)
466
- }, t("unable to create preview message"));
467
- }
468
- const handleSave = useCallback((values, { changed }) => {
469
- const changedPaths = Object.keys(changed).filter((path) => changed[path]);
470
- for (const path of changedPaths) {
471
- const value = values[path];
472
- setValue(data.subject, path, value);
473
- }
474
- }, []);
475
- return /* @__PURE__ */ React7.createElement(Card6.SurfaceRoot, {
476
- role
477
- }, /* @__PURE__ */ React7.createElement(Form, {
478
- schema,
479
- projection: data.projection,
480
- values: data.subject,
481
- readonly: role === "card--popover" ? "static" : false,
482
- onSave: handleSave,
483
- autoSave: true,
484
- ...role === "card--intrinsic" && {
485
- outerSpacing: "blockStart-0"
486
- }
487
- }));
488
- }
489
- })
490
- ]));
491
- export {
492
- react_surface_default as default
493
- };
494
- //# sourceMappingURL=react-surface-XJKNWCPR.mjs.map