@dxos/plugin-registry 0.7.5-main.9d26e3a → 0.7.5-main.e9bb01b

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 (68) hide show
  1. package/dist/lib/browser/app-graph-builder-PPWF5KP5.mjs +164 -0
  2. package/dist/lib/browser/app-graph-builder-PPWF5KP5.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-RGSIE33X.mjs +16 -0
  4. package/dist/lib/browser/chunk-RGSIE33X.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +49 -189
  6. package/dist/lib/browser/index.mjs.map +4 -4
  7. package/dist/lib/browser/intent-resolver-2JQUQJI5.mjs +23 -0
  8. package/dist/lib/browser/intent-resolver-2JQUQJI5.mjs.map +7 -0
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/react-surface-NRETIUCH.mjs +295 -0
  11. package/dist/lib/browser/react-surface-NRETIUCH.mjs.map +7 -0
  12. package/dist/types/src/RegistryPlugin.d.ts +1 -6
  13. package/dist/types/src/RegistryPlugin.d.ts.map +1 -1
  14. package/dist/types/src/capabilities/app-graph-builder.d.ts +181 -0
  15. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  16. package/dist/types/src/capabilities/index.d.ts +180 -0
  17. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  18. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
  19. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
  20. package/dist/types/src/capabilities/react-surface.d.ts +4 -0
  21. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  22. package/dist/types/src/components/PluginDetail.d.ts +9 -0
  23. package/dist/types/src/components/PluginDetail.d.ts.map +1 -0
  24. package/dist/types/src/components/PluginDetail.stories.d.ts +8 -0
  25. package/dist/types/src/components/PluginDetail.stories.d.ts.map +1 -0
  26. package/dist/types/src/components/PluginItem.d.ts +11 -0
  27. package/dist/types/src/components/PluginItem.d.ts.map +1 -0
  28. package/dist/types/src/components/PluginList.d.ts +5 -8
  29. package/dist/types/src/components/PluginList.d.ts.map +1 -1
  30. package/dist/types/src/components/PluginList.stories.d.ts +6 -1
  31. package/dist/types/src/components/PluginList.stories.d.ts.map +1 -1
  32. package/dist/types/src/components/RegistryContainer.d.ts +7 -0
  33. package/dist/types/src/components/RegistryContainer.d.ts.map +1 -0
  34. package/dist/types/src/components/index.d.ts +2 -1
  35. package/dist/types/src/components/index.d.ts.map +1 -1
  36. package/dist/types/src/index.d.ts +1 -2
  37. package/dist/types/src/index.d.ts.map +1 -1
  38. package/dist/types/src/meta.d.ts +3 -2
  39. package/dist/types/src/meta.d.ts.map +1 -1
  40. package/dist/types/src/translations.d.ts +10 -0
  41. package/dist/types/src/translations.d.ts.map +1 -1
  42. package/dist/types/src/types.d.ts +6 -0
  43. package/dist/types/src/types.d.ts.map +1 -0
  44. package/dist/types/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +17 -23
  46. package/src/RegistryPlugin.tsx +26 -41
  47. package/src/capabilities/app-graph-builder.ts +126 -0
  48. package/src/capabilities/index.ts +9 -0
  49. package/src/capabilities/intent-resolver.ts +27 -0
  50. package/src/capabilities/react-surface.tsx +90 -0
  51. package/src/components/PluginDetail.stories.tsx +45 -0
  52. package/src/components/PluginDetail.tsx +63 -0
  53. package/src/components/PluginItem.tsx +105 -0
  54. package/src/components/PluginList.stories.tsx +30 -21
  55. package/src/components/PluginList.tsx +13 -90
  56. package/src/components/RegistryContainer.tsx +51 -0
  57. package/src/components/index.ts +2 -1
  58. package/src/index.ts +1 -4
  59. package/src/meta.ts +5 -1
  60. package/src/translations.ts +12 -2
  61. package/src/types.ts +13 -0
  62. package/dist/lib/browser/chunk-NEMFDAOB.mjs +0 -12
  63. package/dist/lib/browser/chunk-NEMFDAOB.mjs.map +0 -7
  64. package/dist/lib/browser/meta.mjs +0 -9
  65. package/dist/lib/browser/meta.mjs.map +0 -7
  66. package/dist/types/src/components/PluginSettings.d.ts +0 -6
  67. package/dist/types/src/components/PluginSettings.d.ts.map +0 -1
  68. package/src/components/PluginSettings.tsx +0 -108
