virtua 0.49.3 → 0.50.1

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 (56) hide show
  1. package/README.md +39 -5
  2. package/lib/angular/ListItem.d.ts +1 -0
  3. package/lib/angular/VList.d.ts +85 -0
  4. package/lib/angular/Virtualizer.d.ts +141 -0
  5. package/lib/angular/WindowVirtualizer.d.ts +103 -0
  6. package/lib/angular/index.d.ts +6 -0
  7. package/lib/angular/index.js +1148 -0
  8. package/lib/angular/index.js.map +1 -0
  9. package/lib/angular/utils.d.ts +19 -0
  10. package/lib/core/index.cjs +237 -233
  11. package/lib/core/index.cjs.map +1 -1
  12. package/lib/core/index.d.ts +6 -6
  13. package/lib/core/index.js +272 -272
  14. package/lib/core/index.js.map +1 -1
  15. package/lib/index.cjs +529 -499
  16. package/lib/index.cjs.map +1 -1
  17. package/lib/index.d.ts +2 -2
  18. package/lib/index.js +321 -315
  19. package/lib/index.js.map +1 -1
  20. package/lib/react/VGrid.d.ts +2 -2
  21. package/lib/react/VList.d.ts +3 -3
  22. package/lib/react/Virtualizer.d.ts +3 -3
  23. package/lib/react/WindowVirtualizer.d.ts +3 -3
  24. package/lib/react/index.d.ts +9 -9
  25. package/lib/react/types.d.ts +1 -1
  26. package/lib/solid/VList.d.ts +3 -6
  27. package/lib/solid/Virtualizer.d.ts +2 -5
  28. package/lib/solid/WindowVirtualizer.d.ts +2 -5
  29. package/lib/solid/index.cjs +331 -323
  30. package/lib/solid/index.cjs.map +1 -1
  31. package/lib/solid/index.d.ts +7 -7
  32. package/lib/solid/index.js +249 -257
  33. package/lib/solid/index.js.map +1 -1
  34. package/lib/solid/index.jsx +1224 -1566
  35. package/lib/solid/index.jsx.map +1 -1
  36. package/lib/solid/types.d.ts +1 -1
  37. package/lib/svelte/VList.type.d.ts +2 -2
  38. package/lib/svelte/Virtualizer.svelte +10 -4
  39. package/lib/svelte/Virtualizer.type.d.ts +4 -4
  40. package/lib/svelte/WindowVirtualizer.type.d.ts +2 -2
  41. package/lib/svelte/index.d.ts +6 -6
  42. package/lib/svelte/index.js +4 -4
  43. package/lib/svelte/types.d.ts +1 -1
  44. package/lib/svelte/utils.js +11 -11
  45. package/lib/svelte/utils.js.map +1 -1
  46. package/lib/vue/VList.d.ts +2 -3
  47. package/lib/vue/Virtualizer.d.ts +3 -4
  48. package/lib/vue/WindowVirtualizer.d.ts +2 -3
  49. package/lib/vue/index.cjs +327 -317
  50. package/lib/vue/index.cjs.map +1 -1
  51. package/lib/vue/index.d.ts +6 -6
  52. package/lib/vue/index.js +284 -284
  53. package/lib/vue/index.js.map +1 -1
  54. package/lib/vue/utils.d.ts +1 -1
  55. package/package.json +60 -25
  56. package/lib/svelte/index.js.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "virtua",
3
- "version": "0.49.3",
4
- "description": "A zero-config, fast and small (~3kB) virtual list (and grid) component for React, Vue, Solid and Svelte.",
3
+ "version": "0.50.1",
4
+ "description": "A zero-config, fast and small (~3kB) virtual list (and grid) component for React, Vue, Solid, Svelte and Angular.",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
@@ -29,6 +29,10 @@
29
29
  "svelte": "./lib/svelte/index.js",
30
30
  "default": "./lib/svelte/index.js"
31
31
  },
32
+ "./angular": {
33
+ "types": "./lib/angular/index.d.ts",
34
+ "default": "./lib/angular/index.js"
35
+ },
32
36
  "./unstable_core": {
33
37
  "types": "./lib/core/index.d.ts",
34
38
  "require": "./lib/core/index.cjs",
@@ -40,58 +44,71 @@
40
44
  ],
41
45
  "sideEffects": false,
