@nous-research/ui 0.13.2 → 0.14.0

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 (317) hide show
  1. package/dist/assets/filler-bg0.webp +0 -0
  2. package/dist/assets.d.ts +38 -0
  3. package/dist/fonts.d.ts +0 -1
  4. package/dist/fonts.js +5 -7
  5. package/dist/hooks/use-capped-frame.d.ts +0 -1
  6. package/dist/hooks/use-capped-frame.js +12 -13
  7. package/dist/hooks/use-css-var-dims.d.ts +0 -1
  8. package/dist/hooks/use-css-var-dims.js +26 -21
  9. package/dist/hooks/use-gpu-tier.d.ts +0 -1
  10. package/dist/hooks/use-gpu-tier.js +90 -110
  11. package/dist/hooks/use-render-loop.d.ts +0 -1
  12. package/dist/hooks/use-render-loop.js +58 -58
  13. package/dist/hooks/use-smooth-controls.d.ts +0 -1
  14. package/dist/hooks/use-smooth-controls.js +204 -206
  15. package/dist/index.d.ts +0 -1
  16. package/dist/index.js +84 -58
  17. package/dist/ui/basic-page.d.ts +1 -2
  18. package/dist/ui/basic-page.js +15 -7
  19. package/dist/ui/components/animated-count.d.ts +1 -2
  20. package/dist/ui/components/animated-count.js +109 -85
  21. package/dist/ui/components/ascii.d.ts +2 -3
  22. package/dist/ui/components/ascii.js +75 -59
  23. package/dist/ui/components/badge.d.ts +1 -2
  24. package/dist/ui/components/badge.js +35 -18
  25. package/dist/ui/components/badges/nous-girl.d.ts +1 -2
  26. package/dist/ui/components/badges/nous-girl.js +80 -3
  27. package/dist/ui/components/blend-mode.d.ts +1 -2
  28. package/dist/ui/components/blend-mode.js +55 -63
  29. package/dist/ui/components/blink.d.ts +1 -2
  30. package/dist/ui/components/blink.js +15 -6
  31. package/dist/ui/components/button.d.ts +2 -3
  32. package/dist/ui/components/button.js +139 -90
  33. package/dist/ui/components/command-block.d.ts +2 -3
  34. package/dist/ui/components/command-block.js +52 -24
  35. package/dist/ui/components/cursor.d.ts +1 -2
  36. package/dist/ui/components/cursor.js +93 -54
  37. package/dist/ui/components/dropdown-menu.d.ts +1 -2
  38. package/dist/ui/components/dropdown-menu.js +99 -51
  39. package/dist/ui/components/fit-text/index.d.ts +0 -1
  40. package/dist/ui/components/fit-text/index.js +21 -13
  41. package/dist/ui/components/graphs/bar-chart.d.ts +1 -2
  42. package/dist/ui/components/graphs/bar-chart.js +116 -63
  43. package/dist/ui/components/graphs/index.d.ts +0 -1
  44. package/dist/ui/components/graphs/index.js +3 -4
  45. package/dist/ui/components/graphs/line-chart.d.ts +1 -2
  46. package/dist/ui/components/graphs/line-chart.js +159 -102
  47. package/dist/ui/components/graphs/utils.d.ts +2 -3
  48. package/dist/ui/components/graphs/utils.js +147 -114
  49. package/dist/ui/components/grid/index.d.ts +0 -1
  50. package/dist/ui/components/grid/index.js +12 -9
  51. package/dist/ui/components/hover-bg.d.ts +0 -1
  52. package/dist/ui/components/hover-bg.js +11 -6
  53. package/dist/ui/components/icons/arrow.d.ts +1 -2
  54. package/dist/ui/components/icons/arrow.js +42 -5
  55. package/dist/ui/components/icons/chevron.d.ts +1 -2
  56. package/dist/ui/components/icons/chevron.js +49 -5
  57. package/dist/ui/components/icons/discord.d.ts +1 -2
  58. package/dist/ui/components/icons/discord.js +12 -4
  59. package/dist/ui/components/icons/eye.d.ts +1 -2
  60. package/dist/ui/components/icons/eye.js +5 -3
  61. package/dist/ui/components/icons/gear.d.ts +1 -2
  62. package/dist/ui/components/icons/gear.js +28 -14
  63. package/dist/ui/components/icons/github.d.ts +1 -2
  64. package/dist/ui/components/icons/github.js +12 -4
  65. package/dist/ui/components/icons/hamburger.d.ts +1 -2
  66. package/dist/ui/components/icons/hamburger.js +54 -5
  67. package/dist/ui/components/icons/heart.d.ts +1 -2
  68. package/dist/ui/components/icons/heart.js +8 -3
  69. package/dist/ui/components/icons/index.d.ts +0 -1
  70. package/dist/ui/components/icons/index.js +11 -12
  71. package/dist/ui/components/icons/link.d.ts +1 -2
  72. package/dist/ui/components/icons/link.js +10 -3
  73. package/dist/ui/components/icons/minus.d.ts +1 -2
  74. package/dist/ui/components/icons/minus.js +10 -3
  75. package/dist/ui/components/icons/search.d.ts +1 -2
  76. package/dist/ui/components/icons/search.js +30 -3
  77. package/dist/ui/components/image-distortion.d.ts +1 -2
  78. package/dist/ui/components/image-distortion.js +300 -265
  79. package/dist/ui/components/leva-client.d.ts +1 -2
  80. package/dist/ui/components/leva-client.js +9 -10
  81. package/dist/ui/components/list-item.d.ts +0 -1
  82. package/dist/ui/components/list-item.js +26 -10
  83. package/dist/ui/components/modal/index.d.ts +1 -2
  84. package/dist/ui/components/modal/index.js +33 -14
  85. package/dist/ui/components/overlays/blend-modes.d.ts +0 -1
  86. package/dist/ui/components/overlays/blend-modes.js +11 -12
  87. package/dist/ui/components/overlays/glitch.d.ts +1 -2
  88. package/dist/ui/components/overlays/glitch.js +115 -110
  89. package/dist/ui/components/overlays/greys.d.ts +1 -2
  90. package/dist/ui/components/overlays/greys.js +200 -179
  91. package/dist/ui/components/overlays/index.d.ts +1 -2
  92. package/dist/ui/components/overlays/index.js +31 -17
  93. package/dist/ui/components/overlays/lens-layers.d.ts +1 -2
  94. package/dist/ui/components/overlays/lens-layers.js +89 -65
  95. package/dist/ui/components/overlays/lens.d.ts +0 -1
  96. package/dist/ui/components/overlays/lens.js +46 -52
  97. package/dist/ui/components/overlays/noise.d.ts +1 -2
  98. package/dist/ui/components/overlays/noise.js +112 -113
  99. package/dist/ui/components/overlays/vignette.d.ts +1 -2
  100. package/dist/ui/components/overlays/vignette.js +44 -38
  101. package/dist/ui/components/poster.d.ts +1 -2
  102. package/dist/ui/components/poster.js +240 -87
  103. package/dist/ui/components/progress.d.ts +1 -2
  104. package/dist/ui/components/progress.js +52 -12
  105. package/dist/ui/components/scene-canvas.d.ts +1 -2
  106. package/dist/ui/components/scene-canvas.js +169 -119
  107. package/dist/ui/components/scramble.d.ts +1 -2
  108. package/dist/ui/components/scramble.js +60 -59
  109. package/dist/ui/components/segmented.d.ts +2 -3
  110. package/dist/ui/components/segmented.js +47 -12
  111. package/dist/ui/components/select.d.ts +1 -2
  112. package/dist/ui/components/select.js +207 -120
  113. package/dist/ui/components/selection-switcher.d.ts +0 -1
  114. package/dist/ui/components/selection-switcher.js +29 -25
  115. package/dist/ui/components/shader.d.ts +1 -2
  116. package/dist/ui/components/shader.js +56 -38
  117. package/dist/ui/components/socials.d.ts +1 -2
  118. package/dist/ui/components/socials.js +18 -7
  119. package/dist/ui/components/spinner.d.ts +1 -2
  120. package/dist/ui/components/spinner.js +36 -25
  121. package/dist/ui/components/stats.d.ts +1 -2
  122. package/dist/ui/components/stats.js +33 -9
  123. package/dist/ui/components/switch.d.ts +0 -1
  124. package/dist/ui/components/switch.js +35 -11
  125. package/dist/ui/components/tabs.d.ts +3 -4
  126. package/dist/ui/components/tabs.js +38 -12
  127. package/dist/ui/components/terminal-demo.d.ts +1 -2
  128. package/dist/ui/components/terminal-demo.js +119 -74
  129. package/dist/ui/components/theme-toggle.d.ts +1 -2
  130. package/dist/ui/components/theme-toggle.js +63 -8
  131. package/dist/ui/components/tier-card.d.ts +1 -2
  132. package/dist/ui/components/tier-card.js +144 -24
  133. package/dist/ui/components/tv.d.ts +1 -2
  134. package/dist/ui/components/tv.js +138 -90
  135. package/dist/ui/components/typography/h1.d.ts +0 -1
  136. package/dist/ui/components/typography/h1.js +17 -8
  137. package/dist/ui/components/typography/h2.d.ts +0 -1
  138. package/dist/ui/components/typography/h2.js +17 -8
  139. package/dist/ui/components/typography/index.d.ts +0 -1
  140. package/dist/ui/components/typography/index.js +35 -24
  141. package/dist/ui/components/typography/legend.d.ts +1 -2
  142. package/dist/ui/components/typography/legend.js +18 -6
  143. package/dist/ui/components/typography/small.d.ts +0 -1
  144. package/dist/ui/components/typography/small.js +8 -7
  145. package/dist/ui/components/watchlist.d.ts +1 -2
  146. package/dist/ui/components/watchlist.js +77 -25
  147. package/dist/ui/fonts.css +7 -7
  148. package/dist/ui/footer.d.ts +1 -2
  149. package/dist/ui/footer.js +61 -25
  150. package/dist/ui/header.d.ts +1 -2
  151. package/dist/ui/header.js +255 -60
  152. package/dist/ui/layout-wrapper.d.ts +1 -2
  153. package/dist/ui/layout-wrapper.js +5 -4
  154. package/dist/utils/color.d.ts +0 -1
  155. package/dist/utils/color.js +8 -9
  156. package/dist/utils/index.d.ts +0 -1
  157. package/dist/utils/index.js +37 -38
  158. package/dist/utils/poly.d.ts +0 -1
  159. package/dist/utils/poly.js +1 -2
  160. package/package.json +41 -24
  161. package/dist/assets/filler-bg0.jpg +0 -0
  162. package/dist/fonts.d.ts.map +0 -1
  163. package/dist/fonts.js.map +0 -1
  164. package/dist/hooks/use-capped-frame.d.ts.map +0 -1
  165. package/dist/hooks/use-capped-frame.js.map +0 -1
  166. package/dist/hooks/use-css-var-dims.d.ts.map +0 -1
  167. package/dist/hooks/use-css-var-dims.js.map +0 -1
  168. package/dist/hooks/use-gpu-tier.d.ts.map +0 -1
  169. package/dist/hooks/use-gpu-tier.js.map +0 -1
  170. package/dist/hooks/use-render-loop.d.ts.map +0 -1
  171. package/dist/hooks/use-render-loop.js.map +0 -1
  172. package/dist/hooks/use-smooth-controls.d.ts.map +0 -1
  173. package/dist/hooks/use-smooth-controls.js.map +0 -1
  174. package/dist/index.d.ts.map +0 -1
  175. package/dist/index.js.map +0 -1
  176. package/dist/ui/basic-page.d.ts.map +0 -1
  177. package/dist/ui/basic-page.js.map +0 -1
  178. package/dist/ui/components/animated-count.d.ts.map +0 -1
  179. package/dist/ui/components/animated-count.js.map +0 -1
  180. package/dist/ui/components/ascii.d.ts.map +0 -1
  181. package/dist/ui/components/ascii.js.map +0 -1
  182. package/dist/ui/components/badge.d.ts.map +0 -1
  183. package/dist/ui/components/badge.js.map +0 -1
  184. package/dist/ui/components/badges/nous-girl.d.ts.map +0 -1
  185. package/dist/ui/components/badges/nous-girl.js.map +0 -1
  186. package/dist/ui/components/blend-mode.d.ts.map +0 -1
  187. package/dist/ui/components/blend-mode.js.map +0 -1
  188. package/dist/ui/components/blink.d.ts.map +0 -1
  189. package/dist/ui/components/blink.js.map +0 -1
  190. package/dist/ui/components/button.d.ts.map +0 -1
  191. package/dist/ui/components/button.js.map +0 -1
  192. package/dist/ui/components/command-block.d.ts.map +0 -1
  193. package/dist/ui/components/command-block.js.map +0 -1
  194. package/dist/ui/components/cursor.d.ts.map +0 -1
  195. package/dist/ui/components/cursor.js.map +0 -1
  196. package/dist/ui/components/dropdown-menu.d.ts.map +0 -1
  197. package/dist/ui/components/dropdown-menu.js.map +0 -1
  198. package/dist/ui/components/fit-text/index.d.ts.map +0 -1
  199. package/dist/ui/components/fit-text/index.js.map +0 -1
  200. package/dist/ui/components/graphs/bar-chart.d.ts.map +0 -1
  201. package/dist/ui/components/graphs/bar-chart.js.map +0 -1
  202. package/dist/ui/components/graphs/index.d.ts.map +0 -1
  203. package/dist/ui/components/graphs/index.js.map +0 -1
  204. package/dist/ui/components/graphs/line-chart.d.ts.map +0 -1
  205. package/dist/ui/components/graphs/line-chart.js.map +0 -1
  206. package/dist/ui/components/graphs/utils.d.ts.map +0 -1
  207. package/dist/ui/components/graphs/utils.js.map +0 -1
  208. package/dist/ui/components/grid/index.d.ts.map +0 -1
  209. package/dist/ui/components/grid/index.js.map +0 -1
  210. package/dist/ui/components/hover-bg.d.ts.map +0 -1
  211. package/dist/ui/components/hover-bg.js.map +0 -1
  212. package/dist/ui/components/icons/arrow.d.ts.map +0 -1
  213. package/dist/ui/components/icons/arrow.js.map +0 -1
  214. package/dist/ui/components/icons/chevron.d.ts.map +0 -1
  215. package/dist/ui/components/icons/chevron.js.map +0 -1
  216. package/dist/ui/components/icons/discord.d.ts.map +0 -1
  217. package/dist/ui/components/icons/discord.js.map +0 -1
  218. package/dist/ui/components/icons/eye.d.ts.map +0 -1
  219. package/dist/ui/components/icons/eye.js.map +0 -1
  220. package/dist/ui/components/icons/gear.d.ts.map +0 -1
  221. package/dist/ui/components/icons/gear.js.map +0 -1
  222. package/dist/ui/components/icons/github.d.ts.map +0 -1
  223. package/dist/ui/components/icons/github.js.map +0 -1
  224. package/dist/ui/components/icons/hamburger.d.ts.map +0 -1
  225. package/dist/ui/components/icons/hamburger.js.map +0 -1
  226. package/dist/ui/components/icons/heart.d.ts.map +0 -1
  227. package/dist/ui/components/icons/heart.js.map +0 -1
  228. package/dist/ui/components/icons/index.d.ts.map +0 -1
  229. package/dist/ui/components/icons/index.js.map +0 -1
  230. package/dist/ui/components/icons/link.d.ts.map +0 -1
  231. package/dist/ui/components/icons/link.js.map +0 -1
  232. package/dist/ui/components/icons/minus.d.ts.map +0 -1
  233. package/dist/ui/components/icons/minus.js.map +0 -1
  234. package/dist/ui/components/icons/search.d.ts.map +0 -1
  235. package/dist/ui/components/icons/search.js.map +0 -1
  236. package/dist/ui/components/image-distortion.d.ts.map +0 -1
  237. package/dist/ui/components/image-distortion.js.map +0 -1
  238. package/dist/ui/components/leva-client.d.ts.map +0 -1
  239. package/dist/ui/components/leva-client.js.map +0 -1
  240. package/dist/ui/components/list-item.d.ts.map +0 -1
  241. package/dist/ui/components/list-item.js.map +0 -1
  242. package/dist/ui/components/modal/index.d.ts.map +0 -1
  243. package/dist/ui/components/modal/index.js.map +0 -1
  244. package/dist/ui/components/overlays/blend-modes.d.ts.map +0 -1
  245. package/dist/ui/components/overlays/blend-modes.js.map +0 -1
  246. package/dist/ui/components/overlays/glitch.d.ts.map +0 -1
  247. package/dist/ui/components/overlays/glitch.js.map +0 -1
  248. package/dist/ui/components/overlays/greys.d.ts.map +0 -1
  249. package/dist/ui/components/overlays/greys.js.map +0 -1
  250. package/dist/ui/components/overlays/index.d.ts.map +0 -1
  251. package/dist/ui/components/overlays/index.js.map +0 -1
  252. package/dist/ui/components/overlays/lens-layers.d.ts.map +0 -1
  253. package/dist/ui/components/overlays/lens-layers.js.map +0 -1
  254. package/dist/ui/components/overlays/lens.d.ts.map +0 -1
  255. package/dist/ui/components/overlays/lens.js.map +0 -1
  256. package/dist/ui/components/overlays/noise.d.ts.map +0 -1
  257. package/dist/ui/components/overlays/noise.js.map +0 -1
  258. package/dist/ui/components/overlays/vignette.d.ts.map +0 -1
  259. package/dist/ui/components/overlays/vignette.js.map +0 -1
  260. package/dist/ui/components/poster.d.ts.map +0 -1
  261. package/dist/ui/components/poster.js.map +0 -1
  262. package/dist/ui/components/progress.d.ts.map +0 -1
  263. package/dist/ui/components/progress.js.map +0 -1
  264. package/dist/ui/components/scene-canvas.d.ts.map +0 -1
  265. package/dist/ui/components/scene-canvas.js.map +0 -1
  266. package/dist/ui/components/scramble.d.ts.map +0 -1
  267. package/dist/ui/components/scramble.js.map +0 -1
  268. package/dist/ui/components/segmented.d.ts.map +0 -1
  269. package/dist/ui/components/segmented.js.map +0 -1
  270. package/dist/ui/components/select.d.ts.map +0 -1
  271. package/dist/ui/components/select.js.map +0 -1
  272. package/dist/ui/components/selection-switcher.d.ts.map +0 -1
  273. package/dist/ui/components/selection-switcher.js.map +0 -1
  274. package/dist/ui/components/shader.d.ts.map +0 -1
  275. package/dist/ui/components/shader.js.map +0 -1
  276. package/dist/ui/components/socials.d.ts.map +0 -1
  277. package/dist/ui/components/socials.js.map +0 -1
  278. package/dist/ui/components/spinner.d.ts.map +0 -1
  279. package/dist/ui/components/spinner.js.map +0 -1
  280. package/dist/ui/components/stats.d.ts.map +0 -1
  281. package/dist/ui/components/stats.js.map +0 -1
  282. package/dist/ui/components/switch.d.ts.map +0 -1
  283. package/dist/ui/components/switch.js.map +0 -1
  284. package/dist/ui/components/tabs.d.ts.map +0 -1
  285. package/dist/ui/components/tabs.js.map +0 -1
  286. package/dist/ui/components/terminal-demo.d.ts.map +0 -1
  287. package/dist/ui/components/terminal-demo.js.map +0 -1
  288. package/dist/ui/components/theme-toggle.d.ts.map +0 -1
  289. package/dist/ui/components/theme-toggle.js.map +0 -1
  290. package/dist/ui/components/tier-card.d.ts.map +0 -1
  291. package/dist/ui/components/tier-card.js.map +0 -1
  292. package/dist/ui/components/tv.d.ts.map +0 -1
  293. package/dist/ui/components/tv.js.map +0 -1
  294. package/dist/ui/components/typography/h1.d.ts.map +0 -1
  295. package/dist/ui/components/typography/h1.js.map +0 -1
  296. package/dist/ui/components/typography/h2.d.ts.map +0 -1
  297. package/dist/ui/components/typography/h2.js.map +0 -1
  298. package/dist/ui/components/typography/index.d.ts.map +0 -1
  299. package/dist/ui/components/typography/index.js.map +0 -1
  300. package/dist/ui/components/typography/legend.d.ts.map +0 -1
  301. package/dist/ui/components/typography/legend.js.map +0 -1
  302. package/dist/ui/components/typography/small.d.ts.map +0 -1
  303. package/dist/ui/components/typography/small.js.map +0 -1
  304. package/dist/ui/components/watchlist.d.ts.map +0 -1
  305. package/dist/ui/components/watchlist.js.map +0 -1
  306. package/dist/ui/footer.d.ts.map +0 -1
  307. package/dist/ui/footer.js.map +0 -1
  308. package/dist/ui/header.d.ts.map +0 -1
  309. package/dist/ui/header.js.map +0 -1
  310. package/dist/ui/layout-wrapper.d.ts.map +0 -1
  311. package/dist/ui/layout-wrapper.js.map +0 -1
  312. package/dist/utils/color.d.ts.map +0 -1
  313. package/dist/utils/color.js.map +0 -1
  314. package/dist/utils/index.d.ts.map +0 -1
  315. package/dist/utils/index.js.map +0 -1
  316. package/dist/utils/poly.d.ts.map +0 -1
  317. package/dist/utils/poly.js.map +0 -1
