tempest-react-sdk 0.77.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 (1623) hide show
  1. package/README.md +6 -6
  2. package/bin/lib/alias/collect.mjs +20 -3
  3. package/bin/lib/alias/index.mjs +12 -1
  4. package/bin/lib/alias/index.test.mjs +24 -0
  5. package/bin/lib/css/analyze.test.mjs +21 -1
  6. package/bin/lib/css/collect.mjs +14 -0
  7. package/bin/lib/css/extract.mjs +63 -5
  8. package/bin/lib/css/extract.test.mjs +110 -1
  9. package/bin/lib/css/fix.e2e.test.mjs +50 -0
  10. package/bin/lib/css/index.mjs +6 -1
  11. package/bin/lib/fs/contain.mjs +50 -0
  12. package/bin/lib/icons/generate.mjs +28 -3
  13. package/bin/lib/icons/generate.test.mjs +57 -1
  14. package/bin/lib/openapi/escape.mjs +20 -6
  15. package/bin/lib/openapi/generate.encode.test.mjs +120 -0
  16. package/bin/lib/openapi/generate.hostile.test.mjs +38 -9
  17. package/bin/lib/openapi/generate.mjs +203 -64
  18. package/bin/lib/openapi/generate.pagination.test.mjs +3 -2
  19. package/bin/lib/openapi/generate.test.mjs +270 -3
  20. package/bin/lib/openapi/schema-to-zod.mjs +5 -3
  21. package/bin/tempest-gen.test.mjs +188 -0
  22. package/bin/tempest.mjs +120 -44
  23. package/dist/access/Can.cjs.map +1 -1
  24. package/dist/access/Can.js.map +1 -1
  25. package/dist/access/access-control-context.cjs.map +1 -1
  26. package/dist/access/access-control-context.js.map +1 -1
  27. package/dist/access/create-role-access-control.cjs.map +1 -1
  28. package/dist/access/create-role-access-control.js.map +1 -1
  29. package/dist/access/permissions-from-token.cjs.map +1 -1
  30. package/dist/access/permissions-from-token.js.map +1 -1
  31. package/dist/access/use-can.cjs.map +1 -1
  32. package/dist/access/use-can.js.map +1 -1
  33. package/dist/app/AppProviders.cjs.map +1 -1
  34. package/dist/app/AppProviders.js.map +1 -1
  35. package/dist/audio/audio-bus.cjs.map +1 -1
  36. package/dist/audio/audio-bus.js.map +1 -1
  37. package/dist/audio/audio-output.cjs.map +1 -1
  38. package/dist/audio/audio-output.js.map +1 -1
  39. package/dist/audio/audio-player.cjs.map +1 -1
  40. package/dist/audio/audio-player.js.map +1 -1
  41. package/dist/audio/audio-recorder.cjs.map +1 -1
  42. package/dist/audio/audio-recorder.js.map +1 -1
  43. package/dist/audio/duration.cjs.map +1 -1
  44. package/dist/audio/duration.js.map +1 -1
  45. package/dist/audio/level-meter.cjs.map +1 -1
  46. package/dist/audio/level-meter.js.map +1 -1
  47. package/dist/audio/media-access.cjs.map +1 -1
  48. package/dist/audio/media-access.js.map +1 -1
  49. package/dist/audio/noise-floor.cjs.map +1 -1
  50. package/dist/audio/noise-floor.js.map +1 -1
  51. package/dist/audio/sfx-pool.cjs.map +1 -1
  52. package/dist/audio/sfx-pool.js.map +1 -1
  53. package/dist/audio/use-audio-bus.cjs.map +1 -1
  54. package/dist/audio/use-audio-bus.js.map +1 -1
  55. package/dist/audio/use-audio-recorder.cjs.map +1 -1
  56. package/dist/audio/use-audio-recorder.js.map +1 -1
  57. package/dist/audio/use-audio.cjs.map +1 -1
  58. package/dist/audio/use-audio.js.map +1 -1
  59. package/dist/audio/use-microphone.cjs +1 -1
  60. package/dist/audio/use-microphone.cjs.map +1 -1
  61. package/dist/audio/use-microphone.js +1 -5
  62. package/dist/audio/use-microphone.js.map +1 -1
  63. package/dist/audio/use-sfx-pool.cjs.map +1 -1
  64. package/dist/audio/use-sfx-pool.js.map +1 -1
  65. package/dist/audio/voice-activity.cjs.map +1 -1
  66. package/dist/audio/voice-activity.js.map +1 -1
  67. package/dist/audio/voice-chain-stages.cjs.map +1 -1
  68. package/dist/audio/voice-chain-stages.js.map +1 -1
  69. package/dist/audio/voice-chain.cjs.map +1 -1
  70. package/dist/audio/voice-chain.js.map +1 -1
  71. package/dist/audio/wav.cjs.map +1 -1
  72. package/dist/audio/wav.js.map +1 -1
  73. package/dist/auth/AuthGuard.cjs.map +1 -1
  74. package/dist/auth/AuthGuard.js.map +1 -1
  75. package/dist/auth/create-auth-store.cjs.map +1 -1
  76. package/dist/auth/create-auth-store.js.map +1 -1
  77. package/dist/auth/create-tempest-auth.cjs +1 -1
  78. package/dist/auth/create-tempest-auth.cjs.map +1 -1
  79. package/dist/auth/create-tempest-auth.js +185 -114
  80. package/dist/auth/create-tempest-auth.js.map +1 -1
  81. package/dist/auth/jwt.cjs.map +1 -1
  82. package/dist/auth/jwt.js.map +1 -1
  83. package/dist/auth/lazy-with-retry.cjs.map +1 -1
  84. package/dist/auth/lazy-with-retry.js.map +1 -1
  85. package/dist/auth/passkey.cjs.map +1 -1
  86. package/dist/auth/passkey.js.map +1 -1
  87. package/dist/auth/refresh-queue.cjs.map +1 -1
  88. package/dist/auth/refresh-queue.js.map +1 -1
  89. package/dist/auth/use-passkey.cjs +1 -1
  90. package/dist/auth/use-passkey.cjs.map +1 -1
  91. package/dist/auth/use-passkey.js +1 -1
  92. package/dist/auth/use-passkey.js.map +1 -1
  93. package/dist/br/BrazilMap.cjs.map +1 -1
  94. package/dist/br/BrazilMap.js.map +1 -1
  95. package/dist/br/BrazilMap.module.cjs.map +1 -1
  96. package/dist/br/BrazilMap.module.js.map +1 -1
  97. package/dist/br/BrazilStateCitySelect.cjs.map +1 -1
  98. package/dist/br/BrazilStateCitySelect.js.map +1 -1
  99. package/dist/br/BrazilStateMap.cjs.map +1 -1
  100. package/dist/br/BrazilStateMap.js.map +1 -1
  101. package/dist/br/MapLegend.cjs.map +1 -1
  102. package/dist/br/MapLegend.js.map +1 -1
  103. package/dist/br/MapLegend.module.cjs.map +1 -1
  104. package/dist/br/MapLegend.module.js.map +1 -1
  105. package/dist/br/MapMarkers.cjs.map +1 -1
  106. package/dist/br/MapMarkers.js.map +1 -1
  107. package/dist/br/MapTooltip.cjs.map +1 -1
  108. package/dist/br/MapTooltip.js.map +1 -1
  109. package/dist/br/MunicipalitySearch.cjs +1 -1
  110. package/dist/br/MunicipalitySearch.cjs.map +1 -1
  111. package/dist/br/MunicipalitySearch.js +2 -5
  112. package/dist/br/MunicipalitySearch.js.map +1 -1
  113. package/dist/br/MunicipalitySearch.module.cjs.map +1 -1
  114. package/dist/br/MunicipalitySearch.module.js.map +1 -1
  115. package/dist/br/PixQRCode.cjs.map +1 -1
  116. package/dist/br/PixQRCode.js.map +1 -1
  117. package/dist/br/PixQRCode.module.cjs.map +1 -1
  118. package/dist/br/PixQRCode.module.js.map +1 -1
  119. package/dist/br/boleto.cjs.map +1 -1
  120. package/dist/br/boleto.js.map +1 -1
  121. package/dist/br/br-geo.cjs.map +1 -1
  122. package/dist/br/br-geo.js.map +1 -1
  123. package/dist/br/data/br-centroids.cjs.map +1 -1
  124. package/dist/br/data/br-centroids.js.map +1 -1
  125. package/dist/br/data/br-locations.cjs.map +1 -1
  126. package/dist/br/data/br-locations.js.map +1 -1
  127. package/dist/br/data/br-uf-geo.cjs.map +1 -1
  128. package/dist/br/data/br-uf-geo.js.map +1 -1
  129. package/dist/br/data/mun/AC.cjs.map +1 -1
  130. package/dist/br/data/mun/AC.js.map +1 -1
  131. package/dist/br/data/mun/AL.cjs.map +1 -1
  132. package/dist/br/data/mun/AL.js.map +1 -1
  133. package/dist/br/data/mun/AM.cjs.map +1 -1
  134. package/dist/br/data/mun/AM.js.map +1 -1
  135. package/dist/br/data/mun/AP.cjs.map +1 -1
  136. package/dist/br/data/mun/AP.js.map +1 -1
  137. package/dist/br/data/mun/BA.cjs.map +1 -1
  138. package/dist/br/data/mun/BA.js.map +1 -1
  139. package/dist/br/data/mun/CE.cjs.map +1 -1
  140. package/dist/br/data/mun/CE.js.map +1 -1
  141. package/dist/br/data/mun/DF.cjs.map +1 -1
  142. package/dist/br/data/mun/DF.js.map +1 -1
  143. package/dist/br/data/mun/ES.cjs.map +1 -1
  144. package/dist/br/data/mun/ES.js.map +1 -1
  145. package/dist/br/data/mun/GO.cjs.map +1 -1
  146. package/dist/br/data/mun/GO.js.map +1 -1
  147. package/dist/br/data/mun/MA.cjs.map +1 -1
  148. package/dist/br/data/mun/MA.js.map +1 -1
  149. package/dist/br/data/mun/MG.cjs.map +1 -1
  150. package/dist/br/data/mun/MG.js.map +1 -1
  151. package/dist/br/data/mun/MS.cjs.map +1 -1
  152. package/dist/br/data/mun/MS.js.map +1 -1
  153. package/dist/br/data/mun/MT.cjs.map +1 -1
  154. package/dist/br/data/mun/MT.js.map +1 -1
  155. package/dist/br/data/mun/PA.cjs.map +1 -1
  156. package/dist/br/data/mun/PA.js.map +1 -1
  157. package/dist/br/data/mun/PB.cjs.map +1 -1
  158. package/dist/br/data/mun/PB.js.map +1 -1
  159. package/dist/br/data/mun/PE.cjs.map +1 -1
  160. package/dist/br/data/mun/PE.js.map +1 -1
  161. package/dist/br/data/mun/PI.cjs.map +1 -1
  162. package/dist/br/data/mun/PI.js.map +1 -1
  163. package/dist/br/data/mun/PR.cjs.map +1 -1
  164. package/dist/br/data/mun/PR.js.map +1 -1
  165. package/dist/br/data/mun/RJ.cjs.map +1 -1
  166. package/dist/br/data/mun/RJ.js.map +1 -1
  167. package/dist/br/data/mun/RN.cjs.map +1 -1
  168. package/dist/br/data/mun/RN.js.map +1 -1
  169. package/dist/br/data/mun/RO.cjs.map +1 -1
  170. package/dist/br/data/mun/RO.js.map +1 -1
  171. package/dist/br/data/mun/RR.cjs.map +1 -1
  172. package/dist/br/data/mun/RR.js.map +1 -1
  173. package/dist/br/data/mun/RS.cjs.map +1 -1
  174. package/dist/br/data/mun/RS.js.map +1 -1
  175. package/dist/br/data/mun/SC.cjs.map +1 -1
  176. package/dist/br/data/mun/SC.js.map +1 -1
  177. package/dist/br/data/mun/SE.cjs.map +1 -1
  178. package/dist/br/data/mun/SE.js.map +1 -1
  179. package/dist/br/data/mun/SP.cjs.map +1 -1
  180. package/dist/br/data/mun/SP.js.map +1 -1
  181. package/dist/br/data/mun/TO.cjs.map +1 -1
  182. package/dist/br/data/mun/TO.js.map +1 -1
  183. package/dist/br/geocode.cjs.map +1 -1
  184. package/dist/br/geocode.js.map +1 -1
  185. package/dist/br/holidays.cjs.map +1 -1
  186. package/dist/br/holidays.js.map +1 -1
  187. package/dist/br/locations.cjs.map +1 -1
  188. package/dist/br/locations.js.map +1 -1
  189. package/dist/br/nfe.cjs.map +1 -1
  190. package/dist/br/nfe.js.map +1 -1
  191. package/dist/br/pix.cjs +1 -1
  192. package/dist/br/pix.cjs.map +1 -1
  193. package/dist/br/pix.js +108 -71
  194. package/dist/br/pix.js.map +1 -1
  195. package/dist/br/regions.cjs.map +1 -1
  196. package/dist/br/regions.js.map +1 -1
  197. package/dist/br/scales.cjs.map +1 -1
  198. package/dist/br/scales.js.map +1 -1
  199. package/dist/br/state-geo.cjs.map +1 -1
  200. package/dist/br/state-geo.js.map +1 -1
  201. package/dist/br/svg-utils.cjs.map +1 -1
  202. package/dist/br/svg-utils.js.map +1 -1
  203. package/dist/br/use-map-hover.cjs.map +1 -1
  204. package/dist/br/use-map-hover.js.map +1 -1
  205. package/dist/br/use-map-zoom.cjs.map +1 -1
  206. package/dist/br/use-map-zoom.js.map +1 -1
  207. package/dist/br/whatsapp.cjs.map +1 -1
  208. package/dist/br/whatsapp.js.map +1 -1
  209. package/dist/br.cjs.map +1 -1
  210. package/dist/br.d.ts +16 -5
  211. package/dist/br.js.map +1 -1
  212. package/dist/capture/barcode.cjs.map +1 -1
  213. package/dist/capture/barcode.js.map +1 -1
  214. package/dist/capture/media-recorder.cjs.map +1 -1
  215. package/dist/capture/media-recorder.js.map +1 -1
  216. package/dist/capture/use-barcode-scanner.cjs.map +1 -1
  217. package/dist/capture/use-barcode-scanner.js.map +1 -1
  218. package/dist/capture/use-screen-capture.cjs +1 -1
  219. package/dist/capture/use-screen-capture.cjs.map +1 -1
  220. package/dist/capture/use-screen-capture.js +1 -7
  221. package/dist/capture/use-screen-capture.js.map +1 -1
  222. package/dist/capture/use-speech-recognition.cjs +1 -1
  223. package/dist/capture/use-speech-recognition.cjs.map +1 -1
  224. package/dist/capture/use-speech-recognition.js +35 -36
  225. package/dist/capture/use-speech-recognition.js.map +1 -1
  226. package/dist/capture/use-torch.cjs.map +1 -1
  227. package/dist/capture/use-torch.js.map +1 -1
  228. package/dist/capture/use-video-recorder.cjs.map +1 -1
  229. package/dist/capture/use-video-recorder.js.map +1 -1
  230. package/dist/capture/video-recorder.cjs.map +1 -1
  231. package/dist/capture/video-recorder.js.map +1 -1
  232. package/dist/charts/AreaChart.cjs.map +1 -1
  233. package/dist/charts/AreaChart.js.map +1 -1
  234. package/dist/charts/BarChart.cjs.map +1 -1
  235. package/dist/charts/BarChart.js.map +1 -1
  236. package/dist/charts/LineChart.cjs.map +1 -1
  237. package/dist/charts/LineChart.js.map +1 -1
  238. package/dist/charts/PieChart.cjs.map +1 -1
  239. package/dist/charts/PieChart.js.map +1 -1
  240. package/dist/charts/RadarChart.cjs.map +1 -1
  241. package/dist/charts/RadarChart.js.map +1 -1
  242. package/dist/charts/palette.cjs.map +1 -1
  243. package/dist/charts/palette.js.map +1 -1
  244. package/dist/charts/scales.cjs.map +1 -1
  245. package/dist/charts/scales.js.map +1 -1
  246. package/dist/charts/types.cjs.map +1 -1
  247. package/dist/charts/types.js.map +1 -1
  248. package/dist/charts/use-chart-colors.cjs.map +1 -1
  249. package/dist/charts/use-chart-colors.js.map +1 -1
  250. package/dist/components/AIChat/AIChat.cjs +1 -1
  251. package/dist/components/AIChat/AIChat.cjs.map +1 -1
  252. package/dist/components/AIChat/AIChat.js +1 -5
  253. package/dist/components/AIChat/AIChat.js.map +1 -1
  254. package/dist/components/AIChat/AIChat.module.cjs.map +1 -1
  255. package/dist/components/AIChat/AIChat.module.js.map +1 -1
  256. package/dist/components/AIChat/AIChatComposer.cjs +1 -1
  257. package/dist/components/AIChat/AIChatComposer.cjs.map +1 -1
  258. package/dist/components/AIChat/AIChatComposer.js +1 -7
  259. package/dist/components/AIChat/AIChatComposer.js.map +1 -1
  260. package/dist/components/AIChat/AIChatTurn.cjs.map +1 -1
  261. package/dist/components/AIChat/AIChatTurn.js.map +1 -1
  262. package/dist/components/AIChat/ai-chat-turns.cjs.map +1 -1
  263. package/dist/components/AIChat/ai-chat-turns.js.map +1 -1
  264. package/dist/components/Accordion/Accordion.cjs.map +1 -1
  265. package/dist/components/Accordion/Accordion.js.map +1 -1
  266. package/dist/components/Accordion/Accordion.module.cjs.map +1 -1
  267. package/dist/components/Accordion/Accordion.module.js.map +1 -1
  268. package/dist/components/Alert/Alert.cjs.map +1 -1
  269. package/dist/components/Alert/Alert.js.map +1 -1
  270. package/dist/components/Alert/Alert.module.cjs.map +1 -1
  271. package/dist/components/Alert/Alert.module.js.map +1 -1
  272. package/dist/components/AppBar/AppBar.cjs.map +1 -1
  273. package/dist/components/AppBar/AppBar.js.map +1 -1
  274. package/dist/components/AppBar/AppBar.module.cjs.map +1 -1
  275. package/dist/components/AppBar/AppBar.module.js.map +1 -1
  276. package/dist/components/AppBar/use-sticky-body-warning.cjs +1 -1
  277. package/dist/components/AppBar/use-sticky-body-warning.cjs.map +1 -1
  278. package/dist/components/AppBar/use-sticky-body-warning.js +1 -1
  279. package/dist/components/AppBar/use-sticky-body-warning.js.map +1 -1
  280. package/dist/components/AppShell/AppShell.cjs.map +1 -1
  281. package/dist/components/AppShell/AppShell.js.map +1 -1
  282. package/dist/components/AppShell/AppShell.module.cjs.map +1 -1
  283. package/dist/components/AppShell/AppShell.module.js.map +1 -1
  284. package/dist/components/AspectRatio/AspectRatio.cjs.map +1 -1
  285. package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
  286. package/dist/components/AspectRatio/AspectRatio.module.cjs.map +1 -1
  287. package/dist/components/AspectRatio/AspectRatio.module.js.map +1 -1
  288. package/dist/components/AudioPlayer/AudioPlayer.cjs +1 -1
  289. package/dist/components/AudioPlayer/AudioPlayer.cjs.map +1 -1
  290. package/dist/components/AudioPlayer/AudioPlayer.js +1 -7
  291. package/dist/components/AudioPlayer/AudioPlayer.js.map +1 -1
  292. package/dist/components/AudioPlayer/AudioPlayer.module.cjs.map +1 -1
  293. package/dist/components/AudioPlayer/AudioPlayer.module.js.map +1 -1
  294. package/dist/components/AudioRecorder/AudioRecorder.cjs +1 -1
  295. package/dist/components/AudioRecorder/AudioRecorder.cjs.map +1 -1
  296. package/dist/components/AudioRecorder/AudioRecorder.js +16 -21
  297. package/dist/components/AudioRecorder/AudioRecorder.js.map +1 -1
  298. package/dist/components/AudioRecorder/AudioRecorder.module.cjs.map +1 -1
  299. package/dist/components/AudioRecorder/AudioRecorder.module.js.map +1 -1
  300. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  301. package/dist/components/Avatar/Avatar.js.map +1 -1
  302. package/dist/components/Avatar/Avatar.module.cjs.map +1 -1
  303. package/dist/components/Avatar/Avatar.module.js.map +1 -1
  304. package/dist/components/AvatarGroup/AvatarGroup.cjs.map +1 -1
  305. package/dist/components/AvatarGroup/AvatarGroup.js.map +1 -1
  306. package/dist/components/AvatarGroup/AvatarGroup.module.cjs.map +1 -1
  307. package/dist/components/AvatarGroup/AvatarGroup.module.js.map +1 -1
  308. package/dist/components/Badge/Badge.cjs.map +1 -1
  309. package/dist/components/Badge/Badge.js.map +1 -1
  310. package/dist/components/Badge/Badge.module.cjs.map +1 -1
  311. package/dist/components/Badge/Badge.module.js.map +1 -1
  312. package/dist/components/Banner/Banner.cjs.map +1 -1
  313. package/dist/components/Banner/Banner.js.map +1 -1
  314. package/dist/components/Banner/Banner.module.cjs.map +1 -1
  315. package/dist/components/Banner/Banner.module.js.map +1 -1
  316. package/dist/components/BarList/BarList.cjs.map +1 -1
  317. package/dist/components/BarList/BarList.js.map +1 -1
  318. package/dist/components/BarList/BarList.module.cjs.map +1 -1
  319. package/dist/components/BarList/BarList.module.js.map +1 -1
  320. package/dist/components/BarList/bar-list-model.cjs.map +1 -1
  321. package/dist/components/BarList/bar-list-model.js.map +1 -1
  322. package/dist/components/BarcodeScanner/BarcodeScanner.cjs.map +1 -1
  323. package/dist/components/BarcodeScanner/BarcodeScanner.js.map +1 -1
  324. package/dist/components/BarcodeScanner/BarcodeScanner.module.cjs.map +1 -1
  325. package/dist/components/BarcodeScanner/BarcodeScanner.module.js.map +1 -1
  326. package/dist/components/BottomNavigation/BottomNavigation.cjs.map +1 -1
  327. package/dist/components/BottomNavigation/BottomNavigation.js.map +1 -1
  328. package/dist/components/BottomNavigation/BottomNavigation.module.cjs.map +1 -1
  329. package/dist/components/BottomNavigation/BottomNavigation.module.js.map +1 -1
  330. package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
  331. package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
  332. package/dist/components/BottomSheet/BottomSheet.module.cjs.map +1 -1
  333. package/dist/components/BottomSheet/BottomSheet.module.js.map +1 -1
  334. package/dist/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
  335. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  336. package/dist/components/Breadcrumbs/Breadcrumbs.module.cjs.map +1 -1
  337. package/dist/components/Breadcrumbs/Breadcrumbs.module.js.map +1 -1
  338. package/dist/components/Button/Button.cjs.map +1 -1
  339. package/dist/components/Button/Button.js.map +1 -1
  340. package/dist/components/Button/Button.module.cjs.map +1 -1
  341. package/dist/components/Button/Button.module.js.map +1 -1
  342. package/dist/components/Button/ButtonContent.cjs.map +1 -1
  343. package/dist/components/Button/ButtonContent.js.map +1 -1
  344. package/dist/components/Button/ButtonSlot.cjs.map +1 -1
  345. package/dist/components/Button/ButtonSlot.js.map +1 -1
  346. package/dist/components/Button/button-class.cjs.map +1 -1
  347. package/dist/components/Button/button-class.js.map +1 -1
  348. package/dist/components/Button/link-rel.cjs.map +1 -1
  349. package/dist/components/Button/link-rel.js.map +1 -1
  350. package/dist/components/Button/slot.cjs.map +1 -1
  351. package/dist/components/Button/slot.js.map +1 -1
  352. package/dist/components/Calendar/Calendar.cjs.map +1 -1
  353. package/dist/components/Calendar/Calendar.js.map +1 -1
  354. package/dist/components/Calendar/Calendar.module.cjs.map +1 -1
  355. package/dist/components/Calendar/Calendar.module.js.map +1 -1
  356. package/dist/components/Card/Card.cjs.map +1 -1
  357. package/dist/components/Card/Card.js.map +1 -1
  358. package/dist/components/Card/Card.module.cjs.map +1 -1
  359. package/dist/components/Card/Card.module.js.map +1 -1
  360. package/dist/components/Carousel/Carousel.cjs.map +1 -1
  361. package/dist/components/Carousel/Carousel.js.map +1 -1
  362. package/dist/components/Carousel/Carousel.module.cjs.map +1 -1
  363. package/dist/components/Carousel/Carousel.module.js.map +1 -1
  364. package/dist/components/Center/Center.cjs.map +1 -1
  365. package/dist/components/Center/Center.js.map +1 -1
  366. package/dist/components/Center/Center.module.cjs.map +1 -1
  367. package/dist/components/Center/Center.module.js.map +1 -1
  368. package/dist/components/Chat/Chat.cjs.map +1 -1
  369. package/dist/components/Chat/Chat.js.map +1 -1
  370. package/dist/components/Chat/Chat.module.cjs.map +1 -1
  371. package/dist/components/Chat/Chat.module.js.map +1 -1
  372. package/dist/components/Chat/ChatActionsMenu.cjs.map +1 -1
  373. package/dist/components/Chat/ChatActionsMenu.js.map +1 -1
  374. package/dist/components/Chat/ChatAttachments.cjs.map +1 -1
  375. package/dist/components/Chat/ChatAttachments.js.map +1 -1
  376. package/dist/components/Chat/ChatBubble.cjs.map +1 -1
  377. package/dist/components/Chat/ChatBubble.js.map +1 -1
  378. package/dist/components/Chat/ChatComposer.cjs.map +1 -1
  379. package/dist/components/Chat/ChatComposer.js.map +1 -1
  380. package/dist/components/Chat/chat-groups.cjs +1 -1
  381. package/dist/components/Chat/chat-groups.cjs.map +1 -1
  382. package/dist/components/Chat/chat-groups.js +2 -6
  383. package/dist/components/Chat/chat-groups.js.map +1 -1
  384. package/dist/components/Chat/chat-receipt.cjs.map +1 -1
  385. package/dist/components/Chat/chat-receipt.js.map +1 -1
  386. package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
  387. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  388. package/dist/components/Checkbox/Checkbox.module.cjs.map +1 -1
  389. package/dist/components/Checkbox/Checkbox.module.js.map +1 -1
  390. package/dist/components/ChipInput/ChipInput.cjs +1 -1
  391. package/dist/components/ChipInput/ChipInput.cjs.map +1 -1
  392. package/dist/components/ChipInput/ChipInput.js +2 -12
  393. package/dist/components/ChipInput/ChipInput.js.map +1 -1
  394. package/dist/components/ChipInput/ChipInput.module.cjs.map +1 -1
  395. package/dist/components/ChipInput/ChipInput.module.js.map +1 -1
  396. package/dist/components/ClickOutside/ClickOutside.cjs.map +1 -1
  397. package/dist/components/ClickOutside/ClickOutside.js.map +1 -1
  398. package/dist/components/CodeBlock/CodeBlock.cjs +1 -1
  399. package/dist/components/CodeBlock/CodeBlock.cjs.map +1 -1
  400. package/dist/components/CodeBlock/CodeBlock.js +1 -1
  401. package/dist/components/CodeBlock/CodeBlock.js.map +1 -1
  402. package/dist/components/CodeBlock/CodeBlock.module.cjs.map +1 -1
  403. package/dist/components/CodeBlock/CodeBlock.module.js.map +1 -1
  404. package/dist/components/CodeBlock/tokenize.cjs +1 -1
  405. package/dist/components/CodeBlock/tokenize.cjs.map +1 -1
  406. package/dist/components/CodeBlock/tokenize.js +54 -25
  407. package/dist/components/CodeBlock/tokenize.js.map +1 -1
  408. package/dist/components/Collapsible/Collapsible.cjs.map +1 -1
  409. package/dist/components/Collapsible/Collapsible.js.map +1 -1
  410. package/dist/components/Collapsible/Collapsible.module.cjs.map +1 -1
  411. package/dist/components/Collapsible/Collapsible.module.js.map +1 -1
  412. package/dist/components/Combobox/Combobox.cjs.map +1 -1
  413. package/dist/components/Combobox/Combobox.js.map +1 -1
  414. package/dist/components/Combobox/Combobox.module.cjs.map +1 -1
  415. package/dist/components/Combobox/Combobox.module.js.map +1 -1
  416. package/dist/components/Combobox/use-listbox-dismiss.cjs.map +1 -1
  417. package/dist/components/Combobox/use-listbox-dismiss.js.map +1 -1
  418. package/dist/components/Command/Command.cjs +1 -1
  419. package/dist/components/Command/Command.cjs.map +1 -1
  420. package/dist/components/Command/Command.js +4 -11
  421. package/dist/components/Command/Command.js.map +1 -1
  422. package/dist/components/Command/Command.module.cjs.map +1 -1
  423. package/dist/components/Command/Command.module.js.map +1 -1
  424. package/dist/components/ConditionalWrapper/ConditionalWrapper.cjs.map +1 -1
  425. package/dist/components/ConditionalWrapper/ConditionalWrapper.js.map +1 -1
  426. package/dist/components/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
  427. package/dist/components/ConfirmDialog/ConfirmDialog.js.map +1 -1
  428. package/dist/components/ContextMenu/ContextMenu.cjs +1 -1
  429. package/dist/components/ContextMenu/ContextMenu.cjs.map +1 -1
  430. package/dist/components/ContextMenu/ContextMenu.js +1 -1
  431. package/dist/components/ContextMenu/ContextMenu.js.map +1 -1
  432. package/dist/components/ContextMenu/ContextMenu.module.cjs.map +1 -1
  433. package/dist/components/ContextMenu/ContextMenu.module.js.map +1 -1
  434. package/dist/components/CopyButton/CopyButton.cjs.map +1 -1
  435. package/dist/components/CopyButton/CopyButton.js.map +1 -1
  436. package/dist/components/CopyButton/CopyButton.module.cjs.map +1 -1
  437. package/dist/components/CopyButton/CopyButton.module.js.map +1 -1
  438. package/dist/components/DataList/DataList.cjs.map +1 -1
  439. package/dist/components/DataList/DataList.js.map +1 -1
  440. package/dist/components/DataList/DataList.module.cjs.map +1 -1
  441. package/dist/components/DataList/DataList.module.js.map +1 -1
  442. package/dist/components/DataTable/DataTable.cjs +1 -1
  443. package/dist/components/DataTable/DataTable.cjs.map +1 -1
  444. package/dist/components/DataTable/DataTable.js +6 -14
  445. package/dist/components/DataTable/DataTable.js.map +1 -1
  446. package/dist/components/DataTable/DataTable.module.cjs.map +1 -1
  447. package/dist/components/DataTable/DataTable.module.js.map +1 -1
  448. package/dist/components/DataTable/EditableCell.cjs +1 -1
  449. package/dist/components/DataTable/EditableCell.cjs.map +1 -1
  450. package/dist/components/DataTable/EditableCell.js +1 -9
  451. package/dist/components/DataTable/EditableCell.js.map +1 -1
  452. package/dist/components/DataTable/LoadingRows.cjs.map +1 -1
  453. package/dist/components/DataTable/LoadingRows.js.map +1 -1
  454. package/dist/components/DataTable/edit-labels.cjs.map +1 -1
  455. package/dist/components/DataTable/edit-labels.js.map +1 -1
  456. package/dist/components/DataTable/use-dev-warnings.cjs.map +1 -1
  457. package/dist/components/DataTable/use-dev-warnings.js.map +1 -1
  458. package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
  459. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  460. package/dist/components/DateRangePicker/DateRangePicker.cjs.map +1 -1
  461. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
  462. package/dist/components/DateRangePicker/DateRangePicker.module.cjs.map +1 -1
  463. package/dist/components/DateRangePicker/DateRangePicker.module.js.map +1 -1
  464. package/dist/components/DescriptionList/DescriptionList.cjs.map +1 -1
  465. package/dist/components/DescriptionList/DescriptionList.js.map +1 -1
  466. package/dist/components/DescriptionList/DescriptionList.module.cjs.map +1 -1
  467. package/dist/components/DescriptionList/DescriptionList.module.js.map +1 -1
  468. package/dist/components/Divider/Divider.cjs.map +1 -1
  469. package/dist/components/Divider/Divider.js.map +1 -1
  470. package/dist/components/Divider/Divider.module.cjs.map +1 -1
  471. package/dist/components/Divider/Divider.module.js.map +1 -1
  472. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  473. package/dist/components/Drawer/Drawer.js.map +1 -1
  474. package/dist/components/Drawer/Drawer.module.cjs.map +1 -1
  475. package/dist/components/Drawer/Drawer.module.js.map +1 -1
  476. package/dist/components/DropdownMenu/DropdownMenu.cjs +1 -1
  477. package/dist/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
  478. package/dist/components/DropdownMenu/DropdownMenu.js +2 -14
  479. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
  480. package/dist/components/DropdownMenu/DropdownMenu.module.cjs.map +1 -1
  481. package/dist/components/DropdownMenu/DropdownMenu.module.js.map +1 -1
  482. package/dist/components/Dropzone/Dropzone.cjs.map +1 -1
  483. package/dist/components/Dropzone/Dropzone.js.map +1 -1
  484. package/dist/components/Dropzone/Dropzone.module.cjs.map +1 -1
  485. package/dist/components/Dropzone/Dropzone.module.js.map +1 -1
  486. package/dist/components/EmptyState/EmptyState.cjs.map +1 -1
  487. package/dist/components/EmptyState/EmptyState.js.map +1 -1
  488. package/dist/components/EmptyState/EmptyState.module.cjs.map +1 -1
  489. package/dist/components/EmptyState/EmptyState.module.js.map +1 -1
  490. package/dist/components/ErrorState/ErrorState.cjs.map +1 -1
  491. package/dist/components/ErrorState/ErrorState.js.map +1 -1
  492. package/dist/components/ErrorState/ErrorState.module.cjs.map +1 -1
  493. package/dist/components/ErrorState/ErrorState.module.js.map +1 -1
  494. package/dist/components/ErrorText/ErrorText.cjs.map +1 -1
  495. package/dist/components/ErrorText/ErrorText.js.map +1 -1
  496. package/dist/components/ErrorText/ErrorText.module.cjs.map +1 -1
  497. package/dist/components/ErrorText/ErrorText.module.js.map +1 -1
  498. package/dist/components/FileUpload/FileUpload.cjs +1 -1
  499. package/dist/components/FileUpload/FileUpload.cjs.map +1 -1
  500. package/dist/components/FileUpload/FileUpload.js +7 -17
  501. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  502. package/dist/components/FileUpload/FileUpload.module.cjs.map +1 -1
  503. package/dist/components/FileUpload/FileUpload.module.js.map +1 -1
  504. package/dist/components/FilterBar/FilterBar.cjs.map +1 -1
  505. package/dist/components/FilterBar/FilterBar.js.map +1 -1
  506. package/dist/components/FilterBar/FilterBar.module.cjs.map +1 -1
  507. package/dist/components/FilterBar/FilterBar.module.js.map +1 -1
  508. package/dist/components/FilterBar/filter-apply.cjs.map +1 -1
  509. package/dist/components/FilterBar/filter-apply.js.map +1 -1
  510. package/dist/components/FilterBar/filter-model.cjs.map +1 -1
  511. package/dist/components/FilterBar/filter-model.js.map +1 -1
  512. package/dist/components/FilterBar/filter-query.cjs +1 -1
  513. package/dist/components/FilterBar/filter-query.cjs.map +1 -1
  514. package/dist/components/FilterBar/filter-query.js +2 -5
  515. package/dist/components/FilterBar/filter-query.js.map +1 -1
  516. package/dist/components/FilterPanel/FilterPanel.cjs.map +1 -1
  517. package/dist/components/FilterPanel/FilterPanel.js.map +1 -1
  518. package/dist/components/FilterPanel/FilterPanel.module.cjs.map +1 -1
  519. package/dist/components/FilterPanel/FilterPanel.module.js.map +1 -1
  520. package/dist/components/FloatingActionButton/FloatingActionButton.cjs.map +1 -1
  521. package/dist/components/FloatingActionButton/FloatingActionButton.js.map +1 -1
  522. package/dist/components/FloatingActionButton/FloatingActionButton.module.cjs.map +1 -1
  523. package/dist/components/FloatingActionButton/FloatingActionButton.module.js.map +1 -1
  524. package/dist/components/For/For.cjs.map +1 -1
  525. package/dist/components/For/For.js.map +1 -1
  526. package/dist/components/Form/Form.cjs.map +1 -1
  527. package/dist/components/Form/Form.js.map +1 -1
  528. package/dist/components/Form/Form.module.cjs.map +1 -1
  529. package/dist/components/Form/Form.module.js.map +1 -1
  530. package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
  531. package/dist/components/HoverCard/HoverCard.js.map +1 -1
  532. package/dist/components/HoverCard/HoverCard.module.cjs.map +1 -1
  533. package/dist/components/HoverCard/HoverCard.module.js.map +1 -1
  534. package/dist/components/Image/Image.cjs.map +1 -1
  535. package/dist/components/Image/Image.js.map +1 -1
  536. package/dist/components/Image/Image.module.cjs.map +1 -1
  537. package/dist/components/Image/Image.module.js.map +1 -1
  538. package/dist/components/ImageCropper/ImageCropper.cjs +1 -1
  539. package/dist/components/ImageCropper/ImageCropper.cjs.map +1 -1
  540. package/dist/components/ImageCropper/ImageCropper.js +4 -8
  541. package/dist/components/ImageCropper/ImageCropper.js.map +1 -1
  542. package/dist/components/ImageCropper/ImageCropper.module.cjs.map +1 -1
  543. package/dist/components/ImageCropper/ImageCropper.module.js.map +1 -1
  544. package/dist/components/ImageCropper/crop-geometry.cjs.map +1 -1
  545. package/dist/components/ImageCropper/crop-geometry.js.map +1 -1
  546. package/dist/components/Input/Input.cjs.map +1 -1
  547. package/dist/components/Input/Input.js.map +1 -1
  548. package/dist/components/Input/Input.module.cjs.map +1 -1
  549. package/dist/components/Input/Input.module.js.map +1 -1
  550. package/dist/components/InstallBanner/InstallBanner.cjs.map +1 -1
  551. package/dist/components/InstallBanner/InstallBanner.js.map +1 -1
  552. package/dist/components/InstallBanner/InstallBanner.module.cjs.map +1 -1
  553. package/dist/components/InstallBanner/InstallBanner.module.js.map +1 -1
  554. package/dist/components/InstallButton/InstallButton.cjs.map +1 -1
  555. package/dist/components/InstallButton/InstallButton.js.map +1 -1
  556. package/dist/components/InstallButton/InstallButton.module.cjs.map +1 -1
  557. package/dist/components/InstallButton/InstallButton.module.js.map +1 -1
  558. package/dist/components/InstallButton/install-hints.cjs.map +1 -1
  559. package/dist/components/InstallButton/install-hints.js.map +1 -1
  560. package/dist/components/Kanban/Kanban.cjs.map +1 -1
  561. package/dist/components/Kanban/Kanban.js.map +1 -1
  562. package/dist/components/Kanban/Kanban.module.cjs.map +1 -1
  563. package/dist/components/Kanban/Kanban.module.js.map +1 -1
  564. package/dist/components/Kbd/Kbd.cjs.map +1 -1
  565. package/dist/components/Kbd/Kbd.js.map +1 -1
  566. package/dist/components/Kbd/Kbd.module.cjs.map +1 -1
  567. package/dist/components/Kbd/Kbd.module.js.map +1 -1
  568. package/dist/components/Label/Label.cjs.map +1 -1
  569. package/dist/components/Label/Label.js.map +1 -1
  570. package/dist/components/Label/Label.module.cjs.map +1 -1
  571. package/dist/components/Label/Label.module.js.map +1 -1
  572. package/dist/components/Layout/Layout.cjs.map +1 -1
  573. package/dist/components/Layout/Layout.js.map +1 -1
  574. package/dist/components/Layout/Layout.module.cjs.map +1 -1
  575. package/dist/components/Layout/Layout.module.js.map +1 -1
  576. package/dist/components/Lightbox/Lightbox.cjs +1 -1
  577. package/dist/components/Lightbox/Lightbox.cjs.map +1 -1
  578. package/dist/components/Lightbox/Lightbox.js +1 -1
  579. package/dist/components/Lightbox/Lightbox.js.map +1 -1
  580. package/dist/components/Lightbox/Lightbox.module.cjs.map +1 -1
  581. package/dist/components/Lightbox/Lightbox.module.js.map +1 -1
  582. package/dist/components/ListTile/ListTile.cjs.map +1 -1
  583. package/dist/components/ListTile/ListTile.js.map +1 -1
  584. package/dist/components/ListTile/ListTile.module.cjs.map +1 -1
  585. package/dist/components/ListTile/ListTile.module.js.map +1 -1
  586. package/dist/components/Markdown/Markdown.cjs.map +1 -1
  587. package/dist/components/Markdown/Markdown.js.map +1 -1
  588. package/dist/components/Markdown/Markdown.module.cjs.map +1 -1
  589. package/dist/components/Markdown/Markdown.module.js.map +1 -1
  590. package/dist/components/Markdown/markdown-parse.cjs +6 -6
  591. package/dist/components/Markdown/markdown-parse.cjs.map +1 -1
  592. package/dist/components/Markdown/markdown-parse.js +94 -96
  593. package/dist/components/Markdown/markdown-parse.js.map +1 -1
  594. package/dist/components/Masonry/Masonry.cjs.map +1 -1
  595. package/dist/components/Masonry/Masonry.js.map +1 -1
  596. package/dist/components/Masonry/Masonry.module.cjs.map +1 -1
  597. package/dist/components/Masonry/Masonry.module.js.map +1 -1
  598. package/dist/components/Masonry/masonry-layout.cjs.map +1 -1
  599. package/dist/components/Masonry/masonry-layout.js.map +1 -1
  600. package/dist/components/Menubar/Menubar.cjs.map +1 -1
  601. package/dist/components/Menubar/Menubar.js.map +1 -1
  602. package/dist/components/Menubar/Menubar.module.cjs.map +1 -1
  603. package/dist/components/Menubar/Menubar.module.js.map +1 -1
  604. package/dist/components/Modal/Modal.cjs.map +1 -1
  605. package/dist/components/Modal/Modal.js.map +1 -1
  606. package/dist/components/Modal/Modal.module.cjs.map +1 -1
  607. package/dist/components/Modal/Modal.module.js.map +1 -1
  608. package/dist/components/ModalsManager/ModalsManager.cjs.map +1 -1
  609. package/dist/components/ModalsManager/ModalsManager.js.map +1 -1
  610. package/dist/components/ModalsManager/ModalsManager.module.cjs.map +1 -1
  611. package/dist/components/ModalsManager/ModalsManager.module.js.map +1 -1
  612. package/dist/components/Money/Money.cjs.map +1 -1
  613. package/dist/components/Money/Money.js.map +1 -1
  614. package/dist/components/MultiSelect/MultiSelect.cjs.map +1 -1
  615. package/dist/components/MultiSelect/MultiSelect.js.map +1 -1
  616. package/dist/components/MultiSelect/MultiSelect.module.cjs.map +1 -1
  617. package/dist/components/MultiSelect/MultiSelect.module.js.map +1 -1
  618. package/dist/components/NProgress/NProgress.cjs.map +1 -1
  619. package/dist/components/NProgress/NProgress.js.map +1 -1
  620. package/dist/components/NProgress/NProgress.module.cjs.map +1 -1
  621. package/dist/components/NProgress/NProgress.module.js.map +1 -1
  622. package/dist/components/Navbar/Navbar.cjs.map +1 -1
  623. package/dist/components/Navbar/Navbar.js.map +1 -1
  624. package/dist/components/Navbar/Navbar.module.cjs.map +1 -1
  625. package/dist/components/Navbar/Navbar.module.js.map +1 -1
  626. package/dist/components/NavigationMenu/NavigationMenu.cjs.map +1 -1
  627. package/dist/components/NavigationMenu/NavigationMenu.js.map +1 -1
  628. package/dist/components/NavigationMenu/NavigationMenu.module.cjs.map +1 -1
  629. package/dist/components/NavigationMenu/NavigationMenu.module.js.map +1 -1
  630. package/dist/components/NavigationRail/NavigationRail.cjs.map +1 -1
  631. package/dist/components/NavigationRail/NavigationRail.js.map +1 -1
  632. package/dist/components/NavigationRail/NavigationRail.module.cjs.map +1 -1
  633. package/dist/components/NavigationRail/NavigationRail.module.js.map +1 -1
  634. package/dist/components/NotificationCenter/NotificationCenter.cjs.map +1 -1
  635. package/dist/components/NotificationCenter/NotificationCenter.js.map +1 -1
  636. package/dist/components/NotificationCenter/NotificationCenter.module.cjs.map +1 -1
  637. package/dist/components/NotificationCenter/NotificationCenter.module.js.map +1 -1
  638. package/dist/components/NotificationCenter/use-notification-inbox.cjs.map +1 -1
  639. package/dist/components/NotificationCenter/use-notification-inbox.js.map +1 -1
  640. package/dist/components/OfflineIndicator/OfflineIndicator.cjs.map +1 -1
  641. package/dist/components/OfflineIndicator/OfflineIndicator.js.map +1 -1
  642. package/dist/components/OfflineIndicator/OfflineIndicator.module.cjs.map +1 -1
  643. package/dist/components/OfflineIndicator/OfflineIndicator.module.js.map +1 -1
  644. package/dist/components/Page/Page.cjs.map +1 -1
  645. package/dist/components/Page/Page.js.map +1 -1
  646. package/dist/components/Page/Page.module.cjs.map +1 -1
  647. package/dist/components/Page/Page.module.js.map +1 -1
  648. package/dist/components/Pagination/Pagination.cjs.map +1 -1
  649. package/dist/components/Pagination/Pagination.js.map +1 -1
  650. package/dist/components/Pagination/Pagination.module.cjs.map +1 -1
  651. package/dist/components/Pagination/Pagination.module.js.map +1 -1
  652. package/dist/components/PasswordInput/PasswordInput.cjs.map +1 -1
  653. package/dist/components/PasswordInput/PasswordInput.js.map +1 -1
  654. package/dist/components/PasswordInput/PasswordInput.module.cjs.map +1 -1
  655. package/dist/components/PasswordInput/PasswordInput.module.js.map +1 -1
  656. package/dist/components/PinInput/PinInput.cjs.map +1 -1
  657. package/dist/components/PinInput/PinInput.js.map +1 -1
  658. package/dist/components/PinInput/PinInput.module.cjs.map +1 -1
  659. package/dist/components/PinInput/PinInput.module.js.map +1 -1
  660. package/dist/components/Popover/Popover.cjs.map +1 -1
  661. package/dist/components/Popover/Popover.js.map +1 -1
  662. package/dist/components/Popover/Popover.module.cjs.map +1 -1
  663. package/dist/components/Popover/Popover.module.js.map +1 -1
  664. package/dist/components/Portal/Portal.cjs.map +1 -1
  665. package/dist/components/Portal/Portal.js.map +1 -1
  666. package/dist/components/Portal/anchor-position.cjs.map +1 -1
  667. package/dist/components/Portal/anchor-position.js.map +1 -1
  668. package/dist/components/Portal/escape-layer.cjs.map +1 -1
  669. package/dist/components/Portal/escape-layer.js.map +1 -1
  670. package/dist/components/Portal/portal-host.cjs.map +1 -1
  671. package/dist/components/Portal/portal-host.js.map +1 -1
  672. package/dist/components/Portal/tab-bridge.cjs +1 -1
  673. package/dist/components/Portal/tab-bridge.cjs.map +1 -1
  674. package/dist/components/Portal/tab-bridge.js +1 -5
  675. package/dist/components/Portal/tab-bridge.js.map +1 -1
  676. package/dist/components/Progress/Progress.cjs.map +1 -1
  677. package/dist/components/Progress/Progress.js.map +1 -1
  678. package/dist/components/Progress/Progress.module.cjs.map +1 -1
  679. package/dist/components/Progress/Progress.module.js.map +1 -1
  680. package/dist/components/QRCode/QRCode.cjs.map +1 -1
  681. package/dist/components/QRCode/QRCode.js.map +1 -1
  682. package/dist/components/QRCode/QRCode.module.cjs.map +1 -1
  683. package/dist/components/QRCode/QRCode.module.js.map +1 -1
  684. package/dist/components/QRCode/qr-encode.cjs +1 -1
  685. package/dist/components/QRCode/qr-encode.cjs.map +1 -1
  686. package/dist/components/QRCode/qr-encode.js +7 -13
  687. package/dist/components/QRCode/qr-encode.js.map +1 -1
  688. package/dist/components/QRCode/qr-tables.cjs.map +1 -1
  689. package/dist/components/QRCode/qr-tables.js.map +1 -1
  690. package/dist/components/Radio/Radio.cjs.map +1 -1
  691. package/dist/components/Radio/Radio.js.map +1 -1
  692. package/dist/components/Radio/Radio.module.cjs.map +1 -1
  693. package/dist/components/Radio/Radio.module.js.map +1 -1
  694. package/dist/components/RangeSlider/RangeSlider.cjs.map +1 -1
  695. package/dist/components/RangeSlider/RangeSlider.js.map +1 -1
  696. package/dist/components/RangeSlider/RangeSlider.module.cjs.map +1 -1
  697. package/dist/components/RangeSlider/RangeSlider.module.js.map +1 -1
  698. package/dist/components/RatingStars/RatingStars.cjs.map +1 -1
  699. package/dist/components/RatingStars/RatingStars.js.map +1 -1
  700. package/dist/components/RatingStars/RatingStars.module.cjs.map +1 -1
  701. package/dist/components/RatingStars/RatingStars.module.js.map +1 -1
  702. package/dist/components/RefreshIndicator/RefreshIndicator.cjs +1 -1
  703. package/dist/components/RefreshIndicator/RefreshIndicator.cjs.map +1 -1
  704. package/dist/components/RefreshIndicator/RefreshIndicator.js +10 -18
  705. package/dist/components/RefreshIndicator/RefreshIndicator.js.map +1 -1
  706. package/dist/components/RefreshIndicator/RefreshIndicator.module.cjs.map +1 -1
  707. package/dist/components/RefreshIndicator/RefreshIndicator.module.js.map +1 -1
  708. package/dist/components/RelativeTime/RelativeTime.cjs.map +1 -1
  709. package/dist/components/RelativeTime/RelativeTime.js.map +1 -1
  710. package/dist/components/Resizable/Resizable.cjs +1 -1
  711. package/dist/components/Resizable/Resizable.cjs.map +1 -1
  712. package/dist/components/Resizable/Resizable.js +1 -9
  713. package/dist/components/Resizable/Resizable.js.map +1 -1
  714. package/dist/components/Resizable/Resizable.module.cjs.map +1 -1
  715. package/dist/components/Resizable/Resizable.module.js.map +1 -1
  716. package/dist/components/Responsive/Responsive.cjs.map +1 -1
  717. package/dist/components/Responsive/Responsive.js.map +1 -1
  718. package/dist/components/Reveal/Reveal.cjs.map +1 -1
  719. package/dist/components/Reveal/Reveal.js.map +1 -1
  720. package/dist/components/Reveal/Reveal.module.cjs.map +1 -1
  721. package/dist/components/Reveal/Reveal.module.js.map +1 -1
  722. package/dist/components/Reveal/reveal-threshold.cjs.map +1 -1
  723. package/dist/components/Reveal/reveal-threshold.js.map +1 -1
  724. package/dist/components/SafeArea/SafeArea.cjs.map +1 -1
  725. package/dist/components/SafeArea/SafeArea.js.map +1 -1
  726. package/dist/components/SafeArea/SafeArea.module.cjs.map +1 -1
  727. package/dist/components/SafeArea/SafeArea.module.js.map +1 -1
  728. package/dist/components/Scheduler/Scheduler.cjs.map +1 -1
  729. package/dist/components/Scheduler/Scheduler.js.map +1 -1
  730. package/dist/components/Scheduler/Scheduler.module.cjs.map +1 -1
  731. package/dist/components/Scheduler/Scheduler.module.js.map +1 -1
  732. package/dist/components/Scheduler/scheduler-layout.cjs.map +1 -1
  733. package/dist/components/Scheduler/scheduler-layout.js.map +1 -1
  734. package/dist/components/ScrollArea/ScrollArea.cjs.map +1 -1
  735. package/dist/components/ScrollArea/ScrollArea.js.map +1 -1
  736. package/dist/components/ScrollArea/ScrollArea.module.cjs.map +1 -1
  737. package/dist/components/ScrollArea/ScrollArea.module.js.map +1 -1
  738. package/dist/components/SearchBar/SearchBar.cjs.map +1 -1
  739. package/dist/components/SearchBar/SearchBar.js.map +1 -1
  740. package/dist/components/SearchBar/SearchBar.module.cjs.map +1 -1
  741. package/dist/components/SearchBar/SearchBar.module.js.map +1 -1
  742. package/dist/components/SectionHeader/SectionHeader.cjs.map +1 -1
  743. package/dist/components/SectionHeader/SectionHeader.js.map +1 -1
  744. package/dist/components/SectionHeader/SectionHeader.module.cjs.map +1 -1
  745. package/dist/components/SectionHeader/SectionHeader.module.js.map +1 -1
  746. package/dist/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
  747. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  748. package/dist/components/SegmentedControl/SegmentedControl.module.cjs.map +1 -1
  749. package/dist/components/SegmentedControl/SegmentedControl.module.js.map +1 -1
  750. package/dist/components/Select/CaretIcon.cjs.map +1 -1
  751. package/dist/components/Select/CaretIcon.js.map +1 -1
  752. package/dist/components/Select/Select.cjs.map +1 -1
  753. package/dist/components/Select/Select.js.map +1 -1
  754. package/dist/components/Select/Select.module.cjs.map +1 -1
  755. package/dist/components/Select/Select.module.js.map +1 -1
  756. package/dist/components/Select/options.cjs.map +1 -1
  757. package/dist/components/Select/options.js.map +1 -1
  758. package/dist/components/Sidebar/Sidebar.cjs +1 -1
  759. package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
  760. package/dist/components/Sidebar/Sidebar.js +13 -23
  761. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  762. package/dist/components/Sidebar/Sidebar.module.cjs.map +1 -1
  763. package/dist/components/Sidebar/Sidebar.module.js.map +1 -1
  764. package/dist/components/Sidebar/SidebarEntry.cjs.map +1 -1
  765. package/dist/components/Sidebar/SidebarEntry.js.map +1 -1
  766. package/dist/components/Sidebar/active-nav-key.cjs.map +1 -1
  767. package/dist/components/Sidebar/active-nav-key.js.map +1 -1
  768. package/dist/components/SignaturePad/SignaturePad.cjs +1 -1
  769. package/dist/components/SignaturePad/SignaturePad.cjs.map +1 -1
  770. package/dist/components/SignaturePad/SignaturePad.js +1 -5
  771. package/dist/components/SignaturePad/SignaturePad.js.map +1 -1
  772. package/dist/components/SignaturePad/SignaturePad.module.cjs.map +1 -1
  773. package/dist/components/SignaturePad/SignaturePad.module.js.map +1 -1
  774. package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
  775. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  776. package/dist/components/Skeleton/Skeleton.module.cjs.map +1 -1
  777. package/dist/components/Skeleton/Skeleton.module.js.map +1 -1
  778. package/dist/components/Slider/Slider.cjs.map +1 -1
  779. package/dist/components/Slider/Slider.js.map +1 -1
  780. package/dist/components/Slider/Slider.module.cjs.map +1 -1
  781. package/dist/components/Slider/Slider.module.js.map +1 -1
  782. package/dist/components/Spacer/Spacer.cjs.map +1 -1
  783. package/dist/components/Spacer/Spacer.js.map +1 -1
  784. package/dist/components/Spacer/Spacer.module.cjs.map +1 -1
  785. package/dist/components/Spacer/Spacer.module.js.map +1 -1
  786. package/dist/components/Sparkline/Sparkline.cjs.map +1 -1
  787. package/dist/components/Sparkline/Sparkline.js.map +1 -1
  788. package/dist/components/Sparkline/Sparkline.module.cjs.map +1 -1
  789. package/dist/components/Sparkline/Sparkline.module.js.map +1 -1
  790. package/dist/components/Sparkline/sparkline-geometry.cjs.map +1 -1
  791. package/dist/components/Sparkline/sparkline-geometry.js.map +1 -1
  792. package/dist/components/Spinner/Spinner.cjs.map +1 -1
  793. package/dist/components/Spinner/Spinner.js.map +1 -1
  794. package/dist/components/Spinner/Spinner.module.cjs.map +1 -1
  795. package/dist/components/Spinner/Spinner.module.js.map +1 -1
  796. package/dist/components/Stat/Stat.cjs.map +1 -1
  797. package/dist/components/Stat/Stat.js.map +1 -1
  798. package/dist/components/Stat/Stat.module.cjs.map +1 -1
  799. package/dist/components/Stat/Stat.module.js.map +1 -1
  800. package/dist/components/Stepper/Stepper.cjs.map +1 -1
  801. package/dist/components/Stepper/Stepper.js.map +1 -1
  802. package/dist/components/Stepper/Stepper.module.cjs.map +1 -1
  803. package/dist/components/Stepper/Stepper.module.js.map +1 -1
  804. package/dist/components/StepperInput/StepperInput.cjs.map +1 -1
  805. package/dist/components/StepperInput/StepperInput.js.map +1 -1
  806. package/dist/components/StepperInput/StepperInput.module.cjs.map +1 -1
  807. package/dist/components/StepperInput/StepperInput.module.js.map +1 -1
  808. package/dist/components/Switch/Switch.cjs.map +1 -1
  809. package/dist/components/Switch/Switch.js.map +1 -1
  810. package/dist/components/Switch/Switch.module.cjs.map +1 -1
  811. package/dist/components/Switch/Switch.module.js.map +1 -1
  812. package/dist/components/SyncStatusBadge/SyncStatusBadge.cjs.map +1 -1
  813. package/dist/components/SyncStatusBadge/SyncStatusBadge.js.map +1 -1
  814. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.cjs.map +1 -1
  815. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.js.map +1 -1
  816. package/dist/components/Table/Table.cjs.map +1 -1
  817. package/dist/components/Table/Table.js.map +1 -1
  818. package/dist/components/Table/Table.module.cjs.map +1 -1
  819. package/dist/components/Table/Table.module.js.map +1 -1
  820. package/dist/components/Tabs/Tabs.cjs.map +1 -1
  821. package/dist/components/Tabs/Tabs.js.map +1 -1
  822. package/dist/components/Tabs/Tabs.module.cjs.map +1 -1
  823. package/dist/components/Tabs/Tabs.module.js.map +1 -1
  824. package/dist/components/Tag/Tag.cjs.map +1 -1
  825. package/dist/components/Tag/Tag.js.map +1 -1
  826. package/dist/components/Tag/Tag.module.cjs.map +1 -1
  827. package/dist/components/Tag/Tag.module.js.map +1 -1
  828. package/dist/components/Textarea/Textarea.cjs.map +1 -1
  829. package/dist/components/Textarea/Textarea.js.map +1 -1
  830. package/dist/components/Textarea/Textarea.module.cjs.map +1 -1
  831. package/dist/components/Textarea/Textarea.module.js.map +1 -1
  832. package/dist/components/TimePicker/TimePicker.cjs.map +1 -1
  833. package/dist/components/TimePicker/TimePicker.js.map +1 -1
  834. package/dist/components/TimePicker/TimePicker.module.cjs.map +1 -1
  835. package/dist/components/TimePicker/TimePicker.module.js.map +1 -1
  836. package/dist/components/Timeline/Timeline.cjs.map +1 -1
  837. package/dist/components/Timeline/Timeline.js.map +1 -1
  838. package/dist/components/Timeline/Timeline.module.cjs.map +1 -1
  839. package/dist/components/Timeline/Timeline.module.js.map +1 -1
  840. package/dist/components/Toast/Toast.module.cjs.map +1 -1
  841. package/dist/components/Toast/Toast.module.js.map +1 -1
  842. package/dist/components/Toast/ToastProvider.cjs.map +1 -1
  843. package/dist/components/Toast/ToastProvider.js.map +1 -1
  844. package/dist/components/Toggle/Toggle.cjs.map +1 -1
  845. package/dist/components/Toggle/Toggle.js.map +1 -1
  846. package/dist/components/Toggle/Toggle.module.cjs.map +1 -1
  847. package/dist/components/Toggle/Toggle.module.js.map +1 -1
  848. package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
  849. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  850. package/dist/components/ToggleGroup/ToggleGroup.module.cjs.map +1 -1
  851. package/dist/components/ToggleGroup/ToggleGroup.module.js.map +1 -1
  852. package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
  853. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  854. package/dist/components/Tooltip/Tooltip.module.cjs.map +1 -1
  855. package/dist/components/Tooltip/Tooltip.module.js.map +1 -1
  856. package/dist/components/Tour/Tour.cjs +1 -1
  857. package/dist/components/Tour/Tour.cjs.map +1 -1
  858. package/dist/components/Tour/Tour.js +1 -5
  859. package/dist/components/Tour/Tour.js.map +1 -1
  860. package/dist/components/Tour/Tour.module.cjs.map +1 -1
  861. package/dist/components/Tour/Tour.module.js.map +1 -1
  862. package/dist/components/Tour/tour-position.cjs.map +1 -1
  863. package/dist/components/Tour/tour-position.js.map +1 -1
  864. package/dist/components/Transfer/Transfer.cjs.map +1 -1
  865. package/dist/components/Transfer/Transfer.js.map +1 -1
  866. package/dist/components/Transfer/Transfer.module.cjs.map +1 -1
  867. package/dist/components/Transfer/Transfer.module.js.map +1 -1
  868. package/dist/components/Transfer/transfer-state.cjs.map +1 -1
  869. package/dist/components/Transfer/transfer-state.js.map +1 -1
  870. package/dist/components/TreeView/TreeView.cjs.map +1 -1
  871. package/dist/components/TreeView/TreeView.js.map +1 -1
  872. package/dist/components/TreeView/TreeView.module.cjs.map +1 -1
  873. package/dist/components/TreeView/TreeView.module.js.map +1 -1
  874. package/dist/components/TruncateText/TruncateText.cjs.map +1 -1
  875. package/dist/components/TruncateText/TruncateText.js.map +1 -1
  876. package/dist/components/TruncateText/TruncateText.module.cjs.map +1 -1
  877. package/dist/components/TruncateText/TruncateText.module.js.map +1 -1
  878. package/dist/components/UpdatePrompt/UpdatePrompt.cjs.map +1 -1
  879. package/dist/components/UpdatePrompt/UpdatePrompt.js.map +1 -1
  880. package/dist/components/UpdatePrompt/UpdatePrompt.module.cjs.map +1 -1
  881. package/dist/components/UpdatePrompt/UpdatePrompt.module.js.map +1 -1
  882. package/dist/components/VideoPlayer/VideoPlayer.cjs +1 -1
  883. package/dist/components/VideoPlayer/VideoPlayer.cjs.map +1 -1
  884. package/dist/components/VideoPlayer/VideoPlayer.js +1 -7
  885. package/dist/components/VideoPlayer/VideoPlayer.js.map +1 -1
  886. package/dist/components/VideoPlayer/VideoPlayer.module.cjs.map +1 -1
  887. package/dist/components/VideoPlayer/VideoPlayer.module.js.map +1 -1
  888. package/dist/components/VideoPlayer/playback-rates.cjs.map +1 -1
  889. package/dist/components/VideoPlayer/playback-rates.js.map +1 -1
  890. package/dist/components/VirtualList/VirtualList.cjs.map +1 -1
  891. package/dist/components/VirtualList/VirtualList.js.map +1 -1
  892. package/dist/components/VirtualList/VirtualList.module.cjs.map +1 -1
  893. package/dist/components/VirtualList/VirtualList.module.js.map +1 -1
  894. package/dist/components/VirtualTable/VirtualTable.cjs.map +1 -1
  895. package/dist/components/VirtualTable/VirtualTable.js.map +1 -1
  896. package/dist/components/VirtualTable/VirtualTable.module.cjs.map +1 -1
  897. package/dist/components/VirtualTable/VirtualTable.module.js.map +1 -1
  898. package/dist/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
  899. package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  900. package/dist/components/VisuallyHidden/VisuallyHidden.module.cjs.map +1 -1
  901. package/dist/components/VisuallyHidden/VisuallyHidden.module.js.map +1 -1
  902. package/dist/components/Wizard/Wizard.cjs +1 -1
  903. package/dist/components/Wizard/Wizard.cjs.map +1 -1
  904. package/dist/components/Wizard/Wizard.js +4 -11
  905. package/dist/components/Wizard/Wizard.js.map +1 -1
  906. package/dist/components/Wizard/Wizard.module.cjs.map +1 -1
  907. package/dist/components/Wizard/Wizard.module.js.map +1 -1
  908. package/dist/data/create-data-provider.cjs.map +1 -1
  909. package/dist/data/create-data-provider.js.map +1 -1
  910. package/dist/data/data-provider-context.cjs.map +1 -1
  911. package/dist/data/data-provider-context.js.map +1 -1
  912. package/dist/data/use-resource.cjs.map +1 -1
  913. package/dist/data/use-resource.js.map +1 -1
  914. package/dist/editor/RichTextEditor.cjs.map +1 -1
  915. package/dist/editor/RichTextEditor.js.map +1 -1
  916. package/dist/editor/RichTextEditor.module.cjs.map +1 -1
  917. package/dist/editor/RichTextEditor.module.js.map +1 -1
  918. package/dist/editor.js +1 -2
  919. package/dist/error-boundary/ErrorBoundary.cjs.map +1 -1
  920. package/dist/error-boundary/ErrorBoundary.js.map +1 -1
  921. package/dist/error-boundary/use-error-handler.cjs.map +1 -1
  922. package/dist/error-boundary/use-error-handler.js.map +1 -1
  923. package/dist/feature-flags/FeatureFlagsProvider.cjs.map +1 -1
  924. package/dist/feature-flags/FeatureFlagsProvider.js.map +1 -1
  925. package/dist/feature-flags/growthbook-adapter.cjs.map +1 -1
  926. package/dist/feature-flags/growthbook-adapter.js.map +1 -1
  927. package/dist/feature-flags/in-memory-adapter.cjs.map +1 -1
  928. package/dist/feature-flags/in-memory-adapter.js.map +1 -1
  929. package/dist/feature-flags/launchdarkly-adapter.cjs.map +1 -1
  930. package/dist/feature-flags/launchdarkly-adapter.js.map +1 -1
  931. package/dist/forms/FormField.cjs.map +1 -1
  932. package/dist/forms/FormField.js.map +1 -1
  933. package/dist/forms/br-validators.cjs.map +1 -1
  934. package/dist/forms/br-validators.js.map +1 -1
  935. package/dist/forms/masked-inputs.cjs.map +1 -1
  936. package/dist/forms/masked-inputs.js.map +1 -1
  937. package/dist/forms/use-viacep.cjs.map +1 -1
  938. package/dist/forms/use-viacep.js.map +1 -1
  939. package/dist/forms/use-zod-form.cjs.map +1 -1
  940. package/dist/forms/use-zod-form.js.map +1 -1
  941. package/dist/forms/validate-form.cjs.map +1 -1
  942. package/dist/forms/validate-form.js.map +1 -1
  943. package/dist/forms/zod-resolver.cjs.map +1 -1
  944. package/dist/forms/zod-resolver.js.map +1 -1
  945. package/dist/geo/TrajectoryMap.cjs.map +1 -1
  946. package/dist/geo/TrajectoryMap.js.map +1 -1
  947. package/dist/geo/TrajectoryMap.module.cjs.map +1 -1
  948. package/dist/geo/TrajectoryMap.module.js.map +1 -1
  949. package/dist/geo/bounds.cjs.map +1 -1
  950. package/dist/geo/bounds.js.map +1 -1
  951. package/dist/geo/create-position-tracker.cjs +1 -1
  952. package/dist/geo/create-position-tracker.cjs.map +1 -1
  953. package/dist/geo/create-position-tracker.js +1 -7
  954. package/dist/geo/create-position-tracker.js.map +1 -1
  955. package/dist/geo/distance.cjs.map +1 -1
  956. package/dist/geo/distance.js.map +1 -1
  957. package/dist/geo/estimate.cjs.map +1 -1
  958. package/dist/geo/estimate.js.map +1 -1
  959. package/dist/geo/leaflet-map.cjs.map +1 -1
  960. package/dist/geo/leaflet-map.js.map +1 -1
  961. package/dist/geo/projection.cjs.map +1 -1
  962. package/dist/geo/projection.js.map +1 -1
  963. package/dist/geo/routing.cjs.map +1 -1
  964. package/dist/geo/routing.js.map +1 -1
  965. package/dist/geo/types.cjs.map +1 -1
  966. package/dist/geo/types.js.map +1 -1
  967. package/dist/geo/use-position-tracker.cjs.map +1 -1
  968. package/dist/geo/use-position-tracker.js.map +1 -1
  969. package/dist/hooks/pwa-env.cjs.map +1 -1
  970. package/dist/hooks/pwa-env.js.map +1 -1
  971. package/dist/hooks/tab-sequence.cjs.map +1 -1
  972. package/dist/hooks/tab-sequence.js.map +1 -1
  973. package/dist/hooks/use-announce.cjs +1 -1
  974. package/dist/hooks/use-announce.cjs.map +1 -1
  975. package/dist/hooks/use-announce.js +2 -2
  976. package/dist/hooks/use-announce.js.map +1 -1
  977. package/dist/hooks/use-async.cjs.map +1 -1
  978. package/dist/hooks/use-async.js.map +1 -1
  979. package/dist/hooks/use-before-install-prompt.cjs.map +1 -1
  980. package/dist/hooks/use-before-install-prompt.js.map +1 -1
  981. package/dist/hooks/use-breakpoint.cjs.map +1 -1
  982. package/dist/hooks/use-breakpoint.js.map +1 -1
  983. package/dist/hooks/use-click-outside.cjs.map +1 -1
  984. package/dist/hooks/use-click-outside.js.map +1 -1
  985. package/dist/hooks/use-client-filter.cjs.map +1 -1
  986. package/dist/hooks/use-client-filter.js.map +1 -1
  987. package/dist/hooks/use-clipboard.cjs.map +1 -1
  988. package/dist/hooks/use-clipboard.js.map +1 -1
  989. package/dist/hooks/use-countdown.cjs.map +1 -1
  990. package/dist/hooks/use-countdown.js.map +1 -1
  991. package/dist/hooks/use-counter.cjs.map +1 -1
  992. package/dist/hooks/use-counter.js.map +1 -1
  993. package/dist/hooks/use-debounce.cjs.map +1 -1
  994. package/dist/hooks/use-debounce.js.map +1 -1
  995. package/dist/hooks/use-deep-memo.cjs.map +1 -1
  996. package/dist/hooks/use-deep-memo.js.map +1 -1
  997. package/dist/hooks/use-disclosure.cjs.map +1 -1
  998. package/dist/hooks/use-disclosure.js.map +1 -1
  999. package/dist/hooks/use-document-title.cjs.map +1 -1
  1000. package/dist/hooks/use-document-title.js.map +1 -1
  1001. package/dist/hooks/use-document-visibility.cjs.map +1 -1
  1002. package/dist/hooks/use-document-visibility.js.map +1 -1
  1003. package/dist/hooks/use-draft-filters.cjs.map +1 -1
  1004. package/dist/hooks/use-draft-filters.js.map +1 -1
  1005. package/dist/hooks/use-event-listener.cjs.map +1 -1
  1006. package/dist/hooks/use-event-listener.js.map +1 -1
  1007. package/dist/hooks/use-favicon.cjs.map +1 -1
  1008. package/dist/hooks/use-favicon.js.map +1 -1
  1009. package/dist/hooks/use-focus-trap.cjs.map +1 -1
  1010. package/dist/hooks/use-focus-trap.js.map +1 -1
  1011. package/dist/hooks/use-fullscreen-element.cjs.map +1 -1
  1012. package/dist/hooks/use-fullscreen-element.js.map +1 -1
  1013. package/dist/hooks/use-fullscreen.cjs +1 -1
  1014. package/dist/hooks/use-fullscreen.cjs.map +1 -1
  1015. package/dist/hooks/use-fullscreen.js +7 -23
  1016. package/dist/hooks/use-fullscreen.js.map +1 -1
  1017. package/dist/hooks/use-geolocation.cjs.map +1 -1
  1018. package/dist/hooks/use-geolocation.js.map +1 -1
  1019. package/dist/hooks/use-hover.cjs.map +1 -1
  1020. package/dist/hooks/use-hover.js.map +1 -1
  1021. package/dist/hooks/use-idle.cjs.map +1 -1
  1022. package/dist/hooks/use-idle.js.map +1 -1
  1023. package/dist/hooks/use-install-prompt.cjs +1 -1
  1024. package/dist/hooks/use-install-prompt.cjs.map +1 -1
  1025. package/dist/hooks/use-install-prompt.js +1 -1
  1026. package/dist/hooks/use-install-prompt.js.map +1 -1
  1027. package/dist/hooks/use-intersection-observer.cjs.map +1 -1
  1028. package/dist/hooks/use-intersection-observer.js.map +1 -1
  1029. package/dist/hooks/use-interval.cjs.map +1 -1
  1030. package/dist/hooks/use-interval.js.map +1 -1
  1031. package/dist/hooks/use-is-first-render.cjs.map +1 -1
  1032. package/dist/hooks/use-is-first-render.js.map +1 -1
  1033. package/dist/hooks/use-keyboard-shortcut.cjs.map +1 -1
  1034. package/dist/hooks/use-keyboard-shortcut.js.map +1 -1
  1035. package/dist/hooks/use-latest-ref.cjs.map +1 -1
  1036. package/dist/hooks/use-latest-ref.js.map +1 -1
  1037. package/dist/hooks/use-list-state.cjs.map +1 -1
  1038. package/dist/hooks/use-list-state.js.map +1 -1
  1039. package/dist/hooks/use-local-storage.cjs +1 -1
  1040. package/dist/hooks/use-local-storage.cjs.map +1 -1
  1041. package/dist/hooks/use-local-storage.js +2 -5
  1042. package/dist/hooks/use-local-storage.js.map +1 -1
  1043. package/dist/hooks/use-long-press-handlers.cjs.map +1 -1
  1044. package/dist/hooks/use-long-press-handlers.js.map +1 -1
  1045. package/dist/hooks/use-long-press.cjs.map +1 -1
  1046. package/dist/hooks/use-long-press.js.map +1 -1
  1047. package/dist/hooks/use-map.cjs.map +1 -1
  1048. package/dist/hooks/use-map.js.map +1 -1
  1049. package/dist/hooks/use-media-devices.cjs.map +1 -1
  1050. package/dist/hooks/use-media-devices.js.map +1 -1
  1051. package/dist/hooks/use-media-permission.cjs +1 -1
  1052. package/dist/hooks/use-media-permission.cjs.map +1 -1
  1053. package/dist/hooks/use-media-permission.js +2 -5
  1054. package/dist/hooks/use-media-permission.js.map +1 -1
  1055. package/dist/hooks/use-media-query.cjs.map +1 -1
  1056. package/dist/hooks/use-media-query.js.map +1 -1
  1057. package/dist/hooks/use-object-url.cjs.map +1 -1
  1058. package/dist/hooks/use-object-url.js.map +1 -1
  1059. package/dist/hooks/use-online.cjs.map +1 -1
  1060. package/dist/hooks/use-online.js.map +1 -1
  1061. package/dist/hooks/use-pagination.cjs.map +1 -1
  1062. package/dist/hooks/use-pagination.js.map +1 -1
  1063. package/dist/hooks/use-previous.cjs.map +1 -1
  1064. package/dist/hooks/use-previous.js.map +1 -1
  1065. package/dist/hooks/use-push-to-talk.cjs.map +1 -1
  1066. package/dist/hooks/use-push-to-talk.js.map +1 -1
  1067. package/dist/hooks/use-queue.cjs.map +1 -1
  1068. package/dist/hooks/use-queue.js.map +1 -1
  1069. package/dist/hooks/use-resize-observer.cjs.map +1 -1
  1070. package/dist/hooks/use-resize-observer.js.map +1 -1
  1071. package/dist/hooks/use-scroll-lock.cjs.map +1 -1
  1072. package/dist/hooks/use-scroll-lock.js.map +1 -1
  1073. package/dist/hooks/use-scroll-overflow.cjs.map +1 -1
  1074. package/dist/hooks/use-scroll-overflow.js.map +1 -1
  1075. package/dist/hooks/use-service-worker-update.cjs.map +1 -1
  1076. package/dist/hooks/use-service-worker-update.js.map +1 -1
  1077. package/dist/hooks/use-set.cjs.map +1 -1
  1078. package/dist/hooks/use-set.js.map +1 -1
  1079. package/dist/hooks/use-sortable.cjs.map +1 -1
  1080. package/dist/hooks/use-sortable.js.map +1 -1
  1081. package/dist/hooks/use-stable-callback.cjs.map +1 -1
  1082. package/dist/hooks/use-stable-callback.js.map +1 -1
  1083. package/dist/hooks/use-storage-estimate.cjs.map +1 -1
  1084. package/dist/hooks/use-storage-estimate.js.map +1 -1
  1085. package/dist/hooks/use-throttle.cjs.map +1 -1
  1086. package/dist/hooks/use-throttle.js.map +1 -1
  1087. package/dist/hooks/use-timeout.cjs.map +1 -1
  1088. package/dist/hooks/use-timeout.js.map +1 -1
  1089. package/dist/hooks/use-toggle.cjs.map +1 -1
  1090. package/dist/hooks/use-toggle.js.map +1 -1
  1091. package/dist/hooks/use-typewriter.cjs.map +1 -1
  1092. package/dist/hooks/use-typewriter.js.map +1 -1
  1093. package/dist/hooks/use-window-size.cjs.map +1 -1
  1094. package/dist/hooks/use-window-size.js.map +1 -1
  1095. package/dist/http/api-client.cjs.map +1 -1
  1096. package/dist/http/api-client.js.map +1 -1
  1097. package/dist/http/build-url.cjs.map +1 -1
  1098. package/dist/http/build-url.js.map +1 -1
  1099. package/dist/http/credential-scope.cjs.map +1 -1
  1100. package/dist/http/credential-scope.js.map +1 -1
  1101. package/dist/http/csrf.cjs.map +1 -1
  1102. package/dist/http/csrf.js.map +1 -1
  1103. package/dist/http/decode-response.cjs.map +1 -1
  1104. package/dist/http/decode-response.js.map +1 -1
  1105. package/dist/http/describe-api-error.cjs.map +1 -1
  1106. package/dist/http/describe-api-error.js.map +1 -1
  1107. package/dist/http/errors.cjs.map +1 -1
  1108. package/dist/http/errors.js.map +1 -1
  1109. package/dist/http/idempotency.cjs.map +1 -1
  1110. package/dist/http/idempotency.js.map +1 -1
  1111. package/dist/http/parse-response.cjs.map +1 -1
  1112. package/dist/http/parse-response.js.map +1 -1
  1113. package/dist/http/resumable-upload.cjs +1 -1
  1114. package/dist/http/resumable-upload.cjs.map +1 -1
  1115. package/dist/http/resumable-upload.js +141 -105
  1116. package/dist/http/resumable-upload.js.map +1 -1
  1117. package/dist/http/retry.cjs +1 -1
  1118. package/dist/http/retry.cjs.map +1 -1
  1119. package/dist/http/retry.js +5 -6
  1120. package/dist/http/retry.js.map +1 -1
  1121. package/dist/http/timeout.cjs.map +1 -1
  1122. package/dist/http/timeout.js.map +1 -1
  1123. package/dist/http/upload-with-progress.cjs +1 -1
  1124. package/dist/http/upload-with-progress.cjs.map +1 -1
  1125. package/dist/http/upload-with-progress.js +2 -7
  1126. package/dist/http/upload-with-progress.js.map +1 -1
  1127. package/dist/http/use-describe-api-error.cjs.map +1 -1
  1128. package/dist/http/use-describe-api-error.js.map +1 -1
  1129. package/dist/http/use-poll.cjs +1 -1
  1130. package/dist/http/use-poll.cjs.map +1 -1
  1131. package/dist/http/use-poll.js +2 -5
  1132. package/dist/http/use-poll.js.map +1 -1
  1133. package/dist/i18n/I18nProvider.cjs.map +1 -1
  1134. package/dist/i18n/I18nProvider.js.map +1 -1
  1135. package/dist/i18n/create-i18n.cjs.map +1 -1
  1136. package/dist/i18n/create-i18n.js.map +1 -1
  1137. package/dist/icons/Icon.cjs.map +1 -1
  1138. package/dist/icons/Icon.js.map +1 -1
  1139. package/dist/icons/IconPicker.cjs.map +1 -1
  1140. package/dist/icons/IconPicker.js.map +1 -1
  1141. package/dist/icons/IconPicker.module.cjs.map +1 -1
  1142. package/dist/icons/IconPicker.module.js.map +1 -1
  1143. package/dist/icons/IconProvider.cjs.map +1 -1
  1144. package/dist/icons/IconProvider.js.map +1 -1
  1145. package/dist/icons/alias.cjs.map +1 -1
  1146. package/dist/icons/alias.js.map +1 -1
  1147. package/dist/icons/generated/aliases.cjs.map +1 -1
  1148. package/dist/icons/generated/aliases.js.map +1 -1
  1149. package/dist/icons/generated/icon-names.cjs.map +1 -1
  1150. package/dist/icons/generated/icon-names.js.map +1 -1
  1151. package/dist/icons/generated/loaders.cjs.map +1 -1
  1152. package/dist/icons/generated/loaders.js.map +1 -1
  1153. package/dist/icons/generated/shard-00.cjs.map +1 -1
  1154. package/dist/icons/generated/shard-00.js.map +1 -1
  1155. package/dist/icons/generated/shard-01.cjs.map +1 -1
  1156. package/dist/icons/generated/shard-01.js.map +1 -1
  1157. package/dist/icons/generated/shard-02.cjs.map +1 -1
  1158. package/dist/icons/generated/shard-02.js.map +1 -1
  1159. package/dist/icons/generated/shard-03.cjs.map +1 -1
  1160. package/dist/icons/generated/shard-03.js.map +1 -1
  1161. package/dist/icons/generated/shard-04.cjs.map +1 -1
  1162. package/dist/icons/generated/shard-04.js.map +1 -1
  1163. package/dist/icons/generated/shard-05.cjs.map +1 -1
  1164. package/dist/icons/generated/shard-05.js.map +1 -1
  1165. package/dist/icons/generated/shard-06.cjs.map +1 -1
  1166. package/dist/icons/generated/shard-06.js.map +1 -1
  1167. package/dist/icons/generated/shard-07.cjs.map +1 -1
  1168. package/dist/icons/generated/shard-07.js.map +1 -1
  1169. package/dist/icons/generated/shard-08.cjs.map +1 -1
  1170. package/dist/icons/generated/shard-08.js.map +1 -1
  1171. package/dist/icons/generated/shard-09.cjs.map +1 -1
  1172. package/dist/icons/generated/shard-09.js.map +1 -1
  1173. package/dist/icons/generated/shard-10.cjs.map +1 -1
  1174. package/dist/icons/generated/shard-10.js.map +1 -1
  1175. package/dist/icons/generated/shard-11.cjs.map +1 -1
  1176. package/dist/icons/generated/shard-11.js.map +1 -1
  1177. package/dist/icons/generated/shard-12.cjs.map +1 -1
  1178. package/dist/icons/generated/shard-12.js.map +1 -1
  1179. package/dist/icons/generated/shard-13.cjs.map +1 -1
  1180. package/dist/icons/generated/shard-13.js.map +1 -1
  1181. package/dist/icons/generated/shard-14.cjs.map +1 -1
  1182. package/dist/icons/generated/shard-14.js.map +1 -1
  1183. package/dist/icons/generated/shard-15.cjs.map +1 -1
  1184. package/dist/icons/generated/shard-15.js.map +1 -1
  1185. package/dist/icons/generated/shard-16.cjs.map +1 -1
  1186. package/dist/icons/generated/shard-16.js.map +1 -1
  1187. package/dist/icons/generated/shard-17.cjs.map +1 -1
  1188. package/dist/icons/generated/shard-17.js.map +1 -1
  1189. package/dist/icons/generated/shard-18.cjs.map +1 -1
  1190. package/dist/icons/generated/shard-18.js.map +1 -1
  1191. package/dist/icons/generated/shard-19.cjs.map +1 -1
  1192. package/dist/icons/generated/shard-19.js.map +1 -1
  1193. package/dist/icons/generated/shard-20.cjs.map +1 -1
  1194. package/dist/icons/generated/shard-20.js.map +1 -1
  1195. package/dist/icons/generated/shard-21.cjs.map +1 -1
  1196. package/dist/icons/generated/shard-21.js.map +1 -1
  1197. package/dist/icons/generated/shard-22.cjs.map +1 -1
  1198. package/dist/icons/generated/shard-22.js.map +1 -1
  1199. package/dist/icons/generated/shard-23.cjs.map +1 -1
  1200. package/dist/icons/generated/shard-23.js.map +1 -1
  1201. package/dist/icons/generated/shard-24.cjs.map +1 -1
  1202. package/dist/icons/generated/shard-24.js.map +1 -1
  1203. package/dist/icons/generated/shard-25.cjs.map +1 -1
  1204. package/dist/icons/generated/shard-25.js.map +1 -1
  1205. package/dist/icons/generated/shard-26.cjs.map +1 -1
  1206. package/dist/icons/generated/shard-26.js.map +1 -1
  1207. package/dist/icons/generated/shard-27.cjs.map +1 -1
  1208. package/dist/icons/generated/shard-27.js.map +1 -1
  1209. package/dist/icons/generated/shard-28.cjs.map +1 -1
  1210. package/dist/icons/generated/shard-28.js.map +1 -1
  1211. package/dist/icons/generated/shard-29.cjs.map +1 -1
  1212. package/dist/icons/generated/shard-29.js.map +1 -1
  1213. package/dist/icons/generated/shard-30.cjs.map +1 -1
  1214. package/dist/icons/generated/shard-30.js.map +1 -1
  1215. package/dist/icons/generated/shard-31.cjs.map +1 -1
  1216. package/dist/icons/generated/shard-31.js.map +1 -1
  1217. package/dist/icons/generated/shard-32.cjs.map +1 -1
  1218. package/dist/icons/generated/shard-32.js.map +1 -1
  1219. package/dist/icons/generated/shard-33.cjs.map +1 -1
  1220. package/dist/icons/generated/shard-33.js.map +1 -1
  1221. package/dist/icons/generated/shard-34.cjs.map +1 -1
  1222. package/dist/icons/generated/shard-34.js.map +1 -1
  1223. package/dist/icons/generated/shard-35.cjs.map +1 -1
  1224. package/dist/icons/generated/shard-35.js.map +1 -1
  1225. package/dist/icons/generated/shard-36.cjs.map +1 -1
  1226. package/dist/icons/generated/shard-36.js.map +1 -1
  1227. package/dist/icons/generated/shard-37.cjs.map +1 -1
  1228. package/dist/icons/generated/shard-37.js.map +1 -1
  1229. package/dist/icons/generated/shard-38.cjs.map +1 -1
  1230. package/dist/icons/generated/shard-38.js.map +1 -1
  1231. package/dist/icons/generated/shard-39.cjs.map +1 -1
  1232. package/dist/icons/generated/shard-39.js.map +1 -1
  1233. package/dist/icons/generated/shard-40.cjs.map +1 -1
  1234. package/dist/icons/generated/shard-40.js.map +1 -1
  1235. package/dist/icons/generated/shard-41.cjs.map +1 -1
  1236. package/dist/icons/generated/shard-41.js.map +1 -1
  1237. package/dist/icons/generated/shard-42.cjs.map +1 -1
  1238. package/dist/icons/generated/shard-42.js.map +1 -1
  1239. package/dist/icons/generated/shard-43.cjs.map +1 -1
  1240. package/dist/icons/generated/shard-43.js.map +1 -1
  1241. package/dist/icons/generated/shard-44.cjs.map +1 -1
  1242. package/dist/icons/generated/shard-44.js.map +1 -1
  1243. package/dist/icons/generated/shard-45.cjs.map +1 -1
  1244. package/dist/icons/generated/shard-45.js.map +1 -1
  1245. package/dist/icons/icon-context.cjs.map +1 -1
  1246. package/dist/icons/icon-context.js.map +1 -1
  1247. package/dist/icons/is-icon-name.cjs.map +1 -1
  1248. package/dist/icons/is-icon-name.js.map +1 -1
  1249. package/dist/icons/material-symbols.cjs.map +1 -1
  1250. package/dist/icons/material-symbols.js.map +1 -1
  1251. package/dist/icons/normalize-icon-name.cjs.map +1 -1
  1252. package/dist/icons/normalize-icon-name.js.map +1 -1
  1253. package/dist/icons/shard-cache.cjs +1 -1
  1254. package/dist/icons/shard-cache.cjs.map +1 -1
  1255. package/dist/icons/shard-cache.js +2 -5
  1256. package/dist/icons/shard-cache.js.map +1 -1
  1257. package/dist/icons/use-icon.cjs.map +1 -1
  1258. package/dist/icons/use-icon.js.map +1 -1
  1259. package/dist/icons/validate-icon-name.cjs.map +1 -1
  1260. package/dist/icons/validate-icon-name.js.map +1 -1
  1261. package/dist/icons-virtual.cjs.map +1 -1
  1262. package/dist/icons-virtual.js.map +1 -1
  1263. package/dist/imaging/canvas.cjs.map +1 -1
  1264. package/dist/imaging/canvas.js.map +1 -1
  1265. package/dist/imaging/compress.cjs.map +1 -1
  1266. package/dist/imaging/compress.js.map +1 -1
  1267. package/dist/imaging/decode.cjs.map +1 -1
  1268. package/dist/imaging/decode.js.map +1 -1
  1269. package/dist/imaging/encode.cjs.map +1 -1
  1270. package/dist/imaging/encode.js.map +1 -1
  1271. package/dist/imaging/exceptions.cjs.map +1 -1
  1272. package/dist/imaging/exceptions.js.map +1 -1
  1273. package/dist/imaging/frame.cjs.map +1 -1
  1274. package/dist/imaging/frame.js.map +1 -1
  1275. package/dist/imaging/thumbnails.cjs.map +1 -1
  1276. package/dist/imaging/thumbnails.js.map +1 -1
  1277. package/dist/imaging/transform.cjs.map +1 -1
  1278. package/dist/imaging/transform.js.map +1 -1
  1279. package/dist/imaging/use-image-processing.cjs.map +1 -1
  1280. package/dist/imaging/use-image-processing.js.map +1 -1
  1281. package/dist/logger/logger.cjs.map +1 -1
  1282. package/dist/logger/logger.js.map +1 -1
  1283. package/dist/neural.cjs.map +1 -1
  1284. package/dist/neural.js.map +1 -1
  1285. package/dist/oauth/GoogleSignIn.cjs +1 -1
  1286. package/dist/oauth/GoogleSignIn.cjs.map +1 -1
  1287. package/dist/oauth/GoogleSignIn.js +6 -9
  1288. package/dist/oauth/GoogleSignIn.js.map +1 -1
  1289. package/dist/oauth/callback.cjs.map +1 -1
  1290. package/dist/oauth/callback.js.map +1 -1
  1291. package/dist/oauth/use-oauth-callback.cjs.map +1 -1
  1292. package/dist/oauth/use-oauth-callback.js.map +1 -1
  1293. package/dist/offline/conflict.cjs.map +1 -1
  1294. package/dist/offline/conflict.js.map +1 -1
  1295. package/dist/offline/create-offline-database.cjs.map +1 -1
  1296. package/dist/offline/create-offline-database.js.map +1 -1
  1297. package/dist/offline/create-offline-store.cjs +1 -1
  1298. package/dist/offline/create-offline-store.cjs.map +1 -1
  1299. package/dist/offline/create-offline-store.js +1 -5
  1300. package/dist/offline/create-offline-store.js.map +1 -1
  1301. package/dist/offline/create-offline-sync.cjs +1 -1
  1302. package/dist/offline/create-offline-sync.cjs.map +1 -1
  1303. package/dist/offline/create-offline-sync.js +9 -14
  1304. package/dist/offline/create-offline-sync.js.map +1 -1
  1305. package/dist/offline/use-offline-sync.cjs.map +1 -1
  1306. package/dist/offline/use-offline-sync.js.map +1 -1
  1307. package/dist/perf/cache-size.cjs.map +1 -1
  1308. package/dist/perf/cache-size.js.map +1 -1
  1309. package/dist/perf/device.cjs.map +1 -1
  1310. package/dist/perf/device.js.map +1 -1
  1311. package/dist/perf/format.cjs.map +1 -1
  1312. package/dist/perf/format.js.map +1 -1
  1313. package/dist/perf/profiler.cjs.map +1 -1
  1314. package/dist/perf/profiler.js.map +1 -1
  1315. package/dist/push/use-push-subscription.cjs.map +1 -1
  1316. package/dist/push/use-push-subscription.js.map +1 -1
  1317. package/dist/push/utils.cjs.map +1 -1
  1318. package/dist/push/utils.js.map +1 -1
  1319. package/dist/push/web-push-client.cjs.map +1 -1
  1320. package/dist/push/web-push-client.js.map +1 -1
  1321. package/dist/query/QueryProvider.cjs.map +1 -1
  1322. package/dist/query/QueryProvider.js.map +1 -1
  1323. package/dist/query/constants.cjs.map +1 -1
  1324. package/dist/query/constants.js.map +1 -1
  1325. package/dist/query/create-query-keys.cjs.map +1 -1
  1326. package/dist/query/create-query-keys.js.map +1 -1
  1327. package/dist/query/foreign-client-warning.cjs.map +1 -1
  1328. package/dist/query/foreign-client-warning.js.map +1 -1
  1329. package/dist/query/offline-persistence.cjs +1 -1
  1330. package/dist/query/offline-persistence.cjs.map +1 -1
  1331. package/dist/query/offline-persistence.js +2 -10
  1332. package/dist/query/offline-persistence.js.map +1 -1
  1333. package/dist/query/optimistic.cjs.map +1 -1
  1334. package/dist/query/optimistic.js.map +1 -1
  1335. package/dist/query/pagination.cjs.map +1 -1
  1336. package/dist/query/pagination.js.map +1 -1
  1337. package/dist/query/retry-policy.cjs.map +1 -1
  1338. package/dist/query/retry-policy.js.map +1 -1
  1339. package/dist/query/use-cursor-query.cjs.map +1 -1
  1340. package/dist/query/use-cursor-query.js.map +1 -1
  1341. package/dist/query/use-offline-mutation.cjs.map +1 -1
  1342. package/dist/query/use-offline-mutation.js.map +1 -1
  1343. package/dist/query/use-paginated-query.cjs.map +1 -1
  1344. package/dist/query/use-paginated-query.js.map +1 -1
  1345. package/dist/router/AppRouter.cjs.map +1 -1
  1346. package/dist/router/AppRouter.js.map +1 -1
  1347. package/dist/router/RouteGuard.cjs.map +1 -1
  1348. package/dist/router/RouteGuard.js.map +1 -1
  1349. package/dist/router/index.js +2 -2
  1350. package/dist/share/share-or-download.cjs.map +1 -1
  1351. package/dist/share/share-or-download.js.map +1 -1
  1352. package/dist/share/share.cjs.map +1 -1
  1353. package/dist/share/share.js.map +1 -1
  1354. package/dist/sse/create-event-stream.cjs.map +1 -1
  1355. package/dist/sse/create-event-stream.js.map +1 -1
  1356. package/dist/sse/use-event-stream.cjs.map +1 -1
  1357. package/dist/sse/use-event-stream.js.map +1 -1
  1358. package/dist/store/create-selectors.cjs.map +1 -1
  1359. package/dist/store/create-selectors.js.map +1 -1
  1360. package/dist/store/create-store.cjs.map +1 -1
  1361. package/dist/store/create-store.js.map +1 -1
  1362. package/dist/sw/background-sync.cjs +1 -1
  1363. package/dist/sw/background-sync.cjs.map +1 -1
  1364. package/dist/sw/background-sync.js +32 -31
  1365. package/dist/sw/background-sync.js.map +1 -1
  1366. package/dist/sw/cache-inspect.cjs.map +1 -1
  1367. package/dist/sw/cache-inspect.js.map +1 -1
  1368. package/dist/sw/cache.cjs +1 -1
  1369. package/dist/sw/cache.cjs.map +1 -1
  1370. package/dist/sw/cache.js +2 -6
  1371. package/dist/sw/cache.js.map +1 -1
  1372. package/dist/sw/create-push-handler.cjs.map +1 -1
  1373. package/dist/sw/create-push-handler.js.map +1 -1
  1374. package/dist/sw/credential-headers.cjs.map +1 -1
  1375. package/dist/sw/credential-headers.js.map +1 -1
  1376. package/dist/sw/periodic-sync.cjs.map +1 -1
  1377. package/dist/sw/periodic-sync.js.map +1 -1
  1378. package/dist/sw/register-service-worker.cjs.map +1 -1
  1379. package/dist/sw/register-service-worker.js.map +1 -1
  1380. package/dist/sw/session-data.cjs.map +1 -1
  1381. package/dist/sw/session-data.js.map +1 -1
  1382. package/dist/sw.d.ts +46 -8
  1383. package/dist/tabular/assets.cjs.map +1 -1
  1384. package/dist/tabular/assets.js.map +1 -1
  1385. package/dist/tabular/cache.cjs.map +1 -1
  1386. package/dist/tabular/cache.js.map +1 -1
  1387. package/dist/tabular/compact.cjs.map +1 -1
  1388. package/dist/tabular/compact.js.map +1 -1
  1389. package/dist/tabular/exceptions.cjs.map +1 -1
  1390. package/dist/tabular/exceptions.js.map +1 -1
  1391. package/dist/tabular/manifest.cjs.map +1 -1
  1392. package/dist/tabular/manifest.js.map +1 -1
  1393. package/dist/tabular/predictor.cjs.map +1 -1
  1394. package/dist/tabular/predictor.js.map +1 -1
  1395. package/dist/tabular/use-tabular-predictor.cjs.map +1 -1
  1396. package/dist/tabular/use-tabular-predictor.js.map +1 -1
  1397. package/dist/telemetry/TelemetryProvider.cjs.map +1 -1
  1398. package/dist/telemetry/TelemetryProvider.js.map +1 -1
  1399. package/dist/telemetry/app-error-adapter.cjs.map +1 -1
  1400. package/dist/telemetry/app-error-adapter.js.map +1 -1
  1401. package/dist/telemetry/app-error-queue.cjs.map +1 -1
  1402. package/dist/telemetry/app-error-queue.js.map +1 -1
  1403. package/dist/telemetry/app-error-reporter.cjs +1 -1
  1404. package/dist/telemetry/app-error-reporter.cjs.map +1 -1
  1405. package/dist/telemetry/app-error-reporter.js +1 -1
  1406. package/dist/telemetry/app-error-reporter.js.map +1 -1
  1407. package/dist/telemetry/app-error-schema.cjs.map +1 -1
  1408. package/dist/telemetry/app-error-schema.js.map +1 -1
  1409. package/dist/telemetry/app-error-transport.cjs.map +1 -1
  1410. package/dist/telemetry/app-error-transport.js.map +1 -1
  1411. package/dist/telemetry/console-adapter.cjs.map +1 -1
  1412. package/dist/telemetry/console-adapter.js.map +1 -1
  1413. package/dist/telemetry/describe-app-error.cjs.map +1 -1
  1414. package/dist/telemetry/describe-app-error.js.map +1 -1
  1415. package/dist/telemetry/posthog-adapter.cjs +1 -1
  1416. package/dist/telemetry/posthog-adapter.cjs.map +1 -1
  1417. package/dist/telemetry/posthog-adapter.js +1 -5
  1418. package/dist/telemetry/posthog-adapter.js.map +1 -1
  1419. package/dist/telemetry/sentry-adapter.cjs.map +1 -1
  1420. package/dist/telemetry/sentry-adapter.js.map +1 -1
  1421. package/dist/tempest-react-sdk.cjs +1 -1
  1422. package/dist/tempest-react-sdk.d.ts +448 -15
  1423. package/dist/tempest-react-sdk.js +119 -119
  1424. package/dist/testing/create-mock-handlers.cjs.map +1 -1
  1425. package/dist/testing/create-mock-handlers.js.map +1 -1
  1426. package/dist/testing.js +1 -2
  1427. package/dist/theme/ThemeProvider.cjs.map +1 -1
  1428. package/dist/theme/ThemeProvider.js.map +1 -1
  1429. package/dist/theme/apply-theme.cjs.map +1 -1
  1430. package/dist/theme/apply-theme.js.map +1 -1
  1431. package/dist/theme/color.cjs.map +1 -1
  1432. package/dist/theme/color.js.map +1 -1
  1433. package/dist/theme/create-theme.cjs.map +1 -1
  1434. package/dist/theme/create-theme.js.map +1 -1
  1435. package/dist/theme/data-viz-ramps.cjs.map +1 -1
  1436. package/dist/theme/data-viz-ramps.js.map +1 -1
  1437. package/dist/theme/initial-theme.cjs.map +1 -1
  1438. package/dist/theme/initial-theme.js.map +1 -1
  1439. package/dist/theme/inverse-render.cjs.map +1 -1
  1440. package/dist/theme/inverse-render.js.map +1 -1
  1441. package/dist/theme/inverse-restore.cjs.map +1 -1
  1442. package/dist/theme/inverse-restore.js.map +1 -1
  1443. package/dist/theme/inverse-surface.cjs.map +1 -1
  1444. package/dist/theme/inverse-surface.js.map +1 -1
  1445. package/dist/theme/status-tokens.cjs.map +1 -1
  1446. package/dist/theme/status-tokens.js.map +1 -1
  1447. package/dist/theme/theme-presets.cjs.map +1 -1
  1448. package/dist/theme/theme-presets.js.map +1 -1
  1449. package/dist/utils/absent.cjs.map +1 -1
  1450. package/dist/utils/absent.js.map +1 -1
  1451. package/dist/utils/arrays.cjs.map +1 -1
  1452. package/dist/utils/arrays.js.map +1 -1
  1453. package/dist/utils/base64.cjs.map +1 -1
  1454. package/dist/utils/base64.js.map +1 -1
  1455. package/dist/utils/cn.cjs.map +1 -1
  1456. package/dist/utils/cn.js.map +1 -1
  1457. package/dist/utils/compare-values.cjs.map +1 -1
  1458. package/dist/utils/compare-values.js.map +1 -1
  1459. package/dist/utils/compressed-storage.cjs.map +1 -1
  1460. package/dist/utils/compressed-storage.js.map +1 -1
  1461. package/dist/utils/csv.cjs +3 -3
  1462. package/dist/utils/csv.cjs.map +1 -1
  1463. package/dist/utils/csv.js +11 -10
  1464. package/dist/utils/csv.js.map +1 -1
  1465. package/dist/utils/dev-mode.cjs.map +1 -1
  1466. package/dist/utils/dev-mode.js.map +1 -1
  1467. package/dist/utils/duplicate-instance.cjs.map +1 -1
  1468. package/dist/utils/duplicate-instance.js.map +1 -1
  1469. package/dist/utils/format.cjs.map +1 -1
  1470. package/dist/utils/format.js.map +1 -1
  1471. package/dist/utils/functions.cjs +1 -1
  1472. package/dist/utils/functions.cjs.map +1 -1
  1473. package/dist/utils/functions.js +1 -1
  1474. package/dist/utils/functions.js.map +1 -1
  1475. package/dist/utils/guards.cjs.map +1 -1
  1476. package/dist/utils/guards.js.map +1 -1
  1477. package/dist/utils/ids.cjs.map +1 -1
  1478. package/dist/utils/ids.js.map +1 -1
  1479. package/dist/utils/intl-cache.cjs.map +1 -1
  1480. package/dist/utils/intl-cache.js.map +1 -1
  1481. package/dist/utils/json-frame.cjs.map +1 -1
  1482. package/dist/utils/json-frame.js.map +1 -1
  1483. package/dist/utils/numbers.cjs.map +1 -1
  1484. package/dist/utils/numbers.js.map +1 -1
  1485. package/dist/utils/objects.cjs.map +1 -1
  1486. package/dist/utils/objects.js.map +1 -1
  1487. package/dist/{telemetry/app-error-owner.cjs → utils/owner-fingerprint.cjs} +2 -2
  1488. package/dist/utils/owner-fingerprint.cjs.map +1 -0
  1489. package/dist/{telemetry/app-error-owner.js → utils/owner-fingerprint.js} +3 -3
  1490. package/dist/utils/owner-fingerprint.js.map +1 -0
  1491. package/dist/utils/promises.cjs.map +1 -1
  1492. package/dist/utils/promises.js.map +1 -1
  1493. package/dist/utils/relative-time.cjs.map +1 -1
  1494. package/dist/utils/relative-time.js.map +1 -1
  1495. package/dist/utils/safe-url.cjs.map +1 -1
  1496. package/dist/utils/safe-url.js.map +1 -1
  1497. package/dist/utils/schema-like.cjs.map +1 -1
  1498. package/dist/utils/schema-like.js.map +1 -1
  1499. package/dist/utils/storage.cjs +1 -1
  1500. package/dist/utils/storage.cjs.map +1 -1
  1501. package/dist/utils/storage.js +2 -2
  1502. package/dist/utils/storage.js.map +1 -1
  1503. package/dist/utils/strings.cjs.map +1 -1
  1504. package/dist/utils/strings.js.map +1 -1
  1505. package/dist/utils/xlsx.cjs.map +1 -1
  1506. package/dist/utils/xlsx.js.map +1 -1
  1507. package/dist/vision/core/canvas.cjs.map +1 -1
  1508. package/dist/vision/core/canvas.js.map +1 -1
  1509. package/dist/vision/core/dtypes.cjs.map +1 -1
  1510. package/dist/vision/core/dtypes.js.map +1 -1
  1511. package/dist/vision/core/exceptions.cjs.map +1 -1
  1512. package/dist/vision/core/exceptions.js.map +1 -1
  1513. package/dist/vision/core/graph.cjs.map +1 -1
  1514. package/dist/vision/core/graph.js.map +1 -1
  1515. package/dist/vision/core/metadata.cjs +1 -1
  1516. package/dist/vision/core/metadata.cjs.map +1 -1
  1517. package/dist/vision/core/metadata.js +9 -26
  1518. package/dist/vision/core/metadata.js.map +1 -1
  1519. package/dist/vision/core/providers.cjs.map +1 -1
  1520. package/dist/vision/core/providers.js.map +1 -1
  1521. package/dist/vision/core/session.cjs.map +1 -1
  1522. package/dist/vision/core/session.js.map +1 -1
  1523. package/dist/vision/core/timing.cjs.map +1 -1
  1524. package/dist/vision/core/timing.js.map +1 -1
  1525. package/dist/vision/fusion.cjs.map +1 -1
  1526. package/dist/vision/fusion.js.map +1 -1
  1527. package/dist/vision/index.cjs.map +1 -1
  1528. package/dist/vision/index.js.map +1 -1
  1529. package/dist/vision/io/image.cjs.map +1 -1
  1530. package/dist/vision/io/image.js.map +1 -1
  1531. package/dist/vision/labels.cjs.map +1 -1
  1532. package/dist/vision/labels.js.map +1 -1
  1533. package/dist/vision/luminance.cjs.map +1 -1
  1534. package/dist/vision/luminance.js.map +1 -1
  1535. package/dist/vision/normalization.cjs.map +1 -1
  1536. package/dist/vision/normalization.js.map +1 -1
  1537. package/dist/vision/postprocess/classification.cjs.map +1 -1
  1538. package/dist/vision/postprocess/classification.js.map +1 -1
  1539. package/dist/vision/postprocess/detection.cjs.map +1 -1
  1540. package/dist/vision/postprocess/detection.js.map +1 -1
  1541. package/dist/vision/postprocess/segmentation.cjs.map +1 -1
  1542. package/dist/vision/postprocess/segmentation.js.map +1 -1
  1543. package/dist/vision/preprocess/image.cjs.map +1 -1
  1544. package/dist/vision/preprocess/image.js.map +1 -1
  1545. package/dist/vision/preprocess/pipeline.cjs.map +1 -1
  1546. package/dist/vision/preprocess/pipeline.js.map +1 -1
  1547. package/dist/vision/results.cjs.map +1 -1
  1548. package/dist/vision/results.js.map +1 -1
  1549. package/dist/vision/tasks/base.cjs.map +1 -1
  1550. package/dist/vision/tasks/base.js.map +1 -1
  1551. package/dist/vision/tasks/classifier.cjs.map +1 -1
  1552. package/dist/vision/tasks/classifier.js.map +1 -1
  1553. package/dist/vision/tasks/detectClassify.cjs.map +1 -1
  1554. package/dist/vision/tasks/detectClassify.js.map +1 -1
  1555. package/dist/vision/tasks/detector.cjs.map +1 -1
  1556. package/dist/vision/tasks/detector.js.map +1 -1
  1557. package/dist/vision/tasks/segmenter.cjs.map +1 -1
  1558. package/dist/vision/tasks/segmenter.js.map +1 -1
  1559. package/dist/vision/types.cjs.map +1 -1
  1560. package/dist/vision/types.js.map +1 -1
  1561. package/dist/vision/use-camera-stream.cjs +1 -1
  1562. package/dist/vision/use-camera-stream.cjs.map +1 -1
  1563. package/dist/vision/use-camera-stream.js +3 -9
  1564. package/dist/vision/use-camera-stream.js.map +1 -1
  1565. package/dist/vision/use-live-luminance.cjs +1 -1
  1566. package/dist/vision/use-live-luminance.cjs.map +1 -1
  1567. package/dist/vision/use-live-luminance.js +1 -5
  1568. package/dist/vision/use-live-luminance.js.map +1 -1
  1569. package/dist/vite/base-url.cjs.map +1 -1
  1570. package/dist/vite/base-url.js.map +1 -1
  1571. package/dist/vite/create-vite-config.cjs.map +1 -1
  1572. package/dist/vite/create-vite-config.js.map +1 -1
  1573. package/dist/vite/narrow-tokens.cjs.map +1 -1
  1574. package/dist/vite/narrow-tokens.js.map +1 -1
  1575. package/dist/vite/tempest-csp.cjs +2 -2
  1576. package/dist/vite/tempest-csp.cjs.map +1 -1
  1577. package/dist/vite/tempest-csp.js +69 -66
  1578. package/dist/vite/tempest-csp.js.map +1 -1
  1579. package/dist/vite/tempest-icons.cjs.map +1 -1
  1580. package/dist/vite/tempest-icons.js.map +1 -1
  1581. package/dist/vite/tempest-pwa-dev-sw.cjs +1 -1
  1582. package/dist/vite/tempest-pwa-dev-sw.cjs.map +1 -1
  1583. package/dist/vite/tempest-pwa-dev-sw.js +9 -16
  1584. package/dist/vite/tempest-pwa-dev-sw.js.map +1 -1
  1585. package/dist/vite/tempest-pwa-icons.cjs.map +1 -1
  1586. package/dist/vite/tempest-pwa-icons.js.map +1 -1
  1587. package/dist/vite/tempest-pwa-manifest.cjs.map +1 -1
  1588. package/dist/vite/tempest-pwa-manifest.js.map +1 -1
  1589. package/dist/vite/tempest-styles.cjs.map +1 -1
  1590. package/dist/vite/tempest-styles.js.map +1 -1
  1591. package/dist/vite/tempest-vitest.cjs.map +1 -1
  1592. package/dist/vite/tempest-vitest.js.map +1 -1
  1593. package/dist/vite.d.ts +5 -3
  1594. package/dist/webrtc/link-stats.cjs.map +1 -1
  1595. package/dist/webrtc/link-stats.js.map +1 -1
  1596. package/dist/webrtc/mesh-quality.cjs.map +1 -1
  1597. package/dist/webrtc/mesh-quality.js.map +1 -1
  1598. package/dist/webrtc/opus-sdp.cjs.map +1 -1
  1599. package/dist/webrtc/opus-sdp.js.map +1 -1
  1600. package/dist/webrtc/peer-link.cjs +1 -1
  1601. package/dist/webrtc/peer-link.cjs.map +1 -1
  1602. package/dist/webrtc/peer-link.js +2 -5
  1603. package/dist/webrtc/peer-link.js.map +1 -1
  1604. package/dist/webrtc/peer-mesh.cjs +1 -1
  1605. package/dist/webrtc/peer-mesh.cjs.map +1 -1
  1606. package/dist/webrtc/peer-mesh.js +8 -24
  1607. package/dist/webrtc/peer-mesh.js.map +1 -1
  1608. package/dist/webrtc/sender-bitrate.cjs.map +1 -1
  1609. package/dist/webrtc/sender-bitrate.js.map +1 -1
  1610. package/dist/webrtc/use-link-stats.cjs.map +1 -1
  1611. package/dist/webrtc/use-link-stats.js.map +1 -1
  1612. package/dist/ws/create-web-socket.cjs +1 -1
  1613. package/dist/ws/create-web-socket.cjs.map +1 -1
  1614. package/dist/ws/create-web-socket.js +4 -22
  1615. package/dist/ws/create-web-socket.js.map +1 -1
  1616. package/dist/ws/resilience.cjs.map +1 -1
  1617. package/dist/ws/resilience.js.map +1 -1
  1618. package/dist/ws/use-web-socket.cjs.map +1 -1
  1619. package/dist/ws/use-web-socket.js.map +1 -1
  1620. package/package.json +9 -6
  1621. package/template/package.json +1 -1
  1622. package/dist/telemetry/app-error-owner.cjs.map +0 -1
  1623. package/dist/telemetry/app-error-owner.js.map +0 -1
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"use-fullscreen.cjs","names":[],"sources":["../../src/hooks/use-fullscreen.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\nimport { getFullscreenElement, useFullscreenElement } from \"./use-fullscreen-element\";\n\n/**\n * The fullscreen members of `document` this hook calls, standard and\n * vendor-prefixed, every one of them optional.\n *\n * `lib.dom` declares the standard members as always present, which is a promise\n * the runtime does not keep: an older WebKit ships only the prefixed pair, and a\n * document inside an `<iframe>` without `allowfullscreen` reports\n * `fullscreenEnabled: false`. Reading through an all-optional shape is what makes\n * `typeof x === \"function\"` a check the compiler agrees is worth making.\n */\ninterface FullscreenDocument {\n fullscreenEnabled?: boolean;\n exitFullscreen?: () => Promise<void>;\n webkitFullscreenEnabled?: boolean;\n webkitExitFullscreen?: () => Promise<void> | void;\n}\n\n/** The fullscreen members of an element, standard and vendor-prefixed. */\ninterface FullscreenTarget {\n requestFullscreen?: (options?: FullscreenOptions) => Promise<void>;\n webkitRequestFullscreen?: () => Promise<void> | void;\n}\n\n/**\n * Resolve which element the hook acts on.\n *\n * `ref.current` when a ref was given, `document.documentElement` when it was not\n * — the whole page, which is what \"go fullscreen\" means with no element named.\n *\n * A missing `ref.current` deliberately resolves to `null` rather than falling\n * back to the page: a caller who named an element and whose element is not\n * mounted yet wants an error, not the entire document blown up to fill the\n * screen behind their video.\n *\n * @param ref - The element to present, or `undefined` for the whole page.\n * @returns The element, or `null` when there is nothing to act on.\n */\nfunction resolveTarget(ref?: RefObject<HTMLElement | null>): HTMLElement | null {\n if (typeof document === \"undefined\") return null;\n return ref ? ref.current : document.documentElement;\n}\n\n/**\n * Whether this environment can present anything fullscreen at all.\n *\n * Two independent reasons for `false`, and skipping either one ships a button\n * that does nothing when pressed: the API can be missing (older WebKit, and every\n * browser on iOS for non-`<video>` elements), or present and **disabled** — a\n * document inside an `<iframe>` without the `allowfullscreen` attribute exposes\n * `requestFullscreen` and rejects every call to it, which `fullscreenEnabled`\n * reports up front.\n *\n * An engine that exposes the methods and no flag at all is treated as capable:\n * the flag is the newer half of the API, so its absence says nothing.\n *\n * @returns `true` when a fullscreen request stands a chance of being honoured.\n */\nexport function isFullscreenSupported(): boolean {\n if (typeof document === \"undefined\") return false;\n const root: FullscreenTarget = document.documentElement;\n const doc: FullscreenDocument = document;\n const reachable =\n typeof root.requestFullscreen === \"function\" ||\n typeof root.webkitRequestFullscreen === \"function\";\n return reachable && (doc.fullscreenEnabled ?? doc.webkitFullscreenEnabled ?? true);\n}\n\n/** Value returned by {@link useFullscreen}. */\nexport interface UseFullscreenResult {\n /** Whether the target element is the one the browser is presenting right now. */\n isFullscreen: boolean;\n /** Whether a request stands a chance at all — hide the control when `false`. */\n supported: boolean;\n /** Present the target. Must be called from a user gesture. Rejects if refused. */\n enter: () => Promise<void>;\n /** Leave fullscreen. Resolves immediately when nothing is presented. */\n exit: () => Promise<void>;\n /** Leave if the target is presented, otherwise enter. Same gesture rule as `enter`. */\n toggle: () => Promise<void>;\n}\n\n/**\n * Drive an immersive mode whose state stays true to the browser.\n *\n * The mistake this exists to remove is storing `isFullscreen` in state and\n * flipping it inside your own `enter()` / `exit()`. Fullscreen ends in ways your\n * code never sees — `Esc`, the browser's own exit affordance, F11 pressed while an\n * API fullscreen is active — and each of those leaves the flag saying \"sair\" over\n * a page that is already windowed. The only honest source is the\n * `fullscreenchange` event, which fires for every one of them, so that is what\n * this hook reads and what the returned `isFullscreen` reflects. The action\n * callbacks never touch it.\n *\n * The subscription is not this hook's own: it lives in `useFullscreenElement`,\n * shared with `usePortalHost`, which needs the same fact to decide where an\n * overlay mounts while fullscreen is on. Two independent listeners for one event\n * would mean two copies of the WebKit prefix dance and two places to fix the next\n * quirk, so the primitive answers \"which element is presented\" once and each\n * consumer asks its own question of the answer.\n *\n * WebKit's prefixed members are handled throughout — `webkitfullscreenchange`,\n * `webkitFullscreenElement`, `webkitRequestFullscreen`, `webkitExitFullscreen` —\n * because Safari on iPad still ships them and nothing else.\n *\n * `isFullscreen` is identity against the target, not containment: a `<video>`\n * inside your element going fullscreen on its own is not your element being\n * presented, and reporting `true` there would put your exit control inside a\n * subtree the browser is not painting.\n *\n * @param ref - The element to present. Omit it to present the whole page\n * (`document.documentElement`).\n * @returns `{ isFullscreen, supported, enter, exit, toggle }`.\n * @throws Nothing during render. `enter()` and `toggle()` reject with the\n * browser's own error when the request is refused — most often a `TypeError`\n * because the call did not come from a user gesture — and with an `Error` when\n * there is no element to present or the environment ships no Fullscreen API.\n *\n * @example\n * const stage = useRef<HTMLDivElement>(null);\n * const { isFullscreen, supported, toggle } = useFullscreen(stage);\n *\n * <div ref={stage}>\n * <video src=\"/aula.mp4\" controls />\n * {supported ? (\n * <button onClick={() => void toggle().catch(() => setRefused(true))}>\n * {isFullscreen ? \"Sair da tela cheia\" : \"Tela cheia\"}\n * </button>\n * ) : null}\n * </div>\n */\nexport function useFullscreen(ref?: RefObject<HTMLElement | null>): UseFullscreenResult {\n const element = useFullscreenElement();\n const [supported] = useState(isFullscreenSupported);\n const [isFullscreen, setIsFullscreen] = useState(false);\n\n useEffect(() => {\n const target = resolveTarget(ref);\n setIsFullscreen(target !== null && element === target);\n }, [element, ref]);\n\n const enter = useCallback(async (): Promise<void> => {\n const target = resolveTarget(ref);\n if (target === null) {\n throw new Error(\n \"useFullscreen: nothing to present. Either this environment has no document, \" +\n \"or the ref was never attached to a mounted element.\",\n );\n }\n const candidate: FullscreenTarget = target;\n if (typeof candidate.requestFullscreen === \"function\") {\n await candidate.requestFullscreen();\n return;\n }\n if (typeof candidate.webkitRequestFullscreen === \"function\") {\n await candidate.webkitRequestFullscreen();\n return;\n }\n throw new Error(\"useFullscreen: this browser exposes no way to enter fullscreen.\");\n }, [ref]);\n\n const exit = useCallback(async (): Promise<void> => {\n if (getFullscreenElement() === null) return;\n const doc: FullscreenDocument = document;\n if (typeof doc.exitFullscreen === \"function\") {\n await doc.exitFullscreen();\n return;\n }\n if (typeof doc.webkitExitFullscreen === \"function\") {\n await doc.webkitExitFullscreen();\n return;\n }\n throw new Error(\"useFullscreen: this browser exposes no way to leave fullscreen.\");\n }, []);\n\n const toggle = useCallback(async (): Promise<void> => {\n const target = resolveTarget(ref);\n if (target !== null && getFullscreenElement() === target) {\n await exit();\n return;\n }\n await enter();\n }, [enter, exit, ref]);\n\n return { isFullscreen, supported, enter, exit, toggle };\n}\n"],"mappings":"uEAyCA,SAAS,EAAc,EAAyD,CAE5E,OADI,OAAO,SAAa,IAAoB,KACrC,EAAM,EAAI,QAAU,SAAS,eACxC,CAiBA,SAAgB,GAAiC,CAC7C,GAAI,OAAO,SAAa,IAAa,MAAO,GAC5C,IAAM,EAAyB,SAAS,gBAClC,EAA0B,SAIhC,OAFI,OAAO,EAAK,mBAAsB,YAClC,OAAO,EAAK,yBAA4B,cACvB,EAAI,mBAAqB,EAAI,yBAA2B,GACjF,CAiEA,SAAgB,EAAc,EAA0D,CACpF,IAAM,EAAU,EAAA,qBAAqB,EAC/B,CAAC,IAAA,EAAa,EAAA,SAAA,CAAS,CAAqB,EAC5C,CAAC,EAAc,IAAA,EAAmB,EAAA,SAAA,CAAS,EAAK,GAEtD,EAAA,EAAA,UAAA,KAAgB,CACZ,IAAM,EAAS,EAAc,CAAG,EAChC,EAAgB,IAAW,MAAQ,IAAY,CAAM,CACzD,EAAG,CAAC,EAAS,CAAG,CAAC,EAEjB,IAAM,GAAA,EAAQ,EAAA,YAAA,CAAY,SAA2B,CACjD,IAAM,EAAS,EAAc,CAAG,EAChC,GAAI,IAAW,KACX,MAAU,MACN,iIAEJ,EAEJ,IAAM,EAA8B,EACpC,GAAI,OAAO,EAAU,mBAAsB,WAAY,CACnD,MAAM,EAAU,kBAAkB,EAClC,MACJ,CACA,GAAI,OAAO,EAAU,yBAA4B,WAAY,CACzD,MAAM,EAAU,wBAAwB,EACxC,MACJ,CACA,MAAU,MAAM,iEAAiE,CACrF,EAAG,CAAC,CAAG,CAAC,EAEF,GAAA,EAAO,EAAA,YAAA,CAAY,SAA2B,CAChD,GAAI,EAAA,qBAAqB,IAAM,KAAM,OACrC,IAAM,EAA0B,SAChC,GAAI,OAAO,EAAI,gBAAmB,WAAY,CAC1C,MAAM,EAAI,eAAe,EACzB,MACJ,CACA,GAAI,OAAO,EAAI,sBAAyB,WAAY,CAChD,MAAM,EAAI,qBAAqB,EAC/B,MACJ,CACA,MAAU,MAAM,iEAAiE,CACrF,EAAG,CAAC,CAAC,EAWL,MAAO,CAAE,eAAc,YAAW,QAAO,OAAM,QAAA,EAThC,EAAA,YAAA,CAAY,SAA2B,CAClD,IAAM,EAAS,EAAc,CAAG,EAChC,GAAI,IAAW,MAAQ,EAAA,qBAAqB,IAAM,EAAQ,CACtD,MAAM,EAAK,EACX,MACJ,CACA,MAAM,EAAM,CAChB,EAAG,CAAC,EAAO,EAAM,CAAG,CAE2B,CAAO,CAC1D"}
1
+ {"version":3,"file":"use-fullscreen.cjs","names":["useFullscreenElement","useState","useCallback","getFullscreenElement","require_use_fullscreen_element","react","resolveTarget","ref","isFullscreenSupported","root","doc","useFullscreen","element","supported","isFullscreen","setIsFullscreen","target","enter","candidate","exit"],"sources":["../../src/hooks/use-fullscreen.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\nimport { getFullscreenElement, useFullscreenElement } from \"./use-fullscreen-element\";\n\n/**\n * The fullscreen members of `document` this hook calls, standard and\n * vendor-prefixed, every one of them optional.\n *\n * `lib.dom` declares the standard members as always present, which is a promise\n * the runtime does not keep: an older WebKit ships only the prefixed pair, and a\n * document inside an `<iframe>` without `allowfullscreen` reports\n * `fullscreenEnabled: false`. Reading through an all-optional shape is what makes\n * `typeof x === \"function\"` a check the compiler agrees is worth making.\n */\ninterface FullscreenDocument {\n fullscreenEnabled?: boolean;\n exitFullscreen?: () => Promise<void>;\n webkitFullscreenEnabled?: boolean;\n webkitExitFullscreen?: () => Promise<void> | void;\n}\n\n/** The fullscreen members of an element, standard and vendor-prefixed. */\ninterface FullscreenTarget {\n requestFullscreen?: (options?: FullscreenOptions) => Promise<void>;\n webkitRequestFullscreen?: () => Promise<void> | void;\n}\n\n/**\n * Resolve which element the hook acts on.\n *\n * `ref.current` when a ref was given, `document.documentElement` when it was not\n * — the whole page, which is what \"go fullscreen\" means with no element named.\n *\n * A missing `ref.current` deliberately resolves to `null` rather than falling\n * back to the page: a caller who named an element and whose element is not\n * mounted yet wants an error, not the entire document blown up to fill the\n * screen behind their video.\n *\n * @param ref - The element to present, or `undefined` for the whole page.\n * @returns The element, or `null` when there is nothing to act on.\n */\nfunction resolveTarget(ref?: RefObject<HTMLElement | null>): HTMLElement | null {\n if (typeof document === \"undefined\") return null;\n return ref ? ref.current : document.documentElement;\n}\n\n/**\n * Whether this environment can present anything fullscreen at all.\n *\n * Two independent reasons for `false`, and skipping either one ships a button\n * that does nothing when pressed: the API can be missing (older WebKit, and every\n * browser on iOS for non-`<video>` elements), or present and **disabled** — a\n * document inside an `<iframe>` without the `allowfullscreen` attribute exposes\n * `requestFullscreen` and rejects every call to it, which `fullscreenEnabled`\n * reports up front.\n *\n * An engine that exposes the methods and no flag at all is treated as capable:\n * the flag is the newer half of the API, so its absence says nothing.\n *\n * @returns `true` when a fullscreen request stands a chance of being honoured.\n */\nexport function isFullscreenSupported(): boolean {\n if (typeof document === \"undefined\") return false;\n const root: FullscreenTarget = document.documentElement;\n const doc: FullscreenDocument = document;\n const reachable =\n typeof root.requestFullscreen === \"function\" ||\n typeof root.webkitRequestFullscreen === \"function\";\n return reachable && (doc.fullscreenEnabled ?? doc.webkitFullscreenEnabled ?? true);\n}\n\n/** Value returned by {@link useFullscreen}. */\nexport interface UseFullscreenResult {\n /** Whether the target element is the one the browser is presenting right now. */\n isFullscreen: boolean;\n /** Whether a request stands a chance at all — hide the control when `false`. */\n supported: boolean;\n /** Present the target. Must be called from a user gesture. Rejects if refused. */\n enter: () => Promise<void>;\n /** Leave fullscreen. Resolves immediately when nothing is presented. */\n exit: () => Promise<void>;\n /** Leave if the target is presented, otherwise enter. Same gesture rule as `enter`. */\n toggle: () => Promise<void>;\n}\n\n/**\n * Drive an immersive mode whose state stays true to the browser.\n *\n * The mistake this exists to remove is storing `isFullscreen` in state and\n * flipping it inside your own `enter()` / `exit()`. Fullscreen ends in ways your\n * code never sees — `Esc`, the browser's own exit affordance, F11 pressed while an\n * API fullscreen is active — and each of those leaves the flag saying \"sair\" over\n * a page that is already windowed. The only honest source is the\n * `fullscreenchange` event, which fires for every one of them, so that is what\n * this hook reads and what the returned `isFullscreen` reflects. The action\n * callbacks never touch it.\n *\n * The subscription is not this hook's own: it lives in `useFullscreenElement`,\n * shared with `usePortalHost`, which needs the same fact to decide where an\n * overlay mounts while fullscreen is on. Two independent listeners for one event\n * would mean two copies of the WebKit prefix dance and two places to fix the next\n * quirk, so the primitive answers \"which element is presented\" once and each\n * consumer asks its own question of the answer.\n *\n * WebKit's prefixed members are handled throughout — `webkitfullscreenchange`,\n * `webkitFullscreenElement`, `webkitRequestFullscreen`, `webkitExitFullscreen` —\n * because Safari on iPad still ships them and nothing else.\n *\n * `isFullscreen` is identity against the target, not containment: a `<video>`\n * inside your element going fullscreen on its own is not your element being\n * presented, and reporting `true` there would put your exit control inside a\n * subtree the browser is not painting.\n *\n * @param ref - The element to present. Omit it to present the whole page\n * (`document.documentElement`).\n * @returns `{ isFullscreen, supported, enter, exit, toggle }`.\n * @throws Nothing during render. `enter()` and `toggle()` reject with the\n * browser's own error when the request is refused — most often a `TypeError`\n * because the call did not come from a user gesture — and with an `Error` when\n * there is no element to present or the environment ships no Fullscreen API.\n *\n * @example\n * const stage = useRef<HTMLDivElement>(null);\n * const { isFullscreen, supported, toggle } = useFullscreen(stage);\n *\n * <div ref={stage}>\n * <video src=\"/aula.mp4\" controls />\n * {supported ? (\n * <button onClick={() => void toggle().catch(() => setRefused(true))}>\n * {isFullscreen ? \"Sair da tela cheia\" : \"Tela cheia\"}\n * </button>\n * ) : null}\n * </div>\n */\nexport function useFullscreen(ref?: RefObject<HTMLElement | null>): UseFullscreenResult {\n const element = useFullscreenElement();\n const [supported] = useState(isFullscreenSupported);\n const [isFullscreen, setIsFullscreen] = useState(false);\n\n useEffect(() => {\n const target = resolveTarget(ref);\n setIsFullscreen(target !== null && element === target);\n }, [element, ref]);\n\n const enter = useCallback(async (): Promise<void> => {\n const target = resolveTarget(ref);\n if (target === null) {\n throw new Error(\n \"useFullscreen: nothing to present. Either this environment has no document, \" +\n \"or the ref was never attached to a mounted element.\",\n );\n }\n const candidate: FullscreenTarget = target;\n if (typeof candidate.requestFullscreen === \"function\") {\n await candidate.requestFullscreen();\n return;\n }\n if (typeof candidate.webkitRequestFullscreen === \"function\") {\n await candidate.webkitRequestFullscreen();\n return;\n }\n throw new Error(\"useFullscreen: this browser exposes no way to enter fullscreen.\");\n }, [ref]);\n\n const exit = useCallback(async (): Promise<void> => {\n if (getFullscreenElement() === null) return;\n const doc: FullscreenDocument = document;\n if (typeof doc.exitFullscreen === \"function\") {\n await doc.exitFullscreen();\n return;\n }\n if (typeof doc.webkitExitFullscreen === \"function\") {\n await doc.webkitExitFullscreen();\n return;\n }\n throw new Error(\"useFullscreen: this browser exposes no way to leave fullscreen.\");\n }, []);\n\n const toggle = useCallback(async (): Promise<void> => {\n const target = resolveTarget(ref);\n if (target !== null && getFullscreenElement() === target) {\n await exit();\n return;\n }\n await enter();\n }, [enter, exit, ref]);\n\n return { isFullscreen, supported, enter, exit, toggle };\n}\n"],"mappings":"A,uEAyCA,SAASM,EAAc,EAAyD,CAE5E,OADI,OAAO,SAAa,IAAoB,KACrCC,EAAMA,EAAI,QAAU,SAAS,eACxC,CAiBA,SAAgBC,GAAiC,CAC7C,GAAI,OAAO,SAAa,IAAa,MAAO,GAC5C,IAAMC,EAAyB,SAAS,gBAClCC,EAA0B,SAIhC,OAFI,OAAOD,EAAK,mBAAsB,YAClC,OAAOA,EAAK,yBAA4B,cACvBC,EAAI,mBAAqBA,EAAI,yBAA2B,GACjF,CAiEA,SAAgBC,EAAc,EAA0D,CACpF,IAAMC,EAAUZ,EAAAA,qBAAqB,EAC/B,CAACa,IAAA,EAAaZ,EAAAA,SAAAA,CAASO,CAAqB,EAC5C,CAACM,EAAcC,IAAA,EAAmBd,EAAAA,SAAAA,CAAS,EAAK,GAEtD,EAAAI,EAAA,UAAA,KAAgB,CACZ,IAAMW,EAASV,EAAcC,CAAG,EAChCQ,EAAgBC,IAAW,MAAQJ,IAAYI,CAAM,CACzD,EAAG,CAACJ,EAASL,CAAG,CAAC,EAEjB,IAAMU,GAAA,EAAQf,EAAAA,YAAAA,CAAY,SAA2B,CACjD,IAAMc,EAASV,EAAcC,CAAG,EAChC,GAAIS,IAAW,KACX,MAAU,MACN,iIAEJ,EAEJ,IAAME,EAA8BF,EACpC,GAAI,OAAOE,EAAU,mBAAsB,WACvC,MAAMA,EAAU,kBAAkB,OAGtC,GAAI,OAAOA,EAAU,yBAA4B,WAC7C,MAAMA,EAAU,wBAAwB,OAG5C,MAAU,MAAM,iEAAiE,CACrF,EAAG,CAACX,CAAG,CAAC,EAEFY,GAAA,EAAOjB,EAAAA,YAAAA,CAAY,SAA2B,CAChD,GAAIC,EAAAA,qBAAqB,IAAM,KAAM,OACrC,IAAMO,EAA0B,SAChC,GAAI,OAAOA,EAAI,gBAAmB,WAC9B,MAAMA,EAAI,eAAe,OAG7B,GAAI,OAAOA,EAAI,sBAAyB,WACpC,MAAMA,EAAI,qBAAqB,OAGnC,MAAU,MAAM,iEAAiE,CACrF,EAAG,CAAC,CAAC,EAWL,MAAO,CAAE,eAAc,YAAW,QAAO,OAAM,QAAA,EAThCR,EAAAA,YAAAA,CAAY,SAA2B,CAClD,IAAMc,EAASV,EAAcC,CAAG,EAC5BS,IAAW,MAAQb,EAAAA,qBAAqB,IAAMa,EAC9C,MAAMG,EAAK,EAGf,MAAMF,EAAM,CAChB,EAAG,CAACA,EAAOE,EAAMZ,CAAG,CAE2B,CAAO,CAC1D,C"}
@@ -19,27 +19,15 @@ function s(s) {
19
19
  let e = a(s);
20
20
  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.");
21
21
  let t = e;
22
- if (typeof t.requestFullscreen == "function") {
23
- await t.requestFullscreen();
24
- return;
25
- }
26
- if (typeof t.webkitRequestFullscreen == "function") {
27
- await t.webkitRequestFullscreen();
28
- return;
29
- }
30
- throw Error("useFullscreen: this browser exposes no way to enter fullscreen.");
22
+ if (typeof t.requestFullscreen == "function") await t.requestFullscreen();
23
+ else if (typeof t.webkitRequestFullscreen == "function") await t.webkitRequestFullscreen();
24
+ else throw Error("useFullscreen: this browser exposes no way to enter fullscreen.");
31
25
  }, [s]), p = n(async () => {
32
26
  if (e() === null) return;
33
27
  let t = document;
34
- if (typeof t.exitFullscreen == "function") {
35
- await t.exitFullscreen();
36
- return;
37
- }
38
- if (typeof t.webkitExitFullscreen == "function") {
39
- await t.webkitExitFullscreen();
40
- return;
41
- }
42
- throw Error("useFullscreen: this browser exposes no way to leave fullscreen.");
28
+ if (typeof t.exitFullscreen == "function") await t.exitFullscreen();
29
+ else if (typeof t.webkitExitFullscreen == "function") await t.webkitExitFullscreen();
30
+ else throw Error("useFullscreen: this browser exposes no way to leave fullscreen.");
43
31
  }, []);
