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,274 +0,0 @@
|
|
|
1
|
-
// test/integration/performance-comparison.test.ts - Mock vs Real Component Performance
|
|
2
|
-
// @ts-nocheck
|
|
3
|
-
import { describe, test, expect, beforeAll, afterAll } from "bun:test";
|
|
4
|
-
import { JSDOM } from "jsdom";
|
|
5
|
-
|
|
6
|
-
// Setup for DOM testing environment
|
|
7
|
-
let dom: JSDOM;
|
|
8
|
-
let window: Window;
|
|
9
|
-
let document: Document;
|
|
10
|
-
let originalGlobalDocument: any;
|
|
11
|
-
let originalGlobalWindow: any;
|
|
12
|
-
|
|
13
|
-
// High-resolution timer
|
|
14
|
-
const hrTimer = (() => {
|
|
15
|
-
const start = Date.now();
|
|
16
|
-
return () => Date.now() - start;
|
|
17
|
-
})();
|
|
18
|
-
|
|
19
|
-
beforeAll(() => {
|
|
20
|
-
// Create JSDOM instance
|
|
21
|
-
dom = new JSDOM("<!DOCTYPE html><html><body></body></html>", {
|
|
22
|
-
url: "http://localhost/",
|
|
23
|
-
pretendToBeVisual: true,
|
|
24
|
-
resources: "usable",
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
window = dom.window as any;
|
|
28
|
-
document = window.document;
|
|
29
|
-
|
|
30
|
-
// Store original globals
|
|
31
|
-
originalGlobalDocument = global.document;
|
|
32
|
-
originalGlobalWindow = global.window;
|
|
33
|
-
|
|
34
|
-
// Set globals
|
|
35
|
-
global.document = document;
|
|
36
|
-
global.window = window as any;
|
|
37
|
-
global.Element = (window as any).Element;
|
|
38
|
-
global.HTMLElement = (window as any).HTMLElement;
|
|
39
|
-
global.DocumentFragment = (window as any).DocumentFragment;
|
|
40
|
-
|
|
41
|
-
// Fix performance.now conflict
|
|
42
|
-
(global as any).performance = {
|
|
43
|
-
now: hrTimer,
|
|
44
|
-
mark: () => {},
|
|
45
|
-
measure: () => {},
|
|
46
|
-
getEntriesByType: () => [],
|
|
47
|
-
clearMarks: () => {},
|
|
48
|
-
clearMeasures: () => {},
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
// Add DOM APIs
|
|
52
|
-
global.getComputedStyle = () => ({
|
|
53
|
-
position: "static",
|
|
54
|
-
getPropertyValue: () => "",
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
afterAll(() => {
|
|
59
|
-
// Restore globals
|
|
60
|
-
global.document = originalGlobalDocument;
|
|
61
|
-
global.window = originalGlobalWindow;
|
|
62
|
-
window.close();
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
// Import after DOM setup
|
|
66
|
-
import {
|
|
67
|
-
createLayout,
|
|
68
|
-
performance as addonsPerformance,
|
|
69
|
-
} from "../../../src/core/layout";
|
|
70
|
-
import { createButton, createTextfield, createCard } from "mtrl";
|
|
71
|
-
|
|
72
|
-
describe("Performance Comparison: Mock vs Real Components", () => {
|
|
73
|
-
describe("Mock Components Baseline", () => {
|
|
74
|
-
test("mock component performance baseline", () => {
|
|
75
|
-
const iterations = 1000;
|
|
76
|
-
|
|
77
|
-
console.log(`\n🔬 Mock Component Baseline (${iterations} layouts):`);
|
|
78
|
-
console.log(` Testing with simple DOM element creation`);
|
|
79
|
-
|
|
80
|
-
const mockLayoutSchema = () => [
|
|
81
|
-
"div",
|
|
82
|
-
"container",
|
|
83
|
-
{
|
|
84
|
-
layout: { type: "row", gap: "1rem" },
|
|
85
|
-
class: "mock-container",
|
|
86
|
-
},
|
|
87
|
-
[
|
|
88
|
-
"button",
|
|
89
|
-
"mock-btn-1",
|
|
90
|
-
{ textContent: "Mock Button 1", class: "mock-btn" },
|
|
91
|
-
],
|
|
92
|
-
[
|
|
93
|
-
"button",
|
|
94
|
-
"mock-btn-2",
|
|
95
|
-
{ textContent: "Mock Button 2", class: "mock-btn" },
|
|
96
|
-
],
|
|
97
|
-
[
|
|
98
|
-
"button",
|
|
99
|
-
"mock-btn-3",
|
|
100
|
-
{ textContent: "Mock Button 3", class: "mock-btn" },
|
|
101
|
-
],
|
|
102
|
-
];
|
|
103
|
-
|
|
104
|
-
addonsPerformance.clearAll();
|
|
105
|
-
|
|
106
|
-
const start = hrTimer();
|
|
107
|
-
const layouts = [];
|
|
108
|
-
|
|
109
|
-
for (let i = 0; i < iterations; i++) {
|
|
110
|
-
layouts.push(createLayout(mockLayoutSchema()));
|
|
111
|
-
}
|
|
112
|
-
const createTime = hrTimer() - start;
|
|
113
|
-
|
|
114
|
-
const destroyStart = hrTimer();
|
|
115
|
-
layouts.forEach((layout) => layout.destroy());
|
|
116
|
-
const destroyTime = hrTimer() - destroyStart;
|
|
117
|
-
|
|
118
|
-
const totalTime = createTime + destroyTime;
|
|
119
|
-
const avgTimePerLayout = totalTime / iterations;
|
|
120
|
-
const totalComponents = iterations * 3;
|
|
121
|
-
|
|
122
|
-
console.log(` Creation: ${createTime.toFixed(2)}ms`);
|
|
123
|
-
console.log(` Cleanup: ${destroyTime.toFixed(2)}ms`);
|
|
124
|
-
console.log(` Total: ${totalTime.toFixed(2)}ms`);
|
|
125
|
-
console.log(` Per layout: ${avgTimePerLayout.toFixed(4)}ms`);
|
|
126
|
-
console.log(
|
|
127
|
-
` Per component: ${(totalTime / totalComponents).toFixed(5)}ms`
|
|
128
|
-
);
|
|
129
|
-
console.log(
|
|
130
|
-
` Throughput: ${Math.round(
|
|
131
|
-
iterations / (totalTime / 1000)
|
|
132
|
-
).toLocaleString()} layouts/sec`
|
|
133
|
-
);
|
|
134
|
-
|
|
135
|
-
expect(totalTime).toBeLessThan(200); // Should be reasonably fast
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
describe("Real Components Performance", () => {
|
|
140
|
-
test("real component performance", () => {
|
|
141
|
-
const iterations = 1000;
|
|
142
|
-
|
|
143
|
-
console.log(`\n🔘 Real Component Performance (${iterations} layouts):`);
|
|
144
|
-
console.log(` Testing with actual mtrl.createButton() components`);
|
|
145
|
-
|
|
146
|
-
const realLayoutSchema = () => [
|
|
147
|
-
"div",
|
|
148
|
-
"container",
|
|
149
|
-
{
|
|
150
|
-
layout: { type: "row", gap: "1rem" },
|
|
151
|
-
class: "real-container",
|
|
152
|
-
},
|
|
153
|
-
[
|
|
154
|
-
"div",
|
|
155
|
-
"real-btn-1",
|
|
156
|
-
{
|
|
157
|
-
component: {
|
|
158
|
-
creator: () =>
|
|
159
|
-
createButton({
|
|
160
|
-
type: "filled",
|
|
161
|
-
label: "Real Button 1",
|
|
162
|
-
}),
|
|
163
|
-
options: {},
|
|
164
|
-
},
|
|
165
|
-
},
|
|
166
|
-
],
|
|
167
|
-
[
|
|
168
|
-
"div",
|
|
169
|
-
"real-btn-2",
|
|
170
|
-
{
|
|
171
|
-
component: {
|
|
172
|
-
creator: () =>
|
|
173
|
-
createButton({
|
|
174
|
-
type: "outlined",
|
|
175
|
-
label: "Real Button 2",
|
|
176
|
-
}),
|
|
177
|
-
options: {},
|
|
178
|
-
},
|
|
179
|
-
},
|
|
180
|
-
],
|
|
181
|
-
[
|
|
182
|
-
"div",
|
|
183
|
-
"real-btn-3",
|
|
184
|
-
{
|
|
185
|
-
component: {
|
|
186
|
-
creator: () =>
|
|
187
|
-
createButton({
|
|
188
|
-
type: "text",
|
|
189
|
-
label: "Real Button 3",
|
|
190
|
-
}),
|
|
191
|
-
options: {},
|
|
192
|
-
},
|
|
193
|
-
},
|
|
194
|
-
],
|
|
195
|
-
];
|
|
196
|
-
|
|
197
|
-
addonsPerformance.clearAll();
|
|
198
|
-
|
|
199
|
-
const start = hrTimer();
|
|
200
|
-
const layouts = [];
|
|
201
|
-
|
|
202
|
-
for (let i = 0; i < iterations; i++) {
|
|
203
|
-
layouts.push(createLayout(realLayoutSchema()));
|
|
204
|
-
}
|
|
205
|
-
const createTime = hrTimer() - start;
|
|
206
|
-
|
|
207
|
-
const destroyStart = hrTimer();
|
|
208
|
-
layouts.forEach((layout) => layout.destroy());
|
|
209
|
-
const destroyTime = hrTimer() - destroyStart;
|
|
210
|
-
|
|
211
|
-
const totalTime = createTime + destroyTime;
|
|
212
|
-
const avgTimePerLayout = totalTime / iterations;
|
|
213
|
-
const totalComponents = iterations * 3;
|
|
214
|
-
|
|
215
|
-
console.log(` Creation: ${createTime.toFixed(2)}ms`);
|
|
216
|
-
console.log(` Cleanup: ${destroyTime.toFixed(2)}ms`);
|
|
217
|
-
console.log(` Total: ${totalTime.toFixed(2)}ms`);
|
|
218
|
-
console.log(` Per layout: ${avgTimePerLayout.toFixed(4)}ms`);
|
|
219
|
-
console.log(
|
|
220
|
-
` Per component: ${(totalTime / totalComponents).toFixed(5)}ms`
|
|
221
|
-
);
|
|
222
|
-
console.log(
|
|
223
|
-
` Throughput: ${Math.round(
|
|
224
|
-
iterations / (totalTime / 1000)
|
|
225
|
-
).toLocaleString()} layouts/sec`
|
|
226
|
-
);
|
|
227
|
-
|
|
228
|
-
expect(totalTime).toBeLessThan(500); // Should complete within 500ms
|
|
229
|
-
});
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
describe("Performance Comparison Summary", () => {
|
|
233
|
-
test("performance comparison analysis", () => {
|
|
234
|
-
console.log(`\n📊 Performance Comparison Analysis:`);
|
|
235
|
-
console.log(`==========================================`);
|
|
236
|
-
|
|
237
|
-
console.log(`\n🔬 Mock Components (Baseline):`);
|
|
238
|
-
console.log(` • Expected: ~0.002-0.005ms per component`);
|
|
239
|
-
console.log(` • Throughput: ~50,000+ layouts/sec`);
|
|
240
|
-
console.log(` • Use case: Testing, prototyping`);
|
|
241
|
-
|
|
242
|
-
console.log(`\n🔘 Real Components (Production):`);
|
|
243
|
-
console.log(` • Measured: ~0.03-0.05ms per component`);
|
|
244
|
-
console.log(` • Throughput: ~9,000-10,000 layouts/sec`);
|
|
245
|
-
console.log(` • Overhead: ~10-15x (excellent!)`);
|
|
246
|
-
console.log(` • Use case: Production applications`);
|
|
247
|
-
|
|
248
|
-
console.log(`\n🏆 Key Findings:`);
|
|
249
|
-
console.log(
|
|
250
|
-
` ✅ Real component overhead is minimal (10-15x vs expected 100-300x)`
|
|
251
|
-
);
|
|
252
|
-
console.log(
|
|
253
|
-
` ✅ mtrl-addons layout system maintains performance with real components`
|
|
254
|
-
);
|
|
255
|
-
console.log(` ✅ Fragment pooling and class caching work excellently`);
|
|
256
|
-
console.log(` ✅ Sub-millisecond performance for complex layouts`);
|
|
257
|
-
console.log(` ✅ Production-ready performance at scale`);
|
|
258
|
-
|
|
259
|
-
console.log(`\n💡 Real-World Performance:`);
|
|
260
|
-
console.log(` • Simple forms: ~1-2ms total`);
|
|
261
|
-
console.log(` • Complex dashboards: ~5-15ms total`);
|
|
262
|
-
console.log(` • Interactive apps: ~60 FPS (16ms budget)`);
|
|
263
|
-
console.log(` • Layout system overhead: <1% of frame budget`);
|
|
264
|
-
|
|
265
|
-
console.log(`\n🚀 Conclusion:`);
|
|
266
|
-
console.log(` The mtrl-addons layout system + real mtrl components`);
|
|
267
|
-
console.log(
|
|
268
|
-
` deliver exceptional performance for production applications!`
|
|
269
|
-
);
|
|
270
|
-
|
|
271
|
-
expect(true).toBe(true);
|
|
272
|
-
});
|
|
273
|
-
});
|
|
274
|
-
});
|