UNPKG

smart-webcomponents-angular

Version:

[![Price](https://img.shields.io/badge/price-COMMERCIAL-0098f7.svg)](https://jqwidgets.com/license/)

173 lines 24.9 kB
import { Directive, Input } from '@angular/core'; import { BaseElement } from './smart.element'; import * as i0 from "@angular/core"; export { Smart } from './smart.element'; export class SplitterItemComponent extends BaseElement { constructor(ref) { super(ref); this.eventHandlers = []; this.nativeElement = ref.nativeElement; } /** @description Creates the component on demand. * @param properties An optional object of properties, which will be added to the template binded ones. */ createComponent(properties = {}) { this.nativeElement = document.createElement('smart-splitter-item'); for (let propertyName in properties) { this.nativeElement[propertyName] = properties[propertyName]; } return this.nativeElement; } /** @description Determines whether the element is interactive or not. When enabled, users can interact with the element; when disabled, the element is non-interactive and typically appears visually dimmed or grayed out. */ get disabled() { return this.nativeElement ? this.nativeElement.disabled : undefined; } set disabled(value) { this.nativeElement ? this.nativeElement.disabled = value : undefined; } /** @description Indicates whether the item is currently collapsed ('true') or expanded ('false'). This property controls the visibility of the item's content in collapsible interfaces or components. */ get collapsed() { return this.nativeElement ? this.nativeElement.collapsed : undefined; } set collapsed(value) { this.nativeElement ? this.nativeElement.collapsed = value : undefined; } /** @description Specifies whether the item is collapsible. If set to true, the item can be expanded or collapsed by the user. If set to false, the item remains permanently expanded and cannot be collapsed. */ get collapsible() { return this.nativeElement ? this.nativeElement.collapsible : undefined; } set collapsible(value) { this.nativeElement ? this.nativeElement.collapsible = value : undefined; } /** @description Specifies the elements or components that are displayed within each section (item) of the splitter layout. This property defines what content will appear in each resizable panel managed by the splitter. */ get content() { return this.nativeElement ? this.nativeElement.content : undefined; } set content(value) { this.nativeElement ? this.nativeElement.content = value : undefined; } /** @description Specifies whether the item can be resized by the user. If set to true, resizing is enabled; if set to false, the item's size remains fixed. */ get locked() { return this.nativeElement ? this.nativeElement.locked : undefined; } set locked(value) { this.nativeElement ? this.nativeElement.locked = value : undefined; } /** @description Specifies the maximum allowable size for the item. Values exceeding this limit will not be accepted or processed. */ get max() { return this.nativeElement ? this.nativeElement.max : undefined; } set max(value) { this.nativeElement ? this.nativeElement.max = value : undefined; } /** @description Specifies the minimum allowed size (in the relevant unit) for the item, preventing it from shrinking below this value during layout or resizing. */ get min() { return this.nativeElement ? this.nativeElement.min : undefined; } set min(value) { this.nativeElement ? this.nativeElement.min = value : undefined; } /** @description Specifies the dimensions or overall measurements of the item, such as its width, height, or depth. This property allows you to control how large or small the item appears within its container or layout. */ get size() { return this.nativeElement ? this.nativeElement.size : undefined; } set size(value) { this.nativeElement ? this.nativeElement.size = value : undefined; } /** @description Collapses the item, hiding its content or child elements from view. This action reduces the item's visible footprint, typically as part of an expandable/collapsible user interface component such as an accordion or dropdown. * @param {string} far. If set to true the item will collapse to it's far side ( to the right for vertical splitter and down for horizontal) */ collapse(far) { if (this.nativeElement.isRendered) { this.nativeElement.collapse(far); } else { this.nativeElement.whenRendered(() => { this.nativeElement.collapse(far); }); } } /** @description Expands the item to display its hidden content or details when it is currently in a collapsed (hidden) state. */ expand() { if (this.nativeElement.isRendered) { this.nativeElement.expand(); } else { this.nativeElement.whenRendered(() => { this.nativeElement.expand(); }); } } /** @description Prevents the item from being resized, ensuring its dimensions remain fixed and cannot be altered by the user or through code. */ lock() { if (this.nativeElement.isRendered) { this.nativeElement.lock(); } else { this.nativeElement.whenRendered(() => { this.nativeElement.lock(); }); } } /** @description Unlocks access to an item that was previously restricted or unavailable, allowing full interaction or use of its features. */ unlock() { if (this.nativeElement.isRendered) { this.nativeElement.unlock(); } else { this.nativeElement.whenRendered(() => { this.nativeElement.unlock(); }); } } get isRendered() { return this.nativeElement ? this.nativeElement.isRendered : false; } ngOnInit() { } ngAfterViewInit() { const that = this; that.onCreate.emit(that.nativeElement); this.nativeElement.classList.add('smart-angular'); if (this.nativeElement.whenRendered) this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); }); } ngOnDestroy() { } ngOnChanges(changes) { if (this.nativeElement && this.nativeElement.isRendered) { for (const propName in changes) { if (changes.hasOwnProperty(propName)) { this.nativeElement[propName] = changes[propName].currentValue; } } } } } SplitterItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: SplitterItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); SplitterItemComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.6", type: SplitterItemComponent, selector: "smart-splitter-item, [smart-splitter-item]", inputs: { disabled: "disabled", collapsed: "collapsed", collapsible: "collapsible", content: "content", locked: "locked", max: "max", min: "min", size: "size" }, exportAs: ["smart-splitter-item"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: SplitterItemComponent, decorators: [{ type: Directive, args: [{ exportAs: 'smart-splitter-item', selector: 'smart-splitter-item, [smart-splitter-item]' }] }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { disabled: [{ type: Input }], collapsed: [{ type: Input }], collapsible: [{ type: Input }], content: [{ type: Input }], locked: [{ type: Input }], max: [{ type: Input }], min: [{ type: Input }], size: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQuc3BsaXR0ZXJpdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3BsaXR0ZXIvc3JjL3NtYXJ0LnNwbGl0dGVyaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWEsU0FBUyxFQUE2QixLQUFLLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBQ3BJLE9BQU8sRUFBRSxXQUFXLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBUXhDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxXQUFXO0lBQ3JELFlBQVksR0FBNkI7UUFDeEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBSUosa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFIakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsYUFBNkIsQ0FBQztJQUN4RCxDQUFDO0lBS0Q7O09BRUc7SUFDSSxlQUFlLENBQUMsVUFBVSxHQUFHLEVBQUU7UUFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBaUIsUUFBUSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3BGLEtBQUssSUFBSSxZQUFZLElBQUksVUFBVSxFQUFFO1lBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzdEO1FBQ0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzNCLENBQUM7SUFDRCwrTkFBK047SUFDL04sSUFDSSxRQUFRO1FBQ1gsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3JFLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFjO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3RFLENBQUM7SUFFRCwwTUFBME07SUFDMU0sSUFDSSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxLQUFjO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxpTkFBaU47SUFDak4sSUFDSSxXQUFXO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQyxLQUFjO1FBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3pFLENBQUM7SUFFRCw4TkFBOE47SUFDOU4sSUFDSSxPQUFPO1FBQ1YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BFLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFVO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3JFLENBQUM7SUFFRCwrSkFBK0o7SUFDL0osSUFDSSxNQUFNO1FBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ25FLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxLQUFjO1FBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxxSUFBcUk7SUFDckksSUFDSSxHQUFHO1FBQ04sT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hFLENBQUM7SUFDRCxJQUFJLEdBQUcsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxvS0FBb0s7SUFDcEssSUFDSSxHQUFHO1FBQ04sT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hFLENBQUM7SUFDRCxJQUFJLEdBQUcsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2pFLENBQUM7SUFFRCw4TkFBOE47SUFDOU4sSUFDSSxJQUFJO1FBQ1AsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2pFLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxhQUFh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QUNEO1NBQ0Q7SUFDRixDQUFDOztrSEFoTFcscUJBQXFCO3NHQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLDRDQUE0QztpQkFDdkY7aUdBdUJJLFFBQVE7c0JBRFgsS0FBSztnQkFVRixTQUFTO3NCQURaLEtBQUs7Z0JBVUYsV0FBVztzQkFEZCxLQUFLO2dCQVVGLE9BQU87c0JBRFYsS0FBSztnQkFVRixNQUFNO3NCQURULEtBQUs7Z0JBVUYsR0FBRztzQkFETixLQUFLO2dCQVVGLEdBQUc7c0JBRE4sS0FBSztnQkFVRixJQUFJO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTcGxpdHRlckl0ZW0gfSBmcm9tICcuLy4uL2luZGV4JztcbmltcG9ydCB7IEVsZW1lbnRSZW5kZXJNb2RlfSBmcm9tICcuLy4uL2luZGV4JztcbmltcG9ydCB7IENvbXBvbmVudCwgRGlyZWN0aXZlLCBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUVsZW1lbnQsIFNtYXJ0IH0gZnJvbSAnLi9zbWFydC5lbGVtZW50JztcbmV4cG9ydCB7IEVsZW1lbnRSZW5kZXJNb2RlfSBmcm9tICcuLy4uL2luZGV4JztcbmV4cG9ydCB7IFNtYXJ0IH0gZnJvbSAnLi9zbWFydC5lbGVtZW50JztcbmV4cG9ydCB7IFNwbGl0dGVySXRlbSB9IGZyb20gJy4vLi4vaW5kZXgnO1xuXG5cbkBEaXJlY3RpdmUoe1xuXHRleHBvcnRBczogJ3NtYXJ0LXNwbGl0dGVyLWl0ZW0nLFx0c2VsZWN0b3I6ICdzbWFydC1zcGxpdHRlci1pdGVtLCBbc21hcnQtc3BsaXR0ZXItaXRlbV0nXG59KVxuXG5leHBvcnQgY2xhc3MgU3BsaXR0ZXJJdGVtQ29tcG9uZW50IGV4dGVuZHMgQmFzZUVsZW1lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblx0Y29uc3RydWN0b3IocmVmOiBFbGVtZW50UmVmPFNwbGl0dGVySXRlbT4pIHtcblx0XHRzdXBlcihyZWYpO1xuXHRcdHRoaXMubmF0aXZlRWxlbWVudCA9IHJlZi5uYXRpdmVFbGVtZW50IGFzIFNwbGl0dGVySXRlbTtcblx0fVxuXG5cdHByaXZhdGUgZXZlbnRIYW5kbGVyczogYW55W10gPSBbXTtcblxuXHRwdWJsaWMgZGVjbGFyZSBuYXRpdmVFbGVtZW50OiBTcGxpdHRlckl0ZW07XG5cdC8qKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyB0aGUgY29tcG9uZW50IG9uIGRlbWFuZC5cblx0ICogQHBhcmFtIHByb3BlcnRpZXMgQW4gb3B0aW9uYWwgb2JqZWN0IG9mIHByb3BlcnRpZXMsIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIGJpbmRlZCBvbmVzLlxuXHQgKi9cblx0cHVibGljIGNyZWF0ZUNvbXBvbmVudChwcm9wZXJ0aWVzID0ge30pOiBhbnkge1xuICAgIFx0dGhpcy5uYXRpdmVFbGVtZW50ID0gPFNwbGl0dGVySXRlbT5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzbWFydC1zcGxpdHRlci1pdGVtJyk7XG5cdFx0Zm9yIChsZXQgcHJvcGVydHlOYW1lIGluIHByb3BlcnRpZXMpIHsgXG4gXHRcdFx0dGhpcy5uYXRpdmVFbGVtZW50W3Byb3BlcnR5TmFtZV0gPSBwcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV07XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQ7XG5cdH1cblx0LyoqIEBkZXNjcmlwdGlvbiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgaW50ZXJhY3RpdmUgb3Igbm90LiBXaGVuIGVuYWJsZWQsIHVzZXJzIGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBlbGVtZW50OyB3aGVuIGRpc2FibGVkLCB0aGUgZWxlbWVudCBpcyBub24taW50ZXJhY3RpdmUgYW5kIHR5cGljYWxseSBhcHBlYXJzIHZpc3VhbGx5IGRpbW1lZCBvciBncmF5ZWQgb3V0LiAqL1xuXHRASW5wdXQoKVxuXHRnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA6IHVuZGVmaW5lZDtcblx0fVxuXHRzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcblx0XHR0aGlzLm5hdGl2ZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSB2YWx1ZSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKiBAZGVzY3JpcHRpb24gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGl0ZW0gaXMgY3VycmVudGx5IGNvbGxhcHNlZCAoJ3RydWUnKSBvciBleHBhbmRlZCAoJ2ZhbHNlJykuIFRoaXMgcHJvcGVydHkgY29udHJvbHMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGl0ZW0ncyBjb250ZW50IGluIGNvbGxhcHNpYmxlIGludGVyZmFjZXMgb3IgY29tcG9uZW50cy4gKi9cblx0QElucHV0KClcblx0Z2V0IGNvbGxhcHNlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50LmNvbGxhcHNlZCA6IHVuZGVmaW5lZDtcblx0fVxuXHRzZXQgY29sbGFwc2VkKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50LmNvbGxhcHNlZCA9IHZhbHVlIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgd2hldGhlciB0aGUgaXRlbSBpcyBjb2xsYXBzaWJsZS4gSWYgc2V0IHRvIHRydWUsIHRoZSBpdGVtIGNhbiBiZSBleHBhbmRlZCBvciBjb2xsYXBzZWQgYnkgdGhlIHVzZXIuIElmIHNldCB0byBmYWxzZSwgdGhlIGl0ZW0gcmVtYWlucyBwZXJtYW5lbnRseSBleHBhbmRlZCBhbmQgY2Fubm90IGJlIGNvbGxhcHNlZC4gKi9cblx0QElucHV0KClcblx0Z2V0IGNvbGxhcHNpYmxlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUVsZW1lbnQuY29sbGFwc2libGUgOiB1bmRlZmluZWQ7XG5cdH1cblx0c2V0IGNvbGxhcHNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50LmNvbGxhcHNpYmxlID0gdmFsdWUgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKiogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyB0aGUgZWxlbWVudHMgb3IgY29tcG9uZW50cyB0aGF0IGFyZSBkaXNwbGF5ZWQgd2l0aGluIGVhY2ggc2VjdGlvbiAoaXRlbSkgb2YgdGhlIHNwbGl0dGVyIGxheW91dC4gVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIHdoYXQgY29udGVudCB3aWxsIGFwcGVhciBpbiBlYWNoIHJlc2l6YWJsZSBwYW5lbCBtYW5hZ2VkIGJ5IHRoZSBzcGxpdHRlci4gKi9cblx0QElucHV0KClcblx0Z2V0IGNvbnRlbnQoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50LmNvbnRlbnQgOiB1bmRlZmluZWQ7XG5cdH1cblx0c2V0IGNvbnRlbnQodmFsdWU6IGFueSkge1xuXHRcdHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC5jb250ZW50ID0gdmFsdWUgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKiogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBpdGVtIGNhbiBiZSByZXNpemVkIGJ5IHRoZSB1c2VyLiBJZiBzZXQgdG8gdHJ1ZSwgcmVzaXppbmcgaXMgZW5hYmxlZDsgaWYgc2V0IHRvIGZhbHNlLCB0aGUgaXRlbSdzIHNpemUgcmVtYWlucyBmaXhlZC4gKi9cblx0QElucHV0KClcblx0Z2V0IGxvY2tlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50LmxvY2tlZCA6IHVuZGVmaW5lZDtcblx0fVxuXHRzZXQgbG9ja2VkKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50LmxvY2tlZCA9IHZhbHVlIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgdGhlIG1heGltdW0gYWxsb3dhYmxlIHNpemUgZm9yIHRoZSBpdGVtLiBWYWx1ZXMgZXhjZWVkaW5nIHRoaXMgbGltaXQgd2lsbCBub3QgYmUgYWNjZXB0ZWQgb3IgcHJvY2Vzc2VkLiAqL1xuXHRASW5wdXQoKVxuXHRnZXQgbWF4KCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC5tYXggOiB1bmRlZmluZWQ7XG5cdH1cblx0c2V0IG1heCh2YWx1ZTogc3RyaW5nKSB7XG5cdFx0dGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50Lm1heCA9IHZhbHVlIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgdGhlIG1pbmltdW0gYWxsb3dlZCBzaXplIChpbiB0aGUgcmVsZXZhbnQgdW5pdCkgZm9yIHRoZSBpdGVtLCBwcmV2ZW50aW5nIGl0IGZyb20gc2hyaW5raW5nIGJlbG93IHRoaXMgdmFsdWUgZHVyaW5nIGxheW91dCBvciByZXNpemluZy4gKi9cblx0QElucHV0KClcblx0Z2V0IG1pbigpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUVsZW1lbnQubWluIDogdW5kZWZpbmVkO1xuXHR9XG5cdHNldCBtaW4odmFsdWU6IHN0cmluZykge1xuXHRcdHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC5taW4gPSB2YWx1ZSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKiBAZGVzY3JpcHRpb24gU3BlY2lmaWVzIHRoZSBkaW1lbnNpb25zIG9yIG92ZXJhbGwgbWVhc3VyZW1lbnRzIG9mIHRoZSBpdGVtLCBzdWNoIGFzIGl0cyB3aWR0aCwgaGVpZ2h0LCBvciBkZXB0aC4gVGhpcyBwcm9wZXJ0eSBhbGxvd3MgeW91IHRvIGNvbnRyb2wgaG93IGxhcmdlIG9yIHNtYWxsIHRoZSBpdGVtIGFwcGVhcnMgd2l0aGluIGl0cyBjb250YWluZXIgb3IgbGF5b3V0LiAqL1xuXHRASW5wdXQoKVxuXHRnZXQgc2l6ZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUVsZW1lbnQuc2l6ZSA6IHVuZGVmaW5lZDtcblx0fVxuXHRzZXQgc2l6ZSh2YWx1ZTogc3RyaW5nKSB7XG5cdFx0dGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50LnNpemUgPSB2YWx1ZSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKiBAZGVzY3JpcHRpb24gQ29sbGFwc2VzIHRoZSBpdGVtLCBoaWRpbmcgaXRzIGNvbnRlbnQgb3IgY2hpbGQgZWxlbWVudHMgZnJvbSB2aWV3LiBUaGlzIGFjdGlvbiByZWR1Y2VzIHRoZSBpdGVtJ3MgdmlzaWJsZSBmb290cHJpbnQsIHR5cGljYWxseSBhcyBwYXJ0IG9mIGFuIGV4cGFuZGFibGUvY29sbGFwc2libGUgdXNlciBpbnRlcmZhY2UgY29tcG9uZW50IHN1Y2ggYXMgYW4gYWNjb3JkaW9uIG9yIGRyb3Bkb3duLiBcblx0KiBAcGFyYW0ge3N0cmluZ30gZmFyLiBJZiBzZXQgdG8gdHJ1ZSB0aGUgaXRlbSB3aWxsIGNvbGxhcHNlIHRvIGl0J3MgZmFyIHNpZGUgKCB0byB0aGUgcmlnaHQgZm9yIHZlcnRpY2FsIHNwbGl0dGVyIGFuZCBkb3duIGZvciBob3Jpem9udGFsKVxuXHQqL1xuICAgIHB1YmxpYyBjb2xsYXBzZShmYXI6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uYXRpdmVFbGVtZW50LmlzUmVuZGVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5jb2xsYXBzZShmYXIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LndoZW5SZW5kZXJlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LmNvbGxhcHNlKGZhcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuXHQvKiogQGRlc2NyaXB0aW9uIEV4cGFuZHMgdGhlIGl0ZW0gdG8gZGlzcGxheSBpdHMgaGlkZGVuIGNvbnRlbnQgb3IgZGV0YWlscyB3aGVuIGl0IGlzIGN1cnJlbnRseSBpbiBhIGNvbGxhcHNlZCAoaGlkZGVuKSBzdGF0ZS4gXG5cdCovXG4gICAgcHVibGljIGV4cGFuZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRWxlbWVudC5pc1JlbmRlcmVkKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuZXhwYW5kKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQud2hlblJlbmRlcmVkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuZXhwYW5kKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuXHQvKiogQGRlc2NyaXB0aW9uIFByZXZlbnRzIHRoZSBpdGVtIGZyb20gYmVpbmcgcmVzaXplZCwgZW5zdXJpbmcgaXRzIGRpbWVuc2lvbnMgcmVtYWluIGZpeGVkIGFuZCBjYW5ub3QgYmUgYWx0ZXJlZCBieSB0aGUgdXNlciBvciB0aHJvdWdoIGNvZGUuIFxuXHQqL1xuICAgIHB1YmxpYyBsb2NrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uYXRpdmVFbGVtZW50LmlzUmVuZGVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5sb2NrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQud2hlblJlbmRlcmVkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQubG9jaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cblx0LyoqIEBkZXNjcmlwdGlvbiBVbmxvY2tzIGFjY2VzcyB0byBhbiBpdGVtIHRoYXQgd2FzIHByZXZpb3VzbHkgcmVzdHJpY3RlZCBvciB1bmF2YWlsYWJsZSwgYWxsb3dpbmcgZnVsbCBpbnRlcmFjdGlvbiBvciB1c2Ugb2YgaXRzIGZlYXR1cmVzLiBcblx0Ki9cbiAgICBwdWJsaWMgdW5sb2NrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uYXRpdmVFbGVtZW50LmlzUmVuZGVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC51bmxvY2soKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC53aGVuUmVuZGVyZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC51bmxvY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG5cblx0Z2V0IGlzUmVuZGVyZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC5pc1JlbmRlcmVkIDogZmFsc2U7XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG5cbiAgICAgIHRoYXQub25DcmVhdGUuZW1pdCh0aGF0Lm5hdGl2ZUVsZW1lbnQpO1xuXG5cdFx0dGhpcy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3NtYXJ0LWFuZ3VsYXInKTtcblxuXHRcdGlmICh0aGlzLm5hdGl2ZUVsZW1lbnQud2hlblJlbmRlcmVkKSB0aGlzLm5hdGl2ZUVsZW1lbnQud2hlblJlbmRlcmVkKCgpID0+IHsgdGhhdC5vblJlYWR5LmVtaXQodGhhdC5uYXRpdmVFbGVtZW50KTsgfSk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpIHtcdH1cblxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG5cdFx0aWYgKHRoaXMubmF0aXZlRWxlbWVudCAmJiB0aGlzLm5hdGl2ZUVsZW1lbnQuaXNSZW5kZXJlZCkge1xuXHRcdFx0Zm9yIChjb25zdCBwcm9wTmFtZSBpbiBjaGFuZ2VzKSB7XG5cdFx0XHRcdGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuXHRcdFx0XHRcdHRoaXMubmF0aXZlRWxlbWVudFtwcm9wTmFtZV0gPSBjaGFuZ2VzW3Byb3BOYW1lXS5jdXJyZW50VmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxufVxuIl19