@acorex/cdk 20.7.42 → 20.7.44

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.
@@ -0,0 +1,136 @@
1
+ import { isPlatformBrowser } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { inject, ElementRef, PLATFORM_ID, NgZone, input, afterNextRender, Directive } from '@angular/core';
4
+
5
+ /**
6
+ * Converts vertical mouse-wheel scrolling into horizontal scrolling on the host element.
7
+ * Applies only when the host can scroll horizontally.
8
+ *
9
+ * Usage:
10
+ * <div axHorizontalScroll [speed]="150" class="overflow-x-auto">
11
+ * ...
12
+ * </div>
13
+ */
14
+ class AXHorizontalScrollDirective {
15
+ constructor() {
16
+ this.elementRef = inject((ElementRef));
17
+ this.platformId = inject(PLATFORM_ID);
18
+ this.zone = inject(NgZone);
19
+ /**
20
+ * Disables wheel-to-horizontal conversion when true.
21
+ */
22
+ this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
23
+ /**
24
+ * Horizontal scroll animation duration in milliseconds.
25
+ * Lower values scroll faster; `0` applies the scroll instantly.
26
+ */
27
+ this.speed = input(200, ...(ngDevMode ? [{ debugName: "speed" }] : []));
28
+ this.animationFrameId = null;
29
+ this.targetScrollLeft = null;
30
+ this.scrollPosition = 0;
31
+ this.lastFrameTime = 0;
32
+ this.wheelListener = (event) => this.handleWheel(event);
33
+ this.#init = afterNextRender(() => {
34
+ if (!isPlatformBrowser(this.platformId))
35
+ return;
36
+ this.zone.runOutsideAngular(() => {
37
+ this.nativeElement.addEventListener('wheel', this.wheelListener, { passive: false });
38
+ });
39
+ });
40
+ }
41
+ #init;
42
+ ngOnDestroy() {
43
+ if (!isPlatformBrowser(this.platformId))
44
+ return;
45
+ this.stopAnimation();
46
+ this.nativeElement.removeEventListener('wheel', this.wheelListener);
47
+ }
48
+ get nativeElement() {
49
+ return this.elementRef.nativeElement;
50
+ }
51
+ handleWheel(event) {
52
+ if (this.disabled() || !this.canScrollHorizontally())
53
+ return;
54
+ if (event.shiftKey || Math.abs(event.deltaX) > Math.abs(event.deltaY))
55
+ return;
56
+ if (event.deltaY === 0)
57
+ return;
58
+ const element = this.nativeElement;
59
+ const maxScrollLeft = element.scrollWidth - element.clientWidth;
60
+ this.syncScrollState();
61
+ const currentPosition = this.targetScrollLeft ?? this.scrollPosition;
62
+ const atStart = currentPosition <= 0 && event.deltaY < 0;
63
+ const atEnd = currentPosition >= maxScrollLeft && event.deltaY > 0;
64
+ if (atStart || atEnd)
65
+ return;
66
+ event.preventDefault();
67
+ const nextTarget = Math.max(0, Math.min(maxScrollLeft, currentPosition + event.deltaY));
68
+ this.targetScrollLeft = nextTarget;
69
+ if (this.speed() <= 0) {
70
+ this.applyScrollPosition(nextTarget);
71
+ this.targetScrollLeft = null;
72
+ return;
73
+ }
74
+ this.startAnimation();
75
+ }
76
+ syncScrollState() {
77
+ if (this.targetScrollLeft !== null)
78
+ return;
79
+ this.scrollPosition = this.nativeElement.scrollLeft;
80
+ this.targetScrollLeft = this.scrollPosition;
81
+ }
82
+ startAnimation() {
83
+ if (this.animationFrameId !== null)
84
+ return;
85
+ this.lastFrameTime = performance.now();
86
+ const step = (currentTime) => {
87
+ const target = this.targetScrollLeft;
88
+ if (target === null) {
89
+ this.stopAnimation();
90
+ return;
91
+ }
92
+ const deltaTime = Math.max(currentTime - this.lastFrameTime, 1);
93
+ this.lastFrameTime = currentTime;
94
+ const factor = 1 - Math.exp(-deltaTime / this.speed());
95
+ this.scrollPosition += (target - this.scrollPosition) * factor;
96
+ this.applyScrollPosition(this.scrollPosition);
97
+ if (Math.abs(target - this.scrollPosition) < 0.5) {
98
+ this.applyScrollPosition(target);
99
+ this.targetScrollLeft = null;
100
+ this.stopAnimation();
101
+ return;
102
+ }
103
+ this.animationFrameId = requestAnimationFrame(step);
104
+ };
105
+ this.animationFrameId = requestAnimationFrame(step);
106
+ }
107
+ applyScrollPosition(position) {
108
+ this.scrollPosition = position;
109
+ this.nativeElement.scrollLeft = position;
110
+ }
111
+ stopAnimation() {
112
+ if (this.animationFrameId === null)
113
+ return;
114
+ cancelAnimationFrame(this.animationFrameId);
115
+ this.animationFrameId = null;
116
+ }
117
+ canScrollHorizontally() {
118
+ const element = this.nativeElement;
119
+ return element.scrollWidth > element.clientWidth;
120
+ }
121
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXHorizontalScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
122
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.3", type: AXHorizontalScrollDirective, isStandalone: true, selector: "[axHorizontalScroll]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, speed: { classPropertyName: "speed", publicName: "speed", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
123
+ }
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXHorizontalScrollDirective, decorators: [{
125
+ type: Directive,
126
+ args: [{
127
+ selector: '[axHorizontalScroll]',
128
+ }]
129
+ }] });
130
+
131
+ /**
132
+ * Generated bundle index. Do not edit.
133
+ */
134
+
135
+ export { AXHorizontalScrollDirective };
136
+ //# sourceMappingURL=acorex-cdk-horizontal-scroll.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-cdk-horizontal-scroll.mjs","sources":["../tmp-esm2022/horizontal-scroll/lib/horizontal-scroll.directive.js","../tmp-esm2022/horizontal-scroll/acorex-cdk-horizontal-scroll.js"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { afterNextRender, Directive, ElementRef, inject, input, NgZone, PLATFORM_ID } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Converts vertical mouse-wheel scrolling into horizontal scrolling on the host element.\n * Applies only when the host can scroll horizontally.\n *\n * Usage:\n * <div axHorizontalScroll [speed]=\"150\" class=\"overflow-x-auto\">\n * ...\n * </div>\n */\nexport class AXHorizontalScrollDirective {\n constructor() {\n this.elementRef = inject((ElementRef));\n this.platformId = inject(PLATFORM_ID);\n this.zone = inject(NgZone);\n /**\n * Disables wheel-to-horizontal conversion when true.\n */\n this.disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n /**\n * Horizontal scroll animation duration in milliseconds.\n * Lower values scroll faster; `0` applies the scroll instantly.\n */\n this.speed = input(200, ...(ngDevMode ? [{ debugName: \"speed\" }] : []));\n this.animationFrameId = null;\n this.targetScrollLeft = null;\n this.scrollPosition = 0;\n this.lastFrameTime = 0;\n this.wheelListener = (event) => this.handleWheel(event);\n this.#init = afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId))\n return;\n this.zone.runOutsideAngular(() => {\n this.nativeElement.addEventListener('wheel', this.wheelListener, { passive: false });\n });\n });\n }\n #init;\n ngOnDestroy() {\n if (!isPlatformBrowser(this.platformId))\n return;\n this.stopAnimation();\n this.nativeElement.removeEventListener('wheel', this.wheelListener);\n }\n get nativeElement() {\n return this.elementRef.nativeElement;\n }\n handleWheel(event) {\n if (this.disabled() || !this.canScrollHorizontally())\n return;\n if (event.shiftKey || Math.abs(event.deltaX) > Math.abs(event.deltaY))\n return;\n if (event.deltaY === 0)\n return;\n const element = this.nativeElement;\n const maxScrollLeft = element.scrollWidth - element.clientWidth;\n this.syncScrollState();\n const currentPosition = this.targetScrollLeft ?? this.scrollPosition;\n const atStart = currentPosition <= 0 && event.deltaY < 0;\n const atEnd = currentPosition >= maxScrollLeft && event.deltaY > 0;\n if (atStart || atEnd)\n return;\n event.preventDefault();\n const nextTarget = Math.max(0, Math.min(maxScrollLeft, currentPosition + event.deltaY));\n this.targetScrollLeft = nextTarget;\n if (this.speed() <= 0) {\n this.applyScrollPosition(nextTarget);\n this.targetScrollLeft = null;\n return;\n }\n this.startAnimation();\n }\n syncScrollState() {\n if (this.targetScrollLeft !== null)\n return;\n this.scrollPosition = this.nativeElement.scrollLeft;\n this.targetScrollLeft = this.scrollPosition;\n }\n startAnimation() {\n if (this.animationFrameId !== null)\n return;\n this.lastFrameTime = performance.now();\n const step = (currentTime) => {\n const target = this.targetScrollLeft;\n if (target === null) {\n this.stopAnimation();\n return;\n }\n const deltaTime = Math.max(currentTime - this.lastFrameTime, 1);\n this.lastFrameTime = currentTime;\n const factor = 1 - Math.exp(-deltaTime / this.speed());\n this.scrollPosition += (target - this.scrollPosition) * factor;\n this.applyScrollPosition(this.scrollPosition);\n if (Math.abs(target - this.scrollPosition) < 0.5) {\n this.applyScrollPosition(target);\n this.targetScrollLeft = null;\n this.stopAnimation();\n return;\n }\n this.animationFrameId = requestAnimationFrame(step);\n };\n this.animationFrameId = requestAnimationFrame(step);\n }\n applyScrollPosition(position) {\n this.scrollPosition = position;\n this.nativeElement.scrollLeft = position;\n }\n stopAnimation() {\n if (this.animationFrameId === null)\n return;\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = null;\n }\n canScrollHorizontally() {\n const element = this.nativeElement;\n return element.scrollWidth > element.clientWidth;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXHorizontalScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", type: AXHorizontalScrollDirective, isStandalone: true, selector: \"[axHorizontalScroll]\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, speed: { classPropertyName: \"speed\", publicName: \"speed\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXHorizontalScrollDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axHorizontalScroll]',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9yaXpvbnRhbC1zY3JvbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2hvcml6b250YWwtc2Nyb2xsL3NyYy9saWIvaG9yaXpvbnRhbC1zY3JvbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXRIOzs7Ozs7OztHQVFHO0FBSUgsTUFBTSxPQUFPLDJCQUEyQjtJQUh4QztRQUlVLGVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQztRQUM3QyxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLFNBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFOUI7O1dBRUc7UUFDSCxhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssb0RBQUMsQ0FBQztRQUV4Qjs7O1dBR0c7UUFDSCxVQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsaURBQUMsQ0FBQztRQUVYLHFCQUFnQixHQUFrQixJQUFJLENBQUM7UUFDdkMscUJBQWdCLEdBQWtCLElBQUksQ0FBQztRQUN2QyxtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUVULGtCQUFhLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhGLFVBQUssR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2dC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RyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO0lBQzNDLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLElBQUk7WUFBRSxPQUFPO1FBRTNDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ25DLE9BQU8sT0FBTyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQ25ELENBQUM7OEdBL0hVLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUh2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIENvbnZlcnRzIHZlcnRpY2FsIG1vdXNlLXdoZWVsIHNjcm9sbGluZyBpbnRvIGhvcml6b250YWwgc2Nyb2xsaW5nIG9uIHRoZSBob3N0IGVsZW1lbnQuXG4gKiBBcHBsaWVzIG9ubHkgd2hlbiB0aGUgaG9zdCBjYW4gc2Nyb2xsIGhvcml6b250YWxseS5cbiAqXG4gKiBVc2FnZTpcbiAqIDxkaXYgYXhIb3Jpem9udGFsU2Nyb2xsIFtzcGVlZF09XCIxNTBcIiBjbGFzcz1cIm92ZXJmbG93LXgtYXV0b1wiPlxuICogICAuLi5cbiAqIDwvZGl2PlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXhIb3Jpem9udGFsU2Nyb2xsXScsXG59KVxuZXhwb3J0IGNsYXNzIEFYSG9yaXpvbnRhbFNjcm9sbERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG4gIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIHByaXZhdGUgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyB3aGVlbC10by1ob3Jpem9udGFsIGNvbnZlcnNpb24gd2hlbiB0cnVlLlxuICAgKi9cbiAgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIEhvcml6b250YWwgc2Nyb2xsIGFuaW1hdGlvbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMuXG4gICAqIExvd2VyIHZhbHVlcyBzY3JvbGwgZmFzdGVyOyBgMGAgYXBwbGllcyB0aGUgc2Nyb2xsIGluc3RhbnRseS5cbiAgICovXG4gIHNwZWVkID0gaW5wdXQoMjAwKTtcblxuICBwcml2YXRlIGFuaW1hdGlvbkZyYW1lSWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHRhcmdldFNjcm9sbExlZnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHNjcm9sbFBvc2l0aW9uID0gMDtcbiAgcHJpdmF0ZSBsYXN0RnJhbWVUaW1lID0gMDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHdoZWVsTGlzdGVuZXIgPSAoZXZlbnQ6IFdoZWVsRXZlbnQpID0+IHRoaXMuaGFuZGxlV2hlZWwoZXZlbnQpO1xuXG4gICNpbml0ID0gYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLndoZWVsTGlzdGVuZXIsIHsgcGFzc2l2ZTogZmFsc2UgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5zdG9wQW5pbWF0aW9uKCk7XG4gICAgdGhpcy5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgdGhpcy53aGVlbExpc3RlbmVyKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlV2hlZWwoZXZlbnQ6IFdoZWVsRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpIHx8ICF0aGlzLmNhblNjcm9sbEhvcml6b250YWxseSgpKSByZXR1cm47XG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8IE1hdGguYWJzKGV2ZW50LmRlbHRhWCkgPiBNYXRoLmFicyhldmVudC5kZWx0YVkpKSByZXR1cm47XG4gICAgaWYgKGV2ZW50LmRlbHRhWSA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBtYXhTY3JvbGxMZWZ0ID0gZWxlbWVudC5zY3JvbGxXaWR0aCAtIGVsZW1lbnQuY2xpZW50V2lkdGg7XG5cbiAgICB0aGlzLnN5bmNTY3JvbGxTdGF0ZSgpO1xuXG4gICAgY29uc3QgY3VycmVudFBvc2l0aW9uID0gdGhpcy50YXJnZXRTY3JvbGxMZWZ0ID8/IHRoaXMuc2Nyb2xsUG9zaXRpb247XG4gICAgY29uc3QgYXRTdGFydCA9IGN1cnJlbnRQb3NpdGlvbiA8PSAwICYmIGV2ZW50LmRlbHRhWSA8IDA7XG4gICAgY29uc3QgYXRFbmQgPSBjdXJyZW50UG9zaXRpb24gPj0gbWF4U2Nyb2xsTGVmdCAmJiBldmVudC5kZWx0YVkgPiAwO1xuXG4gICAgaWYgKGF0U3RhcnQgfHwgYXRFbmQpIHJldHVybjtcblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCBuZXh0VGFyZ2V0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obWF4U2Nyb2xsTGVmdCwgY3VycmVudFBvc2l0aW9uICsgZXZlbnQuZGVsdGFZKSk7XG4gICAgdGhpcy50YXJnZXRTY3JvbGxMZWZ0ID0gbmV4dFRhcmdldDtcblxuICAgIGlmICh0aGlzLnNwZWVkKCkgPD0gMCkge1xuICAgICAgdGhpcy5hcHBseVNjcm9sbFBvc2l0aW9uKG5leHRUYXJnZXQpO1xuICAgICAgdGhpcy50YXJnZXRTY3JvbGxMZWZ0ID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNTY3JvbGxTdGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YXJnZXRTY3JvbGxMZWZ0ICE9PSBudWxsKSByZXR1cm47XG5cbiAgICB0aGlzLnNjcm9sbFBvc2l0aW9uID0gdGhpcy5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgdGhpcy50YXJnZXRTY3JvbGxMZWZ0ID0gdGhpcy5zY3JvbGxQb3NpdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRBbmltYXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5pbWF0aW9uRnJhbWVJZCAhPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgdGhpcy5sYXN0RnJhbWVUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG5cbiAgICBjb25zdCBzdGVwID0gKGN1cnJlbnRUaW1lOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMudGFyZ2V0U2Nyb2xsTGVmdDtcblxuICAgICAgaWYgKHRhcmdldCA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLnN0b3BBbmltYXRpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkZWx0YVRpbWUgPSBNYXRoLm1heChjdXJyZW50VGltZSAtIHRoaXMubGFzdEZyYW1lVGltZSwgMSk7XG4gICAgICB0aGlzLmxhc3RGcmFtZVRpbWUgPSBjdXJyZW50VGltZTtcblxuICAgICAgY29uc3QgZmFjdG9yID0gMSAtIE1hdGguZXhwKC1kZWx0YVRpbWUgLyB0aGlzLnNwZWVkKCkpO1xuICAgICAgdGhpcy5zY3JvbGxQb3NpdGlvbiArPSAodGFyZ2V0IC0gdGhpcy5zY3JvbGxQb3NpdGlvbikgKiBmYWN0b3I7XG4gICAgICB0aGlzLmFwcGx5U2Nyb2xsUG9zaXRpb24odGhpcy5zY3JvbGxQb3NpdGlvbik7XG5cbiAgICAgIGlmIChNYXRoLmFicyh0YXJnZXQgLSB0aGlzLnNjcm9sbFBvc2l0aW9uKSA8IDAuNSkge1xuICAgICAgICB0aGlzLmFwcGx5U2Nyb2xsUG9zaXRpb24odGFyZ2V0KTtcbiAgICAgICAgdGhpcy50YXJnZXRTY3JvbGxMZWZ0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdG9wQW5pbWF0aW9uKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hbmltYXRpb25GcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApO1xuICAgIH07XG5cbiAgICB0aGlzLmFuaW1hdGlvbkZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U2Nyb2xsUG9zaXRpb24ocG9zaXRpb246IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHBvc2l0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuaW1hdGlvbkZyYW1lSWQgPT09IG51bGwpIHJldHVybjtcblxuICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0aW9uRnJhbWVJZCk7XG4gICAgdGhpcy5hbmltYXRpb25GcmFtZUlkID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgY2FuU2Nyb2xsSG9yaXpvbnRhbGx5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcmV0dXJuIGVsZW1lbnQuc2Nyb2xsV2lkdGggPiBlbGVtZW50LmNsaWVudFdpZHRoO1xuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNkay1ob3Jpem9udGFsLXNjcm9sbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9ob3Jpem9udGFsLXNjcm9sbC9zcmMvYWNvcmV4LWNkay1ob3Jpem9udGFsLXNjcm9sbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ # @acorex/cdk/horizontal-scroll
2
+
3
+ Secondary entry point of `@acorex/cdk`. It can be used by importing from `@acorex/cdk/horizontal-scroll`.
4
+
5
+ Converts vertical mouse-wheel scrolling into horizontal scrolling on scrollable host elements.
@@ -0,0 +1,44 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnDestroy } from '@angular/core';
3
+
4
+ /**
5
+ * Converts vertical mouse-wheel scrolling into horizontal scrolling on the host element.
6
+ * Applies only when the host can scroll horizontally.
7
+ *
8
+ * Usage:
9
+ * <div axHorizontalScroll [speed]="150" class="overflow-x-auto">
10
+ * ...
11
+ * </div>
12
+ */
13
+ declare class AXHorizontalScrollDirective implements OnDestroy {
14
+ #private;
15
+ private elementRef;
16
+ private platformId;
17
+ private zone;
18
+ /**
19
+ * Disables wheel-to-horizontal conversion when true.
20
+ */
21
+ disabled: _angular_core.InputSignal<boolean>;
22
+ /**
23
+ * Horizontal scroll animation duration in milliseconds.
24
+ * Lower values scroll faster; `0` applies the scroll instantly.
25
+ */
26
+ speed: _angular_core.InputSignal<number>;
27
+ private animationFrameId;
28
+ private targetScrollLeft;
29
+ private scrollPosition;
30
+ private lastFrameTime;
31
+ private readonly wheelListener;
32
+ ngOnDestroy(): void;
33
+ private get nativeElement();
34
+ private handleWheel;
35
+ private syncScrollState;
36
+ private startAnimation;
37
+ private applyScrollPosition;
38
+ private stopAnimation;
39
+ private canScrollHorizontally;
40
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXHorizontalScrollDirective, never>;
41
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXHorizontalScrollDirective, "[axHorizontalScroll]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "speed": { "alias": "speed"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
42
+ }
43
+
44
+ export { AXHorizontalScrollDirective };
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@acorex/cdk",
3
- "version": "20.7.42",
3
+ "version": "20.7.44",
4
4
  "peerDependencies": {
5
- "@acorex/core": "20.7.42",
5
+ "@acorex/core": "20.7.44",
6
6
  "quill": ">=2.0.2",
7
7
  "qrcode": ">=1.5.4",
8
8
  "swiper": ">=11.1.15",
@@ -59,6 +59,10 @@
59
59
  "types": "./full-screen/index.d.ts",
60
60
  "default": "./fesm2022/acorex-cdk-full-screen.mjs"
61
61
  },
62
+ "./horizontal-scroll": {
63
+ "types": "./horizontal-scroll/index.d.ts",
64
+ "default": "./fesm2022/acorex-cdk-horizontal-scroll.mjs"
65
+ },
62
66
  "./input-mask": {
63
67
  "types": "./input-mask/index.d.ts",
64
68
  "default": "./fesm2022/acorex-cdk-input-mask.mjs"