@dxos/plugin-explorer 0.8.4-main.2e9d522 → 0.8.4-main.5ad4a44

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 (114) hide show
  1. package/dist/lib/browser/{ExplorerContainer-OGHSHZD5.mjs → ExplorerContainer-S66JDOAF.mjs} +18 -6
  2. package/dist/lib/browser/ExplorerContainer-S66JDOAF.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-UL5EDJPE.mjs → chunk-2DGFNLRO.mjs} +2 -4
  4. package/dist/lib/browser/chunk-2DGFNLRO.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-OAOY7SHY.mjs → chunk-2MKBRIUT.mjs} +6 -5
  6. package/dist/lib/browser/chunk-2MKBRIUT.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-EF4BFHTI.mjs → chunk-4ETQJYX4.mjs} +7 -7
  8. package/dist/lib/browser/chunk-4ETQJYX4.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-J2BBZOSF.mjs → chunk-NXGP6NTP.mjs} +28 -12
  10. package/dist/lib/browser/chunk-NXGP6NTP.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-PVFZFKQ6.mjs → chunk-UCDNCIRV.mjs} +36 -24
  12. package/dist/lib/browser/{chunk-PVFZFKQ6.mjs.map → chunk-UCDNCIRV.mjs.map} +3 -3
  13. package/dist/lib/browser/index.mjs +12 -12
  14. package/dist/lib/browser/index.mjs.map +3 -3
  15. package/dist/lib/browser/{intent-resolver-XH2UO2FM.mjs → intent-resolver-OXJJ3PII.mjs} +6 -6
  16. package/dist/lib/browser/{intent-resolver-XH2UO2FM.mjs.map → intent-resolver-OXJJ3PII.mjs.map} +3 -3
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/meta.mjs +1 -3
  19. package/dist/lib/browser/{react-surface-65VQ42HX.mjs → react-surface-C4EC6ZDZ.mjs} +9 -9
  20. package/dist/lib/browser/react-surface-C4EC6ZDZ.mjs.map +7 -0
  21. package/dist/lib/browser/types/index.mjs +2 -2
  22. package/dist/lib/node-esm/{ExplorerContainer-6ON5NA2P.mjs → ExplorerContainer-GIJN67DO.mjs} +18 -6
  23. package/dist/lib/node-esm/ExplorerContainer-GIJN67DO.mjs.map +7 -0
  24. package/dist/lib/node-esm/{chunk-PPBUWC7F.mjs → chunk-3ODK27PU.mjs} +6 -5
  25. package/dist/lib/node-esm/chunk-3ODK27PU.mjs.map +7 -0
  26. package/dist/lib/node-esm/{chunk-4VMSNXYL.mjs → chunk-6JACZE7E.mjs} +28 -12
  27. package/dist/lib/node-esm/chunk-6JACZE7E.mjs.map +7 -0
  28. package/dist/lib/node-esm/{chunk-VKCOKQRG.mjs → chunk-AGHU3KVI.mjs} +7 -7
  29. package/dist/lib/node-esm/chunk-AGHU3KVI.mjs.map +7 -0
  30. package/dist/lib/node-esm/{chunk-PIAXA43R.mjs → chunk-PX6LHR2N.mjs} +2 -4
  31. package/dist/lib/node-esm/chunk-PX6LHR2N.mjs.map +7 -0
  32. package/dist/lib/node-esm/{chunk-S5A2EUSJ.mjs → chunk-WHKUQG5M.mjs} +36 -24
  33. package/dist/lib/node-esm/{chunk-S5A2EUSJ.mjs.map → chunk-WHKUQG5M.mjs.map} +3 -3
  34. package/dist/lib/node-esm/index.mjs +12 -12
  35. package/dist/lib/node-esm/index.mjs.map +3 -3
  36. package/dist/lib/node-esm/{intent-resolver-AGBBNA67.mjs → intent-resolver-GVM36TJX.mjs} +6 -6
  37. package/dist/lib/node-esm/{intent-resolver-AGBBNA67.mjs.map → intent-resolver-GVM36TJX.mjs.map} +3 -3
  38. package/dist/lib/node-esm/meta.json +1 -1
  39. package/dist/lib/node-esm/meta.mjs +1 -3
  40. package/dist/lib/node-esm/{react-surface-IJIMYAST.mjs → react-surface-YGGLTBF3.mjs} +9 -9
  41. package/dist/lib/node-esm/react-surface-YGGLTBF3.mjs.map +7 -0
  42. package/dist/lib/node-esm/types/index.mjs +2 -2
  43. package/dist/types/src/ExplorerPlugin.d.ts +1 -1
  44. package/dist/types/src/ExplorerPlugin.d.ts.map +1 -1
  45. package/dist/types/src/capabilities/index.d.ts +2 -2
  46. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  47. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  48. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  49. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  50. package/dist/types/src/components/Chart/Chart.d.ts.map +1 -1
  51. package/dist/types/src/components/Chart/Chart.stories.d.ts +8 -4
  52. package/dist/types/src/components/Chart/Chart.stories.d.ts.map +1 -1
  53. package/dist/types/src/components/ExplorerContainer.d.ts.map +1 -1
  54. package/dist/types/src/components/Globe/Globe.d.ts.map +1 -1
  55. package/dist/types/src/components/Globe/Globe.stories.d.ts +8 -4
  56. package/dist/types/src/components/Globe/Globe.stories.d.ts.map +1 -1
  57. package/dist/types/src/components/Graph/D3ForceGraph.d.ts +2 -2
  58. package/dist/types/src/components/Graph/D3ForceGraph.d.ts.map +1 -1
  59. package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts +13 -4
  60. package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts.map +1 -1
  61. package/dist/types/src/components/Graph/ForceGraph.stories.d.ts +13 -4
  62. package/dist/types/src/components/Graph/ForceGraph.stories.d.ts.map +1 -1
  63. package/dist/types/src/components/Graph/testing.d.ts +1 -1
  64. package/dist/types/src/components/Graph/testing.d.ts.map +1 -1
  65. package/dist/types/src/components/Tree/Tree.stories.d.ts +13 -16
  66. package/dist/types/src/components/Tree/Tree.stories.d.ts.map +1 -1
  67. package/dist/types/src/components/Tree/types/tree.d.ts +1 -1
  68. package/dist/types/src/components/Tree/types/tree.d.ts.map +1 -1
  69. package/dist/types/src/hooks/useGraphModel.d.ts +2 -2
  70. package/dist/types/src/hooks/useGraphModel.d.ts.map +1 -1
  71. package/dist/types/src/meta.d.ts +0 -1
  72. package/dist/types/src/meta.d.ts.map +1 -1
  73. package/dist/types/src/translations.d.ts +12 -0
  74. package/dist/types/src/translations.d.ts.map +1 -1
  75. package/dist/types/src/types/schema.d.ts +3 -3
  76. package/dist/types/src/types/schema.d.ts.map +1 -1
  77. package/dist/types/src/types/types.d.ts +3 -3
  78. package/dist/types/src/types/types.d.ts.map +1 -1
  79. package/dist/types/tsconfig.tsbuildinfo +1 -1
  80. package/package.json +40 -36
  81. package/src/ExplorerPlugin.tsx +46 -47
  82. package/src/capabilities/intent-resolver.ts +1 -1
  83. package/src/capabilities/react-surface.tsx +2 -2
  84. package/src/components/Chart/Chart.stories.tsx +9 -7
  85. package/src/components/Chart/Chart.tsx +1 -1
  86. package/src/components/ExplorerContainer.tsx +18 -4
  87. package/src/components/Globe/Globe.stories.tsx +14 -12
  88. package/src/components/Globe/Globe.tsx +1 -1
  89. package/src/components/Graph/D3ForceGraph.stories.tsx +15 -11
  90. package/src/components/Graph/D3ForceGraph.tsx +5 -5
  91. package/src/components/Graph/ForceGraph.stories.tsx +15 -11
  92. package/src/components/Graph/ForceGraph.tsx +4 -4
  93. package/src/components/Graph/testing.ts +2 -2
  94. package/src/components/Tree/Tree.stories.tsx +28 -22
  95. package/src/components/Tree/Tree.tsx +3 -3
  96. package/src/components/Tree/types/tree.test.ts +2 -1
  97. package/src/components/Tree/types/tree.ts +1 -1
  98. package/src/hooks/useGraphModel.ts +5 -4
  99. package/src/meta.ts +1 -3
  100. package/src/translations.ts +2 -0
  101. package/src/types/schema.ts +2 -2
  102. package/src/types/types.ts +4 -3
  103. package/dist/lib/browser/ExplorerContainer-OGHSHZD5.mjs.map +0 -7
  104. package/dist/lib/browser/chunk-EF4BFHTI.mjs.map +0 -7
  105. package/dist/lib/browser/chunk-J2BBZOSF.mjs.map +0 -7
  106. package/dist/lib/browser/chunk-OAOY7SHY.mjs.map +0 -7
  107. package/dist/lib/browser/chunk-UL5EDJPE.mjs.map +0 -7
  108. package/dist/lib/browser/react-surface-65VQ42HX.mjs.map +0 -7
  109. package/dist/lib/node-esm/ExplorerContainer-6ON5NA2P.mjs.map +0 -7
  110. package/dist/lib/node-esm/chunk-4VMSNXYL.mjs.map +0 -7
  111. package/dist/lib/node-esm/chunk-PIAXA43R.mjs.map +0 -7
  112. package/dist/lib/node-esm/chunk-PPBUWC7F.mjs.map +0 -7
  113. package/dist/lib/node-esm/chunk-VKCOKQRG.mjs.map +0 -7
  114. package/dist/lib/node-esm/react-surface-IJIMYAST.mjs.map +0 -7
