@libs-ui/components-scroll-measure-items-direction-horizontal 0.2.10

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/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # scroll-measure-items-direction-horizontal
2
+
3
+ This library was generated with [Nx](https://nx.dev).
@@ -0,0 +1,27 @@
1
+ import { AfterViewInit, OnDestroy } from '@angular/core';
2
+ import { IScrollMeasureItemDirectionHorizontalFunctionsControl } from './interfaces/direction-horizontal.interface';
3
+ import * as i0 from "@angular/core";
4
+ export declare class LibsUiScrollMeasureItemDirectionHorizontalDirective implements AfterViewInit, OnDestroy {
5
+ viewPortItems: import("@angular/core").WritableSignal<Record<string, any>[]>;
6
+ private start;
7
+ private end;
8
+ private storeItems;
9
+ private divVirtual;
10
+ private onDestroy;
11
+ readonly elementScroll: import("@angular/core").InputSignal<HTMLElement>;
12
+ readonly functionGetWidthItem: import("@angular/core").InputSignal<(item: any) => Promise<number>>;
13
+ readonly items: import("@angular/core").InputSignal<any[]>;
14
+ readonly outViewPortItem: import("@angular/core").OutputEmitterRef<Record<string, any>[]>;
15
+ readonly outFunctionControl: import("@angular/core").OutputEmitterRef<IScrollMeasureItemDirectionHorizontalFunctionsControl>;
16
+ private elementRef;
17
+ constructor();
18
+ ngAfterViewInit(): void;
19
+ private handlerScroll;
20
+ private scrollInto;
21
+ private scrollToPosition;
22
+ private scrollToIndex;
23
+ private reCalculatorViewPort;
24
+ ngOnDestroy(): void;
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiScrollMeasureItemDirectionHorizontalDirective, never>;
26
+ static ɵdir: i0.ɵɵDirectiveDeclaration<LibsUiScrollMeasureItemDirectionHorizontalDirective, "[LibsUiScrollMeasureItemDirectionHorizontalDirective]", never, { "elementScroll": { "alias": "elementScroll"; "required": true; "isSignal": true; }; "functionGetWidthItem": { "alias": "functionGetWidthItem"; "required": true; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; }, { "outViewPortItem": "outViewPortItem"; "outFunctionControl": "outFunctionControl"; }, never, never, true, never>;
27
+ }
@@ -0,0 +1,142 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { Directive, ElementRef, effect, inject, input, output, signal, untracked } from '@angular/core';
3
+ import { cloneDeep, set } from '@libs-ui/utils';
4
+ import { Subject, fromEvent, takeUntil } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ export class LibsUiScrollMeasureItemDirectionHorizontalDirective {
7
+ /* PROPERTY */
8
+ viewPortItems = signal([]);
9
+ start = signal(0);
10
+ end = signal(0);
11
+ storeItems = signal([]);
12
+ divVirtual = document.createElement('div');
13
+ onDestroy = new Subject();
14
+ /* INPUT */
15
+ elementScroll = input.required();
16
+ functionGetWidthItem = input.required();
17
+ items = input.required();
18
+ /* OUTPUT */
19
+ outViewPortItem = output();
20
+ outFunctionControl = output();
21
+ /* INJECT */
22
+ elementRef = inject(ElementRef);
23
+ constructor() {
24
+ effect(() => {
25
+ if (!untracked(() => this.elementScroll()) || !untracked(() => this.functionGetWidthItem())) {
26
+ return;
27
+ }
28
+ const items = this.items();
29
+ untracked(() => {
30
+ this.start.set(0);
31
+ const rect = this.elementScroll().getBoundingClientRect();
32
+ let width = 0;
33
+ this.storeItems.set(items.map(async (item, index) => {
34
+ const newItem = cloneDeep(item);
35
+ newItem.ref = item;
36
+ const itemWidth = await this.functionGetWidthItem()(item);
37
+ newItem.itemWidth = itemWidth;
38
+ newItem.start = width;
39
+ width += itemWidth;
40
+ newItem.end = width;
41
+ if (item.end <= rect.width + this.elementScroll().scrollLeft) {
42
+ this.end.set(index);
43
+ }
44
+ return newItem;
45
+ }));
46
+ this.viewPortItems.set(this.storeItems().slice(this.start(), this.end() + 2).map(item => item['ref']));
47
+ this.outViewPortItem.emit(this.viewPortItems());
48
+ this.divVirtual.style.position = 'absolute';
49
+ this.divVirtual.style.width = `${width}px`;
50
+ this.divVirtual.style.height = '100%';
51
+ this.elementRef.nativeElement.classList.remove("w-full");
52
+ this.elementScroll().append(this.divVirtual);
53
+ });
54
+ });
55
+ }
56
+ ngAfterViewInit() {
57
+ setTimeout(() => {
58
+ fromEvent(this.elementScroll(), 'scroll').pipe(takeUntil(this.onDestroy)).subscribe(this.handlerScroll.bind(this));
59
+ this.outFunctionControl.emit({
60
+ scrollInto: this.scrollInto.bind(this),
61
+ scrollToPosition: this.scrollToPosition.bind(this),
62
+ scrollToIndex: this.scrollToIndex.bind(this),
63
+ reCalculatorViewPort: this.reCalculatorViewPort.bind(this)
64
+ });
65
+ });
66
+ }
67
+ /* FUNCTIONS */
68
+ handlerScroll() {
69
+ if (!this.storeItems()?.length) {
70
+ return;
71
+ }
72
+ const rect = this.elementScroll().getBoundingClientRect();
73
+ let start = this.start();
74
+ let isSetStartPositioned = false;
75
+ for (const index in this.storeItems()) {
76
+ const item = this.storeItems()[index];
77
+ if (item['end'] > rect.width + this.elementScroll().scrollLeft) {
78
+ break;
79
+ }
80
+ this.end.set(+index);
81
+ if (item['end'] >= this.elementScroll().scrollLeft && !isSetStartPositioned) {
82
+ start = +index;
83
+ isSetStartPositioned = true;
84
+ }
85
+ }
86
+ if (start !== this.start()) {
87
+ this.start.set(start);
88
+ this.elementRef.nativeElement.style.paddingLeft = `${this.storeItems()[start]['start']}px`;
89
+ }
90
+ if (this.start() < 0) {
91
+ this.start.set(0);
92
+ }
93
+ this.viewPortItems.set(this.storeItems().slice(this.start(), this.end() + 2).map(item => item['ref']));
94
+ this.outViewPortItem.emit(this.viewPortItems());
95
+ }
96
+ async scrollInto(itemScroll) {
97
+ const itemFound = this.storeItems().find(item => item["ref"] === itemScroll);
98
+ if (itemFound) {
99
+ this.elementScroll().scrollLeft = itemFound["start"];
100
+ }
101
+ }
102
+ async scrollToPosition(position) {
103
+ this.elementScroll().scrollLeft = position;
104
+ }
105
+ async scrollToIndex(index) {
106
+ const itemOfIndex = this.storeItems()[index];
107
+ if (itemOfIndex) {
108
+ this.elementScroll().scrollLeft = itemOfIndex["start"];
109
+ }
110
+ }
111
+ async reCalculatorViewPort() {
112
+ let width = 0;
113
+ this.storeItems.update(items => {
114
+ items.forEach(async (item) => {
115
+ const itemWidth = await this.functionGetWidthItem()(item["ref"]);
116
+ set(item, 'itemWidth', itemWidth);
117
+ set(item, 'start', width);
118
+ width += itemWidth;
119
+ set(item, 'end', width);
120
+ });
121
+ return [...items];
122
+ });
123
+ this.divVirtual.style.width = `${width}px`;
124
+ this.handlerScroll();
125
+ }
126
+ ngOnDestroy() {
127
+ this.divVirtual.remove();
128
+ this.onDestroy.next();
129
+ this.onDestroy.complete();
130
+ }
131
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiScrollMeasureItemDirectionHorizontalDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
132
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: LibsUiScrollMeasureItemDirectionHorizontalDirective, isStandalone: true, selector: "[LibsUiScrollMeasureItemDirectionHorizontalDirective]", inputs: { elementScroll: { classPropertyName: "elementScroll", publicName: "elementScroll", isSignal: true, isRequired: true, transformFunction: null }, functionGetWidthItem: { classPropertyName: "functionGetWidthItem", publicName: "functionGetWidthItem", isSignal: true, isRequired: true, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { outViewPortItem: "outViewPortItem", outFunctionControl: "outFunctionControl" }, ngImport: i0 });
133
+ }
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiScrollMeasureItemDirectionHorizontalDirective, decorators: [{
135
+ type: Directive,
136
+ args: [{
137
+ // eslint-disable-next-line @angular-eslint/directive-selector
138
+ selector: '[LibsUiScrollMeasureItemDirectionHorizontalDirective]',
139
+ standalone: true
140
+ }]
141
+ }], ctorParameters: () => [] });
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLWhvcml6b250YWwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3Njcm9sbC1tZWFzdXJlLWl0ZW1zL2RpcmVjdGlvbi1ob3Jpem9udGFsL3NyYy9kaXJlY3Rpb24taG9yaXpvbnRhbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFPckQsTUFBTSxPQUFPLG1EQUFtRDtJQUM5RCxjQUFjO0lBQ1AsYUFBYSxHQUFHLE1BQU0sQ0FBNkIsRUFBRSxDQUFDLENBQUM7SUFDdEQsS0FBSyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUMxQixHQUFHLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLFVBQVUsR0FBRyxNQUFNLENBQTZCLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXhDLFdBQVc7SUFDRixhQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBZSxDQUFDO0lBQzlDLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWtDLENBQUM7SUFDeEUsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWMsQ0FBQztJQUU5QyxZQUFZO0lB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SyxJQUFJLFNBQVMsQ0FBQztnQkFDbkIsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLEtBQUssSUFBSSxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7d0dBbkpVLG1EQUFtRDs0RkFBbkQsbURBQW1EOzs0RkFBbkQsbURBQW1EO2tCQUwvRCxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLHVEQUF1RDtvQkFDakUsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBzZXQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSVNjcm9sbE1lYXN1cmVJdGVtRGlyZWN0aW9uSG9yaXpvbnRhbEZ1bmN0aW9uc0NvbnRyb2wgfSBmcm9tICcuL2ludGVyZmFjZXMvZGlyZWN0aW9uLWhvcml6b250YWwuaW50ZXJmYWNlJztcbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1tMaWJzVWlTY3JvbGxNZWFzdXJlSXRlbURpcmVjdGlvbkhvcml6b250YWxEaXJlY3RpdmVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlTY3JvbGxNZWFzdXJlSXRlbURpcmVjdGlvbkhvcml6b250YWxEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvKiBQUk9QRVJUWSAqL1xuICBwdWJsaWMgdmlld1BvcnRJdGVtcyA9IHNpZ25hbDxBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pj4oW10pO1xuICBwcml2YXRlIHN0YXJ0ID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByaXZhdGUgZW5kID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByaXZhdGUgc3RvcmVJdGVtcyA9IHNpZ25hbDxBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pj4oW10pO1xuICBwcml2YXRlIGRpdlZpcnR1YWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qIElOUFVUICovXG4gIHJlYWRvbmx5IGVsZW1lbnRTY3JvbGwgPSBpbnB1dC5yZXF1aXJlZDxIVE1MRWxlbWVudD4oKTtcbiAgcmVhZG9ubHkgZnVuY3Rpb25HZXRXaWR0aEl0ZW0gPSBpbnB1dC5yZXF1aXJlZDwoaXRlbTogYW55KSA9PiBQcm9taXNlPG51bWJlcj4+KCk7XG4gIHJlYWRvbmx5IGl0ZW1zID0gaW5wdXQucmVxdWlyZWQ8QXJyYXk8YW55Pj4oKTtcblxuICAvKiBPVVRQVVQgKi9cbiAgcmVhZG9ubHkgb3V0Vmlld1BvcnRJdGVtID0gb3V0cHV0PEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+PigpO1xuICByZWFkb25seSBvdXRGdW5jdGlvbkNvbnRyb2wgPSBvdXRwdXQ8SVNjcm9sbE1lYXN1cmVJdGVtRGlyZWN0aW9uSG9yaXpvbnRhbEZ1bmN0aW9uc0NvbnRyb2w+KCk7XG5cbiAgLyogSU5KRUNUICovXG4gIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuXG4gICAgICBpZiAoIXVudHJhY2tlZCgoKSA9PiB0aGlzLmVsZW1lbnRTY3JvbGwoKSkgfHwgIXVudHJhY2tlZCgoKSA9PiB0aGlzLmZ1bmN0aW9uR2V0V2lkdGhJdGVtKCkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtcygpO1xuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgdGhpcy5zdGFydC5zZXQoMCk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmVsZW1lbnRTY3JvbGwoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgbGV0IHdpZHRoID0gMDtcblxuICAgICAgICB0aGlzLnN0b3JlSXRlbXMuc2V0KGl0ZW1zLm1hcChhc3luYyAoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdJdGVtID0gY2xvbmVEZWVwKGl0ZW0pO1xuXG4gICAgICAgICAgbmV3SXRlbS5yZWYgPSBpdGVtO1xuICAgICAgICAgIGNvbnN0IGl0ZW1XaWR0aCA9IGF3YWl0IHRoaXMuZnVuY3Rpb25HZXRXaWR0aEl0ZW0oKShpdGVtKTtcblxuICAgICAgICAgIG5ld0l0ZW0uaXRlbVdpZHRoID0gaXRlbVdpZHRoO1xuICAgICAgICAgIG5ld0l0ZW0uc3RhcnQgPSB3aWR0aDtcbiAgICAgICAgICB3aWR0aCArPSBpdGVtV2lkdGg7XG4gICAgICAgICAgbmV3SXRlbS5lbmQgPSB3aWR0aDtcbiAgICAgICAgICBpZiAoaXRlbS5lbmQgPD0gcmVjdC53aWR0aCArIHRoaXMuZWxlbWVudFNjcm9sbCgpLnNjcm9sbExlZnQpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kLnNldChpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXdJdGVtXG4gICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLnZpZXdQb3J0SXRlbXMuc2V0KHRoaXMuc3RvcmVJdGVtcygpLnNsaWNlKHRoaXMuc3RhcnQoKSwgdGhpcy5lbmQoKSArIDIpLm1hcChpdGVtID0+IGl0ZW1bJ3JlZiddKSk7XG4gICAgICAgIHRoaXMub3V0Vmlld1BvcnRJdGVtLmVtaXQodGhpcy52aWV3UG9ydEl0ZW1zKCkpO1xuXG4gICAgICAgIHRoaXMuZGl2VmlydHVhbC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIHRoaXMuZGl2VmlydHVhbC5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgdGhpcy5kaXZWaXJ0dWFsLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcInctZnVsbFwiKTtcbiAgICAgICAgdGhpcy5lbGVtZW50U2Nyb2xsKCkuYXBwZW5kKHRoaXMuZGl2VmlydHVhbCk7XG4gICAgICB9KTtcbiAgICB9KVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZnJvbUV2ZW50PEV2ZW50Pih0aGlzLmVsZW1lbnRTY3JvbGwoKSwgJ3Njcm9sbCcpLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKHRoaXMuaGFuZGxlclNjcm9sbC5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMub3V0RnVuY3Rpb25Db250cm9sLmVtaXQoe1xuICAgICAgICBzY3JvbGxJbnRvOiB0aGlzLnNjcm9sbEludG8uYmluZCh0aGlzKSxcbiAgICAgICAgc2Nyb2xsVG9Qb3NpdGlvbjogdGhpcy5zY3JvbGxUb1Bvc2l0aW9uLmJpbmQodGhpcyksXG4gICAgICAgIHNjcm9sbFRvSW5kZXg6IHRoaXMuc2Nyb2xsVG9JbmRleC5iaW5kKHRoaXMpLFxuICAgICAgICByZUNhbGN1bGF0b3JWaWV3UG9ydDogdGhpcy5yZUNhbGN1bGF0b3JWaWV3UG9ydC5iaW5kKHRoaXMpXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcml2YXRlIGhhbmRsZXJTY3JvbGwoKSB7XG4gICAgaWYgKCF0aGlzLnN0b3JlSXRlbXMoKT8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmVsZW1lbnRTY3JvbGwoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBsZXQgc3RhcnQgPSB0aGlzLnN0YXJ0KCk7XG4gICAgbGV0IGlzU2V0U3RhcnRQb3NpdGlvbmVkID0gZmFsc2VcblxuICAgIGZvciAoY29uc3QgaW5kZXggaW4gdGhpcy5zdG9yZUl0ZW1zKCkpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnN0b3JlSXRlbXMoKVtpbmRleF07XG4gICAgICBpZiAoaXRlbVsnZW5kJ10gPiByZWN0LndpZHRoICsgdGhpcy5lbGVtZW50U2Nyb2xsKCkuc2Nyb2xsTGVmdCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMuZW5kLnNldCgraW5kZXgpO1xuICAgICAgaWYgKGl0ZW1bJ2VuZCddID49IHRoaXMuZWxlbWVudFNjcm9sbCgpLnNjcm9sbExlZnQgJiYgIWlzU2V0U3RhcnRQb3NpdGlvbmVkKSB7XG4gICAgICAgIHN0YXJ0ID0gK2luZGV4O1xuICAgICAgICBpc1NldFN0YXJ0UG9zaXRpb25lZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0ICE9PSB0aGlzLnN0YXJ0KCkpIHtcbiAgICAgIHRoaXMuc3RhcnQuc2V0KHN0YXJ0KTtcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnBhZGRpbmdMZWZ0ID0gYCR7dGhpcy5zdG9yZUl0ZW1zKClbc3RhcnRdWydzdGFydCddfXB4YDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdGFydCgpIDwgMCkge1xuICAgICAgdGhpcy5zdGFydC5zZXQoMCk7XG4gICAgfVxuICAgIHRoaXMudmlld1BvcnRJdGVtcy5zZXQodGhpcy5zdG9yZUl0ZW1zKCkuc2xpY2UodGhpcy5zdGFydCgpLCB0aGlzLmVuZCgpICsgMikubWFwKGl0ZW0gPT4gaXRlbVsncmVmJ10pKTtcbiAgICB0aGlzLm91dFZpZXdQb3J0SXRlbS5lbWl0KHRoaXMudmlld1BvcnRJdGVtcygpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2Nyb2xsSW50byhpdGVtU2Nyb2xsOiBhbnkpIHtcbiAgICBjb25zdCBpdGVtRm91bmQgPSB0aGlzLnN0b3JlSXRlbXMoKS5maW5kKGl0ZW0gPT4gaXRlbVtcInJlZlwiXSA9PT0gaXRlbVNjcm9sbCk7XG5cbiAgICBpZiAoaXRlbUZvdW5kKSB7XG4gICAgICB0aGlzLmVsZW1lbnRTY3JvbGwoKS5zY3JvbGxMZWZ0ID0gaXRlbUZvdW5kW1wic3RhcnRcIl07XG4gICAgfVxuICB9XG4gIHByaXZhdGUgYXN5bmMgc2Nyb2xsVG9Qb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgdGhpcy5lbGVtZW50U2Nyb2xsKCkuc2Nyb2xsTGVmdCA9IHBvc2l0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzY3JvbGxUb0luZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBpdGVtT2ZJbmRleCA9IHRoaXMuc3RvcmVJdGVtcygpW2luZGV4XTtcblxuICAgIGlmIChpdGVtT2ZJbmRleCkge1xuICAgICAgdGhpcy5lbGVtZW50U2Nyb2xsKCkuc2Nyb2xsTGVmdCA9IGl0ZW1PZkluZGV4W1wic3RhcnRcIl07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZUNhbGN1bGF0b3JWaWV3UG9ydCgpIHtcbiAgICBsZXQgd2lkdGggPSAwO1xuXG4gICAgdGhpcy5zdG9yZUl0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICBpdGVtcy5mb3JFYWNoKGFzeW5jIChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1XaWR0aCA9IGF3YWl0IHRoaXMuZnVuY3Rpb25HZXRXaWR0aEl0ZW0oKShpdGVtW1wicmVmXCJdKTtcblxuICAgICAgICBzZXQoaXRlbSwgJ2l0ZW1XaWR0aCcsIGl0ZW1XaWR0aCk7XG4gICAgICAgIHNldChpdGVtLCAnc3RhcnQnLCB3aWR0aCk7XG4gICAgICAgIHdpZHRoICs9IGl0ZW1XaWR0aDtcbiAgICAgICAgc2V0KGl0ZW0sICdlbmQnLCB3aWR0aCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBbLi4uaXRlbXNdO1xuICAgIH0pO1xuICAgIHRoaXMuZGl2VmlydHVhbC5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICB0aGlzLmhhbmRsZXJTY3JvbGwoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGl2VmlydHVhbC5yZW1vdmUoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './direction-horizontal.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvc2Nyb2xsLW1lYXN1cmUtaXRlbXMvZGlyZWN0aW9uLWhvcml6b250YWwvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0NBQWtDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RpcmVjdGlvbi1ob3Jpem9udGFsLmRpcmVjdGl2ZSc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLWhvcml6b250YWwuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3Njcm9sbC1tZWFzdXJlLWl0ZW1zL2RpcmVjdGlvbi1ob3Jpem9udGFsL3NyYy9pbnRlcmZhY2VzL2RpcmVjdGlvbi1ob3Jpem9udGFsLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuZXhwb3J0IGludGVyZmFjZSBJU2Nyb2xsTWVhc3VyZUl0ZW1EaXJlY3Rpb25Ib3Jpem9udGFsRnVuY3Rpb25zQ29udHJvbCB7XG4gIHNjcm9sbEludG86IChpdGVtOiBhbnkpID0+IFByb21pc2U8dm9pZD47XG4gIHNjcm9sbFRvUG9zaXRpb246IChwb3NpdGlvbjogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBzY3JvbGxUb0luZGV4OiAoaW5kZXg6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVDYWxjdWxhdG9yVmlld1BvcnQ6ICgpID0+IFByb21pc2U8dm9pZD47XG59Il19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicy11aS1jb21wb25lbnRzLXNjcm9sbC1tZWFzdXJlLWl0ZW1zLWRpcmVjdGlvbi1ob3Jpem9udGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3Njcm9sbC1tZWFzdXJlLWl0ZW1zL2RpcmVjdGlvbi1ob3Jpem9udGFsL3NyYy9saWJzLXVpLWNvbXBvbmVudHMtc2Nyb2xsLW1lYXN1cmUtaXRlbXMtZGlyZWN0aW9uLWhvcml6b250YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,149 @@
1
+ import * as i0 from '@angular/core';
2
+ import { signal, input, output, inject, ElementRef, effect, untracked, Directive } from '@angular/core';
3
+ import { cloneDeep, set } from '@libs-ui/utils';
4
+ import { Subject, fromEvent, takeUntil } from 'rxjs';
5
+
6
+ /* eslint-disable @typescript-eslint/no-explicit-any */
7
+ class LibsUiScrollMeasureItemDirectionHorizontalDirective {
8
+ /* PROPERTY */
9
+ viewPortItems = signal([]);
10
+ start = signal(0);
11
+ end = signal(0);
12
+ storeItems = signal([]);
13
+ divVirtual = document.createElement('div');
14
+ onDestroy = new Subject();
15
+ /* INPUT */
16
+ elementScroll = input.required();
17
+ functionGetWidthItem = input.required();
18
+ items = input.required();
19
+ /* OUTPUT */
20
+ outViewPortItem = output();
21
+ outFunctionControl = output();
22
+ /* INJECT */
23
+ elementRef = inject(ElementRef);
24
+ constructor() {
25
+ effect(() => {
26
+ if (!untracked(() => this.elementScroll()) || !untracked(() => this.functionGetWidthItem())) {
27
+ return;
28
+ }
29
+ const items = this.items();
30
+ untracked(() => {
31
+ this.start.set(0);
32
+ const rect = this.elementScroll().getBoundingClientRect();
33
+ let width = 0;
34
+ this.storeItems.set(items.map(async (item, index) => {
35
+ const newItem = cloneDeep(item);
36
+ newItem.ref = item;
37
+ const itemWidth = await this.functionGetWidthItem()(item);
38
+ newItem.itemWidth = itemWidth;
39
+ newItem.start = width;
40
+ width += itemWidth;
41
+ newItem.end = width;
42
+ if (item.end <= rect.width + this.elementScroll().scrollLeft) {
43
+ this.end.set(index);
44
+ }
45
+ return newItem;
46
+ }));
47
+ this.viewPortItems.set(this.storeItems().slice(this.start(), this.end() + 2).map(item => item['ref']));
48
+ this.outViewPortItem.emit(this.viewPortItems());
49
+ this.divVirtual.style.position = 'absolute';
50
+ this.divVirtual.style.width = `${width}px`;
51
+ this.divVirtual.style.height = '100%';
52
+ this.elementRef.nativeElement.classList.remove("w-full");
53
+ this.elementScroll().append(this.divVirtual);
54
+ });
55
+ });
56
+ }
57
+ ngAfterViewInit() {
58
+ setTimeout(() => {
59
+ fromEvent(this.elementScroll(), 'scroll').pipe(takeUntil(this.onDestroy)).subscribe(this.handlerScroll.bind(this));
60
+ this.outFunctionControl.emit({
61
+ scrollInto: this.scrollInto.bind(this),
62
+ scrollToPosition: this.scrollToPosition.bind(this),
63
+ scrollToIndex: this.scrollToIndex.bind(this),
64
+ reCalculatorViewPort: this.reCalculatorViewPort.bind(this)
65
+ });
66
+ });
67
+ }
68
+ /* FUNCTIONS */
69
+ handlerScroll() {
70
+ if (!this.storeItems()?.length) {
71
+ return;
72
+ }
73
+ const rect = this.elementScroll().getBoundingClientRect();
74
+ let start = this.start();
75
+ let isSetStartPositioned = false;
76
+ for (const index in this.storeItems()) {
77
+ const item = this.storeItems()[index];
78
+ if (item['end'] > rect.width + this.elementScroll().scrollLeft) {
79
+ break;
80
+ }
81
+ this.end.set(+index);
82
+ if (item['end'] >= this.elementScroll().scrollLeft && !isSetStartPositioned) {
83
+ start = +index;
84
+ isSetStartPositioned = true;
85
+ }
86
+ }
87
+ if (start !== this.start()) {
88
+ this.start.set(start);
89
+ this.elementRef.nativeElement.style.paddingLeft = `${this.storeItems()[start]['start']}px`;
90
+ }
91
+ if (this.start() < 0) {
92
+ this.start.set(0);
93
+ }
94
+ this.viewPortItems.set(this.storeItems().slice(this.start(), this.end() + 2).map(item => item['ref']));
95
+ this.outViewPortItem.emit(this.viewPortItems());
96
+ }
97
+ async scrollInto(itemScroll) {
98
+ const itemFound = this.storeItems().find(item => item["ref"] === itemScroll);
99
+ if (itemFound) {
100
+ this.elementScroll().scrollLeft = itemFound["start"];
101
+ }
102
+ }
103
+ async scrollToPosition(position) {
104
+ this.elementScroll().scrollLeft = position;
105
+ }
106
+ async scrollToIndex(index) {
107
+ const itemOfIndex = this.storeItems()[index];
108
+ if (itemOfIndex) {
109
+ this.elementScroll().scrollLeft = itemOfIndex["start"];
110
+ }
111
+ }
112
+ async reCalculatorViewPort() {
113
+ let width = 0;
114
+ this.storeItems.update(items => {
115
+ items.forEach(async (item) => {
116
+ const itemWidth = await this.functionGetWidthItem()(item["ref"]);
117
+ set(item, 'itemWidth', itemWidth);
118
+ set(item, 'start', width);
119
+ width += itemWidth;
120
+ set(item, 'end', width);
121
+ });
122
+ return [...items];
123
+ });
124
+ this.divVirtual.style.width = `${width}px`;
125
+ this.handlerScroll();
126
+ }
127
+ ngOnDestroy() {
128
+ this.divVirtual.remove();
129
+ this.onDestroy.next();
130
+ this.onDestroy.complete();
131
+ }
132
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiScrollMeasureItemDirectionHorizontalDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
133
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: LibsUiScrollMeasureItemDirectionHorizontalDirective, isStandalone: true, selector: "[LibsUiScrollMeasureItemDirectionHorizontalDirective]", inputs: { elementScroll: { classPropertyName: "elementScroll", publicName: "elementScroll", isSignal: true, isRequired: true, transformFunction: null }, functionGetWidthItem: { classPropertyName: "functionGetWidthItem", publicName: "functionGetWidthItem", isSignal: true, isRequired: true, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { outViewPortItem: "outViewPortItem", outFunctionControl: "outFunctionControl" }, ngImport: i0 });
134
+ }
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiScrollMeasureItemDirectionHorizontalDirective, decorators: [{
136
+ type: Directive,
137
+ args: [{
138
+ // eslint-disable-next-line @angular-eslint/directive-selector
139
+ selector: '[LibsUiScrollMeasureItemDirectionHorizontalDirective]',
140
+ standalone: true
141
+ }]
142
+ }], ctorParameters: () => [] });
143
+
144
+ /**
145
+ * Generated bundle index. Do not edit.
146
+ */
147
+
148
+ export { LibsUiScrollMeasureItemDirectionHorizontalDirective };
149
+ //# sourceMappingURL=libs-ui-components-scroll-measure-items-direction-horizontal.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"libs-ui-components-scroll-measure-items-direction-horizontal.mjs","sources":["../../../../../../libs-ui/components/scroll-measure-items/direction-horizontal/src/direction-horizontal.directive.ts","../../../../../../libs-ui/components/scroll-measure-items/direction-horizontal/src/libs-ui-components-scroll-measure-items-direction-horizontal.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AfterViewInit, Directive, ElementRef, OnDestroy, effect, inject, input, output, signal, untracked } from '@angular/core';\nimport { cloneDeep, set } from '@libs-ui/utils';\nimport { Subject, fromEvent, takeUntil } from 'rxjs';\nimport { IScrollMeasureItemDirectionHorizontalFunctionsControl } from './interfaces/direction-horizontal.interface';\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiScrollMeasureItemDirectionHorizontalDirective]',\n standalone: true\n})\nexport class LibsUiScrollMeasureItemDirectionHorizontalDirective implements AfterViewInit, OnDestroy {\n /* PROPERTY */\n public viewPortItems = signal<Array<Record<string, any>>>([]);\n private start = signal<number>(0);\n private end = signal<number>(0);\n private storeItems = signal<Array<Record<string, any>>>([]);\n private divVirtual = document.createElement('div');\n private onDestroy = new Subject<void>();\n\n /* INPUT */\n readonly elementScroll = input.required<HTMLElement>();\n readonly functionGetWidthItem = input.required<(item: any) => Promise<number>>();\n readonly items = input.required<Array<any>>();\n\n /* OUTPUT */\n readonly outViewPortItem = output<Array<Record<string, any>>>();\n readonly outFunctionControl = output<IScrollMeasureItemDirectionHorizontalFunctionsControl>();\n\n /* INJECT */\n private elementRef = inject(ElementRef);\n\n constructor() {\n effect(() => {\n\n if (!untracked(() => this.elementScroll()) || !untracked(() => this.functionGetWidthItem())) {\n return;\n }\n const items = this.items();\n untracked(() => {\n this.start.set(0);\n const rect = this.elementScroll().getBoundingClientRect();\n let width = 0;\n\n this.storeItems.set(items.map(async (item, index) => {\n const newItem = cloneDeep(item);\n\n newItem.ref = item;\n const itemWidth = await this.functionGetWidthItem()(item);\n\n newItem.itemWidth = itemWidth;\n newItem.start = width;\n width += itemWidth;\n newItem.end = width;\n if (item.end <= rect.width + this.elementScroll().scrollLeft) {\n this.end.set(index);\n }\n return newItem\n }));\n\n this.viewPortItems.set(this.storeItems().slice(this.start(), this.end() + 2).map(item => item['ref']));\n this.outViewPortItem.emit(this.viewPortItems());\n\n this.divVirtual.style.position = 'absolute';\n this.divVirtual.style.width = `${width}px`;\n this.divVirtual.style.height = '100%';\n this.elementRef.nativeElement.classList.remove(\"w-full\");\n this.elementScroll().append(this.divVirtual);\n });\n })\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n fromEvent<Event>(this.elementScroll(), 'scroll').pipe(takeUntil(this.onDestroy)).subscribe(this.handlerScroll.bind(this));\n this.outFunctionControl.emit({\n scrollInto: this.scrollInto.bind(this),\n scrollToPosition: this.scrollToPosition.bind(this),\n scrollToIndex: this.scrollToIndex.bind(this),\n reCalculatorViewPort: this.reCalculatorViewPort.bind(this)\n });\n });\n }\n\n /* FUNCTIONS */\n private handlerScroll() {\n if (!this.storeItems()?.length) {\n return;\n }\n const rect = this.elementScroll().getBoundingClientRect();\n let start = this.start();\n let isSetStartPositioned = false\n\n for (const index in this.storeItems()) {\n const item = this.storeItems()[index];\n if (item['end'] > rect.width + this.elementScroll().scrollLeft) {\n break;\n }\n this.end.set(+index);\n if (item['end'] >= this.elementScroll().scrollLeft && !isSetStartPositioned) {\n start = +index;\n isSetStartPositioned = true;\n }\n }\n\n if (start !== this.start()) {\n this.start.set(start);\n this.elementRef.nativeElement.style.paddingLeft = `${this.storeItems()[start]['start']}px`;\n }\n\n if (this.start() < 0) {\n this.start.set(0);\n }\n this.viewPortItems.set(this.storeItems().slice(this.start(), this.end() + 2).map(item => item['ref']));\n this.outViewPortItem.emit(this.viewPortItems());\n }\n\n private async scrollInto(itemScroll: any) {\n const itemFound = this.storeItems().find(item => item[\"ref\"] === itemScroll);\n\n if (itemFound) {\n this.elementScroll().scrollLeft = itemFound[\"start\"];\n }\n }\n private async scrollToPosition(position: number) {\n this.elementScroll().scrollLeft = position;\n }\n\n private async scrollToIndex(index: number) {\n const itemOfIndex = this.storeItems()[index];\n\n if (itemOfIndex) {\n this.elementScroll().scrollLeft = itemOfIndex[\"start\"];\n }\n }\n\n private async reCalculatorViewPort() {\n let width = 0;\n\n this.storeItems.update(items => {\n items.forEach(async (item) => {\n const itemWidth = await this.functionGetWidthItem()(item[\"ref\"]);\n\n set(item, 'itemWidth', itemWidth);\n set(item, 'start', width);\n width += itemWidth;\n set(item, 'end', width);\n });\n return [...items];\n });\n this.divVirtual.style.width = `${width}px`;\n this.handlerScroll();\n }\n\n ngOnDestroy(): void {\n this.divVirtual.remove();\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './direction-horizontal.directive';
@@ -0,0 +1,6 @@
1
+ export interface IScrollMeasureItemDirectionHorizontalFunctionsControl {
2
+ scrollInto: (item: any) => Promise<void>;
3
+ scrollToPosition: (position: number) => Promise<void>;
4
+ scrollToIndex: (index: number) => Promise<void>;
5
+ reCalculatorViewPort: () => Promise<void>;
6
+ }
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@libs-ui/components-scroll-measure-items-direction-horizontal",
3
+ "version": "0.2.10",
4
+ "peerDependencies": {
5
+ "@angular/common": "^18.2.0",
6
+ "@angular/core": "^18.2.0"
7
+ },
8
+ "sideEffects": false,
9
+ "module": "fesm2022/libs-ui-components-scroll-measure-items-direction-horizontal.mjs",
10
+ "typings": "index.d.ts",
11
+ "exports": {
12
+ "./package.json": {
13
+ "default": "./package.json"
14
+ },
15
+ ".": {
16
+ "types": "./index.d.ts",
17
+ "esm2022": "./esm2022/libs-ui-components-scroll-measure-items-direction-horizontal.mjs",
18
+ "esm": "./esm2022/libs-ui-components-scroll-measure-items-direction-horizontal.mjs",
19
+ "default": "./fesm2022/libs-ui-components-scroll-measure-items-direction-horizontal.mjs"
20
+ }
21
+ },
22
+ "dependencies": {
23
+ "tslib": "^2.3.0"
24
+ }
25
+ }