Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads
// Object containing various event constants
window.HUB_EVENTS = {
ASSET_ADDED: "ASSET_ADDED",
ASSET_DELETED: "ASSET_DELETED",
ASSET_DESELECTED: "ASSET_DESELECTED",
ASSET_SELECTED: "ASSET_SELECTED",
ASSET_UPDATED: "ASSET_UPDATED",
CONSOLE_CHANGE: "CONSOLE_CHANGE",
CONSOLE_CLOSED: "CONSOLE_CLOSED",
CONSOLE_EVENT: "CONSOLE_EVENT",
CONSOLE_OPENED: "CONSOLE_OPENED",
CONSOLE_RUN_COMMAND: "CONSOLE_RUN_COMMAND",
CONSOLE_SERVER_CHANGE: "CONSOLE_SERVER_CHANGE",
EMBED_ACTIVE_PEN_CHANGE: "EMBED_ACTIVE_PEN_CHANGE",
EMBED_ACTIVE_THEME_CHANGE: "EMBED_ACTIVE_THEME_CHANGE",
EMBED_ATTRIBUTE_CHANGE: "EMBED_ATTRIBUTE_CHANGE",
EMBED_RESHOWN: "EMBED_RESHOWN",
FORMAT_FINISH: "FORMAT_FINISH",
FORMAT_ERROR: "FORMAT_ERROR",
FORMAT_START: "FORMAT_START",
IFRAME_PREVIEW_RELOAD_CSS: "IFRAME_PREVIEW_RELOAD_CSS",
IFRAME_PREVIEW_URL_CHANGE: "IFRAME_PREVIEW_URL_CHANGE",
KEY_PRESS: "KEY_PRESS",
LINTER_FINISH: "LINTER_FINISH",
LINTER_START: "LINTER_START",
PEN_CHANGE_SERVER: "PEN_CHANGE_SERVER",
PEN_CHANGE: "PEN_CHANGE",
PEN_EDITOR_CLOSE: "PEN_EDITOR_CLOSE",
PEN_EDITOR_CODE_FOLD: "PEN_EDITOR_CODE_FOLD",
PEN_EDITOR_ERRORS: "PEN_EDITOR_ERRORS",
PEN_EDITOR_EXPAND: "PEN_EDITOR_EXPAND",
PEN_EDITOR_FOLD_ALL: "PEN_EDITOR_FOLD_ALL",
PEN_EDITOR_LOADED: "PEN_EDITOR_LOADED",
PEN_EDITOR_REFRESH_REQUEST: "PEN_EDITOR_REFRESH_REQUEST",
PEN_EDITOR_RESET_SIZES: "PEN_EDITOR_RESET_SIZES",
PEN_EDITOR_SIZES_CHANGE: "PEN_EDITOR_SIZES_CHANGE",
PEN_EDITOR_UI_CHANGE_SERVER: "PEN_EDITOR_UI_CHANGE_SERVER",
PEN_EDITOR_UI_CHANGE: "PEN_EDITOR_UI_CHANGE",
PEN_EDITOR_UI_DISABLE: "PEN_EDITOR_UI_DISABLE",
PEN_EDITOR_UI_ENABLE: "PEN_EDITOR_UI_ENABLE",
PEN_EDITOR_UNFOLD_ALL: "PEN_EDITOR_UNFOLD_ALL",
PEN_ERROR_INFINITE_LOOP: "PEN_ERROR_INFINITE_LOOP",
PEN_ERROR_RUNTIME: "PEN_ERROR_RUNTIME",
PEN_ERRORS: "PEN_ERRORS",
PEN_LIVE_CHANGE: "PEN_LIVE_CHANGE",
PEN_LOGS: "PEN_LOGS",
PEN_MANIFEST_CHANGE: "PEN_MANIFEST_CHANGE",
PEN_MANIFEST_FULL: "PEN_MANIFEST_FULL",
PEN_PREVIEW_FINISH: "PEN_PREVIEW_FINISH",
PEN_PREVIEW_START: "PEN_PREVIEW_START",
PEN_SAVED: "PEN_SAVED",
POPUP_CLOSE: "POPUP_CLOSE",
POPUP_OPEN: "POPUP_OPEN",
POST_CHANGE: "POST_CHANGE",
POST_SAVED: "POST_SAVED",
PROCESSING_FINISH: "PROCESSING_FINISH",
PROCESSING_START: "PROCESSED_STARTED"
};
// Check if window.CP is not an object, and if not, initialize it as an empty object
if (typeof window.CP !== 'object') {
window.CP = {};
}
// Object defining properties and methods related to loop monitoring
window.CP.PenTimer = {
// Properties related to loop monitoring
programNoLongerBeingMonitored: false,
timeOfFirstCallToShouldStopLoop: 0,
_loopExits: {},
_loopTimers: {},
START_MONITORING_AFTER: 2e3,
STOP_ALL_MONITORING_TIMEOUT: 5e3,
MAX_TIME_IN_LOOP_WO_EXIT: 2200,
// Method to mark a loop as exited
exitedLoop: function (E) {
this._loopExits[E] = true;
},
// Method to determine if a loop should stop to prevent infinite execution
shouldStopLoop: function (E) {
if (this.programKilledSoStopMonitoring) return true;
if (this.programNoLongerBeingMonitored) return false;
if (this._loopExits[E]) return false;
var _ = this._getTime();
if (this.timeOfFirstCallToShouldStopLoop === 0) {
this.timeOfFirstCallToShouldStopLoop = _;
return false;
}
var o = _ - this.timeOfFirstCallToShouldStopLoop;
if (o < this.START_MONITORING_AFTER) return false;
if (o > this.STOP_ALL_MONITORING_TIMEOUT) {
this.programNoLongerBeingMonitored = true;
return false;
}
try {
this._checkOnInfiniteLoop(E, _);
} catch (N) {
this._sendErrorMessageToEditor();
this.programKilledSoStopMonitoring = true;
return true;
}
return false;
},
// Method to send an error message to the editor
_sendErrorMessageToEditor: function () {
try {
if (this._shouldPostMessage()) {
var E = {
topic: HUB_EVENTS.PEN_ERROR_INFINITE_LOOP,
data: {
line: this._findAroundLineNumber()
}
};
parent.postMessage(E, "*");
} else {
this._throwAnErrorToStopPen();
}
} catch (_) {
this._throwAnErrorToStopPen();
}
},
// Method to check if a message should be posted
_shouldPostMessage: function () {
return document.location.href.match(/boomboom/);
},
// Method to throw an error to stop pen execution
_throwAnErrorToStopPen: function () {
throw "We found an infinite loop in your Pen. We've stopped the Pen from running. More details and workarounds at https://blog.codepen.io/2016/06/08/can-adjust-infinite-loop-protection-timing/";
},
// Method to find the line number where the infinite loop occurred
_findAroundLineNumber: function () {
var E = new Error(),
_ = 0;
if (E.stack) {
var o = E.stack.match(/boomboom\S+:(\d+):\d+/);
if (o) {
_ = o[1];
}
}
return _;
},
// Method to check for an infinite loop in a specific loop execution
_checkOnInfiniteLoop: function (E, _) {
if (!this._loopTimers[E]) {
this._loopTimers[E] = _;
return false;
}
if (_ - this._loopTimers[E] > this.MAX_TIME_IN_LOOP_WO_EXIT) {
throw "Infinite Loop found on loop: " + E;
}
},
// Method to get the current timestamp
_getTime: function () {
return +new Date();
}
};
// Method to check if a loop should be stopped and log a warning message if detected
window.CP.shouldStopExecution = function (E) {
var _ = window.CP.PenTimer.shouldStopLoop(E);
if (_ === true) {
console.warn("[CodePen]: An infinite loop (or a loop taking too long) was detected, so we stopped its execution. More details at https://blog.codepen.io/2016/06/08/can-adjust-infinite-loop-protection-timing/");
}
return _;
};
// Method to mark a loop as exited
window.CP.exitedLoop = function (E) {
window.CP.PenTimer.exitedLoop(E);
};