37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
// Copyright (c) Jupyter Development Team.
|
|
// Distributed under the terms of the Modified BSD License.
|
|
|
|
// Give us an object to bind all events to. This object should be created
|
|
// before all other objects so it exists when others register event handlers.
|
|
// To register an event handler:
|
|
//
|
|
// requirejs(['base/js/events'], function (events) {
|
|
// events.on("event.Namespace", function () { do_stuff(); });
|
|
// });
|
|
|
|
define(['jquery', 'base/js/namespace'], function($, Jupyter) {
|
|
"use strict";
|
|
|
|
// Events singleton
|
|
if (!window._Events) {
|
|
window._Events = function () {};
|
|
window._events = new window._Events();
|
|
}
|
|
|
|
// Backwards compatibility.
|
|
Jupyter.Events = window._Events;
|
|
Jupyter.events = window._events;
|
|
|
|
var events = $([window._events]);
|
|
|
|
// catch and log errors in triggered events
|
|
events._original_trigger = events.trigger;
|
|
events.trigger = function (name, data) {
|
|
try {
|
|
this._original_trigger.apply(this, arguments);
|
|
} catch (e) {
|
|
console.error("Exception in event handler for " + name, e, arguments);
|
|
}
|
|
}
|
|
return events;
|
|
});
|