@taiga-ui/kit
Version:
Taiga UI Angular main components kit
53 lines • 6.79 kB
JavaScript
import { Directive, inject, NgZone } from '@angular/core';
import { tuiGetActualTarget, tuiIsElement } from '@taiga-ui/cdk/utils/dom';
import { TuiTile } from './tile.component';
import * as i0 from "@angular/core";
class TuiTileHandle {
constructor() {
this.zone = inject(NgZone);
this.tile = inject(TuiTile);
this.x = NaN;
this.y = NaN;
}
onPointer(x = NaN, y = NaN) {
if (!Number.isNaN(x) || !Number.isNaN(this.x)) {
this.zone.run(() => {
const { left, top } = this.tile.element.getBoundingClientRect();
this.x = x - left;
this.y = y - top;
this.tile.onDrag([NaN, NaN]);
});
}
}
onMove(x, y) {
if (!Number.isNaN(this.x)) {
this.zone.run(() => {
this.tile.onDrag([x - this.x, y - this.y]);
});
}
}
onStart(event) {
const target = tuiGetActualTarget(event);
const { x, y, pointerId } = event;
if (tuiIsElement(target)) {
target.releasePointerCapture(pointerId);
}
this.onPointer(x, y);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTileHandle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiTileHandle, isStandalone: true, selector: "[tuiTileHandle]", host: { listeners: { "pointerdown.zoneless.prevent": "onStart($event)", "document:pointerup.zoneless": "onPointer()", "document:pointermove.zoneless": "onMove($event.x, $event.y)" } }, ngImport: i0 }); }
}
export { TuiTileHandle };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTileHandle, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[tuiTileHandle]',
host: {
'(pointerdown.zoneless.prevent)': 'onStart($event)',
'(document:pointerup.zoneless)': 'onPointer()',
'(document:pointermove.zoneless)': 'onMove($event.x, $event.y)',
},
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZS1oYW5kbGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvdGlsZXMvdGlsZS1oYW5kbGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFekUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGtCQUFrQixDQUFDOztBQUV6QyxNQVNhLGFBQWE7SUFUMUI7UUFVcUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixTQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLE1BQUMsR0FBRyxHQUFHLENBQUM7UUFDUixNQUFDLEdBQUcsR0FBRyxDQUFDO0tBZ0NuQjtJQTlCYSxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRztRQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDZixNQUFNLEVBQUMsSUFBSSxFQUFFLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBRTlELElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDbEIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRVMsTUFBTSxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFUyxPQUFPLENBQUMsS0FBbUI7UUFDakMsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFDLEdBQUcsS0FBSyxDQUFDO1FBRWhDLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3RCLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMzQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7K0dBbkNRLGFBQWE7bUdBQWIsYUFBYTs7U0FBYixhQUFhOzRGQUFiLGFBQWE7a0JBVHpCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLElBQUksRUFBRTt3QkFDRixnQ0FBZ0MsRUFBRSxpQkFBaUI7d0JBQ25ELCtCQUErQixFQUFFLGFBQWE7d0JBQzlDLGlDQUFpQyxFQUFFLDRCQUE0QjtxQkFDbEU7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgaW5qZWN0LCBOZ1pvbmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0dWlHZXRBY3R1YWxUYXJnZXQsIHR1aUlzRWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuXG5pbXBvcnQge1R1aVRpbGV9IGZyb20gJy4vdGlsZS5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3R1aVRpbGVIYW5kbGVdJyxcbiAgICBob3N0OiB7XG4gICAgICAgICcocG9pbnRlcmRvd24uem9uZWxlc3MucHJldmVudCknOiAnb25TdGFydCgkZXZlbnQpJyxcbiAgICAgICAgJyhkb2N1bWVudDpwb2ludGVydXAuem9uZWxlc3MpJzogJ29uUG9pbnRlcigpJyxcbiAgICAgICAgJyhkb2N1bWVudDpwb2ludGVybW92ZS56b25lbGVzcyknOiAnb25Nb3ZlKCRldmVudC54LCAkZXZlbnQueSknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aVRpbGVIYW5kbGUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGlsZSA9IGluamVjdChUdWlUaWxlKTtcbiAgICBwcml2YXRlIHggPSBOYU47XG4gICAgcHJpdmF0ZSB5ID0gTmFOO1xuXG4gICAgcHJvdGVjdGVkIG9uUG9pbnRlcih4ID0gTmFOLCB5ID0gTmFOKTogdm9pZCB7XG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKHgpIHx8ICFOdW1iZXIuaXNOYU4odGhpcy54KSkge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qge2xlZnQsIHRvcH0gPSB0aGlzLnRpbGUuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMueCA9IHggLSBsZWZ0O1xuICAgICAgICAgICAgICAgIHRoaXMueSA9IHkgLSB0b3A7XG4gICAgICAgICAgICAgICAgdGhpcy50aWxlLm9uRHJhZyhbTmFOLCBOYU5dKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uTW92ZSh4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoIU51bWJlci5pc05hTih0aGlzLngpKSB7XG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbGUub25EcmFnKFt4IC0gdGhpcy54LCB5IC0gdGhpcy55XSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblN0YXJ0KGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdHVpR2V0QWN0dWFsVGFyZ2V0KGV2ZW50KTtcbiAgICAgICAgY29uc3Qge3gsIHksIHBvaW50ZXJJZH0gPSBldmVudDtcblxuICAgICAgICBpZiAodHVpSXNFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgICAgIHRhcmdldC5yZWxlYXNlUG9pbnRlckNhcHR1cmUocG9pbnRlcklkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25Qb2ludGVyKHgsIHkpO1xuICAgIH1cbn1cbiJdfQ==