(function() { function r(e, n, t) { function o(i, f) { if (!n[i]) { if (!e[i]) { const c='function'==typeof require&&require; if (!f&&c) return c(i, !0); if (u) return u(i, !0); const a=new Error('Cannot find module \''+i+'\''); throw a.code='MODULE_NOT_FOUND', a; } const p=n[i]={exports: {}}; e[i][0].call(p.exports, function(r) { const n=e[i][1][r]; return o(n||r); }, p, p.exports, r, e, n, t); } return n[i].exports; } for (var u='function'==typeof require&&require, i=0; i=this.apiLogLevel) { switch (i) { case api_constants.LOG_LEVEL_ERROR: console.error(r); break; case api_constants.LOG_LEVEL_WARNING: console.warn(r); break; case api_constants.LOG_LEVEL_INFO: console.info(r); } } }}, {key: 'formatMessage', value: function(e, t, r) { let i=''; i+=e; for (var s=20-i.length, a=0; a-1; }}, {key: 'getLmsErrorMessageDetails', value: function(e, t) { return 'No error'; }}, {key: 'getCMIValue', value: function(e) { return ''; }}, {key: 'setCMIValue', value: function(e, t) {}}, {key: '_commonSetCMIValue', value: function(e, t, r, i) { if (!r||''===r) return api_constants.SCORM_FALSE; for (var s=r.split('.'), a=this, n=api_constants.SCORM_FALSE, o='The data model element passed to '.concat(e, ' (').concat(r, ') is not a valid SCORM data model element.'), l=t?_classPrivateFieldGet(this, _error_codes).UNDEFINED_DATA_MODEL:_classPrivateFieldGet(this, _error_codes).GENERAL, c=0; c1&&(n=e.replace(a+'.', '')), this.listenerArray.push({functionName: a, CMIElement: n, callback: t}); } } }}, {key: 'processListeners', value: function(e, t, r) { for (let i=0; i0&&u.length<=_.max?this.checkCorrectResponseValue(n, u, r):u.length>_.max&&this.throwSCORMError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE, 'Data Model Element Pattern Too Long'); }0===this.lastErrorCode&&(t=new _scorm2004_cmi.CMIInteractionsCorrectResponsesObject(this)); } else this.stringContains(e, '.objectives')?t=new _scorm2004_cmi.CMIInteractionsObjectivesObject(this):this.stringContains(e, 'cmi.interactions')?t=new _scorm2004_cmi.CMIInteractionsObject(this):this.stringContains(e, 'cmi.comments_from_learner')?t=new _scorm2004_cmi.CMICommentsFromLearnerObject(this):this.stringContains(e, 'cmi.comments_from_lms')&&(t=new _scorm2004_cmi.CMICommentsFromLMSObject(this)); return t; }}, {key: 'validateCorrectResponse', value: function(e, r) { const t=e.split('.'); const o=Number(t[2]); const s=Number(t[4]); const i=this.cmi.interactions.childArray[o]; const n=i.type; const c=i.correct_responses._count; if ('choice'===n) { for (let a=0; a0&&u.length<=_.max?this.checkCorrectResponseValue(n, u, r):u.length>_.max&&this.throwSCORMError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE, 'Data Model Element Pattern Too Long'), 0===this.lastErrorCode&&(!_.duplicate||!this.checkDuplicatedPattern(i.correct_responses, s, r))||0===this.lastErrorCode&&''===r||0===this.lastErrorCode&&this.throwSCORMError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE, 'Data Model Element Pattern Already Exists'); } else this.throwSCORMError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE, 'Data Model Element Collection Limit Reached'); }}, {key: 'getCMIValue', value: function(e) { return this._commonGetCMIValue('GetValue', !0, e); }}, {key: 'getLmsErrorMessageDetails', value: function(e, r) { let t=''; let o=''; return e=String(e), constants.error_descriptions[e]&&(t=constants.error_descriptions[e].basicMessage, o=constants.error_descriptions[e].detailMessage), r?o:t; }}, {key: 'checkCorrectResponseValue', value: function(e, r, t) { for (let o=_response_constants.correct_responses[e], s=new RegExp(o.format), i=0; i1)Number(r[0])>Number(r[1])&&this.throwSCORMError(_error_codes.scorm2004_error_codes.TYPE_MISMATCH); else if (''!==r[i]&&o.unique) for (let l=0; l0&&void 0===_language_constants.valid_languages[c.toLowerCase()]&&this.throwSCORMError(_error_codes.scorm2004_error_codes.TYPE_MISMATCH); }o=!0; break; case 'case_matters': o||r||t||'true'!==i[3]&&'false'!==i[3]&&this.throwSCORMError(_error_codes.scorm2004_error_codes.TYPE_MISMATCH), t=!0; break; case 'order_matters': t||o||r||'true'!==i[3]&&'false'!==i[3]&&this.throwSCORMError(_error_codes.scorm2004_error_codes.TYPE_MISMATCH), r=!0; }e=e.substr(i[1].length), i=e.match(s); } return e; }}, {key: 'replaceWithAnotherScormAPI', value: function(e) { this.cmi=e.cmi, this.adl=e.adl; }}, {key: 'getCurrentTotalTime', value: function() { const e=this.cmi.total_time; const r=this.cmi.session_time; return Util.addTwoDurations(e, r, _regex.scorm2004_regex.CMITimespan); }}, {key: 'version', get: function() { return _classPrivateFieldGet(this, _version); }}]), r; }(_BaseAPI2.default); exports.default=Scorm2004API; var _version=new WeakMap; }, {'./BaseAPI': 2, './cmi/scorm2004_cmi': 8, './constants/api_constants': 9, './constants/error_codes': 10, './constants/language_constants': 12, './constants/regex': 13, './constants/response_constants': 14, './utilities': 16}], 5: [function(require, module, exports) { 'use strict'; function _getRequireWildcardCache() { if ('function'!=typeof WeakMap) return null; const t=new WeakMap; return _getRequireWildcardCache=function() { return t; }, t; } function _interopRequireWildcard(t) { if (t&&t.__esModule) return t; if (null===t||'object'!==_typeof(t)&&'function'!=typeof t) return {default: t}; const e=_getRequireWildcardCache(); if (e&&e.has(t)) return e.get(t); const r={}; const i=Object.defineProperty&&Object.getOwnPropertyDescriptor; for (const n in t) { if (Object.prototype.hasOwnProperty.call(t, n)) { const o=i?Object.getOwnPropertyDescriptor(t, n):null; o&&(o.get||o.set)?Object.defineProperty(r, n, o):r[n]=t[n]; } } return r.default=t, e&&e.set(t, r), r; } function _typeof(t) { return (_typeof='function'==typeof Symbol&&'symbol'==typeof Symbol.iterator?function(t) { return typeof t; }:function(t) { return t&&'function'==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?'symbol':typeof t; })(t); } function _classPrivateFieldSet(t, e, r) { const i=e.get(t); if (!i) throw new TypeError('attempted to set private field on non-instance'); if (i.set)i.set.call(t, r); else { if (!i.writable) throw new TypeError('attempted to set read only private field'); i.value=r; } return r; } function _classPrivateFieldGet(t, e) { const r=e.get(t); if (!r) throw new TypeError('attempted to get private field on non-instance'); return r.get?r.get.call(t):r.value; } function _classCallCheck(t, e) { if (!(t instanceof e)) throw new TypeError('Cannot call a class as a function'); } function _defineProperties(t, e) { for (let r=0; r=r[0]) { if ('*'===r[1]||e<=r[1]) return !0; throw new _exceptions.ValidationError(i); } throw new _exceptions.ValidationError(i); }Object.defineProperty(exports, '__esModule', {value: !0}), exports.checkValidFormat=checkValidFormat, exports.checkValidRange=checkValidRange, exports.CMIArray=exports.CMIScore=exports.BaseCMI=void 0; const _api_constants=require('../constants/api_constants'); const _error_codes=require('../constants/error_codes'); var _exceptions=require('../exceptions'); const _regex=require('../constants/regex'); const BaseCMI=function() { function e() { _classCallCheck(this, e), _defineProperty(this, 'jsonString', !1), _initialized.set(this, {writable: !0, value: !1}); } return _createClass(e, [{key: 'initialize', value: function() { _classPrivateFieldSet(this, _initialized, !0); }}, {key: 'initialized', get: function() { return _classPrivateFieldGet(this, _initialized); }}]), e; }(); exports.BaseCMI=BaseCMI; var _initialized=new WeakMap; const CMIScore=function(e) { function t(e) { let i; const r=e.score_children; const a=e.score_range; const s=e.max; const n=e.invalidErrorCode; const o=e.invalidTypeCode; const l=e.invalidRangeCode; const _=e.decimalRegex; return _classCallCheck(this, t), i=_possibleConstructorReturn(this, _getPrototypeOf(t).call(this)), _children2.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _score_range.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _invalid_error_code.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _invalid_type_code.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _invalid_range_code.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _decimal_regex.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _raw.set(_assertThisInitialized(i), {writable: !0, value: ''}), _min.set(_assertThisInitialized(i), {writable: !0, value: ''}), _max.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _classPrivateFieldSet(_assertThisInitialized(i), _children2, r||_api_constants.scorm12_constants.score_children), _classPrivateFieldSet(_assertThisInitialized(i), _score_range, !!a&&_regex.scorm12_regex.score_range), _classPrivateFieldSet(_assertThisInitialized(i), _max, s||''===s?s:'100'), _classPrivateFieldSet(_assertThisInitialized(i), _invalid_error_code, n||_error_codes.scorm12_error_codes.INVALID_SET_VALUE), _classPrivateFieldSet(_assertThisInitialized(i), _invalid_type_code, o||_error_codes.scorm12_error_codes.TYPE_MISMATCH), _classPrivateFieldSet(_assertThisInitialized(i), _invalid_range_code, l||_error_codes.scorm12_error_codes.VALUE_OUT_OF_RANGE), _classPrivateFieldSet(_assertThisInitialized(i), _decimal_regex, _||_regex.scorm12_regex.CMIDecimal), i; } return _inherits(t, e), _createClass(t, [{key: 'toJSON', value: function() { return {raw: this.raw, min: this.min, max: this.max}; }}, {key: '_children', get: function() { return _classPrivateFieldGet(this, _children2); }, set: function(e) { throw new _exceptions.ValidationError(_classPrivateFieldGet(this, _invalid_error_code)); }}, {key: 'raw', get: function() { return _classPrivateFieldGet(this, _raw); }, set: function(e) { !checkValidFormat(e, _classPrivateFieldGet(this, _decimal_regex), _classPrivateFieldGet(this, _invalid_type_code))||_classPrivateFieldGet(this, _score_range)&&!checkValidRange(e, _classPrivateFieldGet(this, _score_range), _classPrivateFieldGet(this, _invalid_range_code))||_classPrivateFieldSet(this, _raw, e); }}, {key: 'min', get: function() { return _classPrivateFieldGet(this, _min); }, set: function(e) { !checkValidFormat(e, _classPrivateFieldGet(this, _decimal_regex), _classPrivateFieldGet(this, _invalid_type_code))||_classPrivateFieldGet(this, _score_range)&&!checkValidRange(e, _classPrivateFieldGet(this, _score_range), _classPrivateFieldGet(this, _invalid_range_code))||_classPrivateFieldSet(this, _min, e); }}, {key: 'max', get: function() { return _classPrivateFieldGet(this, _max); }, set: function(e) { !checkValidFormat(e, _classPrivateFieldGet(this, _decimal_regex), _classPrivateFieldGet(this, _invalid_type_code))||_classPrivateFieldGet(this, _score_range)&&!checkValidRange(e, _classPrivateFieldGet(this, _score_range), _classPrivateFieldGet(this, _invalid_range_code))||_classPrivateFieldSet(this, _max, e); }}]), t; }(BaseCMI); exports.CMIScore=CMIScore; var _children2=new WeakMap; var _score_range=new WeakMap; var _invalid_error_code=new WeakMap; var _invalid_type_code=new WeakMap; var _invalid_range_code=new WeakMap; var _decimal_regex=new WeakMap; var _raw=new WeakMap; var _min=new WeakMap; var _max=new WeakMap; const CMIArray=function(e) { function t(e) { let i; const r=e.children; const a=e.errorCode; return _classCallCheck(this, t), i=_possibleConstructorReturn(this, _getPrototypeOf(t).call(this)), _errorCode.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _children3.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _classPrivateFieldSet(_assertThisInitialized(i), _children3, r), _classPrivateFieldSet(_assertThisInitialized(i), _errorCode, a), i.childArray=[], i; } return _inherits(t, e), _createClass(t, [{key: 'toJSON', value: function() { this.jsonString=!0; for (var e={}, t=0; t0&&t.length<=i.max)) throw new _exceptions.ValidationError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE); for (let r=new RegExp(i.format), s=0; s0&&(s+=r), s&&(t+=''.concat(s).concat(o)); }), t; } function getTimeAsSeconds(e, t) { if (!e||'string'!=typeof e||!e.match(t)) return 0; const r=e.split(':'); return 3600*Number(r[0])+60*Number(r[1])+Number(r[2]); } function getDurationAsSeconds(e, t) { if (!e||!e.match(t)) return 0; const r=new RegExp(t).exec(e)||[]; const n=_slicedToArray(r, 8); const o=n[1]; const S=n[2]; const s=n[4]; const i=n[5]; const a=n[6]; const u=n[7]; const E=new Date; const _=new Date(E); if (_.setFullYear(_.getFullYear()+Number(o||0)), _.setMonth(_.getMonth()+Number(S||0)), _.setDate(_.getDate()+Number(s||0)), _.setHours(_.getHours()+Number(i||0)), _.setMinutes(_.getMinutes()+Number(a||0)), _.setSeconds(_.getSeconds()+Number(u||0)), u&&String(u).indexOf('.')>0) { const c=1e3*Number(Number(u)%1).toFixed(6); _.setMilliseconds(_.getMilliseconds()+c); } return (1*_-E)/1e3; } function addTwoDurations(e, t, r) { return getSecondsAsISODuration(getDurationAsSeconds(e, r)+getDurationAsSeconds(t, r)); } function addHHMMSSTimeStrings(e, t, r) { return getSecondsAsHHMMSS(getTimeAsSeconds(e, r)+getTimeAsSeconds(t, r)); }Object.defineProperty(exports, '__esModule', {value: !0}), exports.getSecondsAsHHMMSS=getSecondsAsHHMMSS, exports.getSecondsAsISODuration=getSecondsAsISODuration, exports.getTimeAsSeconds=getTimeAsSeconds, exports.getDurationAsSeconds=getDurationAsSeconds, exports.addTwoDurations=addTwoDurations, exports.addHHMMSSTimeStrings=addHHMMSSTimeStrings, exports.SECONDS_PER_DAY=exports.SECONDS_PER_HOUR=exports.SECONDS_PER_MINUTE=exports.SECONDS_PER_SECOND=void 0; const SECONDS_PER_SECOND=1; exports.SECONDS_PER_SECOND=SECONDS_PER_SECOND; const SECONDS_PER_MINUTE=60; exports.SECONDS_PER_MINUTE=SECONDS_PER_MINUTE; var SECONDS_PER_HOUR=60*SECONDS_PER_MINUTE; exports.SECONDS_PER_HOUR=SECONDS_PER_HOUR; const SECONDS_PER_DAY=24*SECONDS_PER_HOUR; exports.SECONDS_PER_DAY=SECONDS_PER_DAY; var designations=[['D', SECONDS_PER_DAY], ['H', SECONDS_PER_HOUR], ['M', SECONDS_PER_MINUTE], ['S', SECONDS_PER_SECOND]]; }, {}]}, {}, [1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3, 4, 16]); // # sourceMappingURL=scorm-again.js.map