UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

41 lines (40 loc) 1.38 kB
export default class MultiLayout { SubLayoutClass; subLayoutConstructorArgs; subLayouts = new Map(); constructor(SubLayoutClass, subLayoutConstructorArgs = {}) { this.SubLayoutClass = SubLayoutClass; this.subLayoutConstructorArgs = subLayoutConstructorArgs; } 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 = {}, serializableData) { return this.getSublayout(layoutName).addRect(id, left, right, height, data, serializableData); } discardRange(layoutName, left, right) { return this.subLayouts.get(layoutName)?.discardRange(left, right); } toJSON() { const data = {}; for (const [layoutName, sublayout] of this.subLayouts.entries()) { data[layoutName] = sublayout.toJSON(); } return data; } }