Binary file
@@ -0,0 +1,38 @@
1
+ interface StaticImageData {
2
+ src: string
3
+ height: number
4
+ width: number
5
+ blurDataURL?: string
6
+ blurWidth?: number
7
+ blurHeight?: number
8
+ }
9
+
10
+ declare module '*.jpg' {
11
+ const content: StaticImageData
12
+ export default content
13
+ }
14
+
15
+ declare module '*.jpeg' {
16
+ const content: StaticImageData
17
+ export default content
18
+ }
19
+
20
+ declare module '*.png' {
21
+ const content: StaticImageData
22
+ export default content
23
+ }
24
+
25
+ declare module '*.svg' {
26
+ const content: StaticImageData
27
+ export default content
28
+ }
29
+
30
+ declare module '*.gif' {
31
+ const content: StaticImageData
32
+ export default content
33
+ }
34
+
35
+ declare module '*.webp' {
36
+ const content: StaticImageData
37
+ export default content
38
+ }
package/dist/fonts.d.ts CHANGED
@@ -4,4 +4,3 @@ export declare const FONT_MONO = "--font-mono";
4
4
  export declare const FONT_RULES_COMPRESSED = "--font-rules-compressed";
5
5
  export declare const FONT_RULES_EXPANDED = "--font-rules-expanded";
