{"version":3,"file":"taiga-ui-cdk-directives-swipe.mjs","sources":["../../../projects/cdk/directives/swipe/swipe.options.ts","../../../projects/cdk/directives/swipe/swipe.service.ts","../../../projects/cdk/directives/swipe/swipe.directive.ts","../../../projects/cdk/directives/swipe/taiga-ui-cdk-directives-swipe.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\n\nimport {type TuiSwipeOptions} from './swipe.types';\n\nexport const TUI_SWIPE_OPTIONS = new InjectionToken<TuiSwipeOptions>(\n    ngDevMode ? 'TUI_SWIPE_OPTIONS' : '',\n    {\n        factory: () => ({\n            timeout: 500,\n            threshold: 30,\n        }),\n    },\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable} from '@angular/core';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {filter, map, merge, Observable, pairwise} from 'rxjs';\n\nimport {TUI_SWIPE_OPTIONS} from './swipe.options';\nimport {type TuiSwipeDirection, type TuiSwipeEvent} from './swipe.types';\n\n@Injectable()\nexport class TuiSwipeService extends Observable<TuiSwipeEvent> {\n    constructor() {\n        const doc = inject(DOCUMENT);\n        const el = tuiInjectElement();\n        const {timeout, threshold} = inject(TUI_SWIPE_OPTIONS);\n\n        super((subscriber) =>\n            merge(\n                tuiTypedFromEvent(el, 'touchstart', {passive: true}),\n                tuiTypedFromEvent(doc, 'touchend'),\n            )\n                .pipe(\n                    pairwise(),\n                    filter(\n                        ([first, second]) =>\n                            !!first.touches.length &&\n                            first.touches[0]?.identifier ===\n                                second.changedTouches[0]?.identifier,\n                    ),\n                    map(([start, end]) => {\n                        const startX = start.touches[0]?.clientX ?? 0;\n                        const startY = start.touches[0]?.clientY ?? 0;\n                        const endX = end.changedTouches[0]?.clientX ?? 0;\n                        const endY = end.changedTouches[0]?.clientY ?? 0;\n\n                        const distanceX = startX - endX;\n                        const distanceY = startY - endY;\n                        const duration = end.timeStamp - start.timeStamp;\n\n                        if (\n                            (Math.abs(distanceX) > threshold ||\n                                Math.abs(distanceY) > threshold) &&\n                            duration < timeout\n                        ) {\n                            return {\n                                direction: tuiGetSwipeDirection(distanceX, distanceY),\n                                events: [start, end] as [TouchEvent, TouchEvent],\n                            };\n                        }\n\n                        return null;\n                    }),\n                    filter(tuiIsPresent),\n                )\n                .subscribe(subscriber),\n        );\n    }\n}\n\nfunction tuiGetSwipeDirection(deltaX: number, deltaY: number): TuiSwipeDirection {\n    if (Math.abs(deltaY) > Math.abs(deltaX)) {\n        return deltaY > 0 ? 'top' : 'bottom';\n    }\n\n    return deltaX > 0 ? 'left' : 'right';\n}\n","import {Directive, inject} from '@angular/core';\nimport {outputFromObservable} from '@angular/core/rxjs-interop';\n\nimport {TuiSwipeService} from './swipe.service';\n\n@Directive({\n    selector: '[tuiSwipe]',\n    providers: [TuiSwipeService],\n})\nexport class TuiSwipe {\n    public readonly tuiSwipe = outputFromObservable(inject(TuiSwipeService));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}