🔌 @datalayer/reactor-manager
列出 a 中的每个插件 @datalayer/reactor 平台和开关
应用程序运行时关闭.
为什么是插件
管理插件的侧边栏是整个工作是插件的表面 系统本身。 每个主持人都自己写过,这意味着 每一个主机都回答同样的问题 有点不同,每个都 硬编码的 任何其它属于列表之外.
此一个依赖于没有其它插件, 并不知道它们的名字 。 写着 每个插件已经拥有的通过反应堆 API 的平台,即 为什么它可以列出很久后写的插件 .
它画的是什么
- 一个跨越名称、标识符和描述的过滤器.
- 每个插件一行:emoji,显示名,描述.
- 每行开关
reactor.enable编号 :reactor.disable。 。 。 .switchSize(单位:千美元)'small'默认,或'medium')设定其大小. - 任何其它插件贡献
manager-actions,位于列表之上.
用这个
import { buildReactorFromPlugins, configurePlugin } from '@datalayer/reactor';
import { ReactorSlot, useReactor } from '@datalayer/reactor/react';
import { PluginsManagerPlugin } from '@datalayer/reactor-manager';
const reactor = buildReactorFromPlugins([
configurePlugin(PluginsManagerPlugin, {
// Anything the application would break without. The manager protects
// itself by default; naming your own replaces that, so include it unless
// you mean to allow switching the sidebar off.
protected: ['@datalayer/reactor-manager', '@your/shell'],
}),
/* your own */
]);
export function App() {
useReactor(reactor);
// Whatever you pass reaches the plugins contributing to `manager-actions`.
return <ReactorSlot slot="sidebar" props={{ showingGraph, onToggleGraph }} />;
}
隐藏执行细节
薄适配器和它所依赖的通用插件是其中的一个特性
阅读侧边栏的人, 一个特性的两个开关是一个问题
无法回答. hidden (配置)或 hiddenPlugins (道克)留一出:
configurePlugin(PluginsManagerPlugin, {
hidden: ['@datalayer/reactor-graph'], // the adapter is the switch that matters
});
一个宿主的决定 而不是从依赖图推断出来的 A 类 依赖性常常值得自己切换——音乐实例要求您切换 因此,隐藏他们中的每一个人都会消除这一点.
插件管理器找不到
这个浏览器中的反应堆并不总是整个系统. 应用程序与 电线另一边的插件有第二套要管理,一个人 不应该因为插件运行的缘故而学习两个控件.
插件贡献 a 来源: 构成其
拥有行 PluginList ——经理使用的同一种——并保留任意一种
找寻它的层次需要自己.
contribution(ManagerPluginSource, {
title: 'Backend plugins (Python)',
order: 100, // after the browser's own, which are 0
Component: BackendPluginSource,
});
function BackendPluginSource({ query, switchSize }: PluginSourceProps) {
const { plugins, toggle } = useBackendPlugins();
return (
<PluginList
plugins={plugins.map(toManagedPlugin)}
query={query}
switchSize={switchSize}
onToggle={(name, next) => void toggle(name, next)}
/>
);
}
一个组件而不是一个清单,因为否则管理员会打电话 别人的钩子——它不能有条件的做, 和一组来源 随着插件的切换而改变.
行动时段
需要侧边栏中控件的插件帮助
MANAGER_ACTIONS_SLOT 而不是要求主机绘制一个:
build: () => ({
components: [
{ slot: MANAGER_ACTIONS_SLOT, id: 'my-toggle', Component: MyToggle },
],
}),
它接收主机给经理的道具,不变. 经理没有 想想你的控制需要什么来导航, 没有商业发明 一种——但控件随着拥有它的插件而出现并消失, 这就是重点.
直接挂起视图
一个更愿意把名单本身放进 PluginsManagerView
通过 protectedPlugins,跳过插件及其配置.