Render Component with JavaScript.

This commit is contained in:
2023-06-21 21:45:34 +03:00
parent 378038b244
commit 98d0720bc0
14 changed files with 10364 additions and 128 deletions
@@ -20,8 +20,7 @@ function DataOptions(props = {}) {
const [sidebarOpen, setSidebarOpen] = useState(false);
useEffect(async () => {
const data = await fetchDataOptions(state.dataName);
updateState(data);
await syncDataOptions(state.dataName);
}, []);
const handleCloseSidebarEscEvent = useCallback((e) => {
@@ -98,15 +97,7 @@ function DataOptions(props = {}) {
async function changeDataOption(e) {
const dataName = e.target.value;
const previewFrameUrl = new URL(window.devTool.previewFrameUrl);
previewFrameUrl.searchParams.set('data', dataName);
previewFrameUrl.searchParams.set('iframe', 'true');
props.rootAttributes.previewFrame.src = previewFrameUrl.href;
const dataOption = await fetchDataOptions(dataName);
updateState(Object.assign({}, dataOption, {dataName}));
await syncDataOptions(dataName);
}
async function fetchDataOptions(name = 'default') {
@@ -138,6 +129,19 @@ function DataOptions(props = {}) {
setPreviewOption(getDesignPreviewImage(state.dataName, state.designPreview));
}
async function syncDataOptions(dataName) {
const dataOptions = await fetchDataOptions(dataName);
updateIframe(dataOptions);
const newState = Object.assign({}, dataOptions, {dataName});
updateState(newState);
}
function updateIframe(dataOptions) {
const previewIframe = props.rootAttributes.previewFrame;
previewIframe.contentWindow.postMessage('dataUpdate:' + JSON.stringify(dataOptions.data || {}), '*');
}
}
function copyToClipboard(e, context) {