!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SenaGameSDK=t():e.SenaGameSDK=t()}(Object("undefined"!=typeof self?self:this),()=>(()=>{"use strict";var e={815(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.SenaGameSDK=void 0;const s={iframePath:"../sdk-iframe/index.html",mode:"preview",gameCode:"",debug:!1,timeout:1e4,iframeStyle:"position:fixed;width:1px;height:1px;left:-9999px;border:none;"};class i{constructor(e){this.iframe=null,this.isReady=!1,this.isDataReady=!1,this.pendingMessages=[],this.initResolver=null,this.timeoutId=null,this.config={...s,...e};const t=window._sena_game_sdk_instance;t&&"function"==typeof t.destroy&&t.destroy(),window._sena_game_sdk_instance=this,this.initPromise=new Promise((e,t)=>{this.initResolver={resolve:e,reject:t}}),this._handleMessage=this._handleMessage.bind(this),this._init()}pushData(e){let t=[];Array.isArray(e)?t=e:e&&Array.isArray(e.items)?t=e.items:e&&Array.isArray(e.data)?t=e.data:e&&e.items&&"object"==typeof e.items?t=[e.items]:e&&e.data&&"object"==typeof e.data&&(t=[e.data]);const s={data:t,completed_question_ids:e&&e.completed_question_ids||[]};this._send("SDK_PUSH_DATA",s)}submitAnswer(e){const t={question_id:e.questionId,choice:e.selectedAnswer,time_spent:e.timeSpent??0};this._send("SDK_CHECK_ANSWER",t)}completeGame(){this._send("SDK_COMPLETE_GAME",{})}getStatus(){this._send("SDK_GET_STATUS",{})}async ready(){return this.isReady?this:this.initPromise}get sdkReady(){return this.isReady}get dataReady(){return this.isDataReady}destroy(){window.removeEventListener("message",this._handleMessage),this.timeoutId&&clearTimeout(this.timeoutId),this.iframe&&this.iframe.parentNode&&this.iframe.parentNode.removeChild(this.iframe),window.removeEventListener("message",this._handleMessage),this.isReady=!1,this._log("SDK destroyed")}_init(){this._log("Initializing SenaGameSDK..."),window.addEventListener("message",this._handleMessage),this._createIframe(),this.timeoutId=setTimeout(()=>{if(!this.isReady){const e=new Error("SDK initialization timeout");this._error(e),this.initResolver&&this.initResolver.reject(e)}},this.config.timeout)}_createIframe(){this.iframe=document.createElement("iframe"),this.iframe.id="sena-game-sdk-iframe",this.iframe.src=this.config.iframePath,this.iframe.style.cssText=this.config.iframeStyle||"",this.iframe.onload=()=>{this._log("Iframe loaded, sending INIT..."),setTimeout(()=>{this._send("SDK_INIT",{mode:this.config.mode,game_code:this.config.gameCode})},100)},this.iframe.onerror=()=>{this._error(new Error("Failed to load SDK iframe"))},document.body.appendChild(this.iframe),this._log(`Iframe created: ${this.config.iframePath}`)}_send(e,t){if(!this.iframe||!this.iframe.contentWindow)return this._log(`Queuing message: ${e}`,"warn"),void this.pendingMessages.push({type:e,payload:t});const s={type:e,payload:t,timestamp:Date.now()};this._log(`→ ${e}`,"send"),this.iframe.contentWindow.postMessage(s,"*")}_handleMessage(e){const t=e.data;if(t&&t.type&&t.type.startsWith("SDK_"))switch(this._log(`← ${t.type}`,"recv"),t.type){case"SDK_READY":this._onSDKReady();break;case"SDK_DATA_READY":this._onDataReady(t.payload);break;case"SDK_ANSWER_RESULT":this._onAnswerResult(t.payload);break;case"SDK_GAME_COMPLETE":this._onGameComplete(t.payload);break;case"SDK_SESSION_STARTED":this._onSessionStart(t.payload);break;case"SDK_ERROR":this._error(new Error(t.payload?.message||"SDK Error"))}}_onSDKReady(){for(this.isReady=!0,this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null);this.pendingMessages.length>0;){const e=this.pendingMessages.shift();e&&this._send(e.type,e.payload)}this.config.onReady&&this.config.onReady(this),this.initResolver&&this.initResolver.resolve(this),this._log("✅ SDK Ready!")}_onDataReady(e){this.isDataReady=!0;const t={items:e.items||[],totalQuestions:e.total_questions||e.totalQuestions||0,completedCount:e.completed_count||e.completedCount||0,resumeData:e.resume_data||e.resumeData||[]};this.config.onDataReady&&this.config.onDataReady(t),this._log(`✅ Data Ready: ${t.items.length} items`)}_onAnswerResult(e){const t={questionId:e.question_id||e.questionId,isCorrect:void 0!==e.correct?e.correct:e.isCorrect,correctAnswer:e.correct_answer||e.correctAnswer||"",score:e.score||0,currentScore:e.current_score||e.currentScore||0,totalAnswered:e.total_answered||e.totalAnswered||0};this.config.onAnswerResult&&this.config.onAnswerResult(t)}_onGameComplete(e){const t={success:void 0===e.success||e.success,finalScore:void 0!==e.score?e.score:e.finalScore||0,correctCount:void 0!==e.correct?e.correct:e.correctCount||0,totalQuestions:void 0!==e.total?e.total:e.totalQuestions||0,wrongCount:void 0!==e.wrong?e.wrong:e.wrongCount||0,total:e.total||0};this.config.onGameComplete&&this.config.onGameComplete(t)}_onSessionStart(e){const t={assignmentId:e.assignment_id||e.assignmentId,userId:e.student_id||e.userId,gameId:e.game_code||e.gameId,startedAt:e.started_at||e.startedAt||(new Date).toISOString()};this.config.onSessionStart&&this.config.onSessionStart(t)}_error(e){this._log(`❌ Error: ${e.message}`,"error"),this.config.onError&&this.config.onError(e)}_log(e,t="info"){if(!this.config.debug)return;const s={info:"color: #888",send:"color: #ff0",recv:"color: #0f0",warn:"color: #fa0",error:"color: #f00"};console.log(`%c[SenaGameSDK] ${e}`,s[t]||s.info)}}t.SenaGameSDK=i,i.VERSION="1.0.0","undefined"!=typeof window&&(window.SenaGameSDK=i),t.default=i}},t={};function s(i){var o=t[i];if(void 0!==o)return o.exports;var a=t[i]={exports:{}};return e[i](a,a.exports,s),a.exports}var i={};return(()=>{var e=i;e.default=void 0;s(815);var t=s(815);Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.SenaGameSDK}})})(),i.default})()); //# sourceMappingURL=sena-game-sdk.js.map