44
32
  return {
45
33
  isFullscreen: u,
@@ -48,11 +36,7 @@ function s(s) {
48
36
  exit: p,
49
37
  toggle: n(async () => {
50
38
  let t = a(s);
51
- if (t !== null && e() === t) {
52
- await p();
53
- return;
54
- }
55
- await f();
39
+ t !== null && e() === t ? await p() : await f();
56
40
  }, [
57
41
  f,
58
42
  p,
@@ -1 +1 @@
1
- {"version":3,"file":"use-fullscreen.js","names":[],"sources":["../../src/hooks/use-fullscreen.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\nimport { getFullscreenElement, useFullscreenElement } from \"./use-fullscreen-element\";\n\n/**\n * The fullscreen members of `document` this hook calls, standard and\n * vendor-prefixed, every one of them optional.\n *\n * `lib.dom` declares the standard members as always present, which is a promise\n * the runtime does not keep: an older WebKit ships only the prefixed pair, and a\n * document inside an `<iframe>` without `allowfullscreen` reports\n * `fullscreenEnabled: false`. Reading through an all-optional shape is what makes\n * `typeof x === \"function\"` a check the compiler agrees is worth making.\n */\ninterface FullscreenDocument {\n fullscreenEnabled?: boolean;\n exitFullscreen?: () => Promise<void>;\n webkitFullscreenEnabled?: boolean;\n webkitExitFullscreen?: () => Promise<void> | void;\n}\n\n/** The fullscreen members of an element, standard and vendor-prefixed. */\ninterface FullscreenTarget {\n requestFullscreen?: (options?: FullscreenOptions) => Promise<void>;\n webkitRequestFullscreen?: () => Promise<void> | void;\n}\n\n/**\n * Resolve which element the hook acts on.\n *\n * `ref.current` when a ref was given, `document.documentElement` when it was not\n * — the whole page, which is what \"go fullscreen\" means with no element named.\n *\n * A missing `ref.current` deliberately resolves to `null` rather than falling\n * back to the page: a caller who named an element and whose element is not\n * mounted yet wants an error, not the entire document blown up to fill the\n * screen behind their video.\n *\n * @param ref - The element to present, or `undefined` for the whole page.\n * @returns The element, or `null` when there is nothing to act on.\n */\nfunction resolveTarget(ref?: RefObject<HTMLElement | null>): HTMLElement | null {\n if (typeof document === \"undefined\") return null;\n return ref ? ref.current : document.documentElement;\n}\n\n/**\n * Whether this environment can present anything fullscreen at all.\n *\n * Two independent reasons for `false`, and skipping either one ships a button\n * that does nothing when pressed: the API can be missing (older WebKit, and every\n * browser on iOS for non-`<video>` elements), or present and **disabled** — a\n * document inside an `<iframe>` without the `allowfullscreen` attribute exposes\n * `requestFullscreen` and rejects every call to it, which `fullscreenEnabled`\n * reports up front.\n *\n * An engine that exposes the methods and no flag at all is treated as capable:\n * the flag is the newer half of the API, so its absence says nothing.\n *\n * @returns `true` when a fullscreen request stands a chance of being honoured.\n */\nexport function isFullscreenSupported(): boolean {\n if (typeof document === \"undefined\") return false;\n const root: FullscreenTarget = document.documentElement;\n const doc: FullscreenDocument = document;\n const reachable =\n typeof root.requestFullscreen === \"function\" ||\n typeof root.webkitRequestFullscreen === \"function\";\n return reachable && (doc.fullscreenEnabled ?? doc.webkitFullscreenEnabled ?? true);\n}\n\n/** Value returned by {@link useFullscreen}. */\nexport interface UseFullscreenResult {\n /** Whether the target element is the one the browser is presenting right now. */\n isFullscreen: boolean;\n /** Whether a request stands a chance at all — hide the control when `false`. */\n supported: boolean;\n /** Present the target. Must be called from a user gesture. Rejects if refused. */\n enter: () => Promise<void>;\n /** Leave fullscreen. Resolves immediately when nothing is presented. */\n exit: () => Promise<void>;\n /** Leave if the target is presented, otherwise enter. Same gesture rule as `enter`. */\n toggle: () => Promise<void>;\n}\n\n/**\n * Drive an immersive mode whose state stays true to the browser.\n *\n * The mistake this exists to remove is storing `isFullscreen` in state and\n * flipping it inside your own `enter()` / `exit()`. Fullscreen ends in ways your\n * code never sees — `Esc`, the browser's own exit affordance, F11 pressed while an\n * API fullscreen is active — and each of those leaves the flag saying \"sair\" over\n * a page that is already windowed. The only honest source is the\n * `fullscreenchange` event, which fires for every one of them, so that is what\n * this hook reads and what the returned `isFullscreen` reflects. The action\n * callbacks never touch it.\n *\n * The subscription is not this hook's own: it lives in `useFullscreenElement`,\n * shared with `usePortalHost`, which needs the same fact to decide where an\n * overlay mounts while fullscreen is on. Two independent listeners for one event\n * would mean two copies of the WebKit prefix dance and two places to fix the next\n * quirk, so the primitive answers \"which element is presented\" once and each\n * consumer asks its own question of the answer.\n *\n * WebKit's prefixed members are handled throughout — `webkitfullscreenchange`,\n * `webkitFullscreenElement`, `webkitRequestFullscreen`, `webkitExitFullscreen` —\n * because Safari on iPad still ships them and nothing else.\n *\n * `isFullscreen` is identity against the target, not containment: a `<video>`\n * inside your element going fullscreen on its own is not your element being\n * presented, and reporting `true` there would put your exit control inside a\n * subtree the browser is not painting.\n *\n * @param ref - The element to present. Omit it to present the whole page\n * (`document.documentElement`).\n * @returns `{ isFullscreen, supported, enter, exit, toggle }`.\n * @throws Nothing during render. `enter()` and `toggle()` reject with the\n * browser's own error when the request is refused — most often a `TypeError`\n * because the call did not come from a user gesture — and with an `Error` when\n * there is no element to present or the environment ships no Fullscreen API.\n *\n * @example\n * const stage = useRef<HTMLDivElement>(null);\n * const { isFullscreen, supported, toggle } = useFullscreen(stage);\n *\n * <div ref={stage}>\n * <video src=\"/aula.mp4\" controls />\n * {supported ? (\n * <button onClick={() => void toggle().catch(() => setRefused(true))}>\n * {isFullscreen ? \"Sair da tela cheia\" : \"Tela cheia\"}\n * </button>\n * ) : null}\n * </div>\n */\nexport function useFullscreen(ref?: RefObject<HTMLElement | null>): UseFullscreenResult {\n const element = useFullscreenElement();\n const [supported] = useState(isFullscreenSupported);\n const [isFullscreen, setIsFullscreen] = useState(false);\n\n useEffect(() => {\n const target = resolveTarget(ref);\n setIsFullscreen(target !== null && element === target);\n }, [element, ref]);\n\n const enter = useCallback(async (): Promise<void> => {\n const target = resolveTarget(ref);\n if (target === null) {\n throw new Error(\n \"useFullscreen: nothing to present. Either this environment has no document, \" +\n \"or the ref was never attached to a mounted element.\",\n );\n }\n const candidate: FullscreenTarget = target;\n if (typeof candidate.requestFullscreen === \"function\") {\n await candidate.requestFullscreen();\n return;\n }\n if (typeof candidate.webkitRequestFullscreen === \"function\") {\n await candidate.webkitRequestFullscreen();\n return;\n }\n throw new Error(\"useFullscreen: this browser exposes no way to enter fullscreen.\");\n }, [ref]);\n\n const exit = useCallback(async (): Promise<void> => {\n if (getFullscreenElement() === null) return;\n const doc: FullscreenDocument = document;\n if (typeof doc.exitFullscreen === \"function\") {\n await doc.exitFullscreen();\n return;\n }\n if (typeof doc.webkitExitFullscreen === \"function\") {\n await doc.webkitExitFullscreen();\n return;\n }\n throw new Error(\"useFullscreen: this browser exposes no way to leave fullscreen.\");\n }, []);\n\n const toggle = useCallback(async (): Promise<void> => {\n const target = resolveTarget(ref);\n if (target !== null && getFullscreenElement() === target) {\n await exit();\n return;\n }\n await enter();\n }, [enter, exit, ref]);\n\n return { isFullscreen, supported, enter, exit, toggle };\n}\n"],"mappings":";;;AAyCA,SAAS,EAAc,GAAyD;CAE5E,OADI,OAAO,WAAa,MAAoB,OACrC,IAAM,EAAI,UAAU,SAAS;AACxC;AAiBA,SAAgB,IAAiC;CAC7C,IAAI,OAAO,WAAa,KAAa,OAAO;CAC5C,IAAM,IAAyB,SAAS,iBAClC,IAA0B;CAIhC,QAFI,OAAO,EAAK,qBAAsB,cAClC,OAAO,EAAK,2BAA4B,gBACvB,EAAI,qBAAqB,EAAI,2BAA2B;AACjF;AAiEA,SAAgB,EAAc,GAA0D;CACpF,IAAM,IAAU,EAAqB,GAC/B,CAAC,KAAa,EAAS,CAAqB,GAC5C,CAAC,GAAc,KAAmB,EAAS,EAAK;CAEtD,QAAgB;EACZ,IAAM,IAAS,EAAc,CAAG;EAChC,EAAgB,MAAW,QAAQ,MAAY,CAAM;CACzD,GAAG,CAAC,GAAS,CAAG,CAAC;CAEjB,IAAM,IAAQ,EAAY,YAA2B;EACjD,IAAM,IAAS,EAAc,CAAG;EAChC,IAAI,MAAW,MACX,MAAU,MACN,iIAEJ;EAEJ,IAAM,IAA8B;EACpC,IAAI,OAAO,EAAU,qBAAsB,YAAY;GACnD,MAAM,EAAU,kBAAkB;GAClC;EACJ;EACA,IAAI,OAAO,EAAU,2BAA4B,YAAY;GACzD,MAAM,EAAU,wBAAwB;GACxC;EACJ;EACA,MAAU,MAAM,iEAAiE;CACrF,GAAG,CAAC,CAAG,CAAC,GAEF,IAAO,EAAY,YAA2B;EAChD,IAAI,EAAqB,MAAM,MAAM;EACrC,IAAM,IAA0B;EAChC,IAAI,OAAO,EAAI,kBAAmB,YAAY;GAC1C,MAAM,EAAI,eAAe;GACzB;EACJ;EACA,IAAI,OAAO,EAAI,wBAAyB,YAAY;GAChD,MAAM,EAAI,qBAAqB;GAC/B;EACJ;EACA,MAAU,MAAM,iEAAiE;CACrF,GAAG,CAAC,CAAC;CAWL,OAAO;EAAE;EAAc;EAAW;EAAO;EAAM,QAThC,EAAY,YAA2B;GAClD,IAAM,IAAS,EAAc,CAAG;GAChC,IAAI,MAAW,QAAQ,EAAqB,MAAM,GAAQ;IACtD,MAAM,EAAK;IACX;GACJ;GACA,MAAM,EAAM;EAChB,GAAG;GAAC;GAAO;GAAM;EAAG,CAE2B;CAAO;AAC1D"}
1
+ {"version":3,"file":"use-fullscreen.js","names":["resolveTarget","ref","isFullscreenSupported","root","doc","useFullscreen","element","useFullscreenElement","supported","useState","isFullscreen","setIsFullscreen","target","enter","useCallback","candidate","exit","getFullscreenElement"],"sources":["../../src/hooks/use-fullscreen.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\nimport { getFullscreenElement, useFullscreenElement } from \"./use-fullscreen-element\";\n\n/**\n * The fullscreen members of `document` this hook calls, standard and\n * vendor-prefixed, every one of them optional.\n *\n * `lib.dom` declares the standard members as always present, which is a promise\n * the runtime does not keep: an older WebKit ships only the prefixed pair, and a\n * document inside an `<iframe>` without `allowfullscreen` reports\n * `fullscreenEnabled: false`. Reading through an all-optional shape is what makes\n * `typeof x === \"function\"` a check the compiler agrees is worth making.\n */\ninterface FullscreenDocument {\n fullscreenEnabled?: boolean;\n exitFullscreen?: () => Promise<void>;\n webkitFullscreenEnabled?: boolean;\n webkitExitFullscreen?: () => Promise<void> | void;\n}\n\n/** The fullscreen members of an element, standard and vendor-prefixed. */\ninterface FullscreenTarget {\n requestFullscreen?: (options?: FullscreenOptions) => Promise<void>;\n webkitRequestFullscreen?: () => Promise<void> | void;\n}\n\n/**\n * Resolve which element the hook acts on.\n *\n * `ref.current` when a ref was given, `document.documentElement` when it was not\n * — the whole page, which is what \"go fullscreen\" means with no element named.\n *\n * A missing `ref.current` deliberately resolves to `null` rather than falling\n * back to the page: a caller who named an element and whose element is not\n * mounted yet wants an error, not the entire document blown up to fill the\n * screen behind their video.\n *\n * @param ref - The element to present, or `undefined` for the whole page.\n * @returns The element, or `null` when there is nothing to act on.\n */\nfunction resolveTarget(ref?: RefObject<HTMLElement | null>): HTMLElement | null {\n if (typeof document === \"undefined\") return null;\n return ref ? ref.current : document.documentElement;\n}\n\n/**\n * Whether this environment can present anything fullscreen at all.\n *\n * Two independent reasons for `false`, and skipping either one ships a button\n * that does nothing when pressed: the API can be missing (older WebKit, and every\n * browser on iOS for non-`<video>` elements), or present and **disabled** — a\n * document inside an `<iframe>` without the `allowfullscreen` attribute exposes\n * `requestFullscreen` and rejects every call to it, which `fullscreenEnabled`\n * reports up front.\n *\n * An engine that exposes the methods and no flag at all is treated as capable:\n * the flag is the newer half of the API, so its absence says nothing.\n *\n * @returns `true` when a fullscreen request stands a chance of being honoured.\n */\nexport function isFullscreenSupported(): boolean {\n if (typeof document === \"undefined\") return false;\n const root: FullscreenTarget = document.documentElement;\n const doc: FullscreenDocument = document;\n const reachable =\n typeof root.requestFullscreen === \"function\" ||\n typeof root.webkitRequestFullscreen === \"function\";\n return reachable && (doc.fullscreenEnabled ?? doc.webkitFullscreenEnabled ?? true);\n}\n\n/** Value returned by {@link useFullscreen}. */\nexport interface UseFullscreenResult {\n /** Whether the target element is the one the browser is presenting right now. */\n isFullscreen: boolean;\n /** Whether a request stands a chance at all — hide the control when `false`. */\n supported: boolean;\n /** Present the target. Must be called from a user gesture. Rejects if refused. */\n enter: () => Promise<void>;\n /** Leave fullscreen. Resolves immediately when nothing is presented. */\n exit: () => Promise<void>;\n /** Leave if the target is presented, otherwise enter. Same gesture rule as `enter`. */\n toggle: () => Promise<void>;\n}\n\n/**\n * Drive an immersive mode whose state stays true to the browser.\n *\n * The mistake this exists to remove is storing `isFullscreen` in state and\n * flipping it inside your own `enter()` / `exit()`. Fullscreen ends in ways your\n * code never sees — `Esc`, the browser's own exit affordance, F11 pressed while an\n * API fullscreen is active — and each of those leaves the flag saying \"sair\" over\n * a page that is already windowed. The only honest source is the\n * `fullscreenchange` event, which fires for every one of them, so that is what\n * this hook reads and what the returned `isFullscreen` reflects. The action\n * callbacks never touch it.\n *\n * The subscription is not this hook's own: it lives in `useFullscreenElement`,\n * shared with `usePortalHost`, which needs the same fact to decide where an\n * overlay mounts while fullscreen is on. Two independent listeners for one event\n * would mean two copies of the WebKit prefix dance and two places to fix the next\n * quirk, so the primitive answers \"which element is presented\" once and each\n * consumer asks its own question of the answer.\n *\n * WebKit's prefixed members are handled throughout — `webkitfullscreenchange`,\n * `webkitFullscreenElement`, `webkitRequestFullscreen`, `webkitExitFullscreen` —\n * because Safari on iPad still ships them and nothing else.\n *\n * `isFullscreen` is identity against the target, not containment: a `<video>`\n * inside your element going fullscreen on its own is not your element being\n * presented, and reporting `true` there would put your exit control inside a\n * subtree the browser is not painting.\n *\n * @param ref - The element to present. Omit it to present the whole page\n * (`document.documentElement`).\n * @returns `{ isFullscreen, supported, enter, exit, toggle }`.\n * @throws Nothing during render. `enter()` and `toggle()` reject with the\n * browser's own error when the request is refused — most often a `TypeError`\n * because the call did not come from a user gesture — and with an `Error` when\n * there is no element to present or the environment ships no Fullscreen API.\n *\n * @example\n * const stage = useRef<HTMLDivElement>(null);\n * const { isFullscreen, supported, toggle } = useFullscreen(stage);\n *\n * <div ref={stage}>\n * <video src=\"/aula.mp4\" controls />\n * {supported ? (\n * <button onClick={() => void toggle().catch(() => setRefused(true))}>\n * {isFullscreen ? \"Sair da tela cheia\" : \"Tela cheia\"}\n * </button>\n * ) : null}\n * </div>\n */\nexport function useFullscreen(ref?: RefObject<HTMLElement | null>): UseFullscreenResult {\n const element = useFullscreenElement();\n const [supported] = useState(isFullscreenSupported);\n const [isFullscreen, setIsFullscreen] = useState(false);\n\n useEffect(() => {\n const target = resolveTarget(ref);\n setIsFullscreen(target !== null && element === target);\n }, [element, ref]);\n\n const enter = useCallback(async (): Promise<void> => {\n const target = resolveTarget(ref);\n if (target === null) {\n throw new Error(\n \"useFullscreen: nothing to present. Either this environment has no document, \" +\n \"or the ref was never attached to a mounted element.\",\n );\n }\n const candidate: FullscreenTarget = target;\n if (typeof candidate.requestFullscreen === \"function\") {\n await candidate.requestFullscreen();\n return;\n }\n if (typeof candidate.webkitRequestFullscreen === \"function\") {\n await candidate.webkitRequestFullscreen();\n return;\n }\n throw new Error(\"useFullscreen: this browser exposes no way to enter fullscreen.\");\n }, [ref]);\n\n const exit = useCallback(async (): Promise<void> => {\n if (getFullscreenElement() === null) return;\n const doc: FullscreenDocument = document;\n if (typeof doc.exitFullscreen === \"function\") {\n await doc.exitFullscreen();\n return;\n }\n if (typeof doc.webkitExitFullscreen === \"function\") {\n await doc.webkitExitFullscreen();\n return;\n }\n throw new Error(\"useFullscreen: this browser exposes no way to leave fullscreen.\");\n }, []);\n\n const toggle = useCallback(async (): Promise<void> => {\n const target = resolveTarget(ref);\n if (target !== null && getFullscreenElement() === target) {\n await exit();\n return;\n }\n await enter();\n }, [enter, exit, ref]);\n\n return { isFullscreen, supported, enter, exit, toggle };\n}\n"],"mappings":";;;AAyCA,SAASA,EAAc,GAAyD;CAE5E,OADI,OAAO,WAAa,MAAoB,OACrCC,IAAMA,EAAI,UAAU,SAAS;AACxC;AAiBA,SAAgBC,IAAiC;CAC7C,IAAI,OAAO,WAAa,KAAa,OAAO;CAC5C,IAAMC,IAAyB,SAAS,iBAClCC,IAA0B;CAIhC,QAFI,OAAOD,EAAK,qBAAsB,cAClC,OAAOA,EAAK,2BAA4B,gBACvBC,EAAI,qBAAqBA,EAAI,2BAA2B;AACjF;AAiEA,SAAgBC,EAAc,GAA0D;CACpF,IAAMC,IAAUC,EAAqB,GAC/B,CAACC,KAAaC,EAASP,CAAqB,GAC5C,CAACQ,GAAcC,KAAmBF,EAAS,EAAK;CAEtD,QAAgB;EACZ,IAAMG,IAASZ,EAAcC,CAAG;EAChC,EAAgBW,MAAW,QAAQN,MAAYM,CAAM;CACzD,GAAG,CAACN,GAASL,CAAG,CAAC;CAEjB,IAAMY,IAAQC,EAAY,YAA2B;EACjD,IAAMF,IAASZ,EAAcC,CAAG;EAChC,IAAIW,MAAW,MACX,MAAU,MACN,iIAEJ;EAEJ,IAAMG,IAA8BH;EACpC,IAAI,OAAOG,EAAU,qBAAsB,YACvC,MAAMA,EAAU,kBAAkB;OAGtC,IAAI,OAAOA,EAAU,2BAA4B,YAC7C,MAAMA,EAAU,wBAAwB;OAG5C,MAAU,MAAM,iEAAiE;CACrF,GAAG,CAACd,CAAG,CAAC,GAEFe,IAAOF,EAAY,YAA2B;EAChD,IAAIG,EAAqB,MAAM,MAAM;EACrC,IAAMb,IAA0B;EAChC,IAAI,OAAOA,EAAI,kBAAmB,YAC9B,MAAMA,EAAI,eAAe;OAG7B,IAAI,OAAOA,EAAI,wBAAyB,YACpC,MAAMA,EAAI,qBAAqB;OAGnC,MAAU,MAAM,iEAAiE;CACrF,GAAG,CAAC,CAAC;CAWL,OAAO;EAAE;EAAc;EAAW;EAAO;EAAM,QAThCU,EAAY,YAA2B;GAClD,IAAMF,IAASZ,EAAcC,CAAG;GAChC,AAAIW,MAAW,QAAQK,EAAqB,MAAML,IAC9C,MAAMI,EAAK,IAGf,MAAMH,EAAM;EAChB,GAAG;GAACA;GAAOG;GAAMf;EAAG,CAE2B;CAAO;AAC1D"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-geolocation.cjs","names":[],"sources":["../../src/hooks/use-geolocation.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport interface GeolocationState {\n loading: boolean;\n error: GeolocationPositionError | null;\n coords: GeolocationCoordinates | null;\n timestamp: number | null;\n}\n\nexport interface UseGeolocationOptions extends PositionOptions {\n /** Use `watchPosition` instead of one-shot `getCurrentPosition`. Default: false. */\n watch?: boolean;\n /** Disable the hook without unmounting. Default: false. */\n disabled?: boolean;\n}\n\n/**\n * React hook around the Geolocation API.\n *\n * The effect depends on the individual `PositionOptions` fields instead of the\n * rest object, which is a new reference on every render and would restart the\n * watch continuously. `exhaustive-deps` is silenced there because those fields\n * are the whole of what the effect reads from it.\n *\n * @param options - Geolocation options plus `watch` and `disabled` switches.\n * @returns The latest position, error and loading state.\n */\nexport function useGeolocation(options: UseGeolocationOptions = {}): GeolocationState {\n const { watch = false, disabled = false, ...positionOptions } = options;\n const [state, setState] = useState<GeolocationState>({\n loading: !disabled,\n error: null,\n coords: null,\n timestamp: null,\n });\n\n useEffect(() => {\n if (disabled || typeof navigator === \"undefined\" || !navigator.geolocation) {\n setState((prev) => ({ ...prev, loading: false }));\n return;\n }\n\n const onSuccess = (position: GeolocationPosition): void => {\n setState({\n loading: false,\n error: null,\n coords: position.coords,\n timestamp: position.timestamp,\n });\n };\n const onError = (error: GeolocationPositionError): void => {\n setState((prev) => ({ ...prev, loading: false, error }));\n };\n\n if (watch) {\n const watchId = navigator.geolocation.watchPosition(\n onSuccess,\n onError,\n positionOptions,\n );\n return () => navigator.geolocation.clearWatch(watchId);\n }\n\n navigator.geolocation.getCurrentPosition(onSuccess, onError, positionOptions);\n return undefined;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disabled,\n watch,\n positionOptions.enableHighAccuracy,\n positionOptions.maximumAge,\n positionOptions.timeout,\n ]);\n\n return state;\n}\n"],"mappings":"uBA2BA,SAAgB,EAAe,EAAiC,CAAC,EAAqB,CAClF,GAAM,CAAE,QAAQ,GAAO,WAAW,GAAO,GAAG,GAAoB,EAC1D,CAAC,EAAO,IAAA,EAAY,EAAA,SAAA,CAA2B,CACjD,QAAS,CAAC,EACV,MAAO,KACP,OAAQ,KACR,UAAW,IACf,CAAC,EAwCD,OAtCA,EAAA,EAAA,UAAA,KAAgB,CACZ,GAAI,GAAY,OAAO,UAAc,KAAe,CAAC,UAAU,YAAa,CACxE,EAAU,IAAU,CAAE,GAAG,EAAM,QAAS,EAAM,EAAE,EAChD,MACJ,CAEA,IAAM,EAAa,GAAwC,CACvD,EAAS,CACL,QAAS,GACT,MAAO,KACP,OAAQ,EAAS,OACjB,UAAW,EAAS,SACxB,CAAC,CACL,EACM,EAAW,GAA0C,CACvD,EAAU,IAAU,CAAE,GAAG,EAAM,QAAS,GAAO,OAAM,EAAE,CAC3D,EAEA,GAAI,EAAO,CACP,IAAM,EAAU,UAAU,YAAY,cAClC,EACA,EACA,CACJ,EACA,UAAa,UAAU,YAAY,WAAW,CAAO,CACzD,CAEA,UAAU,YAAY,mBAAmB,EAAW,EAAS,CAAe,CAGhF,EAAG,CACC,EACA,EACA,EAAgB,mBAChB,EAAgB,WAChB,EAAgB,OACpB,CAAC,EAEM,CACX"}
1
+ {"version":3,"file":"use-geolocation.cjs","names":["useState","react","useGeolocation","positionOptions","options","state","setState","disabled","prev","onSuccess","position","onError","watch","watchId"],"sources":["../../src/hooks/use-geolocation.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport interface GeolocationState {\n loading: boolean;\n error: GeolocationPositionError | null;\n coords: GeolocationCoordinates | null;\n timestamp: number | null;\n}\n\nexport interface UseGeolocationOptions extends PositionOptions {\n /** Use `watchPosition` instead of one-shot `getCurrentPosition`. Default: false. */\n watch?: boolean;\n /** Disable the hook without unmounting. Default: false. */\n disabled?: boolean;\n}\n\n/**\n * React hook around the Geolocation API.\n *\n * The effect depends on the individual `PositionOptions` fields instead of the\n * rest object, which is a new reference on every render and would restart the\n * watch continuously. `exhaustive-deps` is silenced there because those fields\n * are the whole of what the effect reads from it.\n *\n * @param options - Geolocation options plus `watch` and `disabled` switches.\n * @returns The latest position, error and loading state.\n */\nexport function useGeolocation(options: UseGeolocationOptions = {}): GeolocationState {\n const { watch = false, disabled = false, ...positionOptions } = options;\n const [state, setState] = useState<GeolocationState>({\n loading: !disabled,\n error: null,\n coords: null,\n timestamp: null,\n });\n\n useEffect(() => {\n if (disabled || typeof navigator === \"undefined\" || !navigator.geolocation) {\n setState((prev) => ({ ...prev, loading: false }));\n return;\n }\n\n const onSuccess = (position: GeolocationPosition): void => {\n setState({\n loading: false,\n error: null,\n coords: position.coords,\n timestamp: position.timestamp,\n });\n };\n const onError = (error: GeolocationPositionError): void => {\n setState((prev) => ({ ...prev, loading: false, error }));\n };\n\n if (watch) {\n const watchId = navigator.geolocation.watchPosition(\n onSuccess,\n onError,\n positionOptions,\n );\n return () => navigator.geolocation.clearWatch(watchId);\n }\n\n navigator.geolocation.getCurrentPosition(onSuccess, onError, positionOptions);\n return undefined;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disabled,\n watch,\n positionOptions.enableHighAccuracy,\n positionOptions.maximumAge,\n positionOptions.timeout,\n ]);\n\n return state;\n}\n"],"mappings":"A,uBA2BA,SAAgBE,EAAe,EAAiC,CAAC,EAAqB,CAClF,GAAM,CAAE,QAAQ,GAAO,WAAW,GAAO,GAAGC,GAAoBC,EAC1D,CAACC,EAAOC,IAAA,EAAYN,EAAAA,SAAAA,CAA2B,CACjD,QAAS,CAACO,EACV,MAAO,KACP,OAAQ,KACR,UAAW,IACf,CAAC,EAwCD,OAtCA,EAAAN,EAAA,UAAA,KAAgB,CACZ,GAAIM,GAAY,OAAO,UAAc,KAAe,CAAC,UAAU,YAAa,CACxED,EAAU,IAAU,CAAE,GAAGE,EAAM,QAAS,EAAM,EAAE,EAChD,MACJ,CAEA,IAAMC,EAAa,GAAwC,CACvDH,EAAS,CACL,QAAS,GACT,MAAO,KACP,OAAQI,EAAS,OACjB,UAAWA,EAAS,SACxB,CAAC,CACL,EACMC,EAAW,GAA0C,CACvDL,EAAU,IAAU,CAAE,GAAGE,EAAM,QAAS,GAAO,OAAM,EAAE,CAC3D,EAEA,GAAII,EAAO,CACP,IAAMC,EAAU,UAAU,YAAY,cAClCJ,EACAE,EACAR,CACJ,EACA,UAAa,UAAU,YAAY,WAAWU,CAAO,CACzD,CAEA,UAAU,YAAY,mBAAmBJ,EAAWE,EAASR,CAAe,CAGhF,EAAG,CACCI,EACAK,EACAT,EAAgB,mBAChBA,EAAgB,WAChBA,EAAgB,OACpB,CAAC,EAEME,CACX,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-geolocation.js","names":[],"sources":["../../src/hooks/use-geolocation.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport interface GeolocationState {\n loading: boolean;\n error: GeolocationPositionError | null;\n coords: GeolocationCoordinates | null;\n timestamp: number | null;\n}\n\nexport interface UseGeolocationOptions extends PositionOptions {\n /** Use `watchPosition` instead of one-shot `getCurrentPosition`. Default: false. */\n watch?: boolean;\n /** Disable the hook without unmounting. Default: false. */\n disabled?: boolean;\n}\n\n/**\n * React hook around the Geolocation API.\n *\n * The effect depends on the individual `PositionOptions` fields instead of the\n * rest object, which is a new reference on every render and would restart the\n * watch continuously. `exhaustive-deps` is silenced there because those fields\n * are the whole of what the effect reads from it.\n *\n * @param options - Geolocation options plus `watch` and `disabled` switches.\n * @returns The latest position, error and loading state.\n */\nexport function useGeolocation(options: UseGeolocationOptions = {}): GeolocationState {\n const { watch = false, disabled = false, ...positionOptions } = options;\n const [state, setState] = useState<GeolocationState>({\n loading: !disabled,\n error: null,\n coords: null,\n timestamp: null,\n });\n\n useEffect(() => {\n if (disabled || typeof navigator === \"undefined\" || !navigator.geolocation) {\n setState((prev) => ({ ...prev, loading: false }));\n return;\n }\n\n const onSuccess = (position: GeolocationPosition): void => {\n setState({\n loading: false,\n error: null,\n coords: position.coords,\n timestamp: position.timestamp,\n });\n };\n const onError = (error: GeolocationPositionError): void => {\n setState((prev) => ({ ...prev, loading: false, error }));\n };\n\n if (watch) {\n const watchId = navigator.geolocation.watchPosition(\n onSuccess,\n onError,\n positionOptions,\n );\n return () => navigator.geolocation.clearWatch(watchId);\n }\n\n navigator.geolocation.getCurrentPosition(onSuccess, onError, positionOptions);\n return undefined;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disabled,\n watch,\n positionOptions.enableHighAccuracy,\n positionOptions.maximumAge,\n positionOptions.timeout,\n ]);\n\n return state;\n}\n"],"mappings":";;AA2BA,SAAgB,EAAe,IAAiC,CAAC,GAAqB;CAClF,IAAM,EAAE,WAAQ,IAAO,cAAW,IAAO,GAAG,MAAoB,GAC1D,CAAC,GAAO,KAAY,EAA2B;EACjD,SAAS,CAAC;EACV,OAAO;EACP,QAAQ;EACR,WAAW;CACf,CAAC;CAwCD,OAtCA,QAAgB;EACZ,IAAI,KAAY,OAAO,YAAc,OAAe,CAAC,UAAU,aAAa;GACxE,GAAU,OAAU;IAAE,GAAG;IAAM,SAAS;GAAM,EAAE;GAChD;EACJ;EAEA,IAAM,KAAa,MAAwC;GACvD,EAAS;IACL,SAAS;IACT,OAAO;IACP,QAAQ,EAAS;IACjB,WAAW,EAAS;GACxB,CAAC;EACL,GACM,KAAW,MAA0C;GACvD,GAAU,OAAU;IAAE,GAAG;IAAM,SAAS;IAAO;GAAM,EAAE;EAC3D;EAEA,IAAI,GAAO;GACP,IAAM,IAAU,UAAU,YAAY,cAClC,GACA,GACA,CACJ;GACA,aAAa,UAAU,YAAY,WAAW,CAAO;EACzD;EAEA,UAAU,YAAY,mBAAmB,GAAW,GAAS,CAAe;CAGhF,GAAG;EACC;EACA;EACA,EAAgB;EAChB,EAAgB;EAChB,EAAgB;CACpB,CAAC,GAEM;AACX"}
1
+ {"version":3,"file":"use-geolocation.js","names":["useGeolocation","positionOptions","options","state","setState","useState","disabled","useEffect","prev","onSuccess","position","onError","watch","watchId"],"sources":["../../src/hooks/use-geolocation.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport interface GeolocationState {\n loading: boolean;\n error: GeolocationPositionError | null;\n coords: GeolocationCoordinates | null;\n timestamp: number | null;\n}\n\nexport interface UseGeolocationOptions extends PositionOptions {\n /** Use `watchPosition` instead of one-shot `getCurrentPosition`. Default: false. */\n watch?: boolean;\n /** Disable the hook without unmounting. Default: false. */\n disabled?: boolean;\n}\n\n/**\n * React hook around the Geolocation API.\n *\n * The effect depends on the individual `PositionOptions` fields instead of the\n * rest object, which is a new reference on every render and would restart the\n * watch continuously. `exhaustive-deps` is silenced there because those fields\n * are the whole of what the effect reads from it.\n *\n * @param options - Geolocation options plus `watch` and `disabled` switches.\n * @returns The latest position, error and loading state.\n */\nexport function useGeolocation(options: UseGeolocationOptions = {}): GeolocationState {\n const { watch = false, disabled = false, ...positionOptions } = options;\n const [state, setState] = useState<GeolocationState>({\n loading: !disabled,\n error: null,\n coords: null,\n timestamp: null,\n });\n\n useEffect(() => {\n if (disabled || typeof navigator === \"undefined\" || !navigator.geolocation) {\n setState((prev) => ({ ...prev, loading: false }));\n return;\n }\n\n const onSuccess = (position: GeolocationPosition): void => {\n setState({\n loading: false,\n error: null,\n coords: position.coords,\n timestamp: position.timestamp,\n });\n };\n const onError = (error: GeolocationPositionError): void => {\n setState((prev) => ({ ...prev, loading: false, error }));\n };\n\n if (watch) {\n const watchId = navigator.geolocation.watchPosition(\n onSuccess,\n onError,\n positionOptions,\n );\n return () => navigator.geolocation.clearWatch(watchId);\n }\n\n navigator.geolocation.getCurrentPosition(onSuccess, onError, positionOptions);\n return undefined;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disabled,\n watch,\n positionOptions.enableHighAccuracy,\n positionOptions.maximumAge,\n positionOptions.timeout,\n ]);\n\n return state;\n}\n"],"mappings":";;AA2BA,SAAgBA,EAAe,IAAiC,CAAC,GAAqB;CAClF,IAAM,EAAE,WAAQ,IAAO,cAAW,IAAO,GAAGC,MAAoBC,GAC1D,CAACC,GAAOC,KAAYC,EAA2B;EACjD,SAAS,CAACC;EACV,OAAO;EACP,QAAQ;EACR,WAAW;CACf,CAAC;CAwCD,OAtCAC,QAAgB;EACZ,IAAID,KAAY,OAAO,YAAc,OAAe,CAAC,UAAU,aAAa;GACxE,GAAU,OAAU;IAAE,GAAGE;IAAM,SAAS;GAAM,EAAE;GAChD;EACJ;EAEA,IAAMC,KAAa,MAAwC;GACvD,EAAS;IACL,SAAS;IACT,OAAO;IACP,QAAQC,EAAS;IACjB,WAAWA,EAAS;GACxB,CAAC;EACL,GACMC,KAAW,MAA0C;GACvD,GAAU,OAAU;IAAE,GAAGH;IAAM,SAAS;IAAO;GAAM,EAAE;EAC3D;EAEA,IAAII,GAAO;GACP,IAAMC,IAAU,UAAU,YAAY,cAClCJ,GACAE,GACAV,CACJ;GACA,aAAa,UAAU,YAAY,WAAWY,CAAO;EACzD;EAEA,UAAU,YAAY,mBAAmBJ,GAAWE,GAASV,CAAe;CAGhF,GAAG;EACCK;EACAM;EACAX,EAAgB;EAChBA,EAAgB;EAChBA,EAAgB;CACpB,CAAC,GAEME;AACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-hover.cjs","names":[],"sources":["../../src/hooks/use-hover.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\n/**\n * Track whether the pointer is hovering over the referenced element.\n * Returns `false` on touch-only devices (no pointer hover).\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * const hovered = useHover(ref);\n * return <div ref={ref}>{hovered ? \"✨\" : \"\"}</div>;\n */\nexport function useHover<T extends HTMLElement>(ref: RefObject<T | null>): boolean {\n const [hovered, setHovered] = useState<boolean>(false);\n\n useEffect(() => {\n const node = ref.current;\n if (!node) return;\n const onEnter = (): void => setHovered(true);\n const onLeave = (): void => setHovered(false);\n node.addEventListener(\"mouseenter\", onEnter);\n node.addEventListener(\"mouseleave\", onLeave);\n return () => {\n node.removeEventListener(\"mouseenter\", onEnter);\n node.removeEventListener(\"mouseleave\", onLeave);\n };\n }, [ref]);\n\n return hovered;\n}\n"],"mappings":"uBAYA,SAAgB,EAAgC,EAAmC,CAC/E,GAAM,CAAC,EAAS,IAAA,EAAc,EAAA,SAAA,CAAkB,EAAK,EAerD,OAbA,EAAA,EAAA,UAAA,KAAgB,CACZ,IAAM,EAAO,EAAI,QACjB,GAAI,CAAC,EAAM,OACX,IAAM,MAAsB,EAAW,EAAI,EACrC,MAAsB,EAAW,EAAK,EAG5C,OAFA,EAAK,iBAAiB,aAAc,CAAO,EAC3C,EAAK,iBAAiB,aAAc,CAAO,MAC9B,CACT,EAAK,oBAAoB,aAAc,CAAO,EAC9C,EAAK,oBAAoB,aAAc,CAAO,CAClD,CACJ,EAAG,CAAC,CAAG,CAAC,EAED,CACX"}
1
+ {"version":3,"file":"use-hover.cjs","names":["useState","react","useHover","hovered","setHovered","node","ref","onEnter","onLeave"],"sources":["../../src/hooks/use-hover.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\n/**\n * Track whether the pointer is hovering over the referenced element.\n * Returns `false` on touch-only devices (no pointer hover).\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * const hovered = useHover(ref);\n * return <div ref={ref}>{hovered ? \"✨\" : \"\"}</div>;\n */\nexport function useHover<T extends HTMLElement>(ref: RefObject<T | null>): boolean {\n const [hovered, setHovered] = useState<boolean>(false);\n\n useEffect(() => {\n const node = ref.current;\n if (!node) return;\n const onEnter = (): void => setHovered(true);\n const onLeave = (): void => setHovered(false);\n node.addEventListener(\"mouseenter\", onEnter);\n node.addEventListener(\"mouseleave\", onLeave);\n return () => {\n node.removeEventListener(\"mouseenter\", onEnter);\n node.removeEventListener(\"mouseleave\", onLeave);\n };\n }, [ref]);\n\n return hovered;\n}\n"],"mappings":"A,uBAYA,SAAgBE,EAAgC,EAAmC,CAC/E,GAAM,CAACC,EAASC,IAAA,EAAcJ,EAAAA,SAAAA,CAAkB,EAAK,EAerD,OAbA,EAAAC,EAAA,UAAA,KAAgB,CACZ,IAAMI,EAAOC,EAAI,QACjB,GAAI,CAACD,EAAM,OACX,IAAME,MAAsBH,EAAW,EAAI,EACrCI,MAAsBJ,EAAW,EAAK,EAG5C,OAFAC,EAAK,iBAAiB,aAAcE,CAAO,EAC3CF,EAAK,iBAAiB,aAAcG,CAAO,MAC9B,CACTH,EAAK,oBAAoB,aAAcE,CAAO,EAC9CF,EAAK,oBAAoB,aAAcG,CAAO,CAClD,CACJ,EAAG,CAACF,CAAG,CAAC,EAEDH,CACX,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-hover.js","names":[],"sources":["../../src/hooks/use-hover.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\n/**\n * Track whether the pointer is hovering over the referenced element.\n * Returns `false` on touch-only devices (no pointer hover).\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * const hovered = useHover(ref);\n * return <div ref={ref}>{hovered ? \"✨\" : \"\"}</div>;\n */\nexport function useHover<T extends HTMLElement>(ref: RefObject<T | null>): boolean {\n const [hovered, setHovered] = useState<boolean>(false);\n\n useEffect(() => {\n const node = ref.current;\n if (!node) return;\n const onEnter = (): void => setHovered(true);\n const onLeave = (): void => setHovered(false);\n node.addEventListener(\"mouseenter\", onEnter);\n node.addEventListener(\"mouseleave\", onLeave);\n return () => {\n node.removeEventListener(\"mouseenter\", onEnter);\n node.removeEventListener(\"mouseleave\", onLeave);\n };\n }, [ref]);\n\n return hovered;\n}\n"],"mappings":";;AAYA,SAAgB,EAAgC,GAAmC;CAC/E,IAAM,CAAC,GAAS,KAAc,EAAkB,EAAK;CAerD,OAbA,QAAgB;EACZ,IAAM,IAAO,EAAI;EACjB,IAAI,CAAC,GAAM;EACX,IAAM,UAAsB,EAAW,EAAI,GACrC,UAAsB,EAAW,EAAK;EAG5C,OAFA,EAAK,iBAAiB,cAAc,CAAO,GAC3C,EAAK,iBAAiB,cAAc,CAAO,SAC9B;GAET,AADA,EAAK,oBAAoB,cAAc,CAAO,GAC9C,EAAK,oBAAoB,cAAc,CAAO;EAClD;CACJ,GAAG,CAAC,CAAG,CAAC,GAED;AACX"}
1
+ {"version":3,"file":"use-hover.js","names":["useHover","hovered","setHovered","useState","useEffect","node","ref","onEnter","onLeave"],"sources":["../../src/hooks/use-hover.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\n/**\n * Track whether the pointer is hovering over the referenced element.\n * Returns `false` on touch-only devices (no pointer hover).\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * const hovered = useHover(ref);\n * return <div ref={ref}>{hovered ? \"✨\" : \"\"}</div>;\n */\nexport function useHover<T extends HTMLElement>(ref: RefObject<T | null>): boolean {\n const [hovered, setHovered] = useState<boolean>(false);\n\n useEffect(() => {\n const node = ref.current;\n if (!node) return;\n const onEnter = (): void => setHovered(true);\n const onLeave = (): void => setHovered(false);\n node.addEventListener(\"mouseenter\", onEnter);\n node.addEventListener(\"mouseleave\", onLeave);\n return () => {\n node.removeEventListener(\"mouseenter\", onEnter);\n node.removeEventListener(\"mouseleave\", onLeave);\n };\n }, [ref]);\n\n return hovered;\n}\n"],"mappings":";;AAYA,SAAgBA,EAAgC,GAAmC;CAC/E,IAAM,CAACC,GAASC,KAAcC,EAAkB,EAAK;CAerD,OAbAC,QAAgB;EACZ,IAAMC,IAAOC,EAAI;EACjB,IAAI,CAACD,GAAM;EACX,IAAME,UAAsBL,EAAW,EAAI,GACrCM,UAAsBN,EAAW,EAAK;EAG5C,OAFAG,EAAK,iBAAiB,cAAcE,CAAO,GAC3CF,EAAK,iBAAiB,cAAcG,CAAO,SAC9B;GAET,AADAH,EAAK,oBAAoB,cAAcE,CAAO,GAC9CF,EAAK,oBAAoB,cAAcG,CAAO;EAClD;CACJ,GAAG,CAACF,CAAG,CAAC,GAEDL;AACX"}