{"version":3,"file":"taiga-ui-cdk-directives-resizer.mjs","sources":["../../../projects/cdk/directives/resizer/resizable.directive.ts","../../../projects/cdk/directives/resizer/resizer.directive.ts","../../../projects/cdk/directives/resizer/taiga-ui-cdk-directives-resizer.ts"],"sourcesContent":["import {Directive} from '@angular/core';\nimport {TuiElement} from '@taiga-ui/cdk/directives/element';\n\n@Directive({selector: '[tuiResizable]'})\nexport class TuiResizable extends TuiElement {}\n","import {Directive, type ElementRef, inject, input, output} from '@angular/core';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiResizable} from './resizable.directive';\n\n@Directive({\n    selector: '[tuiResizer]',\n    host: {\n        '[style.cursor]': 'cursor',\n        '[style.touchAction]': '\"none\"',\n        '(pointerdown.zoneless.prevent)': 'onPointerDown($event.x, $event.y)',\n        '(document:pointermove.zoneless)': 'onPointerMove($event)',\n        '(document:pointerup.zoneless)': 'onPointerUp()',\n    },\n})\nexport class TuiResizer {\n    private readonly resizable: ElementRef<HTMLElement> = inject(TuiResizable);\n\n    protected x = Number.NaN;\n    protected y = Number.NaN;\n    protected width = 0;\n    protected height = 0;\n\n    public readonly tuiResizer = input<readonly [x: number, y: number]>([0, 0]);\n\n    public readonly tuiSizeChange = output<readonly [x: number, y: number]>();\n\n    protected get cursor(): string {\n        const tuiResizer = this.tuiResizer();\n\n        if (!tuiResizer[0]) {\n            return 'ns-resize';\n        }\n\n        if (!tuiResizer[1]) {\n            return 'ew-resize';\n        }\n\n        if (tuiResizer[0] * tuiResizer[1] > 0) {\n            return 'nwse-resize';\n        }\n\n        return 'nesw-resize';\n    }\n\n    protected onPointerDown(x: number, y: number): void {\n        this.x = x;\n        this.y = y;\n        this.width = this.resizable.nativeElement.clientWidth;\n        this.height = this.resizable.nativeElement.clientHeight;\n    }\n\n    protected onPointerMove({x, y, buttons}: PointerEvent): void {\n        if (buttons) {\n            this.onMove(x, y);\n        } else {\n            this.onPointerUp();\n        }\n    }\n\n    protected onPointerUp(): void {\n        this.x = Number.NaN;\n    }\n\n    protected onMove(x: number, y: number): void {\n        const tuiResizer = this.tuiResizer();\n\n        if (Number.isNaN(this.x)) {\n            return;\n        }\n\n        const {style} = this.resizable.nativeElement;\n        const size = [\n            this.width + tuiResizer[0] * (x - this.x),\n            this.height + tuiResizer[1] * (y - this.y),\n        ] as const;\n\n        if (tuiResizer[0]) {\n            style.width = tuiPx(size[0]);\n        }\n\n        if (tuiResizer[1]) {\n            style.height = tuiPx(size[1]);\n        }\n\n        this.tuiSizeChange.emit(size);\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}