@dxos/plugin-explorer 0.10.0 → 0.11.1

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 (105) hide show
  1. package/dist/lib/ExplorerPlugin.mjs +2 -0
  2. package/dist/lib/capabilities.mjs +9 -0
  3. package/dist/lib/capabilities.mjs.map +1 -0
  4. package/dist/lib/chunk-ExplorerArticle.mjs +90 -0
  5. package/dist/lib/chunk-ExplorerArticle.mjs.map +1 -0
  6. package/dist/lib/chunk-ExplorerPlugin.mjs +18 -0
  7. package/dist/lib/chunk-ExplorerPlugin.mjs.map +1 -0
  8. package/dist/lib/chunk-NeighborhoodCompanion.mjs +83 -0
  9. package/dist/lib/chunk-NeighborhoodCompanion.mjs.map +1 -0
  10. package/dist/lib/chunk-app-graph-builder.mjs +29 -0
  11. package/dist/lib/chunk-app-graph-builder.mjs.map +1 -0
  12. package/dist/lib/chunk-create-object.mjs +35 -0
  13. package/dist/lib/chunk-create-object.mjs.map +1 -0
  14. package/dist/lib/{neutral/chunk-C56B464A.mjs → chunk-meta.mjs} +20 -28
  15. package/dist/lib/chunk-meta.mjs.map +1 -0
  16. package/dist/lib/chunk-react-surface.mjs +29 -0
  17. package/dist/lib/chunk-react-surface.mjs.map +1 -0
  18. package/dist/lib/chunk-types.mjs +60 -0
  19. package/dist/lib/chunk-types.mjs.map +1 -0
  20. package/dist/lib/chunk-types2.mjs +231 -0
  21. package/dist/lib/chunk-types2.mjs.map +1 -0
  22. package/dist/lib/components.mjs +12314 -0
  23. package/dist/lib/components.mjs.map +1 -0
  24. package/dist/lib/containers.mjs +8 -0
  25. package/dist/lib/containers.mjs.map +1 -0
  26. package/dist/lib/hooks.mjs +101 -0
  27. package/dist/lib/hooks.mjs.map +1 -0
  28. package/dist/lib/index.mjs +3 -0
  29. package/dist/lib/meta.mjs +2 -0
  30. package/dist/lib/plugin.mjs +8 -0
  31. package/dist/lib/plugin.mjs.map +1 -0
  32. package/dist/lib/testing.mjs +118 -0
  33. package/dist/lib/testing.mjs.map +1 -0
  34. package/dist/lib/translations.mjs +29 -0
  35. package/dist/lib/translations.mjs.map +1 -0
  36. package/dist/lib/types.mjs +2 -0
  37. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  38. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  39. package/dist/types/src/capabilities/create-object.d.ts +1 -1
  40. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  41. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  42. package/dist/types/src/components/Graph/CanvasForceGraph.d.ts +1 -1
  43. package/dist/types/src/components/Graph/CanvasForceGraph.d.ts.map +1 -1
  44. package/dist/types/src/components/Graph/CanvasForceGraph.stories.d.ts +1 -1
  45. package/dist/types/src/components/Graph/ForceGraph.d.ts +1 -1
  46. package/dist/types/src/components/Graph/ForceGraph.d.ts.map +1 -1
  47. package/dist/types/src/components/Graph/ForceGraph.stories.d.ts +1 -1
  48. package/dist/types/src/components/Visualization/Visualization.d.ts +1 -1
  49. package/dist/types/src/containers/ExplorerArticle/ExplorerArticle.d.ts +4 -1
  50. package/dist/types/src/containers/ExplorerArticle/ExplorerArticle.d.ts.map +1 -1
  51. package/dist/types/src/containers/ExplorerArticle/ExplorerArticle.stories.d.ts.map +1 -1
  52. package/dist/types/src/containers/NeighborhoodCompanion/NeighborhoodCompanion.d.ts +4 -5
  53. package/dist/types/src/containers/NeighborhoodCompanion/NeighborhoodCompanion.d.ts.map +1 -1
  54. package/dist/types/src/types/Graph.d.ts +1 -1
  55. package/dist/types/tsconfig.tsbuildinfo +1 -1
  56. package/dx.config.ts +1 -0
  57. package/package.json +49 -47
  58. package/src/capabilities/app-graph-builder.ts +1 -2
  59. package/src/capabilities/{react-surface.tsx → react-surface.ts} +4 -7
  60. package/src/components/Visualization/Visualization.stories.tsx +2 -2
  61. package/src/containers/ExplorerArticle/ExplorerArticle.stories.tsx +2 -1
  62. package/src/containers/ExplorerArticle/ExplorerArticle.tsx +5 -3
  63. package/src/containers/NeighborhoodCompanion/NeighborhoodCompanion.tsx +5 -3
  64. package/dist/lib/neutral/ExplorerArticle-2WPXYTXV.mjs +0 -101
  65. package/dist/lib/neutral/ExplorerArticle-2WPXYTXV.mjs.map +0 -7
  66. package/dist/lib/neutral/ExplorerPlugin.mjs +0 -10
  67. package/dist/lib/neutral/ExplorerPlugin.mjs.map +0 -7
  68. package/dist/lib/neutral/NeighborhoodCompanion-WC6E3YE6.mjs +0 -90
  69. package/dist/lib/neutral/NeighborhoodCompanion-WC6E3YE6.mjs.map +0 -7
  70. package/dist/lib/neutral/app-graph-builder-L2TJ6GNR.mjs +0 -37
  71. package/dist/lib/neutral/app-graph-builder-L2TJ6GNR.mjs.map +0 -7
  72. package/dist/lib/neutral/capabilities/index.mjs +0 -13
  73. package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
  74. package/dist/lib/neutral/chunk-4F6AT7RA.mjs +0 -39
  75. package/dist/lib/neutral/chunk-4F6AT7RA.mjs.map +0 -7
  76. package/dist/lib/neutral/chunk-C56B464A.mjs.map +0 -7
  77. package/dist/lib/neutral/chunk-EZ52JY7X.mjs +0 -290
  78. package/dist/lib/neutral/chunk-EZ52JY7X.mjs.map +0 -7
  79. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
  80. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
  81. package/dist/lib/neutral/chunk-TTFPTHAQ.mjs +0 -69
  82. package/dist/lib/neutral/chunk-TTFPTHAQ.mjs.map +0 -7
  83. package/dist/lib/neutral/components/index.mjs +0 -11591
  84. package/dist/lib/neutral/components/index.mjs.map +0 -7
  85. package/dist/lib/neutral/containers/index.mjs +0 -11
  86. package/dist/lib/neutral/containers/index.mjs.map +0 -7
  87. package/dist/lib/neutral/create-object-WKIN3OB6.mjs +0 -38
  88. package/dist/lib/neutral/create-object-WKIN3OB6.mjs.map +0 -7
  89. package/dist/lib/neutral/hooks/index.mjs +0 -108
  90. package/dist/lib/neutral/hooks/index.mjs.map +0 -7
  91. package/dist/lib/neutral/index.mjs +0 -14
  92. package/dist/lib/neutral/index.mjs.map +0 -7
  93. package/dist/lib/neutral/meta.json +0 -1
  94. package/dist/lib/neutral/meta.mjs +0 -8
  95. package/dist/lib/neutral/meta.mjs.map +0 -7
  96. package/dist/lib/neutral/plugin.mjs +0 -12
  97. package/dist/lib/neutral/plugin.mjs.map +0 -7
  98. package/dist/lib/neutral/react-surface-EWPG5PUQ.mjs +0 -39
  99. package/dist/lib/neutral/react-surface-EWPG5PUQ.mjs.map +0 -7
  100. package/dist/lib/neutral/testing/index.mjs +0 -139
  101. package/dist/lib/neutral/testing/index.mjs.map +0 -7
  102. package/dist/lib/neutral/translations.mjs +0 -36
  103. package/dist/lib/neutral/translations.mjs.map +0 -7
  104. package/dist/lib/neutral/types/index.mjs +0 -10
  105. package/dist/lib/neutral/types/index.mjs.map +0 -7
