webglimpse
Version:
Webglimpse is a data visualization library for the web.
52 lines • 9.87 kB
JavaScript
import { isEmpty, hasval } from '../util/util';
/**
* Simple layout which sets the sizes of all child panes to the size of the parent pane
* (causing all the children to 'overlay' each other and the parent).
*/
export function newOverlayLayout() {
return {
updatePrefSize: function (parentPrefSize, children) {
const underlays = [];
for (let c = 0; c < children.length; c++) {
const child = children[c];
const isUnderlay = child.layoutArg;
if (isUnderlay) {
underlays.push(child);
}
}
if (!isEmpty(underlays)) {
let maxChildPrefWidth = 0;
let maxChildPrefHeight = 0;
for (let c = 0; c < underlays.length; c++) {
const childPrefSize = underlays[c].prefSize;
const childPrefWidth = childPrefSize.w;
if (hasval(maxChildPrefWidth) && hasval(childPrefWidth)) {
maxChildPrefWidth = Math.max(maxChildPrefWidth, childPrefWidth);
}
else {
maxChildPrefWidth = null;
}
const childPrefHeight = childPrefSize.h;
if (hasval(maxChildPrefHeight) && hasval(childPrefHeight)) {
maxChildPrefHeight = Math.max(maxChildPrefHeight, childPrefHeight);
}
else {
maxChildPrefHeight = null;
}
}
parentPrefSize.w = maxChildPrefWidth;
parentPrefSize.h = maxChildPrefHeight;
}
else {
parentPrefSize.w = 0;
parentPrefSize.h = 0;
}
},
updateChildViewports: function (children, parentViewport) {
for (let c = 0; c < children.length; c++) {
children[c].viewport.setBounds(parentViewport);
}
}
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheV9sYXlvdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd2ViZ2xpbXBzZS9sYXlvdXQvb3ZlcmxheV9sYXlvdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0JBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRy9DOzs7R0FHRztBQUNILE1BQU0sVUFBVSxnQkFBZ0I7SUFFNUIsT0FBZTtRQUVYLGNBQWMsRUFBRSxVQUFVLGNBQW9CLEVBQUUsUUFBdUI7WUFDbkUsTUFBTSxTQUFTLEdBQWtCLEVBQUUsQ0FBQztZQUNwQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUNuQyxJQUFJLFVBQVUsRUFBRTtvQkFDWixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUN6QjthQUNKO1lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDckIsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7Z0JBQzFCLElBQUksa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO2dCQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDdkMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztvQkFFNUMsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQztvQkFDdkMsSUFBSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUU7d0JBQ3JELGlCQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLENBQUM7cUJBQ25FO3lCQUNJO3dCQUNELGlCQUFpQixHQUFHLElBQUksQ0FBQztxQkFDNUI7b0JBRUQsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQztvQkFDeEMsSUFBSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUU7d0JBQ3ZELGtCQUFrQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLENBQUM7cUJBQ3RFO3lCQUNJO3dCQUNELGtCQUFrQixHQUFHLElBQUksQ0FBQztxQkFDN0I7aUJBQ0o7Z0JBQ0QsY0FBYyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztnQkFDckMsY0FBYyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQzthQUN6QztpQkFDSTtnQkFDRCxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEI7UUFDTCxDQUFDO1FBRUQsb0JBQW9CLEVBQUUsVUFBVSxRQUF1QixFQUFFLGNBQWtDO1lBQ3ZGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNsRDtRQUNMLENBQUM7S0FFSixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgMjAxNCwgTWV0cm9uLCBJbmMuXHJcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sXHJcbiAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcclxuICpcclxuICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzXHJcbiAqICAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxyXG4gKlxyXG4gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXHJcbiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb25cclxuICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXHJcbiAqXHJcbiAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzXHJcbiAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0XHJcbiAqICAgIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cclxuICpcclxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCIgQU5EXHJcbiAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXHJcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcclxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcclxuICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXHJcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUztcclxuICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OXHJcbiAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXHJcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTXHJcbiAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxyXG4gKi9cclxuaW1wb3J0IHsgTGF5b3V0LCBMYXlvdXRFbnRyeSB9IGZyb20gJy4uL2NvcmUnO1xyXG5pbXBvcnQgeyBTaXplLCBCb3VuZHNVbm1vZGlmaWFibGUgfSBmcm9tICcuLi9ib3VuZHMnO1xyXG5pbXBvcnQgeyBpc0VtcHR5LCBoYXN2YWwgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBTaW1wbGUgbGF5b3V0IHdoaWNoIHNldHMgdGhlIHNpemVzIG9mIGFsbCBjaGlsZCBwYW5lcyB0byB0aGUgc2l6ZSBvZiB0aGUgcGFyZW50IHBhbmVcclxuICogKGNhdXNpbmcgYWxsIHRoZSBjaGlsZHJlbiB0byAnb3ZlcmxheScgZWFjaCBvdGhlciBhbmQgdGhlIHBhcmVudCkuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbmV3T3ZlcmxheUxheW91dCgpOiBMYXlvdXQge1xyXG5cclxuICAgIHJldHVybiA8TGF5b3V0PntcclxuXHJcbiAgICAgICAgdXBkYXRlUHJlZlNpemU6IGZ1bmN0aW9uIChwYXJlbnRQcmVmU2l6ZTogU2l6ZSwgY2hpbGRyZW46IExheW91dEVudHJ5W10pIHtcclxuICAgICAgICAgICAgY29uc3QgdW5kZXJsYXlzOiBMYXlvdXRFbnRyeVtdID0gW107XHJcbiAgICAgICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgY2hpbGRyZW4ubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5bY107XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc1VuZGVybGF5ID0gY2hpbGQubGF5b3V0QXJnO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzVW5kZXJsYXkpIHtcclxuICAgICAgICAgICAgICAgICAgICB1bmRlcmxheXMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghaXNFbXB0eSh1bmRlcmxheXMpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbWF4Q2hpbGRQcmVmV2lkdGggPSAwO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1heENoaWxkUHJlZkhlaWdodCA9IDA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IHVuZGVybGF5cy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkUHJlZlNpemUgPSB1bmRlcmxheXNbY10ucHJlZlNpemU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkUHJlZldpZHRoID0gY2hpbGRQcmVmU2l6ZS53O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXN2YWwobWF4Q2hpbGRQcmVmV2lkdGgpICYmIGhhc3ZhbChjaGlsZFByZWZXaWR0aCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4Q2hpbGRQcmVmV2lkdGggPSBNYXRoLm1heChtYXhDaGlsZFByZWZXaWR0aCwgY2hpbGRQcmVmV2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4Q2hpbGRQcmVmV2lkdGggPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRQcmVmSGVpZ2h0ID0gY2hpbGRQcmVmU2l6ZS5oO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXN2YWwobWF4Q2hpbGRQcmVmSGVpZ2h0KSAmJiBoYXN2YWwoY2hpbGRQcmVmSGVpZ2h0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhDaGlsZFByZWZIZWlnaHQgPSBNYXRoLm1heChtYXhDaGlsZFByZWZIZWlnaHQsIGNoaWxkUHJlZkhlaWdodCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhDaGlsZFByZWZIZWlnaHQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHBhcmVudFByZWZTaXplLncgPSBtYXhDaGlsZFByZWZXaWR0aDtcclxuICAgICAgICAgICAgICAgIHBhcmVudFByZWZTaXplLmggPSBtYXhDaGlsZFByZWZIZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnRQcmVmU2l6ZS53ID0gMDtcclxuICAgICAgICAgICAgICAgIHBhcmVudFByZWZTaXplLmggPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdXBkYXRlQ2hpbGRWaWV3cG9ydHM6IGZ1bmN0aW9uIChjaGlsZHJlbjogTGF5b3V0RW50cnlbXSwgcGFyZW50Vmlld3BvcnQ6IEJvdW5kc1VubW9kaWZpYWJsZSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IGNoaWxkcmVuLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgICAgICAgICBjaGlsZHJlbltjXS52aWV3cG9ydC5zZXRCb3VuZHMocGFyZW50Vmlld3BvcnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH07XHJcbn1cclxuIl19