6
6
  export declare const FONT_MONDWEST = "--font-mondwest";
7
- //# sourceMappingURL=fonts.d.ts.map
package/dist/fonts.js CHANGED
@@ -1,7 +1,5 @@
1
- /** CSS variable names for the design language fonts. Set automatically by fonts.css. */
2
- export const FONT_SANS = '--font-sans';
3
- export const FONT_MONO = '--font-mono';
4
- export const FONT_RULES_COMPRESSED = '--font-rules-compressed';
5
- export const FONT_RULES_EXPANDED = '--font-rules-expanded';
6
- export const FONT_MONDWEST = '--font-mondwest';
7
- //# sourceMappingURL=fonts.js.map
1
+ export const FONT_SANS = "--font-sans";
2
+ export const FONT_MONO = "--font-mono";
3
+ export const FONT_RULES_COMPRESSED = "--font-rules-compressed";
4
+ export const FONT_RULES_EXPANDED = "--font-rules-expanded";
5
+ export const FONT_MONDWEST = "--font-mondwest";
@@ -1,3 +1,2 @@
1
1
  import type { RenderCallback } from '@react-three/fiber';
2
2
  export declare function useCappedFrame(cb: RenderCallback, max?: number): void;
3
- //# sourceMappingURL=use-capped-frame.d.ts.map
@@ -1,15 +1,14 @@
1
- 'use client';
2
- import { useFrame, useThree } from '@react-three/fiber';
3
- import { useRef } from 'react';
1
+ "use client";
2
+ import { useFrame, useThree } from "@react-three/fiber";
3
+ import { useRef } from "react";
4
4
  export function useCappedFrame(cb, max) {
5
- const last = useRef(performance.now());
6
- const { size } = useThree();
7
- const interval = 1e3 / (max ?? (size.width < 1024 ? 60 : 120));
8
- useFrame((st, delta) => {
9
- if (performance.now() - last.current > interval) {
10
- last.current = performance.now();
11
- cb(st, delta);
12
- }
13
- });
5
+ const last = useRef(performance.now());
6
+ const { size } = useThree();
7
+ const interval = 1e3 / (max ?? (size.width < 1024 ? 60 : 120));
8
+ useFrame((st, delta) => {
9
+ if (performance.now() - last.current > interval) {
10
+ last.current = performance.now();
11
+ cb(st, delta);
12
+ }
13
+ });
14
14
  }
