@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
43 lines (42 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class MultiLayout {
constructor(SubLayoutClass, subLayoutConstructorArgs = {}) {
this.SubLayoutClass = SubLayoutClass;
this.subLayoutConstructorArgs = subLayoutConstructorArgs;
this.subLayouts = new Map();
}
getDataByID(id) {
for (const layout of this.subLayouts.values()) {
const r = layout.getDataByID(id);
if (r) {
return r;
}
}
return undefined;
}
getSublayout(layoutName) {
let subLayout = this.subLayouts.get(layoutName);
if (subLayout === undefined) {
subLayout = new this.SubLayoutClass(this.subLayoutConstructorArgs);
this.subLayouts.set(layoutName, subLayout);
return subLayout;
}
return subLayout;
}
addRect(layoutName, id, left, right, height, data = {}) {
return this.getSublayout(layoutName).addRect(id, left, right, height, data);
}
discardRange(layoutName, left, right) {
var _a;
return (_a = this.subLayouts.get(layoutName)) === null || _a === void 0 ? void 0 : _a.discardRange(left, right);
}
toJSON() {
const data = {};
for (const [layoutName, sublayout] of this.subLayouts.entries()) {
data[layoutName] = sublayout.toJSON();
}
return data;
}
}
exports.default = MultiLayout;