UNPKG

mirador

Version:

An open-source, web-based 'multi-up' viewer that supports zoom-pan-rotate functionality, ability to display/compare simple images, and images with annotations.

45 lines (38 loc) 1.3 kB
import update from 'lodash/update'; import { connect } from 'react-redux'; import CompanionWindowRegistry from '../lib/CompanionWindowRegistry'; /** * Returns a mapping from targets to plugins and modes * * @param {Array} plugins * @return {Object} - looks like: * * { * 'WorkspacePanel': { * wrap: [plugin3, ...], * add: [plugin4, ...], * }, * ... * } */ export function createTargetToPluginMapping(plugins) { return plugins.reduce((map, plugin) => update(map, [plugin.target, plugin.mode], (x) => [...(x || []), plugin]), {}); } /** */ export function connectPluginsToStore(plugins) { return plugins.map((plugin) => ({ ...plugin, component: connectPluginComponent(plugin) })); } /** */ export function addPluginsToCompanionWindowsRegistry(plugins) { plugins .filter((p) => p.companionWindowKey) .forEach((plugin) => { CompanionWindowRegistry[plugin.companionWindowKey] = plugin.component; }); return CompanionWindowRegistry; } /** Connect plugin component to state */ function connectPluginComponent(plugin) { if (!plugin.mapStateToProps && !plugin.mapDispatchToProps) return plugin.component; return connect(plugin.mapStateToProps, plugin.mapDispatchToProps, ...(plugin.connectOptions || []))(plugin.component); }