package/dx.config.ts CHANGED
@@ -35,5 +35,6 @@ export default Config2.make({
35
35
  icon: { key: 'ph--graph--regular', hue: 'green' },
36
36
  spec: 'PLUGIN.mdl',
37
37
  screenshots: [{ dark: 'https://dxos.network/plugin-details-explorer-dark.png' }],
38
+ tags: ['alpha'],
38
39
  },
39
40
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-explorer",
3
- "version": "0.10.0",
3
+ "version": "0.11.1",
4
4
  "description": "Braneframe data visualization plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -16,75 +16,75 @@
16
16
  "#capabilities": {
17
17
  "source": "./src/capabilities/index.ts",
18
18
  "types": "./dist/types/src/capabilities/index.d.ts",
19
- "default": "./dist/lib/neutral/capabilities/index.mjs"
19
+ "default": "./dist/lib/capabilities.mjs"
20
20
  },
21
21
  "#components": {
22
22
  "source": "./src/components/index.ts",
23
23
  "types": "./dist/types/src/components/index.d.ts",
24
- "default": "./dist/lib/neutral/components/index.mjs"
24
+ "default": "./dist/lib/components.mjs"
25
25
  },
26
26
  "#containers": {
27
27
  "source": "./src/containers/index.ts",
28
28
  "types": "./dist/types/src/containers/index.d.ts",
29
- "default": "./dist/lib/neutral/containers/index.mjs"
29
+ "default": "./dist/lib/containers.mjs"
30
30
  },
31
31
  "#hooks": {
32
32
  "source": "./src/hooks/index.ts",
33
33
  "types": "./dist/types/src/hooks/index.d.ts",
34
- "default": "./dist/lib/neutral/hooks/index.mjs"
34
+ "default": "./dist/lib/hooks.mjs"
35
35
  },
36
36
  "#meta": {
37
37
  "source": "./src/meta.ts",
38
38
  "types": "./dist/types/src/meta.d.ts",
39
- "default": "./dist/lib/neutral/meta.mjs"
39
+ "default": "./dist/lib/meta.mjs"
40
40
  },
41
41
  "#plugin": {
42
42
  "source": "./src/ExplorerPlugin.tsx",
43
43
  "types": "./dist/types/src/ExplorerPlugin.d.ts",
44
- "default": "./dist/lib/neutral/ExplorerPlugin.mjs"
44
+ "default": "./dist/lib/ExplorerPlugin.mjs"
45
45
  },
46
46
  "#translations": {
47
47
  "source": "./src/translations.ts",
48
48
  "types": "./dist/types/src/translations.d.ts",
49
- "default": "./dist/lib/neutral/translations.mjs"
49
+ "default": "./dist/lib/translations.mjs"
50
50
  },
51
51
  "#types": {
52
52
  "source": "./src/types/index.ts",
53
53
  "types": "./dist/types/src/types/index.d.ts",
54
- "default": "./dist/lib/neutral/types/index.mjs"
54
+ "default": "./dist/lib/types.mjs"
55
55
  }
56
56
  },
57
57
  "exports": {
58
58
  ".": {
59
59
  "source": "./src/index.ts",
60
60
  "types": "./dist/types/src/index.d.ts",
61
- "default": "./dist/lib/neutral/index.mjs"
61
+ "import": "./dist/lib/index.mjs"
62
62
  },
63
63
  "./assets/PLUGIN.mdl": "./PLUGIN.mdl",
64
64
  "./components": {
65
65
  "source": "./src/components/index.ts",
66
66
  "types": "./dist/types/src/components/index.d.ts",
67
- "default": "./dist/lib/neutral/components/index.mjs"
67
+ "import": "./dist/lib/components.mjs"
68
68
  },
69
69
  "./hooks": {
70
70
  "source": "./src/hooks/index.ts",
71
71
  "types": "./dist/types/src/hooks/index.d.ts",
72
- "default": "./dist/lib/neutral/hooks/index.mjs"
72
+ "import": "./dist/lib/hooks.mjs"
73
73
  },
74
74
  "./plugin": {
75
75
  "source": "./src/plugin.ts",
76
76
  "types": "./dist/types/src/plugin.d.ts",
77
- "default": "./dist/lib/neutral/plugin.mjs"
77
+ "import": "./dist/lib/plugin.mjs"
78
78
  },
79
79
  "./testing": {
80
80
  "source": "./src/testing/index.ts",
81
81
  "types": "./dist/types/src/testing/index.d.ts",
82
- "default": "./dist/lib/neutral/testing/index.mjs"
82
+ "import": "./dist/lib/testing.mjs"
83
83
  },
84
84
  "./translations": {
85
85
  "source": "./src/translations.ts",
86
86
  "types": "./dist/types/src/translations.d.ts",
87
- "default": "./dist/lib/neutral/translations.mjs"
87
+ "import": "./dist/lib/translations.mjs"
88
88
  }
89
89
  },
