@dxos/plugin-registry 0.6.12-staging.e11e696 → 0.6.13-main.548ca8d
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.
- package/dist/lib/browser/{chunk-2FC6QNHB.mjs → chunk-NEMFDAOB.mjs} +1 -1
- package/dist/lib/browser/chunk-NEMFDAOB.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +10 -17
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/meta.mjs +1 -1
- package/dist/types/src/components/PluginList.d.ts +2 -2
- package/dist/types/src/components/PluginList.d.ts.map +1 -1
- package/dist/types/src/components/PluginSettings.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/components/PluginList.stories.tsx +2 -2
- package/src/components/PluginList.tsx +4 -25
- package/src/components/PluginSettings.tsx +9 -8
- package/src/meta.ts +3 -1
- package/dist/lib/browser/chunk-2FC6QNHB.mjs.map +0 -7
|
@@ -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 default {\n id: REGISTRY_PLUGIN,\n name: 'Plugins',\n} satisfies PluginMeta;\n"],
|
|
5
|
+
"mappings": ";AAMO,IAAMA,kBAAkB;AAE/B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;AACR;",
|
|
6
|
+
"names": ["REGISTRY_PLUGIN", "id", "name"]
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
REGISTRY_PLUGIN,
|
|
3
3
|
meta_default
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-NEMFDAOB.mjs";
|
|
5
5
|
|
|
6
6
|
// packages/plugins/plugin-registry/src/RegistryPlugin.tsx
|
|
7
7
|
import React3 from "react";
|
|
@@ -9,15 +9,7 @@ import { LocalStorageStore } from "@dxos/local-storage";
|
|
|
9
9
|
|
|
10
10
|
// packages/plugins/plugin-registry/src/components/PluginList.tsx
|
|
11
11
|
import React from "react";
|
|
12
|
-
import {
|
|
13
|
-
Button,
|
|
14
|
-
DensityProvider,
|
|
15
|
-
Icon,
|
|
16
|
-
Input,
|
|
17
|
-
List,
|
|
18
|
-
ListItem,
|
|
19
|
-
useTranslation
|
|
20
|
-
} from "@dxos/react-ui";
|
|
12
|
+
import { Button, DensityProvider, Icon, Input, List, ListItem, useTranslation } from "@dxos/react-ui";
|
|
21
13
|
import { descriptionText, fineBlockSize, ghostHover, mx } from "@dxos/react-ui-theme";
|
|
22
14
|
var PluginList = ({ plugins = [], loaded = [], enabled = [], onChange, onReload }) => {
|
|
23
15
|
const { t } = useTranslation(REGISTRY_PLUGIN);
|
|
@@ -72,7 +64,7 @@ var PluginList = ({ plugins = [], loaded = [], enabled = [], onChange, onReload
|
|
|
72
64
|
className: "pbs-1"
|
|
73
65
|
}, /* @__PURE__ */ React.createElement(Input.Switch, {
|
|
74
66
|
classNames: "self-center",
|
|
75
|
-
checked:
|
|
67
|
+
checked: isEnabled,
|
|
76
68
|
onClick: () => onChange?.(id, !isEnabled)
|
|
77
69
|
}))));
|
|
78
70
|
})));
|
|
@@ -84,12 +76,13 @@ import { useIntentDispatcher, usePlugins } from "@dxos/app-framework";
|
|
|
84
76
|
import { ObservabilityAction } from "@dxos/plugin-observability/meta";
|
|
85
77
|
import { SettingsValue } from "@dxos/plugin-settings";
|
|
86
78
|
import { Input as Input2, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
79
|
+
var sort = ({ name: a = "" }, { name: b = "" }) => a.localeCompare(b);
|
|
87
80
|
var PluginSettings = ({ settings }) => {
|
|
88
81
|
const { t } = useTranslation2(REGISTRY_PLUGIN);
|
|
89
|
-
const { enabled, core,
|
|
82
|
+
const { plugins, enabled, core, setPlugin, ...pluginContext } = usePlugins();
|
|
90
83
|
const dispatch = useIntentDispatcher();
|
|
91
|
-
const sort = (a, b) => a.name?.localeCompare(b.name ?? "") ?? 0;
|
|
92
84
|
const installed = useMemo(() => plugins.filter(({ meta }) => !core.includes(meta.id)).filter(({ meta }) => enabled.includes(meta.id)).map(({ meta }) => meta).sort(sort), []);
|
|
85
|
+
const pluginIds = plugins.map(({ meta }) => meta.id);
|
|
93
86
|
const available = useMemo(() => pluginContext.available.filter(({ id }) => !enabled.includes(id)).sort(sort), []);
|
|
94
87
|
const recommended = available.filter((meta) => !meta.tags?.includes("experimental"));
|
|
95
88
|
const experimental = available.filter((meta) => meta.tags?.includes("experimental"));
|
|
@@ -119,7 +112,7 @@ var PluginSettings = ({ settings }) => {
|
|
|
119
112
|
label: t("settings section installed label")
|
|
120
113
|
}, /* @__PURE__ */ React2.createElement(PluginList, {
|
|
121
114
|
plugins: installed,
|
|
122
|
-
loaded:
|
|
115
|
+
loaded: pluginIds,
|
|
123
116
|
enabled,
|
|
124
117
|
onChange: handleChange,
|
|
125
118
|
onReload: handleReload
|
|
@@ -127,7 +120,7 @@ var PluginSettings = ({ settings }) => {
|
|
|
127
120
|
label: t("settings section recommended label")
|
|
128
121
|
}, /* @__PURE__ */ React2.createElement(PluginList, {
|
|
129
122
|
plugins: recommended,
|
|
130
|
-
loaded:
|
|
123
|
+
loaded: pluginIds,
|
|
131
124
|
enabled,
|
|
132
125
|
onChange: handleChange,
|
|
133
126
|
onReload: handleReload
|
|
@@ -135,7 +128,7 @@ var PluginSettings = ({ settings }) => {
|
|
|
135
128
|
label: t("settings section experimental label")
|
|
136
129
|
}, /* @__PURE__ */ React2.createElement(PluginList, {
|
|
137
130
|
plugins: experimental,
|
|
138
|
-
loaded:
|
|
131
|
+
loaded: pluginIds,
|
|
139
132
|
enabled,
|
|
140
133
|
onChange: handleChange,
|
|
141
134
|
onReload: handleReload
|
|
@@ -143,7 +136,7 @@ var PluginSettings = ({ settings }) => {
|
|
|
143
136
|
};
|
|
144
137
|
var Section = ({ label, children }) => {
|
|
145
138
|
return /* @__PURE__ */ React2.createElement("div", null, /* @__PURE__ */ React2.createElement("h2", {
|
|
146
|
-
className: "py-2 text-sm text-
|
|
139
|
+
className: "py-2 text-sm text-subdued"
|
|
147
140
|
}, label), children);
|
|
148
141
|
};
|
|
149
142
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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 type { PluginDefinition, SettingsProvides, SurfaceProvides, TranslationsProvides } 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 component: ({ data, role }) => {\n switch (role) {\n case 'settings':\n return data.plugin === meta.id ? <PluginSettings settings={settings.values} /> : null;\n }\n\n return null;\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport type
|
|
5
|
-
"mappings": ";;;;;;AAIA,OAAOA,YAAW;AAGlB,SAASC,yBAAyB;;;ACHlC,OAAOC,WAAW;AAGlB;
|
|
6
|
-
"names": ["React", "LocalStorageStore", "React", "Button", "DensityProvider", "Icon", "Input", "List", "ListItem", "useTranslation", "descriptionText", "fineBlockSize", "ghostHover", "mx", "PluginList", "plugins", "loaded", "enabled", "onChange", "onReload", "t", "useTranslation", "REGISTRY_PLUGIN", "DensityProvider", "density", "List", "classNames", "map", "id", "name", "description", "homePage", "icon", "isEnabled", "includes", "isLoaded", "reloadRequired", "inputId", "labelId", "descriptionId", "Input", "Root", "key", "ListItem", "data-testid", "aria-describedby", "ghostHover", "Icon", "size", "div", "role", "className", "mx", "fineBlockSize", "label", "htmlFor", "p", "descriptionText", "Button", "variant", "onClick", "Switch", "checked", "React", "useMemo", "useIntentDispatcher", "usePlugins", "ObservabilityAction", "SettingsValue", "Input", "useTranslation", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport type { PluginDefinition, SettingsProvides, SurfaceProvides, TranslationsProvides } 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 component: ({ data, role }) => {\n switch (role) {\n case 'settings':\n return data.plugin === meta.id ? <PluginSettings settings={settings.values} /> : null;\n }\n\n return null;\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type PluginMeta } from '@dxos/app-framework';\nimport { Button, DensityProvider, Icon, Input, List, ListItem, useTranslation } from '@dxos/react-ui';\nimport { descriptionText, fineBlockSize, ghostHover, 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 <DensityProvider density='fine'>\n <List classNames='mb-4 select-none'>\n {plugins.map(({ id, name, description, homePage, 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\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 cursor-pointer plb-2 pli-2 -mli-2 rounded', ghostHover]}\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) && (\n <div id={descriptionId} className='space-b-1 pbs-1 pbe-1'>\n <p className={descriptionText}>{description}</p>\n {/* TODO(wittjosiah): Include once plugin docs are available. */}\n {/* {homePage && (\n <Link\n href={homePage}\n target='_blank'\n rel='noreferrer'\n aria-describedby={descriptionId}\n classNames='text-xs'\n >\n {t('home page label')}\n <ArrowSquareOut weight='bold' className={mx(getSize(3), 'inline-block leading-none mli-1')} />\n </Link>\n )} */}\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 </div>\n )}\n </div>\n <div className='pbs-1'>\n <Input.Switch\n classNames='self-center'\n checked={isEnabled}\n onClick={() => onChange?.(id, !isEnabled)}\n />\n </div>\n </ListItem.Root>\n </Input.Root>\n );\n })}\n </List>\n </DensityProvider>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useMemo, type PropsWithChildren } from 'react';\n\nimport { type PluginMeta, useIntentDispatcher, usePlugins } from '@dxos/app-framework';\nimport { ObservabilityAction } from '@dxos/plugin-observability/meta';\nimport { SettingsValue } from '@dxos/plugin-settings';\nimport { Input, useTranslation } from '@dxos/react-ui';\n\nimport { PluginList } from './PluginList';\nimport { type RegistrySettingsProps } from '../RegistryPlugin';\nimport { REGISTRY_PLUGIN } from '../meta';\n\nconst sort = ({ 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 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(sort),\n [],\n );\n\n const pluginIds = plugins.map(({ meta }) => meta.id);\n const available = useMemo(() => pluginContext.available.filter(({ id }) => !enabled.includes(id)).sort(sort), []);\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 action: ObservabilityAction.SEND_EVENT,\n data: {\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 <SettingsValue 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 </SettingsValue>\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 },\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": "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",
|
|
6
|
+
"names": ["React", "LocalStorageStore", "React", "Button", "DensityProvider", "Icon", "Input", "List", "ListItem", "useTranslation", "descriptionText", "fineBlockSize", "ghostHover", "mx", "PluginList", "plugins", "loaded", "enabled", "onChange", "onReload", "t", "useTranslation", "REGISTRY_PLUGIN", "DensityProvider", "density", "List", "classNames", "map", "id", "name", "description", "homePage", "icon", "isEnabled", "includes", "isLoaded", "reloadRequired", "inputId", "labelId", "descriptionId", "Input", "Root", "key", "ListItem", "data-testid", "aria-describedby", "ghostHover", "Icon", "size", "div", "role", "className", "mx", "fineBlockSize", "label", "htmlFor", "p", "descriptionText", "Button", "variant", "onClick", "Switch", "checked", "React", "useMemo", "useIntentDispatcher", "usePlugins", "ObservabilityAction", "SettingsValue", "Input", "useTranslation", "sort", "name", "a", "b", "localeCompare", "PluginSettings", "settings", "t", "useTranslation", "REGISTRY_PLUGIN", "plugins", "enabled", "core", "setPlugin", "pluginContext", "usePlugins", "dispatch", "useIntentDispatcher", "installed", "useMemo", "filter", "meta", "includes", "id", "map", "pluginIds", "available", "recommended", "tags", "experimental", "handleChange", "action", "ObservabilityAction", "SEND_EVENT", "data", "properties", "plugin", "handleReload", "window", "location", "reload", "React", "SettingsValue", "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", "component", "data", "role", "plugin", "id", "React", "PluginSettings", "RegistryPlugin"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytes":959,"imports":[],"format":"esm"},"packages/plugins/plugin-registry/src/components/PluginList.tsx":{"bytes":10712,"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":11763,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/meta","kind":"import-statement","external":true},{"path":"@dxos/plugin-settings","kind":"import-statement","external":true},{"path":"@dxos/react-ui","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/translations.ts":{"bytes":2036,"imports":[{"path":"packages/plugins/plugin-registry/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-registry/src/RegistryPlugin.tsx":{"bytes":4337,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/local-storage","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"},{"path":"packages/plugins/plugin-registry/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/plugins/plugin-registry/src/index.ts":{"bytes":804,"imports":[{"path":"packages/plugins/plugin-registry/src/RegistryPlugin.tsx","kind":"import-statement","original":"./RegistryPlugin"},{"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":15206},"packages/plugins/plugin-registry/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-NEMFDAOB.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/local-storage","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/meta","kind":"import-statement","external":true},{"path":"@dxos/plugin-settings","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["RegistryPlugin","default"],"entryPoint":"packages/plugins/plugin-registry/src/index.ts","inputs":{"packages/plugins/plugin-registry/src/RegistryPlugin.tsx":{"bytesInOutput":830},"packages/plugins/plugin-registry/src/components/PluginList.tsx":{"bytesInOutput":2516},"packages/plugins/plugin-registry/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-registry/src/components/PluginSettings.tsx":{"bytesInOutput":2957},"packages/plugins/plugin-registry/src/translations.ts":{"bytesInOutput":479},"packages/plugins/plugin-registry/src/index.ts":{"bytesInOutput":34}},"bytes":7345},"packages/plugins/plugin-registry/dist/lib/browser/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-registry/dist/lib/browser/meta.mjs":{"imports":[{"path":"packages/plugins/plugin-registry/dist/lib/browser/chunk-NEMFDAOB.mjs","kind":"import-statement"}],"exports":["REGISTRY_PLUGIN","default"],"entryPoint":"packages/plugins/plugin-registry/src/meta.ts","inputs":{},"bytes":165},"packages/plugins/plugin-registry/dist/lib/browser/chunk-NEMFDAOB.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":456},"packages/plugins/plugin-registry/dist/lib/browser/chunk-NEMFDAOB.mjs":{"imports":[],"exports":["REGISTRY_PLUGIN","meta_default"],"inputs":{"packages/plugins/plugin-registry/src/meta.ts":{"bytesInOutput":115}},"bytes":254}}}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type
|
|
2
|
+
import { type PluginMeta } from '@dxos/app-framework';
|
|
3
3
|
export type PluginListProps = {
|
|
4
|
-
plugins?:
|
|
4
|
+
plugins?: PluginMeta[];
|
|
5
5
|
loaded?: string[];
|
|
6
6
|
enabled?: string[];
|
|
7
7
|
onChange?: (id: string, enabled: boolean) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginList.d.ts","sourceRoot":"","sources":["../../../../src/components/PluginList.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"PluginList.d.ts","sourceRoot":"","sources":["../../../../src/components/PluginList.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,UAAU,qDAAqE,eAAe,sBAkE1G,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/PluginSettings.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAQ/D,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"PluginSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/PluginSettings.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAQ/D,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAK/D,eAAO,MAAM,cAAc,iBAAkB;IAAE,QAAQ,EAAE,qBAAqB,CAAA;CAAE,sBA+E/E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe,6BAA6B,CAAC;;;;;AAE1D,wBAGuB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-registry",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.13-main.548ca8d",
|
|
4
4
|
"description": "Braneframe plugin gallery",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
"src"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@dxos/app-framework": "0.6.
|
|
33
|
-
"@dxos/
|
|
34
|
-
"@dxos/local-storage": "0.6.
|
|
35
|
-
"@dxos/plugin-observability": "0.6.
|
|
36
|
-
"@dxos/
|
|
32
|
+
"@dxos/app-framework": "0.6.13-main.548ca8d",
|
|
33
|
+
"@dxos/plugin-settings": "0.6.13-main.548ca8d",
|
|
34
|
+
"@dxos/local-storage": "0.6.13-main.548ca8d",
|
|
35
|
+
"@dxos/plugin-observability": "0.6.13-main.548ca8d",
|
|
36
|
+
"@dxos/util": "0.6.13-main.548ca8d"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@phosphor-icons/react": "^2.1.5",
|
|
@@ -42,19 +42,19 @@
|
|
|
42
42
|
"react": "~18.2.0",
|
|
43
43
|
"react-dom": "~18.2.0",
|
|
44
44
|
"vite": "5.4.7",
|
|
45
|
-
"@dxos/random": "0.6.
|
|
46
|
-
"@dxos/react-ui-mosaic": "0.6.
|
|
47
|
-
"@dxos/react-ui": "0.6.
|
|
48
|
-
"@dxos/react-ui
|
|
49
|
-
"@dxos/storybook-utils": "0.6.
|
|
45
|
+
"@dxos/random": "0.6.13-main.548ca8d",
|
|
46
|
+
"@dxos/react-ui-mosaic": "0.6.13-main.548ca8d",
|
|
47
|
+
"@dxos/react-ui-theme": "0.6.13-main.548ca8d",
|
|
48
|
+
"@dxos/react-ui": "0.6.13-main.548ca8d",
|
|
49
|
+
"@dxos/storybook-utils": "0.6.13-main.548ca8d"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"@phosphor-icons/react": "^2.1.5",
|
|
53
53
|
"react": "~18.2.0",
|
|
54
54
|
"react-dom": "~18.2.0",
|
|
55
|
-
"@dxos/react-ui
|
|
56
|
-
"@dxos/react-ui-
|
|
57
|
-
"@dxos/react-ui": "0.6.
|
|
55
|
+
"@dxos/react-ui": "0.6.13-main.548ca8d",
|
|
56
|
+
"@dxos/react-ui-theme": "0.6.13-main.548ca8d",
|
|
57
|
+
"@dxos/react-ui-mosaic": "0.6.13-main.548ca8d"
|
|
58
58
|
},
|
|
59
59
|
"publishConfig": {
|
|
60
60
|
"access": "public"
|
|
@@ -6,7 +6,7 @@ import '@dxos-theme';
|
|
|
6
6
|
|
|
7
7
|
import React, { useState } from 'react';
|
|
8
8
|
|
|
9
|
-
import type
|
|
9
|
+
import { type PluginMeta } from '@dxos/app-framework';
|
|
10
10
|
import { faker } from '@dxos/random';
|
|
11
11
|
import { withTheme } from '@dxos/storybook-utils';
|
|
12
12
|
|
|
@@ -24,7 +24,7 @@ const icons = [
|
|
|
24
24
|
];
|
|
25
25
|
|
|
26
26
|
const Story = () => {
|
|
27
|
-
const [plugins] = useState<
|
|
27
|
+
const [plugins] = useState<PluginMeta[]>(
|
|
28
28
|
faker.helpers.multiple(
|
|
29
29
|
() => ({
|
|
30
30
|
id: `dxos.org/plugin/plugin-${faker.string.uuid()}`,
|
|
@@ -4,35 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
import React from 'react';
|
|
6
6
|
|
|
7
|
-
import type
|
|
8
|
-
import {
|
|
9
|
-
Button,
|
|
10
|
-
// type ChromaticPalette,
|
|
11
|
-
// type NeutralPalette,
|
|
12
|
-
DensityProvider,
|
|
13
|
-
Icon,
|
|
14
|
-
Input,
|
|
15
|
-
List,
|
|
16
|
-
ListItem,
|
|
17
|
-
useTranslation,
|
|
18
|
-
// Link,
|
|
19
|
-
} from '@dxos/react-ui';
|
|
7
|
+
import { type PluginMeta } from '@dxos/app-framework';
|
|
8
|
+
import { Button, DensityProvider, Icon, Input, List, ListItem, useTranslation } from '@dxos/react-ui';
|
|
20
9
|
import { descriptionText, fineBlockSize, ghostHover, mx } from '@dxos/react-ui-theme';
|
|
21
10
|
|
|
22
11
|
import { REGISTRY_PLUGIN } from '../meta';
|
|
23
12
|
|
|
24
|
-
// TODO(burdon): Reconcile with theme.
|
|
25
|
-
// const palette: { [tag: string]: ChromaticPalette | NeutralPalette } = {
|
|
26
|
-
// default: 'neutral',
|
|
27
|
-
// new: 'green',
|
|
28
|
-
// beta: 'cyan',
|
|
29
|
-
// alpha: 'purple',
|
|
30
|
-
// experimental: 'indigo',
|
|
31
|
-
// 新発売: 'red',
|
|
32
|
-
// };
|
|
33
|
-
|
|
34
13
|
export type PluginListProps = {
|
|
35
|
-
plugins?:
|
|
14
|
+
plugins?: PluginMeta[];
|
|
36
15
|
loaded?: string[];
|
|
37
16
|
enabled?: string[];
|
|
38
17
|
onChange?: (id: string, enabled: boolean) => void;
|
|
@@ -94,7 +73,7 @@ export const PluginList = ({ plugins = [], loaded = [], enabled = [], onChange,
|
|
|
94
73
|
<div className='pbs-1'>
|
|
95
74
|
<Input.Switch
|
|
96
75
|
classNames='self-center'
|
|
97
|
-
checked={
|
|
76
|
+
checked={isEnabled}
|
|
98
77
|
onClick={() => onChange?.(id, !isEnabled)}
|
|
99
78
|
/>
|
|
100
79
|
</div>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { useMemo, type PropsWithChildren } from 'react';
|
|
6
6
|
|
|
7
|
-
import { type
|
|
7
|
+
import { type PluginMeta, useIntentDispatcher, usePlugins } from '@dxos/app-framework';
|
|
8
8
|
import { ObservabilityAction } from '@dxos/plugin-observability/meta';
|
|
9
9
|
import { SettingsValue } from '@dxos/plugin-settings';
|
|
10
10
|
import { Input, useTranslation } from '@dxos/react-ui';
|
|
@@ -13,13 +13,13 @@ import { PluginList } from './PluginList';
|
|
|
13
13
|
import { type RegistrySettingsProps } from '../RegistryPlugin';
|
|
14
14
|
import { REGISTRY_PLUGIN } from '../meta';
|
|
15
15
|
|
|
16
|
+
const sort = ({ name: a = '' }: PluginMeta, { name: b = '' }: PluginMeta) => a.localeCompare(b);
|
|
17
|
+
|
|
16
18
|
export const PluginSettings = ({ settings }: { settings: RegistrySettingsProps }) => {
|
|
17
19
|
const { t } = useTranslation(REGISTRY_PLUGIN);
|
|
18
|
-
const { enabled, core,
|
|
20
|
+
const { plugins, enabled, core, setPlugin, ...pluginContext } = usePlugins();
|
|
19
21
|
const dispatch = useIntentDispatcher();
|
|
20
22
|
|
|
21
|
-
const sort = (a: Plugin['meta'], b: Plugin['meta']) => a.name?.localeCompare(b.name ?? '') ?? 0;
|
|
22
|
-
|
|
23
23
|
// Memoize to prevent plugins from disappearing when toggling enabled.
|
|
24
24
|
const installed = useMemo(
|
|
25
25
|
() =>
|
|
@@ -31,6 +31,7 @@ export const PluginSettings = ({ settings }: { settings: RegistrySettingsProps }
|
|
|
31
31
|
[],
|
|
32
32
|
);
|
|
33
33
|
|
|
34
|
+
const pluginIds = plugins.map(({ meta }) => meta.id);
|
|
34
35
|
const available = useMemo(() => pluginContext.available.filter(({ id }) => !enabled.includes(id)).sort(sort), []);
|
|
35
36
|
const recommended = available.filter((meta) => !meta.tags?.includes('experimental'));
|
|
36
37
|
const experimental = available.filter((meta) => meta.tags?.includes('experimental'));
|
|
@@ -63,7 +64,7 @@ export const PluginSettings = ({ settings }: { settings: RegistrySettingsProps }
|
|
|
63
64
|
<Section label={t('settings section installed label')}>
|
|
64
65
|
<PluginList
|
|
65
66
|
plugins={installed}
|
|
66
|
-
loaded={
|
|
67
|
+
loaded={pluginIds}
|
|
67
68
|
enabled={enabled}
|
|
68
69
|
onChange={handleChange}
|
|
69
70
|
onReload={handleReload}
|
|
@@ -73,7 +74,7 @@ export const PluginSettings = ({ settings }: { settings: RegistrySettingsProps }
|
|
|
73
74
|
<Section label={t('settings section recommended label')}>
|
|
74
75
|
<PluginList
|
|
75
76
|
plugins={recommended}
|
|
76
|
-
loaded={
|
|
77
|
+
loaded={pluginIds}
|
|
77
78
|
enabled={enabled}
|
|
78
79
|
onChange={handleChange}
|
|
79
80
|
onReload={handleReload}
|
|
@@ -84,7 +85,7 @@ export const PluginSettings = ({ settings }: { settings: RegistrySettingsProps }
|
|
|
84
85
|
<Section label={t('settings section experimental label')}>
|
|
85
86
|
<PluginList
|
|
86
87
|
plugins={experimental}
|
|
87
|
-
loaded={
|
|
88
|
+
loaded={pluginIds}
|
|
88
89
|
enabled={enabled}
|
|
89
90
|
onChange={handleChange}
|
|
90
91
|
onReload={handleReload}
|
|
@@ -98,7 +99,7 @@ export const PluginSettings = ({ settings }: { settings: RegistrySettingsProps }
|
|
|
98
99
|
const Section = ({ label, children }: PropsWithChildren<{ label: string }>) => {
|
|
99
100
|
return (
|
|
100
101
|
<div>
|
|
101
|
-
<h2 className='py-2 text-sm text-
|
|
102
|
+
<h2 className='py-2 text-sm text-subdued'>{label}</h2>
|
|
102
103
|
{children}
|
|
103
104
|
</div>
|
|
104
105
|
);
|
package/src/meta.ts
CHANGED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport const REGISTRY_PLUGIN = 'dxos.org/plugin/registry';\n\nexport default {\n id: REGISTRY_PLUGIN,\n name: 'Plugins',\n};\n"],
|
|
5
|
-
"mappings": ";AAIO,IAAMA,kBAAkB;AAE/B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;AACR;",
|
|
6
|
-
"names": ["REGISTRY_PLUGIN", "id", "name"]
|
|
7
|
-
}
|