@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
@@ -1,7 +1,5 @@
1
1
  // packages/plugins/plugin-registry/src/meta.ts
2
2
  var REGISTRY_PLUGIN = "dxos.org/plugin/registry";
3
- var REGISTRY_ID = "dxos:plugin-registry";
4
- var REGISTRY_KEY = "plugin-registry";
5
3
  var meta = {
6
4
  id: REGISTRY_PLUGIN,
7
5
  name: "Plugins"
@@ -9,8 +7,6 @@ var meta = {
9
7
 
10
8
  export {
11
9
  REGISTRY_PLUGIN,
12
- REGISTRY_ID,
13
- REGISTRY_KEY,
14
10
  meta
15
11
  };
16
- //# sourceMappingURL=chunk-RGSIE33X.mjs.map
12
+ //# sourceMappingURL=chunk-CMDU7LPH.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\nexport const meta = {\n id: REGISTRY_PLUGIN,\n name: 'Plugins',\n} satisfies PluginMeta;\n"],
5
+ "mappings": ";AAMO,IAAMA,kBAAkB;AAExB,IAAMC,OAAO;EAClBC,IAAIF;EACJG,MAAM;AACR;",
6
+ "names": ["REGISTRY_PLUGIN", "meta", "id", "name"]
7
+ }
@@ -1,18 +1,15 @@
1
1
  import {
2
- REGISTRY_ID,
3
- REGISTRY_KEY,
4
2
  REGISTRY_PLUGIN,
5
3
  meta
6
- } from "./chunk-RGSIE33X.mjs";
4
+ } from "./chunk-CMDU7LPH.mjs";
7
5
 
8
6
  // packages/plugins/plugin-registry/src/RegistryPlugin.tsx
9
7
  import { Capabilities, contributes, defineModule, definePlugin, Events } from "@dxos/app-framework";
10
8
 
11
9
  // packages/plugins/plugin-registry/src/capabilities/index.ts
12
10
  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-HTHYQQF7.mjs"));
11
+ var ReactSurface = lazy(() => import("./react-surface-HKWZP7OW.mjs"));
12
+ var RegistrySettings = lazy(() => import("./settings-7LOHS2IV.mjs"));
16
13
 
17
14
  // packages/plugins/plugin-registry/src/translations.ts
18
15
  var translations_default = [
@@ -22,20 +19,11 @@ var translations_default = [
22
19
  "plugin name": "Registry",
23
20
  "reload required message": "Reload required.",
24
21
  "settings show experimental label": "Show experimental plugins",
25
- "settings section installed label": "Enabled",
22
+ "settings section installed label": "Installed",
26
23
  "settings section recommended label": "Recommended",
27
24
  "settings section experimental label": "Experimental",
28
- "home page label": "Website",
29
- "source label": "Source",
30
- "plugin registry label": "Plugin Registry",
31
- "all plugins label": "All",
32
- "installed plugins label": "Enabled",
33
- "recommended plugins label": "Recommended",
34
- "experimental plugins label": "Experimental",
35
- "community plugins label": "Community",
36
- "load by url label": "Load by URL (soon)",
37
- "coming soon label": "Coming soon!",
38
- "open plugin registry label": "Open plugin registry"
25
+ "home page label": "Home page",
26
+ "source label": "Source"
39
27
  }
40
28
  }
41
29
  }
