@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
82 lines • 15.4 kB
JavaScript
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 = {}));
export class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
}
/** @hidden */
export class 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
*/
static getTargetRect(settings) {
let 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) {
const targetPoint = settings.target;
targetRect = {
bottom: targetPoint.y,
height: 0,
left: targetPoint.x,
right: targetPoint.x,
top: targetPoint.y,
width: 0
};
}
return targetRect;
}
/** @hidden @internal */
static getViewportRect(document) {
const width = document.documentElement.clientWidth;
const height = document.documentElement.clientHeight;
const 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 */
static getViewportScrollPosition(document) {
const documentElement = document.documentElement;
const documentRect = documentElement.getBoundingClientRect();
const horizontalScrollPosition = -documentRect.left || document.body.scrollLeft || window.scrollX || documentElement.scrollLeft || 0;
const verticalScrollPosition = -documentRect.top || document.body.scrollTop || window.scrollY || documentElement.scrollTop || 0;
return new Point(horizontalScrollPosition, verticalScrollPosition);
}
/** @hidden @internal*/
static cloneInstance(object) {
const clonedObj = Object.assign(Object.create(Object.getPrototypeOf(object)), object);
clonedObj.settings = cloneValue(clonedObj.settings);
return clonedObj;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9vdmVybGF5L3V0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQW1ELFVBQVUsRUFBa0IsTUFBTSxrQkFBa0IsQ0FBQztBQUUvRyxNQUFNLENBQU4sSUFBWSxtQkFJWDtBQUpELFdBQVksbUJBQW1CO0lBQzNCLDhEQUFTLENBQUE7SUFDVCxvRUFBYSxDQUFBO0lBQ2IsK0RBQVMsQ0FBQTtBQUNiLENBQUMsRUFKVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSTlCO0FBRUQsTUFBTSxDQUFOLElBQVksaUJBSVg7QUFKRCxXQUFZLGlCQUFpQjtJQUN6Qix3REFBUSxDQUFBO0lBQ1IsZ0VBQWEsQ0FBQTtJQUNiLDZEQUFVLENBQUE7QUFDZCxDQUFDLEVBSlcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUk1QjtBQUVELE1BQU0sT0FBTyxLQUFLO0lBQ2QsWUFBbUIsQ0FBUyxFQUFTLENBQVM7UUFBM0IsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQVE7SUFBSSxDQUFDO0NBQ3REO0FBNkdELGNBQWM7QUFDZCxNQUFNLE9BQU8sSUFBSTtJQUNiOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUEwQjtRQUMzQyxJQUFJLFVBQVUsR0FBZTtZQUN6QixNQUFNLEVBQUUsQ0FBQztZQUNULE1BQU0sRUFBRSxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUM7WUFDUCxLQUFLLEVBQUUsQ0FBQztZQUNSLEdBQUcsRUFBRSxDQUFDO1lBQ04sS0FBSyxFQUFFLENBQUM7U0FDWCxDQUFDO1FBRUYsSUFBSSxRQUFRLENBQUMsTUFBTSxZQUFZLFdBQVcsRUFBRTtZQUN4QyxVQUFVLEdBQUksUUFBUSxDQUFDLE1BQXNCLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUN6RTthQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sWUFBWSxLQUFLLEVBQUU7WUFDekMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE1BQWUsQ0FBQztZQUM3QyxVQUFVLEdBQUc7Z0JBQ1QsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUNyQixNQUFNLEVBQUUsQ0FBQztnQkFDVCxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ25CLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDcEIsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUNsQixLQUFLLEVBQUUsQ0FBQzthQUNYLENBQUM7U0FDTDtRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFrQjtRQUNyQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQztRQUNuRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztRQUNyRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEUsT0FBTztZQUNILEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUNyQixJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDdEIsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDLEdBQUcsS0FBSztZQUMvQixNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUMsR0FBRyxNQUFNO1lBQ2pDLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLE1BQU07U0FDakIsQ0FBQztJQUNOLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsTUFBTSxDQUFDLHlCQUF5QixDQUFDLFFBQWtCO1FBQy9DLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFDakQsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFN0QsTUFBTSx3QkFBd0IsR0FDMUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7UUFDeEcsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztRQUVoSSxPQUFPLElBQUksS0FBSyxDQUFDLHdCQUF3QixFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU07UUFDdkIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RixTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVBvc2l0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL3Bvc2l0aW9uL0lQb3NpdGlvblN0cmF0ZWd5JztcblxuaW1wb3J0IHsgSVNjcm9sbFN0cmF0ZWd5IH0gZnJvbSAnLi9zY3JvbGwnO1xuaW1wb3J0IHsgQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGEsIEFuaW1hdGlvblBsYXllciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBFbGVtZW50UmVmLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneE92ZXJsYXlPdXRsZXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IENhbmNlbGFibGVFdmVudEFyZ3MsIENhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzLCBjbG9uZVZhbHVlLCBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuXG5leHBvcnQgZW51bSBIb3Jpem9udGFsQWxpZ25tZW50IHtcbiAgICBMZWZ0ID0gLTEsXG4gICAgQ2VudGVyID0gLTAuNSxcbiAgICBSaWdodCA9IDBcbn1cblxuZXhwb3J0IGVudW0gVmVydGljYWxBbGlnbm1lbnQge1xuICAgIFRvcCA9IC0xLFxuICAgIE1pZGRsZSA9IC0wLjUsXG4gICAgQm90dG9tID0gMFxufVxuXG5leHBvcnQgY2xhc3MgUG9pbnQge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB4OiBudW1iZXIsIHB1YmxpYyB5OiBudW1iZXIpIHsgfVxufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPdXRPZlZpZXdQb3J0IHtcbiAgICAvKiogT3V0IG9mIHZpZXcgcG9ydCBhdCBUb3Agb3IgTGVmdCAqL1xuICAgIGJhY2s6IG51bWJlcjtcbiAgICAvKiogT3V0IG9mIHZpZXcgcG9ydCBhdCBCb3R0b20gb3IgUmlnaHQgKi9cbiAgICBmb3J3YXJkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9zaXRpb25TZXR0aW5ncyB7XG4gICAgLyoqIEF0dGFjaGluZyB0YXJnZXQgZm9yIHRoZSBjb21wb25lbnQgdG8gc2hvdyAqL1xuICAgIHRhcmdldD86IFBvaW50IHwgSFRNTEVsZW1lbnQ7XG4gICAgLyoqIERpcmVjdGlvbiBpbiB3aGljaCB0aGUgY29tcG9uZW50IHNob3VsZCBzaG93ICovXG4gICAgaG9yaXpvbnRhbERpcmVjdGlvbj86IEhvcml6b250YWxBbGlnbm1lbnQ7XG4gICAgLyoqIERpcmVjdGlvbiBpbiB3aGljaCB0aGUgY29tcG9uZW50IHNob3VsZCBzaG93ICovXG4gICAgdmVydGljYWxEaXJlY3Rpb24/OiBWZXJ0aWNhbEFsaWdubWVudDtcbiAgICAvKiogVGFyZ2V0J3Mgc3RhcnRpbmcgcG9pbnQgKi9cbiAgICBob3Jpem9udGFsU3RhcnRQb2ludD86IEhvcml6b250YWxBbGlnbm1lbnQ7XG4gICAgLyoqIFRhcmdldCdzIHN0YXJ0aW5nIHBvaW50ICovXG4gICAgdmVydGljYWxTdGFydFBvaW50PzogVmVydGljYWxBbGlnbm1lbnQ7XG4gICAgLyoqIEFuaW1hdGlvbiBhcHBsaWVkIHdoaWxlIG92ZXJsYXkgb3BlbnMgKi9cbiAgICBvcGVuQW5pbWF0aW9uPzogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGE7XG4gICAgLyoqIEFuaW1hdGlvbiBhcHBsaWVkIHdoaWxlIG92ZXJsYXkgY2xvc2VzICovXG4gICAgY2xvc2VBbmltYXRpb24/OiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YTtcbiAgICAvKiogVGhlIHNpemUgdXAgdG8gd2hpY2ggZWxlbWVudCBtYXkgc2hyaW5rIHdoZW4gc2hvd24gaW4gZWxhc3RpYyBwb3NpdGlvbiBzdHJhdGVneSAqL1xuICAgIG1pblNpemU/OiBTaXplO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJsYXlTZXR0aW5ncyB7XG4gICAgLyoqIFBvc2l0aW9uIHN0cmF0ZWd5IHRvIHVzZSB3aXRoIHRoaXMgc2V0dGluZ3MgKi9cbiAgICBwb3NpdGlvblN0cmF0ZWd5PzogSVBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgLyoqIFNjcm9sbCBzdHJhdGVneSB0byB1c2Ugd2l0aCB0aGlzIHNldHRpbmdzICovXG4gICAgc2Nyb2xsU3RyYXRlZ3k/OiBJU2Nyb2xsU3RyYXRlZ3k7XG4gICAgLyoqIFNldCBpZiB0aGUgb3ZlcmxheSBzaG91bGQgYmUgaW4gbW9kYWwgbW9kZSAqL1xuICAgIG1vZGFsPzogYm9vbGVhbjtcbiAgICAvKiogU2V0IGlmIHRoZSBvdmVybGF5IHNob3VsZCBjbG9zZWQgb24gb3V0c2lkZSBjbGljayAqL1xuICAgIGNsb3NlT25PdXRzaWRlQ2xpY2s/OiBib29sZWFuO1xuICAgIC8qKiBTZXQgdGhlIG91dGxldCBjb250YWluZXIgdG8gYXR0YWNoIHRoZSBvdmVybGF5IHRvICovXG4gICAgb3V0bGV0PzogSWd4T3ZlcmxheU91dGxldERpcmVjdGl2ZSB8IEVsZW1lbnRSZWY7XG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBFeGNsdWRlIHRoZSBwb3NpdGlvbiBzdHJhdGVneSB0YXJnZXQgZm9yIG91dHNpZGUgY2xpY2tzXG4gICAgICovXG4gICAgZXhjbHVkZVBvc2l0aW9uVGFyZ2V0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5RXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBJZCBvZiB0aGUgb3ZlcmxheSBnZW5lcmF0ZWQgd2l0aCBgYXR0YWNoKClgIG1ldGhvZCAqL1xuICAgIGlkOiBzdHJpbmc7XG4gICAgLyoqIEF2YWlsYWJsZSB3aGVuIGBUeXBlPFQ+YCBpcyBwcm92aWRlZCB0byB0aGUgYGF0dGFjaCgpYCBtZXRob2QgYW5kIGFsbG93cyBhY2Nlc3MgdG8gdGhlIGNyZWF0ZWQgQ29tcG9uZW50IGluc3RhbmNlICovXG4gICAgY29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPHt9Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5Q2FuY2VsYWJsZUV2ZW50QXJncyBleHRlbmRzIE92ZXJsYXlFdmVudEFyZ3MsIENhbmNlbGFibGVFdmVudEFyZ3Mge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJsYXlDbG9zaW5nRXZlbnRBcmdzIGV4dGVuZHMgT3ZlcmxheUV2ZW50QXJncywgQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3Mge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJsYXlBbmltYXRpb25FdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIElkIG9mIHRoZSBvdmVybGF5IGdlbmVyYXRlZCB3aXRoIGBhdHRhY2goKWAgbWV0aG9kICovXG4gICAgaWQ6IHN0cmluZztcbiAgICAvKiogQW5pbWF0aW9uIHBsYXllciB0aGF0IHdpbGwgcGxheSB0aGUgYW5pbWF0aW9uICovXG4gICAgYW5pbWF0aW9uUGxheWVyOiBBbmltYXRpb25QbGF5ZXI7XG4gICAgLyoqIFR5cGUgb2YgYW5pbWF0aW9uIHRvIGJlIHBsYXllZC4gSXQgc2hvdWxkIGJlIGVpdGhlciAnb3Blbicgb3IgJ2Nsb3NlJyAqL1xuICAgIGFuaW1hdGlvblR5cGU6ICdvcGVuJyB8ICdjbG9zZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2l6ZSB7XG4gICAgLyoqIEdldHMgb3Igc2V0cyB0aGUgaG9yaXpvbnRhbCBjb21wb25lbnQgb2YgU2l6ZSAqL1xuICAgIHdpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogR2V0cyBvciBzZXRzIHRoZSB2ZXJ0aWNhbCBjb21wb25lbnQgb2YgU2l6ZSAqL1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5SW5mbyB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgZWxlbWVudFJlZj86IEVsZW1lbnRSZWY7XG4gICAgY29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPHt9PjtcbiAgICBzZXR0aW5ncz86IE92ZXJsYXlTZXR0aW5ncztcbiAgICBpbml0aWFsU2l6ZT86IFNpemU7XG4gICAgaG9vaz86IEhUTUxFbGVtZW50O1xuICAgIG9wZW5BbmltYXRpb25QbGF5ZXI/OiBBbmltYXRpb25QbGF5ZXI7XG4gICAgY2xvc2VBbmltYXRpb25QbGF5ZXI/OiBBbmltYXRpb25QbGF5ZXI7XG4gICAgb3BlbkFuaW1hdGlvbklubmVyUGxheWVyPzogYW55O1xuICAgIGNsb3NlQW5pbWF0aW9uSW5uZXJQbGF5ZXI/OiBhbnk7XG4gICAgbmdab25lOiBOZ1pvbmU7XG4gICAgdHJhbnNmb3JtWD86IG51bWJlcjtcbiAgICB0cmFuc2Zvcm1ZPzogbnVtYmVyO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0ZWRGaXQge1xuICAgIGNvbnRlbnRFbGVtZW50UmVjdD86IENsaWVudFJlY3Q7XG4gICAgdGFyZ2V0UmVjdD86IENsaWVudFJlY3Q7XG4gICAgdmlld1BvcnRSZWN0PzogQ2xpZW50UmVjdDtcbiAgICBmaXRIb3Jpem9udGFsPzogT3V0T2ZWaWV3UG9ydDtcbiAgICBmaXRWZXJ0aWNhbD86IE91dE9mVmlld1BvcnQ7XG4gICAgbGVmdD86IG51bWJlcjtcbiAgICByaWdodD86IG51bWJlcjtcbiAgICB0b3A/OiBudW1iZXI7XG4gICAgYm90dG9tPzogbnVtYmVyO1xuICAgIGhvcml6b250YWxPZmZzZXQ/OiBudW1iZXI7XG4gICAgdmVydGljYWxPZmZzZXQ/OiBudW1iZXI7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgY2xhc3MgVXRpbCB7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHJlY3RhbmdsZSBvZiB0YXJnZXQgZm9yIHByb3ZpZGVkIG92ZXJsYXkgc2V0dGluZ3MuIERlZmF1bHRzIHRvIDAsMCwwLDAsMCwwIHJlY3RhbmdsZVxuICAgICAqIGlmIG5vIHRhcmdldCBpcyBwcm92aWRlZFxuICAgICAqIEBwYXJhbSBzZXR0aW5ncyBPdmVybGF5IHNldHRpbmdzIGZvciB3aGljaCB0byBjYWxjdWxhdGUgdGFyZ2V0IHJlY3RhbmdsZVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRUYXJnZXRSZWN0KHNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzKTogQ2xpZW50UmVjdCB7XG4gICAgICAgIGxldCB0YXJnZXRSZWN0OiBDbGllbnRSZWN0ID0ge1xuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgd2lkdGg6IDBcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoc2V0dGluZ3MudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRhcmdldFJlY3QgPSAoc2V0dGluZ3MudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgfSBlbHNlIGlmIChzZXR0aW5ncy50YXJnZXQgaW5zdGFuY2VvZiBQb2ludCkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UG9pbnQgPSBzZXR0aW5ncy50YXJnZXQgYXMgUG9pbnQ7XG4gICAgICAgICAgICB0YXJnZXRSZWN0ID0ge1xuICAgICAgICAgICAgICAgIGJvdHRvbTogdGFyZ2V0UG9pbnQueSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgbGVmdDogdGFyZ2V0UG9pbnQueCxcbiAgICAgICAgICAgICAgICByaWdodDogdGFyZ2V0UG9pbnQueCxcbiAgICAgICAgICAgICAgICB0b3A6IHRhcmdldFBvaW50LnksXG4gICAgICAgICAgICAgICAgd2lkdGg6IDBcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFyZ2V0UmVjdDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBzdGF0aWMgZ2V0Vmlld3BvcnRSZWN0KGRvY3VtZW50OiBEb2N1bWVudCk6IENsaWVudFJlY3Qge1xuICAgICAgICBjb25zdCB3aWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSBVdGlsLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oZG9jdW1lbnQpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3A6IHNjcm9sbFBvc2l0aW9uLnksXG4gICAgICAgICAgICBsZWZ0OiBzY3JvbGxQb3NpdGlvbi54LFxuICAgICAgICAgICAgcmlnaHQ6IHNjcm9sbFBvc2l0aW9uLnggKyB3aWR0aCxcbiAgICAgICAgICAgIGJvdHRvbTogc2Nyb2xsUG9zaXRpb24ueSArIGhlaWdodCxcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHN0YXRpYyBnZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKGRvY3VtZW50OiBEb2N1bWVudCk6IFBvaW50IHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICBjb25zdCBkb2N1bWVudFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbFNjcm9sbFBvc2l0aW9uID1cbiAgICAgICAgICAgIC1kb2N1bWVudFJlY3QubGVmdCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgfHwgd2luZG93LnNjcm9sbFggfHwgZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgfHwgMDtcbiAgICAgICAgY29uc3QgdmVydGljYWxTY3JvbGxQb3NpdGlvbiA9IC1kb2N1bWVudFJlY3QudG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIHx8IHdpbmRvdy5zY3JvbGxZIHx8IGRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgMDtcblxuICAgICAgICByZXR1cm4gbmV3IFBvaW50KGhvcml6b250YWxTY3JvbGxQb3NpdGlvbiwgdmVydGljYWxTY3JvbGxQb3NpdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsKi9cbiAgICBzdGF0aWMgY2xvbmVJbnN0YW5jZShvYmplY3QpIHtcbiAgICAgICAgY29uc3QgY2xvbmVkT2JqID0gT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpKSwgb2JqZWN0KTtcbiAgICAgICAgY2xvbmVkT2JqLnNldHRpbmdzID0gY2xvbmVWYWx1ZShjbG9uZWRPYmouc2V0dGluZ3MpO1xuICAgICAgICByZXR1cm4gY2xvbmVkT2JqO1xuICAgIH1cbn1cbiJdfQ==