UNPKG

@catull/igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

88 lines 15.7 kB
import { cloneValue } from '../../core/utils'; export var HorizontalAlignment; (function (HorizontalAlignment) { HorizontalAlignment[HorizontalAlignment["Left"] = -1] = "Left"; HorizontalAlignment[HorizontalAlignment["Center"] = -0.5] = "Center"; HorizontalAlignment[HorizontalAlignment["Right"] = 0] = "Right"; })(HorizontalAlignment || (HorizontalAlignment = {})); export var VerticalAlignment; (function (VerticalAlignment) { VerticalAlignment[VerticalAlignment["Top"] = -1] = "Top"; VerticalAlignment[VerticalAlignment["Middle"] = -0.5] = "Middle"; VerticalAlignment[VerticalAlignment["Bottom"] = 0] = "Bottom"; })(VerticalAlignment || (VerticalAlignment = {})); var Point = /** @class */ (function () { function Point(x, y) { this.x = x; this.y = y; } return Point; }()); export { Point }; /** @hidden */ var Util = /** @class */ (function () { function Util() { } /** * @hidden * Calculates the rectangle of target for provided overlay settings. Defaults to 0,0,0,0,0,0 rectangle * if no target is provided * @param settings Overlay settings for which to calculate target rectangle */ Util.getTargetRect = function (settings) { var targetRect = { bottom: 0, height: 0, left: 0, right: 0, top: 0, width: 0 }; if (settings.target instanceof HTMLElement) { targetRect = settings.target.getBoundingClientRect(); } else if (settings.target instanceof Point) { var targetPoint = settings.target; targetRect = { bottom: targetPoint.y, height: 0, left: targetPoint.x, right: targetPoint.x, top: targetPoint.y, width: 0 }; } return targetRect; }; /** @hidden @internal */ Util.getViewportRect = function (document) { var width = document.documentElement.clientWidth; var height = document.documentElement.clientHeight; var scrollPosition = Util.getViewportScrollPosition(document); return { top: scrollPosition.y, left: scrollPosition.x, right: scrollPosition.x + width, bottom: scrollPosition.y + height, width: width, height: height, }; }; /** @hidden @internal */ Util.getViewportScrollPosition = function (document) { var documentElement = document.documentElement; var documentRect = documentElement.getBoundingClientRect(); var horizontalScrollPosition = -documentRect.left || document.body.scrollLeft || window.scrollX || documentElement.scrollLeft || 0; var verticalScrollPosition = -documentRect.top || document.body.scrollTop || window.scrollY || documentElement.scrollTop || 0; return new Point(horizontalScrollPosition, verticalScrollPosition); }; /** @hidden @internal*/ Util.cloneInstance = function (object) { var clonedObj = Object.assign(Object.create(Object.getPrototypeOf(object)), object); clonedObj.settings = cloneValue(clonedObj.settings); return clonedObj; }; return Util; }()); export { Util }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9vdmVybGF5L3V0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQW1ELFVBQVUsRUFBa0IsTUFBTSxrQkFBa0IsQ0FBQztBQUUvRyxNQUFNLENBQU4sSUFBWSxtQkFJWDtBQUpELFdBQVksbUJBQW1CO0lBQzNCLDhEQUFTLENBQUE7SUFDVCxvRUFBYSxDQUFBO0lBQ2IsK0RBQVMsQ0FBQTtBQUNiLENBQUMsRUFKVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSTlCO0FBRUQsTUFBTSxDQUFOLElBQVksaUJBSVg7QUFKRCxXQUFZLGlCQUFpQjtJQUN6Qix3REFBUSxDQUFBO0lBQ1IsZ0VBQWEsQ0FBQTtJQUNiLDZEQUFVLENBQUE7QUFDZCxDQUFDLEVBSlcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUk1QjtBQUVEO0lBQ0ksZUFBbUIsQ0FBUyxFQUFTLENBQVM7UUFBM0IsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQVE7SUFBSSxDQUFDO0lBQ3ZELFlBQUM7QUFBRCxDQUFDLEFBRkQsSUFFQzs7QUE2R0QsY0FBYztBQUNkO0lBQUE7SUFvRUEsQ0FBQztJQW5FRzs7Ozs7T0FLRztJQUNJLGtCQUFhLEdBQXBCLFVBQXFCLFFBQTBCO1FBQzNDLElBQUksVUFBVSxHQUFlO1lBQ3pCLE1BQU0sRUFBRSxDQUFDO1lBQ1QsTUFBTSxFQUFFLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQztZQUNQLEtBQUssRUFBRSxDQUFDO1lBQ1IsR0FBRyxFQUFFLENBQUM7WUFDTixLQUFLLEVBQUUsQ0FBQztTQUNYLENBQUM7UUFFRixJQUFJLFFBQVEsQ0FBQyxNQUFNLFlBQVksV0FBVyxFQUFFO1lBQ3hDLFVBQVUsR0FBSSxRQUFRLENBQUMsTUFBc0IsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1NBQ3pFO2FBQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxZQUFZLEtBQUssRUFBRTtZQUN6QyxJQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBZSxDQUFDO1lBQzdDLFVBQVUsR0FBRztnQkFDVCxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ3JCLE1BQU0sRUFBRSxDQUFDO2dCQUNULElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDbkIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUNwQixHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ2xCLEtBQUssRUFBRSxDQUFDO2FBQ1gsQ0FBQztTQUNMO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVELHdCQUF3QjtJQUNqQixvQkFBZSxHQUF0QixVQUF1QixRQUFrQjtRQUNyQyxJQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQztRQUNuRCxJQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztRQUNyRCxJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEUsT0FBTztZQUNILEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUNyQixJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDdEIsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDLEdBQUcsS0FBSztZQUMvQixNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUMsR0FBRyxNQUFNO1lBQ2pDLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLE1BQU07U0FDakIsQ0FBQztJQUNOLENBQUM7SUFFRCx3QkFBd0I7SUFDakIsOEJBQXlCLEdBQWhDLFVBQWlDLFFBQWtCO1FBQy9DLElBQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFDakQsSUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFN0QsSUFBTSx3QkFBd0IsR0FDMUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7UUFDeEcsSUFBTSxzQkFBc0IsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztRQUVoSSxPQUFPLElBQUksS0FBSyxDQUFDLHdCQUF3QixFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELHVCQUF1QjtJQUNoQixrQkFBYSxHQUFwQixVQUFxQixNQUFNO1FBQ3ZCLElBQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEYsU0FBUyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFDTCxXQUFDO0FBQUQsQ0FBQyxBQXBFRCxJQW9FQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQb3NpdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9wb3NpdGlvbi9JUG9zaXRpb25TdHJhdGVneSc7XG5cbmltcG9ydCB7IElTY3JvbGxTdHJhdGVneSB9IGZyb20gJy4vc2Nyb2xsJztcbmltcG9ydCB7IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhLCBBbmltYXRpb25QbGF5ZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgRWxlbWVudFJlZiwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hPdmVybGF5T3V0bGV0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncywgY2xvbmVWYWx1ZSwgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcblxuZXhwb3J0IGVudW0gSG9yaXpvbnRhbEFsaWdubWVudCB7XG4gICAgTGVmdCA9IC0xLFxuICAgIENlbnRlciA9IC0wLjUsXG4gICAgUmlnaHQgPSAwXG59XG5cbmV4cG9ydCBlbnVtIFZlcnRpY2FsQWxpZ25tZW50IHtcbiAgICBUb3AgPSAtMSxcbiAgICBNaWRkbGUgPSAtMC41LFxuICAgIEJvdHRvbSA9IDBcbn1cblxuZXhwb3J0IGNsYXNzIFBvaW50IHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgeDogbnVtYmVyLCBwdWJsaWMgeTogbnVtYmVyKSB7IH1cbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3V0T2ZWaWV3UG9ydCB7XG4gICAgLyoqIE91dCBvZiB2aWV3IHBvcnQgYXQgVG9wIG9yIExlZnQgKi9cbiAgICBiYWNrOiBudW1iZXI7XG4gICAgLyoqIE91dCBvZiB2aWV3IHBvcnQgYXQgQm90dG9tIG9yIFJpZ2h0ICovXG4gICAgZm9yd2FyZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uU2V0dGluZ3Mge1xuICAgIC8qKiBBdHRhY2hpbmcgdGFyZ2V0IGZvciB0aGUgY29tcG9uZW50IHRvIHNob3cgKi9cbiAgICB0YXJnZXQ/OiBQb2ludCB8IEhUTUxFbGVtZW50O1xuICAgIC8qKiBEaXJlY3Rpb24gaW4gd2hpY2ggdGhlIGNvbXBvbmVudCBzaG91bGQgc2hvdyAqL1xuICAgIGhvcml6b250YWxEaXJlY3Rpb24/OiBIb3Jpem9udGFsQWxpZ25tZW50O1xuICAgIC8qKiBEaXJlY3Rpb24gaW4gd2hpY2ggdGhlIGNvbXBvbmVudCBzaG91bGQgc2hvdyAqL1xuICAgIHZlcnRpY2FsRGlyZWN0aW9uPzogVmVydGljYWxBbGlnbm1lbnQ7XG4gICAgLyoqIFRhcmdldCdzIHN0YXJ0aW5nIHBvaW50ICovXG4gICAgaG9yaXpvbnRhbFN0YXJ0UG9pbnQ/OiBIb3Jpem9udGFsQWxpZ25tZW50O1xuICAgIC8qKiBUYXJnZXQncyBzdGFydGluZyBwb2ludCAqL1xuICAgIHZlcnRpY2FsU3RhcnRQb2ludD86IFZlcnRpY2FsQWxpZ25tZW50O1xuICAgIC8qKiBBbmltYXRpb24gYXBwbGllZCB3aGlsZSBvdmVybGF5IG9wZW5zICovXG4gICAgb3BlbkFuaW1hdGlvbj86IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhO1xuICAgIC8qKiBBbmltYXRpb24gYXBwbGllZCB3aGlsZSBvdmVybGF5IGNsb3NlcyAqL1xuICAgIGNsb3NlQW5pbWF0aW9uPzogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGE7XG4gICAgLyoqIFRoZSBzaXplIHVwIHRvIHdoaWNoIGVsZW1lbnQgbWF5IHNocmluayB3aGVuIHNob3duIGluIGVsYXN0aWMgcG9zaXRpb24gc3RyYXRlZ3kgKi9cbiAgICBtaW5TaXplPzogU2l6ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5U2V0dGluZ3Mge1xuICAgIC8qKiBQb3NpdGlvbiBzdHJhdGVneSB0byB1c2Ugd2l0aCB0aGlzIHNldHRpbmdzICovXG4gICAgcG9zaXRpb25TdHJhdGVneT86IElQb3NpdGlvblN0cmF0ZWd5O1xuICAgIC8qKiBTY3JvbGwgc3RyYXRlZ3kgdG8gdXNlIHdpdGggdGhpcyBzZXR0aW5ncyAqL1xuICAgIHNjcm9sbFN0cmF0ZWd5PzogSVNjcm9sbFN0cmF0ZWd5O1xuICAgIC8qKiBTZXQgaWYgdGhlIG92ZXJsYXkgc2hvdWxkIGJlIGluIG1vZGFsIG1vZGUgKi9cbiAgICBtb2RhbD86IGJvb2xlYW47XG4gICAgLyoqIFNldCBpZiB0aGUgb3ZlcmxheSBzaG91bGQgY2xvc2VkIG9uIG91dHNpZGUgY2xpY2sgKi9cbiAgICBjbG9zZU9uT3V0c2lkZUNsaWNrPzogYm9vbGVhbjtcbiAgICAvKiogU2V0IHRoZSBvdXRsZXQgY29udGFpbmVyIHRvIGF0dGFjaCB0aGUgb3ZlcmxheSB0byAqL1xuICAgIG91dGxldD86IElneE92ZXJsYXlPdXRsZXREaXJlY3RpdmUgfCBFbGVtZW50UmVmO1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogRXhjbHVkZSB0aGUgcG9zaXRpb24gc3RyYXRlZ3kgdGFyZ2V0IGZvciBvdXRzaWRlIGNsaWNrc1xuICAgICAqL1xuICAgIGV4Y2x1ZGVQb3NpdGlvblRhcmdldD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheUV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogSWQgb2YgdGhlIG92ZXJsYXkgZ2VuZXJhdGVkIHdpdGggYGF0dGFjaCgpYCBtZXRob2QgKi9cbiAgICBpZDogc3RyaW5nO1xuICAgIC8qKiBBdmFpbGFibGUgd2hlbiBgVHlwZTxUPmAgaXMgcHJvdmlkZWQgdG8gdGhlIGBhdHRhY2goKWAgbWV0aG9kIGFuZCBhbGxvd3MgYWNjZXNzIHRvIHRoZSBjcmVhdGVkIENvbXBvbmVudCBpbnN0YW5jZSAqL1xuICAgIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjx7fT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheUNhbmNlbGFibGVFdmVudEFyZ3MgZXh0ZW5kcyBPdmVybGF5RXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5Q2xvc2luZ0V2ZW50QXJncyBleHRlbmRzIE92ZXJsYXlFdmVudEFyZ3MsIENhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzIHtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5QW5pbWF0aW9uRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBJZCBvZiB0aGUgb3ZlcmxheSBnZW5lcmF0ZWQgd2l0aCBgYXR0YWNoKClgIG1ldGhvZCAqL1xuICAgIGlkOiBzdHJpbmc7XG4gICAgLyoqIEFuaW1hdGlvbiBwbGF5ZXIgdGhhdCB3aWxsIHBsYXkgdGhlIGFuaW1hdGlvbiAqL1xuICAgIGFuaW1hdGlvblBsYXllcjogQW5pbWF0aW9uUGxheWVyO1xuICAgIC8qKiBUeXBlIG9mIGFuaW1hdGlvbiB0byBiZSBwbGF5ZWQuIEl0IHNob3VsZCBiZSBlaXRoZXIgJ29wZW4nIG9yICdjbG9zZScgKi9cbiAgICBhbmltYXRpb25UeXBlOiAnb3BlbicgfCAnY2xvc2UnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpemUge1xuICAgIC8qKiBHZXRzIG9yIHNldHMgdGhlIGhvcml6b250YWwgY29tcG9uZW50IG9mIFNpemUgKi9cbiAgICB3aWR0aDogbnVtYmVyO1xuXG4gICAgLyoqIEdldHMgb3Igc2V0cyB0aGUgdmVydGljYWwgY29tcG9uZW50IG9mIFNpemUgKi9cbiAgICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheUluZm8ge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIGVsZW1lbnRSZWY/OiBFbGVtZW50UmVmO1xuICAgIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjx7fT47XG4gICAgc2V0dGluZ3M/OiBPdmVybGF5U2V0dGluZ3M7XG4gICAgaW5pdGlhbFNpemU/OiBTaXplO1xuICAgIGhvb2s/OiBIVE1MRWxlbWVudDtcbiAgICBvcGVuQW5pbWF0aW9uUGxheWVyPzogQW5pbWF0aW9uUGxheWVyO1xuICAgIGNsb3NlQW5pbWF0aW9uUGxheWVyPzogQW5pbWF0aW9uUGxheWVyO1xuICAgIG9wZW5BbmltYXRpb25Jbm5lclBsYXllcj86IGFueTtcbiAgICBjbG9zZUFuaW1hdGlvbklubmVyUGxheWVyPzogYW55O1xuICAgIG5nWm9uZTogTmdab25lO1xuICAgIHRyYW5zZm9ybVg/OiBudW1iZXI7XG4gICAgdHJhbnNmb3JtWT86IG51bWJlcjtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGVkRml0IHtcbiAgICBjb250ZW50RWxlbWVudFJlY3Q/OiBDbGllbnRSZWN0O1xuICAgIHRhcmdldFJlY3Q/OiBDbGllbnRSZWN0O1xuICAgIHZpZXdQb3J0UmVjdD86IENsaWVudFJlY3Q7XG4gICAgZml0SG9yaXpvbnRhbD86IE91dE9mVmlld1BvcnQ7XG4gICAgZml0VmVydGljYWw/OiBPdXRPZlZpZXdQb3J0O1xuICAgIGxlZnQ/OiBudW1iZXI7XG4gICAgcmlnaHQ/OiBudW1iZXI7XG4gICAgdG9wPzogbnVtYmVyO1xuICAgIGJvdHRvbT86IG51bWJlcjtcbiAgICBob3Jpem9udGFsT2Zmc2V0PzogbnVtYmVyO1xuICAgIHZlcnRpY2FsT2Zmc2V0PzogbnVtYmVyO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGNsYXNzIFV0aWwge1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDYWxjdWxhdGVzIHRoZSByZWN0YW5nbGUgb2YgdGFyZ2V0IGZvciBwcm92aWRlZCBvdmVybGF5IHNldHRpbmdzLiBEZWZhdWx0cyB0byAwLDAsMCwwLDAsMCByZWN0YW5nbGVcbiAgICAgKiBpZiBubyB0YXJnZXQgaXMgcHJvdmlkZWRcbiAgICAgKiBAcGFyYW0gc2V0dGluZ3MgT3ZlcmxheSBzZXR0aW5ncyBmb3Igd2hpY2ggdG8gY2FsY3VsYXRlIHRhcmdldCByZWN0YW5nbGVcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0VGFyZ2V0UmVjdChzZXR0aW5nczogUG9zaXRpb25TZXR0aW5ncyk6IENsaWVudFJlY3Qge1xuICAgICAgICBsZXQgdGFyZ2V0UmVjdDogQ2xpZW50UmVjdCA9IHtcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHdpZHRoOiAwXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHNldHRpbmdzLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICB0YXJnZXRSZWN0ID0gKHNldHRpbmdzLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2V0dGluZ3MudGFyZ2V0IGluc3RhbmNlb2YgUG9pbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldFBvaW50ID0gc2V0dGluZ3MudGFyZ2V0IGFzIFBvaW50O1xuICAgICAgICAgICAgdGFyZ2V0UmVjdCA9IHtcbiAgICAgICAgICAgICAgICBib3R0b206IHRhcmdldFBvaW50LnksXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgIGxlZnQ6IHRhcmdldFBvaW50LngsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IHRhcmdldFBvaW50LngsXG4gICAgICAgICAgICAgICAgdG9wOiB0YXJnZXRQb2ludC55LFxuICAgICAgICAgICAgICAgIHdpZHRoOiAwXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldFJlY3Q7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgc3RhdGljIGdldFZpZXdwb3J0UmVjdChkb2N1bWVudDogRG9jdW1lbnQpOiBDbGllbnRSZWN0IHtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IHNjcm9sbFBvc2l0aW9uID0gVXRpbC5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKGRvY3VtZW50KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wOiBzY3JvbGxQb3NpdGlvbi55LFxuICAgICAgICAgICAgbGVmdDogc2Nyb2xsUG9zaXRpb24ueCxcbiAgICAgICAgICAgIHJpZ2h0OiBzY3JvbGxQb3NpdGlvbi54ICsgd2lkdGgsXG4gICAgICAgICAgICBib3R0b206IHNjcm9sbFBvc2l0aW9uLnkgKyBoZWlnaHQsXG4gICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBzdGF0aWMgZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbihkb2N1bWVudDogRG9jdW1lbnQpOiBQb2ludCB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRSZWN0ID0gZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IGhvcml6b250YWxTY3JvbGxQb3NpdGlvbiA9XG4gICAgICAgICAgICAtZG9jdW1lbnRSZWN0LmxlZnQgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IHx8IHdpbmRvdy5zY3JvbGxYIHx8IGRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0IHx8IDA7XG4gICAgICAgIGNvbnN0IHZlcnRpY2FsU2Nyb2xsUG9zaXRpb24gPSAtZG9jdW1lbnRSZWN0LnRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCB8fCB3aW5kb3cuc2Nyb2xsWSB8fCBkb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IDA7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQb2ludChob3Jpem9udGFsU2Nyb2xsUG9zaXRpb24sIHZlcnRpY2FsU2Nyb2xsUG9zaXRpb24pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCovXG4gICAgc3RhdGljIGNsb25lSW5zdGFuY2Uob2JqZWN0KSB7XG4gICAgICAgIGNvbnN0IGNsb25lZE9iaiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KSksIG9iamVjdCk7XG4gICAgICAgIGNsb25lZE9iai5zZXR0aW5ncyA9IGNsb25lVmFsdWUoY2xvbmVkT2JqLnNldHRpbmdzKTtcbiAgICAgICAgcmV0dXJuIGNsb25lZE9iajtcbiAgICB9XG59XG4iXX0=