// src/views/DetailPanel/components/DetailPanelBackground/DetailPanelBackground.v2.jsx import React, { useMemo, useCallback } from 'react'; // 이미지 imports import hsn from '../../../../../assets/images/bg/hsn_new.png'; import koreaKiosk from '../../../../../assets/images/bg/koreaKiosk_new.png'; import lgelectronics from '../../../../../assets/images/bg/lgelectronics_new.png'; import ontv4u from '../../../../../assets/images/bg/ontv4u_new.png'; import Pinkfong from '../../../../../assets/images/bg/Pinkfong_new.png'; import qvc from '../../../../../assets/images/bg/qvc_new.png'; import shoplc from '../../../../../assets/images/bg/shoplc_new.png'; import nbcu from '../../../../../assets/images/bg/nbcu_new.png'; import css from './DetailPanelBackground.module.less'; // ==================== 로깅 함수들 ==================== /** * DetailPanelBackgroundV2 초기화 로그 * @param {number} patnrId - 파트너사 ID * @param {boolean} visible - 표시 여부 * @param {string} imageUrl - 이미지 URL */ // const logDetailPanelInit = (patnrId, visible, imageUrl) => { // console.log(`[DetailPanelBackgroundV2] patnrId: ${patnrId}, visible: ${visible}, imageUrl: ${imageUrl}`); // }; /** * 이미지 로드 성공 로그 * @param {number} patnrId - 파트너사 ID */ // const logImageLoaded = (patnrId) => { // console.log(`[DetailPanelBackgroundV2] Image loaded: patnrId=${patnrId}`); // }; /** * 이미지 로드 실패 로그 * @param {number} patnrId - 파트너사 ID * @param {Error} error - 에러 객체 */ // const logImageError = (patnrId, error) => { // console.error(`[DetailPanelBackgroundV2] Image load failed: patnrId=${patnrId}`, error); // }; /** * 개선된 배경 이미지 컴포넌트 v2 * HomePanel에 미리 로드되어 메모리에 상주하며, visible props로 표시 여부만 제어 * * @param {Object} props * @param {number} props.patnrId - 파트너사 ID * @param {boolean} props.visible - 표시 여부 (HomePanel이 isOnTop일 때 false) * @param {boolean} props.launchedFromPlayer - PlayerPanel에서 진입했는지 여부 * @param {boolean} props.usePlaceholder - placeholder 표시 여부 */ export default function DetailPanelBackgroundV2({ patnrId, visible = true, launchedFromPlayer = false, usePlaceholder = false, }) { // 파트너사별 배경 이미지 맵 const BG_MAP = useMemo( () => ({ 1: qvc, // QVC 2: hsn, // HSN 4: ontv4u, // ONTV4U 9: lgelectronics, // LG ELECTRONICS 11: shoplc, // SHOPLC 16: koreaKiosk, // KOREA KIOSK 19: Pinkfong, // PINKFONG 21: nbcu, // NBCU }), [] ); const backgroundImageUrl = useMemo(() => { return BG_MAP[patnrId] || qvc; // 기본값은 QVC }, [patnrId, BG_MAP]); // useCallback으로 메모이제이션된 핸들러 const handleImageLoad = useCallback(() => { logImageLoaded(patnrId); }, [patnrId]); const handleImageError = useCallback( (e) => { logImageError(patnrId, e); }, [patnrId] ); // 개발 환경에서만 로깅 if (process.env.NODE_ENV === 'development') { // eslint-disable-next-line no-console logDetailPanelInit(patnrId, visible, backgroundImageUrl); } return (