static-cms/src/lib/registry.js

48 lines
1.4 KiB
JavaScript
Raw Normal View History

import { Map } from 'immutable';
import { newEditorPlugin } from '../components/Widgets/MarkdownControl/plugins';
2016-09-11 23:08:18 +02:00
const _registry = {
templates: {},
2016-09-11 23:08:18 +02:00
previewStyles: [],
widgets: {},
editorComponents: Map(),
2017-06-22 17:35:47 -04:00
widgetValueSerializers: {},
};
2016-09-11 23:08:18 +02:00
export default {
registerPreviewStyle(style) {
_registry.previewStyles.push(style);
},
registerPreviewTemplate(name, component) {
_registry.templates[name] = component;
},
getPreviewTemplate(name) {
return _registry.templates[name];
},
getPreviewStyles() {
return _registry.previewStyles;
},
registerWidget(name, control, preview) {
// A registered widget control can be reused by a new widget, allowing
// multiple copies with different previews.
const newControl = typeof control === 'string' ? _registry.widgets[control].control : control;
_registry.widgets[name] = { control: newControl, preview };
2016-09-11 23:08:18 +02:00
},
getWidget(name) {
return _registry.widgets[name];
},
registerEditorComponent(component) {
const plugin = newEditorPlugin(component);
_registry.editorComponents = _registry.editorComponents.set(plugin.get('id'), plugin);
},
getEditorComponents() {
return _registry.editorComponents;
2017-06-22 17:35:47 -04:00
},
registerWidgetValueSerializer(widgetName, serializer) {
_registry.widgetValueSerializers[widgetName] = serializer;
},
getWidgetValueSerializer(widgetName) {
return _registry.widgetValueSerializers[widgetName];
},
2016-09-11 23:08:18 +02:00
};