nitro-v36-with-renderer-v36
/
src /
components /
camera /
views /
editor /
effect-list /
CameraWidgetEffectListItemView.tsx
CameraWidgetEffectListItemView.tsx 2.3 Ko
Télécharger le fichier
import { IRoomCameraWidgetEffect } from '@octane/renderer';
import { FC } from 'react';
import { FaTimes } from 'react-icons/fa';
import { LocalizeText } from '../../../../../api';
import { BaseButton } from '../../../../../common/BaseButton';
import { NativeTextTree } from '../../../../../common/native-text/NativeTextTree';
import { ToggleButton } from '../../../../../common/ToggleButton';
export interface CameraWidgetEffectListItemViewProps {
effect: IRoomCameraWidgetEffect;
thumbnailUrl: string;
isActive: boolean;
isLocked: boolean;
isSelected: boolean;
selectEffect: () => void;
removeEffect: () => void;
}
export const CameraWidgetEffectListItemView: FC<CameraWidgetEffectListItemViewProps> = (props) => {
const { effect = null, thumbnailUrl = null, isActive = false, isLocked = false, isSelected = false, selectEffect = null, removeEffect = null } = props;
const title = isLocked ? `${LocalizeText('camera.effect.required.level')} ${effect.minLevel}` : LocalizeText(`camera.effect.name.${effect.name}`);
return (
<NativeTextTree>
<div
className={[
'octane-camera-effect',
isActive && effect.type !== 'frame' && 'octane-camera-effect--active',
isSelected && 'octane-camera-effect--selected',
isLocked && 'octane-camera-effect--locked'
]
.filter(Boolean)
.join(' ')}
title={title}
>
<ToggleButton type="button" className="octane-camera-effect__select" disabled={isLocked} aria-label={title} pressed={isActive} onClick={selectEffect}>
{!isLocked && thumbnailUrl && <img alt="" src={thumbnailUrl} />}
{isLocked && (
<span className="octane-camera-effect__lock" aria-hidden="true">
?
</span>
)}
</ToggleButton>
{isActive && (
<BaseButton type="button" className="octane-camera-effect__remove" aria-label={LocalizeText('camera.delete.button.text')} onClick={removeEffect}>
<FaTimes aria-hidden="true" />
</BaseButton>
)}
</div>
</NativeTextTree>
);
};
