lazy-render-virtual-scroll 2.1.0 → 2.1.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.
Files changed (87) hide show
  1. package/README.md +76 -427
  2. package/dist/cjs/adapters/react/core/ChatEngine.d.ts +151 -0
  3. package/dist/cjs/adapters/react/core/ChatEngine.d.ts.map +1 -0
  4. package/dist/cjs/adapters/react/core/RealTimeEngine.d.ts +172 -0
  5. package/dist/cjs/adapters/react/core/RealTimeEngine.d.ts.map +1 -0
  6. package/dist/cjs/adapters/react/core/ReelsEngine.d.ts +185 -0
  7. package/dist/cjs/adapters/react/core/ReelsEngine.d.ts.map +1 -0
  8. package/dist/cjs/adapters/react/index.d.ts +6 -0
  9. package/dist/cjs/adapters/react/index.d.ts.map +1 -1
  10. package/dist/cjs/angular/core/ChatEngine.d.ts +151 -0
  11. package/dist/cjs/angular/core/ChatEngine.d.ts.map +1 -0
  12. package/dist/cjs/angular/core/RealTimeEngine.d.ts +172 -0
  13. package/dist/cjs/angular/core/RealTimeEngine.d.ts.map +1 -0
  14. package/dist/cjs/angular/core/ReelsEngine.d.ts +185 -0
  15. package/dist/cjs/angular/core/ReelsEngine.d.ts.map +1 -0
  16. package/dist/cjs/angular/index.d.ts +6 -0
  17. package/dist/cjs/angular/index.d.ts.map +1 -1
  18. package/dist/cjs/core/ChatEngine.d.ts +151 -0
  19. package/dist/cjs/core/ChatEngine.d.ts.map +1 -0
  20. package/dist/cjs/core/RealTimeEngine.d.ts +172 -0
  21. package/dist/cjs/core/RealTimeEngine.d.ts.map +1 -0
  22. package/dist/cjs/core/ReelsEngine.d.ts +185 -0
  23. package/dist/cjs/core/ReelsEngine.d.ts.map +1 -0
  24. package/dist/cjs/index.d.ts +6 -0
  25. package/dist/cjs/index.d.ts.map +1 -1
  26. package/dist/cjs/index.js +1349 -0
  27. package/dist/cjs/index.js.map +1 -1
  28. package/dist/cjs/svelte/core/ChatEngine.d.ts +151 -0
  29. package/dist/cjs/svelte/core/ChatEngine.d.ts.map +1 -0
  30. package/dist/cjs/svelte/core/RealTimeEngine.d.ts +172 -0
  31. package/dist/cjs/svelte/core/RealTimeEngine.d.ts.map +1 -0
  32. package/dist/cjs/svelte/core/ReelsEngine.d.ts +185 -0
  33. package/dist/cjs/svelte/core/ReelsEngine.d.ts.map +1 -0
  34. package/dist/cjs/svelte/index.d.ts +6 -0
  35. package/dist/cjs/svelte/index.d.ts.map +1 -1
  36. package/dist/cjs/vue/core/ChatEngine.d.ts +151 -0
  37. package/dist/cjs/vue/core/ChatEngine.d.ts.map +1 -0
  38. package/dist/cjs/vue/core/RealTimeEngine.d.ts +172 -0
  39. package/dist/cjs/vue/core/RealTimeEngine.d.ts.map +1 -0
  40. package/dist/cjs/vue/core/ReelsEngine.d.ts +185 -0
  41. package/dist/cjs/vue/core/ReelsEngine.d.ts.map +1 -0
  42. package/dist/cjs/vue/index.d.ts +6 -0
  43. package/dist/cjs/vue/index.d.ts.map +1 -1
  44. package/dist/esm/adapters/react/core/ChatEngine.d.ts +151 -0
  45. package/dist/esm/adapters/react/core/ChatEngine.d.ts.map +1 -0
  46. package/dist/esm/adapters/react/core/RealTimeEngine.d.ts +172 -0
  47. package/dist/esm/adapters/react/core/RealTimeEngine.d.ts.map +1 -0
  48. package/dist/esm/adapters/react/core/ReelsEngine.d.ts +185 -0
  49. package/dist/esm/adapters/react/core/ReelsEngine.d.ts.map +1 -0
  50. package/dist/esm/adapters/react/index.d.ts +6 -0
  51. package/dist/esm/adapters/react/index.d.ts.map +1 -1
  52. package/dist/esm/angular/core/ChatEngine.d.ts +151 -0
  53. package/dist/esm/angular/core/ChatEngine.d.ts.map +1 -0
  54. package/dist/esm/angular/core/RealTimeEngine.d.ts +172 -0
  55. package/dist/esm/angular/core/RealTimeEngine.d.ts.map +1 -0
  56. package/dist/esm/angular/core/ReelsEngine.d.ts +185 -0
  57. package/dist/esm/angular/core/ReelsEngine.d.ts.map +1 -0
  58. package/dist/esm/angular/index.d.ts +6 -0
  59. package/dist/esm/angular/index.d.ts.map +1 -1
  60. package/dist/esm/core/ChatEngine.d.ts +151 -0
  61. package/dist/esm/core/ChatEngine.d.ts.map +1 -0
  62. package/dist/esm/core/RealTimeEngine.d.ts +172 -0
  63. package/dist/esm/core/RealTimeEngine.d.ts.map +1 -0
  64. package/dist/esm/core/ReelsEngine.d.ts +185 -0
  65. package/dist/esm/core/ReelsEngine.d.ts.map +1 -0
  66. package/dist/esm/index.d.ts +6 -0
  67. package/dist/esm/index.d.ts.map +1 -1
  68. package/dist/esm/index.js +1347 -1
  69. package/dist/esm/index.js.map +1 -1
  70. package/dist/esm/svelte/core/ChatEngine.d.ts +151 -0
  71. package/dist/esm/svelte/core/ChatEngine.d.ts.map +1 -0
  72. package/dist/esm/svelte/core/RealTimeEngine.d.ts +172 -0
  73. package/dist/esm/svelte/core/RealTimeEngine.d.ts.map +1 -0
  74. package/dist/esm/svelte/core/ReelsEngine.d.ts +185 -0
  75. package/dist/esm/svelte/core/ReelsEngine.d.ts.map +1 -0
  76. package/dist/esm/svelte/index.d.ts +6 -0
  77. package/dist/esm/svelte/index.d.ts.map +1 -1
  78. package/dist/esm/vue/core/ChatEngine.d.ts +151 -0
  79. package/dist/esm/vue/core/ChatEngine.d.ts.map +1 -0
  80. package/dist/esm/vue/core/RealTimeEngine.d.ts +172 -0
  81. package/dist/esm/vue/core/RealTimeEngine.d.ts.map +1 -0
  82. package/dist/esm/vue/core/ReelsEngine.d.ts +185 -0
  83. package/dist/esm/vue/core/ReelsEngine.d.ts.map +1 -0
  84. package/dist/esm/vue/index.d.ts +6 -0
  85. package/dist/esm/vue/index.d.ts.map +1 -1
  86. package/dist/index.d.ts +510 -2
  87. package/package.json +4 -3
