index.js (2682B)
1 const { compose } = wp.compose; 2 const { withDispatch, withSelect } = wp.data; 3 const { useState } = wp.element 4 import SitePreviewSidebar from './SitePreviewSidebar'; 5 import { ModalManager } from '../modal-manager' 6 import ImportWizard from '../import-wizard'; 7 import './style.scss'; 8 import { Fragment } from 'react'; 9 import {processImportHelper} from '~redux-templates/stores/actionHelper'; 10 11 function PreviewTemplate(props) { 12 13 const { startIndex, currentPageData } = props; 14 const { setImportingTemplate, importingTemplate} = props; 15 const [ currentIndex, setCurrentIndex ] = useState(startIndex); 16 const [ previewClass, setPreviewClass ] = useState('preview-desktop') 17 const [ expandedClass, toggleExpanded ] = useState('expanded') 18 19 20 const onCloseCustomizer = () => { 21 ModalManager.closeCustomizer(); 22 } 23 24 const onNextBlock = () => { 25 if (currentIndex < currentPageData.length) setCurrentIndex(currentIndex + 1); 26 } 27 28 const onPrevBlock = () => { 29 if (currentIndex > 0) setCurrentIndex(currentIndex - 1); 30 } 31 32 33 const importStarterBlock = () => { 34 setImportingTemplate(itemData); 35 } 36 37 const processImport = () => { 38 if (importingTemplate) processImportHelper(); 39 } 40 41 42 let wrapperClassName = ['wp-full-overlay sites-preview theme-install-overlay ', previewClass, expandedClass].join(' '); 43 let itemData = currentPageData[currentIndex]; 44 return ( 45 <Fragment> 46 <div className={wrapperClassName} style={{display: 'block'}}> 47 <SitePreviewSidebar itemData={itemData} previewClass={previewClass} expandedClass={expandedClass} 48 onNextBlock={onNextBlock} onPrevBlock={onPrevBlock} 49 onCloseCustomizer={onCloseCustomizer} onToggleExpanded={e => toggleExpanded(e)} 50 onImport={importStarterBlock} 51 onChangePreviewClass={e => setPreviewClass(e)} /> 52 <div className='wp-full-overlay-main'> 53 <iframe src={itemData.url} target='Preview'></iframe> 54 </div> 55 </div> 56 { importingTemplate && <ImportWizard startImportTemplate={processImport} /> } 57 </Fragment> 58 ); 59 } 60 61 export default compose([ 62 withDispatch((dispatch) => { 63 const { 64 setImportingTemplate 65 } = dispatch('redux-templates/sectionslist'); 66 67 return { 68 setImportingTemplate 69 }; 70 }), 71 72 withSelect((select, props) => { 73 const { getImportingTemplate } = select('redux-templates/sectionslist'); 74 return { 75 importingTemplate: getImportingTemplate() 76 }; 77 }) 78 ])(PreviewTemplate);