@open-e/oe-coordinator
Version:
This module is used to detect mouse movement on the border of HTMLElement. Useful usecase is to enable resize event in `div` element when mouse is on the border of it.
77 lines • 5.96 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, HostListener, ElementRef, Renderer2, Input } from "@angular/core";
/**
* Directive for Zoom Effect
*
* \@example:
* `<div zoom-editor maxScale='4' minScale='0.5' accumulativeVal='0.1'></div>`
*/
var ZoomDirective = /** @class */ (function () {
function ZoomDirective(_ref, renderer) {
this._ref = _ref;
this.renderer = renderer;
this.maxScale = 3;
this.minScale = 0.5;
this.accumulativeVal = 0.1;
this.currentScale = 1;
}
/**
* @param {?} event
* @return {?}
*/
ZoomDirective.prototype.onwheel = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (event.ctrlKey) {
// Support older version of IE
/** @type {?} */
var handler = window.event || event;
handler.preventDefault();
handler.wheelDelta > 0 && this.currentScale <= this.maxScale
? (this.currentScale += this.accumulativeVal)
: handler.wheelDelta < 0 && this.currentScale >= this.minScale
? (this.currentScale -= this.accumulativeVal)
: "";
this.renderer.setStyle(this._ref.nativeElement, "transform", "scale(" + this.currentScale + ")");
}
};
ZoomDirective.decorators = [
{ type: Directive, args: [{
selector: "[zoom-editor]"
},] }
];
/** @nocollapse */
ZoomDirective.ctorParameters = function () { return [
{ type: ElementRef },
{ type: Renderer2 }
]; };
ZoomDirective.propDecorators = {
maxScale: [{ type: Input }],
minScale: [{ type: Input }],
accumulativeVal: [{ type: Input }],
currentScale: [{ type: Input }],
onwheel: [{ type: HostListener, args: ["wheel", ["$event"],] }]
};
return ZoomDirective;
}());
export { ZoomDirective };
if (false) {
/** @type {?} */
ZoomDirective.prototype.maxScale;
/** @type {?} */
ZoomDirective.prototype.minScale;
/** @type {?} */
ZoomDirective.prototype.accumulativeVal;
/** @type {?} */
ZoomDirective.prototype.currentScale;
/** @type {?} */
ZoomDirective.prototype._ref;
/** @type {?} */
ZoomDirective.prototype.renderer;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ab3Blbi1lL29lLWNvb3JkaW5hdG9yLyIsInNvdXJjZXMiOlsibW9kdWxlL2NsYXNzL3pvb20uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVF0RjtJQVNFLHVCQUFtQixJQUFnQixFQUFTLFFBQW1CO1FBQTVDLFNBQUksR0FBSixJQUFJLENBQVk7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBTHRELGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixhQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ2Ysb0JBQWUsR0FBRyxHQUFHLENBQUM7UUFDdEIsaUJBQVksR0FBRyxDQUFDLENBQUM7SUFFd0MsQ0FBQzs7Ozs7SUFHbkUsK0JBQU87Ozs7SUFEUCxVQUNRLEtBQUs7UUFDWCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7OztnQkFFYixPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxLQUFLO1lBQ25DLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxRQUFRO2dCQUMxRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQzdDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxRQUFRO29CQUM5RCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUM7b0JBQzdDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFUCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQ3ZCLFdBQVcsRUFDWCxXQUFTLElBQUksQ0FBQyxZQUFZLE1BQUcsQ0FDOUIsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7Z0JBN0JGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtpQkFDMUI7Ozs7Z0JBVmlDLFVBQVU7Z0JBQUUsU0FBUzs7OzJCQVlwRCxLQUFLOzJCQUNMLEtBQUs7a0NBQ0wsS0FBSzsrQkFDTCxLQUFLOzBCQUlMLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0lBbUJuQyxvQkFBQztDQUFBLEFBOUJELElBOEJDO1NBM0JZLGFBQWE7OztJQUN4QixpQ0FBc0I7O0lBQ3RCLGlDQUF3Qjs7SUFDeEIsd0NBQStCOztJQUMvQixxQ0FBMEI7O0lBRWQsNkJBQXVCOztJQUFFLGlDQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKlxyXG4gKiBEaXJlY3RpdmUgZm9yIFpvb20gRWZmZWN0XHJcbiAqIFxyXG4gKiBAZXhhbXBsZTpcclxuICogIGA8ZGl2IHpvb20tZWRpdG9yIG1heFNjYWxlPSc0JyBtaW5TY2FsZT0nMC41JyBhY2N1bXVsYXRpdmVWYWw9JzAuMSc+PC9kaXY+YFxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6IFwiW3pvb20tZWRpdG9yXVwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBab29tRGlyZWN0aXZlIHtcclxuICBASW5wdXQoKSBtYXhTY2FsZSA9IDM7XHJcbiAgQElucHV0KCkgbWluU2NhbGUgPSAwLjU7XHJcbiAgQElucHV0KCkgYWNjdW11bGF0aXZlVmFsID0gMC4xO1xyXG4gIEBJbnB1dCgpIGN1cnJlbnRTY2FsZSA9IDE7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBfcmVmOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcIndoZWVsXCIsIFtcIiRldmVudFwiXSlcclxuICBvbndoZWVsKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuY3RybEtleSkge1xyXG4gICAgICAvLyBTdXBwb3J0IG9sZGVyIHZlcnNpb24gb2YgSUVcclxuICAgICAgbGV0IGhhbmRsZXIgPSB3aW5kb3cuZXZlbnQgfHwgZXZlbnQ7XHJcbiAgICAgIGhhbmRsZXIucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgaGFuZGxlci53aGVlbERlbHRhID4gMCAmJiB0aGlzLmN1cnJlbnRTY2FsZSA8PSB0aGlzLm1heFNjYWxlXHJcbiAgICAgICAgPyAodGhpcy5jdXJyZW50U2NhbGUgKz0gdGhpcy5hY2N1bXVsYXRpdmVWYWwpXHJcbiAgICAgICAgOiBoYW5kbGVyLndoZWVsRGVsdGEgPCAwICYmIHRoaXMuY3VycmVudFNjYWxlID49IHRoaXMubWluU2NhbGVcclxuICAgICAgICA/ICh0aGlzLmN1cnJlbnRTY2FsZSAtPSB0aGlzLmFjY3VtdWxhdGl2ZVZhbClcclxuICAgICAgICA6IFwiXCI7XHJcblxyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxyXG4gICAgICAgIHRoaXMuX3JlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICAgIFwidHJhbnNmb3JtXCIsXHJcbiAgICAgICAgYHNjYWxlKCR7dGhpcy5jdXJyZW50U2NhbGV9KWBcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19