@@ -0,0 +1,151 @@
1
+ /**
2
+ * AI Chat Engine - ChatGPT-style infinite chat panel
3
+ *
4
+ * Features:
5
+ * - Bi-directional infinite scrolling (up for history, down for new messages)
6
+ * - Message streaming (chunk-by-chunk rendering)
7
+ * - Auto-scroll to bottom on new messages
8
+ * - Variable message heights (code blocks, images, etc.)
9
+ * - Real-time updates via WebSocket
10
+ * - Message grouping/bundling
11
+ * - Typing indicators
12
+ * - Message status (sending, sent, delivered, read)
13
+ */
14
+ import type { EngineConfig, VisibleRange } from './types';
15
+ export interface ChatMessage {
16
+ id: string;
17
+ role: 'user' | 'assistant' | 'system';
18
+ content: string;
19
+ timestamp: number;
20
+ status?: 'sending' | 'sent' | 'delivered' | 'read' | 'error';
21
+ metadata?: {
22
+ codeBlocks?: number;
23
+ imageCount?: number;
24
+ estimatedReadTime?: number;
25
+ };
26
+ }
27
+ export interface ChatEngineConfig extends EngineConfig {
28
+ /** Auto-scroll to bottom when new messages arrive */
29
+ autoScrollToBottom?: boolean;
30
+ /** Enable message streaming */
31
+ enableStreaming?: boolean;
32
+ /** Stream chunk size in characters */
33
+ streamChunkSize?: number;
34
+ /** Stream delay in ms */
35
+ streamDelay?: number;
36
+ /** Load more messages threshold */
37
+ loadMoreThreshold?: number;
38
+ /** Enable typing indicators */
39
+ enableTypingIndicators?: boolean;
40
+ /** Enable message grouping */
41
+ enableGrouping?: boolean;
42
+ /** Grouping time threshold (ms) */
43
+ groupTimeThreshold?: number;
44
+ }
45
+ export interface ChatEngineState {
46
+ messages: ChatMessage[];
47
+ visibleRange: VisibleRange;
48
+ isLoadingHistory: boolean;
49
+ isStreaming: boolean;
50
+ hasMoreHistory: boolean;
51
+ typingIndicator: boolean;
52
+ scrollPosition: 'top' | 'middle' | 'bottom';
53
+ unreadCount: number;
54
+ }
55
+ export declare class ChatEngine {
56
+ private config;
57
+ private baseEngine;
58
+ private state;
59
+ private messageElements;
60
+ private streamBuffer;
61
+ private streamTimeout;
62
+ private autoScrollEnabled;
63
+ private userScrolling;
64
+ private lastScrollTop;
65
+ constructor(config: ChatEngineConfig);
66
+ /**
67
+ * Setup intelligent scroll detection
68
+ */
69
+ private setupScrollDetection;
70
+ /**
71
+ * Get container element
72
+ */
73
+ private getContainer;
74
+ /**
75
+ * Check if scrolled to bottom
76
+ */
77
+ private isAtBottom;
78
+ /**
79
+ * Update scroll position and state
80
+ */
81
+ private updateScrollPosition;
82
+ /**
83
+ * Add a new message
84
+ */
85
+ addMessage(message: ChatMessage, fromStream?: boolean): void;
86
+ /**
87
+ * Stream message content (ChatGPT-style)
88
+ */
89
+ streamMessage(messageId: string, content: string): void;
90
+ /**
91
+ * Load more history (scroll up)
92
+ */
93
+ loadMoreHistory(): Promise<void>;
94
+ /**
95
+ * Scroll to bottom
96
+ */
97
+ scrollToBottom(smooth?: boolean): void;
98
+ /**
99
+ * Scroll to specific message
100
+ */
101
+ scrollToMessage(messageId: string, position?: 'center' | 'start' | 'end'): void;
102
+ /**
103
+ * Update typing indicator
104
+ */
105
+ setTypingIndicator(show: boolean): void;
106
+ /**
107
+ * Update message status
108
+ */
109
+ updateMessageStatus(messageId: string, status: ChatMessage['status']): void;
110
+ /**
111
+ * Group messages by time
112
+ */
113
+ getGroupedMessages(): ChatMessage[][];
114
+ /**
115
+ * Get visible messages
116
+ */
117
+ getVisibleMessages(): ChatMessage[];
118
+ /**
119
+ * Update visible range
120
+ */
121
+ private updateVisibleRange;
122
+ /**
123
+ * Update message element
124
+ */
125
+ private updateMessageElement;
126
+ /**
127
+ * Render typing indicator
128
+ */
129
+ private renderTypingIndicator;
130
+ /**
131
+ * Render message HTML
132
+ */
133
+ private renderMessage;
134
+ /**
135
+ * Render typing animation
136
+ */
137
+ private renderTypingAnimation;
138
+ /**
139
+ * Escape HTML
140
+ */
141
+ private escapeHtml;
142
+ /**
143
+ * Get engine state
144
+ */
145
+ getState(): ChatEngineState;
146
+ /**
147
+ * Destroy engine
148
+ */
149
+ destroy(): void;
150
+ }
151
+ //# sourceMappingURL=ChatEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatEngine.d.ts","sourceRoot":"","sources":["../../src/core/ChatEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Real-Time Data Engine - WebSocket integration for live data updates
3
+ *
4
+ * Features:
5
+ * - WebSocket connection management
6
+ * - Optimistic updates
7
+ * - Conflict resolution (last-write-wins, operational transformation)
8
+ * - Change detection and auto-revalidation
9
+ * - Offline support with queue
10
+ * - Subscription-based updates
11
+ * - Batch updates
12
+ */
13
+ import type { EngineConfig } from './types';
14
+ export interface RealTimeItem {
15
+ id: string;
16
+ data: any;
17
+ version: number;
18
+ timestamp: number;
19
+ _optimistic?: boolean;
20
+ _pending?: boolean;
21
+ }
22
+ export interface RealTimeConfig extends EngineConfig {
23
+ /** WebSocket URL */
24
+ wsUrl?: string;
25
+ /** Enable optimistic updates */
26
+ enableOptimistic?: boolean;
27
+ /** Conflict resolution strategy */
28
+ conflictStrategy?: 'last-write-wins' | 'operational-transform' | 'manual';
29
+ /** Auto-revalidate interval (ms) */
30
+ revalidateInterval?: number;
31
+ /** Enable offline queue */
32
+ enableOfflineQueue?: boolean;
33
+ /** Max offline queue size */
34
+ maxOfflineQueueSize?: number;
35
+ /** Reconnect delay (ms) */
36
+ reconnectDelay?: number;
37
+ /** Max reconnect attempts */
38
+ maxReconnectAttempts?: number;
39
+ }
40
+ export interface RealTimeState {
41
+ items: RealTimeItem[];
42
+ connected: boolean;
43
+ connecting: boolean;
44
+ error: string | null;
45
+ lastSyncTime: number | null;
46
+ pendingUpdates: number;
47
+ offline: boolean;
48
+ }
49
+ export interface UpdateOperation {
50
+ type: 'insert' | 'update' | 'delete';
51
+ itemId: string;
52
+ data?: any;
53
+ version: number;
54
+ timestamp: number;
55
+ }
56
+ export declare class RealTimeEngine {
57
+ private config;
58
+ private state;
59
+ private ws;
60
+ private reconnectAttempts;
61
+ private reconnectTimeout;
62
+ private offlineQueue;
63
+ private subscriptions;
64
+ private pendingOptimistic;
65
+ private revalidateInterval;
66
+ constructor(config: RealTimeConfig);
67
+ /**
68
+ * Connect to WebSocket
69
+ */
70
+ connect(): void;
71
+ /**
72
+ * Disconnect from WebSocket
73
+ */
74
+ disconnect(): void;
75
+ /**
76
+ * Handle incoming WebSocket message
77
+ */
78
+ private handleMessage;
79
+ /**
80
+ * Apply remote update
81
+ */
82
+ private applyRemoteUpdate;
83
+ /**
84
+ * Insert item
85
+ */
86
+ private insertItem;
87
+ /**
88
+ * Update item
89
+ */
90
+ private updateItem;
91
+ /**
92
+ * Delete item
93
+ */
94
+ private deleteItem;
95
+ /**
96
+ * Optimistic update (apply immediately, sync later)
97
+ */
98
+ optimisticUpdate(id: string, data: any): void;
99
+ /**
100
+ * Send update to server
101
+ */
102
+ private sendUpdate;
103
+ /**
104
+ * Queue offline update
105
+ */
106
+ private queueOfflineUpdate;
107
+ /**
108
+ * Sync offline queue
109
+ */
110
+ private syncOfflineQueue;
111
+ /**
112
+ * Resolve conflict
113
+ */
114
+ private resolveConflict;
115
+ /**
116
+ * Full sync with server
117
+ */
118
+ private fullSync;
119
+ /**
120
+ * Setup online/offline detection
121
+ */
122
+ private setupOnlineOfflineDetection;
123
+ /**
124
+ * Attempt reconnect
125
+ */
126
+ private attemptReconnect;
127
+ /**
128
+ * Start revalidation
129
+ */
130
+ private startRevalidation;
131
+ /**
132
+ * Stop revalidation
133
+ */
134
+ private stopRevalidation;
135
+ /**
136
+ * Request full sync
137
+ */
138
+ private requestFullSync;
139
+ /**
140
+ * Subscribe to item updates
141
+ */
142
+ subscribe(itemId: string, callback: (item: RealTimeItem) => void): () => void;
143
+ /**
144
+ * Notify subscribers
145
+ */
146
+ private notifySubscribers;
147
+ /**
148
+ * Emit connection change
149
+ */
150
+ private emitConnectionChange;
151
+ /**
152
+ * Emit conflict
153
+ */
154
+ private emitConflict;
155
+ /**
156
+ * Get item by ID
157
+ */
158
+ getItem(id: string): RealTimeItem | null;
159
+ /**
160
+ * Get all items
161
+ */
162
+ getItems(): RealTimeItem[];
163
+ /**
164
+ * Get engine state
165
+ */
166
+ getState(): RealTimeState;
167
+ /**
168
+ * Destroy engine
169
+ */
170
+ destroy(): void;
171
+ }
172
+ //# sourceMappingURL=RealTimeEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RealTimeEngine.d.ts","sourceRoot":"","sources":["../../src/core/RealTimeEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Reels Engine - Instagram Reels / YouTube Shorts style vertical scrolling
3
+ *
4
+ * Features:
5
+ * - Full-screen snap scrolling (one item per viewport)
6
+ * - Touch gesture support with momentum
7
+ * - Video/image preloading
8
+ * - Snap to nearest item
9
+ * - Orientation detection
10
+ * - Swipe navigation
11
+ * - Auto-play on visible
12
+ * - Pause on hidden
13
+ */
14
+ import type { EngineConfig } from './types';
15
+ export interface ReelItem {
16
+ id: string;
17
+ type: 'video' | 'image' | 'mixed';
18
+ src: string;
19
+ thumbnail?: string;
20
+ duration?: number;
21
+ metadata?: {
22
+ title?: string;
23
+ author?: string;
24
+ likes?: number;
25
+ comments?: number;
26
+ shares?: number;
27
+ };
28
+ }
29
+ export interface ReelsEngineConfig extends EngineConfig {
30
+ /** Enable snap scrolling */
31
+ enableSnap?: boolean;
32
+ /** Snap threshold (0-1) */
33
+ snapThreshold?: number;
34
+ /** Enable touch gestures */
35
+ enableTouch?: boolean;
36
+ /** Touch sensitivity */
37
+ touchSensitivity?: number;
38
+ /** Momentum scrolling */
39
+ enableMomentum?: boolean;
40
+ /** Momentum decay rate */
41
+ momentumDecay?: number;
42
+ /** Preload adjacent items */
43
+ preloadCount?: number;
44
+ /** Auto-play videos when visible */
45
+ autoPlay?: boolean;
46
+ /** Mute videos by default */
47
+ muteVideos?: boolean;
48
+ /** Loop videos */
49
+ loopVideos?: boolean;
50
+ /** Enable orientation detection */
51
+ enableOrientationDetection?: boolean;
52
+ }
53
+ export interface ReelsEngineState {
54
+ currentIndex: number;
55
+ items: ReelItem[];
56
+ isScrolling: boolean;
57
+ scrollDirection: 'up' | 'down' | 'none';
58
+ touchStartY: number;
59
+ touchCurrentY: number;
60
+ velocity: number;
61
+ orientation: 'portrait' | 'landscape';
62
+ visibleIndex: number;
63
+ preloadQueue: string[];
64
+ }
65
+ export declare class ReelsEngine {
66
+ private config;
67
+ private state;
68
+ private container;
69
+ private itemElements;
70
+ private videoElements;
71
+ private animationFrame;
72
+ private touchStartTime;
73
+ private lastTouchY;
74
+ private touchVelocities;
75
+ constructor(config: ReelsEngineConfig);
76
+ /**
77
+ * Initialize with container
78
+ */
79
+ init(container: HTMLElement): void;
80
+ /**
81
+ * Set reel items
82
+ */
83
+ setItems(items: ReelItem[]): void;
84
+ /**
85
+ * Setup touch event handlers
86
+ */
87
+ private setupTouchHandlers;
88
+ /**
89
+ * Handle touch start
90
+ */
91
+ private handleTouchStart;
92
+ /**
93
+ * Handle touch move
94
+ */
95
+ private handleTouchMove;
96
+ /**
97
+ * Handle touch end with momentum
98
+ */
99
+ private handleTouchEnd;
100
+ /**
101
+ * Handle mouse wheel
102
+ */
103
+ private handleWheel;
104
+ /**
105
+ * Apply momentum scrolling
106
+ */
107
+ private applyMomentum;
108
+ /**
109
+ * Snap to nearest item
110
+ */
111
+ private snapToNearest;
112
+ /**
113
+ * Go to next reel
114
+ */
115
+ goToNext(): void;
116
+ /**
117
+ * Go to previous reel
118
+ */
119
+ goToPrevious(): void;
120
+ /**
121
+ * Scroll to specific index
122
+ */
123
+ scrollToIndex(index: number): void;
124
+ /**
125
+ * Update visible index
126
+ */
127
+ private updateVisibleIndex;
128
+ /**
129
+ * Setup orientation detection
130
+ */
131
+ private setupOrientationDetection;
132
+ /**
133
+ * Adjust layout for orientation
134
+ */
135
+ private adjustLayoutForOrientation;
136
+ /**
137
+ * Update preload queue
138
+ */
139
+ private updatePreloadQueue;
140
+ /**
141
+ * Preload items (videos/images)
142
+ */
143
+ private preloadItems;
144
+ /**
145
+ * Play video at index
146
+ */
147
+ private playVideo;
148
+ /**
149
+ * Pause video at index
150
+ */
151
+ private pauseVideo;
152
+ /**
153
+ * Render reels
154
+ */
155
+ private render;
156
+ /**
157
+ * Create reel element
158
+ */
159
+ private createReelElement;
160
+ /**
161
+ * Create metadata overlay
162
+ */
163
+ private createMetadataOverlay;
164
+ /**
165
+ * Start animation loop
166
+ */
167
+ private startAnimationLoop;
168
+ /**
169
+ * Update visible index from scroll position
170
+ */
171
+ private updateVisibleIndexFromScroll;
172
+ /**
173
+ * Get current reel
174
+ */
175
+ getCurrentReel(): ReelItem | null;
176
+ /**
177
+ * Get engine state
178
+ */
179
+ getState(): ReelsEngineState;
180
+ /**
181
+ * Destroy engine
182
+ */
183
+ destroy(): void;
184
+ }
185
+ //# sourceMappingURL=ReelsEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReelsEngine.d.ts","sourceRoot":"","sources":["../../src/core/ReelsEngine.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,12 @@ export { PerformanceDashboard } from './core/PerformanceDashboard';
26
26
  export { AccessibilityManager } from './core/AccessibilityManager';
