events.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // Copyright (c) Jupyter Development Team.
  2. // Distributed under the terms of the Modified BSD License.
  3. // Give us an object to bind all events to. This object should be created
  4. // before all other objects so it exists when others register event handlers.
  5. // To register an event handler:
  6. //
  7. // requirejs(['base/js/events'], function (events) {
  8. // events.on("event.Namespace", function () { do_stuff(); });
  9. // });
  10. define(['jquery', 'base/js/namespace'], function($, Jupyter) {
  11. "use strict";
  12. // Events singleton
  13. if (!window._Events) {
  14. window._Events = function () {};
  15. window._events = new window._Events();
  16. }
  17. // Backwards compatability.
  18. Jupyter.Events = window._Events;
  19. Jupyter.events = window._events;
  20. var events = $([window._events]);
  21. // catch and log errors in triggered events
  22. events._original_trigger = events.trigger;
  23. events.trigger = function (name, data) {
  24. try {
  25. this._original_trigger.apply(this, arguments);
  26. } catch (e) {
  27. console.error("Exception in event handler for " + name, e, arguments);
  28. }
  29. }
  30. return events;
  31. });