UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

209 lines 16.1 kB
/** * @fileoverview added by tsickle * Generated from: resize.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, ElementRef, EventEmitter, Input, NgZone, Output } from '@angular/core'; export class ResizeDirective { /** * @param {?} el * @param {?} ngZone */ constructor(el, ngZone) { this.el = el; this.ngZone = ngZone; // 是否允许拖动 this.enableResize = true; // 按下事件,mousedown,touchstart等 this.pressEvent = new EventEmitter(); // 拖动中事件,mousemove,touchmove等 this.dragEvent = new EventEmitter(); // 释放事件,mouseup,touchend等 this.releaseEvent = new EventEmitter(); this.bind = (/** * @param {?} el * @param {?} event * @param {?} callback * @return {?} */ (el, event, callback) => el.addEventListener && el.addEventListener(event, callback)); this.unbind = (/** * @param {?} el * @param {?} event * @param {?} callback * @return {?} */ (el, event, callback) => el && el.removeEventListener && el.removeEventListener(event, callback)); this.mousedown = (/** * @param {?} e * @return {?} */ (e) => { this.bind(document, 'mousemove', this.mousemove); this.bind(document, 'mouseup', this.mouseup); this.pressEvent.emit(this.normalizeEvent(e)); }); this.mousemove = (/** * @param {?} e * @return {?} */ (e) => { this.dragEvent.emit(this.normalizeEvent(e)); }); this.mouseup = (/** * @param {?} e * @return {?} */ (e) => { this.unbind(document, 'mousemove', this.mousemove); this.unbind(document, 'mouseup', this.mouseup); this.releaseEvent.emit(this.normalizeEvent(e)); }); this.touchstart = (/** * @param {?} e * @return {?} */ (e) => { this.bind(document, 'touchmove', this.touchmove); this.bind(document, 'touchend', this.touchend); if (e.touches.length === 1) { this.pressEvent.emit(this.normalizeEvent(e)); } }); this.touchmove = (/** * @param {?} e * @return {?} */ (e) => { if (e.touches.length === 1) { this.dragEvent.emit(this.normalizeEvent(e)); } }); this.touchend = (/** * @param {?} e * @return {?} */ (e) => { this.bind(document, 'touchmove', this.touchmove); this.bind(document, 'touchend', this.touchend); if (e.touches.length === 0) { this.releaseEvent.emit(this.normalizeEvent(e)); } }); } /** * @return {?} */ ngOnInit() { if (this.enableResize) { this.ngZone.runOutsideAngular((/** * @return {?} */ () => { this.bindEvent(); })); } } /** * @return {?} */ ngOnDestroy() { if (this.enableResize) { this.unbind(this.el.nativeElement, 'mousedown', this.mousedown); this.unbind(this.el.nativeElement, 'touchstart', this.touchstart); } } /** * @return {?} */ bindEvent() { /** @type {?} */ const element = this.el.nativeElement; // 绑定mousedown事件 this.bind(element, 'mousedown', this.mousedown); // 绑定触屏事件 this.bind(element, 'touchstart', this.touchstart); } // 返回常用位置信息 /** * @param {?} e * @return {?} */ normalizeEvent(e) { // 判断事件类型,用于计算位置坐标 if (e.type.match(/touch/)) { return { pageX: e.changedTouches[0].pageX, pageY: e.changedTouches[0].pageY, clientX: e.changedTouches[0].clientX, clientY: e.changedTouches[0].clientY, type: e.type, originalEvent: e, isTouch: true }; } return { pageX: e.pageX, pageY: e.pageY, clientX: e.clientX, clientY: e.clientY, offsetX: e.offsetX, offsetY: e.offsetY, type: e.type, originalEvent: e }; } } ResizeDirective.decorators = [ { type: Directive, args: [{ selector: '[dResize]' },] } ]; /** @nocollapse */ ResizeDirective.ctorParameters = () => [ { type: ElementRef }, { type: NgZone } ]; ResizeDirective.propDecorators = { enableResize: [{ type: Input }], pressEvent: [{ type: Output }], dragEvent: [{ type: Output }], releaseEvent: [{ type: Output }] }; if (false) { /** @type {?} */ ResizeDirective.prototype.enableResize; /** @type {?} */ ResizeDirective.prototype.pressEvent; /** @type {?} */ ResizeDirective.prototype.dragEvent; /** @type {?} */ ResizeDirective.prototype.releaseEvent; /** @type {?} */ ResizeDirective.prototype.bind; /** @type {?} */ ResizeDirective.prototype.unbind; /** @type {?} */ ResizeDirective.prototype.mousedown; /** @type {?} */ ResizeDirective.prototype.mousemove; /** @type {?} */ ResizeDirective.prototype.mouseup; /** @type {?} */ ResizeDirective.prototype.touchstart; /** @type {?} */ ResizeDirective.prototype.touchmove; /** @type {?} */ ResizeDirective.prototype.touchend; /** * @type {?} * @private */ ResizeDirective.prototype.el; /** * @type {?} * @private */ ResizeDirective.prototype.ngZone; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL3NwbGl0dGVyLyIsInNvdXJjZXMiOlsicmVzaXplLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLOUcsTUFBTSxPQUFPLGVBQWU7Ozs7O0lBUzFCLFlBQW9CLEVBQWMsRUFBVSxNQUFjO1FBQXRDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFROztRQVBqRCxpQkFBWSxHQUFHLElBQUksQ0FBQzs7UUFFbkIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7O1FBRWhDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDOztRQUUvQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFrQjVDLFNBQUk7Ozs7OztRQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFDO1FBRTVGLFdBQU07Ozs7OztRQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBQztRQVUxRyxjQUFTOzs7O1FBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxF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QUNOLENBQUM7OztZQXZHQSxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7YUFDdEI7Ozs7WUFKbUIsVUFBVTtZQUF1QixNQUFNOzs7MkJBT3hELEtBQUs7eUJBRUwsTUFBTTt3QkFFTixNQUFNOzJCQUVOLE1BQU07Ozs7SUFOUCx1Q0FBNkI7O0lBRTdCLHFDQUEwQzs7SUFFMUMsb0NBQXlDOztJQUV6Qyx1Q0FBNEM7O0lBa0I1QywrQkFBNEY7O0lBRTVGLGlDQUEwRzs7SUFVMUcsb0NBSUM7O0lBRUQsb0NBRUM7O0lBRUQsa0NBSUM7O0lBRUQscUNBTUM7O0lBRUQsb0NBSUM7O0lBRUQsbUNBTUM7Ozs7O0lBakVXLDZCQUFzQjs7Ozs7SUFBRSxpQ0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZFJlc2l6ZV0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXNpemVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgLy8g5piv5ZCm5YWB6K645ouW5YqoXHJcbiAgQElucHV0KCkgZW5hYmxlUmVzaXplID0gdHJ1ZTtcclxuICAvLyDmjInkuIvkuovku7bvvIxtb3VzZWRvd27vvIx0b3VjaHN0YXJ0562JXHJcbiAgQE91dHB1dCgpIHByZXNzRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLy8g5ouW5Yqo5Lit5LqL5Lu277yMbW91c2Vtb3Zl77yMdG91Y2htb3Zl562JXHJcbiAgQE91dHB1dCgpIGRyYWdFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuIC8vIOmHiuaUvuS6i+S7tu+8jG1vdXNldXDvvIx0b3VjaGVuZOetiVxyXG4gIEBPdXRwdXQoKSByZWxlYXNlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5lbmFibGVSZXNpemUpIHtcclxuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYmluZEV2ZW50KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5lbmFibGVSZXNpemUpIHtcclxuICAgICAgdGhpcy51bmJpbmQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJywgdGhpcy5tb3VzZWRvd24pO1xyXG4gICAgICB0aGlzLnVuYmluZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICd0b3VjaHN0YXJ0JywgdGhpcy50b3VjaHN0YXJ0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJpbmQgPSAoZWwsIGV2ZW50LCBjYWxsYmFjaykgPT4gZWwuYWRkRXZlbnRMaXN0ZW5lciAmJiBlbC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBjYWxsYmFjayk7XHJcblxyXG4gIHVuYmluZCA9IChlbCwgZXZlbnQsIGNhbGxiYWNrKSA9PiBlbCAmJiBlbC5yZW1vdmVFdmVudExpc3RlbmVyICYmIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGNhbGxiYWNrKTtcclxuXHJcbiAgYmluZEV2ZW50KCkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcclxuICAgIC8vIOe7keWumm1vdXNlZG93buS6i+S7tlxyXG4gICAgdGhpcy5iaW5kKGVsZW1lbnQsICdtb3VzZWRvd24nLCB0aGlzLm1vdXNlZG93bik7XHJcbiAgICAvLyDnu5Hlrprop6blsY/kuovku7ZcclxuICAgIHRoaXMuYmluZChlbGVtZW50LCAndG91Y2hzdGFydCcsIHRoaXMudG91Y2hzdGFydCk7XHJcbiAgfVxyXG5cclxuICBtb3VzZWRvd24gPSAoZSkgPT4ge1xyXG4gICAgdGhpcy5iaW5kKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgdGhpcy5tb3VzZW1vdmUpO1xyXG4gICAgdGhpcy5iaW5kKGRvY3VtZW50LCAnbW91c2V1cCcsIHRoaXMubW91c2V1cCk7XHJcbiAgICB0aGlzLnByZXNzRXZlbnQuZW1pdCh0aGlzLm5vcm1hbGl6ZUV2ZW50KGUpKTtcclxuICB9XHJcblxyXG4gIG1vdXNlbW92ZSA9IChlKSA9PiB7XHJcbiAgICB0aGlzLmRyYWdFdmVudC5lbWl0KHRoaXMubm9ybWFsaXplRXZlbnQoZSkpO1xyXG4gIH1cclxuXHJcbiAgbW91c2V1cCA9IChlKSA9PiB7XHJcbiAgICB0aGlzLnVuYmluZChkb2N1bWVudCwgJ21vdXNlbW92ZScsIHRoaXMubW91c2Vtb3ZlKTtcclxuICAgIHRoaXMudW5iaW5kKGRvY3VtZW50LCAnbW91c2V1cCcsIHRoaXMubW91c2V1cCk7XHJcbiAgICB0aGlzLnJlbGVhc2VFdmVudC5lbWl0KHRoaXMubm9ybWFsaXplRXZlbnQoZSkpO1xyXG4gIH1cclxuXHJcbiAgdG91Y2hzdGFydCA9IChlKSA9PiB7XHJcbiAgICB0aGlzLmJpbmQoZG9jdW1lbnQsICd0b3VjaG1vdmUnLCB0aGlzLnRvdWNobW92ZSk7XHJcbiAgICB0aGlzLmJpbmQoZG9jdW1lbnQsICd0b3VjaGVuZCcsIHRoaXMudG91Y2hlbmQpO1xyXG4gICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgdGhpcy5wcmVzc0V2ZW50LmVtaXQodGhpcy5ub3JtYWxpemVFdmVudChlKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b3VjaG1vdmUgPSAoZSkgPT4ge1xyXG4gICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgdGhpcy5kcmFnRXZlbnQuZW1pdCh0aGlzLm5vcm1hbGl6ZUV2ZW50KGUpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvdWNoZW5kID0gKGUpID0+IHtcclxuICAgIHRoaXMuYmluZChkb2N1bWVudCwgJ3RvdWNobW92ZScsIHRoaXMudG91Y2htb3ZlKTtcclxuICAgIHRoaXMuYmluZChkb2N1bWVudCwgJ3RvdWNoZW5kJywgdGhpcy50b3VjaGVuZCk7XHJcbiAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnJlbGVhc2VFdmVudC5lbWl0KHRoaXMubm9ybWFsaXplRXZlbnQoZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g6L+U5Zue5bi455So5L2N572u5L+h5oGvXHJcbiAgbm9ybWFsaXplRXZlbnQoZSkge1xyXG4gICAgLy8g5Yik5pat5LqL5Lu257G75Z6L77yM55So5LqO6K6h566X5L2N572u5Z2Q5qCHXHJcbiAgICBpZiAoZS50eXBlLm1hdGNoKC90b3VjaC8pKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBwYWdlWDogZS5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCxcclxuICAgICAgICAgIHBhZ2VZOiBlLmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VZLFxyXG4gICAgICAgICAgY2xpZW50WDogZS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRYLFxyXG4gICAgICAgICAgY2xpZW50WTogZS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZLFxyXG4gICAgICAgICAgdHlwZTogZS50eXBlLFxyXG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcclxuICAgICAgICAgIGlzVG91Y2g6IHRydWVcclxuICAgICAgfTtcclxuICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHBhZ2VYOiBlLnBhZ2VYLFxyXG4gICAgICAgIHBhZ2VZOiBlLnBhZ2VZLFxyXG4gICAgICAgIGNsaWVudFg6IGUuY2xpZW50WCxcclxuICAgICAgICBjbGllbnRZOiBlLmNsaWVudFksXHJcbiAgICAgICAgb2Zmc2V0WDogZS5vZmZzZXRYLFxyXG4gICAgICAgIG9mZnNldFk6IGUub2Zmc2V0WSxcclxuICAgICAgICB0eXBlOiBlLnR5cGUsXHJcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZVxyXG4gICAgfTtcclxufVxyXG59XHJcbiJdfQ==