@dxos/plugin-registry 0.7.5-main.ff8607b → 0.7.5-staging.2ff1350

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 (36) hide show
  1. package/dist/lib/browser/{app-graph-builder-PPWF5KP5.mjs → app-graph-builder-Z6FZXJWI.mjs} +10 -10
  2. package/dist/lib/browser/{app-graph-builder-PPWF5KP5.mjs.map → app-graph-builder-Z6FZXJWI.mjs.map} +1 -1
  3. package/dist/lib/browser/{chunk-RGSIE33X.mjs → chunk-H6GNIIDK.mjs} +2 -2
  4. package/dist/lib/browser/{chunk-RGSIE33X.mjs.map → chunk-H6GNIIDK.mjs.map} +1 -1
  5. package/dist/lib/browser/index.mjs +8 -7
  6. package/dist/lib/browser/index.mjs.map +3 -3
  7. package/dist/lib/browser/{intent-resolver-2JQUQJI5.mjs → intent-resolver-QW333HWJ.mjs} +2 -2
  8. package/dist/lib/browser/meta.json +1 -1
  9. package/dist/lib/browser/{react-surface-NRETIUCH.mjs → react-surface-6JN3QJEF.mjs} +54 -25
  10. package/dist/lib/browser/react-surface-6JN3QJEF.mjs.map +7 -0
  11. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  12. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  13. package/dist/types/src/components/PluginDetail.d.ts +1 -2
  14. package/dist/types/src/components/PluginDetail.d.ts.map +1 -1
  15. package/dist/types/src/components/PluginItem.d.ts +3 -2
  16. package/dist/types/src/components/PluginItem.d.ts.map +1 -1
  17. package/dist/types/src/components/PluginList.d.ts +1 -2
  18. package/dist/types/src/components/PluginList.d.ts.map +1 -1
  19. package/dist/types/src/components/RegistryContainer.d.ts +1 -2
  20. package/dist/types/src/components/RegistryContainer.d.ts.map +1 -1
  21. package/dist/types/src/meta.d.ts +1 -1
  22. package/dist/types/src/meta.d.ts.map +1 -1
  23. package/dist/types/src/translations.d.ts +1 -0
  24. package/dist/types/src/translations.d.ts.map +1 -1
  25. package/package.json +17 -16
  26. package/src/RegistryPlugin.tsx +2 -2
  27. package/src/capabilities/app-graph-builder.ts +8 -8
  28. package/src/capabilities/react-surface.tsx +8 -8
  29. package/src/components/PluginDetail.tsx +1 -1
  30. package/src/components/PluginItem.tsx +25 -2
  31. package/src/components/PluginList.stories.tsx +1 -1
  32. package/src/components/RegistryContainer.tsx +57 -27
  33. package/src/meta.ts +1 -1
  34. package/src/translations.ts +1 -0
  35. package/dist/lib/browser/react-surface-NRETIUCH.mjs.map +0 -7
  36. /package/dist/lib/browser/{intent-resolver-2JQUQJI5.mjs.map → intent-resolver-QW333HWJ.mjs.map} +0 -0
@@ -2,7 +2,7 @@ import {
2
2
  REGISTRY_ID,
3
3
  REGISTRY_KEY,
4
4
  REGISTRY_PLUGIN
5
- } from "./chunk-RGSIE33X.mjs";
5
+ } from "./chunk-H6GNIIDK.mjs";
6
6
 
7
7
  // packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts
8
8
  import { Capabilities, contributes, createIntent, SettingsAction } from "@dxos/app-framework";
@@ -50,9 +50,9 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
50
50
  },