27
27
  export { AnimationManager } from './core/AnimationManager';
28
28
  export { GlobalScrollManager } from './core/GlobalScrollManager';
29
+ export { ChatEngine } from './core/ChatEngine';
30
+ export type { ChatEngineConfig, ChatEngineState, ChatMessage } from './core/ChatEngine';
31
+ export { ReelsEngine } from './core/ReelsEngine';
32
+ export type { ReelsEngineConfig, ReelsEngineState, ReelItem } from './core/ReelsEngine';
33
+ export { RealTimeEngine } from './core/RealTimeEngine';
34
+ export type { RealTimeConfig, RealTimeState, RealTimeItem, UpdateOperation } from './core/RealTimeEngine';
29
35
  export type { EngineConfig, VisibleRange, FetchMoreCallback, EngineState, ScrollAnalysis } from './core/types';
30
36
  export { ScrollObserver } from './platform/browser/ScrollObserver';
31
37
  export { useLazyList } from './adapters/react/useLazyList';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG/G,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,YAAY,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAGxE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAK7E,cAAM,sBAAsB;;IAE1B,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACrB,OAAO;IACP,eAAe;;;;IACf,MAAM,CAAC,eAAe;CACvB;AAGD,QAAA,MAAM,iBAAiB,+BAEG,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAG7B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}