@deephaven/golden-layout
Version:
A multi-screen javascript Layout manager
100 lines (99 loc) • 5.21 kB
JavaScript
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
import $ from 'jquery';
import AbstractContentItem, { isComponent } from "./AbstractContentItem.js";
import RowOrColumn from "./RowOrColumn.js";
export default class Root extends AbstractContentItem {
constructor(layoutManager, config, containerElement) {
super(layoutManager, _objectSpread(_objectSpread({}, config), {}, {
type: 'root'
}), null, $('<div class="lm_goldenlayout lm_item lm_root"></div>'));
_defineProperty(this, "childElementContainer", void 0);
_defineProperty(this, "_containerElement", void 0);
this.isRoot = true;
this.type = 'root';
this.childElementContainer = this.element;
this._containerElement = containerElement;
this._containerElement.append(this.element);
}
addChild(contentItem, index) {
if (this.contentItems.length > 0) {
throw new Error('Root node can only have a single child');
}
contentItem = this.layoutManager._$normalizeContentItem(contentItem, this);
this.childElementContainer.append(contentItem.element);
super.addChild(contentItem, index);
this.callDownwards('setSize');
this.emitBubblingEvent('stateChanged');
}
setSize(width, height) {
var _this$_containerEleme, _this$_containerEleme2;
width = typeof width === 'undefined' ? (_this$_containerEleme = this._containerElement.width()) !== null && _this$_containerEleme !== void 0 ? _this$_containerEleme : 0 : width;
height = typeof height === 'undefined' ? (_this$_containerEleme2 = this._containerElement.height()) !== null && _this$_containerEleme2 !== void 0 ? _this$_containerEleme2 : 0 : height;
this.element.width(width);
this.element.height(height);
/*
* Root can be empty
*/
if (this.contentItems[0]) {
this.contentItems[0].element.width(width);
this.contentItems[0].element.height(height);
}
}
_$getArea() {
var area = super._$getArea();
if (area == null) {
throw new Error('Unable to get root area');
}
return area;
}
_$highlightDropZone(x, y, area) {
this.layoutManager.tabDropPlaceholder.remove();
super._$highlightDropZone(x, y, area);
}
_$onDrop(contentItem, area) {
var stack;
if (isComponent(contentItem)) {
stack = this.layoutManager.createContentItem({
type: 'stack',
header: contentItem.config.header || {}
}, this);
stack._$init();
stack.addChild(contentItem);
contentItem = stack;
}
if (!this.contentItems.length) {
this.addChild(contentItem);
} else {
var {
side
} = area;
var type = side === 'left' || side === 'right' ? 'row' : 'column'; // Should new root be a row or column
var dimension = side === 'left' || side === 'right' ? 'width' : 'height';
var insertBefore = side === 'left' || side === 'top';
var column = this.contentItems[0];
if (!(column instanceof RowOrColumn) || column.type != type) {
var rowOrColumn = this.layoutManager.createContentItem({
type: type
}, this);
this.replaceChild(column, rowOrColumn);
rowOrColumn.addChild(contentItem, insertBefore ? 0 : undefined, true);
rowOrColumn.addChild(column, insertBefore ? undefined : 0, true);
column.config[dimension] = 50;
contentItem.config[dimension] = 50;
rowOrColumn.callDownwards('setSize');
} else {
var _sibling$config$dimen;
var sibling = column.contentItems[insertBefore ? 0 : column.contentItems.length - 1];
column.addChild(contentItem, insertBefore ? 0 : undefined, true);
sibling.config[dimension] = ((_sibling$config$dimen = sibling.config[dimension]) !== null && _sibling$config$dimen !== void 0 ? _sibling$config$dimen : 0) * 0.5;
contentItem.config[dimension] = sibling.config[dimension];
column.callDownwards('setSize');
}
}
}
}
//# sourceMappingURL=Root.js.map