5180 fichiers 38.5 Mo 0 téléchargements 310 vues mis à jour il y a 6 heures ui
nitro-v36-with-renderer-v36 / src / components / avatar-editor / palette-set / AvatarEditorPaletteSetView.tsx
AvatarEditorPaletteSetView.tsx 1.6 Ko Télécharger le fichier
import { IPartColor } from '@octane/renderer';
import { CSSProperties, FC } from 'react';
import { IAvatarEditorCategory } from '../../../api';
import { useAvatarEditor } from '../../../hooks';
import { AvatarEditorPaletteSetItem } from './AvatarEditorPaletteSetItemView';

export const AvatarEditorPaletteSetView: FC<{
    category: IAvatarEditorCategory;
    paletteIndex: number;
    columnCount: number;
}> = (props) => {
    const { category = null, paletteIndex = -1, columnCount = 3 } = props;
    const { selectedColorParts = null, selectEditorColor = null } = useAvatarEditor();

    const isPartColorSelected = (partColor: IPartColor) => {
        if (
            !category ||
            !category.setType ||
            !selectedColorParts ||
            !selectedColorParts[category.setType] ||
            !selectedColorParts[category.setType][paletteIndex]
        )
            return false;

        const selectedColorPart = selectedColorParts[category.setType][paletteIndex];

        return selectedColorPart.id === partColor.id;
    };

    return (
        <div className="avatar-editor-palette-grid" style={{ '--avatar-editor-palette-columns': columnCount } as CSSProperties}>
            {category.colorItems[paletteIndex].map((item) => (
                <AvatarEditorPaletteSetItem
                    key={item.id}
                    isSelected={isPartColorSelected(item)}
                    partColor={item}
                    onClick={() => selectEditorColor(category.setType, paletteIndex, item.id)}
                />
            ))}
        </div>
    );
};
15Sujets
1Dépôts
20Membres
2En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser