HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux vm8 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: afleverb (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //var/www/drakkar_site_dev/wp-content/themes/blocksy/static/js/customizer/controls/options.js
import { createElement, useRef, useState } from '@wordpress/element'
import classnames from 'classnames'

import OptionsPanel from '../../options/OptionsPanel'
import { getValueFromInput } from '../../options/helpers/get-value-from-input'
import PanelLevel from '../../options/components/PanelLevel'
import { DeviceManagerProvider } from '../components/useDeviceManager'

import { CustomizerValues } from './customizer-values-context'

const Options = ({ option, renderOptions = null }) => {
	const [values, setValues] = useState(null)

	const containerRef = useRef()

	const onChangeFor = (key, val) => {
		setValues((values) => {
			return {
				...(values ||
					getValueFromInput(option['inner-options'], {}, (id) => ({
						[id]: wp.customize(id) && wp.customize(id)(),
					}))),
				[key]: val,
			}
		})

		wp.customize(key) && wp.customize(key).set(val)
	}

	const computedValues =
		values ||
		getValueFromInput(option['inner-options'], {}, (id) => ({
			[id]: wp.customize(id) && wp.customize(id)(),
		}))

	return (
		<CustomizerValues.Provider
			value={{
				values: computedValues,
				onChange: onChangeFor,
			}}>
			<DeviceManagerProvider>
				<div className="ct-options-container" ref={containerRef}>
					<PanelLevel containerRef={containerRef}>
						<OptionsPanel
							renderOptions={renderOptions}
							purpose="customizer"
							onChange={(key, val) => {
								onChangeFor(key, val)
							}}
							options={option['inner-options']}
							value={computedValues}
						/>
					</PanelLevel>
				</div>
			</DeviceManagerProvider>
		</CustomizerValues.Provider>
	)
}

export default Options