mtrl-addons 0.2.2 → 0.2.4
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/{src/components/index.ts → dist/components/index.d.ts} +0 -2
- package/dist/components/vlist/config.d.ts +86 -0
- package/{src/components/vlist/constants.ts → dist/components/vlist/constants.d.ts} +10 -11
- package/dist/components/vlist/features/api.d.ts +7 -0
- package/{src/components/vlist/features/index.ts → dist/components/vlist/features/index.d.ts} +0 -2
- package/dist/components/vlist/features/selection.d.ts +6 -0
- package/dist/components/vlist/features/viewport.d.ts +9 -0
- package/dist/components/vlist/features.d.ts +31 -0
- package/{src/components/vlist/index.ts → dist/components/vlist/index.d.ts} +1 -10
- package/dist/components/vlist/types.d.ts +596 -0
- package/dist/components/vlist/vlist.d.ts +29 -0
- package/dist/core/compose/features/gestures/index.d.ts +86 -0
- package/dist/core/compose/features/gestures/longpress.d.ts +85 -0
- package/dist/core/compose/features/gestures/pan.d.ts +108 -0
- package/dist/core/compose/features/gestures/pinch.d.ts +111 -0
- package/dist/core/compose/features/gestures/rotate.d.ts +111 -0
- package/dist/core/compose/features/gestures/swipe.d.ts +149 -0
- package/dist/core/compose/features/gestures/tap.d.ts +79 -0
- package/{src/core/compose/features/index.ts → dist/core/compose/features/index.d.ts} +1 -2
- package/{src/core/compose/index.ts → dist/core/compose/index.d.ts} +2 -11
- package/{src/core/gestures/index.ts → dist/core/gestures/index.d.ts} +1 -20
- package/dist/core/gestures/longpress.d.ts +23 -0
- package/dist/core/gestures/manager.d.ts +14 -0
- package/dist/core/gestures/pan.d.ts +12 -0
- package/dist/core/gestures/pinch.d.ts +14 -0
- package/dist/core/gestures/rotate.d.ts +14 -0
- package/dist/core/gestures/swipe.d.ts +20 -0
- package/dist/core/gestures/tap.d.ts +12 -0
- package/dist/core/gestures/types.d.ts +320 -0
- package/dist/core/gestures/utils.d.ts +57 -0
- package/dist/core/index.d.ts +13 -0
- package/dist/core/layout/config.d.ts +33 -0
- package/dist/core/layout/index.d.ts +51 -0
- package/dist/core/layout/jsx.d.ts +65 -0
- package/dist/core/layout/schema.d.ts +112 -0
- package/dist/core/layout/types.d.ts +69 -0
- package/dist/core/viewport/constants.d.ts +105 -0
- package/dist/core/viewport/features/base.d.ts +14 -0
- package/dist/core/viewport/features/collection.d.ts +41 -0
- package/dist/core/viewport/features/events.d.ts +13 -0
- package/{src/core/viewport/features/index.ts → dist/core/viewport/features/index.d.ts} +0 -7
- package/dist/core/viewport/features/item-size.d.ts +30 -0
- package/dist/core/viewport/features/loading.d.ts +34 -0
- package/dist/core/viewport/features/momentum.d.ts +17 -0
- package/dist/core/viewport/features/performance.d.ts +53 -0
- package/dist/core/viewport/features/placeholders.d.ts +38 -0
- package/dist/core/viewport/features/rendering.d.ts +16 -0
- package/dist/core/viewport/features/scrollbar.d.ts +26 -0
- package/dist/core/viewport/features/scrolling.d.ts +16 -0
- package/dist/core/viewport/features/utils.d.ts +43 -0
- package/dist/core/viewport/features/virtual.d.ts +18 -0
- package/{src/core/viewport/index.ts → dist/core/viewport/index.d.ts} +1 -17
- package/dist/core/viewport/types.d.ts +96 -0
- package/dist/core/viewport/utils/speed-tracker.d.ts +22 -0
- package/dist/core/viewport/viewport.d.ts +11 -0
- package/{src/index.ts → dist/index.d.ts} +0 -4
- package/dist/index.js +5143 -0
- package/dist/index.mjs +5111 -0
- package/dist/styles.css +254 -0
- package/dist/styles.css.map +1 -0
- package/package.json +16 -2
- package/.cursorrules +0 -117
- package/AI.md +0 -39
- package/CLAUDE.md +0 -882
- package/build.js +0 -377
- package/index.ts +0 -7
- package/scripts/analyze-orphaned-functions.ts +0 -387
- package/scripts/debug/vlist-selection.ts +0 -121
- package/src/components/vlist/config.ts +0 -323
- package/src/components/vlist/features/api.ts +0 -626
- package/src/components/vlist/features/selection.ts +0 -436
- package/src/components/vlist/features/viewport.ts +0 -59
- package/src/components/vlist/features.ts +0 -112
- package/src/components/vlist/types.ts +0 -723
- package/src/components/vlist/vlist.ts +0 -92
- package/src/core/compose/features/gestures/index.ts +0 -227
- package/src/core/compose/features/gestures/longpress.ts +0 -383
- package/src/core/compose/features/gestures/pan.ts +0 -424
- package/src/core/compose/features/gestures/pinch.ts +0 -475
- package/src/core/compose/features/gestures/rotate.ts +0 -485
- package/src/core/compose/features/gestures/swipe.ts +0 -492
- package/src/core/compose/features/gestures/tap.ts +0 -334
- package/src/core/gestures/longpress.ts +0 -68
- package/src/core/gestures/manager.ts +0 -418
- package/src/core/gestures/pan.ts +0 -48
- package/src/core/gestures/pinch.ts +0 -58
- package/src/core/gestures/rotate.ts +0 -58
- package/src/core/gestures/swipe.ts +0 -66
- package/src/core/gestures/tap.ts +0 -45
- package/src/core/gestures/types.ts +0 -387
- package/src/core/gestures/utils.ts +0 -128
- package/src/core/index.ts +0 -43
- package/src/core/layout/config.ts +0 -102
- package/src/core/layout/index.ts +0 -168
- package/src/core/layout/jsx.ts +0 -174
- package/src/core/layout/schema.ts +0 -1044
- package/src/core/layout/types.ts +0 -95
- package/src/core/viewport/constants.ts +0 -145
- package/src/core/viewport/features/base.ts +0 -73
- package/src/core/viewport/features/collection.ts +0 -1182
- package/src/core/viewport/features/events.ts +0 -130
- package/src/core/viewport/features/item-size.ts +0 -271
- package/src/core/viewport/features/loading.ts +0 -263
- package/src/core/viewport/features/momentum.ts +0 -269
- package/src/core/viewport/features/performance.ts +0 -161
- package/src/core/viewport/features/placeholders.ts +0 -335
- package/src/core/viewport/features/rendering.ts +0 -962
- package/src/core/viewport/features/scrollbar.ts +0 -434
- package/src/core/viewport/features/scrolling.ts +0 -634
- package/src/core/viewport/features/utils.ts +0 -94
- package/src/core/viewport/features/virtual.ts +0 -525
- package/src/core/viewport/types.ts +0 -133
- package/src/core/viewport/utils/speed-tracker.ts +0 -79
- package/src/core/viewport/viewport.ts +0 -265
- package/test/benchmarks/layout/advanced.test.ts +0 -656
- package/test/benchmarks/layout/comparison.test.ts +0 -519
- package/test/benchmarks/layout/performance-comparison.test.ts +0 -274
- package/test/benchmarks/layout/real-components.test.ts +0 -733
- package/test/benchmarks/layout/simple.test.ts +0 -321
- package/test/benchmarks/layout/stress.test.ts +0 -990
- package/test/collection/basic.test.ts +0 -304
- package/test/components/vlist-selection.test.ts +0 -240
- package/test/components/vlist.test.ts +0 -63
- package/test/core/collection/adapter.test.ts +0 -161
- package/test/core/collection/collection.test.ts +0 -394
- package/test/core/layout/layout.test.ts +0 -201
- package/test/utils/dom-helpers.ts +0 -275
- package/test/utils/performance-helpers.ts +0 -392
- package/tsconfig.json +0 -20
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
// src/core/viewport/index.ts
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* Viewport Module - High-Performance Virtual Scrolling
|
|
5
3
|
* A composable, feature-based virtual scrolling solution
|
|
6
4
|
*/
|
|
7
|
-
|
|
8
|
-
// Main viewport creator
|
|
9
5
|
export * from "./viewport";
|
|
10
|
-
|
|
11
|
-
// Feature enhancers (for custom composition)
|
|
12
6
|
export { withBase } from "./features/base";
|
|
13
7
|
export { withVirtual } from "./features/virtual";
|
|
14
8
|
export { withScrolling } from "./features/scrolling";
|
|
@@ -17,15 +11,5 @@ export { withRendering } from "./features/rendering";
|
|
|
17
11
|
export { withCollection } from "./features/collection";
|
|
18
12
|
export { withPlaceholders } from "./features/placeholders";
|
|
19
13
|
export { withEvents } from "./features/events";
|
|
20
|
-
|
|
21
|
-
// Types
|
|
22
|
-
export type {
|
|
23
|
-
ViewportConfig,
|
|
24
|
-
ViewportComponent,
|
|
25
|
-
ViewportContext,
|
|
26
|
-
ItemRange,
|
|
27
|
-
ViewportInfo,
|
|
28
|
-
} from "./types";
|
|
29
|
-
|
|
30
|
-
// Constants
|
|
14
|
+
export type { ViewportConfig, ViewportComponent, ViewportContext, ItemRange, ViewportInfo, } from "./types";
|
|
31
15
|
export { VIEWPORT_CONSTANTS } from "./constants";
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core type definitions for Viewport
|
|
3
|
+
* Virtual scrolling and rendering types
|
|
4
|
+
*/
|
|
5
|
+
import type { CollectionComponent } from "./features/collection";
|
|
6
|
+
/**
|
|
7
|
+
* Core Range and Item Types
|
|
8
|
+
*/
|
|
9
|
+
export interface ItemRange {
|
|
10
|
+
start: number;
|
|
11
|
+
end: number;
|
|
12
|
+
}
|
|
13
|
+
export interface ViewportInfo {
|
|
14
|
+
containerSize: number;
|
|
15
|
+
totalVirtualSize: number;
|
|
16
|
+
visibleRange: ItemRange;
|
|
17
|
+
virtualScrollPosition: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Viewport context interface - provides context for viewport features
|
|
21
|
+
*/
|
|
22
|
+
export interface ViewportContext {
|
|
23
|
+
element: HTMLElement;
|
|
24
|
+
items: any[];
|
|
25
|
+
totalItems: number;
|
|
26
|
+
template?: (item: any, index: number) => string | HTMLElement;
|
|
27
|
+
emit?: (event: string, data?: any) => void;
|
|
28
|
+
on?: (event: string, handler: Function) => () => void;
|
|
29
|
+
once?: (event: string, handler: Function) => () => void;
|
|
30
|
+
off?: (event: string, handler: Function) => void;
|
|
31
|
+
getClass?: (name: string) => string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Viewport configuration - Feature-oriented structure
|
|
35
|
+
*/
|
|
36
|
+
export interface ViewportConfig {
|
|
37
|
+
element?: HTMLElement;
|
|
38
|
+
className?: string;
|
|
39
|
+
debug?: boolean;
|
|
40
|
+
template?: (item: any, index: number) => string | HTMLElement | any[] | Record<string, any>;
|
|
41
|
+
collection?: {
|
|
42
|
+
adapter?: any;
|
|
43
|
+
transform?: (item: any) => any;
|
|
44
|
+
};
|
|
45
|
+
pagination?: {
|
|
46
|
+
strategy?: "page" | "offset" | "cursor";
|
|
47
|
+
limit?: number;
|
|
48
|
+
};
|
|
49
|
+
virtual?: {
|
|
50
|
+
itemSize?: number;
|
|
51
|
+
overscan?: number;
|
|
52
|
+
autoDetectItemSize?: boolean;
|
|
53
|
+
};
|
|
54
|
+
scrolling?: {
|
|
55
|
+
orientation?: "vertical" | "horizontal";
|
|
56
|
+
animation?: boolean;
|
|
57
|
+
sensitivity?: number;
|
|
58
|
+
};
|
|
59
|
+
scrollbar?: {
|
|
60
|
+
enabled?: boolean;
|
|
61
|
+
autoHide?: boolean;
|
|
62
|
+
};
|
|
63
|
+
performance?: {
|
|
64
|
+
maxConcurrentRequests?: number;
|
|
65
|
+
cancelLoadThreshold?: number;
|
|
66
|
+
enableRequestQueue?: boolean;
|
|
67
|
+
recycleElements?: boolean;
|
|
68
|
+
bufferSize?: number;
|
|
69
|
+
renderDebounce?: number;
|
|
70
|
+
};
|
|
71
|
+
placeholders?: {
|
|
72
|
+
enabled?: boolean;
|
|
73
|
+
template?: (index: number) => string | HTMLElement;
|
|
74
|
+
maskCharacter?: string;
|
|
75
|
+
analyzeFirstLoad?: boolean;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Enhanced component after viewport is applied
|
|
80
|
+
*/
|
|
81
|
+
export interface ViewportComponent extends ViewportContext {
|
|
82
|
+
viewport: {
|
|
83
|
+
initialize(): boolean | void;
|
|
84
|
+
destroy(): void;
|
|
85
|
+
updateViewport(): void;
|
|
86
|
+
scrollToIndex(index: number, alignment?: "start" | "center" | "end"): void;
|
|
87
|
+
scrollToPosition(position: number): void;
|
|
88
|
+
getScrollPosition(): number;
|
|
89
|
+
scrollBy(delta: number): void;
|
|
90
|
+
getVelocity(): number;
|
|
91
|
+
collection?: CollectionComponent["collection"];
|
|
92
|
+
getVisibleRange(): ItemRange;
|
|
93
|
+
getViewportInfo(): ViewportInfo;
|
|
94
|
+
renderItems(): void;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface SpeedTracker {
|
|
2
|
+
velocity: number;
|
|
3
|
+
direction: "forward" | "backward";
|
|
4
|
+
isAccelerating: boolean;
|
|
5
|
+
lastMeasurement: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Create a new speed tracker instance
|
|
9
|
+
*/
|
|
10
|
+
export declare function createSpeedTracker(): SpeedTracker;
|
|
11
|
+
/**
|
|
12
|
+
* Update speed tracker with new scroll position
|
|
13
|
+
*/
|
|
14
|
+
export declare function updateSpeedTracker(tracker: SpeedTracker, newPosition: number, previousPosition: number): SpeedTracker;
|
|
15
|
+
/**
|
|
16
|
+
* Determine if scroll speed is fast (should defer loading)
|
|
17
|
+
*/
|
|
18
|
+
export declare function isFastScrolling(tracker: SpeedTracker): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Get loading strategy based on current speed
|
|
21
|
+
*/
|
|
22
|
+
export declare function getLoadingStrategy(tracker: SpeedTracker): "defer" | "immediate";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Viewport - Core virtual scrolling engine
|
|
3
|
+
*/
|
|
4
|
+
import type { ViewportConfig, ViewportContext, ViewportComponent } from "./types";
|
|
5
|
+
/**
|
|
6
|
+
* Creates a viewport-enhanced component using composition
|
|
7
|
+
*
|
|
8
|
+
* @param config - Viewport configuration
|
|
9
|
+
* @returns Function that enhances a component with viewport capabilities
|
|
10
|
+
*/
|
|
11
|
+
export declare const createViewport: (config?: ViewportConfig) => <T extends ViewportContext>(component: T) => T & ViewportComponent;
|