import { RoomEngineTriggerWidgetEvent } from '@nitrots/nitro-renderer'; import { FC, useEffect, useMemo, useState } from 'react'; import { ColorUtils, FurnitureDimmerUtilities, GetConfigurationValue, LocalizeText } from '../../../../api'; import { Button, Column, Grid, NitroCardContentView, NitroCardHeaderView, NitroCardTabsItemView, NitroCardTabsView, NitroCardView, Slider, Text } from '../../../../common'; import { useFurnitureDimmerWidget, useNitroEvent } from '../../../../hooks'; import { classNames } from '../../../../layout'; export const FurnitureDimmerView: FC<{}> = props => { const [ isVisible, setIsVisible ] = useState(false); const { presets = [], dimmerState = 0, selectedPresetId = 0, color = 0xFFFFFF, brightness = 0xFF, effectId = 0, selectedColor = 0, setSelectedColor = null, selectedBrightness = 0, setSelectedBrightness = null, selectedEffectId = 0, setSelectedEffectId = null, selectPresetId = null, applyChanges } = useFurnitureDimmerWidget(); const onClose = () => { FurnitureDimmerUtilities.previewDimmer(color, brightness, (effectId === 2)); setIsVisible(false); }; useNitroEvent(RoomEngineTriggerWidgetEvent.REMOVE_DIMMER, event => setIsVisible(false)); useEffect(() => { if(!presets || !presets.length) return; setIsVisible(true); }, [ presets ]); const isFreeColorMode = useMemo(() => GetConfigurationValue('widget.dimmer.colorwheel', false), []); if(!isVisible) return null; return ( { (dimmerState === 1) && { presets.map(preset => selectPresetId(preset.id) }>{ LocalizeText(`widget.dimmer.tab.${ preset.id }`) }) } } { (dimmerState === 0) &&
{ LocalizeText('widget.dimmer.info.off') } } { (dimmerState === 1) && <>
{ LocalizeText('widget.backgroundcolor.hue') } { isFreeColorMode && setSelectedColor(ColorUtils.convertFromHex(event.target.value)) } /> } { !isFreeColorMode && { FurnitureDimmerUtilities.AVAILABLE_COLORS.map((color, index) => { return ( setSelectedColor(color) } /> ); }) } }
{ LocalizeText('widget.backgroundcolor.lightness') }
{ FurnitureDimmerUtilities.scaleBrightness(state.valueNow) }
} thumbClassName={ 'thumb percent' } value={ selectedBrightness } onChange={ value => setSelectedBrightness(value) } />
setSelectedEffectId(event.target.checked ? 2 : 1) } /> { LocalizeText('widget.dimmer.type.checkbox') }
} ); };