@dxos/plugin-registry 0.8.2-main.f11618f → 0.8.2-staging.42af850

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 (31) hide show
  1. package/dist/lib/browser/{app-graph-builder-V6VVFXFC.mjs → app-graph-builder-J5YHAGNI.mjs} +24 -27
  2. package/dist/lib/browser/app-graph-builder-J5YHAGNI.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3 -8
  4. package/dist/lib/browser/index.mjs.map +2 -2
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/react-surface-NLJXCVYD.mjs +335 -0
  7. package/dist/lib/browser/react-surface-NLJXCVYD.mjs.map +7 -0
  8. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  9. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  10. package/dist/types/src/capabilities/index.d.ts +1 -177
  11. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  12. package/dist/types/src/components/PluginDetail.d.ts.map +1 -1
  13. package/dist/types/src/components/PluginItem.d.ts.map +1 -1
  14. package/dist/types/src/components/PluginList.d.ts.map +1 -1
  15. package/dist/types/src/components/RegistryContainer.d.ts.map +1 -1
  16. package/dist/types/src/translations.d.ts +1 -6
  17. package/dist/types/src/translations.d.ts.map +1 -1
  18. package/dist/types/src/types.d.ts +4 -4
  19. package/dist/types/src/types.d.ts.map +1 -1
  20. package/dist/types/tsconfig.tsbuildinfo +1 -1
  21. package/package.json +24 -16
  22. package/src/capabilities/app-graph-builder.ts +133 -104
  23. package/src/capabilities/react-surface.tsx +5 -5
  24. package/src/components/PluginItem.tsx +20 -7
  25. package/src/components/PluginList.stories.tsx +2 -2
  26. package/src/components/PluginList.tsx +1 -1
  27. package/src/translations.ts +1 -6
  28. package/src/types.ts +5 -5
  29. package/dist/lib/browser/app-graph-builder-V6VVFXFC.mjs.map +0 -7
  30. package/dist/lib/browser/react-surface-PNR23BFI.mjs +0 -305
  31. package/dist/lib/browser/react-surface-PNR23BFI.mjs.map +0 -7
@@ -5,17 +5,18 @@ import {
5
5
  } from "./chunk-ISC56E5F.mjs";
6
6
 
7
7
  // packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts
8
+ import { Rx } from "@effect-rx/rx-react";
9
+ import { Option, pipe } from "effect";
8
10
  import { Capabilities, contributes, createIntent, SettingsAction } from "@dxos/app-framework";
9
11
  import { createExtension } from "@dxos/plugin-graph";
10
12
  var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBuilder, [
11
13
  createExtension({
12
14
  id: REGISTRY_PLUGIN,
13
- filter: (node) => node.id === "root",
14
- actions: () => [
15
+ actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === "root" ? Option.some(node2) : Option.none()), Option.map((node2) => [
15
16
  {
16
17
  id: REGISTRY_PLUGIN,
17
18
  data: async () => {
18
- const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
19
+ const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
19
20
  await dispatch(createIntent(SettingsAction.OpenPluginRegistry));
20
21
  },
21
22
  properties: {
@@ -25,15 +26,15 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
25
26
  ns: REGISTRY_PLUGIN
26
27
  }
27
28
  ],
28
- icon: "ph--squares-four--regular"
29
+ icon: "ph--squares-four--regular",
30
+ disposition: "menu"
29
31
  }
30
32
  }
31
- ]
33
+ ]), Option.getOrElse(() => [])))
32
34
  }),
33
35
  createExtension({
34
36
  id: REGISTRY_PLUGIN,
35
- filter: (node) => node.id === "root",
36
- connector: () => [
37
+ connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === "root" ? Option.some(node2) : Option.none()), Option.map((node2) => [
37
38
  {
38
39
  id: REGISTRY_ID,
39
40
  type: REGISTRY_PLUGIN,
@@ -98,29 +99,28 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
98
99
  }
99
100
  },
100
101
  {
101
- id: `${REGISTRY_KEY}+experimental`,
102
+ id: `${REGISTRY_KEY}+labs`,
102
103
  type: "category",
103
- data: `${REGISTRY_KEY}+experimental`,
104
+ data: `${REGISTRY_KEY}+labs`,
104
105
  properties: {
105
106
  label: [
106
- "experimental plugins label",
107
+ "labs plugins label",
107
108
  {
108
109
  ns: REGISTRY_PLUGIN
109
110
  }
110
111
  ],
111
112
  icon: "ph--flask--regular",
112
113
  key: REGISTRY_KEY,
113
- testId: "pluginRegistry.experimental"
114
+ testId: "pluginRegistry.labs"
114
115
  }
115
116
  }
116
117
  ]
117
118
  }
118
- ]
119
+ ]), Option.getOrElse(() => [])))
119
120
  }),
120
121
  createExtension({
121
122
  id: `${REGISTRY_PLUGIN}/actions`,
122
- filter: (node) => node.id === REGISTRY_ID,
123
- actions: () => [
123
+ actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === REGISTRY_ID ? Option.some(node2) : Option.none()), Option.map(() => [
124
124
  {
125
125
  id: `${REGISTRY_PLUGIN}/load-by-url`,
126
126
  data: async () => {
@@ -136,29 +136,26 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
136
136
  disabled: true
137
137
  }
138
138
  }
139
- ]
139
+ ]), Option.getOrElse(() => [])))
140
140
  }),
141
141
  createExtension({
142
142
  id: `${REGISTRY_PLUGIN}/plugins`,
143
- resolver: ({ id }) => {
144
- const manager = context.requestCapability(Capabilities.PluginManager);
145
- const plugin = manager.plugins.find((plugin2) => plugin2.meta.id === id.replaceAll(":", "/"));
146
- if (!plugin) {
147
- return;
148
- }
149
- return {
150
- id,
143
+ connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === REGISTRY_ID ? Option.some(node2) : Option.none()), Option.map(() => {
144
+ const manager = context.getCapability(Capabilities.PluginManager);
145
+ return manager.plugins.map((plugin) => ({
146
+ id: plugin.meta.id.replaceAll("/", ":"),
151
147
  type: "dxos.org/plugin",
152
148
  data: plugin,
153
149
  properties: {
154
150
  label: plugin.meta.name ?? plugin.meta.id,
155
- icon: plugin.meta.icon ?? "ph--circle--regular"
151
+ icon: plugin.meta.icon ?? "ph--circle--regular",
152
+ disposition: "hidden"
156
153
  }
157
- };
158
- }
154
+ }));
155
+ }), Option.getOrElse(() => [])))
159
156
  })
160
157
  ]);
161
158
  export {
162
159
  app_graph_builder_default as default
163
160
  };