15
- //# sourceMappingURL=use-capped-frame.js.map
@@ -1,2 +1 @@
1
1
  export declare function useCssVarDims(name: string, ref: React.RefObject<HTMLElement | null>): void;
2
- //# sourceMappingURL=use-css-var-dims.d.ts.map
@@ -1,23 +1,28 @@
1
- 'use client';
2
- import { useEffect } from 'react';
1
+ "use client";
2
+ import { useEffect } from "react";
3
3
  export function useCssVarDims(name, ref) {
4
- useEffect(() => {
5
- if (!ref.current) {
6
- return;
7
- }
8
- const update = (width, height) => {
9
- document.documentElement.style.setProperty(`--${name}-width`, `${width}px`);
10
- document.documentElement.style.setProperty(`--${name}-height`, `${height}px`);
11
- };
12
- const { height, width } = ref.current.getBoundingClientRect();
13
- update(width, height);
14
- const ro = new ResizeObserver(entries => {
15
- for (const entry of entries) {
16
- update(entry.contentRect.width, entry.contentRect.height);
17
- }
18
- });
19
- ro.observe(ref.current);
20
- return () => ro.disconnect();
21
- }, [name, ref]);
4
+ useEffect(() => {
5
+ if (!ref.current) {
6
+ return;
7
+ }
8
+ const update = (width2, height2) => {
9
+ document.documentElement.style.setProperty(
10
+ `--${name}-width`,
11
+ `${width2}px`
12
+ );
13
+ document.documentElement.style.setProperty(
14
+ `--${name}-height`,
15
+ `${height2}px`
16
+ );
17
+ };
18
+ const { height, width } = ref.current.getBoundingClientRect();
19
+ update(width, height);
20
+ const ro = new ResizeObserver((entries) => {
21
+ for (const entry of entries) {
22
+ update(entry.contentRect.width, entry.contentRect.height);
23
+ }
24
+ });
25
+ ro.observe(ref.current);
26
+ return () => ro.disconnect();
27
+ }, [name, ref]);
22
28
  }
