@dxos/plugin-preview 0.8.4-main.7ace549 → 0.8.4-main.8baae0fced

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 (128) 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/{browser/chunk-CEWM5LJG.mjs → neutral/chunk-XD3EYTHF.mjs} +7 -3
  13. package/dist/lib/neutral/chunk-XD3EYTHF.mjs.map +7 -0
  14. package/dist/lib/neutral/index.mjs +7 -0
  15. package/dist/lib/neutral/index.mjs.map +7 -0
  16. package/dist/lib/neutral/meta.json +1 -0
  17. package/dist/lib/neutral/meta.mjs +7 -0
  18. package/dist/lib/neutral/meta.mjs.map +7 -0
  19. package/dist/lib/neutral/plugin.mjs +11 -0
  20. package/dist/lib/neutral/plugin.mjs.map +7 -0
  21. package/dist/lib/neutral/preview-popover-MPPEMUIA.mjs +78 -0
  22. package/dist/lib/neutral/preview-popover-MPPEMUIA.mjs.map +7 -0
  23. package/dist/lib/neutral/react-surface-IPTX6ZBX.mjs +418 -0
  24. package/dist/lib/neutral/react-surface-IPTX6ZBX.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/DynamicTypeCard.d.ts +4 -0
  44. package/dist/types/src/cards/DynamicTypeCard.d.ts.map +1 -0
  45. package/dist/types/src/cards/ExpandoCard.d.ts +4 -0
  46. package/dist/types/src/cards/ExpandoCard.d.ts.map +1 -0
  47. package/dist/types/src/cards/FormCard.d.ts +7 -0
  48. package/dist/types/src/cards/FormCard.d.ts.map +1 -0
  49. package/dist/types/src/cards/JsonCard.d.ts +5 -0
  50. package/dist/types/src/cards/JsonCard.d.ts.map +1 -0
  51. package/dist/types/src/cards/OrganizationCard.d.ts +2 -2
  52. package/dist/types/src/cards/OrganizationCard.d.ts.map +1 -1
  53. package/dist/types/src/cards/PersonCard.d.ts +2 -2
  54. package/dist/types/src/cards/PersonCard.d.ts.map +1 -1
  55. package/dist/types/src/cards/ProjectCard.d.ts +3 -3
  56. package/dist/types/src/cards/ProjectCard.d.ts.map +1 -1
  57. package/dist/types/src/cards/TaskCard.d.ts +2 -2
  58. package/dist/types/src/cards/TaskCard.d.ts.map +1 -1
  59. package/dist/types/src/cards/index.d.ts +4 -0
  60. package/dist/types/src/cards/index.d.ts.map +1 -1
  61. package/dist/types/src/index.d.ts +0 -2
  62. package/dist/types/src/index.d.ts.map +1 -1
  63. package/dist/types/src/meta.d.ts +2 -2
  64. package/dist/types/src/meta.d.ts.map +1 -1
  65. package/dist/types/src/plugin.d.ts +3 -0
  66. package/dist/types/src/plugin.d.ts.map +1 -0
  67. package/dist/types/src/stories/Card.stories.d.ts +23 -14
  68. package/dist/types/src/stories/Card.stories.d.ts.map +1 -1
  69. package/dist/types/src/stories/testing.d.ts +15 -12
  70. package/dist/types/src/stories/testing.d.ts.map +1 -1
  71. package/dist/types/src/testing.d.ts +2 -0
  72. package/dist/types/src/testing.d.ts.map +1 -0
  73. package/dist/types/src/translations.d.ts +8 -9
  74. package/dist/types/src/translations.d.ts.map +1 -1
  75. package/dist/types/tsconfig.tsbuildinfo +1 -1
  76. package/package.json +92 -40
  77. package/src/PreviewPlugin.node.ts +16 -0
  78. package/src/PreviewPlugin.test.ts +25 -0
  79. package/src/PreviewPlugin.tsx +16 -25
  80. package/src/PreviewPlugin.workerd.ts +16 -0
  81. package/src/capabilities/index.ts +3 -3
  82. package/src/capabilities/preview-popover.ts +68 -41
  83. package/src/capabilities/react-surface.tsx +138 -143
  84. package/src/cards/DynamicTypeCard.tsx +53 -0
  85. package/src/cards/ExpandoCard.tsx +76 -0
  86. package/src/cards/FormCard.tsx +48 -0
  87. package/src/cards/JsonCard.tsx +19 -0
  88. package/src/cards/OrganizationCard.tsx +11 -16
  89. package/src/cards/PersonCard.tsx +51 -49
  90. package/src/cards/ProjectCard.tsx +9 -11
  91. package/src/cards/TaskCard.tsx +24 -26
  92. package/src/cards/index.ts +4 -0
  93. package/src/index.ts +0 -3
  94. package/src/meta.ts +5 -3
  95. package/src/plugin.ts +9 -0
  96. package/src/stories/Card.stories.tsx +83 -24
  97. package/src/stories/testing.tsx +64 -77
  98. package/src/testing.ts +7 -0
  99. package/src/translations.ts +8 -8
  100. package/dist/lib/browser/chunk-CEWM5LJG.mjs.map +0 -7
  101. package/dist/lib/browser/index.mjs +0 -64
  102. package/dist/lib/browser/index.mjs.map +0 -7
  103. package/dist/lib/browser/meta.json +0 -1
  104. package/dist/lib/browser/preview-popover-4QZ2WDE6.mjs +0 -65
  105. package/dist/lib/browser/preview-popover-4QZ2WDE6.mjs.map +0 -7
  106. package/dist/lib/browser/react-surface-X4KEMECS.mjs +0 -498
  107. package/dist/lib/browser/react-surface-X4KEMECS.mjs.map +0 -7
  108. package/dist/lib/node-esm/chunk-Q5MUNELK.mjs +0 -19
  109. package/dist/lib/node-esm/chunk-Q5MUNELK.mjs.map +0 -7
  110. package/dist/lib/node-esm/index.mjs +0 -65
  111. package/dist/lib/node-esm/index.mjs.map +0 -7
  112. package/dist/lib/node-esm/meta.json +0 -1
  113. package/dist/lib/node-esm/preview-popover-FJ2ARIGS.mjs +0 -67
  114. package/dist/lib/node-esm/preview-popover-FJ2ARIGS.mjs.map +0 -7
  115. package/dist/lib/node-esm/react-surface-DR3UAH6F.mjs +0 -499
  116. package/dist/lib/node-esm/react-surface-DR3UAH6F.mjs.map +0 -7
  117. package/dist/types/src/components/CardComponents.d.ts +0 -16
  118. package/dist/types/src/components/CardComponents.d.ts.map +0 -1
  119. package/dist/types/src/components/CardSubjectMenu.d.ts +0 -8
  120. package/dist/types/src/components/CardSubjectMenu.d.ts.map +0 -1
  121. package/dist/types/src/components/index.d.ts +0 -3
  122. package/dist/types/src/components/index.d.ts.map +0 -1
  123. package/dist/types/src/types.d.ts +0 -12
  124. package/dist/types/src/types.d.ts.map +0 -1
  125. package/src/components/CardComponents.tsx +0 -67
  126. package/src/components/CardSubjectMenu.tsx +0 -103
  127. package/src/components/index.ts +0 -6
  128. package/src/types.ts +0 -25
