@dxos/plugin-preview 0.8.4-main.406dc2a → 0.8.4-main.4668b7de9b

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 (135) 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-QOM5APM7.mjs +23 -0
  13. package/dist/lib/neutral/chunk-QOM5APM7.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-FLMYMFCH.mjs +94 -0
  22. package/dist/lib/neutral/preview-popover-FLMYMFCH.mjs.map +7 -0
  23. package/dist/lib/neutral/react-surface-HDOPNIQM.mjs +406 -0
  24. package/dist/lib/neutral/react-surface-HDOPNIQM.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 +5 -0
  50. package/dist/types/src/cards/OrganizationCard.d.ts.map +1 -0
  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 +5 -0
  54. package/dist/types/src/cards/ProjectCard.d.ts.map +1 -0
  55. package/dist/types/src/cards/TaskCard.d.ts +5 -0
  56. package/dist/types/src/cards/TaskCard.d.ts.map +1 -0
  57. package/dist/types/src/cards/index.d.ts +8 -0
  58. package/dist/types/src/cards/index.d.ts.map +1 -0
  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 -11
  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 +80 -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 +93 -41
  81. package/src/capabilities/react-surface.tsx +139 -121
  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 +29 -0
  86. package/src/cards/PersonCard.tsx +65 -0
  87. package/src/cards/ProjectCard.tsx +22 -0
  88. package/src/cards/TaskCard.tsx +45 -0
  89. package/src/cards/index.ts +11 -0
  90. package/src/index.ts +0 -3
  91. package/src/meta.ts +12 -4
  92. package/src/plugin.ts +9 -0
  93. package/src/stories/Card.stories.tsx +141 -23
  94. package/src/stories/testing.tsx +117 -78
  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-X56QWACK.mjs +0 -448
  105. package/dist/lib/browser/react-surface-X56QWACK.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-4P7UCMK7.mjs +0 -449
  114. package/dist/lib/node-esm/react-surface-4P7UCMK7.mjs.map +0 -7
  115. package/dist/types/src/components/CardSubjectMenu.d.ts +0 -12
  116. package/dist/types/src/components/CardSubjectMenu.d.ts.map +0 -1
  117. package/dist/types/src/components/ContactCard.d.ts +0 -7
  118. package/dist/types/src/components/ContactCard.d.ts.map +0 -1
  119. package/dist/types/src/components/OrganizationCard.d.ts +0 -5
  120. package/dist/types/src/components/OrganizationCard.d.ts.map +0 -1
  121. package/dist/types/src/components/ProjectCard.d.ts +0 -5
  122. package/dist/types/src/components/ProjectCard.d.ts.map +0 -1
  123. package/dist/types/src/components/TaskCard.d.ts +0 -5
  124. package/dist/types/src/components/TaskCard.d.ts.map +0 -1
  125. package/dist/types/src/components/index.d.ts +0 -4
  126. package/dist/types/src/components/index.d.ts.map +0 -1
  127. package/dist/types/src/types.d.ts +0 -9
  128. package/dist/types/src/types.d.ts.map +0 -1
  129. package/src/components/CardSubjectMenu.tsx +0 -82
  130. package/src/components/ContactCard.tsx +0 -78
  131. package/src/components/OrganizationCard.tsx +0 -44
  132. package/src/components/ProjectCard.tsx +0 -28
  133. package/src/components/TaskCard.tsx +0 -46
  134. package/src/components/index.ts +0 -7
  135. package/src/types.ts +0 -14
@@ -1,65 +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/PreviewPlugin.tsx
7
- import { Capabilities, Events, contributes, defineModule, definePlugin } from "@dxos/app-framework";
8
- import { ClientCapabilities, ClientEvents } from "@dxos/plugin-client";
9
- import { DataType } from "@dxos/schema";
10
-
11
- // src/capabilities/index.ts
12
- import { lazy } from "@dxos/app-framework";
13
- var PreviewPopover = lazy(() => import("./preview-popover-TZKX67EY.mjs"));
14
- var ReactSurface = lazy(() => import("./react-surface-4P7UCMK7.mjs"));
15
-
16
- // src/translations.ts
17
- var translations = [
18
- {
19
- "en-US": {
20
- [meta.id]: {
21
- "unable to create preview message": "No preview",
22
- "todo label": "To do",
23
- "in-progress label": "In progress",
24
- "done label": "Done",
25
- "open object label": "Open",
26
- "add object to space label": "Add to space",
27
- "more options label": "More options"
28
- }
29
- }
30
- }
31
- ];
32
-
33
- // src/PreviewPlugin.tsx
34
- var PreviewPlugin = definePlugin(meta, () => [
35
- defineModule({
36
- id: `${meta.id}/module/translations`,
37
- activatesOn: Events.SetupTranslations,
38
- activate: () => contributes(Capabilities.Translations, translations)
39
- }),
40
- defineModule({
41
- id: `${meta.id}/module/schema`,
42
- activatesOn: ClientEvents.SetupSchema,
43
- activate: () => [
44
- contributes(ClientCapabilities.Schema, [
45
- DataType.Person,
46
- DataType.Organization
47
- ])
48
- ]
49
- }),
50
- defineModule({
51
- id: `${meta.id}/module/preview-popover`,
52
- activatesOn: Events.Startup,
53
- activate: PreviewPopover
54
- }),
55
- defineModule({
56
- id: `${meta.id}/module/react-surface`,
57
- activatesOn: Events.SetupReactSurface,
58
- activate: ReactSurface
59
- })
60
- ]);
61
- export {
62
- PreviewPlugin,
63
- meta
64
- };
65
- //# sourceMappingURL=index.mjs.map
@@ -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":9993,"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/ContactCard.tsx":{"bytes":10312,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"src/components/CardSubjectMenu.tsx","kind":"import-statement","original":"./CardSubjectMenu"}],"format":"esm"},"src/components/OrganizationCard.tsx":{"bytes":6117,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"src/components/CardSubjectMenu.tsx","kind":"import-statement","original":"./CardSubjectMenu"}],"format":"esm"},"src/components/ProjectCard.tsx":{"bytes":4160,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"src/components/CardSubjectMenu.tsx","kind":"import-statement","original":"./CardSubjectMenu"}],"format":"esm"},"src/components/index.ts":{"bytes":687,"imports":[{"path":"src/components/ContactCard.tsx","kind":"import-statement","original":"./ContactCard"},{"path":"src/components/OrganizationCard.tsx","kind":"import-statement","original":"./OrganizationCard"},{"path":"src/components/ProjectCard.tsx","kind":"import-statement","original":"./ProjectCard"}],"format":"esm"},"src/components/TaskCard.tsx":{"bytes":6988,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/components/CardSubjectMenu.tsx","kind":"import-statement","original":"./CardSubjectMenu"}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":18997,"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/components/index.ts","kind":"import-statement","original":"../components"},{"path":"src/components/TaskCard.tsx","kind":"import-statement","original":"../components/TaskCard"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":1037,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/preview-popover.ts","kind":"dynamic-import","original":"./preview-popover"},{"path":"src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"src/translations.ts":{"bytes":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-4P7UCMK7.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-4P7UCMK7.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":28002},"dist/lib/node-esm/react-surface-4P7UCMK7.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":"@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","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":4854},"src/components/ContactCard.tsx":{"bytesInOutput":3174},"src/components/CardSubjectMenu.tsx":{"bytesInOutput":2599},"src/components/index.ts":{"bytesInOutput":0},"src/components/OrganizationCard.tsx":{"bytesInOutput":1836},"src/components/ProjectCard.tsx":{"bytesInOutput":1189},"src/components/TaskCard.tsx":{"bytesInOutput":1787}},"bytes":15971},"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,449 +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 React6, { 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 Card5 } from "@dxos/react-ui-stack";
16
- import { descriptionMessage, mx as mx5 } from "@dxos/react-ui-theme";
17
- import { DataType as DataType2 } from "@dxos/schema";
18
-
19
- // src/components/ContactCard.tsx
20
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
21
- import React2, { Fragment } from "react";
22
- import { Avatar, Button, Icon } from "@dxos/react-ui";
23
- import { Card, cardHeading, cardText } from "@dxos/react-ui-stack";
24
- import { mx } from "@dxos/react-ui-theme";
25
-
26
- // src/components/CardSubjectMenu.tsx
27
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
28
- import { Rx } from "@effect-rx/rx-react";
29
- import React from "react";
30
- import { LayoutAction, createIntent, useIntentDispatcher } from "@dxos/app-framework";
31
- import { ACTION_TYPE } from "@dxos/app-graph";
32
- import { Obj } from "@dxos/echo";
33
- import { SpaceAction } from "@dxos/plugin-space/types";
34
- import { fullyQualifiedId } from "@dxos/react-client/echo";
35
- import { IconButton, useTranslation } from "@dxos/react-ui";
36
- import { DropdownMenu, MenuProvider, useMenuActions } from "@dxos/react-ui-menu";
37
- var useSubjectMenuGroupItems = (subject, activeSpace) => {
38
- const { dispatchPromise: dispatch } = useIntentDispatcher();
39
- const result = {
40
- edges: [],
41
- nodes: []
42
- };
43
- result.nodes.push({
44
- type: ACTION_TYPE,
45
- id: `${subject.id}/open`,
46
- data: () => dispatch(createIntent(LayoutAction.Open, {
47
- part: "main",
48
- subject: [
49
- fullyQualifiedId(subject)
50
- ]
51
- })),
52
- properties: {
53
- label: [
54
- "open object label",
55
- {
56
- ns: meta.id
57
- }
58
- ],
59
- icon: "ph--arrow-right--regular"
60
- }
61
- });
62
- if (activeSpace && Obj.getDXN(subject).asQueueDXN()) {
63
- result.nodes.push({
64
- type: ACTION_TYPE,
65
- id: `${subject.id}/add-to-space`,
66
- // TODO(wittjosiah): Update reference to point to db object when adding?
67
- data: () => dispatch(createIntent(SpaceAction.AddObject, {
68
- object: subject,
69
- target: activeSpace,
70
- hidden: true
71
- })),
72
- properties: {
73
- label: [
74
- "add object to space label",
75
- {
76
- ns: meta.id
77
- }
78
- ],
79
- icon: "ph--file-plus--regular"
80
- }
81
- });
82
- }
83
- result.nodes.forEach(({ id: target }) => {
84
- result.edges.push({
85
- source: "root",
86
- target
87
- });
88
- });
89
- return useMenuActions(Rx.make(result));
90
- };
91
- var CardSubjectMenu = ({ subject, activeSpace, ...props }) => {
92
- var _effect = _useSignals();
93
- try {
94
- const { t } = useTranslation(meta.id);
95
- const menuProps = useSubjectMenuGroupItems(subject, activeSpace);
96
- if (!activeSpace) {
97
- return null;
98
- }
99
- return /* @__PURE__ */ React.createElement(MenuProvider, menuProps, /* @__PURE__ */ React.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React.createElement(DropdownMenu.Trigger, {
100
- asChild: true
101
- }, /* @__PURE__ */ React.createElement(IconButton, {
102
- iconOnly: true,
103
- variant: "ghost",
104
- icon: "ph--dots-three-vertical--bold",
105
- label: t("more options label"),
106
- ...props
107
- }))));
108
- } finally {
109
- _effect.f();
110
- }
111
- };
112
-
113
- // src/components/ContactCard.tsx
114
- var ContactCard = ({ children, subject, activeSpace, onOrgClick, role }) => {
115
- var _effect = _useSignals2();
116
- try {
117
- const { fullName, image, organization, emails } = subject;
118
- const organizationName = organization && typeof organization === "object" ? organization.target?.name : organization;
119
- return /* @__PURE__ */ React2.createElement(Card.SurfaceRoot, {
120
- role
121
- }, /* @__PURE__ */ React2.createElement(Avatar.Root, null, /* @__PURE__ */ React2.createElement(Card.Text, {
122
- role: "group",
123
- classNames: "grid gap-3 grid-cols-[min-content_1fr]"
124
- }, /* @__PURE__ */ React2.createElement(Avatar.Content, {
125
- imgSrc: image,
126
- icon: "ph--user--regular",
127
- size: 16,
128
- hue: "neutral"
129
- }), /* @__PURE__ */ React2.createElement("div", {
130
- role: "none",
131
- className: "bs-min self-center flex items-center"
132
- }, /* @__PURE__ */ React2.createElement(Avatar.Label, {
133
- asChild: true
134
- }, /* @__PURE__ */ React2.createElement("h2", {
135
- className: mx(cardHeading, "grow")
136
- }, fullName)), /* @__PURE__ */ React2.createElement(CardSubjectMenu, {
137
- subject,
138
- activeSpace
139
- })))), organizationName && /* @__PURE__ */ React2.createElement(Card.Chrome, null, typeof organization === "object" && onOrgClick ? /* @__PURE__ */ React2.createElement(Button, {
140
- variant: "ghost",
141
- classNames: "gap-2 text-start",
142
- onClick: () => onOrgClick(organization.target)
143
- }, /* @__PURE__ */ React2.createElement(Icon, {
144
- icon: "ph--buildings--regular",
145
- size: 5,
146
- classNames: "text-subdued"
147
- }), /* @__PURE__ */ React2.createElement("span", {
148
- className: "min-is-0 flex-1 truncate"
149
- }, organizationName), /* @__PURE__ */ React2.createElement(Icon, {
150
- icon: "ph--arrow-right--regular"
151
- })) : /* @__PURE__ */ React2.createElement("p", {
152
- className: "dx-button gap-2",
153
- "data-variant": "ghost"
154
- }, /* @__PURE__ */ React2.createElement(Icon, {
155
- icon: "ph--buildings--regular",
156
- size: 5,
157
- classNames: "text-subdued"
158
- }), /* @__PURE__ */ React2.createElement("span", {
159
- className: "min-is-0 flex-1 truncate"
160
- }, organizationName))), emails?.length && /* @__PURE__ */ React2.createElement("dl", {
161
- className: mx(cardText, "grid gap-2 grid-cols-[min-content_1fr] [&_dt]:text-subdued [&_dt]:pbs-0.5 [&_dd]:min-is-0")
162
- }, emails?.length && emails.map(({ label, value }) => /* @__PURE__ */ React2.createElement(Fragment, {
163
- key: value
164
- }, /* @__PURE__ */ React2.createElement("dt", null, /* @__PURE__ */ React2.createElement("span", {
165
- className: "sr-only"
166
- }, label), /* @__PURE__ */ React2.createElement(Icon, {
167
- icon: "ph--at--regular",
168
- size: 5
169
- })), /* @__PURE__ */ React2.createElement("dd", {
170
- key: value,
171
- className: "break-words"
172
- }, value)))), children);
173
- } finally {
174
- _effect.f();
175
- }
176
- };
177
-
178
- // src/components/OrganizationCard.tsx
179
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
180
- import React3 from "react";
181
- import { Icon as Icon2 } from "@dxos/react-ui";
182
- import { Card as Card2, cardNoSpacing, cardSpacing } from "@dxos/react-ui-stack";
183
- import { mx as mx2 } from "@dxos/react-ui-theme";
184
- var OrganizationCard = ({ children, subject, role, activeSpace }) => {
185
- var _effect = _useSignals3();
186
- try {
187
- const { name, image, description, website } = subject;
188
- return /* @__PURE__ */ React3.createElement(Card2.SurfaceRoot, {
189
- role
190
- }, /* @__PURE__ */ React3.createElement(Card2.Poster, {
191
- alt: name,
192
- ...image ? {
193
- image
194
- } : {
195
- icon: "ph--building-office--regular"
196
- }
197
- }), /* @__PURE__ */ React3.createElement("div", {
198
- role: "none",
199
- className: mx2("flex items-center gap-2", cardSpacing)
200
- }, /* @__PURE__ */ React3.createElement(Card2.Heading, {
201
- classNames: cardNoSpacing
202
- }, name), /* @__PURE__ */ React3.createElement(CardSubjectMenu, {
203
- subject,
204
- activeSpace
205
- })), description && /* @__PURE__ */ React3.createElement(Card2.Text, {
206
- classNames: "line-clamp-2"
207
- }, description), website && /* @__PURE__ */ React3.createElement(Card2.Chrome, null, /* @__PURE__ */ React3.createElement("a", {
208
- className: "dx-button dx-focus-ring gap-2",
209
- "data-variant": "ghost",
210
- href: website,
211
- target: "_blank",
212
- rel: "noreferrer"
213
- }, /* @__PURE__ */ React3.createElement(Icon2, {
214
- icon: "ph--link--regular",
215
- size: 5,
216
- classNames: "text-subdued"
217
- }), /* @__PURE__ */ React3.createElement("span", {
218
- className: "min-is-0 flex-1 truncate"
219
- }, website), /* @__PURE__ */ React3.createElement(Icon2, {
220
- icon: "ph--arrow-square-out--regular"
221
- }))), children);
222
- } finally {
223
- _effect.f();
224
- }
225
- };
226
-
227
- // src/components/ProjectCard.tsx
228
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
229
- import React4 from "react";
230
- import { Obj as Obj2 } from "@dxos/echo";
231
- import { Card as Card3, cardNoSpacing as cardNoSpacing2, cardSpacing as cardSpacing2 } from "@dxos/react-ui-stack";
232
- import { mx as mx3 } from "@dxos/react-ui-theme";
233
- var ProjectCard = ({ subject, role, activeSpace }) => {
234
- var _effect = _useSignals4();
235
- try {
236
- const { name, image, description } = subject;
237
- return /* @__PURE__ */ React4.createElement(Card3.SurfaceRoot, {
238
- role
239
- }, image && /* @__PURE__ */ React4.createElement(Card3.Poster, {
240
- image,
241
- alt: Obj2.getLabel(subject) ?? "",
242
- aspect: "auto"
243
- }), /* @__PURE__ */ React4.createElement("div", {
244
- role: "none",
245
- className: mx3("flex items-center gap-2", cardSpacing2)
246
- }, /* @__PURE__ */ React4.createElement(Card3.Heading, {
247
- classNames: cardNoSpacing2
248
- }, name), /* @__PURE__ */ React4.createElement(CardSubjectMenu, {
249
- subject,
250
- activeSpace
251
- })), description && /* @__PURE__ */ React4.createElement(Card3.Text, {
252
- classNames: "line-clamp-2"
253
- }, description));
254
- } finally {
255
- _effect.f();
256
- }
257
- };
258
-
259
- // src/components/TaskCard.tsx
260
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
261
- import * as SchemaAST from "effect/SchemaAST";
262
- import React5 from "react";
263
- import { PropertyMetaAnnotationId } from "@dxos/echo/internal";
264
- import { Card as Card4, cardNoSpacing as cardNoSpacing3, cardSpacing as cardSpacing3 } from "@dxos/react-ui-stack";
265
- import { mx as mx4 } from "@dxos/react-ui-theme";
266
- import { DataType } from "@dxos/schema";
267
- var getActiveStatusOption = (status) => {
268
- const properties = SchemaAST.getPropertySignatures(DataType.Task.ast);
269
- const statusProperty = properties.find((p) => p.name === "status");
270
- const statusMeta = SchemaAST.getAnnotation(PropertyMetaAnnotationId)(
271
- // TODO(thure): Typescript asserts `.type` doesn’t have `.types`, but in runtime it does.
272
- statusProperty.type.types[0]
273
- );
274
- const options = statusMeta.value.singleSelect.options;
275
- return options.find(({ id }) => id === status);
276
- };
277
- var TaskCard = ({ subject, role, activeSpace }) => {
278
- var _effect = _useSignals5();
279
- try {
280
- const { title, status } = subject;
281
- const statusOption = getActiveStatusOption(status);
282
- return /* @__PURE__ */ React5.createElement(Card4.SurfaceRoot, {
283
- role
284
- }, /* @__PURE__ */ React5.createElement("div", {
285
- role: "none",
286
- className: mx4("flex items-center gap-2", cardSpacing3)
287
- }, /* @__PURE__ */ React5.createElement(Card4.Heading, {
288
- classNames: [
289
- cardNoSpacing3,
290
- "min-is-0 flex-1 truncate"
291
- ]
292
- }, title), statusOption && /* @__PURE__ */ React5.createElement("span", {
293
- className: "dx-tag",
294
- "data-hue": statusOption.color
295
- }, statusOption.title), /* @__PURE__ */ React5.createElement(CardSubjectMenu, {
296
- subject,
297
- activeSpace
298
- })));
299
- } finally {
300
- _effect.f();
301
- }
302
- };
303
-
304
- // src/capabilities/react-surface.tsx
305
- var react_surface_default = (() => contributes(Capabilities.ReactSurface, [
306
- //
307
- // Specific schema types.
308
- //
309
- createSurface({
310
- id: `${meta.id}/schema-popover--contact`,
311
- role: [
312
- "card--popover",
313
- "card--intrinsic",
314
- "card--transclusion",
315
- "card--extrinsic",
316
- "card"
317
- ],
318
- filter: (data) => Obj3.instanceOf(DataType2.Person, data.subject),
319
- component: ({ data, role }) => {
320
- const { dispatchPromise: dispatch } = useIntentDispatcher2();
321
- const space = getSpace(data.subject);
322
- const activeSpace = useActiveSpace();
323
- const handleOrgClick = useCallback((org) => dispatch(createIntent2(LayoutAction2.Open, {
324
- part: "main",
325
- subject: [
326
- fullyQualifiedId2(org)
327
- ],
328
- options: {
329
- workspace: space?.id
330
- }
331
- })), [
332
- dispatch
333
- ]);
334
- return /* @__PURE__ */ React6.createElement(ContactCard, {
335
- role,
336
- subject: data.subject,
337
- activeSpace,
338
- onOrgClick: handleOrgClick
339
- }, role === "card--popover" && /* @__PURE__ */ React6.createElement(Surface, {
340
- role: "related",
341
- data
342
- }));
343
- }
344
- }),
345
- createSurface({
346
- id: `${meta.id}/schema-popover--organization`,
347
- role: [
348
- "card--popover",
349
- "card--intrinsic",
350
- "card--transclusion",
351
- "card--extrinsic",
352
- "card"
353
- ],
354
- filter: (data) => Obj3.instanceOf(DataType2.Organization, data.subject),
355
- component: ({ data, role }) => {
356
- const activeSpace = useActiveSpace();
357
- return /* @__PURE__ */ React6.createElement(OrganizationCard, {
358
- role,
359
- subject: data.subject,
360
- activeSpace
361
- }, role === "card--popover" && /* @__PURE__ */ React6.createElement(Surface, {
362
- role: "related",
363
- data
364
- }));
365
- }
366
- }),
367
- createSurface({
368
- id: `${meta.id}/schema-popover--project`,
369
- role: [
370
- "card--popover",
371
- "card--intrinsic",
372
- "card--transclusion",
373
- "card--extrinsic",
374
- "card"
375
- ],
376
- filter: (data) => Obj3.instanceOf(DataType2.Project, data.subject),
377
- component: ({ data, role }) => {
378
- const activeSpace = useActiveSpace();
379
- return /* @__PURE__ */ React6.createElement(ProjectCard, {
380
- subject: data.subject,
381
- role,
382
- activeSpace
383
- });
384
- }
385
- }),
386
- createSurface({
387
- id: `${meta.id}/schema-popover--task`,
388
- role: [
389
- "card--popover",
390
- "card--intrinsic",
391
- "card--transclusion",
392
- "card--extrinsic",
393
- "card"
394
- ],
395
- filter: (data) => Obj3.instanceOf(DataType2.Task, data.subject),
396
- component: ({ data, role }) => /* @__PURE__ */ React6.createElement(TaskCard, {
397
- subject: data.subject,
398
- role
399
- })
400
- }),
401
- //
402
- // Fallback for any object.
403
- //
404
- createSurface({
405
- id: `${meta.id}/fallback-popover`,
406
- role: [
407
- "card--popover",
408
- "card--intrinsic",
409
- "card--transclusion",
410
- "card--extrinsic",
411
- "card"
412
- ],
413
- position: "fallback",
414
- filter: (data) => Obj3.isObject(data.subject),
415
- component: ({ data, role }) => {
416
- const schema = getSchema(data.subject);
417
- const { t } = useTranslation2(meta.id);
418
- if (!schema) {
419
- return /* @__PURE__ */ React6.createElement("p", {
420
- className: mx5(descriptionMessage)
421
- }, t("unable to create preview message"));
422
- }
423
- const handleSave = useCallback((values, { changed }) => {
424
- const changedPaths = Object.keys(changed).filter((path) => changed[path]);
425
- for (const path of changedPaths) {
426
- const value = values[path];
427
- setValue(data.subject, path, value);
428
- }
429
- }, []);
430
- return /* @__PURE__ */ React6.createElement(Card5.SurfaceRoot, {
431
- role
432
- }, /* @__PURE__ */ React6.createElement(Form, {
433
- schema,
434
- projection: data.projection,
435
- values: data.subject,
436
- readonly: role === "card--popover" ? "static" : false,
437
- onSave: handleSave,
438
- autoSave: true,
439
- ...role === "card--intrinsic" && {
440
- outerSpacing: "blockStart-0"
441
- }
442
- }));
443
- }
444
- })
445
- ]));
446
- export {
447
- react_surface_default as default
448
- };
449
- //# sourceMappingURL=react-surface-4P7UCMK7.mjs.map