51
51
  nodes: [
52
52
  {
53
- id: `${REGISTRY_KEY}:all`,
53
+ id: `${REGISTRY_KEY}+all`,
54
54
  type: "category",
55
- data: `${REGISTRY_KEY}:all`,
55
+ data: `${REGISTRY_KEY}+all`,
56
56
  properties: {
57
57
  label: [
58
58
  "all plugins label",
@@ -66,9 +66,9 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
66
66
  }
67
67
  },
68
68
  {
69
- id: `${REGISTRY_KEY}:installed`,
69
+ id: `${REGISTRY_KEY}+installed`,
70
70
  type: "category",
71
- data: `${REGISTRY_KEY}:installed`,
71
+ data: `${REGISTRY_KEY}+installed`,
72
72
  properties: {
73
73
  label: [
74
74
  "installed plugins label",
@@ -82,9 +82,9 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
82
82
  }
83
83
  },
84
84
  {
85
- id: `${REGISTRY_KEY}:recommended`,
85
+ id: `${REGISTRY_KEY}+recommended`,
86
86
  type: "category",
87
- data: `${REGISTRY_KEY}:recommended`,
87
+ data: `${REGISTRY_KEY}+recommended`,
88
88
  properties: {
89
89
  label: [
90
90
  "recommended plugins label",
@@ -98,9 +98,9 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
98
98
  }
99
99
  },
100
100
  {
101
- id: `${REGISTRY_KEY}:experimental`,
101
+ id: `${REGISTRY_KEY}+experimental`,
102
102
  type: "category",
103
- data: `${REGISTRY_KEY}:experimental`,
103
+ data: `${REGISTRY_KEY}+experimental`,
104
104
  properties: {
105
105
  label: [
106
106
  "experimental plugins label",
@@ -161,4 +161,4 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
161
161
  export {
162
162
  app_graph_builder_default as default
163
163
  };
164
- //# sourceMappingURL=app-graph-builder-PPWF5KP5.mjs.map
164
+ //# sourceMappingURL=app-graph-builder-Z6FZXJWI.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, SettingsAction, type PluginsContext } from '@dxos/app-framework';\nimport { createExtension, type Node } from '@dxos/plugin-graph';\n\nimport { REGISTRY_ID, REGISTRY_KEY, REGISTRY_PLUGIN } from '../meta';\n\nexport default (context: PluginsContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: REGISTRY_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id: REGISTRY_PLUGIN,\n data: async () => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(SettingsAction.OpenPluginRegistry));\n },\n properties: {\n label: ['open plugin registry label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--squares-four--regular',\n },\n },\n ],\n }),\n createExtension({\n id: REGISTRY_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n connector: () => [\n {\n id: REGISTRY_ID,\n type: REGISTRY_PLUGIN,\n properties: {\n label: ['plugin registry label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--squares-four--regular',\n disposition: 'pin-end',\n testId: 'treeView.pluginRegistry',\n },\n nodes: [\n {\n id: `${REGISTRY_KEY}:all`,\n type: 'category',\n data: `${REGISTRY_KEY}:all`,\n properties: {\n label: ['all plugins label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--squares-four--regular',\n key: REGISTRY_KEY,\n testId: 'pluginRegistry.all',\n },\n },\n {\n id: `${REGISTRY_KEY}:installed`,\n type: 'category',\n data: `${REGISTRY_KEY}:installed`,\n properties: {\n label: ['installed plugins label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--check--regular',\n key: REGISTRY_KEY,\n testId: 'pluginRegistry.installed',\n },\n },\n {\n id: `${REGISTRY_KEY}:recommended`,\n type: 'category',\n data: `${REGISTRY_KEY}:recommended`,\n properties: {\n label: ['recommended plugins label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--star--regular',\n key: REGISTRY_KEY,\n testId: 'pluginRegistry.recommended',\n },\n },\n {\n id: `${REGISTRY_KEY}:experimental`,\n type: 'category',\n data: `${REGISTRY_KEY}:experimental`,\n properties: {\n label: ['experimental plugins label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--flask--regular',\n key: REGISTRY_KEY,\n testId: 'pluginRegistry.experimental',\n },\n },\n ],\n },\n ],\n }),\n createExtension({\n id: `${REGISTRY_PLUGIN}/actions`,\n filter: (node): node is Node<null> => node.id === REGISTRY_ID,\n actions: () => [\n {\n id: `${REGISTRY_PLUGIN}/load-by-url`,\n data: async () => {},\n properties: {\n label: ['load by url label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--cloud-arrow-down--regular',\n disabled: true,\n },\n },\n ],\n }),\n createExtension({\n id: `${REGISTRY_PLUGIN}/plugins`,\n resolver: ({ id }) => {\n const manager = context.requestCapability(Capabilities.PluginManager);\n const plugin = manager.plugins.find((plugin) => plugin.meta.id === id.replaceAll(':', '/'));\n if (!plugin) {\n return;\n }\n\n return {\n id,\n type: 'dxos.org/plugin',\n data: plugin,\n properties: {\n label: plugin.meta.name ?? plugin.meta.id,\n icon: plugin.meta.icon ?? 'ph--circle--regular',\n },\n };\n },\n }),\n ]);\n"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, SettingsAction, type PluginsContext } from '@dxos/app-framework';\nimport { createExtension, type Node } from '@dxos/plugin-graph';\n\nimport { REGISTRY_ID, REGISTRY_KEY, REGISTRY_PLUGIN } from '../meta';\n\nexport default (context: PluginsContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: REGISTRY_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id: REGISTRY_PLUGIN,\n data: async () => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(SettingsAction.OpenPluginRegistry));\n },\n properties: {\n label: ['open plugin registry label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--squares-four--regular',\n },\n },\n ],\n }),\n createExtension({\n id: REGISTRY_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n connector: () => [\n {\n id: REGISTRY_ID,\n type: REGISTRY_PLUGIN,\n properties: {\n label: ['plugin registry label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--squares-four--regular',\n disposition: 'pin-end',\n testId: 'treeView.pluginRegistry',\n },\n nodes: [\n {\n id: `${REGISTRY_KEY}+all`,\n type: 'category',\n data: `${REGISTRY_KEY}+all`,\n properties: {\n label: ['all plugins label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--squares-four--regular',\n key: REGISTRY_KEY,\n testId: 'pluginRegistry.all',\n },\n },\n {\n id: `${REGISTRY_KEY}+installed`,\n type: 'category',\n data: `${REGISTRY_KEY}+installed`,\n properties: {\n label: ['installed plugins label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--check--regular',\n key: REGISTRY_KEY,\n testId: 'pluginRegistry.installed',\n },\n },\n {\n id: `${REGISTRY_KEY}+recommended`,\n type: 'category',\n data: `${REGISTRY_KEY}+recommended`,\n properties: {\n label: ['recommended plugins label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--star--regular',\n key: REGISTRY_KEY,\n testId: 'pluginRegistry.recommended',\n },\n },\n {\n id: `${REGISTRY_KEY}+experimental`,\n type: 'category',\n data: `${REGISTRY_KEY}+experimental`,\n properties: {\n label: ['experimental plugins label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--flask--regular',\n key: REGISTRY_KEY,\n testId: 'pluginRegistry.experimental',\n },\n },\n ],\n },\n ],\n }),\n createExtension({\n id: `${REGISTRY_PLUGIN}/actions`,\n filter: (node): node is Node<null> => node.id === REGISTRY_ID,\n actions: () => [\n {\n id: `${REGISTRY_PLUGIN}/load-by-url`,\n data: async () => {},\n properties: {\n label: ['load by url label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--cloud-arrow-down--regular',\n disabled: true,\n },\n },\n ],\n }),\n createExtension({\n id: `${REGISTRY_PLUGIN}/plugins`,\n resolver: ({ id }) => {\n const manager = context.requestCapability(Capabilities.PluginManager);\n const plugin = manager.plugins.find((plugin) => plugin.meta.id === id.replaceAll(':', '/'));\n if (!plugin) {\n return;\n }\n\n return {\n id,\n type: 'dxos.org/plugin',\n data: plugin,\n properties: {\n label: plugin.meta.name ?? plugin.meta.id,\n icon: plugin.meta.icon ?? 'ph--circle--regular',\n },\n };\n },\n }),\n ]);\n"],
5
5
  "mappings": ";;;;;;;AAIA,SAASA,cAAcC,aAAaC,cAAcC,sBAA2C;AAC7F,SAASC,uBAAkC;AAI3C,IAAA,4BAAe,CAACC,YACdC,YAAYC,aAAaC,iBAAiB;EACxCC,gBAAgB;IACdC,IAAIC;IACJC,QAAQ,CAACC,SAA6BA,KAAKH,OAAO;IAClDI,SAAS,MAAM;MACb;QACEJ,IAAIC;QACJI,MAAM,YAAA;AACJ,gBAAM,EAAEC,iBAAiBC,SAAQ,IAAKZ,QAAQa,kBAAkBX,aAAaY,gBAAgB;AAC7F,gBAAMF,SAASG,aAAaC,eAAeC,kBAAkB,CAAA;QAC/D;QACAC,YAAY;UACVC,OAAO;YAAC;YAA8B;cAAEC,IAAId;YAAgB;;UAC5De,MAAM;QACR;MACF;;EAEJ,CAAA;EACAjB,gBAAgB;IACdC,IAAIC;IACJC,QAAQ,CAACC,SAA6BA,KAAKH,OAAO;IAClDiB,WAAW,MAAM;MACf;QACEjB,IAAIkB;QACJC,MAAMlB;QACNY,YAAY;UACVC,OAAO;YAAC;YAAyB;cAAEC,IAAId;YAAgB;;UACvDe,MAAM;UACNI,aAAa;UACbC,QAAQ;QACV;QACAC,OAAO;UACL;YACEtB,IAAI,GAAGuB,YAAAA;YACPJ,MAAM;YACNd,MAAM,GAAGkB,YAAAA;YACTV,YAAY;cACVC,OAAO;gBAAC;gBAAqB;kBAAEC,IAAId;gBAAgB;;cACnDe,MAAM;cACNQ,KAAKD;cACLF,QAAQ;YACV;UACF;UACA;YACErB,IAAI,GAAGuB,YAAAA;YACPJ,MAAM;YACNd,MAAM,GAAGkB,YAAAA;YACTV,YAAY;cACVC,OAAO;gBAAC;gBAA2B;kBAAEC,IAAId;gBAAgB;;cACzDe,MAAM;cACNQ,KAAKD;cACLF,QAAQ;YACV;UACF;UACA;YACErB,IAAI,GAAGuB,YAAAA;YACPJ,MAAM;YACNd,MAAM,GAAGkB,YAAAA;YACTV,YAAY;cACVC,OAAO;gBAAC;gBAA6B;kBAAEC,IAAId;gBAAgB;;cAC3De,MAAM;cACNQ,KAAKD;cACLF,QAAQ;YACV;UACF;UACA;YACErB,IAAI,GAAGuB,YAAAA;YACPJ,MAAM;YACNd,MAAM,GAAGkB,YAAAA;YACTV,YAAY;cACVC,OAAO;gBAAC;gBAA8B;kBAAEC,IAAId;gBAAgB;;cAC5De,MAAM;cACNQ,KAAKD;cACLF,QAAQ;YACV;UACF;;MAEJ;;EAEJ,CAAA;EACAtB,gBAAgB;IACdC,IAAI,GAAGC,eAAAA;IACPC,QAAQ,CAACC,SAA6BA,KAAKH,OAAOkB;IAClDd,SAAS,MAAM;MACb;QACEJ,IAAI,GAAGC,eAAAA;QACPI,MAAM,YAAA;QAAa;QACnBQ,YAAY;UACVC,OAAO;YAAC;YAAqB;cAAEC,IAAId;YAAgB;;UACnDe,MAAM;UACNS,UAAU;QACZ;MACF;;EAEJ,CAAA;EACA1B,gBAAgB;IACdC,IAAI,GAAGC,eAAAA;IACPyB,UAAU,CAAC,EAAE1B,GAAE,MAAE;AACf,YAAM2B,UAAUhC,QAAQa,kBAAkBX,aAAa+B,aAAa;AACpE,YAAMC,SAASF,QAAQG,QAAQC,KAAK,CAACF,YAAWA,QAAOG,KAAKhC,OAAOA,GAAGiC,WAAW,KAAK,GAAA,CAAA;AACtF,UAAI,CAACJ,QAAQ;AACX;MACF;AAEA,aAAO;QACL7B;QACAmB,MAAM;QACNd,MAAMwB;QACNhB,YAAY;UACVC,OAAOe,OAAOG,KAAKE,QAAQL,OAAOG,KAAKhC;UACvCgB,MAAMa,OAAOG,KAAKhB,QAAQ;QAC5B;MACF;IACF;EACF,CAAA;CACD;",
6
6
  "names": ["Capabilities", "contributes", "createIntent", "SettingsAction", "createExtension", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "REGISTRY_PLUGIN", "filter", "node", "actions", "data", "dispatchPromise", "dispatch", "requestCapability", "IntentDispatcher", "createIntent", "SettingsAction", "OpenPluginRegistry", "properties", "label", "ns", "icon", "connector", "REGISTRY_ID", "type", "disposition", "testId", "nodes", "REGISTRY_KEY", "key", "disabled", "resolver", "manager", "PluginManager", "plugin", "plugins", "find", "meta", "replaceAll", "name"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  // packages/plugins/plugin-registry/src/meta.ts
2
2
  var REGISTRY_PLUGIN = "dxos.org/plugin/registry";
3
- var REGISTRY_ID = "dxos:plugin-registry";
3
+ var REGISTRY_ID = "!dxos:plugin-registry";
4
4
  var REGISTRY_KEY = "plugin-registry";
5
5
  var meta = {
6
6
  id: REGISTRY_PLUGIN,
@@ -13,4 +13,4 @@ export {
13
13
  REGISTRY_KEY,
14
14
  meta
15
15
  };
16
- //# sourceMappingURL=chunk-RGSIE33X.mjs.map
16
+ //# sourceMappingURL=chunk-H6GNIIDK.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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 REGISTRY_PLUGIN = 'dxos.org/plugin/registry';\n\n// TODO(wittjosiah): Deck does not currently support `/` in ids.\nexport const REGISTRY_ID = 'dxos:plugin-registry';\nexport const REGISTRY_KEY = 'plugin-registry';\n\nexport const meta = {\n id: REGISTRY_PLUGIN,\n name: 'Plugins',\n} satisfies PluginMeta;\n"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const REGISTRY_PLUGIN = 'dxos.org/plugin/registry';\n\n// TODO(wittjosiah): Deck does not currently support `/` in ids.\nexport const REGISTRY_ID = '!dxos:plugin-registry';\nexport const REGISTRY_KEY = 'plugin-registry';\n\nexport const meta = {\n id: REGISTRY_PLUGIN,\n name: 'Plugins',\n} satisfies PluginMeta;\n"],
5
5
  "mappings": ";AAMO,IAAMA,kBAAkB;AAGxB,IAAMC,cAAc;AACpB,IAAMC,eAAe;AAErB,IAAMC,OAAO;EAClBC,IAAIJ;EACJK,MAAM;AACR;",
6
6
  "names": ["REGISTRY_PLUGIN", "REGISTRY_ID", "REGISTRY_KEY", "meta", "id", "name"]
7
7
  }
@@ -3,16 +3,16 @@ import {
3
3
  REGISTRY_KEY,
4
4
  REGISTRY_PLUGIN,
5
5
  meta
6
- } from "./chunk-RGSIE33X.mjs";
6
+ } from "./chunk-H6GNIIDK.mjs";
7
7
 
8
8
  // packages/plugins/plugin-registry/src/RegistryPlugin.tsx
9
9
  import { Capabilities, contributes, defineModule, definePlugin, Events } from "@dxos/app-framework";
10
10
 
11
11
  // packages/plugins/plugin-registry/src/capabilities/index.ts
12
12
  import { lazy } from "@dxos/app-framework";
13
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-PPWF5KP5.mjs"));
14
- var IntentResolver = lazy(() => import("./intent-resolver-2JQUQJI5.mjs"));
15
- var ReactSurface = lazy(() => import("./react-surface-NRETIUCH.mjs"));
13
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-Z6FZXJWI.mjs"));
14
+ var IntentResolver = lazy(() => import("./intent-resolver-QW333HWJ.mjs"));
15
+ var ReactSurface = lazy(() => import("./react-surface-6JN3QJEF.mjs"));
16
16
 
17
17
  // packages/plugins/plugin-registry/src/translations.ts
18
18
  var translations_default = [
@@ -36,7 +36,8 @@ var translations_default = [
36
36
  "community plugins label": "Community",
37
37
  "load by url label": "Load by URL (soon)",
38
38
  "coming soon label": "Coming soon!",
39
- "open plugin registry label": "Open plugin registry"
39
+ "open plugin registry label": "Open plugin registry",
40
+ "settings label": "Settings"
40
41
  }
41
42
  }
42
43
  }
@@ -51,12 +52,12 @@ var RegistryPlugin = () => definePlugin(meta, [
51
52
  }),
52
53
  defineModule({
53
54
  id: `${meta.id}/module/react-surface`,
54
- activatesOn: Events.SetupSurfaces,
55
+ activatesOn: Events.SetupReactSurface,
55
56
  activate: ReactSurface
56
57
  }),
57
58
  defineModule({
58
59
  id: `${meta.id}/module/intent-resolver`,
59
- activatesOn: Events.SetupIntents,
60
+ activatesOn: Events.SetupIntentResolver,
60
61
  activate: IntentResolver
61
62
  }),
62
63
  defineModule({
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/RegistryPlugin.tsx", "../../../src/capabilities/index.ts", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, contributes, defineModule, definePlugin, Events } from '@dxos/app-framework';\n\nimport { AppGraphBuilder, IntentResolver, ReactSurface } from './capabilities';\nimport { meta } from './meta';\nimport translations from './translations';\n\nexport const RegistryPlugin = () =>\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/react-surface`,\n activatesOn: Events.SetupSurfaces,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntents,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { REGISTRY_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [REGISTRY_PLUGIN]: {\n 'plugin name': 'Registry',\n 'reload required message': 'Reload required.',\n 'settings show experimental label': 'Show experimental plugins',\n 'settings section installed label': 'Enabled',\n 'settings section recommended label': 'Recommended',\n 'settings section experimental label': 'Experimental',\n 'details label': 'Details',\n 'home page label': 'Website',\n 'source label': 'Source',\n 'plugin registry label': 'Plugin Registry',\n 'all plugins label': 'All',\n 'installed plugins label': 'Enabled',\n 'recommended plugins label': 'Recommended',\n 'experimental plugins label': 'Experimental',\n 'community plugins label': 'Community',\n 'load by url label': 'Load by URL (soon)',\n 'coming soon label': 'Coming soon!',\n 'open plugin registry label': 'Open plugin registry',\n },\n },\n },\n];\n"],
5
- "mappings": ";;;;;;;;AAIA,SAASA,cAAcC,aAAaC,cAAcC,cAAcC,cAAc;;;ACA9E,SAASC,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,iBAAiBD,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAME,eAAeF,KAAK,MAAM,OAAO,8BAAA,CAAA;;;ACF9C,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACG,eAAAA,GAAkB;QACjB,eAAe;QACf,2BAA2B;QAC3B,oCAAoC;QACpC,oCAAoC;QACpC,sCAAsC;QACtC,uCAAuC;QACvC,iBAAiB;QACjB,mBAAmB;QACnB,gBAAgB;QAChB,yBAAyB;QACzB,qBAAqB;QACrB,2BAA2B;QAC3B,6BAA6B;QAC7B,8BAA8B;QAC9B,2BAA2B;QAC3B,qBAAqB;QACrB,qBAAqB;QACrB,8BAA8B;MAChC;IACF;EACF;;;;AFpBK,IAAMC,iBAAiB,MAC5BC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,UAAU,MAAMC,YAAYC,aAAaC,cAAcC,oBAAAA;EACzD,CAAA;EACAT,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOO;IACpBL,UAAUM;EACZ,CAAA;EACAX,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOS;IACpBP,UAAUQ;EACZ,CAAA;EACAb,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOW;IACpBT,UAAUU;EACZ,CAAA;CACD;",
6
- "names": ["Capabilities", "contributes", "defineModule", "definePlugin", "Events", "lazy", "AppGraphBuilder", "lazy", "IntentResolver", "ReactSurface", "REGISTRY_PLUGIN", "RegistryPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "SetupSurfaces", "ReactSurface", "SetupIntents", "IntentResolver", "SetupAppGraph", "AppGraphBuilder"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, contributes, defineModule, definePlugin, Events } from '@dxos/app-framework';\n\nimport { AppGraphBuilder, IntentResolver, ReactSurface } from './capabilities';\nimport { meta } from './meta';\nimport translations from './translations';\n\nexport const RegistryPlugin = () =>\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/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 defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { REGISTRY_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [REGISTRY_PLUGIN]: {\n 'plugin name': 'Registry',\n 'reload required message': 'Reload required.',\n 'settings show experimental label': 'Show experimental plugins',\n 'settings section installed label': 'Enabled',\n 'settings section recommended label': 'Recommended',\n 'settings section experimental label': 'Experimental',\n 'details label': 'Details',\n 'home page label': 'Website',\n 'source label': 'Source',\n 'plugin registry label': 'Plugin Registry',\n 'all plugins label': 'All',\n 'installed plugins label': 'Enabled',\n 'recommended plugins label': 'Recommended',\n 'experimental plugins label': 'Experimental',\n 'community plugins label': 'Community',\n 'load by url label': 'Load by URL (soon)',\n 'coming soon label': 'Coming soon!',\n 'open plugin registry label': 'Open plugin registry',\n 'settings label': 'Settings',\n },\n },\n },\n];\n"],
5
+ "mappings": ";;;;;;;;AAIA,SAASA,cAAcC,aAAaC,cAAcC,cAAcC,cAAc;;;ACA9E,SAASC,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,iBAAiBD,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAME,eAAeF,KAAK,MAAM,OAAO,8BAAA,CAAA;;;ACF9C,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACG,eAAAA,GAAkB;QACjB,eAAe;QACf,2BAA2B;QAC3B,oCAAoC;QACpC,oCAAoC;QACpC,sCAAsC;QACtC,uCAAuC;QACvC,iBAAiB;QACjB,mBAAmB;QACnB,gBAAgB;QAChB,yBAAyB;QACzB,qBAAqB;QACrB,2BAA2B;QAC3B,6BAA6B;QAC7B,8BAA8B;QAC9B,2BAA2B;QAC3B,qBAAqB;QACrB,qBAAqB;QACrB,8BAA8B;QAC9B,kBAAkB;MACpB;IACF;EACF;;;;AFrBK,IAAMC,iBAAiB,MAC5BC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,UAAU,MAAMC,YAAYC,aAAaC,cAAcC,oBAAAA;EACzD,CAAA;EACAT,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOO;IACpBL,UAAUM;EACZ,CAAA;EACAX,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOS;IACpBP,UAAUQ;EACZ,CAAA;EACAb,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOW;IACpBT,UAAUU;EACZ,CAAA;CACD;",
6
+ "names": ["Capabilities", "contributes", "defineModule", "definePlugin", "Events", "lazy", "AppGraphBuilder", "lazy", "IntentResolver", "ReactSurface", "REGISTRY_PLUGIN", "RegistryPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "SetupReactSurface", "ReactSurface", "SetupIntentResolver", "IntentResolver", "SetupAppGraph", "AppGraphBuilder"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  REGISTRY_ID
3
- } from "./chunk-RGSIE33X.mjs";
3
+ } from "./chunk-H6GNIIDK.mjs";
4
4
 
5
5
  // packages/plugins/plugin-registry/src/capabilities/intent-resolver.ts
6
6
  import { contributes, SettingsAction, createResolver, LayoutAction, Capabilities, createIntent } from "@dxos/app-framework";
@@ -20,4 +20,4 @@ var intent_resolver_default = () => contributes(Capabilities.IntentResolver, cre
20
20
  export {
21
21
  intent_resolver_default as default
22
22
  };
23
- //# sourceMappingURL=intent-resolver-2JQUQJI5.mjs.map
23
+ //# sourceMappingURL=intent-resolver-QW333HWJ.mjs.map
@@ -1 +1 @@
1
- {"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytes":1519,"imports":[],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts":{"bytes":16999,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/intent-resolver.ts":{"bytes":2456,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/PluginDetail.tsx":{"bytes":7359,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/PluginItem.tsx":{"bytes":12134,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/PluginList.tsx":{"bytes":2600,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/components/PluginItem.tsx","kind":"import-statement","original":"./PluginItem"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/RegistryContainer.tsx":{"bytes":6810,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/components/PluginList.tsx","kind":"import-statement","original":"./PluginList"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/index.ts":{"bytes":734,"imports":[{"path":"packages/plugins/plugin-registry/src/components/PluginDetail.tsx","kind":"import-statement","original":"./PluginDetail"},{"path":"packages/plugins/plugin-registry/src/components/PluginList.tsx","kind":"import-statement","original":"./PluginList"},{"path":"packages/plugins/plugin-registry/src/components/RegistryContainer.tsx","kind":"import-statement","original":"./RegistryContainer"}],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/react-surface.tsx":{"bytes":12724,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/index.ts":{"bytes":1351,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts","kind":"dynamic-import","original":"./app-graph-builder"},{"path":"packages/plugins/plugin-registry/src/capabilities/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"packages/plugins/plugin-registry/src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"packages/plugins/plugin-registry/src/translations.ts":{"bytes":3552,"imports":[{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/RegistryPlugin.tsx":{"bytes":4084,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-registry/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/plugins/plugin-registry/src/index.ts":{"bytes":602,"imports":[{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-registry/src/RegistryPlugin.tsx","kind":"import-statement","original":"./RegistryPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-registry/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3968},"packages/plugins/plugin-registry/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-RGSIE33X.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/dist/lib/browser/app-graph-builder-PPWF5KP5.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-registry/dist/lib/browser/intent-resolver-2JQUQJI5.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-registry/dist/lib/browser/react-surface-NRETIUCH.mjs","kind":"dynamic-import"}],"exports":["REGISTRY_ID","REGISTRY_KEY","REGISTRY_PLUGIN","RegistryPlugin","meta"],"entryPoint":"packages/plugins/plugin-registry/src/index.ts","inputs":{"packages/plugins/plugin-registry/src/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-registry/src/RegistryPlugin.tsx":{"bytesInOutput":747},"packages/plugins/plugin-registry/src/capabilities/index.ts":{"bytesInOutput":268},"packages/plugins/plugin-registry/src/translations.ts":{"bytesInOutput":991}},"bytes":2465},"packages/plugins/plugin-registry/dist/lib/browser/app-graph-builder-PPWF5KP5.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6986},"packages/plugins/plugin-registry/dist/lib/browser/app-graph-builder-PPWF5KP5.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-RGSIE33X.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts","inputs":{"packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts":{"bytesInOutput":4246}},"bytes":4517},"packages/plugins/plugin-registry/dist/lib/browser/intent-resolver-2JQUQJI5.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1265},"packages/plugins/plugin-registry/dist/lib/browser/intent-resolver-2JQUQJI5.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-RGSIE33X.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-registry/src/capabilities/intent-resolver.ts","inputs":{"packages/plugins/plugin-registry/src/capabilities/intent-resolver.ts":{"bytesInOutput":461}},"bytes":691},"packages/plugins/plugin-registry/dist/lib/browser/react-surface-NRETIUCH.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":20957},"packages/plugins/plugin-registry/dist/lib/browser/react-surface-NRETIUCH.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-RGSIE33X.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-registry/src/capabilities/react-surface.tsx","inputs":{"packages/plugins/plugin-registry/src/capabilities/react-surface.tsx":{"bytesInOutput":3177},"packages/plugins/plugin-registry/src/components/PluginDetail.tsx":{"bytesInOutput":2166},"packages/plugins/plugin-registry/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-registry/src/components/PluginList.tsx":{"bytesInOutput":517},"packages/plugins/plugin-registry/src/components/PluginItem.tsx":{"bytesInOutput":3456},"packages/plugins/plugin-registry/src/components/RegistryContainer.tsx":{"bytesInOutput":1556}},"bytes":11533},"packages/plugins/plugin-registry/dist/lib/browser/chunk-RGSIE33X.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":704},"packages/plugins/plugin-registry/dist/lib/browser/chunk-RGSIE33X.mjs":{"imports":[],"exports":["REGISTRY_ID","REGISTRY_KEY","REGISTRY_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytesInOutput":187}},"bytes":349}}}
1
+ {"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytes":1524,"imports":[],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts":{"bytes":16999,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/intent-resolver.ts":{"bytes":2456,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/PluginDetail.tsx":{"bytes":7465,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/PluginItem.tsx":{"bytes":13821,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/PluginList.tsx":{"bytes":2600,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/components/PluginItem.tsx","kind":"import-statement","original":"./PluginItem"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/RegistryContainer.tsx":{"bytes":8999,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/components/PluginList.tsx","kind":"import-statement","original":"./PluginList"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/index.ts":{"bytes":734,"imports":[{"path":"packages/plugins/plugin-registry/src/components/PluginDetail.tsx","kind":"import-statement","original":"./PluginDetail"},{"path":"packages/plugins/plugin-registry/src/components/PluginList.tsx","kind":"import-statement","original":"./PluginList"},{"path":"packages/plugins/plugin-registry/src/components/RegistryContainer.tsx","kind":"import-statement","original":"./RegistryContainer"}],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/react-surface.tsx":{"bytes":12724,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/index.ts":{"bytes":1351,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts","kind":"dynamic-import","original":"./app-graph-builder"},{"path":"packages/plugins/plugin-registry/src/capabilities/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"packages/plugins/plugin-registry/src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"packages/plugins/plugin-registry/src/translations.ts":{"bytes":3670,"imports":[{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/RegistryPlugin.tsx":{"bytes":4127,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-registry/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/plugins/plugin-registry/src/index.ts":{"bytes":602,"imports":[{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-registry/src/RegistryPlugin.tsx","kind":"import-statement","original":"./RegistryPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-registry/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4042},"packages/plugins/plugin-registry/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-H6GNIIDK.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/dist/lib/browser/app-graph-builder-Z6FZXJWI.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-registry/dist/lib/browser/intent-resolver-QW333HWJ.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-registry/dist/lib/browser/react-surface-6JN3QJEF.mjs","kind":"dynamic-import"}],"exports":["REGISTRY_ID","REGISTRY_KEY","REGISTRY_PLUGIN","RegistryPlugin","meta"],"entryPoint":"packages/plugins/plugin-registry/src/index.ts","inputs":{"packages/plugins/plugin-registry/src/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-registry/src/RegistryPlugin.tsx":{"bytesInOutput":758},"packages/plugins/plugin-registry/src/capabilities/index.ts":{"bytesInOutput":268},"packages/plugins/plugin-registry/src/translations.ts":{"bytesInOutput":1029}},"bytes":2514},"packages/plugins/plugin-registry/dist/lib/browser/app-graph-builder-Z6FZXJWI.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6986},"packages/plugins/plugin-registry/dist/lib/browser/app-graph-builder-Z6FZXJWI.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-H6GNIIDK.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts","inputs":{"packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts":{"bytesInOutput":4246}},"bytes":4517},"packages/plugins/plugin-registry/dist/lib/browser/intent-resolver-QW333HWJ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1265},"packages/plugins/plugin-registry/dist/lib/browser/intent-resolver-QW333HWJ.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-H6GNIIDK.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-registry/src/capabilities/intent-resolver.ts","inputs":{"packages/plugins/plugin-registry/src/capabilities/intent-resolver.ts":{"bytesInOutput":461}},"bytes":691},"packages/plugins/plugin-registry/dist/lib/browser/react-surface-6JN3QJEF.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":23215},"packages/plugins/plugin-registry/dist/lib/browser/react-surface-6JN3QJEF.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-H6GNIIDK.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-registry/src/capabilities/react-surface.tsx","inputs":{"packages/plugins/plugin-registry/src/capabilities/react-surface.tsx":{"bytesInOutput":3195},"packages/plugins/plugin-registry/src/components/PluginDetail.tsx":{"bytesInOutput":2192},"packages/plugins/plugin-registry/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-registry/src/components/PluginList.tsx":{"bytesInOutput":517},"packages/plugins/plugin-registry/src/components/PluginItem.tsx":{"bytesInOutput":3889},"packages/plugins/plugin-registry/src/components/RegistryContainer.tsx":{"bytesInOutput":2092}},"bytes":12546},"packages/plugins/plugin-registry/dist/lib/browser/chunk-H6GNIIDK.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":705},"packages/plugins/plugin-registry/dist/lib/browser/chunk-H6GNIIDK.mjs":{"imports":[],"exports":["REGISTRY_ID","REGISTRY_KEY","REGISTRY_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytesInOutput":188}},"bytes":350}}}
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  REGISTRY_KEY,
3
3
  REGISTRY_PLUGIN
4
- } from "./chunk-RGSIE33X.mjs";
4
+ } from "./chunk-H6GNIIDK.mjs";
5
5
 
6
6
  // packages/plugins/plugin-registry/src/capabilities/react-surface.tsx
7
- import React5, { useCallback as useCallback2, useMemo as useMemo2 } from "react";
8
- import { Capabilities, contributes, createSurface, Plugin, usePluginManager as usePluginManager2 } from "@dxos/app-framework";
7
+ import React5, { useCallback as useCallback3, useMemo as useMemo2 } from "react";
8
+ import { Capabilities as Capabilities2, contributes, createSurface, Plugin, usePluginManager as usePluginManager2 } from "@dxos/app-framework";
9
9
  import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
10
10
 
11
11
  // packages/plugins/plugin-registry/src/components/PluginDetail.tsx
@@ -24,7 +24,7 @@ var PluginDetail = ({ plugin, enabled, onEnable }) => {
24
24
  classNames: "self-center",
25
25
  checked: enabled,
26
26
  onClick: onEnable
27
- }))), screenshots && /* @__PURE__ */ React.createElement("div", {
27
+ }))), screenshots && screenshots.length > 0 && /* @__PURE__ */ React.createElement("div", {
28
28
  role: "none"
29
29
  }, /* @__PURE__ */ React.createElement("h1", {
30
30
  className: "text-lg mb-2"
@@ -69,7 +69,7 @@ import { List } from "@dxos/react-ui";
69
69
  import React2, { useCallback } from "react";
70
70
  import { Icon as Icon2, Input as Input2, Link as Link2, ListItem, useTranslation as useTranslation2 } from "@dxos/react-ui";
71
71
  import { descriptionText, mx } from "@dxos/react-ui-theme";
72
- var PluginItem = ({ plugin, enabled = [], onClick, onChange }) => {
72
+ var PluginItem = ({ plugin, enabled = [], onClick, onChange, hasSettings: _hasSettings, onSettings }) => {
73
73
  const { t } = useTranslation2(REGISTRY_PLUGIN);
74
74
  const { id, name, description, homePage, source, icon = "ph--circle--regular" } = plugin.meta;
75
75
  const isEnabled = enabled.includes(id);
@@ -88,6 +88,14 @@ var PluginItem = ({ plugin, enabled = [], onClick, onChange }) => {
88
88
  isEnabled,
89
89
  onChange
90
90
  ]);
91
+ const hasSettings = useCallback(() => _hasSettings?.(id) ?? false, [
92
+ id,
93
+ _hasSettings
94
+ ]);
95
+ const handleSettings = useCallback(() => onSettings?.(id), [
96
+ id,
97
+ onSettings
98
+ ]);
91
99
  return /* @__PURE__ */ React2.createElement(ListItem.Root, {
92
100
  key: id,
93
101
  labelId,
@@ -114,7 +122,7 @@ var PluginItem = ({ plugin, enabled = [], onClick, onChange }) => {
114
122
  onClick: handleChange
115
123
  }))), /* @__PURE__ */ React2.createElement("div", null), (description || homePage || source) && /* @__PURE__ */ React2.createElement("div", {
116
124
  id: descriptionId,
117
- className: "col-span-2 flex flex-col w-full gap-2 pb-3 overflow-y-scroll"
125
+ className: "col-span-2 flex flex-col w-full gap-2 pb-3"
118
126
  }, /* @__PURE__ */ React2.createElement("div", {
119
127
  className: "grow"
120
128
  }, /* @__PURE__ */ React2.createElement("p", {
@@ -147,7 +155,11 @@ var PluginItem = ({ plugin, enabled = [], onClick, onChange }) => {
147
155
  icon: "ph--arrow-square-out--bold",
148
156
  size: 3,
149
157
  classNames: "inline-block leading-none mli-1"
150
- })))));
158
+ })), hasSettings?.() && /* @__PURE__ */ React2.createElement(Link2, {
159
+ "aria-describedby": descriptionId,
160
+ classNames: "text-sm text-description cursor-pointer",
161
+ onClick: handleSettings
162
+ }, t("settings label")))));
151
163
  };