23
- //# sourceMappingURL=use-css-var-dims.js.map
@@ -22,4 +22,3 @@ export declare const $gpuTier: import("nanostores").PreinitializedWritableAtom<G
22
22
  export declare function useGpuTier(): GpuTier;
23
23
  type GpuTier = 0 | 1 | 2;
24
24
  export {};
25
- //# sourceMappingURL=use-gpu-tier.d.ts.map
@@ -1,122 +1,102 @@
1
- 'use client';
2
- import { useStore } from '@nanostores/react';
3
- import { atom } from 'nanostores';
4
- /**
5
- * Tiers:
6
- * 0 — no WebGL / software renderer / prefers-reduced-motion / WebGL ctx creation failed
7
- * 1 — low-end GPU (integrated, mobile, or failed perf benchmark)
8
- * 2 — capable GPU (discrete / high-end integrated)
9
- *
10
- * Detection runs **synchronously** the first time this module is evaluated
11
- * on the client (see the IIFE at the bottom of the file). That means any
12
- * consumer reading `$gpuTier` during its first render already sees the
13
- * post-detection value, so WebGL components can avoid trying to create a
14
- * `THREE.WebGLRenderer` on hardware where context creation will fail.
15
- *
16
- * The previous version ran the probe inside `nanostores`'s `onMount`
17
- * lifecycle, which fires from a microtask after the first listener
18
- * subscribes — i.e. after the first React commit. By that point overlay
19
- * components had already executed `new THREE.WebGLRenderer(...)` against
20
- * the optimistic default, logged `Error creating WebGL context`, and only
21
- * unmounted on a follow-up render. Eager module-load detection closes that
22
- * race.
23
- */
1
+ "use client";
2
+ import { useStore } from "@nanostores/react";
3
+ import { atom } from "nanostores";
24
4
  export const $gpuTier = atom(2);
