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/options/options/ct-image-picker.js
import { createElement, Component } from '@wordpress/element'
import classnames from 'classnames'
import { normalizeCondition, matchValuesWithCondition } from 'match-conditions'

const ImagePicker = ({
	option: { choices, tabletChoices, mobileChoices },
	option,
	device,
	value,
	values,
	onChange,
}) => {
	const { className, ...attr } = { ...(option.attr || {}) }

	let deviceChoices = option.choices

	if (device === 'tablet' && tabletChoices) {
		deviceChoices = tabletChoices
	}

	if (device === 'mobile' && mobileChoices) {
		deviceChoices = mobileChoices
	}

	let matchingChoices = (Array.isArray(deviceChoices)
		? deviceChoices
		: Object.keys(deviceChoices).map((choice) => ({
				key: choice,
				...deviceChoices[choice],
		  }))
	).filter(({ key }) => {
		if (!option.conditions) {
			return true
		}

		if (!option.conditions[key]) {
			return true
		}

		return matchValuesWithCondition(
			normalizeCondition(option.conditions[key]),
			values
		)
	})

	let normalizedValue = matchingChoices.map(({ key }) => key).includes(value)
		? value
		: option.value

	return (
		<ul
			{...attr}
			className={classnames('ct-image-picker', className)}
			{...(option.title && null ? { 'data-title': '' } : {})}>
			{matchingChoices.map((choice) => (
				<li
					className={classnames({
						active: choice.key === normalizedValue,
					})}
					data-tooltip-reveal="top"
					onClick={() => onChange(choice.key)}
					key={choice.key}>
					{choice.src.indexOf('<svg') === -1 ? (
						<img src={choice.src} />
					) : (
						<span
							dangerouslySetInnerHTML={{
								__html: choice.src,
							}}
						/>
					)}

					{option.title && null && <span>{choice.title}</span>}

					{choice.title && (
						<span className="ct-tooltip">{choice.title}</span>
					)}
				</li>
			))}
		</ul>
	)
}

export default ImagePicker