152
164
 
153
165
  // packages/plugins/plugin-registry/src/components/PluginList.tsx
@@ -164,8 +176,8 @@ var PluginList = ({ plugins = [], ...props }) => {
164
176
  };
165
177
 
166
178
  // packages/plugins/plugin-registry/src/components/RegistryContainer.tsx
167
- import React4, { useMemo } from "react";
168
- import { createIntent, LayoutAction, useIntentDispatcher, usePluginManager } from "@dxos/app-framework";
179
+ import React4, { useCallback as useCallback2, useMemo } from "react";
180
+ import { Capabilities, createIntent, LayoutAction, SettingsAction, useCapability, useIntentDispatcher, usePluginManager } from "@dxos/app-framework";
169
181
  import { ObservabilityAction } from "@dxos/plugin-observability/types";
170
182
  import { StackItem } from "@dxos/react-ui-stack";
171
183
  var sortByPluginMeta = ({ meta: { name: a = "" } }, { meta: { name: b = "" } }) => a.localeCompare(b);
@@ -175,7 +187,8 @@ var RegistryContainer = ({ id, plugins: _plugins }) => {
175
187
  const plugins = useMemo(() => _plugins.sort(sortByPluginMeta), [
176
188
  _plugins
177
189
  ]);
178
- const handleChange = async (id2, enabled) => {
190
+ const settingsStore = useCapability(Capabilities.SettingsStore);
191
+ const handleChange = useCallback2(async (id2, enabled) => {
179
192
  if (enabled) {
180
193
  await manager.enable(id2);
181
194
  } else {
@@ -188,8 +201,11 @@ var RegistryContainer = ({ id, plugins: _plugins }) => {
188
201
  enabled
189
202
  }
190
203
  }));
191
- };
192
- const handleClick = (pluginId) => dispatch(createIntent(LayoutAction.Open, {
204
+ }, [
205
+ dispatch,
206
+ manager
207
+ ]);
208
+ const handleClick = useCallback2((pluginId) => dispatch(createIntent(LayoutAction.Open, {
193
209
  part: "main",
194
210
  // TODO(wittjosiah): `/` currently is not supported in ids.
195
211
  subject: [
@@ -199,7 +215,18 @@ var RegistryContainer = ({ id, plugins: _plugins }) => {
199
215
  pivotId: id,
200
216
  positioning: "end"
201
217
  }
202
- }));
218
+ })), [
219
+ dispatch,
220
+ id
221
+ ]);
222
+ const hasSettings = useCallback2((pluginId) => !!settingsStore.getStore(pluginId), [
223
+ settingsStore
224
+ ]);
225
+ const handleSettings = useCallback2((pluginId) => dispatch(createIntent(SettingsAction.Open, {
226
+ plugin: pluginId
227
+ })), [
228
+ dispatch
229
+ ]);
203
230
  return /* @__PURE__ */ React4.createElement(StackItem.Content, {
204
231
  toolbar: false,
205
232
  role: "article",
@@ -208,21 +235,23 @@ var RegistryContainer = ({ id, plugins: _plugins }) => {
208
235
  plugins,
209
236
  enabled: manager.enabled,
210
237
  onClick: handleClick,
211
- onChange: handleChange
238
+ onChange: handleChange,
239
+ hasSettings,
240
+ onSettings: handleSettings
212
241
  }));
213
242
  };
214
243
 
215
244
  // packages/plugins/plugin-registry/src/capabilities/react-surface.tsx
