"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GameTestPlayer = void 0; const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = require("react"); const useGameIframeSDK_1 = require("../../useGameIframeSDK"); /** * GameTestPlayer - Component test đơn giản * * Chỉ load game data vào iframe, KHÔNG gọi API * Dùng để test game iframe locally * * @example * ```tsx * console.log(`[${type}] ${msg}`)} * onAnswer={(data) => console.log('Answer:', data)} * onComplete={(result) => console.log('Complete:', result)} * /> * ``` */ const GameTestPlayer = ({ gameUrl, gameData, userId = 'test_user', gameId = 'test_game', extraData, endTimeIso, className, style, debug = false, onAnswer, onComplete, onLog, onLeaderboardRequest, mockLeaderboard }) => { const iframeRef = (0, react_1.useRef)(null); const [isLoading, setIsLoading] = (0, react_1.useState)(true); // SDK Hook const { isReady, sendGameData, sendLeaderboard } = (0, useGameIframeSDK_1.useGameIframeSDK)({ iframeRef, iframeOrigin: '*', debug, onGameReady: () => { if (onLog) onLog('[TEST] Iframe Ready', 'success'); setIsLoading(false); }, onAnswerReport: (data) => { if (onLog) onLog(`[TEST] Answer: ${JSON.stringify(data)}`, 'info'); if (onAnswer) onAnswer(data); }, onFinalResult: (result) => { if (onLog) onLog(`[TEST] Complete: ${JSON.stringify(result)}`, 'success'); if (onComplete) onComplete(result); }, onLeaderboardRequest: (top) => { if (onLog) onLog(`[TEST] Leaderboard Request: top=${top}`, 'info'); if (onLeaderboardRequest) onLeaderboardRequest(top); // Auto send mock leaderboard if provided if (mockLeaderboard) { if (onLog) onLog(`[TEST] Sending mock leaderboard`, 'info'); sendLeaderboard(mockLeaderboard); } } }); // Auto send game data when ready (0, react_1.useEffect)(() => { if (isReady && gameData) { const payload = { game_id: String(gameId), user_id: userId, data: gameData, completed_question_ids: [], ...(extraData || {}) }; if (endTimeIso) { payload.end_time_iso = endTimeIso; } if (onLog) onLog(`[TEST] Sending Game Data: ${gameData.length} items`, 'info'); sendGameData(payload); } }, [isReady, gameData, gameId, userId, extraData, endTimeIso, sendGameData, onLog]); return ((0, jsx_runtime_1.jsxs)("div", { style: { position: 'relative', width: '100%', height: '100%', ...style }, children: [isLoading && ((0, jsx_runtime_1.jsx)("div", { style: { position: 'absolute', top: 0, left: 0, right: 0, bottom: 0, display: 'flex', alignItems: 'center', justifyContent: 'center', backgroundColor: 'rgba(255,255,255,0.9)', zIndex: 10 }, children: (0, jsx_runtime_1.jsxs)("div", { style: { textAlign: 'center' }, children: [(0, jsx_runtime_1.jsx)("div", { style: { width: '40px', height: '40px', border: '4px solid #e9ecef', borderTop: '4px solid #007bff', borderRadius: '50%', animation: 'spin 1s linear infinite', margin: '0 auto 1rem' } }), (0, jsx_runtime_1.jsx)("p", { style: { color: '#6c757d' }, children: "Loading game..." }), (0, jsx_runtime_1.jsx)("style", { children: ` @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } ` })] }) })), (0, jsx_runtime_1.jsx)("iframe", { ref: iframeRef, src: gameUrl, className: className, style: { width: '100%', height: '100%', border: 'none' }, allowFullScreen: true })] })); }; exports.GameTestPlayer = GameTestPlayer; exports.default = exports.GameTestPlayer; //# sourceMappingURL=GameTestPlayer.js.map