164
- //# sourceMappingURL=app-graph-builder-V6VVFXFC.mjs.map
161
+ //# sourceMappingURL=app-graph-builder-J5YHAGNI.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Option, pipe } from 'effect';\n\nimport { Capabilities, contributes, createIntent, SettingsAction, type PluginContext } from '@dxos/app-framework';\nimport { createExtension } from '@dxos/plugin-graph';\n\nimport { REGISTRY_ID, REGISTRY_KEY, REGISTRY_PLUGIN } from '../meta';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: REGISTRY_PLUGIN,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === 'root' ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: REGISTRY_PLUGIN,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(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 disposition: 'menu',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: REGISTRY_PLUGIN,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === 'root' ? Option.some(node) : Option.none())),\n Option.map((node) => [\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}+labs`,\n type: 'category',\n data: `${REGISTRY_KEY}+labs`,\n properties: {\n label: ['labs plugins label', { ns: REGISTRY_PLUGIN }],\n icon: 'ph--flask--regular',\n key: REGISTRY_KEY,\n testId: 'pluginRegistry.labs',\n },\n },\n ],\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${REGISTRY_PLUGIN}/actions`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === REGISTRY_ID ? Option.some(node) : Option.none())),\n Option.map(() => [\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 Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${REGISTRY_PLUGIN}/plugins`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === REGISTRY_ID ? Option.some(node) : Option.none())),\n Option.map(() => {\n const manager = context.getCapability(Capabilities.PluginManager);\n return manager.plugins.map((plugin) => ({\n id: plugin.meta.id.replaceAll('/', ':'),\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 disposition: 'hidden',\n },\n }));\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n"],
5
+ "mappings": "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",
6
+ "names": ["Rx", "Option", "pipe", "Capabilities", "contributes", "createIntent", "SettingsAction", "createExtension", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "REGISTRY_PLUGIN", "actions", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "some", "none", "map", "data", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "createIntent", "SettingsAction", "OpenPluginRegistry", "properties", "label", "ns", "icon", "disposition", "getOrElse", "connector", "REGISTRY_ID", "type", "testId", "nodes", "REGISTRY_KEY", "key", "disabled", "manager", "PluginManager", "plugins", "plugin", "meta", "replaceAll", "name"]
7
+ }
@@ -10,9 +10,9 @@ import { Capabilities, contributes, defineModule, definePlugin, Events } from "@
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-V6VVFXFC.mjs"));
13
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-J5YHAGNI.mjs"));
14
14
  var IntentResolver = lazy(() => import("./intent-resolver-AQJNBUT3.mjs"));
15
- var ReactSurface = lazy(() => import("./react-surface-PNR23BFI.mjs"));
15
+ var ReactSurface = lazy(() => import("./react-surface-NLJXCVYD.mjs"));
16
16
 
17
17
  // packages/plugins/plugin-registry/src/translations.ts
