@ovine/editor
Version:
Ovine json editor.
35 lines (34 loc) • 1.56 kB
JavaScript
import cls from 'classnames';
import { pick } from 'lodash';
import { observer, inject } from 'mobx-react';
import React, { useEffect, useRef } from 'react';
import { app } from "../../../../core/lib/app";
import { Editor } from "../../assets/scripts/editor.view";
import { GlobalEditorStyle } from "./styled";
export default inject('store')(observer((props) => {
const { isPreview, isMobile, setEditorInstance, setLastSavedSchema, option } = props.store;
const { editorStore } = props;
const $editor = useRef(null);
const editorProps = pick(option, [
'autoFocus',
'schemaFilter',
'className',
'amisEnv',
'ctx',
'plugins',
'iframeUrl',
'isHiddenProps',
]);
const { className } = editorProps;
const editorData = Object.assign(Object.assign({}, option.data), app.amis.constants);
useEffect(() => {
setEditorInstance($editor.current); // 主要用历史记录更新
setLastSavedSchema(editorStore.schema); // 第一次存储初始化数据
return () => {
setEditorInstance();
};
}, []);
return (React.createElement("div", { className: cls(className, { 'd-none': isPreview }) },
React.createElement(GlobalEditorStyle, null),
React.createElement(Editor, Object.assign({}, editorProps, { className: "is-fixed", ref: $editor, data: editorData, preview: false, isMobile: isMobile, theme: app.theme.getName(), value: editorStore.schema, onChange: (value) => editorStore.updateSchema(value) }))));
}));