HEX
Server: Apache/2.4.68 (Debian)
System: Linux as-cs-widget-demo-us-central1 6.1.0-44-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.164-1 (2026-03-09) x86_64
User: root (0)
PHP: 8.2.32
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/plugins/wp-recipe-maker/assets/js/admin-template/menu/Property.js
import React, { Fragment } from 'react';

import '../../../css/admin/template/property.scss';

import Icon from 'Shared/Icon';
import Helpers from '../general/Helpers';

import PropertyColor from './properties/Color';
import PropertyDropdown from './properties/Dropdown';
import PropertyFont from './properties/Font';
import PropertyHeader from './properties/Header';
import PropertyIcon from './properties/Icon';
import PropertyImage from './properties/Image';
import PropertyImageSize from './properties/ImageSize';
import PropertyInfo from './properties/Info';
import PropertyNumber from './properties/Number';
import PropertySize from './properties/Size';
import PropertyText from './properties/Text';
import PropertyToggle from './properties/Toggle';

const propertyTypes = {
    color: PropertyColor,
    align: PropertyDropdown,
    border: PropertyDropdown,
    dropdown: PropertyDropdown,
    float: PropertyDropdown,
    font: PropertyFont,
    font_size: PropertySize,
    header: PropertyHeader,
    icon: PropertyIcon,
    image: PropertyImage,
    image_size: PropertyImageSize,
    info: PropertyInfo,
    percentage: PropertyNumber,
    number: PropertyNumber,
    size: PropertySize,
    text: PropertyText,
    toggle: PropertyToggle,
}

const Property = (props) => {
    const PropertyComponent = propertyTypes.hasOwnProperty(props.property.type) ? propertyTypes[props.property.type] : false;

    if ( ! PropertyComponent ) {
        return null;
    }

    if ( ! Helpers.dependencyMet(props.property, props.properties) ) {
        return null;
    }

    if ( Helpers.shouldHideColorProperty(props.property, props.properties) ) {
        return null;
    }

    let helpIcon = null;
    if ( props.property.hasOwnProperty( 'help' ) ) {
        helpIcon = (
            <Icon
                type="question"
                title={ props.property.help }
                className="wprm-admin-icon-help"
            />
        );
    }

    return (
        <div className="wprm-template-property">
            {
                ['header', 'info'].includes( props.property.type )
                ?
                <PropertyComponent property={props.property} />
                :
                <Fragment>
                    <div className="wprm-template-property-label">
                        { props.property.name } { helpIcon }
                    </div>
                    <div className={ `wprm-template-property-value wprm-template-property-value-${props.property.type}` }>
                        <PropertyComponent
                            property={props.property}
                            value={props.property.value}
                            onValueChange={(value, options = {}) => {
                                props.onPropertyChange(props.property.id, value, {
                                    historyPropertyId: props.property.id,
                                    ...options,
                                });
                            } }
                            fonts={props.fonts}
                            onChangeFonts={props.onChangeFonts}
                        />
                    </div>
                </Fragment>
            }
        </div>
    );
}

export default Property;