18
18
  var translations_default = [
@@ -20,11 +20,6 @@ var translations_default = [
20
20
  "en-US": {
21
21
  [REGISTRY_PLUGIN]: {
22
22
  "plugin name": "Registry",
23
- "reload required message": "Reload required.",
24
- "settings show experimental label": "Show experimental plugins",
25
- "settings section installed label": "Enabled",
26
- "settings section recommended label": "Recommended",
27
- "settings section experimental label": "Experimental",
28
23
  "details label": "Details",
29
24
  "home page label": "Website",
30
25
  "source label": "Source",
@@ -32,7 +27,7 @@ var translations_default = [
32
27
  "all plugins label": "All",
33
28
  "installed plugins label": "Enabled",
34
29
  "recommended plugins label": "Recommended",
35
- "experimental plugins label": "Experimental",
30
+ "labs plugins label": "Labs",
36
31
  "community plugins label": "Community",
37
32
  "load by url label": "Load by URL (soon)",
38
33
  "coming soon label": "Coming soon!",
@@ -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.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;",
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 '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 'labs plugins label': 'Labs',\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,iBAAiB;QACjB,mBAAmB;QACnB,gBAAgB;QAChB,yBAAyB;QACzB,qBAAqB;QACrB,2BAA2B;QAC3B,6BAA6B;QAC7B,sBAAsB;QACtB,2BAA2B;QAC3B,qBAAqB;QACrB,qBAAqB;QACrB,8BAA8B;QAC9B,kBAAkB;MACpB;IACF;EACF;;;;AFhBK,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
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 +1 @@
1
- {"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytes":1946,"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":11414,"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":2529,"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":8951,"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":12636,"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-ISC56E5F.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-V6VVFXFC.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-registry/dist/lib/browser/intent-resolver-AQJNBUT3.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-registry/dist/lib/browser/react-surface-PNR23BFI.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-V6VVFXFC.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6986},"packages/plugins/plugin-registry/dist/lib/browser/app-graph-builder-V6VVFXFC.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-ISC56E5F.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-AQJNBUT3.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1265},"packages/plugins/plugin-registry/dist/lib/browser/intent-resolver-AQJNBUT3.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-ISC56E5F.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-PNR23BFI.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":21820},"packages/plugins/plugin-registry/dist/lib/browser/react-surface-PNR23BFI.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-ISC56E5F.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":3171},"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":486},"packages/plugins/plugin-registry/src/components/PluginItem.tsx":{"bytesInOutput":3262},"packages/plugins/plugin-registry/src/components/RegistryContainer.tsx":{"bytesInOutput":2072}},"bytes":11844},"packages/plugins/plugin-registry/dist/lib/browser/chunk-ISC56E5F.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":869},"packages/plugins/plugin-registry/dist/lib/browser/chunk-ISC56E5F.mjs":{"imports":[],"exports":["REGISTRY_ID","REGISTRY_KEY","REGISTRY_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytesInOutput":188}},"bytes":350}}}
1
+ {"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytes":1906,"imports":[],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts":{"bytes":21266,"imports":[{"path":"@effect-rx/rx-react","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"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":2408,"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":7723,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-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":13112,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-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":2695,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/components/PluginItem.tsx","kind":"import-statement","original":"./PluginItem"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/RegistryContainer.tsx":{"bytes":9249,"imports":[{"path":"@preact-signals/safe-react/tracking","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},{"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":702,"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":12316,"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":1315,"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":2711,"imports":[{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/RegistryPlugin.tsx":{"bytes":4039,"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":570,"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":3649},"packages/plugins/plugin-registry/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-ISC56E5F.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-J5YHAGNI.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-registry/dist/lib/browser/intent-resolver-AQJNBUT3.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-registry/dist/lib/browser/react-surface-NLJXCVYD.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":706}},"bytes":2191},"packages/plugins/plugin-registry/dist/lib/browser/app-graph-builder-J5YHAGNI.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9265},"packages/plugins/plugin-registry/dist/lib/browser/app-graph-builder-J5YHAGNI.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-ISC56E5F.mjs","kind":"import-statement"},{"path":"@effect-rx/rx-react","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"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":4841}},"bytes":5112},"packages/plugins/plugin-registry/dist/lib/browser/intent-resolver-AQJNBUT3.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1265},"packages/plugins/plugin-registry/dist/lib/browser/intent-resolver-AQJNBUT3.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-ISC56E5F.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-NLJXCVYD.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":22569},"packages/plugins/plugin-registry/dist/lib/browser/react-surface-NLJXCVYD.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-ISC56E5F.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":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/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":3131},"packages/plugins/plugin-registry/src/components/PluginDetail.tsx":{"bytesInOutput":2439},"packages/plugins/plugin-registry/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-registry/src/components/PluginList.tsx":{"bytesInOutput":661},"packages/plugins/plugin-registry/src/components/PluginItem.tsx":{"bytesInOutput":3974},"packages/plugins/plugin-registry/src/components/RegistryContainer.tsx":{"bytesInOutput":2339}},"bytes":13205},"packages/plugins/plugin-registry/dist/lib/browser/chunk-ISC56E5F.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":869},"packages/plugins/plugin-registry/dist/lib/browser/chunk-ISC56E5F.mjs":{"imports":[],"exports":["REGISTRY_ID","REGISTRY_KEY","REGISTRY_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytesInOutput":188}},"bytes":350}}}
@@ -0,0 +1,335 @@
1
+ import {
2
+ REGISTRY_KEY,
3
+ REGISTRY_PLUGIN
4
+ } from "./chunk-ISC56E5F.mjs";
5
+
6
+ // packages/plugins/plugin-registry/src/capabilities/react-surface.tsx
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
+ import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
10
+
11
+ // packages/plugins/plugin-registry/src/components/PluginDetail.tsx
12
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
13
+ import React from "react";
14
+ import { Icon, Input, Link, useTranslation } from "@dxos/react-ui";
15
+ import { DeprecatedFormContainer } from "@dxos/react-ui-form";
16
+ var PluginDetail = ({ plugin, enabled, onEnable }) => {
17
+ var _effect = _useSignals();
18
+ try {
19
+ const { t } = useTranslation(REGISTRY_PLUGIN);
20
+ const { id, name, description, homePage, source, screenshots } = plugin.meta;
21
+ return /* @__PURE__ */ React.createElement(DeprecatedFormContainer, {
22
+ classNames: "gap-6"
23
+ }, /* @__PURE__ */ React.createElement("div", {
24
+ role: "none",
25
+ className: "flex justify-between items-center"
26
+ }, /* @__PURE__ */ React.createElement("p", null, id), /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
27
+ classNames: "self-center",
28
+ checked: enabled,
29
+ onClick: onEnable
30
+ }))), screenshots && screenshots.length > 0 && /* @__PURE__ */ React.createElement("div", {
31
+ role: "none"
32
+ }, /* @__PURE__ */ React.createElement("h1", {
33
+ className: "text-lg mb-2"
34
+ }, "Preview"), /* @__PURE__ */ React.createElement("img", {
35
+ src: screenshots[0],
36
+ alt: name,
37
+ className: "aspect-video object-fit"
38
+ })), /* @__PURE__ */ React.createElement("div", {
39
+ role: "none"
40
+ }, /* @__PURE__ */ React.createElement("p", null, description)), /* @__PURE__ */ React.createElement("div", {
41
+ role: "none"
42
+ }, /* @__PURE__ */ React.createElement("h1", {
43
+ className: "text-lg mb-2"
44
+ }, "Resources"), /* @__PURE__ */ React.createElement("div", {
45
+ className: "flex gap-2"
46
+ }, homePage && /* @__PURE__ */ React.createElement(Link, {
47
+ href: homePage,
48
+ target: "_blank",
49
+ rel: "noreferrer",
50
+ classNames: "text-sm text-description"
51
+ }, t("home page label"), /* @__PURE__ */ React.createElement(Icon, {
52
+ icon: "ph--arrow-square-out--bold",
53
+ size: 3,
54
+ classNames: "inline-block leading-none mli-1"
55
+ })), source && /* @__PURE__ */ React.createElement(Link, {
56
+ href: source,
57
+ target: "_blank",
58
+ rel: "noreferrer",
59
+ classNames: "text-sm text-description"
60
+ }, t("source label"), /* @__PURE__ */ React.createElement(Icon, {
61
+ icon: "ph--arrow-square-out--bold",
62
+ size: 3,
63
+ classNames: "inline-block leading-none mli-1"
64
+ })))));
65
+ } finally {
66
+ _effect.f();
67
+ }
68
+ };
69
+
70
+ // packages/plugins/plugin-registry/src/components/PluginList.tsx
71
+ import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
72
+ import React3 from "react";
73
+ import { List } from "@dxos/react-ui";
74
+
75
+ // packages/plugins/plugin-registry/src/components/PluginItem.tsx
76
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
77
+ import React2, { useCallback } from "react";
78
+ import { Icon as Icon2, IconButton, Input as Input2, Link as Link2, ListItem, Tag, useTranslation as useTranslation2 } from "@dxos/react-ui";
79
+ import { descriptionText, mx } from "@dxos/react-ui-theme";
80
+ var PluginItem = ({ plugin, enabled = [], onClick, onChange, hasSettings: _hasSettings, onSettings }) => {
81
+ var _effect = _useSignals2();
82
+ try {
83
+ const { t } = useTranslation2(REGISTRY_PLUGIN);
84
+ const { id, name, description, tags, icon = "ph--circle--regular" } = plugin.meta;
85
+ const isEnabled = enabled.includes(id);
86
+ const inputId = `${id}-input`;
87
+ const labelId = `${id}-label`;
88
+ const descriptionId = `${id}-description`;
89
+ const handleClick = useCallback(() => onClick?.(id), [
90
+ id,
91
+ onClick
92
+ ]);
93
+ const handleChange = useCallback((event) => {
94
+ event.stopPropagation();
95
+ onChange?.(id, !isEnabled);
96
+ }, [
97
+ id,
98
+ isEnabled,
99
+ onChange
100
+ ]);
101
+ const hasSettings = _hasSettings?.(id) ?? false;
102
+ const handleSettings = useCallback(() => onSettings?.(id), [
103
+ id,
104
+ onSettings
105
+ ]);
106
+ return /* @__PURE__ */ React2.createElement(ListItem.Root, {
107
+ key: id,
108
+ labelId,
109
+ "data-testid": `pluginList.${id}`,
110
+ "aria-describedby": descriptionId,
111
+ // TODO(burdon): Use Rail vars.
112
+ classNames: "is-full bs-full grid grid-cols-[48px_1fr_48px] grid-rows-[40px_1fr_32px] p-1 border border-separator rounded-md"
113
+ }, /* @__PURE__ */ React2.createElement("div", {
114
+ className: "flex flex-col grow justify-center items-center"
115
+ }, /* @__PURE__ */ React2.createElement(Icon2, {
116
+ icon,
117
+ size: 6,
118
+ onClick: handleClick,
119
+ classNames: "text-subdued cursor-pointer"
120
+ })), /* @__PURE__ */ React2.createElement("div", {
121
+ className: "flex items-center overflow-hidden cursor-pointer",
122
+ onClick: handleClick
123
+ }, /* @__PURE__ */ React2.createElement("span", {
124
+ className: "truncate"
125
+ }, name ?? id)), /* @__PURE__ */ React2.createElement("div", {
126
+ className: "flex justify-center items-center"
127
+ }, /* @__PURE__ */ React2.createElement(Input2.Root, {
128
+ id: inputId
129
+ }, /* @__PURE__ */ React2.createElement(Input2.Switch, {
130
+ classNames: "self-center",
131
+ checked: isEnabled,
132
+ onClick: handleChange
133
+ }))), /* @__PURE__ */ React2.createElement("div", null), (description || tags) && /* @__PURE__ */ React2.createElement("div", {
134
+ id: descriptionId,
135
+ className: "col-span-2 flex flex-col w-full justify-between gap-2 pb-2"
136
+ }, /* @__PURE__ */ React2.createElement("div", {
137
+ className: "grow"
138
+ }, /* @__PURE__ */ React2.createElement("p", {
139
+ className: mx(descriptionText, "line-clamp-3 min-w-0 pie-2")
140
+ }, description)), tags && tags.length > 0 && /* @__PURE__ */ React2.createElement("div", null, tags.map((tag) => /* @__PURE__ */ React2.createElement(Tag, {
141
+ key: tag,
142
+ palette: "indigo",
143
+ classNames: "text-xs capitalize"
144
+ }, tag)))), /* @__PURE__ */ React2.createElement("div", null), /* @__PURE__ */ React2.createElement("div", {
145
+ className: "flex gap-2 items-center pie-1"
146
+ }, /* @__PURE__ */ React2.createElement(Link2, {
147
+ "aria-describedby": descriptionId,
148
+ classNames: "text-sm text-description cursor-pointer",
149
+ onClick: handleClick
150
+ }, t("details label")), /* @__PURE__ */ React2.createElement("div", {
151
+ className: "flex-1"
152
+ })), /* @__PURE__ */ React2.createElement("div", {
153
+ className: "flex justify-center items-center"
154
+ }, hasSettings && /* @__PURE__ */ React2.createElement(IconButton, {
155
+ "aria-describedby": descriptionId,
156
+ classNames: "text-sm text-description cursor-pointer",
157
+ icon: "ph--faders--regular",
158
+ label: t("settings label"),
159
+ iconOnly: true,
160
+ size: 4,
161
+ onClick: handleSettings
162
+ })));
163
+ } finally {
164
+ _effect.f();
165
+ }
166
+ };
167
+
168
+ // packages/plugins/plugin-registry/src/components/PluginList.tsx
169
+ var PluginList = ({ plugins = [], ...props }) => {
170
+ var _effect = _useSignals3();
171
+ try {
172
+ return /* @__PURE__ */ React3.createElement(List, {
173
+ classNames: "grid grid-cols-[repeat(auto-fill,minmax(280px,1fr))] auto-rows-[12rem] gap-3 p-3"
174
+ }, plugins.map((plugin) => /* @__PURE__ */ React3.createElement("div", {
175
+ key: plugin.meta.id,
176
+ className: "flex"
177
+ }, /* @__PURE__ */ React3.createElement(PluginItem, {
178
+ plugin,
179
+ ...props
180
+ }))));
181
+ } finally {
182
+ _effect.f();
183
+ }
184
+ };
185
+
186
+ // packages/plugins/plugin-registry/src/components/RegistryContainer.tsx
187
+ import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
188
+ import React4, { useCallback as useCallback2, useMemo } from "react";
189
+ import { Capabilities, createIntent, LayoutAction, SettingsAction, useCapability, useIntentDispatcher, usePluginManager } from "@dxos/app-framework";
190
+ import { ObservabilityAction } from "@dxos/plugin-observability/types";
191
+ import { StackItem } from "@dxos/react-ui-stack";
192
+ var sortByPluginMeta = ({ meta: { name: a = "" } }, { meta: { name: b = "" } }) => a.localeCompare(b);
193
+ var RegistryContainer = ({ id, plugins: _plugins }) => {
194
+ var _effect = _useSignals4();
195
+ try {
196
+ const manager = usePluginManager();
197
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
198
+ const plugins = useMemo(() => _plugins.sort(sortByPluginMeta), [
199
+ _plugins
200
+ ]);
201
+ const settingsStore = useCapability(Capabilities.SettingsStore);
202
+ const handleChange = useCallback2(async (id2, enabled) => {
203
+ if (enabled) {
204
+ await manager.enable(id2);
205
+ } else {
206
+ await manager.disable(id2);
207
+ }
208
+ await dispatch(createIntent(ObservabilityAction.SendEvent, {
209
+ name: "plugins.toggle",
210
+ properties: {
211
+ plugin: id2,
212
+ enabled
213
+ }
214
+ }));
215
+ }, [
216
+ dispatch,
217
+ manager
218
+ ]);
219
+ const handleClick = useCallback2((pluginId) => dispatch(createIntent(LayoutAction.Open, {
220
+ part: "main",
221
+ // TODO(wittjosiah): `/` currently is not supported in ids.
222
+ subject: [
223
+ pluginId.replaceAll("/", ":")
224
+ ],
225
+ options: {
226
+ pivotId: id,
227
+ positioning: "end"
228
+ }
229
+ })), [
230
+ dispatch,
231
+ id
232
+ ]);
233
+ const hasSettings = useCallback2((pluginId) => !!settingsStore.getStore(pluginId), [
234
+ settingsStore
235
+ ]);
236
+ const handleSettings = useCallback2((pluginId) => dispatch(createIntent(SettingsAction.Open, {
237
+ plugin: pluginId
238
+ })), [
239
+ dispatch
240
+ ]);
241
+ return /* @__PURE__ */ React4.createElement(StackItem.Content, {
242
+ classNames: "min-bs-0 overflow-y-auto scrollbar-thin contain-layout"
243
+ }, /* @__PURE__ */ React4.createElement(PluginList, {
244
+ plugins,
245
+ enabled: manager.enabled,
246
+ onClick: handleClick,
247
+ onChange: handleChange,
248
+ hasSettings,
249
+ onSettings: handleSettings
250
+ }));
251
+ } finally {
252
+ _effect.f();
253
+ }
254
+ };
255
+
256
+ // packages/plugins/plugin-registry/src/capabilities/react-surface.tsx
257
+ var react_surface_default = () => contributes(Capabilities2.ReactSurface, [
258
+ createSurface({
259
+ id: `${REGISTRY_PLUGIN}/all`,
260
+ role: "article",
261
+ filter: (data) => data.subject === `${REGISTRY_KEY}+all`,
262
+ component: () => {
263
+ const manager = usePluginManager2();
264
+ const filtered = useMemo2(() => manager.plugins.filter(({ meta }) => !manager.core.includes(meta.id)), []);
265
+ return /* @__PURE__ */ React5.createElement(RegistryContainer, {
266
+ id: `${REGISTRY_KEY}+all`,
267
+ plugins: filtered
268
+ });
269
+ }
270
+ }),
271
+ createSurface({
272
+ id: `${REGISTRY_PLUGIN}/installed`,
273
+ role: "article",
274
+ filter: (data) => data.subject === `${REGISTRY_KEY}+installed`,
275
+ component: () => {
276
+ const manager = usePluginManager2();
277
+ const filtered = useMemo2(() => manager.plugins.filter(({ meta }) => !manager.core.includes(meta.id)).filter(({ meta }) => manager.enabled.includes(meta.id)), []);
278
+ return /* @__PURE__ */ React5.createElement(RegistryContainer, {
279
+ id: `${REGISTRY_KEY}+installed`,
280
+ plugins: filtered
281
+ });
282
+ }
283
+ }),
284
+ createSurface({
285
+ id: `${REGISTRY_PLUGIN}/recommended`,
286
+ role: "article",
287
+ filter: (data) => data.subject === `${REGISTRY_KEY}+recommended`,
288
+ component: () => {
289
+ const manager = usePluginManager2();
290
+ const filtered = useMemo2(() => manager.plugins.filter(({ meta }) => !manager.core.includes(meta.id)).filter(({ meta }) => !meta.tags?.includes("labs")), []);
291
+ return /* @__PURE__ */ React5.createElement(RegistryContainer, {
292
+ id: `${REGISTRY_KEY}+recommended`,
293
+ plugins: filtered
294
+ });
295
+ }
296
+ }),
297
+ createSurface({
298
+ id: `${REGISTRY_PLUGIN}/labs`,
299
+ role: "article",
300
+ filter: (data) => data.subject === `${REGISTRY_KEY}+labs`,
301
+ component: () => {
302
+ const manager = usePluginManager2();
303
+ const filtered = useMemo2(() => manager.plugins.filter(({ meta }) => meta.tags?.includes("labs")), []);
304
+ return /* @__PURE__ */ React5.createElement(RegistryContainer, {
305
+ id: `${REGISTRY_KEY}+labs`,
306
+ plugins: filtered
307
+ });
308
+ }
309
+ }),
310
+ createSurface({
311
+ id: `${REGISTRY_PLUGIN}/plugin-details`,
312
+ role: "article",
313
+ filter: (data) => data.subject instanceof Plugin,
314
+ component: ({ data: { subject } }) => {
315
+ const manager = usePluginManager2();
316
+ const enabled = manager.enabled.includes(subject.meta.id);
317
+ const handleEnable = useCallback3(() => enabled ? manager.disable(subject.meta.id) : manager.enable(subject.meta.id), [
318
+ manager,
319
+ subject.meta.id,
320
+ enabled
321
+ ]);
322
+ return /* @__PURE__ */ React5.createElement(StackItem2.Content, {
323
+ role: "article"
324
+ }, /* @__PURE__ */ React5.createElement(PluginDetail, {
325
+ plugin: subject,
326
+ enabled,
327
+ onEnable: handleEnable
328
+ }));
329
+ }
330
+ })
331
+ ]);
332
+ export {
333
+ react_surface_default as default
334
+ };
335
+ //# sourceMappingURL=react-surface-NLJXCVYD.mjs.map