HEX
Server: Apache
System: Linux webd003.cluster128.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User: slyfwmm (169339)
PHP: 8.1.34
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/slyfwmm/adspray/wp-content/plugins/lazy-blocks/assets/editor-constructor/block/edit.js
/**
 * WordPress dependencies.
 */
import { __ } from '@wordpress/i18n';
import { useState } from '@wordpress/element';
import { useSelect, useDispatch } from '@wordpress/data';
import { Spinner, PanelBody } from '@wordpress/components';
import { InspectorControls } from '@wordpress/block-editor';

/**
 * Internal dependencies.
 */
import ProNotice from '../../components/pro-notice';
import DocumentTabs from '../../components/document-tabs';
import Box from '../../components/box';
import TitleSettings from '../boxes/title';
import GeneralSettings from '../boxes/general';
import StylesSettings from '../boxes/styles';
import SupportsSettings from '../boxes/supports';
import SupportsGhostKitSettings from '../boxes/supports-ghost-kit';
import ConditionSettings from '../boxes/condition';
import ControlsSettings from '../boxes/controls';
import SelectedControlSettings from '../boxes/selected-control-settings';
import CustomCodeSettings from '../boxes/code';
import CodePreview from '../boxes/code-preview';
import PreviewErrorBoundary from '../../components/preview-error-boundary';

import '../../components/tab-panel';

export default function ConstructorBlock() {
	const [codeContext, setCodeContext] = useState('frontend');

	const { blockData } = useSelect(
		(select) => ({
			blockData: select('lazy-blocks/block-data').getBlockData(),
		}),
		[]
	);

	const { updateBlockData } = useDispatch('lazy-blocks/block-data');

	if (!blockData || typeof blockData.slug === 'undefined') {
		return (
			<div className="lzb-constructor-loading">
				<Spinner />
			</div>
		);
	}

	return (
		<>
			<InspectorControls>
				<DocumentTabs>
					{(tabData) => {
						// Selected control settings.
						if (tabData.name === 'control') {
							return <SelectedControlSettings />;
						}

						// Block settings.
						return (
							<>
								<GeneralSettings
									data={blockData}
									updateData={updateBlockData}
								/>
								<ProNotice />
								<PanelBody
									title={__('Styles', 'lazy-blocks')}
									initialOpen={false}
								>
									<StylesSettings
										data={blockData}
										updateData={updateBlockData}
									/>
								</PanelBody>
								<PanelBody
									title={__('Supports', 'lazy-blocks')}
									initialOpen={false}
								>
									<SupportsSettings
										data={blockData}
										updateData={updateBlockData}
									/>
								</PanelBody>
								<PanelBody
									title={__(
										'Supports Ghost Kit',
										'lazy-blocks'
									)}
									initialOpen={false}
								>
									<SupportsGhostKitSettings
										data={blockData}
										updateData={updateBlockData}
									/>
								</PanelBody>
								<PanelBody
									title={__('Condition', 'lazy-blocks')}
									initialOpen={false}
								>
									<ConditionSettings
										data={blockData}
										updateData={updateBlockData}
									/>
								</PanelBody>
							</>
						);
					}}
				</DocumentTabs>
			</InspectorControls>
			<div className="lzb-constructor">
				<TitleSettings data={blockData} updateData={updateBlockData} />
				<ControlsSettings
					data={blockData}
					updateData={updateBlockData}
				/>
				<Box no-paddings>
					<CustomCodeSettings
						data={blockData}
						updateData={updateBlockData}
						onTabChange={(value) => setCodeContext(value)}
					/>
				</Box>
				{/* Code/Template Preview */}
				<PreviewErrorBoundary>
					<Box no-paddings>
						<CodePreview
							data={blockData}
							codeContext={codeContext}
						/>
					</Box>
				</PreviewErrorBoundary>
			</div>
		</>
	);
}