@dxos/plugin-registry 0.7.5-labs.e27f9b9 → 0.7.5-main.2567c87

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 (62) hide show
  1. package/dist/lib/browser/{chunk-RGSIE33X.mjs → chunk-CMDU7LPH.mjs} +1 -5
  2. package/dist/lib/browser/chunk-CMDU7LPH.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +12 -31
  4. package/dist/lib/browser/index.mjs.map +3 -3
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/react-surface-HKWZP7OW.mjs +179 -0
  7. package/dist/lib/browser/react-surface-HKWZP7OW.mjs.map +7 -0
  8. package/dist/lib/browser/settings-7LOHS2IV.mjs +27 -0
  9. package/dist/lib/browser/settings-7LOHS2IV.mjs.map +7 -0
  10. package/dist/types/src/RegistryPlugin.d.ts.map +1 -1
  11. package/dist/types/src/capabilities/index.d.ts +2 -179
  12. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  13. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  14. package/dist/types/src/capabilities/{intent-resolver.d.ts → settings.d.ts} +2 -2
  15. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  16. package/dist/types/src/components/PluginList.d.ts +8 -5
  17. package/dist/types/src/components/PluginList.d.ts.map +1 -1
  18. package/dist/types/src/components/PluginList.stories.d.ts +1 -6
  19. package/dist/types/src/components/PluginList.stories.d.ts.map +1 -1
  20. package/dist/types/src/components/PluginSettings.d.ts +6 -0
  21. package/dist/types/src/components/PluginSettings.d.ts.map +1 -0
  22. package/dist/types/src/components/index.d.ts +1 -2
  23. package/dist/types/src/components/index.d.ts.map +1 -1
  24. package/dist/types/src/meta.d.ts +0 -2
  25. package/dist/types/src/meta.d.ts.map +1 -1
  26. package/dist/types/src/translations.d.ts +0 -9
  27. package/dist/types/src/translations.d.ts.map +1 -1
  28. package/package.json +15 -16
  29. package/src/RegistryPlugin.tsx +7 -12
  30. package/src/capabilities/index.ts +1 -2
  31. package/src/capabilities/react-surface.tsx +10 -76
  32. package/src/capabilities/settings.ts +19 -0
  33. package/src/components/PluginList.stories.tsx +21 -30
  34. package/src/components/PluginList.tsx +90 -13
  35. package/src/components/PluginSettings.tsx +112 -0
  36. package/src/components/index.ts +1 -2
  37. package/src/meta.ts +0 -4
  38. package/src/translations.ts +2 -11
  39. package/dist/lib/browser/app-graph-builder-PPWF5KP5.mjs +0 -164
  40. package/dist/lib/browser/app-graph-builder-PPWF5KP5.mjs.map +0 -7
  41. package/dist/lib/browser/chunk-RGSIE33X.mjs.map +0 -7
  42. package/dist/lib/browser/intent-resolver-2JQUQJI5.mjs +0 -23
  43. package/dist/lib/browser/intent-resolver-2JQUQJI5.mjs.map +0 -7
  44. package/dist/lib/browser/react-surface-HTHYQQF7.mjs +0 -295
  45. package/dist/lib/browser/react-surface-HTHYQQF7.mjs.map +0 -7
  46. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -181
  47. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  48. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  49. package/dist/types/src/components/PluginDetail.d.ts +0 -9
  50. package/dist/types/src/components/PluginDetail.d.ts.map +0 -1
  51. package/dist/types/src/components/PluginDetail.stories.d.ts +0 -8
  52. package/dist/types/src/components/PluginDetail.stories.d.ts.map +0 -1
  53. package/dist/types/src/components/PluginItem.d.ts +0 -11
  54. package/dist/types/src/components/PluginItem.d.ts.map +0 -1
  55. package/dist/types/src/components/RegistryContainer.d.ts +0 -7
  56. package/dist/types/src/components/RegistryContainer.d.ts.map +0 -1
  57. package/src/capabilities/app-graph-builder.ts +0 -126
  58. package/src/capabilities/intent-resolver.ts +0 -27
  59. package/src/components/PluginDetail.stories.tsx +0 -45
  60. package/src/components/PluginDetail.tsx +0 -63
  61. package/src/components/PluginItem.tsx +0 -100
  62. package/src/components/RegistryContainer.tsx +0 -51
@@ -2,25 +2,102 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import React from 'react';
5
+ import React, { useCallback } from 'react';
6
6
 