25
5
  const SOFTWARE_PATTERNS = /swiftshader|llvmpipe|softpipe|software|microsoft basic/i;
26
6
  const LOW_END_PATTERNS = /intel.*hd|intel.*uhd|intel.*iris|mali|adreno\s?[1-5]|powervr|apple gpu/i;
27
7
  let detected = false;
28
8
  function detectGpuTier() {
29
- if (detected || typeof window === 'undefined') {
30
- return;
31
- }
32
- detected = true;
33
- if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
34
- $gpuTier.set(0);
35
- return;
36
- }
37
- let gl = null;
38
- try {
39
- const canvas = document.createElement('canvas');
40
- gl = (canvas.getContext('webgl') ||
41
- canvas.getContext('experimental-webgl'));
42
- }
43
- catch {
44
- // Some sandboxed / hardened contexts throw on getContext rather than
45
- // returning null (e.g. certain corporate browser policies). Treat as
46
- // "no WebGL available".
47
- $gpuTier.set(0);
48
- return;
49
- }
50
- if (!gl) {
51
- $gpuTier.set(0);
52
- return;
53
- }
54
- const ext = gl.getExtension('WEBGL_debug_renderer_info');
55
- const renderer = String(ext
56
- ? gl.getParameter(ext.UNMASKED_RENDERER_WEBGL)
57
- : gl.getParameter(gl.RENDERER));
58
- if (SOFTWARE_PATTERNS.test(renderer)) {
59
- $gpuTier.set(0);
60
- gl.getExtension('WEBGL_lose_context')?.loseContext();
61
- return;
62
- }
63
- if (LOW_END_PATTERNS.test(renderer)) {
64
- $gpuTier.set(1);
65
- gl.getExtension('WEBGL_lose_context')?.loseContext();
66
- return;
67
- }
68
- $gpuTier.set(2);
69
- runBenchmark(gl)
70
- .then(fps => $gpuTier.set(fps < 30 ? 1 : 2))
71
- .catch(() => $gpuTier.set(1))
72
- .finally(() => gl?.getExtension('WEBGL_lose_context')?.loseContext());
9
+ if (detected || typeof window === "undefined") {
10
+ return;
11
+ }
12
+ detected = true;
13
+ if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
14
+ $gpuTier.set(0);
15
+ return;
16
+ }
17
+ let gl = null;
18
+ try {
19
+ const canvas = document.createElement("canvas");
20
+ gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
21
+ } catch {
22
+ $gpuTier.set(0);
23
+ return;
24
+ }
25
+ if (!gl) {
26
+ $gpuTier.set(0);
27
+ return;
28
+ }
29
+ const ext = gl.getExtension("WEBGL_debug_renderer_info");
30
+ const renderer = String(
31
+ ext ? gl.getParameter(ext.UNMASKED_RENDERER_WEBGL) : gl.getParameter(gl.RENDERER)
32
+ );
33
+ if (SOFTWARE_PATTERNS.test(renderer)) {
34
+ $gpuTier.set(0);
35
+ gl.getExtension("WEBGL_lose_context")?.loseContext();
36
+ return;
37
+ }
38
+ if (LOW_END_PATTERNS.test(renderer)) {
39
+ $gpuTier.set(1);
40
+ gl.getExtension("WEBGL_lose_context")?.loseContext();
41
+ return;
42
+ }
43
+ $gpuTier.set(2);
44
+ runBenchmark(gl).then((fps) => $gpuTier.set(fps < 30 ? 1 : 2)).catch(() => $gpuTier.set(1)).finally(() => gl?.getExtension("WEBGL_lose_context")?.loseContext());
73
45
  }
