@quartic/bokehjs
Version:
Interactive, novel data visualization
70 lines (69 loc) • 2.21 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var delegateEventSplitter;
var $ = require("jquery");
var types_1 = require("core/util/types");
delegateEventSplitter = /^(\S+)\s*(.*)$/;
exports.JQueryable = {
_prefix_ui: function () {
var classList, cls, el, i, j, len, len1, ref, ref1;
ref = this.el.querySelectorAll("*[class*='ui-']");
for (i = 0, len = ref.length; i < len; i++) {
el = ref[i];
classList = [];
ref1 = el.classList;
for (j = 0, len1 = ref1.length; j < len1; j++) {
cls = ref1[j];
classList.push(cls.indexOf("ui-") === 0 ? "bk-" + cls : cls);
}
el.className = classList.join(" ");
}
return null;
},
_setElement: function (el) {
this.$el = el instanceof $ ? el : $(el);
return this.el = this.$el[0];
},
setElement: function (element) {
this.undelegateEvents();
this._setElement(element);
this.delegateEvents();
return this;
},
delegateEvents: function (events) {
var key, match, method;
if (events == null) {
events = this.events;
}
if (!events) {
return this;
}
this.undelegateEvents();
for (key in events) {
method = events[key];
if (!types_1.isFunction(method)) {
method = this[method];
}
if (method == null) {
continue;
}
match = key.match(delegateEventSplitter);
this.delegate(match[1], match[2], method.bind(this));
}
return this;
},
delegate: function (eventName, selector, listener) {
this.$el.on(eventName + '.delegateEvents' + this.id, selector, listener);
return this;
},
undelegateEvents: function () {
if (this.$el) {
this.$el.off('.delegateEvents' + this.id);
}
return this;
},
undelegate: function (eventName, selector, listener) {
this.$el.off(eventName + '.delegateEvents' + this.id, selector, listener);
return this;
}
};