90
90
  "types": "dist/types/src/index.d.ts",
@@ -95,6 +95,7 @@
95
95
  "PLUGIN.mdl"
96
96
  ],
97
97
  "dependencies": {
98
+ "@effect-atom/atom": "^0.5.3",
98
99
  "@effect-atom/atom-react": "^0.5.0",
99
100
  "@observablehq/plot": "^0.6.11",
100
101
  "@radix-ui/react-context": "1.1.1",
@@ -104,28 +105,29 @@
104
105
  "force-graph": "^1.49.4",
105
106
  "react-resize-detector": "^11.0.1",
106
107
  "topojson-client": "^3.1.0",
107
- "@dxos/app-toolkit": "0.10.0",
108
- "@dxos/compute": "0.10.0",
109
- "@dxos/echo": "0.10.0",
110
- "@dxos/echo-query": "0.10.0",
111
- "@dxos/graph": "0.10.0",
112
- "@dxos/invariant": "0.10.0",
113
- "@dxos/keys": "0.10.0",
114
- "@dxos/app-framework": "0.10.0",
115
- "@dxos/log": "0.10.0",
116
- "@dxos/plugin-client": "0.10.0",
117
- "@dxos/plugin-graph": "0.10.0",
118
- "@dxos/plugin-space": "0.10.0",
119
- "@dxos/react-client": "0.10.0",
120
- "@dxos/react-ui-attention": "0.10.0",
121
- "@dxos/react-ui-graph": "0.10.0",
122
- "@dxos/react-ui-components": "0.10.0",
123
- "@dxos/react-ui-mosaic": "0.10.0",
124
- "@dxos/types": "0.10.0",
125
- "@dxos/ui-types": "0.10.0",
126
- "@dxos/schema": "0.10.0",
127
- "@dxos/client": "0.10.0",
128
- "@dxos/util": "0.10.0"
108
+ "@dxos/app-toolkit": "0.11.1",
109
+ "@dxos/client": "0.11.1",
110
+ "@dxos/compute": "0.11.1",
111
+ "@dxos/echo": "0.11.1",
112
+ "@dxos/echo-query": "0.11.1",
113
+ "@dxos/echo-react": "0.11.1",
114
+ "@dxos/graph": "0.11.1",
115
+ "@dxos/keys": "0.11.1",
116
+ "@dxos/invariant": "0.11.1",
117
+ "@dxos/log": "0.11.1",
118
+ "@dxos/plugin-client": "0.11.1",
119
+ "@dxos/plugin-graph": "0.11.1",
120
+ "@dxos/react-client": "0.11.1",
121
+ "@dxos/plugin-space": "0.11.1",
122
+ "@dxos/react-ui-attention": "0.11.1",
123
+ "@dxos/react-ui-components": "0.11.1",
124
+ "@dxos/react-ui-graph": "0.11.1",
125
+ "@dxos/react-ui-mosaic": "0.11.1",
126
+ "@dxos/schema": "0.11.1",
127
+ "@dxos/ui-types": "0.11.1",
128
+ "@dxos/types": "0.11.1",
129
+ "@dxos/util": "0.11.1",
130
+ "@dxos/app-framework": "0.11.1"
129
131
  },
130
132
  "devDependencies": {
131
133
  "@types/d3": "^7.4.3",
@@ -137,21 +139,21 @@
137
139
  "@types/topojson-specification": "^1.0.5",
138
140
  "react": "~19.2.7",
139
141
  "react-dom": "~19.2.7",
140
- "vite": "^8.0.16",
141
- "@dxos/echo-generator": "0.10.0",
142
- "@dxos/plugin-preview": "0.10.0",
143
- "@dxos/plugin-testing": "0.10.0",
144
- "@dxos/random": "0.10.0",
145
- "@dxos/react-ui": "0.10.0",
146
- "@dxos/ui-theme": "0.10.0",
147
- "@dxos/storybook-utils": "0.10.0"
142
+ "vite": "^8.1.4",
143
+ "@dxos/plugin-preview": "0.11.1",
144
+ "@dxos/echo-generator": "0.11.1",
145
+ "@dxos/plugin-testing": "0.11.1",
146
+ "@dxos/random": "0.11.1",
147
+ "@dxos/react-ui": "0.11.1",
148
+ "@dxos/storybook-utils": "0.11.1",
149
+ "@dxos/ui-theme": "0.11.1"
148
150
  },
149
151
  "peerDependencies": {
150
152
  "effect": "3.21.4",
151
153
  "react": "~19.2.7",
152
154
  "react-dom": "~19.2.7",
153
- "@dxos/react-ui": "0.10.0",
154
- "@dxos/ui-theme": "0.10.0"
155
+ "@dxos/ui-theme": "^0.11.1",
156
+ "@dxos/react-ui": "^0.11.1"
155
157
  },
