tempest-react-sdk 0.78.0 → 0.79.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1585) hide show
  1. package/README.md +6 -6
  2. package/bin/lib/openapi/generate.mjs +168 -64
  3. package/bin/lib/openapi/generate.pagination.test.mjs +3 -2
  4. package/bin/lib/openapi/generate.test.mjs +263 -1
  5. package/dist/access/Can.cjs.map +1 -1
  6. package/dist/access/Can.js.map +1 -1
  7. package/dist/access/access-control-context.cjs.map +1 -1
  8. package/dist/access/access-control-context.js.map +1 -1
  9. package/dist/access/create-role-access-control.cjs.map +1 -1
  10. package/dist/access/create-role-access-control.js.map +1 -1
  11. package/dist/access/permissions-from-token.cjs.map +1 -1
  12. package/dist/access/permissions-from-token.js.map +1 -1
  13. package/dist/access/use-can.cjs.map +1 -1
  14. package/dist/access/use-can.js.map +1 -1
  15. package/dist/app/AppProviders.cjs.map +1 -1
  16. package/dist/app/AppProviders.js.map +1 -1
  17. package/dist/audio/audio-bus.cjs.map +1 -1
  18. package/dist/audio/audio-bus.js.map +1 -1
  19. package/dist/audio/audio-output.cjs.map +1 -1
  20. package/dist/audio/audio-output.js.map +1 -1
  21. package/dist/audio/audio-player.cjs.map +1 -1
  22. package/dist/audio/audio-player.js.map +1 -1
  23. package/dist/audio/audio-recorder.cjs.map +1 -1
  24. package/dist/audio/audio-recorder.js.map +1 -1
  25. package/dist/audio/duration.cjs.map +1 -1
  26. package/dist/audio/duration.js.map +1 -1
  27. package/dist/audio/level-meter.cjs.map +1 -1
  28. package/dist/audio/level-meter.js.map +1 -1
  29. package/dist/audio/media-access.cjs.map +1 -1
  30. package/dist/audio/media-access.js.map +1 -1
  31. package/dist/audio/noise-floor.cjs.map +1 -1
  32. package/dist/audio/noise-floor.js.map +1 -1
  33. package/dist/audio/sfx-pool.cjs.map +1 -1
  34. package/dist/audio/sfx-pool.js.map +1 -1
  35. package/dist/audio/use-audio-bus.cjs.map +1 -1
  36. package/dist/audio/use-audio-bus.js.map +1 -1
  37. package/dist/audio/use-audio-recorder.cjs.map +1 -1
  38. package/dist/audio/use-audio-recorder.js.map +1 -1
  39. package/dist/audio/use-audio.cjs.map +1 -1
  40. package/dist/audio/use-audio.js.map +1 -1
  41. package/dist/audio/use-microphone.cjs +1 -1
  42. package/dist/audio/use-microphone.cjs.map +1 -1
  43. package/dist/audio/use-microphone.js +1 -5
  44. package/dist/audio/use-microphone.js.map +1 -1
  45. package/dist/audio/use-sfx-pool.cjs.map +1 -1
  46. package/dist/audio/use-sfx-pool.js.map +1 -1
  47. package/dist/audio/voice-activity.cjs.map +1 -1
  48. package/dist/audio/voice-activity.js.map +1 -1
  49. package/dist/audio/voice-chain-stages.cjs.map +1 -1
  50. package/dist/audio/voice-chain-stages.js.map +1 -1
  51. package/dist/audio/voice-chain.cjs.map +1 -1
  52. package/dist/audio/voice-chain.js.map +1 -1
  53. package/dist/audio/wav.cjs.map +1 -1
  54. package/dist/audio/wav.js.map +1 -1
  55. package/dist/auth/AuthGuard.cjs.map +1 -1
  56. package/dist/auth/AuthGuard.js.map +1 -1
  57. package/dist/auth/create-auth-store.cjs.map +1 -1
  58. package/dist/auth/create-auth-store.js.map +1 -1
  59. package/dist/auth/create-tempest-auth.cjs +1 -1
  60. package/dist/auth/create-tempest-auth.cjs.map +1 -1
  61. package/dist/auth/create-tempest-auth.js +1 -3
  62. package/dist/auth/create-tempest-auth.js.map +1 -1
  63. package/dist/auth/jwt.cjs.map +1 -1
  64. package/dist/auth/jwt.js.map +1 -1
  65. package/dist/auth/lazy-with-retry.cjs.map +1 -1
  66. package/dist/auth/lazy-with-retry.js.map +1 -1
  67. package/dist/auth/passkey.cjs.map +1 -1
  68. package/dist/auth/passkey.js.map +1 -1
  69. package/dist/auth/refresh-queue.cjs.map +1 -1
  70. package/dist/auth/refresh-queue.js.map +1 -1
  71. package/dist/auth/use-passkey.cjs +1 -1
  72. package/dist/auth/use-passkey.cjs.map +1 -1
  73. package/dist/auth/use-passkey.js +1 -1
  74. package/dist/auth/use-passkey.js.map +1 -1
  75. package/dist/br/BrazilMap.cjs.map +1 -1
  76. package/dist/br/BrazilMap.js.map +1 -1
  77. package/dist/br/BrazilMap.module.cjs.map +1 -1
  78. package/dist/br/BrazilMap.module.js.map +1 -1
  79. package/dist/br/BrazilStateCitySelect.cjs.map +1 -1
  80. package/dist/br/BrazilStateCitySelect.js.map +1 -1
  81. package/dist/br/BrazilStateMap.cjs.map +1 -1
  82. package/dist/br/BrazilStateMap.js.map +1 -1
  83. package/dist/br/MapLegend.cjs.map +1 -1
  84. package/dist/br/MapLegend.js.map +1 -1
  85. package/dist/br/MapLegend.module.cjs.map +1 -1
  86. package/dist/br/MapLegend.module.js.map +1 -1
  87. package/dist/br/MapMarkers.cjs.map +1 -1
  88. package/dist/br/MapMarkers.js.map +1 -1
  89. package/dist/br/MapTooltip.cjs.map +1 -1
  90. package/dist/br/MapTooltip.js.map +1 -1
  91. package/dist/br/MunicipalitySearch.cjs +1 -1
  92. package/dist/br/MunicipalitySearch.cjs.map +1 -1
  93. package/dist/br/MunicipalitySearch.js +2 -5
  94. package/dist/br/MunicipalitySearch.js.map +1 -1
  95. package/dist/br/MunicipalitySearch.module.cjs.map +1 -1
  96. package/dist/br/MunicipalitySearch.module.js.map +1 -1
  97. package/dist/br/PixQRCode.cjs.map +1 -1
  98. package/dist/br/PixQRCode.js.map +1 -1
  99. package/dist/br/PixQRCode.module.cjs.map +1 -1
  100. package/dist/br/PixQRCode.module.js.map +1 -1
  101. package/dist/br/boleto.cjs.map +1 -1
  102. package/dist/br/boleto.js.map +1 -1
  103. package/dist/br/br-geo.cjs.map +1 -1
  104. package/dist/br/br-geo.js.map +1 -1
  105. package/dist/br/data/br-centroids.cjs.map +1 -1
  106. package/dist/br/data/br-centroids.js.map +1 -1
  107. package/dist/br/data/br-locations.cjs.map +1 -1
  108. package/dist/br/data/br-locations.js.map +1 -1
  109. package/dist/br/data/br-uf-geo.cjs.map +1 -1
  110. package/dist/br/data/br-uf-geo.js.map +1 -1
  111. package/dist/br/data/mun/AC.cjs.map +1 -1
  112. package/dist/br/data/mun/AC.js.map +1 -1
  113. package/dist/br/data/mun/AL.cjs.map +1 -1
  114. package/dist/br/data/mun/AL.js.map +1 -1
  115. package/dist/br/data/mun/AM.cjs.map +1 -1
  116. package/dist/br/data/mun/AM.js.map +1 -1
  117. package/dist/br/data/mun/AP.cjs.map +1 -1
  118. package/dist/br/data/mun/AP.js.map +1 -1
  119. package/dist/br/data/mun/BA.cjs.map +1 -1
  120. package/dist/br/data/mun/BA.js.map +1 -1
  121. package/dist/br/data/mun/CE.cjs.map +1 -1
  122. package/dist/br/data/mun/CE.js.map +1 -1
  123. package/dist/br/data/mun/DF.cjs.map +1 -1
  124. package/dist/br/data/mun/DF.js.map +1 -1
  125. package/dist/br/data/mun/ES.cjs.map +1 -1
  126. package/dist/br/data/mun/ES.js.map +1 -1
  127. package/dist/br/data/mun/GO.cjs.map +1 -1
  128. package/dist/br/data/mun/GO.js.map +1 -1
  129. package/dist/br/data/mun/MA.cjs.map +1 -1
  130. package/dist/br/data/mun/MA.js.map +1 -1
  131. package/dist/br/data/mun/MG.cjs.map +1 -1
  132. package/dist/br/data/mun/MG.js.map +1 -1
  133. package/dist/br/data/mun/MS.cjs.map +1 -1
  134. package/dist/br/data/mun/MS.js.map +1 -1
  135. package/dist/br/data/mun/MT.cjs.map +1 -1
  136. package/dist/br/data/mun/MT.js.map +1 -1
  137. package/dist/br/data/mun/PA.cjs.map +1 -1
  138. package/dist/br/data/mun/PA.js.map +1 -1
  139. package/dist/br/data/mun/PB.cjs.map +1 -1
  140. package/dist/br/data/mun/PB.js.map +1 -1
  141. package/dist/br/data/mun/PE.cjs.map +1 -1
  142. package/dist/br/data/mun/PE.js.map +1 -1
  143. package/dist/br/data/mun/PI.cjs.map +1 -1
  144. package/dist/br/data/mun/PI.js.map +1 -1
  145. package/dist/br/data/mun/PR.cjs.map +1 -1
  146. package/dist/br/data/mun/PR.js.map +1 -1
  147. package/dist/br/data/mun/RJ.cjs.map +1 -1
  148. package/dist/br/data/mun/RJ.js.map +1 -1
  149. package/dist/br/data/mun/RN.cjs.map +1 -1
  150. package/dist/br/data/mun/RN.js.map +1 -1
  151. package/dist/br/data/mun/RO.cjs.map +1 -1
  152. package/dist/br/data/mun/RO.js.map +1 -1
  153. package/dist/br/data/mun/RR.cjs.map +1 -1
  154. package/dist/br/data/mun/RR.js.map +1 -1
  155. package/dist/br/data/mun/RS.cjs.map +1 -1
  156. package/dist/br/data/mun/RS.js.map +1 -1
  157. package/dist/br/data/mun/SC.cjs.map +1 -1
  158. package/dist/br/data/mun/SC.js.map +1 -1
  159. package/dist/br/data/mun/SE.cjs.map +1 -1
  160. package/dist/br/data/mun/SE.js.map +1 -1
  161. package/dist/br/data/mun/SP.cjs.map +1 -1
  162. package/dist/br/data/mun/SP.js.map +1 -1
  163. package/dist/br/data/mun/TO.cjs.map +1 -1
  164. package/dist/br/data/mun/TO.js.map +1 -1
  165. package/dist/br/geocode.cjs.map +1 -1
  166. package/dist/br/geocode.js.map +1 -1
  167. package/dist/br/holidays.cjs.map +1 -1
  168. package/dist/br/holidays.js.map +1 -1
  169. package/dist/br/locations.cjs.map +1 -1
  170. package/dist/br/locations.js.map +1 -1
  171. package/dist/br/nfe.cjs.map +1 -1
  172. package/dist/br/nfe.js.map +1 -1
  173. package/dist/br/pix.cjs +1 -1
  174. package/dist/br/pix.cjs.map +1 -1
  175. package/dist/br/pix.js +108 -74
  176. package/dist/br/pix.js.map +1 -1
  177. package/dist/br/regions.cjs.map +1 -1
  178. package/dist/br/regions.js.map +1 -1
  179. package/dist/br/scales.cjs.map +1 -1
  180. package/dist/br/scales.js.map +1 -1
  181. package/dist/br/state-geo.cjs.map +1 -1
  182. package/dist/br/state-geo.js.map +1 -1
  183. package/dist/br/svg-utils.cjs.map +1 -1
  184. package/dist/br/svg-utils.js.map +1 -1
  185. package/dist/br/use-map-hover.cjs.map +1 -1
  186. package/dist/br/use-map-hover.js.map +1 -1
  187. package/dist/br/use-map-zoom.cjs.map +1 -1
  188. package/dist/br/use-map-zoom.js.map +1 -1
  189. package/dist/br/whatsapp.cjs.map +1 -1
  190. package/dist/br/whatsapp.js.map +1 -1
  191. package/dist/br.cjs.map +1 -1
  192. package/dist/br.d.ts +6 -2
  193. package/dist/br.js.map +1 -1
  194. package/dist/capture/barcode.cjs.map +1 -1
  195. package/dist/capture/barcode.js.map +1 -1
  196. package/dist/capture/media-recorder.cjs.map +1 -1
  197. package/dist/capture/media-recorder.js.map +1 -1
  198. package/dist/capture/use-barcode-scanner.cjs.map +1 -1
  199. package/dist/capture/use-barcode-scanner.js.map +1 -1
  200. package/dist/capture/use-screen-capture.cjs +1 -1
  201. package/dist/capture/use-screen-capture.cjs.map +1 -1
  202. package/dist/capture/use-screen-capture.js +1 -7
  203. package/dist/capture/use-screen-capture.js.map +1 -1
  204. package/dist/capture/use-speech-recognition.cjs +1 -1
  205. package/dist/capture/use-speech-recognition.cjs.map +1 -1
  206. package/dist/capture/use-speech-recognition.js +35 -36
  207. package/dist/capture/use-speech-recognition.js.map +1 -1
  208. package/dist/capture/use-torch.cjs.map +1 -1
  209. package/dist/capture/use-torch.js.map +1 -1
  210. package/dist/capture/use-video-recorder.cjs.map +1 -1
  211. package/dist/capture/use-video-recorder.js.map +1 -1
  212. package/dist/capture/video-recorder.cjs.map +1 -1
  213. package/dist/capture/video-recorder.js.map +1 -1
  214. package/dist/charts/AreaChart.cjs.map +1 -1
  215. package/dist/charts/AreaChart.js.map +1 -1
  216. package/dist/charts/BarChart.cjs.map +1 -1
  217. package/dist/charts/BarChart.js.map +1 -1
  218. package/dist/charts/LineChart.cjs.map +1 -1
  219. package/dist/charts/LineChart.js.map +1 -1
  220. package/dist/charts/PieChart.cjs.map +1 -1
  221. package/dist/charts/PieChart.js.map +1 -1
  222. package/dist/charts/RadarChart.cjs.map +1 -1
  223. package/dist/charts/RadarChart.js.map +1 -1
  224. package/dist/charts/palette.cjs.map +1 -1
  225. package/dist/charts/palette.js.map +1 -1
  226. package/dist/charts/scales.cjs.map +1 -1
  227. package/dist/charts/scales.js.map +1 -1
  228. package/dist/charts/types.cjs.map +1 -1
  229. package/dist/charts/types.js.map +1 -1
  230. package/dist/charts/use-chart-colors.cjs.map +1 -1
  231. package/dist/charts/use-chart-colors.js.map +1 -1
  232. package/dist/components/AIChat/AIChat.cjs +1 -1
  233. package/dist/components/AIChat/AIChat.cjs.map +1 -1
  234. package/dist/components/AIChat/AIChat.js +1 -5
  235. package/dist/components/AIChat/AIChat.js.map +1 -1
  236. package/dist/components/AIChat/AIChat.module.cjs.map +1 -1
  237. package/dist/components/AIChat/AIChat.module.js.map +1 -1
  238. package/dist/components/AIChat/AIChatComposer.cjs +1 -1
  239. package/dist/components/AIChat/AIChatComposer.cjs.map +1 -1
  240. package/dist/components/AIChat/AIChatComposer.js +1 -7
  241. package/dist/components/AIChat/AIChatComposer.js.map +1 -1
  242. package/dist/components/AIChat/AIChatTurn.cjs.map +1 -1
  243. package/dist/components/AIChat/AIChatTurn.js.map +1 -1
  244. package/dist/components/AIChat/ai-chat-turns.cjs.map +1 -1
  245. package/dist/components/AIChat/ai-chat-turns.js.map +1 -1
  246. package/dist/components/Accordion/Accordion.cjs.map +1 -1
  247. package/dist/components/Accordion/Accordion.js.map +1 -1
  248. package/dist/components/Accordion/Accordion.module.cjs.map +1 -1
  249. package/dist/components/Accordion/Accordion.module.js.map +1 -1
  250. package/dist/components/Alert/Alert.cjs.map +1 -1
  251. package/dist/components/Alert/Alert.js.map +1 -1
  252. package/dist/components/Alert/Alert.module.cjs.map +1 -1
  253. package/dist/components/Alert/Alert.module.js.map +1 -1
  254. package/dist/components/AppBar/AppBar.cjs.map +1 -1
  255. package/dist/components/AppBar/AppBar.js.map +1 -1
  256. package/dist/components/AppBar/AppBar.module.cjs.map +1 -1
  257. package/dist/components/AppBar/AppBar.module.js.map +1 -1
  258. package/dist/components/AppBar/use-sticky-body-warning.cjs +1 -1
  259. package/dist/components/AppBar/use-sticky-body-warning.cjs.map +1 -1
  260. package/dist/components/AppBar/use-sticky-body-warning.js +1 -1
  261. package/dist/components/AppBar/use-sticky-body-warning.js.map +1 -1
  262. package/dist/components/AppShell/AppShell.cjs.map +1 -1
  263. package/dist/components/AppShell/AppShell.js.map +1 -1
  264. package/dist/components/AppShell/AppShell.module.cjs.map +1 -1
  265. package/dist/components/AppShell/AppShell.module.js.map +1 -1
  266. package/dist/components/AspectRatio/AspectRatio.cjs.map +1 -1
  267. package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
  268. package/dist/components/AspectRatio/AspectRatio.module.cjs.map +1 -1
  269. package/dist/components/AspectRatio/AspectRatio.module.js.map +1 -1
  270. package/dist/components/AudioPlayer/AudioPlayer.cjs +1 -1
  271. package/dist/components/AudioPlayer/AudioPlayer.cjs.map +1 -1
  272. package/dist/components/AudioPlayer/AudioPlayer.js +1 -7
  273. package/dist/components/AudioPlayer/AudioPlayer.js.map +1 -1
  274. package/dist/components/AudioPlayer/AudioPlayer.module.cjs.map +1 -1
  275. package/dist/components/AudioPlayer/AudioPlayer.module.js.map +1 -1
  276. package/dist/components/AudioRecorder/AudioRecorder.cjs +1 -1
  277. package/dist/components/AudioRecorder/AudioRecorder.cjs.map +1 -1
  278. package/dist/components/AudioRecorder/AudioRecorder.js +16 -21
  279. package/dist/components/AudioRecorder/AudioRecorder.js.map +1 -1
  280. package/dist/components/AudioRecorder/AudioRecorder.module.cjs.map +1 -1
  281. package/dist/components/AudioRecorder/AudioRecorder.module.js.map +1 -1
  282. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  283. package/dist/components/Avatar/Avatar.js.map +1 -1
  284. package/dist/components/Avatar/Avatar.module.cjs.map +1 -1
  285. package/dist/components/Avatar/Avatar.module.js.map +1 -1
  286. package/dist/components/AvatarGroup/AvatarGroup.cjs.map +1 -1
  287. package/dist/components/AvatarGroup/AvatarGroup.js.map +1 -1
  288. package/dist/components/AvatarGroup/AvatarGroup.module.cjs.map +1 -1
  289. package/dist/components/AvatarGroup/AvatarGroup.module.js.map +1 -1
  290. package/dist/components/Badge/Badge.cjs.map +1 -1
  291. package/dist/components/Badge/Badge.js.map +1 -1
  292. package/dist/components/Badge/Badge.module.cjs.map +1 -1
  293. package/dist/components/Badge/Badge.module.js.map +1 -1
  294. package/dist/components/Banner/Banner.cjs.map +1 -1
  295. package/dist/components/Banner/Banner.js.map +1 -1
  296. package/dist/components/Banner/Banner.module.cjs.map +1 -1
  297. package/dist/components/Banner/Banner.module.js.map +1 -1
  298. package/dist/components/BarList/BarList.cjs.map +1 -1
  299. package/dist/components/BarList/BarList.js.map +1 -1
  300. package/dist/components/BarList/BarList.module.cjs.map +1 -1
  301. package/dist/components/BarList/BarList.module.js.map +1 -1
  302. package/dist/components/BarList/bar-list-model.cjs.map +1 -1
  303. package/dist/components/BarList/bar-list-model.js.map +1 -1
  304. package/dist/components/BarcodeScanner/BarcodeScanner.cjs.map +1 -1
  305. package/dist/components/BarcodeScanner/BarcodeScanner.js.map +1 -1
  306. package/dist/components/BarcodeScanner/BarcodeScanner.module.cjs.map +1 -1
  307. package/dist/components/BarcodeScanner/BarcodeScanner.module.js.map +1 -1
  308. package/dist/components/BottomNavigation/BottomNavigation.cjs.map +1 -1
  309. package/dist/components/BottomNavigation/BottomNavigation.js.map +1 -1
  310. package/dist/components/BottomNavigation/BottomNavigation.module.cjs.map +1 -1
  311. package/dist/components/BottomNavigation/BottomNavigation.module.js.map +1 -1
  312. package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
  313. package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
  314. package/dist/components/BottomSheet/BottomSheet.module.cjs.map +1 -1
  315. package/dist/components/BottomSheet/BottomSheet.module.js.map +1 -1
  316. package/dist/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
  317. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  318. package/dist/components/Breadcrumbs/Breadcrumbs.module.cjs.map +1 -1
  319. package/dist/components/Breadcrumbs/Breadcrumbs.module.js.map +1 -1
  320. package/dist/components/Button/Button.cjs.map +1 -1
  321. package/dist/components/Button/Button.js.map +1 -1
  322. package/dist/components/Button/Button.module.cjs.map +1 -1
  323. package/dist/components/Button/Button.module.js.map +1 -1
  324. package/dist/components/Button/ButtonContent.cjs.map +1 -1
  325. package/dist/components/Button/ButtonContent.js.map +1 -1
  326. package/dist/components/Button/ButtonSlot.cjs.map +1 -1
  327. package/dist/components/Button/ButtonSlot.js.map +1 -1
  328. package/dist/components/Button/button-class.cjs.map +1 -1
  329. package/dist/components/Button/button-class.js.map +1 -1
  330. package/dist/components/Button/link-rel.cjs.map +1 -1
  331. package/dist/components/Button/link-rel.js.map +1 -1
  332. package/dist/components/Button/slot.cjs.map +1 -1
  333. package/dist/components/Button/slot.js.map +1 -1
  334. package/dist/components/Calendar/Calendar.cjs.map +1 -1
  335. package/dist/components/Calendar/Calendar.js.map +1 -1
  336. package/dist/components/Calendar/Calendar.module.cjs.map +1 -1
  337. package/dist/components/Calendar/Calendar.module.js.map +1 -1
  338. package/dist/components/Card/Card.cjs.map +1 -1
  339. package/dist/components/Card/Card.js.map +1 -1
  340. package/dist/components/Card/Card.module.cjs.map +1 -1
  341. package/dist/components/Card/Card.module.js.map +1 -1
  342. package/dist/components/Carousel/Carousel.cjs.map +1 -1
  343. package/dist/components/Carousel/Carousel.js.map +1 -1
  344. package/dist/components/Carousel/Carousel.module.cjs.map +1 -1
  345. package/dist/components/Carousel/Carousel.module.js.map +1 -1
  346. package/dist/components/Center/Center.cjs.map +1 -1
  347. package/dist/components/Center/Center.js.map +1 -1
  348. package/dist/components/Center/Center.module.cjs.map +1 -1
  349. package/dist/components/Center/Center.module.js.map +1 -1
  350. package/dist/components/Chat/Chat.cjs.map +1 -1
  351. package/dist/components/Chat/Chat.js.map +1 -1
  352. package/dist/components/Chat/Chat.module.cjs.map +1 -1
  353. package/dist/components/Chat/Chat.module.js.map +1 -1
  354. package/dist/components/Chat/ChatActionsMenu.cjs.map +1 -1
  355. package/dist/components/Chat/ChatActionsMenu.js.map +1 -1
  356. package/dist/components/Chat/ChatAttachments.cjs.map +1 -1
  357. package/dist/components/Chat/ChatAttachments.js.map +1 -1
  358. package/dist/components/Chat/ChatBubble.cjs.map +1 -1
  359. package/dist/components/Chat/ChatBubble.js.map +1 -1
  360. package/dist/components/Chat/ChatComposer.cjs.map +1 -1
  361. package/dist/components/Chat/ChatComposer.js.map +1 -1
  362. package/dist/components/Chat/chat-groups.cjs +1 -1
  363. package/dist/components/Chat/chat-groups.cjs.map +1 -1
  364. package/dist/components/Chat/chat-groups.js +2 -6
  365. package/dist/components/Chat/chat-groups.js.map +1 -1
  366. package/dist/components/Chat/chat-receipt.cjs.map +1 -1
  367. package/dist/components/Chat/chat-receipt.js.map +1 -1
  368. package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
  369. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  370. package/dist/components/Checkbox/Checkbox.module.cjs.map +1 -1
  371. package/dist/components/Checkbox/Checkbox.module.js.map +1 -1
  372. package/dist/components/ChipInput/ChipInput.cjs +1 -1
  373. package/dist/components/ChipInput/ChipInput.cjs.map +1 -1
  374. package/dist/components/ChipInput/ChipInput.js +2 -12
  375. package/dist/components/ChipInput/ChipInput.js.map +1 -1
  376. package/dist/components/ChipInput/ChipInput.module.cjs.map +1 -1
  377. package/dist/components/ChipInput/ChipInput.module.js.map +1 -1
  378. package/dist/components/ClickOutside/ClickOutside.cjs.map +1 -1
  379. package/dist/components/ClickOutside/ClickOutside.js.map +1 -1
  380. package/dist/components/CodeBlock/CodeBlock.cjs.map +1 -1
  381. package/dist/components/CodeBlock/CodeBlock.js.map +1 -1
  382. package/dist/components/CodeBlock/CodeBlock.module.cjs.map +1 -1
  383. package/dist/components/CodeBlock/CodeBlock.module.js.map +1 -1
  384. package/dist/components/CodeBlock/tokenize.cjs.map +1 -1
  385. package/dist/components/CodeBlock/tokenize.js.map +1 -1
  386. package/dist/components/Collapsible/Collapsible.cjs.map +1 -1
  387. package/dist/components/Collapsible/Collapsible.js.map +1 -1
  388. package/dist/components/Collapsible/Collapsible.module.cjs.map +1 -1
  389. package/dist/components/Collapsible/Collapsible.module.js.map +1 -1
  390. package/dist/components/Combobox/Combobox.cjs.map +1 -1
  391. package/dist/components/Combobox/Combobox.js.map +1 -1
  392. package/dist/components/Combobox/Combobox.module.cjs.map +1 -1
  393. package/dist/components/Combobox/Combobox.module.js.map +1 -1
  394. package/dist/components/Combobox/use-listbox-dismiss.cjs.map +1 -1
  395. package/dist/components/Combobox/use-listbox-dismiss.js.map +1 -1
  396. package/dist/components/Command/Command.cjs +1 -1
  397. package/dist/components/Command/Command.cjs.map +1 -1
  398. package/dist/components/Command/Command.js +4 -11
  399. package/dist/components/Command/Command.js.map +1 -1
  400. package/dist/components/Command/Command.module.cjs.map +1 -1
  401. package/dist/components/Command/Command.module.js.map +1 -1
  402. package/dist/components/ConditionalWrapper/ConditionalWrapper.cjs.map +1 -1
  403. package/dist/components/ConditionalWrapper/ConditionalWrapper.js.map +1 -1
  404. package/dist/components/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
  405. package/dist/components/ConfirmDialog/ConfirmDialog.js.map +1 -1
  406. package/dist/components/ContextMenu/ContextMenu.cjs +1 -1
  407. package/dist/components/ContextMenu/ContextMenu.cjs.map +1 -1
  408. package/dist/components/ContextMenu/ContextMenu.js +1 -1
  409. package/dist/components/ContextMenu/ContextMenu.js.map +1 -1
  410. package/dist/components/ContextMenu/ContextMenu.module.cjs.map +1 -1
  411. package/dist/components/ContextMenu/ContextMenu.module.js.map +1 -1
  412. package/dist/components/CopyButton/CopyButton.cjs.map +1 -1
  413. package/dist/components/CopyButton/CopyButton.js.map +1 -1
  414. package/dist/components/CopyButton/CopyButton.module.cjs.map +1 -1
  415. package/dist/components/CopyButton/CopyButton.module.js.map +1 -1
  416. package/dist/components/DataList/DataList.cjs.map +1 -1
  417. package/dist/components/DataList/DataList.js.map +1 -1
  418. package/dist/components/DataList/DataList.module.cjs.map +1 -1
  419. package/dist/components/DataList/DataList.module.js.map +1 -1
  420. package/dist/components/DataTable/DataTable.cjs +1 -1
  421. package/dist/components/DataTable/DataTable.cjs.map +1 -1
  422. package/dist/components/DataTable/DataTable.js +6 -14
  423. package/dist/components/DataTable/DataTable.js.map +1 -1
  424. package/dist/components/DataTable/DataTable.module.cjs.map +1 -1
  425. package/dist/components/DataTable/DataTable.module.js.map +1 -1
  426. package/dist/components/DataTable/EditableCell.cjs +1 -1
  427. package/dist/components/DataTable/EditableCell.cjs.map +1 -1
  428. package/dist/components/DataTable/EditableCell.js +1 -9
  429. package/dist/components/DataTable/EditableCell.js.map +1 -1
  430. package/dist/components/DataTable/LoadingRows.cjs.map +1 -1
  431. package/dist/components/DataTable/LoadingRows.js.map +1 -1
  432. package/dist/components/DataTable/edit-labels.cjs.map +1 -1
  433. package/dist/components/DataTable/edit-labels.js.map +1 -1
  434. package/dist/components/DataTable/use-dev-warnings.cjs.map +1 -1
  435. package/dist/components/DataTable/use-dev-warnings.js.map +1 -1
  436. package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
  437. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  438. package/dist/components/DateRangePicker/DateRangePicker.cjs.map +1 -1
  439. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
  440. package/dist/components/DateRangePicker/DateRangePicker.module.cjs.map +1 -1
  441. package/dist/components/DateRangePicker/DateRangePicker.module.js.map +1 -1
  442. package/dist/components/DescriptionList/DescriptionList.cjs.map +1 -1
  443. package/dist/components/DescriptionList/DescriptionList.js.map +1 -1
  444. package/dist/components/DescriptionList/DescriptionList.module.cjs.map +1 -1
  445. package/dist/components/DescriptionList/DescriptionList.module.js.map +1 -1
  446. package/dist/components/Divider/Divider.cjs.map +1 -1
  447. package/dist/components/Divider/Divider.js.map +1 -1
  448. package/dist/components/Divider/Divider.module.cjs.map +1 -1
  449. package/dist/components/Divider/Divider.module.js.map +1 -1
  450. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  451. package/dist/components/Drawer/Drawer.js.map +1 -1
  452. package/dist/components/Drawer/Drawer.module.cjs.map +1 -1
  453. package/dist/components/Drawer/Drawer.module.js.map +1 -1
  454. package/dist/components/DropdownMenu/DropdownMenu.cjs +1 -1
  455. package/dist/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
  456. package/dist/components/DropdownMenu/DropdownMenu.js +2 -14
  457. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
  458. package/dist/components/DropdownMenu/DropdownMenu.module.cjs.map +1 -1
  459. package/dist/components/DropdownMenu/DropdownMenu.module.js.map +1 -1
  460. package/dist/components/Dropzone/Dropzone.cjs.map +1 -1
  461. package/dist/components/Dropzone/Dropzone.js.map +1 -1
  462. package/dist/components/Dropzone/Dropzone.module.cjs.map +1 -1
  463. package/dist/components/Dropzone/Dropzone.module.js.map +1 -1
  464. package/dist/components/EmptyState/EmptyState.cjs.map +1 -1
  465. package/dist/components/EmptyState/EmptyState.js.map +1 -1
  466. package/dist/components/EmptyState/EmptyState.module.cjs.map +1 -1
  467. package/dist/components/EmptyState/EmptyState.module.js.map +1 -1
  468. package/dist/components/ErrorState/ErrorState.cjs.map +1 -1
  469. package/dist/components/ErrorState/ErrorState.js.map +1 -1
  470. package/dist/components/ErrorState/ErrorState.module.cjs.map +1 -1
  471. package/dist/components/ErrorState/ErrorState.module.js.map +1 -1
  472. package/dist/components/ErrorText/ErrorText.cjs.map +1 -1
  473. package/dist/components/ErrorText/ErrorText.js.map +1 -1
  474. package/dist/components/ErrorText/ErrorText.module.cjs.map +1 -1
  475. package/dist/components/ErrorText/ErrorText.module.js.map +1 -1
  476. package/dist/components/FileUpload/FileUpload.cjs +1 -1
  477. package/dist/components/FileUpload/FileUpload.cjs.map +1 -1
  478. package/dist/components/FileUpload/FileUpload.js +7 -17
  479. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  480. package/dist/components/FileUpload/FileUpload.module.cjs.map +1 -1
  481. package/dist/components/FileUpload/FileUpload.module.js.map +1 -1
  482. package/dist/components/FilterBar/FilterBar.cjs.map +1 -1
  483. package/dist/components/FilterBar/FilterBar.js.map +1 -1
  484. package/dist/components/FilterBar/FilterBar.module.cjs.map +1 -1
  485. package/dist/components/FilterBar/FilterBar.module.js.map +1 -1
  486. package/dist/components/FilterBar/filter-apply.cjs.map +1 -1
  487. package/dist/components/FilterBar/filter-apply.js.map +1 -1
  488. package/dist/components/FilterBar/filter-model.cjs.map +1 -1
  489. package/dist/components/FilterBar/filter-model.js.map +1 -1
  490. package/dist/components/FilterBar/filter-query.cjs +1 -1
  491. package/dist/components/FilterBar/filter-query.cjs.map +1 -1
  492. package/dist/components/FilterBar/filter-query.js +2 -5
  493. package/dist/components/FilterBar/filter-query.js.map +1 -1
  494. package/dist/components/FilterPanel/FilterPanel.cjs.map +1 -1
  495. package/dist/components/FilterPanel/FilterPanel.js.map +1 -1
  496. package/dist/components/FilterPanel/FilterPanel.module.cjs.map +1 -1
  497. package/dist/components/FilterPanel/FilterPanel.module.js.map +1 -1
  498. package/dist/components/FloatingActionButton/FloatingActionButton.cjs.map +1 -1
  499. package/dist/components/FloatingActionButton/FloatingActionButton.js.map +1 -1
  500. package/dist/components/FloatingActionButton/FloatingActionButton.module.cjs.map +1 -1
  501. package/dist/components/FloatingActionButton/FloatingActionButton.module.js.map +1 -1
  502. package/dist/components/For/For.cjs.map +1 -1
  503. package/dist/components/For/For.js.map +1 -1
  504. package/dist/components/Form/Form.cjs.map +1 -1
  505. package/dist/components/Form/Form.js.map +1 -1
  506. package/dist/components/Form/Form.module.cjs.map +1 -1
  507. package/dist/components/Form/Form.module.js.map +1 -1
  508. package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
  509. package/dist/components/HoverCard/HoverCard.js.map +1 -1
  510. package/dist/components/HoverCard/HoverCard.module.cjs.map +1 -1
  511. package/dist/components/HoverCard/HoverCard.module.js.map +1 -1
  512. package/dist/components/Image/Image.cjs.map +1 -1
  513. package/dist/components/Image/Image.js.map +1 -1
  514. package/dist/components/Image/Image.module.cjs.map +1 -1
  515. package/dist/components/Image/Image.module.js.map +1 -1
  516. package/dist/components/ImageCropper/ImageCropper.cjs +1 -1
  517. package/dist/components/ImageCropper/ImageCropper.cjs.map +1 -1
  518. package/dist/components/ImageCropper/ImageCropper.js +4 -8
  519. package/dist/components/ImageCropper/ImageCropper.js.map +1 -1
  520. package/dist/components/ImageCropper/ImageCropper.module.cjs.map +1 -1
  521. package/dist/components/ImageCropper/ImageCropper.module.js.map +1 -1
  522. package/dist/components/ImageCropper/crop-geometry.cjs.map +1 -1
  523. package/dist/components/ImageCropper/crop-geometry.js.map +1 -1
  524. package/dist/components/Input/Input.cjs.map +1 -1
  525. package/dist/components/Input/Input.js.map +1 -1
  526. package/dist/components/Input/Input.module.cjs.map +1 -1
  527. package/dist/components/Input/Input.module.js.map +1 -1
  528. package/dist/components/InstallBanner/InstallBanner.cjs.map +1 -1
  529. package/dist/components/InstallBanner/InstallBanner.js.map +1 -1
  530. package/dist/components/InstallBanner/InstallBanner.module.cjs.map +1 -1
  531. package/dist/components/InstallBanner/InstallBanner.module.js.map +1 -1
  532. package/dist/components/InstallButton/InstallButton.cjs.map +1 -1
  533. package/dist/components/InstallButton/InstallButton.js.map +1 -1
  534. package/dist/components/InstallButton/InstallButton.module.cjs.map +1 -1
  535. package/dist/components/InstallButton/InstallButton.module.js.map +1 -1
  536. package/dist/components/InstallButton/install-hints.cjs.map +1 -1
  537. package/dist/components/InstallButton/install-hints.js.map +1 -1
  538. package/dist/components/Kanban/Kanban.cjs.map +1 -1
  539. package/dist/components/Kanban/Kanban.js.map +1 -1
  540. package/dist/components/Kanban/Kanban.module.cjs.map +1 -1
  541. package/dist/components/Kanban/Kanban.module.js.map +1 -1
  542. package/dist/components/Kbd/Kbd.cjs.map +1 -1
  543. package/dist/components/Kbd/Kbd.js.map +1 -1
  544. package/dist/components/Kbd/Kbd.module.cjs.map +1 -1
  545. package/dist/components/Kbd/Kbd.module.js.map +1 -1
  546. package/dist/components/Label/Label.cjs.map +1 -1
  547. package/dist/components/Label/Label.js.map +1 -1
  548. package/dist/components/Label/Label.module.cjs.map +1 -1
  549. package/dist/components/Label/Label.module.js.map +1 -1
  550. package/dist/components/Layout/Layout.cjs.map +1 -1
  551. package/dist/components/Layout/Layout.js.map +1 -1
  552. package/dist/components/Layout/Layout.module.cjs.map +1 -1
  553. package/dist/components/Layout/Layout.module.js.map +1 -1
  554. package/dist/components/Lightbox/Lightbox.cjs +1 -1
  555. package/dist/components/Lightbox/Lightbox.cjs.map +1 -1
  556. package/dist/components/Lightbox/Lightbox.js +1 -1
  557. package/dist/components/Lightbox/Lightbox.js.map +1 -1
  558. package/dist/components/Lightbox/Lightbox.module.cjs.map +1 -1
  559. package/dist/components/Lightbox/Lightbox.module.js.map +1 -1
  560. package/dist/components/ListTile/ListTile.cjs.map +1 -1
  561. package/dist/components/ListTile/ListTile.js.map +1 -1
  562. package/dist/components/ListTile/ListTile.module.cjs.map +1 -1
  563. package/dist/components/ListTile/ListTile.module.js.map +1 -1
  564. package/dist/components/Markdown/Markdown.cjs.map +1 -1
  565. package/dist/components/Markdown/Markdown.js.map +1 -1
  566. package/dist/components/Markdown/Markdown.module.cjs.map +1 -1
  567. package/dist/components/Markdown/Markdown.module.js.map +1 -1
  568. package/dist/components/Markdown/markdown-parse.cjs +2 -2
  569. package/dist/components/Markdown/markdown-parse.cjs.map +1 -1
  570. package/dist/components/Markdown/markdown-parse.js +8 -27
  571. package/dist/components/Markdown/markdown-parse.js.map +1 -1
  572. package/dist/components/Masonry/Masonry.cjs.map +1 -1
  573. package/dist/components/Masonry/Masonry.js.map +1 -1
  574. package/dist/components/Masonry/Masonry.module.cjs.map +1 -1
  575. package/dist/components/Masonry/Masonry.module.js.map +1 -1
  576. package/dist/components/Masonry/masonry-layout.cjs.map +1 -1
  577. package/dist/components/Masonry/masonry-layout.js.map +1 -1
  578. package/dist/components/Menubar/Menubar.cjs.map +1 -1
  579. package/dist/components/Menubar/Menubar.js.map +1 -1
  580. package/dist/components/Menubar/Menubar.module.cjs.map +1 -1
  581. package/dist/components/Menubar/Menubar.module.js.map +1 -1
  582. package/dist/components/Modal/Modal.cjs.map +1 -1
  583. package/dist/components/Modal/Modal.js.map +1 -1
  584. package/dist/components/Modal/Modal.module.cjs.map +1 -1
  585. package/dist/components/Modal/Modal.module.js.map +1 -1
  586. package/dist/components/ModalsManager/ModalsManager.cjs.map +1 -1
  587. package/dist/components/ModalsManager/ModalsManager.js.map +1 -1
  588. package/dist/components/ModalsManager/ModalsManager.module.cjs.map +1 -1
  589. package/dist/components/ModalsManager/ModalsManager.module.js.map +1 -1
  590. package/dist/components/Money/Money.cjs.map +1 -1
  591. package/dist/components/Money/Money.js.map +1 -1
  592. package/dist/components/MultiSelect/MultiSelect.cjs.map +1 -1
  593. package/dist/components/MultiSelect/MultiSelect.js.map +1 -1
  594. package/dist/components/MultiSelect/MultiSelect.module.cjs.map +1 -1
  595. package/dist/components/MultiSelect/MultiSelect.module.js.map +1 -1
  596. package/dist/components/NProgress/NProgress.cjs.map +1 -1
  597. package/dist/components/NProgress/NProgress.js.map +1 -1
  598. package/dist/components/NProgress/NProgress.module.cjs.map +1 -1
  599. package/dist/components/NProgress/NProgress.module.js.map +1 -1
  600. package/dist/components/Navbar/Navbar.cjs.map +1 -1
  601. package/dist/components/Navbar/Navbar.js.map +1 -1
  602. package/dist/components/Navbar/Navbar.module.cjs.map +1 -1
  603. package/dist/components/Navbar/Navbar.module.js.map +1 -1
  604. package/dist/components/NavigationMenu/NavigationMenu.cjs.map +1 -1
  605. package/dist/components/NavigationMenu/NavigationMenu.js.map +1 -1
  606. package/dist/components/NavigationMenu/NavigationMenu.module.cjs.map +1 -1
  607. package/dist/components/NavigationMenu/NavigationMenu.module.js.map +1 -1
  608. package/dist/components/NavigationRail/NavigationRail.cjs.map +1 -1
  609. package/dist/components/NavigationRail/NavigationRail.js.map +1 -1
  610. package/dist/components/NavigationRail/NavigationRail.module.cjs.map +1 -1
  611. package/dist/components/NavigationRail/NavigationRail.module.js.map +1 -1
  612. package/dist/components/NotificationCenter/NotificationCenter.cjs.map +1 -1
  613. package/dist/components/NotificationCenter/NotificationCenter.js.map +1 -1
  614. package/dist/components/NotificationCenter/NotificationCenter.module.cjs.map +1 -1
  615. package/dist/components/NotificationCenter/NotificationCenter.module.js.map +1 -1
  616. package/dist/components/NotificationCenter/use-notification-inbox.cjs.map +1 -1
  617. package/dist/components/NotificationCenter/use-notification-inbox.js.map +1 -1
  618. package/dist/components/OfflineIndicator/OfflineIndicator.cjs.map +1 -1
  619. package/dist/components/OfflineIndicator/OfflineIndicator.js.map +1 -1
  620. package/dist/components/OfflineIndicator/OfflineIndicator.module.cjs.map +1 -1
  621. package/dist/components/OfflineIndicator/OfflineIndicator.module.js.map +1 -1
  622. package/dist/components/Page/Page.cjs.map +1 -1
  623. package/dist/components/Page/Page.js.map +1 -1
  624. package/dist/components/Page/Page.module.cjs.map +1 -1
  625. package/dist/components/Page/Page.module.js.map +1 -1
  626. package/dist/components/Pagination/Pagination.cjs.map +1 -1
  627. package/dist/components/Pagination/Pagination.js.map +1 -1
  628. package/dist/components/Pagination/Pagination.module.cjs.map +1 -1
  629. package/dist/components/Pagination/Pagination.module.js.map +1 -1
  630. package/dist/components/PasswordInput/PasswordInput.cjs.map +1 -1
  631. package/dist/components/PasswordInput/PasswordInput.js.map +1 -1
  632. package/dist/components/PasswordInput/PasswordInput.module.cjs.map +1 -1
  633. package/dist/components/PasswordInput/PasswordInput.module.js.map +1 -1
  634. package/dist/components/PinInput/PinInput.cjs.map +1 -1
  635. package/dist/components/PinInput/PinInput.js.map +1 -1
  636. package/dist/components/PinInput/PinInput.module.cjs.map +1 -1
  637. package/dist/components/PinInput/PinInput.module.js.map +1 -1
  638. package/dist/components/Popover/Popover.cjs.map +1 -1
  639. package/dist/components/Popover/Popover.js.map +1 -1
  640. package/dist/components/Popover/Popover.module.cjs.map +1 -1
  641. package/dist/components/Popover/Popover.module.js.map +1 -1
  642. package/dist/components/Portal/Portal.cjs.map +1 -1
  643. package/dist/components/Portal/Portal.js.map +1 -1
  644. package/dist/components/Portal/anchor-position.cjs.map +1 -1
  645. package/dist/components/Portal/anchor-position.js.map +1 -1
  646. package/dist/components/Portal/escape-layer.cjs.map +1 -1
  647. package/dist/components/Portal/escape-layer.js.map +1 -1
  648. package/dist/components/Portal/portal-host.cjs.map +1 -1
  649. package/dist/components/Portal/portal-host.js.map +1 -1
  650. package/dist/components/Portal/tab-bridge.cjs +1 -1
  651. package/dist/components/Portal/tab-bridge.cjs.map +1 -1
  652. package/dist/components/Portal/tab-bridge.js +1 -5
  653. package/dist/components/Portal/tab-bridge.js.map +1 -1
  654. package/dist/components/Progress/Progress.cjs.map +1 -1
  655. package/dist/components/Progress/Progress.js.map +1 -1
  656. package/dist/components/Progress/Progress.module.cjs.map +1 -1
  657. package/dist/components/Progress/Progress.module.js.map +1 -1
  658. package/dist/components/QRCode/QRCode.cjs.map +1 -1
  659. package/dist/components/QRCode/QRCode.js.map +1 -1
  660. package/dist/components/QRCode/QRCode.module.cjs.map +1 -1
  661. package/dist/components/QRCode/QRCode.module.js.map +1 -1
  662. package/dist/components/QRCode/qr-encode.cjs +1 -1
  663. package/dist/components/QRCode/qr-encode.cjs.map +1 -1
  664. package/dist/components/QRCode/qr-encode.js +7 -13
  665. package/dist/components/QRCode/qr-encode.js.map +1 -1
  666. package/dist/components/QRCode/qr-tables.cjs.map +1 -1
  667. package/dist/components/QRCode/qr-tables.js.map +1 -1
  668. package/dist/components/Radio/Radio.cjs.map +1 -1
  669. package/dist/components/Radio/Radio.js.map +1 -1
  670. package/dist/components/Radio/Radio.module.cjs.map +1 -1
  671. package/dist/components/Radio/Radio.module.js.map +1 -1
  672. package/dist/components/RangeSlider/RangeSlider.cjs.map +1 -1
  673. package/dist/components/RangeSlider/RangeSlider.js.map +1 -1
  674. package/dist/components/RangeSlider/RangeSlider.module.cjs.map +1 -1
  675. package/dist/components/RangeSlider/RangeSlider.module.js.map +1 -1
  676. package/dist/components/RatingStars/RatingStars.cjs.map +1 -1
  677. package/dist/components/RatingStars/RatingStars.js.map +1 -1
  678. package/dist/components/RatingStars/RatingStars.module.cjs.map +1 -1
  679. package/dist/components/RatingStars/RatingStars.module.js.map +1 -1
  680. package/dist/components/RefreshIndicator/RefreshIndicator.cjs +1 -1
  681. package/dist/components/RefreshIndicator/RefreshIndicator.cjs.map +1 -1
  682. package/dist/components/RefreshIndicator/RefreshIndicator.js +10 -18
  683. package/dist/components/RefreshIndicator/RefreshIndicator.js.map +1 -1
  684. package/dist/components/RefreshIndicator/RefreshIndicator.module.cjs.map +1 -1
  685. package/dist/components/RefreshIndicator/RefreshIndicator.module.js.map +1 -1
  686. package/dist/components/RelativeTime/RelativeTime.cjs.map +1 -1
  687. package/dist/components/RelativeTime/RelativeTime.js.map +1 -1
  688. package/dist/components/Resizable/Resizable.cjs +1 -1
  689. package/dist/components/Resizable/Resizable.cjs.map +1 -1
  690. package/dist/components/Resizable/Resizable.js +1 -9
  691. package/dist/components/Resizable/Resizable.js.map +1 -1
  692. package/dist/components/Resizable/Resizable.module.cjs.map +1 -1
  693. package/dist/components/Resizable/Resizable.module.js.map +1 -1
  694. package/dist/components/Responsive/Responsive.cjs.map +1 -1
  695. package/dist/components/Responsive/Responsive.js.map +1 -1
  696. package/dist/components/Reveal/Reveal.cjs.map +1 -1
  697. package/dist/components/Reveal/Reveal.js.map +1 -1
  698. package/dist/components/Reveal/Reveal.module.cjs.map +1 -1
  699. package/dist/components/Reveal/Reveal.module.js.map +1 -1
  700. package/dist/components/Reveal/reveal-threshold.cjs.map +1 -1
  701. package/dist/components/Reveal/reveal-threshold.js.map +1 -1
  702. package/dist/components/SafeArea/SafeArea.cjs.map +1 -1
  703. package/dist/components/SafeArea/SafeArea.js.map +1 -1
  704. package/dist/components/SafeArea/SafeArea.module.cjs.map +1 -1
  705. package/dist/components/SafeArea/SafeArea.module.js.map +1 -1
  706. package/dist/components/Scheduler/Scheduler.cjs.map +1 -1
  707. package/dist/components/Scheduler/Scheduler.js.map +1 -1
  708. package/dist/components/Scheduler/Scheduler.module.cjs.map +1 -1
  709. package/dist/components/Scheduler/Scheduler.module.js.map +1 -1
  710. package/dist/components/Scheduler/scheduler-layout.cjs.map +1 -1
  711. package/dist/components/Scheduler/scheduler-layout.js.map +1 -1
  712. package/dist/components/ScrollArea/ScrollArea.cjs.map +1 -1
  713. package/dist/components/ScrollArea/ScrollArea.js.map +1 -1
  714. package/dist/components/ScrollArea/ScrollArea.module.cjs.map +1 -1
  715. package/dist/components/ScrollArea/ScrollArea.module.js.map +1 -1
  716. package/dist/components/SearchBar/SearchBar.cjs.map +1 -1
  717. package/dist/components/SearchBar/SearchBar.js.map +1 -1
  718. package/dist/components/SearchBar/SearchBar.module.cjs.map +1 -1
  719. package/dist/components/SearchBar/SearchBar.module.js.map +1 -1
  720. package/dist/components/SectionHeader/SectionHeader.cjs.map +1 -1
  721. package/dist/components/SectionHeader/SectionHeader.js.map +1 -1
  722. package/dist/components/SectionHeader/SectionHeader.module.cjs.map +1 -1
  723. package/dist/components/SectionHeader/SectionHeader.module.js.map +1 -1
  724. package/dist/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
  725. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  726. package/dist/components/SegmentedControl/SegmentedControl.module.cjs.map +1 -1
  727. package/dist/components/SegmentedControl/SegmentedControl.module.js.map +1 -1
  728. package/dist/components/Select/CaretIcon.cjs.map +1 -1
  729. package/dist/components/Select/CaretIcon.js.map +1 -1
  730. package/dist/components/Select/Select.cjs.map +1 -1
  731. package/dist/components/Select/Select.js.map +1 -1
  732. package/dist/components/Select/Select.module.cjs.map +1 -1
  733. package/dist/components/Select/Select.module.js.map +1 -1
  734. package/dist/components/Select/options.cjs.map +1 -1
  735. package/dist/components/Select/options.js.map +1 -1
  736. package/dist/components/Sidebar/Sidebar.cjs +1 -1
  737. package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
  738. package/dist/components/Sidebar/Sidebar.js +13 -23
  739. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  740. package/dist/components/Sidebar/Sidebar.module.cjs.map +1 -1
  741. package/dist/components/Sidebar/Sidebar.module.js.map +1 -1
  742. package/dist/components/Sidebar/SidebarEntry.cjs.map +1 -1
  743. package/dist/components/Sidebar/SidebarEntry.js.map +1 -1
  744. package/dist/components/Sidebar/active-nav-key.cjs.map +1 -1
  745. package/dist/components/Sidebar/active-nav-key.js.map +1 -1
  746. package/dist/components/SignaturePad/SignaturePad.cjs +1 -1
  747. package/dist/components/SignaturePad/SignaturePad.cjs.map +1 -1
  748. package/dist/components/SignaturePad/SignaturePad.js +1 -5
  749. package/dist/components/SignaturePad/SignaturePad.js.map +1 -1
  750. package/dist/components/SignaturePad/SignaturePad.module.cjs.map +1 -1
  751. package/dist/components/SignaturePad/SignaturePad.module.js.map +1 -1
  752. package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
  753. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  754. package/dist/components/Skeleton/Skeleton.module.cjs.map +1 -1
  755. package/dist/components/Skeleton/Skeleton.module.js.map +1 -1
  756. package/dist/components/Slider/Slider.cjs.map +1 -1
  757. package/dist/components/Slider/Slider.js.map +1 -1
  758. package/dist/components/Slider/Slider.module.cjs.map +1 -1
  759. package/dist/components/Slider/Slider.module.js.map +1 -1
  760. package/dist/components/Spacer/Spacer.cjs.map +1 -1
  761. package/dist/components/Spacer/Spacer.js.map +1 -1
  762. package/dist/components/Spacer/Spacer.module.cjs.map +1 -1
  763. package/dist/components/Spacer/Spacer.module.js.map +1 -1
  764. package/dist/components/Sparkline/Sparkline.cjs.map +1 -1
  765. package/dist/components/Sparkline/Sparkline.js.map +1 -1
  766. package/dist/components/Sparkline/Sparkline.module.cjs.map +1 -1
  767. package/dist/components/Sparkline/Sparkline.module.js.map +1 -1
  768. package/dist/components/Sparkline/sparkline-geometry.cjs.map +1 -1
  769. package/dist/components/Sparkline/sparkline-geometry.js.map +1 -1
  770. package/dist/components/Spinner/Spinner.cjs.map +1 -1
  771. package/dist/components/Spinner/Spinner.js.map +1 -1
  772. package/dist/components/Spinner/Spinner.module.cjs.map +1 -1
  773. package/dist/components/Spinner/Spinner.module.js.map +1 -1
  774. package/dist/components/Stat/Stat.cjs.map +1 -1
  775. package/dist/components/Stat/Stat.js.map +1 -1
  776. package/dist/components/Stat/Stat.module.cjs.map +1 -1
  777. package/dist/components/Stat/Stat.module.js.map +1 -1
  778. package/dist/components/Stepper/Stepper.cjs.map +1 -1
  779. package/dist/components/Stepper/Stepper.js.map +1 -1
  780. package/dist/components/Stepper/Stepper.module.cjs.map +1 -1
  781. package/dist/components/Stepper/Stepper.module.js.map +1 -1
  782. package/dist/components/StepperInput/StepperInput.cjs.map +1 -1
  783. package/dist/components/StepperInput/StepperInput.js.map +1 -1
  784. package/dist/components/StepperInput/StepperInput.module.cjs.map +1 -1
  785. package/dist/components/StepperInput/StepperInput.module.js.map +1 -1
  786. package/dist/components/Switch/Switch.cjs.map +1 -1
  787. package/dist/components/Switch/Switch.js.map +1 -1
  788. package/dist/components/Switch/Switch.module.cjs.map +1 -1
  789. package/dist/components/Switch/Switch.module.js.map +1 -1
  790. package/dist/components/SyncStatusBadge/SyncStatusBadge.cjs.map +1 -1
  791. package/dist/components/SyncStatusBadge/SyncStatusBadge.js.map +1 -1
  792. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.cjs.map +1 -1
  793. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.js.map +1 -1
  794. package/dist/components/Table/Table.cjs.map +1 -1
  795. package/dist/components/Table/Table.js.map +1 -1
  796. package/dist/components/Table/Table.module.cjs.map +1 -1
  797. package/dist/components/Table/Table.module.js.map +1 -1
  798. package/dist/components/Tabs/Tabs.cjs.map +1 -1
  799. package/dist/components/Tabs/Tabs.js.map +1 -1
  800. package/dist/components/Tabs/Tabs.module.cjs.map +1 -1
  801. package/dist/components/Tabs/Tabs.module.js.map +1 -1
  802. package/dist/components/Tag/Tag.cjs.map +1 -1
  803. package/dist/components/Tag/Tag.js.map +1 -1
  804. package/dist/components/Tag/Tag.module.cjs.map +1 -1
  805. package/dist/components/Tag/Tag.module.js.map +1 -1
  806. package/dist/components/Textarea/Textarea.cjs.map +1 -1
  807. package/dist/components/Textarea/Textarea.js.map +1 -1
  808. package/dist/components/Textarea/Textarea.module.cjs.map +1 -1
  809. package/dist/components/Textarea/Textarea.module.js.map +1 -1
  810. package/dist/components/TimePicker/TimePicker.cjs.map +1 -1
  811. package/dist/components/TimePicker/TimePicker.js.map +1 -1
  812. package/dist/components/TimePicker/TimePicker.module.cjs.map +1 -1
  813. package/dist/components/TimePicker/TimePicker.module.js.map +1 -1
  814. package/dist/components/Timeline/Timeline.cjs.map +1 -1
  815. package/dist/components/Timeline/Timeline.js.map +1 -1
  816. package/dist/components/Timeline/Timeline.module.cjs.map +1 -1
  817. package/dist/components/Timeline/Timeline.module.js.map +1 -1
  818. package/dist/components/Toast/Toast.module.cjs.map +1 -1
  819. package/dist/components/Toast/Toast.module.js.map +1 -1
  820. package/dist/components/Toast/ToastProvider.cjs.map +1 -1
  821. package/dist/components/Toast/ToastProvider.js.map +1 -1
  822. package/dist/components/Toggle/Toggle.cjs.map +1 -1
  823. package/dist/components/Toggle/Toggle.js.map +1 -1
  824. package/dist/components/Toggle/Toggle.module.cjs.map +1 -1
  825. package/dist/components/Toggle/Toggle.module.js.map +1 -1
  826. package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
  827. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  828. package/dist/components/ToggleGroup/ToggleGroup.module.cjs.map +1 -1
  829. package/dist/components/ToggleGroup/ToggleGroup.module.js.map +1 -1
  830. package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
  831. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  832. package/dist/components/Tooltip/Tooltip.module.cjs.map +1 -1
  833. package/dist/components/Tooltip/Tooltip.module.js.map +1 -1
  834. package/dist/components/Tour/Tour.cjs +1 -1
  835. package/dist/components/Tour/Tour.cjs.map +1 -1
  836. package/dist/components/Tour/Tour.js +1 -5
  837. package/dist/components/Tour/Tour.js.map +1 -1
  838. package/dist/components/Tour/Tour.module.cjs.map +1 -1
  839. package/dist/components/Tour/Tour.module.js.map +1 -1
  840. package/dist/components/Tour/tour-position.cjs.map +1 -1
  841. package/dist/components/Tour/tour-position.js.map +1 -1
  842. package/dist/components/Transfer/Transfer.cjs.map +1 -1
  843. package/dist/components/Transfer/Transfer.js.map +1 -1
  844. package/dist/components/Transfer/Transfer.module.cjs.map +1 -1
  845. package/dist/components/Transfer/Transfer.module.js.map +1 -1
  846. package/dist/components/Transfer/transfer-state.cjs.map +1 -1
  847. package/dist/components/Transfer/transfer-state.js.map +1 -1
  848. package/dist/components/TreeView/TreeView.cjs.map +1 -1
  849. package/dist/components/TreeView/TreeView.js.map +1 -1
  850. package/dist/components/TreeView/TreeView.module.cjs.map +1 -1
  851. package/dist/components/TreeView/TreeView.module.js.map +1 -1
  852. package/dist/components/TruncateText/TruncateText.cjs.map +1 -1
  853. package/dist/components/TruncateText/TruncateText.js.map +1 -1
  854. package/dist/components/TruncateText/TruncateText.module.cjs.map +1 -1
  855. package/dist/components/TruncateText/TruncateText.module.js.map +1 -1
  856. package/dist/components/UpdatePrompt/UpdatePrompt.cjs.map +1 -1
  857. package/dist/components/UpdatePrompt/UpdatePrompt.js.map +1 -1
  858. package/dist/components/UpdatePrompt/UpdatePrompt.module.cjs.map +1 -1
  859. package/dist/components/UpdatePrompt/UpdatePrompt.module.js.map +1 -1
  860. package/dist/components/VideoPlayer/VideoPlayer.cjs +1 -1
  861. package/dist/components/VideoPlayer/VideoPlayer.cjs.map +1 -1
  862. package/dist/components/VideoPlayer/VideoPlayer.js +1 -7
  863. package/dist/components/VideoPlayer/VideoPlayer.js.map +1 -1
  864. package/dist/components/VideoPlayer/VideoPlayer.module.cjs.map +1 -1
  865. package/dist/components/VideoPlayer/VideoPlayer.module.js.map +1 -1
  866. package/dist/components/VideoPlayer/playback-rates.cjs.map +1 -1
  867. package/dist/components/VideoPlayer/playback-rates.js.map +1 -1
  868. package/dist/components/VirtualList/VirtualList.cjs.map +1 -1
  869. package/dist/components/VirtualList/VirtualList.js.map +1 -1
  870. package/dist/components/VirtualList/VirtualList.module.cjs.map +1 -1
  871. package/dist/components/VirtualList/VirtualList.module.js.map +1 -1
  872. package/dist/components/VirtualTable/VirtualTable.cjs.map +1 -1
  873. package/dist/components/VirtualTable/VirtualTable.js.map +1 -1
  874. package/dist/components/VirtualTable/VirtualTable.module.cjs.map +1 -1
  875. package/dist/components/VirtualTable/VirtualTable.module.js.map +1 -1
  876. package/dist/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
  877. package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  878. package/dist/components/VisuallyHidden/VisuallyHidden.module.cjs.map +1 -1
  879. package/dist/components/VisuallyHidden/VisuallyHidden.module.js.map +1 -1
  880. package/dist/components/Wizard/Wizard.cjs +1 -1
  881. package/dist/components/Wizard/Wizard.cjs.map +1 -1
  882. package/dist/components/Wizard/Wizard.js +4 -11
  883. package/dist/components/Wizard/Wizard.js.map +1 -1
  884. package/dist/components/Wizard/Wizard.module.cjs.map +1 -1
  885. package/dist/components/Wizard/Wizard.module.js.map +1 -1
  886. package/dist/data/create-data-provider.cjs.map +1 -1
  887. package/dist/data/create-data-provider.js.map +1 -1
  888. package/dist/data/data-provider-context.cjs.map +1 -1
  889. package/dist/data/data-provider-context.js.map +1 -1
  890. package/dist/data/use-resource.cjs.map +1 -1
  891. package/dist/data/use-resource.js.map +1 -1
  892. package/dist/editor/RichTextEditor.cjs.map +1 -1
  893. package/dist/editor/RichTextEditor.js.map +1 -1
  894. package/dist/editor/RichTextEditor.module.cjs.map +1 -1
  895. package/dist/editor/RichTextEditor.module.js.map +1 -1
  896. package/dist/editor.js +1 -2
  897. package/dist/error-boundary/ErrorBoundary.cjs.map +1 -1
  898. package/dist/error-boundary/ErrorBoundary.js.map +1 -1
  899. package/dist/error-boundary/use-error-handler.cjs.map +1 -1
  900. package/dist/error-boundary/use-error-handler.js.map +1 -1
  901. package/dist/feature-flags/FeatureFlagsProvider.cjs.map +1 -1
  902. package/dist/feature-flags/FeatureFlagsProvider.js.map +1 -1
  903. package/dist/feature-flags/growthbook-adapter.cjs.map +1 -1
  904. package/dist/feature-flags/growthbook-adapter.js.map +1 -1
  905. package/dist/feature-flags/in-memory-adapter.cjs.map +1 -1
  906. package/dist/feature-flags/in-memory-adapter.js.map +1 -1
  907. package/dist/feature-flags/launchdarkly-adapter.cjs.map +1 -1
  908. package/dist/feature-flags/launchdarkly-adapter.js.map +1 -1
  909. package/dist/forms/FormField.cjs.map +1 -1
  910. package/dist/forms/FormField.js.map +1 -1
  911. package/dist/forms/br-validators.cjs.map +1 -1
  912. package/dist/forms/br-validators.js.map +1 -1
  913. package/dist/forms/masked-inputs.cjs.map +1 -1
  914. package/dist/forms/masked-inputs.js.map +1 -1
  915. package/dist/forms/use-viacep.cjs.map +1 -1
  916. package/dist/forms/use-viacep.js.map +1 -1
  917. package/dist/forms/use-zod-form.cjs.map +1 -1
  918. package/dist/forms/use-zod-form.js.map +1 -1
  919. package/dist/forms/validate-form.cjs.map +1 -1
  920. package/dist/forms/validate-form.js.map +1 -1
  921. package/dist/forms/zod-resolver.cjs.map +1 -1
  922. package/dist/forms/zod-resolver.js.map +1 -1
  923. package/dist/geo/TrajectoryMap.cjs.map +1 -1
  924. package/dist/geo/TrajectoryMap.js.map +1 -1
  925. package/dist/geo/TrajectoryMap.module.cjs.map +1 -1
  926. package/dist/geo/TrajectoryMap.module.js.map +1 -1
  927. package/dist/geo/bounds.cjs.map +1 -1
  928. package/dist/geo/bounds.js.map +1 -1
  929. package/dist/geo/create-position-tracker.cjs +1 -1
  930. package/dist/geo/create-position-tracker.cjs.map +1 -1
  931. package/dist/geo/create-position-tracker.js +1 -7
  932. package/dist/geo/create-position-tracker.js.map +1 -1
  933. package/dist/geo/distance.cjs.map +1 -1
  934. package/dist/geo/distance.js.map +1 -1
  935. package/dist/geo/estimate.cjs.map +1 -1
  936. package/dist/geo/estimate.js.map +1 -1
  937. package/dist/geo/leaflet-map.cjs.map +1 -1
  938. package/dist/geo/leaflet-map.js.map +1 -1
  939. package/dist/geo/projection.cjs.map +1 -1
  940. package/dist/geo/projection.js.map +1 -1
  941. package/dist/geo/routing.cjs.map +1 -1
  942. package/dist/geo/routing.js.map +1 -1
  943. package/dist/geo/types.cjs.map +1 -1
  944. package/dist/geo/types.js.map +1 -1
  945. package/dist/geo/use-position-tracker.cjs.map +1 -1
  946. package/dist/geo/use-position-tracker.js.map +1 -1
  947. package/dist/hooks/pwa-env.cjs.map +1 -1
  948. package/dist/hooks/pwa-env.js.map +1 -1
  949. package/dist/hooks/tab-sequence.cjs.map +1 -1
  950. package/dist/hooks/tab-sequence.js.map +1 -1
  951. package/dist/hooks/use-announce.cjs +1 -1
  952. package/dist/hooks/use-announce.cjs.map +1 -1
  953. package/dist/hooks/use-announce.js +2 -2
  954. package/dist/hooks/use-announce.js.map +1 -1
  955. package/dist/hooks/use-async.cjs.map +1 -1
  956. package/dist/hooks/use-async.js.map +1 -1
  957. package/dist/hooks/use-before-install-prompt.cjs.map +1 -1
  958. package/dist/hooks/use-before-install-prompt.js.map +1 -1
  959. package/dist/hooks/use-breakpoint.cjs.map +1 -1
  960. package/dist/hooks/use-breakpoint.js.map +1 -1
  961. package/dist/hooks/use-click-outside.cjs.map +1 -1
  962. package/dist/hooks/use-click-outside.js.map +1 -1
  963. package/dist/hooks/use-client-filter.cjs.map +1 -1
  964. package/dist/hooks/use-client-filter.js.map +1 -1
  965. package/dist/hooks/use-clipboard.cjs.map +1 -1
  966. package/dist/hooks/use-clipboard.js.map +1 -1
  967. package/dist/hooks/use-countdown.cjs.map +1 -1
  968. package/dist/hooks/use-countdown.js.map +1 -1
  969. package/dist/hooks/use-counter.cjs.map +1 -1
  970. package/dist/hooks/use-counter.js.map +1 -1
  971. package/dist/hooks/use-debounce.cjs.map +1 -1
  972. package/dist/hooks/use-debounce.js.map +1 -1
  973. package/dist/hooks/use-deep-memo.cjs.map +1 -1
  974. package/dist/hooks/use-deep-memo.js.map +1 -1
  975. package/dist/hooks/use-disclosure.cjs.map +1 -1
  976. package/dist/hooks/use-disclosure.js.map +1 -1
  977. package/dist/hooks/use-document-title.cjs.map +1 -1
  978. package/dist/hooks/use-document-title.js.map +1 -1
  979. package/dist/hooks/use-document-visibility.cjs.map +1 -1
  980. package/dist/hooks/use-document-visibility.js.map +1 -1
  981. package/dist/hooks/use-draft-filters.cjs.map +1 -1
  982. package/dist/hooks/use-draft-filters.js.map +1 -1
  983. package/dist/hooks/use-event-listener.cjs.map +1 -1
  984. package/dist/hooks/use-event-listener.js.map +1 -1
  985. package/dist/hooks/use-favicon.cjs.map +1 -1
  986. package/dist/hooks/use-favicon.js.map +1 -1
  987. package/dist/hooks/use-focus-trap.cjs.map +1 -1
  988. package/dist/hooks/use-focus-trap.js.map +1 -1
  989. package/dist/hooks/use-fullscreen-element.cjs.map +1 -1
  990. package/dist/hooks/use-fullscreen-element.js.map +1 -1
  991. package/dist/hooks/use-fullscreen.cjs +1 -1
  992. package/dist/hooks/use-fullscreen.cjs.map +1 -1
  993. package/dist/hooks/use-fullscreen.js +7 -23
  994. package/dist/hooks/use-fullscreen.js.map +1 -1
  995. package/dist/hooks/use-geolocation.cjs.map +1 -1
  996. package/dist/hooks/use-geolocation.js.map +1 -1
  997. package/dist/hooks/use-hover.cjs.map +1 -1
  998. package/dist/hooks/use-hover.js.map +1 -1
  999. package/dist/hooks/use-idle.cjs.map +1 -1
  1000. package/dist/hooks/use-idle.js.map +1 -1
  1001. package/dist/hooks/use-install-prompt.cjs +1 -1
  1002. package/dist/hooks/use-install-prompt.cjs.map +1 -1
  1003. package/dist/hooks/use-install-prompt.js +1 -1
  1004. package/dist/hooks/use-install-prompt.js.map +1 -1
  1005. package/dist/hooks/use-intersection-observer.cjs.map +1 -1
  1006. package/dist/hooks/use-intersection-observer.js.map +1 -1
  1007. package/dist/hooks/use-interval.cjs.map +1 -1
  1008. package/dist/hooks/use-interval.js.map +1 -1
  1009. package/dist/hooks/use-is-first-render.cjs.map +1 -1
  1010. package/dist/hooks/use-is-first-render.js.map +1 -1
  1011. package/dist/hooks/use-keyboard-shortcut.cjs.map +1 -1
  1012. package/dist/hooks/use-keyboard-shortcut.js.map +1 -1
  1013. package/dist/hooks/use-latest-ref.cjs.map +1 -1
  1014. package/dist/hooks/use-latest-ref.js.map +1 -1
  1015. package/dist/hooks/use-list-state.cjs.map +1 -1
  1016. package/dist/hooks/use-list-state.js.map +1 -1
  1017. package/dist/hooks/use-local-storage.cjs +1 -1
  1018. package/dist/hooks/use-local-storage.cjs.map +1 -1
  1019. package/dist/hooks/use-local-storage.js +2 -5
  1020. package/dist/hooks/use-local-storage.js.map +1 -1
  1021. package/dist/hooks/use-long-press-handlers.cjs.map +1 -1
  1022. package/dist/hooks/use-long-press-handlers.js.map +1 -1
  1023. package/dist/hooks/use-long-press.cjs.map +1 -1
  1024. package/dist/hooks/use-long-press.js.map +1 -1
  1025. package/dist/hooks/use-map.cjs.map +1 -1
  1026. package/dist/hooks/use-map.js.map +1 -1
  1027. package/dist/hooks/use-media-devices.cjs.map +1 -1
  1028. package/dist/hooks/use-media-devices.js.map +1 -1
  1029. package/dist/hooks/use-media-permission.cjs +1 -1
  1030. package/dist/hooks/use-media-permission.cjs.map +1 -1
  1031. package/dist/hooks/use-media-permission.js +2 -5
  1032. package/dist/hooks/use-media-permission.js.map +1 -1
  1033. package/dist/hooks/use-media-query.cjs.map +1 -1
  1034. package/dist/hooks/use-media-query.js.map +1 -1
  1035. package/dist/hooks/use-object-url.cjs.map +1 -1
  1036. package/dist/hooks/use-object-url.js.map +1 -1
  1037. package/dist/hooks/use-online.cjs.map +1 -1
  1038. package/dist/hooks/use-online.js.map +1 -1
  1039. package/dist/hooks/use-pagination.cjs.map +1 -1
  1040. package/dist/hooks/use-pagination.js.map +1 -1
  1041. package/dist/hooks/use-previous.cjs.map +1 -1
  1042. package/dist/hooks/use-previous.js.map +1 -1
  1043. package/dist/hooks/use-push-to-talk.cjs.map +1 -1
  1044. package/dist/hooks/use-push-to-talk.js.map +1 -1
  1045. package/dist/hooks/use-queue.cjs.map +1 -1
  1046. package/dist/hooks/use-queue.js.map +1 -1
  1047. package/dist/hooks/use-resize-observer.cjs.map +1 -1
  1048. package/dist/hooks/use-resize-observer.js.map +1 -1
  1049. package/dist/hooks/use-scroll-lock.cjs.map +1 -1
  1050. package/dist/hooks/use-scroll-lock.js.map +1 -1
  1051. package/dist/hooks/use-scroll-overflow.cjs.map +1 -1
  1052. package/dist/hooks/use-scroll-overflow.js.map +1 -1
  1053. package/dist/hooks/use-service-worker-update.cjs.map +1 -1
  1054. package/dist/hooks/use-service-worker-update.js.map +1 -1
  1055. package/dist/hooks/use-set.cjs.map +1 -1
  1056. package/dist/hooks/use-set.js.map +1 -1
  1057. package/dist/hooks/use-sortable.cjs.map +1 -1
  1058. package/dist/hooks/use-sortable.js.map +1 -1
  1059. package/dist/hooks/use-stable-callback.cjs.map +1 -1
  1060. package/dist/hooks/use-stable-callback.js.map +1 -1
  1061. package/dist/hooks/use-storage-estimate.cjs.map +1 -1
  1062. package/dist/hooks/use-storage-estimate.js.map +1 -1
  1063. package/dist/hooks/use-throttle.cjs.map +1 -1
  1064. package/dist/hooks/use-throttle.js.map +1 -1
  1065. package/dist/hooks/use-timeout.cjs.map +1 -1
  1066. package/dist/hooks/use-timeout.js.map +1 -1
  1067. package/dist/hooks/use-toggle.cjs.map +1 -1
  1068. package/dist/hooks/use-toggle.js.map +1 -1
  1069. package/dist/hooks/use-typewriter.cjs.map +1 -1
  1070. package/dist/hooks/use-typewriter.js.map +1 -1
  1071. package/dist/hooks/use-window-size.cjs.map +1 -1
  1072. package/dist/hooks/use-window-size.js.map +1 -1
  1073. package/dist/http/api-client.cjs.map +1 -1
  1074. package/dist/http/api-client.js.map +1 -1
  1075. package/dist/http/build-url.cjs.map +1 -1
  1076. package/dist/http/build-url.js.map +1 -1
  1077. package/dist/http/credential-scope.cjs.map +1 -1
  1078. package/dist/http/credential-scope.js.map +1 -1
  1079. package/dist/http/csrf.cjs.map +1 -1
  1080. package/dist/http/csrf.js.map +1 -1
  1081. package/dist/http/decode-response.cjs.map +1 -1
  1082. package/dist/http/decode-response.js.map +1 -1
  1083. package/dist/http/describe-api-error.cjs.map +1 -1
  1084. package/dist/http/describe-api-error.js.map +1 -1
  1085. package/dist/http/errors.cjs.map +1 -1
  1086. package/dist/http/errors.js.map +1 -1
  1087. package/dist/http/idempotency.cjs.map +1 -1
  1088. package/dist/http/idempotency.js.map +1 -1
  1089. package/dist/http/parse-response.cjs.map +1 -1
  1090. package/dist/http/parse-response.js.map +1 -1
  1091. package/dist/http/resumable-upload.cjs.map +1 -1
  1092. package/dist/http/resumable-upload.js.map +1 -1
  1093. package/dist/http/retry.cjs.map +1 -1
  1094. package/dist/http/retry.js.map +1 -1
  1095. package/dist/http/timeout.cjs.map +1 -1
  1096. package/dist/http/timeout.js.map +1 -1
  1097. package/dist/http/upload-with-progress.cjs +1 -1
  1098. package/dist/http/upload-with-progress.cjs.map +1 -1
  1099. package/dist/http/upload-with-progress.js +2 -7
  1100. package/dist/http/upload-with-progress.js.map +1 -1
  1101. package/dist/http/use-describe-api-error.cjs.map +1 -1
  1102. package/dist/http/use-describe-api-error.js.map +1 -1
  1103. package/dist/http/use-poll.cjs +1 -1
  1104. package/dist/http/use-poll.cjs.map +1 -1
  1105. package/dist/http/use-poll.js +2 -5
  1106. package/dist/http/use-poll.js.map +1 -1
  1107. package/dist/i18n/I18nProvider.cjs.map +1 -1
  1108. package/dist/i18n/I18nProvider.js.map +1 -1
  1109. package/dist/i18n/create-i18n.cjs.map +1 -1
  1110. package/dist/i18n/create-i18n.js.map +1 -1
  1111. package/dist/icons/Icon.cjs.map +1 -1
  1112. package/dist/icons/Icon.js.map +1 -1
  1113. package/dist/icons/IconPicker.cjs.map +1 -1
  1114. package/dist/icons/IconPicker.js.map +1 -1
  1115. package/dist/icons/IconPicker.module.cjs.map +1 -1
  1116. package/dist/icons/IconPicker.module.js.map +1 -1
  1117. package/dist/icons/IconProvider.cjs.map +1 -1
  1118. package/dist/icons/IconProvider.js.map +1 -1
  1119. package/dist/icons/alias.cjs.map +1 -1
  1120. package/dist/icons/alias.js.map +1 -1
  1121. package/dist/icons/generated/aliases.cjs.map +1 -1
  1122. package/dist/icons/generated/aliases.js.map +1 -1
  1123. package/dist/icons/generated/icon-names.cjs.map +1 -1
  1124. package/dist/icons/generated/icon-names.js.map +1 -1
  1125. package/dist/icons/generated/loaders.cjs.map +1 -1
  1126. package/dist/icons/generated/loaders.js.map +1 -1
  1127. package/dist/icons/generated/shard-00.cjs.map +1 -1
  1128. package/dist/icons/generated/shard-00.js.map +1 -1
  1129. package/dist/icons/generated/shard-01.cjs.map +1 -1
  1130. package/dist/icons/generated/shard-01.js.map +1 -1
  1131. package/dist/icons/generated/shard-02.cjs.map +1 -1
  1132. package/dist/icons/generated/shard-02.js.map +1 -1
  1133. package/dist/icons/generated/shard-03.cjs.map +1 -1
  1134. package/dist/icons/generated/shard-03.js.map +1 -1
  1135. package/dist/icons/generated/shard-04.cjs.map +1 -1
  1136. package/dist/icons/generated/shard-04.js.map +1 -1
  1137. package/dist/icons/generated/shard-05.cjs.map +1 -1
  1138. package/dist/icons/generated/shard-05.js.map +1 -1
  1139. package/dist/icons/generated/shard-06.cjs.map +1 -1
  1140. package/dist/icons/generated/shard-06.js.map +1 -1
  1141. package/dist/icons/generated/shard-07.cjs.map +1 -1
  1142. package/dist/icons/generated/shard-07.js.map +1 -1
  1143. package/dist/icons/generated/shard-08.cjs.map +1 -1
  1144. package/dist/icons/generated/shard-08.js.map +1 -1
  1145. package/dist/icons/generated/shard-09.cjs.map +1 -1
  1146. package/dist/icons/generated/shard-09.js.map +1 -1
  1147. package/dist/icons/generated/shard-10.cjs.map +1 -1
  1148. package/dist/icons/generated/shard-10.js.map +1 -1
  1149. package/dist/icons/generated/shard-11.cjs.map +1 -1
  1150. package/dist/icons/generated/shard-11.js.map +1 -1
  1151. package/dist/icons/generated/shard-12.cjs.map +1 -1
  1152. package/dist/icons/generated/shard-12.js.map +1 -1
  1153. package/dist/icons/generated/shard-13.cjs.map +1 -1
  1154. package/dist/icons/generated/shard-13.js.map +1 -1
  1155. package/dist/icons/generated/shard-14.cjs.map +1 -1
  1156. package/dist/icons/generated/shard-14.js.map +1 -1
  1157. package/dist/icons/generated/shard-15.cjs.map +1 -1
  1158. package/dist/icons/generated/shard-15.js.map +1 -1
  1159. package/dist/icons/generated/shard-16.cjs.map +1 -1
  1160. package/dist/icons/generated/shard-16.js.map +1 -1
  1161. package/dist/icons/generated/shard-17.cjs.map +1 -1
  1162. package/dist/icons/generated/shard-17.js.map +1 -1
  1163. package/dist/icons/generated/shard-18.cjs.map +1 -1
  1164. package/dist/icons/generated/shard-18.js.map +1 -1
  1165. package/dist/icons/generated/shard-19.cjs.map +1 -1
  1166. package/dist/icons/generated/shard-19.js.map +1 -1
  1167. package/dist/icons/generated/shard-20.cjs.map +1 -1
  1168. package/dist/icons/generated/shard-20.js.map +1 -1
  1169. package/dist/icons/generated/shard-21.cjs.map +1 -1
  1170. package/dist/icons/generated/shard-21.js.map +1 -1
  1171. package/dist/icons/generated/shard-22.cjs.map +1 -1
  1172. package/dist/icons/generated/shard-22.js.map +1 -1
  1173. package/dist/icons/generated/shard-23.cjs.map +1 -1
  1174. package/dist/icons/generated/shard-23.js.map +1 -1
  1175. package/dist/icons/generated/shard-24.cjs.map +1 -1
  1176. package/dist/icons/generated/shard-24.js.map +1 -1
  1177. package/dist/icons/generated/shard-25.cjs.map +1 -1
  1178. package/dist/icons/generated/shard-25.js.map +1 -1
  1179. package/dist/icons/generated/shard-26.cjs.map +1 -1
  1180. package/dist/icons/generated/shard-26.js.map +1 -1
  1181. package/dist/icons/generated/shard-27.cjs.map +1 -1
  1182. package/dist/icons/generated/shard-27.js.map +1 -1
  1183. package/dist/icons/generated/shard-28.cjs.map +1 -1
  1184. package/dist/icons/generated/shard-28.js.map +1 -1
  1185. package/dist/icons/generated/shard-29.cjs.map +1 -1
  1186. package/dist/icons/generated/shard-29.js.map +1 -1
  1187. package/dist/icons/generated/shard-30.cjs.map +1 -1
  1188. package/dist/icons/generated/shard-30.js.map +1 -1
  1189. package/dist/icons/generated/shard-31.cjs.map +1 -1
  1190. package/dist/icons/generated/shard-31.js.map +1 -1
  1191. package/dist/icons/generated/shard-32.cjs.map +1 -1
  1192. package/dist/icons/generated/shard-32.js.map +1 -1
  1193. package/dist/icons/generated/shard-33.cjs.map +1 -1
  1194. package/dist/icons/generated/shard-33.js.map +1 -1
  1195. package/dist/icons/generated/shard-34.cjs.map +1 -1
  1196. package/dist/icons/generated/shard-34.js.map +1 -1
  1197. package/dist/icons/generated/shard-35.cjs.map +1 -1
  1198. package/dist/icons/generated/shard-35.js.map +1 -1
  1199. package/dist/icons/generated/shard-36.cjs.map +1 -1
  1200. package/dist/icons/generated/shard-36.js.map +1 -1
  1201. package/dist/icons/generated/shard-37.cjs.map +1 -1
  1202. package/dist/icons/generated/shard-37.js.map +1 -1
  1203. package/dist/icons/generated/shard-38.cjs.map +1 -1
  1204. package/dist/icons/generated/shard-38.js.map +1 -1
  1205. package/dist/icons/generated/shard-39.cjs.map +1 -1
  1206. package/dist/icons/generated/shard-39.js.map +1 -1
  1207. package/dist/icons/generated/shard-40.cjs.map +1 -1
  1208. package/dist/icons/generated/shard-40.js.map +1 -1
  1209. package/dist/icons/generated/shard-41.cjs.map +1 -1
  1210. package/dist/icons/generated/shard-41.js.map +1 -1
  1211. package/dist/icons/generated/shard-42.cjs.map +1 -1
  1212. package/dist/icons/generated/shard-42.js.map +1 -1
  1213. package/dist/icons/generated/shard-43.cjs.map +1 -1
  1214. package/dist/icons/generated/shard-43.js.map +1 -1
  1215. package/dist/icons/generated/shard-44.cjs.map +1 -1
  1216. package/dist/icons/generated/shard-44.js.map +1 -1
  1217. package/dist/icons/generated/shard-45.cjs.map +1 -1
  1218. package/dist/icons/generated/shard-45.js.map +1 -1
  1219. package/dist/icons/icon-context.cjs.map +1 -1
  1220. package/dist/icons/icon-context.js.map +1 -1
  1221. package/dist/icons/is-icon-name.cjs.map +1 -1
  1222. package/dist/icons/is-icon-name.js.map +1 -1
  1223. package/dist/icons/material-symbols.cjs.map +1 -1
  1224. package/dist/icons/material-symbols.js.map +1 -1
  1225. package/dist/icons/normalize-icon-name.cjs.map +1 -1
  1226. package/dist/icons/normalize-icon-name.js.map +1 -1
  1227. package/dist/icons/shard-cache.cjs +1 -1
  1228. package/dist/icons/shard-cache.cjs.map +1 -1
  1229. package/dist/icons/shard-cache.js +2 -5
  1230. package/dist/icons/shard-cache.js.map +1 -1
  1231. package/dist/icons/use-icon.cjs.map +1 -1
  1232. package/dist/icons/use-icon.js.map +1 -1
  1233. package/dist/icons/validate-icon-name.cjs.map +1 -1
  1234. package/dist/icons/validate-icon-name.js.map +1 -1
  1235. package/dist/icons-virtual.cjs.map +1 -1
  1236. package/dist/icons-virtual.js.map +1 -1
  1237. package/dist/imaging/canvas.cjs.map +1 -1
  1238. package/dist/imaging/canvas.js.map +1 -1
  1239. package/dist/imaging/compress.cjs.map +1 -1
  1240. package/dist/imaging/compress.js.map +1 -1
  1241. package/dist/imaging/decode.cjs.map +1 -1
  1242. package/dist/imaging/decode.js.map +1 -1
  1243. package/dist/imaging/encode.cjs.map +1 -1
  1244. package/dist/imaging/encode.js.map +1 -1
  1245. package/dist/imaging/exceptions.cjs.map +1 -1
  1246. package/dist/imaging/exceptions.js.map +1 -1
  1247. package/dist/imaging/frame.cjs.map +1 -1
  1248. package/dist/imaging/frame.js.map +1 -1
  1249. package/dist/imaging/thumbnails.cjs.map +1 -1
  1250. package/dist/imaging/thumbnails.js.map +1 -1
  1251. package/dist/imaging/transform.cjs.map +1 -1
  1252. package/dist/imaging/transform.js.map +1 -1
  1253. package/dist/imaging/use-image-processing.cjs.map +1 -1
  1254. package/dist/imaging/use-image-processing.js.map +1 -1
  1255. package/dist/logger/logger.cjs.map +1 -1
  1256. package/dist/logger/logger.js.map +1 -1
  1257. package/dist/neural.cjs.map +1 -1
  1258. package/dist/neural.js.map +1 -1
  1259. package/dist/oauth/GoogleSignIn.cjs +1 -1
  1260. package/dist/oauth/GoogleSignIn.cjs.map +1 -1
  1261. package/dist/oauth/GoogleSignIn.js +6 -9
  1262. package/dist/oauth/GoogleSignIn.js.map +1 -1
  1263. package/dist/oauth/callback.cjs.map +1 -1
  1264. package/dist/oauth/callback.js.map +1 -1
  1265. package/dist/oauth/use-oauth-callback.cjs.map +1 -1
  1266. package/dist/oauth/use-oauth-callback.js.map +1 -1
  1267. package/dist/offline/conflict.cjs.map +1 -1
  1268. package/dist/offline/conflict.js.map +1 -1
  1269. package/dist/offline/create-offline-database.cjs.map +1 -1
  1270. package/dist/offline/create-offline-database.js.map +1 -1
  1271. package/dist/offline/create-offline-store.cjs +1 -1
  1272. package/dist/offline/create-offline-store.cjs.map +1 -1
  1273. package/dist/offline/create-offline-store.js +1 -5
  1274. package/dist/offline/create-offline-store.js.map +1 -1
  1275. package/dist/offline/create-offline-sync.cjs +1 -1
  1276. package/dist/offline/create-offline-sync.cjs.map +1 -1
  1277. package/dist/offline/create-offline-sync.js +9 -14
  1278. package/dist/offline/create-offline-sync.js.map +1 -1
  1279. package/dist/offline/use-offline-sync.cjs.map +1 -1
  1280. package/dist/offline/use-offline-sync.js.map +1 -1
  1281. package/dist/perf/cache-size.cjs.map +1 -1
  1282. package/dist/perf/cache-size.js.map +1 -1
  1283. package/dist/perf/device.cjs.map +1 -1
  1284. package/dist/perf/device.js.map +1 -1
  1285. package/dist/perf/format.cjs.map +1 -1
  1286. package/dist/perf/format.js.map +1 -1
  1287. package/dist/perf/profiler.cjs.map +1 -1
  1288. package/dist/perf/profiler.js.map +1 -1
  1289. package/dist/push/use-push-subscription.cjs.map +1 -1
  1290. package/dist/push/use-push-subscription.js.map +1 -1
  1291. package/dist/push/utils.cjs.map +1 -1
  1292. package/dist/push/utils.js.map +1 -1
  1293. package/dist/push/web-push-client.cjs.map +1 -1
  1294. package/dist/push/web-push-client.js.map +1 -1
  1295. package/dist/query/QueryProvider.cjs.map +1 -1
  1296. package/dist/query/QueryProvider.js.map +1 -1
  1297. package/dist/query/constants.cjs.map +1 -1
  1298. package/dist/query/constants.js.map +1 -1
  1299. package/dist/query/create-query-keys.cjs.map +1 -1
  1300. package/dist/query/create-query-keys.js.map +1 -1
  1301. package/dist/query/foreign-client-warning.cjs.map +1 -1
  1302. package/dist/query/foreign-client-warning.js.map +1 -1
  1303. package/dist/query/offline-persistence.cjs +1 -1
  1304. package/dist/query/offline-persistence.cjs.map +1 -1
  1305. package/dist/query/offline-persistence.js +2 -10
  1306. package/dist/query/offline-persistence.js.map +1 -1
  1307. package/dist/query/optimistic.cjs.map +1 -1
  1308. package/dist/query/optimistic.js.map +1 -1
  1309. package/dist/query/pagination.cjs.map +1 -1
  1310. package/dist/query/pagination.js.map +1 -1
  1311. package/dist/query/retry-policy.cjs.map +1 -1
  1312. package/dist/query/retry-policy.js.map +1 -1
  1313. package/dist/query/use-cursor-query.cjs.map +1 -1
  1314. package/dist/query/use-cursor-query.js.map +1 -1
  1315. package/dist/query/use-offline-mutation.cjs.map +1 -1
  1316. package/dist/query/use-offline-mutation.js.map +1 -1
  1317. package/dist/query/use-paginated-query.cjs.map +1 -1
  1318. package/dist/query/use-paginated-query.js.map +1 -1
  1319. package/dist/router/AppRouter.cjs.map +1 -1
  1320. package/dist/router/AppRouter.js.map +1 -1
  1321. package/dist/router/RouteGuard.cjs.map +1 -1
  1322. package/dist/router/RouteGuard.js.map +1 -1
  1323. package/dist/router/index.js +2 -2
  1324. package/dist/share/share-or-download.cjs.map +1 -1
  1325. package/dist/share/share-or-download.js.map +1 -1
  1326. package/dist/share/share.cjs.map +1 -1
  1327. package/dist/share/share.js.map +1 -1
  1328. package/dist/sse/create-event-stream.cjs.map +1 -1
  1329. package/dist/sse/create-event-stream.js.map +1 -1
  1330. package/dist/sse/use-event-stream.cjs.map +1 -1
  1331. package/dist/sse/use-event-stream.js.map +1 -1
  1332. package/dist/store/create-selectors.cjs.map +1 -1
  1333. package/dist/store/create-selectors.js.map +1 -1
  1334. package/dist/store/create-store.cjs.map +1 -1
  1335. package/dist/store/create-store.js.map +1 -1
  1336. package/dist/sw/background-sync.cjs.map +1 -1
  1337. package/dist/sw/background-sync.js.map +1 -1
  1338. package/dist/sw/cache-inspect.cjs.map +1 -1
  1339. package/dist/sw/cache-inspect.js.map +1 -1
  1340. package/dist/sw/cache.cjs +1 -1
  1341. package/dist/sw/cache.cjs.map +1 -1
  1342. package/dist/sw/cache.js +2 -6
  1343. package/dist/sw/cache.js.map +1 -1
  1344. package/dist/sw/create-push-handler.cjs.map +1 -1
  1345. package/dist/sw/create-push-handler.js.map +1 -1
  1346. package/dist/sw/credential-headers.cjs.map +1 -1
  1347. package/dist/sw/credential-headers.js.map +1 -1
  1348. package/dist/sw/periodic-sync.cjs.map +1 -1
  1349. package/dist/sw/periodic-sync.js.map +1 -1
  1350. package/dist/sw/register-service-worker.cjs.map +1 -1
  1351. package/dist/sw/register-service-worker.js.map +1 -1
  1352. package/dist/sw/session-data.cjs.map +1 -1
  1353. package/dist/sw/session-data.js.map +1 -1
  1354. package/dist/tabular/assets.cjs.map +1 -1
  1355. package/dist/tabular/assets.js.map +1 -1
  1356. package/dist/tabular/cache.cjs.map +1 -1
  1357. package/dist/tabular/cache.js.map +1 -1
  1358. package/dist/tabular/compact.cjs.map +1 -1
  1359. package/dist/tabular/compact.js.map +1 -1
  1360. package/dist/tabular/exceptions.cjs.map +1 -1
  1361. package/dist/tabular/exceptions.js.map +1 -1
  1362. package/dist/tabular/manifest.cjs.map +1 -1
  1363. package/dist/tabular/manifest.js.map +1 -1
  1364. package/dist/tabular/predictor.cjs.map +1 -1
  1365. package/dist/tabular/predictor.js.map +1 -1
  1366. package/dist/tabular/use-tabular-predictor.cjs.map +1 -1
  1367. package/dist/tabular/use-tabular-predictor.js.map +1 -1
  1368. package/dist/telemetry/TelemetryProvider.cjs.map +1 -1
  1369. package/dist/telemetry/TelemetryProvider.js.map +1 -1
  1370. package/dist/telemetry/app-error-adapter.cjs.map +1 -1
  1371. package/dist/telemetry/app-error-adapter.js.map +1 -1
  1372. package/dist/telemetry/app-error-queue.cjs.map +1 -1
  1373. package/dist/telemetry/app-error-queue.js.map +1 -1
  1374. package/dist/telemetry/app-error-reporter.cjs.map +1 -1
  1375. package/dist/telemetry/app-error-reporter.js.map +1 -1
  1376. package/dist/telemetry/app-error-schema.cjs.map +1 -1
  1377. package/dist/telemetry/app-error-schema.js.map +1 -1
  1378. package/dist/telemetry/app-error-transport.cjs.map +1 -1
  1379. package/dist/telemetry/app-error-transport.js.map +1 -1
  1380. package/dist/telemetry/console-adapter.cjs.map +1 -1
  1381. package/dist/telemetry/console-adapter.js.map +1 -1
  1382. package/dist/telemetry/describe-app-error.cjs.map +1 -1
  1383. package/dist/telemetry/describe-app-error.js.map +1 -1
  1384. package/dist/telemetry/posthog-adapter.cjs +1 -1
  1385. package/dist/telemetry/posthog-adapter.cjs.map +1 -1
  1386. package/dist/telemetry/posthog-adapter.js +1 -5
  1387. package/dist/telemetry/posthog-adapter.js.map +1 -1
  1388. package/dist/telemetry/sentry-adapter.cjs.map +1 -1
  1389. package/dist/telemetry/sentry-adapter.js.map +1 -1
  1390. package/dist/tempest-react-sdk.cjs +1 -1
  1391. package/dist/tempest-react-sdk.d.ts +234 -3
  1392. package/dist/tempest-react-sdk.js +85 -85
  1393. package/dist/testing/create-mock-handlers.cjs.map +1 -1
  1394. package/dist/testing/create-mock-handlers.js.map +1 -1
  1395. package/dist/testing.js +1 -2
  1396. package/dist/theme/ThemeProvider.cjs.map +1 -1
  1397. package/dist/theme/ThemeProvider.js.map +1 -1
  1398. package/dist/theme/apply-theme.cjs.map +1 -1
  1399. package/dist/theme/apply-theme.js.map +1 -1
  1400. package/dist/theme/color.cjs.map +1 -1
  1401. package/dist/theme/color.js.map +1 -1
  1402. package/dist/theme/create-theme.cjs.map +1 -1
  1403. package/dist/theme/create-theme.js.map +1 -1
  1404. package/dist/theme/data-viz-ramps.cjs.map +1 -1
  1405. package/dist/theme/data-viz-ramps.js.map +1 -1
  1406. package/dist/theme/initial-theme.cjs.map +1 -1
  1407. package/dist/theme/initial-theme.js.map +1 -1
  1408. package/dist/theme/inverse-render.cjs.map +1 -1
  1409. package/dist/theme/inverse-render.js.map +1 -1
  1410. package/dist/theme/inverse-restore.cjs.map +1 -1
  1411. package/dist/theme/inverse-restore.js.map +1 -1
  1412. package/dist/theme/inverse-surface.cjs.map +1 -1
  1413. package/dist/theme/inverse-surface.js.map +1 -1
  1414. package/dist/theme/status-tokens.cjs.map +1 -1
  1415. package/dist/theme/status-tokens.js.map +1 -1
  1416. package/dist/theme/theme-presets.cjs.map +1 -1
  1417. package/dist/theme/theme-presets.js.map +1 -1
  1418. package/dist/utils/absent.cjs.map +1 -1
  1419. package/dist/utils/absent.js.map +1 -1
  1420. package/dist/utils/arrays.cjs.map +1 -1
  1421. package/dist/utils/arrays.js.map +1 -1
  1422. package/dist/utils/base64.cjs.map +1 -1
  1423. package/dist/utils/base64.js.map +1 -1
  1424. package/dist/utils/cn.cjs.map +1 -1
  1425. package/dist/utils/cn.js.map +1 -1
  1426. package/dist/utils/compare-values.cjs.map +1 -1
  1427. package/dist/utils/compare-values.js.map +1 -1
  1428. package/dist/utils/compressed-storage.cjs.map +1 -1
  1429. package/dist/utils/compressed-storage.js.map +1 -1
  1430. package/dist/utils/csv.cjs.map +1 -1
  1431. package/dist/utils/csv.js.map +1 -1
  1432. package/dist/utils/dev-mode.cjs.map +1 -1
  1433. package/dist/utils/dev-mode.js.map +1 -1
  1434. package/dist/utils/duplicate-instance.cjs.map +1 -1
  1435. package/dist/utils/duplicate-instance.js.map +1 -1
  1436. package/dist/utils/format.cjs.map +1 -1
  1437. package/dist/utils/format.js.map +1 -1
  1438. package/dist/utils/functions.cjs +1 -1
  1439. package/dist/utils/functions.cjs.map +1 -1
  1440. package/dist/utils/functions.js +1 -1
  1441. package/dist/utils/functions.js.map +1 -1
  1442. package/dist/utils/guards.cjs.map +1 -1
  1443. package/dist/utils/guards.js.map +1 -1
  1444. package/dist/utils/ids.cjs.map +1 -1
  1445. package/dist/utils/ids.js.map +1 -1
  1446. package/dist/utils/intl-cache.cjs.map +1 -1
  1447. package/dist/utils/intl-cache.js.map +1 -1
  1448. package/dist/utils/json-frame.cjs.map +1 -1
  1449. package/dist/utils/json-frame.js.map +1 -1
  1450. package/dist/utils/numbers.cjs.map +1 -1
  1451. package/dist/utils/numbers.js.map +1 -1
  1452. package/dist/utils/objects.cjs.map +1 -1
  1453. package/dist/utils/objects.js.map +1 -1
  1454. package/dist/utils/owner-fingerprint.cjs.map +1 -1
  1455. package/dist/utils/owner-fingerprint.js.map +1 -1
  1456. package/dist/utils/promises.cjs.map +1 -1
  1457. package/dist/utils/promises.js.map +1 -1
  1458. package/dist/utils/relative-time.cjs.map +1 -1
  1459. package/dist/utils/relative-time.js.map +1 -1
  1460. package/dist/utils/safe-url.cjs.map +1 -1
  1461. package/dist/utils/safe-url.js.map +1 -1
  1462. package/dist/utils/schema-like.cjs.map +1 -1
  1463. package/dist/utils/schema-like.js.map +1 -1
  1464. package/dist/utils/storage.cjs +1 -1
  1465. package/dist/utils/storage.cjs.map +1 -1
  1466. package/dist/utils/storage.js +2 -2
  1467. package/dist/utils/storage.js.map +1 -1
  1468. package/dist/utils/strings.cjs.map +1 -1
  1469. package/dist/utils/strings.js.map +1 -1
  1470. package/dist/utils/xlsx.cjs.map +1 -1
  1471. package/dist/utils/xlsx.js.map +1 -1
  1472. package/dist/vision/core/canvas.cjs.map +1 -1
  1473. package/dist/vision/core/canvas.js.map +1 -1
  1474. package/dist/vision/core/dtypes.cjs.map +1 -1
  1475. package/dist/vision/core/dtypes.js.map +1 -1
  1476. package/dist/vision/core/exceptions.cjs.map +1 -1
  1477. package/dist/vision/core/exceptions.js.map +1 -1
  1478. package/dist/vision/core/graph.cjs.map +1 -1
  1479. package/dist/vision/core/graph.js.map +1 -1
  1480. package/dist/vision/core/metadata.cjs +1 -1
  1481. package/dist/vision/core/metadata.cjs.map +1 -1
  1482. package/dist/vision/core/metadata.js +9 -26
  1483. package/dist/vision/core/metadata.js.map +1 -1
  1484. package/dist/vision/core/providers.cjs.map +1 -1
  1485. package/dist/vision/core/providers.js.map +1 -1
  1486. package/dist/vision/core/session.cjs.map +1 -1
  1487. package/dist/vision/core/session.js.map +1 -1
  1488. package/dist/vision/core/timing.cjs.map +1 -1
  1489. package/dist/vision/core/timing.js.map +1 -1
  1490. package/dist/vision/fusion.cjs.map +1 -1
  1491. package/dist/vision/fusion.js.map +1 -1
  1492. package/dist/vision/index.cjs.map +1 -1
  1493. package/dist/vision/index.js.map +1 -1
  1494. package/dist/vision/io/image.cjs.map +1 -1
  1495. package/dist/vision/io/image.js.map +1 -1
  1496. package/dist/vision/labels.cjs.map +1 -1
  1497. package/dist/vision/labels.js.map +1 -1
  1498. package/dist/vision/luminance.cjs.map +1 -1
  1499. package/dist/vision/luminance.js.map +1 -1
  1500. package/dist/vision/normalization.cjs.map +1 -1
  1501. package/dist/vision/normalization.js.map +1 -1
  1502. package/dist/vision/postprocess/classification.cjs.map +1 -1
  1503. package/dist/vision/postprocess/classification.js.map +1 -1
  1504. package/dist/vision/postprocess/detection.cjs.map +1 -1
  1505. package/dist/vision/postprocess/detection.js.map +1 -1
  1506. package/dist/vision/postprocess/segmentation.cjs.map +1 -1
  1507. package/dist/vision/postprocess/segmentation.js.map +1 -1
  1508. package/dist/vision/preprocess/image.cjs.map +1 -1
  1509. package/dist/vision/preprocess/image.js.map +1 -1
  1510. package/dist/vision/preprocess/pipeline.cjs.map +1 -1
  1511. package/dist/vision/preprocess/pipeline.js.map +1 -1
  1512. package/dist/vision/results.cjs.map +1 -1
  1513. package/dist/vision/results.js.map +1 -1
  1514. package/dist/vision/tasks/base.cjs.map +1 -1
  1515. package/dist/vision/tasks/base.js.map +1 -1
  1516. package/dist/vision/tasks/classifier.cjs.map +1 -1
  1517. package/dist/vision/tasks/classifier.js.map +1 -1
  1518. package/dist/vision/tasks/detectClassify.cjs.map +1 -1
  1519. package/dist/vision/tasks/detectClassify.js.map +1 -1
  1520. package/dist/vision/tasks/detector.cjs.map +1 -1
  1521. package/dist/vision/tasks/detector.js.map +1 -1
  1522. package/dist/vision/tasks/segmenter.cjs.map +1 -1
  1523. package/dist/vision/tasks/segmenter.js.map +1 -1
  1524. package/dist/vision/types.cjs.map +1 -1
  1525. package/dist/vision/types.js.map +1 -1
  1526. package/dist/vision/use-camera-stream.cjs +1 -1
  1527. package/dist/vision/use-camera-stream.cjs.map +1 -1
  1528. package/dist/vision/use-camera-stream.js +3 -9
  1529. package/dist/vision/use-camera-stream.js.map +1 -1
  1530. package/dist/vision/use-live-luminance.cjs +1 -1
  1531. package/dist/vision/use-live-luminance.cjs.map +1 -1
  1532. package/dist/vision/use-live-luminance.js +1 -5
  1533. package/dist/vision/use-live-luminance.js.map +1 -1
  1534. package/dist/vite/base-url.cjs.map +1 -1
  1535. package/dist/vite/base-url.js.map +1 -1
  1536. package/dist/vite/create-vite-config.cjs.map +1 -1
  1537. package/dist/vite/create-vite-config.js.map +1 -1
  1538. package/dist/vite/narrow-tokens.cjs.map +1 -1
  1539. package/dist/vite/narrow-tokens.js.map +1 -1
  1540. package/dist/vite/tempest-csp.cjs +1 -1
  1541. package/dist/vite/tempest-csp.cjs.map +1 -1
  1542. package/dist/vite/tempest-csp.js +2 -10
  1543. package/dist/vite/tempest-csp.js.map +1 -1
  1544. package/dist/vite/tempest-icons.cjs.map +1 -1
  1545. package/dist/vite/tempest-icons.js.map +1 -1
  1546. package/dist/vite/tempest-pwa-dev-sw.cjs +1 -1
  1547. package/dist/vite/tempest-pwa-dev-sw.cjs.map +1 -1
  1548. package/dist/vite/tempest-pwa-dev-sw.js +9 -16
  1549. package/dist/vite/tempest-pwa-dev-sw.js.map +1 -1
  1550. package/dist/vite/tempest-pwa-icons.cjs.map +1 -1
  1551. package/dist/vite/tempest-pwa-icons.js.map +1 -1
  1552. package/dist/vite/tempest-pwa-manifest.cjs.map +1 -1
  1553. package/dist/vite/tempest-pwa-manifest.js.map +1 -1
  1554. package/dist/vite/tempest-styles.cjs.map +1 -1
  1555. package/dist/vite/tempest-styles.js.map +1 -1
  1556. package/dist/vite/tempest-vitest.cjs.map +1 -1
  1557. package/dist/vite/tempest-vitest.js.map +1 -1
  1558. package/dist/webrtc/link-stats.cjs.map +1 -1
  1559. package/dist/webrtc/link-stats.js.map +1 -1
  1560. package/dist/webrtc/mesh-quality.cjs.map +1 -1
  1561. package/dist/webrtc/mesh-quality.js.map +1 -1
  1562. package/dist/webrtc/opus-sdp.cjs.map +1 -1
  1563. package/dist/webrtc/opus-sdp.js.map +1 -1
  1564. package/dist/webrtc/peer-link.cjs +1 -1
  1565. package/dist/webrtc/peer-link.cjs.map +1 -1
  1566. package/dist/webrtc/peer-link.js +2 -5
  1567. package/dist/webrtc/peer-link.js.map +1 -1
  1568. package/dist/webrtc/peer-mesh.cjs +1 -1
  1569. package/dist/webrtc/peer-mesh.cjs.map +1 -1
  1570. package/dist/webrtc/peer-mesh.js +8 -24
  1571. package/dist/webrtc/peer-mesh.js.map +1 -1
  1572. package/dist/webrtc/sender-bitrate.cjs.map +1 -1
  1573. package/dist/webrtc/sender-bitrate.js.map +1 -1
  1574. package/dist/webrtc/use-link-stats.cjs.map +1 -1
  1575. package/dist/webrtc/use-link-stats.js.map +1 -1
  1576. package/dist/ws/create-web-socket.cjs +1 -1
  1577. package/dist/ws/create-web-socket.cjs.map +1 -1
  1578. package/dist/ws/create-web-socket.js +4 -22
  1579. package/dist/ws/create-web-socket.js.map +1 -1
  1580. package/dist/ws/resilience.cjs.map +1 -1
  1581. package/dist/ws/resilience.js.map +1 -1
  1582. package/dist/ws/use-web-socket.cjs.map +1 -1
  1583. package/dist/ws/use-web-socket.js.map +1 -1
  1584. package/package.json +9 -6
  1585. package/template/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"use-pagination.cjs","names":[],"sources":["../../src/hooks/use-pagination.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\nexport interface UsePaginationResult {\n page: number;\n size: number;\n setPage: (page: number) => void;\n setSize: (size: number) => void;\n reset: () => void;\n}\n\n/**\n * Manage page/size state for paginated lists. Reset goes back to page 1\n * without touching the page size.\n *\n * @param initialPage - Starting page (default 1).\n * @param initialSize - Starting page size (default 50).\n * @returns Pagination state and setters.\n */\nexport function usePagination(initialPage = 1, initialSize = 50): UsePaginationResult {\n const [page, setPage] = useState<number>(initialPage);\n const [size, setSize] = useState<number>(initialSize);\n\n const reset = useCallback(() => setPage(1), []);\n\n return { page, size, setPage, setSize, reset };\n}\n"],"mappings":"uBAkBA,SAAgB,EAAc,EAAc,EAAG,EAAc,GAAyB,CAClF,GAAM,CAAC,EAAM,IAAA,EAAW,EAAA,SAAA,CAAiB,CAAW,EAC9C,CAAC,EAAM,IAAA,EAAW,EAAA,SAAA,CAAiB,CAAW,EAIpD,MAAO,CAAE,OAAM,OAAM,UAAS,UAAS,OAAA,EAFzB,EAAA,YAAA,KAAkB,EAAQ,CAAC,EAAG,CAAC,CAEN,CAAM,CACjD"}
