@dxos/plugin-explorer 0.8.3 → 0.8.4-main.c1de068
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.
- package/dist/lib/browser/{ExplorerContainer-DXL34I3F.mjs → ExplorerContainer-OGHSHZD5.mjs} +4 -4
- package/dist/lib/browser/{chunk-73YTQHOT.mjs → chunk-EF4BFHTI.mjs} +4 -4
- package/dist/lib/browser/{chunk-Z5BGAHLD.mjs → chunk-J2BBZOSF.mjs} +5 -5
- package/dist/lib/browser/{chunk-Z5BGAHLD.mjs.map → chunk-J2BBZOSF.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-SLB2F5AO.mjs → chunk-OAOY7SHY.mjs} +2 -2
- package/dist/lib/browser/{chunk-JRKQNHS6.mjs → chunk-PVFZFKQ6.mjs} +17 -17
- package/dist/lib/browser/{chunk-OBAFAA5V.mjs → chunk-UL5EDJPE.mjs} +2 -2
- package/dist/lib/browser/index.mjs +18 -17
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-JZKYVFQJ.mjs → intent-resolver-XH2UO2FM.mjs} +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/meta.mjs +1 -1
- package/dist/lib/browser/{react-surface-IAEP2GBT.mjs → react-surface-65VQ42HX.mjs} +6 -6
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node-esm/{ExplorerContainer-MFE7PXF4.mjs → ExplorerContainer-6ON5NA2P.mjs} +4 -4
- package/dist/lib/node-esm/{chunk-AE7VHUJM.mjs → chunk-4VMSNXYL.mjs} +5 -5
- package/dist/lib/node-esm/{chunk-AE7VHUJM.mjs.map → chunk-4VMSNXYL.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-3CMBLK6W.mjs → chunk-PIAXA43R.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-VSORIAHH.mjs → chunk-PPBUWC7F.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-IUFYOE44.mjs → chunk-S5A2EUSJ.mjs} +17 -17
- package/dist/lib/node-esm/{chunk-N6VEANUZ.mjs → chunk-VKCOKQRG.mjs} +4 -4
- package/dist/lib/node-esm/index.mjs +18 -17
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-7G6ZKM6E.mjs → intent-resolver-AGBBNA67.mjs} +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/meta.mjs +1 -1
- package/dist/lib/node-esm/{react-surface-XBH3WZDL.mjs → react-surface-IJIMYAST.mjs} +6 -6
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/components/Chart/Chart.stories.d.ts +1 -1
- package/dist/types/src/components/Chart/Chart.stories.d.ts.map +1 -1
- package/dist/types/src/components/Globe/Globe.stories.d.ts +1 -1
- package/dist/types/src/components/Globe/Globe.stories.d.ts.map +1 -1
- package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts +1 -1
- package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts.map +1 -1
- package/dist/types/src/components/Graph/ForceGraph.stories.d.ts +1 -1
- package/dist/types/src/components/Graph/ForceGraph.stories.d.ts.map +1 -1
- package/dist/types/src/components/Tree/Tree.stories.d.ts +1 -1
- package/dist/types/src/components/Tree/Tree.stories.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +16 -23
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +37 -30
- package/src/ExplorerPlugin.tsx +1 -1
- package/src/components/Chart/Chart.stories.tsx +1 -1
- package/src/components/Globe/Globe.stories.tsx +1 -1
- package/src/components/Graph/D3ForceGraph.stories.tsx +1 -1
- package/src/components/Graph/ForceGraph.stories.tsx +1 -1
- package/src/components/Graph/ForceGraph.tsx +1 -1
- package/src/components/Tree/Tree.stories.tsx +1 -1
- package/src/components/Tree/types/tree.test.ts +2 -2
- package/src/translations.ts +8 -6
- package/dist/lib/node/ExplorerContainer-VUXH55VV.cjs +0 -61
- package/dist/lib/node/ExplorerContainer-VUXH55VV.cjs.map +0 -7
- package/dist/lib/node/chunk-4T4LCT5R.cjs +0 -52
- package/dist/lib/node/chunk-4T4LCT5R.cjs.map +0 -7
- package/dist/lib/node/chunk-BCDVG2CH.cjs +0 -44
- package/dist/lib/node/chunk-BCDVG2CH.cjs.map +0 -7
- package/dist/lib/node/chunk-MLRYW4WQ.cjs +0 -56
- package/dist/lib/node/chunk-MLRYW4WQ.cjs.map +0 -7
- package/dist/lib/node/chunk-SVU4VMYX.cjs +0 -11339
- package/dist/lib/node/chunk-SVU4VMYX.cjs.map +0 -7
- package/dist/lib/node/chunk-TY543HPV.cjs +0 -214
- package/dist/lib/node/chunk-TY543HPV.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -130
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-G2MFNIXA.cjs +0 -39
- package/dist/lib/node/intent-resolver-G2MFNIXA.cjs.map +0 -7
- package/dist/lib/node/meta.cjs +0 -31
- package/dist/lib/node/meta.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/react-surface-UJD5RGRZ.cjs +0 -53
- package/dist/lib/node/react-surface-UJD5RGRZ.cjs.map +0 -7
- package/dist/lib/node/types/index.cjs +0 -32
- package/dist/lib/node/types/index.cjs.map +0 -7
- /package/dist/lib/browser/{ExplorerContainer-DXL34I3F.mjs.map → ExplorerContainer-OGHSHZD5.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-73YTQHOT.mjs.map → chunk-EF4BFHTI.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-SLB2F5AO.mjs.map → chunk-OAOY7SHY.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-JRKQNHS6.mjs.map → chunk-PVFZFKQ6.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-OBAFAA5V.mjs.map → chunk-UL5EDJPE.mjs.map} +0 -0
- /package/dist/lib/browser/{intent-resolver-JZKYVFQJ.mjs.map → intent-resolver-XH2UO2FM.mjs.map} +0 -0
- /package/dist/lib/browser/{react-surface-IAEP2GBT.mjs.map → react-surface-65VQ42HX.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ExplorerContainer-MFE7PXF4.mjs.map → ExplorerContainer-6ON5NA2P.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-3CMBLK6W.mjs.map → chunk-PIAXA43R.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-VSORIAHH.mjs.map → chunk-PPBUWC7F.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-IUFYOE44.mjs.map → chunk-S5A2EUSJ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-N6VEANUZ.mjs.map → chunk-VKCOKQRG.mjs.map} +0 -0
- /package/dist/lib/node-esm/{intent-resolver-7G6ZKM6E.mjs.map → intent-resolver-AGBBNA67.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-surface-XBH3WZDL.mjs.map → react-surface-IJIMYAST.mjs.map} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useGraphModel
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OAOY7SHY.mjs";
|
|
4
4
|
import {
|
|
5
5
|
D3ForceGraph
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-J2BBZOSF.mjs";
|
|
7
7
|
|
|
8
|
-
//
|
|
8
|
+
// src/components/ExplorerContainer.tsx
|
|
9
9
|
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
10
10
|
import React from "react";
|
|
11
11
|
import { useGlobalSearch } from "@dxos/plugin-search";
|
|
@@ -34,4 +34,4 @@ var ExplorerContainer_default = ExplorerContainer;
|
|
|
34
34
|
export {
|
|
35
35
|
ExplorerContainer_default as default
|
|
36
36
|
};
|
|
37
|
-
//# sourceMappingURL=ExplorerContainer-
|
|
37
|
+
//# sourceMappingURL=ExplorerContainer-OGHSHZD5.mjs.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EXPLORER_PLUGIN
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UL5EDJPE.mjs";
|
|
4
4
|
|
|
5
|
-
//
|
|
5
|
+
// src/types/schema.ts
|
|
6
6
|
import { Schema } from "effect";
|
|
7
7
|
import { TypedObject } from "@dxos/echo-schema";
|
|
8
8
|
var ViewType = class extends TypedObject({
|
|
@@ -14,7 +14,7 @@ var ViewType = class extends TypedObject({
|
|
|
14
14
|
}) {
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
//
|
|
17
|
+
// src/types/types.ts
|
|
18
18
|
import { Schema as Schema2 } from "effect";
|
|
19
19
|
(function(ExplorerAction2) {
|
|
20
20
|
const EXPLORER_ACTION = `${EXPLORER_PLUGIN}/action`;
|
|
@@ -35,4 +35,4 @@ export {
|
|
|
35
35
|
ViewType,
|
|
36
36
|
ExplorerAction
|
|
37
37
|
};
|
|
38
|
-
//# sourceMappingURL=chunk-
|
|
38
|
+
//# sourceMappingURL=chunk-EF4BFHTI.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//
|
|
1
|
+
// src/components/Graph/D3ForceGraph.tsx
|
|
2
2
|
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
3
3
|
import React, { useCallback, useEffect, useMemo, useRef } from "react";
|
|
4
4
|
import { Obj } from "@dxos/echo";
|
|
@@ -84,7 +84,7 @@ var D3ForceGraph = ({ classNames, model, selection: _selection, grid, ...props }
|
|
|
84
84
|
}
|
|
85
85
|
};
|
|
86
86
|
|
|
87
|
-
//
|
|
87
|
+
// src/components/Graph/ForceGraph.tsx
|
|
88
88
|
import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
|
|
89
89
|
import { forceLink, forceManyBody } from "d3";
|
|
90
90
|
import NativeForceGraph from "force-graph";
|
|
@@ -92,7 +92,7 @@ import React2, { useEffect as useEffect2, useRef as useRef2, useState } from "re
|
|
|
92
92
|
import { useResizeDetector } from "react-resize-detector";
|
|
93
93
|
import { filterObjectsSync } from "@dxos/plugin-search";
|
|
94
94
|
|
|
95
|
-
//
|
|
95
|
+
// src/components/Graph/adapter.ts
|
|
96
96
|
var GraphAdapter = class {
|
|
97
97
|
constructor(graph) {
|
|
98
98
|
this.graph = graph;
|
|
@@ -118,7 +118,7 @@ var GraphAdapter = class {
|
|
|
118
118
|
}
|
|
119
119
|
};
|
|
120
120
|
|
|
121
|
-
//
|
|
121
|
+
// src/components/Graph/ForceGraph.tsx
|
|
122
122
|
var ForceGraph = ({ model, match }) => {
|
|
123
123
|
var _effect = _useSignals2();
|
|
124
124
|
try {
|
|
@@ -184,4 +184,4 @@ export {
|
|
|
184
184
|
D3ForceGraph,
|
|
185
185
|
ForceGraph
|
|
186
186
|
};
|
|
187
|
-
//# sourceMappingURL=chunk-
|
|
187
|
+
//# sourceMappingURL=chunk-J2BBZOSF.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/Graph/D3ForceGraph.tsx", "../../../src/components/Graph/ForceGraph.tsx", "../../../src/components/Graph/adapter.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { SelectionModel } from '@dxos/graph';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport {\n type GraphController,\n GraphForceProjector,\n type GraphLayoutNode,\n type GraphProps,\n SVG,\n type SVGContext,\n} from '@dxos/react-ui-graph';\nimport { getHashColor } from '@dxos/react-ui-theme';\nimport { type SpaceGraphNode, type SpaceGraphModel, type SpaceGraphEdge } from '@dxos/schema';\n\nimport '@dxos/react-ui-graph/styles/graph.css';\n\nexport type D3ForceGraphProps = ThemedClassName<\n {\n model?: SpaceGraphModel;\n match?: RegExp;\n selection?: SelectionModel;\n grid?: boolean;\n } & Pick<GraphProps, 'drag'>\n>;\n\nexport const D3ForceGraph: FC<D3ForceGraphProps> = ({ classNames, model, selection: _selection, grid, ...props }) => {\n const context = useRef<SVGContext>(null);\n const projector = useMemo<GraphForceProjector | undefined>(() => {\n if (context.current) {\n return new GraphForceProjector(context.current, {\n attributes: {\n linkForce: (edge) => {\n // TODO(burdon): Check type (currently assumes Employee property).\n // Edge shouldn't contribute to force if it's not active.\n return edge.data?.object?.active !== false;\n },\n },\n forces: {\n point: {\n strength: 0.01,\n },\n },\n });\n }\n }, [context.current]);\n\n const graph = useRef<GraphController>(null);\n const selection = useMemo(() => _selection ?? new SelectionModel(), [_selection]);\n useEffect(() => graph.current?.repaint(), [selection.selected.value]);\n\n const handleSelect = useCallback<NonNullable<GraphProps['onSelect']>>(\n (node) => {\n if (selection.contains(node.id)) {\n selection.remove(node.id);\n } else {\n selection.add(node.id);\n }\n },\n [selection],\n );\n\n return (\n <SVG.Root ref={context} classNames={classNames}>\n <SVG.Markers />\n {grid && <SVG.Grid axis />}\n <SVG.Zoom extent={[1 / 2, 2]}>\n <SVG.Graph<SpaceGraphNode, SpaceGraphEdge>\n {...props}\n ref={graph}\n model={model}\n projector={projector}\n labels={{\n text: (node) => {\n return node.data?.data.label ?? node.id;\n },\n }}\n attributes={{\n node: (node: GraphLayoutNode<SpaceGraphNode>) => {\n const obj = node.data?.data.object;\n return {\n data: {\n color: getHashColor(obj && Obj.getTypename(obj))?.color,\n },\n classes: {\n 'dx-selected': selection.contains(node.id),\n },\n };\n },\n }}\n onSelect={handleSelect}\n />\n </SVG.Zoom>\n </SVG.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { forceLink, forceManyBody } from 'd3';\nimport NativeForceGraph from 'force-graph';\nimport React, { type FC, useEffect, useRef, useState } from 'react';\nimport { useResizeDetector } from 'react-resize-detector';\n\nimport { filterObjectsSync, type SearchResult } from '@dxos/plugin-search';\nimport { type SpaceGraphModel } from '@dxos/schema';\n\nimport { GraphAdapter } from './adapter';\n\nexport type ForceGraphProps = {\n model?: SpaceGraphModel;\n match?: RegExp;\n};\n\nexport const ForceGraph: FC<ForceGraphProps> = ({ model, match }) => {\n const { ref, width, height } = useResizeDetector({ refreshRate: 200 });\n const rootRef = useRef<HTMLDivElement>(null);\n const forceGraph = useRef<NativeForceGraph>();\n\n const filteredRef = useRef<SearchResult[]>();\n filteredRef.current = filterObjectsSync(model?.objects ?? [], match);\n\n const [data, setData] = useState<GraphAdapter>();\n useEffect(() => {\n return model?.subscribe((model) => {\n setData(new GraphAdapter(model.graph));\n });\n }, [model]);\n\n useEffect(() => {\n if (rootRef.current) {\n // https://github.com/vasturiano/force-graph\n // https://github.com/vasturiano/3d-force-graph\n forceGraph.current = new NativeForceGraph(rootRef.current)\n // https://github.com/vasturiano/force-graph?tab=readme-ov-file#node-styling\n .nodeRelSize(6)\n .nodeLabel((node: any) => (node.type === 'schema' ? node.data.typename : node.data.label ?? node.id))\n .nodeAutoColorBy((node: any) => (node.type === 'schema' ? 'schema' : node.data.typename))\n\n // https://github.com/vasturiano/force-graph?tab=readme-ov-file#link-styling\n .linkAutoColorBy((link: any) => link.type);\n }\n\n return () => {\n forceGraph.current?.pauseAnimation().graphData({ nodes: [], links: [] });\n forceGraph.current = undefined;\n };\n }, []);\n\n useEffect(() => {\n if (!data || !width || !height || !forceGraph.current) {\n return;\n }\n\n // https://github.com/vasturiano/force-graph?tab=readme-ov-file#container-layout\n forceGraph.current\n .pauseAnimation()\n .width(width)\n .height(height)\n .onEngineStop(() => {\n handleZoomToFit();\n })\n .onNodeClick((node: any) => {\n forceGraph.current?.emitParticle(node);\n })\n\n // https://github.com/vasturiano/force-graph?tab=readme-ov-file#force-engine-d3-force-configuration\n // .d3Force('center', forceCenter().strength(0.9))\n .d3Force('link', forceLink().distance(160).strength(0.5))\n .d3Force('charge', forceManyBody().strength(-30))\n\n .graphData(data)\n .warmupTicks(100)\n .cooldownTime(1_000)\n .resumeAnimation();\n }, [data, width, height, forceGraph.current]);\n\n const handleZoomToFit = () => {\n forceGraph.current?.zoomToFit(400, 40);\n };\n\n return (\n <div ref={ref} className='relative grow' onClick={handleZoomToFit}>\n <div ref={rootRef} className='absolute inset-0' />\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Graph } from '@dxos/graph';\n\nexport type GraphNode = {\n id?: string;\n};\n\nexport type GraphLink = {\n source?: string;\n target?: string;\n};\n\nexport type GraphData = {\n nodes: GraphNode[];\n links: GraphLink[];\n};\n\n/**\n * Map common graph to force-graph format.\n */\nexport class GraphAdapter implements GraphData {\n private readonly _nodes: GraphNode[] = [];\n private readonly _links: GraphLink[] = [];\n\n constructor(private readonly graph: Graph) {\n this._nodes = graph.nodes.map((node) => ({\n id: node.id,\n type: node.type,\n data: node.data,\n }));\n\n this._links = graph.edges.map((edge) => ({\n type: edge.type,\n source: edge.source,\n target: edge.target,\n data: edge.data,\n }));\n }\n\n get nodes() {\n return this._nodes;\n }\n\n get links() {\n return this._links;\n }\n}\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { SelectionModel } from '@dxos/graph';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport {\n type GraphController,\n GraphForceProjector,\n type GraphLayoutNode,\n type GraphProps,\n SVG,\n type SVGContext,\n} from '@dxos/react-ui-graph';\nimport { getHashColor } from '@dxos/react-ui-theme';\nimport { type SpaceGraphNode, type SpaceGraphModel, type SpaceGraphEdge } from '@dxos/schema';\n\nimport '@dxos/react-ui-graph/styles/graph.css';\n\nexport type D3ForceGraphProps = ThemedClassName<\n {\n model?: SpaceGraphModel;\n match?: RegExp;\n selection?: SelectionModel;\n grid?: boolean;\n } & Pick<GraphProps, 'drag'>\n>;\n\nexport const D3ForceGraph: FC<D3ForceGraphProps> = ({ classNames, model, selection: _selection, grid, ...props }) => {\n const context = useRef<SVGContext>(null);\n const projector = useMemo<GraphForceProjector | undefined>(() => {\n if (context.current) {\n return new GraphForceProjector(context.current, {\n attributes: {\n linkForce: (edge) => {\n // TODO(burdon): Check type (currently assumes Employee property).\n // Edge shouldn't contribute to force if it's not active.\n return edge.data?.object?.active !== false;\n },\n },\n forces: {\n point: {\n strength: 0.01,\n },\n },\n });\n }\n }, [context.current]);\n\n const graph = useRef<GraphController>(null);\n const selection = useMemo(() => _selection ?? new SelectionModel(), [_selection]);\n useEffect(() => graph.current?.repaint(), [selection.selected.value]);\n\n const handleSelect = useCallback<NonNullable<GraphProps['onSelect']>>(\n (node) => {\n if (selection.contains(node.id)) {\n selection.remove(node.id);\n } else {\n selection.add(node.id);\n }\n },\n [selection],\n );\n\n return (\n <SVG.Root ref={context} classNames={classNames}>\n <SVG.Markers />\n {grid && <SVG.Grid axis />}\n <SVG.Zoom extent={[1 / 2, 2]}>\n <SVG.Graph<SpaceGraphNode, SpaceGraphEdge>\n {...props}\n ref={graph}\n model={model}\n projector={projector}\n labels={{\n text: (node) => {\n return node.data?.data.label ?? node.id;\n },\n }}\n attributes={{\n node: (node: GraphLayoutNode<SpaceGraphNode>) => {\n const obj = node.data?.data.object;\n return {\n data: {\n color: getHashColor(obj && Obj.getTypename(obj))?.color,\n },\n classes: {\n 'dx-selected': selection.contains(node.id),\n },\n };\n },\n }}\n onSelect={handleSelect}\n />\n </SVG.Zoom>\n </SVG.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { forceLink, forceManyBody } from 'd3';\nimport NativeForceGraph from 'force-graph';\nimport React, { type FC, useEffect, useRef, useState } from 'react';\nimport { useResizeDetector } from 'react-resize-detector';\n\nimport { filterObjectsSync, type SearchResult } from '@dxos/plugin-search';\nimport { type SpaceGraphModel } from '@dxos/schema';\n\nimport { GraphAdapter } from './adapter';\n\nexport type ForceGraphProps = {\n model?: SpaceGraphModel;\n match?: RegExp;\n};\n\nexport const ForceGraph: FC<ForceGraphProps> = ({ model, match }) => {\n const { ref, width, height } = useResizeDetector({ refreshRate: 200 });\n const rootRef = useRef<HTMLDivElement>(null);\n const forceGraph = useRef<NativeForceGraph>();\n\n const filteredRef = useRef<SearchResult[]>();\n filteredRef.current = filterObjectsSync(model?.objects ?? [], match);\n\n const [data, setData] = useState<GraphAdapter>();\n useEffect(() => {\n return model?.subscribe((model) => {\n setData(new GraphAdapter(model.graph));\n });\n }, [model]);\n\n useEffect(() => {\n if (rootRef.current) {\n // https://github.com/vasturiano/force-graph\n // https://github.com/vasturiano/3d-force-graph\n forceGraph.current = new NativeForceGraph(rootRef.current)\n // https://github.com/vasturiano/force-graph?tab=readme-ov-file#node-styling\n .nodeRelSize(6)\n .nodeLabel((node: any) => (node.type === 'schema' ? node.data.typename : (node.data.label ?? node.id)))\n .nodeAutoColorBy((node: any) => (node.type === 'schema' ? 'schema' : node.data.typename))\n\n // https://github.com/vasturiano/force-graph?tab=readme-ov-file#link-styling\n .linkAutoColorBy((link: any) => link.type);\n }\n\n return () => {\n forceGraph.current?.pauseAnimation().graphData({ nodes: [], links: [] });\n forceGraph.current = undefined;\n };\n }, []);\n\n useEffect(() => {\n if (!data || !width || !height || !forceGraph.current) {\n return;\n }\n\n // https://github.com/vasturiano/force-graph?tab=readme-ov-file#container-layout\n forceGraph.current\n .pauseAnimation()\n .width(width)\n .height(height)\n .onEngineStop(() => {\n handleZoomToFit();\n })\n .onNodeClick((node: any) => {\n forceGraph.current?.emitParticle(node);\n })\n\n // https://github.com/vasturiano/force-graph?tab=readme-ov-file#force-engine-d3-force-configuration\n // .d3Force('center', forceCenter().strength(0.9))\n .d3Force('link', forceLink().distance(160).strength(0.5))\n .d3Force('charge', forceManyBody().strength(-30))\n\n .graphData(data)\n .warmupTicks(100)\n .cooldownTime(1_000)\n .resumeAnimation();\n }, [data, width, height, forceGraph.current]);\n\n const handleZoomToFit = () => {\n forceGraph.current?.zoomToFit(400, 40);\n };\n\n return (\n <div ref={ref} className='relative grow' onClick={handleZoomToFit}>\n <div ref={rootRef} className='absolute inset-0' />\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Graph } from '@dxos/graph';\n\nexport type GraphNode = {\n id?: string;\n};\n\nexport type GraphLink = {\n source?: string;\n target?: string;\n};\n\nexport type GraphData = {\n nodes: GraphNode[];\n links: GraphLink[];\n};\n\n/**\n * Map common graph to force-graph format.\n */\nexport class GraphAdapter implements GraphData {\n private readonly _nodes: GraphNode[] = [];\n private readonly _links: GraphLink[] = [];\n\n constructor(private readonly graph: Graph) {\n this._nodes = graph.nodes.map((node) => ({\n id: node.id,\n type: node.type,\n data: node.data,\n }));\n\n this._links = graph.edges.map((edge) => ({\n type: edge.type,\n source: edge.source,\n target: edge.target,\n data: edge.data,\n }));\n }\n\n get nodes() {\n return this._nodes;\n }\n\n get links() {\n return this._links;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["React", "useCallback", "useEffect", "useMemo", "useRef", "Obj", "SelectionModel", "GraphForceProjector", "SVG", "getHashColor", "D3ForceGraph", "classNames", "model", "selection", "_selection", "grid", "props", "context", "useRef", "projector", "useMemo", "current", "GraphForceProjector", "attributes", "linkForce", "edge", "data", "object", "active", "forces", "point", "strength", "graph", "SelectionModel", "useEffect", "repaint", "selected", "value", "handleSelect", "useCallback", "node", "contains", "id", "remove", "add", "SVG", "Root", "ref", "Markers", "Grid", "axis", "Zoom", "extent", "Graph", "labels", "text", "label", "obj", "color", "getHashColor", "Obj", "getTypename", "classes", "onSelect", "forceLink", "forceManyBody", "NativeForceGraph", "React", "useEffect", "useRef", "useState", "useResizeDetector", "filterObjectsSync", "GraphAdapter", "graph", "_nodes", "_links", "nodes", "map", "node", "id", "type", "data", "edges", "edge", "source", "target", "links", "ForceGraph", "model", "match", "ref", "width", "height", "useResizeDetector", "refreshRate", "rootRef", "useRef", "forceGraph", "filteredRef", "current", "filterObjectsSync", "objects", "data", "setData", "useState", "useEffect", "subscribe", "GraphAdapter", "graph", "NativeForceGraph", "nodeRelSize", "nodeLabel", "node", "type", "typename", "label", "id", "nodeAutoColorBy", "linkAutoColorBy", "link", "pauseAnimation", "graphData", "nodes", "links", "undefined", "onEngineStop", "handleZoomToFit", "onNodeClick", "emitParticle", "d3Force", "forceLink", "distance", "strength", "forceManyBody", "warmupTicks", "cooldownTime", "resumeAnimation", "zoomToFit", "React", "div", "className", "onClick"]
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//
|
|
1
|
+
// src/hooks/useGraphModel.ts
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { SpaceGraphModel } from "@dxos/schema";
|
|
4
4
|
var useGraphModel = (space, filter, options) => {
|
|
@@ -27,4 +27,4 @@ var useGraphModel = (space, filter, options) => {
|
|
|
27
27
|
export {
|
|
28
28
|
useGraphModel
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
30
|
+
//# sourceMappingURL=chunk-OAOY7SHY.mjs.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
//
|
|
1
|
+
// src/components/Chart/Chart.tsx
|
|
2
2
|
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
3
3
|
import * as Plot from "@observablehq/plot";
|
|
4
4
|
import React, { useEffect } from "react";
|
|
5
5
|
import { useResizeDetector } from "react-resize-detector";
|
|
6
6
|
|
|
7
|
-
//
|
|
7
|
+
// src/components/plot.ts
|
|
8
8
|
var createAdapter = (prop, accessor) => accessor ? {
|
|
9
9
|
transform: (values) => values.map((value) => accessor(value)[prop])
|
|
10
10
|
} : prop;
|
|
11
11
|
|
|
12
|
-
//
|
|
12
|
+
// src/components/Chart/Chart.tsx
|
|
13
13
|
var defaultOptions = {
|
|
14
14
|
r: 4,
|
|
15
15
|
stroke: "gray",
|
|
@@ -58,14 +58,14 @@ var Chart = ({ items = [], accessor, options = defaultOptions }) => {
|
|
|
58
58
|
}
|
|
59
59
|
};
|
|
60
60
|
|
|
61
|
-
//
|
|
61
|
+
// src/components/Globe/Globe.tsx
|
|
62
62
|
import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
|
|
63
63
|
import * as Plot2 from "@observablehq/plot";
|
|
64
64
|
import React2, { useEffect as useEffect2 } from "react";
|
|
65
65
|
import { useResizeDetector as useResizeDetector2 } from "react-resize-detector";
|
|
66
66
|
import * as topojson from "topojson-client";
|
|
67
67
|
|
|
68
|
-
//
|
|
68
|
+
// data/countries-110m.js
|
|
69
69
|
var countries_110m_default = {
|
|
70
70
|
type: "Topology",
|
|
71
71
|
objects: {
|
|
@@ -10767,7 +10767,7 @@ var countries_110m_default = {
|
|
|
10767
10767
|
}
|
|
10768
10768
|
};
|
|
10769
10769
|
|
|
10770
|
-
//
|
|
10770
|
+
// src/components/Globe/Globe.tsx
|
|
10771
10771
|
var defaultOptions2 = {
|
|
10772
10772
|
r: 4,
|
|
10773
10773
|
fill: "#003300"
|
|
@@ -10832,14 +10832,14 @@ var Globe = ({ items = [], accessor, projection = "orthographic", options = defa
|
|
|
10832
10832
|
}
|
|
10833
10833
|
};
|
|
10834
10834
|
|
|
10835
|
-
//
|
|
10835
|
+
// src/components/Tree/Tree.tsx
|
|
10836
10836
|
import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
|
|
10837
10837
|
import React3, { useEffect as useEffect3, useRef, useState } from "react";
|
|
10838
10838
|
import { useAsyncState } from "@dxos/react-ui";
|
|
10839
10839
|
import { SVG } from "@dxos/react-ui-graph";
|
|
10840
10840
|
import { SpaceGraphModel } from "@dxos/schema";
|
|
10841
10841
|
|
|
10842
|
-
//
|
|
10842
|
+
// src/components/Tree/layout/HierarchicalEdgeBundling.ts
|
|
10843
10843
|
import { cluster, curveBundle, hierarchy, lineRadial, select } from "d3";
|
|
10844
10844
|
var HierarchicalEdgeBundling = (s, data, options) => {
|
|
10845
10845
|
const svg = select(s);
|
|
@@ -10902,7 +10902,7 @@ var flatten = (node) => {
|
|
|
10902
10902
|
};
|
|
10903
10903
|
var HierarchicalEdgeBundling_default = HierarchicalEdgeBundling;
|
|
10904
10904
|
|
|
10905
|
-
//
|
|
10905
|
+
// src/components/Tree/layout/RadialTree.ts
|
|
10906
10906
|
import { hierarchy as hierarchy2, linkRadial, select as select2, tree } from "d3";
|
|
10907
10907
|
var RadialTree = (s, data, options) => {
|
|
10908
10908
|
const svg = select2(s);
|
|
@@ -10927,7 +10927,7 @@ var RadialTree = (s, data, options) => {
|
|
|
10927
10927
|
};
|
|
10928
10928
|
var RadialTree_default = RadialTree;
|
|
10929
10929
|
|
|
10930
|
-
//
|
|
10930
|
+
// src/components/Tree/layout/TidyTree.ts
|
|
10931
10931
|
import { curveBumpX, hierarchy as hierarchy3, link, select as select3, tree as tree2 } from "d3";
|
|
10932
10932
|
var TidyTree = (s, data, options) => {
|
|
10933
10933
|
const svg = select3(s);
|
|
@@ -10972,11 +10972,11 @@ var TidyTree = (s, data, options) => {
|
|
|
10972
10972
|
};
|
|
10973
10973
|
var TidyTree_default = TidyTree;
|
|
10974
10974
|
|
|
10975
|
-
//
|
|
10975
|
+
// src/components/Tree/types/tree.ts
|
|
10976
10976
|
import { Schema } from "effect";
|
|
10977
10977
|
import { Key, Obj, Type } from "@dxos/echo";
|
|
10978
10978
|
import { invariant } from "@dxos/invariant";
|
|
10979
|
-
var __dxlog_file = "/
|
|
10979
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-explorer/src/components/Tree/types/tree.ts";
|
|
10980
10980
|
var TreeNodeType = Schema.Struct({
|
|
10981
10981
|
id: Key.ObjectId,
|
|
10982
10982
|
children: Schema.mutable(Schema.Array(Key.ObjectId)),
|
|
@@ -11236,13 +11236,13 @@ var Tree = class _Tree {
|
|
|
11236
11236
|
}
|
|
11237
11237
|
};
|
|
11238
11238
|
|
|
11239
|
-
//
|
|
11239
|
+
// src/components/Tree/types/types.ts
|
|
11240
11240
|
var mapGraphToTreeData = (model, maxDepth = 8) => {
|
|
11241
11241
|
let data;
|
|
11242
11242
|
return data;
|
|
11243
11243
|
};
|
|
11244
11244
|
|
|
11245
|
-
//
|
|
11245
|
+
// src/components/Tree/Tree.tsx
|
|
11246
11246
|
var defaultTreeLayoutSlots = {
|
|
11247
11247
|
node: "fill-blue-600",
|
|
11248
11248
|
path: "fill-none stroke-blue-400 stroke-[0.5px]",
|
|
@@ -11315,9 +11315,9 @@ var Tree2 = ({ space, selected, variant = "tidy", onNodeClick }) => {
|
|
|
11315
11315
|
}
|
|
11316
11316
|
};
|
|
11317
11317
|
|
|
11318
|
-
//
|
|
11318
|
+
// src/components/index.ts
|
|
11319
11319
|
import { lazy } from "react";
|
|
11320
|
-
var ExplorerContainer = lazy(() => import("./ExplorerContainer-
|
|
11320
|
+
var ExplorerContainer = lazy(() => import("./ExplorerContainer-OGHSHZD5.mjs"));
|
|
11321
11321
|
|
|
11322
11322
|
export {
|
|
11323
11323
|
Chart,
|
|
@@ -11326,4 +11326,4 @@ export {
|
|
|
11326
11326
|
Tree2 as Tree,
|
|
11327
11327
|
ExplorerContainer
|
|
11328
11328
|
};
|
|
11329
|
-
//# sourceMappingURL=chunk-
|
|
11329
|
+
//# sourceMappingURL=chunk-PVFZFKQ6.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//
|
|
1
|
+
// src/meta.ts
|
|
2
2
|
var EXPLORER_PLUGIN = "dxos.org/plugin/explorer";
|
|
3
3
|
var meta = {
|
|
4
4
|
id: EXPLORER_PLUGIN,
|
|
@@ -18,4 +18,4 @@ export {
|
|
|
18
18
|
EXPLORER_PLUGIN,
|
|
19
19
|
meta
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
21
|
+
//# sourceMappingURL=chunk-UL5EDJPE.mjs.map
|
|
@@ -1,50 +1,51 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useGraphModel
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OAOY7SHY.mjs";
|
|
4
4
|
import {
|
|
5
5
|
Chart,
|
|
6
6
|
ExplorerContainer,
|
|
7
7
|
Globe,
|
|
8
8
|
Tree,
|
|
9
9
|
defaultTreeLayoutSlots
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-PVFZFKQ6.mjs";
|
|
11
11
|
import {
|
|
12
12
|
D3ForceGraph,
|
|
13
13
|
ForceGraph
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-J2BBZOSF.mjs";
|
|
15
15
|
import {
|
|
16
16
|
ExplorerAction,
|
|
17
17
|
ViewType
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-EF4BFHTI.mjs";
|
|
19
19
|
import {
|
|
20
20
|
EXPLORER_PLUGIN,
|
|
21
21
|
meta
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-UL5EDJPE.mjs";
|
|
23
23
|
|
|
24
|
-
//
|
|
24
|
+
// src/ExplorerPlugin.tsx
|
|
25
25
|
import { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from "@dxos/app-framework";
|
|
26
26
|
import { ClientCapabilities, ClientEvents } from "@dxos/plugin-client";
|
|
27
27
|
import { SpaceCapabilities } from "@dxos/plugin-space";
|
|
28
28
|
import { defineObjectForm } from "@dxos/plugin-space/types";
|
|
29
29
|
|
|
30
|
-
//
|
|
30
|
+
// src/capabilities/index.ts
|
|
31
31
|
import { lazy } from "@dxos/app-framework";
|
|
32
|
-
var IntentResolver = lazy(() => import("./intent-resolver-
|
|
33
|
-
var ReactSurface = lazy(() => import("./react-surface-
|
|
32
|
+
var IntentResolver = lazy(() => import("./intent-resolver-XH2UO2FM.mjs"));
|
|
33
|
+
var ReactSurface = lazy(() => import("./react-surface-65VQ42HX.mjs"));
|
|
34
34
|
|
|
35
|
-
//
|
|
36
|
-
|
|
37
|
-
var translations_default = [
|
|
35
|
+
// src/translations.ts
|
|
36
|
+
var translations = [
|
|
38
37
|
{
|
|
39
38
|
"en-US": {
|
|
40
|
-
[
|
|
39
|
+
[ViewType.typename]: {
|
|
41
40
|
"typename label": "Explorer",
|
|
42
41
|
"typename label_zero": "Explorers",
|
|
43
42
|
"typename label_one": "Explorer",
|
|
44
43
|
"typename label_other": "Explorers",
|
|
45
|
-
"object name placeholder": "New explorer"
|
|
44
|
+
"object name placeholder": "New explorer",
|
|
45
|
+
"rename object label": "Rename explorer",
|
|
46
|
+
"delete object label": "Delete explorer"
|
|
46
47
|
},
|
|
47
|
-
[
|
|
48
|
+
[meta.id]: {
|
|
48
49
|
"plugin name": "Explorer",
|
|
49
50
|
"object title label": "Title"
|
|
50
51
|
}
|
|
@@ -52,12 +53,12 @@ var translations_default = [
|
|
|
52
53
|
}
|
|
53
54
|
];
|
|
54
55
|
|
|
55
|
-
//
|
|
56
|
+
// src/ExplorerPlugin.tsx
|
|
56
57
|
var ExplorerPlugin = () => definePlugin(meta, [
|
|
57
58
|
defineModule({
|
|
58
59
|
id: `${meta.id}/module/translations`,
|
|
59
60
|
activatesOn: Events.SetupTranslations,
|
|
60
|
-
activate: () => contributes(Capabilities.Translations,
|
|
61
|
+
activate: () => contributes(Capabilities.Translations, translations)
|
|
61
62
|
}),
|
|
62
63
|
defineModule({
|
|
63
64
|
id: `${meta.id}/module/metadata`,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/ExplorerPlugin.tsx", "../../../src/capabilities/index.ts", "../../../src/translations.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\nimport { defineObjectForm } from '@dxos/plugin-space/types';\n\nimport { IntentResolver, ReactSurface } from './capabilities';\nimport { meta } from './meta';\nimport translations from './translations';\nimport { ViewType, ExplorerAction } from './types';\n\nexport const ExplorerPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () =>\n contributes(Capabilities.Metadata, {\n id: ViewType.typename,\n metadata: {\n icon: 'ph--graph--regular',\n },\n }),\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: ViewType,\n getIntent: () => createIntent(ExplorerAction.Create),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => contributes(ClientCapabilities.Schema, [ViewType]),\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,cAAcC,aAAaC,cAAcC,cAAcC,cAAcC,cAAc;AAC5F,SAASC,oBAAoBC,oBAAoB;AACjD,SAASC,yBAAyB;AAClC,SAASC,wBAAwB;;;ACHjC,SAASC,YAAY;AAEd,IAAMC,iBAAiBC,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMC,eAAeD,KAAK,MAAM,OAAO,8BAAA,CAAA;;;
|
|
6
|
-
"names": ["Capabilities", "contributes", "createIntent", "defineModule", "definePlugin", "Events", "ClientCapabilities", "ClientEvents", "SpaceCapabilities", "defineObjectForm", "lazy", "IntentResolver", "lazy", "ReactSurface", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\nimport { defineObjectForm } from '@dxos/plugin-space/types';\n\nimport { IntentResolver, ReactSurface } from './capabilities';\nimport { meta } from './meta';\nimport { translations } from './translations';\nimport { ViewType, ExplorerAction } from './types';\n\nexport const ExplorerPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () =>\n contributes(Capabilities.Metadata, {\n id: ViewType.typename,\n metadata: {\n icon: 'ph--graph--regular',\n },\n }),\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: ViewType,\n getIntent: () => createIntent(ExplorerAction.Create),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => contributes(ClientCapabilities.Schema, [ViewType]),\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\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';\nimport { ViewType } from './types';\n\nexport const translations = [\n {\n 'en-US': {\n [ViewType.typename]: {\n 'typename label': 'Explorer',\n 'typename label_zero': 'Explorers',\n 'typename label_one': 'Explorer',\n 'typename label_other': 'Explorers',\n 'object name placeholder': 'New explorer',\n 'rename object label': 'Rename explorer',\n 'delete object label': 'Delete explorer',\n },\n [meta.id]: {\n 'plugin name': 'Explorer',\n 'object title label': 'Title',\n },\n },\n },\n] as const satisfies Resource[];\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,cAAcC,aAAaC,cAAcC,cAAcC,cAAcC,cAAc;AAC5F,SAASC,oBAAoBC,oBAAoB;AACjD,SAASC,yBAAyB;AAClC,SAASC,wBAAwB;;;ACHjC,SAASC,YAAY;AAEd,IAAMC,iBAAiBC,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMC,eAAeD,KAAK,MAAM,OAAO,8BAAA,CAAA;;;ACEvC,IAAME,eAAe;EAC1B;IACE,SAAS;MACP,CAACC,SAASC,QAAQ,GAAG;QACnB,kBAAkB;QAClB,uBAAuB;QACvB,sBAAsB;QACtB,wBAAwB;QACxB,2BAA2B;QAC3B,uBAAuB;QACvB,uBAAuB;MACzB;MACA,CAACC,KAAKC,EAAE,GAAG;QACT,eAAe;QACf,sBAAsB;MACxB;IACF;EACF;;;;AFZK,IAAMC,iBAAiB,MAC5BC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,UAAU,MAAMC,YAAYC,aAAaC,cAAcC,YAAAA;EACzD,CAAA;EACAT,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOO;IACpBL,UAAU,MACRC,YAAYC,aAAaI,UAAU;MACjCV,IAAIW,SAASC;MACbC,UAAU;QACRC,MAAM;MACR;IACF,CAAA;EACJ,CAAA;EACAf,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAac,aAAaC;IAC1BZ,UAAU,MACRC,YACEY,kBAAkBC,YAClBC,iBAAiB;MACfC,cAAcT;MACdU,WAAW,MAAMC,aAAaC,eAAeC,MAAM;IACrD,CAAA,CAAA;EAEN,CAAA;EACAzB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAac,aAAaC;IAC1BZ,UAAU,MAAMC,YAAYoB,mBAAmBC,QAAQ;MAACf;KAAS;EACnE,CAAA;EACAZ,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOyB;IACpBvB,UAAUwB;EACZ,CAAA;EACA7B,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAO2B;IACpBzB,UAAU0B;EACZ,CAAA;CACD;",
|
|
6
|
+
"names": ["Capabilities", "contributes", "createIntent", "defineModule", "definePlugin", "Events", "ClientCapabilities", "ClientEvents", "SpaceCapabilities", "defineObjectForm", "lazy", "IntentResolver", "lazy", "ReactSurface", "translations", "ViewType", "typename", "meta", "id", "ExplorerPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "SetupMetadata", "Metadata", "ViewType", "typename", "metadata", "icon", "ClientEvents", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "getIntent", "createIntent", "ExplorerAction", "Create", "ClientCapabilities", "Schema", "SetupReactSurface", "ReactSurface", "SetupIntentResolver", "IntentResolver"]
|
|
7
7
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ExplorerAction,
|
|
3
3
|
ViewType
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-EF4BFHTI.mjs";
|
|
5
|
+
import "./chunk-UL5EDJPE.mjs";
|
|
6
6
|
|
|
7
|
-
//
|
|
7
|
+
// src/capabilities/intent-resolver.ts
|
|
8
8
|
import { contributes, Capabilities, createResolver } from "@dxos/app-framework";
|
|
9
9
|
import { Obj } from "@dxos/echo";
|
|
10
10
|
var intent_resolver_default = () => contributes(Capabilities.IntentResolver, createResolver({
|
|
@@ -21,4 +21,4 @@ var intent_resolver_default = () => contributes(Capabilities.IntentResolver, cre
|
|
|
21
21
|
export {
|
|
22
22
|
intent_resolver_default as default
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=intent-resolver-
|
|
24
|
+
//# sourceMappingURL=intent-resolver-XH2UO2FM.mjs.map
|