mtrl-addons 0.2.1 → 0.2.3
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 -9
- 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 +6 -1
- package/src/styles/components/_vlist.scss +234 -213
- package/.cursorrules +0 -117
- package/AI.md +0 -241
- package/build.js +0 -201
- 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 -322
- package/src/components/vlist/features/selection.ts +0 -444
- package/src/components/vlist/features/viewport.ts +0 -65
- package/src/components/vlist/features.ts +0 -112
- package/src/components/vlist/types.ts +0 -591
- 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 -1001
- package/src/core/layout/types.ts +0 -95
- package/src/core/viewport/constants.ts +0 -140
- package/src/core/viewport/features/base.ts +0 -73
- package/src/core/viewport/features/collection.ts +0 -882
- 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 -260
- 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 -568
- package/src/core/viewport/features/scrollbar.ts +0 -434
- package/src/core/viewport/features/scrolling.ts +0 -618
- package/src/core/viewport/features/utils.ts +0 -88
- package/src/core/viewport/features/virtual.ts +0 -384
- 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 -246
- 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,387 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
import * as fs from "fs";
|
|
4
|
-
import * as path from "path";
|
|
5
|
-
|
|
6
|
-
// List of orphaned functions from the previous analysis
|
|
7
|
-
const orphanedFunctions = [
|
|
8
|
-
{
|
|
9
|
-
name: "hasOverlappingPendingRange",
|
|
10
|
-
file: "features/collection/collection.ts",
|
|
11
|
-
line: 198,
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
name: "getCursorForOffset",
|
|
15
|
-
file: "features/collection/collection.ts",
|
|
16
|
-
line: 603,
|
|
17
|
-
},
|
|
18
|
-
{ name: "getElements", file: "features/viewport/scrollbar.ts", line: 57 },
|
|
19
|
-
{
|
|
20
|
-
name: "updateScrollbarDimensions",
|
|
21
|
-
file: "features/viewport/scrollbar.ts",
|
|
22
|
-
line: 104,
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: "updateScrollbarPosition",
|
|
26
|
-
file: "features/viewport/scrollbar.ts",
|
|
27
|
-
line: 127,
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
name: "getScrollRatioFromVirtualPosition",
|
|
31
|
-
file: "features/viewport/scrollbar.ts",
|
|
32
|
-
line: 141,
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
name: "getVirtualPositionFromScrollRatio",
|
|
36
|
-
file: "features/viewport/scrollbar.ts",
|
|
37
|
-
line: 152,
|
|
38
|
-
},
|
|
39
|
-
{ name: "hideScrollbar", file: "features/viewport/scrollbar.ts", line: 179 },
|
|
40
|
-
{
|
|
41
|
-
name: "handleThumbMouseDown",
|
|
42
|
-
file: "features/viewport/scrollbar.ts",
|
|
43
|
-
line: 190,
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: "handleThumbDrag",
|
|
47
|
-
file: "features/viewport/scrollbar.ts",
|
|
48
|
-
line: 210,
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
name: "handleThumbMouseUp",
|
|
52
|
-
file: "features/viewport/scrollbar.ts",
|
|
53
|
-
line: 243,
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
name: "handleTrackClick",
|
|
57
|
-
file: "features/viewport/scrollbar.ts",
|
|
58
|
-
line: 319,
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
name: "generatePlaceholderItems",
|
|
62
|
-
file: "features/viewport/placeholders.ts",
|
|
63
|
-
line: 175,
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
name: "hasAnalyzedStructure",
|
|
67
|
-
file: "features/viewport/placeholders.ts",
|
|
68
|
-
line: 242,
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
name: "initializeTracking",
|
|
72
|
-
file: "features/viewport/scrolling.ts",
|
|
73
|
-
line: 186,
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
name: "startIdleDetection",
|
|
77
|
-
file: "features/viewport/scrolling.ts",
|
|
78
|
-
line: 194,
|
|
79
|
-
},
|
|
80
|
-
{ name: "checkIdle", file: "features/viewport/scrolling.ts", line: 195 },
|
|
81
|
-
{
|
|
82
|
-
name: "setVelocityToZero",
|
|
83
|
-
file: "features/viewport/scrolling.ts",
|
|
84
|
-
line: 219,
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
name: "updateVelocityTracking",
|
|
88
|
-
file: "features/viewport/scrolling.ts",
|
|
89
|
-
line: 255,
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
name: "calculateWindowedVelocity",
|
|
93
|
-
file: "features/viewport/scrolling.ts",
|
|
94
|
-
line: 340,
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
name: "setupScrollbarEvents",
|
|
98
|
-
file: "features/viewport/scrolling.ts",
|
|
99
|
-
line: 635,
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
name: "checkForMissingData",
|
|
103
|
-
file: "features/viewport/viewport.ts",
|
|
104
|
-
line: 155,
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
name: "setupCollectionEventListeners",
|
|
108
|
-
file: "features/viewport/viewport.ts",
|
|
109
|
-
line: 298,
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
name: "setupScrollbarPlugin",
|
|
113
|
-
file: "features/viewport/viewport.ts",
|
|
114
|
-
line: 437,
|
|
115
|
-
},
|
|
116
|
-
{ name: "setupContainer", file: "features/viewport/viewport.ts", line: 509 },
|
|
117
|
-
{
|
|
118
|
-
name: "setupResizeObserver",
|
|
119
|
-
file: "features/viewport/viewport.ts",
|
|
120
|
-
line: 557,
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
name: "measureContainer",
|
|
124
|
-
file: "features/viewport/viewport.ts",
|
|
125
|
-
line: 571,
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
name: "calculateIndexFromVirtualPosition",
|
|
129
|
-
file: "features/viewport/virtual.ts",
|
|
130
|
-
line: 241,
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
name: "getMaxScrollPosition",
|
|
134
|
-
file: "features/viewport/virtual.ts",
|
|
135
|
-
line: 263,
|
|
136
|
-
},
|
|
137
|
-
{ name: "getRangeKey", file: "features/viewport/loading.ts", line: 75 },
|
|
138
|
-
{ name: "canLoad", file: "features/viewport/loading.ts", line: 82 },
|
|
139
|
-
{ name: "processQueue", file: "features/viewport/loading.ts", line: 109 },
|
|
140
|
-
{ name: "executeLoad", file: "features/viewport/loading.ts", line: 181 },
|
|
141
|
-
{
|
|
142
|
-
name: "cancelPendingLoads",
|
|
143
|
-
file: "features/viewport/loading.ts",
|
|
144
|
-
line: 223,
|
|
145
|
-
},
|
|
146
|
-
{ name: "cacheItemSize", file: "features/viewport/item-size.ts", line: 69 },
|
|
147
|
-
{
|
|
148
|
-
name: "triggerBatchedUpdates",
|
|
149
|
-
file: "features/viewport/item-size.ts",
|
|
150
|
-
line: 83,
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
name: "scheduleBatchedUpdates",
|
|
154
|
-
file: "features/viewport/item-size.ts",
|
|
155
|
-
line: 101,
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
name: "updateEstimatedSize",
|
|
159
|
-
file: "features/viewport/item-size.ts",
|
|
160
|
-
line: 153,
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
name: "calculateTotalSize",
|
|
164
|
-
file: "features/viewport/item-size.ts",
|
|
165
|
-
line: 183,
|
|
166
|
-
},
|
|
167
|
-
{ name: "clearCache", file: "features/viewport/item-size.ts", line: 216 },
|
|
168
|
-
{
|
|
169
|
-
name: "getMeasuredSizes",
|
|
170
|
-
file: "features/viewport/item-size.ts",
|
|
171
|
-
line: 231,
|
|
172
|
-
},
|
|
173
|
-
];
|
|
174
|
-
|
|
175
|
-
const underusedExports = [
|
|
176
|
-
{
|
|
177
|
-
name: "getLoadingTemplate",
|
|
178
|
-
file: "features/viewport/template.ts",
|
|
179
|
-
line: 59,
|
|
180
|
-
},
|
|
181
|
-
{ name: "getEmptyTemplate", file: "features/viewport/template.ts", line: 72 },
|
|
182
|
-
{ name: "getErrorTemplate", file: "features/viewport/template.ts", line: 85 },
|
|
183
|
-
{
|
|
184
|
-
name: "convertRenderItemToTemplate",
|
|
185
|
-
file: "features/viewport/template.ts",
|
|
186
|
-
line: 99,
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
name: "substituteVariables",
|
|
190
|
-
file: "features/viewport/template.ts",
|
|
191
|
-
line: 177,
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
name: "calculateOptimalOverscan",
|
|
195
|
-
file: "utils/calculations.ts",
|
|
196
|
-
line: 144,
|
|
197
|
-
},
|
|
198
|
-
{ name: "validateContainer", file: "config.ts", line: 232 },
|
|
199
|
-
{ name: "validateListManagerConfig", file: "config.ts", line: 253 },
|
|
200
|
-
{ name: "getFeatureConfigs", file: "config.ts", line: 356 },
|
|
201
|
-
];
|
|
202
|
-
|
|
203
|
-
interface FunctionCategory {
|
|
204
|
-
category: string;
|
|
205
|
-
description: string;
|
|
206
|
-
functions: typeof orphanedFunctions;
|
|
207
|
-
recommendation: string;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
function categorizeOrphanedFunctions(): FunctionCategory[] {
|
|
211
|
-
const categories: FunctionCategory[] = [
|
|
212
|
-
{
|
|
213
|
-
category: "Scrollbar Internal Helpers",
|
|
214
|
-
description:
|
|
215
|
-
"Private scrollbar functions that might be part of internal implementation",
|
|
216
|
-
functions: orphanedFunctions.filter(
|
|
217
|
-
(f) =>
|
|
218
|
-
f.file.includes("scrollbar.ts") &&
|
|
219
|
-
[
|
|
220
|
-
"getElements",
|
|
221
|
-
"updateScrollbarDimensions",
|
|
222
|
-
"updateScrollbarPosition",
|
|
223
|
-
"getScrollRatioFromVirtualPosition",
|
|
224
|
-
"getVirtualPositionFromScrollRatio",
|
|
225
|
-
"hideScrollbar",
|
|
226
|
-
"handleThumbMouseDown",
|
|
227
|
-
"handleThumbDrag",
|
|
228
|
-
"handleThumbMouseUp",
|
|
229
|
-
"handleTrackClick",
|
|
230
|
-
].includes(f.name)
|
|
231
|
-
),
|
|
232
|
-
recommendation:
|
|
233
|
-
"Review if these are used via object methods or event handlers",
|
|
234
|
-
},
|
|
235
|
-
{
|
|
236
|
-
category: "Velocity Tracking Helpers",
|
|
237
|
-
description: "Functions related to scroll velocity tracking",
|
|
238
|
-
functions: orphanedFunctions.filter(
|
|
239
|
-
(f) =>
|
|
240
|
-
f.file.includes("scrolling.ts") &&
|
|
241
|
-
[
|
|
242
|
-
"initializeTracking",
|
|
243
|
-
"startIdleDetection",
|
|
244
|
-
"checkIdle",
|
|
245
|
-
"setVelocityToZero",
|
|
246
|
-
"updateVelocityTracking",
|
|
247
|
-
"calculateWindowedVelocity",
|
|
248
|
-
].includes(f.name)
|
|
249
|
-
),
|
|
250
|
-
recommendation:
|
|
251
|
-
"Check if used in closures or as part of velocity tracking system",
|
|
252
|
-
},
|
|
253
|
-
{
|
|
254
|
-
category: "Setup Functions",
|
|
255
|
-
description: "Setup and initialization functions",
|
|
256
|
-
functions: orphanedFunctions.filter(
|
|
257
|
-
(f) => f.name.startsWith("setup") || f.name.includes("initialize")
|
|
258
|
-
),
|
|
259
|
-
recommendation: "Verify if called during component initialization",
|
|
260
|
-
},
|
|
261
|
-
{
|
|
262
|
-
category: "Loading Manager Internals",
|
|
263
|
-
description: "Internal loading queue management functions",
|
|
264
|
-
functions: orphanedFunctions.filter((f) => f.file.includes("loading.ts")),
|
|
265
|
-
recommendation: "Check if used within loading manager closure",
|
|
266
|
-
},
|
|
267
|
-
{
|
|
268
|
-
category: "Size Cache Management",
|
|
269
|
-
description: "Item size measurement and caching functions",
|
|
270
|
-
functions: orphanedFunctions.filter((f) =>
|
|
271
|
-
f.file.includes("item-size.ts")
|
|
272
|
-
),
|
|
273
|
-
recommendation: "Verify if used in size management system",
|
|
274
|
-
},
|
|
275
|
-
{
|
|
276
|
-
category: "Utility Functions",
|
|
277
|
-
description: "General utility and calculation functions",
|
|
278
|
-
functions: orphanedFunctions.filter(
|
|
279
|
-
(f) =>
|
|
280
|
-
!f.file.includes("scrollbar.ts") &&
|
|
281
|
-
!f.file.includes("scrolling.ts") &&
|
|
282
|
-
!f.file.includes("loading.ts") &&
|
|
283
|
-
!f.file.includes("item-size.ts") &&
|
|
284
|
-
!f.name.startsWith("setup")
|
|
285
|
-
),
|
|
286
|
-
recommendation: "Safe to remove if truly unused",
|
|
287
|
-
},
|
|
288
|
-
];
|
|
289
|
-
|
|
290
|
-
return categories.filter((c) => c.functions.length > 0);
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
function analyzeFileForIndirectUsage(
|
|
294
|
-
filePath: string,
|
|
295
|
-
functionName: string
|
|
296
|
-
): boolean {
|
|
297
|
-
try {
|
|
298
|
-
const fullPath = path.join(__dirname, "../src/core/list-manager", filePath);
|
|
299
|
-
const content = fs.readFileSync(fullPath, "utf-8");
|
|
300
|
-
|
|
301
|
-
// Check for indirect usage patterns
|
|
302
|
-
const patterns = [
|
|
303
|
-
// Used in object/map
|
|
304
|
-
new RegExp(`['"\`]${functionName}['"\`]\\s*:`),
|
|
305
|
-
new RegExp(`\\[['"\`]${functionName}['"\`]\\]`),
|
|
306
|
-
|
|
307
|
-
// Assigned to variable/property
|
|
308
|
-
new RegExp(`\\w+\\.${functionName}\\s*=`),
|
|
309
|
-
new RegExp(`this\\.${functionName}\\s*=`),
|
|
310
|
-
|
|
311
|
-
// Used in return statement
|
|
312
|
-
new RegExp(`return\\s+.*${functionName}`),
|
|
313
|
-
|
|
314
|
-
// Passed as callback
|
|
315
|
-
new RegExp(`\\(\\s*${functionName}\\s*\\)`),
|
|
316
|
-
new RegExp(`,\\s*${functionName}\\s*[,)]`),
|
|
317
|
-
];
|
|
318
|
-
|
|
319
|
-
return patterns.some((pattern) => pattern.test(content));
|
|
320
|
-
} catch (error) {
|
|
321
|
-
return false;
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
// Main analysis
|
|
326
|
-
console.log("🔍 Detailed Analysis of Orphaned Functions\n");
|
|
327
|
-
|
|
328
|
-
const categories = categorizeOrphanedFunctions();
|
|
329
|
-
|
|
330
|
-
categories.forEach((category) => {
|
|
331
|
-
console.log(`\n📁 ${category.category}`);
|
|
332
|
-
console.log(` ${category.description}`);
|
|
333
|
-
console.log(` 💡 ${category.recommendation}\n`);
|
|
334
|
-
|
|
335
|
-
category.functions.forEach((func) => {
|
|
336
|
-
const hasIndirectUsage = analyzeFileForIndirectUsage(func.file, func.name);
|
|
337
|
-
const status = hasIndirectUsage
|
|
338
|
-
? "⚠️ May have indirect usage"
|
|
339
|
-
: "❌ Appears truly orphaned";
|
|
340
|
-
console.log(` ${status}: ${func.name} (line ${func.line})`);
|
|
341
|
-
});
|
|
342
|
-
});
|
|
343
|
-
|
|
344
|
-
console.log("\n\n📊 Summary by Category:");
|
|
345
|
-
categories.forEach((category) => {
|
|
346
|
-
console.log(
|
|
347
|
-
` ${category.category}: ${category.functions.length} functions`
|
|
348
|
-
);
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
console.log("\n\n🔍 Underused Exported Functions:");
|
|
352
|
-
console.log(" These are exported but only used in their own file:\n");
|
|
353
|
-
underusedExports.forEach((func) => {
|
|
354
|
-
console.log(` ⚠️ ${func.name} in ${func.file} (line ${func.line})`);
|
|
355
|
-
});
|
|
356
|
-
|
|
357
|
-
console.log("\n\n💡 Recommendations:");
|
|
358
|
-
console.log(
|
|
359
|
-
" 1. Start with 'Utility Functions' category - these are safest to remove"
|
|
360
|
-
);
|
|
361
|
-
console.log(" 2. Review 'Setup Functions' - some might be called indirectly");
|
|
362
|
-
console.log(
|
|
363
|
-
" 3. Check 'Loading Manager Internals' - might be used in closures"
|
|
364
|
-
);
|
|
365
|
-
console.log(
|
|
366
|
-
" 4. Be careful with 'Scrollbar Internal Helpers' - might be event handlers"
|
|
367
|
-
);
|
|
368
|
-
console.log(
|
|
369
|
-
" 5. Consider making underused exports private if not part of public API"
|
|
370
|
-
);
|
|
371
|
-
|
|
372
|
-
// Generate a cleanup script
|
|
373
|
-
const cleanupScript = `
|
|
374
|
-
// Safe to remove functions (appear truly orphaned):
|
|
375
|
-
${orphanedFunctions
|
|
376
|
-
.filter((f) => !analyzeFileForIndirectUsage(f.file, f.name))
|
|
377
|
-
.map((f) => `// - ${f.name} in ${f.file}`)
|
|
378
|
-
.join("\n")}
|
|
379
|
-
`;
|
|
380
|
-
|
|
381
|
-
fs.writeFileSync(
|
|
382
|
-
path.join(__dirname, "orphaned-functions-cleanup.txt"),
|
|
383
|
-
cleanupScript
|
|
384
|
-
);
|
|
385
|
-
console.log(
|
|
386
|
-
"\n\n✅ Generated orphaned-functions-cleanup.txt with safe-to-remove functions"
|
|
387
|
-
);
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
// scripts/debug/vlist-selection.ts
|
|
2
|
-
|
|
3
|
-
import puppeteer from "puppeteer";
|
|
4
|
-
|
|
5
|
-
async function testVListSelection() {
|
|
6
|
-
console.log("🎯 Testing VList Selection Feature");
|
|
7
|
-
|
|
8
|
-
const browser = await puppeteer.launch({
|
|
9
|
-
headless: false,
|
|
10
|
-
devtools: true,
|
|
11
|
-
args: ["--no-sandbox", "--disable-setuid-sandbox"],
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
const page = await browser.newPage();
|
|
15
|
-
|
|
16
|
-
// Listen to console logs
|
|
17
|
-
page.on("console", (msg) => {
|
|
18
|
-
const text = msg.text();
|
|
19
|
-
if (text.includes("[Selection]") || text.includes("selection")) {
|
|
20
|
-
console.log(`💬 [${msg.type().toUpperCase()}] ${text}`);
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
await page.goto("http://localhost:4000/examples/vlist-addons");
|
|
25
|
-
|
|
26
|
-
// Wait for list to load
|
|
27
|
-
await page.waitForSelector(".mtrl-viewport-item", { timeout: 5000 });
|
|
28
|
-
|
|
29
|
-
console.log("📋 Page loaded, looking for list items...");
|
|
30
|
-
|
|
31
|
-
// Get info about items
|
|
32
|
-
const itemInfo = await page.evaluate(() => {
|
|
33
|
-
const items = document.querySelectorAll(".mtrl-viewport-item");
|
|
34
|
-
const firstItem = items[0];
|
|
35
|
-
const listItem = firstItem?.querySelector(".list-item, .user-item");
|
|
36
|
-
|
|
37
|
-
return {
|
|
38
|
-
viewportItemCount: items.length,
|
|
39
|
-
firstViewportItemClasses: firstItem?.className,
|
|
40
|
-
firstViewportItemDataIndex: firstItem?.getAttribute("data-index"),
|
|
41
|
-
firstListItemClasses: listItem?.className,
|
|
42
|
-
firstListItemDataId: listItem?.getAttribute("data-id"),
|
|
43
|
-
hasClickHandler: !!(window as any).listExample?.userList,
|
|
44
|
-
};
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
console.log("📊 Item info:", itemInfo);
|
|
48
|
-
|
|
49
|
-
// Click on the first item
|
|
50
|
-
console.log("🖱️ Clicking on first item...");
|
|
51
|
-
await page.click(".mtrl-viewport-item:first-child");
|
|
52
|
-
|
|
53
|
-
// Wait a bit for selection to process
|
|
54
|
-
await page.waitForTimeout(500);
|
|
55
|
-
|
|
56
|
-
// Check if selection class was applied
|
|
57
|
-
const selectionInfo = await page.evaluate(() => {
|
|
58
|
-
const firstItem = document.querySelector(".mtrl-viewport-item:first-child");
|
|
59
|
-
const listItem = firstItem?.querySelector(".list-item, .user-item");
|
|
60
|
-
const selectedItems = document.querySelectorAll(
|
|
61
|
-
".mtrl-list-item--selected"
|
|
62
|
-
);
|
|
63
|
-
|
|
64
|
-
return {
|
|
65
|
-
hasSelectionClass: listItem?.classList.contains(
|
|
66
|
-
"mtrl-list-item--selected"
|
|
67
|
-
),
|
|
68
|
-
listItemClasses: listItem?.className,
|
|
69
|
-
selectedCount: selectedItems.length,
|
|
70
|
-
userListExists: !!(window as any).listExample?.userList,
|
|
71
|
-
hasSelectItems:
|
|
72
|
-
typeof (window as any).listExample?.userList?.selectItems ===
|
|
73
|
-
"function",
|
|
74
|
-
hasGetSelectedItems:
|
|
75
|
-
typeof (window as any).listExample?.userList?.getSelectedItems ===
|
|
76
|
-
"function",
|
|
77
|
-
};
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
console.log("✅ Selection info after click:", selectionInfo);
|
|
81
|
-
|
|
82
|
-
// Try programmatic selection
|
|
83
|
-
console.log("🔧 Testing programmatic selection...");
|
|
84
|
-
const programmaticResult = await page.evaluate(() => {
|
|
85
|
-
const userList = (window as any).listExample?.userList;
|
|
86
|
-
if (userList && userList.selectItems) {
|
|
87
|
-
userList.selectItems([0, 1, 2]);
|
|
88
|
-
const selected = userList.getSelectedItems
|
|
89
|
-
? userList.getSelectedItems()
|
|
90
|
-
: [];
|
|
91
|
-
return {
|
|
92
|
-
success: true,
|
|
93
|
-
selectedCount: selected.length,
|
|
94
|
-
selectedIds: selected.map((item: any) => item.id),
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
return { success: false, reason: "No selectItems method" };
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
console.log("📊 Programmatic selection result:", programmaticResult);
|
|
101
|
-
|
|
102
|
-
// Final check
|
|
103
|
-
await page.waitForTimeout(500);
|
|
104
|
-
const finalState = await page.evaluate(() => {
|
|
105
|
-
const selectedElements = document.querySelectorAll(
|
|
106
|
-
".mtrl-list-item--selected"
|
|
107
|
-
);
|
|
108
|
-
return {
|
|
109
|
-
selectedElementCount: selectedElements.length,
|
|
110
|
-
selectedClasses: Array.from(selectedElements).map((el) => el.className),
|
|
111
|
-
};
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
console.log("🎯 Final selection state:", finalState);
|
|
115
|
-
|
|
116
|
-
// Keep browser open for inspection
|
|
117
|
-
console.log("✨ Test complete. Browser will stay open for inspection.");
|
|
118
|
-
console.log("Press Ctrl+C to exit.");
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
testVListSelection().catch(console.error);
|