156
158
  "publishConfig": {
157
159
  "access": "public"
@@ -7,7 +7,6 @@ import * as Effect from 'effect/Effect';
7
7
  import { Capability } from '@dxos/app-framework';
8
8
  import { AppCapabilities, AppNode } from '@dxos/app-toolkit';
9
9
  import { GraphBuilder, NodeMatcher } from '@dxos/plugin-graph';
10
- import { linkedSegment } from '@dxos/react-ui-attention';
11
10
  import { Position } from '@dxos/util';
12
11
 
13
12
  import { meta } from '#meta';
@@ -25,7 +24,7 @@ export default Capability.makeModule(
25
24
  connector: () =>
26
25
  Effect.succeed([
27
26
  AppNode.makeCompanion({
28
- id: linkedSegment('neighborhood'),
27
+ variant: 'neighborhood',
29
28
  label: ['neighborhood-companion.label', { ns: meta.profile.key }],
30
29
  icon: 'ph--share-network--regular',
31
30
  data: 'neighborhood',
@@ -3,7 +3,6 @@
3
3
  //
4
4
 
5
5
  import * as Effect from 'effect/Effect';
6
- import React from 'react';
7
6
 
8
7
  import { Capabilities, Capability } from '@dxos/app-framework';
9
8
  import { Surface } from '@dxos/app-framework/ui';
@@ -22,9 +21,8 @@ export default Capability.makeModule(() =>
22
21
  AppSurface.object(AppSurface.Article, Graph.Graph),
23
22
  AppSurface.object(AppSurface.Section, Graph.Graph),
24
23
  ),
25
- component: ({ data, role }) => {
26
- return <ExplorerArticle role={role} subject={data.subject} attendableId={data.attendableId} />;
27
- },
24
+ component: ExplorerArticle,
25
+ props: ({ role, data: { subject, attendableId } }) => ({ role, subject, attendableId }),
28
26
  }),
29
27
  // Neighborhood companion offered on any ECHO object; `companionTo` is the active node.
30
28
  Surface.create({
@@ -33,9 +31,8 @@ export default Capability.makeModule(() =>
33
31
  AppSurface.literal(AppSurface.Article, 'neighborhood'),
34
32
  AppSurface.companion(AppSurface.Article),
35
33
  ),
36
- component: ({ data, role }) => {
37
- return <NeighborhoodCompanion role={role} subject={data.companionTo} />;
38
- },
34
+ component: NeighborhoodCompanion,
35
+ props: ({ role, data: { companionTo } }) => ({ role, subject: companionTo }),
39
36
  }),
40
37
  ]),
41
38
  ),
@@ -2,7 +2,7 @@
2
2
  // Copyright 2026 DXOS.org
3
3
  //
4
4
 
5
- import { Registry } from '@effect-atom/atom-react';
5
+ import { Registry } from '@effect-atom/atom';
6
6
  import { type Meta, type StoryObj } from '@storybook/react-vite';
7
7
  import React, { useMemo } from 'react';
8
8
 
@@ -82,7 +82,7 @@ type StoryArgs = { variant: VisualizationVariantId; focus?: string };
82
82
  const DefaultStory = ({ variant, focus }: StoryArgs) => {
83
83
  const model = useMemo(() => new SpaceGraphModel(Registry.make(), { nodes: NODES, edges: EDGES }), []);
84
84
  return (
85
- <Visualization.Root classNames='bg-base-surface' model={model} variant={variant} focus={focus}>
85
+ <Visualization.Root classNames='dx-base-surface' model={model} variant={variant} focus={focus}>
86
86
  <Visualization.Graph debug={false} />
87
87
  </Visualization.Root>
88
88
  );
@@ -8,11 +8,12 @@ import React from 'react';
8
8
 
9
9
  import { withPluginManager } from '@dxos/app-framework/testing';
10
10
  import { Filter, Query, Type, View } from '@dxos/echo';
11
+ import { useQuery } from '@dxos/echo-react';
11
12
  import { ClientPlugin, initializeIdentity } from '@dxos/plugin-client/testing';
12
13
  import { PreviewPlugin } from '@dxos/plugin-preview/testing';
13
14
  import { StorybookPlugin, corePlugins } from '@dxos/plugin-testing';
14
15
  import { random } from '@dxos/random';
15
- import { useQuery, useSpaces } from '@dxos/react-client/echo';
16
+ import { useSpaces } from '@dxos/react-client/echo';
16
17
  import { Loading, withLayout, withTheme } from '@dxos/react-ui/testing';
17
18
  import { ViewModel } from '@dxos/schema';
18
19
  import { type ValueGenerator, createObjectFactory, createRelationFactory } from '@dxos/schema/testing';
@@ -7,7 +7,7 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react';
7
7
  import { AppSurface } from '@dxos/app-toolkit/ui';
8
8
  import { type Filter, Obj, type View } from '@dxos/echo';
9
9
  import { QueryBuilder } from '@dxos/echo-query';
10
- import { useObject } from '@dxos/react-client/echo';
10
+ import { useObject } from '@dxos/echo-react';
11
11
  import { DxAnchorActivate, Icon, Panel, Toolbar } from '@dxos/react-ui';
12
12
  import { QueryEditor, type QueryEditorProps } from '@dxos/react-ui-components';
13
13
  import { type TreeNode } from '@dxos/react-ui-graph';
@@ -104,9 +104,9 @@ export const ExplorerArticle = ({ role, subject, variant }: ExplorerArticleProps
104
104
  </Toolbar.Root>
105
105
  </Panel.Toolbar>
106
106
  )}
107
- <Panel.Content>
107
+ <Panel.Content asChild>
108
108
  <Visualization.Root
109
- classNames='bg-base-surface'
109
+ classNames='dx-base-surface'
110
110
  variant={selected}
111
111
  model={model}
112
112
  onSurfaceClick={handleDismiss}
@@ -117,3 +117,5 @@ export const ExplorerArticle = ({ role, subject, variant }: ExplorerArticleProps
117
117
  </Panel.Root>
118
118
  );
119
119
  };