42
46
  "scripts": {
43
- "build": "rollup -c",
47
+ "build": "rimraf lib && vite build -c vite.build.config.ts -m react && vite build -c vite.build.config.ts -m vue && vite build -c vite.build.config.ts -m solid && vite build -c vite.build.config.ts -m solid-ssr && vite build -c vite.build.config.ts -m core && vite build -c vite.build.config.ts -m svelte && vite build -c vite.build.config.ts -m angular && ngc -p tsconfig.angular.build.json && node scripts/copy-angular-dts.js",
44
48
  "tsc": "tsc -p . --noEmit",
45
- "test": "vitest run --project=unit --project=react --project=vue --project=solid --project=svelte",
49
+ "test": "vitest run --project=unit --project=react --project=vue --project=solid --project=svelte --project=angular",
46
50
  "lint": "eslint '{src,e2e}/**/*.{js,jsx,ts,tsx}' --cache",
47
51
  "format": "prettier '**/*.{js,ts,jsx,tsx,vue,svelte}' --write --cache",
48
52
  "format:ci": "prettier '**/*.{js,ts,jsx,tsx,vue,svelte}' -l",
49
53
  "check:svelte": "svelte-check --tsconfig ./tsconfig.svelte.json",
54
+ "check:angular": "ngc -p tsconfig.angular.json --noEmit",
50
55
  "storybook": "storybook dev -p 6006",
51
56
  "storybook:rtl": "STORYBOOK_RTL=1 npm run storybook",
52
57
  "storybook:vue": "STORYBOOK_VUE=1 npm run storybook",
53
58
  "storybook:solid": "STORYBOOK_SOLID=1 npm run storybook",
54
59
  "storybook:svelte": "STORYBOOK_SVELTE=1 npm run storybook",
60
+ "storybook:angular": "STORYBOOK_ANGULAR=1 npm run storybook",
55
61
  "storybook:build": "storybook build",
56
- "storybook:deploy": "STORYBOOK_DEPLOY=1 npm run storybook:build && STORYBOOK_VUE=1 npm run storybook:build -- -o storybook-static/vue && STORYBOOK_SOLID=1 npm run storybook:build -- -o storybook-static/solid && STORYBOOK_SVELTE=1 npm run storybook:build -- -o storybook-static/svelte",
62
+ "storybook:deploy": "STORYBOOK_DEPLOY=1 npm run storybook:build && STORYBOOK_VUE=1 npm run storybook:build -- -o storybook-static/vue && STORYBOOK_SOLID=1 npm run storybook:build -- -o storybook-static/solid && STORYBOOK_SVELTE=1 npm run storybook:build -- -o storybook-static/svelte && STORYBOOK_ANGULAR=1 npm run storybook:build -- -o storybook-static/angular",
57
63
  "storybook:test": "vitest run --project=storybook",
58
64
  "e2e": "npx playwright test",
59
65
  "typedoc": "typedoc",
60
66
  "size": "size-limit",
61
- "prepublishOnly": "npm run typedoc && rimraf lib && npm run build"
67
+ "prepublishOnly": "npm run typedoc && npm run build"
62
68
  },
