@liascript/exporter
Version:
A generic exporter for LiaScript
1 lines • 13.4 kB
JavaScript
!function(){function t(t,e,i,n){Object.defineProperty(t,e,{get:i,set:n,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("8MvA8",(function(i,n){t(i.exports,"Connector",(function(){return m}));var r=e("f1evb"),s=e("9Klpk"),o=e("3bWnf"),a=e("eT7f3"),c=e("kb0qF"),u=e("6Wo7Q"),l=e("bWNdT"),d=e("knzCS"),f=e("cRTHJ"),h=e("jxbaN"),m=function(t){"use strict";(0,c.default)(i,t);var e=(0,l.default)(i);function i(){var t;(0,s.default)(this,i),t=e.call(this),(0,a.default)((0,r.default)(t),"inited",!1),(0,a.default)((0,r.default)(t),"startMs",0),(0,a.default)((0,r.default)(t),"commitTimer",null),(0,a.default)((0,r.default)(t),"totalScore",0),(0,a.default)((0,r.default)(t),"setSettings",(function(e){t.active&&t.scorm?t.write("cmi.suspend_data",JSON.stringify(e)):g('cannot write to "cmi.suspend_data"')})),t.active=!1,t.scaled_passing_score=null,t.db={quiz:[],survey:[],task:[]},t.id={quiz:[],survey:[],task:[]};var n=t.getAPI(window);if(n){v("successfully opened API"),t.scorm=n,v("loading quizzes ...");try{t.db.quiz=window.config_.quiz||[[]],v(" ... done");for(var o=0;o<t.db.quiz.length;o++)for(var c=0;c<t.db.quiz[o].length;c++)t.totalScore+=t.db.quiz[o][c].score}catch(t){g("... failed",t)}v("loading surveys ...");try{t.db.survey=window.config_.survey||[[]],v(" ... done")}catch(t){g("... failed",t)}v("loading tasks ...");try{t.db.task=window.config_.task||[[]],v(" ... done")}catch(t){g("... failed",t)}t.init()}else g("Could not find API");return t}return(0,o.default)(i,[{key:"scanForAPI",value:function(t){var e=0;try{for(;null==t.API_1484_11&&null!=t.parent&&t.parent!=t;){if(++e>500)return null;t=t.parent}return t.API_1484_11}catch(t){g("scanForAPI =>",null==t?void 0:t.message)}return null}},{key:"getAPI",value:function(t){var e=null;return null!=t.parent&&t.parent!=t&&(e=this.scanForAPI(t.parent)),null==e&&null!=t.opener&&(e=this.scanForAPI(t.opener)),e}},{key:"initSettings",value:function(t){return f.Settings.init(t,!1,this.setSettings)}},{key:"getSettings",value:function(){var t="";try{var e;t=(null===(e=this.scorm)||void 0===e?void 0:e.GetValue("cmi.suspend_data"))||null}catch(t){g("cannot read settings from cmi.suspend_data")}var i=null;if("string"==typeof t&&""!==t)try{i=JSON.parse(t)}catch(t){g("getSettings =>",t)}return i||(i=f.Settings.data),window.innerWidth<=768&&(i.table_of_contents=!1),i}},{key:"isoDuration",value:function(t){var e=t/1e3,i=Math.floor(e/3600),n=Math.floor(e%3600/60),r=(e%60).toFixed(2);return"PT".concat(i,"H").concat(n,"M").concat(r,"S")}},{key:"commit",value:function(){if(this.scorm&&this.inited&&"false"===this.scorm.Commit("")){var t=this.scorm.GetLastError();g("Commit error",t,this.scorm.GetErrorString(t),this.scorm.GetDiagnostic(t))}}},{key:"write",value:function(t,e){if(this.scorm&&this.active){if(v("write: ",t,e),"false"===this.scorm.SetValue(t,e)){g("error occurred for",t,e);var i=this.scorm.GetLastError();g("GetLastError:",i),i?(g("GetErrorString:",this.scorm.GetErrorString(i)),g("GetDiagnostic:",this.scorm.GetDiagnostic(i))):g("GetDiagnostic:",this.scorm.GetDiagnostic(""))}this.commit()}}},{key:"init",value:function(){var t=this;if(this.scorm){var e=this.scorm.Initialize("");if(this.inited="true"===e,v("Initialize",e),this.inited){this.startMs=Date.now();var i=this.scorm.GetValue("cmi.mode")||"",n=this.scorm.GetValue("cmi.credit")||"";if(this.active="normal"===i&&"credit"===n,g('Running in "'.concat(i,'" mode, credit=').concat(n,". Results will ").concat(this.active?"":"NOT ","be stored!")),this.active)this.scaled_passing_score=h.jsonParse(this.scorm.GetValue("cmi.scaled_passing_score")),this.scaled_passing_score||(this.scaled_passing_score=window.MASTERY_SCORE||null),this.scorm.GetValue("cmi.completion_status")||this.write("cmi.completion_status","incomplete"),v("cmi.entry =",this.scorm.GetValue("cmi.entry")),this.location=h.jsonParse(this.scorm.GetValue("cmi.location")),v("open location ...",this.location);null!==this.location&&void 0!==this.location||this.slide(0);var r=this.countInteractions();if(this.active&&0===r){var s=0;s=this.initFirst("quiz",s),s=this.initFirst("survey",s),s=this.initFirst("task",s)}else{var o=0;o=this.initSecond("quiz",o),o=this.initSecond("survey",o),o=this.initSecond("task",o)}window.SCORE=0,this.score(),this.commitTimer=window.setInterval((function(){return t.commit()}),45e3),window.addEventListener("pagehide",(function(){return t.finish(!0)})),document.addEventListener("visibilitychange",(function(){"hidden"===document.visibilityState&&t.commit()}))}else g("Initialize failed")}}},{key:"finish",value:function(t){if(this.scorm&&this.inited){var e=this.isoDuration(Date.now()-this.startMs);this.scorm.SetValue("cmi.session_time",e),this.scorm.SetValue("cmi.exit",t?"suspend":""),this.commit();var i=this.scorm.Terminate("");this.inited=!1,this.commitTimer&&(clearInterval(this.commitTimer),this.commitTimer=null),g("Terminate:",i)}}},{key:"initFirst",value:function(t,e){for(var i=0;i<this.db[t].length;i++){this.id[t].push([]);for(var n=0;n<this.db[t][i].length;n++)this.setInteraction(e,"".concat(t,":").concat(i,"-").concat(n)),this.id[t][i].push(e),e++}return e}},{key:"countInteractions",value:function(){if(!this.scorm)return 0;var t=this.scorm.GetValue("cmi.interactions._count"),e=parseInt(t||"0",10);return Number.isFinite(e)?e:0}},{key:"initSecond",value:function(t,e){for(var i=0;i<this.db[t].length;i++){this.id[t].push([]);for(var n=0;n<this.db[t][i].length;n++){var r=this.getInteraction(e);r&&(this.db[t][i][n]=r),this.id[t][i].push(e),e++}}return e}},{key:"open",value:function(t,e,i){if(null!==this.location&&void 0!==this.location){var n=this.location;setTimeout((function(){window.LIA.goto(n)}),500)}}},{key:"load",value:function(t){switch(t.table){case"quiz":case"survey":case"task":return v("loading ",t.table,t.id,this.db[t.table][t.id]),this.db[t.table][t.id]}}},{key:"store",value:function(t){switch(t.table){case"quiz":case"survey":this.storeHelper(t),this.score();break;case"task":this.storeHelper(t)}}},{key:"storeHelper",value:function(t){for(var e=0;e<this.db[t.table][t.id].length;e++)h.neq(t.data[e],this.db[t.table][t.id][e])&&(this.updateInteraction(this.id[t.table][t.id][e],t.data[e]),this.db[t.table][t.id][e]=t.data[e],"quiz"===t.table&&this.updateQuiz(this.id[t.table][t.id][e],t.data[e]))}},{key:"score",value:function(){for(var t=0,e=0,i=0,n=0;n<this.db.quiz.length;n++)for(var r=0;r<this.db.quiz[n].length;r++)switch(i=this.db.quiz[n][r].score,this.db.quiz[n][r].solved){case 1:t+=i;break;case-1:e+=i}for(var s=0,o=0,a=0;a<this.db.survey.length;a++)for(var c=0;c<this.db.survey[a].length;c++)s+=1,this.db.survey[a][c].submitted&&(o+=1);var u=0===this.totalScore?0:t/this.totalScore,l=0===this.totalScore?0:(t+e)/this.totalScore,d=0===s||s===o;window.SCORE=u,v("SCORE updated =>",u,"progress =>",l,"surveys =>","".concat(o,"/").concat(s)),this.scorm&&this.active&&(this.write("cmi.score.min","0"),this.write("cmi.score.max",JSON.stringify(this.totalScore)),this.write("cmi.score.scaled",JSON.stringify(u)),this.write("cmi.score.raw",JSON.stringify(t)),this.write("cmi.progress_measure",JSON.stringify(l)),null!=this.scaled_passing_score?(u>=this.scaled_passing_score||0===this.totalScore)&&d?(this.write("cmi.success_status","passed"),this.write("cmi.completion_status","completed")):e+t===this.totalScore&&this.totalScore>0&&d?(this.write("cmi.success_status","failed"),this.write("cmi.completion_status","completed")):(this.write("cmi.success_status","unknown"),this.write("cmi.completion_status","incomplete")):(this.write("cmi.success_status","unknown"),e+t===this.totalScore&&this.totalScore>0&&d||0===this.totalScore&&d&&s>0?this.write("cmi.completion_status","completed"):this.write("cmi.completion_status","incomplete")))}},{key:"slide",value:function(t){this.location=t,this.write("cmi.location",JSON.stringify(t))}},{key:"setInteraction",value:function(t,e){this.write("cmi.interactions.".concat(t,".id"),e),this.write("cmi.interactions.".concat(t,".type"),"long-fill-in")}},{key:"updateQuiz",value:function(t,e){if(this.active)switch(e.solved){case 0:e.trial>0&&this.write("cmi.interactions.".concat(t,".result"),"incorrect");break;case 1:this.write("cmi.interactions.".concat(t,".result"),"correct");break;case-1:this.write("cmi.interactions.".concat(t,".result"),"neutral")}}},{key:"updateInteraction",value:function(t,e){var i;if(this.write("cmi.interactions.".concat(t,".learner_response"),h.encodeJSON(e)),e.score&&this.write("cmi.interactions.".concat(t,".weighting"),JSON.stringify(e.score)),e.submitted&&this.write("cmi.interactions.".concat(t,".result"),"neutral"),!(null===(i=this.scorm)||void 0===i?void 0:i.GetValue("cmi.interactions.".concat(t,".timestamp")))){var n=new Date,r=new Date(n.getTime()-6e4*n.getTimezoneOffset()).toISOString().slice(0,-5);this.write("cmi.interactions.".concat(t,".timestamp"),r)}var s=this.isoDuration(Date.now()-this.startMs);this.write("cmi.interactions.".concat(t,".latency"),s)}},{key:"getInteraction",value:function(t){try{if(this.scorm){var e=this.scorm.GetValue("cmi.interactions.".concat(t,".learner_response"));if(""!==e)return h.decodeJSON(e)}}catch(t){g("getInteraction => ",t)}return null}}]),i}(d.Connector);function v(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];var n;(n=console).log.apply(n,["SCORM2004: "].concat((0,u.default)(e)))}function g(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];var n;(n=console).log.apply(n,["SCORM2004: "].concat((0,u.default)(e)))}})),e.register("knzCS",(function(i,n){t(i.exports,"Connector",(function(){return l}));var r=e("hnmIs"),s=e("9Klpk"),o=e("3bWnf"),a=e("32Euv"),c=e("87lFe"),u=e("cRTHJ"),l=function(){"use strict";function t(){(0,s.default)(this,t)}return(0,o.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 u.Settings.init(t,e,this.setSettings)}},{key:"setSettings",value:function(t){u.Settings.update(t)}},{key:"getSettings",value:function(){var t="";try{t=localStorage.getItem(u.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=u.Settings.data),window.innerWidth<=768&&(e.table_of_contents=!1)}return e}},{key:"open",value:function(t,e,i){}},{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,r.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,r.default)((function(){return(0,a.__generator)(this,(function(t){return[2,null]}))}))()}},{key:"addMisc",value:function(t,e,i,n){return(0,r.default)((function(){return(0,a.__generator)(this,(function(t){return console.log("addMisc not implemented"),[2]}))}))()}},{key:"getMisc",value:function(t,e,i){return(0,r.default)((function(){return(0,a.__generator)(this,(function(t){return console.log("getMisc not implemented"),[2]}))}))()}}]),t}()})),e.register("87lFe",(function(i,n){t(i.exports,"LiaStorage",(function(){return a}));var r=e("9Klpk"),s=e("3bWnf"),o=e("5ENmm"),a=function(){"use strict";function t(){(0,r.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={},i=0;i<t.length;i++){var n=localStorage.getItem(t[i]);e[t[i]]=n?JSON.parse(n):n}return e}},{key:"setItems",value:function(t){this._setLocal(t)}},{key:"_setLocal",value:function(t){var e=!0,i=!1,n=void 0;if("object"==typeof t)try{for(var r,s=Object.entries(t)[Symbol.iterator]();!(e=(r=s.next()).done);e=!0){var a=(0,o.default)(r.value,2),c=a[0],u=a[1];localStorage.setItem(c,JSON.stringify(u))}}catch(t){i=!0,n=t}finally{try{e||null==s.return||s.return()}finally{if(i)throw n}}}}]),t}()})),e.register("jxbaN",(function(i,n){t(i.exports,"encodeJSON",(function(){return c})),t(i.exports,"decodeJSON",(function(){return u})),t(i.exports,"jsonParse",(function(){return l})),t(i.exports,"neq",(function(){return d}));var r=e("5ENmm"),s={SingleChoice:"sc",MultipleChoice:"mc",Text:"tx",Select:"st",Matrix:"mx",Generic:"gn",error_msg:"err"},o=Object.entries(s).reduce((function(t,e){var i=(0,r.default)(e,2),n=i[0];return t[i[1]]=n,t}),{});function a(t,e){if("object"!=typeof t||null===t)return t;if(Array.isArray(t))return t.map((function(t){return a(t,e)}));var i={},n=!0,s=!1,o=void 0;try{for(var c,u=Object.entries(t)[Symbol.iterator]();!(n=(c=u.next()).done);n=!0){var l=(0,r.default)(c.value,2),d=l[0],f=l[1];i[e[d]||d]=a(f,e)}}catch(t){s=!0,o=t}finally{try{n||null==u.return||u.return()}finally{if(s)throw o}}return i}function c(t){return JSON.stringify(a(t,s))}function u(t){return a(JSON.parse(t),o)}function l(t){try{return JSON.parse(t)}catch(t){}return null}function d(t,e){return JSON.stringify(t)!=JSON.stringify(e)}}))}();