UNPKG

@liascript/exporter

Version:
1 lines 31.4 kB
!function(){function t(t,e,n,i){Object.defineProperty(t,e,{get:n,set:i,enumerable:!0,configurable:!0})}var e=("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{}).parcelRequire55a5;e.register("4yc0d",(function(n,i){t(n.exports,"Connector",(function(){return S}));var o=e("f1evb"),s=e("hnmIs"),r=e("9Klpk"),a=e("3bWnf"),c=e("eT7f3"),l=e("9WzNc"),u=e("div3d"),d=e("kb0qF"),p=e("bWNdT"),h=e("32Euv"),v=e("knzCS"),g=e("4MgDM"),f=e("4Vevw"),S=function(t){"use strict";(0,d.default)(n,t);var e=(0,p.default)(n);function n(){var t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,r.default)(this,n),t=e.call(this),(0,c.default)((0,o.default)(t),"progressThreshold",0),(0,c.default)((0,o.default)(t),"masteryScore",0),window.SCORE=0,t.active=!1,t.debug=i.debug||!1,t.totalScore=0,t.maxScore=0,t.visitedSlides=new Set,t.lastVisitedSlide=0,t.totalSlides=0,t.quizStates={},t.surveyStates={},t.taskStates={},t.startTime=Date.now(),t.lastActivityTime=t.startTime,t.accumulatedTime=0,t.completionSent=!1,t.registration=i.registration||t.generateUUID(),t.actor=i.actor||{objectType:"Agent",name:"Anonymous",mbox:"mailto:anonymous@example.com"},t.courseId=i.courseId||window.location.href,t.courseTitle=i.courseTitle||document.title||"LiaScript Course";try{var s,a,l,u,d,p,h=window;if(h.config_)t.debug&&console.log("Initializing structures from config...",JSON.stringify(h.config_)),t.progressThreshold=null!==(a=null!==(s=h.config_.progressThreshold)&&void 0!==s?s:i.progressThreshold)&&void 0!==a?a:.9,t.masteryScore=null!==(u=null!==(l=h.config_.masteryThreshold)&&void 0!==l?l:i.masteryThreshold)&&void 0!==u?u:.8,t.debug&&console.log("Loaded thresholds:",{progressThreshold:t.progressThreshold,masteryScore:t.masteryScore}),(h.config_.quiz||[[]]).forEach((function(e,n){(null==e?void 0:e.length)>0&&(t.quizStates[n]={},e.forEach((function(e,i){t.quizStates[n][i]=e})))})),(h.config_.survey||[[]]).forEach((function(e,n){(null==e?void 0:e.length)>0&&(t.surveyStates[n]={},e.forEach((function(e,i){t.surveyStates[n][i]=e})))})),(h.config_.task||[[]]).forEach((function(e,n){(null==e?void 0:e.length)>0&&(t.taskStates[n]={},e.forEach((function(e,i){t.taskStates[n][i]=e})))})),t.debug&&console.log("Initialized structures from config:",{quizzes:Object.keys(t.quizStates).length,surveys:Object.keys(t.surveyStates).length,tasks:Object.keys(t.taskStates).length});else t.progressThreshold=null!==(d=i.progressThreshold)&&void 0!==d?d:.9,t.masteryScore=null!==(p=i.masteryThreshold)&&void 0!==p?p:.8}catch(e){t.debug&&console.warn("Could not load config:",e)}if(i.endpoint)try{t.lrs=new f.LRSConnection(i.endpoint,i.auth||"","1.0.3",t.debug),t.active=!0,t.debug&&console.log("xAPI connector initialized with LRS endpoint:",i.endpoint),window.addEventListener("beforeunload",t.handleUnload.bind((0,o.default)(t))),t.stateRestored=t.restoreState().catch((function(e){return t.debug&&console.warn("Could not restore state from LRS:",e),Promise.resolve()}))}catch(e){console.error("Failed to initialize LRS connection:",e),t.lrs=null}else console.warn("No LRS endpoint provided, xAPI tracking will be disabled"),t.lrs=null,t.stateRestored=Promise.resolve();return t}return(0,a.default)(n,[{key:"generateUUID",value:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)}))}},{key:"handleUnload",value:function(){if(this.active&&this.lrs){var t,e=g.formatDuration(this.getTotalDuration());if(this.completionSent)t=g.generateTerminatedStatement(this.actor,this.courseId,this.courseTitle,e,this.registration);else{var n=this.totalSlides>0?this.visitedSlides.size/this.totalSlides:0;t=g.generateSuspendedStatement(this.actor,this.courseId,this.courseTitle,e,this.lastVisitedSlide,n,this.registration)}if(navigator.sendBeacon&&this.lrs.endpoint){this.lrs.auth&&this.lrs.auth,navigator.sendBeacon(this.lrs.endpoint,JSON.stringify([t]))}else this.lrs.sendStatement(t)}}},{key:"restoreState",value:function(){var t=this;return(0,s.default)((function(){var e,n,i,o,s,r,a,c,l,u,d,p,v,g,f,S,m,y,b,x,k,w,T,I,z,j,R,O,A,D,L,q,_,E,C,U,N,P,M,F,J,V,W,Q,K,X,G,H,B,Y,Z,$,tt,et,nt,it,ot,st,rt,at,ct,lt,ut,dt,pt,ht,vt,gt,ft,St,mt,yt,bt,xt,kt,wt,Tt;return(0,h.__generator)(this,(function(h){switch(h.label){case 0:if(!t.lrs)return[2];t.debug&&console.log("Attempting to restore state from LRS..."),h.label=1;case 1:return h.trys.push([1,3,,4]),n={agent:JSON.stringify(t.actor),activity:t.courseId,related_activities:!0,limit:1e3},t.registration&&(n.registration=t.registration),t.debug&&console.log("LRS query parameters:",n),[4,t.lrs.getStatements(n)];case 2:if(i=h.sent(),t.debug&&console.log("LRS response:",i),!i||!i.statements)return t.debug&&console.log("No statements found in LRS response"),[2];t.debug&&console.log("Processing",i.statements.length,"statements..."),o={},s={},r={},a=null,c=null,l=!0,u=!1,d=void 0;try{for(p=i.statements[Symbol.iterator]();!(l=(v=p.next()).done);l=!0)"http://adlnet.gov/expapi/verbs/experienced"===(g=v.value).verb.id&&void 0!==(m=null===(f=g.object.definition)||void 0===f||null===(S=f.extensions)||void 0===S?void 0:S["http://liascript.github.io/extensions/slideId"])&&(t.visitedSlides.add(m),y=new Date(g.timestamp).getTime(),(!a||new Date(a.timestamp).getTime()<y)&&(a=g),t.debug&&console.log("Restored slide visit:",m)),"http://adlnet.gov/expapi/verbs/answered"===g.verb.id&&(z=null===(b=g.object.definition)||void 0===b||null===(x=b.extensions)||void 0===x?void 0:x["http://liascript.github.io/extensions/slideId"],j=null===(k=g.object.definition)||void 0===k||null===(w=k.extensions)||void 0===w?void 0:w["http://liascript.github.io/extensions/quizIndex"],R=null===(T=g.object.definition)||void 0===T||null===(I=T.extensions)||void 0===I?void 0:I["http://liascript.github.io/extensions/surveyIndex"],void 0!==z&&void 0!==j?(O="".concat(z,"-").concat(j),A=new Date(g.timestamp).getTime(),(!o[O]||new Date(o[O].timestamp).getTime()<A)&&(o[O]=g)):void 0!==z&&void 0!==R&&(D="".concat(z,"-").concat(R),L=new Date(g.timestamp).getTime(),(!s[D]||new Date(s[D].timestamp).getTime()<L)&&(s[D]=g))),"http://adlnet.gov/expapi/verbs/interacted"===g.verb.id&&(U=null===(q=g.object.definition)||void 0===q||null===(_=q.extensions)||void 0===_?void 0:_["http://liascript.github.io/extensions/slideId"],N=null===(E=g.object.definition)||void 0===E||null===(C=E.extensions)||void 0===C?void 0:C["http://liascript.github.io/extensions/taskIndex"],void 0!==U&&void 0!==N&&(P="".concat(U,"-").concat(N),M=new Date(g.timestamp).getTime(),(!r[P]||new Date(r[P].timestamp).getTime()<M)&&(r[P]=g))),"http://adlnet.gov/expapi/verbs/completed"===g.verb.id&&(t.completionSent=!0,t.debug&&console.log("Found completion statement")),"http://adlnet.gov/expapi/verbs/progressed"!==g.verb.id&&"http://adlnet.gov/expapi/verbs/suspended"!==g.verb.id&&"http://adlnet.gov/expapi/verbs/completed"!==g.verb.id||(F=new Date(g.timestamp).getTime(),(!c||new Date(c.timestamp).getTime()<F)&&(c=g))}catch(t){u=!0,d=t}finally{try{l||null==p.return||p.return()}finally{if(u)throw d}}for(var It in a&&(t.lastVisitedSlide=(null===(J=a.object.definition)||void 0===J||null===(V=J.extensions)||void 0===V?void 0:V["http://liascript.github.io/extensions/slideId"])||0,t.debug&&console.log("Last visited slide:",t.lastVisitedSlide)),o)B=o[It],Y=null===(W=B.object.definition)||void 0===W||null===(Q=W.extensions)||void 0===Q?void 0:Q["http://liascript.github.io/extensions/slideId"],Z=null===(K=B.object.definition)||void 0===K||null===(X=K.extensions)||void 0===X?void 0:X["http://liascript.github.io/extensions/quizIndex"],t.quizStates[Y]||(t.quizStates[Y]={}),$=B.result||{},tt=$.extensions||{},et=tt["http://liascript.github.io/extensions/trial"]||0,nt=0,!0===$.success?nt=1:!1===$.success&&(nt=!0===$.completion?-1:0),it={solved:nt,state:tt["http://liascript.github.io/extensions/state"]||[],trial:et,hint:tt["http://liascript.github.io/extensions/hint"]||0,error_msg:"",score:(null===(G=$.score)||void 0===G?void 0:G.raw)||0},$.response&&(it.input=$.response),t.quizStates[Y][Z]=it,t.debug&&console.log("Restored quiz state: slide ".concat(Y,", quiz ").concat(Z),it),void 0!==(null===(H=$.score)||void 0===H?void 0:H.raw)&&($.success&&(t.totalScore+=$.score.raw),void 0!==$.score.max&&(t.maxScore+=$.score.max));for(var zt in s)ct=s[zt],lt=null===(ot=ct.object.definition)||void 0===ot||null===(st=ot.extensions)||void 0===st?void 0:st["http://liascript.github.io/extensions/slideId"],ut=null===(rt=ct.object.definition)||void 0===rt||null===(at=rt.extensions)||void 0===at?void 0:at["http://liascript.github.io/extensions/surveyIndex"],t.surveyStates[lt]||(t.surveyStates[lt]={}),dt=ct.result||{},pt=dt.extensions||{},ht={submitted:dt.completion||!1,state:pt["http://liascript.github.io/extensions/state"]||{}},t.surveyStates[lt][ut]=ht,t.debug&&console.log("Restored survey state: slide ".concat(lt,", survey ").concat(ut),ht);for(var jt in r)mt=r[jt],yt=null===(vt=mt.object.definition)||void 0===vt||null===(gt=vt.extensions)||void 0===gt?void 0:gt["http://liascript.github.io/extensions/slideId"],bt=null===(ft=mt.object.definition)||void 0===ft||null===(St=ft.extensions)||void 0===St?void 0:St["http://liascript.github.io/extensions/taskIndex"],t.taskStates[yt]||(t.taskStates[yt]={}),xt=mt.result||{},kt=xt.extensions||{},wt=kt["http://liascript.github.io/extensions/state"]||[],t.taskStates[yt][bt]=wt,t.debug&&console.log("Restored task state: slide ".concat(yt,", task ").concat(bt),wt);return(null==c||null===(e=c.result)||void 0===e?void 0:e.duration)&&(t.accumulatedTime=t.parseDuration(c.result.duration),t.debug&&console.log("Restored accumulated time:",t.accumulatedTime,"ms (",Math.round(t.accumulatedTime/1e3),"seconds)")),t.debug&&console.log("State restoration complete:",{visitedSlides:t.visitedSlides.size,lastVisitedSlide:t.lastVisitedSlide,quizStates:Object.keys(t.quizStates).length,surveyStates:Object.keys(t.surveyStates).length,taskStates:Object.keys(t.taskStates).length,totalScore:t.totalScore,maxScore:t.maxScore,completionSent:t.completionSent,accumulatedTime:t.accumulatedTime}),[3,4];case 3:throw Tt=h.sent(),console.error("Error restoring state from LRS:",Tt),Tt;case 4:return[2]}}))}))()}},{key:"parseDuration",value:function(t){var e=t.match(/PT(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?/);return e?1e3*(3600*parseInt(e[1]||"0",10)+60*parseInt(e[2]||"0",10)+parseFloat(e[3]||"0")):0}},{key:"getTotalDuration",value:function(){return this.accumulatedTime+(Date.now()-this.startTime)}},{key:"checkCompletion",value:function(){if(0===this.totalSlides)return!1;var t=0,e=0;for(var n in this.quizStates)for(var i in this.quizStates[n]){e++,0!==this.quizStates[n][i].solved&&t++}var o=0,s=0;for(var r in this.surveyStates)for(var a in this.surveyStates[r]){s++,!0===this.surveyStates[r][a].submitted&&o++}var c=this.totalSlides+e+s,l=this.visitedSlides.size+t+o;return this.debug&&console.log("Completion check:",{visitedSlides:this.visitedSlides.size,totalSlides:this.totalSlides,completedQuizzes:t,totalQuizzes:e,completedSurveys:o,totalSurveys:s,completedItems:l,totalItems:c,progressThreshold:this.progressThreshold}),0!==c&&l/c>=this.progressThreshold}},{key:"sendCompletionIfNeeded",value:function(){var t=this;if(this.active&&this.lrs){var e=0,n=0,i=0,o=0;for(var s in this.quizStates)for(var r in this.quizStates[s]){var a=this.quizStates[s][r];switch(o=a.score||0,e+=o,a.solved){case 1:n+=o;break;case-1:i+=o}}var c=0===n?0:n/e;window.SCORE=c,this.debug&&console.log("Checking completion...",{totalSlides:this.totalSlides,visitedSlides:this.visitedSlides.size,maxScore:e,totalScore:n,quizStates:Object.keys(this.quizStates).length,completionSent:this.completionSent});var l=g.formatDuration(this.getTotalDuration()),u=this.totalSlides>0?this.visitedSlides.size/this.totalSlides:0,d=this.checkCompletion(),p=void 0;if(null==this.masteryScore)p=void 0;else{var h=i+n===e&&e>0;p=c>=this.masteryScore||0===e||(h?c>=this.masteryScore:void 0)}this.debug&&console.log("Success calculation:",{masteryScore:this.masteryScore,score:c,solved:n,finished:i,total:e,allQuizzesCompleted:i+n===e,success:p});var v=g.generateProgressedStatement(this.actor,this.courseId,this.courseTitle,u,this.registration,l,n,e,d,p);if(this.lrs.sendStatement(v).then((function(){t.debug&&console.log("Sent progressed statement: ".concat(100*u,"% complete, score: ").concat(n,"/").concat(e,", completion: ").concat(d,", success: ").concat(p))})).catch((function(t){console.error("Failed to send progressed statement:",t)})),d&&!this.completionSent){var f=g.generateCompletedStatement(this.actor,this.courseId,this.courseTitle,p,n,e,l,this.registration);this.lrs.sendStatement(f).then((function(e){t.debug&&console.log("Sent completed statement, ID:",e),t.completionSent=!0})).catch((function(t){console.error("Failed to send completed statement:",t)}))}}}},{key:"open",value:function(t,e,n){var i=this;return(0,s.default)((function(){var t,e,o;return(0,h.__generator)(this,(function(s){return i.active&&i.lrs?(i.startTime=Date.now(),i.lastActivityTime=i.startTime,i.completionSent=!1,e=window,(null===(t=e.config_)||void 0===t?void 0:t.totalSlides)?(i.totalSlides=e.config_.totalSlides,i.debug&&console.log("Total slides in course:",i.totalSlides)):i.debug&&console.warn("Could not get total slides - config_.totalSlides not available"),o=g.generateInitializedStatement(i.actor,i.courseId,i.courseTitle,i.registration),i.lrs.sendStatement(o).then((function(t){i.debug&&console.log("Sent initialized statement, ID:",t)})).catch((function(t){console.error("Failed to send initialized statement:",t)})),void 0!==n&&i.slide(n),i.completionSent||i.sendCompletionIfNeeded(),[2]):[2]}))}))()}},{key:"slide",value:function(t){var e=this;if(this.active&&this.lrs){this.lastActivityTime=Date.now(),this.visitedSlides.add(t),this.lastVisitedSlide=t;var n="Slide ".concat(t),i=window;i.LIA&&i.LIA.course&&i.LIA.course.slides[t]&&(n=i.LIA.course.slides[t].title||n);var o=g.formatDuration(this.getTotalDuration()),s=g.generateExperiencedStatement(this.actor,this.courseId,this.courseTitle,t,n,this.registration,o);this.lrs.sendStatement(s).then((function(t){e.debug&&console.log("Sent experienced statement, ID:",t),e.sendCompletionIfNeeded()})).catch((function(t){console.error("Failed to send experienced statement:",t)}))}}},{key:"load",value:function(t){var e=this;return(0,s.default)((function(){var n,i,o,s,r;return(0,h.__generator)(this,(function(a){switch(a.label){case 0:return[4,e.stateRestored];case 1:if(a.sent(),n=t.table,i=t.id,"quiz"===n&&e.quizStates[i]){for(var c in o=[],e.quizStates[i])o[parseInt(c)]=e.quizStates[i][c];return e.debug&&console.log("Load quiz[".concat(i,"]:"),o.length,"items"),[2,o]}if("survey"===n&&e.surveyStates[i]){for(var l in s=[],e.surveyStates[i])s[parseInt(l)]=e.surveyStates[i][l];return e.debug&&console.log("Load survey[".concat(i,"]:"),s.length,"items"),[2,s]}if("task"===n&&e.taskStates[i]){for(var u in r=[],e.taskStates[i])r[parseInt(u)]=e.taskStates[i][u];return e.debug&&console.log("Load task[".concat(i,"]:"),r.length,"items"),[2,r]}return[2,void 0]}}))}))()}},{key:"store",value:function(t){var e=this;if(this.active&&this.lrs&&t.data){this.lastActivityTime=Date.now();var n=t.table,i=t.id,o=t.data;return"quiz"===n?(this.quizStates[i]||(this.quizStates[i]={}),void o.forEach((function(t,n){if(t){e.quizStates[i][n]=t,console.warn("Storing quiz:",i,n,t),void 0!==t.score&&(1===t.solved&&(e.totalScore+=t.score),e.maxScore+=t.score);var o=t.state&&"object"==typeof t.state&&Object.keys(t.state)[0]||"unknown",s=g.generateAnsweredStatement(e.actor,e.courseId,e.courseTitle,i,n,o,t.input||t.answer||"",1===t.solved||-1!==t.solved&&null,t.score||1,t.score||1,t,e.registration);e.lrs.sendStatement(s).then((function(){e.debug&&console.log("Sent answer: slide ".concat(i,", quiz ").concat(n)),e.sendCompletionIfNeeded()})).catch((function(t){return console.error("Failed to send answered statement:",t)}))}}))):"survey"===n?(this.surveyStates[i]||(this.surveyStates[i]={}),void o.forEach((function(t,n){if(t){e.surveyStates[i][n]=t;var o=g.generateAnsweredStatement(e.actor,e.courseId,e.courseTitle,i,n,"Survey",JSON.stringify(t.state),t.submitted,0,0,t,e.registration,n,!0);e.lrs.sendStatement(o).then((function(){e.debug&&console.log("Sent survey answer: slide ".concat(i,", survey ").concat(n))})).catch((function(t){return console.error("Failed to send survey statement:",t)}))}}))):"task"===n?(this.taskStates[i]||(this.taskStates[i]={}),void o.forEach((function(t,n){if(t){e.taskStates[i][n]=t;var o=g.generateTaskStatement(e.actor,e.courseId,e.courseTitle,i,n,t,e.registration);e.lrs.sendStatement(o).then((function(){e.debug&&console.log("Sent task interaction: slide ".concat(i,", task ").concat(n))})).catch((function(t){return console.error("Failed to send task statement:",t)}))}}))):void 0}}},{key:"update",value:function(t,e){(0,l.default)((0,u.default)(n.prototype),"update",this).call(this,t,e),this.store(t)}},{key:"reset",value:function(t,e){this.totalScore=0,this.maxScore=0,this.visitedSlides.clear(),this.lastVisitedSlide=0,this.quizStates={},this.surveyStates={},this.taskStates={},this.startTime=Date.now(),this.lastActivityTime=this.startTime,this.accumulatedTime=0,this.completionSent=!1,(0,l.default)((0,u.default)(n.prototype),"reset",this).call(this,t,e)}}]),n}(v.Connector)})),e.register("9WzNc",(function(n,i){t(n.exports,"default",(function(){return r}));var o=e("jwduU");function s(t,e,n){return s="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var i=(0,o.default)(t,e);if(i){var s=Object.getOwnPropertyDescriptor(i,e);return s.get?s.get.call(n||t):s.value}},s(t,e,n)}function r(t,e,n){return s(t,e,n)}})),e.register("jwduU",(function(n,i){t(n.exports,"default",(function(){return s}));var o=e("div3d");function s(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=(0,o.default)(t)););return t}})),e.register("knzCS",(function(n,i){t(n.exports,"Connector",(function(){return u}));var o=e("hnmIs"),s=e("9Klpk"),r=e("3bWnf"),a=e("32Euv"),c=e("87lFe"),l=e("cRTHJ"),u=function(){"use strict";function t(){(0,s.default)(this,t)}return(0,r.default)(t,[{key:"hasIndex",value:function(){return!1}},{key:"storage",value:function(){return new c.LiaStorage}},{key:"initSettings",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return l.Settings.init(t,e,this.setSettings)}},{key:"setSettings",value:function(t){l.Settings.update(t)}},{key:"getSettings",value:function(){var t="";try{t=localStorage.getItem(l.Settings.PORT)}catch(t){console.warn("cannot write to localStorage")}var e=null;if("string"==typeof t){try{e=JSON.parse(t)}catch(t){console.warn("getSettings =>",t)}e||(e=l.Settings.data),window.innerWidth<=768&&(e.table_of_contents=!1)}return e}},{key:"open",value:function(t,e,n){}},{key:"load",value:function(t){}},{key:"store",value:function(t){}},{key:"update",value:function(t,e){}},{key:"slide",value:function(t){}},{key:"getIndex",value:function(){}},{key:"deleteFromIndex",value:function(t){}},{key:"storeToIndex",value:function(t){return(0,o.default)((function(){return(0,a.__generator)(this,(function(t){return[2]}))}))()}},{key:"restoreFromIndex",value:function(t,e){}},{key:"reset",value:function(t,e){this.initSettings(null,!0)}},{key:"getFromIndex",value:function(t){return(0,o.default)((function(){return(0,a.__generator)(this,(function(t){return[2,null]}))}))()}},{key:"addMisc",value:function(t,e,n,i){return(0,o.default)((function(){return(0,a.__generator)(this,(function(t){return console.log("addMisc not implemented"),[2]}))}))()}},{key:"getMisc",value:function(t,e,n){return(0,o.default)((function(){return(0,a.__generator)(this,(function(t){return console.log("getMisc not implemented"),[2]}))}))()}}]),t}()})),e.register("87lFe",(function(n,i){t(n.exports,"LiaStorage",(function(){return a}));var o=e("9Klpk"),s=e("3bWnf"),r=e("5ENmm"),a=function(){"use strict";function t(){(0,o.default)(this,t)}return(0,s.default)(t,[{key:"getItems",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];"string"==typeof t&&(t=[t]);for(var e={},n=0;n<t.length;n++){var i=localStorage.getItem(t[n]);e[t[n]]=i?JSON.parse(i):i}return e}},{key:"setItems",value:function(t){this._setLocal(t)}},{key:"_setLocal",value:function(t){var e=!0,n=!1,i=void 0;if("object"==typeof t)try{for(var o,s=Object.entries(t)[Symbol.iterator]();!(e=(o=s.next()).done);e=!0){var a=(0,r.default)(o.value,2),c=a[0],l=a[1];localStorage.setItem(c,JSON.stringify(l))}}catch(t){n=!0,i=t}finally{try{e||null==s.return||s.return()}finally{if(n)throw i}}}}]),t}()})),e.register("4MgDM",(function(n,i){t(n.exports,"generateInitializedStatement",(function(){return a})),t(n.exports,"generateExperiencedStatement",(function(){return c})),t(n.exports,"generateAnsweredStatement",(function(){return l})),t(n.exports,"generateTaskStatement",(function(){return u})),t(n.exports,"generateCompletedStatement",(function(){return d})),t(n.exports,"generateProgressedStatement",(function(){return p})),t(n.exports,"generateTerminatedStatement",(function(){return h})),t(n.exports,"generateSuspendedStatement",(function(){return v})),t(n.exports,"formatDuration",(function(){return g}));var o=e("bgoEC");function s(t,e){return{id:t,objectType:"Activity",definition:{type:"http://adlnet.gov/expapi/activities/course",name:{"en-US":e}}}}function r(t,e){return e&&(t.context=t.context||{},t.context.registration=e),t}function a(t,e,n,i){return r({actor:t,verb:{id:"http://adlnet.gov/expapi/verbs/initialized",display:{"en-US":"initialized"}},object:s(e,n),result:{completion:!1},timestamp:(new Date).toISOString()},i)}function c(t,e,n,i,o,a,c){var l={actor:t,verb:{id:"http://adlnet.gov/expapi/verbs/experienced",display:{"en-US":"experienced"}},object:{id:"".concat(e,"/slides/").concat(i),objectType:"Activity",definition:{type:"http://adlnet.gov/expapi/activities/module",name:{"en-US":o||"Slide ".concat(i)},extensions:{"http://liascript.github.io/extensions/slideId":i}}},context:{contextActivities:{parent:[s(e,n)]}},timestamp:(new Date).toISOString()};return c&&(l.result={duration:c}),r(l,a)}function l(t,e,n,i,s,r,a,c,l,u,d,p,h){var v=arguments.length>13&&void 0!==arguments[13]&&arguments[13],g=v?"survey":"quiz",f=v?h:s,S={actor:t,verb:{id:"http://adlnet.gov/expapi/verbs/answered",display:{"en-US":"answered"}},object:{id:"".concat(e,"/slides/").concat(i,"/").concat(g,"/").concat(f),objectType:"Activity",definition:{type:v?"http://adlnet.gov/expapi/activities/survey":"http://adlnet.gov/expapi/activities/question",name:{"en-US":v?"Slide ".concat(i," - Survey ").concat(f):"unknown"!==r?"Slide ".concat(i," - ").concat(r," ").concat(s):"Slide ".concat(i," - Quiz ").concat(s)},description:{"en-US":v?"Survey Question":"unknown"!==r?"".concat(r," Question"):"Quiz Question"},extensions:(0,o.default)({"http://liascript.github.io/extensions/slideId":i},v?{"http://liascript.github.io/extensions/surveyIndex":f}:{"http://liascript.github.io/extensions/quizIndex":s})}},result:{success:c,completion:!v||c,response:JSON.stringify(a),score:{scaled:u>0?l/u:0,raw:l,min:0,max:u}},context:{contextActivities:{parent:[{id:"".concat(e,"/slides/").concat(i),objectType:"Activity",definition:{type:"http://adlnet.gov/expapi/activities/module"}}],grouping:[{id:e,objectType:"Activity",definition:{type:"http://adlnet.gov/expapi/activities/course",name:{"en-US":n}}}]}},timestamp:(new Date).toISOString()};return p&&(S.context.registration=p),(d||v)&&(S.result.extensions={"http://liascript.github.io/extensions/state":v?d.state||{}:(null==d?void 0:d.state)||[]},!v&&d&&(S.result.extensions["http://liascript.github.io/extensions/trial"]=d.trial||0,S.result.extensions["http://liascript.github.io/extensions/hint"]=d.hint||0)),S}function u(t,e,n,i,o,s,r){var a=s.filter((function(t){return t})).length,c=s.length,l=c>0?a/c:0,u={actor:t,verb:{id:"http://adlnet.gov/expapi/verbs/interacted",display:{"en-US":"interacted"}},object:{id:"".concat(e,"/slides/").concat(i,"/task/").concat(o),objectType:"Activity",definition:{type:"http://adlnet.gov/expapi/activities/task",name:{"en-US":"Slide ".concat(i," - Task ").concat(o)},description:{"en-US":"Task List"},extensions:{"http://liascript.github.io/extensions/slideId":i,"http://liascript.github.io/extensions/taskIndex":o}}},result:{completion:1===l,score:{scaled:l,raw:a,min:0,max:c},extensions:{"http://liascript.github.io/extensions/state":s}},context:{contextActivities:{parent:[{id:"".concat(e,"/slides/").concat(i),objectType:"Activity",definition:{type:"http://adlnet.gov/expapi/activities/module"}}],grouping:[{id:e,objectType:"Activity",definition:{type:"http://adlnet.gov/expapi/activities/course",name:{"en-US":n}}}]}},timestamp:(new Date).toISOString()};return r&&(u.context.registration=r),u}function d(t,e,n,i,o,a,c,l){var u={actor:t,verb:{id:"http://adlnet.gov/expapi/verbs/completed",display:{"en-US":"completed"}},object:s(e,n),result:{completion:!0,score:{scaled:a>0?o/a:0,raw:o,min:0,max:a},duration:c},timestamp:(new Date).toISOString()};return void 0!==i&&(u.result.success=i),r(u,l)}function p(t,e,n,i,o,a,c,l,u,d){var p={actor:t,verb:{id:"http://adlnet.gov/expapi/verbs/progressed",display:{"en-US":"progressed"}},object:s(e,n),result:{completion:void 0!==u?u:i>=1,score:{scaled:i,raw:Math.round(100*i),min:0,max:100},extensions:{"http://liascript.github.io/extensions/progress":i,"http://liascript.github.io/extensions/progressPercent":Math.round(100*i)}},timestamp:(new Date).toISOString()};return void 0!==d&&(p.result.success=d),a&&(p.result.duration=a),void 0!==l&&l>0&&(p.result.score={scaled:c/l,raw:c,min:0,max:l}),r(p,o)}function h(t,e,n,i,o){return r({actor:t,verb:{id:"http://adlnet.gov/expapi/verbs/terminated",display:{"en-US":"terminated"}},object:s(e,n),result:{duration:i},timestamp:(new Date).toISOString()},o)}function v(t,e,n,i,o,a,c){return r({actor:t,verb:{id:"http://adlnet.gov/expapi/verbs/suspended",display:{"en-US":"suspended"}},object:s(e,n),result:{completion:!1,duration:i,extensions:{"http://liascript.github.io/extensions/lastSlide":o,"http://liascript.github.io/extensions/progress":a,"http://liascript.github.io/extensions/progressPercent":Math.round(100*a)}},timestamp:(new Date).toISOString()},c)}function g(t){var e=Math.floor(t/1e3),n=Math.floor(e/3600),i=Math.floor(e%3600/60),o=e%60,s="PT";return n>0&&(s+="".concat(n,"H")),i>0&&(s+="".concat(i,"M")),(o>0||0===n&&0===i)&&(s+="".concat(o,"S")),s}})),e.register("4Vevw",(function(n,i){t(n.exports,"LRSConnection",(function(){return l}));var o=e("hnmIs"),s=e("9Klpk"),r=e("3bWnf"),a=e("5ENmm"),c=e("32Euv"),l=function(){"use strict";function t(e,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"1.0.3",o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];(0,s.default)(this,t),this.endpoint=e.endsWith("/")?e:e+"/",this.endpoint.endsWith("statements/")&&(this.endpoint=this.endpoint.slice(0,-11)),this.auth=n,this.version=i,this.debug=o,this.debug&&console.log("LRS endpoint configured as:",this.endpoint)}return(0,r.default)(t,[{key:"sendStatement",value:function(t){var e=this;return(0,o.default)((function(){var n,i,o,s,r,a;return(0,c.__generator)(this,(function(c){switch(c.label){case 0:return c.trys.push([0,5,,6]),e.debug&&console.log("Sending statement to LRS:",JSON.stringify(t,null,2)),n=e.ensureStringReferences(t),e.validateStatement(n)?[4,fetch(e.endpoint+"statements",{method:"POST",headers:{"Content-Type":"application/json","X-Experience-API-Version":e.version,Authorization:e.auth},body:JSON.stringify(n)})]:(console.error("Invalid statement structure:",n),[2,null]);case 1:return(i=c.sent()).ok?[3,3]:(o=console.error,s=["LRS error:",i.status],[4,i.text()]);case 2:return o.apply(console,s.concat([c.sent()])),[2,null];case 3:return[4,i.json()];case 4:return r=c.sent(),e.debug&&console.log("LRS response:",r),Array.isArray(r)&&r.length>0?[2,r[0]]:r&&"object"==typeof r?[2,r.id||null]:[2,null];case 5:return a=c.sent(),console.error("Error sending statement to LRS:",a),[2,null];case 6:return[2]}}))}))()}},{key:"sendStatements",value:function(t){var e=this;return(0,o.default)((function(){var n,i,o,s,r,a;return(0,c.__generator)(this,(function(c){switch(c.label){case 0:return c.trys.push([0,5,,6]),e.debug&&console.log("Sending statements to LRS:",JSON.stringify(t,null,2)),n=t.map((function(t){return e.ensureStringReferences(t)})),[4,fetch(e.endpoint+"statements",{method:"POST",headers:{"Content-Type":"application/json","X-Experience-API-Version":e.version,Authorization:e.auth},body:JSON.stringify(n)})];case 1:return(i=c.sent()).ok?[3,3]:(o=console.error,s=["LRS error:",i.status],[4,i.text()]);case 2:return o.apply(console,s.concat([c.sent()])),[2,[]];case 3:return[4,i.json()];case 4:return r=c.sent(),e.debug&&console.log("LRS response:",r),Array.isArray(r)?[2,r]:[2,[]];case 5:return a=c.sent(),console.error("Error sending statements to LRS:",a),[2,[]];case 6:return[2]}}))}))()}},{key:"getStatements",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this;return(0,o.default)((function(){var n,i,o,s,r,l,u,d,p,h,v,g,f,S,m;return(0,c.__generator)(this,(function(c){switch(c.label){case 0:c.trys.push([0,5,,6]),n=new URLSearchParams,i=!0,o=!1,s=void 0;try{for(r=Object.entries(t)[Symbol.iterator]();!(i=(l=r.next()).done);i=!0)u=(0,a.default)(l.value,2),d=u[0],null!=(p=u[1])&&("object"==typeof p?n.append(d,JSON.stringify(p)):n.append(d,String(p)))}catch(t){o=!0,s=t}finally{try{i||null==r.return||r.return()}finally{if(o)throw s}}return h="".concat(e.endpoint,"statements").concat(n.toString()?"?".concat(n.toString()):""),e.debug&&console.log("Getting statements from LRS:",h),[4,fetch(h,{method:"GET",headers:{"X-Experience-API-Version":e.version,Authorization:e.auth}})];case 1:return(v=c.sent()).ok?[3,3]:(g=console.error,f=["LRS error:",v.status],[4,v.text()]);case 2:return g.apply(console,f.concat([c.sent()])),[2,null];case 3:return[4,v.json()];case 4:return S=c.sent(),e.debug&&console.log("LRS response:",S),[2,S];case 5:return m=c.sent(),console.error("Error getting statements from LRS:",m),[2,null];case 6:return[2]}}))}))()}},{key:"testConnection",value:function(){var t=this;return(0,o.default)((function(){var e,n;return(0,c.__generator)(this,(function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),(e=t.endpoint).includes("api/v2/statements")?e=e.replace("api/v2/statements","api/v2/about"):e.endsWith("/statements")&&(e=e.replace("/statements","/about")),[4,fetch(e,{method:"GET",headers:{"X-Experience-API-Version":t.version,Authorization:t.auth}})];case 1:return[2,i.sent().ok];case 2:return n=i.sent(),console.error("Error testing LRS connection:",n),[2,!1];case 3:return[2]}}))}))()}},{key:"ensureStringReferences",value:function(t){var e=this;if(null==t)return t;if("object"==typeof t){if(Array.isArray(t))return t.map((function(t){return e.ensureStringReferences(t)}));var n={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=this.ensureStringReferences(t[i]));return n}return"function"==typeof t?t.toString():t}},{key:"validateStatement",value:function(t){return!!t&&(!(!t.actor||"object"!=typeof t.actor)&&(!(!t.verb||"object"!=typeof t.verb||!t.verb.id||"string"!=typeof t.verb.id)&&!(!t.object||"object"!=typeof t.object||!t.object.id||"string"!=typeof t.object.id)))}}]),t}()}))}();