74
- if (typeof window !== 'undefined') {
75
- detectGpuTier();
46
+ if (typeof window !== "undefined") {
47
+ detectGpuTier();
76
48
  }
77
49
  function runBenchmark(gl) {
78
- return new Promise(resolve => {
79
- const vs = gl.createShader(gl.VERTEX_SHADER);
80
- const fs = gl.createShader(gl.FRAGMENT_SHADER);
81
- gl.shaderSource(vs, 'attribute vec2 a;void main(){gl_Position=vec4(a,0,1);}');
82
- gl.shaderSource(fs, 'precision highp float;uniform float t;void main(){float v=0.;for(int i=0;i<64;i++)v+=sin(float(i)*t*.01);gl_FragColor=vec4(v*.001);}');
83
- gl.compileShader(vs);
84
- gl.compileShader(fs);
85
- const prog = gl.createProgram();
86
- gl.attachShader(prog, vs);
87
- gl.attachShader(prog, fs);
88
- gl.linkProgram(prog);
89
- gl.useProgram(prog);
90
- const buf = gl.createBuffer();
91
- gl.bindBuffer(gl.ARRAY_BUFFER, buf);
92
- gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]), gl.STATIC_DRAW);
93
- const a = gl.getAttribLocation(prog, 'a');
94
- gl.enableVertexAttribArray(a);
95
- gl.vertexAttribPointer(a, 2, gl.FLOAT, false, 0, 0);
96
- const uT = gl.getUniformLocation(prog, 't');
97
- let frames = 0;
98
- const start = performance.now();
99
- const tick = () => {
100
- gl.uniform1f(uT, frames);
101
- gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
102
- gl.finish();
103
- frames++;
104
- if (performance.now() - start < 200) {
105
- requestAnimationFrame(tick);
106
- }
107
- else {
108
- const elapsed = performance.now() - start;
109
- gl.deleteProgram(prog);
110
- gl.deleteShader(vs);
111
- gl.deleteShader(fs);
112
- gl.deleteBuffer(buf);
113
- resolve((frames / elapsed) * 1000);
114
- }
115
- };
50
+ return new Promise((resolve) => {
51
+ const vs = gl.createShader(gl.VERTEX_SHADER);
52
+ const fs = gl.createShader(gl.FRAGMENT_SHADER);
53
+ gl.shaderSource(
54
+ vs,
55
+ "attribute vec2 a;void main(){gl_Position=vec4(a,0,1);}"
56
+ );
57
+ gl.shaderSource(
58
+ fs,
59
+ "precision highp float;uniform float t;void main(){float v=0.;for(int i=0;i<64;i++)v+=sin(float(i)*t*.01);gl_FragColor=vec4(v*.001);}"
60
+ );
61
+ gl.compileShader(vs);
62
+ gl.compileShader(fs);
63
+ const prog = gl.createProgram();
64
+ gl.attachShader(prog, vs);
65
+ gl.attachShader(prog, fs);
66
+ gl.linkProgram(prog);
67
+ gl.useProgram(prog);
68
+ const buf = gl.createBuffer();
69
+ gl.bindBuffer(gl.ARRAY_BUFFER, buf);
70
+ gl.bufferData(
71
+ gl.ARRAY_BUFFER,
72
+ new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]),
73
+ gl.STATIC_DRAW
74
+ );
75
+ const a = gl.getAttribLocation(prog, "a");
76
+ gl.enableVertexAttribArray(a);
77
+ gl.vertexAttribPointer(a, 2, gl.FLOAT, false, 0, 0);
78
+ const uT = gl.getUniformLocation(prog, "t");
79
+ let frames = 0;
80
+ const start = performance.now();
81
+ const tick = () => {
82
+ gl.uniform1f(uT, frames);
83
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
84
+ gl.finish();
85
+ frames++;
86
+ if (performance.now() - start < 200) {
116
87
  requestAnimationFrame(tick);
117
- });
88
+ } else {
89
+ const elapsed = performance.now() - start;
90
+ gl.deleteProgram(prog);
91
+ gl.deleteShader(vs);
92
+ gl.deleteShader(fs);
93
+ gl.deleteBuffer(buf);
94
+ resolve(frames / elapsed * 1e3);
95
+ }
96
+ };
97
+ requestAnimationFrame(tick);
98
+ });
118
99
  }