216
- var react_surface_default = () => contributes(Capabilities.ReactSurface, [
245
+ var react_surface_default = () => contributes(Capabilities2.ReactSurface, [
217
246
  createSurface({
218
247
  id: `${REGISTRY_PLUGIN}/all`,
219
248
  role: "article",
220
- filter: (data) => data.subject === `${REGISTRY_KEY}:all`,
249
+ filter: (data) => data.subject === `${REGISTRY_KEY}+all`,
221
250
  component: () => {
222
251
  const manager = usePluginManager2();
223
252
  const filtered = useMemo2(() => manager.plugins.filter(({ meta }) => !manager.core.includes(meta.id)), []);
224
253
  return /* @__PURE__ */ React5.createElement(RegistryContainer, {
225
- id: `${REGISTRY_KEY}:all`,
254
+ id: `${REGISTRY_KEY}+all`,
226
255
  plugins: filtered
227
256
  });
228
257
  }
@@ -230,12 +259,12 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
230
259
  createSurface({
231
260
  id: `${REGISTRY_PLUGIN}/installed`,
232
261
  role: "article",
233
- filter: (data) => data.subject === `${REGISTRY_KEY}:installed`,
262
+ filter: (data) => data.subject === `${REGISTRY_KEY}+installed`,
234
263
  component: () => {
235
264
  const manager = usePluginManager2();
236
265
  const filtered = useMemo2(() => manager.plugins.filter(({ meta }) => !manager.core.includes(meta.id)).filter(({ meta }) => manager.enabled.includes(meta.id)), []);
237
266
  return /* @__PURE__ */ React5.createElement(RegistryContainer, {
238
- id: `${REGISTRY_KEY}:installed`,
267
+ id: `${REGISTRY_KEY}+installed`,
239
268
  plugins: filtered
240
269
  });
241
270
  }
@@ -243,12 +272,12 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
243
272
  createSurface({
244
273
  id: `${REGISTRY_PLUGIN}/recommended`,
245
274
  role: "article",
246
- filter: (data) => data.subject === `${REGISTRY_KEY}:recommended`,
275
+ filter: (data) => data.subject === `${REGISTRY_KEY}+recommended`,
247
276
  component: () => {
248
277
  const manager = usePluginManager2();
249
278
  const filtered = useMemo2(() => manager.plugins.filter(({ meta }) => !manager.core.includes(meta.id)).filter(({ meta }) => !meta.tags?.includes("experimental")), []);
250
279
  return /* @__PURE__ */ React5.createElement(RegistryContainer, {
251
- id: `${REGISTRY_KEY}:recommended`,
280
+ id: `${REGISTRY_KEY}+recommended`,
252
281
  plugins: filtered
253
282
  });
254
283
  }
@@ -256,12 +285,12 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
256
285
  createSurface({
257
286
  id: `${REGISTRY_PLUGIN}/experimental`,
258
287
  role: "article",
259
- filter: (data) => data.subject === `${REGISTRY_KEY}:experimental`,
288
+ filter: (data) => data.subject === `${REGISTRY_KEY}+experimental`,
260
289
  component: () => {
261
290
  const manager = usePluginManager2();
262
291
  const filtered = useMemo2(() => manager.plugins.filter(({ meta }) => meta.tags?.includes("experimental")), []);
263
292
  return /* @__PURE__ */ React5.createElement(RegistryContainer, {
264
- id: `${REGISTRY_KEY}:experimental`,
293
+ id: `${REGISTRY_KEY}+experimental`,
265
294
  plugins: filtered
266
295
  });
267
296
  }
@@ -273,7 +302,7 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
273
302
  component: ({ data: { subject } }) => {
274
303
  const manager = usePluginManager2();
275
304
  const enabled = manager.enabled.includes(subject.meta.id);
276
- const handleEnable = useCallback2(() => enabled ? manager.disable(subject.meta.id) : manager.enable(subject.meta.id), [
305
+ const handleEnable = useCallback3(() => enabled ? manager.disable(subject.meta.id) : manager.enable(subject.meta.id), [
277
306
  manager,
278
307
  subject.meta.id,
279
308
  enabled
@@ -292,4 +321,4 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
292
321
  export {
293
322
  react_surface_default as default
294
323
  };
295
- //# sourceMappingURL=react-surface-NRETIUCH.mjs.map
324
+ //# sourceMappingURL=react-surface-6JN3QJEF.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/PluginDetail.tsx", "../../../src/components/PluginList.tsx", "../../../src/components/PluginItem.tsx", "../../../src/components/RegistryContainer.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Capabilities, contributes, createSurface, Plugin, usePluginManager } from '@dxos/app-framework';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { PluginDetail, RegistryContainer } from '../components';\nimport { REGISTRY_KEY, REGISTRY_PLUGIN } from '../meta';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${REGISTRY_PLUGIN}/all`,\n role: 'article',\n filter: (data): data is any => data.subject === `${REGISTRY_KEY}+all`,\n component: () => {\n const manager = usePluginManager();\n const filtered = useMemo(() => manager.plugins.filter(({ meta }) => !manager.core.includes(meta.id)), []);\n\n return <RegistryContainer id={`${REGISTRY_KEY}+all`} plugins={filtered} />;\n },\n }),\n createSurface({\n id: `${REGISTRY_PLUGIN}/installed`,\n role: 'article',\n filter: (data): data is any => data.subject === `${REGISTRY_KEY}+installed`,\n component: () => {\n const manager = usePluginManager();\n const filtered = useMemo(\n () =>\n manager.plugins\n .filter(({ meta }) => !manager.core.includes(meta.id))\n .filter(({ meta }) => manager.enabled.includes(meta.id)),\n [],\n );\n\n return <RegistryContainer id={`${REGISTRY_KEY}+installed`} plugins={filtered} />;\n },\n }),\n createSurface({\n id: `${REGISTRY_PLUGIN}/recommended`,\n role: 'article',\n filter: (data): data is any => data.subject === `${REGISTRY_KEY}+recommended`,\n component: () => {\n const manager = usePluginManager();\n const filtered = useMemo(\n () =>\n manager.plugins\n .filter(({ meta }) => !manager.core.includes(meta.id))\n .filter(({ meta }) => !meta.tags?.includes('experimental')),\n [],\n );\n\n return <RegistryContainer id={`${REGISTRY_KEY}+recommended`} plugins={filtered} />;\n },\n }),\n createSurface({\n id: `${REGISTRY_PLUGIN}/experimental`,\n role: 'article',\n filter: (data): data is any => data.subject === `${REGISTRY_KEY}+experimental`,\n component: () => {\n const manager = usePluginManager();\n const filtered = useMemo(() => manager.plugins.filter(({ meta }) => meta.tags?.includes('experimental')), []);\n\n return <RegistryContainer id={`${REGISTRY_KEY}+experimental`} plugins={filtered} />;\n },\n }),\n createSurface({\n id: `${REGISTRY_PLUGIN}/plugin-details`,\n role: 'article',\n filter: (data): data is { subject: Plugin } => data.subject instanceof Plugin,\n component: ({ data: { subject } }) => {\n const manager = usePluginManager();\n const enabled = manager.enabled.includes(subject.meta.id);\n const handleEnable = useCallback(\n () => (enabled ? manager.disable(subject.meta.id) : manager.enable(subject.meta.id)),\n [manager, subject.meta.id, enabled],\n );\n\n return (\n <StackItem.Content role='article' toolbar={false}>\n <PluginDetail plugin={subject} enabled={enabled} onEnable={handleEnable} />\n </StackItem.Content>\n );\n },\n }),\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { Icon, Input, Link, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormContainer } from '@dxos/react-ui-form';\n\nimport { REGISTRY_PLUGIN } from '../meta';\n\nexport type PluginDetailProps = {\n plugin: Plugin;\n enabled?: boolean;\n onEnable?: () => void;\n};\n\nexport const PluginDetail = ({ plugin, enabled, onEnable }: PluginDetailProps) => {\n const { t } = useTranslation(REGISTRY_PLUGIN);\n const { id, name, description, homePage, source, screenshots } = plugin.meta;\n\n return (\n <DeprecatedFormContainer classNames='gap-6'>\n <div role='none' className='flex justify-between items-center'>\n <p>{id}</p>\n <Input.Root>\n <Input.Switch classNames='self-center' checked={enabled} onClick={onEnable} />\n </Input.Root>\n </div>\n\n {screenshots && screenshots.length > 0 && (\n <div role='none'>\n <h1 className='text-lg mb-2'>Preview</h1>\n <img src={screenshots[0]} alt={name} className='aspect-video object-fit' />\n </div>\n )}\n\n <div role='none'>\n <p>{description}</p>\n </div>\n\n <div role='none'>\n <h1 className='text-lg mb-2'>Resources</h1>\n <div className='flex gap-2'>\n {homePage && (\n <Link href={homePage} target='_blank' rel='noreferrer' classNames='text-sm text-description'>\n {t('home page label')}\n <Icon icon='ph--arrow-square-out--bold' size={3} classNames='inline-block leading-none mli-1' />\n </Link>\n )}\n\n {source && (\n <Link href={source} target='_blank' rel='noreferrer' classNames='text-sm text-description'>\n {t('source label')}\n <Icon icon='ph--arrow-square-out--bold' size={3} classNames='inline-block leading-none mli-1' />\n </Link>\n )}\n </div>\n </div>\n </DeprecatedFormContainer>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { List } from '@dxos/react-ui';\n\nimport { PluginItem, type PluginItemProps } from './PluginItem';\n\nexport type PluginListProps = Omit<PluginItemProps, 'plugin'> & {\n plugins?: readonly Plugin[];\n};\n\nexport const PluginList = ({ plugins = [], ...props }: PluginListProps) => {\n return (\n <List classNames='grid grid-cols-[repeat(auto-fill,minmax(280px,1fr))] auto-rows-[10rem] gap-3 p-3 overflow-y-auto scrollbar-thin'>\n {plugins.map((plugin) => (\n <div key={plugin.meta.id} className='flex'>\n <PluginItem plugin={plugin} {...props} />\n </div>\n ))}\n </List>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { Icon, Input, Link, ListItem, useTranslation } from '@dxos/react-ui';\nimport { descriptionText, mx } from '@dxos/react-ui-theme';\n\nimport { REGISTRY_PLUGIN } from '../meta';\n\nexport type PluginItemProps = {\n plugin: Plugin;\n installed?: readonly string[];\n enabled?: readonly string[];\n onClick?: (id: string) => void;\n onChange?: (id: string, enabled: boolean) => void;\n hasSettings?: (id: string) => boolean;\n onSettings?: (id: string) => void;\n};\n\nexport const PluginItem = ({\n plugin,\n enabled = [],\n onClick,\n onChange,\n hasSettings: _hasSettings,\n onSettings,\n}: PluginItemProps) => {\n const { t } = useTranslation(REGISTRY_PLUGIN);\n const { id, name, description, homePage, source, icon = 'ph--circle--regular' } = plugin.meta;\n const isEnabled = enabled.includes(id);\n const inputId = `${id}-input`;\n const labelId = `${id}-label`;\n const descriptionId = `${id}-description`;\n const handleClick = useCallback(() => onClick?.(id), [id, onClick]);\n\n const handleChange = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n onChange?.(id, !isEnabled);\n },\n [id, isEnabled, onChange],\n );\n\n const hasSettings = useCallback(() => _hasSettings?.(id) ?? false, [id, _hasSettings]);\n const handleSettings = useCallback(() => onSettings?.(id), [id, onSettings]);\n\n return (\n <ListItem.Root\n key={id}\n labelId={labelId}\n data-testid={`pluginList.${id}`}\n aria-describedby={descriptionId}\n classNames='w-full h-full grid grid-cols-[48px_1fr_48px] grid-rows-[40px_1fr] p-1 rounded-md border border-separator'\n >\n <div className='flex grow justify-center items-center'>\n <Icon icon={icon} size={6} onClick={handleClick} classNames='text-subdued cursor-pointer' />\n </div>\n <div className='flex grow items-center truncate cursor-pointer' onClick={handleClick}>\n {name ?? id}\n </div>\n <div className='flex grow justify-center items-center'>\n <Input.Root id={inputId}>\n <Input.Switch classNames='self-center' checked={isEnabled} onClick={handleChange} />\n </Input.Root>\n </div>\n\n <div />\n {(description || homePage || source) && (\n <div id={descriptionId} className='col-span-2 flex flex-col w-full gap-2 pb-3'>\n <div className='grow'>\n <p className={mx(descriptionText, 'line-clamp-3 min-w-0 pie-4')}>{description}</p>\n </div>\n\n <div className='flex gap-2 items-center'>\n <Link\n aria-describedby={descriptionId}\n classNames='text-sm text-description cursor-pointer'\n onClick={handleClick}\n >\n {t('details label')}\n </Link>\n\n {homePage && (\n <Link\n href={homePage}\n target='_blank'\n rel='noreferrer'\n aria-describedby={descriptionId}\n classNames='text-sm text-description'\n onClick={(ev) => ev.stopPropagation()}\n >\n {t('home page label')}\n <Icon icon='ph--arrow-square-out--bold' size={3} classNames='inline-block leading-none mli-1' />\n </Link>\n )}\n\n {source && (\n <Link\n href={source}\n target='_blank'\n rel='noreferrer'\n aria-describedby={descriptionId}\n classNames='text-sm text-description'\n onClick={(ev) => ev.stopPropagation()}\n >\n {t('source label')}\n <Icon icon='ph--arrow-square-out--bold' size={3} classNames='inline-block leading-none mli-1' />\n </Link>\n )}\n\n {hasSettings?.() && (\n <Link\n aria-describedby={descriptionId}\n classNames='text-sm text-description cursor-pointer'\n onClick={handleSettings}\n >\n {t('settings label')}\n </Link>\n )}\n </div>\n </div>\n )}\n </ListItem.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport {\n Capabilities,\n createIntent,\n LayoutAction,\n type Plugin,\n SettingsAction,\n useCapability,\n useIntentDispatcher,\n usePluginManager,\n} from '@dxos/app-framework';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { PluginList } from './PluginList';\n\nconst sortByPluginMeta = ({ meta: { name: a = '' } }: Plugin, { meta: { name: b = '' } }: Plugin) => a.localeCompare(b);\n\nexport const RegistryContainer = ({ id, plugins: _plugins }: { id: string; plugins: Plugin[] }) => {\n const manager = usePluginManager();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const plugins = useMemo(() => _plugins.sort(sortByPluginMeta), [_plugins]);\n const settingsStore = useCapability(Capabilities.SettingsStore);\n\n // TODO(wittjosiah): Factor out to an intent?\n const handleChange = useCallback(\n async (id: string, enabled: boolean) => {\n if (enabled) {\n await manager.enable(id);\n } else {\n await manager.disable(id);\n }\n\n await dispatch(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'plugins.toggle',\n properties: { plugin: id, enabled },\n }),\n );\n },\n [dispatch, manager],\n );\n\n const handleClick = useCallback(\n (pluginId: string) =>\n dispatch(\n createIntent(LayoutAction.Open, {\n part: 'main',\n // TODO(wittjosiah): `/` currently is not supported in ids.\n subject: [pluginId.replaceAll('/', ':')],\n options: { pivotId: id, positioning: 'end' },\n }),\n ),\n [dispatch, id],\n );\n\n const hasSettings = useCallback((pluginId: string) => !!settingsStore.getStore(pluginId), [settingsStore]);\n\n const handleSettings = useCallback(\n (pluginId: string) => dispatch(createIntent(SettingsAction.Open, { plugin: pluginId })),\n [dispatch],\n );\n\n return (\n <StackItem.Content toolbar={false} role='article' classNames='overflow-x-hidden overflow-y-auto'>\n <PluginList\n plugins={plugins}\n enabled={manager.enabled}\n onClick={handleClick}\n onChange={handleChange}\n hasSettings={hasSettings}\n onSettings={handleSettings}\n />\n </StackItem.Content>\n );\n};\n"],
5
+ "mappings": ";;;;;;AAIA,OAAOA,UAASC,eAAAA,cAAaC,WAAAA,gBAAe;AAE5C,SAASC,gBAAAA,eAAcC,aAAaC,eAAeC,QAAQC,oBAAAA,yBAAwB;AACnF,SAASC,aAAAA,kBAAiB;;;ACH1B,OAAOC,WAAW;AAGlB,SAASC,MAAMC,OAAOC,MAAMC,sBAAsB;AAClD,SAASC,+BAA+B;AAUjC,IAAMC,eAAe,CAAC,EAAEC,QAAQC,SAASC,SAAQ,MAAqB;AAC3E,QAAM,EAAEC,EAAC,IAAKC,eAAeC,eAAAA;AAC7B,QAAM,EAAEC,IAAIC,MAAMC,aAAaC,UAAUC,QAAQC,YAAW,IAAKX,OAAOY;AAExE,SACE,sBAAA,cAACC,yBAAAA;IAAwBC,YAAW;KAClC,sBAAA,cAACC,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB,sBAAA,cAACC,KAAAA,MAAGZ,EAAAA,GACJ,sBAAA,cAACa,MAAMC,MAAI,MACT,sBAAA,cAACD,MAAME,QAAM;IAACP,YAAW;IAAcQ,SAASrB;IAASsB,SAASrB;QAIrES,eAAeA,YAAYa,SAAS,KACnC,sBAAA,cAACT,OAAAA;IAAIC,MAAK;KACR,sBAAA,cAACS,MAAAA;IAAGR,WAAU;KAAe,SAAA,GAC7B,sBAAA,cAACS,OAAAA;IAAIC,KAAKhB,YAAY,CAAA;IAAIiB,KAAKrB;IAAMU,WAAU;OAInD,sBAAA,cAACF,OAAAA;IAAIC,MAAK;KACR,sBAAA,cAACE,KAAAA,MAAGV,WAAAA,CAAAA,GAGN,sBAAA,cAACO,OAAAA;IAAIC,MAAK;KACR,sBAAA,cAACS,MAAAA;IAAGR,WAAU;KAAe,WAAA,GAC7B,sBAAA,cAACF,OAAAA;IAAIE,WAAU;KACZR,YACC,sBAAA,cAACoB,MAAAA;IAAKC,MAAMrB;IAAUsB,QAAO;IAASC,KAAI;IAAalB,YAAW;KAC/DX,EAAE,iBAAA,GACH,sBAAA,cAAC8B,MAAAA;IAAKC,MAAK;IAA6BC,MAAM;IAAGrB,YAAW;OAI/DJ,UACC,sBAAA,cAACmB,MAAAA;IAAKC,MAAMpB;IAAQqB,QAAO;IAASC,KAAI;IAAalB,YAAW;KAC7DX,EAAE,cAAA,GACH,sBAAA,cAAC8B,MAAAA;IAAKC,MAAK;IAA6BC,MAAM;IAAGrB,YAAW;;AAO1E;;;AC1DA,OAAOsB,YAAW;AAGlB,SAASC,YAAY;;;ACHrB,OAAOC,UAASC,mBAAmB;AAGnC,SAASC,QAAAA,OAAMC,SAAAA,QAAOC,QAAAA,OAAMC,UAAUC,kBAAAA,uBAAsB;AAC5D,SAASC,iBAAiBC,UAAU;AAc7B,IAAMC,aAAa,CAAC,EACzBC,QACAC,UAAU,CAAA,GACVC,SACAC,UACAC,aAAaC,cACbC,WAAU,MACM;AAChB,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,eAAAA;AAC7B,QAAM,EAAEC,IAAIC,MAAMC,aAAaC,UAAUC,QAAQC,OAAO,sBAAqB,IAAKf,OAAOgB;AACzF,QAAMC,YAAYhB,QAAQiB,SAASR,EAAAA;AACnC,QAAMS,UAAU,GAAGT,EAAAA;AACnB,QAAMU,UAAU,GAAGV,EAAAA;AACnB,QAAMW,gBAAgB,GAAGX,EAAAA;AACzB,QAAMY,cAAcC,YAAY,MAAMrB,UAAUQ,EAAAA,GAAK;IAACA;IAAIR;GAAQ;AAElE,QAAMsB,eAAeD,YACnB,CAACE,UAAAA;AACCA,UAAMC,gBAAe;AACrBvB,eAAWO,IAAI,CAACO,SAAAA;EAClB,GACA;IAACP;IAAIO;IAAWd;GAAS;AAG3B,QAAMC,cAAcmB,YAAY,MAAMlB,eAAeK,EAAAA,KAAO,OAAO;IAACA;IAAIL;GAAa;AACrF,QAAMsB,iBAAiBJ,YAAY,MAAMjB,aAAaI,EAAAA,GAAK;IAACA;IAAIJ;GAAW;AAE3E,SACE,gBAAAsB,OAAA,cAACC,SAASC,MAAI;IACZC,KAAKrB;IACLU;IACAY,eAAa,cAActB,EAAAA;IAC3BuB,oBAAkBZ;IAClBa,YAAW;KAEX,gBAAAN,OAAA,cAACO,OAAAA;IAAIC,WAAU;KACb,gBAAAR,OAAA,cAACS,OAAAA;IAAKtB;IAAYuB,MAAM;IAAGpC,SAASoB;IAAaY,YAAW;OAE9D,gBAAAN,OAAA,cAACO,OAAAA;IAAIC,WAAU;IAAiDlC,SAASoB;KACtEX,QAAQD,EAAAA,GAEX,gBAAAkB,OAAA,cAACO,OAAAA;IAAIC,WAAU;KACb,gBAAAR,OAAA,cAACW,OAAMT,MAAI;IAACpB,IAAIS;KACd,gBAAAS,OAAA,cAACW,OAAMC,QAAM;IAACN,YAAW;IAAcO,SAASxB;IAAWf,SAASsB;QAIxE,gBAAAI,OAAA,cAACO,OAAAA,IAAAA,IACCvB,eAAeC,YAAYC,WAC3B,gBAAAc,OAAA,cAACO,OAAAA;IAAIzB,IAAIW;IAAee,WAAU;KAChC,gBAAAR,OAAA,cAACO,OAAAA;IAAIC,WAAU;KACb,gBAAAR,OAAA,cAACc,KAAAA;IAAEN,WAAWO,GAAGC,iBAAiB,4BAAA;KAAgChC,WAAAA,CAAAA,GAGpE,gBAAAgB,OAAA,cAACO,OAAAA;IAAIC,WAAU;KACb,gBAAAR,OAAA,cAACiB,OAAAA;IACCZ,oBAAkBZ;IAClBa,YAAW;IACXhC,SAASoB;KAERf,EAAE,eAAA,CAAA,GAGJM,YACC,gBAAAe,OAAA,cAACiB,OAAAA;IACCC,MAAMjC;IACNkC,QAAO;IACPC,KAAI;IACJf,oBAAkBZ;IAClBa,YAAW;IACXhC,SAAS,CAAC+C,OAAOA,GAAGvB,gBAAe;KAElCnB,EAAE,iBAAA,GACH,gBAAAqB,OAAA,cAACS,OAAAA;IAAKtB,MAAK;IAA6BuB,MAAM;IAAGJ,YAAW;OAI/DpB,UACC,gBAAAc,OAAA,cAACiB,OAAAA;IACCC,MAAMhC;IACNiC,QAAO;IACPC,KAAI;IACJf,oBAAkBZ;IAClBa,YAAW;IACXhC,SAAS,CAAC+C,OAAOA,GAAGvB,gBAAe;KAElCnB,EAAE,cAAA,GACH,gBAAAqB,OAAA,cAACS,OAAAA;IAAKtB,MAAK;IAA6BuB,MAAM;IAAGJ,YAAW;OAI/D9B,cAAAA,KACC,gBAAAwB,OAAA,cAACiB,OAAAA;IACCZ,oBAAkBZ;IAClBa,YAAW;IACXhC,SAASyB;KAERpB,EAAE,gBAAA,CAAA,CAAA,CAAA,CAAA;AAQnB;;;ADhHO,IAAM2C,aAAa,CAAC,EAAEC,UAAU,CAAA,GAAI,GAAGC,MAAAA,MAAwB;AACpE,SACE,gBAAAC,OAAA,cAACC,MAAAA;IAAKC,YAAW;KACdJ,QAAQK,IAAI,CAACC,WACZ,gBAAAJ,OAAA,cAACK,OAAAA;IAAIC,KAAKF,OAAOG,KAAKC;IAAIC,WAAU;KAClC,gBAAAT,OAAA,cAACU,YAAAA;IAAWN;IAAiB,GAAGL;;AAK1C;;;AErBA,OAAOY,UAASC,eAAAA,cAAaC,eAAe;AAE5C,SACEC,cACAC,cACAC,cAEAC,gBACAC,eACAC,qBACAC,wBACK;AACP,SAASC,2BAA2B;AACpC,SAASC,iBAAiB;AAI1B,IAAMC,mBAAmB,CAAC,EAAEC,MAAM,EAAEC,MAAMC,IAAI,GAAE,EAAE,GAAY,EAAEF,MAAM,EAAEC,MAAME,IAAI,GAAE,EAAE,MAAeD,EAAEE,cAAcD,CAAAA;AAE9G,IAAME,oBAAoB,CAAC,EAAEC,IAAIC,SAASC,SAAQ,MAAqC;AAC5F,QAAMC,UAAUC,iBAAAA;AAChB,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,oBAAAA;AACtC,QAAMN,UAAUO,QAAQ,MAAMN,SAASO,KAAKhB,gBAAAA,GAAmB;IAACS;GAAS;AACzE,QAAMQ,gBAAgBC,cAAcC,aAAaC,aAAa;AAG9D,QAAMC,eAAeC,aACnB,OAAOf,KAAYgB,YAAAA;AACjB,QAAIA,SAAS;AACX,YAAMb,QAAQc,OAAOjB,GAAAA;IACvB,OAAO;AACL,YAAMG,QAAQe,QAAQlB,GAAAA;IACxB;AAEA,UAAMM,SACJa,aAAaC,oBAAoBC,WAAW;MAC1C1B,MAAM;MACN2B,YAAY;QAAEC,QAAQvB;QAAIgB;MAAQ;IACpC,CAAA,CAAA;EAEJ,GACA;IAACV;IAAUH;GAAQ;AAGrB,QAAMqB,cAAcT,aAClB,CAACU,aACCnB,SACEa,aAAaO,aAAaC,MAAM;IAC9BC,MAAM;;IAENC,SAAS;MAACJ,SAASK,WAAW,KAAK,GAAA;;IACnCC,SAAS;MAAEC,SAAShC;MAAIiC,aAAa;IAAM;EAC7C,CAAA,CAAA,GAEJ;IAAC3B;IAAUN;GAAG;AAGhB,QAAMkC,cAAcnB,aAAY,CAACU,aAAqB,CAAC,CAACf,cAAcyB,SAASV,QAAAA,GAAW;IAACf;GAAc;AAEzG,QAAM0B,iBAAiBrB,aACrB,CAACU,aAAqBnB,SAASa,aAAakB,eAAeV,MAAM;IAAEJ,QAAQE;EAAS,CAAA,CAAA,GACpF;IAACnB;GAAS;AAGZ,SACE,gBAAAgC,OAAA,cAACC,UAAUC,SAAO;IAACC,SAAS;IAAOC,MAAK;IAAUC,YAAW;KAC3D,gBAAAL,OAAA,cAACM,YAAAA;IACC3C;IACAe,SAASb,QAAQa;IACjB6B,SAASrB;IACTsB,UAAUhC;IACVoB;IACAa,YAAYX;;AAIpB;;;AJpEA,IAAA,wBAAe,MACbY,YAAYC,cAAaC,cAAc;EACrCC,cAAc;IACZC,IAAI,GAAGC,eAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAsBA,KAAKC,YAAY,GAAGC,YAAAA;IACnDC,WAAW,MAAA;AACT,YAAMC,UAAUC,kBAAAA;AAChB,YAAMC,WAAWC,SAAQ,MAAMH,QAAQI,QAAQT,OAAO,CAAC,EAAEU,KAAI,MAAO,CAACL,QAAQM,KAAKC,SAASF,KAAKb,EAAE,CAAA,GAAI,CAAA,CAAE;AAExG,aAAO,gBAAAgB,OAAA,cAACC,mBAAAA;QAAkBjB,IAAI,GAAGM,YAAAA;QAAoBM,SAASF;;IAChE;EACF,CAAA;EACAX,cAAc;IACZC,IAAI,GAAGC,eAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAsBA,KAAKC,YAAY,GAAGC,YAAAA;IACnDC,WAAW,MAAA;AACT,YAAMC,UAAUC,kBAAAA;AAChB,YAAMC,WAAWC,SACf,MACEH,QAAQI,QACLT,OAAO,CAAC,EAAEU,KAAI,MAAO,CAACL,QAAQM,KAAKC,SAASF,KAAKb,EAAE,CAAA,EACnDG,OAAO,CAAC,EAAEU,KAAI,MAAOL,QAAQU,QAAQH,SAASF,KAAKb,EAAE,CAAA,GAC1D,CAAA,CAAE;AAGJ,aAAO,gBAAAgB,OAAA,cAACC,mBAAAA;QAAkBjB,IAAI,GAAGM,YAAAA;QAA0BM,SAASF;;IACtE;EACF,CAAA;EACAX,cAAc;IACZC,IAAI,GAAGC,eAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAsBA,KAAKC,YAAY,GAAGC,YAAAA;IACnDC,WAAW,MAAA;AACT,YAAMC,UAAUC,kBAAAA;AAChB,YAAMC,WAAWC,SACf,MACEH,QAAQI,QACLT,OAAO,CAAC,EAAEU,KAAI,MAAO,CAACL,QAAQM,KAAKC,SAASF,KAAKb,EAAE,CAAA,EACnDG,OAAO,CAAC,EAAEU,KAAI,MAAO,CAACA,KAAKM,MAAMJ,SAAS,cAAA,CAAA,GAC/C,CAAA,CAAE;AAGJ,aAAO,gBAAAC,OAAA,cAACC,mBAAAA;QAAkBjB,IAAI,GAAGM,YAAAA;QAA4BM,SAASF;;IACxE;EACF,CAAA;EACAX,cAAc;IACZC,IAAI,GAAGC,eAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAsBA,KAAKC,YAAY,GAAGC,YAAAA;IACnDC,WAAW,MAAA;AACT,YAAMC,UAAUC,kBAAAA;AAChB,YAAMC,WAAWC,SAAQ,MAAMH,QAAQI,QAAQT,OAAO,CAAC,EAAEU,KAAI,MAAOA,KAAKM,MAAMJ,SAAS,cAAA,CAAA,GAAkB,CAAA,CAAE;AAE5G,aAAO,gBAAAC,OAAA,cAACC,mBAAAA;QAAkBjB,IAAI,GAAGM,YAAAA;QAA6BM,SAASF;;IACzE;EACF,CAAA;EACAX,cAAc;IACZC,IAAI,GAAGC,eAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAsCA,KAAKC,mBAAmBe;IACvEb,WAAW,CAAC,EAAEH,MAAM,EAAEC,QAAO,EAAE,MAAE;AAC/B,YAAMG,UAAUC,kBAAAA;AAChB,YAAMS,UAAUV,QAAQU,QAAQH,SAASV,QAAQQ,KAAKb,EAAE;AACxD,YAAMqB,eAAeC,aACnB,MAAOJ,UAAUV,QAAQe,QAAQlB,QAAQQ,KAAKb,EAAE,IAAIQ,QAAQgB,OAAOnB,QAAQQ,KAAKb,EAAE,GAClF;QAACQ;QAASH,QAAQQ,KAAKb;QAAIkB;OAAQ;AAGrC,aACE,gBAAAF,OAAA,cAACS,WAAUC,SAAO;QAACxB,MAAK;QAAUyB,SAAS;SACzC,gBAAAX,OAAA,cAACY,cAAAA;QAAaC,QAAQxB;QAASa;QAAkBY,UAAUT;;IAGjE;EACF,CAAA;CACD;",
6
+ "names": ["React", "useCallback", "useMemo", "Capabilities", "contributes", "createSurface", "Plugin", "usePluginManager", "StackItem", "React", "Icon", "Input", "Link", "useTranslation", "DeprecatedFormContainer", "PluginDetail", "plugin", "enabled", "onEnable", "t", "useTranslation", "REGISTRY_PLUGIN", "id", "name", "description", "homePage", "source", "screenshots", "meta", "DeprecatedFormContainer", "classNames", "div", "role", "className", "p", "Input", "Root", "Switch", "checked", "onClick", "length", "h1", "img", "src", "alt", "Link", "href", "target", "rel", "Icon", "icon", "size", "React", "List", "React", "useCallback", "Icon", "Input", "Link", "ListItem", "useTranslation", "descriptionText", "mx", "PluginItem", "plugin", "enabled", "onClick", "onChange", "hasSettings", "_hasSettings", "onSettings", "t", "useTranslation", "REGISTRY_PLUGIN", "id", "name", "description", "homePage", "source", "icon", "meta", "isEnabled", "includes", "inputId", "labelId", "descriptionId", "handleClick", "useCallback", "handleChange", "event", "stopPropagation", "handleSettings", "React", "ListItem", "Root", "key", "data-testid", "aria-describedby", "classNames", "div", "className", "Icon", "size", "Input", "Switch", "checked", "p", "mx", "descriptionText", "Link", "href", "target", "rel", "ev", "PluginList", "plugins", "props", "React", "List", "classNames", "map", "plugin", "div", "key", "meta", "id", "className", "PluginItem", "React", "useCallback", "useMemo", "Capabilities", "createIntent", "LayoutAction", "SettingsAction", "useCapability", "useIntentDispatcher", "usePluginManager", "ObservabilityAction", "StackItem", "sortByPluginMeta", "meta", "name", "a", "b", "localeCompare", "RegistryContainer", "id", "plugins", "_plugins", "manager", "usePluginManager", "dispatchPromise", "dispatch", "useIntentDispatcher", "useMemo", "sort", "settingsStore", "useCapability", "Capabilities", "SettingsStore", "handleChange", "useCallback", "enabled", "enable", "disable", "createIntent", "ObservabilityAction", "SendEvent", "properties", "plugin", "handleClick", "pluginId", "LayoutAction", "Open", "part", "subject", "replaceAll", "options", "pivotId", "positioning", "hasSettings", "getStore", "handleSettings", "SettingsAction", "React", "StackItem", "Content", "toolbar", "role", "classNames", "PluginList", "onClick", "onChange", "onSettings", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "REGISTRY_PLUGIN", "role", "filter", "data", "subject", "REGISTRY_KEY", "component", "manager", "usePluginManager", "filtered", "useMemo", "plugins", "meta", "core", "includes", "React", "RegistryContainer", "enabled", "tags", "Plugin", "handleEnable", "useCallback", "disable", "enable", "StackItem", "Content", "toolbar", "PluginDetail", "plugin", "onEnable"]
7
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/app-graph-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2D,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAmB,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAC;kCAIvC,cAAc;;qBAmF5B,qCAAqC;sBAC9B,oBAEjB;uBACS,oBAAQ;sBAEN,oBAAe;;2BACD,uCAAiB;;;qBAMnC,qCACe;sBACD,oBACd;uBAAgD,oBAAiB;sBAC/B,oBAAiB;;2BAEjD,uCACV;;;qBAKW,qCAEX;sBAAuC,oBACvC;uBAAgD,oBAC5C;sBAKC,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;AArHt3O,wBAoHK"}
1
+ {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/app-graph-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2D,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAmB,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAC;kCAIvC,cAAc;;qBA4F7B,qCAIV;sBACgB,oBAAiB;uBAEtB,oBAAiB;sBAAgD,oBAC9D;;2BAAkE,uCAAiB;;;qBAMrF,qCAEZ;sBACc,oBACP;uBACK,oBAAK;sBACP,oBACF;;2BAIgC,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;AArH/sP,wBAoHK"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe;;qBAGwzF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;qFAHzlW,CAAC;AACzE,eAAO,MAAM,cAAc,kMAA0C,CAAC;AACtE,eAAO,MAAM,YAAY,gMAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe;;qBAGipG,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAwF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;;;qBAAqF,qCAAqC;sBAAsC,uCAAiB;uBAAgD,uCAAiB;sBAAgD,uCAAiB;;2BAAkE,uCAAiB;qFAHl7W,CAAC;AACzE,eAAO,MAAM,cAAc,kMAA0C,CAAC;AACtE,eAAO,MAAM,YAAY,gMAAwC,CAAC"}
@@ -1,9 +1,8 @@
1
- import React from 'react';
2
1
  import { type Plugin } from '@dxos/app-framework';
3
2
  export type PluginDetailProps = {
4
3
  plugin: Plugin;
5
4
  enabled?: boolean;
6
5
  onEnable?: () => void;
7
6
  };
8
- export declare const PluginDetail: ({ plugin, enabled, onEnable }: PluginDetailProps) => React.JSX.Element;
7
+ export declare const PluginDetail: ({ plugin, enabled, onEnable }: PluginDetailProps) => import("react/jsx-runtime").JSX.Element;
9
8
  //# sourceMappingURL=PluginDetail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PluginDetail.d.ts","sourceRoot":"","sources":["../../../../src/components/PluginDetail.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAMlD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,YAAY,kCAAmC,iBAAiB,sBA4C5E,CAAC"}
1
+ {"version":3,"file":"PluginDetail.d.ts","sourceRoot":"","sources":["../../../../src/components/PluginDetail.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAMlD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,YAAY,kCAAmC,iBAAiB,4CA4C5E,CAAC"}
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  import { type Plugin } from '@dxos/app-framework';
3
2
  export type PluginItemProps = {
4
3
  plugin: Plugin;
@@ -6,6 +5,8 @@ export type PluginItemProps = {
6
5
  enabled?: readonly string[];
7
6
  onClick?: (id: string) => void;
8
7
  onChange?: (id: string, enabled: boolean) => void;
8
+ hasSettings?: (id: string) => boolean;
9
+ onSettings?: (id: string) => void;
9
10
  };
10
- export declare const PluginItem: ({ plugin, enabled, onClick, onChange }: PluginItemProps) => React.JSX.Element;
11
+ export declare const PluginItem: ({ plugin, enabled, onClick, onChange, hasSettings: _hasSettings, onSettings, }: PluginItemProps) => import("react/jsx-runtime").JSX.Element;
11
12
  //# sourceMappingURL=PluginItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PluginItem.d.ts","sourceRoot":"","sources":["../../../../src/components/PluginItem.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAMlD,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD,CAAC;AAEF,eAAO,MAAM,UAAU,2CAAiD,eAAe,sBAoFtF,CAAC"}
1
+ {"version":3,"file":"PluginItem.d.ts","sourceRoot":"","sources":["../../../../src/components/PluginItem.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAMlD,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,UAAU,mFAOpB,eAAe,4CAkGjB,CAAC"}
@@ -1,8 +1,7 @@
1
- import React from 'react';
2
1
  import { type Plugin } from '@dxos/app-framework';
3
2
  import { type PluginItemProps } from './PluginItem';
4
3
  export type PluginListProps = Omit<PluginItemProps, 'plugin'> & {
5
4
  plugins?: readonly Plugin[];
6
5
  };
7
- export declare const PluginList: ({ plugins, ...props }: PluginListProps) => React.JSX.Element;
6
+ export declare const PluginList: ({ plugins, ...props }: PluginListProps) => import("react/jsx-runtime").JSX.Element;
8
7
  //# sourceMappingURL=PluginList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PluginList.d.ts","sourceRoot":"","sources":["../../../../src/components/PluginList.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG;IAC9D,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,UAAU,0BAAgC,eAAe,sBAUrE,CAAC"}
1
+ {"version":3,"file":"PluginList.d.ts","sourceRoot":"","sources":["../../../../src/components/PluginList.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG;IAC9D,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,UAAU,0BAAgC,eAAe,4CAUrE,CAAC"}
@@ -1,7 +1,6 @@
1
- import React from 'react';
2
1
  import { type Plugin } from '@dxos/app-framework';
3
2
  export declare const RegistryContainer: ({ id, plugins: _plugins }: {
4
3
  id: string;
5
4
  plugins: Plugin[];
6
- }) => React.JSX.Element;
5
+ }) => import("react/jsx-runtime").JSX.Element;
7
6
  //# sourceMappingURL=RegistryContainer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/RegistryContainer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAA8B,KAAK,MAAM,EAAyC,MAAM,qBAAqB,CAAC;AAQrH,eAAO,MAAM,iBAAiB,8BAA+B;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,sBAoC7F,CAAC"}
1
+ {"version":3,"file":"RegistryContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/RegistryContainer.tsx"],"names":[],"mappings":"AAMA,OAAO,EAIL,KAAK,MAAM,EAKZ,MAAM,qBAAqB,CAAC;AAQ7B,eAAO,MAAM,iBAAiB,8BAA+B;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,4CAyD7F,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export declare const REGISTRY_PLUGIN = "dxos.org/plugin/registry";
2
- export declare const REGISTRY_ID = "dxos:plugin-registry";
2
+ export declare const REGISTRY_ID = "!dxos:plugin-registry";
3
3
  export declare const REGISTRY_KEY = "plugin-registry";
4
4
  export declare const meta: {
5
5
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAG1D,eAAO,MAAM,WAAW,yBAAyB,CAAC;AAClD,eAAO,MAAM,YAAY,oBAAoB,CAAC;AAE9C,eAAO,MAAM,IAAI;;;CAGK,CAAC"}
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAG1D,eAAO,MAAM,WAAW,0BAA0B,CAAC;AACnD,eAAO,MAAM,YAAY,oBAAoB,CAAC;AAE9C,eAAO,MAAM,IAAI;;;CAGK,CAAC"}
@@ -19,6 +19,7 @@ declare const _default: {
19
19
  'load by url label': string;
20
20
  'coming soon label': string;
21
21
  'open plugin registry label': string;
22
+ 'settings label': string;
22
23
  };
23
24
  };
24
25
  }[];
@@ -1 +1 @@
1
- {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAMA,wBAyBE"}
1
+ {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAMA,wBA0BE"}
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@dxos/plugin-registry",
3
- "version": "0.7.5-main.ff8607b",
3
+ "version": "0.7.5-staging.2ff1350",
4
4
  "description": "Braneframe plugin gallery",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
7
7
  "license": "MIT",
8
8
  "author": "DXOS.org",
9
9
  "sideEffects": true,
10
+ "type": "module",
10
11
  "exports": {
11
12
  ".": {
12
13
  "types": "./dist/types/src/index.d.ts",
@@ -22,15 +23,15 @@
22
23
  "src"
23
24
  ],
24
25
  "dependencies": {
25
- "@dxos/app-framework": "0.7.5-main.ff8607b",
26
- "@dxos/echo-schema": "0.7.5-main.ff8607b",
27
- "@dxos/invariant": "0.7.5-main.ff8607b",
28
- "@dxos/live-object": "0.7.5-main.ff8607b",
29
- "@dxos/plugin-graph": "0.7.5-main.ff8607b",
30
- "@dxos/plugin-observability": "0.7.5-main.ff8607b",
31
- "@dxos/react-ui-form": "0.7.5-main.ff8607b",
32
- "@dxos/util": "0.7.5-main.ff8607b",
33
- "@dxos/react-ui-stack": "0.7.5-main.ff8607b"
26
+ "@dxos/echo-schema": "0.7.5-staging.2ff1350",
27
+ "@dxos/app-framework": "0.7.5-staging.2ff1350",
28
+ "@dxos/invariant": "0.7.5-staging.2ff1350",
29
+ "@dxos/live-object": "0.7.5-staging.2ff1350",
30
+ "@dxos/plugin-graph": "0.7.5-staging.2ff1350",
31
+ "@dxos/react-ui-form": "0.7.5-staging.2ff1350",
32
+ "@dxos/react-ui-stack": "0.7.5-staging.2ff1350",
33
+ "@dxos/util": "0.7.5-staging.2ff1350",
34
+ "@dxos/plugin-observability": "0.7.5-staging.2ff1350"
34
35
  },
35
36
  "devDependencies": {
36
37
  "@phosphor-icons/react": "^2.1.5",
@@ -39,17 +40,17 @@
39
40
  "react": "~18.2.0",
40
41
  "react-dom": "~18.2.0",
41
42
  "vite": "5.4.7",
42
- "@dxos/random": "0.7.5-main.ff8607b",
43
- "@dxos/react-ui-theme": "0.7.5-main.ff8607b",
44
- "@dxos/storybook-utils": "0.7.5-main.ff8607b",
45
- "@dxos/react-ui": "0.7.5-main.ff8607b"
43
+ "@dxos/random": "0.7.5-staging.2ff1350",
44
+ "@dxos/react-ui": "0.7.5-staging.2ff1350",
45
+ "@dxos/react-ui-theme": "0.7.5-staging.2ff1350",
46
+ "@dxos/storybook-utils": "0.7.5-staging.2ff1350"
46
47
  },
47
48
  "peerDependencies": {
48
49
  "@phosphor-icons/react": "^2.1.5",
49
50
  "react": "~18.2.0",
50
51
  "react-dom": "~18.2.0",
51
- "@dxos/react-ui": "0.7.5-main.ff8607b",
52
- "@dxos/react-ui-theme": "0.7.5-main.ff8607b"
52
+ "@dxos/react-ui-theme": "0.7.5-staging.2ff1350",
53
+ "@dxos/react-ui": "0.7.5-staging.2ff1350"
53
54
  },
54
55
  "publishConfig": {
55
56
  "access": "public"
@@ -17,12 +17,12 @@ export const RegistryPlugin = () =>
17
17
  }),
18
18
  defineModule({
19
19
  id: `${meta.id}/module/react-surface`,
20
- activatesOn: Events.SetupSurfaces,
20
+ activatesOn: Events.SetupReactSurface,
21
21
  activate: ReactSurface,
22
22
  }),
23
23
  defineModule({
24
24
  id: `${meta.id}/module/intent-resolver`,
25
- activatesOn: Events.SetupIntents,
25
+ activatesOn: Events.SetupIntentResolver,
26
26
  activate: IntentResolver,
27
27
  }),
28
28
  defineModule({
@@ -41,9 +41,9 @@ export default (context: PluginsContext) =>
41
41
  },
42
42
  nodes: [
43
43
  {
44
- id: `${REGISTRY_KEY}:all`,
44
+ id: `${REGISTRY_KEY}+all`,
45
45
  type: 'category',
46
- data: `${REGISTRY_KEY}:all`,
46
+ data: `${REGISTRY_KEY}+all`,
47
47
  properties: {
48
48
  label: ['all plugins label', { ns: REGISTRY_PLUGIN }],
49
49
  icon: 'ph--squares-four--regular',
@@ -52,9 +52,9 @@ export default (context: PluginsContext) =>
52
52
  },
53
53
  },
54
54
  {
55
- id: `${REGISTRY_KEY}:installed`,
55
+ id: `${REGISTRY_KEY}+installed`,
56
56
  type: 'category',
57
- data: `${REGISTRY_KEY}:installed`,
57
+ data: `${REGISTRY_KEY}+installed`,
58
58
  properties: {
59
59
  label: ['installed plugins label', { ns: REGISTRY_PLUGIN }],
60
60
  icon: 'ph--check--regular',
@@ -63,9 +63,9 @@ export default (context: PluginsContext) =>
63
63
  },
64
64
  },
65
65
  {
66
- id: `${REGISTRY_KEY}:recommended`,
66
+ id: `${REGISTRY_KEY}+recommended`,
67
67
  type: 'category',
68
- data: `${REGISTRY_KEY}:recommended`,
68
+ data: `${REGISTRY_KEY}+recommended`,
69
69
  properties: {
70
70
  label: ['recommended plugins label', { ns: REGISTRY_PLUGIN }],
71
71
  icon: 'ph--star--regular',
@@ -74,9 +74,9 @@ export default (context: PluginsContext) =>
74
74
  },
75
75
  },
76
76
  {
77
- id: `${REGISTRY_KEY}:experimental`,
77
+ id: `${REGISTRY_KEY}+experimental`,
78
78
  type: 'category',
79
- data: `${REGISTRY_KEY}:experimental`,
79
+ data: `${REGISTRY_KEY}+experimental`,
80
80
  properties: {
81
81
  label: ['experimental plugins label', { ns: REGISTRY_PLUGIN }],
82
82
  icon: 'ph--flask--regular',
@@ -15,18 +15,18 @@ export default () =>
15
15
  createSurface({
16
16
  id: `${REGISTRY_PLUGIN}/all`,
17
17
  role: 'article',
18
- filter: (data): data is any => data.subject === `${REGISTRY_KEY}:all`,
18
+ filter: (data): data is any => data.subject === `${REGISTRY_KEY}+all`,
19
19
  component: () => {
20
20
  const manager = usePluginManager();
21
21
  const filtered = useMemo(() => manager.plugins.filter(({ meta }) => !manager.core.includes(meta.id)), []);
22
22
 
23
- return <RegistryContainer id={`${REGISTRY_KEY}:all`} plugins={filtered} />;
23
+ return <RegistryContainer id={`${REGISTRY_KEY}+all`} plugins={filtered} />;
24
24
  },
25
25
  }),
26
26
  createSurface({
27
27
  id: `${REGISTRY_PLUGIN}/installed`,
28
28
  role: 'article',
29
- filter: (data): data is any => data.subject === `${REGISTRY_KEY}:installed`,
29
+ filter: (data): data is any => data.subject === `${REGISTRY_KEY}+installed`,
30
30
  component: () => {
31
31
  const manager = usePluginManager();
32
32
  const filtered = useMemo(
@@ -37,13 +37,13 @@ export default () =>
37
37
  [],
38
38
  );
39
39
 
40
- return <RegistryContainer id={`${REGISTRY_KEY}:installed`} plugins={filtered} />;
40
+ return <RegistryContainer id={`${REGISTRY_KEY}+installed`} plugins={filtered} />;
41
41
  },
42
42
  }),
43
43
  createSurface({
44
44
  id: `${REGISTRY_PLUGIN}/recommended`,
45
45
  role: 'article',
46
- filter: (data): data is any => data.subject === `${REGISTRY_KEY}:recommended`,
46
+ filter: (data): data is any => data.subject === `${REGISTRY_KEY}+recommended`,
47
47
  component: () => {
48
48
  const manager = usePluginManager();
49
49
  const filtered = useMemo(
@@ -54,18 +54,18 @@ export default () =>
54
54
  [],
55
55
  );
56
56
 
57
- return <RegistryContainer id={`${REGISTRY_KEY}:recommended`} plugins={filtered} />;
57
+ return <RegistryContainer id={`${REGISTRY_KEY}+recommended`} plugins={filtered} />;
58
58
  },
59
59
  }),
60
60
  createSurface({
61
61
  id: `${REGISTRY_PLUGIN}/experimental`,
62
62
  role: 'article',
63
- filter: (data): data is any => data.subject === `${REGISTRY_KEY}:experimental`,
63
+ filter: (data): data is any => data.subject === `${REGISTRY_KEY}+experimental`,
64
64
  component: () => {
65
65
  const manager = usePluginManager();
66
66
  const filtered = useMemo(() => manager.plugins.filter(({ meta }) => meta.tags?.includes('experimental')), []);
67
67
 
68
- return <RegistryContainer id={`${REGISTRY_KEY}:experimental`} plugins={filtered} />;
68
+ return <RegistryContainer id={`${REGISTRY_KEY}+experimental`} plugins={filtered} />;
69
69
  },
70
70
  }),
71
71
  createSurface({
@@ -29,7 +29,7 @@ export const PluginDetail = ({ plugin, enabled, onEnable }: PluginDetailProps) =
29
29
  </Input.Root>
30
30
  </div>
31
31
 
32
- {screenshots && (
32
+ {screenshots && screenshots.length > 0 && (
33
33
  <div role='none'>
34
34
  <h1 className='text-lg mb-2'>Preview</h1>
35
35
  <img src={screenshots[0]} alt={name} className='aspect-video object-fit' />
@@ -16,9 +16,18 @@ export type PluginItemProps = {
16
16
  enabled?: readonly string[];
17
17
  onClick?: (id: string) => void;
18
18
  onChange?: (id: string, enabled: boolean) => void;
19
+ hasSettings?: (id: string) => boolean;
20
+ onSettings?: (id: string) => void;
19
21
  };
20
22
 
21
- export const PluginItem = ({ plugin, enabled = [], onClick, onChange }: PluginItemProps) => {
23
+ export const PluginItem = ({
24
+ plugin,
25
+ enabled = [],
26
+ onClick,
27
+ onChange,
28
+ hasSettings: _hasSettings,
29
+ onSettings,
30
+ }: PluginItemProps) => {
22
31
  const { t } = useTranslation(REGISTRY_PLUGIN);
23
32
  const { id, name, description, homePage, source, icon = 'ph--circle--regular' } = plugin.meta;
24
33
  const isEnabled = enabled.includes(id);
@@ -26,6 +35,7 @@ export const PluginItem = ({ plugin, enabled = [], onClick, onChange }: PluginIt
26
35
  const labelId = `${id}-label`;
27
36
  const descriptionId = `${id}-description`;
28
37
  const handleClick = useCallback(() => onClick?.(id), [id, onClick]);
38
+
29
39
  const handleChange = useCallback(
30
40
  (event: React.MouseEvent) => {
31
41
  event.stopPropagation();
@@ -34,6 +44,9 @@ export const PluginItem = ({ plugin, enabled = [], onClick, onChange }: PluginIt
34
44
  [id, isEnabled, onChange],
35
45
  );
36
46
 
47
+ const hasSettings = useCallback(() => _hasSettings?.(id) ?? false, [id, _hasSettings]);
48
+ const handleSettings = useCallback(() => onSettings?.(id), [id, onSettings]);
49
+
37
50
  return (
38
51
  <ListItem.Root
39
52
  key={id}
@@ -56,7 +69,7 @@ export const PluginItem = ({ plugin, enabled = [], onClick, onChange }: PluginIt
56
69
 
57
70
  <div />
58
71
  {(description || homePage || source) && (
59
- <div id={descriptionId} className='col-span-2 flex flex-col w-full gap-2 pb-3 overflow-y-scroll'>
72
+ <div id={descriptionId} className='col-span-2 flex flex-col w-full gap-2 pb-3'>
60
73
  <div className='grow'>
61
74
  <p className={mx(descriptionText, 'line-clamp-3 min-w-0 pie-4')}>{description}</p>
62
75
  </div>
@@ -97,6 +110,16 @@ export const PluginItem = ({ plugin, enabled = [], onClick, onChange }: PluginIt
97
110
  <Icon icon='ph--arrow-square-out--bold' size={3} classNames='inline-block leading-none mli-1' />
98
111
  </Link>
99
112
  )}
113
+
114
+ {hasSettings?.() && (
115
+ <Link
116
+ aria-describedby={descriptionId}
117
+ classNames='text-sm text-description cursor-pointer'
118
+ onClick={handleSettings}
119
+ >
120
+ {t('settings label')}
121
+ </Link>
122
+ )}
100
123
  </div>
101
124
  </div>
102
125
  )}
@@ -71,6 +71,6 @@ export const Default = {};
71
71
 
72
72
  export const Column = {
73
73
  args: {
74
- classNames: 'w-[400px]',
74
+ classNames: 'w-[30rem]',
75
75
  },
76
76
  };
@@ -2,9 +2,18 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import React, { useMemo } from 'react';
5
+ import React, { useCallback, useMemo } from 'react';
6
6
 
7
- import { createIntent, LayoutAction, type Plugin, useIntentDispatcher, usePluginManager } from '@dxos/app-framework';
7
+ import {
8
+ Capabilities,
9
+ createIntent,
10
+ LayoutAction,
11
+ type Plugin,
12
+ SettingsAction,
13
+ useCapability,
14
+ useIntentDispatcher,
15
+ usePluginManager,
16
+ } from '@dxos/app-framework';
8
17
  import { ObservabilityAction } from '@dxos/plugin-observability/types';
9
18
  import { StackItem } from '@dxos/react-ui-stack';
10
19
 
@@ -16,36 +25,57 @@ export const RegistryContainer = ({ id, plugins: _plugins }: { id: string; plugi
16
25
  const manager = usePluginManager();
17
26
  const { dispatchPromise: dispatch } = useIntentDispatcher();
18
27
  const plugins = useMemo(() => _plugins.sort(sortByPluginMeta), [_plugins]);
28
+ const settingsStore = useCapability(Capabilities.SettingsStore);
19
29
 
20
30
  // TODO(wittjosiah): Factor out to an intent?
21
- const handleChange = async (id: string, enabled: boolean) => {
22
- if (enabled) {
23
- await manager.enable(id);
24
- } else {
25
- await manager.disable(id);
26
- }
27
-
28
- await dispatch(
29
- createIntent(ObservabilityAction.SendEvent, {
30
- name: 'plugins.toggle',
31
- properties: { plugin: id, enabled },
32
- }),
33
- );
34
- };
35
-
36
- const handleClick = (pluginId: string) =>
37
- dispatch(
38
- createIntent(LayoutAction.Open, {
39
- part: 'main',
40
- // TODO(wittjosiah): `/` currently is not supported in ids.
41
- subject: [pluginId.replaceAll('/', ':')],
42
- options: { pivotId: id, positioning: 'end' },
43
- }),
44
- );
31
+ const handleChange = useCallback(
32
+ async (id: string, enabled: boolean) => {
33
+ if (enabled) {
34
+ await manager.enable(id);
35
+ } else {
36
+ await manager.disable(id);
37
+ }
38
+
39
+ await dispatch(
40
+ createIntent(ObservabilityAction.SendEvent, {
41
+ name: 'plugins.toggle',
42
+ properties: { plugin: id, enabled },
43
+ }),
44
+ );
45
+ },
46
+ [dispatch, manager],
47
+ );
48
+
49
+ const handleClick = useCallback(
50
+ (pluginId: string) =>
51
+ dispatch(
52
+ createIntent(LayoutAction.Open, {
53
+ part: 'main',
54
+ // TODO(wittjosiah): `/` currently is not supported in ids.
55
+ subject: [pluginId.replaceAll('/', ':')],
56
+ options: { pivotId: id, positioning: 'end' },
57
+ }),
58
+ ),
59
+ [dispatch, id],
60
+ );
61
+
62
+ const hasSettings = useCallback((pluginId: string) => !!settingsStore.getStore(pluginId), [settingsStore]);
63
+
64
+ const handleSettings = useCallback(
65
+ (pluginId: string) => dispatch(createIntent(SettingsAction.Open, { plugin: pluginId })),
66
+ [dispatch],
67
+ );
45
68
 
46
69
  return (
47
70
  <StackItem.Content toolbar={false} role='article' classNames='overflow-x-hidden overflow-y-auto'>
48
- <PluginList plugins={plugins} enabled={manager.enabled} onClick={handleClick} onChange={handleChange} />
71
+ <PluginList
72
+ plugins={plugins}
73
+ enabled={manager.enabled}
74
+ onClick={handleClick}
75
+ onChange={handleChange}
76
+ hasSettings={hasSettings}
77
+ onSettings={handleSettings}
78
+ />
49
79
  </StackItem.Content>
50
80
  );
51
81
  };
package/src/meta.ts CHANGED
@@ -7,7 +7,7 @@ import { type PluginMeta } from '@dxos/app-framework';
7
7
  export const REGISTRY_PLUGIN = 'dxos.org/plugin/registry';
8
8
 
9
9
  // TODO(wittjosiah): Deck does not currently support `/` in ids.
10
- export const REGISTRY_ID = 'dxos:plugin-registry';
10
+ export const REGISTRY_ID = '!dxos:plugin-registry';
11
11
  export const REGISTRY_KEY = 'plugin-registry';
12
12
 
13
13
  export const meta = {
@@ -26,6 +26,7 @@ export default [
26
26
  'load by url label': 'Load by URL (soon)',
27
27
  'coming soon label': 'Coming soon!',
28
28
  'open plugin registry label': 'Open plugin registry',
29
+ 'settings label': 'Settings',
29
30
  },
30
31
  },
31
32
  },
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/PluginDetail.tsx", "../../../src/components/PluginList.tsx", "../../../src/components/PluginItem.tsx", "../../../src/components/RegistryContainer.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Capabilities, contributes, createSurface, Plugin, usePluginManager } from '@dxos/app-framework';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { PluginDetail, RegistryContainer } from '../components';\nimport { REGISTRY_KEY, REGISTRY_PLUGIN } from '../meta';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${REGISTRY_PLUGIN}/all`,\n role: 'article',\n filter: (data): data is any => data.subject === `${REGISTRY_KEY}:all`,\n component: () => {\n const manager = usePluginManager();\n const filtered = useMemo(() => manager.plugins.filter(({ meta }) => !manager.core.includes(meta.id)), []);\n\n return <RegistryContainer id={`${REGISTRY_KEY}:all`} plugins={filtered} />;\n },\n }),\n createSurface({\n id: `${REGISTRY_PLUGIN}/installed`,\n role: 'article',\n filter: (data): data is any => data.subject === `${REGISTRY_KEY}:installed`,\n component: () => {\n const manager = usePluginManager();\n const filtered = useMemo(\n () =>\n manager.plugins\n .filter(({ meta }) => !manager.core.includes(meta.id))\n .filter(({ meta }) => manager.enabled.includes(meta.id)),\n [],\n );\n\n return <RegistryContainer id={`${REGISTRY_KEY}:installed`} plugins={filtered} />;\n },\n }),\n createSurface({\n id: `${REGISTRY_PLUGIN}/recommended`,\n role: 'article',\n filter: (data): data is any => data.subject === `${REGISTRY_KEY}:recommended`,\n component: () => {\n const manager = usePluginManager();\n const filtered = useMemo(\n () =>\n manager.plugins\n .filter(({ meta }) => !manager.core.includes(meta.id))\n .filter(({ meta }) => !meta.tags?.includes('experimental')),\n [],\n );\n\n return <RegistryContainer id={`${REGISTRY_KEY}:recommended`} plugins={filtered} />;\n },\n }),\n createSurface({\n id: `${REGISTRY_PLUGIN}/experimental`,\n role: 'article',\n filter: (data): data is any => data.subject === `${REGISTRY_KEY}:experimental`,\n component: () => {\n const manager = usePluginManager();\n const filtered = useMemo(() => manager.plugins.filter(({ meta }) => meta.tags?.includes('experimental')), []);\n\n return <RegistryContainer id={`${REGISTRY_KEY}:experimental`} plugins={filtered} />;\n },\n }),\n createSurface({\n id: `${REGISTRY_PLUGIN}/plugin-details`,\n role: 'article',\n filter: (data): data is { subject: Plugin } => data.subject instanceof Plugin,\n component: ({ data: { subject } }) => {\n const manager = usePluginManager();\n const enabled = manager.enabled.includes(subject.meta.id);\n const handleEnable = useCallback(\n () => (enabled ? manager.disable(subject.meta.id) : manager.enable(subject.meta.id)),\n [manager, subject.meta.id, enabled],\n );\n\n return (\n <StackItem.Content role='article' toolbar={false}>\n <PluginDetail plugin={subject} enabled={enabled} onEnable={handleEnable} />\n </StackItem.Content>\n );\n },\n }),\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { Icon, Input, Link, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormContainer } from '@dxos/react-ui-form';\n\nimport { REGISTRY_PLUGIN } from '../meta';\n\nexport type PluginDetailProps = {\n plugin: Plugin;\n enabled?: boolean;\n onEnable?: () => void;\n};\n\nexport const PluginDetail = ({ plugin, enabled, onEnable }: PluginDetailProps) => {\n const { t } = useTranslation(REGISTRY_PLUGIN);\n const { id, name, description, homePage, source, screenshots } = plugin.meta;\n\n return (\n <DeprecatedFormContainer classNames='gap-6'>\n <div role='none' className='flex justify-between items-center'>\n <p>{id}</p>\n <Input.Root>\n <Input.Switch classNames='self-center' checked={enabled} onClick={onEnable} />\n </Input.Root>\n </div>\n\n {screenshots && (\n <div role='none'>\n <h1 className='text-lg mb-2'>Preview</h1>\n <img src={screenshots[0]} alt={name} className='aspect-video object-fit' />\n </div>\n )}\n\n <div role='none'>\n <p>{description}</p>\n </div>\n\n <div role='none'>\n <h1 className='text-lg mb-2'>Resources</h1>\n <div className='flex gap-2'>\n {homePage && (\n <Link href={homePage} target='_blank' rel='noreferrer' classNames='text-sm text-description'>\n {t('home page label')}\n <Icon icon='ph--arrow-square-out--bold' size={3} classNames='inline-block leading-none mli-1' />\n </Link>\n )}\n\n {source && (\n <Link href={source} target='_blank' rel='noreferrer' classNames='text-sm text-description'>\n {t('source label')}\n <Icon icon='ph--arrow-square-out--bold' size={3} classNames='inline-block leading-none mli-1' />\n </Link>\n )}\n </div>\n </div>\n </DeprecatedFormContainer>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { List } from '@dxos/react-ui';\n\nimport { PluginItem, type PluginItemProps } from './PluginItem';\n\nexport type PluginListProps = Omit<PluginItemProps, 'plugin'> & {\n plugins?: readonly Plugin[];\n};\n\nexport const PluginList = ({ plugins = [], ...props }: PluginListProps) => {\n return (\n <List classNames='grid grid-cols-[repeat(auto-fill,minmax(280px,1fr))] auto-rows-[10rem] gap-3 p-3 overflow-y-auto scrollbar-thin'>\n {plugins.map((plugin) => (\n <div key={plugin.meta.id} className='flex'>\n <PluginItem plugin={plugin} {...props} />\n </div>\n ))}\n </List>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { Icon, Input, Link, ListItem, useTranslation } from '@dxos/react-ui';\nimport { descriptionText, mx } from '@dxos/react-ui-theme';\n\nimport { REGISTRY_PLUGIN } from '../meta';\n\nexport type PluginItemProps = {\n plugin: Plugin;\n installed?: readonly string[];\n enabled?: readonly string[];\n onClick?: (id: string) => void;\n onChange?: (id: string, enabled: boolean) => void;\n};\n\nexport const PluginItem = ({ plugin, enabled = [], onClick, onChange }: PluginItemProps) => {\n const { t } = useTranslation(REGISTRY_PLUGIN);\n const { id, name, description, homePage, source, icon = 'ph--circle--regular' } = plugin.meta;\n const isEnabled = enabled.includes(id);\n const inputId = `${id}-input`;\n const labelId = `${id}-label`;\n const descriptionId = `${id}-description`;\n const handleClick = useCallback(() => onClick?.(id), [id, onClick]);\n const handleChange = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n onChange?.(id, !isEnabled);\n },\n [id, isEnabled, onChange],\n );\n\n return (\n <ListItem.Root\n key={id}\n labelId={labelId}\n data-testid={`pluginList.${id}`}\n aria-describedby={descriptionId}\n classNames='w-full h-full grid grid-cols-[48px_1fr_48px] grid-rows-[40px_1fr] p-1 rounded-md border border-separator'\n >\n <div className='flex grow justify-center items-center'>\n <Icon icon={icon} size={6} onClick={handleClick} classNames='text-subdued cursor-pointer' />\n </div>\n <div className='flex grow items-center truncate cursor-pointer' onClick={handleClick}>\n {name ?? id}\n </div>\n <div className='flex grow justify-center items-center'>\n <Input.Root id={inputId}>\n <Input.Switch classNames='self-center' checked={isEnabled} onClick={handleChange} />\n </Input.Root>\n </div>\n\n <div />\n {(description || homePage || source) && (\n <div id={descriptionId} className='col-span-2 flex flex-col w-full gap-2 pb-3 overflow-y-scroll'>\n <div className='grow'>\n <p className={mx(descriptionText, 'line-clamp-3 min-w-0 pie-4')}>{description}</p>\n </div>\n\n <div className='flex gap-2 items-center'>\n <Link\n aria-describedby={descriptionId}\n classNames='text-sm text-description cursor-pointer'\n onClick={handleClick}\n >\n {t('details label')}\n </Link>\n\n {homePage && (\n <Link\n href={homePage}\n target='_blank'\n rel='noreferrer'\n aria-describedby={descriptionId}\n classNames='text-sm text-description'\n onClick={(ev) => ev.stopPropagation()}\n >\n {t('home page label')}\n <Icon icon='ph--arrow-square-out--bold' size={3} classNames='inline-block leading-none mli-1' />\n </Link>\n )}\n\n {source && (\n <Link\n href={source}\n target='_blank'\n rel='noreferrer'\n aria-describedby={descriptionId}\n classNames='text-sm text-description'\n onClick={(ev) => ev.stopPropagation()}\n >\n {t('source label')}\n <Icon icon='ph--arrow-square-out--bold' size={3} classNames='inline-block leading-none mli-1' />\n </Link>\n )}\n </div>\n </div>\n )}\n </ListItem.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { createIntent, LayoutAction, type Plugin, useIntentDispatcher, usePluginManager } from '@dxos/app-framework';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { PluginList } from './PluginList';\n\nconst sortByPluginMeta = ({ meta: { name: a = '' } }: Plugin, { meta: { name: b = '' } }: Plugin) => a.localeCompare(b);\n\nexport const RegistryContainer = ({ id, plugins: _plugins }: { id: string; plugins: Plugin[] }) => {\n const manager = usePluginManager();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const plugins = useMemo(() => _plugins.sort(sortByPluginMeta), [_plugins]);\n\n // TODO(wittjosiah): Factor out to an intent?\n const handleChange = async (id: string, enabled: boolean) => {\n if (enabled) {\n await manager.enable(id);\n } else {\n await manager.disable(id);\n }\n\n await dispatch(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'plugins.toggle',\n properties: { plugin: id, enabled },\n }),\n );\n };\n\n const handleClick = (pluginId: string) =>\n dispatch(\n createIntent(LayoutAction.Open, {\n part: 'main',\n // TODO(wittjosiah): `/` currently is not supported in ids.\n subject: [pluginId.replaceAll('/', ':')],\n options: { pivotId: id, positioning: 'end' },\n }),\n );\n\n return (\n <StackItem.Content toolbar={false} role='article' classNames='overflow-x-hidden overflow-y-auto'>\n <PluginList plugins={plugins} enabled={manager.enabled} onClick={handleClick} onChange={handleChange} />\n </StackItem.Content>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["React", "useCallback", "useMemo", "Capabilities", "contributes", "createSurface", "Plugin", "usePluginManager", "StackItem", "React", "Icon", "Input", "Link", "useTranslation", "DeprecatedFormContainer", "PluginDetail", "plugin", "enabled", "onEnable", "t", "useTranslation", "REGISTRY_PLUGIN", "id", "name", "description", "homePage", "source", "screenshots", "meta", "DeprecatedFormContainer", "classNames", "div", "role", "className", "p", "Input", "Root", "Switch", "checked", "onClick", "h1", "img", "src", "alt", "Link", "href", "target", "rel", "Icon", "icon", "size", "React", "List", "React", "useCallback", "Icon", "Input", "Link", "ListItem", "useTranslation", "descriptionText", "mx", "PluginItem", "plugin", "enabled", "onClick", "onChange", "t", "useTranslation", "REGISTRY_PLUGIN", "id", "name", "description", "homePage", "source", "icon", "meta", "isEnabled", "includes", "inputId", "labelId", "descriptionId", "handleClick", "useCallback", "handleChange", "event", "stopPropagation", "React", "ListItem", "Root", "key", "data-testid", "aria-describedby", "classNames", "div", "className", "Icon", "size", "Input", "Switch", "checked", "p", "mx", "descriptionText", "Link", "href", "target", "rel", "ev", "PluginList", "plugins", "props", "React", "List", "classNames", "map", "plugin", "div", "key", "meta", "id", "className", "PluginItem", "React", "useMemo", "createIntent", "LayoutAction", "useIntentDispatcher", "usePluginManager", "ObservabilityAction", "StackItem", "sortByPluginMeta", "meta", "name", "a", "b", "localeCompare", "RegistryContainer", "id", "plugins", "_plugins", "manager", "usePluginManager", "dispatchPromise", "dispatch", "useIntentDispatcher", "useMemo", "sort", "handleChange", "enabled", "enable", "disable", "createIntent", "ObservabilityAction", "SendEvent", "properties", "plugin", "handleClick", "pluginId", "LayoutAction", "Open", "part", "subject", "replaceAll", "options", "pivotId", "positioning", "React", "StackItem", "Content", "toolbar", "role", "classNames", "PluginList", "onClick", "onChange", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "REGISTRY_PLUGIN", "role", "filter", "data", "subject", "REGISTRY_KEY", "component", "manager", "usePluginManager", "filtered", "useMemo", "plugins", "meta", "core", "includes", "React", "RegistryContainer", "enabled", "tags", "Plugin", "handleEnable", "useCallback", "disable", "enable", "StackItem", "Content", "toolbar", "PluginDetail", "plugin", "onEnable"]
7
- }