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

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 (82) 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-55HRKRXY.mjs → preview-popover-RKHENTFP.mjs} +4 -4
  7. package/dist/lib/browser/preview-popover-RKHENTFP.mjs.map +7 -0
  8. package/dist/lib/browser/react-surface-CPGRW3OV.mjs +493 -0
  9. package/dist/lib/browser/react-surface-CPGRW3OV.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-6GFVXZGN.mjs → preview-popover-TZKX67EY.mjs} +4 -4
  16. package/dist/lib/node-esm/preview-popover-TZKX67EY.mjs.map +7 -0
  17. package/dist/lib/node-esm/react-surface-XJKNWCPR.mjs +494 -0
  18. package/dist/lib/node-esm/react-surface-XJKNWCPR.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/react-surface.d.ts.map +1 -1
  22. package/dist/types/src/cards/ContactCard.d.ts +5 -0
  23. package/dist/types/src/cards/ContactCard.d.ts.map +1 -0
  24. package/dist/types/src/{components → cards}/OrganizationCard.d.ts +1 -1
  25. package/dist/types/src/cards/OrganizationCard.d.ts.map +1 -0
  26. package/dist/types/src/cards/ProjectCard.d.ts +5 -0
  27. package/dist/types/src/cards/ProjectCard.d.ts.map +1 -0
  28. package/dist/types/src/cards/TaskCard.d.ts +5 -0
  29. package/dist/types/src/cards/TaskCard.d.ts.map +1 -0
  30. package/dist/types/src/cards/index.d.ts +5 -0
  31. package/dist/types/src/cards/index.d.ts.map +1 -0
  32. package/dist/types/src/components/CardComponents.d.ts +16 -0
  33. package/dist/types/src/components/CardComponents.d.ts.map +1 -0
  34. package/dist/types/src/components/CardSubjectMenu.d.ts +3 -5
  35. package/dist/types/src/components/CardSubjectMenu.d.ts.map +1 -1
  36. package/dist/types/src/components/index.d.ts +2 -3
  37. package/dist/types/src/components/index.d.ts.map +1 -1
  38. package/dist/types/src/meta.d.ts +0 -1
  39. package/dist/types/src/meta.d.ts.map +1 -1
  40. package/dist/types/src/stories/Card.stories.d.ts +4 -1
  41. package/dist/types/src/stories/Card.stories.d.ts.map +1 -1
  42. package/dist/types/src/stories/testing.d.ts +2 -1
  43. package/dist/types/src/stories/testing.d.ts.map +1 -1
  44. package/dist/types/src/translations.d.ts +3 -0
  45. package/dist/types/src/translations.d.ts.map +1 -1
  46. package/dist/types/src/types.d.ts +5 -2
  47. package/dist/types/src/types.d.ts.map +1 -1
  48. package/dist/types/tsconfig.tsbuildinfo +1 -1
  49. package/package.json +32 -32
  50. package/src/PreviewPlugin.tsx +22 -23
  51. package/src/capabilities/preview-popover.ts +1 -1
  52. package/src/capabilities/react-surface.tsx +46 -77
  53. package/src/cards/ContactCard.tsx +58 -0
  54. package/src/cards/OrganizationCard.tsx +25 -0
  55. package/src/{components → cards}/ProjectCard.tsx +5 -9
  56. package/src/{components → cards}/TaskCard.tsx +6 -6
  57. package/src/cards/index.ts +8 -0
  58. package/src/components/CardComponents.tsx +67 -0
  59. package/src/components/CardSubjectMenu.tsx +60 -25
  60. package/src/components/index.ts +2 -3
  61. package/src/meta.ts +1 -3
  62. package/src/stories/Card.stories.tsx +12 -9
  63. package/src/stories/testing.tsx +12 -13
  64. package/src/translations.ts +3 -0
  65. package/src/types.ts +6 -2
  66. package/dist/lib/browser/chunk-Z73ENKLE.mjs.map +0 -7
  67. package/dist/lib/browser/preview-popover-55HRKRXY.mjs.map +0 -7
  68. package/dist/lib/browser/react-surface-JGO43GLE.mjs +0 -381
  69. package/dist/lib/browser/react-surface-JGO43GLE.mjs.map +0 -7
  70. package/dist/lib/node-esm/chunk-2ORSL4GJ.mjs.map +0 -7
  71. package/dist/lib/node-esm/preview-popover-6GFVXZGN.mjs.map +0 -7
  72. package/dist/lib/node-esm/react-surface-Q7F36L3Z.mjs +0 -382
  73. package/dist/lib/node-esm/react-surface-Q7F36L3Z.mjs.map +0 -7
  74. package/dist/types/src/components/ContactCard.d.ts +0 -7
  75. package/dist/types/src/components/ContactCard.d.ts.map +0 -1
  76. package/dist/types/src/components/OrganizationCard.d.ts.map +0 -1
  77. package/dist/types/src/components/ProjectCard.d.ts +0 -5
  78. package/dist/types/src/components/ProjectCard.d.ts.map +0 -1
  79. package/dist/types/src/components/TaskCard.d.ts +0 -5
  80. package/dist/types/src/components/TaskCard.d.ts.map +0 -1
  81. package/src/components/ContactCard.tsx +0 -76
  82. package/src/components/OrganizationCard.tsx +0 -44
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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 = () =>\n 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 },\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;MAChB;IACF;EACF;;;;AFNK,IAAMC,gBAAgB,MAC3BC,aAAaC,MAAM;EACjBC,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;",
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
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
7
  }