@@ -0,0 +1,164 @@
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
@@ -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 { 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
+ }
@@ -0,0 +1,16 @@
1
+ // packages/plugins/plugin-registry/src/meta.ts
2
+ var REGISTRY_PLUGIN = "dxos.org/plugin/registry";
3
+ var REGISTRY_ID = "dxos:plugin-registry";
4
+ var REGISTRY_KEY = "plugin-registry";
5
+ var meta = {
6
+ id: REGISTRY_PLUGIN,
7
+ name: "Plugins"
8
+ };
9
+
10
+ export {
11
+ REGISTRY_PLUGIN,
12
+ REGISTRY_ID,
13
+ REGISTRY_KEY,
14
+ meta
15
+ };
16
+ //# sourceMappingURL=chunk-RGSIE33X.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const 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,162 +1,18 @@
1
1
  import {
2
+ REGISTRY_ID,
3
+ REGISTRY_KEY,
2
4
  REGISTRY_PLUGIN,
3
- meta_default
4
- } from "./chunk-NEMFDAOB.mjs";
5
+ meta
6
+ } from "./chunk-RGSIE33X.mjs";
5
7
 
6
8
  // packages/plugins/plugin-registry/src/RegistryPlugin.tsx
7
- import React3 from "react";
8
- import { createSurface } from "@dxos/app-framework";
9
- import { LocalStorageStore } from "@dxos/local-storage";
9
+ import { Capabilities, contributes, defineModule, definePlugin, Events } from "@dxos/app-framework";
10
10
 
