• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

atinc / ngx-tethys / 68ef226c-f83e-44c1-b8ed-e420a83c5d84

28 May 2025 10:31AM UTC coverage: 10.352% (-80.0%) from 90.316%
68ef226c-f83e-44c1-b8ed-e420a83c5d84

Pull #3460

circleci

pubuzhixing8
chore: xxx
Pull Request #3460: refactor(icon): migrate signal input #TINFR-1476

132 of 6823 branches covered (1.93%)

Branch coverage included in aggregate %.

10 of 14 new or added lines in 1 file covered. (71.43%)

11648 existing lines in 344 files now uncovered.

2078 of 14525 relevant lines covered (14.31%)

6.69 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

6.12
/src/carousel/carousel.service.ts
1
import { Injectable, NgZone, inject } from '@angular/core';
2
import { DOCUMENT } from '@angular/common';
3
import { Observable, Subject } from 'rxjs';
4
import { map } from 'rxjs/operators';
5
import { ThyDistanceVector } from './typings';
6

7
/**
8
 * @internal
9
 */
1✔
10
@Injectable({
UNCOV
11
    providedIn: 'root'
×
UNCOV
12
})
×
UNCOV
13
export class ThyCarouselService {
×
UNCOV
14
    private ngZone = inject(NgZone);
×
UNCOV
15

×
16
    private listeners = new Map<string, (event: MouseEvent | TouchEvent) => void>();
17
    private document: Document;
UNCOV
18

×
UNCOV
19
    documentDraggingOutside$ = new Subject<MouseEvent | Touch>();
×
20

UNCOV
21
    constructor() {
×
22
        const document = inject(DOCUMENT);
23

UNCOV
24
        this.document = document;
×
UNCOV
25
    }
×
26

27
    private clearListeners(): void {
UNCOV
28
        this.listeners.forEach((handler, name) => {
×
29
            this.document.removeEventListener(name, handler as EventListener);
30
        });
31
        this.listeners.clear();
UNCOV
32
    }
×
UNCOV
33

×
34
    private getEventPotions(event: MouseEvent | TouchEvent): MouseEvent | Touch {
UNCOV
35
        if (event instanceof MouseEvent) {
×
UNCOV
36
            return event;
×
UNCOV
37
        } else {
×
UNCOV
38
            return event.touches[0] || event.changedTouches[0];
×
UNCOV
39
        }
×
40
    }
41

42
    registerDrag(event: MouseEvent | TouchEvent): Observable<ThyDistanceVector> {
43
        if (this.documentDraggingOutside$) {
44
            this.documentDraggingOutside$.complete();
45
        }
UNCOV
46

×
UNCOV
47
        const startPoint = this.getEventPotions(event);
×
UNCOV
48

×
UNCOV
49
        this.documentDraggingOutside$ = new Subject<MouseEvent | Touch>();
×
UNCOV
50

×
UNCOV
51
        this.registerHandler(event);
×
52

UNCOV
53
        return this.documentDraggingOutside$.pipe(
×
UNCOV
54
            map(e => {
×
UNCOV
55
                return {
×
56
                    x: e.pageX - startPoint!.pageX,
UNCOV
57
                    y: e.pageY - startPoint!.pageY
×
UNCOV
58
                };
×
UNCOV
59
            })
×
UNCOV
60
        );
×
UNCOV
61
    }
×
62

63
    registerHandler(event: MouseEvent | TouchEvent) {
64
        this.clearListeners();
65
        const _isTouchEvent = event instanceof MouseEvent;
1✔
66
        const moveEvent = _isTouchEvent ? 'mousemove' : 'touchmove';
67
        const upEvent = _isTouchEvent ? 'mouseup' : 'touchend';
1✔
68
        const moveEventHandler = (e: MouseEvent | TouchEvent) => {
69
            this.documentDraggingOutside$.next(e instanceof MouseEvent ? e : e.touches[0] || e.changedTouches[0]);
70
        };
71
        const upEventHandler = () => {
72
            this.documentDraggingOutside$.complete();
73
            this.clearListeners();
74
        };
75
        this.listeners.set(moveEvent, moveEventHandler);
76
        this.listeners.set(upEvent, upEventHandler);
77
        this.ngZone.runOutsideAngular(() => {
78
            this.listeners.forEach((handler, name) => {
79
                this.document.addEventListener(name, handler as EventListener);
80
            });
81
        });
82
    }
83
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc