tempest-react-sdk 0.78.0 → 0.79.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 (1585) hide show
  1. package/README.md +6 -6
  2. package/bin/lib/openapi/generate.mjs +168 -64
  3. package/bin/lib/openapi/generate.pagination.test.mjs +3 -2
  4. package/bin/lib/openapi/generate.test.mjs +263 -1
  5. package/dist/access/Can.cjs.map +1 -1
  6. package/dist/access/Can.js.map +1 -1
  7. package/dist/access/access-control-context.cjs.map +1 -1
  8. package/dist/access/access-control-context.js.map +1 -1
  9. package/dist/access/create-role-access-control.cjs.map +1 -1
  10. package/dist/access/create-role-access-control.js.map +1 -1
  11. package/dist/access/permissions-from-token.cjs.map +1 -1
  12. package/dist/access/permissions-from-token.js.map +1 -1
  13. package/dist/access/use-can.cjs.map +1 -1
  14. package/dist/access/use-can.js.map +1 -1
  15. package/dist/app/AppProviders.cjs.map +1 -1
  16. package/dist/app/AppProviders.js.map +1 -1
  17. package/dist/audio/audio-bus.cjs.map +1 -1
  18. package/dist/audio/audio-bus.js.map +1 -1
  19. package/dist/audio/audio-output.cjs.map +1 -1
  20. package/dist/audio/audio-output.js.map +1 -1
  21. package/dist/audio/audio-player.cjs.map +1 -1
  22. package/dist/audio/audio-player.js.map +1 -1
  23. package/dist/audio/audio-recorder.cjs.map +1 -1
  24. package/dist/audio/audio-recorder.js.map +1 -1
  25. package/dist/audio/duration.cjs.map +1 -1
  26. package/dist/audio/duration.js.map +1 -1
  27. package/dist/audio/level-meter.cjs.map +1 -1
  28. package/dist/audio/level-meter.js.map +1 -1
  29. package/dist/audio/media-access.cjs.map +1 -1
  30. package/dist/audio/media-access.js.map +1 -1
  31. package/dist/audio/noise-floor.cjs.map +1 -1
  32. package/dist/audio/noise-floor.js.map +1 -1
  33. package/dist/audio/sfx-pool.cjs.map +1 -1
  34. package/dist/audio/sfx-pool.js.map +1 -1
  35. package/dist/audio/use-audio-bus.cjs.map +1 -1
  36. package/dist/audio/use-audio-bus.js.map +1 -1
  37. package/dist/audio/use-audio-recorder.cjs.map +1 -1
  38. package/dist/audio/use-audio-recorder.js.map +1 -1
  39. package/dist/audio/use-audio.cjs.map +1 -1
  40. package/dist/audio/use-audio.js.map +1 -1
  41. package/dist/audio/use-microphone.cjs +1 -1
  42. package/dist/audio/use-microphone.cjs.map +1 -1
  43. package/dist/audio/use-microphone.js +1 -5
  44. package/dist/audio/use-microphone.js.map +1 -1
  45. package/dist/audio/use-sfx-pool.cjs.map +1 -1
  46. package/dist/audio/use-sfx-pool.js.map +1 -1
  47. package/dist/audio/voice-activity.cjs.map +1 -1
  48. package/dist/audio/voice-activity.js.map +1 -1
  49. package/dist/audio/voice-chain-stages.cjs.map +1 -1
  50. package/dist/audio/voice-chain-stages.js.map +1 -1
  51. package/dist/audio/voice-chain.cjs.map +1 -1
  52. package/dist/audio/voice-chain.js.map +1 -1
  53. package/dist/audio/wav.cjs.map +1 -1
  54. package/dist/audio/wav.js.map +1 -1
  55. package/dist/auth/AuthGuard.cjs.map +1 -1
  56. package/dist/auth/AuthGuard.js.map +1 -1
  57. package/dist/auth/create-auth-store.cjs.map +1 -1
  58. package/dist/auth/create-auth-store.js.map +1 -1
  59. package/dist/auth/create-tempest-auth.cjs +1 -1
  60. package/dist/auth/create-tempest-auth.cjs.map +1 -1
  61. package/dist/auth/create-tempest-auth.js +1 -3
  62. package/dist/auth/create-tempest-auth.js.map +1 -1
  63. package/dist/auth/jwt.cjs.map +1 -1
  64. package/dist/auth/jwt.js.map +1 -1
  65. package/dist/auth/lazy-with-retry.cjs.map +1 -1
  66. package/dist/auth/lazy-with-retry.js.map +1 -1
  67. package/dist/auth/passkey.cjs.map +1 -1
  68. package/dist/auth/passkey.js.map +1 -1
  69. package/dist/auth/refresh-queue.cjs.map +1 -1
  70. package/dist/auth/refresh-queue.js.map +1 -1
  71. package/dist/auth/use-passkey.cjs +1 -1
  72. package/dist/auth/use-passkey.cjs.map +1 -1
  73. package/dist/auth/use-passkey.js +1 -1
  74. package/dist/auth/use-passkey.js.map +1 -1
  75. package/dist/br/BrazilMap.cjs.map +1 -1
  76. package/dist/br/BrazilMap.js.map +1 -1
  77. package/dist/br/BrazilMap.module.cjs.map +1 -1
  78. package/dist/br/BrazilMap.module.js.map +1 -1
  79. package/dist/br/BrazilStateCitySelect.cjs.map +1 -1
  80. package/dist/br/BrazilStateCitySelect.js.map +1 -1
  81. package/dist/br/BrazilStateMap.cjs.map +1 -1
  82. package/dist/br/BrazilStateMap.js.map +1 -1
  83. package/dist/br/MapLegend.cjs.map +1 -1
  84. package/dist/br/MapLegend.js.map +1 -1
  85. package/dist/br/MapLegend.module.cjs.map +1 -1
  86. package/dist/br/MapLegend.module.js.map +1 -1
  87. package/dist/br/MapMarkers.cjs.map +1 -1
  88. package/dist/br/MapMarkers.js.map +1 -1
  89. package/dist/br/MapTooltip.cjs.map +1 -1
  90. package/dist/br/MapTooltip.js.map +1 -1
  91. package/dist/br/MunicipalitySearch.cjs +1 -1
  92. package/dist/br/MunicipalitySearch.cjs.map +1 -1
  93. package/dist/br/MunicipalitySearch.js +2 -5
  94. package/dist/br/MunicipalitySearch.js.map +1 -1
  95. package/dist/br/MunicipalitySearch.module.cjs.map +1 -1
  96. package/dist/br/MunicipalitySearch.module.js.map +1 -1
  97. package/dist/br/PixQRCode.cjs.map +1 -1
  98. package/dist/br/PixQRCode.js.map +1 -1
  99. package/dist/br/PixQRCode.module.cjs.map +1 -1
  100. package/dist/br/PixQRCode.module.js.map +1 -1
  101. package/dist/br/boleto.cjs.map +1 -1
  102. package/dist/br/boleto.js.map +1 -1
  103. package/dist/br/br-geo.cjs.map +1 -1
  104. package/dist/br/br-geo.js.map +1 -1
  105. package/dist/br/data/br-centroids.cjs.map +1 -1
  106. package/dist/br/data/br-centroids.js.map +1 -1
  107. package/dist/br/data/br-locations.cjs.map +1 -1
  108. package/dist/br/data/br-locations.js.map +1 -1
  109. package/dist/br/data/br-uf-geo.cjs.map +1 -1
  110. package/dist/br/data/br-uf-geo.js.map +1 -1
  111. package/dist/br/data/mun/AC.cjs.map +1 -1
  112. package/dist/br/data/mun/AC.js.map +1 -1
  113. package/dist/br/data/mun/AL.cjs.map +1 -1
  114. package/dist/br/data/mun/AL.js.map +1 -1
  115. package/dist/br/data/mun/AM.cjs.map +1 -1
  116. package/dist/br/data/mun/AM.js.map +1 -1
  117. package/dist/br/data/mun/AP.cjs.map +1 -1
  118. package/dist/br/data/mun/AP.js.map +1 -1
  119. package/dist/br/data/mun/BA.cjs.map +1 -1
  120. package/dist/br/data/mun/BA.js.map +1 -1
  121. package/dist/br/data/mun/CE.cjs.map +1 -1
  122. package/dist/br/data/mun/CE.js.map +1 -1
  123. package/dist/br/data/mun/DF.cjs.map +1 -1
  124. package/dist/br/data/mun/DF.js.map +1 -1
  125. package/dist/br/data/mun/ES.cjs.map +1 -1
  126. package/dist/br/data/mun/ES.js.map +1 -1
  127. package/dist/br/data/mun/GO.cjs.map +1 -1
  128. package/dist/br/data/mun/GO.js.map +1 -1
  129. package/dist/br/data/mun/MA.cjs.map +1 -1
  130. package/dist/br/data/mun/MA.js.map +1 -1
  131. package/dist/br/data/mun/MG.cjs.map +1 -1
  132. package/dist/br/data/mun/MG.js.map +1 -1
  133. package/dist/br/data/mun/MS.cjs.map +1 -1
  134. package/dist/br/data/mun/MS.js.map +1 -1
  135. package/dist/br/data/mun/MT.cjs.map +1 -1
  136. package/dist/br/data/mun/MT.js.map +1 -1
  137. package/dist/br/data/mun/PA.cjs.map +1 -1
  138. package/dist/br/data/mun/PA.js.map +1 -1
  139. package/dist/br/data/mun/PB.cjs.map +1 -1
  140. package/dist/br/data/mun/PB.js.map +1 -1
  141. package/dist/br/data/mun/PE.cjs.map +1 -1
  142. package/dist/br/data/mun/PE.js.map +1 -1
  143. package/dist/br/data/mun/PI.cjs.map +1 -1
  144. package/dist/br/data/mun/PI.js.map +1 -1
  145. package/dist/br/data/mun/PR.cjs.map +1 -1
  146. package/dist/br/data/mun/PR.js.map +1 -1
  147. package/dist/br/data/mun/RJ.cjs.map +1 -1
  148. package/dist/br/data/mun/RJ.js.map +1 -1
  149. package/dist/br/data/mun/RN.cjs.map +1 -1
  150. package/dist/br/data/mun/RN.js.map +1 -1
  151. package/dist/br/data/mun/RO.cjs.map +1 -1
  152. package/dist/br/data/mun/RO.js.map +1 -1
  153. package/dist/br/data/mun/RR.cjs.map +1 -1
  154. package/dist/br/data/mun/RR.js.map +1 -1
  155. package/dist/br/data/mun/RS.cjs.map +1 -1
  156. package/dist/br/data/mun/RS.js.map +1 -1
  157. package/dist/br/data/mun/SC.cjs.map +1 -1
  158. package/dist/br/data/mun/SC.js.map +1 -1
  159. package/dist/br/data/mun/SE.cjs.map +1 -1
  160. package/dist/br/data/mun/SE.js.map +1 -1
  161. package/dist/br/data/mun/SP.cjs.map +1 -1
  162. package/dist/br/data/mun/SP.js.map +1 -1
  163. package/dist/br/data/mun/TO.cjs.map +1 -1
  164. package/dist/br/data/mun/TO.js.map +1 -1
  165. package/dist/br/geocode.cjs.map +1 -1
  166. package/dist/br/geocode.js.map +1 -1
  167. package/dist/br/holidays.cjs.map +1 -1
  168. package/dist/br/holidays.js.map +1 -1
  169. package/dist/br/locations.cjs.map +1 -1
  170. package/dist/br/locations.js.map +1 -1
  171. package/dist/br/nfe.cjs.map +1 -1
  172. package/dist/br/nfe.js.map +1 -1
  173. package/dist/br/pix.cjs +1 -1
  174. package/dist/br/pix.cjs.map +1 -1
  175. package/dist/br/pix.js +108 -74
  176. package/dist/br/pix.js.map +1 -1
  177. package/dist/br/regions.cjs.map +1 -1
  178. package/dist/br/regions.js.map +1 -1
  179. package/dist/br/scales.cjs.map +1 -1
  180. package/dist/br/scales.js.map +1 -1
  181. package/dist/br/state-geo.cjs.map +1 -1
  182. package/dist/br/state-geo.js.map +1 -1
  183. package/dist/br/svg-utils.cjs.map +1 -1
  184. package/dist/br/svg-utils.js.map +1 -1
  185. package/dist/br/use-map-hover.cjs.map +1 -1
  186. package/dist/br/use-map-hover.js.map +1 -1
  187. package/dist/br/use-map-zoom.cjs.map +1 -1
  188. package/dist/br/use-map-zoom.js.map +1 -1
  189. package/dist/br/whatsapp.cjs.map +1 -1
  190. package/dist/br/whatsapp.js.map +1 -1
  191. package/dist/br.cjs.map +1 -1
  192. package/dist/br.d.ts +6 -2
  193. package/dist/br.js.map +1 -1
  194. package/dist/capture/barcode.cjs.map +1 -1
  195. package/dist/capture/barcode.js.map +1 -1
  196. package/dist/capture/media-recorder.cjs.map +1 -1
  197. package/dist/capture/media-recorder.js.map +1 -1
  198. package/dist/capture/use-barcode-scanner.cjs.map +1 -1
  199. package/dist/capture/use-barcode-scanner.js.map +1 -1
  200. package/dist/capture/use-screen-capture.cjs +1 -1
  201. package/dist/capture/use-screen-capture.cjs.map +1 -1
  202. package/dist/capture/use-screen-capture.js +1 -7
  203. package/dist/capture/use-screen-capture.js.map +1 -1
  204. package/dist/capture/use-speech-recognition.cjs +1 -1
  205. package/dist/capture/use-speech-recognition.cjs.map +1 -1
  206. package/dist/capture/use-speech-recognition.js +35 -36
  207. package/dist/capture/use-speech-recognition.js.map +1 -1
  208. package/dist/capture/use-torch.cjs.map +1 -1
  209. package/dist/capture/use-torch.js.map +1 -1
  210. package/dist/capture/use-video-recorder.cjs.map +1 -1
  211. package/dist/capture/use-video-recorder.js.map +1 -1
  212. package/dist/capture/video-recorder.cjs.map +1 -1
  213. package/dist/capture/video-recorder.js.map +1 -1
  214. package/dist/charts/AreaChart.cjs.map +1 -1
  215. package/dist/charts/AreaChart.js.map +1 -1
  216. package/dist/charts/BarChart.cjs.map +1 -1
  217. package/dist/charts/BarChart.js.map +1 -1
  218. package/dist/charts/LineChart.cjs.map +1 -1
  219. package/dist/charts/LineChart.js.map +1 -1
  220. package/dist/charts/PieChart.cjs.map +1 -1
  221. package/dist/charts/PieChart.js.map +1 -1
  222. package/dist/charts/RadarChart.cjs.map +1 -1
  223. package/dist/charts/RadarChart.js.map +1 -1
  224. package/dist/charts/palette.cjs.map +1 -1
  225. package/dist/charts/palette.js.map +1 -1
  226. package/dist/charts/scales.cjs.map +1 -1
  227. package/dist/charts/scales.js.map +1 -1
  228. package/dist/charts/types.cjs.map +1 -1
  229. package/dist/charts/types.js.map +1 -1
  230. package/dist/charts/use-chart-colors.cjs.map +1 -1
  231. package/dist/charts/use-chart-colors.js.map +1 -1
  232. package/dist/components/AIChat/AIChat.cjs +1 -1
  233. package/dist/components/AIChat/AIChat.cjs.map +1 -1
  234. package/dist/components/AIChat/AIChat.js +1 -5
  235. package/dist/components/AIChat/AIChat.js.map +1 -1
  236. package/dist/components/AIChat/AIChat.module.cjs.map +1 -1
  237. package/dist/components/AIChat/AIChat.module.js.map +1 -1
  238. package/dist/components/AIChat/AIChatComposer.cjs +1 -1
  239. package/dist/components/AIChat/AIChatComposer.cjs.map +1 -1
  240. package/dist/components/AIChat/AIChatComposer.js +1 -7
  241. package/dist/components/AIChat/AIChatComposer.js.map +1 -1
  242. package/dist/components/AIChat/AIChatTurn.cjs.map +1 -1
  243. package/dist/components/AIChat/AIChatTurn.js.map +1 -1
  244. package/dist/components/AIChat/ai-chat-turns.cjs.map +1 -1
  245. package/dist/components/AIChat/ai-chat-turns.js.map +1 -1
  246. package/dist/components/Accordion/Accordion.cjs.map +1 -1
  247. package/dist/components/Accordion/Accordion.js.map +1 -1
  248. package/dist/components/Accordion/Accordion.module.cjs.map +1 -1
  249. package/dist/components/Accordion/Accordion.module.js.map +1 -1
  250. package/dist/components/Alert/Alert.cjs.map +1 -1
  251. package/dist/components/Alert/Alert.js.map +1 -1
  252. package/dist/components/Alert/Alert.module.cjs.map +1 -1
  253. package/dist/components/Alert/Alert.module.js.map +1 -1
  254. package/dist/components/AppBar/AppBar.cjs.map +1 -1
  255. package/dist/components/AppBar/AppBar.js.map +1 -1
  256. package/dist/components/AppBar/AppBar.module.cjs.map +1 -1
  257. package/dist/components/AppBar/AppBar.module.js.map +1 -1
  258. package/dist/components/AppBar/use-sticky-body-warning.cjs +1 -1
  259. package/dist/components/AppBar/use-sticky-body-warning.cjs.map +1 -1
  260. package/dist/components/AppBar/use-sticky-body-warning.js +1 -1
  261. package/dist/components/AppBar/use-sticky-body-warning.js.map +1 -1
  262. package/dist/components/AppShell/AppShell.cjs.map +1 -1
  263. package/dist/components/AppShell/AppShell.js.map +1 -1
  264. package/dist/components/AppShell/AppShell.module.cjs.map +1 -1
  265. package/dist/components/AppShell/AppShell.module.js.map +1 -1
  266. package/dist/components/AspectRatio/AspectRatio.cjs.map +1 -1
  267. package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
  268. package/dist/components/AspectRatio/AspectRatio.module.cjs.map +1 -1
  269. package/dist/components/AspectRatio/AspectRatio.module.js.map +1 -1
  270. package/dist/components/AudioPlayer/AudioPlayer.cjs +1 -1
  271. package/dist/components/AudioPlayer/AudioPlayer.cjs.map +1 -1
  272. package/dist/components/AudioPlayer/AudioPlayer.js +1 -7
  273. package/dist/components/AudioPlayer/AudioPlayer.js.map +1 -1
  274. package/dist/components/AudioPlayer/AudioPlayer.module.cjs.map +1 -1
  275. package/dist/components/AudioPlayer/AudioPlayer.module.js.map +1 -1
  276. package/dist/components/AudioRecorder/AudioRecorder.cjs +1 -1
  277. package/dist/components/AudioRecorder/AudioRecorder.cjs.map +1 -1
  278. package/dist/components/AudioRecorder/AudioRecorder.js +16 -21
  279. package/dist/components/AudioRecorder/AudioRecorder.js.map +1 -1
  280. package/dist/components/AudioRecorder/AudioRecorder.module.cjs.map +1 -1
  281. package/dist/components/AudioRecorder/AudioRecorder.module.js.map +1 -1
  282. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  283. package/dist/components/Avatar/Avatar.js.map +1 -1
  284. package/dist/components/Avatar/Avatar.module.cjs.map +1 -1
  285. package/dist/components/Avatar/Avatar.module.js.map +1 -1
  286. package/dist/components/AvatarGroup/AvatarGroup.cjs.map +1 -1
  287. package/dist/components/AvatarGroup/AvatarGroup.js.map +1 -1
  288. package/dist/components/AvatarGroup/AvatarGroup.module.cjs.map +1 -1
  289. package/dist/components/AvatarGroup/AvatarGroup.module.js.map +1 -1
  290. package/dist/components/Badge/Badge.cjs.map +1 -1
  291. package/dist/components/Badge/Badge.js.map +1 -1
  292. package/dist/components/Badge/Badge.module.cjs.map +1 -1
  293. package/dist/components/Badge/Badge.module.js.map +1 -1
  294. package/dist/components/Banner/Banner.cjs.map +1 -1
  295. package/dist/components/Banner/Banner.js.map +1 -1
  296. package/dist/components/Banner/Banner.module.cjs.map +1 -1
  297. package/dist/components/Banner/Banner.module.js.map +1 -1
  298. package/dist/components/BarList/BarList.cjs.map +1 -1
  299. package/dist/components/BarList/BarList.js.map +1 -1
  300. package/dist/components/BarList/BarList.module.cjs.map +1 -1
  301. package/dist/components/BarList/BarList.module.js.map +1 -1
  302. package/dist/components/BarList/bar-list-model.cjs.map +1 -1
  303. package/dist/components/BarList/bar-list-model.js.map +1 -1
  304. package/dist/components/BarcodeScanner/BarcodeScanner.cjs.map +1 -1
  305. package/dist/components/BarcodeScanner/BarcodeScanner.js.map +1 -1
  306. package/dist/components/BarcodeScanner/BarcodeScanner.module.cjs.map +1 -1
  307. package/dist/components/BarcodeScanner/BarcodeScanner.module.js.map +1 -1
  308. package/dist/components/BottomNavigation/BottomNavigation.cjs.map +1 -1
  309. package/dist/components/BottomNavigation/BottomNavigation.js.map +1 -1
  310. package/dist/components/BottomNavigation/BottomNavigation.module.cjs.map +1 -1
  311. package/dist/components/BottomNavigation/BottomNavigation.module.js.map +1 -1
  312. package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
  313. package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
  314. package/dist/components/BottomSheet/BottomSheet.module.cjs.map +1 -1
  315. package/dist/components/BottomSheet/BottomSheet.module.js.map +1 -1
  316. package/dist/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
  317. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  318. package/dist/components/Breadcrumbs/Breadcrumbs.module.cjs.map +1 -1
  319. package/dist/components/Breadcrumbs/Breadcrumbs.module.js.map +1 -1
  320. package/dist/components/Button/Button.cjs.map +1 -1
  321. package/dist/components/Button/Button.js.map +1 -1
  322. package/dist/components/Button/Button.module.cjs.map +1 -1
  323. package/dist/components/Button/Button.module.js.map +1 -1
  324. package/dist/components/Button/ButtonContent.cjs.map +1 -1
  325. package/dist/components/Button/ButtonContent.js.map +1 -1
  326. package/dist/components/Button/ButtonSlot.cjs.map +1 -1
  327. package/dist/components/Button/ButtonSlot.js.map +1 -1
  328. package/dist/components/Button/button-class.cjs.map +1 -1
  329. package/dist/components/Button/button-class.js.map +1 -1
  330. package/dist/components/Button/link-rel.cjs.map +1 -1
  331. package/dist/components/Button/link-rel.js.map +1 -1
  332. package/dist/components/Button/slot.cjs.map +1 -1
  333. package/dist/components/Button/slot.js.map +1 -1
  334. package/dist/components/Calendar/Calendar.cjs.map +1 -1
  335. package/dist/components/Calendar/Calendar.js.map +1 -1
  336. package/dist/components/Calendar/Calendar.module.cjs.map +1 -1
  337. package/dist/components/Calendar/Calendar.module.js.map +1 -1
  338. package/dist/components/Card/Card.cjs.map +1 -1
  339. package/dist/components/Card/Card.js.map +1 -1
  340. package/dist/components/Card/Card.module.cjs.map +1 -1
  341. package/dist/components/Card/Card.module.js.map +1 -1
  342. package/dist/components/Carousel/Carousel.cjs.map +1 -1
  343. package/dist/components/Carousel/Carousel.js.map +1 -1
  344. package/dist/components/Carousel/Carousel.module.cjs.map +1 -1
  345. package/dist/components/Carousel/Carousel.module.js.map +1 -1
  346. package/dist/components/Center/Center.cjs.map +1 -1
  347. package/dist/components/Center/Center.js.map +1 -1
  348. package/dist/components/Center/Center.module.cjs.map +1 -1
  349. package/dist/components/Center/Center.module.js.map +1 -1
  350. package/dist/components/Chat/Chat.cjs.map +1 -1
  351. package/dist/components/Chat/Chat.js.map +1 -1
  352. package/dist/components/Chat/Chat.module.cjs.map +1 -1
  353. package/dist/components/Chat/Chat.module.js.map +1 -1
  354. package/dist/components/Chat/ChatActionsMenu.cjs.map +1 -1
  355. package/dist/components/Chat/ChatActionsMenu.js.map +1 -1
  356. package/dist/components/Chat/ChatAttachments.cjs.map +1 -1
  357. package/dist/components/Chat/ChatAttachments.js.map +1 -1
  358. package/dist/components/Chat/ChatBubble.cjs.map +1 -1
  359. package/dist/components/Chat/ChatBubble.js.map +1 -1
  360. package/dist/components/Chat/ChatComposer.cjs.map +1 -1
  361. package/dist/components/Chat/ChatComposer.js.map +1 -1
  362. package/dist/components/Chat/chat-groups.cjs +1 -1
  363. package/dist/components/Chat/chat-groups.cjs.map +1 -1
  364. package/dist/components/Chat/chat-groups.js +2 -6
  365. package/dist/components/Chat/chat-groups.js.map +1 -1
  366. package/dist/components/Chat/chat-receipt.cjs.map +1 -1
  367. package/dist/components/Chat/chat-receipt.js.map +1 -1
  368. package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
  369. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  370. package/dist/components/Checkbox/Checkbox.module.cjs.map +1 -1
  371. package/dist/components/Checkbox/Checkbox.module.js.map +1 -1
  372. package/dist/components/ChipInput/ChipInput.cjs +1 -1
  373. package/dist/components/ChipInput/ChipInput.cjs.map +1 -1
  374. package/dist/components/ChipInput/ChipInput.js +2 -12
  375. package/dist/components/ChipInput/ChipInput.js.map +1 -1
  376. package/dist/components/ChipInput/ChipInput.module.cjs.map +1 -1
  377. package/dist/components/ChipInput/ChipInput.module.js.map +1 -1
  378. package/dist/components/ClickOutside/ClickOutside.cjs.map +1 -1
  379. package/dist/components/ClickOutside/ClickOutside.js.map +1 -1
  380. package/dist/components/CodeBlock/CodeBlock.cjs.map +1 -1
  381. package/dist/components/CodeBlock/CodeBlock.js.map +1 -1
  382. package/dist/components/CodeBlock/CodeBlock.module.cjs.map +1 -1
  383. package/dist/components/CodeBlock/CodeBlock.module.js.map +1 -1
  384. package/dist/components/CodeBlock/tokenize.cjs.map +1 -1
  385. package/dist/components/CodeBlock/tokenize.js.map +1 -1
  386. package/dist/components/Collapsible/Collapsible.cjs.map +1 -1
  387. package/dist/components/Collapsible/Collapsible.js.map +1 -1
  388. package/dist/components/Collapsible/Collapsible.module.cjs.map +1 -1
  389. package/dist/components/Collapsible/Collapsible.module.js.map +1 -1
  390. package/dist/components/Combobox/Combobox.cjs.map +1 -1
  391. package/dist/components/Combobox/Combobox.js.map +1 -1
  392. package/dist/components/Combobox/Combobox.module.cjs.map +1 -1
  393. package/dist/components/Combobox/Combobox.module.js.map +1 -1
  394. package/dist/components/Combobox/use-listbox-dismiss.cjs.map +1 -1
  395. package/dist/components/Combobox/use-listbox-dismiss.js.map +1 -1
  396. package/dist/components/Command/Command.cjs +1 -1
  397. package/dist/components/Command/Command.cjs.map +1 -1
  398. package/dist/components/Command/Command.js +4 -11
  399. package/dist/components/Command/Command.js.map +1 -1
  400. package/dist/components/Command/Command.module.cjs.map +1 -1
  401. package/dist/components/Command/Command.module.js.map +1 -1
  402. package/dist/components/ConditionalWrapper/ConditionalWrapper.cjs.map +1 -1
  403. package/dist/components/ConditionalWrapper/ConditionalWrapper.js.map +1 -1
  404. package/dist/components/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
  405. package/dist/components/ConfirmDialog/ConfirmDialog.js.map +1 -1
  406. package/dist/components/ContextMenu/ContextMenu.cjs +1 -1
  407. package/dist/components/ContextMenu/ContextMenu.cjs.map +1 -1
  408. package/dist/components/ContextMenu/ContextMenu.js +1 -1
  409. package/dist/components/ContextMenu/ContextMenu.js.map +1 -1
  410. package/dist/components/ContextMenu/ContextMenu.module.cjs.map +1 -1
  411. package/dist/components/ContextMenu/ContextMenu.module.js.map +1 -1
  412. package/dist/components/CopyButton/CopyButton.cjs.map +1 -1
  413. package/dist/components/CopyButton/CopyButton.js.map +1 -1
  414. package/dist/components/CopyButton/CopyButton.module.cjs.map +1 -1
  415. package/dist/components/CopyButton/CopyButton.module.js.map +1 -1
  416. package/dist/components/DataList/DataList.cjs.map +1 -1
  417. package/dist/components/DataList/DataList.js.map +1 -1
  418. package/dist/components/DataList/DataList.module.cjs.map +1 -1
  419. package/dist/components/DataList/DataList.module.js.map +1 -1
  420. package/dist/components/DataTable/DataTable.cjs +1 -1
  421. package/dist/components/DataTable/DataTable.cjs.map +1 -1
  422. package/dist/components/DataTable/DataTable.js +6 -14
  423. package/dist/components/DataTable/DataTable.js.map +1 -1
  424. package/dist/components/DataTable/DataTable.module.cjs.map +1 -1
  425. package/dist/components/DataTable/DataTable.module.js.map +1 -1
  426. package/dist/components/DataTable/EditableCell.cjs +1 -1
  427. package/dist/components/DataTable/EditableCell.cjs.map +1 -1
  428. package/dist/components/DataTable/EditableCell.js +1 -9
  429. package/dist/components/DataTable/EditableCell.js.map +1 -1
  430. package/dist/components/DataTable/LoadingRows.cjs.map +1 -1
  431. package/dist/components/DataTable/LoadingRows.js.map +1 -1
  432. package/dist/components/DataTable/edit-labels.cjs.map +1 -1
  433. package/dist/components/DataTable/edit-labels.js.map +1 -1
  434. package/dist/components/DataTable/use-dev-warnings.cjs.map +1 -1
  435. package/dist/components/DataTable/use-dev-warnings.js.map +1 -1
  436. package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
  437. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  438. package/dist/components/DateRangePicker/DateRangePicker.cjs.map +1 -1
  439. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
  440. package/dist/components/DateRangePicker/DateRangePicker.module.cjs.map +1 -1
  441. package/dist/components/DateRangePicker/DateRangePicker.module.js.map +1 -1
  442. package/dist/components/DescriptionList/DescriptionList.cjs.map +1 -1
  443. package/dist/components/DescriptionList/DescriptionList.js.map +1 -1
  444. package/dist/components/DescriptionList/DescriptionList.module.cjs.map +1 -1
  445. package/dist/components/DescriptionList/DescriptionList.module.js.map +1 -1
  446. package/dist/components/Divider/Divider.cjs.map +1 -1
  447. package/dist/components/Divider/Divider.js.map +1 -1
  448. package/dist/components/Divider/Divider.module.cjs.map +1 -1
  449. package/dist/components/Divider/Divider.module.js.map +1 -1
  450. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  451. package/dist/components/Drawer/Drawer.js.map +1 -1
  452. package/dist/components/Drawer/Drawer.module.cjs.map +1 -1
  453. package/dist/components/Drawer/Drawer.module.js.map +1 -1
  454. package/dist/components/DropdownMenu/DropdownMenu.cjs +1 -1
  455. package/dist/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
  456. package/dist/components/DropdownMenu/DropdownMenu.js +2 -14
  457. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
  458. package/dist/components/DropdownMenu/DropdownMenu.module.cjs.map +1 -1
  459. package/dist/components/DropdownMenu/DropdownMenu.module.js.map +1 -1
  460. package/dist/components/Dropzone/Dropzone.cjs.map +1 -1
  461. package/dist/components/Dropzone/Dropzone.js.map +1 -1
  462. package/dist/components/Dropzone/Dropzone.module.cjs.map +1 -1
  463. package/dist/components/Dropzone/Dropzone.module.js.map +1 -1
  464. package/dist/components/EmptyState/EmptyState.cjs.map +1 -1
  465. package/dist/components/EmptyState/EmptyState.js.map +1 -1
  466. package/dist/components/EmptyState/EmptyState.module.cjs.map +1 -1
  467. package/dist/components/EmptyState/EmptyState.module.js.map +1 -1
  468. package/dist/components/ErrorState/ErrorState.cjs.map +1 -1
  469. package/dist/components/ErrorState/ErrorState.js.map +1 -1
  470. package/dist/components/ErrorState/ErrorState.module.cjs.map +1 -1
  471. package/dist/components/ErrorState/ErrorState.module.js.map +1 -1
  472. package/dist/components/ErrorText/ErrorText.cjs.map +1 -1
  473. package/dist/components/ErrorText/ErrorText.js.map +1 -1
  474. package/dist/components/ErrorText/ErrorText.module.cjs.map +1 -1
  475. package/dist/components/ErrorText/ErrorText.module.js.map +1 -1
  476. package/dist/components/FileUpload/FileUpload.cjs +1 -1
  477. package/dist/components/FileUpload/FileUpload.cjs.map +1 -1
  478. package/dist/components/FileUpload/FileUpload.js +7 -17
  479. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  480. package/dist/components/FileUpload/FileUpload.module.cjs.map +1 -1
  481. package/dist/components/FileUpload/FileUpload.module.js.map +1 -1
  482. package/dist/components/FilterBar/FilterBar.cjs.map +1 -1
  483. package/dist/components/FilterBar/FilterBar.js.map +1 -1
  484. package/dist/components/FilterBar/FilterBar.module.cjs.map +1 -1
  485. package/dist/components/FilterBar/FilterBar.module.js.map +1 -1
  486. package/dist/components/FilterBar/filter-apply.cjs.map +1 -1
  487. package/dist/components/FilterBar/filter-apply.js.map +1 -1
  488. package/dist/components/FilterBar/filter-model.cjs.map +1 -1
  489. package/dist/components/FilterBar/filter-model.js.map +1 -1
  490. package/dist/components/FilterBar/filter-query.cjs +1 -1
  491. package/dist/components/FilterBar/filter-query.cjs.map +1 -1
  492. package/dist/components/FilterBar/filter-query.js +2 -5
  493. package/dist/components/FilterBar/filter-query.js.map +1 -1
  494. package/dist/components/FilterPanel/FilterPanel.cjs.map +1 -1
  495. package/dist/components/FilterPanel/FilterPanel.js.map +1 -1
  496. package/dist/components/FilterPanel/FilterPanel.module.cjs.map +1 -1
  497. package/dist/components/FilterPanel/FilterPanel.module.js.map +1 -1
  498. package/dist/components/FloatingActionButton/FloatingActionButton.cjs.map +1 -1
  499. package/dist/components/FloatingActionButton/FloatingActionButton.js.map +1 -1
  500. package/dist/components/FloatingActionButton/FloatingActionButton.module.cjs.map +1 -1
  501. package/dist/components/FloatingActionButton/FloatingActionButton.module.js.map +1 -1
  502. package/dist/components/For/For.cjs.map +1 -1
  503. package/dist/components/For/For.js.map +1 -1
  504. package/dist/components/Form/Form.cjs.map +1 -1
  505. package/dist/components/Form/Form.js.map +1 -1
  506. package/dist/components/Form/Form.module.cjs.map +1 -1
  507. package/dist/components/Form/Form.module.js.map +1 -1
  508. package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
  509. package/dist/components/HoverCard/HoverCard.js.map +1 -1
  510. package/dist/components/HoverCard/HoverCard.module.cjs.map +1 -1
  511. package/dist/components/HoverCard/HoverCard.module.js.map +1 -1
  512. package/dist/components/Image/Image.cjs.map +1 -1
  513. package/dist/components/Image/Image.js.map +1 -1
  514. package/dist/components/Image/Image.module.cjs.map +1 -1
  515. package/dist/components/Image/Image.module.js.map +1 -1
  516. package/dist/components/ImageCropper/ImageCropper.cjs +1 -1
  517. package/dist/components/ImageCropper/ImageCropper.cjs.map +1 -1
  518. package/dist/components/ImageCropper/ImageCropper.js +4 -8
  519. package/dist/components/ImageCropper/ImageCropper.js.map +1 -1
  520. package/dist/components/ImageCropper/ImageCropper.module.cjs.map +1 -1
  521. package/dist/components/ImageCropper/ImageCropper.module.js.map +1 -1
  522. package/dist/components/ImageCropper/crop-geometry.cjs.map +1 -1
  523. package/dist/components/ImageCropper/crop-geometry.js.map +1 -1
  524. package/dist/components/Input/Input.cjs.map +1 -1
  525. package/dist/components/Input/Input.js.map +1 -1
  526. package/dist/components/Input/Input.module.cjs.map +1 -1
  527. package/dist/components/Input/Input.module.js.map +1 -1
  528. package/dist/components/InstallBanner/InstallBanner.cjs.map +1 -1
  529. package/dist/components/InstallBanner/InstallBanner.js.map +1 -1
  530. package/dist/components/InstallBanner/InstallBanner.module.cjs.map +1 -1
  531. package/dist/components/InstallBanner/InstallBanner.module.js.map +1 -1
  532. package/dist/components/InstallButton/InstallButton.cjs.map +1 -1
  533. package/dist/components/InstallButton/InstallButton.js.map +1 -1
  534. package/dist/components/InstallButton/InstallButton.module.cjs.map +1 -1
  535. package/dist/components/InstallButton/InstallButton.module.js.map +1 -1
  536. package/dist/components/InstallButton/install-hints.cjs.map +1 -1
  537. package/dist/components/InstallButton/install-hints.js.map +1 -1
  538. package/dist/components/Kanban/Kanban.cjs.map +1 -1
  539. package/dist/components/Kanban/Kanban.js.map +1 -1
  540. package/dist/components/Kanban/Kanban.module.cjs.map +1 -1
  541. package/dist/components/Kanban/Kanban.module.js.map +1 -1
  542. package/dist/components/Kbd/Kbd.cjs.map +1 -1
  543. package/dist/components/Kbd/Kbd.js.map +1 -1
  544. package/dist/components/Kbd/Kbd.module.cjs.map +1 -1
  545. package/dist/components/Kbd/Kbd.module.js.map +1 -1
  546. package/dist/components/Label/Label.cjs.map +1 -1
  547. package/dist/components/Label/Label.js.map +1 -1
  548. package/dist/components/Label/Label.module.cjs.map +1 -1
  549. package/dist/components/Label/Label.module.js.map +1 -1
  550. package/dist/components/Layout/Layout.cjs.map +1 -1
  551. package/dist/components/Layout/Layout.js.map +1 -1
  552. package/dist/components/Layout/Layout.module.cjs.map +1 -1
  553. package/dist/components/Layout/Layout.module.js.map +1 -1
  554. package/dist/components/Lightbox/Lightbox.cjs +1 -1
  555. package/dist/components/Lightbox/Lightbox.cjs.map +1 -1
  556. package/dist/components/Lightbox/Lightbox.js +1 -1
  557. package/dist/components/Lightbox/Lightbox.js.map +1 -1
  558. package/dist/components/Lightbox/Lightbox.module.cjs.map +1 -1
  559. package/dist/components/Lightbox/Lightbox.module.js.map +1 -1
  560. package/dist/components/ListTile/ListTile.cjs.map +1 -1
  561. package/dist/components/ListTile/ListTile.js.map +1 -1
  562. package/dist/components/ListTile/ListTile.module.cjs.map +1 -1
  563. package/dist/components/ListTile/ListTile.module.js.map +1 -1
  564. package/dist/components/Markdown/Markdown.cjs.map +1 -1
  565. package/dist/components/Markdown/Markdown.js.map +1 -1
  566. package/dist/components/Markdown/Markdown.module.cjs.map +1 -1
  567. package/dist/components/Markdown/Markdown.module.js.map +1 -1
  568. package/dist/components/Markdown/markdown-parse.cjs +2 -2
  569. package/dist/components/Markdown/markdown-parse.cjs.map +1 -1
  570. package/dist/components/Markdown/markdown-parse.js +8 -27
  571. package/dist/components/Markdown/markdown-parse.js.map +1 -1
  572. package/dist/components/Masonry/Masonry.cjs.map +1 -1
  573. package/dist/components/Masonry/Masonry.js.map +1 -1
  574. package/dist/components/Masonry/Masonry.module.cjs.map +1 -1
  575. package/dist/components/Masonry/Masonry.module.js.map +1 -1
  576. package/dist/components/Masonry/masonry-layout.cjs.map +1 -1
  577. package/dist/components/Masonry/masonry-layout.js.map +1 -1
  578. package/dist/components/Menubar/Menubar.cjs.map +1 -1
  579. package/dist/components/Menubar/Menubar.js.map +1 -1
  580. package/dist/components/Menubar/Menubar.module.cjs.map +1 -1
  581. package/dist/components/Menubar/Menubar.module.js.map +1 -1
  582. package/dist/components/Modal/Modal.cjs.map +1 -1
  583. package/dist/components/Modal/Modal.js.map +1 -1
  584. package/dist/components/Modal/Modal.module.cjs.map +1 -1
  585. package/dist/components/Modal/Modal.module.js.map +1 -1
  586. package/dist/components/ModalsManager/ModalsManager.cjs.map +1 -1
  587. package/dist/components/ModalsManager/ModalsManager.js.map +1 -1
  588. package/dist/components/ModalsManager/ModalsManager.module.cjs.map +1 -1
  589. package/dist/components/ModalsManager/ModalsManager.module.js.map +1 -1
  590. package/dist/components/Money/Money.cjs.map +1 -1
  591. package/dist/components/Money/Money.js.map +1 -1
  592. package/dist/components/MultiSelect/MultiSelect.cjs.map +1 -1
  593. package/dist/components/MultiSelect/MultiSelect.js.map +1 -1
  594. package/dist/components/MultiSelect/MultiSelect.module.cjs.map +1 -1
  595. package/dist/components/MultiSelect/MultiSelect.module.js.map +1 -1
  596. package/dist/components/NProgress/NProgress.cjs.map +1 -1
  597. package/dist/components/NProgress/NProgress.js.map +1 -1
  598. package/dist/components/NProgress/NProgress.module.cjs.map +1 -1
  599. package/dist/components/NProgress/NProgress.module.js.map +1 -1
  600. package/dist/components/Navbar/Navbar.cjs.map +1 -1
  601. package/dist/components/Navbar/Navbar.js.map +1 -1
  602. package/dist/components/Navbar/Navbar.module.cjs.map +1 -1
  603. package/dist/components/Navbar/Navbar.module.js.map +1 -1
  604. package/dist/components/NavigationMenu/NavigationMenu.cjs.map +1 -1
  605. package/dist/components/NavigationMenu/NavigationMenu.js.map +1 -1
  606. package/dist/components/NavigationMenu/NavigationMenu.module.cjs.map +1 -1
  607. package/dist/components/NavigationMenu/NavigationMenu.module.js.map +1 -1
  608. package/dist/components/NavigationRail/NavigationRail.cjs.map +1 -1
  609. package/dist/components/NavigationRail/NavigationRail.js.map +1 -1
  610. package/dist/components/NavigationRail/NavigationRail.module.cjs.map +1 -1
  611. package/dist/components/NavigationRail/NavigationRail.module.js.map +1 -1
  612. package/dist/components/NotificationCenter/NotificationCenter.cjs.map +1 -1
  613. package/dist/components/NotificationCenter/NotificationCenter.js.map +1 -1
  614. package/dist/components/NotificationCenter/NotificationCenter.module.cjs.map +1 -1
  615. package/dist/components/NotificationCenter/NotificationCenter.module.js.map +1 -1
  616. package/dist/components/NotificationCenter/use-notification-inbox.cjs.map +1 -1
  617. package/dist/components/NotificationCenter/use-notification-inbox.js.map +1 -1
  618. package/dist/components/OfflineIndicator/OfflineIndicator.cjs.map +1 -1
  619. package/dist/components/OfflineIndicator/OfflineIndicator.js.map +1 -1
  620. package/dist/components/OfflineIndicator/OfflineIndicator.module.cjs.map +1 -1
  621. package/dist/components/OfflineIndicator/OfflineIndicator.module.js.map +1 -1
  622. package/dist/components/Page/Page.cjs.map +1 -1
  623. package/dist/components/Page/Page.js.map +1 -1
  624. package/dist/components/Page/Page.module.cjs.map +1 -1
  625. package/dist/components/Page/Page.module.js.map +1 -1
  626. package/dist/components/Pagination/Pagination.cjs.map +1 -1
  627. package/dist/components/Pagination/Pagination.js.map +1 -1
  628. package/dist/components/Pagination/Pagination.module.cjs.map +1 -1
  629. package/dist/components/Pagination/Pagination.module.js.map +1 -1
  630. package/dist/components/PasswordInput/PasswordInput.cjs.map +1 -1
  631. package/dist/components/PasswordInput/PasswordInput.js.map +1 -1
  632. package/dist/components/PasswordInput/PasswordInput.module.cjs.map +1 -1
  633. package/dist/components/PasswordInput/PasswordInput.module.js.map +1 -1
  634. package/dist/components/PinInput/PinInput.cjs.map +1 -1
  635. package/dist/components/PinInput/PinInput.js.map +1 -1
  636. package/dist/components/PinInput/PinInput.module.cjs.map +1 -1
  637. package/dist/components/PinInput/PinInput.module.js.map +1 -1
  638. package/dist/components/Popover/Popover.cjs.map +1 -1
  639. package/dist/components/Popover/Popover.js.map +1 -1
  640. package/dist/components/Popover/Popover.module.cjs.map +1 -1
  641. package/dist/components/Popover/Popover.module.js.map +1 -1
  642. package/dist/components/Portal/Portal.cjs.map +1 -1
  643. package/dist/components/Portal/Portal.js.map +1 -1
  644. package/dist/components/Portal/anchor-position.cjs.map +1 -1
  645. package/dist/components/Portal/anchor-position.js.map +1 -1
  646. package/dist/components/Portal/escape-layer.cjs.map +1 -1
  647. package/dist/components/Portal/escape-layer.js.map +1 -1
  648. package/dist/components/Portal/portal-host.cjs.map +1 -1
  649. package/dist/components/Portal/portal-host.js.map +1 -1
  650. package/dist/components/Portal/tab-bridge.cjs +1 -1
  651. package/dist/components/Portal/tab-bridge.cjs.map +1 -1
  652. package/dist/components/Portal/tab-bridge.js +1 -5
  653. package/dist/components/Portal/tab-bridge.js.map +1 -1
  654. package/dist/components/Progress/Progress.cjs.map +1 -1
  655. package/dist/components/Progress/Progress.js.map +1 -1
  656. package/dist/components/Progress/Progress.module.cjs.map +1 -1
  657. package/dist/components/Progress/Progress.module.js.map +1 -1
  658. package/dist/components/QRCode/QRCode.cjs.map +1 -1
  659. package/dist/components/QRCode/QRCode.js.map +1 -1
  660. package/dist/components/QRCode/QRCode.module.cjs.map +1 -1
  661. package/dist/components/QRCode/QRCode.module.js.map +1 -1
  662. package/dist/components/QRCode/qr-encode.cjs +1 -1
  663. package/dist/components/QRCode/qr-encode.cjs.map +1 -1
  664. package/dist/components/QRCode/qr-encode.js +7 -13
  665. package/dist/components/QRCode/qr-encode.js.map +1 -1
  666. package/dist/components/QRCode/qr-tables.cjs.map +1 -1
  667. package/dist/components/QRCode/qr-tables.js.map +1 -1
  668. package/dist/components/Radio/Radio.cjs.map +1 -1
  669. package/dist/components/Radio/Radio.js.map +1 -1
  670. package/dist/components/Radio/Radio.module.cjs.map +1 -1
  671. package/dist/components/Radio/Radio.module.js.map +1 -1
  672. package/dist/components/RangeSlider/RangeSlider.cjs.map +1 -1
  673. package/dist/components/RangeSlider/RangeSlider.js.map +1 -1
  674. package/dist/components/RangeSlider/RangeSlider.module.cjs.map +1 -1
  675. package/dist/components/RangeSlider/RangeSlider.module.js.map +1 -1
  676. package/dist/components/RatingStars/RatingStars.cjs.map +1 -1
  677. package/dist/components/RatingStars/RatingStars.js.map +1 -1
  678. package/dist/components/RatingStars/RatingStars.module.cjs.map +1 -1
  679. package/dist/components/RatingStars/RatingStars.module.js.map +1 -1
  680. package/dist/components/RefreshIndicator/RefreshIndicator.cjs +1 -1
  681. package/dist/components/RefreshIndicator/RefreshIndicator.cjs.map +1 -1
  682. package/dist/components/RefreshIndicator/RefreshIndicator.js +10 -18
  683. package/dist/components/RefreshIndicator/RefreshIndicator.js.map +1 -1
  684. package/dist/components/RefreshIndicator/RefreshIndicator.module.cjs.map +1 -1
  685. package/dist/components/RefreshIndicator/RefreshIndicator.module.js.map +1 -1
  686. package/dist/components/RelativeTime/RelativeTime.cjs.map +1 -1
  687. package/dist/components/RelativeTime/RelativeTime.js.map +1 -1
  688. package/dist/components/Resizable/Resizable.cjs +1 -1
  689. package/dist/components/Resizable/Resizable.cjs.map +1 -1
  690. package/dist/components/Resizable/Resizable.js +1 -9
  691. package/dist/components/Resizable/Resizable.js.map +1 -1
  692. package/dist/components/Resizable/Resizable.module.cjs.map +1 -1
  693. package/dist/components/Resizable/Resizable.module.js.map +1 -1
  694. package/dist/components/Responsive/Responsive.cjs.map +1 -1
  695. package/dist/components/Responsive/Responsive.js.map +1 -1
  696. package/dist/components/Reveal/Reveal.cjs.map +1 -1
  697. package/dist/components/Reveal/Reveal.js.map +1 -1
  698. package/dist/components/Reveal/Reveal.module.cjs.map +1 -1
  699. package/dist/components/Reveal/Reveal.module.js.map +1 -1
  700. package/dist/components/Reveal/reveal-threshold.cjs.map +1 -1
  701. package/dist/components/Reveal/reveal-threshold.js.map +1 -1
  702. package/dist/components/SafeArea/SafeArea.cjs.map +1 -1
  703. package/dist/components/SafeArea/SafeArea.js.map +1 -1
  704. package/dist/components/SafeArea/SafeArea.module.cjs.map +1 -1
  705. package/dist/components/SafeArea/SafeArea.module.js.map +1 -1
  706. package/dist/components/Scheduler/Scheduler.cjs.map +1 -1
  707. package/dist/components/Scheduler/Scheduler.js.map +1 -1
  708. package/dist/components/Scheduler/Scheduler.module.cjs.map +1 -1
  709. package/dist/components/Scheduler/Scheduler.module.js.map +1 -1
  710. package/dist/components/Scheduler/scheduler-layout.cjs.map +1 -1
  711. package/dist/components/Scheduler/scheduler-layout.js.map +1 -1
  712. package/dist/components/ScrollArea/ScrollArea.cjs.map +1 -1
  713. package/dist/components/ScrollArea/ScrollArea.js.map +1 -1
  714. package/dist/components/ScrollArea/ScrollArea.module.cjs.map +1 -1
  715. package/dist/components/ScrollArea/ScrollArea.module.js.map +1 -1
  716. package/dist/components/SearchBar/SearchBar.cjs.map +1 -1
  717. package/dist/components/SearchBar/SearchBar.js.map +1 -1
  718. package/dist/components/SearchBar/SearchBar.module.cjs.map +1 -1
  719. package/dist/components/SearchBar/SearchBar.module.js.map +1 -1
  720. package/dist/components/SectionHeader/SectionHeader.cjs.map +1 -1
  721. package/dist/components/SectionHeader/SectionHeader.js.map +1 -1
  722. package/dist/components/SectionHeader/SectionHeader.module.cjs.map +1 -1
  723. package/dist/components/SectionHeader/SectionHeader.module.js.map +1 -1
  724. package/dist/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
  725. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  726. package/dist/components/SegmentedControl/SegmentedControl.module.cjs.map +1 -1
  727. package/dist/components/SegmentedControl/SegmentedControl.module.js.map +1 -1
  728. package/dist/components/Select/CaretIcon.cjs.map +1 -1
  729. package/dist/components/Select/CaretIcon.js.map +1 -1
  730. package/dist/components/Select/Select.cjs.map +1 -1
  731. package/dist/components/Select/Select.js.map +1 -1
  732. package/dist/components/Select/Select.module.cjs.map +1 -1
  733. package/dist/components/Select/Select.module.js.map +1 -1
  734. package/dist/components/Select/options.cjs.map +1 -1
  735. package/dist/components/Select/options.js.map +1 -1
  736. package/dist/components/Sidebar/Sidebar.cjs +1 -1
  737. package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
  738. package/dist/components/Sidebar/Sidebar.js +13 -23
  739. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  740. package/dist/components/Sidebar/Sidebar.module.cjs.map +1 -1
  741. package/dist/components/Sidebar/Sidebar.module.js.map +1 -1
  742. package/dist/components/Sidebar/SidebarEntry.cjs.map +1 -1
  743. package/dist/components/Sidebar/SidebarEntry.js.map +1 -1
  744. package/dist/components/Sidebar/active-nav-key.cjs.map +1 -1
  745. package/dist/components/Sidebar/active-nav-key.js.map +1 -1
  746. package/dist/components/SignaturePad/SignaturePad.cjs +1 -1
  747. package/dist/components/SignaturePad/SignaturePad.cjs.map +1 -1
  748. package/dist/components/SignaturePad/SignaturePad.js +1 -5
  749. package/dist/components/SignaturePad/SignaturePad.js.map +1 -1
  750. package/dist/components/SignaturePad/SignaturePad.module.cjs.map +1 -1
  751. package/dist/components/SignaturePad/SignaturePad.module.js.map +1 -1
  752. package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
  753. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  754. package/dist/components/Skeleton/Skeleton.module.cjs.map +1 -1
  755. package/dist/components/Skeleton/Skeleton.module.js.map +1 -1
  756. package/dist/components/Slider/Slider.cjs.map +1 -1
  757. package/dist/components/Slider/Slider.js.map +1 -1
  758. package/dist/components/Slider/Slider.module.cjs.map +1 -1
  759. package/dist/components/Slider/Slider.module.js.map +1 -1
  760. package/dist/components/Spacer/Spacer.cjs.map +1 -1
  761. package/dist/components/Spacer/Spacer.js.map +1 -1
  762. package/dist/components/Spacer/Spacer.module.cjs.map +1 -1
  763. package/dist/components/Spacer/Spacer.module.js.map +1 -1
  764. package/dist/components/Sparkline/Sparkline.cjs.map +1 -1
  765. package/dist/components/Sparkline/Sparkline.js.map +1 -1
  766. package/dist/components/Sparkline/Sparkline.module.cjs.map +1 -1
  767. package/dist/components/Sparkline/Sparkline.module.js.map +1 -1
  768. package/dist/components/Sparkline/sparkline-geometry.cjs.map +1 -1
  769. package/dist/components/Sparkline/sparkline-geometry.js.map +1 -1
  770. package/dist/components/Spinner/Spinner.cjs.map +1 -1
  771. package/dist/components/Spinner/Spinner.js.map +1 -1
  772. package/dist/components/Spinner/Spinner.module.cjs.map +1 -1
  773. package/dist/components/Spinner/Spinner.module.js.map +1 -1
  774. package/dist/components/Stat/Stat.cjs.map +1 -1
  775. package/dist/components/Stat/Stat.js.map +1 -1
  776. package/dist/components/Stat/Stat.module.cjs.map +1 -1
  777. package/dist/components/Stat/Stat.module.js.map +1 -1
  778. package/dist/components/Stepper/Stepper.cjs.map +1 -1
  779. package/dist/components/Stepper/Stepper.js.map +1 -1
  780. package/dist/components/Stepper/Stepper.module.cjs.map +1 -1
  781. package/dist/components/Stepper/Stepper.module.js.map +1 -1
  782. package/dist/components/StepperInput/StepperInput.cjs.map +1 -1
  783. package/dist/components/StepperInput/StepperInput.js.map +1 -1
  784. package/dist/components/StepperInput/StepperInput.module.cjs.map +1 -1
  785. package/dist/components/StepperInput/StepperInput.module.js.map +1 -1
  786. package/dist/components/Switch/Switch.cjs.map +1 -1
  787. package/dist/components/Switch/Switch.js.map +1 -1
  788. package/dist/components/Switch/Switch.module.cjs.map +1 -1
  789. package/dist/components/Switch/Switch.module.js.map +1 -1
  790. package/dist/components/SyncStatusBadge/SyncStatusBadge.cjs.map +1 -1
  791. package/dist/components/SyncStatusBadge/SyncStatusBadge.js.map +1 -1
  792. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.cjs.map +1 -1
  793. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.js.map +1 -1
  794. package/dist/components/Table/Table.cjs.map +1 -1
  795. package/dist/components/Table/Table.js.map +1 -1
  796. package/dist/components/Table/Table.module.cjs.map +1 -1
  797. package/dist/components/Table/Table.module.js.map +1 -1
  798. package/dist/components/Tabs/Tabs.cjs.map +1 -1
  799. package/dist/components/Tabs/Tabs.js.map +1 -1
  800. package/dist/components/Tabs/Tabs.module.cjs.map +1 -1
  801. package/dist/components/Tabs/Tabs.module.js.map +1 -1
  802. package/dist/components/Tag/Tag.cjs.map +1 -1
  803. package/dist/components/Tag/Tag.js.map +1 -1
  804. package/dist/components/Tag/Tag.module.cjs.map +1 -1
  805. package/dist/components/Tag/Tag.module.js.map +1 -1
  806. package/dist/components/Textarea/Textarea.cjs.map +1 -1
  807. package/dist/components/Textarea/Textarea.js.map +1 -1
  808. package/dist/components/Textarea/Textarea.module.cjs.map +1 -1
  809. package/dist/components/Textarea/Textarea.module.js.map +1 -1
  810. package/dist/components/TimePicker/TimePicker.cjs.map +1 -1
  811. package/dist/components/TimePicker/TimePicker.js.map +1 -1
  812. package/dist/components/TimePicker/TimePicker.module.cjs.map +1 -1
  813. package/dist/components/TimePicker/TimePicker.module.js.map +1 -1
  814. package/dist/components/Timeline/Timeline.cjs.map +1 -1
  815. package/dist/components/Timeline/Timeline.js.map +1 -1
  816. package/dist/components/Timeline/Timeline.module.cjs.map +1 -1
  817. package/dist/components/Timeline/Timeline.module.js.map +1 -1
  818. package/dist/components/Toast/Toast.module.cjs.map +1 -1
  819. package/dist/components/Toast/Toast.module.js.map +1 -1
  820. package/dist/components/Toast/ToastProvider.cjs.map +1 -1
  821. package/dist/components/Toast/ToastProvider.js.map +1 -1
  822. package/dist/components/Toggle/Toggle.cjs.map +1 -1
  823. package/dist/components/Toggle/Toggle.js.map +1 -1
  824. package/dist/components/Toggle/Toggle.module.cjs.map +1 -1
  825. package/dist/components/Toggle/Toggle.module.js.map +1 -1
  826. package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
  827. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  828. package/dist/components/ToggleGroup/ToggleGroup.module.cjs.map +1 -1
  829. package/dist/components/ToggleGroup/ToggleGroup.module.js.map +1 -1
  830. package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
  831. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  832. package/dist/components/Tooltip/Tooltip.module.cjs.map +1 -1
  833. package/dist/components/Tooltip/Tooltip.module.js.map +1 -1
  834. package/dist/components/Tour/Tour.cjs +1 -1
  835. package/dist/components/Tour/Tour.cjs.map +1 -1
  836. package/dist/components/Tour/Tour.js +1 -5
  837. package/dist/components/Tour/Tour.js.map +1 -1
  838. package/dist/components/Tour/Tour.module.cjs.map +1 -1
  839. package/dist/components/Tour/Tour.module.js.map +1 -1
  840. package/dist/components/Tour/tour-position.cjs.map +1 -1
  841. package/dist/components/Tour/tour-position.js.map +1 -1
  842. package/dist/components/Transfer/Transfer.cjs.map +1 -1
  843. package/dist/components/Transfer/Transfer.js.map +1 -1
  844. package/dist/components/Transfer/Transfer.module.cjs.map +1 -1
  845. package/dist/components/Transfer/Transfer.module.js.map +1 -1
  846. package/dist/components/Transfer/transfer-state.cjs.map +1 -1
  847. package/dist/components/Transfer/transfer-state.js.map +1 -1
  848. package/dist/components/TreeView/TreeView.cjs.map +1 -1
  849. package/dist/components/TreeView/TreeView.js.map +1 -1
  850. package/dist/components/TreeView/TreeView.module.cjs.map +1 -1
  851. package/dist/components/TreeView/TreeView.module.js.map +1 -1
  852. package/dist/components/TruncateText/TruncateText.cjs.map +1 -1
  853. package/dist/components/TruncateText/TruncateText.js.map +1 -1
  854. package/dist/components/TruncateText/TruncateText.module.cjs.map +1 -1
  855. package/dist/components/TruncateText/TruncateText.module.js.map +1 -1
  856. package/dist/components/UpdatePrompt/UpdatePrompt.cjs.map +1 -1
  857. package/dist/components/UpdatePrompt/UpdatePrompt.js.map +1 -1
  858. package/dist/components/UpdatePrompt/UpdatePrompt.module.cjs.map +1 -1
  859. package/dist/components/UpdatePrompt/UpdatePrompt.module.js.map +1 -1
  860. package/dist/components/VideoPlayer/VideoPlayer.cjs +1 -1
  861. package/dist/components/VideoPlayer/VideoPlayer.cjs.map +1 -1
  862. package/dist/components/VideoPlayer/VideoPlayer.js +1 -7
  863. package/dist/components/VideoPlayer/VideoPlayer.js.map +1 -1
  864. package/dist/components/VideoPlayer/VideoPlayer.module.cjs.map +1 -1
  865. package/dist/components/VideoPlayer/VideoPlayer.module.js.map +1 -1
  866. package/dist/components/VideoPlayer/playback-rates.cjs.map +1 -1
  867. package/dist/components/VideoPlayer/playback-rates.js.map +1 -1
  868. package/dist/components/VirtualList/VirtualList.cjs.map +1 -1
  869. package/dist/components/VirtualList/VirtualList.js.map +1 -1
  870. package/dist/components/VirtualList/VirtualList.module.cjs.map +1 -1
  871. package/dist/components/VirtualList/VirtualList.module.js.map +1 -1
  872. package/dist/components/VirtualTable/VirtualTable.cjs.map +1 -1
  873. package/dist/components/VirtualTable/VirtualTable.js.map +1 -1
  874. package/dist/components/VirtualTable/VirtualTable.module.cjs.map +1 -1
  875. package/dist/components/VirtualTable/VirtualTable.module.js.map +1 -1
  876. package/dist/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
  877. package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  878. package/dist/components/VisuallyHidden/VisuallyHidden.module.cjs.map +1 -1
  879. package/dist/components/VisuallyHidden/VisuallyHidden.module.js.map +1 -1
  880. package/dist/components/Wizard/Wizard.cjs +1 -1
  881. package/dist/components/Wizard/Wizard.cjs.map +1 -1
  882. package/dist/components/Wizard/Wizard.js +4 -11
  883. package/dist/components/Wizard/Wizard.js.map +1 -1
  884. package/dist/components/Wizard/Wizard.module.cjs.map +1 -1
  885. package/dist/components/Wizard/Wizard.module.js.map +1 -1
  886. package/dist/data/create-data-provider.cjs.map +1 -1
  887. package/dist/data/create-data-provider.js.map +1 -1
  888. package/dist/data/data-provider-context.cjs.map +1 -1
  889. package/dist/data/data-provider-context.js.map +1 -1
  890. package/dist/data/use-resource.cjs.map +1 -1
  891. package/dist/data/use-resource.js.map +1 -1
  892. package/dist/editor/RichTextEditor.cjs.map +1 -1
  893. package/dist/editor/RichTextEditor.js.map +1 -1
  894. package/dist/editor/RichTextEditor.module.cjs.map +1 -1
  895. package/dist/editor/RichTextEditor.module.js.map +1 -1
  896. package/dist/editor.js +1 -2
  897. package/dist/error-boundary/ErrorBoundary.cjs.map +1 -1
  898. package/dist/error-boundary/ErrorBoundary.js.map +1 -1
  899. package/dist/error-boundary/use-error-handler.cjs.map +1 -1
  900. package/dist/error-boundary/use-error-handler.js.map +1 -1
  901. package/dist/feature-flags/FeatureFlagsProvider.cjs.map +1 -1
  902. package/dist/feature-flags/FeatureFlagsProvider.js.map +1 -1
  903. package/dist/feature-flags/growthbook-adapter.cjs.map +1 -1
  904. package/dist/feature-flags/growthbook-adapter.js.map +1 -1
  905. package/dist/feature-flags/in-memory-adapter.cjs.map +1 -1
  906. package/dist/feature-flags/in-memory-adapter.js.map +1 -1
  907. package/dist/feature-flags/launchdarkly-adapter.cjs.map +1 -1
  908. package/dist/feature-flags/launchdarkly-adapter.js.map +1 -1
  909. package/dist/forms/FormField.cjs.map +1 -1
  910. package/dist/forms/FormField.js.map +1 -1
  911. package/dist/forms/br-validators.cjs.map +1 -1
  912. package/dist/forms/br-validators.js.map +1 -1
  913. package/dist/forms/masked-inputs.cjs.map +1 -1
  914. package/dist/forms/masked-inputs.js.map +1 -1
  915. package/dist/forms/use-viacep.cjs.map +1 -1
  916. package/dist/forms/use-viacep.js.map +1 -1
  917. package/dist/forms/use-zod-form.cjs.map +1 -1
  918. package/dist/forms/use-zod-form.js.map +1 -1
  919. package/dist/forms/validate-form.cjs.map +1 -1
  920. package/dist/forms/validate-form.js.map +1 -1
  921. package/dist/forms/zod-resolver.cjs.map +1 -1
  922. package/dist/forms/zod-resolver.js.map +1 -1
  923. package/dist/geo/TrajectoryMap.cjs.map +1 -1
  924. package/dist/geo/TrajectoryMap.js.map +1 -1
  925. package/dist/geo/TrajectoryMap.module.cjs.map +1 -1
  926. package/dist/geo/TrajectoryMap.module.js.map +1 -1
  927. package/dist/geo/bounds.cjs.map +1 -1
  928. package/dist/geo/bounds.js.map +1 -1
  929. package/dist/geo/create-position-tracker.cjs +1 -1
  930. package/dist/geo/create-position-tracker.cjs.map +1 -1
  931. package/dist/geo/create-position-tracker.js +1 -7
  932. package/dist/geo/create-position-tracker.js.map +1 -1
  933. package/dist/geo/distance.cjs.map +1 -1
  934. package/dist/geo/distance.js.map +1 -1
  935. package/dist/geo/estimate.cjs.map +1 -1
  936. package/dist/geo/estimate.js.map +1 -1
  937. package/dist/geo/leaflet-map.cjs.map +1 -1
  938. package/dist/geo/leaflet-map.js.map +1 -1
  939. package/dist/geo/projection.cjs.map +1 -1
  940. package/dist/geo/projection.js.map +1 -1
  941. package/dist/geo/routing.cjs.map +1 -1
  942. package/dist/geo/routing.js.map +1 -1
  943. package/dist/geo/types.cjs.map +1 -1
  944. package/dist/geo/types.js.map +1 -1
  945. package/dist/geo/use-position-tracker.cjs.map +1 -1
  946. package/dist/geo/use-position-tracker.js.map +1 -1
  947. package/dist/hooks/pwa-env.cjs.map +1 -1
  948. package/dist/hooks/pwa-env.js.map +1 -1
  949. package/dist/hooks/tab-sequence.cjs.map +1 -1
  950. package/dist/hooks/tab-sequence.js.map +1 -1
  951. package/dist/hooks/use-announce.cjs +1 -1
  952. package/dist/hooks/use-announce.cjs.map +1 -1
  953. package/dist/hooks/use-announce.js +2 -2
  954. package/dist/hooks/use-announce.js.map +1 -1
  955. package/dist/hooks/use-async.cjs.map +1 -1
  956. package/dist/hooks/use-async.js.map +1 -1
  957. package/dist/hooks/use-before-install-prompt.cjs.map +1 -1
  958. package/dist/hooks/use-before-install-prompt.js.map +1 -1
  959. package/dist/hooks/use-breakpoint.cjs.map +1 -1
  960. package/dist/hooks/use-breakpoint.js.map +1 -1
  961. package/dist/hooks/use-click-outside.cjs.map +1 -1
  962. package/dist/hooks/use-click-outside.js.map +1 -1
  963. package/dist/hooks/use-client-filter.cjs.map +1 -1
  964. package/dist/hooks/use-client-filter.js.map +1 -1
  965. package/dist/hooks/use-clipboard.cjs.map +1 -1
  966. package/dist/hooks/use-clipboard.js.map +1 -1
  967. package/dist/hooks/use-countdown.cjs.map +1 -1
  968. package/dist/hooks/use-countdown.js.map +1 -1
  969. package/dist/hooks/use-counter.cjs.map +1 -1
  970. package/dist/hooks/use-counter.js.map +1 -1
  971. package/dist/hooks/use-debounce.cjs.map +1 -1
  972. package/dist/hooks/use-debounce.js.map +1 -1
  973. package/dist/hooks/use-deep-memo.cjs.map +1 -1
  974. package/dist/hooks/use-deep-memo.js.map +1 -1
  975. package/dist/hooks/use-disclosure.cjs.map +1 -1
  976. package/dist/hooks/use-disclosure.js.map +1 -1
  977. package/dist/hooks/use-document-title.cjs.map +1 -1
  978. package/dist/hooks/use-document-title.js.map +1 -1
  979. package/dist/hooks/use-document-visibility.cjs.map +1 -1
  980. package/dist/hooks/use-document-visibility.js.map +1 -1
  981. package/dist/hooks/use-draft-filters.cjs.map +1 -1
  982. package/dist/hooks/use-draft-filters.js.map +1 -1
  983. package/dist/hooks/use-event-listener.cjs.map +1 -1
  984. package/dist/hooks/use-event-listener.js.map +1 -1
  985. package/dist/hooks/use-favicon.cjs.map +1 -1
  986. package/dist/hooks/use-favicon.js.map +1 -1
  987. package/dist/hooks/use-focus-trap.cjs.map +1 -1
  988. package/dist/hooks/use-focus-trap.js.map +1 -1
  989. package/dist/hooks/use-fullscreen-element.cjs.map +1 -1
  990. package/dist/hooks/use-fullscreen-element.js.map +1 -1
  991. package/dist/hooks/use-fullscreen.cjs +1 -1
  992. package/dist/hooks/use-fullscreen.cjs.map +1 -1
  993. package/dist/hooks/use-fullscreen.js +7 -23
  994. package/dist/hooks/use-fullscreen.js.map +1 -1
  995. package/dist/hooks/use-geolocation.cjs.map +1 -1
  996. package/dist/hooks/use-geolocation.js.map +1 -1
  997. package/dist/hooks/use-hover.cjs.map +1 -1
  998. package/dist/hooks/use-hover.js.map +1 -1
  999. package/dist/hooks/use-idle.cjs.map +1 -1
  1000. package/dist/hooks/use-idle.js.map +1 -1
  1001. package/dist/hooks/use-install-prompt.cjs +1 -1
  1002. package/dist/hooks/use-install-prompt.cjs.map +1 -1
  1003. package/dist/hooks/use-install-prompt.js +1 -1
  1004. package/dist/hooks/use-install-prompt.js.map +1 -1
  1005. package/dist/hooks/use-intersection-observer.cjs.map +1 -1
  1006. package/dist/hooks/use-intersection-observer.js.map +1 -1
  1007. package/dist/hooks/use-interval.cjs.map +1 -1
  1008. package/dist/hooks/use-interval.js.map +1 -1
  1009. package/dist/hooks/use-is-first-render.cjs.map +1 -1
  1010. package/dist/hooks/use-is-first-render.js.map +1 -1
  1011. package/dist/hooks/use-keyboard-shortcut.cjs.map +1 -1
  1012. package/dist/hooks/use-keyboard-shortcut.js.map +1 -1
  1013. package/dist/hooks/use-latest-ref.cjs.map +1 -1
  1014. package/dist/hooks/use-latest-ref.js.map +1 -1
  1015. package/dist/hooks/use-list-state.cjs.map +1 -1
  1016. package/dist/hooks/use-list-state.js.map +1 -1
  1017. package/dist/hooks/use-local-storage.cjs +1 -1
  1018. package/dist/hooks/use-local-storage.cjs.map +1 -1
  1019. package/dist/hooks/use-local-storage.js +2 -5
  1020. package/dist/hooks/use-local-storage.js.map +1 -1
  1021. package/dist/hooks/use-long-press-handlers.cjs.map +1 -1
  1022. package/dist/hooks/use-long-press-handlers.js.map +1 -1
  1023. package/dist/hooks/use-long-press.cjs.map +1 -1
  1024. package/dist/hooks/use-long-press.js.map +1 -1
  1025. package/dist/hooks/use-map.cjs.map +1 -1
  1026. package/dist/hooks/use-map.js.map +1 -1
  1027. package/dist/hooks/use-media-devices.cjs.map +1 -1
  1028. package/dist/hooks/use-media-devices.js.map +1 -1
  1029. package/dist/hooks/use-media-permission.cjs +1 -1
  1030. package/dist/hooks/use-media-permission.cjs.map +1 -1
  1031. package/dist/hooks/use-media-permission.js +2 -5
  1032. package/dist/hooks/use-media-permission.js.map +1 -1
  1033. package/dist/hooks/use-media-query.cjs.map +1 -1
  1034. package/dist/hooks/use-media-query.js.map +1 -1
  1035. package/dist/hooks/use-object-url.cjs.map +1 -1
  1036. package/dist/hooks/use-object-url.js.map +1 -1
  1037. package/dist/hooks/use-online.cjs.map +1 -1
  1038. package/dist/hooks/use-online.js.map +1 -1
  1039. package/dist/hooks/use-pagination.cjs.map +1 -1
  1040. package/dist/hooks/use-pagination.js.map +1 -1
  1041. package/dist/hooks/use-previous.cjs.map +1 -1
  1042. package/dist/hooks/use-previous.js.map +1 -1
  1043. package/dist/hooks/use-push-to-talk.cjs.map +1 -1
  1044. package/dist/hooks/use-push-to-talk.js.map +1 -1
  1045. package/dist/hooks/use-queue.cjs.map +1 -1
  1046. package/dist/hooks/use-queue.js.map +1 -1
  1047. package/dist/hooks/use-resize-observer.cjs.map +1 -1
  1048. package/dist/hooks/use-resize-observer.js.map +1 -1
  1049. package/dist/hooks/use-scroll-lock.cjs.map +1 -1
  1050. package/dist/hooks/use-scroll-lock.js.map +1 -1
  1051. package/dist/hooks/use-scroll-overflow.cjs.map +1 -1
  1052. package/dist/hooks/use-scroll-overflow.js.map +1 -1
  1053. package/dist/hooks/use-service-worker-update.cjs.map +1 -1
  1054. package/dist/hooks/use-service-worker-update.js.map +1 -1
  1055. package/dist/hooks/use-set.cjs.map +1 -1
  1056. package/dist/hooks/use-set.js.map +1 -1
  1057. package/dist/hooks/use-sortable.cjs.map +1 -1
  1058. package/dist/hooks/use-sortable.js.map +1 -1
  1059. package/dist/hooks/use-stable-callback.cjs.map +1 -1
  1060. package/dist/hooks/use-stable-callback.js.map +1 -1
  1061. package/dist/hooks/use-storage-estimate.cjs.map +1 -1
  1062. package/dist/hooks/use-storage-estimate.js.map +1 -1
  1063. package/dist/hooks/use-throttle.cjs.map +1 -1
  1064. package/dist/hooks/use-throttle.js.map +1 -1
  1065. package/dist/hooks/use-timeout.cjs.map +1 -1
  1066. package/dist/hooks/use-timeout.js.map +1 -1
  1067. package/dist/hooks/use-toggle.cjs.map +1 -1
  1068. package/dist/hooks/use-toggle.js.map +1 -1
  1069. package/dist/hooks/use-typewriter.cjs.map +1 -1
  1070. package/dist/hooks/use-typewriter.js.map +1 -1
  1071. package/dist/hooks/use-window-size.cjs.map +1 -1
  1072. package/dist/hooks/use-window-size.js.map +1 -1
  1073. package/dist/http/api-client.cjs.map +1 -1
  1074. package/dist/http/api-client.js.map +1 -1
  1075. package/dist/http/build-url.cjs.map +1 -1
  1076. package/dist/http/build-url.js.map +1 -1
  1077. package/dist/http/credential-scope.cjs.map +1 -1
  1078. package/dist/http/credential-scope.js.map +1 -1
  1079. package/dist/http/csrf.cjs.map +1 -1
  1080. package/dist/http/csrf.js.map +1 -1
  1081. package/dist/http/decode-response.cjs.map +1 -1
  1082. package/dist/http/decode-response.js.map +1 -1
  1083. package/dist/http/describe-api-error.cjs.map +1 -1
  1084. package/dist/http/describe-api-error.js.map +1 -1
  1085. package/dist/http/errors.cjs.map +1 -1
  1086. package/dist/http/errors.js.map +1 -1
  1087. package/dist/http/idempotency.cjs.map +1 -1
  1088. package/dist/http/idempotency.js.map +1 -1
  1089. package/dist/http/parse-response.cjs.map +1 -1
  1090. package/dist/http/parse-response.js.map +1 -1
  1091. package/dist/http/resumable-upload.cjs.map +1 -1
  1092. package/dist/http/resumable-upload.js.map +1 -1
  1093. package/dist/http/retry.cjs.map +1 -1
  1094. package/dist/http/retry.js.map +1 -1
  1095. package/dist/http/timeout.cjs.map +1 -1
  1096. package/dist/http/timeout.js.map +1 -1
  1097. package/dist/http/upload-with-progress.cjs +1 -1
  1098. package/dist/http/upload-with-progress.cjs.map +1 -1
  1099. package/dist/http/upload-with-progress.js +2 -7
  1100. package/dist/http/upload-with-progress.js.map +1 -1
  1101. package/dist/http/use-describe-api-error.cjs.map +1 -1
  1102. package/dist/http/use-describe-api-error.js.map +1 -1
  1103. package/dist/http/use-poll.cjs +1 -1
  1104. package/dist/http/use-poll.cjs.map +1 -1
  1105. package/dist/http/use-poll.js +2 -5
  1106. package/dist/http/use-poll.js.map +1 -1
  1107. package/dist/i18n/I18nProvider.cjs.map +1 -1
  1108. package/dist/i18n/I18nProvider.js.map +1 -1
  1109. package/dist/i18n/create-i18n.cjs.map +1 -1
  1110. package/dist/i18n/create-i18n.js.map +1 -1
  1111. package/dist/icons/Icon.cjs.map +1 -1
  1112. package/dist/icons/Icon.js.map +1 -1
  1113. package/dist/icons/IconPicker.cjs.map +1 -1
  1114. package/dist/icons/IconPicker.js.map +1 -1
  1115. package/dist/icons/IconPicker.module.cjs.map +1 -1
  1116. package/dist/icons/IconPicker.module.js.map +1 -1
  1117. package/dist/icons/IconProvider.cjs.map +1 -1
  1118. package/dist/icons/IconProvider.js.map +1 -1
  1119. package/dist/icons/alias.cjs.map +1 -1
  1120. package/dist/icons/alias.js.map +1 -1
  1121. package/dist/icons/generated/aliases.cjs.map +1 -1
  1122. package/dist/icons/generated/aliases.js.map +1 -1
  1123. package/dist/icons/generated/icon-names.cjs.map +1 -1
  1124. package/dist/icons/generated/icon-names.js.map +1 -1
  1125. package/dist/icons/generated/loaders.cjs.map +1 -1
  1126. package/dist/icons/generated/loaders.js.map +1 -1
  1127. package/dist/icons/generated/shard-00.cjs.map +1 -1
  1128. package/dist/icons/generated/shard-00.js.map +1 -1
  1129. package/dist/icons/generated/shard-01.cjs.map +1 -1
  1130. package/dist/icons/generated/shard-01.js.map +1 -1
  1131. package/dist/icons/generated/shard-02.cjs.map +1 -1
  1132. package/dist/icons/generated/shard-02.js.map +1 -1
  1133. package/dist/icons/generated/shard-03.cjs.map +1 -1
  1134. package/dist/icons/generated/shard-03.js.map +1 -1
  1135. package/dist/icons/generated/shard-04.cjs.map +1 -1
  1136. package/dist/icons/generated/shard-04.js.map +1 -1
  1137. package/dist/icons/generated/shard-05.cjs.map +1 -1
  1138. package/dist/icons/generated/shard-05.js.map +1 -1
  1139. package/dist/icons/generated/shard-06.cjs.map +1 -1
  1140. package/dist/icons/generated/shard-06.js.map +1 -1
  1141. package/dist/icons/generated/shard-07.cjs.map +1 -1
  1142. package/dist/icons/generated/shard-07.js.map +1 -1
  1143. package/dist/icons/generated/shard-08.cjs.map +1 -1
  1144. package/dist/icons/generated/shard-08.js.map +1 -1
  1145. package/dist/icons/generated/shard-09.cjs.map +1 -1
  1146. package/dist/icons/generated/shard-09.js.map +1 -1
  1147. package/dist/icons/generated/shard-10.cjs.map +1 -1
  1148. package/dist/icons/generated/shard-10.js.map +1 -1
  1149. package/dist/icons/generated/shard-11.cjs.map +1 -1
  1150. package/dist/icons/generated/shard-11.js.map +1 -1
  1151. package/dist/icons/generated/shard-12.cjs.map +1 -1
  1152. package/dist/icons/generated/shard-12.js.map +1 -1
  1153. package/dist/icons/generated/shard-13.cjs.map +1 -1
  1154. package/dist/icons/generated/shard-13.js.map +1 -1
  1155. package/dist/icons/generated/shard-14.cjs.map +1 -1
  1156. package/dist/icons/generated/shard-14.js.map +1 -1
  1157. package/dist/icons/generated/shard-15.cjs.map +1 -1
  1158. package/dist/icons/generated/shard-15.js.map +1 -1
  1159. package/dist/icons/generated/shard-16.cjs.map +1 -1
  1160. package/dist/icons/generated/shard-16.js.map +1 -1
  1161. package/dist/icons/generated/shard-17.cjs.map +1 -1
  1162. package/dist/icons/generated/shard-17.js.map +1 -1
  1163. package/dist/icons/generated/shard-18.cjs.map +1 -1
  1164. package/dist/icons/generated/shard-18.js.map +1 -1
  1165. package/dist/icons/generated/shard-19.cjs.map +1 -1
  1166. package/dist/icons/generated/shard-19.js.map +1 -1
  1167. package/dist/icons/generated/shard-20.cjs.map +1 -1
  1168. package/dist/icons/generated/shard-20.js.map +1 -1
  1169. package/dist/icons/generated/shard-21.cjs.map +1 -1
  1170. package/dist/icons/generated/shard-21.js.map +1 -1
  1171. package/dist/icons/generated/shard-22.cjs.map +1 -1
  1172. package/dist/icons/generated/shard-22.js.map +1 -1
  1173. package/dist/icons/generated/shard-23.cjs.map +1 -1
  1174. package/dist/icons/generated/shard-23.js.map +1 -1
  1175. package/dist/icons/generated/shard-24.cjs.map +1 -1
  1176. package/dist/icons/generated/shard-24.js.map +1 -1
  1177. package/dist/icons/generated/shard-25.cjs.map +1 -1
  1178. package/dist/icons/generated/shard-25.js.map +1 -1
  1179. package/dist/icons/generated/shard-26.cjs.map +1 -1
  1180. package/dist/icons/generated/shard-26.js.map +1 -1
  1181. package/dist/icons/generated/shard-27.cjs.map +1 -1
  1182. package/dist/icons/generated/shard-27.js.map +1 -1
  1183. package/dist/icons/generated/shard-28.cjs.map +1 -1
  1184. package/dist/icons/generated/shard-28.js.map +1 -1
  1185. package/dist/icons/generated/shard-29.cjs.map +1 -1
  1186. package/dist/icons/generated/shard-29.js.map +1 -1
  1187. package/dist/icons/generated/shard-30.cjs.map +1 -1
  1188. package/dist/icons/generated/shard-30.js.map +1 -1
  1189. package/dist/icons/generated/shard-31.cjs.map +1 -1
  1190. package/dist/icons/generated/shard-31.js.map +1 -1
  1191. package/dist/icons/generated/shard-32.cjs.map +1 -1
  1192. package/dist/icons/generated/shard-32.js.map +1 -1
  1193. package/dist/icons/generated/shard-33.cjs.map +1 -1
  1194. package/dist/icons/generated/shard-33.js.map +1 -1
  1195. package/dist/icons/generated/shard-34.cjs.map +1 -1
  1196. package/dist/icons/generated/shard-34.js.map +1 -1
  1197. package/dist/icons/generated/shard-35.cjs.map +1 -1
  1198. package/dist/icons/generated/shard-35.js.map +1 -1
  1199. package/dist/icons/generated/shard-36.cjs.map +1 -1
  1200. package/dist/icons/generated/shard-36.js.map +1 -1
  1201. package/dist/icons/generated/shard-37.cjs.map +1 -1
  1202. package/dist/icons/generated/shard-37.js.map +1 -1
  1203. package/dist/icons/generated/shard-38.cjs.map +1 -1
  1204. package/dist/icons/generated/shard-38.js.map +1 -1
  1205. package/dist/icons/generated/shard-39.cjs.map +1 -1
  1206. package/dist/icons/generated/shard-39.js.map +1 -1
  1207. package/dist/icons/generated/shard-40.cjs.map +1 -1
  1208. package/dist/icons/generated/shard-40.js.map +1 -1
  1209. package/dist/icons/generated/shard-41.cjs.map +1 -1
  1210. package/dist/icons/generated/shard-41.js.map +1 -1
  1211. package/dist/icons/generated/shard-42.cjs.map +1 -1
  1212. package/dist/icons/generated/shard-42.js.map +1 -1
  1213. package/dist/icons/generated/shard-43.cjs.map +1 -1
  1214. package/dist/icons/generated/shard-43.js.map +1 -1
  1215. package/dist/icons/generated/shard-44.cjs.map +1 -1
  1216. package/dist/icons/generated/shard-44.js.map +1 -1
  1217. package/dist/icons/generated/shard-45.cjs.map +1 -1
  1218. package/dist/icons/generated/shard-45.js.map +1 -1
  1219. package/dist/icons/icon-context.cjs.map +1 -1
  1220. package/dist/icons/icon-context.js.map +1 -1
  1221. package/dist/icons/is-icon-name.cjs.map +1 -1
  1222. package/dist/icons/is-icon-name.js.map +1 -1
  1223. package/dist/icons/material-symbols.cjs.map +1 -1
  1224. package/dist/icons/material-symbols.js.map +1 -1
  1225. package/dist/icons/normalize-icon-name.cjs.map +1 -1
  1226. package/dist/icons/normalize-icon-name.js.map +1 -1
  1227. package/dist/icons/shard-cache.cjs +1 -1
  1228. package/dist/icons/shard-cache.cjs.map +1 -1
  1229. package/dist/icons/shard-cache.js +2 -5
  1230. package/dist/icons/shard-cache.js.map +1 -1
  1231. package/dist/icons/use-icon.cjs.map +1 -1
  1232. package/dist/icons/use-icon.js.map +1 -1
  1233. package/dist/icons/validate-icon-name.cjs.map +1 -1
  1234. package/dist/icons/validate-icon-name.js.map +1 -1
  1235. package/dist/icons-virtual.cjs.map +1 -1
  1236. package/dist/icons-virtual.js.map +1 -1
  1237. package/dist/imaging/canvas.cjs.map +1 -1
  1238. package/dist/imaging/canvas.js.map +1 -1
  1239. package/dist/imaging/compress.cjs.map +1 -1
  1240. package/dist/imaging/compress.js.map +1 -1
  1241. package/dist/imaging/decode.cjs.map +1 -1
  1242. package/dist/imaging/decode.js.map +1 -1
  1243. package/dist/imaging/encode.cjs.map +1 -1
  1244. package/dist/imaging/encode.js.map +1 -1
  1245. package/dist/imaging/exceptions.cjs.map +1 -1
  1246. package/dist/imaging/exceptions.js.map +1 -1
  1247. package/dist/imaging/frame.cjs.map +1 -1
  1248. package/dist/imaging/frame.js.map +1 -1
  1249. package/dist/imaging/thumbnails.cjs.map +1 -1
  1250. package/dist/imaging/thumbnails.js.map +1 -1
  1251. package/dist/imaging/transform.cjs.map +1 -1
  1252. package/dist/imaging/transform.js.map +1 -1
  1253. package/dist/imaging/use-image-processing.cjs.map +1 -1
  1254. package/dist/imaging/use-image-processing.js.map +1 -1
  1255. package/dist/logger/logger.cjs.map +1 -1
  1256. package/dist/logger/logger.js.map +1 -1
  1257. package/dist/neural.cjs.map +1 -1
  1258. package/dist/neural.js.map +1 -1
  1259. package/dist/oauth/GoogleSignIn.cjs +1 -1
  1260. package/dist/oauth/GoogleSignIn.cjs.map +1 -1
  1261. package/dist/oauth/GoogleSignIn.js +6 -9
  1262. package/dist/oauth/GoogleSignIn.js.map +1 -1
  1263. package/dist/oauth/callback.cjs.map +1 -1
  1264. package/dist/oauth/callback.js.map +1 -1
  1265. package/dist/oauth/use-oauth-callback.cjs.map +1 -1
  1266. package/dist/oauth/use-oauth-callback.js.map +1 -1
  1267. package/dist/offline/conflict.cjs.map +1 -1
  1268. package/dist/offline/conflict.js.map +1 -1
  1269. package/dist/offline/create-offline-database.cjs.map +1 -1
  1270. package/dist/offline/create-offline-database.js.map +1 -1
  1271. package/dist/offline/create-offline-store.cjs +1 -1
  1272. package/dist/offline/create-offline-store.cjs.map +1 -1
  1273. package/dist/offline/create-offline-store.js +1 -5
  1274. package/dist/offline/create-offline-store.js.map +1 -1
  1275. package/dist/offline/create-offline-sync.cjs +1 -1
  1276. package/dist/offline/create-offline-sync.cjs.map +1 -1
  1277. package/dist/offline/create-offline-sync.js +9 -14
  1278. package/dist/offline/create-offline-sync.js.map +1 -1
  1279. package/dist/offline/use-offline-sync.cjs.map +1 -1
  1280. package/dist/offline/use-offline-sync.js.map +1 -1
  1281. package/dist/perf/cache-size.cjs.map +1 -1
  1282. package/dist/perf/cache-size.js.map +1 -1
  1283. package/dist/perf/device.cjs.map +1 -1
  1284. package/dist/perf/device.js.map +1 -1
  1285. package/dist/perf/format.cjs.map +1 -1
  1286. package/dist/perf/format.js.map +1 -1
  1287. package/dist/perf/profiler.cjs.map +1 -1
  1288. package/dist/perf/profiler.js.map +1 -1
  1289. package/dist/push/use-push-subscription.cjs.map +1 -1
  1290. package/dist/push/use-push-subscription.js.map +1 -1
  1291. package/dist/push/utils.cjs.map +1 -1
  1292. package/dist/push/utils.js.map +1 -1
  1293. package/dist/push/web-push-client.cjs.map +1 -1
  1294. package/dist/push/web-push-client.js.map +1 -1
  1295. package/dist/query/QueryProvider.cjs.map +1 -1
  1296. package/dist/query/QueryProvider.js.map +1 -1
  1297. package/dist/query/constants.cjs.map +1 -1
  1298. package/dist/query/constants.js.map +1 -1
  1299. package/dist/query/create-query-keys.cjs.map +1 -1
  1300. package/dist/query/create-query-keys.js.map +1 -1
  1301. package/dist/query/foreign-client-warning.cjs.map +1 -1
  1302. package/dist/query/foreign-client-warning.js.map +1 -1
  1303. package/dist/query/offline-persistence.cjs +1 -1
  1304. package/dist/query/offline-persistence.cjs.map +1 -1
  1305. package/dist/query/offline-persistence.js +2 -10
  1306. package/dist/query/offline-persistence.js.map +1 -1
  1307. package/dist/query/optimistic.cjs.map +1 -1
  1308. package/dist/query/optimistic.js.map +1 -1
  1309. package/dist/query/pagination.cjs.map +1 -1
  1310. package/dist/query/pagination.js.map +1 -1
  1311. package/dist/query/retry-policy.cjs.map +1 -1
  1312. package/dist/query/retry-policy.js.map +1 -1
  1313. package/dist/query/use-cursor-query.cjs.map +1 -1
  1314. package/dist/query/use-cursor-query.js.map +1 -1
  1315. package/dist/query/use-offline-mutation.cjs.map +1 -1
  1316. package/dist/query/use-offline-mutation.js.map +1 -1
  1317. package/dist/query/use-paginated-query.cjs.map +1 -1
  1318. package/dist/query/use-paginated-query.js.map +1 -1
  1319. package/dist/router/AppRouter.cjs.map +1 -1
  1320. package/dist/router/AppRouter.js.map +1 -1
  1321. package/dist/router/RouteGuard.cjs.map +1 -1
  1322. package/dist/router/RouteGuard.js.map +1 -1
  1323. package/dist/router/index.js +2 -2
  1324. package/dist/share/share-or-download.cjs.map +1 -1
  1325. package/dist/share/share-or-download.js.map +1 -1
  1326. package/dist/share/share.cjs.map +1 -1
  1327. package/dist/share/share.js.map +1 -1
  1328. package/dist/sse/create-event-stream.cjs.map +1 -1
  1329. package/dist/sse/create-event-stream.js.map +1 -1
  1330. package/dist/sse/use-event-stream.cjs.map +1 -1
  1331. package/dist/sse/use-event-stream.js.map +1 -1
  1332. package/dist/store/create-selectors.cjs.map +1 -1
  1333. package/dist/store/create-selectors.js.map +1 -1
  1334. package/dist/store/create-store.cjs.map +1 -1
  1335. package/dist/store/create-store.js.map +1 -1
  1336. package/dist/sw/background-sync.cjs.map +1 -1
  1337. package/dist/sw/background-sync.js.map +1 -1
  1338. package/dist/sw/cache-inspect.cjs.map +1 -1
  1339. package/dist/sw/cache-inspect.js.map +1 -1
  1340. package/dist/sw/cache.cjs +1 -1
  1341. package/dist/sw/cache.cjs.map +1 -1
  1342. package/dist/sw/cache.js +2 -6
  1343. package/dist/sw/cache.js.map +1 -1
  1344. package/dist/sw/create-push-handler.cjs.map +1 -1
  1345. package/dist/sw/create-push-handler.js.map +1 -1
  1346. package/dist/sw/credential-headers.cjs.map +1 -1
  1347. package/dist/sw/credential-headers.js.map +1 -1
  1348. package/dist/sw/periodic-sync.cjs.map +1 -1
  1349. package/dist/sw/periodic-sync.js.map +1 -1
  1350. package/dist/sw/register-service-worker.cjs.map +1 -1
  1351. package/dist/sw/register-service-worker.js.map +1 -1
  1352. package/dist/sw/session-data.cjs.map +1 -1
  1353. package/dist/sw/session-data.js.map +1 -1
  1354. package/dist/tabular/assets.cjs.map +1 -1
  1355. package/dist/tabular/assets.js.map +1 -1
  1356. package/dist/tabular/cache.cjs.map +1 -1
  1357. package/dist/tabular/cache.js.map +1 -1
  1358. package/dist/tabular/compact.cjs.map +1 -1
  1359. package/dist/tabular/compact.js.map +1 -1
  1360. package/dist/tabular/exceptions.cjs.map +1 -1
  1361. package/dist/tabular/exceptions.js.map +1 -1
  1362. package/dist/tabular/manifest.cjs.map +1 -1
  1363. package/dist/tabular/manifest.js.map +1 -1
  1364. package/dist/tabular/predictor.cjs.map +1 -1
  1365. package/dist/tabular/predictor.js.map +1 -1
  1366. package/dist/tabular/use-tabular-predictor.cjs.map +1 -1
  1367. package/dist/tabular/use-tabular-predictor.js.map +1 -1
  1368. package/dist/telemetry/TelemetryProvider.cjs.map +1 -1
  1369. package/dist/telemetry/TelemetryProvider.js.map +1 -1
  1370. package/dist/telemetry/app-error-adapter.cjs.map +1 -1
  1371. package/dist/telemetry/app-error-adapter.js.map +1 -1
  1372. package/dist/telemetry/app-error-queue.cjs.map +1 -1
  1373. package/dist/telemetry/app-error-queue.js.map +1 -1
  1374. package/dist/telemetry/app-error-reporter.cjs.map +1 -1
  1375. package/dist/telemetry/app-error-reporter.js.map +1 -1
  1376. package/dist/telemetry/app-error-schema.cjs.map +1 -1
  1377. package/dist/telemetry/app-error-schema.js.map +1 -1
  1378. package/dist/telemetry/app-error-transport.cjs.map +1 -1
  1379. package/dist/telemetry/app-error-transport.js.map +1 -1
  1380. package/dist/telemetry/console-adapter.cjs.map +1 -1
  1381. package/dist/telemetry/console-adapter.js.map +1 -1
  1382. package/dist/telemetry/describe-app-error.cjs.map +1 -1
  1383. package/dist/telemetry/describe-app-error.js.map +1 -1
  1384. package/dist/telemetry/posthog-adapter.cjs +1 -1
  1385. package/dist/telemetry/posthog-adapter.cjs.map +1 -1
  1386. package/dist/telemetry/posthog-adapter.js +1 -5
  1387. package/dist/telemetry/posthog-adapter.js.map +1 -1
  1388. package/dist/telemetry/sentry-adapter.cjs.map +1 -1
  1389. package/dist/telemetry/sentry-adapter.js.map +1 -1
  1390. package/dist/tempest-react-sdk.cjs +1 -1
  1391. package/dist/tempest-react-sdk.d.ts +234 -3
  1392. package/dist/tempest-react-sdk.js +85 -85
  1393. package/dist/testing/create-mock-handlers.cjs.map +1 -1
  1394. package/dist/testing/create-mock-handlers.js.map +1 -1
  1395. package/dist/testing.js +1 -2
  1396. package/dist/theme/ThemeProvider.cjs.map +1 -1
  1397. package/dist/theme/ThemeProvider.js.map +1 -1
  1398. package/dist/theme/apply-theme.cjs.map +1 -1
  1399. package/dist/theme/apply-theme.js.map +1 -1
  1400. package/dist/theme/color.cjs.map +1 -1
  1401. package/dist/theme/color.js.map +1 -1
  1402. package/dist/theme/create-theme.cjs.map +1 -1
  1403. package/dist/theme/create-theme.js.map +1 -1
  1404. package/dist/theme/data-viz-ramps.cjs.map +1 -1
  1405. package/dist/theme/data-viz-ramps.js.map +1 -1
  1406. package/dist/theme/initial-theme.cjs.map +1 -1
  1407. package/dist/theme/initial-theme.js.map +1 -1
  1408. package/dist/theme/inverse-render.cjs.map +1 -1
  1409. package/dist/theme/inverse-render.js.map +1 -1
  1410. package/dist/theme/inverse-restore.cjs.map +1 -1
  1411. package/dist/theme/inverse-restore.js.map +1 -1
  1412. package/dist/theme/inverse-surface.cjs.map +1 -1
  1413. package/dist/theme/inverse-surface.js.map +1 -1
  1414. package/dist/theme/status-tokens.cjs.map +1 -1
  1415. package/dist/theme/status-tokens.js.map +1 -1
  1416. package/dist/theme/theme-presets.cjs.map +1 -1
  1417. package/dist/theme/theme-presets.js.map +1 -1
  1418. package/dist/utils/absent.cjs.map +1 -1
  1419. package/dist/utils/absent.js.map +1 -1
  1420. package/dist/utils/arrays.cjs.map +1 -1
  1421. package/dist/utils/arrays.js.map +1 -1
  1422. package/dist/utils/base64.cjs.map +1 -1
  1423. package/dist/utils/base64.js.map +1 -1
  1424. package/dist/utils/cn.cjs.map +1 -1
  1425. package/dist/utils/cn.js.map +1 -1
  1426. package/dist/utils/compare-values.cjs.map +1 -1
  1427. package/dist/utils/compare-values.js.map +1 -1
  1428. package/dist/utils/compressed-storage.cjs.map +1 -1
  1429. package/dist/utils/compressed-storage.js.map +1 -1
  1430. package/dist/utils/csv.cjs.map +1 -1
  1431. package/dist/utils/csv.js.map +1 -1
  1432. package/dist/utils/dev-mode.cjs.map +1 -1
  1433. package/dist/utils/dev-mode.js.map +1 -1
  1434. package/dist/utils/duplicate-instance.cjs.map +1 -1
  1435. package/dist/utils/duplicate-instance.js.map +1 -1
  1436. package/dist/utils/format.cjs.map +1 -1
  1437. package/dist/utils/format.js.map +1 -1
  1438. package/dist/utils/functions.cjs +1 -1
  1439. package/dist/utils/functions.cjs.map +1 -1
  1440. package/dist/utils/functions.js +1 -1
  1441. package/dist/utils/functions.js.map +1 -1
  1442. package/dist/utils/guards.cjs.map +1 -1
  1443. package/dist/utils/guards.js.map +1 -1
  1444. package/dist/utils/ids.cjs.map +1 -1
  1445. package/dist/utils/ids.js.map +1 -1
  1446. package/dist/utils/intl-cache.cjs.map +1 -1
  1447. package/dist/utils/intl-cache.js.map +1 -1
  1448. package/dist/utils/json-frame.cjs.map +1 -1
  1449. package/dist/utils/json-frame.js.map +1 -1
  1450. package/dist/utils/numbers.cjs.map +1 -1
  1451. package/dist/utils/numbers.js.map +1 -1
  1452. package/dist/utils/objects.cjs.map +1 -1
  1453. package/dist/utils/objects.js.map +1 -1
  1454. package/dist/utils/owner-fingerprint.cjs.map +1 -1
  1455. package/dist/utils/owner-fingerprint.js.map +1 -1
  1456. package/dist/utils/promises.cjs.map +1 -1
  1457. package/dist/utils/promises.js.map +1 -1
  1458. package/dist/utils/relative-time.cjs.map +1 -1
  1459. package/dist/utils/relative-time.js.map +1 -1
  1460. package/dist/utils/safe-url.cjs.map +1 -1
  1461. package/dist/utils/safe-url.js.map +1 -1
  1462. package/dist/utils/schema-like.cjs.map +1 -1
  1463. package/dist/utils/schema-like.js.map +1 -1
  1464. package/dist/utils/storage.cjs +1 -1
  1465. package/dist/utils/storage.cjs.map +1 -1
  1466. package/dist/utils/storage.js +2 -2
  1467. package/dist/utils/storage.js.map +1 -1
  1468. package/dist/utils/strings.cjs.map +1 -1
  1469. package/dist/utils/strings.js.map +1 -1
  1470. package/dist/utils/xlsx.cjs.map +1 -1
  1471. package/dist/utils/xlsx.js.map +1 -1
  1472. package/dist/vision/core/canvas.cjs.map +1 -1
  1473. package/dist/vision/core/canvas.js.map +1 -1
  1474. package/dist/vision/core/dtypes.cjs.map +1 -1
  1475. package/dist/vision/core/dtypes.js.map +1 -1
  1476. package/dist/vision/core/exceptions.cjs.map +1 -1
  1477. package/dist/vision/core/exceptions.js.map +1 -1
  1478. package/dist/vision/core/graph.cjs.map +1 -1
  1479. package/dist/vision/core/graph.js.map +1 -1
  1480. package/dist/vision/core/metadata.cjs +1 -1
  1481. package/dist/vision/core/metadata.cjs.map +1 -1
  1482. package/dist/vision/core/metadata.js +9 -26
  1483. package/dist/vision/core/metadata.js.map +1 -1
  1484. package/dist/vision/core/providers.cjs.map +1 -1
  1485. package/dist/vision/core/providers.js.map +1 -1
  1486. package/dist/vision/core/session.cjs.map +1 -1
  1487. package/dist/vision/core/session.js.map +1 -1
  1488. package/dist/vision/core/timing.cjs.map +1 -1
  1489. package/dist/vision/core/timing.js.map +1 -1
  1490. package/dist/vision/fusion.cjs.map +1 -1
  1491. package/dist/vision/fusion.js.map +1 -1
  1492. package/dist/vision/index.cjs.map +1 -1
  1493. package/dist/vision/index.js.map +1 -1
  1494. package/dist/vision/io/image.cjs.map +1 -1
  1495. package/dist/vision/io/image.js.map +1 -1
  1496. package/dist/vision/labels.cjs.map +1 -1
  1497. package/dist/vision/labels.js.map +1 -1
  1498. package/dist/vision/luminance.cjs.map +1 -1
  1499. package/dist/vision/luminance.js.map +1 -1
  1500. package/dist/vision/normalization.cjs.map +1 -1
  1501. package/dist/vision/normalization.js.map +1 -1
  1502. package/dist/vision/postprocess/classification.cjs.map +1 -1
  1503. package/dist/vision/postprocess/classification.js.map +1 -1
  1504. package/dist/vision/postprocess/detection.cjs.map +1 -1
  1505. package/dist/vision/postprocess/detection.js.map +1 -1
  1506. package/dist/vision/postprocess/segmentation.cjs.map +1 -1
  1507. package/dist/vision/postprocess/segmentation.js.map +1 -1
  1508. package/dist/vision/preprocess/image.cjs.map +1 -1
  1509. package/dist/vision/preprocess/image.js.map +1 -1
  1510. package/dist/vision/preprocess/pipeline.cjs.map +1 -1
  1511. package/dist/vision/preprocess/pipeline.js.map +1 -1
  1512. package/dist/vision/results.cjs.map +1 -1
  1513. package/dist/vision/results.js.map +1 -1
  1514. package/dist/vision/tasks/base.cjs.map +1 -1
  1515. package/dist/vision/tasks/base.js.map +1 -1
  1516. package/dist/vision/tasks/classifier.cjs.map +1 -1
  1517. package/dist/vision/tasks/classifier.js.map +1 -1
  1518. package/dist/vision/tasks/detectClassify.cjs.map +1 -1
  1519. package/dist/vision/tasks/detectClassify.js.map +1 -1
  1520. package/dist/vision/tasks/detector.cjs.map +1 -1
  1521. package/dist/vision/tasks/detector.js.map +1 -1
  1522. package/dist/vision/tasks/segmenter.cjs.map +1 -1
  1523. package/dist/vision/tasks/segmenter.js.map +1 -1
  1524. package/dist/vision/types.cjs.map +1 -1
  1525. package/dist/vision/types.js.map +1 -1
  1526. package/dist/vision/use-camera-stream.cjs +1 -1
  1527. package/dist/vision/use-camera-stream.cjs.map +1 -1
  1528. package/dist/vision/use-camera-stream.js +3 -9
  1529. package/dist/vision/use-camera-stream.js.map +1 -1
  1530. package/dist/vision/use-live-luminance.cjs +1 -1
  1531. package/dist/vision/use-live-luminance.cjs.map +1 -1
  1532. package/dist/vision/use-live-luminance.js +1 -5
  1533. package/dist/vision/use-live-luminance.js.map +1 -1
  1534. package/dist/vite/base-url.cjs.map +1 -1
  1535. package/dist/vite/base-url.js.map +1 -1
  1536. package/dist/vite/create-vite-config.cjs.map +1 -1
  1537. package/dist/vite/create-vite-config.js.map +1 -1
  1538. package/dist/vite/narrow-tokens.cjs.map +1 -1
  1539. package/dist/vite/narrow-tokens.js.map +1 -1
  1540. package/dist/vite/tempest-csp.cjs +1 -1
  1541. package/dist/vite/tempest-csp.cjs.map +1 -1
  1542. package/dist/vite/tempest-csp.js +2 -10
  1543. package/dist/vite/tempest-csp.js.map +1 -1
  1544. package/dist/vite/tempest-icons.cjs.map +1 -1
  1545. package/dist/vite/tempest-icons.js.map +1 -1
  1546. package/dist/vite/tempest-pwa-dev-sw.cjs +1 -1
  1547. package/dist/vite/tempest-pwa-dev-sw.cjs.map +1 -1
  1548. package/dist/vite/tempest-pwa-dev-sw.js +9 -16
  1549. package/dist/vite/tempest-pwa-dev-sw.js.map +1 -1
  1550. package/dist/vite/tempest-pwa-icons.cjs.map +1 -1
  1551. package/dist/vite/tempest-pwa-icons.js.map +1 -1
  1552. package/dist/vite/tempest-pwa-manifest.cjs.map +1 -1
  1553. package/dist/vite/tempest-pwa-manifest.js.map +1 -1
  1554. package/dist/vite/tempest-styles.cjs.map +1 -1
  1555. package/dist/vite/tempest-styles.js.map +1 -1
  1556. package/dist/vite/tempest-vitest.cjs.map +1 -1
  1557. package/dist/vite/tempest-vitest.js.map +1 -1
  1558. package/dist/webrtc/link-stats.cjs.map +1 -1
  1559. package/dist/webrtc/link-stats.js.map +1 -1
  1560. package/dist/webrtc/mesh-quality.cjs.map +1 -1
  1561. package/dist/webrtc/mesh-quality.js.map +1 -1
  1562. package/dist/webrtc/opus-sdp.cjs.map +1 -1
  1563. package/dist/webrtc/opus-sdp.js.map +1 -1
  1564. package/dist/webrtc/peer-link.cjs +1 -1
  1565. package/dist/webrtc/peer-link.cjs.map +1 -1
  1566. package/dist/webrtc/peer-link.js +2 -5
  1567. package/dist/webrtc/peer-link.js.map +1 -1
  1568. package/dist/webrtc/peer-mesh.cjs +1 -1
  1569. package/dist/webrtc/peer-mesh.cjs.map +1 -1
  1570. package/dist/webrtc/peer-mesh.js +8 -24
  1571. package/dist/webrtc/peer-mesh.js.map +1 -1
  1572. package/dist/webrtc/sender-bitrate.cjs.map +1 -1
  1573. package/dist/webrtc/sender-bitrate.js.map +1 -1
  1574. package/dist/webrtc/use-link-stats.cjs.map +1 -1
  1575. package/dist/webrtc/use-link-stats.js.map +1 -1
  1576. package/dist/ws/create-web-socket.cjs +1 -1
  1577. package/dist/ws/create-web-socket.cjs.map +1 -1
  1578. package/dist/ws/create-web-socket.js +4 -22
  1579. package/dist/ws/create-web-socket.js.map +1 -1
  1580. package/dist/ws/resilience.cjs.map +1 -1
  1581. package/dist/ws/resilience.js.map +1 -1
  1582. package/dist/ws/use-web-socket.cjs.map +1 -1
  1583. package/dist/ws/use-web-socket.js.map +1 -1
  1584. package/package.json +9 -6
  1585. package/template/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"use-client-filter.cjs","names":[],"sources":["../../src/hooks/use-client-filter.ts"],"sourcesContent":["import { useMemo } from \"react\";\n\nexport type FilterPredicate<T> = (item: T, search: string) => boolean;\n\n/**\n * Client-side filter helper. Performs a case-insensitive match on the listed\n * keys when no custom predicate is provided.\n *\n * @param items - Source list.\n * @param search - Search string.\n * @param keysOrPredicate - Either a list of keys to match against or a custom predicate.\n * @returns Filtered list (referential identity preserved when search is empty).\n */\nexport function useClientFilter<T extends Record<string, unknown>>(\n items: T[],\n search: string,\n keysOrPredicate: (keyof T)[] | FilterPredicate<T>,\n): T[] {\n return useMemo(() => {\n const term = search.trim().toLowerCase();\n if (!term) return items;\n if (typeof keysOrPredicate === \"function\") {\n return items.filter((item) => keysOrPredicate(item, term));\n }\n return items.filter((item) =>\n keysOrPredicate.some((key) => {\n const value = item[key];\n return value != null && String(value).toLowerCase().includes(term);\n }),\n );\n }, [items, search, keysOrPredicate]);\n}\n"],"mappings":"uBAaA,SAAgB,EACZ,EACA,EACA,EACG,CACH,OAAA,EAAO,EAAA,QAAA,KAAc,CACjB,IAAM,EAAO,EAAO,KAAK,CAAC,CAAC,YAAY,EAKvC,OAJK,EACD,OAAO,GAAoB,WACpB,EAAM,OAAQ,GAAS,EAAgB,EAAM,CAAI,CAAC,EAEtD,EAAM,OAAQ,GACjB,EAAgB,KAAM,GAAQ,CAC1B,IAAM,EAAQ,EAAK,GACnB,OAAO,GAAS,MAAQ,OAAO,CAAK,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAI,CACrE,CAAC,CACL,EATkB,CAUtB,EAAG,CAAC,EAAO,EAAQ,CAAe,CAAC,CACvC"}