11
- // packages/plugins/plugin-registry/src/components/PluginList.tsx
12
- import React, { useCallback } from "react";
13
- import { Button, Icon, Input, Link, List, ListItem, useTranslation } from "@dxos/react-ui";
14
- import { descriptionText, fineBlockSize, mx } from "@dxos/react-ui-theme";
15
- var PluginList = ({ plugins = [], loaded = [], enabled = [], onChange, onReload }) => {
16
- const { t } = useTranslation(REGISTRY_PLUGIN);
17
- return /* @__PURE__ */ React.createElement(List, {
18
- classNames: "mb-4 select-none"
19
- }, plugins.map(({ id, name, description, homePage, source, icon = "ph--circle--regular" }) => {
20
- const isEnabled = enabled.includes(id);
21
- const isLoaded = loaded.includes(id);
22
- const reloadRequired = isEnabled !== isLoaded;
23
- const inputId = `${id}-input`;
24
- const labelId = `${id}-label`;
25
- const descriptionId = `${id}-description`;
26
- const handleChange = useCallback(() => onChange?.(id, !isEnabled), [
27
- id,
28
- isEnabled,
29
- onChange
30
- ]);
31
- return /* @__PURE__ */ React.createElement(Input.Root, {
32
- key: id,
33
- id: inputId
34
- }, /* @__PURE__ */ React.createElement(ListItem.Root, {
35
- labelId,
36
- "data-testid": `pluginList.${id}`,
37
- "aria-describedby": descriptionId,
38
- classNames: "flex gap-2 plb-2 pli-2 -mli-2 rounded"
39
- }, /* @__PURE__ */ React.createElement(Icon, {
40
- icon,
41
- size: 6,
42
- classNames: "shrink-0 mbs-1"
43
- }), /* @__PURE__ */ React.createElement("div", {
44
- role: "none",
45
- className: mx(fineBlockSize, "grow pbs-1 pl-1")
46
- }, /* @__PURE__ */ React.createElement("label", {
47
- htmlFor: inputId,
48
- id: labelId,
49
- className: "truncate"
50
- }, name ?? id), (description || reloadRequired || homePage || source) && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", {
51
- id: descriptionId,
52
- className: "space-b-1 pbs-1 pbe-1"
53
- }, /* @__PURE__ */ React.createElement("p", {
54
- className: descriptionText
55
- }, description), homePage && /* @__PURE__ */ React.createElement(Link, {
56
- href: homePage,
57
- target: "_blank",
58
- rel: "noreferrer",
59
- "aria-describedby": descriptionId,
60
- classNames: "text-xs text-description"
61
- }, t("home page label"), /* @__PURE__ */ React.createElement(Icon, {
62
- icon: "ph--arrow-square-out--bold",
63
- size: 3,
64
- classNames: "inline-block leading-none mli-1"
65
- })), source && /* @__PURE__ */ React.createElement(Link, {
66
- href: source,
67
- target: "_blank",
68
- rel: "noreferrer",
69
- "aria-describedby": descriptionId,
70
- classNames: "text-xs text-description"
71
- }, t("source label"), /* @__PURE__ */ React.createElement(Icon, {
72
- icon: "ph--arrow-square-out--bold",
73
- size: 3,
74
- classNames: "inline-block leading-none mli-1"
75
- }))), reloadRequired && /* @__PURE__ */ React.createElement(Button, {
76
- variant: "ghost",
77
- classNames: "p-0 gap-2",
78
- onClick: onReload
79
- }, /* @__PURE__ */ React.createElement(Icon, {
80
- size: 4,
81
- icon: "ph--arrow-clockwise--regular"
82
- }), /* @__PURE__ */ React.createElement("p", {
83
- className: "text-sm font-medium"
84
- }, t("reload required message"))))), /* @__PURE__ */ React.createElement("div", {
85
- className: "pbs-1"
86
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
87
- classNames: "self-center",
88
- checked: isEnabled,
89
- onClick: handleChange
90
- }))));
91
- }));
92
- };
93
-
94
- // packages/plugins/plugin-registry/src/components/PluginSettings.tsx
95
- import React2, { useMemo } from "react";
96
- import { createIntent, useIntentDispatcher, usePlugins } from "@dxos/app-framework";
97
- import { ObservabilityAction } from "@dxos/plugin-observability/types";
98
- import { Input as Input2, useTranslation as useTranslation2 } from "@dxos/react-ui";
99
- import { DeprecatedFormInput } from "@dxos/react-ui-form";
100
- var sortPluginMeta = ({ name: a = "" }, { name: b = "" }) => a.localeCompare(b);
101
- var PluginSettings = ({ settings }) => {
102
- const { t } = useTranslation2(REGISTRY_PLUGIN);
103
- const { plugins, enabled, core, setPlugin, ...pluginContext } = usePlugins();
104
- const { dispatchPromise: dispatch } = useIntentDispatcher();
105
- const installed = useMemo(() => plugins.filter(({ meta }) => !core.includes(meta.id)).filter(({ meta }) => enabled.includes(meta.id)).map(({ meta }) => meta).sort(sortPluginMeta), []);
106
- const pluginIds = plugins.map(({ meta }) => meta.id);
107
- const available = useMemo(() => pluginContext.available.filter(({ id }) => !enabled.includes(id)).sort(sortPluginMeta), []);
108
- const recommended = available.filter((meta) => !meta.tags?.includes("experimental"));
109
- const experimental = available.filter((meta) => meta.tags?.includes("experimental"));
110
- const handleChange = (id, enabled2) => {
111
- setPlugin(id, enabled2);
112
- void dispatch(createIntent(ObservabilityAction.SendEvent, {
113
- name: "plugins.toggle",
114
- properties: {
115
- plugin: id,
116
- enabled: enabled2
117
- }
118
- }));
119
- };
120
- const handleReload = () => {
121
- window.location.reload();
122
- };
123
- return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(DeprecatedFormInput, {
124
- label: t("settings show experimental label")
125
- }, /* @__PURE__ */ React2.createElement(Input2.Switch, {
126
- "data-testid": "pluginSettings.experimental",
127
- checked: settings.experimental,
128
- onCheckedChange: (checked) => settings.experimental = !!checked
129
- })), /* @__PURE__ */ React2.createElement(Section, {
130
- label: t("settings section installed label")
131
- }, /* @__PURE__ */ React2.createElement(PluginList, {
132
- plugins: installed,
133
- loaded: pluginIds,
134
- enabled,
135
- onChange: handleChange,
136
- onReload: handleReload
137
- })), /* @__PURE__ */ React2.createElement(Section, {
138
- label: t("settings section recommended label")
139
- }, /* @__PURE__ */ React2.createElement(PluginList, {
140
- plugins: recommended,
141
- loaded: pluginIds,
142
- enabled,
143
- onChange: handleChange,
144
- onReload: handleReload
145
- })), settings.experimental && /* @__PURE__ */ React2.createElement(Section, {
146
- label: t("settings section experimental label")
147
- }, /* @__PURE__ */ React2.createElement(PluginList, {
148
- plugins: experimental,
149
- loaded: pluginIds,
150
- enabled,
151
- onChange: handleChange,
152
- onReload: handleReload
153
- })));
154
- };
155
- var Section = ({ label, children }) => {
156
- return /* @__PURE__ */ React2.createElement("div", null, /* @__PURE__ */ React2.createElement("h2", {
157
- className: "py-2 text-sm text-subdued"
158
- }, label), children);
159
- };
11
+ // packages/plugins/plugin-registry/src/capabilities/index.ts
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"));
160
16
 
161
17
  // packages/plugins/plugin-registry/src/translations.ts
162
18
  var translations_default = [
@@ -166,50 +22,54 @@ var translations_default = [
166
22
  "plugin name": "Registry",
167
23
  "reload required message": "Reload required.",
168
24
  "settings show experimental label": "Show experimental plugins",
169
- "settings section installed label": "Installed",
25
+ "settings section installed label": "Enabled",
170
26
  "settings section recommended label": "Recommended",
171
27
  "settings section experimental label": "Experimental",
172
- "home page label": "Home page",
173
- "source label": "Source"
28
+ "details label": "Details",
29
+ "home page label": "Website",
30
+ "source label": "Source",
31
+ "plugin registry label": "Plugin Registry",
32
+ "all plugins label": "All",
33
+ "installed plugins label": "Enabled",
34
+ "recommended plugins label": "Recommended",
35
+ "experimental plugins label": "Experimental",
36
+ "community plugins label": "Community",
37
+ "load by url label": "Load by URL (soon)",
38
+ "coming soon label": "Coming soon!",
39
+ "open plugin registry label": "Open plugin registry"
174
40
  }
175
41
  }
