@didask/scol-r
Version:
Shareable Cross-Origin Learning Resources
95 lines (94 loc) • 3.67 kB
JavaScript
;
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;