120
+
121
+ ExplorerArticle.displayName = 'ExplorerArticle';
@@ -71,7 +71,7 @@ export const NeighborhoodCompanion = ({ role = 'article', subject }: Neighborhoo
71
71
  <Panel.Root role={role}>
72
72
  <Panel.Toolbar asChild>
73
73
  <Toolbar.Root>
74
- <div role='none' className='grow' />
74
+ <div className='grow' />
75
75
  <Toolbar.ToggleGroup type='single' value={String(depth)} onValueChange={handleDepthChange}>
76
76
  {DEPTHS.map((value) => (
77
77
  <Toolbar.ToggleGroupItem
@@ -86,9 +86,9 @@ export const NeighborhoodCompanion = ({ role = 'article', subject }: Neighborhoo
86
86
  </Toolbar.ToggleGroup>
87
87
  </Toolbar.Root>
88
88
  </Panel.Toolbar>
89
- <Panel.Content>
89
+ <Panel.Content asChild>
90
90
  <Visualization.Root
91
- classNames='bg-base-surface'
91
+ classNames='dx-base-surface'
92
92
  model={model}
93
93
  variant='neighborhood'
94
94
  focus={subject.id}
@@ -100,3 +100,5 @@ export const NeighborhoodCompanion = ({ role = 'article', subject }: Neighborhoo
100
100
  </Panel.Root>
101
101
  );
102
102
  };
103
+
104
+ NeighborhoodCompanion.displayName = 'NeighborhoodCompanion';
@@ -1,101 +0,0 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/containers/ExplorerArticle/ExplorerArticle.tsx
4
- import React, { useCallback, useEffect, useMemo, useState } from "react";
5
- import { AppSurface } from "@dxos/app-toolkit/ui";
6
- import { Obj } from "@dxos/echo";
7
- import { QueryBuilder } from "@dxos/echo-query";
8
- import { useObject } from "@dxos/react-client/echo";
9
- import { DxAnchorActivate, Icon, Panel, Toolbar } from "@dxos/react-ui";
10
- import { QueryEditor } from "@dxos/react-ui-components";
11
- import "@dxos/react-ui-graph/styles/graph.css";
12
- import { VARIANTS, Visualization, isVariant } from "#components";
13
- import { useGraphModel } from "#hooks";
14
- var ExplorerArticle = ({ role, subject, variant }) => {
15
- const [view] = useObject(subject);
16
- const [filter, setFilter] = useState();
17
- const db = view && Obj.getDatabase(view);
18
- const model = useGraphModel(db, filter);
19
- const builder = useMemo(() => new QueryBuilder(), []);
20
- const handleChange = useCallback((value) => {
21
- setFilter(builder.build(value).filter);
22
- }, [
23
- builder
24
- ]);
25
- const [selected, setSelected] = useState(isVariant(variant) ? variant : "force");
26
- useEffect(() => {
27
- if (isVariant(variant)) {
28
- setSelected(variant);
29
- }
30
- }, [
31
- variant
32
- ]);
33
- const handleVariantChange = useCallback((value) => {
34
- if (isVariant(value)) {
35
- setSelected(value);
36
- }
37
- }, []);
38
- const handleDismiss = useCallback(() => {
39
- document.defaultView?.dispatchEvent(new DxAnchorActivate({
40
- dxn: "",
41
- label: "",
42
- trigger: document.body,
43
- state: false
44
- }));
45
- }, []);
46
- const handleHover = useCallback((node, event) => {
47
- if (!node || !event) {
48
- return;
49
- }
50
- const obj = node.data;
51
- if (!obj || !Obj.isObject(obj)) {
52
- return;
53
- }
54
- const dxn = Obj.getURI(obj);
55
- if (!dxn) {
56
- return;
57
- }
58
- const target = event.target;
59
- target.dispatchEvent(new DxAnchorActivate({
60
- dxn,
61
- kind: "card",
62
- trigger: target,
63
- label: Obj.getLabel(obj) ?? dxn
64
- }));
65
- }, []);
66
- const showToolbar = role === AppSurface.Article.role;
67
- if (!db || !model) {
68
- return null;
69
- }
70
- return /* @__PURE__ */ React.createElement(Panel.Root, {
71
- role
72
- }, showToolbar && /* @__PURE__ */ React.createElement(Panel.Toolbar, {
73
- asChild: true
74
- }, /* @__PURE__ */ React.createElement(Toolbar.Root, null, /* @__PURE__ */ React.createElement(QueryEditor, {
75
- db,
76
- onChange: handleChange
77
- }), /* @__PURE__ */ React.createElement(Toolbar.ToggleGroup, {
78
- type: "single",
79
- value: selected,
80
- onValueChange: handleVariantChange
81
- }, VARIANTS.map(({ value, icon, label }) => /* @__PURE__ */ React.createElement(Toolbar.ToggleGroupItem, {
82
- key: value,
83
- value,
84
- "aria-label": label,
85
- title: label
86
- }, /* @__PURE__ */ React.createElement(Icon, {
87
- icon,
88
- size: 4
89
- })))))), /* @__PURE__ */ React.createElement(Panel.Content, null, /* @__PURE__ */ React.createElement(Visualization.Root, {
90
- classNames: "bg-base-surface",
91
- variant: selected,
92
- model,
93
- onSurfaceClick: handleDismiss
94
- }, /* @__PURE__ */ React.createElement(Visualization.Graph, {
95
- onNodeHover: handleHover
96
- }))));
97
- };
98
- export {
99
- ExplorerArticle as default
100
- };
101
- //# sourceMappingURL=ExplorerArticle-2WPXYTXV.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/ExplorerArticle/ExplorerArticle.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { type Filter, Obj, type View } from '@dxos/echo';\nimport { QueryBuilder } from '@dxos/echo-query';\nimport { useObject } from '@dxos/react-client/echo';\nimport { DxAnchorActivate, Icon, Panel, Toolbar } from '@dxos/react-ui';\nimport { QueryEditor, type QueryEditorProps } from '@dxos/react-ui-components';\nimport { type TreeNode } from '@dxos/react-ui-graph';\nimport '@dxos/react-ui-graph/styles/graph.css';\n\nimport { type ExplorerArticleVariant, VARIANTS, Visualization, isVariant } from '#components';\nimport { useGraphModel } from '#hooks';\n\nexport type { ExplorerArticleVariant } from '#components';\n\nexport type ExplorerArticleProps = AppSurface.ObjectArticleProps<View.View>;\n\nexport const ExplorerArticle = ({ role, subject, variant }: ExplorerArticleProps) => {\n const [view] = useObject(subject);\n const [filter, setFilter] = useState<Filter.Any>();\n\n const db = view && Obj.getDatabase(view);\n const model = useGraphModel(db, filter);\n\n const builder = useMemo(() => new QueryBuilder(), []);\n const handleChange = useCallback<NonNullable<QueryEditorProps['onChange']>>(\n (value) => {\n setFilter(builder.build(value).filter);\n },\n [builder],\n );\n\n const [selected, setSelected] = useState<ExplorerArticleVariant>(isVariant(variant) ? variant : 'force');\n useEffect(() => {\n if (isVariant(variant)) {\n setSelected(variant);\n }\n }, [variant]);\n\n const handleVariantChange = useCallback((value: string) => {\n if (isVariant(value)) {\n setSelected(value);\n }\n }, []);\n\n // Dismiss the preview popover. The dxn/label/trigger fields are placeholders ignored on\n // `state: false`.\n const handleDismiss = useCallback(() => {\n document.defaultView?.dispatchEvent(\n new DxAnchorActivate({ dxn: '', label: '', trigger: document.body, state: false }),\n );\n }, []);\n\n const handleHover = useCallback((node: TreeNode | null, event?: MouseEvent) => {\n // Pointer left the node/label: keep the popover open so it can be hovered/interacted with.\n // The popover is dismissed only on an explicit click on the component surface (handleDismiss).\n if (!node || !event) {\n return;\n }\n const obj = node.data;\n if (!obj || !Obj.isObject(obj)) {\n return;\n }\n const dxn = Obj.getURI(obj);\n if (!dxn) {\n return;\n }\n\n const target = event.target as HTMLElement;\n target.dispatchEvent(\n new DxAnchorActivate({\n dxn,\n kind: 'card',\n trigger: target,\n label: Obj.getLabel(obj) ?? dxn,\n }),\n );\n }, []);\n\n const showToolbar = role === AppSurface.Article.role;\n\n if (!db || !model) {\n return null;\n }\n\n return (\n <Panel.Root role={role}>\n {showToolbar && (\n <Panel.Toolbar asChild>\n <Toolbar.Root>\n <QueryEditor db={db} onChange={handleChange} />\n <Toolbar.ToggleGroup type='single' value={selected} onValueChange={handleVariantChange}>\n {VARIANTS.map(({ value, icon, label }) => (\n <Toolbar.ToggleGroupItem key={value} value={value} aria-label={label} title={label}>\n <Icon icon={icon} size={4} />\n </Toolbar.ToggleGroupItem>\n ))}\n </Toolbar.ToggleGroup>\n </Toolbar.Root>\n </Panel.Toolbar>\n )}\n <Panel.Content>\n <Visualization.Root\n classNames='bg-base-surface'\n variant={selected}\n model={model}\n onSurfaceClick={handleDismiss}\n >\n <Visualization.Graph onNodeHover={handleHover} />\n </Visualization.Root>\n </Panel.Content>\n </Panel.Root>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["React", "useCallback", "useEffect", "useMemo", "useState", "AppSurface", "Obj", "QueryBuilder", "useObject", "DxAnchorActivate", "Icon", "Panel", "Toolbar", "QueryEditor", "VARIANTS", "Visualization", "isVariant", "useGraphModel", "ExplorerArticle", "role", "subject", "variant", "view", "filter", "setFilter", "db", "getDatabase", "model", "builder", "handleChange", "value", "build", "selected", "setSelected", "handleVariantChange", "handleDismiss", "document", "defaultView", "dispatchEvent", "dxn", "label", "trigger", "body", "state", "handleHover", "node", "event", "obj", "data", "isObject", "getURI", "target", "kind", "getLabel", "showToolbar", "Article", "Root", "asChild", "onChange", "ToggleGroup", "type", "onValueChange", "map", "icon", "ToggleGroupItem", "key", "aria-label", "title", "size", "Content", "classNames", "onSurfaceClick", "Graph", "onNodeHover"]
7
- }
@@ -1,10 +0,0 @@
1
- import {
2
- ExplorerPlugin,
3
- ExplorerPlugin_default
4
- } from "./chunk-4F6AT7RA.mjs";
5
- import "./chunk-J5LGTIGS.mjs";
6
- export {
7
- ExplorerPlugin,
8
- ExplorerPlugin_default as default
9
- };
10
- //# sourceMappingURL=ExplorerPlugin.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,90 +0,0 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/containers/NeighborhoodCompanion/NeighborhoodCompanion.tsx
4
- import React, { useCallback, useState } from "react";
5
- import { Obj } from "@dxos/echo";
6
- import { DxAnchorActivate, Panel, Toolbar, useTranslation } from "@dxos/react-ui";
7
- import "@dxos/react-ui-graph/styles/graph.css";
8
- import { Visualization } from "#components";
9
- import { DEFAULT_NEIGHBORHOOD_DEPTH, useNeighborhoodModel } from "#hooks";
10
- import { meta } from "#meta";
11
- var DEPTHS = [
12
- 1,
13
- 2,
14
- 3
15
- ];
16
- var NeighborhoodCompanion = ({ role = "article", subject }) => {
17
- const { t } = useTranslation(meta.profile.key);
18
- const [depth, setDepth] = useState(DEFAULT_NEIGHBORHOOD_DEPTH);
19
- const model = useNeighborhoodModel(subject, depth);
20
- const handleDepthChange = useCallback((value) => {
21
- const next = Number.parseInt(value, 10);
22
- if (Number.isFinite(next)) {
23
- setDepth(next);
24
- }
25
- }, []);
26
- const handleDismiss = useCallback(() => {
27
- document.defaultView?.dispatchEvent(new DxAnchorActivate({
28
- dxn: "",
29
- label: "",
30
- trigger: document.body,
31
- state: false
32
- }));
33
- }, []);
34
- const handleHover = useCallback((node, event) => {
35
- if (!node || !event) {
36
- return;
37
- }
38
- const obj = node.data;
39
- if (!obj || !Obj.isObject(obj)) {
40
- return;
41
- }
42
- const dxn = Obj.getURI(obj);
43
- if (!dxn) {
44
- return;
45
- }
46
- const target = event.target;
47
- target.dispatchEvent(new DxAnchorActivate({
48
- dxn,
49
- kind: "card",
50
- trigger: target,
51
- label: Obj.getLabel(obj) ?? dxn
52
- }));
53
- }, []);
54
- if (!subject || !model) {
55
- return null;
56
- }
57
- return /* @__PURE__ */ React.createElement(Panel.Root, {
58
- role
59
- }, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
60
- asChild: true
61
- }, /* @__PURE__ */ React.createElement(Toolbar.Root, null, /* @__PURE__ */ React.createElement("div", {
62
- role: "none",
63
- className: "grow"
64
- }), /* @__PURE__ */ React.createElement(Toolbar.ToggleGroup, {
65
- type: "single",
66
- value: String(depth),
67
- onValueChange: handleDepthChange
68
- }, DEPTHS.map((value) => /* @__PURE__ */ React.createElement(Toolbar.ToggleGroupItem, {
69
- key: value,
70
- value: String(value),
71
- "aria-label": t("depth.label", {
72
- count: value
73
- }),
74
- title: t("depth.label", {
75
- count: value
76
- })
77
- }, value))))), /* @__PURE__ */ React.createElement(Panel.Content, null, /* @__PURE__ */ React.createElement(Visualization.Root, {
78
- classNames: "bg-base-surface",
79
- model,
80
- variant: "neighborhood",
81
- focus: subject.id,
82
- onSurfaceClick: handleDismiss
83
- }, /* @__PURE__ */ React.createElement(Visualization.Graph, {
84
- onNodeHover: handleHover
85
- }))));
86
- };
87
- export {
88
- NeighborhoodCompanion as default
89
- };
90
- //# sourceMappingURL=NeighborhoodCompanion-WC6E3YE6.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/NeighborhoodCompanion/NeighborhoodCompanion.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { DxAnchorActivate, Panel, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { type TreeNode } from '@dxos/react-ui-graph';\nimport '@dxos/react-ui-graph/styles/graph.css';\n\nimport { Visualization } from '#components';\nimport { DEFAULT_NEIGHBORHOOD_DEPTH, useNeighborhoodModel } from '#hooks';\nimport { meta } from '#meta';\n\n/** Selectable traversal depths offered in the companion toolbar. */\nconst DEPTHS = [1, 2, 3] as const;\n\nexport type NeighborhoodCompanionProps = {\n role?: string;\n /** The active node whose neighbourhood is rendered (passed as the companion subject). */\n subject: Obj.Any;\n};\n\n/**\n * Companion that renders the n-hop neighbourhood of the active node as an ego-centric radial graph,\n * with the active node at the centre. Depth (number of hops traversed) is adjustable in the toolbar.\n */\nexport const NeighborhoodCompanion = ({ role = 'article', subject }: NeighborhoodCompanionProps) => {\n const { t } = useTranslation(meta.profile.key);\n const [depth, setDepth] = useState<number>(DEFAULT_NEIGHBORHOOD_DEPTH);\n const model = useNeighborhoodModel(subject, depth);\n\n const handleDepthChange = useCallback((value: string) => {\n const next = Number.parseInt(value, 10);\n if (Number.isFinite(next)) {\n setDepth(next);\n }\n }, []);\n\n // Dismiss the preview popover. The dxn/label/trigger fields are placeholders ignored on `state: false`.\n const handleDismiss = useCallback(() => {\n document.defaultView?.dispatchEvent(\n new DxAnchorActivate({ dxn: '', label: '', trigger: document.body, state: false }),\n );\n }, []);\n\n const handleHover = useCallback((node: TreeNode | null, event?: MouseEvent) => {\n // Pointer left the node/label: keep the popover open so it can be hovered/interacted with.\n if (!node || !event) {\n return;\n }\n const obj = node.data;\n if (!obj || !Obj.isObject(obj)) {\n return;\n }\n const dxn = Obj.getURI(obj);\n if (!dxn) {\n return;\n }\n\n const target = event.target as HTMLElement;\n target.dispatchEvent(new DxAnchorActivate({ dxn, kind: 'card', trigger: target, label: Obj.getLabel(obj) ?? dxn }));\n }, []);\n\n if (!subject || !model) {\n return null;\n }\n\n return (\n <Panel.Root role={role}>\n <Panel.Toolbar asChild>\n <Toolbar.Root>\n <div role='none' className='grow' />\n <Toolbar.ToggleGroup type='single' value={String(depth)} onValueChange={handleDepthChange}>\n {DEPTHS.map((value) => (\n <Toolbar.ToggleGroupItem\n key={value}\n value={String(value)}\n aria-label={t('depth.label', { count: value })}\n title={t('depth.label', { count: value })}\n >\n {value}\n </Toolbar.ToggleGroupItem>\n ))}\n </Toolbar.ToggleGroup>\n </Toolbar.Root>\n </Panel.Toolbar>\n <Panel.Content>\n <Visualization.Root\n classNames='bg-base-surface'\n model={model}\n variant='neighborhood'\n focus={subject.id}\n onSurfaceClick={handleDismiss}\n >\n <Visualization.Graph onNodeHover={handleHover} />\n </Visualization.Root>\n </Panel.Content>\n </Panel.Root>\n );\n};\n"],
5
- "mappings": ";;;AAIA,OAAOA,SAASC,aAAaC,gBAAgB;AAE7C,SAASC,WAAW;AACpB,SAASC,kBAAkBC,OAAOC,SAASC,sBAAsB;AAEjE,OAAO;AAEP,SAASC,qBAAqB;AAC9B,SAASC,4BAA4BC,4BAA4B;AACjE,SAASC,YAAY;AAGrB,IAAMC,SAAS;EAAC;EAAG;EAAG;;AAYf,IAAMC,wBAAwB,CAAC,EAAEC,OAAO,WAAWC,QAAO,MAA8B;AAC7F,QAAM,EAAEC,EAAC,IAAKT,eAAeI,KAAKM,QAAQC,GAAG;AAC7C,QAAM,CAACC,OAAOC,QAAAA,IAAYlB,SAAiBO,0BAAAA;AAC3C,QAAMY,QAAQX,qBAAqBK,SAASI,KAAAA;AAE5C,QAAMG,oBAAoBrB,YAAY,CAACsB,UAAAA;AACrC,UAAMC,OAAOC,OAAOC,SAASH,OAAO,EAAA;AACpC,QAAIE,OAAOE,SAASH,IAAAA,GAAO;AACzBJ,eAASI,IAAAA;IACX;EACF,GAAG,CAAA,CAAE;AAGL,QAAMI,gBAAgB3B,YAAY,MAAA;AAChC4B,aAASC,aAAaC,cACpB,IAAI3B,iBAAiB;MAAE4B,KAAK;MAAIC,OAAO;MAAIC,SAASL,SAASM;MAAMC,OAAO;IAAM,CAAA,CAAA;EAEpF,GAAG,CAAA,CAAE;AAEL,QAAMC,cAAcpC,YAAY,CAACqC,MAAuBC,UAAAA;AAEtD,QAAI,CAACD,QAAQ,CAACC,OAAO;AACnB;IACF;AACA,UAAMC,MAAMF,KAAKG;AACjB,QAAI,CAACD,OAAO,CAACrC,IAAIuC,SAASF,GAAAA,GAAM;AAC9B;IACF;AACA,UAAMR,MAAM7B,IAAIwC,OAAOH,GAAAA;AACvB,QAAI,CAACR,KAAK;AACR;IACF;AAEA,UAAMY,SAASL,MAAMK;AACrBA,WAAOb,cAAc,IAAI3B,iBAAiB;MAAE4B;MAAKa,MAAM;MAAQX,SAASU;MAAQX,OAAO9B,IAAI2C,SAASN,GAAAA,KAAQR;IAAI,CAAA,CAAA;EAClH,GAAG,CAAA,CAAE;AAEL,MAAI,CAACjB,WAAW,CAACM,OAAO;AACtB,WAAO;EACT;AAEA,SACE,sBAAA,cAAChB,MAAM0C,MAAI;IAACjC;KACV,sBAAA,cAACT,MAAMC,SAAO;IAAC0C,SAAAA;KACb,sBAAA,cAAC1C,QAAQyC,MAAI,MACX,sBAAA,cAACE,OAAAA;IAAInC,MAAK;IAAOoC,WAAU;MAC3B,sBAAA,cAAC5C,QAAQ6C,aAAW;IAACC,MAAK;IAAS7B,OAAO8B,OAAOlC,KAAAA;IAAQmC,eAAehC;KACrEV,OAAO2C,IAAI,CAAChC,UACX,sBAAA,cAACjB,QAAQkD,iBAAe;IACtBtC,KAAKK;IACLA,OAAO8B,OAAO9B,KAAAA;IACdkC,cAAYzC,EAAE,eAAe;MAAE0C,OAAOnC;IAAM,CAAA;IAC5CoC,OAAO3C,EAAE,eAAe;MAAE0C,OAAOnC;IAAM,CAAA;KAEtCA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAMX,sBAAA,cAAClB,MAAMuD,SAAO,MACZ,sBAAA,cAACpD,cAAcuC,MAAI;IACjBc,YAAW;IACXxC;IACAyC,SAAQ;IACRC,OAAOhD,QAAQiD;IACfC,gBAAgBrC;KAEhB,sBAAA,cAACpB,cAAc0D,OAAK;IAACC,aAAa9B;;AAK5C;",
6
- "names": ["React", "useCallback", "useState", "Obj", "DxAnchorActivate", "Panel", "Toolbar", "useTranslation", "Visualization", "DEFAULT_NEIGHBORHOOD_DEPTH", "useNeighborhoodModel", "meta", "DEPTHS", "NeighborhoodCompanion", "role", "subject", "t", "profile", "key", "depth", "setDepth", "model", "handleDepthChange", "value", "next", "Number", "parseInt", "isFinite", "handleDismiss", "document", "defaultView", "dispatchEvent", "dxn", "label", "trigger", "body", "state", "handleHover", "node", "event", "obj", "data", "isObject", "getURI", "target", "kind", "getLabel", "Root", "asChild", "div", "className", "ToggleGroup", "type", "String", "onValueChange", "map", "ToggleGroupItem", "aria-label", "count", "title", "Content", "classNames", "variant", "focus", "id", "onSurfaceClick", "Graph", "onNodeHover"]
7
- }
@@ -1,37 +0,0 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/capabilities/app-graph-builder.ts
4
- import * as Effect from "effect/Effect";
5
- import { Capability } from "@dxos/app-framework";
6
- import { AppCapabilities, AppNode } from "@dxos/app-toolkit";
7
- import { GraphBuilder, NodeMatcher } from "@dxos/plugin-graph";
8
- import { linkedSegment } from "@dxos/react-ui-attention";
9
- import { Position } from "@dxos/util";
10
- import { meta } from "#meta";
11
- var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function* () {
12
- const extensions = yield* Effect.all([
13
- GraphBuilder.createExtension({
14
- id: "neighborhoodCompanion",
15
- match: NodeMatcher.whenEchoObjectMatches,
16
- connector: () => Effect.succeed([
17
- AppNode.makeCompanion({
18
- id: linkedSegment("neighborhood"),
19
- label: [
20
- "neighborhood-companion.label",
21
- {
22
- ns: meta.profile.key
23
- }
24
- ],
25
- icon: "ph--share-network--regular",
26
- data: "neighborhood",
27
- position: Position.last
28
- })
29
- ])
30
- })
31
- ]);
32
- return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);
33
- }));
34
- export {
35
- app_graph_builder_default as default
36
- };
37
- //# sourceMappingURL=app-graph-builder-L2TJ6GNR.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities, AppNode } from '@dxos/app-toolkit';\nimport { GraphBuilder, NodeMatcher } from '@dxos/plugin-graph';\nimport { linkedSegment } from '@dxos/react-ui-attention';\nimport { Position } from '@dxos/util';\n\nimport { meta } from '#meta';\n\n/**\n * Offers a \"Neighborhood\" companion on any ECHO object. The matched node is passed through as the\n * companion's `companionTo` (the active node), which the surface renders as an ego-centric graph.\n */\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const extensions = yield* Effect.all([\n GraphBuilder.createExtension({\n id: 'neighborhoodCompanion',\n match: NodeMatcher.whenEchoObjectMatches,\n connector: () =>\n Effect.succeed([\n AppNode.makeCompanion({\n id: linkedSegment('neighborhood'),\n label: ['neighborhood-companion.label', { ns: meta.profile.key }],\n icon: 'ph--share-network--regular',\n data: 'neighborhood',\n position: Position.last,\n }),\n ]),\n }),\n ]);\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
5
- "mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiBC,eAAe;AACzC,SAASC,cAAcC,mBAAmB;AAC1C,SAASC,qBAAqB;AAC9B,SAASC,gBAAgB;AAEzB,SAASC,YAAY;AAMrB,IAAA,4BAAeP,WAAWQ,WACjBC,kBAAW,aAAA;AAChB,QAAMC,aAAa,OAAcC,WAAI;IACnCR,aAAaS,gBAAgB;MAC3BC,IAAI;MACJC,OAAOV,YAAYW;MACnBC,WAAW,MACFC,eAAQ;QACbf,QAAQgB,cAAc;UACpBL,IAAIR,cAAc,cAAA;UAClBc,OAAO;YAAC;YAAgC;cAAEC,IAAIb,KAAKc,QAAQC;YAAI;;UAC/DC,MAAM;UACNC,MAAM;UACNC,UAAUnB,SAASoB;QACrB,CAAA;OACD;IACL,CAAA;GACD;AAED,SAAO1B,WAAW2B,YAAY1B,gBAAgB2B,iBAAiBlB,UAAAA;AACjE,CAAA,CAAA;",
6
- "names": ["Effect", "Capability", "AppCapabilities", "AppNode", "GraphBuilder", "NodeMatcher", "linkedSegment", "Position", "meta", "makeModule", "fnUntraced", "extensions", "all", "createExtension", "id", "match", "whenEchoObjectMatches", "connector", "succeed", "makeCompanion", "label", "ns", "profile", "key", "icon", "data", "position", "last", "contributes", "AppGraphBuilder"]
7
- }