本文整理汇总了TypeScript中@jupyterlab/coreutils.ISettingRegistry.transform方法的典型用法代码示例。如果您正苦于以下问题:TypeScript ISettingRegistry.transform方法的具体用法?TypeScript ISettingRegistry.transform怎么用?TypeScript ISettingRegistry.transform使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类@jupyterlab/coreutils.ISettingRegistry
的用法示例。
在下文中一共展示了ISettingRegistry.transform方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: async
activate: async (app: JupyterLab, registry: ISettingRegistry) => {
const { commands } = app;
let canonical: ISettingRegistry.ISchema;
let loaded: { [name: string]: ISettingRegistry.IShortcut[] } = {};
/**
* Populate the plugin's schema defaults.
*/
function populate(schema: ISettingRegistry.ISchema) {
loaded = {};
schema.properties.shortcuts.default = Object.keys(registry.plugins)
.map(plugin => {
let shortcuts =
registry.plugins[plugin].schema['jupyter.lab.shortcuts'] || [];
loaded[plugin] = shortcuts;
return shortcuts;
})
.reduce((acc, val) => acc.concat(val), [])
.sort((a, b) => a.command.localeCompare(b.command));
}
registry.pluginChanged.connect(async (sender, plugin) => {
if (plugin !== shortcuts.id) {
// If the plugin changed its shortcuts, reload everything.
let oldShortcuts = loaded[plugin];
let newShortcuts =
registry.plugins[plugin].schema['jupyter.lab.shortcuts'] || [];
if (
oldShortcuts === undefined ||
!JSONExt.deepEqual(oldShortcuts, newShortcuts)
) {
canonical = null;
await registry.reload(shortcuts.id);
}
}
});
// Transform the plugin object to return different schema than the default.
registry.transform(shortcuts.id, {
compose: plugin => {
// Only override the canonical schema the first time.
if (!canonical) {
canonical = JSONExt.deepCopy(plugin.schema);
populate(canonical);
}
const defaults = canonical.properties.shortcuts.default;
const user = {
shortcuts: ((plugin.data && plugin.data.user) || {}).shortcuts || []
};
const composite = {
shortcuts: SettingRegistry.reconcileShortcuts(
defaults,
user.shortcuts as ISettingRegistry.IShortcut[]
)
};
plugin.data = { composite, user };
return plugin;
},
fetch: plugin => {
// Only override the canonical schema the first time.
if (!canonical) {
canonical = JSONExt.deepCopy(plugin.schema);
populate(canonical);
}
return {
data: plugin.data,
id: plugin.id,
raw: plugin.raw,
schema: canonical,
version: plugin.version
};
}
});
try {
// Repopulate the canonical variable after the setting registry has
// preloaded all initial plugins.
canonical = null;
const settings = await registry.load(shortcuts.id);
Private.loadShortcuts(commands, settings.composite);
settings.changed.connect(() => {
Private.loadShortcuts(commands, settings.composite);
});
} catch (error) {
console.error(`Loading ${shortcuts.id} failed.`, error);
}
},