| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import React from 'react';
- import Editor from '@components/Base/Editor';
- import { upperFirst } from '@utils';
- import withGGEditorContext from '@common/context/GGEditorContext/withGGEditorContext';
- class Register extends React.Component {
- static create = function (type) {
- class TypedRegister extends Register {
- constructor(props) {
- super(props, type);
- }
- }
- return withGGEditorContext(TypedRegister);
- }
- constructor(props, type) {
- super(props);
- this.type = type;
- this.bindEvent();
- }
- bindEvent() {
- const { type } = this;
- const { onBeforeAddPage } = this.props;
- onBeforeAddPage(({ className }) => {
- let host = Editor[className];
- let keys = ['name', 'config', 'extend'];
- if (type === 'command') {
- host = Editor;
- }
- if (type === 'behaviour') {
- keys = ['name', 'behaviour', 'dependences'];
- }
- const args = keys.map(key => this.props[key]);
- host[`register${upperFirst(type)}`](...args);
- });
- }
- render() {
- return null;
- }
- }
- export const RegisterNode = Register.create('node');
- export const RegisterEdge = Register.create('edge');
- export const RegisterGroup = Register.create('group');
- export const RegisterGuide = Register.create('guide');
- export const RegisterCommand = Register.create('command');
- export const RegisterBehaviour = Register.create('behaviour');
|