@@ -1,28 +1,40 @@
1
1
  import {
2
2
  useGraphModel
3
- } from "./chunk-OAOY7SHY.mjs";
3
+ } from "./chunk-2MKBRIUT.mjs";
4
4
  import {
5
5
  D3ForceGraph
6
- } from "./chunk-J2BBZOSF.mjs";
6
+ } from "./chunk-NXGP6NTP.mjs";
7
7
 
8
8
  // src/components/ExplorerContainer.tsx
9
9
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
10
- import React from "react";
10
+ import React, { useCallback, useMemo, useState } from "react";
11
+ import { QueryBuilder } from "@dxos/echo-query";
11
12
  import { useGlobalSearch } from "@dxos/plugin-search";
12
13
  import { getSpace } from "@dxos/react-client/echo";
14
+ import { Toolbar } from "@dxos/react-ui";
15
+ import { QueryEditor } from "@dxos/react-ui-components";
13
16
  import { StackItem } from "@dxos/react-ui-stack";
14
17
  var ExplorerContainer = ({ role, view }) => {
15
18
  var _effect = _useSignals();
16
19
  try {
17
20
  const space = getSpace(view);
18
- const model = useGraphModel(space);
21
+ const [filter, setFilter] = useState();
22
+ const model = useGraphModel(space, filter);
19
23
  const { match } = useGlobalSearch();
24
+ const builder = useMemo(() => new QueryBuilder(), []);
25
+ const handleChange = useCallback((value) => {
26
+ setFilter(builder.build(value));
27
+ }, []);
20
28
  if (!space || !model) {
21
29
  return null;
22
30
  }
23
31
  return /* @__PURE__ */ React.createElement(StackItem.Content, {
32
+ toolbar: true,
24
33
  size: role === "section" ? "square" : "intrinsic"
25
- }, /* @__PURE__ */ React.createElement(D3ForceGraph, {
34
+ }, /* @__PURE__ */ React.createElement(Toolbar.Root, null, /* @__PURE__ */ React.createElement(QueryEditor, {
35
+ space,
36
+ onChange: handleChange
37
+ })), /* @__PURE__ */ React.createElement(D3ForceGraph, {
26
38
  model,
27
39
  match
28
40
  }));
@@ -34,4 +46,4 @@ var ExplorerContainer_default = ExplorerContainer;
34
46
  export {
35
47
  ExplorerContainer_default as default
36
48
  };
37
- //# sourceMappingURL=ExplorerContainer-OGHSHZD5.mjs.map
49
+ //# sourceMappingURL=ExplorerContainer-S66JDOAF.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ExplorerContainer.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { type Filter } from '@dxos/echo';\nimport { QueryBuilder } from '@dxos/echo-query';\nimport { useGlobalSearch } from '@dxos/plugin-search';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { Toolbar } from '@dxos/react-ui';\nimport { QueryEditor, type QueryEditorProps } from '@dxos/react-ui-components';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { useGraphModel } from '../hooks';\nimport { type ViewType } from '../types';\n\nimport { D3ForceGraph } from './Graph';\n\ntype ExplorerContainerProps = {\n role: string;\n view: ViewType;\n};\n\nconst ExplorerContainer = ({ role, view }: ExplorerContainerProps) => {\n const space = getSpace(view);\n const [filter, setFilter] = useState<Filter.Any>();\n const model = useGraphModel(space, filter);\n const { match } = useGlobalSearch();\n\n const builder = useMemo(() => new QueryBuilder(), []);\n const handleChange = useCallback<NonNullable<QueryEditorProps['onChange']>>((value) => {\n setFilter(builder.build(value));\n }, []);\n\n if (!space || !model) {\n return null;\n }\n\n return (\n <StackItem.Content toolbar size={role === 'section' ? 'square' : 'intrinsic'}>\n <Toolbar.Root>\n <QueryEditor space={space} onChange={handleChange} />\n </Toolbar.Root>\n <D3ForceGraph model={model} match={match} />\n </StackItem.Content>\n );\n};\n\nexport default ExplorerContainer;\n"],
5
+ "mappings": ";;;;;;;;;AAIA,OAAOA,SAASC,aAAaC,SAASC,gBAAgB;AAGtD,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAChC,SAASC,gBAAgB;AACzB,SAASC,eAAe;AACxB,SAASC,mBAA0C;AACnD,SAASC,iBAAiB;AAY1B,IAAMC,oBAAoB,CAAC,EAAEC,MAAMC,KAAI,MAA0B;;;AAC/D,UAAMC,QAAQC,SAASF,IAAAA;AACvB,UAAM,CAACG,QAAQC,SAAAA,IAAaC,SAAAA;AAC5B,UAAMC,QAAQC,cAAcN,OAAOE,MAAAA;AACnC,UAAM,EAAEK,MAAK,IAAKC,gBAAAA;AAElB,UAAMC,UAAUC,QAAQ,MAAM,IAAIC,aAAAA,GAAgB,CAAA,CAAE;AACpD,UAAMC,eAAeC,YAAuD,CAACC,UAAAA;AAC3EX,gBAAUM,QAAQM,MAAMD,KAAAA,CAAAA;IAC1B,GAAG,CAAA,CAAE;AAEL,QAAI,CAACd,SAAS,CAACK,OAAO;AACpB,aAAO;IACT;AAEA,WACE,sBAAA,cAACW,UAAUC,SAAO;MAACC,SAAAA;MAAQC,MAAMrB,SAAS,YAAY,WAAW;OAC/D,sBAAA,cAACsB,QAAQC,MAAI,MACX,sBAAA,cAACC,aAAAA;MAAYtB;MAAcuB,UAAUX;SAEvC,sBAAA,cAACY,cAAAA;MAAanB;MAAcE;;;;;AAGlC;AAEA,IAAA,4BAAeV;",
6
+ "names": ["React", "useCallback", "useMemo", "useState", "QueryBuilder", "useGlobalSearch", "getSpace", "Toolbar", "QueryEditor", "StackItem", "ExplorerContainer", "role", "view", "space", "getSpace", "filter", "setFilter", "useState", "model", "useGraphModel", "match", "useGlobalSearch", "builder", "useMemo", "QueryBuilder", "handleChange", "useCallback", "value", "build", "StackItem", "Content", "toolbar", "size", "Toolbar", "Root", "QueryEditor", "onChange", "D3ForceGraph"]
7
+ }
@@ -1,7 +1,6 @@
1
1
  // src/meta.ts
2
- var EXPLORER_PLUGIN = "dxos.org/plugin/explorer";
3
2
  var meta = {
4
- id: EXPLORER_PLUGIN,
3
+ id: "dxos.org/plugin/explorer",
5
4
  name: "Explorer",
6
5
  description: "Install this plugin to view a hypergraph of all objects inside of your Space.",
7
6
  icon: "ph--graph--regular",
@@ -15,7 +14,6 @@ var meta = {
15
14
  };
16
15
 
17
16
  export {
18
- EXPLORER_PLUGIN,
19
17
  meta
20
18
  };
21
- //# sourceMappingURL=chunk-UL5EDJPE.mjs.map
19
+ //# sourceMappingURL=chunk-2DGFNLRO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const meta: PluginMeta = {\n id: 'dxos.org/plugin/explorer',\n name: 'Explorer',\n description: 'Install this plugin to view a hypergraph of all objects inside of your Space.',\n icon: 'ph--graph--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-explorer',\n tags: ['labs'],\n screenshots: ['https://dxos.network/plugin-details-explorer-dark.png'],\n};\n"],
5
+ "mappings": ";AAMO,IAAMA,OAAmB;EAC9BC,IAAI;EACJC,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;EACRC,MAAM;IAAC;;EACPC,aAAa;IAAC;;AAChB;",
6
+ "names": ["meta", "id", "name", "description", "icon", "source", "tags", "screenshots"]
7
+ }
@@ -1,7 +1,7 @@
1
1
  // src/hooks/useGraphModel.ts
2
2
  import { useEffect, useState } from "react";
3
3
  import { SpaceGraphModel } from "@dxos/schema";
4
- var useGraphModel = (space, filter, options) => {
4
+ var useGraphModel = (space, filter, options, queue) => {
5
5
  const [model, setModel] = useState(void 0);
6
6
  useEffect(() => {
7
7
  if (!space) {
@@ -9,9 +9,9 @@ var useGraphModel = (space, filter, options) => {
9
9
  setModel(void 0);
10
10
  return;
11
11
  }
12
- if (!model) {
12
+ if (!model || model.queue !== queue) {
13
13
  const model2 = new SpaceGraphModel().setFilter(filter).setOptions(options);
14
- void model2.open(space);
14
+ void model2.open(space, queue);
15
15
  setModel(model2);
16
16
  } else {
17
17
  model.setFilter(filter).setOptions(options);
@@ -19,7 +19,8 @@ var useGraphModel = (space, filter, options) => {
19
19
  }, [
20
20
  space,
21
21
  filter,
22
- options
22
+ options,
23
+ queue
23
24
  ]);
24
25
  return model;
25
26
  };
@@ -27,4 +28,4 @@ var useGraphModel = (space, filter, options) => {
27
28
  export {
28
29
  useGraphModel
29
30
  };
30
- //# sourceMappingURL=chunk-OAOY7SHY.mjs.map
31
+ //# sourceMappingURL=chunk-2MKBRIUT.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/useGraphModel.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Filter, type Queue, type Space } from '@dxos/client/echo';\nimport { SpaceGraphModel, type SpaceGraphModelOptions } from '@dxos/schema';\n\n// TODO(burdon): Factor out.\nexport const useGraphModel = (\n space: Space | undefined,\n filter?: Filter.Any | undefined,\n options?: SpaceGraphModelOptions,\n queue?: Queue,\n): SpaceGraphModel | undefined => {\n const [model, setModel] = useState<SpaceGraphModel | undefined>(undefined);\n useEffect(() => {\n if (!space) {\n void model?.close();\n setModel(undefined);\n return;\n }\n\n // TODO(burdon): Does this need to be a dependency?\n if (!model || model.queue !== queue) {\n const model = new SpaceGraphModel().setFilter(filter).setOptions(options);\n void model.open(space, queue);\n setModel(model);\n } else {\n model.setFilter(filter).setOptions(options);\n }\n }, [space, filter, options, queue]);\n\n return model;\n};\n"],
5
+ "mappings": ";AAIA,SAASA,WAAWC,gBAAgB;AAGpC,SAASC,uBAAoD;AAGtD,IAAMC,gBAAgB,CAC3BC,OACAC,QACAC,SACAC,UAAAA;AAEA,QAAM,CAACC,OAAOC,QAAAA,IAAYC,SAAsCC,MAAAA;AAChEC,YAAU,MAAA;AACR,QAAI,CAACR,OAAO;AACV,WAAKI,OAAOK,MAAAA;AACZJ,eAASE,MAAAA;AACT;IACF;AAGA,QAAI,CAACH,SAASA,MAAMD,UAAUA,OAAO;AACnC,YAAMC,SAAQ,IAAIM,gBAAAA,EAAkBC,UAAUV,MAAAA,EAAQW,WAAWV,OAAAA;AACjE,WAAKE,OAAMS,KAAKb,OAAOG,KAAAA;AACvBE,eAASD,MAAAA;IACX,OAAO;AACLA,YAAMO,UAAUV,MAAAA,EAAQW,WAAWV,OAAAA;IACrC;EACF,GAAG;IAACF;IAAOC;IAAQC;IAASC;GAAM;AAElC,SAAOC;AACT;",
6
+ "names": ["useEffect", "useState", "SpaceGraphModel", "useGraphModel", "space", "filter", "options", "queue", "model", "setModel", "useState", "undefined", "useEffect", "close", "SpaceGraphModel", "setFilter", "setOptions", "open"]
7
+ }
@@ -1,10 +1,10 @@
1
1
  import {
2
- EXPLORER_PLUGIN
3
- } from "./chunk-UL5EDJPE.mjs";
2
+ meta
3
+ } from "./chunk-2DGFNLRO.mjs";
4
4
 
5
5
  // src/types/schema.ts
6
- import { Schema } from "effect";
7
- import { TypedObject } from "@dxos/echo-schema";
6
+ import * as Schema from "effect/Schema";
7
+ import { TypedObject } from "@dxos/echo/internal";
8
8
  var ViewType = class extends TypedObject({
9
9
  typename: "dxos.org/type/ExplorerView",
10
10
  version: "0.1.0"
@@ -15,9 +15,9 @@ var ViewType = class extends TypedObject({
15
15
  };
16
16
 
17
17
  // src/types/types.ts
18
- import { Schema as Schema2 } from "effect";
18
+ import * as Schema2 from "effect/Schema";
19
19
  (function(ExplorerAction2) {
20
- const EXPLORER_ACTION = `${EXPLORER_PLUGIN}/action`;
20
+ const EXPLORER_ACTION = `${meta.id}/action`;
21
21
  class Create extends Schema2.TaggedClass()(`${EXPLORER_ACTION}/create`, {
22
22
  input: Schema2.Struct({
23
23
  name: Schema2.optional(Schema2.String)
@@ -35,4 +35,4 @@ export {
35
35
  ViewType,
36
36
  ExplorerAction
37
37
  };
38
- //# sourceMappingURL=chunk-EF4BFHTI.mjs.map
38
+ //# sourceMappingURL=chunk-4ETQJYX4.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { TypedObject } from '@dxos/echo/internal';\n\n// TODO(burdon): Clashes with sdk/view.\nexport class ViewType extends TypedObject({\n typename: 'dxos.org/type/ExplorerView',\n version: '0.1.0',\n})({\n name: Schema.optional(Schema.String),\n type: Schema.String,\n}) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { meta } from '../meta';\n\nimport { ViewType } from './schema';\n\nexport namespace ExplorerAction {\n const EXPLORER_ACTION = `${meta.id}/action`;\n\n export class Create extends Schema.TaggedClass<Create>()(`${EXPLORER_ACTION}/create`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: ViewType,\n }),\n }) {}\n}\n"],
5
+ "mappings": ";;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,mBAAmB;AAGrB,IAAMC,WAAN,cAAuBC,YAAY;EACxCC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;EACDC,MAAaC,gBAAgBC,aAAM;EACnCC,MAAaD;AACf,CAAA,EAAA;AAAI;;;ACXJ,YAAYE,aAAY;UAMPC,iBAAAA;AACf,QAAMC,kBAAkB,GAAGC,KAAKC,EAAE;EAE3B,MAAMC,eAAsBC,oBAAW,EAAW,GAAGJ,eAAAA,WAA0B;IACpFK,OAAcC,eAAO;MACnBC,MAAaC,iBAAgBC,cAAM;IACrC,CAAA;IACAC,QAAeJ,eAAO;MACpBK,QAAQC;IACV,CAAA;EACF,CAAA,EAAA;EAAI;kBAPST,SAAAA;AAQf,GAXiBJ,mBAAAA,iBAAAA,CAAAA,EAAAA;;",
6
+ "names": ["Schema", "TypedObject", "ViewType", "TypedObject", "typename", "version", "name", "optional", "String", "type", "Schema", "ExplorerAction", "EXPLORER_ACTION", "meta", "id", "Create", "TaggedClass", "input", "Struct", "name", "optional", "String", "output", "object", "ViewType"]
7
+ }
@@ -4,7 +4,7 @@ import React, { useCallback, useEffect, useMemo, useRef } from "react";
4
4
  import { Obj } from "@dxos/echo";
5
5
  import { SelectionModel } from "@dxos/graph";
6
6
  import { GraphForceProjector, SVG } from "@dxos/react-ui-graph";
7
- import { getHashColor } from "@dxos/react-ui-theme";
7
+ import { getHashStyles } from "@dxos/react-ui-theme";
8
8
  import "@dxos/react-ui-graph/styles/graph.css";
9
9
  var D3ForceGraph = ({ classNames, model, selection: _selection, grid, ...props }) => {
10
10
  var _effect = _useSignals();
@@ -69,7 +69,7 @@ var D3ForceGraph = ({ classNames, model, selection: _selection, grid, ...props }
69
69
  const obj = node.data?.data.object;
70
70
  return {
71
71
  data: {
72
- color: getHashColor(obj && Obj.getTypename(obj))?.color
72
+ color: getHashStyles(obj && Obj.getTypename(obj))?.hue
73
73
  },
74
74
  classes: {
75
75
  "dx-selected": selection.contains(node.id)
@@ -93,8 +93,30 @@ import { useResizeDetector } from "react-resize-detector";
93
93
  import { filterObjectsSync } from "@dxos/plugin-search";
94
94
 
95
95
  // src/components/Graph/adapter.ts
96
+ function _define_property(obj, key, value) {
97
+ if (key in obj) {
98
+ Object.defineProperty(obj, key, {
99
+ value,
100
+ enumerable: true,
101
+ configurable: true,
102
+ writable: true
103
+ });
104
+ } else {
105
+ obj[key] = value;
106
+ }
107
+ return obj;
108
+ }
96
109
  var GraphAdapter = class {
110
+ get nodes() {
111
+ return this._nodes;
112
+ }
113
+ get links() {
114
+ return this._links;
115
+ }
97
116
  constructor(graph) {
117
+ _define_property(this, "graph", void 0);
118
+ _define_property(this, "_nodes", void 0);
119
+ _define_property(this, "_links", void 0);
98
120
  this.graph = graph;
99
121
  this._nodes = [];
100
122
  this._links = [];
@@ -110,12 +132,6 @@ var GraphAdapter = class {
110
132
  data: edge.data
111
133
  }));
112
134
  }
113
- get nodes() {
114
- return this._nodes;
115
- }
116
- get links() {
117
- return this._links;
118
- }
119
135
  };
120
136
 
121
137
  // src/components/Graph/ForceGraph.tsx
@@ -126,8 +142,8 @@ var ForceGraph = ({ model, match }) => {
126
142
  refreshRate: 200
127
143
  });
128
144
  const rootRef = useRef2(null);
129
- const forceGraph = useRef2();
130
- const filteredRef = useRef2();
145
+ const forceGraph = useRef2(null);
146
+ const filteredRef = useRef2([]);
131
147
  filteredRef.current = filterObjectsSync(model?.objects ?? [], match);
132
148
  const [data, setData] = useState();
133
149
  useEffect2(() => {
@@ -146,7 +162,7 @@ var ForceGraph = ({ model, match }) => {
146
162
  nodes: [],
147
163
  links: []
148
164
  });
149
- forceGraph.current = void 0;
165
+ forceGraph.current = null;
150
166
  };
151
167
  }, []);
152
168
  useEffect2(() => {
@@ -184,4 +200,4 @@ export {
184
200
  D3ForceGraph,
185
201
  ForceGraph
186
202
  };
187
- //# sourceMappingURL=chunk-J2BBZOSF.mjs.map
203
+ //# sourceMappingURL=chunk-NXGP6NTP.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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, { 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 { getHashStyles } from '@dxos/react-ui-theme';\nimport { type SpaceGraphEdge, type SpaceGraphModel, type SpaceGraphNode } 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 = ({ classNames, model, selection: _selection, grid, ...props }: D3ForceGraphProps) => {\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: getHashStyles(obj && Obj.getTypename(obj))?.hue,\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 { type SearchResult, filterObjectsSync } 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>(null);\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 = null;\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
+ "names": ["React", "useCallback", "useEffect", "useMemo", "useRef", "Obj", "SelectionModel", "GraphForceProjector", "SVG", "getHashStyles", "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", "getHashStyles", "Obj", "getTypename", "hue", "classes", "onSelect", "forceLink", "forceManyBody", "NativeForceGraph", "React", "useEffect", "useRef", "useState", "useResizeDetector", "filterObjectsSync", "GraphAdapter", "nodes", "_nodes", "links", "_links", "graph", "map", "node", "id", "type", "data", "edges", "edge", "source", "target", "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", "onEngineStop", "handleZoomToFit", "onNodeClick", "emitParticle", "d3Force", "forceLink", "distance", "strength", "forceManyBody", "warmupTicks", "cooldownTime", "resumeAnimation", "zoomToFit", "React", "div", "className", "onClick"]
7
+ }
@@ -10973,9 +10973,22 @@ var TidyTree = (s, data, options) => {
10973
10973
  var TidyTree_default = TidyTree;
10974
10974
 
10975
10975
  // src/components/Tree/types/tree.ts
10976
- import { Schema } from "effect";
10976
+ import * as Schema from "effect/Schema";
10977
10977
  import { Key, Obj, Type } from "@dxos/echo";
10978
10978
  import { invariant } from "@dxos/invariant";
10979
+ function _define_property(obj, key, value) {
10980
+ if (key in obj) {
10981
+ Object.defineProperty(obj, key, {
10982
+ value,
10983
+ enumerable: true,
10984
+ configurable: true,
10985
+ writable: true
10986
+ });
10987
+ } else {
10988
+ obj[key] = value;
10989
+ }
10990
+ return obj;
10991
+ }
10979
10992
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-explorer/src/components/Tree/types/tree.ts";
10980
10993
  var TreeNodeType = Schema.Struct({
10981
10994
  id: Key.ObjectId,
@@ -10997,26 +11010,6 @@ var TreeType = Schema.Struct({
10997
11010
  version: "0.1.0"
10998
11011
  }));
10999
11012
  var Tree = class _Tree {
11000
- static {
11001
- this.create = () => {
11002
- const id = Key.ObjectId.random();
11003
- return Obj.make(TreeType, {
11004
- root: id,
11005
- nodes: {
11006
- [id]: {
11007
- id,
11008
- children: [],
11009
- data: {
11010
- text: ""
11011
- }
11012
- }
11013
- }
11014
- });
11015
- };
11016
- }
11017
- constructor(tree3) {
11018
- this._tree = tree3 ?? _Tree.create();
11019
- }
11020
11013
  get tree() {
11021
11014
  return this._tree;
11022
11015
  }
@@ -11234,7 +11227,26 @@ var Tree = class _Tree {
11234
11227
  ancestor.children.splice(parentIdx + 1, 0, node.id);
11235
11228
  node.children.push(...rest);
11236
11229
  }
11230
+ constructor(tree3) {
11231
+ _define_property(this, "_tree", void 0);
11232
+ this._tree = tree3 ?? _Tree.create();
11233
+ }
11237
11234
  };
11235
+ _define_property(Tree, "create", () => {
11236
+ const id = Key.ObjectId.random();
11237
+ return Obj.make(TreeType, {
11238
+ root: id,
11239
+ nodes: {
11240
+ [id]: {
11241
+ id,
11242
+ children: [],
11243
+ data: {
11244
+ text: ""
11245
+ }
11246
+ }
11247
+ }
11248
+ });
11249
+ });
11238
11250
 
11239
11251
  // src/components/Tree/types/types.ts
11240
11252
  var mapGraphToTreeData = (model, maxDepth = 8) => {
@@ -11280,7 +11292,7 @@ var Tree2 = ({ space, selected, variant = "tidy", onNodeClick }) => {
11280
11292
  ]);
11281
11293
  const context = useRef(null);
11282
11294
  useEffect3(() => {
11283
- if (context.current) {
11295
+ if (context.current?.size) {
11284
11296
  const { width, height } = context.current.size;
11285
11297
  const size = Math.min(width, height);
11286
11298
  const radius = size * 0.4;
@@ -11317,7 +11329,7 @@ var Tree2 = ({ space, selected, variant = "tidy", onNodeClick }) => {
11317
11329
 
11318
11330
  // src/components/index.ts
11319
11331
  import { lazy } from "react";
11320
- var ExplorerContainer = lazy(() => import("./ExplorerContainer-OGHSHZD5.mjs"));
11332
+ var ExplorerContainer = lazy(() => import("./ExplorerContainer-S66JDOAF.mjs"));
11321
11333
 
11322
11334
  export {
11323
11335
  Chart,
@@ -11326,4 +11338,4 @@ export {
11326
11338
  Tree2 as Tree,
11327
11339
  ExplorerContainer
11328
11340
  };
11329
- //# sourceMappingURL=chunk-PVFZFKQ6.mjs.map
11341
+ //# sourceMappingURL=chunk-UCDNCIRV.mjs.map