1
+ {"version":3,"file":"use-pagination.cjs","names":["useState","useCallback","react","usePagination","page","setPage","initialPage","size","setSize","initialSize"],"sources":["../../src/hooks/use-pagination.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\nexport interface UsePaginationResult {\n page: number;\n size: number;\n setPage: (page: number) => void;\n setSize: (size: number) => void;\n reset: () => void;\n}\n\n/**\n * Manage page/size state for paginated lists. Reset goes back to page 1\n * without touching the page size.\n *\n * @param initialPage - Starting page (default 1).\n * @param initialSize - Starting page size (default 50).\n * @returns Pagination state and setters.\n */\nexport function usePagination(initialPage = 1, initialSize = 50): UsePaginationResult {\n const [page, setPage] = useState<number>(initialPage);\n const [size, setSize] = useState<number>(initialSize);\n\n const reset = useCallback(() => setPage(1), []);\n\n return { page, size, setPage, setSize, reset };\n}\n"],"mappings":"A,uBAkBA,SAAgBG,EAAc,EAAc,EAAG,EAAc,GAAyB,CAClF,GAAM,CAACC,EAAMC,IAAA,EAAWL,EAAAA,SAAAA,CAAiBM,CAAW,EAC9C,CAACC,EAAMC,IAAA,EAAWR,EAAAA,SAAAA,CAAiBS,CAAW,EAIpD,MAAO,CAAE,OAAM,OAAM,UAAS,UAAS,OAAA,EAFzBR,EAAAA,YAAAA,KAAkBI,EAAQ,CAAC,EAAG,CAAC,CAEN,CAAM,CACjD,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-pagination.js","names":[],"sources":["../../src/hooks/use-pagination.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\nexport interface UsePaginationResult {\n page: number;\n size: number;\n setPage: (page: number) => void;\n setSize: (size: number) => void;\n reset: () => void;\n}\n\n/**\n * Manage page/size state for paginated lists. Reset goes back to page 1\n * without touching the page size.\n *\n * @param initialPage - Starting page (default 1).\n * @param initialSize - Starting page size (default 50).\n * @returns Pagination state and setters.\n */\nexport function usePagination(initialPage = 1, initialSize = 50): UsePaginationResult {\n const [page, setPage] = useState<number>(initialPage);\n const [size, setSize] = useState<number>(initialSize);\n\n const reset = useCallback(() => setPage(1), []);\n\n return { page, size, setPage, setSize, reset };\n}\n"],"mappings":";;AAkBA,SAAgB,EAAc,IAAc,GAAG,IAAc,IAAyB;CAClF,IAAM,CAAC,GAAM,KAAW,EAAiB,CAAW,GAC9C,CAAC,GAAM,KAAW,EAAiB,CAAW;CAIpD,OAAO;EAAE;EAAM;EAAM;EAAS;EAAS,OAFzB,QAAkB,EAAQ,CAAC,GAAG,CAAC,CAEN;CAAM;AACjD"}
1
+ {"version":3,"file":"use-pagination.js","names":["usePagination","page","setPage","useState","initialPage","size","setSize","initialSize","useCallback"],"sources":["../../src/hooks/use-pagination.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\nexport interface UsePaginationResult {\n page: number;\n size: number;\n setPage: (page: number) => void;\n setSize: (size: number) => void;\n reset: () => void;\n}\n\n/**\n * Manage page/size state for paginated lists. Reset goes back to page 1\n * without touching the page size.\n *\n * @param initialPage - Starting page (default 1).\n * @param initialSize - Starting page size (default 50).\n * @returns Pagination state and setters.\n */\nexport function usePagination(initialPage = 1, initialSize = 50): UsePaginationResult {\n const [page, setPage] = useState<number>(initialPage);\n const [size, setSize] = useState<number>(initialSize);\n\n const reset = useCallback(() => setPage(1), []);\n\n return { page, size, setPage, setSize, reset };\n}\n"],"mappings":";;AAkBA,SAAgBA,EAAc,IAAc,GAAG,IAAc,IAAyB;CAClF,IAAM,CAACC,GAAMC,KAAWC,EAAiBC,CAAW,GAC9C,CAACC,GAAMC,KAAWH,EAAiBI,CAAW;CAIpD,OAAO;EAAE;EAAM;EAAM;EAAS;EAAS,OAFzBC,QAAkBN,EAAQ,CAAC,GAAG,CAAC,CAEN;CAAM;AACjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-previous.cjs","names":[],"sources":["../../src/hooks/use-previous.ts"],"sourcesContent":["/* eslint-disable react-hooks/refs -- returning last render's value IS this hook's contract */\nimport { useEffect, useRef } from \"react\";\n\n/**\n * Return the value from the previous render. `undefined` on the first render.\n *\n * @example\n * const previousCount = usePrevious(count);\n * useEffect(() => {\n * if (previousCount !== undefined && previousCount !== count) {\n * analytics.track(\"count.changed\", { from: previousCount, to: count });\n * }\n * }, [count, previousCount]);\n */\nexport function usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T | undefined>(undefined);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n"],"mappings":"uBAcA,SAAgB,EAAe,EAAyB,CACpD,IAAM,GAAA,EAAM,EAAA,OAAA,CAAsB,IAAA,EAAS,EAI3C,OAHA,EAAA,EAAA,UAAA,KAAgB,CACZ,EAAI,QAAU,CAClB,EAAG,CAAC,CAAK,CAAC,EACH,EAAI,OACf"}
1
+ {"version":3,"file":"use-previous.cjs","names":["useRef","react","usePrevious","ref","value"],"sources":["../../src/hooks/use-previous.ts"],"sourcesContent":["/* eslint-disable react-hooks/refs -- returning last render's value IS this hook's contract */\nimport { useEffect, useRef } from \"react\";\n\n/**\n * Return the value from the previous render. `undefined` on the first render.\n *\n * @example\n * const previousCount = usePrevious(count);\n * useEffect(() => {\n * if (previousCount !== undefined && previousCount !== count) {\n * analytics.track(\"count.changed\", { from: previousCount, to: count });\n * }\n * }, [count, previousCount]);\n */\nexport function usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T | undefined>(undefined);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n"],"mappings":"A,uBAcA,SAAgBE,EAAe,EAAyB,CACpD,IAAMC,GAAA,EAAMH,EAAAA,OAAAA,CAAsB,IAAA,EAAS,EAI3C,OAHA,EAAAC,EAAA,UAAA,KAAgB,CACZ,EAAI,QAAUG,CAClB,EAAG,CAACA,CAAK,CAAC,EACHD,EAAI,OACf,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-previous.js","names":[],"sources":["../../src/hooks/use-previous.ts"],"sourcesContent":["/* eslint-disable react-hooks/refs -- returning last render's value IS this hook's contract */\nimport { useEffect, useRef } from \"react\";\n\n/**\n * Return the value from the previous render. `undefined` on the first render.\n *\n * @example\n * const previousCount = usePrevious(count);\n * useEffect(() => {\n * if (previousCount !== undefined && previousCount !== count) {\n * analytics.track(\"count.changed\", { from: previousCount, to: count });\n * }\n * }, [count, previousCount]);\n */\nexport function usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T | undefined>(undefined);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n"],"mappings":";;AAcA,SAAgB,EAAe,GAAyB;CACpD,IAAM,IAAM,EAAsB,KAAA,CAAS;CAI3C,OAHA,QAAgB;EACZ,EAAI,UAAU;CAClB,GAAG,CAAC,CAAK,CAAC,GACH,EAAI;AACf"}
1
+ {"version":3,"file":"use-previous.js","names":["usePrevious","ref","useRef","useEffect","value"],"sources":["../../src/hooks/use-previous.ts"],"sourcesContent":["/* eslint-disable react-hooks/refs -- returning last render's value IS this hook's contract */\nimport { useEffect, useRef } from \"react\";\n\n/**\n * Return the value from the previous render. `undefined` on the first render.\n *\n * @example\n * const previousCount = usePrevious(count);\n * useEffect(() => {\n * if (previousCount !== undefined && previousCount !== count) {\n * analytics.track(\"count.changed\", { from: previousCount, to: count });\n * }\n * }, [count, previousCount]);\n */\nexport function usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T | undefined>(undefined);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n"],"mappings":";;AAcA,SAAgBA,EAAe,GAAyB;CACpD,IAAMC,IAAMC,EAAsB,KAAA,CAAS;CAI3C,OAHAC,QAAgB;EACZ,EAAI,UAAUC;CAClB,GAAG,CAACA,CAAK,CAAC,GACHH,EAAI;AACf"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-push-to-talk.cjs","names":[],"sources":["../../src/hooks/use-push-to-talk.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\n\n/** A key offered for push-to-talk, with the label a settings screen shows. */\nexport interface PushToTalkKey {\n /** `KeyboardEvent.code`, which is layout-independent. */\n code: string;\n /** What to show a person. `code` itself is not a label. */\n label: string;\n}\n\n/**\n * The keys worth offering for push-to-talk.\n *\n * Identified by `code` rather than `key` so a binding survives a layout change:\n * on an ABNT2 keyboard the `key` reported for the backquote position is not what\n * a US layout reports, while `Backquote` is the same physical key everywhere.\n *\n * Left-hand modifiers only. The right-hand ones sit under the hand that is\n * usually on the mouse, and a modifier that is also a shortcut prefix\n * (`ControlLeft` with a browser shortcut) is a deliberate trade the caller makes\n * by choosing it.\n */\nexport const PUSH_TO_TALK_KEYS: readonly PushToTalkKey[] = [\n { code: \"Space\", label: \"Espaço\" },\n { code: \"ControlLeft\", label: \"Ctrl esquerdo\" },\n { code: \"AltLeft\", label: \"Alt esquerdo\" },\n { code: \"ShiftLeft\", label: \"Shift esquerdo\" },\n { code: \"Backquote\", label: \"Crase (`)\" },\n];\n\n/** The key a caller gets when it does not choose one. */\nexport const DEFAULT_PUSH_TO_TALK_KEY = \"Space\";\n\n/**\n * The label to show for a `KeyboardEvent.code`.\n *\n * @param code - The bound key's code.\n * @returns Its label, or the code itself for a key this list does not name —\n * showing `\"F13\"` beats showing nothing.\n */\nexport function pushToTalkKeyLabel(code: string): string {\n return PUSH_TO_TALK_KEYS.find((key) => key.code === code)?.label ?? code;\n}\n\n/**\n * Whether a keystroke is meant for something the person is typing into.\n *\n * Without this a push-to-talk key bound to Space opens the microphone every time\n * somebody writes a message — and the space never reaches the text field,\n * because the handler preventDefault'd it.\n *\n * @param target - The event's target.\n * @returns `true` when the keystroke belongs to a field, not to the app.\n */\nfunction isTypingTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) return false;\n if (target.isContentEditable) return true;\n const tag = target.tagName;\n return tag === \"INPUT\" || tag === \"TEXTAREA\" || tag === \"SELECT\";\n}\n\n/** Options for {@link usePushToTalk}. */\nexport interface UsePushToTalkOptions {\n /** `KeyboardEvent.code` to hold. Default {@link DEFAULT_PUSH_TO_TALK_KEY}. */\n code?: string;\n /** Called once when the key goes down. */\n onDown: () => void;\n /** Called when the key comes up, the window blurs, or the hook unmounts. */\n onUp: () => void;\n /**\n * Whether the binding is live. Default `true`.\n *\n * Turning it off releases first, so flipping a call from push-to-talk to an\n * open microphone while the key is held does not leave `onUp` unfired.\n */\n enabled?: boolean;\n}\n\n/**\n * Hold a key to transmit; release it to go silent again.\n *\n * Looks like `keydown`/`keyup` and is not, because three things go wrong:\n *\n * 1. **`blur` has to release.** Alt-tabbing away while holding the key means the\n * browser never sees the `keyup`, and the microphone stays open for as long as\n * the person is looking at another window — exactly what push-to-talk exists\n * to prevent.\n * 2. **Auto-repeat has to be ignored.** A held key repeats at the keyboard's rate,\n * and without the `repeat` check `onDown` fires on every one of them.\n * 3. **A text field has to win.** Space bound to push-to-talk with the focus in an\n * `<input>` means the space never reaches the message being written.\n *\n * Unmounting releases too, for the same reason `blur` does: the callback that\n * stops transmitting has to run even when the component holding it goes away\n * mid-press.\n *\n * The callbacks are read through a ref that a commit-time effect refreshes, so\n * passing inline arrows neither tears the listeners down on every render nor\n * writes to the ref during one — a render React discards would leave the ref\n * pointing at callbacks that never became the UI.\n *\n * @param options - See {@link UsePushToTalkOptions}.\n *\n * @example\n * usePushToTalk({\n * code: \"Space\",\n * onDown: () => setMicEnabled(true),\n * onUp: () => setMicEnabled(false),\n * });\n */\nexport function usePushToTalk({\n code = DEFAULT_PUSH_TO_TALK_KEY,\n onDown,\n onUp,\n enabled = true,\n}: UsePushToTalkOptions): void {\n const callbacks = useRef({ onDown, onUp });\n useEffect(() => {\n callbacks.current = { onDown, onUp };\n });\n\n useEffect(() => {\n if (!enabled || typeof window === \"undefined\") return;\n let held = false;\n\n const release = (): void => {\n if (!held) return;\n held = false;\n callbacks.current.onUp();\n };\n\n const handleKeyDown = (event: KeyboardEvent): void => {\n if (event.code !== code || event.repeat) return;\n if (isTypingTarget(event.target)) return;\n event.preventDefault();\n if (held) return;\n held = true;\n callbacks.current.onDown();\n };\n\n /**\n * Release on the way up, and never mind where the keystroke landed.\n *\n * The field guard belongs on the way **down** — it is what stops a\n * push-to-talk bound to Space from opening the microphone every time\n * somebody writes a message. On the way up it did the opposite of its\n * job: `keyup` is delivered to whatever is focused when the key rises,\n * not to what was focused when it fell, so clicking into an input while\n * still holding sent the release into the guard and left `held` true.\n * The microphone stayed open until the window blurred.\n *\n * `held` is the guard this needs. If we never opened the microphone\n * there is nothing to close, and `release()` already returns on that —\n * so the only thing left to decide is `preventDefault`, which is\n * honest only for a keystroke we actually acted on.\n */\n const handleKeyUp = (event: KeyboardEvent): void => {\n if (event.code !== code || !held) return;\n event.preventDefault();\n release();\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n window.addEventListener(\"keyup\", handleKeyUp);\n window.addEventListener(\"blur\", release);\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n window.removeEventListener(\"keyup\", handleKeyUp);\n window.removeEventListener(\"blur\", release);\n release();\n };\n }, [code, enabled]);\n}\n"],"mappings":"uBAsBA,IAAa,EAA8C,CACvD,CAAE,KAAM,QAAS,MAAO,QAAS,EACjC,CAAE,KAAM,cAAe,MAAO,eAAgB,EAC9C,CAAE,KAAM,UAAW,MAAO,cAAe,EACzC,CAAE,KAAM,YAAa,MAAO,gBAAiB,EAC7C,CAAE,KAAM,YAAa,MAAO,WAAY,CAC5C,EAGa,EAA2B,QASxC,SAAgB,EAAmB,EAAsB,CACrD,OAAO,EAAkB,KAAM,GAAQ,EAAI,OAAS,CAAI,CAAC,EAAE,OAAS,CACxE,CAYA,SAAS,EAAe,EAAqC,CACzD,GAAI,EAAE,aAAkB,aAAc,MAAO,GAC7C,GAAI,EAAO,kBAAmB,MAAO,GACrC,IAAM,EAAM,EAAO,QACnB,OAAO,IAAQ,SAAW,IAAQ,YAAc,IAAQ,QAC5D,CAmDA,SAAgB,EAAc,CAC1B,OAAO,EACP,SACA,OACA,UAAU,IACiB,CAC3B,IAAM,GAAA,EAAY,EAAA,OAAA,CAAO,CAAE,SAAQ,MAAK,CAAC,GACzC,EAAA,EAAA,UAAA,KAAgB,CACZ,EAAU,QAAU,CAAE,SAAQ,MAAK,CACvC,CAAC,GAED,EAAA,EAAA,UAAA,KAAgB,CACZ,GAAI,CAAC,GAAW,OAAO,OAAW,IAAa,OAC/C,IAAI,EAAO,GAEL,MAAsB,CACnB,IACL,EAAO,GACP,EAAU,QAAQ,KAAK,EAC3B,EAEM,EAAiB,GAA+B,CAC9C,EAAM,OAAS,GAAQ,EAAM,QAC7B,EAAe,EAAM,MAAM,IAC/B,EAAM,eAAe,EACjB,KACJ,EAAO,GACP,EAAU,QAAQ,OAAO,GAC7B,EAkBM,EAAe,GAA+B,CAC5C,EAAM,OAAS,GAAS,IAC5B,EAAM,eAAe,EACrB,EAAQ,EACZ,EAMA,OAJA,OAAO,iBAAiB,UAAW,CAAa,EAChD,OAAO,iBAAiB,QAAS,CAAW,EAC5C,OAAO,iBAAiB,OAAQ,CAAO,MAE1B,CACT,OAAO,oBAAoB,UAAW,CAAa,EACnD,OAAO,oBAAoB,QAAS,CAAW,EAC/C,OAAO,oBAAoB,OAAQ,CAAO,EAC1C,EAAQ,CACZ,CACJ,EAAG,CAAC,EAAM,CAAO,CAAC,CACtB"}
1
+ {"version":3,"file":"use-push-to-talk.cjs","names":["useRef","react","PUSH_TO_TALK_KEYS","DEFAULT_PUSH_TO_TALK_KEY","pushToTalkKeyLabel","key","code","isTypingTarget","target","tag","usePushToTalk","callbacks","enabled","held","release","handleKeyDown","event","handleKeyUp"],"sources":["../../src/hooks/use-push-to-talk.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\n\n/** A key offered for push-to-talk, with the label a settings screen shows. */\nexport interface PushToTalkKey {\n /** `KeyboardEvent.code`, which is layout-independent. */\n code: string;\n /** What to show a person. `code` itself is not a label. */\n label: string;\n}\n\n/**\n * The keys worth offering for push-to-talk.\n *\n * Identified by `code` rather than `key` so a binding survives a layout change:\n * on an ABNT2 keyboard the `key` reported for the backquote position is not what\n * a US layout reports, while `Backquote` is the same physical key everywhere.\n *\n * Left-hand modifiers only. The right-hand ones sit under the hand that is\n * usually on the mouse, and a modifier that is also a shortcut prefix\n * (`ControlLeft` with a browser shortcut) is a deliberate trade the caller makes\n * by choosing it.\n */\nexport const PUSH_TO_TALK_KEYS: readonly PushToTalkKey[] = [\n { code: \"Space\", label: \"Espaço\" },\n { code: \"ControlLeft\", label: \"Ctrl esquerdo\" },\n { code: \"AltLeft\", label: \"Alt esquerdo\" },\n { code: \"ShiftLeft\", label: \"Shift esquerdo\" },\n { code: \"Backquote\", label: \"Crase (`)\" },\n];\n\n/** The key a caller gets when it does not choose one. */\nexport const DEFAULT_PUSH_TO_TALK_KEY = \"Space\";\n\n/**\n * The label to show for a `KeyboardEvent.code`.\n *\n * @param code - The bound key's code.\n * @returns Its label, or the code itself for a key this list does not name —\n * showing `\"F13\"` beats showing nothing.\n */\nexport function pushToTalkKeyLabel(code: string): string {\n return PUSH_TO_TALK_KEYS.find((key) => key.code === code)?.label ?? code;\n}\n\n/**\n * Whether a keystroke is meant for something the person is typing into.\n *\n * Without this a push-to-talk key bound to Space opens the microphone every time\n * somebody writes a message — and the space never reaches the text field,\n * because the handler preventDefault'd it.\n *\n * @param target - The event's target.\n * @returns `true` when the keystroke belongs to a field, not to the app.\n */\nfunction isTypingTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) return false;\n if (target.isContentEditable) return true;\n const tag = target.tagName;\n return tag === \"INPUT\" || tag === \"TEXTAREA\" || tag === \"SELECT\";\n}\n\n/** Options for {@link usePushToTalk}. */\nexport interface UsePushToTalkOptions {\n /** `KeyboardEvent.code` to hold. Default {@link DEFAULT_PUSH_TO_TALK_KEY}. */\n code?: string;\n /** Called once when the key goes down. */\n onDown: () => void;\n /** Called when the key comes up, the window blurs, or the hook unmounts. */\n onUp: () => void;\n /**\n * Whether the binding is live. Default `true`.\n *\n * Turning it off releases first, so flipping a call from push-to-talk to an\n * open microphone while the key is held does not leave `onUp` unfired.\n */\n enabled?: boolean;\n}\n\n/**\n * Hold a key to transmit; release it to go silent again.\n *\n * Looks like `keydown`/`keyup` and is not, because three things go wrong:\n *\n * 1. **`blur` has to release.** Alt-tabbing away while holding the key means the\n * browser never sees the `keyup`, and the microphone stays open for as long as\n * the person is looking at another window — exactly what push-to-talk exists\n * to prevent.\n * 2. **Auto-repeat has to be ignored.** A held key repeats at the keyboard's rate,\n * and without the `repeat` check `onDown` fires on every one of them.\n * 3. **A text field has to win.** Space bound to push-to-talk with the focus in an\n * `<input>` means the space never reaches the message being written.\n *\n * Unmounting releases too, for the same reason `blur` does: the callback that\n * stops transmitting has to run even when the component holding it goes away\n * mid-press.\n *\n * The callbacks are read through a ref that a commit-time effect refreshes, so\n * passing inline arrows neither tears the listeners down on every render nor\n * writes to the ref during one — a render React discards would leave the ref\n * pointing at callbacks that never became the UI.\n *\n * @param options - See {@link UsePushToTalkOptions}.\n *\n * @example\n * usePushToTalk({\n * code: \"Space\",\n * onDown: () => setMicEnabled(true),\n * onUp: () => setMicEnabled(false),\n * });\n */\nexport function usePushToTalk({\n code = DEFAULT_PUSH_TO_TALK_KEY,\n onDown,\n onUp,\n enabled = true,\n}: UsePushToTalkOptions): void {\n const callbacks = useRef({ onDown, onUp });\n useEffect(() => {\n callbacks.current = { onDown, onUp };\n });\n\n useEffect(() => {\n if (!enabled || typeof window === \"undefined\") return;\n let held = false;\n\n const release = (): void => {\n if (!held) return;\n held = false;\n callbacks.current.onUp();\n };\n\n const handleKeyDown = (event: KeyboardEvent): void => {\n if (event.code !== code || event.repeat) return;\n if (isTypingTarget(event.target)) return;\n event.preventDefault();\n if (held) return;\n held = true;\n callbacks.current.onDown();\n };\n\n /**\n * Release on the way up, and never mind where the keystroke landed.\n *\n * The field guard belongs on the way **down** — it is what stops a\n * push-to-talk bound to Space from opening the microphone every time\n * somebody writes a message. On the way up it did the opposite of its\n * job: `keyup` is delivered to whatever is focused when the key rises,\n * not to what was focused when it fell, so clicking into an input while\n * still holding sent the release into the guard and left `held` true.\n * The microphone stayed open until the window blurred.\n *\n * `held` is the guard this needs. If we never opened the microphone\n * there is nothing to close, and `release()` already returns on that —\n * so the only thing left to decide is `preventDefault`, which is\n * honest only for a keystroke we actually acted on.\n */\n const handleKeyUp = (event: KeyboardEvent): void => {\n if (event.code !== code || !held) return;\n event.preventDefault();\n release();\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n window.addEventListener(\"keyup\", handleKeyUp);\n window.addEventListener(\"blur\", release);\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n window.removeEventListener(\"keyup\", handleKeyUp);\n window.removeEventListener(\"blur\", release);\n release();\n };\n }, [code, enabled]);\n}\n"],"mappings":"A,uBAsBA,IAAaE,EAA8C,CACvD,CAAE,KAAM,QAAS,MAAO,QAAS,EACjC,CAAE,KAAM,cAAe,MAAO,eAAgB,EAC9C,CAAE,KAAM,UAAW,MAAO,cAAe,EACzC,CAAE,KAAM,YAAa,MAAO,gBAAiB,EAC7C,CAAE,KAAM,YAAa,MAAO,WAAY,CAC5C,EAGaC,EAA2B,QASxC,SAAgBC,EAAmB,EAAsB,CACrD,OAAOF,EAAkB,KAAM,GAAQG,EAAI,OAASC,CAAI,CAAC,EAAE,OAASA,CACxE,CAYA,SAASC,EAAe,EAAqC,CACzD,GAAI,EAAEC,aAAkB,aAAc,MAAO,GAC7C,GAAIA,EAAO,kBAAmB,MAAO,GACrC,IAAMC,EAAMD,EAAO,QACnB,OAAOC,IAAQ,SAAWA,IAAQ,YAAcA,IAAQ,QAC5D,CAmDA,SAAgBC,EAAc,CAC1B,OAAOP,EACP,SACA,OACA,UAAU,IACiB,CAC3B,IAAMQ,GAAA,EAAYX,EAAAA,OAAAA,CAAO,CAAE,SAAQ,MAAK,CAAC,GACzC,EAAAC,EAAA,UAAA,KAAgB,CACZ,EAAU,QAAU,CAAE,SAAQ,MAAK,CACvC,CAAC,GAED,EAAAA,EAAA,UAAA,KAAgB,CACZ,GAAI,CAACW,GAAW,OAAO,OAAW,IAAa,OAC/C,IAAIC,EAAO,GAELC,MAAsB,CACnBD,IACL,EAAO,GACPF,EAAU,QAAQ,KAAK,EAC3B,EAEMI,EAAiB,GAA+B,CAC9CC,EAAM,OAASV,GAAQU,EAAM,QAC7BT,EAAeS,EAAM,MAAM,IAC/BA,EAAM,eAAe,EACjB,KACJ,EAAO,GACPL,EAAU,QAAQ,OAAO,GAC7B,EAkBMM,EAAe,GAA+B,CAC5CD,EAAM,OAASV,GAASO,IAC5BG,EAAM,eAAe,EACrBF,EAAQ,EACZ,EAMA,OAJA,OAAO,iBAAiB,UAAWC,CAAa,EAChD,OAAO,iBAAiB,QAASE,CAAW,EAC5C,OAAO,iBAAiB,OAAQH,CAAO,MAE1B,CACT,OAAO,oBAAoB,UAAWC,CAAa,EACnD,OAAO,oBAAoB,QAASE,CAAW,EAC/C,OAAO,oBAAoB,OAAQH,CAAO,EAC1CA,EAAQ,CACZ,CACJ,EAAG,CAACR,EAAMM,CAAO,CAAC,CACtB,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-push-to-talk.js","names":[],"sources":["../../src/hooks/use-push-to-talk.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\n\n/** A key offered for push-to-talk, with the label a settings screen shows. */\nexport interface PushToTalkKey {\n /** `KeyboardEvent.code`, which is layout-independent. */\n code: string;\n /** What to show a person. `code` itself is not a label. */\n label: string;\n}\n\n/**\n * The keys worth offering for push-to-talk.\n *\n * Identified by `code` rather than `key` so a binding survives a layout change:\n * on an ABNT2 keyboard the `key` reported for the backquote position is not what\n * a US layout reports, while `Backquote` is the same physical key everywhere.\n *\n * Left-hand modifiers only. The right-hand ones sit under the hand that is\n * usually on the mouse, and a modifier that is also a shortcut prefix\n * (`ControlLeft` with a browser shortcut) is a deliberate trade the caller makes\n * by choosing it.\n */\nexport const PUSH_TO_TALK_KEYS: readonly PushToTalkKey[] = [\n { code: \"Space\", label: \"Espaço\" },\n { code: \"ControlLeft\", label: \"Ctrl esquerdo\" },\n { code: \"AltLeft\", label: \"Alt esquerdo\" },\n { code: \"ShiftLeft\", label: \"Shift esquerdo\" },\n { code: \"Backquote\", label: \"Crase (`)\" },\n];\n\n/** The key a caller gets when it does not choose one. */\nexport const DEFAULT_PUSH_TO_TALK_KEY = \"Space\";\n\n/**\n * The label to show for a `KeyboardEvent.code`.\n *\n * @param code - The bound key's code.\n * @returns Its label, or the code itself for a key this list does not name —\n * showing `\"F13\"` beats showing nothing.\n */\nexport function pushToTalkKeyLabel(code: string): string {\n return PUSH_TO_TALK_KEYS.find((key) => key.code === code)?.label ?? code;\n}\n\n/**\n * Whether a keystroke is meant for something the person is typing into.\n *\n * Without this a push-to-talk key bound to Space opens the microphone every time\n * somebody writes a message — and the space never reaches the text field,\n * because the handler preventDefault'd it.\n *\n * @param target - The event's target.\n * @returns `true` when the keystroke belongs to a field, not to the app.\n */\nfunction isTypingTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) return false;\n if (target.isContentEditable) return true;\n const tag = target.tagName;\n return tag === \"INPUT\" || tag === \"TEXTAREA\" || tag === \"SELECT\";\n}\n\n/** Options for {@link usePushToTalk}. */\nexport interface UsePushToTalkOptions {\n /** `KeyboardEvent.code` to hold. Default {@link DEFAULT_PUSH_TO_TALK_KEY}. */\n code?: string;\n /** Called once when the key goes down. */\n onDown: () => void;\n /** Called when the key comes up, the window blurs, or the hook unmounts. */\n onUp: () => void;\n /**\n * Whether the binding is live. Default `true`.\n *\n * Turning it off releases first, so flipping a call from push-to-talk to an\n * open microphone while the key is held does not leave `onUp` unfired.\n */\n enabled?: boolean;\n}\n\n/**\n * Hold a key to transmit; release it to go silent again.\n *\n * Looks like `keydown`/`keyup` and is not, because three things go wrong:\n *\n * 1. **`blur` has to release.** Alt-tabbing away while holding the key means the\n * browser never sees the `keyup`, and the microphone stays open for as long as\n * the person is looking at another window — exactly what push-to-talk exists\n * to prevent.\n * 2. **Auto-repeat has to be ignored.** A held key repeats at the keyboard's rate,\n * and without the `repeat` check `onDown` fires on every one of them.\n * 3. **A text field has to win.** Space bound to push-to-talk with the focus in an\n * `<input>` means the space never reaches the message being written.\n *\n * Unmounting releases too, for the same reason `blur` does: the callback that\n * stops transmitting has to run even when the component holding it goes away\n * mid-press.\n *\n * The callbacks are read through a ref that a commit-time effect refreshes, so\n * passing inline arrows neither tears the listeners down on every render nor\n * writes to the ref during one — a render React discards would leave the ref\n * pointing at callbacks that never became the UI.\n *\n * @param options - See {@link UsePushToTalkOptions}.\n *\n * @example\n * usePushToTalk({\n * code: \"Space\",\n * onDown: () => setMicEnabled(true),\n * onUp: () => setMicEnabled(false),\n * });\n */\nexport function usePushToTalk({\n code = DEFAULT_PUSH_TO_TALK_KEY,\n onDown,\n onUp,\n enabled = true,\n}: UsePushToTalkOptions): void {\n const callbacks = useRef({ onDown, onUp });\n useEffect(() => {\n callbacks.current = { onDown, onUp };\n });\n\n useEffect(() => {\n if (!enabled || typeof window === \"undefined\") return;\n let held = false;\n\n const release = (): void => {\n if (!held) return;\n held = false;\n callbacks.current.onUp();\n };\n\n const handleKeyDown = (event: KeyboardEvent): void => {\n if (event.code !== code || event.repeat) return;\n if (isTypingTarget(event.target)) return;\n event.preventDefault();\n if (held) return;\n held = true;\n callbacks.current.onDown();\n };\n\n /**\n * Release on the way up, and never mind where the keystroke landed.\n *\n * The field guard belongs on the way **down** — it is what stops a\n * push-to-talk bound to Space from opening the microphone every time\n * somebody writes a message. On the way up it did the opposite of its\n * job: `keyup` is delivered to whatever is focused when the key rises,\n * not to what was focused when it fell, so clicking into an input while\n * still holding sent the release into the guard and left `held` true.\n * The microphone stayed open until the window blurred.\n *\n * `held` is the guard this needs. If we never opened the microphone\n * there is nothing to close, and `release()` already returns on that —\n * so the only thing left to decide is `preventDefault`, which is\n * honest only for a keystroke we actually acted on.\n */\n const handleKeyUp = (event: KeyboardEvent): void => {\n if (event.code !== code || !held) return;\n event.preventDefault();\n release();\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n window.addEventListener(\"keyup\", handleKeyUp);\n window.addEventListener(\"blur\", release);\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n window.removeEventListener(\"keyup\", handleKeyUp);\n window.removeEventListener(\"blur\", release);\n release();\n };\n }, [code, enabled]);\n}\n"],"mappings":";;AAsBA,IAAa,IAA8C;CACvD;EAAE,MAAM;EAAS,OAAO;CAAS;CACjC;EAAE,MAAM;EAAe,OAAO;CAAgB;CAC9C;EAAE,MAAM;EAAW,OAAO;CAAe;CACzC;EAAE,MAAM;EAAa,OAAO;CAAiB;CAC7C;EAAE,MAAM;EAAa,OAAO;CAAY;AAC5C,GAGa,IAA2B;AASxC,SAAgB,EAAmB,GAAsB;CACrD,OAAO,EAAkB,MAAM,MAAQ,EAAI,SAAS,CAAI,CAAC,EAAE,SAAS;AACxE;AAYA,SAAS,EAAe,GAAqC;CACzD,IAAI,EAAE,aAAkB,cAAc,OAAO;CAC7C,IAAI,EAAO,mBAAmB,OAAO;CACrC,IAAM,IAAM,EAAO;CACnB,OAAO,MAAQ,WAAW,MAAQ,cAAc,MAAQ;AAC5D;AAmDA,SAAgB,EAAc,EAC1B,UAAO,GACP,WACA,SACA,aAAU,MACiB;CAC3B,IAAM,IAAY,EAAO;EAAE;EAAQ;CAAK,CAAC;CAKzC,AAJA,QAAgB;EACZ,EAAU,UAAU;GAAE;GAAQ;EAAK;CACvC,CAAC,GAED,QAAgB;EACZ,IAAI,CAAC,KAAW,OAAO,SAAW,KAAa;EAC/C,IAAI,IAAO,IAEL,UAAsB;GACnB,MACL,IAAO,IACP,EAAU,QAAQ,KAAK;EAC3B,GAEM,KAAiB,MAA+B;GAC9C,EAAM,SAAS,KAAQ,EAAM,UAC7B,EAAe,EAAM,MAAM,MAC/B,EAAM,eAAe,GACjB,OACJ,IAAO,IACP,EAAU,QAAQ,OAAO;EAC7B,GAkBM,KAAe,MAA+B;GAC5C,EAAM,SAAS,KAAS,MAC5B,EAAM,eAAe,GACrB,EAAQ;EACZ;EAMA,OAJA,OAAO,iBAAiB,WAAW,CAAa,GAChD,OAAO,iBAAiB,SAAS,CAAW,GAC5C,OAAO,iBAAiB,QAAQ,CAAO,SAE1B;GAIT,AAHA,OAAO,oBAAoB,WAAW,CAAa,GACnD,OAAO,oBAAoB,SAAS,CAAW,GAC/C,OAAO,oBAAoB,QAAQ,CAAO,GAC1C,EAAQ;EACZ;CACJ,GAAG,CAAC,GAAM,CAAO,CAAC;AACtB"}
1
+ {"version":3,"file":"use-push-to-talk.js","names":["PUSH_TO_TALK_KEYS","DEFAULT_PUSH_TO_TALK_KEY","pushToTalkKeyLabel","key","code","isTypingTarget","target","tag","usePushToTalk","callbacks","useRef","useEffect","enabled","held","release","handleKeyDown","event","handleKeyUp"],"sources":["../../src/hooks/use-push-to-talk.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\n\n/** A key offered for push-to-talk, with the label a settings screen shows. */\nexport interface PushToTalkKey {\n /** `KeyboardEvent.code`, which is layout-independent. */\n code: string;\n /** What to show a person. `code` itself is not a label. */\n label: string;\n}\n\n/**\n * The keys worth offering for push-to-talk.\n *\n * Identified by `code` rather than `key` so a binding survives a layout change:\n * on an ABNT2 keyboard the `key` reported for the backquote position is not what\n * a US layout reports, while `Backquote` is the same physical key everywhere.\n *\n * Left-hand modifiers only. The right-hand ones sit under the hand that is\n * usually on the mouse, and a modifier that is also a shortcut prefix\n * (`ControlLeft` with a browser shortcut) is a deliberate trade the caller makes\n * by choosing it.\n */\nexport const PUSH_TO_TALK_KEYS: readonly PushToTalkKey[] = [\n { code: \"Space\", label: \"Espaço\" },\n { code: \"ControlLeft\", label: \"Ctrl esquerdo\" },\n { code: \"AltLeft\", label: \"Alt esquerdo\" },\n { code: \"ShiftLeft\", label: \"Shift esquerdo\" },\n { code: \"Backquote\", label: \"Crase (`)\" },\n];\n\n/** The key a caller gets when it does not choose one. */\nexport const DEFAULT_PUSH_TO_TALK_KEY = \"Space\";\n\n/**\n * The label to show for a `KeyboardEvent.code`.\n *\n * @param code - The bound key's code.\n * @returns Its label, or the code itself for a key this list does not name —\n * showing `\"F13\"` beats showing nothing.\n */\nexport function pushToTalkKeyLabel(code: string): string {\n return PUSH_TO_TALK_KEYS.find((key) => key.code === code)?.label ?? code;\n}\n\n/**\n * Whether a keystroke is meant for something the person is typing into.\n *\n * Without this a push-to-talk key bound to Space opens the microphone every time\n * somebody writes a message — and the space never reaches the text field,\n * because the handler preventDefault'd it.\n *\n * @param target - The event's target.\n * @returns `true` when the keystroke belongs to a field, not to the app.\n */\nfunction isTypingTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) return false;\n if (target.isContentEditable) return true;\n const tag = target.tagName;\n return tag === \"INPUT\" || tag === \"TEXTAREA\" || tag === \"SELECT\";\n}\n\n/** Options for {@link usePushToTalk}. */\nexport interface UsePushToTalkOptions {\n /** `KeyboardEvent.code` to hold. Default {@link DEFAULT_PUSH_TO_TALK_KEY}. */\n code?: string;\n /** Called once when the key goes down. */\n onDown: () => void;\n /** Called when the key comes up, the window blurs, or the hook unmounts. */\n onUp: () => void;\n /**\n * Whether the binding is live. Default `true`.\n *\n * Turning it off releases first, so flipping a call from push-to-talk to an\n * open microphone while the key is held does not leave `onUp` unfired.\n */\n enabled?: boolean;\n}\n\n/**\n * Hold a key to transmit; release it to go silent again.\n *\n * Looks like `keydown`/`keyup` and is not, because three things go wrong:\n *\n * 1. **`blur` has to release.** Alt-tabbing away while holding the key means the\n * browser never sees the `keyup`, and the microphone stays open for as long as\n * the person is looking at another window — exactly what push-to-talk exists\n * to prevent.\n * 2. **Auto-repeat has to be ignored.** A held key repeats at the keyboard's rate,\n * and without the `repeat` check `onDown` fires on every one of them.\n * 3. **A text field has to win.** Space bound to push-to-talk with the focus in an\n * `<input>` means the space never reaches the message being written.\n *\n * Unmounting releases too, for the same reason `blur` does: the callback that\n * stops transmitting has to run even when the component holding it goes away\n * mid-press.\n *\n * The callbacks are read through a ref that a commit-time effect refreshes, so\n * passing inline arrows neither tears the listeners down on every render nor\n * writes to the ref during one — a render React discards would leave the ref\n * pointing at callbacks that never became the UI.\n *\n * @param options - See {@link UsePushToTalkOptions}.\n *\n * @example\n * usePushToTalk({\n * code: \"Space\",\n * onDown: () => setMicEnabled(true),\n * onUp: () => setMicEnabled(false),\n * });\n */\nexport function usePushToTalk({\n code = DEFAULT_PUSH_TO_TALK_KEY,\n onDown,\n onUp,\n enabled = true,\n}: UsePushToTalkOptions): void {\n const callbacks = useRef({ onDown, onUp });\n useEffect(() => {\n callbacks.current = { onDown, onUp };\n });\n\n useEffect(() => {\n if (!enabled || typeof window === \"undefined\") return;\n let held = false;\n\n const release = (): void => {\n if (!held) return;\n held = false;\n callbacks.current.onUp();\n };\n\n const handleKeyDown = (event: KeyboardEvent): void => {\n if (event.code !== code || event.repeat) return;\n if (isTypingTarget(event.target)) return;\n event.preventDefault();\n if (held) return;\n held = true;\n callbacks.current.onDown();\n };\n\n /**\n * Release on the way up, and never mind where the keystroke landed.\n *\n * The field guard belongs on the way **down** — it is what stops a\n * push-to-talk bound to Space from opening the microphone every time\n * somebody writes a message. On the way up it did the opposite of its\n * job: `keyup` is delivered to whatever is focused when the key rises,\n * not to what was focused when it fell, so clicking into an input while\n * still holding sent the release into the guard and left `held` true.\n * The microphone stayed open until the window blurred.\n *\n * `held` is the guard this needs. If we never opened the microphone\n * there is nothing to close, and `release()` already returns on that —\n * so the only thing left to decide is `preventDefault`, which is\n * honest only for a keystroke we actually acted on.\n */\n const handleKeyUp = (event: KeyboardEvent): void => {\n if (event.code !== code || !held) return;\n event.preventDefault();\n release();\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n window.addEventListener(\"keyup\", handleKeyUp);\n window.addEventListener(\"blur\", release);\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n window.removeEventListener(\"keyup\", handleKeyUp);\n window.removeEventListener(\"blur\", release);\n release();\n };\n }, [code, enabled]);\n}\n"],"mappings":";;AAsBA,IAAaA,IAA8C;CACvD;EAAE,MAAM;EAAS,OAAO;CAAS;CACjC;EAAE,MAAM;EAAe,OAAO;CAAgB;CAC9C;EAAE,MAAM;EAAW,OAAO;CAAe;CACzC;EAAE,MAAM;EAAa,OAAO;CAAiB;CAC7C;EAAE,MAAM;EAAa,OAAO;CAAY;AAC5C,GAGaC,IAA2B;AASxC,SAAgBC,EAAmB,GAAsB;CACrD,OAAOF,EAAkB,MAAM,MAAQG,EAAI,SAASC,CAAI,CAAC,EAAE,SAASA;AACxE;AAYA,SAASC,EAAe,GAAqC;CACzD,IAAI,EAAEC,aAAkB,cAAc,OAAO;CAC7C,IAAIA,EAAO,mBAAmB,OAAO;CACrC,IAAMC,IAAMD,EAAO;CACnB,OAAOC,MAAQ,WAAWA,MAAQ,cAAcA,MAAQ;AAC5D;AAmDA,SAAgBC,EAAc,EAC1B,UAAOP,GACP,WACA,SACA,aAAU,MACiB;CAC3B,IAAMQ,IAAYC,EAAO;EAAE;EAAQ;CAAK,CAAC;CAKzC,AAJAC,QAAgB;EACZ,EAAU,UAAU;GAAE;GAAQ;EAAK;CACvC,CAAC,GAEDA,QAAgB;EACZ,IAAI,CAACC,KAAW,OAAO,SAAW,KAAa;EAC/C,IAAIC,IAAO,IAELC,UAAsB;GACxB,AAAKD,MACL,IAAO,IACPJ,EAAU,QAAQ,KAAK;EAC3B,GAEMM,KAAiB,MAA+B;GAClD,AAAIC,EAAM,SAASZ,KAAQY,EAAM,UAC7BX,EAAeW,EAAM,MAAM,MAC/BA,EAAM,eAAe,GACjB,OACJ,IAAO,IACPP,EAAU,QAAQ,OAAO;EAC7B,GAkBMQ,KAAe,MAA+B;GAChD,AAAID,EAAM,SAASZ,KAASS,MAC5BG,EAAM,eAAe,GACrBF,EAAQ;EACZ;EAMA,OAJA,OAAO,iBAAiB,WAAWC,CAAa,GAChD,OAAO,iBAAiB,SAASE,CAAW,GAC5C,OAAO,iBAAiB,QAAQH,CAAO,SAE1B;GAIT,AAHA,OAAO,oBAAoB,WAAWC,CAAa,GACnD,OAAO,oBAAoB,SAASE,CAAW,GAC/C,OAAO,oBAAoB,QAAQH,CAAO,GAC1CA,EAAQ;EACZ;CACJ,GAAG,CAACV,GAAMQ,CAAO,CAAC;AACtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-queue.cjs","names":[],"sources":["../../src/hooks/use-queue.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseQueueOptions<T> {\n initialValues?: T[];\n limit?: number;\n}\n\nexport interface UseQueueResult<T> {\n /** Items currently held within the queue (up to `limit`). */\n queue: T[];\n /** Append items; overflow beyond `limit` is held back, not dropped. */\n add: (...items: T[]) => void;\n /** Replace the held queue via a mapper over the current held items. */\n update: (fn: (state: T[]) => T[]) => void;\n /** Drop all currently held (visible) items, keeping any overflow. */\n cleanQueue: () => void;\n /** Number of visible items in the queue. */\n size: number;\n}\n\n/**\n * FIFO queue with an optional `limit`. When more items are added than `limit`\n * allows, the surplus is kept in an internal overflow buffer and surfaces into\n * `queue` as room frees up (e.g. after `cleanQueue`). Loosely mirrors Mantine's\n * `useQueue` shape.\n *\n * @typeParam T - element type.\n * @param options - `initialValues` and `limit` (default limit `Infinity`).\n * @returns `{ queue, add, update, cleanQueue, size }`.\n */\nexport function useQueue<T>(options: UseQueueOptions<T> = {}): UseQueueResult<T> {\n const { initialValues = [], limit = Infinity } = options;\n\n const [state, setState] = useState<{ queue: T[]; overflow: T[] }>(() => ({\n queue: initialValues.slice(0, limit),\n overflow: initialValues.slice(limit),\n }));\n\n const add = useCallback(\n (...items: T[]): void => {\n setState((current) => {\n const all = [...current.queue, ...current.overflow, ...items];\n return {\n queue: all.slice(0, limit),\n overflow: all.slice(limit),\n };\n });\n },\n [limit],\n );\n\n const update = useCallback(\n (fn: (queueState: T[]) => T[]): void => {\n setState((current) => {\n const all = [...fn(current.queue), ...current.overflow];\n return {\n queue: all.slice(0, limit),\n overflow: all.slice(limit),\n };\n });\n },\n [limit],\n );\n\n const cleanQueue = useCallback((): void => {\n setState((current) => ({\n queue: current.overflow.slice(0, limit),\n overflow: current.overflow.slice(limit),\n }));\n }, [limit]);\n\n return useMemo<UseQueueResult<T>>(\n () => ({\n queue: state.queue,\n add,\n update,\n cleanQueue,\n size: state.queue.length,\n }),\n [state.queue, add, update, cleanQueue],\n );\n}\n"],"mappings":"uBA8BA,SAAgB,EAAY,EAA8B,CAAC,EAAsB,CAC7E,GAAM,CAAE,gBAAgB,CAAC,EAAG,QAAQ,KAAa,EAE3C,CAAC,EAAO,IAAA,EAAY,EAAA,SAAA,MAA+C,CACrE,MAAO,EAAc,MAAM,EAAG,CAAK,EACnC,SAAU,EAAc,MAAM,CAAK,CACvC,EAAE,EAEI,GAAA,EAAM,EAAA,YAAA,EACP,GAAG,IAAqB,CACrB,EAAU,GAAY,CAClB,IAAM,EAAM,CAAC,GAAG,EAAQ,MAAO,GAAG,EAAQ,SAAU,GAAG,CAAK,EAC5D,MAAO,CACH,MAAO,EAAI,MAAM,EAAG,CAAK,EACzB,SAAU,EAAI,MAAM,CAAK,CAC7B,CACJ,CAAC,CACL,EACA,CAAC,CAAK,CACV,EAEM,GAAA,EAAS,EAAA,YAAA,CACV,GAAuC,CACpC,EAAU,GAAY,CAClB,IAAM,EAAM,CAAC,GAAG,EAAG,EAAQ,KAAK,EAAG,GAAG,EAAQ,QAAQ,EACtD,MAAO,CACH,MAAO,EAAI,MAAM,EAAG,CAAK,EACzB,SAAU,EAAI,MAAM,CAAK,CAC7B,CACJ,CAAC,CACL,EACA,CAAC,CAAK,CACV,EAEM,GAAA,EAAa,EAAA,YAAA,KAAwB,CACvC,EAAU,IAAa,CACnB,MAAO,EAAQ,SAAS,MAAM,EAAG,CAAK,EACtC,SAAU,EAAQ,SAAS,MAAM,CAAK,CAC1C,EAAE,CACN,EAAG,CAAC,CAAK,CAAC,EAEV,OAAA,EAAO,EAAA,QAAA,MACI,CACH,MAAO,EAAM,MACb,MACA,SACA,aACA,KAAM,EAAM,MAAM,MACtB,GACA,CAAC,EAAM,MAAO,EAAK,EAAQ,CAAU,CACzC,CACJ"}
1
+ {"version":3,"file":"use-queue.cjs","names":["useState","useCallback","useMemo","react","useQueue","options","state","setState","initialValues","limit","add","items","all","current","update","fn","cleanQueue"],"sources":["../../src/hooks/use-queue.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseQueueOptions<T> {\n initialValues?: T[];\n limit?: number;\n}\n\nexport interface UseQueueResult<T> {\n /** Items currently held within the queue (up to `limit`). */\n queue: T[];\n /** Append items; overflow beyond `limit` is held back, not dropped. */\n add: (...items: T[]) => void;\n /** Replace the held queue via a mapper over the current held items. */\n update: (fn: (state: T[]) => T[]) => void;\n /** Drop all currently held (visible) items, keeping any overflow. */\n cleanQueue: () => void;\n /** Number of visible items in the queue. */\n size: number;\n}\n\n/**\n * FIFO queue with an optional `limit`. When more items are added than `limit`\n * allows, the surplus is kept in an internal overflow buffer and surfaces into\n * `queue` as room frees up (e.g. after `cleanQueue`). Loosely mirrors Mantine's\n * `useQueue` shape.\n *\n * @typeParam T - element type.\n * @param options - `initialValues` and `limit` (default limit `Infinity`).\n * @returns `{ queue, add, update, cleanQueue, size }`.\n */\nexport function useQueue<T>(options: UseQueueOptions<T> = {}): UseQueueResult<T> {\n const { initialValues = [], limit = Infinity } = options;\n\n const [state, setState] = useState<{ queue: T[]; overflow: T[] }>(() => ({\n queue: initialValues.slice(0, limit),\n overflow: initialValues.slice(limit),\n }));\n\n const add = useCallback(\n (...items: T[]): void => {\n setState((current) => {\n const all = [...current.queue, ...current.overflow, ...items];\n return {\n queue: all.slice(0, limit),\n overflow: all.slice(limit),\n };\n });\n },\n [limit],\n );\n\n const update = useCallback(\n (fn: (queueState: T[]) => T[]): void => {\n setState((current) => {\n const all = [...fn(current.queue), ...current.overflow];\n return {\n queue: all.slice(0, limit),\n overflow: all.slice(limit),\n };\n });\n },\n [limit],\n );\n\n const cleanQueue = useCallback((): void => {\n setState((current) => ({\n queue: current.overflow.slice(0, limit),\n overflow: current.overflow.slice(limit),\n }));\n }, [limit]);\n\n return useMemo<UseQueueResult<T>>(\n () => ({\n queue: state.queue,\n add,\n update,\n cleanQueue,\n size: state.queue.length,\n }),\n [state.queue, add, update, cleanQueue],\n );\n}\n"],"mappings":"A,uBA8BA,SAAgBI,EAAY,EAA8B,CAAC,EAAsB,CAC7E,GAAM,CAAE,gBAAgB,CAAC,EAAG,QAAQ,KAAaC,EAE3C,CAACC,EAAOC,IAAA,EAAYP,EAAAA,SAAAA,MAA+C,CACrE,MAAOQ,EAAc,MAAM,EAAGC,CAAK,EACnC,SAAUD,EAAc,MAAMC,CAAK,CACvC,EAAE,EAEIC,GAAA,EAAMT,EAAAA,YAAAA,EACP,GAAGU,IAAqB,CACrBJ,EAAU,GAAY,CAClB,IAAMK,EAAM,CAAC,GAAGC,EAAQ,MAAO,GAAGA,EAAQ,SAAU,GAAGF,CAAK,EAC5D,MAAO,CACH,MAAOC,EAAI,MAAM,EAAGH,CAAK,EACzB,SAAUG,EAAI,MAAMH,CAAK,CAC7B,CACJ,CAAC,CACL,EACA,CAACA,CAAK,CACV,EAEMK,GAAA,EAASb,EAAAA,YAAAA,CACV,GAAuC,CACpCM,EAAU,GAAY,CAClB,IAAMK,EAAM,CAAC,GAAGG,EAAGF,EAAQ,KAAK,EAAG,GAAGA,EAAQ,QAAQ,EACtD,MAAO,CACH,MAAOD,EAAI,MAAM,EAAGH,CAAK,EACzB,SAAUG,EAAI,MAAMH,CAAK,CAC7B,CACJ,CAAC,CACL,EACA,CAACA,CAAK,CACV,EAEMO,GAAA,EAAaf,EAAAA,YAAAA,KAAwB,CACvCM,EAAU,IAAa,CACnB,MAAOM,EAAQ,SAAS,MAAM,EAAGJ,CAAK,EACtC,SAAUI,EAAQ,SAAS,MAAMJ,CAAK,CAC1C,EAAE,CACN,EAAG,CAACA,CAAK,CAAC,EAEV,OAAA,EAAOP,EAAAA,QAAAA,MACI,CACH,MAAOI,EAAM,MACb,MACA,SACA,aACA,KAAMA,EAAM,MAAM,MACtB,GACA,CAACA,EAAM,MAAOI,EAAKI,EAAQE,CAAU,CACzC,CACJ,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-queue.js","names":[],"sources":["../../src/hooks/use-queue.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseQueueOptions<T> {\n initialValues?: T[];\n limit?: number;\n}\n\nexport interface UseQueueResult<T> {\n /** Items currently held within the queue (up to `limit`). */\n queue: T[];\n /** Append items; overflow beyond `limit` is held back, not dropped. */\n add: (...items: T[]) => void;\n /** Replace the held queue via a mapper over the current held items. */\n update: (fn: (state: T[]) => T[]) => void;\n /** Drop all currently held (visible) items, keeping any overflow. */\n cleanQueue: () => void;\n /** Number of visible items in the queue. */\n size: number;\n}\n\n/**\n * FIFO queue with an optional `limit`. When more items are added than `limit`\n * allows, the surplus is kept in an internal overflow buffer and surfaces into\n * `queue` as room frees up (e.g. after `cleanQueue`). Loosely mirrors Mantine's\n * `useQueue` shape.\n *\n * @typeParam T - element type.\n * @param options - `initialValues` and `limit` (default limit `Infinity`).\n * @returns `{ queue, add, update, cleanQueue, size }`.\n */\nexport function useQueue<T>(options: UseQueueOptions<T> = {}): UseQueueResult<T> {\n const { initialValues = [], limit = Infinity } = options;\n\n const [state, setState] = useState<{ queue: T[]; overflow: T[] }>(() => ({\n queue: initialValues.slice(0, limit),\n overflow: initialValues.slice(limit),\n }));\n\n const add = useCallback(\n (...items: T[]): void => {\n setState((current) => {\n const all = [...current.queue, ...current.overflow, ...items];\n return {\n queue: all.slice(0, limit),\n overflow: all.slice(limit),\n };\n });\n },\n [limit],\n );\n\n const update = useCallback(\n (fn: (queueState: T[]) => T[]): void => {\n setState((current) => {\n const all = [...fn(current.queue), ...current.overflow];\n return {\n queue: all.slice(0, limit),\n overflow: all.slice(limit),\n };\n });\n },\n [limit],\n );\n\n const cleanQueue = useCallback((): void => {\n setState((current) => ({\n queue: current.overflow.slice(0, limit),\n overflow: current.overflow.slice(limit),\n }));\n }, [limit]);\n\n return useMemo<UseQueueResult<T>>(\n () => ({\n queue: state.queue,\n add,\n update,\n cleanQueue,\n size: state.queue.length,\n }),\n [state.queue, add, update, cleanQueue],\n );\n}\n"],"mappings":";;AA8BA,SAAgB,EAAY,IAA8B,CAAC,GAAsB;CAC7E,IAAM,EAAE,mBAAgB,CAAC,GAAG,WAAQ,aAAa,GAE3C,CAAC,GAAO,KAAY,SAA+C;EACrE,OAAO,EAAc,MAAM,GAAG,CAAK;EACnC,UAAU,EAAc,MAAM,CAAK;CACvC,EAAE,GAEI,IAAM,GACP,GAAG,MAAqB;EACrB,GAAU,MAAY;GAClB,IAAM,IAAM;IAAC,GAAG,EAAQ;IAAO,GAAG,EAAQ;IAAU,GAAG;GAAK;GAC5D,OAAO;IACH,OAAO,EAAI,MAAM,GAAG,CAAK;IACzB,UAAU,EAAI,MAAM,CAAK;GAC7B;EACJ,CAAC;CACL,GACA,CAAC,CAAK,CACV,GAEM,IAAS,GACV,MAAuC;EACpC,GAAU,MAAY;GAClB,IAAM,IAAM,CAAC,GAAG,EAAG,EAAQ,KAAK,GAAG,GAAG,EAAQ,QAAQ;GACtD,OAAO;IACH,OAAO,EAAI,MAAM,GAAG,CAAK;IACzB,UAAU,EAAI,MAAM,CAAK;GAC7B;EACJ,CAAC;CACL,GACA,CAAC,CAAK,CACV,GAEM,IAAa,QAAwB;EACvC,GAAU,OAAa;GACnB,OAAO,EAAQ,SAAS,MAAM,GAAG,CAAK;GACtC,UAAU,EAAQ,SAAS,MAAM,CAAK;EAC1C,EAAE;CACN,GAAG,CAAC,CAAK,CAAC;CAEV,OAAO,SACI;EACH,OAAO,EAAM;EACb;EACA;EACA;EACA,MAAM,EAAM,MAAM;CACtB,IACA;EAAC,EAAM;EAAO;EAAK;EAAQ;CAAU,CACzC;AACJ"}
1
+ {"version":3,"file":"use-queue.js","names":["useQueue","options","state","setState","useState","initialValues","limit","add","useCallback","items","all","current","update","fn","cleanQueue","useMemo"],"sources":["../../src/hooks/use-queue.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseQueueOptions<T> {\n initialValues?: T[];\n limit?: number;\n}\n\nexport interface UseQueueResult<T> {\n /** Items currently held within the queue (up to `limit`). */\n queue: T[];\n /** Append items; overflow beyond `limit` is held back, not dropped. */\n add: (...items: T[]) => void;\n /** Replace the held queue via a mapper over the current held items. */\n update: (fn: (state: T[]) => T[]) => void;\n /** Drop all currently held (visible) items, keeping any overflow. */\n cleanQueue: () => void;\n /** Number of visible items in the queue. */\n size: number;\n}\n\n/**\n * FIFO queue with an optional `limit`. When more items are added than `limit`\n * allows, the surplus is kept in an internal overflow buffer and surfaces into\n * `queue` as room frees up (e.g. after `cleanQueue`). Loosely mirrors Mantine's\n * `useQueue` shape.\n *\n * @typeParam T - element type.\n * @param options - `initialValues` and `limit` (default limit `Infinity`).\n * @returns `{ queue, add, update, cleanQueue, size }`.\n */\nexport function useQueue<T>(options: UseQueueOptions<T> = {}): UseQueueResult<T> {\n const { initialValues = [], limit = Infinity } = options;\n\n const [state, setState] = useState<{ queue: T[]; overflow: T[] }>(() => ({\n queue: initialValues.slice(0, limit),\n overflow: initialValues.slice(limit),\n }));\n\n const add = useCallback(\n (...items: T[]): void => {\n setState((current) => {\n const all = [...current.queue, ...current.overflow, ...items];\n return {\n queue: all.slice(0, limit),\n overflow: all.slice(limit),\n };\n });\n },\n [limit],\n );\n\n const update = useCallback(\n (fn: (queueState: T[]) => T[]): void => {\n setState((current) => {\n const all = [...fn(current.queue), ...current.overflow];\n return {\n queue: all.slice(0, limit),\n overflow: all.slice(limit),\n };\n });\n },\n [limit],\n );\n\n const cleanQueue = useCallback((): void => {\n setState((current) => ({\n queue: current.overflow.slice(0, limit),\n overflow: current.overflow.slice(limit),\n }));\n }, [limit]);\n\n return useMemo<UseQueueResult<T>>(\n () => ({\n queue: state.queue,\n add,\n update,\n cleanQueue,\n size: state.queue.length,\n }),\n [state.queue, add, update, cleanQueue],\n );\n}\n"],"mappings":";;AA8BA,SAAgBA,EAAY,IAA8B,CAAC,GAAsB;CAC7E,IAAM,EAAE,mBAAgB,CAAC,GAAG,WAAQ,aAAaC,GAE3C,CAACC,GAAOC,KAAYC,SAA+C;EACrE,OAAOC,EAAc,MAAM,GAAGC,CAAK;EACnC,UAAUD,EAAc,MAAMC,CAAK;CACvC,EAAE,GAEIC,IAAMC,GACP,GAAGC,MAAqB;EACrB,GAAU,MAAY;GAClB,IAAMC,IAAM;IAAC,GAAGC,EAAQ;IAAO,GAAGA,EAAQ;IAAU,GAAGF;GAAK;GAC5D,OAAO;IACH,OAAOC,EAAI,MAAM,GAAGJ,CAAK;IACzB,UAAUI,EAAI,MAAMJ,CAAK;GAC7B;EACJ,CAAC;CACL,GACA,CAACA,CAAK,CACV,GAEMM,IAASJ,GACV,MAAuC;EACpC,GAAU,MAAY;GAClB,IAAME,IAAM,CAAC,GAAGG,EAAGF,EAAQ,KAAK,GAAG,GAAGA,EAAQ,QAAQ;GACtD,OAAO;IACH,OAAOD,EAAI,MAAM,GAAGJ,CAAK;IACzB,UAAUI,EAAI,MAAMJ,CAAK;GAC7B;EACJ,CAAC;CACL,GACA,CAACA,CAAK,CACV,GAEMQ,IAAaN,QAAwB;EACvC,GAAU,OAAa;GACnB,OAAOG,EAAQ,SAAS,MAAM,GAAGL,CAAK;GACtC,UAAUK,EAAQ,SAAS,MAAML,CAAK;EAC1C,EAAE;CACN,GAAG,CAACA,CAAK,CAAC;CAEV,OAAOS,SACI;EACH,OAAOb,EAAM;EACb;EACA;EACA;EACA,MAAMA,EAAM,MAAM;CACtB,IACA;EAACA,EAAM;EAAOK;EAAKK;EAAQE;CAAU,CACzC;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-resize-observer.cjs","names":[],"sources":["../../src/hooks/use-resize-observer.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\nexport interface ElementSize {\n width: number;\n height: number;\n}\n\n/**\n * Track size changes of a DOM element via `ResizeObserver`.\n * Returns `null` until the first measurement.\n */\nexport function useResizeObserver(ref: RefObject<Element | null>): ElementSize | null {\n const [size, setSize] = useState<ElementSize | null>(null);\n\n useEffect(() => {\n const target = ref.current;\n if (!target || typeof ResizeObserver === \"undefined\") return;\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (!entry) return;\n const box = entry.contentRect;\n setSize({ width: box.width, height: box.height });\n });\n\n observer.observe(target);\n return () => observer.disconnect();\n }, [ref]);\n\n return size;\n}\n"],"mappings":"uBAYA,SAAgB,EAAkB,EAAoD,CAClF,GAAM,CAAC,EAAM,IAAA,EAAW,EAAA,SAAA,CAA6B,IAAI,EAiBzD,OAfA,EAAA,EAAA,UAAA,KAAgB,CACZ,IAAM,EAAS,EAAI,QACnB,GAAI,CAAC,GAAU,OAAO,eAAmB,IAAa,OAEtD,IAAM,EAAW,IAAI,eAAgB,GAAY,CAC7C,IAAM,EAAQ,EAAQ,GACtB,GAAI,CAAC,EAAO,OACZ,IAAM,EAAM,EAAM,YAClB,EAAQ,CAAE,MAAO,EAAI,MAAO,OAAQ,EAAI,MAAO,CAAC,CACpD,CAAC,EAGD,OADA,EAAS,QAAQ,CAAM,MACV,EAAS,WAAW,CACrC,EAAG,CAAC,CAAG,CAAC,EAED,CACX"}
1
+ {"version":3,"file":"use-resize-observer.cjs","names":["useState","react","useResizeObserver","size","setSize","target","ref","observer","entry","entries","box"],"sources":["../../src/hooks/use-resize-observer.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\nexport interface ElementSize {\n width: number;\n height: number;\n}\n\n/**\n * Track size changes of a DOM element via `ResizeObserver`.\n * Returns `null` until the first measurement.\n */\nexport function useResizeObserver(ref: RefObject<Element | null>): ElementSize | null {\n const [size, setSize] = useState<ElementSize | null>(null);\n\n useEffect(() => {\n const target = ref.current;\n if (!target || typeof ResizeObserver === \"undefined\") return;\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (!entry) return;\n const box = entry.contentRect;\n setSize({ width: box.width, height: box.height });\n });\n\n observer.observe(target);\n return () => observer.disconnect();\n }, [ref]);\n\n return size;\n}\n"],"mappings":"A,uBAYA,SAAgBE,EAAkB,EAAoD,CAClF,GAAM,CAACC,EAAMC,IAAA,EAAWJ,EAAAA,SAAAA,CAA6B,IAAI,EAiBzD,OAfA,EAAAC,EAAA,UAAA,KAAgB,CACZ,IAAMI,EAASC,EAAI,QACnB,GAAI,CAACD,GAAU,OAAO,eAAmB,IAAa,OAEtD,IAAME,EAAW,IAAI,eAAgB,GAAY,CAC7C,IAAMC,EAAQC,EAAQ,GACtB,GAAI,CAACD,EAAO,OACZ,IAAME,EAAMF,EAAM,YAClBJ,EAAQ,CAAE,MAAOM,EAAI,MAAO,OAAQA,EAAI,MAAO,CAAC,CACpD,CAAC,EAGD,OADAH,EAAS,QAAQF,CAAM,MACVE,EAAS,WAAW,CACrC,EAAG,CAACD,CAAG,CAAC,EAEDH,CACX,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-resize-observer.js","names":[],"sources":["../../src/hooks/use-resize-observer.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\nexport interface ElementSize {\n width: number;\n height: number;\n}\n\n/**\n * Track size changes of a DOM element via `ResizeObserver`.\n * Returns `null` until the first measurement.\n */\nexport function useResizeObserver(ref: RefObject<Element | null>): ElementSize | null {\n const [size, setSize] = useState<ElementSize | null>(null);\n\n useEffect(() => {\n const target = ref.current;\n if (!target || typeof ResizeObserver === \"undefined\") return;\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (!entry) return;\n const box = entry.contentRect;\n setSize({ width: box.width, height: box.height });\n });\n\n observer.observe(target);\n return () => observer.disconnect();\n }, [ref]);\n\n return size;\n}\n"],"mappings":";;AAYA,SAAgB,EAAkB,GAAoD;CAClF,IAAM,CAAC,GAAM,KAAW,EAA6B,IAAI;CAiBzD,OAfA,QAAgB;EACZ,IAAM,IAAS,EAAI;EACnB,IAAI,CAAC,KAAU,OAAO,iBAAmB,KAAa;EAEtD,IAAM,IAAW,IAAI,gBAAgB,MAAY;GAC7C,IAAM,IAAQ,EAAQ;GACtB,IAAI,CAAC,GAAO;GACZ,IAAM,IAAM,EAAM;GAClB,EAAQ;IAAE,OAAO,EAAI;IAAO,QAAQ,EAAI;GAAO,CAAC;EACpD,CAAC;EAGD,OADA,EAAS,QAAQ,CAAM,SACV,EAAS,WAAW;CACrC,GAAG,CAAC,CAAG,CAAC,GAED;AACX"}
1
+ {"version":3,"file":"use-resize-observer.js","names":["useResizeObserver","size","setSize","useState","useEffect","target","ref","observer","entry","entries","box"],"sources":["../../src/hooks/use-resize-observer.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\nexport interface ElementSize {\n width: number;\n height: number;\n}\n\n/**\n * Track size changes of a DOM element via `ResizeObserver`.\n * Returns `null` until the first measurement.\n */\nexport function useResizeObserver(ref: RefObject<Element | null>): ElementSize | null {\n const [size, setSize] = useState<ElementSize | null>(null);\n\n useEffect(() => {\n const target = ref.current;\n if (!target || typeof ResizeObserver === \"undefined\") return;\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (!entry) return;\n const box = entry.contentRect;\n setSize({ width: box.width, height: box.height });\n });\n\n observer.observe(target);\n return () => observer.disconnect();\n }, [ref]);\n\n return size;\n}\n"],"mappings":";;AAYA,SAAgBA,EAAkB,GAAoD;CAClF,IAAM,CAACC,GAAMC,KAAWC,EAA6B,IAAI;CAiBzD,OAfAC,QAAgB;EACZ,IAAMC,IAASC,EAAI;EACnB,IAAI,CAACD,KAAU,OAAO,iBAAmB,KAAa;EAEtD,IAAME,IAAW,IAAI,gBAAgB,MAAY;GAC7C,IAAMC,IAAQC,EAAQ;GACtB,IAAI,CAACD,GAAO;GACZ,IAAME,IAAMF,EAAM;GAClB,EAAQ;IAAE,OAAOE,EAAI;IAAO,QAAQA,EAAI;GAAO,CAAC;EACpD,CAAC;EAGD,OADAH,EAAS,QAAQF,CAAM,SACVE,EAAS,WAAW;CACrC,GAAG,CAACD,CAAG,CAAC,GAEDL;AACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-scroll-lock.cjs","names":[],"sources":["../../src/hooks/use-scroll-lock.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Lock `<body>` scroll while `active` is true. Restores the previous overflow\n * value on unmount. Safe to nest: stacks the restoration via a counter.\n */\nexport function useScrollLock(active: boolean): void {\n useEffect(() => {\n if (!active || typeof document === \"undefined\") return;\n const body = document.body;\n const previous = body.style.overflow;\n body.style.overflow = \"hidden\";\n return () => {\n body.style.overflow = previous;\n };\n }, [active]);\n}\n"],"mappings":"uBAMA,SAAgB,EAAc,EAAuB,EACjD,EAAA,EAAA,UAAA,KAAgB,CACZ,GAAI,CAAC,GAAU,OAAO,SAAa,IAAa,OAChD,IAAM,EAAO,SAAS,KAChB,EAAW,EAAK,MAAM,SAE5B,MADA,GAAK,MAAM,SAAW,aACT,CACT,EAAK,MAAM,SAAW,CAC1B,CACJ,EAAG,CAAC,CAAM,CAAC,CACf"}
1
+ {"version":3,"file":"use-scroll-lock.cjs","names":["react","useScrollLock","active","body","previous"],"sources":["../../src/hooks/use-scroll-lock.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Lock `<body>` scroll while `active` is true. Restores the previous overflow\n * value on unmount. Safe to nest: stacks the restoration via a counter.\n */\nexport function useScrollLock(active: boolean): void {\n useEffect(() => {\n if (!active || typeof document === \"undefined\") return;\n const body = document.body;\n const previous = body.style.overflow;\n body.style.overflow = \"hidden\";\n return () => {\n body.style.overflow = previous;\n };\n }, [active]);\n}\n"],"mappings":"A,uBAMA,SAAgBC,EAAc,EAAuB,EACjD,EAAAD,EAAA,UAAA,KAAgB,CACZ,GAAI,CAACE,GAAU,OAAO,SAAa,IAAa,OAChD,IAAMC,EAAO,SAAS,KAChBC,EAAWD,EAAK,MAAM,SAE5B,MADA,GAAK,MAAM,SAAW,aACT,CACT,EAAK,MAAM,SAAWC,CAC1B,CACJ,EAAG,CAACF,CAAM,CAAC,CACf,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-scroll-lock.js","names":[],"sources":["../../src/hooks/use-scroll-lock.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Lock `<body>` scroll while `active` is true. Restores the previous overflow\n * value on unmount. Safe to nest: stacks the restoration via a counter.\n */\nexport function useScrollLock(active: boolean): void {\n useEffect(() => {\n if (!active || typeof document === \"undefined\") return;\n const body = document.body;\n const previous = body.style.overflow;\n body.style.overflow = \"hidden\";\n return () => {\n body.style.overflow = previous;\n };\n }, [active]);\n}\n"],"mappings":";;AAMA,SAAgB,EAAc,GAAuB;CACjD,QAAgB;EACZ,IAAI,CAAC,KAAU,OAAO,WAAa,KAAa;EAChD,IAAM,IAAO,SAAS,MAChB,IAAW,EAAK,MAAM;EAE5B,OADA,EAAK,MAAM,WAAW,gBACT;GACT,EAAK,MAAM,WAAW;EAC1B;CACJ,GAAG,CAAC,CAAM,CAAC;AACf"}
1
+ {"version":3,"file":"use-scroll-lock.js","names":["useScrollLock","active","body","previous"],"sources":["../../src/hooks/use-scroll-lock.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Lock `<body>` scroll while `active` is true. Restores the previous overflow\n * value on unmount. Safe to nest: stacks the restoration via a counter.\n */\nexport function useScrollLock(active: boolean): void {\n useEffect(() => {\n if (!active || typeof document === \"undefined\") return;\n const body = document.body;\n const previous = body.style.overflow;\n body.style.overflow = \"hidden\";\n return () => {\n body.style.overflow = previous;\n };\n }, [active]);\n}\n"],"mappings":";;AAMA,SAAgBA,EAAc,GAAuB;CACjD,QAAgB;EACZ,IAAI,CAACC,KAAU,OAAO,WAAa,KAAa;EAChD,IAAMC,IAAO,SAAS,MAChBC,IAAWD,EAAK,MAAM;EAE5B,OADA,EAAK,MAAM,WAAW,gBACT;GACT,EAAK,MAAM,WAAWC;EAC1B;CACJ,GAAG,CAACF,CAAM,CAAC;AACf"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-scroll-overflow.cjs","names":[],"sources":["../../src/hooks/use-scroll-overflow.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\n/** Which axis to watch for overflow. */\nexport type ScrollOverflowAxis = \"horizontal\" | \"vertical\" | \"both\";\n\n/**\n * Track whether an element's content currently overflows its box.\n *\n * The use this exists for is keyboard access. A scroll container holding no\n * focusable content is unreachable by keyboard: the user can see there is more\n * content past the edge and has no way to get to it, because focus never lands\n * anywhere the arrow keys would scroll. Giving the container `tabIndex={0}`\n * fixes it — but doing that unconditionally puts a tab stop on every such\n * container on the page, including the ones whose content fits and have nothing\n * to scroll. The stop is only wanted while the overflow is real, which is what\n * this reports. (It is also what axe checks as `scrollable-region-focusable`.)\n *\n * Both the container and its content are observed: content can outgrow a box\n * whose own dimensions never change, and a box can shrink around content that\n * never changes. Watching one alone misses half the transitions.\n *\n * A one-pixel difference is ignored — that is layout rounding, not overflow.\n *\n * @param ref - The scroll container.\n * @param axis - Which axis to measure. Defaults to `\"both\"`.\n * @returns `true` while the content is larger than the box on that axis.\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * const scrollable = useScrollOverflow(ref, \"horizontal\");\n *\n * <div\n * ref={ref}\n * tabIndex={scrollable ? 0 : undefined}\n * role={scrollable ? \"group\" : undefined}\n * aria-label={scrollable ? \"Tabela rolável\" : undefined}\n * >\n */\nexport function useScrollOverflow(\n ref: RefObject<HTMLElement | null>,\n axis: ScrollOverflowAxis = \"both\",\n): boolean {\n const [overflowing, setOverflowing] = useState(false);\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n const measure = () => {\n const horizontal = element.scrollWidth - element.clientWidth > 1;\n const vertical = element.scrollHeight - element.clientHeight > 1;\n if (axis === \"horizontal\") setOverflowing(horizontal);\n else if (axis === \"vertical\") setOverflowing(vertical);\n else setOverflowing(horizontal || vertical);\n };\n measure();\n\n if (typeof ResizeObserver === \"undefined\") return;\n\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n const content = element.firstElementChild;\n if (content) observer.observe(content);\n return () => observer.disconnect();\n }, [ref, axis]);\n\n return overflowing;\n}\n"],"mappings":"uBAuCA,SAAgB,EACZ,EACA,EAA2B,OACpB,CACP,GAAM,CAAC,EAAa,IAAA,EAAkB,EAAA,SAAA,CAAS,EAAK,EAwBpD,OAtBA,EAAA,EAAA,UAAA,KAAgB,CACZ,IAAM,EAAU,EAAI,QACpB,GAAI,CAAC,EAAS,OAEd,IAAM,MAAgB,CAClB,IAAM,EAAa,EAAQ,YAAc,EAAQ,YAAc,EACzD,EAAW,EAAQ,aAAe,EAAQ,aAAe,EACpC,EAAvB,IAAS,aAA6B,EACjC,IAAS,WAA2B,EACzB,GAAc,CAAQ,CAC9C,EAGA,GAFA,EAAQ,EAEJ,OAAO,eAAmB,IAAa,OAE3C,IAAM,EAAW,IAAI,eAAe,CAAO,EAC3C,EAAS,QAAQ,CAAO,EACxB,IAAM,EAAU,EAAQ,kBAExB,OADI,GAAS,EAAS,QAAQ,CAAO,MACxB,EAAS,WAAW,CACrC,EAAG,CAAC,EAAK,CAAI,CAAC,EAEP,CACX"}
1
+ {"version":3,"file":"use-scroll-overflow.cjs","names":["useState","react","useScrollOverflow","overflowing","setOverflowing","element","ref","measure","horizontal","vertical","axis","observer","content"],"sources":["../../src/hooks/use-scroll-overflow.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\n/** Which axis to watch for overflow. */\nexport type ScrollOverflowAxis = \"horizontal\" | \"vertical\" | \"both\";\n\n/**\n * Track whether an element's content currently overflows its box.\n *\n * The use this exists for is keyboard access. A scroll container holding no\n * focusable content is unreachable by keyboard: the user can see there is more\n * content past the edge and has no way to get to it, because focus never lands\n * anywhere the arrow keys would scroll. Giving the container `tabIndex={0}`\n * fixes it — but doing that unconditionally puts a tab stop on every such\n * container on the page, including the ones whose content fits and have nothing\n * to scroll. The stop is only wanted while the overflow is real, which is what\n * this reports. (It is also what axe checks as `scrollable-region-focusable`.)\n *\n * Both the container and its content are observed: content can outgrow a box\n * whose own dimensions never change, and a box can shrink around content that\n * never changes. Watching one alone misses half the transitions.\n *\n * A one-pixel difference is ignored — that is layout rounding, not overflow.\n *\n * @param ref - The scroll container.\n * @param axis - Which axis to measure. Defaults to `\"both\"`.\n * @returns `true` while the content is larger than the box on that axis.\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * const scrollable = useScrollOverflow(ref, \"horizontal\");\n *\n * <div\n * ref={ref}\n * tabIndex={scrollable ? 0 : undefined}\n * role={scrollable ? \"group\" : undefined}\n * aria-label={scrollable ? \"Tabela rolável\" : undefined}\n * >\n */\nexport function useScrollOverflow(\n ref: RefObject<HTMLElement | null>,\n axis: ScrollOverflowAxis = \"both\",\n): boolean {\n const [overflowing, setOverflowing] = useState(false);\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n const measure = () => {\n const horizontal = element.scrollWidth - element.clientWidth > 1;\n const vertical = element.scrollHeight - element.clientHeight > 1;\n if (axis === \"horizontal\") setOverflowing(horizontal);\n else if (axis === \"vertical\") setOverflowing(vertical);\n else setOverflowing(horizontal || vertical);\n };\n measure();\n\n if (typeof ResizeObserver === \"undefined\") return;\n\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n const content = element.firstElementChild;\n if (content) observer.observe(content);\n return () => observer.disconnect();\n }, [ref, axis]);\n\n return overflowing;\n}\n"],"mappings":"A,uBAuCA,SAAgBE,EACZ,EACA,EAA2B,OACpB,CACP,GAAM,CAACC,EAAaC,IAAA,EAAkBJ,EAAAA,SAAAA,CAAS,EAAK,EAwBpD,OAtBA,EAAAC,EAAA,UAAA,KAAgB,CACZ,IAAMI,EAAUC,EAAI,QACpB,GAAI,CAACD,EAAS,OAEd,IAAME,MAAgB,CAClB,IAAMC,EAAaH,EAAQ,YAAcA,EAAQ,YAAc,EACzDI,EAAWJ,EAAQ,aAAeA,EAAQ,aAAe,EACpCD,EAAvBM,IAAS,aAA6BF,EACjCE,IAAS,WAA2BD,EACzBD,GAAcC,CAAQ,CAC9C,EAGA,GAFAF,EAAQ,EAEJ,OAAO,eAAmB,IAAa,OAE3C,IAAMI,EAAW,IAAI,eAAeJ,CAAO,EAC3CI,EAAS,QAAQN,CAAO,EACxB,IAAMO,EAAUP,EAAQ,kBAExB,OADIO,GAASD,EAAS,QAAQC,CAAO,MACxBD,EAAS,WAAW,CACrC,EAAG,CAACL,EAAKI,CAAI,CAAC,EAEPP,CACX,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-scroll-overflow.js","names":[],"sources":["../../src/hooks/use-scroll-overflow.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\n/** Which axis to watch for overflow. */\nexport type ScrollOverflowAxis = \"horizontal\" | \"vertical\" | \"both\";\n\n/**\n * Track whether an element's content currently overflows its box.\n *\n * The use this exists for is keyboard access. A scroll container holding no\n * focusable content is unreachable by keyboard: the user can see there is more\n * content past the edge and has no way to get to it, because focus never lands\n * anywhere the arrow keys would scroll. Giving the container `tabIndex={0}`\n * fixes it — but doing that unconditionally puts a tab stop on every such\n * container on the page, including the ones whose content fits and have nothing\n * to scroll. The stop is only wanted while the overflow is real, which is what\n * this reports. (It is also what axe checks as `scrollable-region-focusable`.)\n *\n * Both the container and its content are observed: content can outgrow a box\n * whose own dimensions never change, and a box can shrink around content that\n * never changes. Watching one alone misses half the transitions.\n *\n * A one-pixel difference is ignored — that is layout rounding, not overflow.\n *\n * @param ref - The scroll container.\n * @param axis - Which axis to measure. Defaults to `\"both\"`.\n * @returns `true` while the content is larger than the box on that axis.\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * const scrollable = useScrollOverflow(ref, \"horizontal\");\n *\n * <div\n * ref={ref}\n * tabIndex={scrollable ? 0 : undefined}\n * role={scrollable ? \"group\" : undefined}\n * aria-label={scrollable ? \"Tabela rolável\" : undefined}\n * >\n */\nexport function useScrollOverflow(\n ref: RefObject<HTMLElement | null>,\n axis: ScrollOverflowAxis = \"both\",\n): boolean {\n const [overflowing, setOverflowing] = useState(false);\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n const measure = () => {\n const horizontal = element.scrollWidth - element.clientWidth > 1;\n const vertical = element.scrollHeight - element.clientHeight > 1;\n if (axis === \"horizontal\") setOverflowing(horizontal);\n else if (axis === \"vertical\") setOverflowing(vertical);\n else setOverflowing(horizontal || vertical);\n };\n measure();\n\n if (typeof ResizeObserver === \"undefined\") return;\n\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n const content = element.firstElementChild;\n if (content) observer.observe(content);\n return () => observer.disconnect();\n }, [ref, axis]);\n\n return overflowing;\n}\n"],"mappings":";;AAuCA,SAAgB,EACZ,GACA,IAA2B,QACpB;CACP,IAAM,CAAC,GAAa,KAAkB,EAAS,EAAK;CAwBpD,OAtBA,QAAgB;EACZ,IAAM,IAAU,EAAI;EACpB,IAAI,CAAC,GAAS;EAEd,IAAM,UAAgB;GAClB,IAAM,IAAa,EAAQ,cAAc,EAAQ,cAAc,GACzD,IAAW,EAAQ,eAAe,EAAQ,eAAe;GAC/D,AAA2B,EAAvB,MAAS,eAA6B,IACjC,MAAS,aAA2B,IACzB,KAAc,CAAQ;EAC9C;EAGA,IAFA,EAAQ,GAEJ,OAAO,iBAAmB,KAAa;EAE3C,IAAM,IAAW,IAAI,eAAe,CAAO;EAC3C,EAAS,QAAQ,CAAO;EACxB,IAAM,IAAU,EAAQ;EAExB,OADI,KAAS,EAAS,QAAQ,CAAO,SACxB,EAAS,WAAW;CACrC,GAAG,CAAC,GAAK,CAAI,CAAC,GAEP;AACX"}
1
+ {"version":3,"file":"use-scroll-overflow.js","names":["useScrollOverflow","overflowing","setOverflowing","useState","useEffect","element","ref","measure","horizontal","vertical","axis","observer","content"],"sources":["../../src/hooks/use-scroll-overflow.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\n/** Which axis to watch for overflow. */\nexport type ScrollOverflowAxis = \"horizontal\" | \"vertical\" | \"both\";\n\n/**\n * Track whether an element's content currently overflows its box.\n *\n * The use this exists for is keyboard access. A scroll container holding no\n * focusable content is unreachable by keyboard: the user can see there is more\n * content past the edge and has no way to get to it, because focus never lands\n * anywhere the arrow keys would scroll. Giving the container `tabIndex={0}`\n * fixes it — but doing that unconditionally puts a tab stop on every such\n * container on the page, including the ones whose content fits and have nothing\n * to scroll. The stop is only wanted while the overflow is real, which is what\n * this reports. (It is also what axe checks as `scrollable-region-focusable`.)\n *\n * Both the container and its content are observed: content can outgrow a box\n * whose own dimensions never change, and a box can shrink around content that\n * never changes. Watching one alone misses half the transitions.\n *\n * A one-pixel difference is ignored — that is layout rounding, not overflow.\n *\n * @param ref - The scroll container.\n * @param axis - Which axis to measure. Defaults to `\"both\"`.\n * @returns `true` while the content is larger than the box on that axis.\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * const scrollable = useScrollOverflow(ref, \"horizontal\");\n *\n * <div\n * ref={ref}\n * tabIndex={scrollable ? 0 : undefined}\n * role={scrollable ? \"group\" : undefined}\n * aria-label={scrollable ? \"Tabela rolável\" : undefined}\n * >\n */\nexport function useScrollOverflow(\n ref: RefObject<HTMLElement | null>,\n axis: ScrollOverflowAxis = \"both\",\n): boolean {\n const [overflowing, setOverflowing] = useState(false);\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n const measure = () => {\n const horizontal = element.scrollWidth - element.clientWidth > 1;\n const vertical = element.scrollHeight - element.clientHeight > 1;\n if (axis === \"horizontal\") setOverflowing(horizontal);\n else if (axis === \"vertical\") setOverflowing(vertical);\n else setOverflowing(horizontal || vertical);\n };\n measure();\n\n if (typeof ResizeObserver === \"undefined\") return;\n\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n const content = element.firstElementChild;\n if (content) observer.observe(content);\n return () => observer.disconnect();\n }, [ref, axis]);\n\n return overflowing;\n}\n"],"mappings":";;AAuCA,SAAgBA,EACZ,GACA,IAA2B,QACpB;CACP,IAAM,CAACC,GAAaC,KAAkBC,EAAS,EAAK;CAwBpD,OAtBAC,QAAgB;EACZ,IAAMC,IAAUC,EAAI;EACpB,IAAI,CAACD,GAAS;EAEd,IAAME,UAAgB;GAClB,IAAMC,IAAaH,EAAQ,cAAcA,EAAQ,cAAc,GACzDI,IAAWJ,EAAQ,eAAeA,EAAQ,eAAe;GAC/D,AAA2BH,EAAvBQ,MAAS,eAA6BF,IACjCE,MAAS,aAA2BD,IACzBD,KAAcC,CAAQ;EAC9C;EAGA,IAFAF,EAAQ,GAEJ,OAAO,iBAAmB,KAAa;EAE3C,IAAMI,IAAW,IAAI,eAAeJ,CAAO;EAC3C,EAAS,QAAQF,CAAO;EACxB,IAAMO,IAAUP,EAAQ;EAExB,OADIO,KAASD,EAAS,QAAQC,CAAO,SACxBD,EAAS,WAAW;CACrC,GAAG,CAACL,GAAKI,CAAI,CAAC,GAEPT;AACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-service-worker-update.cjs","names":[],"sources":["../../src/hooks/use-service-worker-update.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\nimport {\n registerServiceWorker,\n skipWaiting,\n type RegisterServiceWorkerOptions,\n} from \"../sw/register-service-worker\";\n\n/**\n * Options for {@link useServiceWorkerUpdate}. Mirrors the registration options\n * minus the callbacks the hook owns internally (`onUpdate`); `onReady` and\n * `onError` still pass through for host-side logging.\n *\n * Leave `autoUpdate` off (the default): this hook exists to hand the reload\n * decision to the user, so a silent auto-reload would defeat the prompt.\n */\nexport type UseServiceWorkerUpdateOptions = Omit<RegisterServiceWorkerOptions, \"onUpdate\">;\n\n/** Reactive service-worker update state plus the apply action. */\nexport interface UseServiceWorkerUpdateResult {\n /** `true` once a new worker has installed and is waiting to activate. */\n updateAvailable: boolean;\n /**\n * Activate the waiting worker and reload the page once it takes control.\n * No-op when no update is waiting.\n */\n applyUpdate: () => void;\n /** The active registration, or `null` before it resolves / when unsupported. */\n registration: ServiceWorkerRegistration | null;\n}\n\n/**\n * Register a service worker and expose a user-driven update flow.\n *\n * Wraps {@link registerServiceWorker}: when a fresh worker finishes installing\n * while the page is still controlled by the old one, `updateAvailable` flips to\n * `true`. Call `applyUpdate` — typically from an \"atualizar\" toast — to tell the\n * waiting worker to activate and reload the page once it takes control.\n *\n * Skips cleanly when the runtime has no service-worker support (`registration`\n * stays `null`, `updateAvailable` stays `false`).\n *\n * @param options - Registration options (`url` required); `autoUpdate` should\n * stay off so the reload is user-confirmed.\n * @returns The update state and `applyUpdate` action.\n *\n * @example\n * const { updateAvailable, applyUpdate } = useServiceWorkerUpdate({ url: \"/sw.js\" });\n * return (\n * <UpdatePrompt open={updateAvailable} onUpdate={applyUpdate} />\n * );\n */\nexport function useServiceWorkerUpdate(\n options: UseServiceWorkerUpdateOptions,\n): UseServiceWorkerUpdateResult {\n const [updateAvailable, setUpdateAvailable] = useState<boolean>(false);\n const [registration, setRegistration] = useState<ServiceWorkerRegistration | null>(null);\n const waitingRef = useRef<ServiceWorker | null>(null);\n\n const optionsRef = useLatestRef(options);\n\n useEffect(() => {\n let cancelled = false;\n void registerServiceWorker({\n ...optionsRef.current,\n onUpdate: (waiting, reg) => {\n waitingRef.current = waiting;\n setRegistration(reg);\n setUpdateAvailable(true);\n },\n onReady: (reg) => {\n if (cancelled) return;\n setRegistration(reg);\n if (reg.waiting && navigator.serviceWorker.controller) {\n waitingRef.current = reg.waiting;\n setUpdateAvailable(true);\n }\n optionsRef.current.onReady?.(reg);\n },\n }).then((reg) => {\n if (!cancelled && reg) setRegistration(reg);\n });\n return () => {\n cancelled = true;\n };\n }, [options.url, optionsRef]);\n\n const applyUpdate = useCallback(() => {\n const waiting = waitingRef.current;\n if (!waiting || typeof navigator === \"undefined\") return;\n let reloading = false;\n navigator.serviceWorker.addEventListener(\"controllerchange\", () => {\n if (reloading) return;\n reloading = true;\n window.location.reload();\n });\n skipWaiting(waiting);\n }, []);\n\n return { updateAvailable, applyUpdate, registration };\n}\n"],"mappings":"8GAoDA,SAAgB,EACZ,EAC4B,CAC5B,GAAM,CAAC,EAAiB,IAAA,EAAsB,EAAA,SAAA,CAAkB,EAAK,EAC/D,CAAC,EAAc,IAAA,EAAmB,EAAA,SAAA,CAA2C,IAAI,EACjF,GAAA,EAAa,EAAA,OAAA,CAA6B,IAAI,EAE9C,EAAa,EAAA,aAAa,CAAO,EAwCvC,OAtCA,EAAA,EAAA,UAAA,KAAgB,CACZ,IAAI,EAAY,GAoBhB,OAnBA,EAAK,sBAAsB,CACvB,GAAG,EAAW,QACd,UAAW,EAAS,IAAQ,CACxB,EAAW,QAAU,EACrB,EAAgB,CAAG,EACnB,EAAmB,EAAI,CAC3B,EACA,QAAU,GAAQ,CACV,IACJ,EAAgB,CAAG,EACf,EAAI,SAAW,UAAU,cAAc,aACvC,EAAW,QAAU,EAAI,QACzB,EAAmB,EAAI,GAE3B,EAAW,QAAQ,UAAU,CAAG,EACpC,CACJ,CAAC,CAAC,CAAC,KAAM,GAAQ,CACT,CAAC,GAAa,GAAK,EAAgB,CAAG,CAC9C,CAAC,MACY,CACT,EAAY,EAChB,CACJ,EAAG,CAAC,EAAQ,IAAK,CAAU,CAAC,EAcrB,CAAE,kBAAiB,aAAA,EAZN,EAAA,YAAA,KAAkB,CAClC,IAAM,EAAU,EAAW,QAC3B,GAAI,CAAC,GAAW,OAAO,UAAc,IAAa,OAClD,IAAI,EAAY,GAChB,UAAU,cAAc,iBAAiB,uBAA0B,CAC3D,IACJ,EAAY,GACZ,OAAO,SAAS,OAAO,EAC3B,CAAC,EACD,EAAA,YAAY,CAAO,CACvB,EAAG,CAAC,CAEsB,EAAa,cAAa,CACxD"}
1
+ {"version":3,"file":"use-service-worker-update.cjs","names":["useState","useRef","useLatestRef","registerServiceWorker","useCallback","require_use_latest_ref","require_register_service_worker","react","useServiceWorkerUpdate","updateAvailable","setUpdateAvailable","registration","setRegistration","waitingRef","optionsRef","options","cancelled","waiting","reg","reloading"],"sources":["../../src/hooks/use-service-worker-update.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\nimport {\n registerServiceWorker,\n skipWaiting,\n type RegisterServiceWorkerOptions,\n} from \"../sw/register-service-worker\";\n\n/**\n * Options for {@link useServiceWorkerUpdate}. Mirrors the registration options\n * minus the callbacks the hook owns internally (`onUpdate`); `onReady` and\n * `onError` still pass through for host-side logging.\n *\n * Leave `autoUpdate` off (the default): this hook exists to hand the reload\n * decision to the user, so a silent auto-reload would defeat the prompt.\n */\nexport type UseServiceWorkerUpdateOptions = Omit<RegisterServiceWorkerOptions, \"onUpdate\">;\n\n/** Reactive service-worker update state plus the apply action. */\nexport interface UseServiceWorkerUpdateResult {\n /** `true` once a new worker has installed and is waiting to activate. */\n updateAvailable: boolean;\n /**\n * Activate the waiting worker and reload the page once it takes control.\n * No-op when no update is waiting.\n */\n applyUpdate: () => void;\n /** The active registration, or `null` before it resolves / when unsupported. */\n registration: ServiceWorkerRegistration | null;\n}\n\n/**\n * Register a service worker and expose a user-driven update flow.\n *\n * Wraps {@link registerServiceWorker}: when a fresh worker finishes installing\n * while the page is still controlled by the old one, `updateAvailable` flips to\n * `true`. Call `applyUpdate` — typically from an \"atualizar\" toast — to tell the\n * waiting worker to activate and reload the page once it takes control.\n *\n * Skips cleanly when the runtime has no service-worker support (`registration`\n * stays `null`, `updateAvailable` stays `false`).\n *\n * @param options - Registration options (`url` required); `autoUpdate` should\n * stay off so the reload is user-confirmed.\n * @returns The update state and `applyUpdate` action.\n *\n * @example\n * const { updateAvailable, applyUpdate } = useServiceWorkerUpdate({ url: \"/sw.js\" });\n * return (\n * <UpdatePrompt open={updateAvailable} onUpdate={applyUpdate} />\n * );\n */\nexport function useServiceWorkerUpdate(\n options: UseServiceWorkerUpdateOptions,\n): UseServiceWorkerUpdateResult {\n const [updateAvailable, setUpdateAvailable] = useState<boolean>(false);\n const [registration, setRegistration] = useState<ServiceWorkerRegistration | null>(null);\n const waitingRef = useRef<ServiceWorker | null>(null);\n\n const optionsRef = useLatestRef(options);\n\n useEffect(() => {\n let cancelled = false;\n void registerServiceWorker({\n ...optionsRef.current,\n onUpdate: (waiting, reg) => {\n waitingRef.current = waiting;\n setRegistration(reg);\n setUpdateAvailable(true);\n },\n onReady: (reg) => {\n if (cancelled) return;\n setRegistration(reg);\n if (reg.waiting && navigator.serviceWorker.controller) {\n waitingRef.current = reg.waiting;\n setUpdateAvailable(true);\n }\n optionsRef.current.onReady?.(reg);\n },\n }).then((reg) => {\n if (!cancelled && reg) setRegistration(reg);\n });\n return () => {\n cancelled = true;\n };\n }, [options.url, optionsRef]);\n\n const applyUpdate = useCallback(() => {\n const waiting = waitingRef.current;\n if (!waiting || typeof navigator === \"undefined\") return;\n let reloading = false;\n navigator.serviceWorker.addEventListener(\"controllerchange\", () => {\n if (reloading) return;\n reloading = true;\n window.location.reload();\n });\n skipWaiting(waiting);\n }, []);\n\n return { updateAvailable, applyUpdate, registration };\n}\n"],"mappings":"A,8GAoDA,SAAgBQ,EACZ,EAC4B,CAC5B,GAAM,CAACC,EAAiBC,IAAA,EAAsBV,EAAAA,SAAAA,CAAkB,EAAK,EAC/D,CAACW,EAAcC,IAAA,EAAmBZ,EAAAA,SAAAA,CAA2C,IAAI,EACjFa,GAAA,EAAaZ,EAAAA,OAAAA,CAA6B,IAAI,EAE9Ca,EAAaZ,EAAAA,aAAaa,CAAO,EAwCvC,OAtCA,EAAAR,EAAA,UAAA,KAAgB,CACZ,IAAIS,EAAY,GAoBhB,OAnBAV,EAAKH,sBAAsB,CACvB,GAAGW,EAAW,QACd,UAAW,EAAS,IAAQ,CACxB,EAAW,QAAUG,EACrBL,EAAgBM,CAAG,EACnBR,EAAmB,EAAI,CAC3B,EACA,QAAU,GAAQ,CACVM,IACJJ,EAAgBM,CAAG,EACfA,EAAI,SAAW,UAAU,cAAc,aACvC,EAAW,QAAUA,EAAI,QACzBR,EAAmB,EAAI,GAE3BI,EAAW,QAAQ,UAAUI,CAAG,EACpC,CACJ,CAAC,CAAC,CAAC,KAAM,GAAQ,CACT,CAACF,GAAaE,GAAKN,EAAgBM,CAAG,CAC9C,CAAC,MACY,CACT,EAAY,EAChB,CACJ,EAAG,CAACH,EAAQ,IAAKD,CAAU,CAAC,EAcrB,CAAE,kBAAiB,aAAA,EAZNV,EAAAA,YAAAA,KAAkB,CAClC,IAAMa,EAAUJ,EAAW,QAC3B,GAAI,CAACI,GAAW,OAAO,UAAc,IAAa,OAClD,IAAIE,EAAY,GAChB,UAAU,cAAc,iBAAiB,uBAA0B,CAC3DA,IACJ,EAAY,GACZ,OAAO,SAAS,OAAO,EAC3B,CAAC,EACDb,EAAA,YAAYW,CAAO,CACvB,EAAG,CAAC,CAEsB,EAAa,cAAa,CACxD,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-service-worker-update.js","names":[],"sources":["../../src/hooks/use-service-worker-update.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\nimport {\n registerServiceWorker,\n skipWaiting,\n type RegisterServiceWorkerOptions,\n} from \"../sw/register-service-worker\";\n\n/**\n * Options for {@link useServiceWorkerUpdate}. Mirrors the registration options\n * minus the callbacks the hook owns internally (`onUpdate`); `onReady` and\n * `onError` still pass through for host-side logging.\n *\n * Leave `autoUpdate` off (the default): this hook exists to hand the reload\n * decision to the user, so a silent auto-reload would defeat the prompt.\n */\nexport type UseServiceWorkerUpdateOptions = Omit<RegisterServiceWorkerOptions, \"onUpdate\">;\n\n/** Reactive service-worker update state plus the apply action. */\nexport interface UseServiceWorkerUpdateResult {\n /** `true` once a new worker has installed and is waiting to activate. */\n updateAvailable: boolean;\n /**\n * Activate the waiting worker and reload the page once it takes control.\n * No-op when no update is waiting.\n */\n applyUpdate: () => void;\n /** The active registration, or `null` before it resolves / when unsupported. */\n registration: ServiceWorkerRegistration | null;\n}\n\n/**\n * Register a service worker and expose a user-driven update flow.\n *\n * Wraps {@link registerServiceWorker}: when a fresh worker finishes installing\n * while the page is still controlled by the old one, `updateAvailable` flips to\n * `true`. Call `applyUpdate` — typically from an \"atualizar\" toast — to tell the\n * waiting worker to activate and reload the page once it takes control.\n *\n * Skips cleanly when the runtime has no service-worker support (`registration`\n * stays `null`, `updateAvailable` stays `false`).\n *\n * @param options - Registration options (`url` required); `autoUpdate` should\n * stay off so the reload is user-confirmed.\n * @returns The update state and `applyUpdate` action.\n *\n * @example\n * const { updateAvailable, applyUpdate } = useServiceWorkerUpdate({ url: \"/sw.js\" });\n * return (\n * <UpdatePrompt open={updateAvailable} onUpdate={applyUpdate} />\n * );\n */\nexport function useServiceWorkerUpdate(\n options: UseServiceWorkerUpdateOptions,\n): UseServiceWorkerUpdateResult {\n const [updateAvailable, setUpdateAvailable] = useState<boolean>(false);\n const [registration, setRegistration] = useState<ServiceWorkerRegistration | null>(null);\n const waitingRef = useRef<ServiceWorker | null>(null);\n\n const optionsRef = useLatestRef(options);\n\n useEffect(() => {\n let cancelled = false;\n void registerServiceWorker({\n ...optionsRef.current,\n onUpdate: (waiting, reg) => {\n waitingRef.current = waiting;\n setRegistration(reg);\n setUpdateAvailable(true);\n },\n onReady: (reg) => {\n if (cancelled) return;\n setRegistration(reg);\n if (reg.waiting && navigator.serviceWorker.controller) {\n waitingRef.current = reg.waiting;\n setUpdateAvailable(true);\n }\n optionsRef.current.onReady?.(reg);\n },\n }).then((reg) => {\n if (!cancelled && reg) setRegistration(reg);\n });\n return () => {\n cancelled = true;\n };\n }, [options.url, optionsRef]);\n\n const applyUpdate = useCallback(() => {\n const waiting = waitingRef.current;\n if (!waiting || typeof navigator === \"undefined\") return;\n let reloading = false;\n navigator.serviceWorker.addEventListener(\"controllerchange\", () => {\n if (reloading) return;\n reloading = true;\n window.location.reload();\n });\n skipWaiting(waiting);\n }, []);\n\n return { updateAvailable, applyUpdate, registration };\n}\n"],"mappings":";;;;AAoDA,SAAgB,EACZ,GAC4B;CAC5B,IAAM,CAAC,GAAiB,KAAsB,EAAkB,EAAK,GAC/D,CAAC,GAAc,KAAmB,EAA2C,IAAI,GACjF,IAAa,EAA6B,IAAI,GAE9C,IAAa,EAAa,CAAO;CAwCvC,OAtCA,QAAgB;EACZ,IAAI,IAAY;EAoBhB,OAnBA,EAA2B;GACvB,GAAG,EAAW;GACd,WAAW,GAAS,MAAQ;IAGxB,AAFA,EAAW,UAAU,GACrB,EAAgB,CAAG,GACnB,EAAmB,EAAI;GAC3B;GACA,UAAU,MAAQ;IACV,MACJ,EAAgB,CAAG,GACf,EAAI,WAAW,UAAU,cAAc,eACvC,EAAW,UAAU,EAAI,SACzB,EAAmB,EAAI,IAE3B,EAAW,QAAQ,UAAU,CAAG;GACpC;EACJ,CAAC,CAAC,CAAC,MAAM,MAAQ;GACb,AAAI,CAAC,KAAa,KAAK,EAAgB,CAAG;EAC9C,CAAC,SACY;GACT,IAAY;EAChB;CACJ,GAAG,CAAC,EAAQ,KAAK,CAAU,CAAC,GAcrB;EAAE;EAAiB,aAZN,QAAkB;GAClC,IAAM,IAAU,EAAW;GAC3B,IAAI,CAAC,KAAW,OAAO,YAAc,KAAa;GAClD,IAAI,IAAY;GAMhB,AALA,UAAU,cAAc,iBAAiB,0BAA0B;IAC3D,MACJ,IAAY,IACZ,OAAO,SAAS,OAAO;GAC3B,CAAC,GACD,EAAY,CAAO;EACvB,GAAG,CAAC,CAEsB;EAAa;CAAa;AACxD"}
1
+ {"version":3,"file":"use-service-worker-update.js","names":["useServiceWorkerUpdate","updateAvailable","setUpdateAvailable","useState","registration","setRegistration","waitingRef","useRef","optionsRef","useLatestRef","options","useEffect","cancelled","registerServiceWorker","waiting","reg","useCallback","reloading","skipWaiting"],"sources":["../../src/hooks/use-service-worker-update.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\nimport {\n registerServiceWorker,\n skipWaiting,\n type RegisterServiceWorkerOptions,\n} from \"../sw/register-service-worker\";\n\n/**\n * Options for {@link useServiceWorkerUpdate}. Mirrors the registration options\n * minus the callbacks the hook owns internally (`onUpdate`); `onReady` and\n * `onError` still pass through for host-side logging.\n *\n * Leave `autoUpdate` off (the default): this hook exists to hand the reload\n * decision to the user, so a silent auto-reload would defeat the prompt.\n */\nexport type UseServiceWorkerUpdateOptions = Omit<RegisterServiceWorkerOptions, \"onUpdate\">;\n\n/** Reactive service-worker update state plus the apply action. */\nexport interface UseServiceWorkerUpdateResult {\n /** `true` once a new worker has installed and is waiting to activate. */\n updateAvailable: boolean;\n /**\n * Activate the waiting worker and reload the page once it takes control.\n * No-op when no update is waiting.\n */\n applyUpdate: () => void;\n /** The active registration, or `null` before it resolves / when unsupported. */\n registration: ServiceWorkerRegistration | null;\n}\n\n/**\n * Register a service worker and expose a user-driven update flow.\n *\n * Wraps {@link registerServiceWorker}: when a fresh worker finishes installing\n * while the page is still controlled by the old one, `updateAvailable` flips to\n * `true`. Call `applyUpdate` — typically from an \"atualizar\" toast — to tell the\n * waiting worker to activate and reload the page once it takes control.\n *\n * Skips cleanly when the runtime has no service-worker support (`registration`\n * stays `null`, `updateAvailable` stays `false`).\n *\n * @param options - Registration options (`url` required); `autoUpdate` should\n * stay off so the reload is user-confirmed.\n * @returns The update state and `applyUpdate` action.\n *\n * @example\n * const { updateAvailable, applyUpdate } = useServiceWorkerUpdate({ url: \"/sw.js\" });\n * return (\n * <UpdatePrompt open={updateAvailable} onUpdate={applyUpdate} />\n * );\n */\nexport function useServiceWorkerUpdate(\n options: UseServiceWorkerUpdateOptions,\n): UseServiceWorkerUpdateResult {\n const [updateAvailable, setUpdateAvailable] = useState<boolean>(false);\n const [registration, setRegistration] = useState<ServiceWorkerRegistration | null>(null);\n const waitingRef = useRef<ServiceWorker | null>(null);\n\n const optionsRef = useLatestRef(options);\n\n useEffect(() => {\n let cancelled = false;\n void registerServiceWorker({\n ...optionsRef.current,\n onUpdate: (waiting, reg) => {\n waitingRef.current = waiting;\n setRegistration(reg);\n setUpdateAvailable(true);\n },\n onReady: (reg) => {\n if (cancelled) return;\n setRegistration(reg);\n if (reg.waiting && navigator.serviceWorker.controller) {\n waitingRef.current = reg.waiting;\n setUpdateAvailable(true);\n }\n optionsRef.current.onReady?.(reg);\n },\n }).then((reg) => {\n if (!cancelled && reg) setRegistration(reg);\n });\n return () => {\n cancelled = true;\n };\n }, [options.url, optionsRef]);\n\n const applyUpdate = useCallback(() => {\n const waiting = waitingRef.current;\n if (!waiting || typeof navigator === \"undefined\") return;\n let reloading = false;\n navigator.serviceWorker.addEventListener(\"controllerchange\", () => {\n if (reloading) return;\n reloading = true;\n window.location.reload();\n });\n skipWaiting(waiting);\n }, []);\n\n return { updateAvailable, applyUpdate, registration };\n}\n"],"mappings":";;;;AAoDA,SAAgBA,EACZ,GAC4B;CAC5B,IAAM,CAACC,GAAiBC,KAAsBC,EAAkB,EAAK,GAC/D,CAACC,GAAcC,KAAmBF,EAA2C,IAAI,GACjFG,IAAaC,EAA6B,IAAI,GAE9CC,IAAaC,EAAaC,CAAO;CAwCvC,OAtCAC,QAAgB;EACZ,IAAIC,IAAY;EAoBhB,OAnBAC,EAA2B;GACvB,GAAGL,EAAW;GACd,WAAW,GAAS,MAAQ;IAGxB,AAFA,EAAW,UAAUM,GACrBT,EAAgBU,CAAG,GACnBb,EAAmB,EAAI;GAC3B;GACA,UAAU,MAAQ;IACd,AAAIU,MACJP,EAAgBU,CAAG,GACfA,EAAI,WAAW,UAAU,cAAc,eACvC,EAAW,UAAUA,EAAI,SACzBb,EAAmB,EAAI,IAE3BM,EAAW,QAAQ,UAAUO,CAAG;GACpC;EACJ,CAAC,CAAC,CAAC,MAAM,MAAQ;GACb,AAAI,CAACH,KAAaG,KAAKV,EAAgBU,CAAG;EAC9C,CAAC,SACY;GACT,IAAY;EAChB;CACJ,GAAG,CAACL,EAAQ,KAAKF,CAAU,CAAC,GAcrB;EAAE;EAAiB,aAZNQ,QAAkB;GAClC,IAAMF,IAAUR,EAAW;GAC3B,IAAI,CAACQ,KAAW,OAAO,YAAc,KAAa;GAClD,IAAIG,IAAY;GAMhB,AALA,UAAU,cAAc,iBAAiB,0BAA0B;IAC/D,AAAIA,MACJ,IAAY,IACZ,OAAO,SAAS,OAAO;GAC3B,CAAC,GACDC,EAAYJ,CAAO;EACvB,GAAG,CAAC,CAEsB;EAAa;CAAa;AACxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-set.cjs","names":[],"sources":["../../src/hooks/use-set.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseSetResult<T> {\n set: ReadonlySet<T>;\n add: (value: T) => void;\n delete: (value: T) => void;\n clear: () => void;\n has: (value: T) => boolean;\n toggle: (value: T) => void;\n size: number;\n}\n\n/**\n * Reactive `Set` wrapper. Mutating via `add` / `delete` / `clear` / `toggle`\n * triggers a re-render and yields a fresh `set` reference each time.\n *\n * @typeParam T - element type.\n * @param initial - initial values.\n * @returns `{ set, add, delete, clear, has, toggle, size }`.\n */\nexport function useSet<T>(initial?: Iterable<T>): UseSetResult<T> {\n const [set, setSet] = useState<Set<T>>(() => new Set(initial));\n\n const add = useCallback((value: T): void => {\n setSet((current) => {\n if (current.has(value)) return current;\n const next = new Set(current);\n next.add(value);\n return next;\n });\n }, []);\n\n const remove = useCallback((value: T): void => {\n setSet((current) => {\n if (!current.has(value)) return current;\n const next = new Set(current);\n next.delete(value);\n return next;\n });\n }, []);\n\n const clear = useCallback((): void => {\n setSet((current) => (current.size === 0 ? current : new Set<T>()));\n }, []);\n\n const has = useCallback((value: T): boolean => set.has(value), [set]);\n\n const toggle = useCallback((value: T): void => {\n setSet((current) => {\n const next = new Set(current);\n if (next.has(value)) next.delete(value);\n else next.add(value);\n return next;\n });\n }, []);\n\n return useMemo<UseSetResult<T>>(\n () => ({\n set,\n add,\n delete: remove,\n clear,\n has,\n toggle,\n size: set.size,\n }),\n [set, add, remove, clear, has, toggle],\n );\n}\n"],"mappings":"uBAoBA,SAAgB,EAAU,EAAwC,CAC9D,GAAM,CAAC,EAAK,IAAA,EAAU,EAAA,SAAA,KAAuB,IAAI,IAAI,CAAO,CAAC,EAEvD,GAAA,EAAM,EAAA,YAAA,CAAa,GAAmB,CACxC,EAAQ,GAAY,CAChB,GAAI,EAAQ,IAAI,CAAK,EAAG,OAAO,EAC/B,IAAM,EAAO,IAAI,IAAI,CAAO,EAE5B,OADA,EAAK,IAAI,CAAK,EACP,CACX,CAAC,CACL,EAAG,CAAC,CAAC,EAEC,GAAA,EAAS,EAAA,YAAA,CAAa,GAAmB,CAC3C,EAAQ,GAAY,CAChB,GAAI,CAAC,EAAQ,IAAI,CAAK,EAAG,OAAO,EAChC,IAAM,EAAO,IAAI,IAAI,CAAO,EAE5B,OADA,EAAK,OAAO,CAAK,EACV,CACX,CAAC,CACL,EAAG,CAAC,CAAC,EAEC,GAAA,EAAQ,EAAA,YAAA,KAAwB,CAClC,EAAQ,GAAa,EAAQ,OAAS,EAAI,EAAU,IAAI,GAAS,CACrE,EAAG,CAAC,CAAC,EAEC,GAAA,EAAM,EAAA,YAAA,CAAa,GAAsB,EAAI,IAAI,CAAK,EAAG,CAAC,CAAG,CAAC,EAE9D,GAAA,EAAS,EAAA,YAAA,CAAa,GAAmB,CAC3C,EAAQ,GAAY,CAChB,IAAM,EAAO,IAAI,IAAI,CAAO,EAG5B,OAFI,EAAK,IAAI,CAAK,EAAG,EAAK,OAAO,CAAK,EACjC,EAAK,IAAI,CAAK,EACZ,CACX,CAAC,CACL,EAAG,CAAC,CAAC,EAEL,OAAA,EAAO,EAAA,QAAA,MACI,CACH,MACA,MACA,OAAQ,EACR,QACA,MACA,SACA,KAAM,EAAI,IACd,GACA,CAAC,EAAK,EAAK,EAAQ,EAAO,EAAK,CAAM,CACzC,CACJ"}
1
+ {"version":3,"file":"use-set.cjs","names":["useState","useCallback","useMemo","react","useSet","set","setSet","initial","add","current","value","next","remove","clear","has","toggle"],"sources":["../../src/hooks/use-set.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseSetResult<T> {\n set: ReadonlySet<T>;\n add: (value: T) => void;\n delete: (value: T) => void;\n clear: () => void;\n has: (value: T) => boolean;\n toggle: (value: T) => void;\n size: number;\n}\n\n/**\n * Reactive `Set` wrapper. Mutating via `add` / `delete` / `clear` / `toggle`\n * triggers a re-render and yields a fresh `set` reference each time.\n *\n * @typeParam T - element type.\n * @param initial - initial values.\n * @returns `{ set, add, delete, clear, has, toggle, size }`.\n */\nexport function useSet<T>(initial?: Iterable<T>): UseSetResult<T> {\n const [set, setSet] = useState<Set<T>>(() => new Set(initial));\n\n const add = useCallback((value: T): void => {\n setSet((current) => {\n if (current.has(value)) return current;\n const next = new Set(current);\n next.add(value);\n return next;\n });\n }, []);\n\n const remove = useCallback((value: T): void => {\n setSet((current) => {\n if (!current.has(value)) return current;\n const next = new Set(current);\n next.delete(value);\n return next;\n });\n }, []);\n\n const clear = useCallback((): void => {\n setSet((current) => (current.size === 0 ? current : new Set<T>()));\n }, []);\n\n const has = useCallback((value: T): boolean => set.has(value), [set]);\n\n const toggle = useCallback((value: T): void => {\n setSet((current) => {\n const next = new Set(current);\n if (next.has(value)) next.delete(value);\n else next.add(value);\n return next;\n });\n }, []);\n\n return useMemo<UseSetResult<T>>(\n () => ({\n set,\n add,\n delete: remove,\n clear,\n has,\n toggle,\n size: set.size,\n }),\n [set, add, remove, clear, has, toggle],\n );\n}\n"],"mappings":"A,uBAoBA,SAAgBI,EAAU,EAAwC,CAC9D,GAAM,CAACC,EAAKC,IAAA,EAAUN,EAAAA,SAAAA,KAAuB,IAAI,IAAIO,CAAO,CAAC,EAEvDC,GAAA,EAAMP,EAAAA,YAAAA,CAAa,GAAmB,CACxCK,EAAQ,GAAY,CAChB,GAAIG,EAAQ,IAAIC,CAAK,EAAG,OAAOD,EAC/B,IAAME,EAAO,IAAI,IAAIF,CAAO,EAE5B,OADAE,EAAK,IAAID,CAAK,EACPC,CACX,CAAC,CACL,EAAG,CAAC,CAAC,EAECC,GAAA,EAASX,EAAAA,YAAAA,CAAa,GAAmB,CAC3CK,EAAQ,GAAY,CAChB,GAAI,CAACG,EAAQ,IAAIC,CAAK,EAAG,OAAOD,EAChC,IAAME,EAAO,IAAI,IAAIF,CAAO,EAE5B,OADAE,EAAK,OAAOD,CAAK,EACVC,CACX,CAAC,CACL,EAAG,CAAC,CAAC,EAECE,GAAA,EAAQZ,EAAAA,YAAAA,KAAwB,CAClCK,EAAQ,GAAaG,EAAQ,OAAS,EAAIA,EAAU,IAAI,GAAS,CACrE,EAAG,CAAC,CAAC,EAECK,GAAA,EAAMb,EAAAA,YAAAA,CAAa,GAAsBI,EAAI,IAAIK,CAAK,EAAG,CAACL,CAAG,CAAC,EAE9DU,GAAA,EAASd,EAAAA,YAAAA,CAAa,GAAmB,CAC3CK,EAAQ,GAAY,CAChB,IAAMK,EAAO,IAAI,IAAIF,CAAO,EAG5B,OAFIE,EAAK,IAAID,CAAK,EAAGC,EAAK,OAAOD,CAAK,EACjCC,EAAK,IAAID,CAAK,EACZC,CACX,CAAC,CACL,EAAG,CAAC,CAAC,EAEL,OAAA,EAAOT,EAAAA,QAAAA,MACI,CACH,MACA,MACA,OAAQU,EACR,QACA,MACA,SACA,KAAMP,EAAI,IACd,GACA,CAACA,EAAKG,EAAKI,EAAQC,EAAOC,EAAKC,CAAM,CACzC,CACJ,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-set.js","names":[],"sources":["../../src/hooks/use-set.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseSetResult<T> {\n set: ReadonlySet<T>;\n add: (value: T) => void;\n delete: (value: T) => void;\n clear: () => void;\n has: (value: T) => boolean;\n toggle: (value: T) => void;\n size: number;\n}\n\n/**\n * Reactive `Set` wrapper. Mutating via `add` / `delete` / `clear` / `toggle`\n * triggers a re-render and yields a fresh `set` reference each time.\n *\n * @typeParam T - element type.\n * @param initial - initial values.\n * @returns `{ set, add, delete, clear, has, toggle, size }`.\n */\nexport function useSet<T>(initial?: Iterable<T>): UseSetResult<T> {\n const [set, setSet] = useState<Set<T>>(() => new Set(initial));\n\n const add = useCallback((value: T): void => {\n setSet((current) => {\n if (current.has(value)) return current;\n const next = new Set(current);\n next.add(value);\n return next;\n });\n }, []);\n\n const remove = useCallback((value: T): void => {\n setSet((current) => {\n if (!current.has(value)) return current;\n const next = new Set(current);\n next.delete(value);\n return next;\n });\n }, []);\n\n const clear = useCallback((): void => {\n setSet((current) => (current.size === 0 ? current : new Set<T>()));\n }, []);\n\n const has = useCallback((value: T): boolean => set.has(value), [set]);\n\n const toggle = useCallback((value: T): void => {\n setSet((current) => {\n const next = new Set(current);\n if (next.has(value)) next.delete(value);\n else next.add(value);\n return next;\n });\n }, []);\n\n return useMemo<UseSetResult<T>>(\n () => ({\n set,\n add,\n delete: remove,\n clear,\n has,\n toggle,\n size: set.size,\n }),\n [set, add, remove, clear, has, toggle],\n );\n}\n"],"mappings":";;AAoBA,SAAgB,EAAU,GAAwC;CAC9D,IAAM,CAAC,GAAK,KAAU,QAAuB,IAAI,IAAI,CAAO,CAAC,GAEvD,IAAM,GAAa,MAAmB;EACxC,GAAQ,MAAY;GAChB,IAAI,EAAQ,IAAI,CAAK,GAAG,OAAO;GAC/B,IAAM,IAAO,IAAI,IAAI,CAAO;GAE5B,OADA,EAAK,IAAI,CAAK,GACP;EACX,CAAC;CACL,GAAG,CAAC,CAAC,GAEC,IAAS,GAAa,MAAmB;EAC3C,GAAQ,MAAY;GAChB,IAAI,CAAC,EAAQ,IAAI,CAAK,GAAG,OAAO;GAChC,IAAM,IAAO,IAAI,IAAI,CAAO;GAE5B,OADA,EAAK,OAAO,CAAK,GACV;EACX,CAAC;CACL,GAAG,CAAC,CAAC,GAEC,IAAQ,QAAwB;EAClC,GAAQ,MAAa,EAAQ,SAAS,IAAI,oBAAU,IAAI,IAAO,CAAE;CACrE,GAAG,CAAC,CAAC,GAEC,IAAM,GAAa,MAAsB,EAAI,IAAI,CAAK,GAAG,CAAC,CAAG,CAAC,GAE9D,IAAS,GAAa,MAAmB;EAC3C,GAAQ,MAAY;GAChB,IAAM,IAAO,IAAI,IAAI,CAAO;GAG5B,OAFI,EAAK,IAAI,CAAK,IAAG,EAAK,OAAO,CAAK,IACjC,EAAK,IAAI,CAAK,GACZ;EACX,CAAC;CACL,GAAG,CAAC,CAAC;CAEL,OAAO,SACI;EACH;EACA;EACA,QAAQ;EACR;EACA;EACA;EACA,MAAM,EAAI;CACd,IACA;EAAC;EAAK;EAAK;EAAQ;EAAO;EAAK;CAAM,CACzC;AACJ"}
1
+ {"version":3,"file":"use-set.js","names":["useSet","set","setSet","useState","initial","add","useCallback","current","value","next","remove","clear","has","toggle","useMemo"],"sources":["../../src/hooks/use-set.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseSetResult<T> {\n set: ReadonlySet<T>;\n add: (value: T) => void;\n delete: (value: T) => void;\n clear: () => void;\n has: (value: T) => boolean;\n toggle: (value: T) => void;\n size: number;\n}\n\n/**\n * Reactive `Set` wrapper. Mutating via `add` / `delete` / `clear` / `toggle`\n * triggers a re-render and yields a fresh `set` reference each time.\n *\n * @typeParam T - element type.\n * @param initial - initial values.\n * @returns `{ set, add, delete, clear, has, toggle, size }`.\n */\nexport function useSet<T>(initial?: Iterable<T>): UseSetResult<T> {\n const [set, setSet] = useState<Set<T>>(() => new Set(initial));\n\n const add = useCallback((value: T): void => {\n setSet((current) => {\n if (current.has(value)) return current;\n const next = new Set(current);\n next.add(value);\n return next;\n });\n }, []);\n\n const remove = useCallback((value: T): void => {\n setSet((current) => {\n if (!current.has(value)) return current;\n const next = new Set(current);\n next.delete(value);\n return next;\n });\n }, []);\n\n const clear = useCallback((): void => {\n setSet((current) => (current.size === 0 ? current : new Set<T>()));\n }, []);\n\n const has = useCallback((value: T): boolean => set.has(value), [set]);\n\n const toggle = useCallback((value: T): void => {\n setSet((current) => {\n const next = new Set(current);\n if (next.has(value)) next.delete(value);\n else next.add(value);\n return next;\n });\n }, []);\n\n return useMemo<UseSetResult<T>>(\n () => ({\n set,\n add,\n delete: remove,\n clear,\n has,\n toggle,\n size: set.size,\n }),\n [set, add, remove, clear, has, toggle],\n );\n}\n"],"mappings":";;AAoBA,SAAgBA,EAAU,GAAwC;CAC9D,IAAM,CAACC,GAAKC,KAAUC,QAAuB,IAAI,IAAIC,CAAO,CAAC,GAEvDC,IAAMC,GAAa,MAAmB;EACxC,GAAQ,MAAY;GAChB,IAAIC,EAAQ,IAAIC,CAAK,GAAG,OAAOD;GAC/B,IAAME,IAAO,IAAI,IAAIF,CAAO;GAE5B,OADAE,EAAK,IAAID,CAAK,GACPC;EACX,CAAC;CACL,GAAG,CAAC,CAAC,GAECC,IAASJ,GAAa,MAAmB;EAC3C,GAAQ,MAAY;GAChB,IAAI,CAACC,EAAQ,IAAIC,CAAK,GAAG,OAAOD;GAChC,IAAME,IAAO,IAAI,IAAIF,CAAO;GAE5B,OADAE,EAAK,OAAOD,CAAK,GACVC;EACX,CAAC;CACL,GAAG,CAAC,CAAC,GAECE,IAAQL,QAAwB;EAClC,GAAQ,MAAaC,EAAQ,SAAS,IAAIA,oBAAU,IAAI,IAAO,CAAE;CACrE,GAAG,CAAC,CAAC,GAECK,IAAMN,GAAa,MAAsBL,EAAI,IAAIO,CAAK,GAAG,CAACP,CAAG,CAAC,GAE9DY,IAASP,GAAa,MAAmB;EAC3C,GAAQ,MAAY;GAChB,IAAMG,IAAO,IAAI,IAAIF,CAAO;GAG5B,OAFIE,EAAK,IAAID,CAAK,IAAGC,EAAK,OAAOD,CAAK,IACjCC,EAAK,IAAID,CAAK,GACZC;EACX,CAAC;CACL,GAAG,CAAC,CAAC;CAEL,OAAOK,SACI;EACH;EACA;EACA,QAAQJ;EACR;EACA;EACA;EACA,MAAMT,EAAI;CACd,IACA;EAACA;EAAKI;EAAKK;EAAQC;EAAOC;EAAKC;CAAM,CACzC;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-sortable.cjs","names":[],"sources":["../../src/hooks/use-sortable.ts"],"sourcesContent":["/**\n * @tempest-limits file-lines, hook-lines — drag-and-drop with a keyboard path that\n * has to produce the same moves as the pointer path: pointer capture, auto-scroll\n * near the edges, the drop-index maths and the live-region announcements all read\n * one drag state. Two hooks would mean two copies of the index arithmetic, and the\n * two paths silently disagreeing is the bug this exists to prevent.\n */\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent } from \"react\";\n\n/** Where a dragged item would land if dropped now. */\nexport interface SortableDropTarget {\n /** Index the item started at, within its own group. */\n from: number;\n /** Index it would move to, within the destination group. */\n to: number;\n /**\n * Group the item started in — a Kanban column, for instance. `undefined` for a\n * plain single-list sortable.\n */\n fromGroup?: string;\n /** Destination group. Equal to `fromGroup` when the move stays in one group. */\n toGroup?: string;\n}\n\n/** Props to spread on each sortable item. */\nexport interface SortableItemProps {\n /** Marks the item for hit-testing. */\n \"data-sortable-index\": number;\n /** Group the item belongs to, when the sortable spans several lists. */\n \"data-sortable-group\"?: string;\n /** `true` while this item is the one being moved. */\n \"data-sortable-active\"?: boolean;\n /** Grab handle wiring: starts a pointer drag. */\n onPointerDown: (event: ReactPointerEvent<HTMLElement>) => void;\n /** Keyboard reordering — see {@link UseSortableResult}. */\n onKeyDown: (event: ReactKeyboardEvent<HTMLElement>) => void;\n /** Puts the item in the tab order so the keyboard path is reachable. */\n tabIndex: number;\n role: \"option\";\n \"aria-roledescription\": string;\n \"aria-selected\": boolean;\n}\n\nexport interface UseSortableOptions {\n /**\n * How many items are in the sortable. Changing it cancels an in-flight drag.\n *\n * With groups, pass the **total** across groups: the number only has to change\n * whenever the indices the drag was based on stop being valid.\n */\n itemCount: number;\n /**\n * Called once, when a move is committed — on pointer release or on a keyboard\n * move. Never called mid-drag, so a controlled list re-renders once instead of\n * on every pointer frame.\n */\n onReorder: (target: SortableDropTarget) => void;\n /** Blocks all interaction. */\n disabled?: boolean;\n /**\n * Description announced for each item, so a screen reader user learns the\n * keyboard contract. Default is in English — override it to localize.\n */\n roleDescription?: string;\n}\n\nexport interface UseSortableResult {\n /** Index being dragged, or `null` when idle. */\n activeIndex: number | null;\n /** Index the item would land on, or `null` when idle. */\n overIndex: number | null;\n /** Group the dragged item came from, when using groups. */\n activeGroup?: string;\n /** Group the item is currently over, when using groups. */\n overGroup?: string;\n /**\n * Spread on each item. Pass `group` when the sortable spans several lists (a\n * Kanban column id), so a drop can land in a different group.\n */\n getItemProps: (index: number, group?: string) => SortableItemProps;\n /**\n * Spread on an **empty** group's drop area, so an item can be moved into a\n * column that has no cards yet — hit-testing works off item rects, and a group\n * with no items has none.\n */\n getEmptyGroupProps: (group: string) => {\n \"data-sortable-group\": string;\n \"data-sortable-empty\": true;\n };\n /** Spread on the list container (`role=\"listbox\"` + a label of your own). */\n getListProps: () => { role: \"listbox\"; \"aria-orientation\": \"vertical\" };\n /** Abort the current drag without reordering. */\n cancel: () => void;\n /**\n * Callback ref for the element that contains the sortable items — hit-testing\n * searches inside it.\n *\n * Named `setContainer` rather than `ref` because it is a **callback**, not a ref\n * object: `ref={sortable.setContainer}`. The old name also read as a readable\n * ref to the React Compiler rules, which flagged every consumer.\n */\n setContainer: (node: HTMLElement | null) => void;\n}\n\n/** Reorder helper: move `from` to `to`, returning a new array. */\nexport function moveItem<T>(items: T[], from: number, to: number): T[] {\n if (from === to || from < 0 || to < 0 || from >= items.length || to >= items.length) {\n return items;\n }\n const next = items.slice();\n const [moved] = next.splice(from, 1);\n next.splice(to, 0, moved);\n return next;\n}\n\n/** A hit-test result: the item (or empty group) under the pointer. */\ninterface HitTarget {\n index: number;\n group?: string;\n}\n\n/**\n * Find the sortable slot under a viewport point.\n *\n * Items are tried first; an empty group's drop area is only considered when no item\n * matched, since an empty column is a fallback target rather than a competing one.\n */\nfunction targetAtPoint(container: HTMLElement | null, x: number, y: number): HitTarget | null {\n if (!container) return null;\n const inside = (element: HTMLElement): boolean => {\n const rect = element.getBoundingClientRect();\n return y >= rect.top && y <= rect.bottom && x >= rect.left && x <= rect.right;\n };\n\n for (const item of Array.from(\n container.querySelectorAll<HTMLElement>(\"[data-sortable-index]\"),\n )) {\n if (!inside(item)) continue;\n const index = Number(item.dataset.sortableIndex);\n if (Number.isNaN(index)) return null;\n return { index, group: item.dataset.sortableGroup };\n }\n\n for (const empty of Array.from(\n container.querySelectorAll<HTMLElement>(\"[data-sortable-empty]\"),\n )) {\n if (inside(empty)) return { index: 0, group: empty.dataset.sortableGroup };\n }\n\n return null;\n}\n\n/**\n * Drag-to-reorder for a list, with a **keyboard path of equal standing**.\n *\n * Pointer events cover mouse, touch and stylus through one code path, and pointer\n * capture keeps the drag alive when the pointer leaves the item. `Space` picks an\n * item up, the arrows move it, `Space`/`Enter` drops it and `Escape` cancels —\n * because a reorder that only works by dragging excludes keyboard users\n * completely, which is where most drag-and-drop implementations fail.\n *\n * The hook owns interaction only: it never mutates your data. `onReorder` fires\n * once per committed move and you apply it, typically with {@link moveItem}. That\n * keeps the list a controlled value and avoids a re-render per pointer frame.\n *\n * Hit-testing reads the live DOM rects of `[data-sortable-index]` children rather\n * than assuming a fixed row height, so it works with rows of different sizes.\n *\n * A change in `itemCount` cancels an in-flight drag: the list no longer has the\n * indices the drag was based on, and committing anyway would move the wrong row.\n *\n * Note for consumers: the indices and groups are exposed as **state** (so rendering\n * from them is reactive) and mirrored into refs only so the window-level `pointerup`\n * listener can read both synchronously. Because the handlers returned by\n * `getItemProps` close over those mirrors, the React Compiler `refs` rule reports\n * the *call site* — a component spreading these props may need a file-level\n * exemption, as `Kanban` documents.\n *\n * @example\n * ```tsx\n * const [items, setItems] = useState([\"Alfa\", \"Bravo\", \"Charlie\"]);\n * const sortable = useSortable({\n * itemCount: items.length,\n * onReorder: ({ from, to }) => setItems((current) => moveItem(current, from, to)),\n * });\n *\n * <ul {...sortable.getListProps()} aria-label=\"Prioridade\" ref={sortable.setContainer}>\n * {items.map((item, index) => (\n * <li key={item} {...sortable.getItemProps(index)}>\n * {item}\n * </li>\n * ))}\n * </ul>\n * ```\n */\nexport function useSortable(options: UseSortableOptions): UseSortableResult {\n const { itemCount, onReorder, disabled = false, roleDescription = \"Sortable item\" } = options;\n\n const [activeIndex, setActiveIndexState] = useState<number | null>(null);\n const [overIndex, setOverIndexState] = useState<number | null>(null);\n const containerRef = useRef<HTMLElement | null>(null);\n const onReorderRef = useRef(onReorder);\n\n /**\n * Mirrors of the two indices.\n *\n * The window-level `pointerup` listener has to read both values *synchronously*\n * to know what to commit, and a state setter only exposes one of them. Mirroring\n * into refs keeps the commit readable instead of nesting setters to smuggle the\n * other value out.\n */\n const activeRef = useRef<number | null>(null);\n const overRef = useRef<number | null>(null);\n const [activeGroup, setActiveGroupState] = useState<string | undefined>(undefined);\n const [overGroup, setOverGroupState] = useState<string | undefined>(undefined);\n const activeGroupRef = useRef<string | undefined>(undefined);\n const overGroupRef = useRef<string | undefined>(undefined);\n\n const setActiveGroup = useCallback((value: string | undefined): void => {\n activeGroupRef.current = value;\n setActiveGroupState(value);\n }, []);\n\n const setOverGroup = useCallback((value: string | undefined): void => {\n overGroupRef.current = value;\n setOverGroupState(value);\n }, []);\n\n const setActiveIndex = useCallback((value: number | null): void => {\n activeRef.current = value;\n setActiveIndexState(value);\n }, []);\n\n const setOverIndex = useCallback((value: number | null): void => {\n overRef.current = value;\n setOverIndexState(value);\n }, []);\n\n useEffect(() => {\n onReorderRef.current = onReorder;\n }, [onReorder]);\n\n const reset = useCallback((): void => {\n setActiveGroup(undefined);\n setOverGroup(undefined);\n setActiveIndex(null);\n setOverIndex(null);\n }, [setActiveGroup, setActiveIndex, setOverGroup, setOverIndex]);\n\n useEffect(() => {\n reset();\n }, [itemCount, reset]);\n\n /**\n * Report a committed move and go back to idle.\n *\n * The groups are **arguments**, not reads of the mirror refs: `commit` ends up\n * inside the props returned by `getItemProps`, which render calls, and a ref read\n * anywhere in that closure chain is a render-time ref access. The pointer\n * listener reads the mirrors itself — it is an event handler, where reading is\n * fine — and hands the values over.\n *\n * A move that changes group counts even at the same index (the card lands in\n * another column), so only a same-group, same-index drop is \"nothing happened\".\n */\n const commit = useCallback(\n (from: number, to: number, fromGroup?: string, toGroup?: string): void => {\n if (from !== to || fromGroup !== toGroup) {\n onReorderRef.current({ from, to, fromGroup, toGroup });\n }\n reset();\n },\n [reset],\n );\n\n const setContainer = useCallback((node: HTMLElement | null): void => {\n containerRef.current = node;\n }, []);\n\n const handlePointerDown = useCallback(\n (index: number, group: string | undefined, event: ReactPointerEvent<HTMLElement>): void => {\n if (disabled) return;\n event.currentTarget.setPointerCapture?.(event.pointerId);\n setActiveGroup(group);\n setOverGroup(group);\n setActiveIndex(index);\n setOverIndex(index);\n },\n [disabled, setActiveGroup, setActiveIndex, setOverGroup, setOverIndex],\n );\n\n useEffect(() => {\n if (activeIndex === null) return;\n\n function onPointerMove(event: PointerEvent): void {\n const target = targetAtPoint(containerRef.current, event.clientX, event.clientY);\n if (!target) return;\n setOverGroup(target.group);\n setOverIndex(target.index);\n }\n\n function onPointerUp(): void {\n const from = activeRef.current;\n const to = overRef.current;\n if (from !== null && to !== null) {\n commit(from, to, activeGroupRef.current, overGroupRef.current);\n } else {\n reset();\n }\n }\n\n /**\n * Cancel the drag on `Escape`.\n *\n * Listened in the capture phase and marked consumed: the overlays' shared\n * `Escape` listener sits on `window` in the bubble phase, so a list sorted\n * inside a `Modal` would otherwise close the modal mid-drag instead of\n * just dropping the item back.\n */\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key !== \"Escape\") return;\n event.preventDefault();\n reset();\n }\n\n window.addEventListener(\"pointermove\", onPointerMove);\n window.addEventListener(\"pointerup\", onPointerUp);\n window.addEventListener(\"pointercancel\", reset);\n window.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n window.removeEventListener(\"pointermove\", onPointerMove);\n window.removeEventListener(\"pointerup\", onPointerUp);\n window.removeEventListener(\"pointercancel\", reset);\n window.removeEventListener(\"keydown\", onKeyDown, true);\n };\n }, [activeIndex, commit, reset, setOverGroup, setOverIndex]);\n\n const handleKeyDown = useCallback(\n (\n index: number,\n group: string | undefined,\n event: ReactKeyboardEvent<HTMLElement>,\n ): void => {\n if (disabled) return;\n const picked = activeIndex !== null;\n\n switch (event.key) {\n case \" \":\n case \"Enter\":\n event.preventDefault();\n if (!picked) {\n setActiveGroup(group);\n setOverGroup(group);\n setActiveIndex(index);\n setOverIndex(index);\n } else if (overIndex !== null) {\n commit(activeIndex, overIndex, activeGroup, overGroup);\n }\n break;\n case \"ArrowDown\":\n case \"ArrowRight\": {\n if (!picked) return;\n event.preventDefault();\n if (overRef.current !== null) {\n setOverIndex(Math.min(overRef.current + 1, itemCount - 1));\n }\n break;\n }\n case \"ArrowUp\":\n case \"ArrowLeft\": {\n if (!picked) return;\n event.preventDefault();\n if (overRef.current !== null) {\n setOverIndex(Math.max(overRef.current - 1, 0));\n }\n break;\n }\n case \"Escape\":\n if (!picked) return;\n event.preventDefault();\n reset();\n break;\n default:\n break;\n }\n },\n [\n activeGroup,\n activeIndex,\n commit,\n overGroup,\n disabled,\n itemCount,\n overIndex,\n reset,\n setActiveGroup,\n setActiveIndex,\n setOverGroup,\n setOverIndex,\n ],\n );\n\n const getItemProps = useCallback(\n (index: number, group?: string): SortableItemProps => ({\n \"data-sortable-index\": index,\n \"data-sortable-group\": group,\n \"data-sortable-active\": (activeIndex === index && activeGroup === group) || undefined,\n onPointerDown: (event) => handlePointerDown(index, group, event),\n onKeyDown: (event) => handleKeyDown(index, group, event),\n tabIndex: disabled ? -1 : 0,\n role: \"option\",\n \"aria-roledescription\": roleDescription,\n \"aria-selected\": activeIndex === index && activeGroup === group,\n }),\n [activeGroup, activeIndex, disabled, handleKeyDown, handlePointerDown, roleDescription],\n );\n\n const getEmptyGroupProps = useCallback(\n (group: string) => ({ \"data-sortable-group\": group, \"data-sortable-empty\": true as const }),\n [],\n );\n\n const getListProps = useCallback(\n () => ({ role: \"listbox\" as const, \"aria-orientation\": \"vertical\" as const }),\n [],\n );\n\n return {\n activeIndex,\n overIndex,\n activeGroup,\n overGroup,\n getItemProps,\n getEmptyGroupProps,\n getListProps,\n cancel: reset,\n setContainer,\n };\n}\n"],"mappings":"uBA0GA,SAAgB,EAAY,EAAY,EAAc,EAAiB,CACnE,GAAI,IAAS,GAAM,EAAO,GAAK,EAAK,GAAK,GAAQ,EAAM,QAAU,GAAM,EAAM,OACzE,OAAO,EAEX,IAAM,EAAO,EAAM,MAAM,EACnB,CAAC,GAAS,EAAK,OAAO,EAAM,CAAC,EAEnC,OADA,EAAK,OAAO,EAAI,EAAG,CAAK,EACjB,CACX,CAcA,SAAS,EAAc,EAA+B,EAAW,EAA6B,CAC1F,GAAI,CAAC,EAAW,OAAO,KACvB,IAAM,EAAU,GAAkC,CAC9C,IAAM,EAAO,EAAQ,sBAAsB,EAC3C,OAAO,GAAK,EAAK,KAAO,GAAK,EAAK,QAAU,GAAK,EAAK,MAAQ,GAAK,EAAK,KAC5E,EAEA,IAAK,IAAM,KAAQ,MAAM,KACrB,EAAU,iBAA8B,uBAAuB,CACnE,EAAG,CACC,GAAI,CAAC,EAAO,CAAI,EAAG,SACnB,IAAM,EAAQ,OAAO,EAAK,QAAQ,aAAa,EAE/C,OADI,OAAO,MAAM,CAAK,EAAU,KACzB,CAAE,QAAO,MAAO,EAAK,QAAQ,aAAc,CACtD,CAEA,IAAK,IAAM,KAAS,MAAM,KACtB,EAAU,iBAA8B,uBAAuB,CACnE,EACI,GAAI,EAAO,CAAK,EAAG,MAAO,CAAE,MAAO,EAAG,MAAO,EAAM,QAAQ,aAAc,EAG7E,OAAO,IACX,CA6CA,SAAgB,EAAY,EAAgD,CACxE,GAAM,CAAE,YAAW,YAAW,WAAW,GAAO,kBAAkB,iBAAoB,EAEhF,CAAC,EAAa,IAAA,EAAuB,EAAA,SAAA,CAAwB,IAAI,EACjE,CAAC,EAAW,IAAA,EAAqB,EAAA,SAAA,CAAwB,IAAI,EAC7D,GAAA,EAAe,EAAA,OAAA,CAA2B,IAAI,EAC9C,GAAA,EAAe,EAAA,OAAA,CAAO,CAAS,EAU/B,GAAA,EAAY,EAAA,OAAA,CAAsB,IAAI,EACtC,GAAA,EAAU,EAAA,OAAA,CAAsB,IAAI,EACpC,CAAC,EAAa,IAAA,EAAuB,EAAA,SAAA,CAA6B,IAAA,EAAS,EAC3E,CAAC,EAAW,IAAA,EAAqB,EAAA,SAAA,CAA6B,IAAA,EAAS,EACvE,GAAA,EAAiB,EAAA,OAAA,CAA2B,IAAA,EAAS,EACrD,GAAA,EAAe,EAAA,OAAA,CAA2B,IAAA,EAAS,EAEnD,GAAA,EAAiB,EAAA,YAAA,CAAa,GAAoC,CACpE,EAAe,QAAU,EACzB,EAAoB,CAAK,CAC7B,EAAG,CAAC,CAAC,EAEC,GAAA,EAAe,EAAA,YAAA,CAAa,GAAoC,CAClE,EAAa,QAAU,EACvB,EAAkB,CAAK,CAC3B,EAAG,CAAC,CAAC,EAEC,GAAA,EAAiB,EAAA,YAAA,CAAa,GAA+B,CAC/D,EAAU,QAAU,EACpB,EAAoB,CAAK,CAC7B,EAAG,CAAC,CAAC,EAEC,GAAA,EAAe,EAAA,YAAA,CAAa,GAA+B,CAC7D,EAAQ,QAAU,EAClB,EAAkB,CAAK,CAC3B,EAAG,CAAC,CAAC,GAEL,EAAA,EAAA,UAAA,KAAgB,CACZ,EAAa,QAAU,CAC3B,EAAG,CAAC,CAAS,CAAC,EAEd,IAAM,GAAA,EAAQ,EAAA,YAAA,KAAwB,CAClC,EAAe,IAAA,EAAS,EACxB,EAAa,IAAA,EAAS,EACtB,EAAe,IAAI,EACnB,EAAa,IAAI,CACrB,EAAG,CAAC,EAAgB,EAAgB,EAAc,CAAY,CAAC,GAE/D,EAAA,EAAA,UAAA,KAAgB,CACZ,EAAM,CACV,EAAG,CAAC,EAAW,CAAK,CAAC,EAcrB,IAAM,GAAA,EAAS,EAAA,YAAA,EACV,EAAc,EAAY,EAAoB,IAA2B,EAClE,IAAS,GAAM,IAAc,IAC7B,EAAa,QAAQ,CAAE,OAAM,KAAI,YAAW,SAAQ,CAAC,EAEzD,EAAM,CACV,EACA,CAAC,CAAK,CACV,EAEM,GAAA,EAAe,EAAA,YAAA,CAAa,GAAmC,CACjE,EAAa,QAAU,CAC3B,EAAG,CAAC,CAAC,EAEC,GAAA,EAAoB,EAAA,YAAA,EACrB,EAAe,EAA2B,IAAgD,CACnF,IACJ,EAAM,cAAc,oBAAoB,EAAM,SAAS,EACvD,EAAe,CAAK,EACpB,EAAa,CAAK,EAClB,EAAe,CAAK,EACpB,EAAa,CAAK,EACtB,EACA,CAAC,EAAU,EAAgB,EAAgB,EAAc,CAAY,CACzE,GAEA,EAAA,EAAA,UAAA,KAAgB,CACZ,GAAI,IAAgB,KAAM,OAE1B,SAAS,EAAc,EAA2B,CAC9C,IAAM,EAAS,EAAc,EAAa,QAAS,EAAM,QAAS,EAAM,OAAO,EAC1E,IACL,EAAa,EAAO,KAAK,EACzB,EAAa,EAAO,KAAK,EAC7B,CAEA,SAAS,GAAoB,CACzB,IAAM,EAAO,EAAU,QACjB,EAAK,EAAQ,QACf,IAAS,MAAQ,IAAO,KACxB,EAAO,EAAM,EAAI,EAAe,QAAS,EAAa,OAAO,EAE7D,EAAM,CAEd,CAUA,SAAS,EAAU,EAA4B,CACvC,EAAM,MAAQ,WAClB,EAAM,eAAe,EACrB,EAAM,EACV,CAMA,OAJA,OAAO,iBAAiB,cAAe,CAAa,EACpD,OAAO,iBAAiB,YAAa,CAAW,EAChD,OAAO,iBAAiB,gBAAiB,CAAK,EAC9C,OAAO,iBAAiB,UAAW,EAAW,EAAI,MACrC,CACT,OAAO,oBAAoB,cAAe,CAAa,EACvD,OAAO,oBAAoB,YAAa,CAAW,EACnD,OAAO,oBAAoB,gBAAiB,CAAK,EACjD,OAAO,oBAAoB,UAAW,EAAW,EAAI,CACzD,CACJ,EAAG,CAAC,EAAa,EAAQ,EAAO,EAAc,CAAY,CAAC,EAE3D,IAAM,GAAA,EAAgB,EAAA,YAAA,EAEd,EACA,EACA,IACO,CACP,GAAI,EAAU,OACd,IAAM,EAAS,IAAgB,KAE/B,OAAQ,EAAM,IAAd,CACI,IAAK,IACL,IAAK,QACD,EAAM,eAAe,EAChB,EAKM,IAAc,MACrB,EAAO,EAAa,EAAW,EAAa,CAAS,GALrD,EAAe,CAAK,EACpB,EAAa,CAAK,EAClB,EAAe,CAAK,EACpB,EAAa,CAAK,GAItB,MACJ,IAAK,YACL,IAAK,aACD,GAAI,CAAC,EAAQ,OACb,EAAM,eAAe,EACjB,EAAQ,UAAY,MACpB,EAAa,KAAK,IAAI,EAAQ,QAAU,EAAG,EAAY,CAAC,CAAC,EAE7D,MAEJ,IAAK,UACL,IAAK,YACD,GAAI,CAAC,EAAQ,OACb,EAAM,eAAe,EACjB,EAAQ,UAAY,MACpB,EAAa,KAAK,IAAI,EAAQ,QAAU,EAAG,CAAC,CAAC,EAEjD,MAEJ,IAAK,SACD,GAAI,CAAC,EAAQ,OACb,EAAM,eAAe,EACrB,EAAM,CAId,CACJ,EACA,CACI,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACJ,CACJ,EA2BA,MAAO,CACH,cACA,YACA,cACA,YACA,cAAA,EA9BiB,EAAA,YAAA,EAChB,EAAe,KAAuC,CACnD,sBAAuB,EACvB,sBAAuB,EACvB,uBAAyB,IAAgB,GAAS,IAAgB,GAAU,IAAA,GAC5E,cAAgB,GAAU,EAAkB,EAAO,EAAO,CAAK,EAC/D,UAAY,GAAU,EAAc,EAAO,EAAO,CAAK,EACvD,SAAU,EAAW,GAAK,EAC1B,KAAM,SACN,uBAAwB,EACxB,gBAAiB,IAAgB,GAAS,IAAgB,CAC9D,GACA,CAAC,EAAa,EAAa,EAAU,EAAe,EAAmB,CAAe,CAkBtF,EACA,oBAAA,EAhBuB,EAAA,YAAA,CACtB,IAAmB,CAAE,sBAAuB,EAAO,sBAAuB,EAAc,GACzF,CAAC,CAcD,EACA,cAAA,EAZiB,EAAA,YAAA,MACV,CAAE,KAAM,UAAoB,mBAAoB,UAAoB,GAC3E,CAAC,CAUD,EACA,OAAQ,EACR,cACJ,CACJ"}
1
+ {"version":3,"file":"use-sortable.cjs","names":["useState","useRef","useCallback","react","moveItem","from","to","items","next","moved","targetAtPoint","container","inside","rect","element","y","x","item","index","empty","useSortable","options","activeIndex","setActiveIndexState","overIndex","setOverIndexState","containerRef","onReorderRef","onReorder","activeRef","overRef","activeGroup","setActiveGroupState","overGroup","setOverGroupState","activeGroupRef","overGroupRef","setActiveGroup","value","setOverGroup","setActiveIndex","setOverIndex","reset","itemCount","commit","fromGroup","toGroup","setContainer","node","handlePointerDown","disabled","event","group","onPointerMove","target","onPointerUp","onKeyDown","handleKeyDown","picked","roleDescription"],"sources":["../../src/hooks/use-sortable.ts"],"sourcesContent":["/**\n * @tempest-limits file-lines, hook-lines — drag-and-drop with a keyboard path that\n * has to produce the same moves as the pointer path: pointer capture, auto-scroll\n * near the edges, the drop-index maths and the live-region announcements all read\n * one drag state. Two hooks would mean two copies of the index arithmetic, and the\n * two paths silently disagreeing is the bug this exists to prevent.\n */\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent } from \"react\";\n\n/** Where a dragged item would land if dropped now. */\nexport interface SortableDropTarget {\n /** Index the item started at, within its own group. */\n from: number;\n /** Index it would move to, within the destination group. */\n to: number;\n /**\n * Group the item started in — a Kanban column, for instance. `undefined` for a\n * plain single-list sortable.\n */\n fromGroup?: string;\n /** Destination group. Equal to `fromGroup` when the move stays in one group. */\n toGroup?: string;\n}\n\n/** Props to spread on each sortable item. */\nexport interface SortableItemProps {\n /** Marks the item for hit-testing. */\n \"data-sortable-index\": number;\n /** Group the item belongs to, when the sortable spans several lists. */\n \"data-sortable-group\"?: string;\n /** `true` while this item is the one being moved. */\n \"data-sortable-active\"?: boolean;\n /** Grab handle wiring: starts a pointer drag. */\n onPointerDown: (event: ReactPointerEvent<HTMLElement>) => void;\n /** Keyboard reordering — see {@link UseSortableResult}. */\n onKeyDown: (event: ReactKeyboardEvent<HTMLElement>) => void;\n /** Puts the item in the tab order so the keyboard path is reachable. */\n tabIndex: number;\n role: \"option\";\n \"aria-roledescription\": string;\n \"aria-selected\": boolean;\n}\n\nexport interface UseSortableOptions {\n /**\n * How many items are in the sortable. Changing it cancels an in-flight drag.\n *\n * With groups, pass the **total** across groups: the number only has to change\n * whenever the indices the drag was based on stop being valid.\n */\n itemCount: number;\n /**\n * Called once, when a move is committed — on pointer release or on a keyboard\n * move. Never called mid-drag, so a controlled list re-renders once instead of\n * on every pointer frame.\n */\n onReorder: (target: SortableDropTarget) => void;\n /** Blocks all interaction. */\n disabled?: boolean;\n /**\n * Description announced for each item, so a screen reader user learns the\n * keyboard contract. Default is in English — override it to localize.\n */\n roleDescription?: string;\n}\n\nexport interface UseSortableResult {\n /** Index being dragged, or `null` when idle. */\n activeIndex: number | null;\n /** Index the item would land on, or `null` when idle. */\n overIndex: number | null;\n /** Group the dragged item came from, when using groups. */\n activeGroup?: string;\n /** Group the item is currently over, when using groups. */\n overGroup?: string;\n /**\n * Spread on each item. Pass `group` when the sortable spans several lists (a\n * Kanban column id), so a drop can land in a different group.\n */\n getItemProps: (index: number, group?: string) => SortableItemProps;\n /**\n * Spread on an **empty** group's drop area, so an item can be moved into a\n * column that has no cards yet — hit-testing works off item rects, and a group\n * with no items has none.\n */\n getEmptyGroupProps: (group: string) => {\n \"data-sortable-group\": string;\n \"data-sortable-empty\": true;\n };\n /** Spread on the list container (`role=\"listbox\"` + a label of your own). */\n getListProps: () => { role: \"listbox\"; \"aria-orientation\": \"vertical\" };\n /** Abort the current drag without reordering. */\n cancel: () => void;\n /**\n * Callback ref for the element that contains the sortable items — hit-testing\n * searches inside it.\n *\n * Named `setContainer` rather than `ref` because it is a **callback**, not a ref\n * object: `ref={sortable.setContainer}`. The old name also read as a readable\n * ref to the React Compiler rules, which flagged every consumer.\n */\n setContainer: (node: HTMLElement | null) => void;\n}\n\n/** Reorder helper: move `from` to `to`, returning a new array. */\nexport function moveItem<T>(items: T[], from: number, to: number): T[] {\n if (from === to || from < 0 || to < 0 || from >= items.length || to >= items.length) {\n return items;\n }\n const next = items.slice();\n const [moved] = next.splice(from, 1);\n next.splice(to, 0, moved);\n return next;\n}\n\n/** A hit-test result: the item (or empty group) under the pointer. */\ninterface HitTarget {\n index: number;\n group?: string;\n}\n\n/**\n * Find the sortable slot under a viewport point.\n *\n * Items are tried first; an empty group's drop area is only considered when no item\n * matched, since an empty column is a fallback target rather than a competing one.\n */\nfunction targetAtPoint(container: HTMLElement | null, x: number, y: number): HitTarget | null {\n if (!container) return null;\n const inside = (element: HTMLElement): boolean => {\n const rect = element.getBoundingClientRect();\n return y >= rect.top && y <= rect.bottom && x >= rect.left && x <= rect.right;\n };\n\n for (const item of Array.from(\n container.querySelectorAll<HTMLElement>(\"[data-sortable-index]\"),\n )) {\n if (!inside(item)) continue;\n const index = Number(item.dataset.sortableIndex);\n if (Number.isNaN(index)) return null;\n return { index, group: item.dataset.sortableGroup };\n }\n\n for (const empty of Array.from(\n container.querySelectorAll<HTMLElement>(\"[data-sortable-empty]\"),\n )) {\n if (inside(empty)) return { index: 0, group: empty.dataset.sortableGroup };\n }\n\n return null;\n}\n\n/**\n * Drag-to-reorder for a list, with a **keyboard path of equal standing**.\n *\n * Pointer events cover mouse, touch and stylus through one code path, and pointer\n * capture keeps the drag alive when the pointer leaves the item. `Space` picks an\n * item up, the arrows move it, `Space`/`Enter` drops it and `Escape` cancels —\n * because a reorder that only works by dragging excludes keyboard users\n * completely, which is where most drag-and-drop implementations fail.\n *\n * The hook owns interaction only: it never mutates your data. `onReorder` fires\n * once per committed move and you apply it, typically with {@link moveItem}. That\n * keeps the list a controlled value and avoids a re-render per pointer frame.\n *\n * Hit-testing reads the live DOM rects of `[data-sortable-index]` children rather\n * than assuming a fixed row height, so it works with rows of different sizes.\n *\n * A change in `itemCount` cancels an in-flight drag: the list no longer has the\n * indices the drag was based on, and committing anyway would move the wrong row.\n *\n * Note for consumers: the indices and groups are exposed as **state** (so rendering\n * from them is reactive) and mirrored into refs only so the window-level `pointerup`\n * listener can read both synchronously. Because the handlers returned by\n * `getItemProps` close over those mirrors, the React Compiler `refs` rule reports\n * the *call site* — a component spreading these props may need a file-level\n * exemption, as `Kanban` documents.\n *\n * @example\n * ```tsx\n * const [items, setItems] = useState([\"Alfa\", \"Bravo\", \"Charlie\"]);\n * const sortable = useSortable({\n * itemCount: items.length,\n * onReorder: ({ from, to }) => setItems((current) => moveItem(current, from, to)),\n * });\n *\n * <ul {...sortable.getListProps()} aria-label=\"Prioridade\" ref={sortable.setContainer}>\n * {items.map((item, index) => (\n * <li key={item} {...sortable.getItemProps(index)}>\n * {item}\n * </li>\n * ))}\n * </ul>\n * ```\n */\nexport function useSortable(options: UseSortableOptions): UseSortableResult {\n const { itemCount, onReorder, disabled = false, roleDescription = \"Sortable item\" } = options;\n\n const [activeIndex, setActiveIndexState] = useState<number | null>(null);\n const [overIndex, setOverIndexState] = useState<number | null>(null);\n const containerRef = useRef<HTMLElement | null>(null);\n const onReorderRef = useRef(onReorder);\n\n /**\n * Mirrors of the two indices.\n *\n * The window-level `pointerup` listener has to read both values *synchronously*\n * to know what to commit, and a state setter only exposes one of them. Mirroring\n * into refs keeps the commit readable instead of nesting setters to smuggle the\n * other value out.\n */\n const activeRef = useRef<number | null>(null);\n const overRef = useRef<number | null>(null);\n const [activeGroup, setActiveGroupState] = useState<string | undefined>(undefined);\n const [overGroup, setOverGroupState] = useState<string | undefined>(undefined);\n const activeGroupRef = useRef<string | undefined>(undefined);\n const overGroupRef = useRef<string | undefined>(undefined);\n\n const setActiveGroup = useCallback((value: string | undefined): void => {\n activeGroupRef.current = value;\n setActiveGroupState(value);\n }, []);\n\n const setOverGroup = useCallback((value: string | undefined): void => {\n overGroupRef.current = value;\n setOverGroupState(value);\n }, []);\n\n const setActiveIndex = useCallback((value: number | null): void => {\n activeRef.current = value;\n setActiveIndexState(value);\n }, []);\n\n const setOverIndex = useCallback((value: number | null): void => {\n overRef.current = value;\n setOverIndexState(value);\n }, []);\n\n useEffect(() => {\n onReorderRef.current = onReorder;\n }, [onReorder]);\n\n const reset = useCallback((): void => {\n setActiveGroup(undefined);\n setOverGroup(undefined);\n setActiveIndex(null);\n setOverIndex(null);\n }, [setActiveGroup, setActiveIndex, setOverGroup, setOverIndex]);\n\n useEffect(() => {\n reset();\n }, [itemCount, reset]);\n\n /**\n * Report a committed move and go back to idle.\n *\n * The groups are **arguments**, not reads of the mirror refs: `commit` ends up\n * inside the props returned by `getItemProps`, which render calls, and a ref read\n * anywhere in that closure chain is a render-time ref access. The pointer\n * listener reads the mirrors itself — it is an event handler, where reading is\n * fine — and hands the values over.\n *\n * A move that changes group counts even at the same index (the card lands in\n * another column), so only a same-group, same-index drop is \"nothing happened\".\n */\n const commit = useCallback(\n (from: number, to: number, fromGroup?: string, toGroup?: string): void => {\n if (from !== to || fromGroup !== toGroup) {\n onReorderRef.current({ from, to, fromGroup, toGroup });\n }\n reset();\n },\n [reset],\n );\n\n const setContainer = useCallback((node: HTMLElement | null): void => {\n containerRef.current = node;\n }, []);\n\n const handlePointerDown = useCallback(\n (index: number, group: string | undefined, event: ReactPointerEvent<HTMLElement>): void => {\n if (disabled) return;\n event.currentTarget.setPointerCapture?.(event.pointerId);\n setActiveGroup(group);\n setOverGroup(group);\n setActiveIndex(index);\n setOverIndex(index);\n },\n [disabled, setActiveGroup, setActiveIndex, setOverGroup, setOverIndex],\n );\n\n useEffect(() => {\n if (activeIndex === null) return;\n\n function onPointerMove(event: PointerEvent): void {\n const target = targetAtPoint(containerRef.current, event.clientX, event.clientY);\n if (!target) return;\n setOverGroup(target.group);\n setOverIndex(target.index);\n }\n\n function onPointerUp(): void {\n const from = activeRef.current;\n const to = overRef.current;\n if (from !== null && to !== null) {\n commit(from, to, activeGroupRef.current, overGroupRef.current);\n } else {\n reset();\n }\n }\n\n /**\n * Cancel the drag on `Escape`.\n *\n * Listened in the capture phase and marked consumed: the overlays' shared\n * `Escape` listener sits on `window` in the bubble phase, so a list sorted\n * inside a `Modal` would otherwise close the modal mid-drag instead of\n * just dropping the item back.\n */\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key !== \"Escape\") return;\n event.preventDefault();\n reset();\n }\n\n window.addEventListener(\"pointermove\", onPointerMove);\n window.addEventListener(\"pointerup\", onPointerUp);\n window.addEventListener(\"pointercancel\", reset);\n window.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n window.removeEventListener(\"pointermove\", onPointerMove);\n window.removeEventListener(\"pointerup\", onPointerUp);\n window.removeEventListener(\"pointercancel\", reset);\n window.removeEventListener(\"keydown\", onKeyDown, true);\n };\n }, [activeIndex, commit, reset, setOverGroup, setOverIndex]);\n\n const handleKeyDown = useCallback(\n (\n index: number,\n group: string | undefined,\n event: ReactKeyboardEvent<HTMLElement>,\n ): void => {\n if (disabled) return;\n const picked = activeIndex !== null;\n\n switch (event.key) {\n case \" \":\n case \"Enter\":\n event.preventDefault();\n if (!picked) {\n setActiveGroup(group);\n setOverGroup(group);\n setActiveIndex(index);\n setOverIndex(index);\n } else if (overIndex !== null) {\n commit(activeIndex, overIndex, activeGroup, overGroup);\n }\n break;\n case \"ArrowDown\":\n case \"ArrowRight\": {\n if (!picked) return;\n event.preventDefault();\n if (overRef.current !== null) {\n setOverIndex(Math.min(overRef.current + 1, itemCount - 1));\n }\n break;\n }\n case \"ArrowUp\":\n case \"ArrowLeft\": {\n if (!picked) return;\n event.preventDefault();\n if (overRef.current !== null) {\n setOverIndex(Math.max(overRef.current - 1, 0));\n }\n break;\n }\n case \"Escape\":\n if (!picked) return;\n event.preventDefault();\n reset();\n break;\n default:\n break;\n }\n },\n [\n activeGroup,\n activeIndex,\n commit,\n overGroup,\n disabled,\n itemCount,\n overIndex,\n reset,\n setActiveGroup,\n setActiveIndex,\n setOverGroup,\n setOverIndex,\n ],\n );\n\n const getItemProps = useCallback(\n (index: number, group?: string): SortableItemProps => ({\n \"data-sortable-index\": index,\n \"data-sortable-group\": group,\n \"data-sortable-active\": (activeIndex === index && activeGroup === group) || undefined,\n onPointerDown: (event) => handlePointerDown(index, group, event),\n onKeyDown: (event) => handleKeyDown(index, group, event),\n tabIndex: disabled ? -1 : 0,\n role: \"option\",\n \"aria-roledescription\": roleDescription,\n \"aria-selected\": activeIndex === index && activeGroup === group,\n }),\n [activeGroup, activeIndex, disabled, handleKeyDown, handlePointerDown, roleDescription],\n );\n\n const getEmptyGroupProps = useCallback(\n (group: string) => ({ \"data-sortable-group\": group, \"data-sortable-empty\": true as const }),\n [],\n );\n\n const getListProps = useCallback(\n () => ({ role: \"listbox\" as const, \"aria-orientation\": \"vertical\" as const }),\n [],\n );\n\n return {\n activeIndex,\n overIndex,\n activeGroup,\n overGroup,\n getItemProps,\n getEmptyGroupProps,\n getListProps,\n cancel: reset,\n setContainer,\n };\n}\n"],"mappings":"A,uBA0GA,SAAgBI,EAAY,EAAY,EAAc,EAAiB,CACnE,GAAIC,IAASC,GAAMD,EAAO,GAAKC,EAAK,GAAKD,GAAQE,EAAM,QAAUD,GAAMC,EAAM,OACzE,OAAOA,EAEX,IAAMC,EAAOD,EAAM,MAAM,EACnB,CAACE,GAASD,EAAK,OAAOH,EAAM,CAAC,EAEnC,OADAG,EAAK,OAAOF,EAAI,EAAGG,CAAK,EACjBD,CACX,CAcA,SAASE,EAAc,EAA+B,EAAW,EAA6B,CAC1F,GAAI,CAACC,EAAW,OAAO,KACvB,IAAMC,EAAU,GAAkC,CAC9C,IAAMC,EAAOC,EAAQ,sBAAsB,EAC3C,OAAOC,GAAKF,EAAK,KAAOE,GAAKF,EAAK,QAAUG,GAAKH,EAAK,MAAQG,GAAKH,EAAK,KAC5E,EAEA,IAAK,IAAMI,KAAQ,MAAM,KACrBN,EAAU,iBAA8B,uBAAuB,CACnE,EAAG,CACC,GAAI,CAACC,EAAOK,CAAI,EAAG,SACnB,IAAMC,EAAQ,OAAOD,EAAK,QAAQ,aAAa,EAE/C,OADI,OAAO,MAAMC,CAAK,EAAU,KACzB,CAAE,QAAO,MAAOD,EAAK,QAAQ,aAAc,CACtD,CAEA,IAAK,IAAME,KAAS,MAAM,KACtBR,EAAU,iBAA8B,uBAAuB,CACnE,EACI,GAAIC,EAAOO,CAAK,EAAG,MAAO,CAAE,MAAO,EAAG,MAAOA,EAAM,QAAQ,aAAc,EAG7E,OAAO,IACX,CA6CA,SAAgBC,EAAY,EAAgD,CACxE,GAAM,CAAE,YAAW,YAAW,WAAW,GAAO,kBAAkB,iBAAoBC,EAEhF,CAACC,EAAaC,IAAA,EAAuBvB,EAAAA,SAAAA,CAAwB,IAAI,EACjE,CAACwB,EAAWC,IAAA,EAAqBzB,EAAAA,SAAAA,CAAwB,IAAI,EAC7D0B,GAAA,EAAezB,EAAAA,OAAAA,CAA2B,IAAI,EAC9C0B,GAAA,EAAe1B,EAAAA,OAAAA,CAAO2B,CAAS,EAU/BC,GAAA,EAAY5B,EAAAA,OAAAA,CAAsB,IAAI,EACtC6B,GAAA,EAAU7B,EAAAA,OAAAA,CAAsB,IAAI,EACpC,CAAC8B,EAAaC,IAAA,EAAuBhC,EAAAA,SAAAA,CAA6B,IAAA,EAAS,EAC3E,CAACiC,EAAWC,IAAA,EAAqBlC,EAAAA,SAAAA,CAA6B,IAAA,EAAS,EACvEmC,GAAA,EAAiBlC,EAAAA,OAAAA,CAA2B,IAAA,EAAS,EACrDmC,GAAA,EAAenC,EAAAA,OAAAA,CAA2B,IAAA,EAAS,EAEnDoC,GAAA,EAAiBnC,EAAAA,YAAAA,CAAa,GAAoC,CACpE,EAAe,QAAUoC,EACzBN,EAAoBM,CAAK,CAC7B,EAAG,CAAC,CAAC,EAECC,GAAA,EAAerC,EAAAA,YAAAA,CAAa,GAAoC,CAClE,EAAa,QAAUoC,EACvBJ,EAAkBI,CAAK,CAC3B,EAAG,CAAC,CAAC,EAECE,GAAA,EAAiBtC,EAAAA,YAAAA,CAAa,GAA+B,CAC/D,EAAU,QAAUoC,EACpBf,EAAoBe,CAAK,CAC7B,EAAG,CAAC,CAAC,EAECG,GAAA,EAAevC,EAAAA,YAAAA,CAAa,GAA+B,CAC7D,EAAQ,QAAUoC,EAClBb,EAAkBa,CAAK,CAC3B,EAAG,CAAC,CAAC,GAEL,EAAAnC,EAAA,UAAA,KAAgB,CACZ,EAAa,QAAUyB,CAC3B,EAAG,CAACA,CAAS,CAAC,EAEd,IAAMc,GAAA,EAAQxC,EAAAA,YAAAA,KAAwB,CAClCmC,EAAe,IAAA,EAAS,EACxBE,EAAa,IAAA,EAAS,EACtBC,EAAe,IAAI,EACnBC,EAAa,IAAI,CACrB,EAAG,CAACJ,EAAgBG,EAAgBD,EAAcE,CAAY,CAAC,GAE/D,EAAAtC,EAAA,UAAA,KAAgB,CACZuC,EAAM,CACV,EAAG,CAACC,EAAWD,CAAK,CAAC,EAcrB,IAAME,GAAA,EAAS1C,EAAAA,YAAAA,EACV,EAAc,EAAY,EAAoB,IAA2B,EAClEG,IAASC,GAAMuC,IAAcC,IAC7BnB,EAAa,QAAQ,CAAE,OAAM,KAAI,YAAW,SAAQ,CAAC,EAEzDe,EAAM,CACV,EACA,CAACA,CAAK,CACV,EAEMK,GAAA,EAAe7C,EAAAA,YAAAA,CAAa,GAAmC,CACjE,EAAa,QAAU8C,CAC3B,EAAG,CAAC,CAAC,EAECC,GAAA,EAAoB/C,EAAAA,YAAAA,EACrB,EAAe,EAA2B,IAAgD,CACnFgD,IACJC,EAAM,cAAc,oBAAoBA,EAAM,SAAS,EACvDd,EAAee,CAAK,EACpBb,EAAaa,CAAK,EAClBZ,EAAetB,CAAK,EACpBuB,EAAavB,CAAK,EACtB,EACA,CAACgC,EAAUb,EAAgBG,EAAgBD,EAAcE,CAAY,CACzE,GAEA,EAAAtC,EAAA,UAAA,KAAgB,CACZ,GAAImB,IAAgB,KAAM,OAE1B,SAAS+B,EAAc,EAA2B,CAC9C,IAAMC,EAAS5C,EAAcgB,EAAa,QAASyB,EAAM,QAASA,EAAM,OAAO,EAC1EG,IACLf,EAAae,EAAO,KAAK,EACzBb,EAAaa,EAAO,KAAK,EAC7B,CAEA,SAASC,GAAoB,CACzB,IAAMlD,EAAOwB,EAAU,QACjBvB,EAAKwB,EAAQ,QACfzB,IAAS,MAAQC,IAAO,KACxBsC,EAAOvC,EAAMC,EAAI6B,EAAe,QAASC,EAAa,OAAO,EAE7DM,EAAM,CAEd,CAUA,SAASc,EAAU,EAA4B,CACvCL,EAAM,MAAQ,WAClBA,EAAM,eAAe,EACrBT,EAAM,EACV,CAMA,OAJA,OAAO,iBAAiB,cAAeW,CAAa,EACpD,OAAO,iBAAiB,YAAaE,CAAW,EAChD,OAAO,iBAAiB,gBAAiBb,CAAK,EAC9C,OAAO,iBAAiB,UAAWc,EAAW,EAAI,MACrC,CACT,OAAO,oBAAoB,cAAeH,CAAa,EACvD,OAAO,oBAAoB,YAAaE,CAAW,EACnD,OAAO,oBAAoB,gBAAiBb,CAAK,EACjD,OAAO,oBAAoB,UAAWc,EAAW,EAAI,CACzD,CACJ,EAAG,CAAClC,EAAasB,EAAQF,EAAOH,EAAcE,CAAY,CAAC,EAE3D,IAAMgB,GAAA,EAAgBvD,EAAAA,YAAAA,EAEd,EACA,EACA,IACO,CACP,GAAIgD,EAAU,OACd,IAAMQ,EAASpC,IAAgB,KAE/B,OAAQ6B,EAAM,IAAd,CACI,IAAK,IACL,IAAK,QACDA,EAAM,eAAe,EAChBO,EAKMlC,IAAc,MACrBoB,EAAOtB,EAAaE,EAAWO,EAAaE,CAAS,GALrDI,EAAee,CAAK,EACpBb,EAAaa,CAAK,EAClBZ,EAAetB,CAAK,EACpBuB,EAAavB,CAAK,GAItB,MACJ,IAAK,YACL,IAAK,aACD,GAAI,CAACwC,EAAQ,OACbP,EAAM,eAAe,EACjBrB,EAAQ,UAAY,MACpBW,EAAa,KAAK,IAAIX,EAAQ,QAAU,EAAGa,EAAY,CAAC,CAAC,EAE7D,MAEJ,IAAK,UACL,IAAK,YACD,GAAI,CAACe,EAAQ,OACbP,EAAM,eAAe,EACjBrB,EAAQ,UAAY,MACpBW,EAAa,KAAK,IAAIX,EAAQ,QAAU,EAAG,CAAC,CAAC,EAEjD,MAEJ,IAAK,SACD,GAAI,CAAC4B,EAAQ,OACbP,EAAM,eAAe,EACrBT,EAAM,CAId,CACJ,EACA,CACIX,EACAT,EACAsB,EACAX,EACAiB,EACAP,EACAnB,EACAkB,EACAL,EACAG,EACAD,EACAE,CACJ,CACJ,EA2BA,MAAO,CACH,cACA,YACA,cACA,YACA,cAAA,EA9BiBvC,EAAAA,YAAAA,EAChB,EAAe,KAAuC,CACnD,sBAAuBgB,EACvB,sBAAuBkC,EACvB,uBAAyB9B,IAAgBJ,GAASa,IAAgBqB,GAAU,IAAA,GAC5E,cAAgB,GAAUH,EAAkB/B,EAAOkC,EAAOD,CAAK,EAC/D,UAAY,GAAUM,EAAcvC,EAAOkC,EAAOD,CAAK,EACvD,SAAUD,EAAW,GAAK,EAC1B,KAAM,SACN,uBAAwBS,EACxB,gBAAiBrC,IAAgBJ,GAASa,IAAgBqB,CAC9D,GACA,CAACrB,EAAaT,EAAa4B,EAAUO,EAAeR,EAAmBU,CAAe,CAkBtF,EACA,oBAAA,EAhBuBzD,EAAAA,YAAAA,CACtB,IAAmB,CAAE,sBAAuBkD,EAAO,sBAAuB,EAAc,GACzF,CAAC,CAcD,EACA,cAAA,EAZiBlD,EAAAA,YAAAA,MACV,CAAE,KAAM,UAAoB,mBAAoB,UAAoB,GAC3E,CAAC,CAUD,EACA,OAAQwC,EACR,cACJ,CACJ,C"}