import React, { useRef, memo, useMemo, useContext, useState, useEffect } from 'react';
import { Form } from '@ant-design/compatible';
import '@ant-design/compatible/assets/index.css';
import { Button, Input, Modal, Select, Upload, Tooltip, Badge, Popover } from 'antd';
import {
ArrowLeftOutlined,
MobileOutlined,
DownloadOutlined,
CopyOutlined,
DeleteOutlined,
UndoOutlined,
RedoOutlined,
FileAddOutlined,
CodeOutlined,
SketchOutlined,
UploadOutlined,
InstagramOutlined,
} from '@ant-design/icons';
import { history } from 'umi';
import QRCode from 'qrcode.react';
import { saveAs } from 'file-saver';
import req from 'utils/request';
import styles from './index.less';
import { dooringContext } from '../../../../layouts';
import MyPopover from 'yh-react-popover';
import PageForm from './PageForm';
const { confirm } = Modal;
const isDev = process.env.NODE_ENV === 'development';
interface HeaderComponentProps {
pointData: any;
location: any;
clearData: any;
undohandler: any;
redohandler: any;
importTpl: any;
__pageConfig: any;
dispatch: any;
savePage: any;
isNewPage: boolean;
}
const HeaderComponent = memo((props: HeaderComponentProps) => {
const { isNewPage, pointData, location, clearData, undohandler, redohandler, importTpl, __pageConfig, dispatch, savePage } = props;
const [showModalIframe, setShowModalIframe] = useState(false);
const [showFaceModal, setShowFaceModal] = useState(false);
const [faceUrl, setFaceUrl] = useState('');
const iptRef = useRef(null);
const toPreview = () => {
localStorage.setItem('pointData', JSON.stringify(pointData));
savePreview();
setTimeout(() => {
window.open(
isDev
? `/preview?tid=${props.location.query.tid}`
: `/preview?tid=${props.location.query.tid}`,
);
}, 600);
};
const toOnlineCoding = () => {
window.open('/ide');
};
const toVipLogin = () => {
window.open('/login');
};
const content = () => {
const { tid } = location.query || '';
return (
);
};
const handleSaveTpl = () => {
confirm({
title: '确定要保存吗?',
content: (
),
okText: '保存',
cancelText: '取消',
onOk() {
let name = iptRef.current!.state.value;
req.post('/visible/tpl/save', { name, tpl: pointData }).then(res => {
console.log(res);
});
},
onCancel() {
console.log('Cancel');
},
});
};
const useTemplate = () => {
Modal.info({
title: '该功能正在升级,可以关注下方公众号实时查看动态',
content: (
),
okText: '客官知道啦',
});
};
const downLoadJson = () => {
const jsonStr = JSON.stringify(pointData);
console.log(jsonStr, 'jsonStr')
const blob = new Blob([jsonStr], { type: 'text/plain;charset=utf-8' });
saveAs(blob, 'template.json');
};
const toLogin = () => {
const { tid } = props.location.query || '';
window.location.href = `/h5_plus/login?tid=${tid}`;
};
const deleteAll = () => {
Modal.confirm({
title: '确认清空画布?',
okText: '确认',
cancelText: '取消',
onOk() {
clearData();
},
});
};
const toHelp = () => {
window.open('/help');
};
const toBack = () => {
history.push('/');
};
const newPage = () => {
let prev = localStorage.getItem('myH5');
try {
localStorage.setItem(
'myH5',
JSON.stringify(prev ? [...Array.from(prev), pointData] : [pointData]),
);
} catch (err) {
console.error(err);
}
clearData();
};
const savePreview = () => {
const { tid } = props.location.query || '';
req.post('/visible/preview', { tid, tpl: pointData });
};
const handleSaveCode = () => {
Modal.confirm({
title: '确定要下载吗? 每人每天只能下载2次哦~',
okText: '确定',
cancelText: '取消',
onOk() {
// 未来的下载代码逻辑
},
});
};
useEffect(() => {
// 定义截图子页面句柄函数
window.getFaceUrl = url => {
setFaceUrl(url);
setShowModalIframe(false);
};
}, []);
const uploadprops = useMemo(
() => ({
name: 'file',
showUploadList: false,
beforeUpload(file, fileList) {
// 解析并提取excel数据
let reader = new FileReader();
reader.onload = function (e: Event) {
let data = (e as any).target.result;
importTpl && importTpl(JSON.parse(data));
};
reader.readAsText(file);
},
}),
[],
);
const generatePoster = () => {
localStorage.setItem('pointData', JSON.stringify(pointData));
setShowModalIframe(true);
setTimeout(() => {
setShowFaceModal(true);
}, 3600);
};
const handleReloadPage = () => {
document.getElementById('previewPage').contentWindow.location.reload();
};
const { setTheme } = useContext(dooringContext);
const onSave = (values, flag) => {
dispatch({
type: 'editorTempModal/updateState',
payload: {
pageConfig: values
}
})
if (flag) {
dispatch({
type: 'editorTempModal/updateState',
payload: {
__pageConfig: values
}
})
}
}
return (
{/* */}
{/* */}
{/*
*/}
{/*
*/}
{/* */}
{/*
*/}
{isNewPage && }
{isNewPage && }
{isNewPage && }
{/*
*/}
{/* */}
{/**/}
{/* 隐藏pc端切换, 保证代码纯粹 */}
{/*
*/}
{isNewPage &&
} trigger="click">
}
}
destroyOnClose={true}
onCancel={handleReloadPage}
maskClosable={false}
>
setShowFaceModal(false)}
>
);
});
export default HeaderComponent;