@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
209 lines • 16.1 kB
JavaScript
/**
* @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==