176
42
  }
177
43
  ];
178
44
 
179
45
  // packages/plugins/plugin-registry/src/RegistryPlugin.tsx
180
- var RegistryPlugin = () => {
181
- const settings = new LocalStorageStore(REGISTRY_PLUGIN);
182
- return {
183
- meta: meta_default,
184
- ready: async () => {
185
- settings.prop({
186
- key: "experimental",
187
- type: LocalStorageStore.bool({
188
- allowUndefined: true
189
- })
190
- });
191
- },
192
- provides: {
193
- settings: settings.values,
194
- translations: translations_default,
195
- surface: {
196
- definitions: () => createSurface({
197
- id: meta_default.id,
198
- role: "settings",
199
- filter: (data) => data.subject === REGISTRY_PLUGIN,
200
- component: () => /* @__PURE__ */ React3.createElement(PluginSettings, {
201
- settings: settings.values
202
- })
203
- })
204
- }
205
- }
206
- };
207
- };
208
-
209
- // packages/plugins/plugin-registry/src/index.ts
210
- var src_default = RegistryPlugin;
46
+ var RegistryPlugin = () => definePlugin(meta, [
47
+ defineModule({
48
+ id: `${meta.id}/module/translations`,
49
+ activatesOn: Events.SetupTranslations,
50
+ activate: () => contributes(Capabilities.Translations, translations_default)
51
+ }),
52
+ defineModule({
53
+ id: `${meta.id}/module/react-surface`,
54
+ activatesOn: Events.SetupSurfaces,
55
+ activate: ReactSurface
56
+ }),
57
+ defineModule({
58
+ id: `${meta.id}/module/intent-resolver`,
59
+ activatesOn: Events.SetupIntents,
60
+ activate: IntentResolver
61
+ }),
62
+ defineModule({
63
+ id: `${meta.id}/module/app-graph-builder`,
64
+ activatesOn: Events.SetupAppGraph,
65
+ activate: AppGraphBuilder
66
+ })
67
+ ]);
211
68
  export {
69
+ REGISTRY_ID,
70
+ REGISTRY_KEY,
71
+ REGISTRY_PLUGIN,
212
72
  RegistryPlugin,
213
- src_default as default
73
+ meta
214
74
  };