119
100
  export function useGpuTier() {
120
- return useStore($gpuTier);
101
+ return useStore($gpuTier);
121
102
  }
122
- //# sourceMappingURL=use-gpu-tier.js.map
@@ -39,4 +39,3 @@ interface RunRenderLoopOptions {
39
39
  }
40
40
  export declare function runRenderLoop({ el, minIntervalMs, onFrame }: RunRenderLoopOptions): () => void;
41
41
  export {};
42
- //# sourceMappingURL=use-render-loop.d.ts.map
@@ -1,62 +1,62 @@
1
- 'use client';
2
- export function runRenderLoop({ el, minIntervalMs = 0, onFrame }) {
3
- let running = true;
4
- let visible = !document.hidden;
5
- let inView = true;
6
- let last = performance.now();
7
- let raf = 0;
8
- let timer;
9
- const onVisibility = () => {
10
- visible = !document.hidden;
11
- // When we come back from a hidden tab, reset the clock so the next
12
- // frame's delta is ~one frame, not "hours since I was hidden".
13
- if (visible) {
14
- last = performance.now();
15
- schedule();
16
- }
17
- };
18
- const io = new IntersectionObserver(entries => {
19
- const wasInView = inView;
20
- inView = entries.some(e => e.isIntersecting);
21
- if (!wasInView && inView) {
22
- last = performance.now();
23
- schedule();
24
- }
25
- }, { threshold: 0 });
26
- io.observe(el);
27
- document.addEventListener('visibilitychange', onVisibility);
28
- const tick = () => {
29
- if (!running)
30
- return;
31
- if (!visible || !inView) {
32
- // Don't reschedule — we'll be re-kicked by visibilitychange or IO.
33
- return;
34
- }
35
- const now = performance.now();
36
- const delta = (now - last) / 1000;
37
- last = now;
38
- onFrame(delta);
1
+ "use client";
2
+ export function runRenderLoop({
3
+ el,
4
+ minIntervalMs = 0,
5
+ onFrame
6
+ }) {
7
+ let running = true;
8
+ let visible = !document.hidden;
9
+ let inView = true;
10
+ let last = performance.now();
11
+ let raf = 0;
12
+ let timer;
13
+ const onVisibility = () => {
14
+ visible = !document.hidden;
15
+ if (visible) {
16
+ last = performance.now();
17
+ schedule();
18
+ }
19
+ };
20
+ const io = new IntersectionObserver(
21
+ (entries) => {
22
+ const wasInView = inView;
23
+ inView = entries.some((e) => e.isIntersecting);
24
+ if (!wasInView && inView) {
25
+ last = performance.now();
39
26
  schedule();
40
- };
41
- function schedule() {
42
- if (!running || !visible || !inView)
43
- return;
44
- if (minIntervalMs > 0) {
45
- timer = setTimeout(tick, minIntervalMs);
46
- }
47
- else {
48
- raf = requestAnimationFrame(tick);
49
- }
27
+ }
28
+ },
29
+ { threshold: 0 }
30
+ );
31
+ io.observe(el);
32
+ document.addEventListener("visibilitychange", onVisibility);
33
+ const tick = () => {
34
+ if (!running) return;
35
+ if (!visible || !inView) {
36
+ return;
50
37
  }
38
+ const now = performance.now();
39
+ const delta = (now - last) / 1e3;
40
+ last = now;
41
+ onFrame(delta);
51
42
  schedule();
52
- return () => {
53
- running = false;
54
- io.disconnect();
55
- document.removeEventListener('visibilitychange', onVisibility);
56
- cancelAnimationFrame(raf);
57
- if (timer !== undefined) {
58
- clearTimeout(timer);
59
- }
60
- };
43
+ };
44
+ function schedule() {
45
+ if (!running || !visible || !inView) return;
46
+ if (minIntervalMs > 0) {
47
+ timer = setTimeout(tick, minIntervalMs);
48
+ } else {
49
+ raf = requestAnimationFrame(tick);
50
+ }
51
+ }
52
+ schedule();
53
+ return () => {
54
+ running = false;
55
+ io.disconnect();
56
+ document.removeEventListener("visibilitychange", onVisibility);
57
+ cancelAnimationFrame(raf);
58
+ if (timer !== void 0) {
59
+ clearTimeout(timer);
60
+ }
61
+ };
61
62
  }
62
- //# sourceMappingURL=use-render-loop.js.map
@@ -14,4 +14,3 @@ type UseSmoothControlsOptions = Parameters<typeof useControls>[2] & {
14
14
  onReset?: () => void;
15
15
  };
16
16
  export {};
17
- //# sourceMappingURL=use-smooth-controls.d.ts.map