1
+ {"version":3,"file":"use-client-filter.cjs","names":["useMemo","react","useClientFilter","term","search","keysOrPredicate","items","item","value","key"],"sources":["../../src/hooks/use-client-filter.ts"],"sourcesContent":["import { useMemo } from \"react\";\n\nexport type FilterPredicate<T> = (item: T, search: string) => boolean;\n\n/**\n * Client-side filter helper. Performs a case-insensitive match on the listed\n * keys when no custom predicate is provided.\n *\n * @param items - Source list.\n * @param search - Search string.\n * @param keysOrPredicate - Either a list of keys to match against or a custom predicate.\n * @returns Filtered list (referential identity preserved when search is empty).\n */\nexport function useClientFilter<T extends Record<string, unknown>>(\n items: T[],\n search: string,\n keysOrPredicate: (keyof T)[] | FilterPredicate<T>,\n): T[] {\n return useMemo(() => {\n const term = search.trim().toLowerCase();\n if (!term) return items;\n if (typeof keysOrPredicate === \"function\") {\n return items.filter((item) => keysOrPredicate(item, term));\n }\n return items.filter((item) =>\n keysOrPredicate.some((key) => {\n const value = item[key];\n return value != null && String(value).toLowerCase().includes(term);\n }),\n );\n }, [items, search, keysOrPredicate]);\n}\n"],"mappings":"A,uBAaA,SAAgBE,EACZ,EACA,EACA,EACG,CACH,OAAA,EAAOF,EAAAA,QAAAA,KAAc,CACjB,IAAMG,EAAOC,EAAO,KAAK,CAAC,CAAC,YAAY,EAKvC,OAJKD,EACD,OAAOE,GAAoB,WACpBC,EAAM,OAAQ,GAASD,EAAgBE,EAAMJ,CAAI,CAAC,EAEtDG,EAAM,OAAQ,GACjBD,EAAgB,KAAM,GAAQ,CAC1B,IAAMG,EAAQD,EAAKE,GACnB,OAAOD,GAAS,MAAQ,OAAOA,CAAK,CAAC,CAAC,YAAY,CAAC,CAAC,SAASL,CAAI,CACrE,CAAC,CACL,EATkBG,CAUtB,EAAG,CAACA,EAAOF,EAAQC,CAAe,CAAC,CACvC,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-client-filter.js","names":[],"sources":["../../src/hooks/use-client-filter.ts"],"sourcesContent":["import { useMemo } from \"react\";\n\nexport type FilterPredicate<T> = (item: T, search: string) => boolean;\n\n/**\n * Client-side filter helper. Performs a case-insensitive match on the listed\n * keys when no custom predicate is provided.\n *\n * @param items - Source list.\n * @param search - Search string.\n * @param keysOrPredicate - Either a list of keys to match against or a custom predicate.\n * @returns Filtered list (referential identity preserved when search is empty).\n */\nexport function useClientFilter<T extends Record<string, unknown>>(\n items: T[],\n search: string,\n keysOrPredicate: (keyof T)[] | FilterPredicate<T>,\n): T[] {\n return useMemo(() => {\n const term = search.trim().toLowerCase();\n if (!term) return items;\n if (typeof keysOrPredicate === \"function\") {\n return items.filter((item) => keysOrPredicate(item, term));\n }\n return items.filter((item) =>\n keysOrPredicate.some((key) => {\n const value = item[key];\n return value != null && String(value).toLowerCase().includes(term);\n }),\n );\n }, [items, search, keysOrPredicate]);\n}\n"],"mappings":";;AAaA,SAAgB,EACZ,GACA,GACA,GACG;CACH,OAAO,QAAc;EACjB,IAAM,IAAO,EAAO,KAAK,CAAC,CAAC,YAAY;EAKvC,OAJK,IACD,OAAO,KAAoB,aACpB,EAAM,QAAQ,MAAS,EAAgB,GAAM,CAAI,CAAC,IAEtD,EAAM,QAAQ,MACjB,EAAgB,MAAM,MAAQ;GAC1B,IAAM,IAAQ,EAAK;GACnB,OAAO,KAAS,QAAQ,OAAO,CAAK,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAI;EACrE,CAAC,CACL,IATkB;CAUtB,GAAG;EAAC;EAAO;EAAQ;CAAe,CAAC;AACvC"}
1
+ {"version":3,"file":"use-client-filter.js","names":["useClientFilter","useMemo","term","search","keysOrPredicate","items","item","value","key"],"sources":["../../src/hooks/use-client-filter.ts"],"sourcesContent":["import { useMemo } from \"react\";\n\nexport type FilterPredicate<T> = (item: T, search: string) => boolean;\n\n/**\n * Client-side filter helper. Performs a case-insensitive match on the listed\n * keys when no custom predicate is provided.\n *\n * @param items - Source list.\n * @param search - Search string.\n * @param keysOrPredicate - Either a list of keys to match against or a custom predicate.\n * @returns Filtered list (referential identity preserved when search is empty).\n */\nexport function useClientFilter<T extends Record<string, unknown>>(\n items: T[],\n search: string,\n keysOrPredicate: (keyof T)[] | FilterPredicate<T>,\n): T[] {\n return useMemo(() => {\n const term = search.trim().toLowerCase();\n if (!term) return items;\n if (typeof keysOrPredicate === \"function\") {\n return items.filter((item) => keysOrPredicate(item, term));\n }\n return items.filter((item) =>\n keysOrPredicate.some((key) => {\n const value = item[key];\n return value != null && String(value).toLowerCase().includes(term);\n }),\n );\n }, [items, search, keysOrPredicate]);\n}\n"],"mappings":";;AAaA,SAAgBA,EACZ,GACA,GACA,GACG;CACH,OAAOC,QAAc;EACjB,IAAMC,IAAOC,EAAO,KAAK,CAAC,CAAC,YAAY;EAKvC,OAJKD,IACD,OAAOE,KAAoB,aACpBC,EAAM,QAAQ,MAASD,EAAgBE,GAAMJ,CAAI,CAAC,IAEtDG,EAAM,QAAQ,MACjBD,EAAgB,MAAM,MAAQ;GAC1B,IAAMG,IAAQD,EAAKE;GACnB,OAAOD,KAAS,QAAQ,OAAOA,CAAK,CAAC,CAAC,YAAY,CAAC,CAAC,SAASL,CAAI;EACrE,CAAC,CACL,IATkBG;CAUtB,GAAG;EAACA;EAAOF;EAAQC;CAAe,CAAC;AACvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-clipboard.cjs","names":[],"sources":["../../src/hooks/use-clipboard.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport interface UseClipboardOptions {\n /** Time (ms) before the `copied` flag resets back to false. Default: 1500. */\n resetAfter?: number;\n}\n\nexport interface UseClipboardResult {\n /** True briefly after a successful copy. */\n copied: boolean;\n /** Copy a string to the clipboard. Returns `true` on success. */\n copy: (text: string) => Promise<boolean>;\n /** Manually reset the `copied` flag. */\n reset: () => void;\n}\n\n/**\n * Wrapper around `navigator.clipboard.writeText` with a transient `copied`\n * flag for UI feedback (\"Copied!\" toast). Falls back gracefully when the\n * Clipboard API is unavailable.\n */\nexport function useClipboard(options: UseClipboardOptions = {}): UseClipboardResult {\n const { resetAfter = 1500 } = options;\n const [copied, setCopied] = useState<boolean>(false);\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const reset = useCallback((): void => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n setCopied(false);\n }, []);\n\n useEffect(() => () => reset(), [reset]);\n\n const copy = useCallback(\n async (text: string): Promise<boolean> => {\n try {\n if (typeof navigator !== \"undefined\" && navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(text);\n } else if (typeof document !== \"undefined\") {\n const textarea = document.createElement(\"textarea\");\n textarea.value = text;\n textarea.style.position = \"fixed\";\n textarea.style.opacity = \"0\";\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textarea);\n } else {\n return false;\n }\n setCopied(true);\n if (timer.current) clearTimeout(timer.current);\n timer.current = setTimeout(() => setCopied(false), resetAfter);\n return true;\n } catch {\n return false;\n }\n },\n [resetAfter],\n );\n\n return { copied, copy, reset };\n}\n"],"mappings":"uBAqBA,SAAgB,EAAa,EAA+B,CAAC,EAAuB,CAChF,GAAM,CAAE,aAAa,MAAS,EACxB,CAAC,EAAQ,IAAA,EAAa,EAAA,SAAA,CAAkB,EAAK,EAC7C,GAAA,EAAQ,EAAA,OAAA,CAA6C,IAAI,EAEzD,GAAA,EAAQ,EAAA,YAAA,KAAwB,CAClC,AAEI,EAAM,WADN,aAAa,EAAM,OAAO,EACV,MAEpB,EAAU,EAAK,CACnB,EAAG,CAAC,CAAC,EAgCL,OA9BA,EAAA,EAAA,UAAA,SAAsB,EAAM,EAAG,CAAC,CAAK,CAAC,EA8B/B,CAAE,SAAQ,MAAA,EA5BJ,EAAA,YAAA,CACT,KAAO,IAAmC,CACtC,GAAI,CACA,GAAI,OAAO,UAAc,KAAe,UAAU,WAAW,UACzD,MAAM,UAAU,UAAU,UAAU,CAAI,OACrC,GAAI,OAAO,SAAa,IAAa,CACxC,IAAM,EAAW,SAAS,cAAc,UAAU,EAClD,EAAS,MAAQ,EACjB,EAAS,MAAM,SAAW,QAC1B,EAAS,MAAM,QAAU,IACzB,SAAS,KAAK,YAAY,CAAQ,EAClC,EAAS,OAAO,EAChB,SAAS,YAAY,MAAM,EAC3B,SAAS,KAAK,YAAY,CAAQ,CACtC,MACI,MAAO,GAKX,OAHA,EAAU,EAAI,EACV,EAAM,SAAS,aAAa,EAAM,OAAO,EAC7C,EAAM,QAAU,eAAiB,EAAU,EAAK,EAAG,CAAU,EACtD,EACX,MAAQ,CACJ,MAAO,EACX,CACJ,EACA,CAAC,CAAU,CAGE,EAAM,OAAM,CACjC"}
1
+ {"version":3,"file":"use-clipboard.cjs","names":["useState","useRef","useCallback","react","useClipboard","options","copied","setCopied","timer","reset","text","textarea","resetAfter"],"sources":["../../src/hooks/use-clipboard.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport interface UseClipboardOptions {\n /** Time (ms) before the `copied` flag resets back to false. Default: 1500. */\n resetAfter?: number;\n}\n\nexport interface UseClipboardResult {\n /** True briefly after a successful copy. */\n copied: boolean;\n /** Copy a string to the clipboard. Returns `true` on success. */\n copy: (text: string) => Promise<boolean>;\n /** Manually reset the `copied` flag. */\n reset: () => void;\n}\n\n/**\n * Wrapper around `navigator.clipboard.writeText` with a transient `copied`\n * flag for UI feedback (\"Copied!\" toast). Falls back gracefully when the\n * Clipboard API is unavailable.\n */\nexport function useClipboard(options: UseClipboardOptions = {}): UseClipboardResult {\n const { resetAfter = 1500 } = options;\n const [copied, setCopied] = useState<boolean>(false);\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const reset = useCallback((): void => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n setCopied(false);\n }, []);\n\n useEffect(() => () => reset(), [reset]);\n\n const copy = useCallback(\n async (text: string): Promise<boolean> => {\n try {\n if (typeof navigator !== \"undefined\" && navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(text);\n } else if (typeof document !== \"undefined\") {\n const textarea = document.createElement(\"textarea\");\n textarea.value = text;\n textarea.style.position = \"fixed\";\n textarea.style.opacity = \"0\";\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textarea);\n } else {\n return false;\n }\n setCopied(true);\n if (timer.current) clearTimeout(timer.current);\n timer.current = setTimeout(() => setCopied(false), resetAfter);\n return true;\n } catch {\n return false;\n }\n },\n [resetAfter],\n );\n\n return { copied, copy, reset };\n}\n"],"mappings":"A,uBAqBA,SAAgBI,EAAa,EAA+B,CAAC,EAAuB,CAChF,GAAM,CAAE,aAAa,MAASC,EACxB,CAACC,EAAQC,IAAA,EAAaP,EAAAA,SAAAA,CAAkB,EAAK,EAC7CQ,GAAA,EAAQP,EAAAA,OAAAA,CAA6C,IAAI,EAEzDQ,GAAA,EAAQP,EAAAA,YAAAA,KAAwB,CAClC,AAEIM,EAAM,WADN,aAAaA,EAAM,OAAO,EACV,MAEpBD,EAAU,EAAK,CACnB,EAAG,CAAC,CAAC,EAgCL,OA9BA,EAAAJ,EAAA,UAAA,SAAsBM,EAAM,EAAG,CAACA,CAAK,CAAC,EA8B/B,CAAE,SAAQ,MAAA,EA5BJP,EAAAA,YAAAA,CACT,KAAO,IAAmC,CACtC,GAAI,CACA,GAAI,OAAO,UAAc,KAAe,UAAU,WAAW,UACzD,MAAM,UAAU,UAAU,UAAUQ,CAAI,OACrC,GAAI,OAAO,SAAa,IAAa,CACxC,IAAMC,EAAW,SAAS,cAAc,UAAU,EAClD,EAAS,MAAQD,EACjB,EAAS,MAAM,SAAW,QAC1B,EAAS,MAAM,QAAU,IACzB,SAAS,KAAK,YAAYC,CAAQ,EAClCA,EAAS,OAAO,EAChB,SAAS,YAAY,MAAM,EAC3B,SAAS,KAAK,YAAYA,CAAQ,CACtC,MACI,MAAO,GAKX,OAHAJ,EAAU,EAAI,EACVC,EAAM,SAAS,aAAaA,EAAM,OAAO,EAC7C,EAAM,QAAU,eAAiBD,EAAU,EAAK,EAAGK,CAAU,EACtD,EACX,MAAQ,CACJ,MAAO,EACX,CACJ,EACA,CAACA,CAAU,CAGE,EAAM,OAAM,CACjC,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-clipboard.js","names":[],"sources":["../../src/hooks/use-clipboard.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport interface UseClipboardOptions {\n /** Time (ms) before the `copied` flag resets back to false. Default: 1500. */\n resetAfter?: number;\n}\n\nexport interface UseClipboardResult {\n /** True briefly after a successful copy. */\n copied: boolean;\n /** Copy a string to the clipboard. Returns `true` on success. */\n copy: (text: string) => Promise<boolean>;\n /** Manually reset the `copied` flag. */\n reset: () => void;\n}\n\n/**\n * Wrapper around `navigator.clipboard.writeText` with a transient `copied`\n * flag for UI feedback (\"Copied!\" toast). Falls back gracefully when the\n * Clipboard API is unavailable.\n */\nexport function useClipboard(options: UseClipboardOptions = {}): UseClipboardResult {\n const { resetAfter = 1500 } = options;\n const [copied, setCopied] = useState<boolean>(false);\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const reset = useCallback((): void => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n setCopied(false);\n }, []);\n\n useEffect(() => () => reset(), [reset]);\n\n const copy = useCallback(\n async (text: string): Promise<boolean> => {\n try {\n if (typeof navigator !== \"undefined\" && navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(text);\n } else if (typeof document !== \"undefined\") {\n const textarea = document.createElement(\"textarea\");\n textarea.value = text;\n textarea.style.position = \"fixed\";\n textarea.style.opacity = \"0\";\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textarea);\n } else {\n return false;\n }\n setCopied(true);\n if (timer.current) clearTimeout(timer.current);\n timer.current = setTimeout(() => setCopied(false), resetAfter);\n return true;\n } catch {\n return false;\n }\n },\n [resetAfter],\n );\n\n return { copied, copy, reset };\n}\n"],"mappings":";;AAqBA,SAAgB,EAAa,IAA+B,CAAC,GAAuB;CAChF,IAAM,EAAE,gBAAa,SAAS,GACxB,CAAC,GAAQ,KAAa,EAAkB,EAAK,GAC7C,IAAQ,EAA6C,IAAI,GAEzD,IAAQ,QAAwB;EAKlC,AAJA,AAEI,EAAM,aADN,aAAa,EAAM,OAAO,GACV,OAEpB,EAAU,EAAK;CACnB,GAAG,CAAC,CAAC;CAgCL,OA9BA,cAAsB,EAAM,GAAG,CAAC,CAAK,CAAC,GA8B/B;EAAE;EAAQ,MA5BJ,EACT,OAAO,MAAmC;GACtC,IAAI;IACA,IAAI,OAAO,YAAc,OAAe,UAAU,WAAW,WACzD,MAAM,UAAU,UAAU,UAAU,CAAI;SACrC,IAAI,OAAO,WAAa,KAAa;KACxC,IAAM,IAAW,SAAS,cAAc,UAAU;KAOlD,AANA,EAAS,QAAQ,GACjB,EAAS,MAAM,WAAW,SAC1B,EAAS,MAAM,UAAU,KACzB,SAAS,KAAK,YAAY,CAAQ,GAClC,EAAS,OAAO,GAChB,SAAS,YAAY,MAAM,GAC3B,SAAS,KAAK,YAAY,CAAQ;IACtC,OACI,OAAO;IAKX,OAHA,EAAU,EAAI,GACV,EAAM,WAAS,aAAa,EAAM,OAAO,GAC7C,EAAM,UAAU,iBAAiB,EAAU,EAAK,GAAG,CAAU,GACtD;GACX,QAAQ;IACJ,OAAO;GACX;EACJ,GACA,CAAC,CAAU,CAGE;EAAM;CAAM;AACjC"}
1
+ {"version":3,"file":"use-clipboard.js","names":["useClipboard","options","copied","setCopied","useState","timer","useRef","reset","useCallback","useEffect","text","textarea","resetAfter"],"sources":["../../src/hooks/use-clipboard.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport interface UseClipboardOptions {\n /** Time (ms) before the `copied` flag resets back to false. Default: 1500. */\n resetAfter?: number;\n}\n\nexport interface UseClipboardResult {\n /** True briefly after a successful copy. */\n copied: boolean;\n /** Copy a string to the clipboard. Returns `true` on success. */\n copy: (text: string) => Promise<boolean>;\n /** Manually reset the `copied` flag. */\n reset: () => void;\n}\n\n/**\n * Wrapper around `navigator.clipboard.writeText` with a transient `copied`\n * flag for UI feedback (\"Copied!\" toast). Falls back gracefully when the\n * Clipboard API is unavailable.\n */\nexport function useClipboard(options: UseClipboardOptions = {}): UseClipboardResult {\n const { resetAfter = 1500 } = options;\n const [copied, setCopied] = useState<boolean>(false);\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const reset = useCallback((): void => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n setCopied(false);\n }, []);\n\n useEffect(() => () => reset(), [reset]);\n\n const copy = useCallback(\n async (text: string): Promise<boolean> => {\n try {\n if (typeof navigator !== \"undefined\" && navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(text);\n } else if (typeof document !== \"undefined\") {\n const textarea = document.createElement(\"textarea\");\n textarea.value = text;\n textarea.style.position = \"fixed\";\n textarea.style.opacity = \"0\";\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textarea);\n } else {\n return false;\n }\n setCopied(true);\n if (timer.current) clearTimeout(timer.current);\n timer.current = setTimeout(() => setCopied(false), resetAfter);\n return true;\n } catch {\n return false;\n }\n },\n [resetAfter],\n );\n\n return { copied, copy, reset };\n}\n"],"mappings":";;AAqBA,SAAgBA,EAAa,IAA+B,CAAC,GAAuB;CAChF,IAAM,EAAE,gBAAa,SAASC,GACxB,CAACC,GAAQC,KAAaC,EAAkB,EAAK,GAC7CC,IAAQC,EAA6C,IAAI,GAEzDC,IAAQC,QAAwB;EAKlC,AAJA,AAEIH,EAAM,aADN,aAAaA,EAAM,OAAO,GACV,OAEpBF,EAAU,EAAK;CACnB,GAAG,CAAC,CAAC;CAgCL,OA9BAM,cAAsBF,EAAM,GAAG,CAACA,CAAK,CAAC,GA8B/B;EAAE;EAAQ,MA5BJC,EACT,OAAO,MAAmC;GACtC,IAAI;IACA,IAAI,OAAO,YAAc,OAAe,UAAU,WAAW,WACzD,MAAM,UAAU,UAAU,UAAUE,CAAI;SACrC,IAAI,OAAO,WAAa,KAAa;KACxC,IAAMC,IAAW,SAAS,cAAc,UAAU;KAOlD,AANA,EAAS,QAAQD,GACjB,EAAS,MAAM,WAAW,SAC1B,EAAS,MAAM,UAAU,KACzB,SAAS,KAAK,YAAYC,CAAQ,GAClCA,EAAS,OAAO,GAChB,SAAS,YAAY,MAAM,GAC3B,SAAS,KAAK,YAAYA,CAAQ;IACtC,OACI,OAAO;IAKX,OAHAR,EAAU,EAAI,GACVE,EAAM,WAAS,aAAaA,EAAM,OAAO,GAC7C,EAAM,UAAU,iBAAiBF,EAAU,EAAK,GAAGS,CAAU,GACtD;GACX,QAAQ;IACJ,OAAO;GACX;EACJ,GACA,CAACA,CAAU,CAGE;EAAM;CAAM;AACjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-countdown.cjs","names":[],"sources":["../../src/hooks/use-countdown.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport { useInterval } from \"./use-interval\";\n\n/** Options for {@link useCountdown}. */\nexport interface UseCountdownOptions {\n /**\n * How often the remaining time is recomputed, in ms. Default `1000`, which\n * suits a \"try again in 3s\" label; drop it to ~50 to drive a progress bar.\n */\n tickMs?: number;\n}\n\n/**\n * Counts down the time left on a window that started at a known instant.\n *\n * Written around a timestamp rather than a decrementing counter on purpose: the\n * remaining time is recomputed from `Date.now()` on every tick, so a throttled\n * background tab, a slow frame or a `setInterval` that drifts cannot make the\n * countdown disagree with the clock. Remounting recovers the correct value too,\n * which a counter held in state cannot do.\n *\n * The interval stops once it reaches zero instead of ticking forever behind a\n * clamp — `useInterval` pauses on a `null` delay, so reaching zero is what tears\n * the timer down.\n *\n * @param durationMs - Length of the window.\n * @param startedAt - Epoch ms the window opened (`Date.now()` when it started).\n * @param options - Tick cadence.\n * @returns Milliseconds remaining, never below `0`.\n *\n * @example\n * const remaining = useCountdown(60_000, lastSentAt);\n *\n * <button disabled={remaining > 0}>\n * {remaining > 0 ? `Reenviar em ${Math.ceil(remaining / 1000)}s` : \"Reenviar código\"}\n * </button>\n */\nexport function useCountdown(\n durationMs: number,\n startedAt: number,\n options: UseCountdownOptions = {},\n): number {\n const { tickMs = 1000 } = options;\n\n const compute = useCallback(\n () => Math.max(0, durationMs - (Date.now() - startedAt)),\n [durationMs, startedAt],\n );\n\n const [remaining, setRemaining] = useState(compute);\n\n useEffect(() => {\n setRemaining(compute());\n }, [compute]);\n\n useInterval(() => setRemaining(compute()), remaining > 0 ? tickMs : null);\n\n return remaining;\n}\n"],"mappings":"6DAqCA,SAAgB,EACZ,EACA,EACA,EAA+B,CAAC,EAC1B,CACN,GAAM,CAAE,SAAS,KAAS,EAEpB,GAAA,EAAU,EAAA,YAAA,KACN,KAAK,IAAI,EAAG,GAAc,KAAK,IAAI,EAAI,EAAU,EACvD,CAAC,EAAY,CAAS,CAC1B,EAEM,CAAC,EAAW,IAAA,EAAgB,EAAA,SAAA,CAAS,CAAO,EAQlD,OANA,EAAA,EAAA,UAAA,KAAgB,CACZ,EAAa,EAAQ,CAAC,CAC1B,EAAG,CAAC,CAAO,CAAC,EAEZ,EAAA,gBAAkB,EAAa,EAAQ,CAAC,EAAG,EAAY,EAAI,EAAS,IAAI,EAEjE,CACX"}
1
+ {"version":3,"file":"use-countdown.cjs","names":["useCallback","useState","require_use_interval","react","useCountdown","options","compute","durationMs","startedAt","remaining","setRemaining","tickMs"],"sources":["../../src/hooks/use-countdown.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport { useInterval } from \"./use-interval\";\n\n/** Options for {@link useCountdown}. */\nexport interface UseCountdownOptions {\n /**\n * How often the remaining time is recomputed, in ms. Default `1000`, which\n * suits a \"try again in 3s\" label; drop it to ~50 to drive a progress bar.\n */\n tickMs?: number;\n}\n\n/**\n * Counts down the time left on a window that started at a known instant.\n *\n * Written around a timestamp rather than a decrementing counter on purpose: the\n * remaining time is recomputed from `Date.now()` on every tick, so a throttled\n * background tab, a slow frame or a `setInterval` that drifts cannot make the\n * countdown disagree with the clock. Remounting recovers the correct value too,\n * which a counter held in state cannot do.\n *\n * The interval stops once it reaches zero instead of ticking forever behind a\n * clamp — `useInterval` pauses on a `null` delay, so reaching zero is what tears\n * the timer down.\n *\n * @param durationMs - Length of the window.\n * @param startedAt - Epoch ms the window opened (`Date.now()` when it started).\n * @param options - Tick cadence.\n * @returns Milliseconds remaining, never below `0`.\n *\n * @example\n * const remaining = useCountdown(60_000, lastSentAt);\n *\n * <button disabled={remaining > 0}>\n * {remaining > 0 ? `Reenviar em ${Math.ceil(remaining / 1000)}s` : \"Reenviar código\"}\n * </button>\n */\nexport function useCountdown(\n durationMs: number,\n startedAt: number,\n options: UseCountdownOptions = {},\n): number {\n const { tickMs = 1000 } = options;\n\n const compute = useCallback(\n () => Math.max(0, durationMs - (Date.now() - startedAt)),\n [durationMs, startedAt],\n );\n\n const [remaining, setRemaining] = useState(compute);\n\n useEffect(() => {\n setRemaining(compute());\n }, [compute]);\n\n useInterval(() => setRemaining(compute()), remaining > 0 ? tickMs : null);\n\n return remaining;\n}\n"],"mappings":"A,6DAqCA,SAAgBI,EACZ,EACA,EACA,EAA+B,CAAC,EAC1B,CACN,GAAM,CAAE,SAAS,KAASC,EAEpBC,GAAA,EAAUN,EAAAA,YAAAA,KACN,KAAK,IAAI,EAAGO,GAAc,KAAK,IAAI,EAAIC,EAAU,EACvD,CAACD,EAAYC,CAAS,CAC1B,EAEM,CAACC,EAAWC,IAAA,EAAgBT,EAAAA,SAAAA,CAASK,CAAO,EAQlD,OANA,EAAAH,EAAA,UAAA,KAAgB,CACZO,EAAaJ,EAAQ,CAAC,CAC1B,EAAG,CAACA,CAAO,CAAC,EAEZJ,EAAA,gBAAkBQ,EAAaJ,EAAQ,CAAC,EAAGG,EAAY,EAAIE,EAAS,IAAI,EAEjEF,CACX,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-countdown.js","names":[],"sources":["../../src/hooks/use-countdown.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport { useInterval } from \"./use-interval\";\n\n/** Options for {@link useCountdown}. */\nexport interface UseCountdownOptions {\n /**\n * How often the remaining time is recomputed, in ms. Default `1000`, which\n * suits a \"try again in 3s\" label; drop it to ~50 to drive a progress bar.\n */\n tickMs?: number;\n}\n\n/**\n * Counts down the time left on a window that started at a known instant.\n *\n * Written around a timestamp rather than a decrementing counter on purpose: the\n * remaining time is recomputed from `Date.now()` on every tick, so a throttled\n * background tab, a slow frame or a `setInterval` that drifts cannot make the\n * countdown disagree with the clock. Remounting recovers the correct value too,\n * which a counter held in state cannot do.\n *\n * The interval stops once it reaches zero instead of ticking forever behind a\n * clamp — `useInterval` pauses on a `null` delay, so reaching zero is what tears\n * the timer down.\n *\n * @param durationMs - Length of the window.\n * @param startedAt - Epoch ms the window opened (`Date.now()` when it started).\n * @param options - Tick cadence.\n * @returns Milliseconds remaining, never below `0`.\n *\n * @example\n * const remaining = useCountdown(60_000, lastSentAt);\n *\n * <button disabled={remaining > 0}>\n * {remaining > 0 ? `Reenviar em ${Math.ceil(remaining / 1000)}s` : \"Reenviar código\"}\n * </button>\n */\nexport function useCountdown(\n durationMs: number,\n startedAt: number,\n options: UseCountdownOptions = {},\n): number {\n const { tickMs = 1000 } = options;\n\n const compute = useCallback(\n () => Math.max(0, durationMs - (Date.now() - startedAt)),\n [durationMs, startedAt],\n );\n\n const [remaining, setRemaining] = useState(compute);\n\n useEffect(() => {\n setRemaining(compute());\n }, [compute]);\n\n useInterval(() => setRemaining(compute()), remaining > 0 ? tickMs : null);\n\n return remaining;\n}\n"],"mappings":";;;AAqCA,SAAgB,EACZ,GACA,GACA,IAA+B,CAAC,GAC1B;CACN,IAAM,EAAE,YAAS,QAAS,GAEpB,IAAU,QACN,KAAK,IAAI,GAAG,KAAc,KAAK,IAAI,IAAI,EAAU,GACvD,CAAC,GAAY,CAAS,CAC1B,GAEM,CAAC,GAAW,KAAgB,EAAS,CAAO;CAQlD,OANA,QAAgB;EACZ,EAAa,EAAQ,CAAC;CAC1B,GAAG,CAAC,CAAO,CAAC,GAEZ,QAAkB,EAAa,EAAQ,CAAC,GAAG,IAAY,IAAI,IAAS,IAAI,GAEjE;AACX"}
1
+ {"version":3,"file":"use-countdown.js","names":["useCountdown","options","compute","useCallback","durationMs","startedAt","remaining","setRemaining","useState","useEffect","useInterval","tickMs"],"sources":["../../src/hooks/use-countdown.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport { useInterval } from \"./use-interval\";\n\n/** Options for {@link useCountdown}. */\nexport interface UseCountdownOptions {\n /**\n * How often the remaining time is recomputed, in ms. Default `1000`, which\n * suits a \"try again in 3s\" label; drop it to ~50 to drive a progress bar.\n */\n tickMs?: number;\n}\n\n/**\n * Counts down the time left on a window that started at a known instant.\n *\n * Written around a timestamp rather than a decrementing counter on purpose: the\n * remaining time is recomputed from `Date.now()` on every tick, so a throttled\n * background tab, a slow frame or a `setInterval` that drifts cannot make the\n * countdown disagree with the clock. Remounting recovers the correct value too,\n * which a counter held in state cannot do.\n *\n * The interval stops once it reaches zero instead of ticking forever behind a\n * clamp — `useInterval` pauses on a `null` delay, so reaching zero is what tears\n * the timer down.\n *\n * @param durationMs - Length of the window.\n * @param startedAt - Epoch ms the window opened (`Date.now()` when it started).\n * @param options - Tick cadence.\n * @returns Milliseconds remaining, never below `0`.\n *\n * @example\n * const remaining = useCountdown(60_000, lastSentAt);\n *\n * <button disabled={remaining > 0}>\n * {remaining > 0 ? `Reenviar em ${Math.ceil(remaining / 1000)}s` : \"Reenviar código\"}\n * </button>\n */\nexport function useCountdown(\n durationMs: number,\n startedAt: number,\n options: UseCountdownOptions = {},\n): number {\n const { tickMs = 1000 } = options;\n\n const compute = useCallback(\n () => Math.max(0, durationMs - (Date.now() - startedAt)),\n [durationMs, startedAt],\n );\n\n const [remaining, setRemaining] = useState(compute);\n\n useEffect(() => {\n setRemaining(compute());\n }, [compute]);\n\n useInterval(() => setRemaining(compute()), remaining > 0 ? tickMs : null);\n\n return remaining;\n}\n"],"mappings":";;;AAqCA,SAAgBA,EACZ,GACA,GACA,IAA+B,CAAC,GAC1B;CACN,IAAM,EAAE,YAAS,QAASC,GAEpBC,IAAUC,QACN,KAAK,IAAI,GAAGC,KAAc,KAAK,IAAI,IAAIC,EAAU,GACvD,CAACD,GAAYC,CAAS,CAC1B,GAEM,CAACC,GAAWC,KAAgBC,EAASN,CAAO;CAQlD,OANAO,QAAgB;EACZ,EAAaP,EAAQ,CAAC;CAC1B,GAAG,CAACA,CAAO,CAAC,GAEZQ,QAAkBH,EAAaL,EAAQ,CAAC,GAAGI,IAAY,IAAIK,IAAS,IAAI,GAEjEL;AACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-counter.cjs","names":[],"sources":["../../src/hooks/use-counter.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseCounterOptions {\n min?: number;\n max?: number;\n}\n\nexport interface CounterHandlers {\n increment: () => void;\n decrement: () => void;\n set: (value: number) => void;\n reset: () => void;\n}\n\nconst clamp = (value: number, min: number | undefined, max: number | undefined): number => {\n let next = value;\n if (typeof min === \"number\") next = Math.max(min, next);\n if (typeof max === \"number\") next = Math.min(max, next);\n return next;\n};\n\n/**\n * Numeric counter clamped to an optional `[min, max]` range.\n *\n * @param initial - initial value (default `0`), clamped to the range.\n * @param options - optional `min` / `max` bounds.\n * @returns Tuple `[count, { increment, decrement, set, reset }]`.\n */\nexport function useCounter(\n initial = 0,\n options: UseCounterOptions = {},\n): [number, CounterHandlers] {\n const { min, max } = options;\n const [count, setCount] = useState<number>(() => clamp(initial, min, max));\n\n const increment = useCallback((): void => {\n setCount((current) => clamp(current + 1, min, max));\n }, [min, max]);\n\n const decrement = useCallback((): void => {\n setCount((current) => clamp(current - 1, min, max));\n }, [min, max]);\n\n const set = useCallback(\n (value: number): void => {\n setCount(clamp(value, min, max));\n },\n [min, max],\n );\n\n const reset = useCallback((): void => {\n setCount(clamp(initial, min, max));\n }, [initial, min, max]);\n\n const handlers = useMemo<CounterHandlers>(\n () => ({ increment, decrement, set, reset }),\n [increment, decrement, set, reset],\n );\n\n return [count, handlers];\n}\n"],"mappings":"uBAcA,IAAM,GAAS,EAAe,EAAyB,IAAoC,CACvF,IAAI,EAAO,EAGX,OAFI,OAAO,GAAQ,WAAU,EAAO,KAAK,IAAI,EAAK,CAAI,GAClD,OAAO,GAAQ,WAAU,EAAO,KAAK,IAAI,EAAK,CAAI,GAC/C,CACX,EASA,SAAgB,EACZ,EAAU,EACV,EAA6B,CAAC,EACL,CACzB,GAAM,CAAE,MAAK,OAAQ,EACf,CAAC,EAAO,IAAA,EAAY,EAAA,SAAA,KAAuB,EAAM,EAAS,EAAK,CAAG,CAAC,EAEnE,GAAA,EAAY,EAAA,YAAA,KAAwB,CACtC,EAAU,GAAY,EAAM,EAAU,EAAG,EAAK,CAAG,CAAC,CACtD,EAAG,CAAC,EAAK,CAAG,CAAC,EAEP,GAAA,EAAY,EAAA,YAAA,KAAwB,CACtC,EAAU,GAAY,EAAM,EAAU,EAAG,EAAK,CAAG,CAAC,CACtD,EAAG,CAAC,EAAK,CAAG,CAAC,EAEP,GAAA,EAAM,EAAA,YAAA,CACP,GAAwB,CACrB,EAAS,EAAM,EAAO,EAAK,CAAG,CAAC,CACnC,EACA,CAAC,EAAK,CAAG,CACb,EAEM,GAAA,EAAQ,EAAA,YAAA,KAAwB,CAClC,EAAS,EAAM,EAAS,EAAK,CAAG,CAAC,CACrC,EAAG,CAAC,EAAS,EAAK,CAAG,CAAC,EAOtB,MAAO,CAAC,GAAA,EALS,EAAA,QAAA,MACN,CAAE,YAAW,YAAW,MAAK,OAAM,GAC1C,CAAC,EAAW,EAAW,EAAK,CAAK,CAGtB,CAAQ,CAC3B"}
1
+ {"version":3,"file":"use-counter.cjs","names":["useState","useCallback","useMemo","react","clamp","next","value","min","max","useCounter","options","count","setCount","initial","increment","current","decrement","set","reset"],"sources":["../../src/hooks/use-counter.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseCounterOptions {\n min?: number;\n max?: number;\n}\n\nexport interface CounterHandlers {\n increment: () => void;\n decrement: () => void;\n set: (value: number) => void;\n reset: () => void;\n}\n\nconst clamp = (value: number, min: number | undefined, max: number | undefined): number => {\n let next = value;\n if (typeof min === \"number\") next = Math.max(min, next);\n if (typeof max === \"number\") next = Math.min(max, next);\n return next;\n};\n\n/**\n * Numeric counter clamped to an optional `[min, max]` range.\n *\n * @param initial - initial value (default `0`), clamped to the range.\n * @param options - optional `min` / `max` bounds.\n * @returns Tuple `[count, { increment, decrement, set, reset }]`.\n */\nexport function useCounter(\n initial = 0,\n options: UseCounterOptions = {},\n): [number, CounterHandlers] {\n const { min, max } = options;\n const [count, setCount] = useState<number>(() => clamp(initial, min, max));\n\n const increment = useCallback((): void => {\n setCount((current) => clamp(current + 1, min, max));\n }, [min, max]);\n\n const decrement = useCallback((): void => {\n setCount((current) => clamp(current - 1, min, max));\n }, [min, max]);\n\n const set = useCallback(\n (value: number): void => {\n setCount(clamp(value, min, max));\n },\n [min, max],\n );\n\n const reset = useCallback((): void => {\n setCount(clamp(initial, min, max));\n }, [initial, min, max]);\n\n const handlers = useMemo<CounterHandlers>(\n () => ({ increment, decrement, set, reset }),\n [increment, decrement, set, reset],\n );\n\n return [count, handlers];\n}\n"],"mappings":"A,uBAcA,IAAMI,GAAS,EAAe,EAAyB,IAAoC,CACvF,IAAIC,EAAOC,EAGX,OAFI,OAAOC,GAAQ,WAAU,EAAO,KAAK,IAAIA,EAAKF,CAAI,GAClD,OAAOG,GAAQ,WAAU,EAAO,KAAK,IAAIA,EAAKH,CAAI,GAC/CA,CACX,EASA,SAAgBI,EACZ,EAAU,EACV,EAA6B,CAAC,EACL,CACzB,GAAM,CAAE,MAAK,OAAQC,EACf,CAACC,EAAOC,IAAA,EAAYZ,EAAAA,SAAAA,KAAuBI,EAAMS,EAASN,EAAKC,CAAG,CAAC,EAEnEM,GAAA,EAAYb,EAAAA,YAAAA,KAAwB,CACtCW,EAAU,GAAYR,EAAMW,EAAU,EAAGR,EAAKC,CAAG,CAAC,CACtD,EAAG,CAACD,EAAKC,CAAG,CAAC,EAEPQ,GAAA,EAAYf,EAAAA,YAAAA,KAAwB,CACtCW,EAAU,GAAYR,EAAMW,EAAU,EAAGR,EAAKC,CAAG,CAAC,CACtD,EAAG,CAACD,EAAKC,CAAG,CAAC,EAEPS,GAAA,EAAMhB,EAAAA,YAAAA,CACP,GAAwB,CACrBW,EAASR,EAAME,EAAOC,EAAKC,CAAG,CAAC,CACnC,EACA,CAACD,EAAKC,CAAG,CACb,EAEMU,GAAA,EAAQjB,EAAAA,YAAAA,KAAwB,CAClCW,EAASR,EAAMS,EAASN,EAAKC,CAAG,CAAC,CACrC,EAAG,CAACK,EAASN,EAAKC,CAAG,CAAC,EAOtB,MAAO,CAACG,GAAA,EALST,EAAAA,QAAAA,MACN,CAAE,YAAW,YAAW,MAAK,OAAM,GAC1C,CAACY,EAAWE,EAAWC,EAAKC,CAAK,CAGtB,CAAQ,CAC3B,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-counter.js","names":[],"sources":["../../src/hooks/use-counter.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseCounterOptions {\n min?: number;\n max?: number;\n}\n\nexport interface CounterHandlers {\n increment: () => void;\n decrement: () => void;\n set: (value: number) => void;\n reset: () => void;\n}\n\nconst clamp = (value: number, min: number | undefined, max: number | undefined): number => {\n let next = value;\n if (typeof min === \"number\") next = Math.max(min, next);\n if (typeof max === \"number\") next = Math.min(max, next);\n return next;\n};\n\n/**\n * Numeric counter clamped to an optional `[min, max]` range.\n *\n * @param initial - initial value (default `0`), clamped to the range.\n * @param options - optional `min` / `max` bounds.\n * @returns Tuple `[count, { increment, decrement, set, reset }]`.\n */\nexport function useCounter(\n initial = 0,\n options: UseCounterOptions = {},\n): [number, CounterHandlers] {\n const { min, max } = options;\n const [count, setCount] = useState<number>(() => clamp(initial, min, max));\n\n const increment = useCallback((): void => {\n setCount((current) => clamp(current + 1, min, max));\n }, [min, max]);\n\n const decrement = useCallback((): void => {\n setCount((current) => clamp(current - 1, min, max));\n }, [min, max]);\n\n const set = useCallback(\n (value: number): void => {\n setCount(clamp(value, min, max));\n },\n [min, max],\n );\n\n const reset = useCallback((): void => {\n setCount(clamp(initial, min, max));\n }, [initial, min, max]);\n\n const handlers = useMemo<CounterHandlers>(\n () => ({ increment, decrement, set, reset }),\n [increment, decrement, set, reset],\n );\n\n return [count, handlers];\n}\n"],"mappings":";;AAcA,IAAM,KAAS,GAAe,GAAyB,MAAoC;CACvF,IAAI,IAAO;CAGX,OAFI,OAAO,KAAQ,aAAU,IAAO,KAAK,IAAI,GAAK,CAAI,IAClD,OAAO,KAAQ,aAAU,IAAO,KAAK,IAAI,GAAK,CAAI,IAC/C;AACX;AASA,SAAgB,EACZ,IAAU,GACV,IAA6B,CAAC,GACL;CACzB,IAAM,EAAE,QAAK,WAAQ,GACf,CAAC,GAAO,KAAY,QAAuB,EAAM,GAAS,GAAK,CAAG,CAAC,GAEnE,IAAY,QAAwB;EACtC,GAAU,MAAY,EAAM,IAAU,GAAG,GAAK,CAAG,CAAC;CACtD,GAAG,CAAC,GAAK,CAAG,CAAC,GAEP,IAAY,QAAwB;EACtC,GAAU,MAAY,EAAM,IAAU,GAAG,GAAK,CAAG,CAAC;CACtD,GAAG,CAAC,GAAK,CAAG,CAAC,GAEP,IAAM,GACP,MAAwB;EACrB,EAAS,EAAM,GAAO,GAAK,CAAG,CAAC;CACnC,GACA,CAAC,GAAK,CAAG,CACb,GAEM,IAAQ,QAAwB;EAClC,EAAS,EAAM,GAAS,GAAK,CAAG,CAAC;CACrC,GAAG;EAAC;EAAS;EAAK;CAAG,CAAC;CAOtB,OAAO,CAAC,GALS,SACN;EAAE;EAAW;EAAW;EAAK;CAAM,IAC1C;EAAC;EAAW;EAAW;EAAK;CAAK,CAGtB,CAAQ;AAC3B"}
1
+ {"version":3,"file":"use-counter.js","names":["clamp","next","value","min","max","useCounter","options","count","setCount","useState","initial","increment","useCallback","current","decrement","set","reset","useMemo"],"sources":["../../src/hooks/use-counter.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseCounterOptions {\n min?: number;\n max?: number;\n}\n\nexport interface CounterHandlers {\n increment: () => void;\n decrement: () => void;\n set: (value: number) => void;\n reset: () => void;\n}\n\nconst clamp = (value: number, min: number | undefined, max: number | undefined): number => {\n let next = value;\n if (typeof min === \"number\") next = Math.max(min, next);\n if (typeof max === \"number\") next = Math.min(max, next);\n return next;\n};\n\n/**\n * Numeric counter clamped to an optional `[min, max]` range.\n *\n * @param initial - initial value (default `0`), clamped to the range.\n * @param options - optional `min` / `max` bounds.\n * @returns Tuple `[count, { increment, decrement, set, reset }]`.\n */\nexport function useCounter(\n initial = 0,\n options: UseCounterOptions = {},\n): [number, CounterHandlers] {\n const { min, max } = options;\n const [count, setCount] = useState<number>(() => clamp(initial, min, max));\n\n const increment = useCallback((): void => {\n setCount((current) => clamp(current + 1, min, max));\n }, [min, max]);\n\n const decrement = useCallback((): void => {\n setCount((current) => clamp(current - 1, min, max));\n }, [min, max]);\n\n const set = useCallback(\n (value: number): void => {\n setCount(clamp(value, min, max));\n },\n [min, max],\n );\n\n const reset = useCallback((): void => {\n setCount(clamp(initial, min, max));\n }, [initial, min, max]);\n\n const handlers = useMemo<CounterHandlers>(\n () => ({ increment, decrement, set, reset }),\n [increment, decrement, set, reset],\n );\n\n return [count, handlers];\n}\n"],"mappings":";;AAcA,IAAMA,KAAS,GAAe,GAAyB,MAAoC;CACvF,IAAIC,IAAOC;CAGX,OAFI,OAAOC,KAAQ,aAAU,IAAO,KAAK,IAAIA,GAAKF,CAAI,IAClD,OAAOG,KAAQ,aAAU,IAAO,KAAK,IAAIA,GAAKH,CAAI,IAC/CA;AACX;AASA,SAAgBI,EACZ,IAAU,GACV,IAA6B,CAAC,GACL;CACzB,IAAM,EAAE,QAAK,WAAQC,GACf,CAACC,GAAOC,KAAYC,QAAuBT,EAAMU,GAASP,GAAKC,CAAG,CAAC,GAEnEO,IAAYC,QAAwB;EACtC,GAAU,MAAYZ,EAAMa,IAAU,GAAGV,GAAKC,CAAG,CAAC;CACtD,GAAG,CAACD,GAAKC,CAAG,CAAC,GAEPU,IAAYF,QAAwB;EACtC,GAAU,MAAYZ,EAAMa,IAAU,GAAGV,GAAKC,CAAG,CAAC;CACtD,GAAG,CAACD,GAAKC,CAAG,CAAC,GAEPW,IAAMH,GACP,MAAwB;EACrB,EAASZ,EAAME,GAAOC,GAAKC,CAAG,CAAC;CACnC,GACA,CAACD,GAAKC,CAAG,CACb,GAEMY,IAAQJ,QAAwB;EAClC,EAASZ,EAAMU,GAASP,GAAKC,CAAG,CAAC;CACrC,GAAG;EAACM;EAASP;EAAKC;CAAG,CAAC;CAOtB,OAAO,CAACG,GALSU,SACN;EAAE;EAAW;EAAW;EAAK;CAAM,IAC1C;EAACN;EAAWG;EAAWC;EAAKC;CAAK,CAGtB,CAAQ;AAC3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-debounce.cjs","names":[],"sources":["../../src/hooks/use-debounce.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Debounce a fast-changing value. Returns the latest value once `delay` ms\n * have elapsed without further changes.\n *\n * @param value - The value to debounce.\n * @param delay - Delay in milliseconds (default 300).\n * @returns The debounced value.\n */\nexport function useDebounce<T>(value: T, delay = 300): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n\n return debouncedValue;\n}\n"],"mappings":"uBAUA,SAAgB,EAAe,EAAU,EAAQ,IAAQ,CACrD,GAAM,CAAC,EAAgB,IAAA,EAAqB,EAAA,SAAA,CAAY,CAAK,EAO7D,OALA,EAAA,EAAA,UAAA,KAAgB,CACZ,IAAM,EAAQ,eAAiB,EAAkB,CAAK,EAAG,CAAK,EAC9D,UAAa,aAAa,CAAK,CACnC,EAAG,CAAC,EAAO,CAAK,CAAC,EAEV,CACX"}
1
+ {"version":3,"file":"use-debounce.cjs","names":["useState","react","useDebounce","debouncedValue","setDebouncedValue","value","timer","delay"],"sources":["../../src/hooks/use-debounce.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Debounce a fast-changing value. Returns the latest value once `delay` ms\n * have elapsed without further changes.\n *\n * @param value - The value to debounce.\n * @param delay - Delay in milliseconds (default 300).\n * @returns The debounced value.\n */\nexport function useDebounce<T>(value: T, delay = 300): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n\n return debouncedValue;\n}\n"],"mappings":"A,uBAUA,SAAgBE,EAAe,EAAU,EAAQ,IAAQ,CACrD,GAAM,CAACC,EAAgBC,IAAA,EAAqBJ,EAAAA,SAAAA,CAAYK,CAAK,EAO7D,OALA,EAAAJ,EAAA,UAAA,KAAgB,CACZ,IAAMK,EAAQ,eAAiBF,EAAkBC,CAAK,EAAGE,CAAK,EAC9D,UAAa,aAAaD,CAAK,CACnC,EAAG,CAACD,EAAOE,CAAK,CAAC,EAEVJ,CACX,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-debounce.js","names":[],"sources":["../../src/hooks/use-debounce.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Debounce a fast-changing value. Returns the latest value once `delay` ms\n * have elapsed without further changes.\n *\n * @param value - The value to debounce.\n * @param delay - Delay in milliseconds (default 300).\n * @returns The debounced value.\n */\nexport function useDebounce<T>(value: T, delay = 300): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n\n return debouncedValue;\n}\n"],"mappings":";;AAUA,SAAgB,EAAe,GAAU,IAAQ,KAAQ;CACrD,IAAM,CAAC,GAAgB,KAAqB,EAAY,CAAK;CAO7D,OALA,QAAgB;EACZ,IAAM,IAAQ,iBAAiB,EAAkB,CAAK,GAAG,CAAK;EAC9D,aAAa,aAAa,CAAK;CACnC,GAAG,CAAC,GAAO,CAAK,CAAC,GAEV;AACX"}
1
+ {"version":3,"file":"use-debounce.js","names":["useDebounce","debouncedValue","setDebouncedValue","useState","value","useEffect","timer","delay"],"sources":["../../src/hooks/use-debounce.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Debounce a fast-changing value. Returns the latest value once `delay` ms\n * have elapsed without further changes.\n *\n * @param value - The value to debounce.\n * @param delay - Delay in milliseconds (default 300).\n * @returns The debounced value.\n */\nexport function useDebounce<T>(value: T, delay = 300): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n\n return debouncedValue;\n}\n"],"mappings":";;AAUA,SAAgBA,EAAe,GAAU,IAAQ,KAAQ;CACrD,IAAM,CAACC,GAAgBC,KAAqBC,EAAYC,CAAK;CAO7D,OALAC,QAAgB;EACZ,IAAMC,IAAQ,iBAAiBJ,EAAkBE,CAAK,GAAGG,CAAK;EAC9D,aAAa,aAAaD,CAAK;CACnC,GAAG,CAACF,GAAOG,CAAK,CAAC,GAEVN;AACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-deep-memo.cjs","names":[],"sources":["../../src/hooks/use-deep-memo.ts"],"sourcesContent":["/* eslint-disable react-hooks/refs -- the structural cache is read and written during render by design (see the docstring) */\nimport { useRef } from \"react\";\n\n/**\n * Structural equality over plain objects and arrays, the comparison `useDeepMemo`\n * and `useDraftFilters` share. Internal: not re-exported from the barrel.\n *\n * @param a - First value.\n * @param b - Second value.\n * @returns Whether both values have the same shape and leaves.\n */\nexport function deepEqual(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\" || a === null || b === null) return false;\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((value, index) => deepEqual(value, b[index]));\n }\n const aKeys = Object.keys(a as object);\n const bKeys = Object.keys(b as object);\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every((key) =>\n deepEqual((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key]),\n );\n}\n\n/**\n * Memoize a value with a structural equality check. Use when an object/array\n * created during render is fed to `useEffect` dependencies and you want to\n * avoid spurious effect runs when only the reference changes.\n *\n * The cache is a ref read and written during render. That is flagged by the React\n * Compiler rules and is nonetheless correct here: the write is idempotent — a\n * discarded render either wrote a structurally equal value or nothing at all — so\n * replaying the render cannot change the result.\n */\nexport function useDeepMemo<T>(value: T): T {\n const ref = useRef<T>(value);\n if (!deepEqual(ref.current, value)) {\n ref.current = value;\n }\n return ref.current;\n}\n"],"mappings":"uBAWA,SAAgB,EAAU,EAAY,EAAqB,CACvD,GAAI,OAAO,GAAG,EAAG,CAAC,EAAG,MAAO,GAE5B,GADI,OAAO,GAAM,UAAY,OAAO,GAAM,UAAY,IAAM,MAAQ,IAAM,MACtE,MAAM,QAAQ,CAAC,IAAM,MAAM,QAAQ,CAAC,EAAG,MAAO,GAClD,GAAI,MAAM,QAAQ,CAAC,GAAK,MAAM,QAAQ,CAAC,EAEnC,OADI,EAAE,SAAW,EAAE,QACZ,EAAE,OAAO,EAAO,IAAU,EAAU,EAAO,EAAE,EAAM,CAAC,EAE/D,IAAM,EAAQ,OAAO,KAAK,CAAW,EAC/B,EAAQ,OAAO,KAAK,CAAW,EAErC,OADI,EAAM,SAAW,EAAM,QACpB,EAAM,MAAO,GAChB,EAAW,EAA8B,GAAO,EAA8B,EAAI,CACtF,CACJ,CAYA,SAAgB,EAAe,EAAa,CACxC,IAAM,GAAA,EAAM,EAAA,OAAA,CAAU,CAAK,EAI3B,OAHK,EAAU,EAAI,QAAS,CAAK,IAC7B,EAAI,QAAU,GAEX,EAAI,OACf"}
1
+ {"version":3,"file":"use-deep-memo.cjs","names":["useRef","react","deepEqual","a","b","value","index","aKeys","bKeys","key","useDeepMemo","ref"],"sources":["../../src/hooks/use-deep-memo.ts"],"sourcesContent":["/* eslint-disable react-hooks/refs -- the structural cache is read and written during render by design (see the docstring) */\nimport { useRef } from \"react\";\n\n/**\n * Structural equality over plain objects and arrays, the comparison `useDeepMemo`\n * and `useDraftFilters` share. Internal: not re-exported from the barrel.\n *\n * @param a - First value.\n * @param b - Second value.\n * @returns Whether both values have the same shape and leaves.\n */\nexport function deepEqual(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\" || a === null || b === null) return false;\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((value, index) => deepEqual(value, b[index]));\n }\n const aKeys = Object.keys(a as object);\n const bKeys = Object.keys(b as object);\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every((key) =>\n deepEqual((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key]),\n );\n}\n\n/**\n * Memoize a value with a structural equality check. Use when an object/array\n * created during render is fed to `useEffect` dependencies and you want to\n * avoid spurious effect runs when only the reference changes.\n *\n * The cache is a ref read and written during render. That is flagged by the React\n * Compiler rules and is nonetheless correct here: the write is idempotent — a\n * discarded render either wrote a structurally equal value or nothing at all — so\n * replaying the render cannot change the result.\n */\nexport function useDeepMemo<T>(value: T): T {\n const ref = useRef<T>(value);\n if (!deepEqual(ref.current, value)) {\n ref.current = value;\n }\n return ref.current;\n}\n"],"mappings":"A,uBAWA,SAAgBE,EAAU,EAAY,EAAqB,CACvD,GAAI,OAAO,GAAGC,EAAGC,CAAC,EAAG,MAAO,GAE5B,GADI,OAAOD,GAAM,UAAY,OAAOC,GAAM,UAAYD,IAAM,MAAQC,IAAM,MACtE,MAAM,QAAQD,CAAC,IAAM,MAAM,QAAQC,CAAC,EAAG,MAAO,GAClD,GAAI,MAAM,QAAQD,CAAC,GAAK,MAAM,QAAQC,CAAC,EAEnC,OADID,EAAE,SAAWC,EAAE,QACZD,EAAE,OAAO,EAAO,IAAUD,EAAUG,EAAOD,EAAEE,EAAM,CAAC,EAE/D,IAAMC,EAAQ,OAAO,KAAKJ,CAAW,EAC/BK,EAAQ,OAAO,KAAKJ,CAAW,EAErC,OADIG,EAAM,SAAWC,EAAM,QACpBD,EAAM,MAAO,GAChBL,EAAWC,EAA8BM,GAAOL,EAA8BK,EAAI,CACtF,CACJ,CAYA,SAAgBC,EAAe,EAAa,CACxC,IAAMC,GAAA,EAAMX,EAAAA,OAAAA,CAAUK,CAAK,EAI3B,OAHKH,EAAUS,EAAI,QAASN,CAAK,IAC7B,EAAI,QAAUA,GAEXM,EAAI,OACf,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-deep-memo.js","names":[],"sources":["../../src/hooks/use-deep-memo.ts"],"sourcesContent":["/* eslint-disable react-hooks/refs -- the structural cache is read and written during render by design (see the docstring) */\nimport { useRef } from \"react\";\n\n/**\n * Structural equality over plain objects and arrays, the comparison `useDeepMemo`\n * and `useDraftFilters` share. Internal: not re-exported from the barrel.\n *\n * @param a - First value.\n * @param b - Second value.\n * @returns Whether both values have the same shape and leaves.\n */\nexport function deepEqual(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\" || a === null || b === null) return false;\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((value, index) => deepEqual(value, b[index]));\n }\n const aKeys = Object.keys(a as object);\n const bKeys = Object.keys(b as object);\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every((key) =>\n deepEqual((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key]),\n );\n}\n\n/**\n * Memoize a value with a structural equality check. Use when an object/array\n * created during render is fed to `useEffect` dependencies and you want to\n * avoid spurious effect runs when only the reference changes.\n *\n * The cache is a ref read and written during render. That is flagged by the React\n * Compiler rules and is nonetheless correct here: the write is idempotent — a\n * discarded render either wrote a structurally equal value or nothing at all — so\n * replaying the render cannot change the result.\n */\nexport function useDeepMemo<T>(value: T): T {\n const ref = useRef<T>(value);\n if (!deepEqual(ref.current, value)) {\n ref.current = value;\n }\n return ref.current;\n}\n"],"mappings":";;AAWA,SAAgB,EAAU,GAAY,GAAqB;CACvD,IAAI,OAAO,GAAG,GAAG,CAAC,GAAG,OAAO;CAE5B,IADI,OAAO,KAAM,YAAY,OAAO,KAAM,YAAY,MAAM,QAAQ,MAAM,QACtE,MAAM,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,GAAG,OAAO;CAClD,IAAI,MAAM,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,GAEnC,OADI,EAAE,WAAW,EAAE,UACZ,EAAE,OAAO,GAAO,MAAU,EAAU,GAAO,EAAE,EAAM,CAAC;CAE/D,IAAM,IAAQ,OAAO,KAAK,CAAW,GAC/B,IAAQ,OAAO,KAAK,CAAW;CAErC,OADI,EAAM,WAAW,EAAM,UACpB,EAAM,OAAO,MAChB,EAAW,EAA8B,IAAO,EAA8B,EAAI,CACtF;AACJ;AAYA,SAAgB,EAAe,GAAa;CACxC,IAAM,IAAM,EAAU,CAAK;CAI3B,OAHK,EAAU,EAAI,SAAS,CAAK,MAC7B,EAAI,UAAU,IAEX,EAAI;AACf"}
1
+ {"version":3,"file":"use-deep-memo.js","names":["deepEqual","a","b","value","index","aKeys","bKeys","key","useDeepMemo","ref","useRef"],"sources":["../../src/hooks/use-deep-memo.ts"],"sourcesContent":["/* eslint-disable react-hooks/refs -- the structural cache is read and written during render by design (see the docstring) */\nimport { useRef } from \"react\";\n\n/**\n * Structural equality over plain objects and arrays, the comparison `useDeepMemo`\n * and `useDraftFilters` share. Internal: not re-exported from the barrel.\n *\n * @param a - First value.\n * @param b - Second value.\n * @returns Whether both values have the same shape and leaves.\n */\nexport function deepEqual(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\" || a === null || b === null) return false;\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((value, index) => deepEqual(value, b[index]));\n }\n const aKeys = Object.keys(a as object);\n const bKeys = Object.keys(b as object);\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every((key) =>\n deepEqual((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key]),\n );\n}\n\n/**\n * Memoize a value with a structural equality check. Use when an object/array\n * created during render is fed to `useEffect` dependencies and you want to\n * avoid spurious effect runs when only the reference changes.\n *\n * The cache is a ref read and written during render. That is flagged by the React\n * Compiler rules and is nonetheless correct here: the write is idempotent — a\n * discarded render either wrote a structurally equal value or nothing at all — so\n * replaying the render cannot change the result.\n */\nexport function useDeepMemo<T>(value: T): T {\n const ref = useRef<T>(value);\n if (!deepEqual(ref.current, value)) {\n ref.current = value;\n }\n return ref.current;\n}\n"],"mappings":";;AAWA,SAAgBA,EAAU,GAAY,GAAqB;CACvD,IAAI,OAAO,GAAGC,GAAGC,CAAC,GAAG,OAAO;CAE5B,IADI,OAAOD,KAAM,YAAY,OAAOC,KAAM,YAAYD,MAAM,QAAQC,MAAM,QACtE,MAAM,QAAQD,CAAC,MAAM,MAAM,QAAQC,CAAC,GAAG,OAAO;CAClD,IAAI,MAAM,QAAQD,CAAC,KAAK,MAAM,QAAQC,CAAC,GAEnC,OADID,EAAE,WAAWC,EAAE,UACZD,EAAE,OAAO,GAAO,MAAUD,EAAUG,GAAOD,EAAEE,EAAM,CAAC;CAE/D,IAAMC,IAAQ,OAAO,KAAKJ,CAAW,GAC/BK,IAAQ,OAAO,KAAKJ,CAAW;CAErC,OADIG,EAAM,WAAWC,EAAM,UACpBD,EAAM,OAAO,MAChBL,EAAWC,EAA8BM,IAAOL,EAA8BK,EAAI,CACtF;AACJ;AAYA,SAAgBC,EAAe,GAAa;CACxC,IAAMC,IAAMC,EAAUP,CAAK;CAI3B,OAHKH,EAAUS,EAAI,SAASN,CAAK,MAC7B,EAAI,UAAUA,IAEXM,EAAI;AACf"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-disclosure.cjs","names":[],"sources":["../../src/hooks/use-disclosure.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface DisclosureHandlers {\n open: () => void;\n close: () => void;\n toggle: () => void;\n}\n\n/**\n * Manage open/closed boolean state with stable `open`/`close`/`toggle` handlers.\n *\n * Richer than {@link useToggle} for UI elements like modals, drawers and\n * popovers: the handlers are referentially stable across renders.\n *\n * @param initial - initial opened state (default `false`).\n * @returns Tuple `[opened, { open, close, toggle }]`.\n */\nexport function useDisclosure(initial = false): [boolean, DisclosureHandlers] {\n const [opened, setOpened] = useState<boolean>(initial);\n\n const open = useCallback((): void => setOpened(true), []);\n const close = useCallback((): void => setOpened(false), []);\n const toggle = useCallback((): void => setOpened((current) => !current), []);\n\n const handlers = useMemo<DisclosureHandlers>(\n () => ({ open, close, toggle }),\n [open, close, toggle],\n );\n\n return [opened, handlers];\n}\n"],"mappings":"uBAiBA,SAAgB,EAAc,EAAU,GAAsC,CAC1E,GAAM,CAAC,EAAQ,IAAA,EAAa,EAAA,SAAA,CAAkB,CAAO,EAE/C,GAAA,EAAO,EAAA,YAAA,KAAwB,EAAU,EAAI,EAAG,CAAC,CAAC,EAClD,GAAA,EAAQ,EAAA,YAAA,KAAwB,EAAU,EAAK,EAAG,CAAC,CAAC,EACpD,GAAA,EAAS,EAAA,YAAA,KAAwB,EAAW,GAAY,CAAC,CAAO,EAAG,CAAC,CAAC,EAO3E,MAAO,CAAC,GAAA,EALS,EAAA,QAAA,MACN,CAAE,OAAM,QAAO,QAAO,GAC7B,CAAC,EAAM,EAAO,CAAM,CAGR,CAAQ,CAC5B"}
1
+ {"version":3,"file":"use-disclosure.cjs","names":["useState","useCallback","useMemo","react","useDisclosure","opened","setOpened","initial","open","close","toggle","current"],"sources":["../../src/hooks/use-disclosure.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface DisclosureHandlers {\n open: () => void;\n close: () => void;\n toggle: () => void;\n}\n\n/**\n * Manage open/closed boolean state with stable `open`/`close`/`toggle` handlers.\n *\n * Richer than {@link useToggle} for UI elements like modals, drawers and\n * popovers: the handlers are referentially stable across renders.\n *\n * @param initial - initial opened state (default `false`).\n * @returns Tuple `[opened, { open, close, toggle }]`.\n */\nexport function useDisclosure(initial = false): [boolean, DisclosureHandlers] {\n const [opened, setOpened] = useState<boolean>(initial);\n\n const open = useCallback((): void => setOpened(true), []);\n const close = useCallback((): void => setOpened(false), []);\n const toggle = useCallback((): void => setOpened((current) => !current), []);\n\n const handlers = useMemo<DisclosureHandlers>(\n () => ({ open, close, toggle }),\n [open, close, toggle],\n );\n\n return [opened, handlers];\n}\n"],"mappings":"A,uBAiBA,SAAgBI,EAAc,EAAU,GAAsC,CAC1E,GAAM,CAACC,EAAQC,IAAA,EAAaN,EAAAA,SAAAA,CAAkBO,CAAO,EAE/CC,GAAA,EAAOP,EAAAA,YAAAA,KAAwBK,EAAU,EAAI,EAAG,CAAC,CAAC,EAClDG,GAAA,EAAQR,EAAAA,YAAAA,KAAwBK,EAAU,EAAK,EAAG,CAAC,CAAC,EACpDI,GAAA,EAAST,EAAAA,YAAAA,KAAwBK,EAAW,GAAY,CAACK,CAAO,EAAG,CAAC,CAAC,EAO3E,MAAO,CAACN,GAAA,EALSH,EAAAA,QAAAA,MACN,CAAE,OAAM,QAAO,QAAO,GAC7B,CAACM,EAAMC,EAAOC,CAAM,CAGR,CAAQ,CAC5B,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-disclosure.js","names":[],"sources":["../../src/hooks/use-disclosure.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface DisclosureHandlers {\n open: () => void;\n close: () => void;\n toggle: () => void;\n}\n\n/**\n * Manage open/closed boolean state with stable `open`/`close`/`toggle` handlers.\n *\n * Richer than {@link useToggle} for UI elements like modals, drawers and\n * popovers: the handlers are referentially stable across renders.\n *\n * @param initial - initial opened state (default `false`).\n * @returns Tuple `[opened, { open, close, toggle }]`.\n */\nexport function useDisclosure(initial = false): [boolean, DisclosureHandlers] {\n const [opened, setOpened] = useState<boolean>(initial);\n\n const open = useCallback((): void => setOpened(true), []);\n const close = useCallback((): void => setOpened(false), []);\n const toggle = useCallback((): void => setOpened((current) => !current), []);\n\n const handlers = useMemo<DisclosureHandlers>(\n () => ({ open, close, toggle }),\n [open, close, toggle],\n );\n\n return [opened, handlers];\n}\n"],"mappings":";;AAiBA,SAAgB,EAAc,IAAU,IAAsC;CAC1E,IAAM,CAAC,GAAQ,KAAa,EAAkB,CAAO,GAE/C,IAAO,QAAwB,EAAU,EAAI,GAAG,CAAC,CAAC,GAClD,IAAQ,QAAwB,EAAU,EAAK,GAAG,CAAC,CAAC,GACpD,IAAS,QAAwB,GAAW,MAAY,CAAC,CAAO,GAAG,CAAC,CAAC;CAO3E,OAAO,CAAC,GALS,SACN;EAAE;EAAM;EAAO;CAAO,IAC7B;EAAC;EAAM;EAAO;CAAM,CAGR,CAAQ;AAC5B"}
1
+ {"version":3,"file":"use-disclosure.js","names":["useDisclosure","opened","setOpened","useState","initial","open","useCallback","close","toggle","current","useMemo"],"sources":["../../src/hooks/use-disclosure.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface DisclosureHandlers {\n open: () => void;\n close: () => void;\n toggle: () => void;\n}\n\n/**\n * Manage open/closed boolean state with stable `open`/`close`/`toggle` handlers.\n *\n * Richer than {@link useToggle} for UI elements like modals, drawers and\n * popovers: the handlers are referentially stable across renders.\n *\n * @param initial - initial opened state (default `false`).\n * @returns Tuple `[opened, { open, close, toggle }]`.\n */\nexport function useDisclosure(initial = false): [boolean, DisclosureHandlers] {\n const [opened, setOpened] = useState<boolean>(initial);\n\n const open = useCallback((): void => setOpened(true), []);\n const close = useCallback((): void => setOpened(false), []);\n const toggle = useCallback((): void => setOpened((current) => !current), []);\n\n const handlers = useMemo<DisclosureHandlers>(\n () => ({ open, close, toggle }),\n [open, close, toggle],\n );\n\n return [opened, handlers];\n}\n"],"mappings":";;AAiBA,SAAgBA,EAAc,IAAU,IAAsC;CAC1E,IAAM,CAACC,GAAQC,KAAaC,EAAkBC,CAAO,GAE/CC,IAAOC,QAAwBJ,EAAU,EAAI,GAAG,CAAC,CAAC,GAClDK,IAAQD,QAAwBJ,EAAU,EAAK,GAAG,CAAC,CAAC,GACpDM,IAASF,QAAwBJ,GAAW,MAAY,CAACO,CAAO,GAAG,CAAC,CAAC;CAO3E,OAAO,CAACR,GALSS,SACN;EAAE;EAAM;EAAO;CAAO,IAC7B;EAACL;EAAME;EAAOC;CAAM,CAGR,CAAQ;AAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-document-title.cjs","names":[],"sources":["../../src/hooks/use-document-title.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Set `document.title` while the component is mounted, restoring the previous\n * title on unmount. SSR-safe — no-op when `document` is unavailable.\n *\n * @param title - the title to apply.\n */\nexport function useDocumentTitle(title: string): void {\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const previous = document.title;\n document.title = title;\n return () => {\n document.title = previous;\n };\n }, [title]);\n}\n"],"mappings":"uBAQA,SAAgB,EAAiB,EAAqB,EAClD,EAAA,EAAA,UAAA,KAAgB,CACZ,GAAI,OAAO,SAAa,IAAa,OACrC,IAAM,EAAW,SAAS,MAE1B,MADA,UAAS,MAAQ,MACJ,CACT,SAAS,MAAQ,CACrB,CACJ,EAAG,CAAC,CAAK,CAAC,CACd"}
1
+ {"version":3,"file":"use-document-title.cjs","names":["react","useDocumentTitle","previous","title"],"sources":["../../src/hooks/use-document-title.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Set `document.title` while the component is mounted, restoring the previous\n * title on unmount. SSR-safe — no-op when `document` is unavailable.\n *\n * @param title - the title to apply.\n */\nexport function useDocumentTitle(title: string): void {\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const previous = document.title;\n document.title = title;\n return () => {\n document.title = previous;\n };\n }, [title]);\n}\n"],"mappings":"A,uBAQA,SAAgBC,EAAiB,EAAqB,EAClD,EAAAD,EAAA,UAAA,KAAgB,CACZ,GAAI,OAAO,SAAa,IAAa,OACrC,IAAME,EAAW,SAAS,MAE1B,MADA,UAAS,MAAQC,MACJ,CACT,SAAS,MAAQD,CACrB,CACJ,EAAG,CAACC,CAAK,CAAC,CACd,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-document-title.js","names":[],"sources":["../../src/hooks/use-document-title.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Set `document.title` while the component is mounted, restoring the previous\n * title on unmount. SSR-safe — no-op when `document` is unavailable.\n *\n * @param title - the title to apply.\n */\nexport function useDocumentTitle(title: string): void {\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const previous = document.title;\n document.title = title;\n return () => {\n document.title = previous;\n };\n }, [title]);\n}\n"],"mappings":";;AAQA,SAAgB,EAAiB,GAAqB;CAClD,QAAgB;EACZ,IAAI,OAAO,WAAa,KAAa;EACrC,IAAM,IAAW,SAAS;EAE1B,OADA,SAAS,QAAQ,SACJ;GACT,SAAS,QAAQ;EACrB;CACJ,GAAG,CAAC,CAAK,CAAC;AACd"}
1
+ {"version":3,"file":"use-document-title.js","names":["useDocumentTitle","previous","title"],"sources":["../../src/hooks/use-document-title.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Set `document.title` while the component is mounted, restoring the previous\n * title on unmount. SSR-safe — no-op when `document` is unavailable.\n *\n * @param title - the title to apply.\n */\nexport function useDocumentTitle(title: string): void {\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const previous = document.title;\n document.title = title;\n return () => {\n document.title = previous;\n };\n }, [title]);\n}\n"],"mappings":";;AAQA,SAAgBA,EAAiB,GAAqB;CAClD,QAAgB;EACZ,IAAI,OAAO,WAAa,KAAa;EACrC,IAAMC,IAAW,SAAS;EAE1B,OADA,SAAS,QAAQC,SACJ;GACT,SAAS,QAAQD;EACrB;CACJ,GAAG,CAACC,CAAK,CAAC;AACd"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-document-visibility.cjs","names":[],"sources":["../../src/hooks/use-document-visibility.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport type DocumentVisibility = \"visible\" | \"hidden\";\n\n/** Subscribe to `document.visibilityState`. Returns `\"visible\"` during SSR. */\nexport function useDocumentVisibility(): DocumentVisibility {\n const [state, setState] = useState<DocumentVisibility>(() =>\n typeof document === \"undefined\"\n ? \"visible\"\n : (document.visibilityState as DocumentVisibility),\n );\n\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const handler = (): void => setState(document.visibilityState as DocumentVisibility);\n document.addEventListener(\"visibilitychange\", handler);\n return () => document.removeEventListener(\"visibilitychange\", handler);\n }, []);\n\n return state;\n}\n"],"mappings":"uBAKA,SAAgB,GAA4C,CACxD,GAAM,CAAC,EAAO,IAAA,EAAY,EAAA,SAAA,KACtB,OAAO,SAAa,IACd,UACC,SAAS,eACpB,EASA,OAPA,EAAA,EAAA,UAAA,KAAgB,CACZ,GAAI,OAAO,SAAa,IAAa,OACrC,IAAM,MAAsB,EAAS,SAAS,eAAqC,EAEnF,OADA,SAAS,iBAAiB,mBAAoB,CAAO,MACxC,SAAS,oBAAoB,mBAAoB,CAAO,CACzE,EAAG,CAAC,CAAC,EAEE,CACX"}
1
+ {"version":3,"file":"use-document-visibility.cjs","names":["useState","react","useDocumentVisibility","state","setState","handler"],"sources":["../../src/hooks/use-document-visibility.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport type DocumentVisibility = \"visible\" | \"hidden\";\n\n/** Subscribe to `document.visibilityState`. Returns `\"visible\"` during SSR. */\nexport function useDocumentVisibility(): DocumentVisibility {\n const [state, setState] = useState<DocumentVisibility>(() =>\n typeof document === \"undefined\"\n ? \"visible\"\n : (document.visibilityState as DocumentVisibility),\n );\n\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const handler = (): void => setState(document.visibilityState as DocumentVisibility);\n document.addEventListener(\"visibilitychange\", handler);\n return () => document.removeEventListener(\"visibilitychange\", handler);\n }, []);\n\n return state;\n}\n"],"mappings":"A,uBAKA,SAAgBE,GAA4C,CACxD,GAAM,CAACC,EAAOC,IAAA,EAAYJ,EAAAA,SAAAA,KACtB,OAAO,SAAa,IACd,UACC,SAAS,eACpB,EASA,OAPA,EAAAC,EAAA,UAAA,KAAgB,CACZ,GAAI,OAAO,SAAa,IAAa,OACrC,IAAMI,MAAsBD,EAAS,SAAS,eAAqC,EAEnF,OADA,SAAS,iBAAiB,mBAAoBC,CAAO,MACxC,SAAS,oBAAoB,mBAAoBA,CAAO,CACzE,EAAG,CAAC,CAAC,EAEEF,CACX,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-document-visibility.js","names":[],"sources":["../../src/hooks/use-document-visibility.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport type DocumentVisibility = \"visible\" | \"hidden\";\n\n/** Subscribe to `document.visibilityState`. Returns `\"visible\"` during SSR. */\nexport function useDocumentVisibility(): DocumentVisibility {\n const [state, setState] = useState<DocumentVisibility>(() =>\n typeof document === \"undefined\"\n ? \"visible\"\n : (document.visibilityState as DocumentVisibility),\n );\n\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const handler = (): void => setState(document.visibilityState as DocumentVisibility);\n document.addEventListener(\"visibilitychange\", handler);\n return () => document.removeEventListener(\"visibilitychange\", handler);\n }, []);\n\n return state;\n}\n"],"mappings":";;AAKA,SAAgB,IAA4C;CACxD,IAAM,CAAC,GAAO,KAAY,QACtB,OAAO,WAAa,MACd,YACC,SAAS,eACpB;CASA,OAPA,QAAgB;EACZ,IAAI,OAAO,WAAa,KAAa;EACrC,IAAM,UAAsB,EAAS,SAAS,eAAqC;EAEnF,OADA,SAAS,iBAAiB,oBAAoB,CAAO,SACxC,SAAS,oBAAoB,oBAAoB,CAAO;CACzE,GAAG,CAAC,CAAC,GAEE;AACX"}
1
+ {"version":3,"file":"use-document-visibility.js","names":["useDocumentVisibility","state","setState","useState","useEffect","handler"],"sources":["../../src/hooks/use-document-visibility.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport type DocumentVisibility = \"visible\" | \"hidden\";\n\n/** Subscribe to `document.visibilityState`. Returns `\"visible\"` during SSR. */\nexport function useDocumentVisibility(): DocumentVisibility {\n const [state, setState] = useState<DocumentVisibility>(() =>\n typeof document === \"undefined\"\n ? \"visible\"\n : (document.visibilityState as DocumentVisibility),\n );\n\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const handler = (): void => setState(document.visibilityState as DocumentVisibility);\n document.addEventListener(\"visibilitychange\", handler);\n return () => document.removeEventListener(\"visibilitychange\", handler);\n }, []);\n\n return state;\n}\n"],"mappings":";;AAKA,SAAgBA,IAA4C;CACxD,IAAM,CAACC,GAAOC,KAAYC,QACtB,OAAO,WAAa,MACd,YACC,SAAS,eACpB;CASA,OAPAC,QAAgB;EACZ,IAAI,OAAO,WAAa,KAAa;EACrC,IAAMC,UAAsBH,EAAS,SAAS,eAAqC;EAEnF,OADA,SAAS,iBAAiB,oBAAoBG,CAAO,SACxC,SAAS,oBAAoB,oBAAoBA,CAAO;CACzE,GAAG,CAAC,CAAC,GAEEJ;AACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-draft-filters.cjs","names":[],"sources":["../../src/hooks/use-draft-filters.ts"],"sourcesContent":["import { useCallback, useRef, useState } from \"react\";\n\nimport { deepEqual } from \"./use-deep-memo\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\n/** An edit to the draft: a partial object merged over it, or an updater. */\nexport type DraftFiltersPatch<T> = Partial<T> | ((draft: T) => T);\n\nexport interface UseDraftFiltersOptions<T> {\n /**\n * Called with the applied value on every `apply()` and `clear()` — the place to\n * reset a page number you keep yourself. `usePaginatedQuery` does not need it:\n * it goes back to page 1 on its own when `applied` changes its `queryKey`.\n */\n onApply?: (applied: T) => void;\n /** Equality behind `isDirty` and the stable `applied`. Default: structural. */\n isEqual?: (a: T, b: T) => boolean;\n}\n\nexport interface UseDraftFiltersResult<T> {\n /** What the filter controls edit. Changes on every keystroke. */\n draft: T;\n /**\n * What the query reads. Changes only on `apply()`/`clear()`, and keeps its\n * reference when the value applied is equal to the current one — safe to put\n * in a `queryKey`.\n */\n applied: T;\n /** Whether the draft differs from what is applied — enable the apply button on it. */\n isDirty: boolean;\n /** Edit the draft, merging a partial object or running an updater. Never applies. */\n set: (patch: DraftFiltersPatch<T>) => void;\n /**\n * Publish the draft. With a patch, merge it into the draft **and** publish the\n * result in the same call — \"filter by this code\" from a table row.\n */\n apply: (patch?: DraftFiltersPatch<T>) => void;\n /** Reset the draft and the applied value to the initial one, together. */\n clear: () => void;\n}\n\n/** Both halves, kept in one state so they can never be committed apart. */\ninterface DraftFiltersState<T> {\n draft: T;\n applied: T;\n}\n\n/**\n * Resolve a patch against a draft.\n *\n * @param draft - The current draft.\n * @param patch - A partial object to merge, or an updater.\n * @returns The next draft.\n */\nfunction patchDraft<T>(draft: T, patch: DraftFiltersPatch<T>): T {\n return typeof patch === \"function\" ? patch(draft) : { ...draft, ...patch };\n}\n\n/**\n * Draft vs applied state for a server-side filter: the controls edit a draft\n * freely, and the query only sees it when the user applies (a click, or Enter).\n *\n * A server-side filter cannot react to every keystroke — each character typed in\n * a search box would be a request. Every admin screen then writes the same pair of\n * `useState`s, and gets the same three details wrong:\n *\n * - **Clearing moves both halves.** Resetting only the draft leaves a filtered\n * list under an empty bar; resetting only the applied value leaves the opposite.\n * - **Applying a value that is not in state yet.** \"Filter by this code\" has to\n * write the draft and publish it in one gesture; calling `setDraft(x)` and then\n * publishing `draft` reads the previous value. `apply(patch)` computes the next\n * draft from a ref that every call keeps current, so it never depends on the\n * order React flushes state in.\n * - **Resetting the page.** Filtering while on page 7 of a result that now has two\n * pages shows an empty table. `usePaginatedQuery` handles it by itself when\n * `applied` is in its `queryKey`; a page kept elsewhere resets in `onApply`.\n *\n * There is no effect in here: applying happens inside the event that asked for it,\n * so one click is one request. `applied` keeps its reference while nothing new is\n * applied, so it can sit in a `queryKey` without a phantom refetch.\n *\n * Like `useState`, the initial value is read on the first render only; `clear()`\n * returns to it.\n *\n * @param initial - The empty filter form: what the screen shows and queries first.\n * @param options - `onApply` and `isEqual`.\n * @returns The draft, the applied value and the gestures between them.\n *\n * @example\n * const filters = useDraftFilters({ code: \"\", level: \"all\" });\n * const logs = usePaginatedQuery({\n * queryKey: [\"logs\", filters.applied],\n * queryFn: (params) => api.listLogs({ ...params, ...toQuery(filters.applied) }),\n * });\n * // <Input value={filters.draft.code} onChange={(e) => filters.set({ code: e.target.value })} />\n * // <Button disabled={!filters.isDirty} onClick={() => filters.apply()}>Filtrar</Button>\n */\nexport function useDraftFilters<T extends object>(\n initial: T,\n options: UseDraftFiltersOptions<T> = {},\n): UseDraftFiltersResult<T> {\n const [state, setState] = useState<DraftFiltersState<T>>(() => ({\n draft: initial,\n applied: initial,\n }));\n const initialRef = useRef<T>(state.applied);\n const stateRef = useRef<DraftFiltersState<T>>(state);\n const optionsRef = useLatestRef(options);\n\n const equal = useCallback(\n (a: T, b: T): boolean => (optionsRef.current.isEqual ?? deepEqual)(a, b),\n [optionsRef],\n );\n\n const commit = useCallback((next: DraftFiltersState<T>): void => {\n stateRef.current = next;\n setState(next);\n }, []);\n\n const set = useCallback(\n (patch: DraftFiltersPatch<T>): void => {\n const current = stateRef.current;\n commit({ draft: patchDraft(current.draft, patch), applied: current.applied });\n },\n [commit],\n );\n\n const publish = useCallback(\n (next: T): void => {\n const current = stateRef.current;\n const applied = equal(next, current.applied) ? current.applied : next;\n commit({ draft: next, applied });\n optionsRef.current.onApply?.(applied);\n },\n [commit, equal, optionsRef],\n );\n\n const apply = useCallback(\n (patch?: DraftFiltersPatch<T>): void => {\n const draft = stateRef.current.draft;\n publish(patch === undefined ? draft : patchDraft(draft, patch));\n },\n [publish],\n );\n\n const clear = useCallback((): void => publish(initialRef.current), [publish]);\n\n return {\n draft: state.draft,\n applied: state.applied,\n isDirty: !(options.isEqual ?? deepEqual)(state.draft, state.applied),\n set,\n apply,\n clear,\n };\n}\n"],"mappings":"gGAsDA,SAAS,EAAc,EAAU,EAAgC,CAC7D,OAAO,OAAO,GAAU,WAAa,EAAM,CAAK,EAAI,CAAE,GAAG,EAAO,GAAG,CAAM,CAC7E,CAyCA,SAAgB,EACZ,EACA,EAAqC,CAAC,EACd,CACxB,GAAM,CAAC,EAAO,IAAA,EAAY,EAAA,SAAA,MAAsC,CAC5D,MAAO,EACP,QAAS,CACb,EAAE,EACI,GAAA,EAAa,EAAA,OAAA,CAAU,EAAM,OAAO,EACpC,GAAA,EAAW,EAAA,OAAA,CAA6B,CAAK,EAC7C,EAAa,EAAA,aAAa,CAAO,EAEjC,GAAA,EAAQ,EAAA,YAAA,EACT,EAAM,KAAmB,EAAW,QAAQ,SAAW,EAAA,UAAA,CAAW,EAAG,CAAC,EACvE,CAAC,CAAU,CACf,EAEM,GAAA,EAAS,EAAA,YAAA,CAAa,GAAqC,CAC7D,EAAS,QAAU,EACnB,EAAS,CAAI,CACjB,EAAG,CAAC,CAAC,EAEC,GAAA,EAAM,EAAA,YAAA,CACP,GAAsC,CACnC,IAAM,EAAU,EAAS,QACzB,EAAO,CAAE,MAAO,EAAW,EAAQ,MAAO,CAAK,EAAG,QAAS,EAAQ,OAAQ,CAAC,CAChF,EACA,CAAC,CAAM,CACX,EAEM,GAAA,EAAU,EAAA,YAAA,CACX,GAAkB,CACf,IAAM,EAAU,EAAS,QACnB,EAAU,EAAM,EAAM,EAAQ,OAAO,EAAI,EAAQ,QAAU,EACjE,EAAO,CAAE,MAAO,EAAM,SAAQ,CAAC,EAC/B,EAAW,QAAQ,UAAU,CAAO,CACxC,EACA,CAAC,EAAQ,EAAO,CAAU,CAC9B,EAEM,GAAA,EAAQ,EAAA,YAAA,CACT,GAAuC,CACpC,IAAM,EAAQ,EAAS,QAAQ,MAC/B,EAAQ,IAAU,IAAA,GAAY,EAAQ,EAAW,EAAO,CAAK,CAAC,CAClE,EACA,CAAC,CAAO,CACZ,EAEM,GAAA,EAAQ,EAAA,YAAA,KAAwB,EAAQ,EAAW,OAAO,EAAG,CAAC,CAAO,CAAC,EAE5E,MAAO,CACH,MAAO,EAAM,MACb,QAAS,EAAM,QACf,QAAS,EAAE,EAAQ,SAAW,EAAA,UAAA,CAAW,EAAM,MAAO,EAAM,OAAO,EACnE,MACA,QACA,OACJ,CACJ"}
1
+ {"version":3,"file":"use-draft-filters.cjs","names":["useState","useRef","useLatestRef","useCallback","deepEqual","require_use_deep_memo","require_use_latest_ref","react","patchDraft","patch","draft","useDraftFilters","state","setState","initial","initialRef","stateRef","optionsRef","options","equal","a","b","commit","next","set","current","publish","applied","apply","clear"],"sources":["../../src/hooks/use-draft-filters.ts"],"sourcesContent":["import { useCallback, useRef, useState } from \"react\";\n\nimport { deepEqual } from \"./use-deep-memo\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\n/** An edit to the draft: a partial object merged over it, or an updater. */\nexport type DraftFiltersPatch<T> = Partial<T> | ((draft: T) => T);\n\nexport interface UseDraftFiltersOptions<T> {\n /**\n * Called with the applied value on every `apply()` and `clear()` — the place to\n * reset a page number you keep yourself. `usePaginatedQuery` does not need it:\n * it goes back to page 1 on its own when `applied` changes its `queryKey`.\n */\n onApply?: (applied: T) => void;\n /** Equality behind `isDirty` and the stable `applied`. Default: structural. */\n isEqual?: (a: T, b: T) => boolean;\n}\n\nexport interface UseDraftFiltersResult<T> {\n /** What the filter controls edit. Changes on every keystroke. */\n draft: T;\n /**\n * What the query reads. Changes only on `apply()`/`clear()`, and keeps its\n * reference when the value applied is equal to the current one — safe to put\n * in a `queryKey`.\n */\n applied: T;\n /** Whether the draft differs from what is applied — enable the apply button on it. */\n isDirty: boolean;\n /** Edit the draft, merging a partial object or running an updater. Never applies. */\n set: (patch: DraftFiltersPatch<T>) => void;\n /**\n * Publish the draft. With a patch, merge it into the draft **and** publish the\n * result in the same call — \"filter by this code\" from a table row.\n */\n apply: (patch?: DraftFiltersPatch<T>) => void;\n /** Reset the draft and the applied value to the initial one, together. */\n clear: () => void;\n}\n\n/** Both halves, kept in one state so they can never be committed apart. */\ninterface DraftFiltersState<T> {\n draft: T;\n applied: T;\n}\n\n/**\n * Resolve a patch against a draft.\n *\n * @param draft - The current draft.\n * @param patch - A partial object to merge, or an updater.\n * @returns The next draft.\n */\nfunction patchDraft<T>(draft: T, patch: DraftFiltersPatch<T>): T {\n return typeof patch === \"function\" ? patch(draft) : { ...draft, ...patch };\n}\n\n/**\n * Draft vs applied state for a server-side filter: the controls edit a draft\n * freely, and the query only sees it when the user applies (a click, or Enter).\n *\n * A server-side filter cannot react to every keystroke — each character typed in\n * a search box would be a request. Every admin screen then writes the same pair of\n * `useState`s, and gets the same three details wrong:\n *\n * - **Clearing moves both halves.** Resetting only the draft leaves a filtered\n * list under an empty bar; resetting only the applied value leaves the opposite.\n * - **Applying a value that is not in state yet.** \"Filter by this code\" has to\n * write the draft and publish it in one gesture; calling `setDraft(x)` and then\n * publishing `draft` reads the previous value. `apply(patch)` computes the next\n * draft from a ref that every call keeps current, so it never depends on the\n * order React flushes state in.\n * - **Resetting the page.** Filtering while on page 7 of a result that now has two\n * pages shows an empty table. `usePaginatedQuery` handles it by itself when\n * `applied` is in its `queryKey`; a page kept elsewhere resets in `onApply`.\n *\n * There is no effect in here: applying happens inside the event that asked for it,\n * so one click is one request. `applied` keeps its reference while nothing new is\n * applied, so it can sit in a `queryKey` without a phantom refetch.\n *\n * Like `useState`, the initial value is read on the first render only; `clear()`\n * returns to it.\n *\n * @param initial - The empty filter form: what the screen shows and queries first.\n * @param options - `onApply` and `isEqual`.\n * @returns The draft, the applied value and the gestures between them.\n *\n * @example\n * const filters = useDraftFilters({ code: \"\", level: \"all\" });\n * const logs = usePaginatedQuery({\n * queryKey: [\"logs\", filters.applied],\n * queryFn: (params) => api.listLogs({ ...params, ...toQuery(filters.applied) }),\n * });\n * // <Input value={filters.draft.code} onChange={(e) => filters.set({ code: e.target.value })} />\n * // <Button disabled={!filters.isDirty} onClick={() => filters.apply()}>Filtrar</Button>\n */\nexport function useDraftFilters<T extends object>(\n initial: T,\n options: UseDraftFiltersOptions<T> = {},\n): UseDraftFiltersResult<T> {\n const [state, setState] = useState<DraftFiltersState<T>>(() => ({\n draft: initial,\n applied: initial,\n }));\n const initialRef = useRef<T>(state.applied);\n const stateRef = useRef<DraftFiltersState<T>>(state);\n const optionsRef = useLatestRef(options);\n\n const equal = useCallback(\n (a: T, b: T): boolean => (optionsRef.current.isEqual ?? deepEqual)(a, b),\n [optionsRef],\n );\n\n const commit = useCallback((next: DraftFiltersState<T>): void => {\n stateRef.current = next;\n setState(next);\n }, []);\n\n const set = useCallback(\n (patch: DraftFiltersPatch<T>): void => {\n const current = stateRef.current;\n commit({ draft: patchDraft(current.draft, patch), applied: current.applied });\n },\n [commit],\n );\n\n const publish = useCallback(\n (next: T): void => {\n const current = stateRef.current;\n const applied = equal(next, current.applied) ? current.applied : next;\n commit({ draft: next, applied });\n optionsRef.current.onApply?.(applied);\n },\n [commit, equal, optionsRef],\n );\n\n const apply = useCallback(\n (patch?: DraftFiltersPatch<T>): void => {\n const draft = stateRef.current.draft;\n publish(patch === undefined ? draft : patchDraft(draft, patch));\n },\n [publish],\n );\n\n const clear = useCallback((): void => publish(initialRef.current), [publish]);\n\n return {\n draft: state.draft,\n applied: state.applied,\n isDirty: !(options.isEqual ?? deepEqual)(state.draft, state.applied),\n set,\n apply,\n clear,\n };\n}\n"],"mappings":"A,gGAsDA,SAASQ,EAAc,EAAU,EAAgC,CAC7D,OAAO,OAAOC,GAAU,WAAaA,EAAMC,CAAK,EAAI,CAAE,GAAGA,EAAO,GAAGD,CAAM,CAC7E,CAyCA,SAAgBE,EACZ,EACA,EAAqC,CAAC,EACd,CACxB,GAAM,CAACC,EAAOC,IAAA,EAAYb,EAAAA,SAAAA,MAAsC,CAC5D,MAAOc,EACP,QAASA,CACb,EAAE,EACIC,GAAA,EAAad,EAAAA,OAAAA,CAAUW,EAAM,OAAO,EACpCI,GAAA,EAAWf,EAAAA,OAAAA,CAA6BW,CAAK,EAC7CK,EAAaf,EAAAA,aAAagB,CAAO,EAEjCC,GAAA,EAAQhB,EAAAA,YAAAA,EACT,EAAM,KAAmBc,EAAW,QAAQ,SAAWb,EAAAA,UAAAA,CAAWgB,EAAGC,CAAC,EACvE,CAACJ,CAAU,CACf,EAEMK,GAAA,EAASnB,EAAAA,YAAAA,CAAa,GAAqC,CAC7D,EAAS,QAAUoB,EACnBV,EAASU,CAAI,CACjB,EAAG,CAAC,CAAC,EAECC,GAAA,EAAMrB,EAAAA,YAAAA,CACP,GAAsC,CACnC,IAAMsB,EAAUT,EAAS,QACzBM,EAAO,CAAE,MAAOd,EAAWiB,EAAQ,MAAOhB,CAAK,EAAG,QAASgB,EAAQ,OAAQ,CAAC,CAChF,EACA,CAACH,CAAM,CACX,EAEMI,GAAA,EAAUvB,EAAAA,YAAAA,CACX,GAAkB,CACf,IAAMsB,EAAUT,EAAS,QACnBW,EAAUR,EAAMI,EAAME,EAAQ,OAAO,EAAIA,EAAQ,QAAUF,EACjED,EAAO,CAAE,MAAOC,EAAM,SAAQ,CAAC,EAC/BN,EAAW,QAAQ,UAAUU,CAAO,CACxC,EACA,CAACL,EAAQH,EAAOF,CAAU,CAC9B,EAEMW,GAAA,EAAQzB,EAAAA,YAAAA,CACT,GAAuC,CACpC,IAAMO,EAAQM,EAAS,QAAQ,MAC/BU,EAAQjB,IAAU,IAAA,GAAYC,EAAQF,EAAWE,EAAOD,CAAK,CAAC,CAClE,EACA,CAACiB,CAAO,CACZ,EAEMG,GAAA,EAAQ1B,EAAAA,YAAAA,KAAwBuB,EAAQX,EAAW,OAAO,EAAG,CAACW,CAAO,CAAC,EAE5E,MAAO,CACH,MAAOd,EAAM,MACb,QAASA,EAAM,QACf,QAAS,EAAEM,EAAQ,SAAWd,EAAAA,UAAAA,CAAWQ,EAAM,MAAOA,EAAM,OAAO,EACnE,MACA,QACA,OACJ,CACJ,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-draft-filters.js","names":[],"sources":["../../src/hooks/use-draft-filters.ts"],"sourcesContent":["import { useCallback, useRef, useState } from \"react\";\n\nimport { deepEqual } from \"./use-deep-memo\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\n/** An edit to the draft: a partial object merged over it, or an updater. */\nexport type DraftFiltersPatch<T> = Partial<T> | ((draft: T) => T);\n\nexport interface UseDraftFiltersOptions<T> {\n /**\n * Called with the applied value on every `apply()` and `clear()` — the place to\n * reset a page number you keep yourself. `usePaginatedQuery` does not need it:\n * it goes back to page 1 on its own when `applied` changes its `queryKey`.\n */\n onApply?: (applied: T) => void;\n /** Equality behind `isDirty` and the stable `applied`. Default: structural. */\n isEqual?: (a: T, b: T) => boolean;\n}\n\nexport interface UseDraftFiltersResult<T> {\n /** What the filter controls edit. Changes on every keystroke. */\n draft: T;\n /**\n * What the query reads. Changes only on `apply()`/`clear()`, and keeps its\n * reference when the value applied is equal to the current one — safe to put\n * in a `queryKey`.\n */\n applied: T;\n /** Whether the draft differs from what is applied — enable the apply button on it. */\n isDirty: boolean;\n /** Edit the draft, merging a partial object or running an updater. Never applies. */\n set: (patch: DraftFiltersPatch<T>) => void;\n /**\n * Publish the draft. With a patch, merge it into the draft **and** publish the\n * result in the same call — \"filter by this code\" from a table row.\n */\n apply: (patch?: DraftFiltersPatch<T>) => void;\n /** Reset the draft and the applied value to the initial one, together. */\n clear: () => void;\n}\n\n/** Both halves, kept in one state so they can never be committed apart. */\ninterface DraftFiltersState<T> {\n draft: T;\n applied: T;\n}\n\n/**\n * Resolve a patch against a draft.\n *\n * @param draft - The current draft.\n * @param patch - A partial object to merge, or an updater.\n * @returns The next draft.\n */\nfunction patchDraft<T>(draft: T, patch: DraftFiltersPatch<T>): T {\n return typeof patch === \"function\" ? patch(draft) : { ...draft, ...patch };\n}\n\n/**\n * Draft vs applied state for a server-side filter: the controls edit a draft\n * freely, and the query only sees it when the user applies (a click, or Enter).\n *\n * A server-side filter cannot react to every keystroke — each character typed in\n * a search box would be a request. Every admin screen then writes the same pair of\n * `useState`s, and gets the same three details wrong:\n *\n * - **Clearing moves both halves.** Resetting only the draft leaves a filtered\n * list under an empty bar; resetting only the applied value leaves the opposite.\n * - **Applying a value that is not in state yet.** \"Filter by this code\" has to\n * write the draft and publish it in one gesture; calling `setDraft(x)` and then\n * publishing `draft` reads the previous value. `apply(patch)` computes the next\n * draft from a ref that every call keeps current, so it never depends on the\n * order React flushes state in.\n * - **Resetting the page.** Filtering while on page 7 of a result that now has two\n * pages shows an empty table. `usePaginatedQuery` handles it by itself when\n * `applied` is in its `queryKey`; a page kept elsewhere resets in `onApply`.\n *\n * There is no effect in here: applying happens inside the event that asked for it,\n * so one click is one request. `applied` keeps its reference while nothing new is\n * applied, so it can sit in a `queryKey` without a phantom refetch.\n *\n * Like `useState`, the initial value is read on the first render only; `clear()`\n * returns to it.\n *\n * @param initial - The empty filter form: what the screen shows and queries first.\n * @param options - `onApply` and `isEqual`.\n * @returns The draft, the applied value and the gestures between them.\n *\n * @example\n * const filters = useDraftFilters({ code: \"\", level: \"all\" });\n * const logs = usePaginatedQuery({\n * queryKey: [\"logs\", filters.applied],\n * queryFn: (params) => api.listLogs({ ...params, ...toQuery(filters.applied) }),\n * });\n * // <Input value={filters.draft.code} onChange={(e) => filters.set({ code: e.target.value })} />\n * // <Button disabled={!filters.isDirty} onClick={() => filters.apply()}>Filtrar</Button>\n */\nexport function useDraftFilters<T extends object>(\n initial: T,\n options: UseDraftFiltersOptions<T> = {},\n): UseDraftFiltersResult<T> {\n const [state, setState] = useState<DraftFiltersState<T>>(() => ({\n draft: initial,\n applied: initial,\n }));\n const initialRef = useRef<T>(state.applied);\n const stateRef = useRef<DraftFiltersState<T>>(state);\n const optionsRef = useLatestRef(options);\n\n const equal = useCallback(\n (a: T, b: T): boolean => (optionsRef.current.isEqual ?? deepEqual)(a, b),\n [optionsRef],\n );\n\n const commit = useCallback((next: DraftFiltersState<T>): void => {\n stateRef.current = next;\n setState(next);\n }, []);\n\n const set = useCallback(\n (patch: DraftFiltersPatch<T>): void => {\n const current = stateRef.current;\n commit({ draft: patchDraft(current.draft, patch), applied: current.applied });\n },\n [commit],\n );\n\n const publish = useCallback(\n (next: T): void => {\n const current = stateRef.current;\n const applied = equal(next, current.applied) ? current.applied : next;\n commit({ draft: next, applied });\n optionsRef.current.onApply?.(applied);\n },\n [commit, equal, optionsRef],\n );\n\n const apply = useCallback(\n (patch?: DraftFiltersPatch<T>): void => {\n const draft = stateRef.current.draft;\n publish(patch === undefined ? draft : patchDraft(draft, patch));\n },\n [publish],\n );\n\n const clear = useCallback((): void => publish(initialRef.current), [publish]);\n\n return {\n draft: state.draft,\n applied: state.applied,\n isDirty: !(options.isEqual ?? deepEqual)(state.draft, state.applied),\n set,\n apply,\n clear,\n };\n}\n"],"mappings":";;;;AAsDA,SAAS,EAAc,GAAU,GAAgC;CAC7D,OAAO,OAAO,KAAU,aAAa,EAAM,CAAK,IAAI;EAAE,GAAG;EAAO,GAAG;CAAM;AAC7E;AAyCA,SAAgB,EACZ,GACA,IAAqC,CAAC,GACd;CACxB,IAAM,CAAC,GAAO,KAAY,SAAsC;EAC5D,OAAO;EACP,SAAS;CACb,EAAE,GACI,IAAa,EAAU,EAAM,OAAO,GACpC,IAAW,EAA6B,CAAK,GAC7C,IAAa,EAAa,CAAO,GAEjC,IAAQ,GACT,GAAM,OAAmB,EAAW,QAAQ,WAAW,EAAA,CAAW,GAAG,CAAC,GACvE,CAAC,CAAU,CACf,GAEM,IAAS,GAAa,MAAqC;EAE7D,AADA,EAAS,UAAU,GACnB,EAAS,CAAI;CACjB,GAAG,CAAC,CAAC,GAEC,IAAM,GACP,MAAsC;EACnC,IAAM,IAAU,EAAS;EACzB,EAAO;GAAE,OAAO,EAAW,EAAQ,OAAO,CAAK;GAAG,SAAS,EAAQ;EAAQ,CAAC;CAChF,GACA,CAAC,CAAM,CACX,GAEM,IAAU,GACX,MAAkB;EACf,IAAM,IAAU,EAAS,SACnB,IAAU,EAAM,GAAM,EAAQ,OAAO,IAAI,EAAQ,UAAU;EAEjE,AADA,EAAO;GAAE,OAAO;GAAM;EAAQ,CAAC,GAC/B,EAAW,QAAQ,UAAU,CAAO;CACxC,GACA;EAAC;EAAQ;EAAO;CAAU,CAC9B,GAEM,IAAQ,GACT,MAAuC;EACpC,IAAM,IAAQ,EAAS,QAAQ;EAC/B,EAAQ,MAAU,KAAA,IAAY,IAAQ,EAAW,GAAO,CAAK,CAAC;CAClE,GACA,CAAC,CAAO,CACZ,GAEM,IAAQ,QAAwB,EAAQ,EAAW,OAAO,GAAG,CAAC,CAAO,CAAC;CAE5E,OAAO;EACH,OAAO,EAAM;EACb,SAAS,EAAM;EACf,SAAS,EAAE,EAAQ,WAAW,EAAA,CAAW,EAAM,OAAO,EAAM,OAAO;EACnE;EACA;EACA;CACJ;AACJ"}
1
+ {"version":3,"file":"use-draft-filters.js","names":["patchDraft","patch","draft","useDraftFilters","state","setState","useState","initial","initialRef","useRef","stateRef","optionsRef","useLatestRef","options","equal","useCallback","deepEqual","a","b","commit","next","set","current","publish","applied","apply","clear"],"sources":["../../src/hooks/use-draft-filters.ts"],"sourcesContent":["import { useCallback, useRef, useState } from \"react\";\n\nimport { deepEqual } from \"./use-deep-memo\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\n/** An edit to the draft: a partial object merged over it, or an updater. */\nexport type DraftFiltersPatch<T> = Partial<T> | ((draft: T) => T);\n\nexport interface UseDraftFiltersOptions<T> {\n /**\n * Called with the applied value on every `apply()` and `clear()` — the place to\n * reset a page number you keep yourself. `usePaginatedQuery` does not need it:\n * it goes back to page 1 on its own when `applied` changes its `queryKey`.\n */\n onApply?: (applied: T) => void;\n /** Equality behind `isDirty` and the stable `applied`. Default: structural. */\n isEqual?: (a: T, b: T) => boolean;\n}\n\nexport interface UseDraftFiltersResult<T> {\n /** What the filter controls edit. Changes on every keystroke. */\n draft: T;\n /**\n * What the query reads. Changes only on `apply()`/`clear()`, and keeps its\n * reference when the value applied is equal to the current one — safe to put\n * in a `queryKey`.\n */\n applied: T;\n /** Whether the draft differs from what is applied — enable the apply button on it. */\n isDirty: boolean;\n /** Edit the draft, merging a partial object or running an updater. Never applies. */\n set: (patch: DraftFiltersPatch<T>) => void;\n /**\n * Publish the draft. With a patch, merge it into the draft **and** publish the\n * result in the same call — \"filter by this code\" from a table row.\n */\n apply: (patch?: DraftFiltersPatch<T>) => void;\n /** Reset the draft and the applied value to the initial one, together. */\n clear: () => void;\n}\n\n/** Both halves, kept in one state so they can never be committed apart. */\ninterface DraftFiltersState<T> {\n draft: T;\n applied: T;\n}\n\n/**\n * Resolve a patch against a draft.\n *\n * @param draft - The current draft.\n * @param patch - A partial object to merge, or an updater.\n * @returns The next draft.\n */\nfunction patchDraft<T>(draft: T, patch: DraftFiltersPatch<T>): T {\n return typeof patch === \"function\" ? patch(draft) : { ...draft, ...patch };\n}\n\n/**\n * Draft vs applied state for a server-side filter: the controls edit a draft\n * freely, and the query only sees it when the user applies (a click, or Enter).\n *\n * A server-side filter cannot react to every keystroke — each character typed in\n * a search box would be a request. Every admin screen then writes the same pair of\n * `useState`s, and gets the same three details wrong:\n *\n * - **Clearing moves both halves.** Resetting only the draft leaves a filtered\n * list under an empty bar; resetting only the applied value leaves the opposite.\n * - **Applying a value that is not in state yet.** \"Filter by this code\" has to\n * write the draft and publish it in one gesture; calling `setDraft(x)` and then\n * publishing `draft` reads the previous value. `apply(patch)` computes the next\n * draft from a ref that every call keeps current, so it never depends on the\n * order React flushes state in.\n * - **Resetting the page.** Filtering while on page 7 of a result that now has two\n * pages shows an empty table. `usePaginatedQuery` handles it by itself when\n * `applied` is in its `queryKey`; a page kept elsewhere resets in `onApply`.\n *\n * There is no effect in here: applying happens inside the event that asked for it,\n * so one click is one request. `applied` keeps its reference while nothing new is\n * applied, so it can sit in a `queryKey` without a phantom refetch.\n *\n * Like `useState`, the initial value is read on the first render only; `clear()`\n * returns to it.\n *\n * @param initial - The empty filter form: what the screen shows and queries first.\n * @param options - `onApply` and `isEqual`.\n * @returns The draft, the applied value and the gestures between them.\n *\n * @example\n * const filters = useDraftFilters({ code: \"\", level: \"all\" });\n * const logs = usePaginatedQuery({\n * queryKey: [\"logs\", filters.applied],\n * queryFn: (params) => api.listLogs({ ...params, ...toQuery(filters.applied) }),\n * });\n * // <Input value={filters.draft.code} onChange={(e) => filters.set({ code: e.target.value })} />\n * // <Button disabled={!filters.isDirty} onClick={() => filters.apply()}>Filtrar</Button>\n */\nexport function useDraftFilters<T extends object>(\n initial: T,\n options: UseDraftFiltersOptions<T> = {},\n): UseDraftFiltersResult<T> {\n const [state, setState] = useState<DraftFiltersState<T>>(() => ({\n draft: initial,\n applied: initial,\n }));\n const initialRef = useRef<T>(state.applied);\n const stateRef = useRef<DraftFiltersState<T>>(state);\n const optionsRef = useLatestRef(options);\n\n const equal = useCallback(\n (a: T, b: T): boolean => (optionsRef.current.isEqual ?? deepEqual)(a, b),\n [optionsRef],\n );\n\n const commit = useCallback((next: DraftFiltersState<T>): void => {\n stateRef.current = next;\n setState(next);\n }, []);\n\n const set = useCallback(\n (patch: DraftFiltersPatch<T>): void => {\n const current = stateRef.current;\n commit({ draft: patchDraft(current.draft, patch), applied: current.applied });\n },\n [commit],\n );\n\n const publish = useCallback(\n (next: T): void => {\n const current = stateRef.current;\n const applied = equal(next, current.applied) ? current.applied : next;\n commit({ draft: next, applied });\n optionsRef.current.onApply?.(applied);\n },\n [commit, equal, optionsRef],\n );\n\n const apply = useCallback(\n (patch?: DraftFiltersPatch<T>): void => {\n const draft = stateRef.current.draft;\n publish(patch === undefined ? draft : patchDraft(draft, patch));\n },\n [publish],\n );\n\n const clear = useCallback((): void => publish(initialRef.current), [publish]);\n\n return {\n draft: state.draft,\n applied: state.applied,\n isDirty: !(options.isEqual ?? deepEqual)(state.draft, state.applied),\n set,\n apply,\n clear,\n };\n}\n"],"mappings":";;;;AAsDA,SAASA,EAAc,GAAU,GAAgC;CAC7D,OAAO,OAAOC,KAAU,aAAaA,EAAMC,CAAK,IAAI;EAAE,GAAGA;EAAO,GAAGD;CAAM;AAC7E;AAyCA,SAAgBE,EACZ,GACA,IAAqC,CAAC,GACd;CACxB,IAAM,CAACC,GAAOC,KAAYC,SAAsC;EAC5D,OAAOC;EACP,SAASA;CACb,EAAE,GACIC,IAAaC,EAAUL,EAAM,OAAO,GACpCM,IAAWD,EAA6BL,CAAK,GAC7CO,IAAaC,EAAaC,CAAO,GAEjCC,IAAQC,GACT,GAAM,OAAmBJ,EAAW,QAAQ,WAAWK,EAAA,CAAWC,GAAGC,CAAC,GACvE,CAACP,CAAU,CACf,GAEMQ,IAASJ,GAAa,MAAqC;EAE7D,AADA,EAAS,UAAUK,GACnBf,EAASe,CAAI;CACjB,GAAG,CAAC,CAAC,GAECC,IAAMN,GACP,MAAsC;EACnC,IAAMO,IAAUZ,EAAS;EACzB,EAAO;GAAE,OAAOV,EAAWsB,EAAQ,OAAOrB,CAAK;GAAG,SAASqB,EAAQ;EAAQ,CAAC;CAChF,GACA,CAACH,CAAM,CACX,GAEMI,IAAUR,GACX,MAAkB;EACf,IAAMO,IAAUZ,EAAS,SACnBc,IAAUV,EAAMM,GAAME,EAAQ,OAAO,IAAIA,EAAQ,UAAUF;EAEjE,AADAD,EAAO;GAAE,OAAOC;GAAM;EAAQ,CAAC,GAC/BT,EAAW,QAAQ,UAAUa,CAAO;CACxC,GACA;EAACL;EAAQL;EAAOH;CAAU,CAC9B,GAEMc,IAAQV,GACT,MAAuC;EACpC,IAAMb,IAAQQ,EAAS,QAAQ;EAC/B,EAAQT,MAAU,KAAA,IAAYC,IAAQF,EAAWE,GAAOD,CAAK,CAAC;CAClE,GACA,CAACsB,CAAO,CACZ,GAEMG,IAAQX,QAAwBQ,EAAQf,EAAW,OAAO,GAAG,CAACe,CAAO,CAAC;CAE5E,OAAO;EACH,OAAOnB,EAAM;EACb,SAASA,EAAM;EACf,SAAS,EAAES,EAAQ,WAAWG,EAAA,CAAWZ,EAAM,OAAOA,EAAM,OAAO;EACnE;EACA;EACA;CACJ;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-event-listener.cjs","names":[],"sources":["../../src/hooks/use-event-listener.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\ntype AnyEventTarget = EventTarget | { current: EventTarget | null } | null | undefined;\n\n/**\n * Subscribe to a DOM event with React-friendly semantics.\n *\n * - Handler is stored in a ref so callers can pass inline functions without\n * resubscribing on every render.\n * - `target` defaults to `window`. Accepts a raw `EventTarget` (window, document,\n * element) OR a ref pointing at one.\n * - Returns nothing — cleanup is automatic on unmount or when `eventName`/`target` change.\n *\n * @tempest-limits param-count — deliberately the same positional shape as\n * `addEventListener(type, listener, options)`, with the target inserted where React\n * needs it. A hook that mirrors a DOM API is read by everyone who already knows the\n * DOM API; a bespoke options bag would make the familiar call unfamiliar.\n */\nexport function useEventListener<K extends keyof WindowEventMap>(\n eventName: K,\n handler: (event: WindowEventMap[K]) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void;\nexport function useEventListener<K extends keyof DocumentEventMap>(\n eventName: K,\n handler: (event: DocumentEventMap[K]) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void;\nexport function useEventListener<K extends keyof HTMLElementEventMap>(\n eventName: K,\n handler: (event: HTMLElementEventMap[K]) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void;\nexport function useEventListener(\n eventName: string,\n handler: (event: Event) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void {\n const handlerRef = useLatestRef(handler);\n\n useEffect(() => {\n const resolvedTarget: EventTarget | null =\n target === undefined\n ? typeof window === \"undefined\"\n ? null\n : window\n : \"current\" in (target as { current: unknown })\n ? ((target as { current: EventTarget | null }).current ?? null)\n : (target as EventTarget | null);\n\n if (!resolvedTarget?.addEventListener) return;\n\n const listener: EventListener = (event) => handlerRef.current(event);\n resolvedTarget.addEventListener(eventName, listener, options);\n return () => resolvedTarget.removeEventListener(eventName, listener, options);\n }, [eventName, target, options, handlerRef]);\n}\n"],"mappings":"+DAqCA,SAAgB,EACZ,EACA,EACA,EACA,EACI,CACJ,IAAM,EAAa,EAAA,aAAa,CAAO,GAEvC,EAAA,EAAA,UAAA,KAAgB,CACZ,IAAM,EACF,IAAW,IAAA,GACL,OAAO,OAAW,IACd,KACA,OACJ,YAAc,EACV,EAA2C,SAAW,KACvD,EAEb,GAAI,CAAC,GAAgB,iBAAkB,OAEvC,IAAM,EAA2B,GAAU,EAAW,QAAQ,CAAK,EAEnE,OADA,EAAe,iBAAiB,EAAW,EAAU,CAAO,MAC/C,EAAe,oBAAoB,EAAW,EAAU,CAAO,CAChF,EAAG,CAAC,EAAW,EAAQ,EAAS,CAAU,CAAC,CAC/C"}
1
+ {"version":3,"file":"use-event-listener.cjs","names":["useLatestRef","require_use_latest_ref","react","useEventListener","handlerRef","handler","resolvedTarget","target","listener","event","eventName","options"],"sources":["../../src/hooks/use-event-listener.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\ntype AnyEventTarget = EventTarget | { current: EventTarget | null } | null | undefined;\n\n/**\n * Subscribe to a DOM event with React-friendly semantics.\n *\n * - Handler is stored in a ref so callers can pass inline functions without\n * resubscribing on every render.\n * - `target` defaults to `window`. Accepts a raw `EventTarget` (window, document,\n * element) OR a ref pointing at one.\n * - Returns nothing — cleanup is automatic on unmount or when `eventName`/`target` change.\n *\n * @tempest-limits param-count — deliberately the same positional shape as\n * `addEventListener(type, listener, options)`, with the target inserted where React\n * needs it. A hook that mirrors a DOM API is read by everyone who already knows the\n * DOM API; a bespoke options bag would make the familiar call unfamiliar.\n */\nexport function useEventListener<K extends keyof WindowEventMap>(\n eventName: K,\n handler: (event: WindowEventMap[K]) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void;\nexport function useEventListener<K extends keyof DocumentEventMap>(\n eventName: K,\n handler: (event: DocumentEventMap[K]) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void;\nexport function useEventListener<K extends keyof HTMLElementEventMap>(\n eventName: K,\n handler: (event: HTMLElementEventMap[K]) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void;\nexport function useEventListener(\n eventName: string,\n handler: (event: Event) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void {\n const handlerRef = useLatestRef(handler);\n\n useEffect(() => {\n const resolvedTarget: EventTarget | null =\n target === undefined\n ? typeof window === \"undefined\"\n ? null\n : window\n : \"current\" in (target as { current: unknown })\n ? ((target as { current: EventTarget | null }).current ?? null)\n : (target as EventTarget | null);\n\n if (!resolvedTarget?.addEventListener) return;\n\n const listener: EventListener = (event) => handlerRef.current(event);\n resolvedTarget.addEventListener(eventName, listener, options);\n return () => resolvedTarget.removeEventListener(eventName, listener, options);\n }, [eventName, target, options, handlerRef]);\n}\n"],"mappings":"A,+DAqCA,SAAgBG,EACZ,EACA,EACA,EACA,EACI,CACJ,IAAMC,EAAaJ,EAAAA,aAAaK,CAAO,GAEvC,EAAAH,EAAA,UAAA,KAAgB,CACZ,IAAMI,EACFC,IAAW,IAAA,GACL,OAAO,OAAW,IACd,KACA,OACJ,YAAcA,EACVA,EAA2C,SAAW,KACvDA,EAEb,GAAI,CAACD,GAAgB,iBAAkB,OAEvC,IAAME,EAA2B,GAAUJ,EAAW,QAAQK,CAAK,EAEnE,OADAH,EAAe,iBAAiBI,EAAWF,EAAUG,CAAO,MAC/CL,EAAe,oBAAoBI,EAAWF,EAAUG,CAAO,CAChF,EAAG,CAACD,EAAWH,EAAQI,EAASP,CAAU,CAAC,CAC/C,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-event-listener.js","names":[],"sources":["../../src/hooks/use-event-listener.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\ntype AnyEventTarget = EventTarget | { current: EventTarget | null } | null | undefined;\n\n/**\n * Subscribe to a DOM event with React-friendly semantics.\n *\n * - Handler is stored in a ref so callers can pass inline functions without\n * resubscribing on every render.\n * - `target` defaults to `window`. Accepts a raw `EventTarget` (window, document,\n * element) OR a ref pointing at one.\n * - Returns nothing — cleanup is automatic on unmount or when `eventName`/`target` change.\n *\n * @tempest-limits param-count — deliberately the same positional shape as\n * `addEventListener(type, listener, options)`, with the target inserted where React\n * needs it. A hook that mirrors a DOM API is read by everyone who already knows the\n * DOM API; a bespoke options bag would make the familiar call unfamiliar.\n */\nexport function useEventListener<K extends keyof WindowEventMap>(\n eventName: K,\n handler: (event: WindowEventMap[K]) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void;\nexport function useEventListener<K extends keyof DocumentEventMap>(\n eventName: K,\n handler: (event: DocumentEventMap[K]) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void;\nexport function useEventListener<K extends keyof HTMLElementEventMap>(\n eventName: K,\n handler: (event: HTMLElementEventMap[K]) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void;\nexport function useEventListener(\n eventName: string,\n handler: (event: Event) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void {\n const handlerRef = useLatestRef(handler);\n\n useEffect(() => {\n const resolvedTarget: EventTarget | null =\n target === undefined\n ? typeof window === \"undefined\"\n ? null\n : window\n : \"current\" in (target as { current: unknown })\n ? ((target as { current: EventTarget | null }).current ?? null)\n : (target as EventTarget | null);\n\n if (!resolvedTarget?.addEventListener) return;\n\n const listener: EventListener = (event) => handlerRef.current(event);\n resolvedTarget.addEventListener(eventName, listener, options);\n return () => resolvedTarget.removeEventListener(eventName, listener, options);\n }, [eventName, target, options, handlerRef]);\n}\n"],"mappings":";;;AAqCA,SAAgB,EACZ,GACA,GACA,GACA,GACI;CACJ,IAAM,IAAa,EAAa,CAAO;CAEvC,QAAgB;EACZ,IAAM,IACF,MAAW,KAAA,IACL,OAAO,SAAW,MACd,OACA,SACJ,aAAc,IACV,EAA2C,WAAW,OACvD;EAEb,IAAI,CAAC,GAAgB,kBAAkB;EAEvC,IAAM,KAA2B,MAAU,EAAW,QAAQ,CAAK;EAEnE,OADA,EAAe,iBAAiB,GAAW,GAAU,CAAO,SAC/C,EAAe,oBAAoB,GAAW,GAAU,CAAO;CAChF,GAAG;EAAC;EAAW;EAAQ;EAAS;CAAU,CAAC;AAC/C"}
1
+ {"version":3,"file":"use-event-listener.js","names":["useEventListener","handlerRef","useLatestRef","handler","resolvedTarget","target","listener","event","eventName","options"],"sources":["../../src/hooks/use-event-listener.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\ntype AnyEventTarget = EventTarget | { current: EventTarget | null } | null | undefined;\n\n/**\n * Subscribe to a DOM event with React-friendly semantics.\n *\n * - Handler is stored in a ref so callers can pass inline functions without\n * resubscribing on every render.\n * - `target` defaults to `window`. Accepts a raw `EventTarget` (window, document,\n * element) OR a ref pointing at one.\n * - Returns nothing — cleanup is automatic on unmount or when `eventName`/`target` change.\n *\n * @tempest-limits param-count — deliberately the same positional shape as\n * `addEventListener(type, listener, options)`, with the target inserted where React\n * needs it. A hook that mirrors a DOM API is read by everyone who already knows the\n * DOM API; a bespoke options bag would make the familiar call unfamiliar.\n */\nexport function useEventListener<K extends keyof WindowEventMap>(\n eventName: K,\n handler: (event: WindowEventMap[K]) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void;\nexport function useEventListener<K extends keyof DocumentEventMap>(\n eventName: K,\n handler: (event: DocumentEventMap[K]) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void;\nexport function useEventListener<K extends keyof HTMLElementEventMap>(\n eventName: K,\n handler: (event: HTMLElementEventMap[K]) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void;\nexport function useEventListener(\n eventName: string,\n handler: (event: Event) => void,\n target?: AnyEventTarget,\n options?: AddEventListenerOptions | boolean,\n): void {\n const handlerRef = useLatestRef(handler);\n\n useEffect(() => {\n const resolvedTarget: EventTarget | null =\n target === undefined\n ? typeof window === \"undefined\"\n ? null\n : window\n : \"current\" in (target as { current: unknown })\n ? ((target as { current: EventTarget | null }).current ?? null)\n : (target as EventTarget | null);\n\n if (!resolvedTarget?.addEventListener) return;\n\n const listener: EventListener = (event) => handlerRef.current(event);\n resolvedTarget.addEventListener(eventName, listener, options);\n return () => resolvedTarget.removeEventListener(eventName, listener, options);\n }, [eventName, target, options, handlerRef]);\n}\n"],"mappings":";;;AAqCA,SAAgBA,EACZ,GACA,GACA,GACA,GACI;CACJ,IAAMC,IAAaC,EAAaC,CAAO;CAEvC,QAAgB;EACZ,IAAMC,IACFC,MAAW,KAAA,IACL,OAAO,SAAW,MACd,OACA,SACJ,aAAcA,IACVA,EAA2C,WAAW,OACvDA;EAEb,IAAI,CAACD,GAAgB,kBAAkB;EAEvC,IAAME,KAA2B,MAAUL,EAAW,QAAQM,CAAK;EAEnE,OADAH,EAAe,iBAAiBI,GAAWF,GAAUG,CAAO,SAC/CL,EAAe,oBAAoBI,GAAWF,GAAUG,CAAO;CAChF,GAAG;EAACD;EAAWH;EAAQI;EAASR;CAAU,CAAC;AAC/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-favicon.cjs","names":[],"sources":["../../src/hooks/use-favicon.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Swap the document favicon by updating the `<link rel=\"icon\">` href.\n * Creates the link element when it is missing. SSR-safe — no-op when\n * `document` is unavailable.\n *\n * @param href - the favicon URL to apply.\n */\nexport function useFavicon(href: string): void {\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n let link = document.querySelector<HTMLLinkElement>('link[rel=\"icon\"]');\n if (!link) {\n link = document.createElement(\"link\");\n link.rel = \"icon\";\n document.head.appendChild(link);\n }\n link.href = href;\n }, [href]);\n}\n"],"mappings":"uBASA,SAAgB,EAAW,EAAoB,EAC3C,EAAA,EAAA,UAAA,KAAgB,CACZ,GAAI,OAAO,SAAa,IAAa,OACrC,IAAI,EAAO,SAAS,cAA+B,kBAAkB,EAChE,IACD,EAAO,SAAS,cAAc,MAAM,EACpC,EAAK,IAAM,OACX,SAAS,KAAK,YAAY,CAAI,GAElC,EAAK,KAAO,CAChB,EAAG,CAAC,CAAI,CAAC,CACb"}
1
+ {"version":3,"file":"use-favicon.cjs","names":["react","useFavicon","link","href"],"sources":["../../src/hooks/use-favicon.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Swap the document favicon by updating the `<link rel=\"icon\">` href.\n * Creates the link element when it is missing. SSR-safe — no-op when\n * `document` is unavailable.\n *\n * @param href - the favicon URL to apply.\n */\nexport function useFavicon(href: string): void {\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n let link = document.querySelector<HTMLLinkElement>('link[rel=\"icon\"]');\n if (!link) {\n link = document.createElement(\"link\");\n link.rel = \"icon\";\n document.head.appendChild(link);\n }\n link.href = href;\n }, [href]);\n}\n"],"mappings":"A,uBASA,SAAgBC,EAAW,EAAoB,EAC3C,EAAAD,EAAA,UAAA,KAAgB,CACZ,GAAI,OAAO,SAAa,IAAa,OACrC,IAAIE,EAAO,SAAS,cAA+B,kBAAkB,EAChEA,IACD,EAAO,SAAS,cAAc,MAAM,EACpC,EAAK,IAAM,OACX,SAAS,KAAK,YAAYA,CAAI,GAElC,EAAK,KAAOC,CAChB,EAAG,CAACA,CAAI,CAAC,CACb,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-favicon.js","names":[],"sources":["../../src/hooks/use-favicon.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Swap the document favicon by updating the `<link rel=\"icon\">` href.\n * Creates the link element when it is missing. SSR-safe — no-op when\n * `document` is unavailable.\n *\n * @param href - the favicon URL to apply.\n */\nexport function useFavicon(href: string): void {\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n let link = document.querySelector<HTMLLinkElement>('link[rel=\"icon\"]');\n if (!link) {\n link = document.createElement(\"link\");\n link.rel = \"icon\";\n document.head.appendChild(link);\n }\n link.href = href;\n }, [href]);\n}\n"],"mappings":";;AASA,SAAgB,EAAW,GAAoB;CAC3C,QAAgB;EACZ,IAAI,OAAO,WAAa,KAAa;EACrC,IAAI,IAAO,SAAS,cAA+B,oBAAkB;EAMrE,AALK,MACD,IAAO,SAAS,cAAc,MAAM,GACpC,EAAK,MAAM,QACX,SAAS,KAAK,YAAY,CAAI,IAElC,EAAK,OAAO;CAChB,GAAG,CAAC,CAAI,CAAC;AACb"}
1
+ {"version":3,"file":"use-favicon.js","names":["useFavicon","link","href"],"sources":["../../src/hooks/use-favicon.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Swap the document favicon by updating the `<link rel=\"icon\">` href.\n * Creates the link element when it is missing. SSR-safe — no-op when\n * `document` is unavailable.\n *\n * @param href - the favicon URL to apply.\n */\nexport function useFavicon(href: string): void {\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n let link = document.querySelector<HTMLLinkElement>('link[rel=\"icon\"]');\n if (!link) {\n link = document.createElement(\"link\");\n link.rel = \"icon\";\n document.head.appendChild(link);\n }\n link.href = href;\n }, [href]);\n}\n"],"mappings":";;AASA,SAAgBA,EAAW,GAAoB;CAC3C,QAAgB;EACZ,IAAI,OAAO,WAAa,KAAa;EACrC,IAAIC,IAAO,SAAS,cAA+B,oBAAkB;EAMrE,AALKA,MACD,IAAO,SAAS,cAAc,MAAM,GACpC,EAAK,MAAM,QACX,SAAS,KAAK,YAAYA,CAAI,IAElC,EAAK,OAAOC;CAChB,GAAG,CAACA,CAAI,CAAC;AACb"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-focus-trap.cjs","names":[],"sources":["../../src/hooks/use-focus-trap.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\nimport { tabRegion, tabSequence } from \"./tab-sequence\";\n\nexport { FOCUSABLE_SELECTOR } from \"./tab-sequence\";\n\n/** One armed trap; the identity is what the stack compares. */\ninterface TrapEntry {\n container: HTMLElement;\n}\n\nconst stack: TrapEntry[] = [];\n\n/**\n * Trap keyboard focus inside `containerRef` while `active` is true.\n *\n * - **On activation** focus moves to the first tab stop, or to the container\n * itself when it has none (give it `tabIndex={-1}`). Content that already put\n * focus inside — an `autoFocus` input — is left where it is.\n * - **`Tab` / `Shift+Tab`** wrap between the first and the last stop, and pull\n * focus back in when it sits outside.\n * - **On release** focus returns to the element that held it when the trap\n * armed. That element is read during the render that arms the trap, before\n * React commits: an `autoFocus` child takes focus in the commit, ahead of any\n * effect, and reading it there would \"restore\" to the child that is about to\n * unmount — which dropped focus on `body` in `Command`.\n *\n * **Portalled panels stay reachable.** A `Popover` or `HoverCard` opened from\n * inside the container renders at the end of `body`, outside it. Those panels\n * register themselves (see `usePortalTabOrder`), and the trap treats them as\n * part of the container, spliced right after their trigger. A `Tab` another\n * layer already consumed is not moved again, unless it moved focus out of the\n * container and its panels — the portal bridge leaving the last panel stop for\n * whatever follows the trap in the page.\n *\n * **Traps stack.** Only the most recent active trap handles `Tab`, so a modal\n * opened over another owns the keyboard until it closes, and then hands focus\n * back to the element it was opened from, inside the one below.\n *\n * The listener is on `document` in the bubble phase, after React's own\n * handlers: a menu that closes on `Tab` and returns focus to its trigger has\n * already done so when the trap looks at where focus is.\n *\n * @param containerRef - The element focus is confined to.\n * @param active - Whether the trap is armed.\n * @returns Nothing.\n */\nexport function useFocusTrap(containerRef: RefObject<HTMLElement | null>, active: boolean): void {\n const [armed, setArmed] = useState(false);\n const [opener, setOpener] = useState<HTMLElement | null>(null);\n if (active !== armed) {\n setArmed(active);\n if (active && typeof document !== \"undefined\") {\n setOpener(document.activeElement as HTMLElement | null);\n }\n }\n\n useEffect(() => {\n if (!active) return;\n const container = containerRef.current;\n if (!container) return;\n\n const entry: TrapEntry = { container };\n stack.push(entry);\n\n if (!container.contains(document.activeElement)) {\n (tabSequence(container)[0] ?? container).focus();\n }\n\n const handleKeydown = (event: KeyboardEvent): void => {\n if (event.key !== \"Tab\" || stack.at(-1) !== entry) return;\n const sequence = tabSequence(container);\n const first = sequence[0];\n const last = sequence.at(-1);\n const current = document.activeElement as HTMLElement | null;\n const inside =\n current !== null && tabRegion(container).some((root) => root.contains(current));\n\n if (event.defaultPrevented) {\n if (!inside) ((event.shiftKey ? last : first) ?? container).focus();\n return;\n }\n if (!first || !last) {\n event.preventDefault();\n container.focus();\n return;\n }\n const atEnd = event.shiftKey\n ? current === first || current === container\n : current === last;\n if (!inside || atEnd) {\n event.preventDefault();\n (event.shiftKey ? last : first).focus();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeydown);\n return () => {\n document.removeEventListener(\"keydown\", handleKeydown);\n stack.splice(stack.indexOf(entry), 1);\n if (opener?.isConnected) opener.focus();\n };\n }, [containerRef, active, opener]);\n}\n"],"mappings":"6DAWA,IAAM,EAAqB,CAAC,EAoC5B,SAAgB,EAAa,EAA6C,EAAuB,CAC7F,GAAM,CAAC,EAAO,IAAA,EAAY,EAAA,SAAA,CAAS,EAAK,EAClC,CAAC,EAAQ,IAAA,EAAa,EAAA,SAAA,CAA6B,IAAI,EACzD,IAAW,IACX,EAAS,CAAM,EACX,GAAU,OAAO,SAAa,KAC9B,EAAU,SAAS,aAAmC,IAI9D,EAAA,EAAA,UAAA,KAAgB,CACZ,GAAI,CAAC,EAAQ,OACb,IAAM,EAAY,EAAa,QAC/B,GAAI,CAAC,EAAW,OAEhB,IAAM,EAAmB,CAAE,WAAU,EACrC,EAAM,KAAK,CAAK,EAEX,EAAU,SAAS,SAAS,aAAa,IACzC,EAAA,YAAY,CAAS,CAAC,CAAC,IAAM,EAAA,CAAW,MAAM,EAGnD,IAAM,EAAiB,GAA+B,CAClD,GAAI,EAAM,MAAQ,OAAS,EAAM,GAAG,EAAE,IAAM,EAAO,OACnD,IAAM,EAAW,EAAA,YAAY,CAAS,EAChC,EAAQ,EAAS,GACjB,EAAO,EAAS,GAAG,EAAE,EACrB,EAAU,SAAS,cACnB,EACF,IAAY,MAAQ,EAAA,UAAU,CAAS,CAAC,CAAC,KAAM,GAAS,EAAK,SAAS,CAAO,CAAC,EAElF,GAAI,EAAM,iBAAkB,CACnB,KAAU,EAAM,SAAW,EAAO,IAAU,EAAA,CAAW,MAAM,EAClE,MACJ,CACA,GAAI,CAAC,GAAS,CAAC,EAAM,CACjB,EAAM,eAAe,EACrB,EAAU,MAAM,EAChB,MACJ,CACA,IAAM,EAAQ,EAAM,SACd,IAAY,GAAS,IAAY,EACjC,IAAY,GACd,CAAC,GAAU,KACX,EAAM,eAAe,GACpB,EAAM,SAAW,EAAO,EAAA,CAAO,MAAM,EAE9C,EAGA,OADA,SAAS,iBAAiB,UAAW,CAAa,MACrC,CACT,SAAS,oBAAoB,UAAW,CAAa,EACrD,EAAM,OAAO,EAAM,QAAQ,CAAK,EAAG,CAAC,EAChC,GAAQ,aAAa,EAAO,MAAM,CAC1C,CACJ,EAAG,CAAC,EAAc,EAAQ,CAAM,CAAC,CACrC"}
1
+ {"version":3,"file":"use-focus-trap.cjs","names":["useState","tabSequence","tabRegion","require_tab_sequence","react","stack","useFocusTrap","armed","setArmed","opener","setOpener","active","container","containerRef","entry","handleKeydown","event","sequence","first","last","current","inside","root","atEnd"],"sources":["../../src/hooks/use-focus-trap.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\nimport { tabRegion, tabSequence } from \"./tab-sequence\";\n\nexport { FOCUSABLE_SELECTOR } from \"./tab-sequence\";\n\n/** One armed trap; the identity is what the stack compares. */\ninterface TrapEntry {\n container: HTMLElement;\n}\n\nconst stack: TrapEntry[] = [];\n\n/**\n * Trap keyboard focus inside `containerRef` while `active` is true.\n *\n * - **On activation** focus moves to the first tab stop, or to the container\n * itself when it has none (give it `tabIndex={-1}`). Content that already put\n * focus inside — an `autoFocus` input — is left where it is.\n * - **`Tab` / `Shift+Tab`** wrap between the first and the last stop, and pull\n * focus back in when it sits outside.\n * - **On release** focus returns to the element that held it when the trap\n * armed. That element is read during the render that arms the trap, before\n * React commits: an `autoFocus` child takes focus in the commit, ahead of any\n * effect, and reading it there would \"restore\" to the child that is about to\n * unmount — which dropped focus on `body` in `Command`.\n *\n * **Portalled panels stay reachable.** A `Popover` or `HoverCard` opened from\n * inside the container renders at the end of `body`, outside it. Those panels\n * register themselves (see `usePortalTabOrder`), and the trap treats them as\n * part of the container, spliced right after their trigger. A `Tab` another\n * layer already consumed is not moved again, unless it moved focus out of the\n * container and its panels — the portal bridge leaving the last panel stop for\n * whatever follows the trap in the page.\n *\n * **Traps stack.** Only the most recent active trap handles `Tab`, so a modal\n * opened over another owns the keyboard until it closes, and then hands focus\n * back to the element it was opened from, inside the one below.\n *\n * The listener is on `document` in the bubble phase, after React's own\n * handlers: a menu that closes on `Tab` and returns focus to its trigger has\n * already done so when the trap looks at where focus is.\n *\n * @param containerRef - The element focus is confined to.\n * @param active - Whether the trap is armed.\n * @returns Nothing.\n */\nexport function useFocusTrap(containerRef: RefObject<HTMLElement | null>, active: boolean): void {\n const [armed, setArmed] = useState(false);\n const [opener, setOpener] = useState<HTMLElement | null>(null);\n if (active !== armed) {\n setArmed(active);\n if (active && typeof document !== \"undefined\") {\n setOpener(document.activeElement as HTMLElement | null);\n }\n }\n\n useEffect(() => {\n if (!active) return;\n const container = containerRef.current;\n if (!container) return;\n\n const entry: TrapEntry = { container };\n stack.push(entry);\n\n if (!container.contains(document.activeElement)) {\n (tabSequence(container)[0] ?? container).focus();\n }\n\n const handleKeydown = (event: KeyboardEvent): void => {\n if (event.key !== \"Tab\" || stack.at(-1) !== entry) return;\n const sequence = tabSequence(container);\n const first = sequence[0];\n const last = sequence.at(-1);\n const current = document.activeElement as HTMLElement | null;\n const inside =\n current !== null && tabRegion(container).some((root) => root.contains(current));\n\n if (event.defaultPrevented) {\n if (!inside) ((event.shiftKey ? last : first) ?? container).focus();\n return;\n }\n if (!first || !last) {\n event.preventDefault();\n container.focus();\n return;\n }\n const atEnd = event.shiftKey\n ? current === first || current === container\n : current === last;\n if (!inside || atEnd) {\n event.preventDefault();\n (event.shiftKey ? last : first).focus();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeydown);\n return () => {\n document.removeEventListener(\"keydown\", handleKeydown);\n stack.splice(stack.indexOf(entry), 1);\n if (opener?.isConnected) opener.focus();\n };\n }, [containerRef, active, opener]);\n}\n"],"mappings":"A,6DAWA,IAAMK,EAAqB,CAAC,EAoC5B,SAAgBC,EAAa,EAA6C,EAAuB,CAC7F,GAAM,CAACC,EAAOC,IAAA,EAAYR,EAAAA,SAAAA,CAAS,EAAK,EAClC,CAACS,EAAQC,IAAA,EAAaV,EAAAA,SAAAA,CAA6B,IAAI,EACzDW,IAAWJ,IACXC,EAASG,CAAM,EACXA,GAAU,OAAO,SAAa,KAC9BD,EAAU,SAAS,aAAmC,IAI9D,EAAAN,EAAA,UAAA,KAAgB,CACZ,GAAI,CAACO,EAAQ,OACb,IAAMC,EAAYC,EAAa,QAC/B,GAAI,CAACD,EAAW,OAEhB,IAAME,EAAmB,CAAE,WAAU,EACrCT,EAAM,KAAKS,CAAK,EAEXF,EAAU,SAAS,SAAS,aAAa,IACzCX,EAAAA,YAAYW,CAAS,CAAC,CAAC,IAAMA,EAAA,CAAW,MAAM,EAGnD,IAAMG,EAAiB,GAA+B,CAClD,GAAIC,EAAM,MAAQ,OAASX,EAAM,GAAG,EAAE,IAAMS,EAAO,OACnD,IAAMG,EAAWhB,EAAAA,YAAYW,CAAS,EAChCM,EAAQD,EAAS,GACjBE,EAAOF,EAAS,GAAG,EAAE,EACrBG,EAAU,SAAS,cACnBC,EACFD,IAAY,MAAQlB,EAAAA,UAAUU,CAAS,CAAC,CAAC,KAAM,GAASU,EAAK,SAASF,CAAO,CAAC,EAElF,GAAIJ,EAAM,iBAAkB,CACnBK,KAAUL,EAAM,SAAWG,EAAOD,IAAUN,EAAA,CAAW,MAAM,EAClE,MACJ,CACA,GAAI,CAACM,GAAS,CAACC,EAAM,CACjBH,EAAM,eAAe,EACrBJ,EAAU,MAAM,EAChB,MACJ,CACA,IAAMW,EAAQP,EAAM,SACdI,IAAYF,GAASE,IAAYR,EACjCQ,IAAYD,GACd,CAACE,GAAUE,KACXP,EAAM,eAAe,GACpBA,EAAM,SAAWG,EAAOD,EAAA,CAAO,MAAM,EAE9C,EAGA,OADA,SAAS,iBAAiB,UAAWH,CAAa,MACrC,CACT,SAAS,oBAAoB,UAAWA,CAAa,EACrDV,EAAM,OAAOA,EAAM,QAAQS,CAAK,EAAG,CAAC,EAChCL,GAAQ,aAAaA,EAAO,MAAM,CAC1C,CACJ,EAAG,CAACI,EAAcF,EAAQF,CAAM,CAAC,CACrC,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-focus-trap.js","names":[],"sources":["../../src/hooks/use-focus-trap.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\nimport { tabRegion, tabSequence } from \"./tab-sequence\";\n\nexport { FOCUSABLE_SELECTOR } from \"./tab-sequence\";\n\n/** One armed trap; the identity is what the stack compares. */\ninterface TrapEntry {\n container: HTMLElement;\n}\n\nconst stack: TrapEntry[] = [];\n\n/**\n * Trap keyboard focus inside `containerRef` while `active` is true.\n *\n * - **On activation** focus moves to the first tab stop, or to the container\n * itself when it has none (give it `tabIndex={-1}`). Content that already put\n * focus inside — an `autoFocus` input — is left where it is.\n * - **`Tab` / `Shift+Tab`** wrap between the first and the last stop, and pull\n * focus back in when it sits outside.\n * - **On release** focus returns to the element that held it when the trap\n * armed. That element is read during the render that arms the trap, before\n * React commits: an `autoFocus` child takes focus in the commit, ahead of any\n * effect, and reading it there would \"restore\" to the child that is about to\n * unmount — which dropped focus on `body` in `Command`.\n *\n * **Portalled panels stay reachable.** A `Popover` or `HoverCard` opened from\n * inside the container renders at the end of `body`, outside it. Those panels\n * register themselves (see `usePortalTabOrder`), and the trap treats them as\n * part of the container, spliced right after their trigger. A `Tab` another\n * layer already consumed is not moved again, unless it moved focus out of the\n * container and its panels — the portal bridge leaving the last panel stop for\n * whatever follows the trap in the page.\n *\n * **Traps stack.** Only the most recent active trap handles `Tab`, so a modal\n * opened over another owns the keyboard until it closes, and then hands focus\n * back to the element it was opened from, inside the one below.\n *\n * The listener is on `document` in the bubble phase, after React's own\n * handlers: a menu that closes on `Tab` and returns focus to its trigger has\n * already done so when the trap looks at where focus is.\n *\n * @param containerRef - The element focus is confined to.\n * @param active - Whether the trap is armed.\n * @returns Nothing.\n */\nexport function useFocusTrap(containerRef: RefObject<HTMLElement | null>, active: boolean): void {\n const [armed, setArmed] = useState(false);\n const [opener, setOpener] = useState<HTMLElement | null>(null);\n if (active !== armed) {\n setArmed(active);\n if (active && typeof document !== \"undefined\") {\n setOpener(document.activeElement as HTMLElement | null);\n }\n }\n\n useEffect(() => {\n if (!active) return;\n const container = containerRef.current;\n if (!container) return;\n\n const entry: TrapEntry = { container };\n stack.push(entry);\n\n if (!container.contains(document.activeElement)) {\n (tabSequence(container)[0] ?? container).focus();\n }\n\n const handleKeydown = (event: KeyboardEvent): void => {\n if (event.key !== \"Tab\" || stack.at(-1) !== entry) return;\n const sequence = tabSequence(container);\n const first = sequence[0];\n const last = sequence.at(-1);\n const current = document.activeElement as HTMLElement | null;\n const inside =\n current !== null && tabRegion(container).some((root) => root.contains(current));\n\n if (event.defaultPrevented) {\n if (!inside) ((event.shiftKey ? last : first) ?? container).focus();\n return;\n }\n if (!first || !last) {\n event.preventDefault();\n container.focus();\n return;\n }\n const atEnd = event.shiftKey\n ? current === first || current === container\n : current === last;\n if (!inside || atEnd) {\n event.preventDefault();\n (event.shiftKey ? last : first).focus();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeydown);\n return () => {\n document.removeEventListener(\"keydown\", handleKeydown);\n stack.splice(stack.indexOf(entry), 1);\n if (opener?.isConnected) opener.focus();\n };\n }, [containerRef, active, opener]);\n}\n"],"mappings":";;;AAWA,IAAM,IAAqB,CAAC;AAoC5B,SAAgB,EAAa,GAA6C,GAAuB;CAC7F,IAAM,CAAC,GAAO,KAAY,EAAS,EAAK,GAClC,CAAC,GAAQ,KAAa,EAA6B,IAAI;CAQ7D,AAPI,MAAW,MACX,EAAS,CAAM,GACX,KAAU,OAAO,WAAa,OAC9B,EAAU,SAAS,aAAmC,IAI9D,QAAgB;EACZ,IAAI,CAAC,GAAQ;EACb,IAAM,IAAY,EAAa;EAC/B,IAAI,CAAC,GAAW;EAEhB,IAAM,IAAmB,EAAE,aAAU;EAGrC,AAFA,EAAM,KAAK,CAAK,GAEX,EAAU,SAAS,SAAS,aAAa,MACzC,EAAY,CAAS,CAAC,CAAC,MAAM,EAAA,CAAW,MAAM;EAGnD,IAAM,KAAiB,MAA+B;GAClD,IAAI,EAAM,QAAQ,SAAS,EAAM,GAAG,EAAE,MAAM,GAAO;GACnD,IAAM,IAAW,EAAY,CAAS,GAChC,IAAQ,EAAS,IACjB,IAAO,EAAS,GAAG,EAAE,GACrB,IAAU,SAAS,eACnB,IACF,MAAY,QAAQ,EAAU,CAAS,CAAC,CAAC,MAAM,MAAS,EAAK,SAAS,CAAO,CAAC;GAElF,IAAI,EAAM,kBAAkB;IACxB,AAAK,OAAU,EAAM,WAAW,IAAO,MAAU,EAAA,CAAW,MAAM;IAClE;GACJ;GACA,IAAI,CAAC,KAAS,CAAC,GAAM;IAEjB,AADA,EAAM,eAAe,GACrB,EAAU,MAAM;IAChB;GACJ;GACA,IAAM,IAAQ,EAAM,WACd,MAAY,KAAS,MAAY,IACjC,MAAY;GAClB,CAAI,CAAC,KAAU,OACX,EAAM,eAAe,IACpB,EAAM,WAAW,IAAO,EAAA,CAAO,MAAM;EAE9C;EAGA,OADA,SAAS,iBAAiB,WAAW,CAAa,SACrC;GAGT,AAFA,SAAS,oBAAoB,WAAW,CAAa,GACrD,EAAM,OAAO,EAAM,QAAQ,CAAK,GAAG,CAAC,GAChC,GAAQ,eAAa,EAAO,MAAM;EAC1C;CACJ,GAAG;EAAC;EAAc;EAAQ;CAAM,CAAC;AACrC"}
1
+ {"version":3,"file":"use-focus-trap.js","names":["stack","useFocusTrap","armed","setArmed","useState","opener","setOpener","active","useEffect","container","containerRef","entry","tabSequence","handleKeydown","event","sequence","first","last","current","inside","tabRegion","root","atEnd"],"sources":["../../src/hooks/use-focus-trap.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\nimport { tabRegion, tabSequence } from \"./tab-sequence\";\n\nexport { FOCUSABLE_SELECTOR } from \"./tab-sequence\";\n\n/** One armed trap; the identity is what the stack compares. */\ninterface TrapEntry {\n container: HTMLElement;\n}\n\nconst stack: TrapEntry[] = [];\n\n/**\n * Trap keyboard focus inside `containerRef` while `active` is true.\n *\n * - **On activation** focus moves to the first tab stop, or to the container\n * itself when it has none (give it `tabIndex={-1}`). Content that already put\n * focus inside — an `autoFocus` input — is left where it is.\n * - **`Tab` / `Shift+Tab`** wrap between the first and the last stop, and pull\n * focus back in when it sits outside.\n * - **On release** focus returns to the element that held it when the trap\n * armed. That element is read during the render that arms the trap, before\n * React commits: an `autoFocus` child takes focus in the commit, ahead of any\n * effect, and reading it there would \"restore\" to the child that is about to\n * unmount — which dropped focus on `body` in `Command`.\n *\n * **Portalled panels stay reachable.** A `Popover` or `HoverCard` opened from\n * inside the container renders at the end of `body`, outside it. Those panels\n * register themselves (see `usePortalTabOrder`), and the trap treats them as\n * part of the container, spliced right after their trigger. A `Tab` another\n * layer already consumed is not moved again, unless it moved focus out of the\n * container and its panels — the portal bridge leaving the last panel stop for\n * whatever follows the trap in the page.\n *\n * **Traps stack.** Only the most recent active trap handles `Tab`, so a modal\n * opened over another owns the keyboard until it closes, and then hands focus\n * back to the element it was opened from, inside the one below.\n *\n * The listener is on `document` in the bubble phase, after React's own\n * handlers: a menu that closes on `Tab` and returns focus to its trigger has\n * already done so when the trap looks at where focus is.\n *\n * @param containerRef - The element focus is confined to.\n * @param active - Whether the trap is armed.\n * @returns Nothing.\n */\nexport function useFocusTrap(containerRef: RefObject<HTMLElement | null>, active: boolean): void {\n const [armed, setArmed] = useState(false);\n const [opener, setOpener] = useState<HTMLElement | null>(null);\n if (active !== armed) {\n setArmed(active);\n if (active && typeof document !== \"undefined\") {\n setOpener(document.activeElement as HTMLElement | null);\n }\n }\n\n useEffect(() => {\n if (!active) return;\n const container = containerRef.current;\n if (!container) return;\n\n const entry: TrapEntry = { container };\n stack.push(entry);\n\n if (!container.contains(document.activeElement)) {\n (tabSequence(container)[0] ?? container).focus();\n }\n\n const handleKeydown = (event: KeyboardEvent): void => {\n if (event.key !== \"Tab\" || stack.at(-1) !== entry) return;\n const sequence = tabSequence(container);\n const first = sequence[0];\n const last = sequence.at(-1);\n const current = document.activeElement as HTMLElement | null;\n const inside =\n current !== null && tabRegion(container).some((root) => root.contains(current));\n\n if (event.defaultPrevented) {\n if (!inside) ((event.shiftKey ? last : first) ?? container).focus();\n return;\n }\n if (!first || !last) {\n event.preventDefault();\n container.focus();\n return;\n }\n const atEnd = event.shiftKey\n ? current === first || current === container\n : current === last;\n if (!inside || atEnd) {\n event.preventDefault();\n (event.shiftKey ? last : first).focus();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeydown);\n return () => {\n document.removeEventListener(\"keydown\", handleKeydown);\n stack.splice(stack.indexOf(entry), 1);\n if (opener?.isConnected) opener.focus();\n };\n }, [containerRef, active, opener]);\n}\n"],"mappings":";;;AAWA,IAAMA,IAAqB,CAAC;AAoC5B,SAAgBC,EAAa,GAA6C,GAAuB;CAC7F,IAAM,CAACC,GAAOC,KAAYC,EAAS,EAAK,GAClC,CAACC,GAAQC,KAAaF,EAA6B,IAAI;CAQ7D,AAPIG,MAAWL,MACXC,EAASI,CAAM,GACXA,KAAU,OAAO,WAAa,OAC9BD,EAAU,SAAS,aAAmC,IAI9DE,QAAgB;EACZ,IAAI,CAACD,GAAQ;EACb,IAAME,IAAYC,EAAa;EAC/B,IAAI,CAACD,GAAW;EAEhB,IAAME,IAAmB,EAAE,aAAU;EAGrC,AAFAX,EAAM,KAAKW,CAAK,GAEXF,EAAU,SAAS,SAAS,aAAa,MACzCG,EAAYH,CAAS,CAAC,CAAC,MAAMA,EAAA,CAAW,MAAM;EAGnD,IAAMI,KAAiB,MAA+B;GAClD,IAAIC,EAAM,QAAQ,SAASd,EAAM,GAAG,EAAE,MAAMW,GAAO;GACnD,IAAMI,IAAWH,EAAYH,CAAS,GAChCO,IAAQD,EAAS,IACjBE,IAAOF,EAAS,GAAG,EAAE,GACrBG,IAAU,SAAS,eACnBC,IACFD,MAAY,QAAQE,EAAUX,CAAS,CAAC,CAAC,MAAM,MAASY,EAAK,SAASH,CAAO,CAAC;GAElF,IAAIJ,EAAM,kBAAkB;IACxB,AAAKK,OAAUL,EAAM,WAAWG,IAAOD,MAAUP,EAAA,CAAW,MAAM;IAClE;GACJ;GACA,IAAI,CAACO,KAAS,CAACC,GAAM;IAEjB,AADAH,EAAM,eAAe,GACrBL,EAAU,MAAM;IAChB;GACJ;GACA,IAAMa,IAAQR,EAAM,WACdI,MAAYF,KAASE,MAAYT,IACjCS,MAAYD;GAClB,CAAI,CAACE,KAAUG,OACXR,EAAM,eAAe,IACpBA,EAAM,WAAWG,IAAOD,EAAA,CAAO,MAAM;EAE9C;EAGA,OADA,SAAS,iBAAiB,WAAWH,CAAa,SACrC;GAGT,AAFA,SAAS,oBAAoB,WAAWA,CAAa,GACrDb,EAAM,OAAOA,EAAM,QAAQW,CAAK,GAAG,CAAC,GAChCN,GAAQ,eAAaA,EAAO,MAAM;EAC1C;CACJ,GAAG;EAACK;EAAcH;EAAQF;CAAM,CAAC;AACrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-fullscreen-element.cjs","names":[],"sources":["../../src/hooks/use-fullscreen-element.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Vendor-prefixed fullscreen member of `document`, still shipped by WebKit.\n *\n * Declared optional on purpose: the standard property is what every other engine\n * answers to, and Safari is the only reason the second read exists.\n */\ninterface WebkitFullscreenDocument {\n webkitFullscreenElement?: Element | null;\n}\n\n/**\n * Read the element the browser is presenting fullscreen, standard property first.\n *\n * A plain function rather than a hook, because two very different callers need\n * the answer: `useFullscreenElement` below, which turns it into state, and the\n * action callbacks of `useFullscreen`, which need the value *at call time* and\n * cannot wait for a render to have happened since the last change.\n *\n * @returns The element being presented fullscreen, or `null` — including in any\n * environment without a `document` (a service worker, a build plugin, a Node\n * test), where the SDK must not throw.\n */\nexport function getFullscreenElement(): Element | null {\n if (typeof document === \"undefined\") return null;\n const prefixed = document as Document & WebkitFullscreenDocument;\n return document.fullscreenElement ?? prefixed.webkitFullscreenElement ?? null;\n}\n\n/**\n * Track the element the browser is presenting fullscreen.\n *\n * The SDK's single subscription to `fullscreenchange` (and WebKit's\n * `webkitfullscreenchange`). Two features need exactly this fact and would\n * otherwise each carry their own copy of the prefix dance: `usePortalHost` asks\n * *where do I mount* — the fullscreen element paints its own subtree and nothing\n * else, so a dialog portalled to `document.body` is invisible while fullscreen is\n * on — and `useFullscreen` asks *is my element the one presented*. One\n * subscription, two questions.\n *\n * The event is the source of truth rather than the return of `requestFullscreen`\n * / `exitFullscreen`, because `Esc`, the browser's own exit affordance and F11\n * leave fullscreen without ever passing through those calls.\n *\n * The first value is resolved during render rather than in the effect, so a\n * consumer that mounts while fullscreen is already active is correct in its very\n * first commit instead of correcting itself one frame later.\n *\n * @returns The fullscreen element, or `null` when nothing is presented.\n */\nexport function useFullscreenElement(): Element | null {\n const [element, setElement] = useState<Element | null>(getFullscreenElement);\n\n useEffect(() => {\n const sync = (): void => setElement(getFullscreenElement());\n sync();\n document.addEventListener(\"fullscreenchange\", sync);\n document.addEventListener(\"webkitfullscreenchange\", sync);\n return () => {\n document.removeEventListener(\"fullscreenchange\", sync);\n document.removeEventListener(\"webkitfullscreenchange\", sync);\n };\n }, []);\n\n return element;\n}\n"],"mappings":"uBAwBA,SAAgB,GAAuC,CACnD,GAAI,OAAO,SAAa,IAAa,OAAO,KAC5C,IAAM,EAAW,SACjB,OAAO,SAAS,mBAAqB,EAAS,yBAA2B,IAC7E,CAuBA,SAAgB,GAAuC,CACnD,GAAM,CAAC,EAAS,IAAA,EAAc,EAAA,SAAA,CAAyB,CAAoB,EAa3E,OAXA,EAAA,EAAA,UAAA,KAAgB,CACZ,IAAM,MAAmB,EAAW,EAAqB,CAAC,EAI1D,OAHA,EAAK,EACL,SAAS,iBAAiB,mBAAoB,CAAI,EAClD,SAAS,iBAAiB,yBAA0B,CAAI,MAC3C,CACT,SAAS,oBAAoB,mBAAoB,CAAI,EACrD,SAAS,oBAAoB,yBAA0B,CAAI,CAC/D,CACJ,EAAG,CAAC,CAAC,EAEE,CACX"}
1
+ {"version":3,"file":"use-fullscreen-element.cjs","names":["useState","react","getFullscreenElement","prefixed","useFullscreenElement","element","setElement","sync"],"sources":["../../src/hooks/use-fullscreen-element.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Vendor-prefixed fullscreen member of `document`, still shipped by WebKit.\n *\n * Declared optional on purpose: the standard property is what every other engine\n * answers to, and Safari is the only reason the second read exists.\n */\ninterface WebkitFullscreenDocument {\n webkitFullscreenElement?: Element | null;\n}\n\n/**\n * Read the element the browser is presenting fullscreen, standard property first.\n *\n * A plain function rather than a hook, because two very different callers need\n * the answer: `useFullscreenElement` below, which turns it into state, and the\n * action callbacks of `useFullscreen`, which need the value *at call time* and\n * cannot wait for a render to have happened since the last change.\n *\n * @returns The element being presented fullscreen, or `null` — including in any\n * environment without a `document` (a service worker, a build plugin, a Node\n * test), where the SDK must not throw.\n */\nexport function getFullscreenElement(): Element | null {\n if (typeof document === \"undefined\") return null;\n const prefixed = document as Document & WebkitFullscreenDocument;\n return document.fullscreenElement ?? prefixed.webkitFullscreenElement ?? null;\n}\n\n/**\n * Track the element the browser is presenting fullscreen.\n *\n * The SDK's single subscription to `fullscreenchange` (and WebKit's\n * `webkitfullscreenchange`). Two features need exactly this fact and would\n * otherwise each carry their own copy of the prefix dance: `usePortalHost` asks\n * *where do I mount* — the fullscreen element paints its own subtree and nothing\n * else, so a dialog portalled to `document.body` is invisible while fullscreen is\n * on — and `useFullscreen` asks *is my element the one presented*. One\n * subscription, two questions.\n *\n * The event is the source of truth rather than the return of `requestFullscreen`\n * / `exitFullscreen`, because `Esc`, the browser's own exit affordance and F11\n * leave fullscreen without ever passing through those calls.\n *\n * The first value is resolved during render rather than in the effect, so a\n * consumer that mounts while fullscreen is already active is correct in its very\n * first commit instead of correcting itself one frame later.\n *\n * @returns The fullscreen element, or `null` when nothing is presented.\n */\nexport function useFullscreenElement(): Element | null {\n const [element, setElement] = useState<Element | null>(getFullscreenElement);\n\n useEffect(() => {\n const sync = (): void => setElement(getFullscreenElement());\n sync();\n document.addEventListener(\"fullscreenchange\", sync);\n document.addEventListener(\"webkitfullscreenchange\", sync);\n return () => {\n document.removeEventListener(\"fullscreenchange\", sync);\n document.removeEventListener(\"webkitfullscreenchange\", sync);\n };\n }, []);\n\n return element;\n}\n"],"mappings":"A,uBAwBA,SAAgBE,GAAuC,CACnD,GAAI,OAAO,SAAa,IAAa,OAAO,KAC5C,IAAMC,EAAW,SACjB,OAAO,SAAS,mBAAqBA,EAAS,yBAA2B,IAC7E,CAuBA,SAAgBC,GAAuC,CACnD,GAAM,CAACC,EAASC,IAAA,EAAcN,EAAAA,SAAAA,CAAyBE,CAAoB,EAa3E,OAXA,EAAAD,EAAA,UAAA,KAAgB,CACZ,IAAMM,MAAmBD,EAAWJ,EAAqB,CAAC,EAI1D,OAHAK,EAAK,EACL,SAAS,iBAAiB,mBAAoBA,CAAI,EAClD,SAAS,iBAAiB,yBAA0BA,CAAI,MAC3C,CACT,SAAS,oBAAoB,mBAAoBA,CAAI,EACrD,SAAS,oBAAoB,yBAA0BA,CAAI,CAC/D,CACJ,EAAG,CAAC,CAAC,EAEEF,CACX,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-fullscreen-element.js","names":[],"sources":["../../src/hooks/use-fullscreen-element.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Vendor-prefixed fullscreen member of `document`, still shipped by WebKit.\n *\n * Declared optional on purpose: the standard property is what every other engine\n * answers to, and Safari is the only reason the second read exists.\n */\ninterface WebkitFullscreenDocument {\n webkitFullscreenElement?: Element | null;\n}\n\n/**\n * Read the element the browser is presenting fullscreen, standard property first.\n *\n * A plain function rather than a hook, because two very different callers need\n * the answer: `useFullscreenElement` below, which turns it into state, and the\n * action callbacks of `useFullscreen`, which need the value *at call time* and\n * cannot wait for a render to have happened since the last change.\n *\n * @returns The element being presented fullscreen, or `null` — including in any\n * environment without a `document` (a service worker, a build plugin, a Node\n * test), where the SDK must not throw.\n */\nexport function getFullscreenElement(): Element | null {\n if (typeof document === \"undefined\") return null;\n const prefixed = document as Document & WebkitFullscreenDocument;\n return document.fullscreenElement ?? prefixed.webkitFullscreenElement ?? null;\n}\n\n/**\n * Track the element the browser is presenting fullscreen.\n *\n * The SDK's single subscription to `fullscreenchange` (and WebKit's\n * `webkitfullscreenchange`). Two features need exactly this fact and would\n * otherwise each carry their own copy of the prefix dance: `usePortalHost` asks\n * *where do I mount* — the fullscreen element paints its own subtree and nothing\n * else, so a dialog portalled to `document.body` is invisible while fullscreen is\n * on — and `useFullscreen` asks *is my element the one presented*. One\n * subscription, two questions.\n *\n * The event is the source of truth rather than the return of `requestFullscreen`\n * / `exitFullscreen`, because `Esc`, the browser's own exit affordance and F11\n * leave fullscreen without ever passing through those calls.\n *\n * The first value is resolved during render rather than in the effect, so a\n * consumer that mounts while fullscreen is already active is correct in its very\n * first commit instead of correcting itself one frame later.\n *\n * @returns The fullscreen element, or `null` when nothing is presented.\n */\nexport function useFullscreenElement(): Element | null {\n const [element, setElement] = useState<Element | null>(getFullscreenElement);\n\n useEffect(() => {\n const sync = (): void => setElement(getFullscreenElement());\n sync();\n document.addEventListener(\"fullscreenchange\", sync);\n document.addEventListener(\"webkitfullscreenchange\", sync);\n return () => {\n document.removeEventListener(\"fullscreenchange\", sync);\n document.removeEventListener(\"webkitfullscreenchange\", sync);\n };\n }, []);\n\n return element;\n}\n"],"mappings":";;AAwBA,SAAgB,IAAuC;CACnD,IAAI,OAAO,WAAa,KAAa,OAAO;CAC5C,IAAM,IAAW;CACjB,OAAO,SAAS,qBAAqB,EAAS,2BAA2B;AAC7E;AAuBA,SAAgB,IAAuC;CACnD,IAAM,CAAC,GAAS,KAAc,EAAyB,CAAoB;CAa3E,OAXA,QAAgB;EACZ,IAAM,UAAmB,EAAW,EAAqB,CAAC;EAI1D,OAHA,EAAK,GACL,SAAS,iBAAiB,oBAAoB,CAAI,GAClD,SAAS,iBAAiB,0BAA0B,CAAI,SAC3C;GAET,AADA,SAAS,oBAAoB,oBAAoB,CAAI,GACrD,SAAS,oBAAoB,0BAA0B,CAAI;EAC/D;CACJ,GAAG,CAAC,CAAC,GAEE;AACX"}
1
+ {"version":3,"file":"use-fullscreen-element.js","names":["getFullscreenElement","prefixed","useFullscreenElement","element","setElement","useState","useEffect","sync"],"sources":["../../src/hooks/use-fullscreen-element.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Vendor-prefixed fullscreen member of `document`, still shipped by WebKit.\n *\n * Declared optional on purpose: the standard property is what every other engine\n * answers to, and Safari is the only reason the second read exists.\n */\ninterface WebkitFullscreenDocument {\n webkitFullscreenElement?: Element | null;\n}\n\n/**\n * Read the element the browser is presenting fullscreen, standard property first.\n *\n * A plain function rather than a hook, because two very different callers need\n * the answer: `useFullscreenElement` below, which turns it into state, and the\n * action callbacks of `useFullscreen`, which need the value *at call time* and\n * cannot wait for a render to have happened since the last change.\n *\n * @returns The element being presented fullscreen, or `null` — including in any\n * environment without a `document` (a service worker, a build plugin, a Node\n * test), where the SDK must not throw.\n */\nexport function getFullscreenElement(): Element | null {\n if (typeof document === \"undefined\") return null;\n const prefixed = document as Document & WebkitFullscreenDocument;\n return document.fullscreenElement ?? prefixed.webkitFullscreenElement ?? null;\n}\n\n/**\n * Track the element the browser is presenting fullscreen.\n *\n * The SDK's single subscription to `fullscreenchange` (and WebKit's\n * `webkitfullscreenchange`). Two features need exactly this fact and would\n * otherwise each carry their own copy of the prefix dance: `usePortalHost` asks\n * *where do I mount* — the fullscreen element paints its own subtree and nothing\n * else, so a dialog portalled to `document.body` is invisible while fullscreen is\n * on — and `useFullscreen` asks *is my element the one presented*. One\n * subscription, two questions.\n *\n * The event is the source of truth rather than the return of `requestFullscreen`\n * / `exitFullscreen`, because `Esc`, the browser's own exit affordance and F11\n * leave fullscreen without ever passing through those calls.\n *\n * The first value is resolved during render rather than in the effect, so a\n * consumer that mounts while fullscreen is already active is correct in its very\n * first commit instead of correcting itself one frame later.\n *\n * @returns The fullscreen element, or `null` when nothing is presented.\n */\nexport function useFullscreenElement(): Element | null {\n const [element, setElement] = useState<Element | null>(getFullscreenElement);\n\n useEffect(() => {\n const sync = (): void => setElement(getFullscreenElement());\n sync();\n document.addEventListener(\"fullscreenchange\", sync);\n document.addEventListener(\"webkitfullscreenchange\", sync);\n return () => {\n document.removeEventListener(\"fullscreenchange\", sync);\n document.removeEventListener(\"webkitfullscreenchange\", sync);\n };\n }, []);\n\n return element;\n}\n"],"mappings":";;AAwBA,SAAgBA,IAAuC;CACnD,IAAI,OAAO,WAAa,KAAa,OAAO;CAC5C,IAAMC,IAAW;CACjB,OAAO,SAAS,qBAAqBA,EAAS,2BAA2B;AAC7E;AAuBA,SAAgBC,IAAuC;CACnD,IAAM,CAACC,GAASC,KAAcC,EAAyBL,CAAoB;CAa3E,OAXAM,QAAgB;EACZ,IAAMC,UAAmBH,EAAWJ,EAAqB,CAAC;EAI1D,OAHAO,EAAK,GACL,SAAS,iBAAiB,oBAAoBA,CAAI,GAClD,SAAS,iBAAiB,0BAA0BA,CAAI,SAC3C;GAET,AADA,SAAS,oBAAoB,oBAAoBA,CAAI,GACrD,SAAS,oBAAoB,0BAA0BA,CAAI;EAC/D;CACJ,GAAG,CAAC,CAAC,GAEEJ;AACX"}
@@ -1,2 +1,2 @@
1
- const e=require("./use-fullscreen-element.cjs");let t=require("react");function n(e){return typeof document>`u`?null:e?e.current:document.documentElement}function r(){if(typeof document>`u`)return!1;let e=document.documentElement,t=document;return(typeof e.requestFullscreen==`function`||typeof e.webkitRequestFullscreen==`function`)&&(t.fullscreenEnabled??t.webkitFullscreenEnabled??!0)}function i(i){let a=e.useFullscreenElement(),[o]=(0,t.useState)(r),[s,c]=(0,t.useState)(!1);(0,t.useEffect)(()=>{let e=n(i);c(e!==null&&a===e)},[a,i]);let l=(0,t.useCallback)(async()=>{let e=n(i);if(e===null)throw Error(`useFullscreen: nothing to present. Either this environment has no document, or the ref was never attached to a mounted element.`);let t=e;if(typeof t.requestFullscreen==`function`){await t.requestFullscreen();return}if(typeof t.webkitRequestFullscreen==`function`){await t.webkitRequestFullscreen();return}throw Error(`useFullscreen: this browser exposes no way to enter fullscreen.`)},[i]),u=(0,t.useCallback)(async()=>{if(e.getFullscreenElement()===null)return;let t=document;if(typeof t.exitFullscreen==`function`){await t.exitFullscreen();return}if(typeof t.webkitExitFullscreen==`function`){await t.webkitExitFullscreen();return}throw Error(`useFullscreen: this browser exposes no way to leave fullscreen.`)},[]);return{isFullscreen:s,supported:o,enter:l,exit:u,toggle:(0,t.useCallback)(async()=>{let t=n(i);if(t!==null&&e.getFullscreenElement()===t){await u();return}await l()},[l,u,i])}}exports.isFullscreenSupported=r,exports.useFullscreen=i;
1
+ const e=require("./use-fullscreen-element.cjs");let t=require("react");function n(e){return typeof document>`u`?null:e?e.current:document.documentElement}function r(){if(typeof document>`u`)return!1;let e=document.documentElement,t=document;return(typeof e.requestFullscreen==`function`||typeof e.webkitRequestFullscreen==`function`)&&(t.fullscreenEnabled??t.webkitFullscreenEnabled??!0)}function i(i){let a=e.useFullscreenElement(),[o]=(0,t.useState)(r),[s,c]=(0,t.useState)(!1);(0,t.useEffect)(()=>{let e=n(i);c(e!==null&&a===e)},[a,i]);let l=(0,t.useCallback)(async()=>{let e=n(i);if(e===null)throw Error(`useFullscreen: nothing to present. Either this environment has no document, or the ref was never attached to a mounted element.`);let t=e;if(typeof t.requestFullscreen==`function`)await t.requestFullscreen();else if(typeof t.webkitRequestFullscreen==`function`)await t.webkitRequestFullscreen();else throw Error(`useFullscreen: this browser exposes no way to enter fullscreen.`)},[i]),u=(0,t.useCallback)(async()=>{if(e.getFullscreenElement()===null)return;let t=document;if(typeof t.exitFullscreen==`function`)await t.exitFullscreen();else if(typeof t.webkitExitFullscreen==`function`)await t.webkitExitFullscreen();else throw Error(`useFullscreen: this browser exposes no way to leave fullscreen.`)},[]);return{isFullscreen:s,supported:o,enter:l,exit:u,toggle:(0,t.useCallback)(async()=>{let t=n(i);t!==null&&e.getFullscreenElement()===t?await u():await l()},[l,u,i])}}exports.isFullscreenSupported=r,exports.useFullscreen=i;
2
2
  //# sourceMappingURL=use-fullscreen.cjs.map