UNPKG

@uex/web-extensions

Version:

Uex extensions for Angular 6+ web projects

210 lines 16.7 kB
/** * @fileoverview added by tsickle * Generated from: lib/modules/drag-and-drop/drop-zone.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, ContentChildren, Input, Output, QueryList, ElementRef, EventEmitter } from '@angular/core'; import * as _ from 'lodash'; import { DragAndDropService } from './drag-and-drop.service'; import { DraggableDirective } from './draggable.directive'; export class DropZoneDirective { /** * @param {?} _service * @param {?} elementRef */ constructor(_service, elementRef) { this._service = _service; this.elementRef = elementRef; this.onDragEnter = new EventEmitter(); this.onDragLeave = new EventEmitter(); this.onDrop = new EventEmitter(); this.onRemove = new EventEmitter(); this.enabled = true; this.dragging_over = false; this.drop_zone = this._service.registerDropZone({ element: this._element }); } /** * @private * @param {?} enabled * @return {?} */ set _setEnabled(enabled) { if (_.isString(enabled) && _.isEmpty(enabled)) { this.enabled = true; } else { this.enabled = !!enabled; } this.drop_zone.setEnabled(this.enabled); } /** * @private * @param {?} restriction * @return {?} */ set _setDropZoneRestriction(restriction) { this.drop_zone_restriction = restriction; this.drop_zone.setRestriction(this.drop_zone_restriction); } /** * @return {?} */ ngOnInit() { this._drag_enter_subscription = this.drop_zone.onEnter.subscribe((/** * @param {?} event * @return {?} */ (event) => { if (this.dragging_over) { return; } this.dragging_over = true; if (this.drop_zone_drag_over_class) { this._element.classList.add(this.drop_zone_drag_over_class); } this.onDragEnter.emit(event); })); this._drag_leave_subscription = this.drop_zone.onLeave.subscribe((/** * @param {?} event * @return {?} */ (event) => { if (!this.dragging_over) { return; } this.dragging_over = false; if (this.drop_zone_drag_over_class) { this._element.classList.remove(this.drop_zone_drag_over_class); } this.onDragLeave.emit(event); })); this._drop_subscription = this.drop_zone.onDrop.subscribe((/** * @param {?} event * @return {?} */ (event) => { this.onDrop.emit(event); })); this._remove_subscription = this.drop_zone.onRemove.subscribe((/** * @param {?} event * @return {?} */ (event) => { this.onRemove.emit(event); })); } /** * @return {?} */ ngAfterViewInit() { this.drop_zone.setDraggableChildren(this._draggable_children.map((/** * @param {?} child * @return {?} */ (child) => child.draggable))); } /** * @return {?} */ ngOnDestroy() { if (this._drag_enter_subscription) { this._drag_enter_subscription.unsubscribe(); } if (this._drag_leave_subscription) { this._drag_leave_subscription.unsubscribe(); } if (this._drop_subscription) { this._drop_subscription.unsubscribe(); } if (this._remove_subscription) { this._remove_subscription.unsubscribe(); } this._service.unregisterDropZone(this.drop_zone); } /** * @private * @return {?} */ get _element() { return this.elementRef.nativeElement; } } DropZoneDirective.decorators = [ { type: Directive, args: [{ selector: '[uexDropZone]', host: { '[class.uex-drop-zone]': 'enabled', '[class.dragging-over]': 'dragging_over' } },] } ]; /** @nocollapse */ DropZoneDirective.ctorParameters = () => [ { type: DragAndDropService }, { type: ElementRef } ]; DropZoneDirective.propDecorators = { _draggable_children: [{ type: ContentChildren, args: [DraggableDirective,] }], _setEnabled: [{ type: Input, args: ['uexDropZone',] }], _setDropZoneRestriction: [{ type: Input, args: ['uexDropZoneExclude',] }], drop_zone_drag_over_class: [{ type: Input, args: ['uexDropZoneDragOverClass',] }], onDragEnter: [{ type: Output, args: ['onDragEnter',] }], onDragLeave: [{ type: Output, args: ['onDragLeave',] }], onDrop: [{ type: Output, args: ['onDrop',] }], onRemove: [{ type: Output, args: ['onRemove',] }] }; if (false) { /** * @type {?} * @private */ DropZoneDirective.prototype._draggable_children; /** @type {?} */ DropZoneDirective.prototype.drop_zone_drag_over_class; /** @type {?} */ DropZoneDirective.prototype.onDragEnter; /** @type {?} */ DropZoneDirective.prototype.onDragLeave; /** @type {?} */ DropZoneDirective.prototype.onDrop; /** @type {?} */ DropZoneDirective.prototype.onRemove; /** @type {?} */ DropZoneDirective.prototype.enabled; /** @type {?} */ DropZoneDirective.prototype.dragging_over; /** @type {?} */ DropZoneDirective.prototype.drop_zone_restriction; /** @type {?} */ DropZoneDirective.prototype.drop_zone; /** * @type {?} * @private */ DropZoneDirective.prototype._drag_enter_subscription; /** * @type {?} * @private */ DropZoneDirective.prototype._drag_leave_subscription; /** * @type {?} * @private */ DropZoneDirective.prototype._drop_subscription; /** * @type {?} * @private */ DropZoneDirective.prototype._remove_subscription; /** * @type {?} * @private */ DropZoneDirective.prototype._service; /** @type {?} */ DropZoneDirective.prototype.elementRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC16b25lLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1ZXgvd2ViLWV4dGVuc2lvbnMvIiwic291cmNlcyI6WyJsaWIvbW9kdWxlcy9kcmFnLWFuZC1kcm9wL2Ryb3Atem9uZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUdqSixPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsa0JBQWtCLEVBQW9CLE1BQU0seUJBQXlCLENBQUM7QUFFL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFVM0QsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7SUF5QjVCLFlBQ1UsUUFBNEIsRUFDN0IsVUFBc0I7UUFEckIsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUFDN0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVJELGdCQUFXLEdBQTRCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUQsZ0JBQVcsR0FBNEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUvRCxXQUFNLEdBQW1DLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUQsYUFBUSxHQUFtQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBV2xGLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQU4zQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7WUFDOUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7Ozs7OztJQTdCRCxJQUFrQyxXQUFXLENBQUMsT0FBeUI7UUFDckUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDckI7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztTQUMxQjtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDOzs7Ozs7SUFFRCxJQUF5Qyx1QkFBdUIsQ0FBQyxXQUE4QjtRQUM3RixJQUFJLENBQUMscUJBQXFCLEdBQUcsV0FBVyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzVELENBQUM7Ozs7SUE0Qk0sUUFBUTtRQUNiLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTOzs7O1FBQUMsQ0FBQyxLQUFnQixFQUFFLEVBQUU7WUFDcEYsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUFFLE9BQU87YUFBRTtZQUVuQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUMxQixJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtnQkFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7YUFBRTtZQUVwRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLEVBQUMsQ0FBQztRQUVILElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTOzs7O1FBQUMsQ0FBQyxLQUFnQixFQUFFLEVBQUU7WUFDcEYsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQUUsT0FBTzthQUFFO1lBRXBDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO2dCQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQzthQUFFO1lBRXZHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUMsRUFBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVM7Ozs7UUFBQyxDQUFDLEtBQXVCLEVBQUUsRUFBRTtZQUNwRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDLEVBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTOzs7O1FBQUMsQ0FBQyxLQUF1QixFQUFFLEVBQUU7WUFDeEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHOzs7O1FBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7Ozs7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQUU7UUFDbkYsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FBRTtRQUNuRixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUFFO1FBQ3ZFLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQUU7UUFFM0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7Ozs7SUFFRCxJQUFZLFFBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN2QyxDQUFDOzs7WUE5RkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixJQUFJLEVBQUU7b0JBQ0osdUJBQXVCLEVBQUUsU0FBUztvQkFDbEMsdUJBQXVCLEVBQUUsZUFBZTtpQkFDekM7YUFDRjs7OztZQVhRLGtCQUFrQjtZQUxvQyxVQUFVOzs7a0NBa0J0RSxlQUFlLFNBQUMsa0JBQWtCOzBCQUVsQyxLQUFLLFNBQUMsYUFBYTtzQ0FVbkIsS0FBSyxTQUFDLG9CQUFvQjt3Q0FJMUIsS0FBSyxTQUFDLDBCQUEwQjswQkFFaEMsTUFBTSxTQUFDLGFBQWE7MEJBQ3BCLE1BQU0sU0FBQyxhQUFhO3FCQUVwQixNQUFNLFNBQUMsUUFBUTt1QkFDZixNQUFNLFNBQUMsVUFBVTs7Ozs7OztJQXRCbEIsZ0RBQWdHOztJQWdCaEcsc0RBQTRFOztJQUU1RSx3Q0FBd0Y7O0lBQ3hGLHdDQUF3Rjs7SUFFeEYsbUNBQXFGOztJQUNyRixxQ0FBeUY7O0lBV3pGLG9DQUFzQjs7SUFDdEIsMENBQTZCOztJQUM3QixrREFBZ0Q7O0lBRWhELHNDQUEyQjs7Ozs7SUFDM0IscURBQStDOzs7OztJQUMvQyxxREFBK0M7Ozs7O0lBQy9DLCtDQUF5Qzs7Ozs7SUFDekMsaURBQTJDOzs7OztJQWhCekMscUNBQW9DOztJQUNwQyx1Q0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIE91dHB1dCwgUXVlcnlMaXN0LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5cclxuaW1wb3J0IHsgRHJhZ0FuZERyb3BTZXJ2aWNlLCBEcmFnQW5kRHJvcEV2ZW50IH0gZnJvbSAnLi9kcmFnLWFuZC1kcm9wLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgRHJhZ2dhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kcmFnZ2FibGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRHJvcFpvbmUgfSBmcm9tICcuL2NsYXNzZXMvZHJvcC16b25lJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3VleERyb3Bab25lXScsXHJcbiAgaG9zdDoge1xyXG4gICAgJ1tjbGFzcy51ZXgtZHJvcC16b25lXSc6ICdlbmFibGVkJyxcclxuICAgICdbY2xhc3MuZHJhZ2dpbmctb3Zlcl0nOiAnZHJhZ2dpbmdfb3ZlcidcclxuICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wWm9uZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBAQ29udGVudENoaWxkcmVuKERyYWdnYWJsZURpcmVjdGl2ZSkgcHJpdmF0ZSBfZHJhZ2dhYmxlX2NoaWxkcmVuOiBRdWVyeUxpc3Q8RHJhZ2dhYmxlRGlyZWN0aXZlPjtcclxuXHJcbiAgQElucHV0KCd1ZXhEcm9wWm9uZScpIHByaXZhdGUgc2V0IF9zZXRFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4gfCBzdHJpbmcpIHtcclxuICAgIGlmIChfLmlzU3RyaW5nKGVuYWJsZWQpICYmIF8uaXNFbXB0eShlbmFibGVkKSkge1xyXG4gICAgICB0aGlzLmVuYWJsZWQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbmFibGVkID0gISFlbmFibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZHJvcF96b25lLnNldEVuYWJsZWQodGhpcy5lbmFibGVkKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgndWV4RHJvcFpvbmVFeGNsdWRlJykgcHJpdmF0ZSBzZXQgX3NldERyb3Bab25lUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLmRyb3Bfem9uZV9yZXN0cmljdGlvbiA9IHJlc3RyaWN0aW9uO1xyXG4gICAgdGhpcy5kcm9wX3pvbmUuc2V0UmVzdHJpY3Rpb24odGhpcy5kcm9wX3pvbmVfcmVzdHJpY3Rpb24pO1xyXG4gIH1cclxuICBASW5wdXQoJ3VleERyb3Bab25lRHJhZ092ZXJDbGFzcycpIHB1YmxpYyBkcm9wX3pvbmVfZHJhZ19vdmVyX2NsYXNzOiBzdHJpbmc7XHJcblxyXG4gIEBPdXRwdXQoJ29uRHJhZ0VudGVyJykgcHVibGljIG9uRHJhZ0VudGVyOiBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCdvbkRyYWdMZWF2ZScpIHB1YmxpYyBvbkRyYWdMZWF2ZTogRXZlbnRFbWl0dGVyPERyYWdFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoJ29uRHJvcCcpIHB1YmxpYyBvbkRyb3A6IEV2ZW50RW1pdHRlcjxEcmFnQW5kRHJvcEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCdvblJlbW92ZScpIHB1YmxpYyBvblJlbW92ZTogRXZlbnRFbWl0dGVyPERyYWdBbmREcm9wRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IERyYWdBbmREcm9wU2VydmljZSxcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLmRyb3Bfem9uZSA9IHRoaXMuX3NlcnZpY2UucmVnaXN0ZXJEcm9wWm9uZSh7XHJcbiAgICAgIGVsZW1lbnQ6IHRoaXMuX2VsZW1lbnRcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVuYWJsZWQgPSB0cnVlO1xyXG4gIHB1YmxpYyBkcmFnZ2luZ19vdmVyID0gZmFsc2U7XHJcbiAgcHVibGljIGRyb3Bfem9uZV9yZXN0cmljdGlvbjogc3RyaW5nIHwgc3RyaW5nW107XHJcblxyXG4gIHB1YmxpYyBkcm9wX3pvbmU6IERyb3Bab25lO1xyXG4gIHByaXZhdGUgX2RyYWdfZW50ZXJfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBfZHJhZ19sZWF2ZV9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIF9kcm9wX3N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX3JlbW92ZV9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5fZHJhZ19lbnRlcl9zdWJzY3JpcHRpb24gPSB0aGlzLmRyb3Bfem9uZS5vbkVudGVyLnN1YnNjcmliZSgoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5kcmFnZ2luZ19vdmVyKSB7IHJldHVybjsgfVxyXG5cclxuICAgICAgdGhpcy5kcmFnZ2luZ19vdmVyID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMuZHJvcF96b25lX2RyYWdfb3Zlcl9jbGFzcykgeyB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5kcm9wX3pvbmVfZHJhZ19vdmVyX2NsYXNzKTsgfVxyXG5cclxuICAgICAgdGhpcy5vbkRyYWdFbnRlci5lbWl0KGV2ZW50KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2RyYWdfbGVhdmVfc3Vic2NyaXB0aW9uID0gdGhpcy5kcm9wX3pvbmUub25MZWF2ZS5zdWJzY3JpYmUoKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmRyYWdnaW5nX292ZXIpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICB0aGlzLmRyYWdnaW5nX292ZXIgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuZHJvcF96b25lX2RyYWdfb3Zlcl9jbGFzcykgeyB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5kcm9wX3pvbmVfZHJhZ19vdmVyX2NsYXNzKTsgfVxyXG5cclxuICAgICAgdGhpcy5vbkRyYWdMZWF2ZS5lbWl0KGV2ZW50KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2Ryb3Bfc3Vic2NyaXB0aW9uID0gdGhpcy5kcm9wX3pvbmUub25Ecm9wLnN1YnNjcmliZSgoZXZlbnQ6IERyYWdBbmREcm9wRXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5vbkRyb3AuZW1pdChldmVudCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9yZW1vdmVfc3Vic2NyaXB0aW9uID0gdGhpcy5kcm9wX3pvbmUub25SZW1vdmUuc3Vic2NyaWJlKChldmVudDogRHJhZ0FuZERyb3BFdmVudCkgPT4ge1xyXG4gICAgICB0aGlzLm9uUmVtb3ZlLmVtaXQoZXZlbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5kcm9wX3pvbmUuc2V0RHJhZ2dhYmxlQ2hpbGRyZW4odGhpcy5fZHJhZ2dhYmxlX2NoaWxkcmVuLm1hcCgoY2hpbGQpID0+IGNoaWxkLmRyYWdnYWJsZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuX2RyYWdfZW50ZXJfc3Vic2NyaXB0aW9uKSB7IHRoaXMuX2RyYWdfZW50ZXJfc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IH1cclxuICAgIGlmICh0aGlzLl9kcmFnX2xlYXZlX3N1YnNjcmlwdGlvbikgeyB0aGlzLl9kcmFnX2xlYXZlX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpOyB9XHJcbiAgICBpZiAodGhpcy5fZHJvcF9zdWJzY3JpcHRpb24pIHsgdGhpcy5fZHJvcF9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTsgfVxyXG4gICAgaWYgKHRoaXMuX3JlbW92ZV9zdWJzY3JpcHRpb24pIHsgdGhpcy5fcmVtb3ZlX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpOyB9XHJcblxyXG4gICAgdGhpcy5fc2VydmljZS51bnJlZ2lzdGVyRHJvcFpvbmUodGhpcy5kcm9wX3pvbmUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgX2VsZW1lbnQgKCk6IEhUTUxFbGVtZW50IHtcclxuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICB9XHJcbn1cclxuIl19