@taiga-ui/core 2.88.0 → 2.90.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/taiga-ui-core-components-scroll-controls.umd.js +41 -64
- package/bundles/taiga-ui-core-components-scroll-controls.umd.js.map +1 -1
- package/bundles/taiga-ui-core-components-scroll-controls.umd.min.js +1 -1
- package/bundles/taiga-ui-core-components-scroll-controls.umd.min.js.map +1 -1
- package/bundles/taiga-ui-core-tokens.umd.js +10 -5
- package/bundles/taiga-ui-core-tokens.umd.js.map +1 -1
- package/bundles/taiga-ui-core-tokens.umd.min.js +1 -1
- package/bundles/taiga-ui-core-tokens.umd.min.js.map +1 -1
- package/components/scroll-controls/scroll-controls.component.d.ts +1 -2
- package/components/scroll-controls/scrollbar.directive.d.ts +4 -7
- package/components/scroll-controls/taiga-ui-core-components-scroll-controls.metadata.json +1 -1
- package/constants/version.d.ts +1 -1
- package/esm2015/components/scroll-controls/scroll-controls.component.js +8 -15
- package/esm2015/components/scroll-controls/scrollbar.directive.js +31 -48
- package/esm2015/tokens/scroll-ref.js +9 -3
- package/esm5/components/scroll-controls/scroll-controls.component.js +8 -15
- package/esm5/components/scroll-controls/scrollbar.directive.js +31 -48
- package/esm5/tokens/scroll-ref.js +9 -3
- package/fesm2015/taiga-ui-core-components-scroll-controls.js +36 -59
- package/fesm2015/taiga-ui-core-components-scroll-controls.js.map +1 -1
- package/fesm2015/taiga-ui-core-tokens.js +8 -2
- package/fesm2015/taiga-ui-core-tokens.js.map +1 -1
- package/fesm5/taiga-ui-core-components-scroll-controls.js +36 -59
- package/fesm5/taiga-ui-core-components-scroll-controls.js.map +1 -1
- package/fesm5/taiga-ui-core-tokens.js +8 -2
- package/fesm5/taiga-ui-core-tokens.js.map +1 -1
- package/package.json +4 -4
- package/tokens/scroll-ref.d.ts +3 -0
- package/tokens/taiga-ui-core-tokens.metadata.json +1 -1
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
import { __decorate, __param } from 'tslib';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { tuiZoneOptimized, typedFromEvent, preventDefault, stopPropagation, tuiZonefree, POLLING_TIME, TuiDestroyService, TuiLetModule } from '@taiga-ui/cdk';
|
|
2
|
+
import { Inject, NgZone, ElementRef, Component, ChangeDetectionStrategy, Renderer2, Self, Input, Directive, NgModule } from '@angular/core';
|
|
3
|
+
import { ANIMATION_FRAME } from '@ng-web-apis/common';
|
|
4
|
+
import { tuiZoneOptimized, tuiTypedFromEvent, tuiPreventDefault, tuiStopPropagation, tuiZonefree, POLLING_TIME, tuiScrollFrom, TuiDestroyService, TuiLetModule } from '@taiga-ui/cdk';
|
|
6
5
|
import { tuiFadeIn } from '@taiga-ui/core/animations';
|
|
7
6
|
import { MODE_PROVIDER } from '@taiga-ui/core/providers';
|
|
8
7
|
import { TUI_ANIMATION_OPTIONS, TUI_SCROLL_REF, TUI_MODE, TUI_ELEMENT_REF } from '@taiga-ui/core/tokens';
|
|
9
|
-
import { Observable, merge
|
|
8
|
+
import { Observable, merge } from 'rxjs';
|
|
10
9
|
import { throttleTime, map, startWith, distinctUntilChanged, switchMap, takeUntil } from 'rxjs/operators';
|
|
10
|
+
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
11
11
|
|
|
12
12
|
// @dynamic
|
|
13
13
|
let TuiScrollControlsComponent = class TuiScrollControlsComponent {
|
|
14
|
-
constructor(options, ngZone,
|
|
14
|
+
constructor(options, ngZone, scrollRef, animationFrame$, mode$) {
|
|
15
15
|
this.options = options;
|
|
16
16
|
this.ngZone = ngZone;
|
|
17
|
-
this.documentRef = documentRef;
|
|
18
17
|
this.scrollRef = scrollRef;
|
|
19
18
|
this.animationFrame$ = animationFrame$;
|
|
20
19
|
this.mode$ = mode$;
|
|
@@ -22,9 +21,7 @@ let TuiScrollControlsComponent = class TuiScrollControlsComponent {
|
|
|
22
21
|
this.animation = Object.assign({ value: '' }, this.options);
|
|
23
22
|
}
|
|
24
23
|
get scrollbars() {
|
|
25
|
-
const { clientHeight, scrollHeight, clientWidth, scrollWidth } = this.scrollRef
|
|
26
|
-
? this.scrollRef.nativeElement
|
|
27
|
-
: this.documentRef.documentElement;
|
|
24
|
+
const { clientHeight, scrollHeight, clientWidth, scrollWidth } = this.scrollRef.nativeElement;
|
|
28
25
|
return [
|
|
29
26
|
Math.ceil((clientHeight / scrollHeight) * 100) < 100,
|
|
30
27
|
Math.ceil((clientWidth / scrollWidth) * 100) < 100,
|
|
@@ -34,8 +31,7 @@ let TuiScrollControlsComponent = class TuiScrollControlsComponent {
|
|
|
34
31
|
TuiScrollControlsComponent.ctorParameters = () => [
|
|
35
32
|
{ type: undefined, decorators: [{ type: Inject, args: [TUI_ANIMATION_OPTIONS,] }] },
|
|
36
33
|
{ type: NgZone, decorators: [{ type: Inject, args: [NgZone,] }] },
|
|
37
|
-
{ type:
|
|
38
|
-
{ type: ElementRef, decorators: [{ type: Optional }, { type: Inject, args: [TUI_SCROLL_REF,] }] },
|
|
34
|
+
{ type: ElementRef, decorators: [{ type: Inject, args: [TUI_SCROLL_REF,] }] },
|
|
39
35
|
{ type: Observable, decorators: [{ type: Inject, args: [ANIMATION_FRAME,] }] },
|
|
40
36
|
{ type: Observable, decorators: [{ type: Inject, args: [TUI_MODE,] }] }
|
|
41
37
|
];
|
|
@@ -53,30 +49,26 @@ TuiScrollControlsComponent = __decorate([
|
|
|
53
49
|
}),
|
|
54
50
|
__param(0, Inject(TUI_ANIMATION_OPTIONS)),
|
|
55
51
|
__param(1, Inject(NgZone)),
|
|
56
|
-
__param(2, Inject(
|
|
57
|
-
__param(3,
|
|
58
|
-
__param(
|
|
59
|
-
__param(4, Inject(ANIMATION_FRAME)),
|
|
60
|
-
__param(5, Inject(TUI_MODE))
|
|
52
|
+
__param(2, Inject(TUI_SCROLL_REF)),
|
|
53
|
+
__param(3, Inject(ANIMATION_FRAME)),
|
|
54
|
+
__param(4, Inject(TUI_MODE))
|
|
61
55
|
], TuiScrollControlsComponent);
|
|
62
56
|
|
|
63
57
|
const MIN_WIDTH = 24;
|
|
64
58
|
// @dynamic
|
|
65
59
|
let TuiScrollbarDirective = class TuiScrollbarDirective {
|
|
66
|
-
constructor(ngZone, renderer, destroy$, animationFrame$, wrapper, container,
|
|
60
|
+
constructor(ngZone, renderer, destroy$, animationFrame$, wrapper, container, doc, el) {
|
|
67
61
|
this.wrapper = wrapper;
|
|
68
62
|
this.container = container;
|
|
69
|
-
this.
|
|
70
|
-
this.
|
|
71
|
-
this.elementRef = elementRef;
|
|
72
|
-
this.viewportScroller = viewportScroller;
|
|
63
|
+
this.doc = doc;
|
|
64
|
+
this.el = el;
|
|
73
65
|
this.tuiScrollbar = 'vertical';
|
|
74
|
-
const { nativeElement } = this.
|
|
75
|
-
const mousedown$ =
|
|
76
|
-
const mousemove$ =
|
|
77
|
-
const mouseup$ =
|
|
78
|
-
const mousedownWrapper$ =
|
|
79
|
-
merge(mousedownWrapper$.pipe(
|
|
66
|
+
const { nativeElement } = this.el;
|
|
67
|
+
const mousedown$ = tuiTypedFromEvent(nativeElement, 'mousedown');
|
|
68
|
+
const mousemove$ = tuiTypedFromEvent(this.doc, 'mousemove');
|
|
69
|
+
const mouseup$ = tuiTypedFromEvent(this.doc, 'mouseup');
|
|
70
|
+
const mousedownWrapper$ = tuiTypedFromEvent(this.wrapper.nativeElement, 'mousedown');
|
|
71
|
+
merge(mousedownWrapper$.pipe(tuiPreventDefault(), map(event => this.getScrolled(event, 0.5, 0.5))), mousedown$.pipe(tuiPreventDefault(), tuiStopPropagation(), switchMap(event => {
|
|
80
72
|
const rect = nativeElement.getBoundingClientRect();
|
|
81
73
|
const vertical = getOffsetVertical(event, rect);
|
|
82
74
|
const horizontal = getOffsetHorizontal(event, rect);
|
|
@@ -84,22 +76,14 @@ let TuiScrollbarDirective = class TuiScrollbarDirective {
|
|
|
84
76
|
})))
|
|
85
77
|
.pipe(tuiZonefree(ngZone), takeUntil(destroy$))
|
|
86
78
|
.subscribe(([scrollTop, scrollLeft]) => {
|
|
87
|
-
const [x, y] = this.viewportScroller.getScrollPosition();
|
|
88
|
-
if (!this.container) {
|
|
89
|
-
this.viewportScroller.scrollToPosition([
|
|
90
|
-
this.tuiScrollbar === 'vertical' ? x : scrollLeft,
|
|
91
|
-
this.tuiScrollbar === 'vertical' ? scrollTop : y,
|
|
92
|
-
]);
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
79
|
if (this.tuiScrollbar === 'vertical') {
|
|
96
|
-
renderer.setProperty(this.
|
|
80
|
+
renderer.setProperty(this.element, 'scrollTop', scrollTop);
|
|
97
81
|
}
|
|
98
82
|
else {
|
|
99
|
-
renderer.setProperty(this.
|
|
83
|
+
renderer.setProperty(this.element, 'scrollLeft', scrollLeft);
|
|
100
84
|
}
|
|
101
85
|
});
|
|
102
|
-
merge(
|
|
86
|
+
merge(animationFrame$.pipe(throttleTime(POLLING_TIME)), tuiScrollFrom(this.element))
|
|
103
87
|
.pipe(tuiZonefree(ngZone), takeUntil(destroy$))
|
|
104
88
|
.subscribe(() => {
|
|
105
89
|
if (this.tuiScrollbar === 'vertical') {
|
|
@@ -113,13 +97,13 @@ let TuiScrollbarDirective = class TuiScrollbarDirective {
|
|
|
113
97
|
});
|
|
114
98
|
}
|
|
115
99
|
get scrolled() {
|
|
116
|
-
const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth, } = this.
|
|
100
|
+
const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth, } = this.element;
|
|
117
101
|
return this.tuiScrollbar === 'vertical'
|
|
118
102
|
? scrollTop / (scrollHeight - clientHeight)
|
|
119
103
|
: scrollLeft / (scrollWidth - clientWidth);
|
|
120
104
|
}
|
|
121
105
|
get compensation() {
|
|
122
|
-
const { clientHeight, scrollHeight, clientWidth, scrollWidth } = this.
|
|
106
|
+
const { clientHeight, scrollHeight, clientWidth, scrollWidth } = this.element;
|
|
123
107
|
if (((clientHeight * clientHeight) / scrollHeight > MIN_WIDTH &&
|
|
124
108
|
this.tuiScrollbar === 'vertical') ||
|
|
125
109
|
((clientWidth * clientWidth) / scrollWidth > MIN_WIDTH &&
|
|
@@ -135,21 +119,19 @@ let TuiScrollbarDirective = class TuiScrollbarDirective {
|
|
|
135
119
|
return this.scrolled * (1 - compensation);
|
|
136
120
|
}
|
|
137
121
|
get view() {
|
|
138
|
-
const { clientHeight, scrollHeight, clientWidth, scrollWidth } = this.
|
|
122
|
+
const { clientHeight, scrollHeight, clientWidth, scrollWidth } = this.element;
|
|
139
123
|
return this.tuiScrollbar === 'vertical'
|
|
140
124
|
? Math.ceil((clientHeight / scrollHeight) * 100) / 100
|
|
141
125
|
: Math.ceil((clientWidth / scrollWidth) * 100) / 100;
|
|
142
126
|
}
|
|
143
|
-
get
|
|
144
|
-
return this.container
|
|
145
|
-
? this.container.nativeElement
|
|
146
|
-
: this.documentRef.scrollingElement;
|
|
127
|
+
get element() {
|
|
128
|
+
return this.container.nativeElement;
|
|
147
129
|
}
|
|
148
130
|
getScrolled({ clientY, clientX }, offsetVertical, offsetHorizontal) {
|
|
149
|
-
const { offsetHeight, offsetWidth } = this.
|
|
131
|
+
const { offsetHeight, offsetWidth } = this.el.nativeElement;
|
|
150
132
|
const { top, left, width, height } = this.wrapper.nativeElement.getBoundingClientRect();
|
|
151
|
-
const maxTop = this.
|
|
152
|
-
const maxLeft = this.
|
|
133
|
+
const maxTop = this.element.scrollHeight - height;
|
|
134
|
+
const maxLeft = this.element.scrollWidth - width;
|
|
153
135
|
const scrolledTop = (clientY - top - offsetHeight * offsetVertical) / (height - offsetHeight);
|
|
154
136
|
const scrolledLeft = (clientX - left - offsetWidth * offsetHorizontal) / (width - offsetWidth);
|
|
155
137
|
return [maxTop * scrolledTop, maxLeft * scrolledLeft];
|
|
@@ -158,14 +140,12 @@ let TuiScrollbarDirective = class TuiScrollbarDirective {
|
|
|
158
140
|
TuiScrollbarDirective.ctorParameters = () => [
|
|
159
141
|
{ type: NgZone, decorators: [{ type: Inject, args: [NgZone,] }] },
|
|
160
142
|
{ type: Renderer2, decorators: [{ type: Inject, args: [Renderer2,] }] },
|
|
161
|
-
{ type: Observable, decorators: [{ type: Inject, args: [TuiDestroyService,] }] },
|
|
143
|
+
{ type: Observable, decorators: [{ type: Self }, { type: Inject, args: [TuiDestroyService,] }] },
|
|
162
144
|
{ type: Observable, decorators: [{ type: Inject, args: [ANIMATION_FRAME,] }] },
|
|
163
145
|
{ type: ElementRef, decorators: [{ type: Inject, args: [TUI_ELEMENT_REF,] }] },
|
|
164
|
-
{ type: ElementRef, decorators: [{ type:
|
|
146
|
+
{ type: ElementRef, decorators: [{ type: Inject, args: [TUI_SCROLL_REF,] }] },
|
|
165
147
|
{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
166
|
-
{ type:
|
|
167
|
-
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
|
|
168
|
-
{ type: ViewportScroller, decorators: [{ type: Inject, args: [ViewportScroller,] }] }
|
|
148
|
+
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] }
|
|
169
149
|
];
|
|
170
150
|
__decorate([
|
|
171
151
|
Input()
|
|
@@ -177,15 +157,12 @@ TuiScrollbarDirective = __decorate([
|
|
|
177
157
|
}),
|
|
178
158
|
__param(0, Inject(NgZone)),
|
|
179
159
|
__param(1, Inject(Renderer2)),
|
|
180
|
-
__param(2, Inject(TuiDestroyService)),
|
|
160
|
+
__param(2, Self()), __param(2, Inject(TuiDestroyService)),
|
|
181
161
|
__param(3, Inject(ANIMATION_FRAME)),
|
|
182
162
|
__param(4, Inject(TUI_ELEMENT_REF)),
|
|
183
|
-
__param(5, Optional()),
|
|
184
163
|
__param(5, Inject(TUI_SCROLL_REF)),
|
|
185
164
|
__param(6, Inject(DOCUMENT)),
|
|
186
|
-
__param(7, Inject(
|
|
187
|
-
__param(8, Inject(ElementRef)),
|
|
188
|
-
__param(9, Inject(ViewportScroller))
|
|
165
|
+
__param(7, Inject(ElementRef))
|
|
189
166
|
], TuiScrollbarDirective);
|
|
190
167
|
function getOffsetVertical({ clientY }, { top, height }) {
|
|
191
168
|
return (clientY - top) / height;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-components-scroll-controls.js","sources":["ng://@taiga-ui/core/components/scroll-controls/scroll-controls.component.ts","ng://@taiga-ui/core/components/scroll-controls/scrollbar.directive.ts","ng://@taiga-ui/core/components/scroll-controls/scrollbar-wrapper.directive.ts","ng://@taiga-ui/core/components/scroll-controls/scroll-controls.module.ts","ng://@taiga-ui/core/components/scroll-controls/taiga-ui-core-components-scroll-controls.ts"],"sourcesContent":["import {AnimationOptions} from '@angular/animations';\nimport {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n NgZone,\n Optional,\n} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk';\nimport {tuiFadeIn} from '@taiga-ui/core/animations';\nimport {MODE_PROVIDER} from '@taiga-ui/core/providers';\nimport {TUI_ANIMATION_OPTIONS, TUI_MODE, TUI_SCROLL_REF} from '@taiga-ui/core/tokens';\nimport {TuiBrightness} from '@taiga-ui/core/types';\nimport {Observable} from 'rxjs';\nimport {distinctUntilChanged, map, startWith, throttleTime} from 'rxjs/operators';\n\n// @dynamic\n@Component({\n selector: 'tui-scroll-controls',\n templateUrl: './scroll-controls.template.html',\n styleUrls: ['./scroll-controls.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiFadeIn],\n providers: [MODE_PROVIDER],\n host: {\n '($.data-mode.attr)': 'mode$',\n },\n})\nexport class TuiScrollControlsComponent {\n readonly refresh$ = this.animationFrame$.pipe(\n throttleTime(300),\n map(() => this.scrollbars),\n startWith([false, false]),\n distinctUntilChanged((a, b) => a[0] === b[0] && a[1] === b[1]),\n tuiZoneOptimized(this.ngZone),\n );\n\n readonly animation = {\n value: '',\n ...this.options,\n } as const;\n\n constructor(\n @Inject(TUI_ANIMATION_OPTIONS) private readonly options: AnimationOptions,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Optional()\n @Inject(TUI_SCROLL_REF)\n private readonly scrollRef: ElementRef<HTMLElement> | null,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n ) {}\n\n private get scrollbars(): [boolean, boolean] {\n const {clientHeight, scrollHeight, clientWidth, scrollWidth} = this.scrollRef\n ? this.scrollRef.nativeElement\n : this.documentRef.documentElement;\n\n return [\n Math.ceil((clientHeight / scrollHeight) * 100) < 100,\n Math.ceil((clientWidth / scrollWidth) * 100) < 100,\n ];\n }\n}\n","import {DOCUMENT, ViewportScroller} from '@angular/common';\nimport {\n Directive,\n ElementRef,\n Inject,\n Input,\n NgZone,\n Optional,\n Renderer2,\n} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {\n POLLING_TIME,\n preventDefault,\n stopPropagation,\n TuiDestroyService,\n tuiZonefree,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {TUI_ELEMENT_REF, TUI_SCROLL_REF} from '@taiga-ui/core/tokens';\nimport {TuiOrientationT} from '@taiga-ui/core/types';\nimport {fromEvent, merge, Observable} from 'rxjs';\nimport {map, switchMap, takeUntil, throttleTime} from 'rxjs/operators';\n\nconst MIN_WIDTH = 24;\n\n// @dynamic\n@Directive({\n selector: '[tuiScrollbar]',\n providers: [TuiDestroyService],\n})\nexport class TuiScrollbarDirective {\n @Input()\n tuiScrollbar: TuiOrientationT = 'vertical';\n\n constructor(\n @Inject(NgZone) ngZone: NgZone,\n @Inject(Renderer2) renderer: Renderer2,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(TUI_ELEMENT_REF) private readonly wrapper: ElementRef<HTMLElement>,\n @Optional()\n @Inject(TUI_SCROLL_REF)\n private readonly container: ElementRef<HTMLElement> | null,\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(ViewportScroller) private readonly viewportScroller: ViewportScroller,\n ) {\n const {nativeElement} = this.elementRef;\n const mousedown$ = typedFromEvent(nativeElement, 'mousedown');\n const mousemove$ = typedFromEvent(this.documentRef, 'mousemove');\n const mouseup$ = typedFromEvent(this.documentRef, 'mouseup');\n const mousedownWrapper$ = typedFromEvent(wrapper.nativeElement, 'mousedown');\n\n merge(\n mousedownWrapper$.pipe(\n preventDefault(),\n map(event => this.getScrolled(event, 0.5, 0.5)),\n ),\n mousedown$.pipe(\n preventDefault(),\n stopPropagation(),\n switchMap(event => {\n const rect = nativeElement.getBoundingClientRect();\n const vertical = getOffsetVertical(event, rect);\n const horizontal = getOffsetHorizontal(event, rect);\n\n return mousemove$.pipe(\n map(event => this.getScrolled(event, vertical, horizontal)),\n takeUntil(mouseup$),\n );\n }),\n ),\n )\n .pipe(tuiZonefree(ngZone), takeUntil(destroy$))\n .subscribe(([scrollTop, scrollLeft]) => {\n const [x, y] = this.viewportScroller.getScrollPosition();\n\n if (!this.container) {\n this.viewportScroller.scrollToPosition([\n this.tuiScrollbar === 'vertical' ? x : scrollLeft,\n this.tuiScrollbar === 'vertical' ? scrollTop : y,\n ]);\n\n return;\n }\n\n if (this.tuiScrollbar === 'vertical') {\n renderer.setProperty(\n this.container.nativeElement,\n 'scrollTop',\n scrollTop,\n );\n } else {\n renderer.setProperty(\n this.container.nativeElement,\n 'scrollLeft',\n scrollLeft,\n );\n }\n });\n\n merge(\n fromEvent(\n this.container ? this.container.nativeElement : this.windowRef,\n 'scroll',\n ),\n animationFrame$.pipe(throttleTime(POLLING_TIME)),\n )\n .pipe(tuiZonefree(ngZone), takeUntil(destroy$))\n .subscribe(() => {\n if (this.tuiScrollbar === 'vertical') {\n renderer.setStyle(nativeElement, 'top', `${this.thumb * 100}%`);\n renderer.setStyle(nativeElement, 'height', `${this.view * 100}%`);\n } else {\n renderer.setStyle(nativeElement, 'left', `${this.thumb * 100}%`);\n renderer.setStyle(nativeElement, 'width', `${this.view * 100}%`);\n }\n });\n }\n\n private get scrolled(): number {\n const {\n scrollTop,\n scrollHeight,\n clientHeight,\n scrollLeft,\n scrollWidth,\n clientWidth,\n } = this.computedContainer;\n\n return this.tuiScrollbar === 'vertical'\n ? scrollTop / (scrollHeight - clientHeight)\n : scrollLeft / (scrollWidth - clientWidth);\n }\n\n private get compensation(): number {\n const {clientHeight, scrollHeight, clientWidth, scrollWidth} =\n this.computedContainer;\n\n if (\n ((clientHeight * clientHeight) / scrollHeight > MIN_WIDTH &&\n this.tuiScrollbar === 'vertical') ||\n ((clientWidth * clientWidth) / scrollWidth > MIN_WIDTH &&\n this.tuiScrollbar === 'horizontal')\n ) {\n return 0;\n }\n\n return this.tuiScrollbar === 'vertical'\n ? MIN_WIDTH / clientHeight\n : MIN_WIDTH / clientWidth;\n }\n\n private get thumb(): number {\n const compensation = this.compensation || this.view;\n\n return this.scrolled * (1 - compensation);\n }\n\n private get view(): number {\n const {clientHeight, scrollHeight, clientWidth, scrollWidth} =\n this.computedContainer;\n\n return this.tuiScrollbar === 'vertical'\n ? Math.ceil((clientHeight / scrollHeight) * 100) / 100\n : Math.ceil((clientWidth / scrollWidth) * 100) / 100;\n }\n\n private get computedContainer(): Element {\n return this.container\n ? this.container.nativeElement\n : (this.documentRef.scrollingElement as unknown as Element);\n }\n\n private getScrolled(\n {clientY, clientX}: MouseEvent,\n offsetVertical: number,\n offsetHorizontal: number,\n ): [number, number] {\n const {offsetHeight, offsetWidth} = this.elementRef.nativeElement;\n const {top, left, width, height} =\n this.wrapper.nativeElement.getBoundingClientRect();\n\n const maxTop = this.computedContainer.scrollHeight - height;\n const maxLeft = this.computedContainer.scrollWidth - width;\n const scrolledTop =\n (clientY - top - offsetHeight * offsetVertical) / (height - offsetHeight);\n const scrolledLeft =\n (clientX - left - offsetWidth * offsetHorizontal) / (width - offsetWidth);\n\n return [maxTop * scrolledTop, maxLeft * scrolledLeft];\n }\n}\n\nfunction getOffsetVertical({clientY}: MouseEvent, {top, height}: ClientRect): number {\n return (clientY - top) / height;\n}\n\nfunction getOffsetHorizontal({clientX}: MouseEvent, {left, width}: ClientRect): number {\n return (clientX - left) / width;\n}\n","import {Directive, ElementRef} from '@angular/core';\nimport {TUI_ELEMENT_REF} from '@taiga-ui/core/tokens';\n\n@Directive({\n selector: '[tuiScrollbarWrapper]',\n providers: [\n {\n provide: TUI_ELEMENT_REF,\n useExisting: ElementRef,\n },\n ],\n})\nexport class TuiScrollbarWrapperDirective {}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiLetModule} from '@taiga-ui/cdk';\n\nimport {TuiScrollControlsComponent} from './scroll-controls.component';\nimport {TuiScrollbarDirective} from './scrollbar.directive';\nimport {TuiScrollbarWrapperDirective} from './scrollbar-wrapper.directive';\n\n@NgModule({\n imports: [CommonModule, TuiLetModule],\n declarations: [\n TuiScrollbarDirective,\n TuiScrollbarWrapperDirective,\n TuiScrollControlsComponent,\n ],\n exports: [TuiScrollControlsComponent],\n})\nexport class TuiScrollControlsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {TuiScrollbarWrapperDirective as ɵa} from './scrollbar-wrapper.directive';"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-components-scroll-controls.js","sources":["ng://@taiga-ui/core/components/scroll-controls/scroll-controls.component.ts","ng://@taiga-ui/core/components/scroll-controls/scrollbar.directive.ts","ng://@taiga-ui/core/components/scroll-controls/scrollbar-wrapper.directive.ts","ng://@taiga-ui/core/components/scroll-controls/scroll-controls.module.ts","ng://@taiga-ui/core/components/scroll-controls/taiga-ui-core-components-scroll-controls.ts"],"sourcesContent":["import {AnimationOptions} from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n NgZone,\n} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk';\nimport {tuiFadeIn} from '@taiga-ui/core/animations';\nimport {MODE_PROVIDER} from '@taiga-ui/core/providers';\nimport {TUI_ANIMATION_OPTIONS, TUI_MODE, TUI_SCROLL_REF} from '@taiga-ui/core/tokens';\nimport {TuiBrightness} from '@taiga-ui/core/types';\nimport {Observable} from 'rxjs';\nimport {distinctUntilChanged, map, startWith, throttleTime} from 'rxjs/operators';\n\n// @dynamic\n@Component({\n selector: 'tui-scroll-controls',\n templateUrl: './scroll-controls.template.html',\n styleUrls: ['./scroll-controls.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiFadeIn],\n providers: [MODE_PROVIDER],\n host: {\n '($.data-mode.attr)': 'mode$',\n },\n})\nexport class TuiScrollControlsComponent {\n readonly refresh$ = this.animationFrame$.pipe(\n throttleTime(300),\n map(() => this.scrollbars),\n startWith([false, false]),\n distinctUntilChanged((a, b) => a[0] === b[0] && a[1] === b[1]),\n tuiZoneOptimized(this.ngZone),\n );\n\n readonly animation = {\n value: '',\n ...this.options,\n } as const;\n\n constructor(\n @Inject(TUI_ANIMATION_OPTIONS) private readonly options: AnimationOptions,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(TUI_SCROLL_REF) private readonly scrollRef: ElementRef<HTMLElement>,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n ) {}\n\n private get scrollbars(): [boolean, boolean] {\n const {clientHeight, scrollHeight, clientWidth, scrollWidth} =\n this.scrollRef.nativeElement;\n\n return [\n Math.ceil((clientHeight / scrollHeight) * 100) < 100,\n Math.ceil((clientWidth / scrollWidth) * 100) < 100,\n ];\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {\n Directive,\n ElementRef,\n Inject,\n Input,\n NgZone,\n Renderer2,\n Self,\n} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {\n POLLING_TIME,\n TuiDestroyService,\n tuiPreventDefault,\n tuiScrollFrom,\n tuiStopPropagation,\n tuiTypedFromEvent,\n tuiZonefree,\n} from '@taiga-ui/cdk';\nimport {TUI_ELEMENT_REF, TUI_SCROLL_REF} from '@taiga-ui/core/tokens';\nimport {TuiOrientationT} from '@taiga-ui/core/types';\nimport {merge, Observable} from 'rxjs';\nimport {map, switchMap, takeUntil, throttleTime} from 'rxjs/operators';\n\nconst MIN_WIDTH = 24;\n\n// @dynamic\n@Directive({\n selector: '[tuiScrollbar]',\n providers: [TuiDestroyService],\n})\nexport class TuiScrollbarDirective {\n @Input()\n tuiScrollbar: TuiOrientationT = 'vertical';\n\n constructor(\n @Inject(NgZone) ngZone: NgZone,\n @Inject(Renderer2) renderer: Renderer2,\n @Self() @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(TUI_ELEMENT_REF) private readonly wrapper: ElementRef<HTMLElement>,\n @Inject(TUI_SCROLL_REF) private readonly container: ElementRef<HTMLElement>,\n @Inject(DOCUMENT) private readonly doc: Document,\n @Inject(ElementRef) private readonly el: ElementRef<HTMLElement>,\n ) {\n const {nativeElement} = this.el;\n const mousedown$ = tuiTypedFromEvent(nativeElement, 'mousedown');\n const mousemove$ = tuiTypedFromEvent(this.doc, 'mousemove');\n const mouseup$ = tuiTypedFromEvent(this.doc, 'mouseup');\n const mousedownWrapper$ = tuiTypedFromEvent(\n this.wrapper.nativeElement,\n 'mousedown',\n );\n\n merge(\n mousedownWrapper$.pipe(\n tuiPreventDefault(),\n map(event => this.getScrolled(event, 0.5, 0.5)),\n ),\n mousedown$.pipe(\n tuiPreventDefault(),\n tuiStopPropagation(),\n switchMap(event => {\n const rect = nativeElement.getBoundingClientRect();\n const vertical = getOffsetVertical(event, rect);\n const horizontal = getOffsetHorizontal(event, rect);\n\n return mousemove$.pipe(\n map(event => this.getScrolled(event, vertical, horizontal)),\n takeUntil(mouseup$),\n );\n }),\n ),\n )\n .pipe(tuiZonefree(ngZone), takeUntil(destroy$))\n .subscribe(([scrollTop, scrollLeft]) => {\n if (this.tuiScrollbar === 'vertical') {\n renderer.setProperty(this.element, 'scrollTop', scrollTop);\n } else {\n renderer.setProperty(this.element, 'scrollLeft', scrollLeft);\n }\n });\n\n merge(\n animationFrame$.pipe(throttleTime(POLLING_TIME)),\n tuiScrollFrom(this.element),\n )\n .pipe(tuiZonefree(ngZone), takeUntil(destroy$))\n .subscribe(() => {\n if (this.tuiScrollbar === 'vertical') {\n renderer.setStyle(nativeElement, 'top', `${this.thumb * 100}%`);\n renderer.setStyle(nativeElement, 'height', `${this.view * 100}%`);\n } else {\n renderer.setStyle(nativeElement, 'left', `${this.thumb * 100}%`);\n renderer.setStyle(nativeElement, 'width', `${this.view * 100}%`);\n }\n });\n }\n\n private get scrolled(): number {\n const {\n scrollTop,\n scrollHeight,\n clientHeight,\n scrollLeft,\n scrollWidth,\n clientWidth,\n } = this.element;\n\n return this.tuiScrollbar === 'vertical'\n ? scrollTop / (scrollHeight - clientHeight)\n : scrollLeft / (scrollWidth - clientWidth);\n }\n\n private get compensation(): number {\n const {clientHeight, scrollHeight, clientWidth, scrollWidth} = this.element;\n\n if (\n ((clientHeight * clientHeight) / scrollHeight > MIN_WIDTH &&\n this.tuiScrollbar === 'vertical') ||\n ((clientWidth * clientWidth) / scrollWidth > MIN_WIDTH &&\n this.tuiScrollbar === 'horizontal')\n ) {\n return 0;\n }\n\n return this.tuiScrollbar === 'vertical'\n ? MIN_WIDTH / clientHeight\n : MIN_WIDTH / clientWidth;\n }\n\n private get thumb(): number {\n const compensation = this.compensation || this.view;\n\n return this.scrolled * (1 - compensation);\n }\n\n private get view(): number {\n const {clientHeight, scrollHeight, clientWidth, scrollWidth} = this.element;\n\n return this.tuiScrollbar === 'vertical'\n ? Math.ceil((clientHeight / scrollHeight) * 100) / 100\n : Math.ceil((clientWidth / scrollWidth) * 100) / 100;\n }\n\n private get element(): Element {\n return this.container.nativeElement;\n }\n\n private getScrolled(\n {clientY, clientX}: MouseEvent,\n offsetVertical: number,\n offsetHorizontal: number,\n ): [number, number] {\n const {offsetHeight, offsetWidth} = this.el.nativeElement;\n const {top, left, width, height} =\n this.wrapper.nativeElement.getBoundingClientRect();\n\n const maxTop = this.element.scrollHeight - height;\n const maxLeft = this.element.scrollWidth - width;\n const scrolledTop =\n (clientY - top - offsetHeight * offsetVertical) / (height - offsetHeight);\n const scrolledLeft =\n (clientX - left - offsetWidth * offsetHorizontal) / (width - offsetWidth);\n\n return [maxTop * scrolledTop, maxLeft * scrolledLeft];\n }\n}\n\nfunction getOffsetVertical({clientY}: MouseEvent, {top, height}: ClientRect): number {\n return (clientY - top) / height;\n}\n\nfunction getOffsetHorizontal({clientX}: MouseEvent, {left, width}: ClientRect): number {\n return (clientX - left) / width;\n}\n","import {Directive, ElementRef} from '@angular/core';\nimport {TUI_ELEMENT_REF} from '@taiga-ui/core/tokens';\n\n@Directive({\n selector: '[tuiScrollbarWrapper]',\n providers: [\n {\n provide: TUI_ELEMENT_REF,\n useExisting: ElementRef,\n },\n ],\n})\nexport class TuiScrollbarWrapperDirective {}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiLetModule} from '@taiga-ui/cdk';\n\nimport {TuiScrollControlsComponent} from './scroll-controls.component';\nimport {TuiScrollbarDirective} from './scrollbar.directive';\nimport {TuiScrollbarWrapperDirective} from './scrollbar-wrapper.directive';\n\n@NgModule({\n imports: [CommonModule, TuiLetModule],\n declarations: [\n TuiScrollbarDirective,\n TuiScrollbarWrapperDirective,\n TuiScrollControlsComponent,\n ],\n exports: [TuiScrollControlsComponent],\n})\nexport class TuiScrollControlsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {TuiScrollbarWrapperDirective as ɵa} from './scrollbar-wrapper.directive';"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { InjectionToken, inject, isDevMode, NgZone } from '@angular/core';
|
|
1
|
+
import { InjectionToken, inject, isDevMode, NgZone, ElementRef } from '@angular/core';
|
|
2
2
|
import { extractI18n } from '@taiga-ui/i18n';
|
|
3
3
|
import { iconsPathFactory, tuiIsMobile } from '@taiga-ui/core/utils';
|
|
4
4
|
import { WINDOW } from '@ng-web-apis/common';
|
|
5
5
|
import { typedFromEvent, tuiZoneOptimized, CHAR_NO_BREAK_SPACE, TUI_SANITIZER as TUI_SANITIZER$1 } from '@taiga-ui/cdk';
|
|
6
6
|
import { share, startWith, map, distinctUntilChanged } from 'rxjs/operators';
|
|
7
|
+
import { DOCUMENT } from '@angular/common';
|
|
7
8
|
import { svgLinearGradientProcessor } from '@taiga-ui/cdk/utils/svg';
|
|
8
9
|
import { identity } from 'rxjs';
|
|
9
10
|
|
|
@@ -133,7 +134,12 @@ const TUI_ORDERED_SHORT_WEEK_DAYS = new InjectionToken(`Ordered calendars i18n t
|
|
|
133
134
|
|
|
134
135
|
const TUI_SANITIZER = TUI_SANITIZER$1;
|
|
135
136
|
|
|
136
|
-
|
|
137
|
+
/**
|
|
138
|
+
* Scrollable container
|
|
139
|
+
*/
|
|
140
|
+
const TUI_SCROLL_REF = new InjectionToken(`[TUI_SCROLL_REF]`, {
|
|
141
|
+
factory: () => new ElementRef(inject(DOCUMENT).documentElement),
|
|
142
|
+
});
|
|
137
143
|
|
|
138
144
|
const TUI_SVG_CONTENT_PROCESSOR = new InjectionToken(`Transform function the contents of the loaded svg file`, { factory: () => svgLinearGradientProcessor });
|
|
139
145
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-tokens.js","sources":["ng://@taiga-ui/core/tokens/animations-duration.ts","ng://@taiga-ui/core/tokens/animation-options.ts","ng://@taiga-ui/core/tokens/assert-enabled.ts","ng://@taiga-ui/core/tokens/data-list-accessor.ts","ng://@taiga-ui/core/tokens/data-list-host.ts","ng://@taiga-ui/core/tokens/document-or-shadow-root.ts","ng://@taiga-ui/core/tokens/dropdown-directive.ts","ng://@taiga-ui/core/tokens/element-ref.ts","ng://@taiga-ui/core/tokens/first-day-of-week.ts","ng://@taiga-ui/core/tokens/i18n.ts","ng://@taiga-ui/core/tokens/icon-place.ts","ng://@taiga-ui/core/tokens/icons.ts","ng://@taiga-ui/core/tokens/icons-path.ts","ng://@taiga-ui/core/tokens/media.ts","ng://@taiga-ui/core/tokens/is-mobile-resolution.ts","ng://@taiga-ui/core/tokens/mode.ts","ng://@taiga-ui/core/tokens/notification-options.ts","ng://@taiga-ui/core/tokens/number-format.ts","ng://@taiga-ui/core/tokens/option-content.ts","ng://@taiga-ui/core/tokens/ordered-short-week-days.ts","ng://@taiga-ui/core/tokens/sanitizer.ts","ng://@taiga-ui/core/tokens/scroll-ref.ts","ng://@taiga-ui/core/tokens/svg-content-processor.ts","ng://@taiga-ui/core/tokens/svg-src-processor.ts","ng://@taiga-ui/core/tokens/textfield-appearance.ts","ng://@taiga-ui/core/tokens/textfield-host.ts","ng://@taiga-ui/core/tokens/theme.ts","ng://@taiga-ui/core/tokens/value-accessor.ts","ng://@taiga-ui/core/tokens/taiga-ui-core-tokens.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\n\nexport const TUI_ANIMATIONS_DURATION = new InjectionToken<number>(\n `Duration of all Taiga UI animations in ms`,\n {\n factory: () => 300,\n },\n);\n","import {AnimationOptions} from '@angular/animations';\nimport {inject, InjectionToken} from '@angular/core';\n\nimport {TUI_ANIMATIONS_DURATION} from './animations-duration';\n\nexport const TUI_ANIMATION_OPTIONS = new InjectionToken<AnimationOptions>(\n `Options for Taiga UI animations`,\n {\n factory: () => ({\n params: {\n duration: inject(TUI_ANIMATIONS_DURATION),\n },\n }),\n },\n);\n","import {InjectionToken, isDevMode} from '@angular/core';\n\nexport const TUI_ASSERT_ENABLED = new InjectionToken(\n `Flag to enable assertions across Taiga UI`,\n {\n factory: () => isDevMode(),\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiDataListAccessor} from '@taiga-ui/core/interfaces';\n\nexport const TUI_DATA_LIST_ACCESSOR = new InjectionToken<TuiDataListAccessor>(\n `Accessor for options`,\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiDataListHost} from '@taiga-ui/core/interfaces';\n\nexport const TUI_DATA_LIST_HOST = new InjectionToken<TuiDataListHost<unknown>>(\n `DataList controller`,\n);\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_DOCUMENT_OR_SHADOW_ROOT = new InjectionToken<DocumentOrShadowRoot>(\n `Document or ShadowRoot`,\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiDropdown} from '@taiga-ui/core/interfaces';\n\nexport const TUI_DROPDOWN_DIRECTIVE = new InjectionToken<TuiDropdown>(\n `Directive controlling TuiDropdownBoxComponent`,\n);\n","import {ElementRef, InjectionToken} from '@angular/core';\n\nexport const TUI_ELEMENT_REF = new InjectionToken<ElementRef>(\n `ElementRef when you cannot use @Input for single time injection`,\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiDayOfWeek} from '@taiga-ui/cdk';\n\nexport const TUI_FIRST_DAY_OF_WEEK = new InjectionToken<TuiDayOfWeek>(\n `The first day of the week index`,\n {\n factory: () => TuiDayOfWeek.Monday,\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {extractI18n} from '@taiga-ui/i18n';\n\nexport const TUI_MONTHS = new InjectionToken(`Localized months names`, {\n factory: extractI18n(`months`),\n});\n\nexport const TUI_CLOSE_WORD = new InjectionToken(`i18n 'close' word`, {\n factory: extractI18n(`close`),\n});\n\nexport const TUI_NOTHING_FOUND_MESSAGE = new InjectionToken(\n `i18n 'Nothing found' message`,\n {\n factory: extractI18n(`nothingFoundMessage`),\n },\n);\n\nexport const TUI_DEFAULT_ERROR_MESSAGE = new InjectionToken(`i18n of error message`, {\n factory: extractI18n(`defaultErrorMessage`),\n});\n\nexport const TUI_SPIN_TEXTS = new InjectionToken(`spin i18n texts`, {\n factory: extractI18n(`spinTexts`),\n});\n\nexport const TUI_SHORT_WEEK_DAYS = new InjectionToken(`calendars i18n texts`, {\n factory: extractI18n(`shortWeekDays`),\n});\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_ICONS_PLACE: InjectionToken<string> = new InjectionToken<string>(\n `Recommended paths to icons from documentation guide`,\n {\n factory: () => `assets/taiga-ui/icons`,\n },\n);\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_ICONS = new InjectionToken<Record<string, string>>(\n `A key/value dictionary of icon names and src to be defined with TuiSvgService`,\n {\n factory: () => ({}),\n },\n);\n","import {inject, InjectionToken} from '@angular/core';\nimport {TuiStringHandler} from '@taiga-ui/cdk';\nimport {iconsPathFactory} from '@taiga-ui/core/utils';\n\nimport {TUI_ICONS_PLACE} from './icon-place';\n\nexport const TUI_ICONS_PATH: InjectionToken<TuiStringHandler<string>> =\n new InjectionToken<TuiStringHandler<string>>(\n `A handler to retrieve USE id for icon by name`,\n {factory: () => iconsPathFactory(inject(TUI_ICONS_PLACE))},\n );\n","import {InjectionToken} from '@angular/core';\nimport {TuiMedia} from '@taiga-ui/core/interfaces';\n\nexport const TUI_MEDIA = new InjectionToken<TuiMedia>(`Token for media constant`, {\n factory: () => ({\n mobile: 768,\n desktopSmall: 1024,\n desktopLarge: 1280,\n }),\n});\n","import {inject, InjectionToken, NgZone} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {tuiZoneOptimized, typedFromEvent} from '@taiga-ui/cdk';\nimport {tuiIsMobile} from '@taiga-ui/core/utils';\nimport {Observable} from 'rxjs';\nimport {distinctUntilChanged, map, share, startWith} from 'rxjs/operators';\n\nimport {TUI_MEDIA} from './media';\n\nexport const TUI_IS_MOBILE_RES = new InjectionToken<Observable<boolean>>(\n `Mobile resolution stream for private providers`,\n {\n factory: () => {\n const windowRef = inject(WINDOW);\n const media = inject(TUI_MEDIA);\n\n return typedFromEvent(windowRef, `resize`).pipe(\n share(),\n startWith(null),\n map(() => tuiIsMobile(windowRef, media)),\n distinctUntilChanged(),\n tuiZoneOptimized(inject(NgZone)),\n );\n },\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiBrightness} from '@taiga-ui/core/types';\nimport {Observable} from 'rxjs';\n\nexport const TUI_MODE: InjectionToken<Observable<TuiBrightness | null>> =\n new InjectionToken<Observable<TuiBrightness | null>>(\n `Mode stream for private providers`,\n );\n","import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiNotification} from '@taiga-ui/core/enums';\nimport {TuiAlertOptions} from '@taiga-ui/core/interfaces';\n\nexport interface TuiNotificationDefaultOptions\n extends Omit<TuiAlertOptions<unknown>, 'data'> {\n readonly defaultAutoCloseTime: number;\n}\n\n/**\n * @deprecated: remove in v3.0, use TuiNotificationDefaultOptions\n */\nexport type NotificationTokenOptions = TuiNotificationDefaultOptions;\n\n/** Default values for the notification options. */\nexport const TUI_NOTIFICATION_DEFAULT_OPTIONS: TuiNotificationDefaultOptions = {\n autoClose: true,\n label: ``,\n status: TuiNotification.Info,\n hasIcon: true,\n hasCloseButton: true,\n defaultAutoCloseTime: 3000,\n};\n\nexport const TUI_NOTIFICATION_OPTIONS = new InjectionToken<TuiNotificationDefaultOptions>(\n `Default parameters for notification alert component`,\n {\n factory: () => TUI_NOTIFICATION_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiNotificationOptionsProvider(\n options: Partial<TuiNotificationDefaultOptions>,\n): ValueProvider {\n return {\n provide: TUI_NOTIFICATION_OPTIONS,\n useValue: {...TUI_NOTIFICATION_DEFAULT_OPTIONS, ...options},\n };\n}\n","import {InjectionToken} from '@angular/core';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk';\nimport {TuiNumberFormatSettings} from '@taiga-ui/core/interfaces';\n\nexport const TUI_NUMBER_FORMAT = new InjectionToken<TuiNumberFormatSettings>(\n `Formatting configuration for displayed numbers`,\n {\n factory: () => ({\n decimalSeparator: `,`,\n thousandSeparator: CHAR_NO_BREAK_SPACE,\n zeroPadding: true,\n }),\n },\n);\n","import {InjectionToken, TemplateRef} from '@angular/core';\nimport {TuiContextWithImplicit} from '@taiga-ui/cdk';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport const TUI_OPTION_CONTENT = new InjectionToken<\n PolymorpheusContent<TuiContextWithImplicit<TemplateRef<Record<string, unknown>>>>\n>(`Content for tuiOption component`);\n","import {inject, InjectionToken} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {TUI_FIRST_DAY_OF_WEEK, TUI_SHORT_WEEK_DAYS} from './index';\n\nexport type WEEK_DAYS_NAMES = [string, string, string, string, string, string, string];\n\n// TODO: 3.0 Remove export in ivy compilation\nexport const convertToSundayFirstWeekFormat = (\n weekDaysNames: WEEK_DAYS_NAMES,\n): WEEK_DAYS_NAMES => {\n const sundayIndex = weekDaysNames.length - 1;\n\n return [\n weekDaysNames[sundayIndex],\n ...weekDaysNames.slice(0, sundayIndex),\n ] as WEEK_DAYS_NAMES;\n};\n\nexport const TUI_ORDERED_SHORT_WEEK_DAYS = new InjectionToken<\n Observable<WEEK_DAYS_NAMES>\n>(`Ordered calendars i18n texts`, {\n factory: () => {\n const firstDayOfWeekIndex = inject(TUI_FIRST_DAY_OF_WEEK);\n\n return inject(TUI_SHORT_WEEK_DAYS).pipe(\n map(convertToSundayFirstWeekFormat),\n map(\n weekDays =>\n [\n ...weekDays.slice(firstDayOfWeekIndex),\n ...weekDays.slice(0, firstDayOfWeekIndex),\n ] as WEEK_DAYS_NAMES,\n ),\n );\n },\n});\n","import {TUI_SANITIZER as TOKEN} from '@taiga-ui/cdk';\n\nexport const TUI_SANITIZER = TOKEN;\n","import {ElementRef, InjectionToken} from '@angular/core';\n\nexport const TUI_SCROLL_REF = new InjectionToken<ElementRef<HTMLElement>>(\n `Scrollable container`,\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiStringHandler} from '@taiga-ui/cdk';\nimport {svgLinearGradientProcessor} from '@taiga-ui/cdk/utils/svg';\n\nexport const TUI_SVG_CONTENT_PROCESSOR: InjectionToken<TuiStringHandler<string>> =\n new InjectionToken<TuiStringHandler<string>>(\n `Transform function the contents of the loaded svg file`,\n {factory: () => svgLinearGradientProcessor},\n );\n","import {InjectionToken} from '@angular/core';\nimport {TuiStringHandler} from '@taiga-ui/cdk';\nimport {identity} from 'rxjs';\n\nexport const TUI_SVG_SRC_PROCESSOR: InjectionToken<TuiStringHandler<string>> =\n new InjectionToken<TuiStringHandler<string>>(`Source path processor for svg`, {\n factory: () => identity,\n });\n","import {InjectionToken} from '@angular/core';\nimport {TuiAppearance} from '@taiga-ui/core/enums';\n\nexport const TUI_TEXTFIELD_APPEARANCE = new InjectionToken<string>(\n `Appearance for inputs`,\n {\n factory: () => TuiAppearance.Textfield,\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiTextfieldHost} from '@taiga-ui/core/interfaces';\n\nexport const TUI_TEXTFIELD_HOST = new InjectionToken<TuiTextfieldHost>(\n `An interface to communicate with textfield based controls`,\n);\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_THEME = new InjectionToken<string>(`Theme name`, {\n factory: () => `Taiga`,\n});\n","import {InjectionToken} from '@angular/core';\nimport {ControlValueAccessor} from '@angular/forms';\n\nexport const TUI_VALUE_ACCESSOR = new InjectionToken<ControlValueAccessor>(\n `Buffer token to pass NG_VALUE_ACCESSOR to a different Injector`,\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TOKEN"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-tokens.js","sources":["ng://@taiga-ui/core/tokens/animations-duration.ts","ng://@taiga-ui/core/tokens/animation-options.ts","ng://@taiga-ui/core/tokens/assert-enabled.ts","ng://@taiga-ui/core/tokens/data-list-accessor.ts","ng://@taiga-ui/core/tokens/data-list-host.ts","ng://@taiga-ui/core/tokens/document-or-shadow-root.ts","ng://@taiga-ui/core/tokens/dropdown-directive.ts","ng://@taiga-ui/core/tokens/element-ref.ts","ng://@taiga-ui/core/tokens/first-day-of-week.ts","ng://@taiga-ui/core/tokens/i18n.ts","ng://@taiga-ui/core/tokens/icon-place.ts","ng://@taiga-ui/core/tokens/icons.ts","ng://@taiga-ui/core/tokens/icons-path.ts","ng://@taiga-ui/core/tokens/media.ts","ng://@taiga-ui/core/tokens/is-mobile-resolution.ts","ng://@taiga-ui/core/tokens/mode.ts","ng://@taiga-ui/core/tokens/notification-options.ts","ng://@taiga-ui/core/tokens/number-format.ts","ng://@taiga-ui/core/tokens/option-content.ts","ng://@taiga-ui/core/tokens/ordered-short-week-days.ts","ng://@taiga-ui/core/tokens/sanitizer.ts","ng://@taiga-ui/core/tokens/scroll-ref.ts","ng://@taiga-ui/core/tokens/svg-content-processor.ts","ng://@taiga-ui/core/tokens/svg-src-processor.ts","ng://@taiga-ui/core/tokens/textfield-appearance.ts","ng://@taiga-ui/core/tokens/textfield-host.ts","ng://@taiga-ui/core/tokens/theme.ts","ng://@taiga-ui/core/tokens/value-accessor.ts","ng://@taiga-ui/core/tokens/taiga-ui-core-tokens.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\n\nexport const TUI_ANIMATIONS_DURATION = new InjectionToken<number>(\n `Duration of all Taiga UI animations in ms`,\n {\n factory: () => 300,\n },\n);\n","import {AnimationOptions} from '@angular/animations';\nimport {inject, InjectionToken} from '@angular/core';\n\nimport {TUI_ANIMATIONS_DURATION} from './animations-duration';\n\nexport const TUI_ANIMATION_OPTIONS = new InjectionToken<AnimationOptions>(\n `Options for Taiga UI animations`,\n {\n factory: () => ({\n params: {\n duration: inject(TUI_ANIMATIONS_DURATION),\n },\n }),\n },\n);\n","import {InjectionToken, isDevMode} from '@angular/core';\n\nexport const TUI_ASSERT_ENABLED = new InjectionToken(\n `Flag to enable assertions across Taiga UI`,\n {\n factory: () => isDevMode(),\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiDataListAccessor} from '@taiga-ui/core/interfaces';\n\nexport const TUI_DATA_LIST_ACCESSOR = new InjectionToken<TuiDataListAccessor>(\n `Accessor for options`,\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiDataListHost} from '@taiga-ui/core/interfaces';\n\nexport const TUI_DATA_LIST_HOST = new InjectionToken<TuiDataListHost<unknown>>(\n `DataList controller`,\n);\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_DOCUMENT_OR_SHADOW_ROOT = new InjectionToken<DocumentOrShadowRoot>(\n `Document or ShadowRoot`,\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiDropdown} from '@taiga-ui/core/interfaces';\n\nexport const TUI_DROPDOWN_DIRECTIVE = new InjectionToken<TuiDropdown>(\n `Directive controlling TuiDropdownBoxComponent`,\n);\n","import {ElementRef, InjectionToken} from '@angular/core';\n\nexport const TUI_ELEMENT_REF = new InjectionToken<ElementRef>(\n `ElementRef when you cannot use @Input for single time injection`,\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiDayOfWeek} from '@taiga-ui/cdk';\n\nexport const TUI_FIRST_DAY_OF_WEEK = new InjectionToken<TuiDayOfWeek>(\n `The first day of the week index`,\n {\n factory: () => TuiDayOfWeek.Monday,\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {extractI18n} from '@taiga-ui/i18n';\n\nexport const TUI_MONTHS = new InjectionToken(`Localized months names`, {\n factory: extractI18n(`months`),\n});\n\nexport const TUI_CLOSE_WORD = new InjectionToken(`i18n 'close' word`, {\n factory: extractI18n(`close`),\n});\n\nexport const TUI_NOTHING_FOUND_MESSAGE = new InjectionToken(\n `i18n 'Nothing found' message`,\n {\n factory: extractI18n(`nothingFoundMessage`),\n },\n);\n\nexport const TUI_DEFAULT_ERROR_MESSAGE = new InjectionToken(`i18n of error message`, {\n factory: extractI18n(`defaultErrorMessage`),\n});\n\nexport const TUI_SPIN_TEXTS = new InjectionToken(`spin i18n texts`, {\n factory: extractI18n(`spinTexts`),\n});\n\nexport const TUI_SHORT_WEEK_DAYS = new InjectionToken(`calendars i18n texts`, {\n factory: extractI18n(`shortWeekDays`),\n});\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_ICONS_PLACE: InjectionToken<string> = new InjectionToken<string>(\n `Recommended paths to icons from documentation guide`,\n {\n factory: () => `assets/taiga-ui/icons`,\n },\n);\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_ICONS = new InjectionToken<Record<string, string>>(\n `A key/value dictionary of icon names and src to be defined with TuiSvgService`,\n {\n factory: () => ({}),\n },\n);\n","import {inject, InjectionToken} from '@angular/core';\nimport {TuiStringHandler} from '@taiga-ui/cdk';\nimport {iconsPathFactory} from '@taiga-ui/core/utils';\n\nimport {TUI_ICONS_PLACE} from './icon-place';\n\nexport const TUI_ICONS_PATH: InjectionToken<TuiStringHandler<string>> =\n new InjectionToken<TuiStringHandler<string>>(\n `A handler to retrieve USE id for icon by name`,\n {factory: () => iconsPathFactory(inject(TUI_ICONS_PLACE))},\n );\n","import {InjectionToken} from '@angular/core';\nimport {TuiMedia} from '@taiga-ui/core/interfaces';\n\nexport const TUI_MEDIA = new InjectionToken<TuiMedia>(`Token for media constant`, {\n factory: () => ({\n mobile: 768,\n desktopSmall: 1024,\n desktopLarge: 1280,\n }),\n});\n","import {inject, InjectionToken, NgZone} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {tuiZoneOptimized, typedFromEvent} from '@taiga-ui/cdk';\nimport {tuiIsMobile} from '@taiga-ui/core/utils';\nimport {Observable} from 'rxjs';\nimport {distinctUntilChanged, map, share, startWith} from 'rxjs/operators';\n\nimport {TUI_MEDIA} from './media';\n\nexport const TUI_IS_MOBILE_RES = new InjectionToken<Observable<boolean>>(\n `Mobile resolution stream for private providers`,\n {\n factory: () => {\n const windowRef = inject(WINDOW);\n const media = inject(TUI_MEDIA);\n\n return typedFromEvent(windowRef, `resize`).pipe(\n share(),\n startWith(null),\n map(() => tuiIsMobile(windowRef, media)),\n distinctUntilChanged(),\n tuiZoneOptimized(inject(NgZone)),\n );\n },\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiBrightness} from '@taiga-ui/core/types';\nimport {Observable} from 'rxjs';\n\nexport const TUI_MODE: InjectionToken<Observable<TuiBrightness | null>> =\n new InjectionToken<Observable<TuiBrightness | null>>(\n `Mode stream for private providers`,\n );\n","import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiNotification} from '@taiga-ui/core/enums';\nimport {TuiAlertOptions} from '@taiga-ui/core/interfaces';\n\nexport interface TuiNotificationDefaultOptions\n extends Omit<TuiAlertOptions<unknown>, 'data'> {\n readonly defaultAutoCloseTime: number;\n}\n\n/**\n * @deprecated: remove in v3.0, use TuiNotificationDefaultOptions\n */\nexport type NotificationTokenOptions = TuiNotificationDefaultOptions;\n\n/** Default values for the notification options. */\nexport const TUI_NOTIFICATION_DEFAULT_OPTIONS: TuiNotificationDefaultOptions = {\n autoClose: true,\n label: ``,\n status: TuiNotification.Info,\n hasIcon: true,\n hasCloseButton: true,\n defaultAutoCloseTime: 3000,\n};\n\nexport const TUI_NOTIFICATION_OPTIONS = new InjectionToken<TuiNotificationDefaultOptions>(\n `Default parameters for notification alert component`,\n {\n factory: () => TUI_NOTIFICATION_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiNotificationOptionsProvider(\n options: Partial<TuiNotificationDefaultOptions>,\n): ValueProvider {\n return {\n provide: TUI_NOTIFICATION_OPTIONS,\n useValue: {...TUI_NOTIFICATION_DEFAULT_OPTIONS, ...options},\n };\n}\n","import {InjectionToken} from '@angular/core';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk';\nimport {TuiNumberFormatSettings} from '@taiga-ui/core/interfaces';\n\nexport const TUI_NUMBER_FORMAT = new InjectionToken<TuiNumberFormatSettings>(\n `Formatting configuration for displayed numbers`,\n {\n factory: () => ({\n decimalSeparator: `,`,\n thousandSeparator: CHAR_NO_BREAK_SPACE,\n zeroPadding: true,\n }),\n },\n);\n","import {InjectionToken, TemplateRef} from '@angular/core';\nimport {TuiContextWithImplicit} from '@taiga-ui/cdk';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport const TUI_OPTION_CONTENT = new InjectionToken<\n PolymorpheusContent<TuiContextWithImplicit<TemplateRef<Record<string, unknown>>>>\n>(`Content for tuiOption component`);\n","import {inject, InjectionToken} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {TUI_FIRST_DAY_OF_WEEK, TUI_SHORT_WEEK_DAYS} from './index';\n\nexport type WEEK_DAYS_NAMES = [string, string, string, string, string, string, string];\n\n// TODO: 3.0 Remove export in ivy compilation\nexport const convertToSundayFirstWeekFormat = (\n weekDaysNames: WEEK_DAYS_NAMES,\n): WEEK_DAYS_NAMES => {\n const sundayIndex = weekDaysNames.length - 1;\n\n return [\n weekDaysNames[sundayIndex],\n ...weekDaysNames.slice(0, sundayIndex),\n ] as WEEK_DAYS_NAMES;\n};\n\nexport const TUI_ORDERED_SHORT_WEEK_DAYS = new InjectionToken<\n Observable<WEEK_DAYS_NAMES>\n>(`Ordered calendars i18n texts`, {\n factory: () => {\n const firstDayOfWeekIndex = inject(TUI_FIRST_DAY_OF_WEEK);\n\n return inject(TUI_SHORT_WEEK_DAYS).pipe(\n map(convertToSundayFirstWeekFormat),\n map(\n weekDays =>\n [\n ...weekDays.slice(firstDayOfWeekIndex),\n ...weekDays.slice(0, firstDayOfWeekIndex),\n ] as WEEK_DAYS_NAMES,\n ),\n );\n },\n});\n","import {TUI_SANITIZER as TOKEN} from '@taiga-ui/cdk';\n\nexport const TUI_SANITIZER = TOKEN;\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, inject, InjectionToken} from '@angular/core';\n\n/**\n * Scrollable container\n */\nexport const TUI_SCROLL_REF = new InjectionToken<ElementRef<HTMLElement>>(\n `[TUI_SCROLL_REF]`,\n {\n factory: () => new ElementRef(inject(DOCUMENT).documentElement),\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiStringHandler} from '@taiga-ui/cdk';\nimport {svgLinearGradientProcessor} from '@taiga-ui/cdk/utils/svg';\n\nexport const TUI_SVG_CONTENT_PROCESSOR: InjectionToken<TuiStringHandler<string>> =\n new InjectionToken<TuiStringHandler<string>>(\n `Transform function the contents of the loaded svg file`,\n {factory: () => svgLinearGradientProcessor},\n );\n","import {InjectionToken} from '@angular/core';\nimport {TuiStringHandler} from '@taiga-ui/cdk';\nimport {identity} from 'rxjs';\n\nexport const TUI_SVG_SRC_PROCESSOR: InjectionToken<TuiStringHandler<string>> =\n new InjectionToken<TuiStringHandler<string>>(`Source path processor for svg`, {\n factory: () => identity,\n });\n","import {InjectionToken} from '@angular/core';\nimport {TuiAppearance} from '@taiga-ui/core/enums';\n\nexport const TUI_TEXTFIELD_APPEARANCE = new InjectionToken<string>(\n `Appearance for inputs`,\n {\n factory: () => TuiAppearance.Textfield,\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiTextfieldHost} from '@taiga-ui/core/interfaces';\n\nexport const TUI_TEXTFIELD_HOST = new InjectionToken<TuiTextfieldHost>(\n `An interface to communicate with textfield based controls`,\n);\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_THEME = new InjectionToken<string>(`Theme name`, {\n factory: () => `Taiga`,\n});\n","import {InjectionToken} from '@angular/core';\nimport {ControlValueAccessor} from '@angular/forms';\n\nexport const TUI_VALUE_ACCESSOR = new InjectionToken<ControlValueAccessor>(\n `Buffer token to pass NG_VALUE_ACCESSOR to a different Injector`,\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TOKEN"],"mappings":"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"}
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import { __assign, __decorate, __param, __read } from 'tslib';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { tuiZoneOptimized, typedFromEvent, preventDefault, stopPropagation, tuiZonefree, POLLING_TIME, TuiDestroyService, TuiLetModule } from '@taiga-ui/cdk';
|
|
2
|
+
import { Inject, NgZone, ElementRef, Component, ChangeDetectionStrategy, Renderer2, Self, Input, Directive, NgModule } from '@angular/core';
|
|
3
|
+
import { ANIMATION_FRAME } from '@ng-web-apis/common';
|
|
4
|
+
import { tuiZoneOptimized, tuiTypedFromEvent, tuiPreventDefault, tuiStopPropagation, tuiZonefree, POLLING_TIME, tuiScrollFrom, TuiDestroyService, TuiLetModule } from '@taiga-ui/cdk';
|
|
6
5
|
import { tuiFadeIn } from '@taiga-ui/core/animations';
|
|
7
6
|
import { MODE_PROVIDER } from '@taiga-ui/core/providers';
|
|
8
7
|
import { TUI_ANIMATION_OPTIONS, TUI_SCROLL_REF, TUI_MODE, TUI_ELEMENT_REF } from '@taiga-ui/core/tokens';
|
|
9
|
-
import { Observable, merge
|
|
8
|
+
import { Observable, merge } from 'rxjs';
|
|
10
9
|
import { throttleTime, map, startWith, distinctUntilChanged, switchMap, takeUntil } from 'rxjs/operators';
|
|
10
|
+
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
11
11
|
|
|
12
12
|
// @dynamic
|
|
13
13
|
var TuiScrollControlsComponent = /** @class */ (function () {
|
|
14
|
-
function TuiScrollControlsComponent(options, ngZone,
|
|
14
|
+
function TuiScrollControlsComponent(options, ngZone, scrollRef, animationFrame$, mode$) {
|
|
15
15
|
var _this = this;
|
|
16
16
|
this.options = options;
|
|
17
17
|
this.ngZone = ngZone;
|
|
18
|
-
this.documentRef = documentRef;
|
|
19
18
|
this.scrollRef = scrollRef;
|
|
20
19
|
this.animationFrame$ = animationFrame$;
|
|
21
20
|
this.mode$ = mode$;
|
|
@@ -24,9 +23,7 @@ var TuiScrollControlsComponent = /** @class */ (function () {
|
|
|
24
23
|
}
|
|
25
24
|
Object.defineProperty(TuiScrollControlsComponent.prototype, "scrollbars", {
|
|
26
25
|
get: function () {
|
|
27
|
-
var _a = this.scrollRef
|
|
28
|
-
? this.scrollRef.nativeElement
|
|
29
|
-
: this.documentRef.documentElement, clientHeight = _a.clientHeight, scrollHeight = _a.scrollHeight, clientWidth = _a.clientWidth, scrollWidth = _a.scrollWidth;
|
|
26
|
+
var _a = this.scrollRef.nativeElement, clientHeight = _a.clientHeight, scrollHeight = _a.scrollHeight, clientWidth = _a.clientWidth, scrollWidth = _a.scrollWidth;
|
|
30
27
|
return [
|
|
31
28
|
Math.ceil((clientHeight / scrollHeight) * 100) < 100,
|
|
32
29
|
Math.ceil((clientWidth / scrollWidth) * 100) < 100,
|
|
@@ -38,8 +35,7 @@ var TuiScrollControlsComponent = /** @class */ (function () {
|
|
|
38
35
|
TuiScrollControlsComponent.ctorParameters = function () { return [
|
|
39
36
|
{ type: undefined, decorators: [{ type: Inject, args: [TUI_ANIMATION_OPTIONS,] }] },
|
|
40
37
|
{ type: NgZone, decorators: [{ type: Inject, args: [NgZone,] }] },
|
|
41
|
-
{ type:
|
|
42
|
-
{ type: ElementRef, decorators: [{ type: Optional }, { type: Inject, args: [TUI_SCROLL_REF,] }] },
|
|
38
|
+
{ type: ElementRef, decorators: [{ type: Inject, args: [TUI_SCROLL_REF,] }] },
|
|
43
39
|
{ type: Observable, decorators: [{ type: Inject, args: [ANIMATION_FRAME,] }] },
|
|
44
40
|
{ type: Observable, decorators: [{ type: Inject, args: [TUI_MODE,] }] }
|
|
45
41
|
]; };
|
|
@@ -57,11 +53,9 @@ var TuiScrollControlsComponent = /** @class */ (function () {
|
|
|
57
53
|
}),
|
|
58
54
|
__param(0, Inject(TUI_ANIMATION_OPTIONS)),
|
|
59
55
|
__param(1, Inject(NgZone)),
|
|
60
|
-
__param(2, Inject(
|
|
61
|
-
__param(3,
|
|
62
|
-
__param(
|
|
63
|
-
__param(4, Inject(ANIMATION_FRAME)),
|
|
64
|
-
__param(5, Inject(TUI_MODE))
|
|
56
|
+
__param(2, Inject(TUI_SCROLL_REF)),
|
|
57
|
+
__param(3, Inject(ANIMATION_FRAME)),
|
|
58
|
+
__param(4, Inject(TUI_MODE))
|
|
65
59
|
], TuiScrollControlsComponent);
|
|
66
60
|
return TuiScrollControlsComponent;
|
|
67
61
|
}());
|
|
@@ -69,21 +63,19 @@ var TuiScrollControlsComponent = /** @class */ (function () {
|
|
|
69
63
|
var MIN_WIDTH = 24;
|
|
70
64
|
// @dynamic
|
|
71
65
|
var TuiScrollbarDirective = /** @class */ (function () {
|
|
72
|
-
function TuiScrollbarDirective(ngZone, renderer, destroy$, animationFrame$, wrapper, container,
|
|
66
|
+
function TuiScrollbarDirective(ngZone, renderer, destroy$, animationFrame$, wrapper, container, doc, el) {
|
|
73
67
|
var _this = this;
|
|
74
68
|
this.wrapper = wrapper;
|
|
75
69
|
this.container = container;
|
|
76
|
-
this.
|
|
77
|
-
this.
|
|
78
|
-
this.elementRef = elementRef;
|
|
79
|
-
this.viewportScroller = viewportScroller;
|
|
70
|
+
this.doc = doc;
|
|
71
|
+
this.el = el;
|
|
80
72
|
this.tuiScrollbar = 'vertical';
|
|
81
|
-
var nativeElement = this.
|
|
82
|
-
var mousedown$ =
|
|
83
|
-
var mousemove$ =
|
|
84
|
-
var mouseup$ =
|
|
85
|
-
var mousedownWrapper$ =
|
|
86
|
-
merge(mousedownWrapper$.pipe(
|
|
73
|
+
var nativeElement = this.el.nativeElement;
|
|
74
|
+
var mousedown$ = tuiTypedFromEvent(nativeElement, 'mousedown');
|
|
75
|
+
var mousemove$ = tuiTypedFromEvent(this.doc, 'mousemove');
|
|
76
|
+
var mouseup$ = tuiTypedFromEvent(this.doc, 'mouseup');
|
|
77
|
+
var mousedownWrapper$ = tuiTypedFromEvent(this.wrapper.nativeElement, 'mousedown');
|
|
78
|
+
merge(mousedownWrapper$.pipe(tuiPreventDefault(), map(function (event) { return _this.getScrolled(event, 0.5, 0.5); })), mousedown$.pipe(tuiPreventDefault(), tuiStopPropagation(), switchMap(function (event) {
|
|
87
79
|
var rect = nativeElement.getBoundingClientRect();
|
|
88
80
|
var vertical = getOffsetVertical(event, rect);
|
|
89
81
|
var horizontal = getOffsetHorizontal(event, rect);
|
|
@@ -92,22 +84,14 @@ var TuiScrollbarDirective = /** @class */ (function () {
|
|
|
92
84
|
.pipe(tuiZonefree(ngZone), takeUntil(destroy$))
|
|
93
85
|
.subscribe(function (_a) {
|
|
94
86
|
var _b = __read(_a, 2), scrollTop = _b[0], scrollLeft = _b[1];
|
|
95
|
-
var _c = __read(_this.viewportScroller.getScrollPosition(), 2), x = _c[0], y = _c[1];
|
|
96
|
-
if (!_this.container) {
|
|
97
|
-
_this.viewportScroller.scrollToPosition([
|
|
98
|
-
_this.tuiScrollbar === 'vertical' ? x : scrollLeft,
|
|
99
|
-
_this.tuiScrollbar === 'vertical' ? scrollTop : y,
|
|
100
|
-
]);
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
87
|
if (_this.tuiScrollbar === 'vertical') {
|
|
104
|
-
renderer.setProperty(_this.
|
|
88
|
+
renderer.setProperty(_this.element, 'scrollTop', scrollTop);
|
|
105
89
|
}
|
|
106
90
|
else {
|
|
107
|
-
renderer.setProperty(_this.
|
|
91
|
+
renderer.setProperty(_this.element, 'scrollLeft', scrollLeft);
|
|
108
92
|
}
|
|
109
93
|
});
|
|
110
|
-
merge(
|
|
94
|
+
merge(animationFrame$.pipe(throttleTime(POLLING_TIME)), tuiScrollFrom(this.element))
|
|
111
95
|
.pipe(tuiZonefree(ngZone), takeUntil(destroy$))
|
|
112
96
|
.subscribe(function () {
|
|
113
97
|
if (_this.tuiScrollbar === 'vertical') {
|
|
@@ -122,7 +106,7 @@ var TuiScrollbarDirective = /** @class */ (function () {
|
|
|
122
106
|
}
|
|
123
107
|
Object.defineProperty(TuiScrollbarDirective.prototype, "scrolled", {
|
|
124
108
|
get: function () {
|
|
125
|
-
var _a = this.
|
|
109
|
+
var _a = this.element, scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight, scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;
|
|
126
110
|
return this.tuiScrollbar === 'vertical'
|
|
127
111
|
? scrollTop / (scrollHeight - clientHeight)
|
|
128
112
|
: scrollLeft / (scrollWidth - clientWidth);
|
|
@@ -132,7 +116,7 @@ var TuiScrollbarDirective = /** @class */ (function () {
|
|
|
132
116
|
});
|
|
133
117
|
Object.defineProperty(TuiScrollbarDirective.prototype, "compensation", {
|
|
134
118
|
get: function () {
|
|
135
|
-
var _a = this.
|
|
119
|
+
var _a = this.element, clientHeight = _a.clientHeight, scrollHeight = _a.scrollHeight, clientWidth = _a.clientWidth, scrollWidth = _a.scrollWidth;
|
|
136
120
|
if (((clientHeight * clientHeight) / scrollHeight > MIN_WIDTH &&
|
|
137
121
|
this.tuiScrollbar === 'vertical') ||
|
|
138
122
|
((clientWidth * clientWidth) / scrollWidth > MIN_WIDTH &&
|
|
@@ -156,7 +140,7 @@ var TuiScrollbarDirective = /** @class */ (function () {
|
|
|
156
140
|
});
|
|
157
141
|
Object.defineProperty(TuiScrollbarDirective.prototype, "view", {
|
|
158
142
|
get: function () {
|
|
159
|
-
var _a = this.
|
|
143
|
+
var _a = this.element, clientHeight = _a.clientHeight, scrollHeight = _a.scrollHeight, clientWidth = _a.clientWidth, scrollWidth = _a.scrollWidth;
|
|
160
144
|
return this.tuiScrollbar === 'vertical'
|
|
161
145
|
? Math.ceil((clientHeight / scrollHeight) * 100) / 100
|
|
162
146
|
: Math.ceil((clientWidth / scrollWidth) * 100) / 100;
|
|
@@ -164,21 +148,19 @@ var TuiScrollbarDirective = /** @class */ (function () {
|
|
|
164
148
|
enumerable: true,
|
|
165
149
|
configurable: true
|
|
166
150
|
});
|
|
167
|
-
Object.defineProperty(TuiScrollbarDirective.prototype, "
|
|
151
|
+
Object.defineProperty(TuiScrollbarDirective.prototype, "element", {
|
|
168
152
|
get: function () {
|
|
169
|
-
return this.container
|
|
170
|
-
? this.container.nativeElement
|
|
171
|
-
: this.documentRef.scrollingElement;
|
|
153
|
+
return this.container.nativeElement;
|
|
172
154
|
},
|
|
173
155
|
enumerable: true,
|
|
174
156
|
configurable: true
|
|
175
157
|
});
|
|
176
158
|
TuiScrollbarDirective.prototype.getScrolled = function (_a, offsetVertical, offsetHorizontal) {
|
|
177
159
|
var clientY = _a.clientY, clientX = _a.clientX;
|
|
178
|
-
var _b = this.
|
|
160
|
+
var _b = this.el.nativeElement, offsetHeight = _b.offsetHeight, offsetWidth = _b.offsetWidth;
|
|
179
161
|
var _c = this.wrapper.nativeElement.getBoundingClientRect(), top = _c.top, left = _c.left, width = _c.width, height = _c.height;
|
|
180
|
-
var maxTop = this.
|
|
181
|
-
var maxLeft = this.
|
|
162
|
+
var maxTop = this.element.scrollHeight - height;
|
|
163
|
+
var maxLeft = this.element.scrollWidth - width;
|
|
182
164
|
var scrolledTop = (clientY - top - offsetHeight * offsetVertical) / (height - offsetHeight);
|
|
183
165
|
var scrolledLeft = (clientX - left - offsetWidth * offsetHorizontal) / (width - offsetWidth);
|
|
184
166
|
return [maxTop * scrolledTop, maxLeft * scrolledLeft];
|
|
@@ -186,14 +168,12 @@ var TuiScrollbarDirective = /** @class */ (function () {
|
|
|
186
168
|
TuiScrollbarDirective.ctorParameters = function () { return [
|
|
187
169
|
{ type: NgZone, decorators: [{ type: Inject, args: [NgZone,] }] },
|
|
188
170
|
{ type: Renderer2, decorators: [{ type: Inject, args: [Renderer2,] }] },
|
|
189
|
-
{ type: Observable, decorators: [{ type: Inject, args: [TuiDestroyService,] }] },
|
|
171
|
+
{ type: Observable, decorators: [{ type: Self }, { type: Inject, args: [TuiDestroyService,] }] },
|
|
190
172
|
{ type: Observable, decorators: [{ type: Inject, args: [ANIMATION_FRAME,] }] },
|
|
191
173
|
{ type: ElementRef, decorators: [{ type: Inject, args: [TUI_ELEMENT_REF,] }] },
|
|
192
|
-
{ type: ElementRef, decorators: [{ type:
|
|
174
|
+
{ type: ElementRef, decorators: [{ type: Inject, args: [TUI_SCROLL_REF,] }] },
|
|
193
175
|
{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
194
|
-
{ type:
|
|
195
|
-
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
|
|
196
|
-
{ type: ViewportScroller, decorators: [{ type: Inject, args: [ViewportScroller,] }] }
|
|
176
|
+
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] }
|
|
197
177
|
]; };
|
|
198
178
|
__decorate([
|
|
199
179
|
Input()
|
|
@@ -205,15 +185,12 @@ var TuiScrollbarDirective = /** @class */ (function () {
|
|
|
205
185
|
}),
|
|
206
186
|
__param(0, Inject(NgZone)),
|
|
207
187
|
__param(1, Inject(Renderer2)),
|
|
208
|
-
__param(2, Inject(TuiDestroyService)),
|
|
188
|
+
__param(2, Self()), __param(2, Inject(TuiDestroyService)),
|
|
209
189
|
__param(3, Inject(ANIMATION_FRAME)),
|
|
210
190
|
__param(4, Inject(TUI_ELEMENT_REF)),
|
|
211
|
-
__param(5, Optional()),
|
|
212
191
|
__param(5, Inject(TUI_SCROLL_REF)),
|
|
213
192
|
__param(6, Inject(DOCUMENT)),
|
|
214
|
-
__param(7, Inject(
|
|
215
|
-
__param(8, Inject(ElementRef)),
|
|
216
|
-
__param(9, Inject(ViewportScroller))
|
|
193
|
+
__param(7, Inject(ElementRef))
|
|
217
194
|
], TuiScrollbarDirective);
|
|
218
195
|
return TuiScrollbarDirective;
|
|
219
196
|
}());
|