@@ -1 +0,0 @@
1
- {"inputs":{"src/meta.ts":{"bytes":1677,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/capabilities/preview-popover.ts":{"bytes":8293,"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":10479,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@effect-atom/atom-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-framework/react","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/components/CardComponents.tsx":{"bytes":8374,"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/OrganizationCard.tsx":{"bytes":4009,"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/PersonCard.tsx":{"bytes":8439,"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/ProjectCard.tsx":{"bytes":3350,"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":7022,"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/types","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"}],"format":"esm"},"src/cards/index.ts":{"bytes":765,"imports":[{"path":"src/cards/OrganizationCard.tsx","kind":"import-statement","original":"./OrganizationCard"},{"path":"src/cards/PersonCard.tsx","kind":"import-statement","original":"./PersonCard"},{"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":20772,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/react","kind":"import-statement","external":true},{"path":"@dxos/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/types","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":4712,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/types","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/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3519},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-CEWM5LJG.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/preview-popover-4QZ2WDE6.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/react-surface-X4KEMECS.mjs","kind":"dynamic-import"}],"exports":["PreviewPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/PreviewPlugin.tsx":{"bytesInOutput":965},"src/capabilities/index.ts":{"bytesInOutput":190},"src/translations.ts":{"bytesInOutput":378}},"bytes":1757},"dist/lib/browser/preview-popover-4QZ2WDE6.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4349},"dist/lib/browser/preview-popover-4QZ2WDE6.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":2143},"dist/lib/browser/react-surface-X4KEMECS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":30790},"dist/lib/browser/react-surface-X4KEMECS.mjs":{"imports":[{"path":"dist/lib/browser/chunk-CEWM5LJG.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/react","kind":"import-statement","external":true},{"path":"@dxos/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/types","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/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-atom/atom-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-framework/react","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@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/types","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":5143},"src/cards/OrganizationCard.tsx":{"bytesInOutput":1057},"src/components/CardComponents.tsx":{"bytesInOutput":2664},"src/components/CardSubjectMenu.tsx":{"bytesInOutput":2620},"src/components/index.ts":{"bytesInOutput":0},"src/cards/index.ts":{"bytesInOutput":0},"src/cards/PersonCard.tsx":{"bytesInOutput":2466},"src/cards/ProjectCard.tsx":{"bytesInOutput":876},"src/cards/TaskCard.tsx":{"bytesInOutput":1800}},"bytes":17121},"dist/lib/browser/chunk-CEWM5LJG.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":803},"dist/lib/browser/chunk-CEWM5LJG.mjs":{"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["meta"],"inputs":{"src/meta.ts":{"bytesInOutput":389}},"bytes":468}}}
@@ -1,65 +0,0 @@
1
- // src/capabilities/preview-popover.ts
2
- import { Capabilities, LayoutAction, contributes, createIntent } from "@dxos/app-framework";
3
- import { addEventListener } from "@dxos/async";
4
- import { parseId } from "@dxos/client/echo";
5
- import { DXN } from "@dxos/keys";
6
- import { log } from "@dxos/log";
7
- import { ClientCapabilities } from "@dxos/plugin-client";
8
- import { DX_ANCHOR_ACTIVATE } from "@dxos/react-ui";
9
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-preview/src/capabilities/preview-popover.ts";
10
- var customEventOptions = {
11
- capture: true,
12
- passive: false
13
- };
14
- var handlePreviewLookup = async (client, defaultSpace, { ref, label }) => {
15
- try {
16
- const object = await defaultSpace.db.makeRef(DXN.parse(ref)).load();
17
- return {
18
- label,
19
- object
20
- };
21
- } catch {
22
- return null;
23
- }
24
- };
25
- var preview_popover_default = ((context) => {
26
- const handleAnchorActivate = async ({ refId, label, trigger }) => {
27
- const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
28
- const client = context.getCapability(ClientCapabilities.Client);
29
- const [layout] = context.getCapabilities(Capabilities.Layout);
30
- const { spaceId } = parseId(layout.workspace);
31
- const space = (spaceId && client.spaces.get(spaceId)) ?? client.spaces.default;
32
- const result = await handlePreviewLookup(client, space, {
33
- ref: refId,
34
- label
35
- });
36
- if (!result) {
37
- return;
38
- }
39
- await dispatch(createIntent(LayoutAction.UpdatePopover, {
40
- part: "popover",
41
- subject: result.object,
42
- options: {
43
- state: true,
44
- variant: "virtual",
45
- anchor: trigger
46
- }
47
- }));
48
- };
49
- let cleanup;
50
- if (document.defaultView) {
51
- cleanup = addEventListener(document.defaultView, DX_ANCHOR_ACTIVATE, handleAnchorActivate, customEventOptions);
52
- } else {
53
- log.warn("No default view found", void 0, {
54
- F: __dxlog_file,
55
- L: 65,
56
- S: void 0,
57
- C: (f, a) => f(...a)
58
- });
59
- }
60
- return contributes(Capabilities.Null, null, () => cleanup());
61
- });
62
- export {
63
- preview_popover_default as default
64
- };
65
- //# sourceMappingURL=preview-popover-4QZ2WDE6.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.makeRef(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 handleAnchorActivate = 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 handleAnchorActivate,\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,GAAGC,QAAQd,IAAIe,MAAML,GAAAA,CAAAA,EAAMM,KAAI;AACjE,WAAO;MAAEL;MAAOC;IAAO;EACzB,QAAQ;AACN,WAAO;EACT;AACF;AAEA,IAAA,2BAAe,CAACK,YAAAA;AAEd,QAAMC,uBAAuB,OAAO,EAAEC,OAAOR,OAAOS,QAAO,MAAoB;AAC7E,UAAM,EAAEC,iBAAiBC,SAAQ,IAAKL,QAAQM,cAAc7B,aAAa8B,gBAAgB;AACzF,UAAMhB,SAASS,QAAQM,cAAcrB,mBAAmBuB,MAAM;AAC9D,UAAM,CAACC,MAAAA,IAAUT,QAAQU,gBAAgBjC,aAAakC,MAAM;AAC5D,UAAM,EAAEC,QAAO,IAAK9B,QAAQ2B,OAAOI,SAAS;AAC5C,UAAMC,SAASF,WAAWrB,OAAOwB,OAAOC,IAAIJ,OAAAA,MAAarB,OAAOwB,OAAOE;AACvE,UAAMC,SAAS,MAAM5B,oBAAoBC,QAAQuB,OAAO;MAAErB,KAAKS;MAAOR;IAAM,CAAA;AAC5E,QAAI,CAACwB,QAAQ;AACX;IACF;AAEA,UAAMb,SACJzB,aAAaF,aAAayC,eAAe;MACvCC,MAAM;MACNC,SAASH,OAAOvB;MAChB2B,SAAS;QACPC,OAAO;QACPC,SAAS;QACTC,QAAQtB;MACV;IACF,CAAA,CAAA;EAEJ;AAEA,MAAIuB;AACJ,MAAIC,SAASC,aAAa;AACxBF,cAAU7C,iBACR8C,SAASC,aACT1C,oBACAe,sBACAd,kBAAAA;EAEJ,OAAO;AACLH,QAAI6C,KAAK,yBAAA,QAAA;;;;;;EACX;AAEA,SAAOlD,YAAYF,aAAaqD,MAAM,MAAM,MAAMJ,QAAAA,CAAAA;AACpD;",
6
- "names": ["Capabilities", "LayoutAction", "contributes", "createIntent", "addEventListener", "parseId", "DXN", "log", "ClientCapabilities", "DX_ANCHOR_ACTIVATE", "customEventOptions", "capture", "passive", "handlePreviewLookup", "client", "defaultSpace", "ref", "label", "object", "db", "makeRef", "parse", "load", "context", "handleAnchorActivate", "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,498 +0,0 @@
1
- import {
2
- meta
3
- } from "./chunk-CEWM5LJG.mjs";
4
-
5
- // src/capabilities/react-surface.tsx
6
- import React7, { useCallback } from "react";
7
- import { Capabilities, LayoutAction as LayoutAction2, contributes, createIntent as createIntent2, createSurface } from "@dxos/app-framework";
8
- import { Surface, SurfaceCardRole, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework/react";
9
- import { 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 { Organization, Person, Project, Task as Task2 } from "@dxos/types";
18
-
19
- // src/cards/OrganizationCard.tsx
20
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
21
- import React3 from "react";
22
- import { Card as Card2 } from "@dxos/react-ui-stack";
23
-
24
- // src/components/CardComponents.tsx
25
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
26
- import React2 from "react";
27
- import { Button, Icon } from "@dxos/react-ui";
28
- import { Card, cardNoSpacing, cardSpacing } from "@dxos/react-ui-stack";
29
- import { mx } from "@dxos/react-ui-theme";
30
-
31
- // src/components/CardSubjectMenu.tsx
32
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
33
- import { Atom } from "@effect-atom/atom-react";
34
- import React from "react";
35
- import { LayoutAction, createIntent } from "@dxos/app-framework";
36
- import { useIntentDispatcher } from "@dxos/app-framework/react";
37
- import { ACTION_TYPE } from "@dxos/app-graph";
38
- import { Obj } from "@dxos/echo";
39
- import { SpaceAction } from "@dxos/plugin-space/types";
40
- import { IconButton, useTranslation } from "@dxos/react-ui";
41
- import { DropdownMenu, MenuProvider, useMenuActions } from "@dxos/react-ui-menu";
42
- var CardSubjectMenu = ({ subject, activeSpace, ...props }) => {
43
- var _effect = _useSignals();
44
- try {
45
- const { t } = useTranslation(meta.id);
46
- const menuProps = useSubjectMenuGroupItems({
47
- subject,
48
- activeSpace
49
- });
50
- if (!activeSpace) {
51
- return null;
52
- }
53
- return /* @__PURE__ */ React.createElement(MenuProvider, menuProps, /* @__PURE__ */ React.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React.createElement(DropdownMenu.Trigger, {
54
- asChild: true
55
- }, /* @__PURE__ */ React.createElement(IconButton, {
56
- variant: "ghost",
57
- icon: "ph--dots-three-vertical--bold",
58
- iconOnly: true,
59
- label: t("more options label"),
60
- ...props
61
- }))));
62
- } finally {
63
- _effect.f();
64
- }
65
- };
66
- var useSubjectMenuGroupItems = ({ subject, activeSpace }) => {
67
- const { dispatchPromise: dispatch } = useIntentDispatcher();
68
- const result = {
69
- edges: [],
70
- nodes: []
71
- };
72
- result.nodes.push({
73
- type: ACTION_TYPE,
74
- id: `${subject.id}/open`,
75
- data: () => dispatch(createIntent(LayoutAction.Open, {
76
- part: "main",
77
- subject: [
78
- Obj.getDXN(subject).toString()
79
- ]
80
- })),
81
- properties: {
82
- label: [
83
- "open object label",
84
- {
85
- ns: meta.id
86
- }
87
- ],
88
- icon: "ph--arrow-right--regular"
89
- }
90
- });
91
- if (activeSpace && Obj.getDXN(subject).asQueueDXN()) {
92
- result.nodes.push({
93
- type: ACTION_TYPE,
94
- id: `${subject.id}/add-to-space`,
95
- // TODO(wittjosiah): Update reference to point to db object when adding?
96
- data: () => dispatch(createIntent(SpaceAction.AddObject, {
97
- object: subject,
98
- target: activeSpace,
99
- hidden: true
100
- })),
101
- properties: {
102
- label: [
103
- "add object to space label",
104
- {
105
- ns: meta.id
106
- }
107
- ],
108
- icon: "ph--file-plus--regular"
109
- }
110
- });
111
- }
112
- result.nodes.forEach(({ id: target }) => {
113
- result.edges.push({
114
- source: "root",
115
- target
116
- });
117
- });
118
- return useMenuActions(Atom.make(result));
119
- };
120
-
121
- // src/components/CardComponents.tsx
122
- var gridRow = "is-full grid grid-cols-[1.5rem_1fr_min-content] gap-2 items-center";
123
- var CardHeader = ({ label, subject, activeSpace }) => {
124
- var _effect = _useSignals2();
125
- try {
126
- return /* @__PURE__ */ React2.createElement("div", {
127
- role: "none",
128
- className: mx("flex items-center gap-2", cardSpacing)
129
- }, /* @__PURE__ */ React2.createElement(Card.Heading, {
130
- classNames: cardNoSpacing
131
- }, label), /* @__PURE__ */ React2.createElement(CardSubjectMenu, {
132
- subject,
133
- activeSpace
134
- }));
135
- } finally {
136
- _effect.f();
137
- }
138
- };
139
- var CardRow = ({ icon, label, onClick }) => {
140
- var _effect = _useSignals2();
141
- try {
142
- if (!onClick) {
143
- return /* @__PURE__ */ React2.createElement(Card.Chrome, null, /* @__PURE__ */ React2.createElement("p", {
144
- "data-variant": "ghost",
145
- className: mx(gridRow, "dx-button")
146
- }, /* @__PURE__ */ React2.createElement(Icon, {
147
- icon,
148
- size: 5,
149
- classNames: "text-subdued"
150
- }), /* @__PURE__ */ React2.createElement("span", {
151
- className: "min-is-0 flex-1 truncate col-span-2"
152
- }, label)));
153
- }
154
- return /* @__PURE__ */ React2.createElement(Card.Chrome, null, /* @__PURE__ */ React2.createElement(Button, {
155
- variant: "ghost",
156
- classNames: mx(gridRow, "text-start"),
157
- onClick
158
- }, /* @__PURE__ */ React2.createElement(Icon, {
159
- icon,
160
- size: 5,
161
- classNames: "text-subdued"
162
- }), /* @__PURE__ */ React2.createElement("span", {
163
- className: "min-is-0 flex-1 truncate"
164
- }, label), /* @__PURE__ */ React2.createElement(Icon, {
165
- icon: "ph--arrow-right--regular"
166
- })));
167
- } finally {
168
- _effect.f();
169
- }
170
- };
171
- var CardLink = ({ label, href }) => {
172
- var _effect = _useSignals2();
173
- try {
174
- return /* @__PURE__ */ React2.createElement(Card.Chrome, null, /* @__PURE__ */ React2.createElement("a", {
175
- className: mx(gridRow, "dx-button dx-focus-ring"),
176
- "data-variant": "ghost",
177
- href,
178
- target: "_blank",
179
- rel: "noreferrer"
180
- }, /* @__PURE__ */ React2.createElement(Icon, {
181
- icon: "ph--link--regular",
182
- size: 5,
183
- classNames: "text-subdued"
184
- }), /* @__PURE__ */ React2.createElement("span", {
185
- className: "min-is-0 flex-1 truncate"
186
- }, label), /* @__PURE__ */ React2.createElement(Icon, {
187
- icon: "ph--arrow-square-out--regular"
188
- })));
189
- } finally {
190
- _effect.f();
191
- }
192
- };
193
-
194
- // src/cards/OrganizationCard.tsx
195
- var OrganizationCard = ({ children, subject, role, activeSpace }) => {
196
- var _effect = _useSignals3();
197
- try {
198
- const { name, image, description, website } = subject;
199
- return /* @__PURE__ */ React3.createElement(Card2.SurfaceRoot, {
200
- id: subject.id,
201
- role
202
- }, /* @__PURE__ */ React3.createElement(Card2.Poster, {
203
- alt: name ?? "",
204
- ...image ? {
205
- image
206
- } : {
207
- icon: "ph--building-office--regular"
208
- },
209
- classNames: !image && "opacity-50"
210
- }), /* @__PURE__ */ React3.createElement(CardHeader, {
211
- label: name,
212
- subject,
213
- activeSpace
214
- }), description && /* @__PURE__ */ React3.createElement(Card2.Text, {
215
- classNames: "line-clamp-2"
216
- }, description), website && /* @__PURE__ */ React3.createElement(CardLink, {
217
- label: website,
218
- href: website
219
- }), children);
220
- } finally {
221
- _effect.f();
222
- }
223
- };
224
-
225
- // src/cards/PersonCard.tsx
226
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
227
- import React4, { Fragment } from "react";
228
- import { Avatar, Icon as Icon2 } from "@dxos/react-ui";
229
- import { Card as Card3, cardHeading, cardText } from "@dxos/react-ui-stack";
230
- import { mx as mx2 } from "@dxos/react-ui-theme";
231
- var PersonCard = ({ children, role, subject, activeSpace, onSelect }) => {
232
- var _effect = _useSignals4();
233
- try {
234
- const { fullName, image, organization: { target: organization } = {}, emails = [] } = subject;
235
- return /* @__PURE__ */ React4.createElement(Card3.SurfaceRoot, {
236
- id: subject.id,
237
- role
238
- }, /* @__PURE__ */ React4.createElement(Avatar.Root, null, /* @__PURE__ */ React4.createElement(Card3.Text, {
239
- role: "group",
240
- classNames: mx2("grid gap-2 grid-cols-[1fr_min-content]")
241
- }, /* @__PURE__ */ React4.createElement("div", {
242
- role: "none",
243
- className: mx2(gridRow, "grid-rows-2")
244
- }, activeSpace ? /* @__PURE__ */ React4.createElement(CardSubjectMenu, {
245
- subject,
246
- activeSpace
247
- }) : /* @__PURE__ */ React4.createElement("div", null), /* @__PURE__ */ React4.createElement(Avatar.Label, {
248
- asChild: true
249
- }, /* @__PURE__ */ React4.createElement("h2", {
250
- className: mx2(cardHeading, "grow truncate")
251
- }, fullName))), /* @__PURE__ */ React4.createElement(Avatar.Content, {
252
- imgSrc: image,
253
- icon: "ph--user--regular",
254
- size: 16,
255
- classNames: [
256
- "text-subdued",
257
- !image && "opacity-50"
258
- ],
259
- hue: "neutral",
260
- variant: "square"
261
- }))), organization?.name && /* @__PURE__ */ React4.createElement(CardRow, {
262
- icon: "ph--buildings--regular",
263
- label: organization.name,
264
- onClick: onSelect ? () => onSelect(organization) : void 0
265
- }), emails.length > 0 && /* @__PURE__ */ React4.createElement("dl", {
266
- className: mx2(cardText, gridRow, "[&_dt]:text-subdued [&_dt]:pbs-0.5 [&_dd]:min-is-0")
267
- }, emails.map(({ label, value }) => /* @__PURE__ */ React4.createElement(Fragment, {
268
- key: value
269
- }, /* @__PURE__ */ React4.createElement("dt", null, /* @__PURE__ */ React4.createElement("span", {
270
- className: "sr-only"
271
- }, label), /* @__PURE__ */ React4.createElement(Icon2, {
272
- icon: "ph--at--regular",
273
- size: 5
274
- })), /* @__PURE__ */ React4.createElement("dd", {
275
- key: value,
276
- className: "col-span-2 break-words"
277
- }, value)))), children);
278
- } finally {
279
- _effect.f();
280
- }
281
- };
282
-
283
- // src/cards/ProjectCard.tsx
284
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
285
- import React5 from "react";
286
- import { Obj as Obj2 } from "@dxos/echo";
287
- import { Card as Card4 } from "@dxos/react-ui-stack";
288
- var ProjectCard = ({ subject, role, activeSpace }) => {
289
- var _effect = _useSignals5();
290
- try {
291
- const { name, image, description } = subject;
292
- return /* @__PURE__ */ React5.createElement(Card4.SurfaceRoot, {
293
- id: subject.id,
294
- role
295
- }, image && /* @__PURE__ */ React5.createElement(Card4.Poster, {
296
- image,
297
- alt: Obj2.getLabel(subject) ?? "",
298
- aspect: "auto"
299
- }), /* @__PURE__ */ React5.createElement(CardHeader, {
300
- label: name,
301
- subject,
302
- activeSpace
303
- }), description && /* @__PURE__ */ React5.createElement(Card4.Text, {
304
- classNames: "line-clamp-2"
305
- }, description));
306
- } finally {
307
- _effect.f();
308
- }
309
- };
310
-
311
- // src/cards/TaskCard.tsx
312
- import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
313
- import * as SchemaAST from "effect/SchemaAST";
314
- import React6 from "react";
315
- import { PropertyMetaAnnotationId } from "@dxos/echo/internal";
316
- import { Card as Card5, cardNoSpacing as cardNoSpacing2, cardSpacing as cardSpacing2 } from "@dxos/react-ui-stack";
317
- import { mx as mx3 } from "@dxos/react-ui-theme";
318
- import { Task } from "@dxos/types";
319
- var getActiveStatusOption = (status) => {
320
- const properties = SchemaAST.getPropertySignatures(Task.Task.ast);
321
- const statusProperty = properties.find((p) => p.name === "status");
322
- const statusMeta = SchemaAST.getAnnotation(PropertyMetaAnnotationId)(
323
- // TODO(thure): Typescript asserts `.type` doesn’t have `.types`, but in runtime it does.
324
- statusProperty.type.types[0]
325
- );
326
- const options = statusMeta.value.singleSelect.options;
327
- return options.find(({ id }) => id === status);
328
- };
329
- var TaskCard = ({ subject, role, activeSpace }) => {
330
- var _effect = _useSignals6();
331
- try {
332
- const { title, status } = subject;
333
- const statusOption = getActiveStatusOption(status);
334
- return /* @__PURE__ */ React6.createElement(Card5.SurfaceRoot, {
335
- id: subject.id,
336
- role
337
- }, /* @__PURE__ */ React6.createElement("div", {
338
- role: "none",
339
- className: mx3("flex items-center gap-2", cardSpacing2)
340
- }, /* @__PURE__ */ React6.createElement(Card5.Heading, {
341
- classNames: [
342
- cardNoSpacing2,
343
- "min-is-0 flex-1 truncate"
344
- ]
345
- }, title), statusOption && /* @__PURE__ */ React6.createElement("span", {
346
- className: "dx-tag",
347
- "data-hue": statusOption.color
348
- }, statusOption.title), /* @__PURE__ */ React6.createElement(CardSubjectMenu, {
349
- subject,
350
- activeSpace
351
- })));
352
- } finally {
353
- _effect.f();
354
- }
355
- };
356
-
357
- // src/capabilities/react-surface.tsx
358
- var react_surface_default = (() => contributes(Capabilities.ReactSurface, [
359
- //
360
- // Specific schema types.
361
- // TODO(burdon): Create helpers and factor out.
362
- //
363
- // TODO(burdon): Infer Role type.
364
- createSurface({
365
- id: `${meta.id}/schema-popover--contact`,
366
- role: SurfaceCardRole.literals,
367
- filter: (data) => Obj3.instanceOf(Person.Person, data.subject),
368
- component: ({ data, role }) => {
369
- const { dispatchPromise: dispatch } = useIntentDispatcher2();
370
- const space = getSpace(data.subject);
371
- const activeSpace = useActiveSpace();
372
- const handleSelect = useCallback((object) => dispatch(createIntent2(LayoutAction2.Open, {
373
- part: "main",
374
- subject: [
375
- Obj3.getDXN(object).toString()
376
- ],
377
- options: {
378
- workspace: space?.id
379
- }
380
- })), [
381
- dispatch
382
- ]);
383
- return /* @__PURE__ */ React7.createElement(PersonCard, {
384
- role,
385
- subject: data.subject,
386
- activeSpace,
387
- onSelect: handleSelect
388
- }, role === "card--popover" && /* @__PURE__ */ React7.createElement(Surface, {
389
- role: "related",
390
- data
391
- }));
392
- }
393
- }),
394
- createSurface({
395
- id: `${meta.id}/schema-popover--organization`,
396
- role: SurfaceCardRole.literals,
397
- filter: (data) => Obj3.instanceOf(Organization.Organization, data.subject),
398
- component: ({ data, role }) => {
399
- const activeSpace = useActiveSpace();
400
- return /* @__PURE__ */ React7.createElement(OrganizationCard, {
401
- role,
402
- subject: data.subject,
403
- activeSpace
404
- }, role === "card--popover" && /* @__PURE__ */ React7.createElement(Surface, {
405
- role: "related",
406
- data
407
- }));
408
- }
409
- }),
410
- createSurface({
411
- id: `${meta.id}/schema-popover--project`,
412
- role: SurfaceCardRole.literals,
413
- filter: (data) => Obj3.instanceOf(Project.Project, data.subject),
414
- component: ({ data, role }) => {
415
- const activeSpace = useActiveSpace();
416
- return /* @__PURE__ */ React7.createElement(ProjectCard, {
417
- subject: data.subject,
418
- role,
419
- activeSpace
420
- });
421
- }
422
- }),
423
- createSurface({
424
- id: `${meta.id}/schema-popover--task`,
425
- role: SurfaceCardRole.literals,
426
- filter: (data) => Obj3.instanceOf(Task2.Task, data.subject),
427
- component: ({ data, role }) => {
428
- return /* @__PURE__ */ React7.createElement(TaskCard, {
429
- subject: data.subject,
430
- role
431
- });
432
- }
433
- }),
434
- //
435
- // Fallback for any object.
436
- //
437
- createSurface({
438
- id: `${meta.id}/fallback-popover`,
439
- role: SurfaceCardRole.literals,
440
- position: "fallback",
441
- filter: (data) => Obj3.isObject(data.subject),
442
- component: ({ data, role }) => {
443
- const schema = Obj3.getSchema(data.subject);
444
- const { t } = useTranslation2(meta.id);
445
- if (!schema) {
446
- return /* @__PURE__ */ React7.createElement("p", {
447
- className: mx4(descriptionMessage)
448
- }, t("unable to create preview message"));
449
- }
450
- const handleSave = useCallback((values, { changed }) => {
451
- const changedPaths = Object.keys(changed).filter((path) => changed[path]);
452
- for (const path of changedPaths) {
453
- const value = values[path];
454
- setValue(data.subject, path, value);
455
- }
456
- }, []);
457
- return /* @__PURE__ */ React7.createElement(Card6.SurfaceRoot, {
458
- role
459
- }, /* @__PURE__ */ React7.createElement(Form, {
460
- id: data.subject.id,
461
- schema,
462
- projection: data.projection,
463
- values: data.subject,
464
- readonly: role === "card--popover" ? "static" : false,
465
- onSave: handleSave,
466
- autoSave: true,
467
- ...role === "card--intrinsic" && {
468
- outerSpacing: "blockStart-0"
469
- }
470
- }));
471
- }
472
- }),
473
- createSurface({
474
- id: `${meta.id}/section`,
475
- role: [
476
- "section"
477
- ],
478
- position: "fallback",
479
- filter: (data) => Obj3.isObject(data.subject),
480
- component: ({ data }) => {
481
- return /* @__PURE__ */ React7.createElement("div", {
482
- role: "none",
483
- className: "flex is-full justify-center"
484
- }, /* @__PURE__ */ React7.createElement("div", {
485
- role: "none",
486
- className: "pbs-2 pbe-2 card-min-width card-max-width"
487
- }, /* @__PURE__ */ React7.createElement(Surface, {
488
- role: "card",
489
- data,
490
- limit: 1
491
- })));
492
- }
493
- })
494
- ]));
495
- export {
496
- react_surface_default as default
497
- };
498
- //# sourceMappingURL=react-surface-X4KEMECS.mjs.map