215
75
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/RegistryPlugin.tsx", "../../../src/components/PluginList.tsx", "../../../src/components/PluginSettings.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport {\n createSurface,\n type PluginDefinition,\n type SettingsProvides,\n type SurfaceProvides,\n type TranslationsProvides,\n} from '@dxos/app-framework';\nimport { LocalStorageStore } from '@dxos/local-storage';\n\nimport { PluginSettings } from './components';\nimport meta, { REGISTRY_PLUGIN } from './meta';\nimport translations from './translations';\n\nexport type RegistrySettingsProps = {\n experimental?: boolean;\n};\n\nexport type RegistryPluginProvides = SurfaceProvides & TranslationsProvides & SettingsProvides<RegistrySettingsProps>;\n\nexport const RegistryPlugin = (): PluginDefinition<RegistryPluginProvides> => {\n const settings = new LocalStorageStore<RegistrySettingsProps>(REGISTRY_PLUGIN);\n\n return {\n meta,\n ready: async () => {\n settings.prop({ key: 'experimental', type: LocalStorageStore.bool({ allowUndefined: true }) });\n },\n provides: {\n settings: settings.values,\n translations,\n surface: {\n definitions: () =>\n createSurface({\n id: meta.id,\n role: 'settings',\n filter: (data): data is any => data.subject === REGISTRY_PLUGIN,\n component: () => <PluginSettings settings={settings.values} />,\n }),\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { type PluginMeta } from '@dxos/app-framework';\nimport { Button, Icon, Input, Link, List, ListItem, useTranslation } from '@dxos/react-ui';\nimport { descriptionText, fineBlockSize, mx } from '@dxos/react-ui-theme';\n\nimport { REGISTRY_PLUGIN } from '../meta';\n\nexport type PluginListProps = {\n plugins?: PluginMeta[];\n loaded?: string[];\n enabled?: string[];\n onChange?: (id: string, enabled: boolean) => void;\n onReload?: () => void;\n};\n\nexport const PluginList = ({ plugins = [], loaded = [], enabled = [], onChange, onReload }: PluginListProps) => {\n const { t } = useTranslation(REGISTRY_PLUGIN);\n\n return (\n <List classNames='mb-4 select-none'>\n {plugins.map(({ id, name, description, homePage, source, icon = 'ph--circle--regular' }) => {\n const isEnabled = enabled.includes(id);\n const isLoaded = loaded.includes(id);\n const reloadRequired = isEnabled !== isLoaded;\n const inputId = `${id}-input`;\n const labelId = `${id}-label`;\n const descriptionId = `${id}-description`;\n const handleChange = useCallback(() => onChange?.(id, !isEnabled), [id, isEnabled, onChange]);\n\n return (\n <Input.Root key={id} id={inputId}>\n <ListItem.Root\n labelId={labelId}\n data-testid={`pluginList.${id}`}\n aria-describedby={descriptionId}\n classNames='flex gap-2 plb-2 pli-2 -mli-2 rounded'\n >\n <Icon icon={icon} size={6} classNames='shrink-0 mbs-1' />\n <div role='none' className={mx(fineBlockSize, 'grow pbs-1 pl-1')}>\n <label htmlFor={inputId} id={labelId} className='truncate'>\n {name ?? id}\n </label>\n {(description || reloadRequired || homePage || source) && (\n <>\n <div id={descriptionId} className='space-b-1 pbs-1 pbe-1'>\n <p className={descriptionText}>{description}</p>\n {homePage && (\n <Link\n href={homePage}\n target='_blank'\n rel='noreferrer'\n aria-describedby={descriptionId}\n classNames='text-xs text-description'\n >\n {t('home page label')}\n <Icon\n icon='ph--arrow-square-out--bold'\n size={3}\n classNames='inline-block leading-none mli-1'\n />\n </Link>\n )}\n {source && (\n <Link\n href={source}\n target='_blank'\n rel='noreferrer'\n aria-describedby={descriptionId}\n classNames='text-xs text-description'\n >\n {t('source label')}\n <Icon\n icon='ph--arrow-square-out--bold'\n size={3}\n classNames='inline-block leading-none mli-1'\n />\n </Link>\n )}\n </div>\n {reloadRequired && (\n <Button variant='ghost' classNames='p-0 gap-2' onClick={onReload}>\n <Icon size={4} icon='ph--arrow-clockwise--regular' />\n <p className='text-sm font-medium'>{t('reload required message')}</p>\n </Button>\n )}\n </>\n )}\n </div>\n <div className='pbs-1'>\n <Input.Switch classNames='self-center' checked={isEnabled} onClick={handleChange} />\n </div>\n </ListItem.Root>\n </Input.Root>\n );\n })}\n </List>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useMemo, type PropsWithChildren } from 'react';\n\nimport { createIntent, type PluginMeta, useIntentDispatcher, usePlugins } from '@dxos/app-framework';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { Input, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { PluginList } from './PluginList';\nimport { type RegistrySettingsProps } from '../RegistryPlugin';\nimport { REGISTRY_PLUGIN } from '../meta';\n\nconst sortPluginMeta = ({ name: a = '' }: PluginMeta, { name: b = '' }: PluginMeta) => a.localeCompare(b);\n\nexport const PluginSettings = ({ settings }: { settings: RegistrySettingsProps }) => {\n const { t } = useTranslation(REGISTRY_PLUGIN);\n const { plugins, enabled, core, setPlugin, ...pluginContext } = usePlugins();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n // Memoize to prevent plugins from disappearing when toggling enabled.\n const installed = useMemo(\n () =>\n plugins\n .filter(({ meta }) => !core.includes(meta.id))\n .filter(({ meta }) => enabled.includes(meta.id))\n .map(({ meta }) => meta)\n .sort(sortPluginMeta),\n [],\n );\n\n const pluginIds = plugins.map(({ meta }) => meta.id);\n const available = useMemo(\n () => pluginContext.available.filter(({ id }) => !enabled.includes(id)).sort(sortPluginMeta),\n [],\n );\n const recommended = available.filter((meta) => !meta.tags?.includes('experimental'));\n const experimental = available.filter((meta) => meta.tags?.includes('experimental'));\n\n const handleChange = (id: string, enabled: boolean) => {\n setPlugin(id, enabled);\n void dispatch(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'plugins.toggle',\n properties: { plugin: id, enabled },\n }),\n );\n };\n\n const handleReload = () => {\n window.location.reload();\n };\n\n return (\n <>\n <DeprecatedFormInput label={t('settings show experimental label')}>\n <Input.Switch\n data-testid='pluginSettings.experimental'\n checked={settings.experimental}\n onCheckedChange={(checked) => (settings.experimental = !!checked)}\n />\n </DeprecatedFormInput>\n\n <Section label={t('settings section installed label')}>\n <PluginList\n plugins={installed}\n loaded={pluginIds}\n enabled={enabled}\n onChange={handleChange}\n onReload={handleReload}\n />\n </Section>\n\n <Section label={t('settings section recommended label')}>\n <PluginList\n plugins={recommended}\n loaded={pluginIds}\n enabled={enabled}\n onChange={handleChange}\n onReload={handleReload}\n />\n </Section>\n\n {settings.experimental && (\n <Section label={t('settings section experimental label')}>\n <PluginList\n plugins={experimental}\n loaded={pluginIds}\n enabled={enabled}\n onChange={handleChange}\n onReload={handleReload}\n />\n </Section>\n )}\n </>\n );\n};\n\nconst Section = ({ label, children }: PropsWithChildren<{ label: string }>) => {\n return (\n <div>\n <h2 className='py-2 text-sm text-subdued'>{label}</h2>\n {children}\n </div>\n );\n};\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': 'Installed',\n 'settings section recommended label': 'Recommended',\n 'settings section experimental label': 'Experimental',\n 'home page label': 'Home page',\n 'source label': 'Source',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { RegistryPlugin } from './RegistryPlugin';\n\nexport default RegistryPlugin;\n\nexport * from './RegistryPlugin';\n"],
5
- "mappings": ";;;;;;AAIA,OAAOA,YAAW;AAElB,SACEC,qBAKK;AACP,SAASC,yBAAyB;;;ACTlC,OAAOC,SAASC,mBAAmB;AAGnC,SAASC,QAAQC,MAAMC,OAAOC,MAAMC,MAAMC,UAAUC,sBAAsB;AAC1E,SAASC,iBAAiBC,eAAeC,UAAU;AAY5C,IAAMC,aAAa,CAAC,EAAEC,UAAU,CAAA,GAAIC,SAAS,CAAA,GAAIC,UAAU,CAAA,GAAIC,UAAUC,SAAQ,MAAmB;AACzG,QAAM,EAAEC,EAAC,IAAKC,eAAeC,eAAAA;AAE7B,SACE,sBAAA,cAACC,MAAAA;IAAKC,YAAW;KACdT,QAAQU,IAAI,CAAC,EAAEC,IAAIC,MAAMC,aAAaC,UAAUC,QAAQC,OAAO,sBAAqB,MAAE;AACrF,UAAMC,YAAYf,QAAQgB,SAASP,EAAAA;AACnC,UAAMQ,WAAWlB,OAAOiB,SAASP,EAAAA;AACjC,UAAMS,iBAAiBH,cAAcE;AACrC,UAAME,UAAU,GAAGV,EAAAA;AACnB,UAAMW,UAAU,GAAGX,EAAAA;AACnB,UAAMY,gBAAgB,GAAGZ,EAAAA;AACzB,UAAMa,eAAeC,YAAY,MAAMtB,WAAWQ,IAAI,CAACM,SAAAA,GAAY;MAACN;MAAIM;MAAWd;KAAS;AAE5F,WACE,sBAAA,cAACuB,MAAMC,MAAI;MAACC,KAAKjB;MAAIA,IAAIU;OACvB,sBAAA,cAACQ,SAASF,MAAI;MACZL;MACAQ,eAAa,cAAcnB,EAAAA;MAC3BoB,oBAAkBR;MAClBd,YAAW;OAEX,sBAAA,cAACuB,MAAAA;MAAKhB;MAAYiB,MAAM;MAAGxB,YAAW;QACtC,sBAAA,cAACyB,OAAAA;MAAIC,MAAK;MAAOC,WAAWC,GAAGC,eAAe,iBAAA;OAC5C,sBAAA,cAACC,SAAAA;MAAMC,SAASnB;MAASV,IAAIW;MAASc,WAAU;OAC7CxB,QAAQD,EAAAA,IAETE,eAAeO,kBAAkBN,YAAYC,WAC7C,sBAAA,cAAA,MAAA,UAAA,MACE,sBAAA,cAACmB,OAAAA;MAAIvB,IAAIY;MAAea,WAAU;OAChC,sBAAA,cAACK,KAAAA;MAAEL,WAAWM;OAAkB7B,WAAAA,GAC/BC,YACC,sBAAA,cAAC6B,MAAAA;MACCC,MAAM9B;MACN+B,QAAO;MACPC,KAAI;MACJf,oBAAkBR;MAClBd,YAAW;OAEVJ,EAAE,iBAAA,GACH,sBAAA,cAAC2B,MAAAA;MACChB,MAAK;MACLiB,MAAM;MACNxB,YAAW;SAIhBM,UACC,sBAAA,cAAC4B,MAAAA;MACCC,MAAM7B;MACN8B,QAAO;MACPC,KAAI;MACJf,oBAAkBR;MAClBd,YAAW;OAEVJ,EAAE,cAAA,GACH,sBAAA,cAAC2B,MAAAA;MACChB,MAAK;MACLiB,MAAM;MACNxB,YAAW;UAKlBW,kBACC,sBAAA,cAAC2B,QAAAA;MAAOC,SAAQ;MAAQvC,YAAW;MAAYwC,SAAS7C;OACtD,sBAAA,cAAC4B,MAAAA;MAAKC,MAAM;MAAGjB,MAAK;QACpB,sBAAA,cAACyB,KAAAA;MAAEL,WAAU;OAAuB/B,EAAE,yBAAA,CAAA,CAAA,CAAA,CAAA,GAMhD,sBAAA,cAAC6B,OAAAA;MAAIE,WAAU;OACb,sBAAA,cAACV,MAAMwB,QAAM;MAACzC,YAAW;MAAc0C,SAASlC;MAAWgC,SAASzB;;EAK9E,CAAA,CAAA;AAGN;;;AClGA,OAAO4B,UAASC,eAAuC;AAEvD,SAASC,cAA+BC,qBAAqBC,kBAAkB;AAC/E,SAASC,2BAA2B;AACpC,SAASC,SAAAA,QAAOC,kBAAAA,uBAAsB;AACtC,SAASC,2BAA2B;AAMpC,IAAMC,iBAAiB,CAAC,EAAEC,MAAMC,IAAI,GAAE,GAAgB,EAAED,MAAME,IAAI,GAAE,MAAmBD,EAAEE,cAAcD,CAAAA;AAEhG,IAAME,iBAAiB,CAAC,EAAEC,SAAQ,MAAuC;AAC9E,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,eAAAA;AAC7B,QAAM,EAAEC,SAASC,SAASC,MAAMC,WAAW,GAAGC,cAAAA,IAAkBC,WAAAA;AAChE,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,oBAAAA;AAGtC,QAAMC,YAAYC,QAChB,MACEV,QACGW,OAAO,CAAC,EAAEC,KAAI,MAAO,CAACV,KAAKW,SAASD,KAAKE,EAAE,CAAA,EAC3CH,OAAO,CAAC,EAAEC,KAAI,MAAOX,QAAQY,SAASD,KAAKE,EAAE,CAAA,EAC7CC,IAAI,CAAC,EAAEH,KAAI,MAAOA,IAAAA,EAClBI,KAAK1B,cAAAA,GACV,CAAA,CAAE;AAGJ,QAAM2B,YAAYjB,QAAQe,IAAI,CAAC,EAAEH,KAAI,MAAOA,KAAKE,EAAE;AACnD,QAAMI,YAAYR,QAChB,MAAMN,cAAcc,UAAUP,OAAO,CAAC,EAAEG,GAAE,MAAO,CAACb,QAAQY,SAASC,EAAAA,CAAAA,EAAKE,KAAK1B,cAAAA,GAC7E,CAAA,CAAE;AAEJ,QAAM6B,cAAcD,UAAUP,OAAO,CAACC,SAAS,CAACA,KAAKQ,MAAMP,SAAS,cAAA,CAAA;AACpE,QAAMQ,eAAeH,UAAUP,OAAO,CAACC,SAASA,KAAKQ,MAAMP,SAAS,cAAA,CAAA;AAEpE,QAAMS,eAAe,CAACR,IAAYb,aAAAA;AAChCE,cAAUW,IAAIb,QAAAA;AACd,SAAKM,SACHgB,aAAaC,oBAAoBC,WAAW;MAC1ClC,MAAM;MACNmC,YAAY;QAAEC,QAAQb;QAAIb,SAAAA;MAAQ;IACpC,CAAA,CAAA;EAEJ;AAEA,QAAM2B,eAAe,MAAA;AACnBC,WAAOC,SAASC,OAAM;EACxB;AAEA,SACE,gBAAAC,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACC,qBAAAA;IAAoBC,OAAOrC,EAAE,kCAAA;KAC5B,gBAAAmC,OAAA,cAACG,OAAMC,QAAM;IACXC,eAAY;IACZC,SAAS1C,SAASyB;IAClBkB,iBAAiB,CAACD,YAAa1C,SAASyB,eAAe,CAAC,CAACiB;OAI7D,gBAAAN,OAAA,cAACQ,SAAAA;IAAQN,OAAOrC,EAAE,kCAAA;KAChB,gBAAAmC,OAAA,cAACS,YAAAA;IACCzC,SAASS;IACTiC,QAAQzB;IACRhB;IACA0C,UAAUrB;IACVsB,UAAUhB;OAId,gBAAAI,OAAA,cAACQ,SAAAA;IAAQN,OAAOrC,EAAE,oCAAA;KAChB,gBAAAmC,OAAA,cAACS,YAAAA;IACCzC,SAASmB;IACTuB,QAAQzB;IACRhB;IACA0C,UAAUrB;IACVsB,UAAUhB;OAIbhC,SAASyB,gBACR,gBAAAW,OAAA,cAACQ,SAAAA;IAAQN,OAAOrC,EAAE,qCAAA;KAChB,gBAAAmC,OAAA,cAACS,YAAAA;IACCzC,SAASqB;IACTqB,QAAQzB;IACRhB;IACA0C,UAAUrB;IACVsB,UAAUhB;;AAMtB;AAEA,IAAMY,UAAU,CAAC,EAAEN,OAAOW,SAAQ,MAAwC;AACxE,SACE,gBAAAb,OAAA,cAACc,OAAAA,MACC,gBAAAd,OAAA,cAACe,MAAAA;IAAGC,WAAU;KAA6Bd,KAAAA,GAC1CW,QAAAA;AAGP;;;ACrGA,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACI,eAAAA,GAAkB;QACjB,eAAe;QACf,2BAA2B;QAC3B,oCAAoC;QACpC,oCAAoC;QACpC,sCAAsC;QACtC,uCAAuC;QACvC,mBAAmB;QACnB,gBAAgB;MAClB;IACF;EACF;;;;AHKK,IAAMC,iBAAiB,MAAA;AAC5B,QAAMC,WAAW,IAAIC,kBAAyCC,eAAAA;AAE9D,SAAO;IACLC;IACAC,OAAO,YAAA;AACLJ,eAASK,KAAK;QAAEC,KAAK;QAAgBC,MAAMN,kBAAkBO,KAAK;UAAEC,gBAAgB;QAAK,CAAA;MAAG,CAAA;IAC9F;IACAC,UAAU;MACRV,UAAUA,SAASW;MACnBC;MACAC,SAAS;QACPC,aAAa,MACXC,cAAc;UACZC,IAAIb,aAAKa;UACTC,MAAM;UACNC,QAAQ,CAACC,SAAsBA,KAAKC,YAAYlB;UAChDmB,WAAW,MAAM,gBAAAC,OAAA,cAACC,gBAAAA;YAAevB,UAAUA,SAASW;;QACtD,CAAA;MACJ;IACF;EACF;AACF;;;AIzCA,IAAA,cAAea;",
6
- "names": ["React", "createSurface", "LocalStorageStore", "React", "useCallback", "Button", "Icon", "Input", "Link", "List", "ListItem", "useTranslation", "descriptionText", "fineBlockSize", "mx", "PluginList", "plugins", "loaded", "enabled", "onChange", "onReload", "t", "useTranslation", "REGISTRY_PLUGIN", "List", "classNames", "map", "id", "name", "description", "homePage", "source", "icon", "isEnabled", "includes", "isLoaded", "reloadRequired", "inputId", "labelId", "descriptionId", "handleChange", "useCallback", "Input", "Root", "key", "ListItem", "data-testid", "aria-describedby", "Icon", "size", "div", "role", "className", "mx", "fineBlockSize", "label", "htmlFor", "p", "descriptionText", "Link", "href", "target", "rel", "Button", "variant", "onClick", "Switch", "checked", "React", "useMemo", "createIntent", "useIntentDispatcher", "usePlugins", "ObservabilityAction", "Input", "useTranslation", "DeprecatedFormInput", "sortPluginMeta", "name", "a", "b", "localeCompare", "PluginSettings", "settings", "t", "useTranslation", "REGISTRY_PLUGIN", "plugins", "enabled", "core", "setPlugin", "pluginContext", "usePlugins", "dispatchPromise", "dispatch", "useIntentDispatcher", "installed", "useMemo", "filter", "meta", "includes", "id", "map", "sort", "pluginIds", "available", "recommended", "tags", "experimental", "handleChange", "createIntent", "ObservabilityAction", "SendEvent", "properties", "plugin", "handleReload", "window", "location", "reload", "React", "DeprecatedFormInput", "label", "Input", "Switch", "data-testid", "checked", "onCheckedChange", "Section", "PluginList", "loaded", "onChange", "onReload", "children", "div", "h2", "className", "REGISTRY_PLUGIN", "RegistryPlugin", "settings", "LocalStorageStore", "REGISTRY_PLUGIN", "meta", "ready", "prop", "key", "type", "bool", "allowUndefined", "provides", "values", "translations", "surface", "definitions", "createSurface", "id", "role", "filter", "data", "subject", "component", "React", "PluginSettings", "RegistryPlugin"]
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"]
7
7
  }
@@ -0,0 +1,23 @@
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
@@ -0,0 +1,7 @@
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
+ }