UNPKG

dockview

Version:

Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support

44 lines (43 loc) 1.6 kB
export class HostedPanel { constructor(panel, options) { this.panel = panel; this.options = options; if (!options.parent) { options.parent = document.getElementById('app'); options.parent.style.position = 'relative'; } this._element = document.createElement('div'); this._element.style.visibility = 'hidden'; this._element.style.overflow = 'hidden'; // this._element.style.pointerEvents = 'none'; this._element.id = `webivew-${options.id}`; options.parent.appendChild(this._element); } get element() { return this._element; } get id() { return this.panel.id; } hide() { this._element.style.visibility = 'hidden'; } show() { this._element.style.visibility = 'visible'; } layout(element, dimension) { if (!this.element || !this.element.parentElement) { return; } const frameRect = element.getBoundingClientRect(); const containerRect = this.element.parentElement.getBoundingClientRect(); this.element.style.position = 'absolute'; this.element.style.top = `${frameRect.top - containerRect.top}px`; this.element.style.left = `${frameRect.left - containerRect.left}px`; this.element.style.width = `${dimension ? dimension.width : frameRect.width}px`; this.element.style.height = `${dimension ? dimension.height : frameRect.height}px`; } dispose() { this._element.remove(); } }