@@ -1 +1 @@
1
- {"inputs":{"src/meta.ts":{"bytes":1243,"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":6586,"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-graph","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":9925,"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":5918,"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":4005,"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/capabilities/react-surface.tsx":{"bytes":24480,"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":1503,"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":3373},"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-6GFVXZGN.mjs","kind":"dynamic-import"},{"path":"dist/lib/node-esm/react-surface-Q7F36L3Z.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":242}},"bytes":1736},"dist/lib/node-esm/preview-popover-6GFVXZGN.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4361},"dist/lib/node-esm/preview-popover-6GFVXZGN.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":2005}},"bytes":2240},"dist/lib/node-esm/react-surface-Q7F36L3Z.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":25249},"dist/lib/node-esm/react-surface-Q7F36L3Z.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":"@effect-rx/rx-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-graph","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}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":6055},"src/components/ContactCard.tsx":{"bytesInOutput":3053},"src/components/CardSubjectMenu.tsx":{"bytesInOutput":1574},"src/components/index.ts":{"bytesInOutput":0},"src/components/OrganizationCard.tsx":{"bytesInOutput":1784},"src/components/ProjectCard.tsx":{"bytesInOutput":1148}},"bytes":14124},"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":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}}}
@@ -20,11 +20,11 @@ var handlePreviewLookup = async (client, defaultSpace, { ref, label }) => {
20
20
  label,
21
21
  object
22
22
  };
23
- } catch (err) {
23
+ } catch {
24
24
  return null;
25
25
  }
26
26
  };
27
- var preview_popover_default = (context) => {
27
+ var preview_popover_default = ((context) => {
28
28
  const handleDxAnchorActivate = async ({ refId, label, trigger }) => {
29
29
  const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
30
30
  const client = context.getCapability(ClientCapabilities.Client);
@@ -60,8 +60,8 @@ var preview_popover_default = (context) => {
60
60
  });
61
61
  }
62
62
  return contributes(Capabilities.Null, null, () => cleanup());
63
- };
63
+ });
64
64
  export {
65
65
  preview_popover_default as default
66
66
  };
67
- //# sourceMappingURL=preview-popover-6GFVXZGN.mjs.map
67
+ //# sourceMappingURL=preview-popover-TZKX67EY.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 {\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
+ }
@@ -0,0 +1,494 @@
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