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

atinc / ngx-tethys / d9ae709b-3c27-4b69-b125-b8b80b54f90b

pending completion
d9ae709b-3c27-4b69-b125-b8b80b54f90b

Pull #2757

circleci

mengshuicmq
fix: fix code review
Pull Request #2757: feat(color-picker): color-picker support disabled (#INFR-8645)

98 of 6315 branches covered (1.55%)

Branch coverage included in aggregate %.

1 of 1 new or added line in 1 file covered. (100.0%)

2392 of 13661 relevant lines covered (17.51%)

83.12 hits per line

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

6.25
/src/carousel/carousel.service.ts
1
import { Inject, Injectable, NgZone } 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({
11
    providedIn: 'root'
×
12
})
×
13
export class ThyCarouselService {
×
14
    private listeners = new Map<string, (event: MouseEvent | TouchEvent) => void>();
×
15
    private document: Document;
16

17
    documentDraggingOutside$ = new Subject<MouseEvent | Touch>();
×
18

×
19
    constructor(private ngZone: NgZone, @Inject(DOCUMENT) document: any) {
20
        this.document = document;
×
21
    }
22

23
    private clearListeners(): void {
×
24
        this.listeners.forEach((handler, name) => {
×
25
            this.document.removeEventListener(name, handler as EventListener);
26
        });
27
        this.listeners.clear();
×
28
    }
29

30
    private getEventPotions(event: MouseEvent | TouchEvent): MouseEvent | Touch {
31
        if (event instanceof MouseEvent) {
×
32
            return event;
×
33
        } else {
34
            return event.touches[0] || event.changedTouches[0];
×
35
        }
×
36
    }
×
37

×
38
    registerDrag(event: MouseEvent | TouchEvent): Observable<ThyDistanceVector> {
×
39
        if (this.documentDraggingOutside$) {
40
            this.documentDraggingOutside$.complete();
41
        }
42

43
        const startPoint = this.getEventPotions(event);
44

45
        this.documentDraggingOutside$ = new Subject<MouseEvent | Touch>();
×
46

×
47
        this.registerHandler(event);
×
48

×
49
        return this.documentDraggingOutside$.pipe(
×
50
            map(e => {
×
51
                return {
52
                    x: e.pageX - startPoint!.pageX,
×
53
                    y: e.pageY - startPoint!.pageY
×
54
                };
×
55
            })
56
        );
×
57
    }
×
58

×
59
    registerHandler(event: MouseEvent | TouchEvent) {
×
60
        this.clearListeners();
×
61
        const _isTouchEvent = event instanceof MouseEvent;
62
        const moveEvent = _isTouchEvent ? 'mousemove' : 'touchmove';
63
        const upEvent = _isTouchEvent ? 'mouseup' : 'touchend';
64
        const moveEventHandler = (e: MouseEvent | TouchEvent) => {
1✔
65
            this.documentDraggingOutside$.next(e instanceof MouseEvent ? e : e.touches[0] || e.changedTouches[0]);
66
        };
67
        const upEventHandler = () => {
68
            this.documentDraggingOutside$.complete();
69
            this.clearListeners();
1✔
70
        };
71
        this.listeners.set(moveEvent, moveEventHandler);
72
        this.listeners.set(upEvent, upEventHandler);
73
        this.ngZone.runOutsideAngular(() => {
74
            this.listeners.forEach((handler, name) => {
75
                this.document.addEventListener(name, handler as EventListener);
76
            });
77
        });
78
    }
79
}
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