UNPKG

webglimpse

Version:

Webglimpse is a data visualization library for the web.

77 lines 12.2 kB
/* * Copyright (c) 2014, Metron, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. Neither the name of the copyright holder nor the names of its contributors * may be used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ import { Side } from '../misc'; import { hasval } from '../util/util'; export function newCornerLayout(hSide, vSide) { return { updatePrefSize: function (parentPrefSize, children) { if (children.length === 1) { const childPrefSize = children[0].prefSize; parentPrefSize.w = childPrefSize.w; parentPrefSize.h = childPrefSize.h; } else if (children.length > 1) { throw new Error('Corner layout only works with 1 child, but pane has ' + this.children.length + ' children'); } }, updateChildViewports: function (children, parentViewport) { if (children.length === 1) { const child = children[0]; let iStart; let iEnd; const w = child.prefSize.w; if (hSide === Side.RIGHT) { iEnd = parentViewport.iEnd; iStart = (hasval(w) ? Math.max(iEnd - w, parentViewport.iStart) : parentViewport.iStart); } else { iStart = parentViewport.iStart; iEnd = (hasval(w) ? Math.min(iStart + w, parentViewport.iEnd) : parentViewport.iEnd); } let jStart; let jEnd; const h = child.prefSize.h; if (vSide === Side.BOTTOM) { jStart = parentViewport.jStart; jEnd = (hasval(h) ? Math.min(jStart + h, parentViewport.jEnd) : parentViewport.jEnd); } else { jEnd = parentViewport.jEnd; jStart = (hasval(h) ? Math.max(jEnd - h, parentViewport.jStart) : parentViewport.jStart); } child.viewport.setEdges(iStart, iEnd, jStart, jEnd); } else if (children.length > 1) { throw new Error('Corner layout only works with 1 child, but pane has ' + this.children.length + ' children'); } } }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ybmVyX2xheW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93ZWJnbGltcHNlL2xheW91dC9jb3JuZXJfbGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ0gsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUcvQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR3RDLE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBVyxFQUFFLEtBQVc7SUFDcEQsT0FBZTtRQUNYLGNBQWMsRUFBRSxVQUFVLGNBQW9CLEVBQUUsUUFBdUI7WUFDbkUsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDdkIsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDM0MsY0FBYyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxjQUFjLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUM7YUFDdEM7aUJBQ0ksSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQzthQUNoSDtRQUNMLENBQUM7UUFDRCxvQkFBb0IsRUFBRSxVQUFVLFFBQXVCLEVBQUUsY0FBa0M7WUFDdkYsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDdkIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUUxQixJQUFJLE1BQU0sQ0FBQztnQkFDWCxJQUFJLElBQUksQ0FBQztnQkFDVCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDdEIsSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7b0JBQzNCLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUM1RjtxQkFDSTtvQkFDRCxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztvQkFDL0IsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3hGO2dCQUVELElBQUksTUFBTSxDQUFDO2dCQUNYLElBQUksSUFBSSxDQUFDO2dCQUNULE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUN2QixNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztvQkFDL0IsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3hGO3FCQUNJO29CQUNELElBQUksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDO29CQUMzQixNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDNUY7Z0JBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDdkQ7aUJBQ0ksSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQzthQUNoSDtRQUNMLENBQUM7S0FDSixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgMjAxNCwgTWV0cm9uLCBJbmMuXHJcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sXHJcbiAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcclxuICpcclxuICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzXHJcbiAqICAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxyXG4gKlxyXG4gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXHJcbiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb25cclxuICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXHJcbiAqXHJcbiAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzXHJcbiAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0XHJcbiAqICAgIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cclxuICpcclxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCIgQU5EXHJcbiAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXHJcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcclxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcclxuICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXHJcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUztcclxuICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OXHJcbiAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXHJcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTXHJcbiAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxyXG4gKi9cclxuaW1wb3J0IHsgU2lkZSB9IGZyb20gJy4uL21pc2MnO1xyXG5pbXBvcnQgeyBMYXlvdXQsIExheW91dEVudHJ5IH0gZnJvbSAnLi4vY29yZSc7XHJcbmltcG9ydCB7IFNpemUsIEJvdW5kc1VubW9kaWZpYWJsZSB9IGZyb20gJy4uL2JvdW5kcyc7XHJcbmltcG9ydCB7IGhhc3ZhbCB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG5ld0Nvcm5lckxheW91dChoU2lkZTogU2lkZSwgdlNpZGU6IFNpZGUpOiBMYXlvdXQge1xyXG4gICAgcmV0dXJuIDxMYXlvdXQ+e1xyXG4gICAgICAgIHVwZGF0ZVByZWZTaXplOiBmdW5jdGlvbiAocGFyZW50UHJlZlNpemU6IFNpemUsIGNoaWxkcmVuOiBMYXlvdXRFbnRyeVtdKSB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkUHJlZlNpemUgPSBjaGlsZHJlblswXS5wcmVmU2l6ZTtcclxuICAgICAgICAgICAgICAgIHBhcmVudFByZWZTaXplLncgPSBjaGlsZFByZWZTaXplLnc7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnRQcmVmU2l6ZS5oID0gY2hpbGRQcmVmU2l6ZS5oO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29ybmVyIGxheW91dCBvbmx5IHdvcmtzIHdpdGggMSBjaGlsZCwgYnV0IHBhbmUgaGFzICcgKyB0aGlzLmNoaWxkcmVuLmxlbmd0aCArICcgY2hpbGRyZW4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdXBkYXRlQ2hpbGRWaWV3cG9ydHM6IGZ1bmN0aW9uIChjaGlsZHJlbjogTGF5b3V0RW50cnlbXSwgcGFyZW50Vmlld3BvcnQ6IEJvdW5kc1VubW9kaWZpYWJsZSkge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBpU3RhcnQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgaUVuZDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHcgPSBjaGlsZC5wcmVmU2l6ZS53O1xyXG4gICAgICAgICAgICAgICAgaWYgKGhTaWRlID09PSBTaWRlLlJJR0hUKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaUVuZCA9IHBhcmVudFZpZXdwb3J0LmlFbmQ7XHJcbiAgICAgICAgICAgICAgICAgICAgaVN0YXJ0ID0gKGhhc3ZhbCh3KSA/IE1hdGgubWF4KGlFbmQgLSB3LCBwYXJlbnRWaWV3cG9ydC5pU3RhcnQpIDogcGFyZW50Vmlld3BvcnQuaVN0YXJ0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlTdGFydCA9IHBhcmVudFZpZXdwb3J0LmlTdGFydDtcclxuICAgICAgICAgICAgICAgICAgICBpRW5kID0gKGhhc3ZhbCh3KSA/IE1hdGgubWluKGlTdGFydCArIHcsIHBhcmVudFZpZXdwb3J0LmlFbmQpIDogcGFyZW50Vmlld3BvcnQuaUVuZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGpTdGFydDtcclxuICAgICAgICAgICAgICAgIGxldCBqRW5kO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaCA9IGNoaWxkLnByZWZTaXplLmg7XHJcbiAgICAgICAgICAgICAgICBpZiAodlNpZGUgPT09IFNpZGUuQk9UVE9NKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgalN0YXJ0ID0gcGFyZW50Vmlld3BvcnQualN0YXJ0O1xyXG4gICAgICAgICAgICAgICAgICAgIGpFbmQgPSAoaGFzdmFsKGgpID8gTWF0aC5taW4oalN0YXJ0ICsgaCwgcGFyZW50Vmlld3BvcnQuakVuZCkgOiBwYXJlbnRWaWV3cG9ydC5qRW5kKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGpFbmQgPSBwYXJlbnRWaWV3cG9ydC5qRW5kO1xyXG4gICAgICAgICAgICAgICAgICAgIGpTdGFydCA9IChoYXN2YWwoaCkgPyBNYXRoLm1heChqRW5kIC0gaCwgcGFyZW50Vmlld3BvcnQualN0YXJ0KSA6IHBhcmVudFZpZXdwb3J0LmpTdGFydCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2hpbGQudmlld3BvcnQuc2V0RWRnZXMoaVN0YXJ0LCBpRW5kLCBqU3RhcnQsIGpFbmQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29ybmVyIGxheW91dCBvbmx5IHdvcmtzIHdpdGggMSBjaGlsZCwgYnV0IHBhbmUgaGFzICcgKyB0aGlzLmNoaWxkcmVuLmxlbmd0aCArICcgY2hpbGRyZW4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuXHJcblxyXG4iXX0=