@ovine/craft
Version:
Ovine json editor.
32 lines (31 loc) • 1.41 kB
JavaScript
/**
* 预览窗口
*/
import { uuid } from 'amis/lib/utils/helper';
import { observer } from 'mobx-react';
import React, { useState } from 'react';
import { Amis } from '@core/components/amis/schema';
import { useSubscriber } from '@core/utils/hooks';
import { domId, message } from "../../constants";
import { useRootStore } from "../../stores";
import Attacher from "./attacher";
import { usePreviewStore, PreviewProvider, previewStore } from "./store";
import { StyledPreview } from "./styled";
const Preview = observer(() => {
const { renderSchema, schema, editId } = usePreviewStore();
const { isStageMode } = useRootStore();
const [refreshKey, setRefreshKey] = useState('');
useSubscriber(message.onNodeAction, () => {
setRefreshKey(uuid());
});
return (React.createElement(StyledPreview, null,
isStageMode && React.createElement(Amis, { schema: schema }),
React.createElement("div", { id: domId.editorPreview, className: `preview-panel ${!isStageMode ? 'd-block' : 'd-none'}` },
React.createElement("div", { "data-preview": "true" },
React.createElement(Amis, { key: `${editId}_${refreshKey}`, schema: renderSchema })),
React.createElement(Attacher, null))));
});
export default () => {
return (React.createElement(PreviewProvider, { value: previewStore },
React.createElement(Preview, null)));
};