63
69
  "devDependencies": {
70
+ "@analogjs/storybook-angular": "^2.6.4",
71
+ "@analogjs/vite-plugin-angular": "^2.6.4",
72
+ "@analogjs/vitest-angular": "^2.6.4",
73
+ "@angular/animations": "^22.0.0",
74
+ "@angular/common": "^22.0.0",
75
+ "@angular/compiler": "^22.0.0",
76
+ "@angular/compiler-cli": "^22.0.0",
77
+ "@angular/core": "^22.0.0",
78
+ "@angular/platform-browser": "^22.0.0",
79
+ "@angular/platform-server": "^22.0.0",
64
80
  "@atlaskit/pragmatic-drag-and-drop": "^1.7.9",
65
81
  "@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^2.1.5",
66
82
  "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.1.0",
67
83
  "@atlaskit/pragmatic-drag-and-drop-react-drop-indicator": "^3.2.12",
84
+ "@babel/core": "^7.29.7",
68
85
  "@base-ui/react": "^1.4.0",
69
- "@dnd-kit/core": "^6.3.1",
70
- "@dnd-kit/sortable": "^10.0.0",
86
+ "@dnd-kit/helpers": "^0.5.0",
87
+ "@dnd-kit/react": "^0.5.0",
71
88
  "@emotion/react": "^11.13.5",
72
89
  "@emotion/styled": "^11.13.5",
73
90
  "@faker-js/faker": "^10.3.0",
74
- "@formkit/auto-animate": "^0.9.0",
91
+ "@formkit/auto-animate": "^0.10.0",
75
92
  "@mui/material": "^9.0.0",
76
93
  "@playwright/test": "^1.56.0",
77
94
  "@radix-ui/colors": "^3.0.0",
78
95
  "@radix-ui/react-icons": "^1.3.2",
79
96
  "@radix-ui/react-scroll-area": "^1.2.10",
80
97
  "@radix-ui/react-select": "^2.2.6",
81
- "@rollup/plugin-babel": "^7.0.0",
82
- "@rollup/plugin-terser": "^1.0.0",
83
- "@rollup/plugin-typescript": "^12.0.0",
84
98
  "@size-limit/preset-small-lib": "^12.0.0",
85
99
  "@solidjs/testing-library": "^0.8.10",
86
100
  "@storybook/addon-docs": "^10.4.0",
87
101
  "@storybook/addon-vitest": "^10.4.0",
102
+ "@storybook/angular": "^10.4.0",
88
103
  "@storybook/react-vite": "^10.4.0",
89
104
  "@storybook/svelte-vite": "^10.4.0",
90
105
  "@storybook/vue3-vite": "^10.4.0",
91
106
  "@sveltejs/vite-plugin-svelte": "^7.1.2",
107
+ "@tanstack/react-table": "^9.0.0",
92
108
  "@tanstack/react-virtual": "^3.13.24",
93
109
  "@testing-library/dom": "^10.4.0",
94
110
  "@testing-library/react": "^16.3.2",
111
+ "@testing-library/svelte": "^5.4.2",
95
112
  "@testing-library/vue": "^8.1.0",
96
113
  "@types/jsdom": "^28.0.0",
97
114
  "@types/react": "^19.2.0",
@@ -102,15 +119,14 @@
102
119
  "@vitejs/plugin-vue-jsx": "^5.1.5",
103
120
  "@vitest/browser-playwright": "^4.1.0",
104
121
  "@vitest/coverage-v8": "^4.1.0",
105
- "babel-preset-solid": "^1.9.10",
106
122
  "cmdk": "^1.1.1",
107
- "eslint": "^9.38.0",
108
- "eslint-import-resolver-typescript": "^4.3.5",
123
+ "eslint": "^10.8.0",
124
+ "eslint-import-resolver-typescript": "^4.4.5",
109
125
  "eslint-plugin-import": "^2.31.0",
110
126
  "eslint-plugin-react": "^7.37.5",
111
127
  "eslint-plugin-react-hooks": "^7.0.1",
112
128
  "eslint-plugin-solid": "^0.14.5",
113
- "eslint-plugin-vue": "^10.4.0",
129
+ "eslint-plugin-vue": "^10.10.0",
114
130
  "jsdom": "^29.0.0",
115
131
  "prettier": "^3.8.3",
116
132
  "prettier-plugin-svelte": "^4.0.0",
@@ -127,28 +143,40 @@
127
143
  "react-window": "^2.2.7",
128
144
  "remark-gfm": "^4.0.1",
129
145
  "rimraf": "^6.0.1",
130
- "rollup": "^4.54.0",
131
- "rollup-plugin-banner2": "^1.3.1",
132
- "rollup-plugin-copy": "^3.5.0",
133
146
  "size-limit": "^12.0.0",
134
147
  "solid-js": "^1.9.13",
135
148
  "storybook": "^10.4.0",
136
149
  "storybook-solidjs-vite": "^10.0.10",
137
150
  "svelte": "^5.38.9",
138
151
  "svelte-check": "^4.4.8",
152
+ "terser": "^5.49.0",
139
153
  "typedoc": "^0.28.4",
140
154
  "typedoc-plugin-markdown": "^4.6.3",
141
155
  "typescript": "^6.0.3",
142
- "typescript-eslint": "^8.46.2",
156
+ "typescript-eslint": "^8.65.0",
143
157
  "unplugin-vue-jsx": "^0.10.0",
144
- "virtua": "^0.49.0",
158
+ "virtua": "^0.50.0",
145
159
  "vite": "^8.0.13",
160
+ "vite-plugin-dts": "^5.0.3",
146
161
  "vite-plugin-solid": "^2.11.12",
147
162
  "vitest": "^4.1.6",
148
163
  "vue": "^3.5.34",
149
- "vue-eslint-parser": "^10.2.0"
164
+ "vue-eslint-parser": "^10.4.1"
165
+ },
166
+ "overrides": {
167
+ "eslint-plugin-react": {
168
+ "eslint": "$eslint"
169
+ },
170
+ "eslint-plugin-import": {
171
+ "eslint": "$eslint"
172
+ },
173
+ "eslint-plugin-solid": {
174
+ "eslint": "$eslint"
175
+ }
150
176
  },
151
177
  "peerDependencies": {
178
+ "@angular/common": ">=20.0.0",
179
+ "@angular/core": ">=20.0.0",
152
180
  "react": ">=16.14.0",
153
181
  "react-dom": ">=16.14.0",
154
182
  "solid-js": ">=1.0",
@@ -156,13 +184,16 @@
156
184
  "vue": ">=3.2"
157
185
  },
158
186
  "peerDependenciesMeta": {
159
- "react": {
187
+ "@angular/common": {
160
188
  "optional": true
161
189
  },
162
- "react-dom": {
190
+ "@angular/core": {
163
191
  "optional": true
164
192
  },
165
- "vue": {
193
+ "react": {
194
+ "optional": true
195
+ },
196
+ "react-dom": {
166
197
  "optional": true
167
198
  },
168
199
  "solid-js": {
@@ -170,6 +201,9 @@
170
201
  },
171
202
  "svelte": {
172
203
  "optional": true
204
+ },
205
+ "vue": {
206
+ "optional": true
173
207
  }
174
208
  },
175
209
  "repository": {
@@ -182,6 +216,7 @@
182
216
  "vue",
183
217
  "solid",
184
218
  "svelte",
219
+ "angular",
185
220
  "ui",
186
221
  "headless",
187
222
  "list",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}