UNPKG

@didask/scol-r

Version:

Shareable Cross-Origin Learning Resources

95 lines (94 loc) 3.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MessageEmitter = exports.MessageReceiver = void 0; var MessageReceiver = /** @class */ (function () { function MessageReceiver(win, sourceOrigin, adapter) { this.adapter = adapter; var timeoutId = null; win.addEventListener("message", function (e) { var _this = this; if (e.origin !== sourceOrigin) return; var functionName = e.data["function"]; var functionArgs = e.data["arguments"]; if (functionName && functionArgs && typeof this[functionName] === "function") { // @ts-ignore this[functionName].apply(this, functionArgs); if (timeoutId) { clearTimeout(timeoutId); } timeoutId = setTimeout(function () { _this.commit(); timeoutId = null; }, 500); } }.bind(this)); } MessageReceiver.prototype.commit = function () { this.adapter.LMSCommit(); }; MessageReceiver.prototype.setTitle = function (title) { document.title = title; }; MessageReceiver.prototype.setScore = function (score) { this.adapter.setScore(score); }; MessageReceiver.prototype.setStudent = function (studentId, studentName) { this.adapter.setStudent(studentId, studentName); }; MessageReceiver.prototype.setLessonStatus = function (lessonStatus) { this.adapter.setLessonStatus(lessonStatus); }; MessageReceiver.prototype.setObjectives = function (objectivesIds) { if (this.adapter.objectivesAreAvailable) { this.adapter.setObjectives(objectivesIds); } }; MessageReceiver.prototype.setObjectiveScore = function (objectiveId, score) { if (this.adapter.objectivesAreAvailable) { this.adapter.setObjectiveScore(objectiveId, score); } }; MessageReceiver.prototype.setObjectiveStatus = function (objectiveId, status) { if (this.adapter.objectivesAreAvailable) { this.adapter.setObjectiveStatus(objectiveId, status); } }; return MessageReceiver; }()); exports.MessageReceiver = MessageReceiver; var MessageEmitter = /** @class */ (function () { function MessageEmitter(lmsOrigin) { this.currentWindow = window.parent || window.opener; this.lmsOrigin = lmsOrigin; } MessageEmitter.prototype.sendMessage = function (name, values) { this.currentWindow.postMessage({ function: name, arguments: values, }, this.lmsOrigin); }; MessageEmitter.prototype.setStudent = function (_a) { var id = _a.id, name = _a.name; this.sendMessage("setStudent", [id, name]); }; MessageEmitter.prototype.setLessonStatus = function (status) { this.sendMessage("setLessonStatus", [status]); }; MessageEmitter.prototype.setScore = function (score) { this.sendMessage("setScore", [score]); }; MessageEmitter.prototype.setObjectives = function (objectives) { this.sendMessage("setObjectives", [objectives]); }; MessageEmitter.prototype.setObjectiveScore = function (objectiveId, score) { this.sendMessage("setObjectiveScore", [objectiveId, score]); }; MessageEmitter.prototype.setObjectiveStatus = function (objectiveId, status) { this.sendMessage("setObjectiveStatus", [objectiveId, status]); }; return MessageEmitter; }()); exports.MessageEmitter = MessageEmitter;