@@ -43,6 +31,11 @@ var translations_default = [
43
31
 
44
32
  // packages/plugins/plugin-registry/src/RegistryPlugin.tsx
45
33
  var RegistryPlugin = () => definePlugin(meta, [
34
+ defineModule({
35
+ id: `${meta.id}/module/settings`,
36
+ activatesOn: Events.SetupSettings,
37
+ activate: RegistrySettings
38
+ }),
46
39
  defineModule({
47
40
  id: `${meta.id}/module/translations`,
48
41
  activatesOn: Events.SetupTranslations,
@@ -50,23 +43,11 @@ var RegistryPlugin = () => definePlugin(meta, [
50
43
  }),
51
44
  defineModule({
52
45
  id: `${meta.id}/module/react-surface`,
53
- activatesOn: Events.SetupSurfaces,
46
+ activatesOn: Events.Startup,
54
47
  activate: ReactSurface
55
- }),
56
- defineModule({
57
- id: `${meta.id}/module/intent-resolver`,
58
- activatesOn: Events.SetupIntents,
59
- activate: IntentResolver
60
- }),
61
- defineModule({
62
- id: `${meta.id}/module/app-graph-builder`,
63
- activatesOn: Events.SetupAppGraph,
64
- activate: AppGraphBuilder
65
48
  })
66
49
  ]);
67
50
  export {
68
- REGISTRY_ID,
69
- REGISTRY_KEY,
70
51
  REGISTRY_PLUGIN,
71
52
  RegistryPlugin,
72
53
  meta
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/RegistryPlugin.tsx", "../../../src/capabilities/index.ts", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, contributes, defineModule, definePlugin, Events } from '@dxos/app-framework';\n\nimport { AppGraphBuilder, IntentResolver, ReactSurface } from './capabilities';\nimport { meta } from './meta';\nimport translations from './translations';\n\nexport const RegistryPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupSurfaces,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntents,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { REGISTRY_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [REGISTRY_PLUGIN]: {\n 'plugin name': 'Registry',\n 'reload required message': 'Reload required.',\n 'settings show experimental label': 'Show experimental plugins',\n 'settings section installed label': 'Enabled',\n 'settings section recommended label': 'Recommended',\n 'settings section experimental label': 'Experimental',\n '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,mBAAmB;QACnB,gBAAgB;QAChB,yBAAyB;QACzB,qBAAqB;QACrB,2BAA2B;QAC3B,6BAA6B;QAC7B,8BAA8B;QAC9B,2BAA2B;QAC3B,qBAAqB;QACrB,qBAAqB;QACrB,8BAA8B;MAChC;IACF;EACF;;;;AFnBK,IAAMC,iBAAiB,MAC5BC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,UAAU,MAAMC,YAAYC,aAAaC,cAAcC,oBAAAA;EACzD,CAAA;EACAT,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOO;IACpBL,UAAUM;EACZ,CAAA;EACAX,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOS;IACpBP,UAAUQ;EACZ,CAAA;EACAb,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOW;IACpBT,UAAUU;EACZ,CAAA;CACD;",
6
- "names": ["Capabilities", "contributes", "defineModule", "definePlugin", "Events", "lazy", "AppGraphBuilder", "lazy", "IntentResolver", "ReactSurface", "REGISTRY_PLUGIN", "RegistryPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "SetupSurfaces", "ReactSurface", "SetupIntents", "IntentResolver", "SetupAppGraph", "AppGraphBuilder"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, contributes, defineModule, definePlugin, Events } from '@dxos/app-framework';\n\nimport { ReactSurface, RegistrySettings } from './capabilities';\nimport { meta } from './meta';\nimport translations from './translations';\n\nexport const RegistryPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/settings`,\n activatesOn: Events.SetupSettings,\n activate: RegistrySettings,\n }),\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.Startup,\n activate: ReactSurface,\n }),\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const RegistrySettings = lazy(() => import('./settings'));\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"],
5
+ "mappings": ";;;;;;AAIA,SAASA,cAAcC,aAAaC,cAAcC,cAAcC,cAAc;;;ACA9E,SAASC,YAAY;AAEd,IAAMC,eAAeC,KAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMC,mBAAmBD,KAAK,MAAM,OAAO,yBAAA,CAAA;;;ACDlD,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACE,eAAAA,GAAkB;QACjB,eAAe;QACf,2BAA2B;QAC3B,oCAAoC;QACpC,oCAAoC;QACpC,sCAAsC;QACtC,uCAAuC;QACvC,mBAAmB;QACnB,gBAAgB;MAClB;IACF;EACF;;;;AFVK,IAAMC,iBAAiB,MAC5BC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,UAAUC;EACZ,CAAA;EACAN,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOI;IACpBF,UAAU,MAAMG,YAAYC,aAAaC,cAAcC,oBAAAA;EACzD,CAAA;EACAX,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOS;IACpBP,UAAUQ;EACZ,CAAA;CACD;",
6
+ "names": ["Capabilities", "contributes", "defineModule", "definePlugin", "Events", "lazy", "ReactSurface", "lazy", "RegistrySettings", "REGISTRY_PLUGIN", "RegistryPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupSettings", "activate", "RegistrySettings", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "Startup", "ReactSurface"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytes":1519,"imports":[],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts":{"bytes":16999,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/intent-resolver.ts":{"bytes":2456,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/PluginDetail.tsx":{"bytes":7359,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/PluginItem.tsx":{"bytes":11756,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/PluginList.tsx":{"bytes":2600,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/components/PluginItem.tsx","kind":"import-statement","original":"./PluginItem"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/RegistryContainer.tsx":{"bytes":6810,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/components/PluginList.tsx","kind":"import-statement","original":"./PluginList"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/index.ts":{"bytes":734,"imports":[{"path":"packages/plugins/plugin-registry/src/components/PluginDetail.tsx","kind":"import-statement","original":"./PluginDetail"},{"path":"packages/plugins/plugin-registry/src/components/PluginList.tsx","kind":"import-statement","original":"./PluginList"},{"path":"packages/plugins/plugin-registry/src/components/RegistryContainer.tsx","kind":"import-statement","original":"./RegistryContainer"}],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/react-surface.tsx":{"bytes":12724,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/index.ts":{"bytes":1351,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts","kind":"dynamic-import","original":"./app-graph-builder"},{"path":"packages/plugins/plugin-registry/src/capabilities/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"packages/plugins/plugin-registry/src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"packages/plugins/plugin-registry/src/translations.ts":{"bytes":3440,"imports":[{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/RegistryPlugin.tsx":{"bytes":4084,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-registry/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/plugins/plugin-registry/src/index.ts":{"bytes":602,"imports":[{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-registry/src/RegistryPlugin.tsx","kind":"import-statement","original":"./RegistryPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-registry/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3918},"packages/plugins/plugin-registry/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-RGSIE33X.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/dist/lib/browser/app-graph-builder-PPWF5KP5.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-registry/dist/lib/browser/intent-resolver-2JQUQJI5.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-registry/dist/lib/browser/react-surface-HTHYQQF7.mjs","kind":"dynamic-import"}],"exports":["REGISTRY_ID","REGISTRY_KEY","REGISTRY_PLUGIN","RegistryPlugin","meta"],"entryPoint":"packages/plugins/plugin-registry/src/index.ts","inputs":{"packages/plugins/plugin-registry/src/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-registry/src/RegistryPlugin.tsx":{"bytesInOutput":747},"packages/plugins/plugin-registry/src/capabilities/index.ts":{"bytesInOutput":268},"packages/plugins/plugin-registry/src/translations.ts":{"bytesInOutput":955}},"bytes":2429},"packages/plugins/plugin-registry/dist/lib/browser/app-graph-builder-PPWF5KP5.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6986},"packages/plugins/plugin-registry/dist/lib/browser/app-graph-builder-PPWF5KP5.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-RGSIE33X.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts","inputs":{"packages/plugins/plugin-registry/src/capabilities/app-graph-builder.ts":{"bytesInOutput":4246}},"bytes":4517},"packages/plugins/plugin-registry/dist/lib/browser/intent-resolver-2JQUQJI5.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1265},"packages/plugins/plugin-registry/dist/lib/browser/intent-resolver-2JQUQJI5.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-RGSIE33X.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-registry/src/capabilities/intent-resolver.ts","inputs":{"packages/plugins/plugin-registry/src/capabilities/intent-resolver.ts":{"bytesInOutput":461}},"bytes":691},"packages/plugins/plugin-registry/dist/lib/browser/react-surface-HTHYQQF7.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":20772},"packages/plugins/plugin-registry/dist/lib/browser/react-surface-HTHYQQF7.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-RGSIE33X.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-registry/src/capabilities/react-surface.tsx","inputs":{"packages/plugins/plugin-registry/src/capabilities/react-surface.tsx":{"bytesInOutput":3177},"packages/plugins/plugin-registry/src/components/PluginDetail.tsx":{"bytesInOutput":2166},"packages/plugins/plugin-registry/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-registry/src/components/PluginList.tsx":{"bytesInOutput":517},"packages/plugins/plugin-registry/src/components/PluginItem.tsx":{"bytesInOutput":3312},"packages/plugins/plugin-registry/src/components/RegistryContainer.tsx":{"bytesInOutput":1556}},"bytes":11389},"packages/plugins/plugin-registry/dist/lib/browser/chunk-RGSIE33X.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":704},"packages/plugins/plugin-registry/dist/lib/browser/chunk-RGSIE33X.mjs":{"imports":[],"exports":["REGISTRY_ID","REGISTRY_KEY","REGISTRY_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytesInOutput":187}},"bytes":349}}}
1
+ {"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytes":996,"imports":[],"format":"esm"},"packages/plugins/plugin-registry/src/components/PluginList.tsx":{"bytes":13039,"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/PluginSettings.tsx":{"bytes":12383,"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","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/components/PluginList.tsx","kind":"import-statement","original":"./PluginList"},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/components/index.ts":{"bytes":627,"imports":[{"path":"packages/plugins/plugin-registry/src/components/PluginList.tsx","kind":"import-statement","original":"./PluginList"},{"path":"packages/plugins/plugin-registry/src/components/PluginSettings.tsx","kind":"import-statement","original":"./PluginSettings"}],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/react-surface.tsx":{"bytes":3000,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","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/types.ts":{"bytes":1179,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/settings.ts":{"bytes":1995,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-registry/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-registry/src/capabilities/index.ts":{"bytes":1074,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-registry/src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"},{"path":"packages/plugins/plugin-registry/src/capabilities/settings.ts","kind":"dynamic-import","original":"./settings"}],"format":"esm"},"packages/plugins/plugin-registry/src/translations.ts":{"bytes":2142,"imports":[{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/RegistryPlugin.tsx":{"bytes":3436,"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":2905},"packages/plugins/plugin-registry/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-CMDU7LPH.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/react-surface-HKWZP7OW.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-registry/dist/lib/browser/settings-7LOHS2IV.mjs","kind":"dynamic-import"}],"exports":["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":598},"packages/plugins/plugin-registry/src/capabilities/index.ts":{"bytesInOutput":185},"packages/plugins/plugin-registry/src/translations.ts":{"bytesInOutput":513}},"bytes":1693},"packages/plugins/plugin-registry/dist/lib/browser/react-surface-HKWZP7OW.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":15023},"packages/plugins/plugin-registry/dist/lib/browser/react-surface-HKWZP7OW.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-CMDU7LPH.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","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","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","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":542},"packages/plugins/plugin-registry/src/components/PluginList.tsx":{"bytesInOutput":3369},"packages/plugins/plugin-registry/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-registry/src/components/PluginSettings.tsx":{"bytesInOutput":3160}},"bytes":7518},"packages/plugins/plugin-registry/dist/lib/browser/settings-7LOHS2IV.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1505},"packages/plugins/plugin-registry/dist/lib/browser/settings-7LOHS2IV.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-CMDU7LPH.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-registry/src/capabilities/settings.ts","inputs":{"packages/plugins/plugin-registry/src/capabilities/settings.ts":{"bytesInOutput":311},"packages/plugins/plugin-registry/src/types.ts":{"bytesInOutput":132}},"bytes":772},"packages/plugins/plugin-registry/dist/lib/browser/chunk-CMDU7LPH.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":471},"packages/plugins/plugin-registry/dist/lib/browser/chunk-CMDU7LPH.mjs":{"imports":[],"exports":["REGISTRY_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytesInOutput":107}},"bytes":238}}}
@@ -0,0 +1,179 @@
1
+ import {
2
+ REGISTRY_PLUGIN,
3
+ meta
4
+ } from "./chunk-CMDU7LPH.mjs";
5
+
6
+ // packages/plugins/plugin-registry/src/capabilities/react-surface.tsx
7
+ import React3 from "react";
8
+ import { Capabilities, contributes, createSurface, useCapability } from "@dxos/app-framework";
9
+
10
+ // packages/plugins/plugin-registry/src/components/PluginList.tsx
11
+ import React, { useCallback } from "react";
12
+ import { Button, Icon, Input, Link, List, ListItem, useTranslation } from "@dxos/react-ui";
13
+ import { descriptionText, fineBlockSize, mx } from "@dxos/react-ui-theme";
14
+ var PluginList = ({ plugins = [], installed = [], enabled = [], onChange, onReload }) => {
15
+ const { t } = useTranslation(REGISTRY_PLUGIN);
16
+ return /* @__PURE__ */ React.createElement(List, {
17
+ classNames: "mb-4 select-none"
18
+ }, plugins.map(({ id, name, description, homePage, source, icon = "ph--circle--regular" }) => {
19
+ const isEnabled = enabled.includes(id);
20
+ const isInstalled = installed.includes(id);
21
+ const reloadRequired = isEnabled !== isInstalled;
22
+ const inputId = `${id}-input`;
23
+ const labelId = `${id}-label`;
24
+ const descriptionId = `${id}-description`;
25
+ const handleChange = useCallback(() => onChange?.(id, !isEnabled), [
26
+ id,
27
+ isEnabled,
28
+ onChange
29
+ ]);
30
+ return /* @__PURE__ */ React.createElement(Input.Root, {
31
+ key: id,
32
+ id: inputId
33
+ }, /* @__PURE__ */ React.createElement(ListItem.Root, {
34
+ labelId,
35
+ "data-testid": `pluginList.${id}`,
36
+ "aria-describedby": descriptionId,
37
+ classNames: "flex gap-2 plb-2 pli-2 -mli-2 rounded"
38
+ }, /* @__PURE__ */ React.createElement(Icon, {
39
+ icon,
40
+ size: 6,
41
+ classNames: "shrink-0 mbs-1"
42
+ }), /* @__PURE__ */ React.createElement("div", {
43
+ role: "none",
44
+ className: mx(fineBlockSize, "grow pbs-1 pl-1")
45
+ }, /* @__PURE__ */ React.createElement("label", {
46
+ htmlFor: inputId,
47
+ id: labelId,
48
+ className: "truncate"
49
+ }, name ?? id), (description || reloadRequired || homePage || source) && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", {
50
+ id: descriptionId,
51
+ className: "space-b-1 pbs-1 pbe-1"
52
+ }, /* @__PURE__ */ React.createElement("p", {
53
+ className: descriptionText
54
+ }, description), homePage && /* @__PURE__ */ React.createElement(Link, {
55
+ href: homePage,
56
+ target: "_blank",
57
+ rel: "noreferrer",
58
+ "aria-describedby": descriptionId,
59
+ classNames: "text-xs text-description"
60
+ }, t("home page label"), /* @__PURE__ */ React.createElement(Icon, {
61
+ icon: "ph--arrow-square-out--bold",
62
+ size: 3,
63
+ classNames: "inline-block leading-none mli-1"
64
+ })), source && /* @__PURE__ */ React.createElement(Link, {
65
+ href: source,
66
+ target: "_blank",
67
+ rel: "noreferrer",
68
+ "aria-describedby": descriptionId,
69
+ classNames: "text-xs text-description"
70
+ }, t("source label"), /* @__PURE__ */ React.createElement(Icon, {
71
+ icon: "ph--arrow-square-out--bold",
72
+ size: 3,
73
+ classNames: "inline-block leading-none mli-1"
74
+ }))), reloadRequired && /* @__PURE__ */ React.createElement(Button, {
75
+ variant: "ghost",
76
+ classNames: "p-0 gap-2",
77
+ onClick: onReload
78
+ }, /* @__PURE__ */ React.createElement(Icon, {
79
+ size: 4,
80
+ icon: "ph--arrow-clockwise--regular"
81
+ }), /* @__PURE__ */ React.createElement("p", {
82
+ className: "text-sm font-medium"
83
+ }, t("reload required message"))))), /* @__PURE__ */ React.createElement("div", {
84
+ className: "pbs-1"
85
+ }, /* @__PURE__ */ React.createElement(Input.Switch, {
86
+ classNames: "self-center",
87
+ checked: isEnabled,
88
+ onClick: handleChange
89
+ }))));
90
+ }));
91
+ };
92
+
93
+ // packages/plugins/plugin-registry/src/components/PluginSettings.tsx
94
+ import React2, { useMemo } from "react";
95
+ import { createIntent, useIntentDispatcher, usePluginManager } from "@dxos/app-framework";
96
+ import { ObservabilityAction } from "@dxos/plugin-observability/types";
97
+ import { Input as Input2, useTranslation as useTranslation2 } from "@dxos/react-ui";
98
+ import { DeprecatedFormInput } from "@dxos/react-ui-form";
99
+ var sortPluginMeta = ({ name: a = "" }, { name: b = "" }) => a.localeCompare(b);
100
+ var PluginSettings = ({ settings }) => {
101
+ const { t } = useTranslation2(REGISTRY_PLUGIN);
102
+ const manager = usePluginManager();
103
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
104
+ const installed = useMemo(() => manager.plugins.filter(({ meta: meta2 }) => !manager.core.includes(meta2.id)).filter(({ meta: meta2 }) => manager.enabled.includes(meta2.id)).map(({ meta: meta2 }) => meta2).sort(sortPluginMeta), []);
105
+ const pluginIds = useMemo(() => installed.map((meta2) => meta2.id), [
106
+ installed
107
+ ]);
108
+ const available = useMemo(() => manager.plugins.map(({ meta: meta2 }) => meta2).filter(({ id }) => !manager.enabled.includes(id)).sort(sortPluginMeta), []);
109
+ const recommended = available.filter((meta2) => !meta2.tags?.includes("experimental"));
110
+ const experimental = available.filter((meta2) => meta2.tags?.includes("experimental"));
111
+ const handleChange = (id, enabled) => {
112
+ enabled ? manager.enable(id) : manager.disable(id);
113
+ void dispatch(createIntent(ObservabilityAction.SendEvent, {
114
+ name: "plugins.toggle",
115
+ properties: {
116
+ plugin: id,
117
+ enabled
118
+ }
119
+ }));
120
+ };
121
+ const handleReload = () => {
122
+ window.location.reload();
123
+ };
124
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(DeprecatedFormInput, {
125
+ label: t("settings show experimental label")
126
+ }, /* @__PURE__ */ React2.createElement(Input2.Switch, {
127
+ "data-testid": "pluginSettings.experimental",
128
+ checked: settings.experimental,
129
+ onCheckedChange: (checked) => settings.experimental = !!checked
130
+ })), /* @__PURE__ */ React2.createElement(Section, {
131
+ label: t("settings section installed label")
132
+ }, /* @__PURE__ */ React2.createElement(PluginList, {
133
+ plugins: installed,
134
+ installed: pluginIds,
135
+ enabled: manager.enabled,
136
+ onChange: handleChange,
137
+ onReload: handleReload
138
+ })), /* @__PURE__ */ React2.createElement(Section, {
139
+ label: t("settings section recommended label")
140
+ }, /* @__PURE__ */ React2.createElement(PluginList, {
141
+ plugins: recommended,
142
+ installed: pluginIds,
143
+ enabled: manager.enabled,
144
+ onChange: handleChange,
145
+ onReload: handleReload
146
+ })), settings.experimental && /* @__PURE__ */ React2.createElement(Section, {
147
+ label: t("settings section experimental label")
148
+ }, /* @__PURE__ */ React2.createElement(PluginList, {
149
+ plugins: experimental,
150
+ installed: pluginIds,
151
+ enabled: manager.enabled,
152
+ onChange: handleChange,
153
+ onReload: handleReload
154
+ })));
155
+ };
156
+ var Section = ({ label, children }) => {
157
+ return /* @__PURE__ */ React2.createElement("div", null, /* @__PURE__ */ React2.createElement("h2", {
158
+ className: "py-2 text-sm text-subdued"
159
+ }, label), children);
160
+ };
161
+
162
+ // packages/plugins/plugin-registry/src/capabilities/react-surface.tsx
163
+ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
164
+ createSurface({
165
+ id: meta.id,
166
+ role: "settings",
167
+ filter: (data) => data.subject === REGISTRY_PLUGIN,
168
+ component: () => {
169
+ const settings = useCapability(Capabilities.SettingsStore).getStore(REGISTRY_PLUGIN).value;
170
+ return /* @__PURE__ */ React3.createElement(PluginSettings, {
171
+ settings
172
+ });
173
+ }
174
+ })
175
+ ]);
176
+ export {
177
+ react_surface_default as default
178
+ };
179
+ //# sourceMappingURL=react-surface-HKWZP7OW.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/PluginList.tsx", "../../../src/components/PluginSettings.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface, useCapability } from '@dxos/app-framework';\n\nimport { PluginSettings } from '../components';\nimport { meta, REGISTRY_PLUGIN } from '../meta';\nimport { type RegistrySettings } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: meta.id,\n role: 'settings',\n filter: (data): data is any => data.subject === REGISTRY_PLUGIN,\n component: () => {\n const settings = useCapability(Capabilities.SettingsStore).getStore<RegistrySettings>(REGISTRY_PLUGIN)!.value;\n return <PluginSettings settings={settings} />;\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?: readonly PluginMeta[];\n installed?: readonly string[];\n enabled?: readonly string[];\n onChange?: (id: string, enabled: boolean) => void;\n onReload?: () => void;\n};\n\nexport const PluginList = ({ plugins = [], installed = [], 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 isInstalled = installed.includes(id);\n const reloadRequired = isEnabled !== isInstalled;\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, usePluginManager } 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 { REGISTRY_PLUGIN } from '../meta';\nimport { type RegistrySettings } from '../types';\n\nconst sortPluginMeta = ({ name: a = '' }: PluginMeta, { name: b = '' }: PluginMeta) => a.localeCompare(b);\n\nexport const PluginSettings = ({ settings }: { settings: RegistrySettings }) => {\n const { t } = useTranslation(REGISTRY_PLUGIN);\n const manager = usePluginManager();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n // Memoize to prevent plugins from disappearing when toggling enabled.\n const installed = useMemo(\n () =>\n manager.plugins\n .filter(({ meta }) => !manager.core.includes(meta.id))\n .filter(({ meta }) => manager.enabled.includes(meta.id))\n .map(({ meta }) => meta)\n .sort(sortPluginMeta),\n [],\n );\n const pluginIds = useMemo(() => installed.map((meta) => meta.id), [installed]);\n\n const available = useMemo(\n () =>\n manager.plugins\n .map(({ meta }) => meta)\n .filter(({ id }) => !manager.enabled.includes(id))\n .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 enabled ? manager.enable(id) : manager.disable(id);\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 installed={pluginIds}\n enabled={manager.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 installed={pluginIds}\n enabled={manager.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 installed={pluginIds}\n enabled={manager.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"],
5
+ "mappings": "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",
6
+ "names": ["React", "Capabilities", "contributes", "createSurface", "useCapability", "React", "useCallback", "Button", "Icon", "Input", "Link", "List", "ListItem", "useTranslation", "descriptionText", "fineBlockSize", "mx", "PluginList", "plugins", "installed", "enabled", "onChange", "onReload", "t", "useTranslation", "REGISTRY_PLUGIN", "List", "classNames", "map", "id", "name", "description", "homePage", "source", "icon", "isEnabled", "includes", "isInstalled", "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", "usePluginManager", "ObservabilityAction", "Input", "useTranslation", "DeprecatedFormInput", "sortPluginMeta", "name", "a", "b", "localeCompare", "PluginSettings", "settings", "t", "useTranslation", "REGISTRY_PLUGIN", "manager", "usePluginManager", "dispatchPromise", "dispatch", "useIntentDispatcher", "installed", "useMemo", "plugins", "filter", "meta", "core", "includes", "id", "enabled", "map", "sort", "pluginIds", "available", "recommended", "tags", "experimental", "handleChange", "enable", "disable", "createIntent", "ObservabilityAction", "SendEvent", "properties", "plugin", "handleReload", "window", "location", "reload", "React", "DeprecatedFormInput", "label", "Input", "Switch", "data-testid", "checked", "onCheckedChange", "Section", "PluginList", "onChange", "onReload", "children", "div", "h2", "className", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "meta", "role", "filter", "data", "subject", "REGISTRY_PLUGIN", "component", "settings", "useCapability", "SettingsStore", "getStore", "value", "React", "PluginSettings"]
7
+ }
@@ -0,0 +1,27 @@
1
+ import {
2
+ REGISTRY_PLUGIN
3
+ } from "./chunk-CMDU7LPH.mjs";
4
+
5
+ // packages/plugins/plugin-registry/src/capabilities/settings.ts
6
+ import { Capabilities, contributes } from "@dxos/app-framework";
7
+ import { create } from "@dxos/live-object";
8
+
9
+ // packages/plugins/plugin-registry/src/types.ts
10
+ import { S } from "@dxos/echo-schema";
11
+ var RegistrySettingsSchema = S.mutable(S.Struct({
12
+ experimental: S.optional(S.Boolean)
13
+ }));
14
+
15
+ // packages/plugins/plugin-registry/src/capabilities/settings.ts
16
+ var settings_default = () => {
17
+ const settings = create({});
18
+ return contributes(Capabilities.Settings, {
19
+ schema: RegistrySettingsSchema,
20
+ prefix: REGISTRY_PLUGIN,
21
+ value: settings
22
+ });
23
+ };
24
+ export {
25
+ settings_default as default
26
+ };
27
+ //# sourceMappingURL=settings-7LOHS2IV.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/settings.ts", "../../../src/types.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { create } from '@dxos/live-object';\n\nimport { REGISTRY_PLUGIN } from '../meta';\nimport { type RegistrySettings, RegistrySettingsSchema } from '../types';\n\nexport default () => {\n const settings = create<RegistrySettings>({});\n\n return contributes(Capabilities.Settings, {\n schema: RegistrySettingsSchema,\n prefix: REGISTRY_PLUGIN,\n value: settings,\n });\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { S } from '@dxos/echo-schema';\n\nexport const RegistrySettingsSchema = S.mutable(\n S.Struct({\n experimental: S.optional(S.Boolean),\n }),\n);\n\nexport type RegistrySettings = S.Schema.Type<typeof RegistrySettingsSchema>;\n"],
5
+ "mappings": ";;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,cAAc;;;ACDvB,SAASC,SAAS;AAEX,IAAMC,yBAAyBC,EAAEC,QACtCD,EAAEE,OAAO;EACPC,cAAcH,EAAEI,SAASJ,EAAEK,OAAO;AACpC,CAAA,CAAA;;;ADCF,IAAA,mBAAe,MAAA;AACb,QAAMC,WAAWC,OAAyB,CAAC,CAAA;AAE3C,SAAOC,YAAYC,aAAaC,UAAU;IACxCC,QAAQC;IACRC,QAAQC;IACRC,OAAOT;EACT,CAAA;AACF;",
6
+ "names": ["Capabilities", "contributes", "create", "S", "RegistrySettingsSchema", "S", "mutable", "Struct", "experimental", "optional", "Boolean", "settings", "create", "contributes", "Capabilities", "Settings", "schema", "RegistrySettingsSchema", "prefix", "REGISTRY_PLUGIN", "value"]
7
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryPlugin.d.ts","sourceRoot":"","sources":["../../../src/RegistryPlugin.tsx"],"names":[],"mappings":"AAUA,eAAO,MAAM,cAAc,4CAsBvB,CAAC"}
1
+ {"version":3,"file":"RegistryPlugin.d.ts","sourceRoot":"","sources":["../../../src/RegistryPlugin.tsx"],"names":[],"mappings":"AAUA,eAAO,MAAM,cAAc,4CAiBvB,CAAC"}