7
- import { type Plugin } from '@dxos/app-framework';
8
- import { List } from '@dxos/react-ui';
7
+ import { type PluginMeta } from '@dxos/app-framework';
8
+ import { Button, Icon, Input, Link, List, ListItem, useTranslation } from '@dxos/react-ui';
9
+ import { descriptionText, fineBlockSize, mx } from '@dxos/react-ui-theme';
9
10
 
10
- import { PluginItem, type PluginItemProps } from './PluginItem';
11
+ import { REGISTRY_PLUGIN } from '../meta';
11
12
 
12
- export type PluginListProps = Omit<PluginItemProps, 'plugin'> & {
13
- plugins?: readonly Plugin[];
13
+ export type PluginListProps = {
14
+ plugins?: readonly PluginMeta[];
15
+ installed?: readonly string[];
16
+ enabled?: readonly string[];
17
+ onChange?: (id: string, enabled: boolean) => void;
18
+ onReload?: () => void;
14
19
  };
15
20
 
16
- export const PluginList = ({ plugins = [], ...props }: PluginListProps) => {
21
+ export const PluginList = ({ plugins = [], installed = [], enabled = [], onChange, onReload }: PluginListProps) => {
22
+ const { t } = useTranslation(REGISTRY_PLUGIN);
23
+
17
24
  return (
18
- <List classNames='grid grid-cols-[repeat(auto-fill,minmax(280px,1fr))] auto-rows-[10rem] gap-3 p-3 overflow-y-auto scrollbar-thin'>
19
- {plugins.map((plugin) => (
20
- <div key={plugin.meta.id} className='flex'>
21
- <PluginItem plugin={plugin} {...props} />
22
- </div>
23
- ))}
25
+ <List classNames='mb-4 select-none'>
26
+ {plugins.map(({ id, name, description, homePage, source, icon = 'ph--circle--regular' }) => {
27
+ const isEnabled = enabled.includes(id);
28
+ const isInstalled = installed.includes(id);
29
+ const reloadRequired = isEnabled !== isInstalled;
30
+ const inputId = `${id}-input`;
31
+ const labelId = `${id}-label`;
32
+ const descriptionId = `${id}-description`;
33
+ const handleChange = useCallback(() => onChange?.(id, !isEnabled), [id, isEnabled, onChange]);
34
+
35
+ return (
36
+ <Input.Root key={id} id={inputId}>
37
+ <ListItem.Root
38
+ labelId={labelId}
39
+ data-testid={`pluginList.${id}`}
40
+ aria-describedby={descriptionId}
41
+ classNames='flex gap-2 plb-2 pli-2 -mli-2 rounded'
42
+ >
43
+ <Icon icon={icon} size={6} classNames='shrink-0 mbs-1' />
44
+ <div role='none' className={mx(fineBlockSize, 'grow pbs-1 pl-1')}>
45
+ <label htmlFor={inputId} id={labelId} className='truncate'>
46
+ {name ?? id}
47
+ </label>
48
+ {(description || reloadRequired || homePage || source) && (
49
+ <>
50
+ <div id={descriptionId} className='space-b-1 pbs-1 pbe-1'>
51
+ <p className={descriptionText}>{description}</p>
52
+ {homePage && (
53
+ <Link
54
+ href={homePage}
55
+ target='_blank'
56
+ rel='noreferrer'
57
+ aria-describedby={descriptionId}
58
+ classNames='text-xs text-description'
59
+ >
60
+ {t('home page label')}
61
+ <Icon
62
+ icon='ph--arrow-square-out--bold'
63
+ size={3}
64
+ classNames='inline-block leading-none mli-1'
65
+ />
66
+ </Link>
67
+ )}
68
+ {source && (
69
+ <Link
70
+ href={source}
71
+ target='_blank'
72
+ rel='noreferrer'
73
+ aria-describedby={descriptionId}
74
+ classNames='text-xs text-description'
75
+ >
76
+ {t('source label')}
77
+ <Icon
78
+ icon='ph--arrow-square-out--bold'
79
+ size={3}
80
+ classNames='inline-block leading-none mli-1'
81
+ />
82
+ </Link>
83
+ )}
84
+ </div>
85
+ {reloadRequired && (
86
+ <Button variant='ghost' classNames='p-0 gap-2' onClick={onReload}>
87
+ <Icon size={4} icon='ph--arrow-clockwise--regular' />
88
+ <p className='text-sm font-medium'>{t('reload required message')}</p>
89
+ </Button>
90
+ )}
91
+ </>
92
+ )}
93
+ </div>
94
+ <div className='pbs-1'>
95
+ <Input.Switch classNames='self-center' checked={isEnabled} onClick={handleChange} />
96
+ </div>
97
+ </ListItem.Root>
98
+ </Input.Root>
99
+ );
100
+ })}
24
101
  </List>
25
102
  );
26
103
  };
@@ -0,0 +1,112 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import React, { useMemo, type PropsWithChildren } from 'react';
6
+
7
+ import { createIntent, type PluginMeta, useIntentDispatcher, usePluginManager } from '@dxos/app-framework';
8
+ import { ObservabilityAction } from '@dxos/plugin-observability/types';
9
+ import { Input, useTranslation } from '@dxos/react-ui';
10
+ import { DeprecatedFormInput } from '@dxos/react-ui-form';
11
+
12
+ import { PluginList } from './PluginList';
13
+ import { REGISTRY_PLUGIN } from '../meta';
14
+ import { type RegistrySettings } from '../types';
15
+
16
+ const sortPluginMeta = ({ name: a = '' }: PluginMeta, { name: b = '' }: PluginMeta) => a.localeCompare(b);
17
+
18
+ export const PluginSettings = ({ settings }: { settings: RegistrySettings }) => {
19
+ const { t } = useTranslation(REGISTRY_PLUGIN);
20
+ const manager = usePluginManager();
21
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
22
+
23
+ // Memoize to prevent plugins from disappearing when toggling enabled.
24
+ const installed = useMemo(
25
+ () =>
26
+ manager.plugins
27
+ .filter(({ meta }) => !manager.core.includes(meta.id))
28
+ .filter(({ meta }) => manager.enabled.includes(meta.id))
29
+ .map(({ meta }) => meta)
30
+ .sort(sortPluginMeta),
31
+ [],
32
+ );
33
+ const pluginIds = useMemo(() => installed.map((meta) => meta.id), [installed]);
34
+
35
+ const available = useMemo(
36
+ () =>
37
+ manager.plugins
38
+ .map(({ meta }) => meta)
39
+ .filter(({ id }) => !manager.enabled.includes(id))
40
+ .sort(sortPluginMeta),
41
+ [],
42
+ );
43
+ const recommended = available.filter((meta) => !meta.tags?.includes('experimental'));
44
+ const experimental = available.filter((meta) => meta.tags?.includes('experimental'));
45
+
46
+ const handleChange = (id: string, enabled: boolean) => {
47
+ enabled ? manager.enable(id) : manager.disable(id);
48
+ void dispatch(
49
+ createIntent(ObservabilityAction.SendEvent, {
50
+ name: 'plugins.toggle',
51
+ properties: { plugin: id, enabled },
52
+ }),
53
+ );
54
+ };
55
+
56
+ const handleReload = () => {
57
+ window.location.reload();
58
+ };
59
+
60
+ return (
61
+ <>
62
+ <DeprecatedFormInput label={t('settings show experimental label')}>
63
+ <Input.Switch
64
+ data-testid='pluginSettings.experimental'
65
+ checked={settings.experimental}
66
+ onCheckedChange={(checked) => (settings.experimental = !!checked)}
67
+ />
68
+ </DeprecatedFormInput>
69
+
70
+ <Section label={t('settings section installed label')}>
71
+ <PluginList
72
+ plugins={installed}
73
+ installed={pluginIds}
74
+ enabled={manager.enabled}
75
+ onChange={handleChange}
76
+ onReload={handleReload}
77
+ />
78
+ </Section>
79
+
80
+ <Section label={t('settings section recommended label')}>
81
+ <PluginList
82
+ plugins={recommended}
83
+ installed={pluginIds}
84
+ enabled={manager.enabled}
85
+ onChange={handleChange}
86
+ onReload={handleReload}
87
+ />
88
+ </Section>
89
+
90
+ {settings.experimental && (
91
+ <Section label={t('settings section experimental label')}>
92
+ <PluginList
93
+ plugins={experimental}
94
+ installed={pluginIds}
95
+ enabled={manager.enabled}
96
+ onChange={handleChange}
97
+ onReload={handleReload}
98
+ />
99
+ </Section>
100
+ )}
101
+ </>
102
+ );
103
+ };
104
+
105
+ const Section = ({ label, children }: PropsWithChildren<{ label: string }>) => {
106
+ return (
107
+ <div>
108
+ <h2 className='py-2 text-sm text-subdued'>{label}</h2>
109
+ {children}
110
+ </div>
111
+ );
112
+ };
@@ -2,6 +2,5 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- export * from './PluginDetail';
6
5
  export * from './PluginList';
7
- export * from './RegistryContainer';
6
+ export * from './PluginSettings';
package/src/meta.ts CHANGED
@@ -6,10 +6,6 @@ import { type PluginMeta } from '@dxos/app-framework';
6
6
 
7
7
  export const REGISTRY_PLUGIN = 'dxos.org/plugin/registry';
8
8
 
9
- // TODO(wittjosiah): Deck does not currently support `/` in ids.
10
- export const REGISTRY_ID = 'dxos:plugin-registry';
11
- export const REGISTRY_KEY = 'plugin-registry';
12
-
13
9
  export const meta = {
14
10
  id: REGISTRY_PLUGIN,
15
11
  name: 'Plugins',
@@ -11,20 +11,11 @@ export default [
11
11
  'plugin name': 'Registry',
12
12
  'reload required message': 'Reload required.',
13
13
  'settings show experimental label': 'Show experimental plugins',
14
- 'settings section installed label': 'Enabled',
14
+ 'settings section installed label': 'Installed',
15
15
  'settings section recommended label': 'Recommended',
16
16
  'settings section experimental label': 'Experimental',
17
- 'home page label': 'Website',
17
+ 'home page label': 'Home page',
18
18
  'source label': 'Source',
19
- 'plugin registry label': 'Plugin Registry',
20
- 'all plugins label': 'All',
21
- 'installed plugins label': 'Enabled',
22
- 'recommended plugins label': 'Recommended',
23
- 'experimental plugins label': 'Experimental',
24
- 'community plugins label': 'Community',
25
- 'load by url label': 'Load by URL (soon)',
26
- 'coming soon label': 'Coming soon!',
27
- 'open plugin registry label': 'Open plugin registry',
28
19
  },
29
20
  },
30
21
  },
@@ -1,164 +0,0 @@
1
- import {
2
- REGISTRY_ID,
3
- REGISTRY_KEY,
4
- REGISTRY_PLUGIN
5
- } from "./chunk-RGSIE33X.mjs";
6
-
7
- // packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts
8
- import { Capabilities, contributes, createIntent, SettingsAction } from "@dxos/app-framework";
9
- import { createExtension } from "@dxos/plugin-graph";
10
- var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBuilder, [
11
- createExtension({
12
- id: REGISTRY_PLUGIN,
13
- filter: (node) => node.id === "root",
14
- actions: () => [
15
- {
16
- id: REGISTRY_PLUGIN,
17
- data: async () => {
18
- const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
19
- await dispatch(createIntent(SettingsAction.OpenPluginRegistry));
20
- },
21
- properties: {
22
- label: [
23
- "open plugin registry label",
24
- {
25
- ns: REGISTRY_PLUGIN
26
- }
27
- ],
28
- icon: "ph--squares-four--regular"
29
- }
30
- }
31
- ]
32
- }),
33
- createExtension({
34
- id: REGISTRY_PLUGIN,
35
- filter: (node) => node.id === "root",
36
- connector: () => [
37
- {
38
- id: REGISTRY_ID,
39
- type: REGISTRY_PLUGIN,
40
- properties: {
41
- label: [
42
- "plugin registry label",
43
- {
44
- ns: REGISTRY_PLUGIN
45
- }
46
- ],
47
- icon: "ph--squares-four--regular",
48
- disposition: "pin-end",
49
- testId: "treeView.pluginRegistry"
50
- },
51
- nodes: [
52
- {
53
- id: `${REGISTRY_KEY}:all`,
54
- type: "category",
55
- data: `${REGISTRY_KEY}:all`,
56
- properties: {
57
- label: [
58
- "all plugins label",
59
- {
60
- ns: REGISTRY_PLUGIN
61
- }
62
- ],
63
- icon: "ph--squares-four--regular",
64
- key: REGISTRY_KEY,
65
- testId: "pluginRegistry.all"
66
- }
67
- },
68
- {
69
- id: `${REGISTRY_KEY}:installed`,
70
- type: "category",
71
- data: `${REGISTRY_KEY}:installed`,
72
- properties: {
73
- label: [
74
- "installed plugins label",
75
- {
76
- ns: REGISTRY_PLUGIN
77
- }
78
- ],
79
- icon: "ph--check--regular",
80
- key: REGISTRY_KEY,
81
- testId: "pluginRegistry.installed"
82
- }
83
- },
84
- {
85
- id: `${REGISTRY_KEY}:recommended`,
86
- type: "category",
87
- data: `${REGISTRY_KEY}:recommended`,
88
- properties: {
89
- label: [
90
- "recommended plugins label",
91
- {
92
- ns: REGISTRY_PLUGIN
93
- }
94
- ],
95
- icon: "ph--star--regular",
96
- key: REGISTRY_KEY,
97
- testId: "pluginRegistry.recommended"
98
- }
99
- },
100
- {
101
- id: `${REGISTRY_KEY}:experimental`,
102
- type: "category",
103
- data: `${REGISTRY_KEY}:experimental`,
104
- properties: {
105
- label: [
106
- "experimental plugins label",
107
- {
108
- ns: REGISTRY_PLUGIN
109
- }
110
- ],
111
- icon: "ph--flask--regular",
112
- key: REGISTRY_KEY,
113
- testId: "pluginRegistry.experimental"
114
- }
115
- }
116
- ]
117
- }
118
- ]
119
- }),
120
- createExtension({
121
- id: `${REGISTRY_PLUGIN}/actions`,
122
- filter: (node) => node.id === REGISTRY_ID,
123
- actions: () => [
124
- {
125
- id: `${REGISTRY_PLUGIN}/load-by-url`,
126
- data: async () => {
127
- },
128
- properties: {
129
- label: [
130
- "load by url label",
131
- {
132
- ns: REGISTRY_PLUGIN
133
- }
134
- ],
135
- icon: "ph--cloud-arrow-down--regular",
136
- disabled: true
137
- }
138
- }
139
- ]
140
- }),
141
- createExtension({
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,
151
- type: "dxos.org/plugin",
152
- data: plugin,
153
- properties: {
154
- label: plugin.meta.name ?? plugin.meta.id,
155
- icon: plugin.meta.icon ?? "ph--circle--regular"
156
- }
157
- };
158
- }
159
- })
160
- ]);
161
- export {
162
- app_graph_builder_default as default
163
- };
164
- //# sourceMappingURL=app-graph-builder-PPWF5KP5.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 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"],
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
- "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
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const 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
- "mappings": ";AAMO,IAAMA,kBAAkB;AAGxB,IAAMC,cAAc;AACpB,IAAMC,eAAe;AAErB,IAAMC,OAAO;EAClBC,IAAIJ;EACJK,MAAM;AACR;",
6
- "names": ["REGISTRY_PLUGIN", "REGISTRY_ID", "REGISTRY_KEY", "meta", "id", "name"]
7
- }
@@ -1,23 +0,0 @@
1
- import {
2
- REGISTRY_ID
3
- } from "./chunk-RGSIE33X.mjs";
4
-
5
- // packages/plugins/plugin-registry/src/capabilities/intent-resolver.ts
6
- import { contributes, SettingsAction, createResolver, LayoutAction, Capabilities, createIntent } from "@dxos/app-framework";
7
- var intent_resolver_default = () => contributes(Capabilities.IntentResolver, createResolver({
8
- intent: SettingsAction.OpenPluginRegistry,
9
- resolve: () => {
10
- return {
11
- intents: [
12
- createIntent(LayoutAction.SwitchWorkspace, {
13
- part: "workspace",
14
- subject: REGISTRY_ID
15
- })
16
- ]
17
- };
18
- }
19
- }));
20
- export {
21
- intent_resolver_default as default
22
- };
23
- //# sourceMappingURL=intent-resolver-2JQUQJI5.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n contributes,\n SettingsAction,\n createResolver,\n LayoutAction,\n Capabilities,\n createIntent,\n} from '@dxos/app-framework';\n\nimport { REGISTRY_ID } from '../meta';\n\nexport default () =>\n contributes(\n Capabilities.IntentResolver,\n createResolver({\n intent: SettingsAction.OpenPluginRegistry,\n resolve: () => {\n return {\n intents: [createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: REGISTRY_ID })],\n };\n },\n }),\n );\n"],
5
- "mappings": ";;;;;AAIA,SACEA,aACAC,gBACAC,gBACAC,cACAC,cACAC,oBACK;AAIP,IAAA,0BAAe,MACbC,YACEC,aAAaC,gBACbC,eAAe;EACbC,QAAQC,eAAeC;EACvBC,SAAS,MAAA;AACP,WAAO;MACLC,SAAS;QAACC,aAAaC,aAAaC,iBAAiB;UAAEC,MAAM;UAAaC,SAASC;QAAY,CAAA;;IACjG;EACF;AACF,CAAA,CAAA;",
6
- "names": ["contributes", "SettingsAction", "createResolver", "LayoutAction", "Capabilities", "createIntent", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "SettingsAction", "OpenPluginRegistry", "resolve", "intents", "createIntent", "LayoutAction", "SwitchWorkspace", "part", "subject", "REGISTRY_ID"]
7
- }