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.
- package/README.md +6 -6
- package/bin/lib/openapi/generate.mjs +168 -64
- package/bin/lib/openapi/generate.pagination.test.mjs +3 -2
- package/bin/lib/openapi/generate.test.mjs +263 -1
- package/dist/access/Can.cjs.map +1 -1
- package/dist/access/Can.js.map +1 -1
- package/dist/access/access-control-context.cjs.map +1 -1
- package/dist/access/access-control-context.js.map +1 -1
- package/dist/access/create-role-access-control.cjs.map +1 -1
- package/dist/access/create-role-access-control.js.map +1 -1
- package/dist/access/permissions-from-token.cjs.map +1 -1
- package/dist/access/permissions-from-token.js.map +1 -1
- package/dist/access/use-can.cjs.map +1 -1
- package/dist/access/use-can.js.map +1 -1
- package/dist/app/AppProviders.cjs.map +1 -1
- package/dist/app/AppProviders.js.map +1 -1
- package/dist/audio/audio-bus.cjs.map +1 -1
- package/dist/audio/audio-bus.js.map +1 -1
- package/dist/audio/audio-output.cjs.map +1 -1
- package/dist/audio/audio-output.js.map +1 -1
- package/dist/audio/audio-player.cjs.map +1 -1
- package/dist/audio/audio-player.js.map +1 -1
- package/dist/audio/audio-recorder.cjs.map +1 -1
- package/dist/audio/audio-recorder.js.map +1 -1
- package/dist/audio/duration.cjs.map +1 -1
- package/dist/audio/duration.js.map +1 -1
- package/dist/audio/level-meter.cjs.map +1 -1
- package/dist/audio/level-meter.js.map +1 -1
- package/dist/audio/media-access.cjs.map +1 -1
- package/dist/audio/media-access.js.map +1 -1
- package/dist/audio/noise-floor.cjs.map +1 -1
- package/dist/audio/noise-floor.js.map +1 -1
- package/dist/audio/sfx-pool.cjs.map +1 -1
- package/dist/audio/sfx-pool.js.map +1 -1
- package/dist/audio/use-audio-bus.cjs.map +1 -1
- package/dist/audio/use-audio-bus.js.map +1 -1
- package/dist/audio/use-audio-recorder.cjs.map +1 -1
- package/dist/audio/use-audio-recorder.js.map +1 -1
- package/dist/audio/use-audio.cjs.map +1 -1
- package/dist/audio/use-audio.js.map +1 -1
- package/dist/audio/use-microphone.cjs +1 -1
- package/dist/audio/use-microphone.cjs.map +1 -1
- package/dist/audio/use-microphone.js +1 -5
- package/dist/audio/use-microphone.js.map +1 -1
- package/dist/audio/use-sfx-pool.cjs.map +1 -1
- package/dist/audio/use-sfx-pool.js.map +1 -1
- package/dist/audio/voice-activity.cjs.map +1 -1
- package/dist/audio/voice-activity.js.map +1 -1
- package/dist/audio/voice-chain-stages.cjs.map +1 -1
- package/dist/audio/voice-chain-stages.js.map +1 -1
- package/dist/audio/voice-chain.cjs.map +1 -1
- package/dist/audio/voice-chain.js.map +1 -1
- package/dist/audio/wav.cjs.map +1 -1
- package/dist/audio/wav.js.map +1 -1
- package/dist/auth/AuthGuard.cjs.map +1 -1
- package/dist/auth/AuthGuard.js.map +1 -1
- package/dist/auth/create-auth-store.cjs.map +1 -1
- package/dist/auth/create-auth-store.js.map +1 -1
- package/dist/auth/create-tempest-auth.cjs +1 -1
- package/dist/auth/create-tempest-auth.cjs.map +1 -1
- package/dist/auth/create-tempest-auth.js +1 -3
- package/dist/auth/create-tempest-auth.js.map +1 -1
- package/dist/auth/jwt.cjs.map +1 -1
- package/dist/auth/jwt.js.map +1 -1
- package/dist/auth/lazy-with-retry.cjs.map +1 -1
- package/dist/auth/lazy-with-retry.js.map +1 -1
- package/dist/auth/passkey.cjs.map +1 -1
- package/dist/auth/passkey.js.map +1 -1
- package/dist/auth/refresh-queue.cjs.map +1 -1
- package/dist/auth/refresh-queue.js.map +1 -1
- package/dist/auth/use-passkey.cjs +1 -1
- package/dist/auth/use-passkey.cjs.map +1 -1
- package/dist/auth/use-passkey.js +1 -1
- package/dist/auth/use-passkey.js.map +1 -1
- package/dist/br/BrazilMap.cjs.map +1 -1
- package/dist/br/BrazilMap.js.map +1 -1
- package/dist/br/BrazilMap.module.cjs.map +1 -1
- package/dist/br/BrazilMap.module.js.map +1 -1
- package/dist/br/BrazilStateCitySelect.cjs.map +1 -1
- package/dist/br/BrazilStateCitySelect.js.map +1 -1
- package/dist/br/BrazilStateMap.cjs.map +1 -1
- package/dist/br/BrazilStateMap.js.map +1 -1
- package/dist/br/MapLegend.cjs.map +1 -1
- package/dist/br/MapLegend.js.map +1 -1
- package/dist/br/MapLegend.module.cjs.map +1 -1
- package/dist/br/MapLegend.module.js.map +1 -1
- package/dist/br/MapMarkers.cjs.map +1 -1
- package/dist/br/MapMarkers.js.map +1 -1
- package/dist/br/MapTooltip.cjs.map +1 -1
- package/dist/br/MapTooltip.js.map +1 -1
- package/dist/br/MunicipalitySearch.cjs +1 -1
- package/dist/br/MunicipalitySearch.cjs.map +1 -1
- package/dist/br/MunicipalitySearch.js +2 -5
- package/dist/br/MunicipalitySearch.js.map +1 -1
- package/dist/br/MunicipalitySearch.module.cjs.map +1 -1
- package/dist/br/MunicipalitySearch.module.js.map +1 -1
- package/dist/br/PixQRCode.cjs.map +1 -1
- package/dist/br/PixQRCode.js.map +1 -1
- package/dist/br/PixQRCode.module.cjs.map +1 -1
- package/dist/br/PixQRCode.module.js.map +1 -1
- package/dist/br/boleto.cjs.map +1 -1
- package/dist/br/boleto.js.map +1 -1
- package/dist/br/br-geo.cjs.map +1 -1
- package/dist/br/br-geo.js.map +1 -1
- package/dist/br/data/br-centroids.cjs.map +1 -1
- package/dist/br/data/br-centroids.js.map +1 -1
- package/dist/br/data/br-locations.cjs.map +1 -1
- package/dist/br/data/br-locations.js.map +1 -1
- package/dist/br/data/br-uf-geo.cjs.map +1 -1
- package/dist/br/data/br-uf-geo.js.map +1 -1
- package/dist/br/data/mun/AC.cjs.map +1 -1
- package/dist/br/data/mun/AC.js.map +1 -1
- package/dist/br/data/mun/AL.cjs.map +1 -1
- package/dist/br/data/mun/AL.js.map +1 -1
- package/dist/br/data/mun/AM.cjs.map +1 -1
- package/dist/br/data/mun/AM.js.map +1 -1
- package/dist/br/data/mun/AP.cjs.map +1 -1
- package/dist/br/data/mun/AP.js.map +1 -1
- package/dist/br/data/mun/BA.cjs.map +1 -1
- package/dist/br/data/mun/BA.js.map +1 -1
- package/dist/br/data/mun/CE.cjs.map +1 -1
- package/dist/br/data/mun/CE.js.map +1 -1
- package/dist/br/data/mun/DF.cjs.map +1 -1
- package/dist/br/data/mun/DF.js.map +1 -1
- package/dist/br/data/mun/ES.cjs.map +1 -1
- package/dist/br/data/mun/ES.js.map +1 -1
- package/dist/br/data/mun/GO.cjs.map +1 -1
- package/dist/br/data/mun/GO.js.map +1 -1
- package/dist/br/data/mun/MA.cjs.map +1 -1
- package/dist/br/data/mun/MA.js.map +1 -1
- package/dist/br/data/mun/MG.cjs.map +1 -1
- package/dist/br/data/mun/MG.js.map +1 -1
- package/dist/br/data/mun/MS.cjs.map +1 -1
- package/dist/br/data/mun/MS.js.map +1 -1
- package/dist/br/data/mun/MT.cjs.map +1 -1
- package/dist/br/data/mun/MT.js.map +1 -1
- package/dist/br/data/mun/PA.cjs.map +1 -1
- package/dist/br/data/mun/PA.js.map +1 -1
- package/dist/br/data/mun/PB.cjs.map +1 -1
- package/dist/br/data/mun/PB.js.map +1 -1
- package/dist/br/data/mun/PE.cjs.map +1 -1
- package/dist/br/data/mun/PE.js.map +1 -1
- package/dist/br/data/mun/PI.cjs.map +1 -1
- package/dist/br/data/mun/PI.js.map +1 -1
- package/dist/br/data/mun/PR.cjs.map +1 -1
- package/dist/br/data/mun/PR.js.map +1 -1
- package/dist/br/data/mun/RJ.cjs.map +1 -1
- package/dist/br/data/mun/RJ.js.map +1 -1
- package/dist/br/data/mun/RN.cjs.map +1 -1
- package/dist/br/data/mun/RN.js.map +1 -1
- package/dist/br/data/mun/RO.cjs.map +1 -1
- package/dist/br/data/mun/RO.js.map +1 -1
- package/dist/br/data/mun/RR.cjs.map +1 -1
- package/dist/br/data/mun/RR.js.map +1 -1
- package/dist/br/data/mun/RS.cjs.map +1 -1
- package/dist/br/data/mun/RS.js.map +1 -1
- package/dist/br/data/mun/SC.cjs.map +1 -1
- package/dist/br/data/mun/SC.js.map +1 -1
- package/dist/br/data/mun/SE.cjs.map +1 -1
- package/dist/br/data/mun/SE.js.map +1 -1
- package/dist/br/data/mun/SP.cjs.map +1 -1
- package/dist/br/data/mun/SP.js.map +1 -1
- package/dist/br/data/mun/TO.cjs.map +1 -1
- package/dist/br/data/mun/TO.js.map +1 -1
- package/dist/br/geocode.cjs.map +1 -1
- package/dist/br/geocode.js.map +1 -1
- package/dist/br/holidays.cjs.map +1 -1
- package/dist/br/holidays.js.map +1 -1
- package/dist/br/locations.cjs.map +1 -1
- package/dist/br/locations.js.map +1 -1
- package/dist/br/nfe.cjs.map +1 -1
- package/dist/br/nfe.js.map +1 -1
- package/dist/br/pix.cjs +1 -1
- package/dist/br/pix.cjs.map +1 -1
- package/dist/br/pix.js +108 -74
- package/dist/br/pix.js.map +1 -1
- package/dist/br/regions.cjs.map +1 -1
- package/dist/br/regions.js.map +1 -1
- package/dist/br/scales.cjs.map +1 -1
- package/dist/br/scales.js.map +1 -1
- package/dist/br/state-geo.cjs.map +1 -1
- package/dist/br/state-geo.js.map +1 -1
- package/dist/br/svg-utils.cjs.map +1 -1
- package/dist/br/svg-utils.js.map +1 -1
- package/dist/br/use-map-hover.cjs.map +1 -1
- package/dist/br/use-map-hover.js.map +1 -1
- package/dist/br/use-map-zoom.cjs.map +1 -1
- package/dist/br/use-map-zoom.js.map +1 -1
- package/dist/br/whatsapp.cjs.map +1 -1
- package/dist/br/whatsapp.js.map +1 -1
- package/dist/br.cjs.map +1 -1
- package/dist/br.d.ts +6 -2
- package/dist/br.js.map +1 -1
- package/dist/capture/barcode.cjs.map +1 -1
- package/dist/capture/barcode.js.map +1 -1
- package/dist/capture/media-recorder.cjs.map +1 -1
- package/dist/capture/media-recorder.js.map +1 -1
- package/dist/capture/use-barcode-scanner.cjs.map +1 -1
- package/dist/capture/use-barcode-scanner.js.map +1 -1
- package/dist/capture/use-screen-capture.cjs +1 -1
- package/dist/capture/use-screen-capture.cjs.map +1 -1
- package/dist/capture/use-screen-capture.js +1 -7
- package/dist/capture/use-screen-capture.js.map +1 -1
- package/dist/capture/use-speech-recognition.cjs +1 -1
- package/dist/capture/use-speech-recognition.cjs.map +1 -1
- package/dist/capture/use-speech-recognition.js +35 -36
- package/dist/capture/use-speech-recognition.js.map +1 -1
- package/dist/capture/use-torch.cjs.map +1 -1
- package/dist/capture/use-torch.js.map +1 -1
- package/dist/capture/use-video-recorder.cjs.map +1 -1
- package/dist/capture/use-video-recorder.js.map +1 -1
- package/dist/capture/video-recorder.cjs.map +1 -1
- package/dist/capture/video-recorder.js.map +1 -1
- package/dist/charts/AreaChart.cjs.map +1 -1
- package/dist/charts/AreaChart.js.map +1 -1
- package/dist/charts/BarChart.cjs.map +1 -1
- package/dist/charts/BarChart.js.map +1 -1
- package/dist/charts/LineChart.cjs.map +1 -1
- package/dist/charts/LineChart.js.map +1 -1
- package/dist/charts/PieChart.cjs.map +1 -1
- package/dist/charts/PieChart.js.map +1 -1
- package/dist/charts/RadarChart.cjs.map +1 -1
- package/dist/charts/RadarChart.js.map +1 -1
- package/dist/charts/palette.cjs.map +1 -1
- package/dist/charts/palette.js.map +1 -1
- package/dist/charts/scales.cjs.map +1 -1
- package/dist/charts/scales.js.map +1 -1
- package/dist/charts/types.cjs.map +1 -1
- package/dist/charts/types.js.map +1 -1
- package/dist/charts/use-chart-colors.cjs.map +1 -1
- package/dist/charts/use-chart-colors.js.map +1 -1
- package/dist/components/AIChat/AIChat.cjs +1 -1
- package/dist/components/AIChat/AIChat.cjs.map +1 -1
- package/dist/components/AIChat/AIChat.js +1 -5
- package/dist/components/AIChat/AIChat.js.map +1 -1
- package/dist/components/AIChat/AIChat.module.cjs.map +1 -1
- package/dist/components/AIChat/AIChat.module.js.map +1 -1
- package/dist/components/AIChat/AIChatComposer.cjs +1 -1
- package/dist/components/AIChat/AIChatComposer.cjs.map +1 -1
- package/dist/components/AIChat/AIChatComposer.js +1 -7
- package/dist/components/AIChat/AIChatComposer.js.map +1 -1
- package/dist/components/AIChat/AIChatTurn.cjs.map +1 -1
- package/dist/components/AIChat/AIChatTurn.js.map +1 -1
- package/dist/components/AIChat/ai-chat-turns.cjs.map +1 -1
- package/dist/components/AIChat/ai-chat-turns.js.map +1 -1
- package/dist/components/Accordion/Accordion.cjs.map +1 -1
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/Accordion/Accordion.module.cjs.map +1 -1
- package/dist/components/Accordion/Accordion.module.js.map +1 -1
- package/dist/components/Alert/Alert.cjs.map +1 -1
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/Alert/Alert.module.cjs.map +1 -1
- package/dist/components/Alert/Alert.module.js.map +1 -1
- package/dist/components/AppBar/AppBar.cjs.map +1 -1
- package/dist/components/AppBar/AppBar.js.map +1 -1
- package/dist/components/AppBar/AppBar.module.cjs.map +1 -1
- package/dist/components/AppBar/AppBar.module.js.map +1 -1
- package/dist/components/AppBar/use-sticky-body-warning.cjs +1 -1
- package/dist/components/AppBar/use-sticky-body-warning.cjs.map +1 -1
- package/dist/components/AppBar/use-sticky-body-warning.js +1 -1
- package/dist/components/AppBar/use-sticky-body-warning.js.map +1 -1
- package/dist/components/AppShell/AppShell.cjs.map +1 -1
- package/dist/components/AppShell/AppShell.js.map +1 -1
- package/dist/components/AppShell/AppShell.module.cjs.map +1 -1
- package/dist/components/AppShell/AppShell.module.js.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.cjs.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.module.cjs.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.module.js.map +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.cjs +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.cjs.map +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.js +1 -7
- package/dist/components/AudioPlayer/AudioPlayer.js.map +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.module.cjs.map +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.module.js.map +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.cjs +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.cjs.map +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.js +16 -21
- package/dist/components/AudioRecorder/AudioRecorder.js.map +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.module.cjs.map +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.module.js.map +1 -1
- package/dist/components/Avatar/Avatar.cjs.map +1 -1
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/Avatar.module.cjs.map +1 -1
- package/dist/components/Avatar/Avatar.module.js.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroup.cjs.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroup.js.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroup.module.cjs.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroup.module.js.map +1 -1
- package/dist/components/Badge/Badge.cjs.map +1 -1
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/Badge/Badge.module.cjs.map +1 -1
- package/dist/components/Badge/Badge.module.js.map +1 -1
- package/dist/components/Banner/Banner.cjs.map +1 -1
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Banner/Banner.module.cjs.map +1 -1
- package/dist/components/Banner/Banner.module.js.map +1 -1
- package/dist/components/BarList/BarList.cjs.map +1 -1
- package/dist/components/BarList/BarList.js.map +1 -1
- package/dist/components/BarList/BarList.module.cjs.map +1 -1
- package/dist/components/BarList/BarList.module.js.map +1 -1
- package/dist/components/BarList/bar-list-model.cjs.map +1 -1
- package/dist/components/BarList/bar-list-model.js.map +1 -1
- package/dist/components/BarcodeScanner/BarcodeScanner.cjs.map +1 -1
- package/dist/components/BarcodeScanner/BarcodeScanner.js.map +1 -1
- package/dist/components/BarcodeScanner/BarcodeScanner.module.cjs.map +1 -1
- package/dist/components/BarcodeScanner/BarcodeScanner.module.js.map +1 -1
- package/dist/components/BottomNavigation/BottomNavigation.cjs.map +1 -1
- package/dist/components/BottomNavigation/BottomNavigation.js.map +1 -1
- package/dist/components/BottomNavigation/BottomNavigation.module.cjs.map +1 -1
- package/dist/components/BottomNavigation/BottomNavigation.module.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.module.cjs.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.module.js.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.module.cjs.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.module.js.map +1 -1
- package/dist/components/Button/Button.cjs.map +1 -1
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Button/Button.module.cjs.map +1 -1
- package/dist/components/Button/Button.module.js.map +1 -1
- package/dist/components/Button/ButtonContent.cjs.map +1 -1
- package/dist/components/Button/ButtonContent.js.map +1 -1
- package/dist/components/Button/ButtonSlot.cjs.map +1 -1
- package/dist/components/Button/ButtonSlot.js.map +1 -1
- package/dist/components/Button/button-class.cjs.map +1 -1
- package/dist/components/Button/button-class.js.map +1 -1
- package/dist/components/Button/link-rel.cjs.map +1 -1
- package/dist/components/Button/link-rel.js.map +1 -1
- package/dist/components/Button/slot.cjs.map +1 -1
- package/dist/components/Button/slot.js.map +1 -1
- package/dist/components/Calendar/Calendar.cjs.map +1 -1
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/Calendar/Calendar.module.cjs.map +1 -1
- package/dist/components/Calendar/Calendar.module.js.map +1 -1
- package/dist/components/Card/Card.cjs.map +1 -1
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Card/Card.module.cjs.map +1 -1
- package/dist/components/Card/Card.module.js.map +1 -1
- package/dist/components/Carousel/Carousel.cjs.map +1 -1
- package/dist/components/Carousel/Carousel.js.map +1 -1
- package/dist/components/Carousel/Carousel.module.cjs.map +1 -1
- package/dist/components/Carousel/Carousel.module.js.map +1 -1
- package/dist/components/Center/Center.cjs.map +1 -1
- package/dist/components/Center/Center.js.map +1 -1
- package/dist/components/Center/Center.module.cjs.map +1 -1
- package/dist/components/Center/Center.module.js.map +1 -1
- package/dist/components/Chat/Chat.cjs.map +1 -1
- package/dist/components/Chat/Chat.js.map +1 -1
- package/dist/components/Chat/Chat.module.cjs.map +1 -1
- package/dist/components/Chat/Chat.module.js.map +1 -1
- package/dist/components/Chat/ChatActionsMenu.cjs.map +1 -1
- package/dist/components/Chat/ChatActionsMenu.js.map +1 -1
- package/dist/components/Chat/ChatAttachments.cjs.map +1 -1
- package/dist/components/Chat/ChatAttachments.js.map +1 -1
- package/dist/components/Chat/ChatBubble.cjs.map +1 -1
- package/dist/components/Chat/ChatBubble.js.map +1 -1
- package/dist/components/Chat/ChatComposer.cjs.map +1 -1
- package/dist/components/Chat/ChatComposer.js.map +1 -1
- package/dist/components/Chat/chat-groups.cjs +1 -1
- package/dist/components/Chat/chat-groups.cjs.map +1 -1
- package/dist/components/Chat/chat-groups.js +2 -6
- package/dist/components/Chat/chat-groups.js.map +1 -1
- package/dist/components/Chat/chat-receipt.cjs.map +1 -1
- package/dist/components/Chat/chat-receipt.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.module.cjs.map +1 -1
- package/dist/components/Checkbox/Checkbox.module.js.map +1 -1
- package/dist/components/ChipInput/ChipInput.cjs +1 -1
- package/dist/components/ChipInput/ChipInput.cjs.map +1 -1
- package/dist/components/ChipInput/ChipInput.js +2 -12
- package/dist/components/ChipInput/ChipInput.js.map +1 -1
- package/dist/components/ChipInput/ChipInput.module.cjs.map +1 -1
- package/dist/components/ChipInput/ChipInput.module.js.map +1 -1
- package/dist/components/ClickOutside/ClickOutside.cjs.map +1 -1
- package/dist/components/ClickOutside/ClickOutside.js.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.cjs.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.js.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.module.cjs.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.module.js.map +1 -1
- package/dist/components/CodeBlock/tokenize.cjs.map +1 -1
- package/dist/components/CodeBlock/tokenize.js.map +1 -1
- package/dist/components/Collapsible/Collapsible.cjs.map +1 -1
- package/dist/components/Collapsible/Collapsible.js.map +1 -1
- package/dist/components/Collapsible/Collapsible.module.cjs.map +1 -1
- package/dist/components/Collapsible/Collapsible.module.js.map +1 -1
- package/dist/components/Combobox/Combobox.cjs.map +1 -1
- package/dist/components/Combobox/Combobox.js.map +1 -1
- package/dist/components/Combobox/Combobox.module.cjs.map +1 -1
- package/dist/components/Combobox/Combobox.module.js.map +1 -1
- package/dist/components/Combobox/use-listbox-dismiss.cjs.map +1 -1
- package/dist/components/Combobox/use-listbox-dismiss.js.map +1 -1
- package/dist/components/Command/Command.cjs +1 -1
- package/dist/components/Command/Command.cjs.map +1 -1
- package/dist/components/Command/Command.js +4 -11
- package/dist/components/Command/Command.js.map +1 -1
- package/dist/components/Command/Command.module.cjs.map +1 -1
- package/dist/components/Command/Command.module.js.map +1 -1
- package/dist/components/ConditionalWrapper/ConditionalWrapper.cjs.map +1 -1
- package/dist/components/ConditionalWrapper/ConditionalWrapper.js.map +1 -1
- package/dist/components/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
- package/dist/components/ConfirmDialog/ConfirmDialog.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.cjs +1 -1
- package/dist/components/ContextMenu/ContextMenu.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.js +1 -1
- package/dist/components/ContextMenu/ContextMenu.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.module.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.module.js.map +1 -1
- package/dist/components/CopyButton/CopyButton.cjs.map +1 -1
- package/dist/components/CopyButton/CopyButton.js.map +1 -1
- package/dist/components/CopyButton/CopyButton.module.cjs.map +1 -1
- package/dist/components/CopyButton/CopyButton.module.js.map +1 -1
- package/dist/components/DataList/DataList.cjs.map +1 -1
- package/dist/components/DataList/DataList.js.map +1 -1
- package/dist/components/DataList/DataList.module.cjs.map +1 -1
- package/dist/components/DataList/DataList.module.js.map +1 -1
- package/dist/components/DataTable/DataTable.cjs +1 -1
- package/dist/components/DataTable/DataTable.cjs.map +1 -1
- package/dist/components/DataTable/DataTable.js +6 -14
- package/dist/components/DataTable/DataTable.js.map +1 -1
- package/dist/components/DataTable/DataTable.module.cjs.map +1 -1
- package/dist/components/DataTable/DataTable.module.js.map +1 -1
- package/dist/components/DataTable/EditableCell.cjs +1 -1
- package/dist/components/DataTable/EditableCell.cjs.map +1 -1
- package/dist/components/DataTable/EditableCell.js +1 -9
- package/dist/components/DataTable/EditableCell.js.map +1 -1
- package/dist/components/DataTable/LoadingRows.cjs.map +1 -1
- package/dist/components/DataTable/LoadingRows.js.map +1 -1
- package/dist/components/DataTable/edit-labels.cjs.map +1 -1
- package/dist/components/DataTable/edit-labels.js.map +1 -1
- package/dist/components/DataTable/use-dev-warnings.cjs.map +1 -1
- package/dist/components/DataTable/use-dev-warnings.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.cjs.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.module.cjs.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.module.js.map +1 -1
- package/dist/components/DescriptionList/DescriptionList.cjs.map +1 -1
- package/dist/components/DescriptionList/DescriptionList.js.map +1 -1
- package/dist/components/DescriptionList/DescriptionList.module.cjs.map +1 -1
- package/dist/components/DescriptionList/DescriptionList.module.js.map +1 -1
- package/dist/components/Divider/Divider.cjs.map +1 -1
- package/dist/components/Divider/Divider.js.map +1 -1
- package/dist/components/Divider/Divider.module.cjs.map +1 -1
- package/dist/components/Divider/Divider.module.js.map +1 -1
- package/dist/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Drawer/Drawer.module.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.module.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.cjs +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.js +2 -14
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.module.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.module.js.map +1 -1
- package/dist/components/Dropzone/Dropzone.cjs.map +1 -1
- package/dist/components/Dropzone/Dropzone.js.map +1 -1
- package/dist/components/Dropzone/Dropzone.module.cjs.map +1 -1
- package/dist/components/Dropzone/Dropzone.module.js.map +1 -1
- package/dist/components/EmptyState/EmptyState.cjs.map +1 -1
- package/dist/components/EmptyState/EmptyState.js.map +1 -1
- package/dist/components/EmptyState/EmptyState.module.cjs.map +1 -1
- package/dist/components/EmptyState/EmptyState.module.js.map +1 -1
- package/dist/components/ErrorState/ErrorState.cjs.map +1 -1
- package/dist/components/ErrorState/ErrorState.js.map +1 -1
- package/dist/components/ErrorState/ErrorState.module.cjs.map +1 -1
- package/dist/components/ErrorState/ErrorState.module.js.map +1 -1
- package/dist/components/ErrorText/ErrorText.cjs.map +1 -1
- package/dist/components/ErrorText/ErrorText.js.map +1 -1
- package/dist/components/ErrorText/ErrorText.module.cjs.map +1 -1
- package/dist/components/ErrorText/ErrorText.module.js.map +1 -1
- package/dist/components/FileUpload/FileUpload.cjs +1 -1
- package/dist/components/FileUpload/FileUpload.cjs.map +1 -1
- package/dist/components/FileUpload/FileUpload.js +7 -17
- package/dist/components/FileUpload/FileUpload.js.map +1 -1
- package/dist/components/FileUpload/FileUpload.module.cjs.map +1 -1
- package/dist/components/FileUpload/FileUpload.module.js.map +1 -1
- package/dist/components/FilterBar/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar/FilterBar.js.map +1 -1
- package/dist/components/FilterBar/FilterBar.module.cjs.map +1 -1
- package/dist/components/FilterBar/FilterBar.module.js.map +1 -1
- package/dist/components/FilterBar/filter-apply.cjs.map +1 -1
- package/dist/components/FilterBar/filter-apply.js.map +1 -1
- package/dist/components/FilterBar/filter-model.cjs.map +1 -1
- package/dist/components/FilterBar/filter-model.js.map +1 -1
- package/dist/components/FilterBar/filter-query.cjs +1 -1
- package/dist/components/FilterBar/filter-query.cjs.map +1 -1
- package/dist/components/FilterBar/filter-query.js +2 -5
- package/dist/components/FilterBar/filter-query.js.map +1 -1
- package/dist/components/FilterPanel/FilterPanel.cjs.map +1 -1
- package/dist/components/FilterPanel/FilterPanel.js.map +1 -1
- package/dist/components/FilterPanel/FilterPanel.module.cjs.map +1 -1
- package/dist/components/FilterPanel/FilterPanel.module.js.map +1 -1
- package/dist/components/FloatingActionButton/FloatingActionButton.cjs.map +1 -1
- package/dist/components/FloatingActionButton/FloatingActionButton.js.map +1 -1
- package/dist/components/FloatingActionButton/FloatingActionButton.module.cjs.map +1 -1
- package/dist/components/FloatingActionButton/FloatingActionButton.module.js.map +1 -1
- package/dist/components/For/For.cjs.map +1 -1
- package/dist/components/For/For.js.map +1 -1
- package/dist/components/Form/Form.cjs.map +1 -1
- package/dist/components/Form/Form.js.map +1 -1
- package/dist/components/Form/Form.module.cjs.map +1 -1
- package/dist/components/Form/Form.module.js.map +1 -1
- package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
- package/dist/components/HoverCard/HoverCard.js.map +1 -1
- package/dist/components/HoverCard/HoverCard.module.cjs.map +1 -1
- package/dist/components/HoverCard/HoverCard.module.js.map +1 -1
- package/dist/components/Image/Image.cjs.map +1 -1
- package/dist/components/Image/Image.js.map +1 -1
- package/dist/components/Image/Image.module.cjs.map +1 -1
- package/dist/components/Image/Image.module.js.map +1 -1
- package/dist/components/ImageCropper/ImageCropper.cjs +1 -1
- package/dist/components/ImageCropper/ImageCropper.cjs.map +1 -1
- package/dist/components/ImageCropper/ImageCropper.js +4 -8
- package/dist/components/ImageCropper/ImageCropper.js.map +1 -1
- package/dist/components/ImageCropper/ImageCropper.module.cjs.map +1 -1
- package/dist/components/ImageCropper/ImageCropper.module.js.map +1 -1
- package/dist/components/ImageCropper/crop-geometry.cjs.map +1 -1
- package/dist/components/ImageCropper/crop-geometry.js.map +1 -1
- package/dist/components/Input/Input.cjs.map +1 -1
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/Input/Input.module.cjs.map +1 -1
- package/dist/components/Input/Input.module.js.map +1 -1
- package/dist/components/InstallBanner/InstallBanner.cjs.map +1 -1
- package/dist/components/InstallBanner/InstallBanner.js.map +1 -1
- package/dist/components/InstallBanner/InstallBanner.module.cjs.map +1 -1
- package/dist/components/InstallBanner/InstallBanner.module.js.map +1 -1
- package/dist/components/InstallButton/InstallButton.cjs.map +1 -1
- package/dist/components/InstallButton/InstallButton.js.map +1 -1
- package/dist/components/InstallButton/InstallButton.module.cjs.map +1 -1
- package/dist/components/InstallButton/InstallButton.module.js.map +1 -1
- package/dist/components/InstallButton/install-hints.cjs.map +1 -1
- package/dist/components/InstallButton/install-hints.js.map +1 -1
- package/dist/components/Kanban/Kanban.cjs.map +1 -1
- package/dist/components/Kanban/Kanban.js.map +1 -1
- package/dist/components/Kanban/Kanban.module.cjs.map +1 -1
- package/dist/components/Kanban/Kanban.module.js.map +1 -1
- package/dist/components/Kbd/Kbd.cjs.map +1 -1
- package/dist/components/Kbd/Kbd.js.map +1 -1
- package/dist/components/Kbd/Kbd.module.cjs.map +1 -1
- package/dist/components/Kbd/Kbd.module.js.map +1 -1
- package/dist/components/Label/Label.cjs.map +1 -1
- package/dist/components/Label/Label.js.map +1 -1
- package/dist/components/Label/Label.module.cjs.map +1 -1
- package/dist/components/Label/Label.module.js.map +1 -1
- package/dist/components/Layout/Layout.cjs.map +1 -1
- package/dist/components/Layout/Layout.js.map +1 -1
- package/dist/components/Layout/Layout.module.cjs.map +1 -1
- package/dist/components/Layout/Layout.module.js.map +1 -1
- package/dist/components/Lightbox/Lightbox.cjs +1 -1
- package/dist/components/Lightbox/Lightbox.cjs.map +1 -1
- package/dist/components/Lightbox/Lightbox.js +1 -1
- package/dist/components/Lightbox/Lightbox.js.map +1 -1
- package/dist/components/Lightbox/Lightbox.module.cjs.map +1 -1
- package/dist/components/Lightbox/Lightbox.module.js.map +1 -1
- package/dist/components/ListTile/ListTile.cjs.map +1 -1
- package/dist/components/ListTile/ListTile.js.map +1 -1
- package/dist/components/ListTile/ListTile.module.cjs.map +1 -1
- package/dist/components/ListTile/ListTile.module.js.map +1 -1
- package/dist/components/Markdown/Markdown.cjs.map +1 -1
- package/dist/components/Markdown/Markdown.js.map +1 -1
- package/dist/components/Markdown/Markdown.module.cjs.map +1 -1
- package/dist/components/Markdown/Markdown.module.js.map +1 -1
- package/dist/components/Markdown/markdown-parse.cjs +2 -2
- package/dist/components/Markdown/markdown-parse.cjs.map +1 -1
- package/dist/components/Markdown/markdown-parse.js +8 -27
- package/dist/components/Markdown/markdown-parse.js.map +1 -1
- package/dist/components/Masonry/Masonry.cjs.map +1 -1
- package/dist/components/Masonry/Masonry.js.map +1 -1
- package/dist/components/Masonry/Masonry.module.cjs.map +1 -1
- package/dist/components/Masonry/Masonry.module.js.map +1 -1
- package/dist/components/Masonry/masonry-layout.cjs.map +1 -1
- package/dist/components/Masonry/masonry-layout.js.map +1 -1
- package/dist/components/Menubar/Menubar.cjs.map +1 -1
- package/dist/components/Menubar/Menubar.js.map +1 -1
- package/dist/components/Menubar/Menubar.module.cjs.map +1 -1
- package/dist/components/Menubar/Menubar.module.js.map +1 -1
- package/dist/components/Modal/Modal.cjs.map +1 -1
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Modal/Modal.module.cjs.map +1 -1
- package/dist/components/Modal/Modal.module.js.map +1 -1
- package/dist/components/ModalsManager/ModalsManager.cjs.map +1 -1
- package/dist/components/ModalsManager/ModalsManager.js.map +1 -1
- package/dist/components/ModalsManager/ModalsManager.module.cjs.map +1 -1
- package/dist/components/ModalsManager/ModalsManager.module.js.map +1 -1
- package/dist/components/Money/Money.cjs.map +1 -1
- package/dist/components/Money/Money.js.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.cjs.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.module.cjs.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.module.js.map +1 -1
- package/dist/components/NProgress/NProgress.cjs.map +1 -1
- package/dist/components/NProgress/NProgress.js.map +1 -1
- package/dist/components/NProgress/NProgress.module.cjs.map +1 -1
- package/dist/components/NProgress/NProgress.module.js.map +1 -1
- package/dist/components/Navbar/Navbar.cjs.map +1 -1
- package/dist/components/Navbar/Navbar.js.map +1 -1
- package/dist/components/Navbar/Navbar.module.cjs.map +1 -1
- package/dist/components/Navbar/Navbar.module.js.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.js.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.module.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.module.js.map +1 -1
- package/dist/components/NavigationRail/NavigationRail.cjs.map +1 -1
- package/dist/components/NavigationRail/NavigationRail.js.map +1 -1
- package/dist/components/NavigationRail/NavigationRail.module.cjs.map +1 -1
- package/dist/components/NavigationRail/NavigationRail.module.js.map +1 -1
- package/dist/components/NotificationCenter/NotificationCenter.cjs.map +1 -1
- package/dist/components/NotificationCenter/NotificationCenter.js.map +1 -1
- package/dist/components/NotificationCenter/NotificationCenter.module.cjs.map +1 -1
- package/dist/components/NotificationCenter/NotificationCenter.module.js.map +1 -1
- package/dist/components/NotificationCenter/use-notification-inbox.cjs.map +1 -1
- package/dist/components/NotificationCenter/use-notification-inbox.js.map +1 -1
- package/dist/components/OfflineIndicator/OfflineIndicator.cjs.map +1 -1
- package/dist/components/OfflineIndicator/OfflineIndicator.js.map +1 -1
- package/dist/components/OfflineIndicator/OfflineIndicator.module.cjs.map +1 -1
- package/dist/components/OfflineIndicator/OfflineIndicator.module.js.map +1 -1
- package/dist/components/Page/Page.cjs.map +1 -1
- package/dist/components/Page/Page.js.map +1 -1
- package/dist/components/Page/Page.module.cjs.map +1 -1
- package/dist/components/Page/Page.module.js.map +1 -1
- package/dist/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Pagination/Pagination.module.cjs.map +1 -1
- package/dist/components/Pagination/Pagination.module.js.map +1 -1
- package/dist/components/PasswordInput/PasswordInput.cjs.map +1 -1
- package/dist/components/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/PasswordInput/PasswordInput.module.cjs.map +1 -1
- package/dist/components/PasswordInput/PasswordInput.module.js.map +1 -1
- package/dist/components/PinInput/PinInput.cjs.map +1 -1
- package/dist/components/PinInput/PinInput.js.map +1 -1
- package/dist/components/PinInput/PinInput.module.cjs.map +1 -1
- package/dist/components/PinInput/PinInput.module.js.map +1 -1
- package/dist/components/Popover/Popover.cjs.map +1 -1
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/Popover/Popover.module.cjs.map +1 -1
- package/dist/components/Popover/Popover.module.js.map +1 -1
- package/dist/components/Portal/Portal.cjs.map +1 -1
- package/dist/components/Portal/Portal.js.map +1 -1
- package/dist/components/Portal/anchor-position.cjs.map +1 -1
- package/dist/components/Portal/anchor-position.js.map +1 -1
- package/dist/components/Portal/escape-layer.cjs.map +1 -1
- package/dist/components/Portal/escape-layer.js.map +1 -1
- package/dist/components/Portal/portal-host.cjs.map +1 -1
- package/dist/components/Portal/portal-host.js.map +1 -1
- package/dist/components/Portal/tab-bridge.cjs +1 -1
- package/dist/components/Portal/tab-bridge.cjs.map +1 -1
- package/dist/components/Portal/tab-bridge.js +1 -5
- package/dist/components/Portal/tab-bridge.js.map +1 -1
- package/dist/components/Progress/Progress.cjs.map +1 -1
- package/dist/components/Progress/Progress.js.map +1 -1
- package/dist/components/Progress/Progress.module.cjs.map +1 -1
- package/dist/components/Progress/Progress.module.js.map +1 -1
- package/dist/components/QRCode/QRCode.cjs.map +1 -1
- package/dist/components/QRCode/QRCode.js.map +1 -1
- package/dist/components/QRCode/QRCode.module.cjs.map +1 -1
- package/dist/components/QRCode/QRCode.module.js.map +1 -1
- package/dist/components/QRCode/qr-encode.cjs +1 -1
- package/dist/components/QRCode/qr-encode.cjs.map +1 -1
- package/dist/components/QRCode/qr-encode.js +7 -13
- package/dist/components/QRCode/qr-encode.js.map +1 -1
- package/dist/components/QRCode/qr-tables.cjs.map +1 -1
- package/dist/components/QRCode/qr-tables.js.map +1 -1
- package/dist/components/Radio/Radio.cjs.map +1 -1
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/Radio/Radio.module.cjs.map +1 -1
- package/dist/components/Radio/Radio.module.js.map +1 -1
- package/dist/components/RangeSlider/RangeSlider.cjs.map +1 -1
- package/dist/components/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/components/RangeSlider/RangeSlider.module.cjs.map +1 -1
- package/dist/components/RangeSlider/RangeSlider.module.js.map +1 -1
- package/dist/components/RatingStars/RatingStars.cjs.map +1 -1
- package/dist/components/RatingStars/RatingStars.js.map +1 -1
- package/dist/components/RatingStars/RatingStars.module.cjs.map +1 -1
- package/dist/components/RatingStars/RatingStars.module.js.map +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.cjs +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.cjs.map +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.js +10 -18
- package/dist/components/RefreshIndicator/RefreshIndicator.js.map +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.module.cjs.map +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.module.js.map +1 -1
- package/dist/components/RelativeTime/RelativeTime.cjs.map +1 -1
- package/dist/components/RelativeTime/RelativeTime.js.map +1 -1
- package/dist/components/Resizable/Resizable.cjs +1 -1
- package/dist/components/Resizable/Resizable.cjs.map +1 -1
- package/dist/components/Resizable/Resizable.js +1 -9
- package/dist/components/Resizable/Resizable.js.map +1 -1
- package/dist/components/Resizable/Resizable.module.cjs.map +1 -1
- package/dist/components/Resizable/Resizable.module.js.map +1 -1
- package/dist/components/Responsive/Responsive.cjs.map +1 -1
- package/dist/components/Responsive/Responsive.js.map +1 -1
- package/dist/components/Reveal/Reveal.cjs.map +1 -1
- package/dist/components/Reveal/Reveal.js.map +1 -1
- package/dist/components/Reveal/Reveal.module.cjs.map +1 -1
- package/dist/components/Reveal/Reveal.module.js.map +1 -1
- package/dist/components/Reveal/reveal-threshold.cjs.map +1 -1
- package/dist/components/Reveal/reveal-threshold.js.map +1 -1
- package/dist/components/SafeArea/SafeArea.cjs.map +1 -1
- package/dist/components/SafeArea/SafeArea.js.map +1 -1
- package/dist/components/SafeArea/SafeArea.module.cjs.map +1 -1
- package/dist/components/SafeArea/SafeArea.module.js.map +1 -1
- package/dist/components/Scheduler/Scheduler.cjs.map +1 -1
- package/dist/components/Scheduler/Scheduler.js.map +1 -1
- package/dist/components/Scheduler/Scheduler.module.cjs.map +1 -1
- package/dist/components/Scheduler/Scheduler.module.js.map +1 -1
- package/dist/components/Scheduler/scheduler-layout.cjs.map +1 -1
- package/dist/components/Scheduler/scheduler-layout.js.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.cjs.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.js.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.module.cjs.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.module.js.map +1 -1
- package/dist/components/SearchBar/SearchBar.cjs.map +1 -1
- package/dist/components/SearchBar/SearchBar.js.map +1 -1
- package/dist/components/SearchBar/SearchBar.module.cjs.map +1 -1
- package/dist/components/SearchBar/SearchBar.module.js.map +1 -1
- package/dist/components/SectionHeader/SectionHeader.cjs.map +1 -1
- package/dist/components/SectionHeader/SectionHeader.js.map +1 -1
- package/dist/components/SectionHeader/SectionHeader.module.cjs.map +1 -1
- package/dist/components/SectionHeader/SectionHeader.module.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.module.cjs.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.module.js.map +1 -1
- package/dist/components/Select/CaretIcon.cjs.map +1 -1
- package/dist/components/Select/CaretIcon.js.map +1 -1
- package/dist/components/Select/Select.cjs.map +1 -1
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Select/Select.module.cjs.map +1 -1
- package/dist/components/Select/Select.module.js.map +1 -1
- package/dist/components/Select/options.cjs.map +1 -1
- package/dist/components/Select/options.js.map +1 -1
- package/dist/components/Sidebar/Sidebar.cjs +1 -1
- package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
- package/dist/components/Sidebar/Sidebar.js +13 -23
- package/dist/components/Sidebar/Sidebar.js.map +1 -1
- package/dist/components/Sidebar/Sidebar.module.cjs.map +1 -1
- package/dist/components/Sidebar/Sidebar.module.js.map +1 -1
- package/dist/components/Sidebar/SidebarEntry.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarEntry.js.map +1 -1
- package/dist/components/Sidebar/active-nav-key.cjs.map +1 -1
- package/dist/components/Sidebar/active-nav-key.js.map +1 -1
- package/dist/components/SignaturePad/SignaturePad.cjs +1 -1
- package/dist/components/SignaturePad/SignaturePad.cjs.map +1 -1
- package/dist/components/SignaturePad/SignaturePad.js +1 -5
- package/dist/components/SignaturePad/SignaturePad.js.map +1 -1
- package/dist/components/SignaturePad/SignaturePad.module.cjs.map +1 -1
- package/dist/components/SignaturePad/SignaturePad.module.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.module.cjs.map +1 -1
- package/dist/components/Skeleton/Skeleton.module.js.map +1 -1
- package/dist/components/Slider/Slider.cjs.map +1 -1
- package/dist/components/Slider/Slider.js.map +1 -1
- package/dist/components/Slider/Slider.module.cjs.map +1 -1
- package/dist/components/Slider/Slider.module.js.map +1 -1
- package/dist/components/Spacer/Spacer.cjs.map +1 -1
- package/dist/components/Spacer/Spacer.js.map +1 -1
- package/dist/components/Spacer/Spacer.module.cjs.map +1 -1
- package/dist/components/Spacer/Spacer.module.js.map +1 -1
- package/dist/components/Sparkline/Sparkline.cjs.map +1 -1
- package/dist/components/Sparkline/Sparkline.js.map +1 -1
- package/dist/components/Sparkline/Sparkline.module.cjs.map +1 -1
- package/dist/components/Sparkline/Sparkline.module.js.map +1 -1
- package/dist/components/Sparkline/sparkline-geometry.cjs.map +1 -1
- package/dist/components/Sparkline/sparkline-geometry.js.map +1 -1
- package/dist/components/Spinner/Spinner.cjs.map +1 -1
- package/dist/components/Spinner/Spinner.js.map +1 -1
- package/dist/components/Spinner/Spinner.module.cjs.map +1 -1
- package/dist/components/Spinner/Spinner.module.js.map +1 -1
- package/dist/components/Stat/Stat.cjs.map +1 -1
- package/dist/components/Stat/Stat.js.map +1 -1
- package/dist/components/Stat/Stat.module.cjs.map +1 -1
- package/dist/components/Stat/Stat.module.js.map +1 -1
- package/dist/components/Stepper/Stepper.cjs.map +1 -1
- package/dist/components/Stepper/Stepper.js.map +1 -1
- package/dist/components/Stepper/Stepper.module.cjs.map +1 -1
- package/dist/components/Stepper/Stepper.module.js.map +1 -1
- package/dist/components/StepperInput/StepperInput.cjs.map +1 -1
- package/dist/components/StepperInput/StepperInput.js.map +1 -1
- package/dist/components/StepperInput/StepperInput.module.cjs.map +1 -1
- package/dist/components/StepperInput/StepperInput.module.js.map +1 -1
- package/dist/components/Switch/Switch.cjs.map +1 -1
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Switch/Switch.module.cjs.map +1 -1
- package/dist/components/Switch/Switch.module.js.map +1 -1
- package/dist/components/SyncStatusBadge/SyncStatusBadge.cjs.map +1 -1
- package/dist/components/SyncStatusBadge/SyncStatusBadge.js.map +1 -1
- package/dist/components/SyncStatusBadge/SyncStatusBadge.module.cjs.map +1 -1
- package/dist/components/SyncStatusBadge/SyncStatusBadge.module.js.map +1 -1
- package/dist/components/Table/Table.cjs.map +1 -1
- package/dist/components/Table/Table.js.map +1 -1
- package/dist/components/Table/Table.module.cjs.map +1 -1
- package/dist/components/Table/Table.module.js.map +1 -1
- package/dist/components/Tabs/Tabs.cjs.map +1 -1
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/Tabs.module.cjs.map +1 -1
- package/dist/components/Tabs/Tabs.module.js.map +1 -1
- package/dist/components/Tag/Tag.cjs.map +1 -1
- package/dist/components/Tag/Tag.js.map +1 -1
- package/dist/components/Tag/Tag.module.cjs.map +1 -1
- package/dist/components/Tag/Tag.module.js.map +1 -1
- package/dist/components/Textarea/Textarea.cjs.map +1 -1
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/Textarea/Textarea.module.cjs.map +1 -1
- package/dist/components/Textarea/Textarea.module.js.map +1 -1
- package/dist/components/TimePicker/TimePicker.cjs.map +1 -1
- package/dist/components/TimePicker/TimePicker.js.map +1 -1
- package/dist/components/TimePicker/TimePicker.module.cjs.map +1 -1
- package/dist/components/TimePicker/TimePicker.module.js.map +1 -1
- package/dist/components/Timeline/Timeline.cjs.map +1 -1
- package/dist/components/Timeline/Timeline.js.map +1 -1
- package/dist/components/Timeline/Timeline.module.cjs.map +1 -1
- package/dist/components/Timeline/Timeline.module.js.map +1 -1
- package/dist/components/Toast/Toast.module.cjs.map +1 -1
- package/dist/components/Toast/Toast.module.js.map +1 -1
- package/dist/components/Toast/ToastProvider.cjs.map +1 -1
- package/dist/components/Toast/ToastProvider.js.map +1 -1
- package/dist/components/Toggle/Toggle.cjs.map +1 -1
- package/dist/components/Toggle/Toggle.js.map +1 -1
- package/dist/components/Toggle/Toggle.module.cjs.map +1 -1
- package/dist/components/Toggle/Toggle.module.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.module.cjs.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.module.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.module.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.module.js.map +1 -1
- package/dist/components/Tour/Tour.cjs +1 -1
- package/dist/components/Tour/Tour.cjs.map +1 -1
- package/dist/components/Tour/Tour.js +1 -5
- package/dist/components/Tour/Tour.js.map +1 -1
- package/dist/components/Tour/Tour.module.cjs.map +1 -1
- package/dist/components/Tour/Tour.module.js.map +1 -1
- package/dist/components/Tour/tour-position.cjs.map +1 -1
- package/dist/components/Tour/tour-position.js.map +1 -1
- package/dist/components/Transfer/Transfer.cjs.map +1 -1
- package/dist/components/Transfer/Transfer.js.map +1 -1
- package/dist/components/Transfer/Transfer.module.cjs.map +1 -1
- package/dist/components/Transfer/Transfer.module.js.map +1 -1
- package/dist/components/Transfer/transfer-state.cjs.map +1 -1
- package/dist/components/Transfer/transfer-state.js.map +1 -1
- package/dist/components/TreeView/TreeView.cjs.map +1 -1
- package/dist/components/TreeView/TreeView.js.map +1 -1
- package/dist/components/TreeView/TreeView.module.cjs.map +1 -1
- package/dist/components/TreeView/TreeView.module.js.map +1 -1
- package/dist/components/TruncateText/TruncateText.cjs.map +1 -1
- package/dist/components/TruncateText/TruncateText.js.map +1 -1
- package/dist/components/TruncateText/TruncateText.module.cjs.map +1 -1
- package/dist/components/TruncateText/TruncateText.module.js.map +1 -1
- package/dist/components/UpdatePrompt/UpdatePrompt.cjs.map +1 -1
- package/dist/components/UpdatePrompt/UpdatePrompt.js.map +1 -1
- package/dist/components/UpdatePrompt/UpdatePrompt.module.cjs.map +1 -1
- package/dist/components/UpdatePrompt/UpdatePrompt.module.js.map +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.cjs +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.cjs.map +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.js +1 -7
- package/dist/components/VideoPlayer/VideoPlayer.js.map +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.module.cjs.map +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.module.js.map +1 -1
- package/dist/components/VideoPlayer/playback-rates.cjs.map +1 -1
- package/dist/components/VideoPlayer/playback-rates.js.map +1 -1
- package/dist/components/VirtualList/VirtualList.cjs.map +1 -1
- package/dist/components/VirtualList/VirtualList.js.map +1 -1
- package/dist/components/VirtualList/VirtualList.module.cjs.map +1 -1
- package/dist/components/VirtualList/VirtualList.module.js.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.cjs.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.js.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.module.cjs.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.module.js.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.module.cjs.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.module.js.map +1 -1
- package/dist/components/Wizard/Wizard.cjs +1 -1
- package/dist/components/Wizard/Wizard.cjs.map +1 -1
- package/dist/components/Wizard/Wizard.js +4 -11
- package/dist/components/Wizard/Wizard.js.map +1 -1
- package/dist/components/Wizard/Wizard.module.cjs.map +1 -1
- package/dist/components/Wizard/Wizard.module.js.map +1 -1
- package/dist/data/create-data-provider.cjs.map +1 -1
- package/dist/data/create-data-provider.js.map +1 -1
- package/dist/data/data-provider-context.cjs.map +1 -1
- package/dist/data/data-provider-context.js.map +1 -1
- package/dist/data/use-resource.cjs.map +1 -1
- package/dist/data/use-resource.js.map +1 -1
- package/dist/editor/RichTextEditor.cjs.map +1 -1
- package/dist/editor/RichTextEditor.js.map +1 -1
- package/dist/editor/RichTextEditor.module.cjs.map +1 -1
- package/dist/editor/RichTextEditor.module.js.map +1 -1
- package/dist/editor.js +1 -2
- package/dist/error-boundary/ErrorBoundary.cjs.map +1 -1
- package/dist/error-boundary/ErrorBoundary.js.map +1 -1
- package/dist/error-boundary/use-error-handler.cjs.map +1 -1
- package/dist/error-boundary/use-error-handler.js.map +1 -1
- package/dist/feature-flags/FeatureFlagsProvider.cjs.map +1 -1
- package/dist/feature-flags/FeatureFlagsProvider.js.map +1 -1
- package/dist/feature-flags/growthbook-adapter.cjs.map +1 -1
- package/dist/feature-flags/growthbook-adapter.js.map +1 -1
- package/dist/feature-flags/in-memory-adapter.cjs.map +1 -1
- package/dist/feature-flags/in-memory-adapter.js.map +1 -1
- package/dist/feature-flags/launchdarkly-adapter.cjs.map +1 -1
- package/dist/feature-flags/launchdarkly-adapter.js.map +1 -1
- package/dist/forms/FormField.cjs.map +1 -1
- package/dist/forms/FormField.js.map +1 -1
- package/dist/forms/br-validators.cjs.map +1 -1
- package/dist/forms/br-validators.js.map +1 -1
- package/dist/forms/masked-inputs.cjs.map +1 -1
- package/dist/forms/masked-inputs.js.map +1 -1
- package/dist/forms/use-viacep.cjs.map +1 -1
- package/dist/forms/use-viacep.js.map +1 -1
- package/dist/forms/use-zod-form.cjs.map +1 -1
- package/dist/forms/use-zod-form.js.map +1 -1
- package/dist/forms/validate-form.cjs.map +1 -1
- package/dist/forms/validate-form.js.map +1 -1
- package/dist/forms/zod-resolver.cjs.map +1 -1
- package/dist/forms/zod-resolver.js.map +1 -1
- package/dist/geo/TrajectoryMap.cjs.map +1 -1
- package/dist/geo/TrajectoryMap.js.map +1 -1
- package/dist/geo/TrajectoryMap.module.cjs.map +1 -1
- package/dist/geo/TrajectoryMap.module.js.map +1 -1
- package/dist/geo/bounds.cjs.map +1 -1
- package/dist/geo/bounds.js.map +1 -1
- package/dist/geo/create-position-tracker.cjs +1 -1
- package/dist/geo/create-position-tracker.cjs.map +1 -1
- package/dist/geo/create-position-tracker.js +1 -7
- package/dist/geo/create-position-tracker.js.map +1 -1
- package/dist/geo/distance.cjs.map +1 -1
- package/dist/geo/distance.js.map +1 -1
- package/dist/geo/estimate.cjs.map +1 -1
- package/dist/geo/estimate.js.map +1 -1
- package/dist/geo/leaflet-map.cjs.map +1 -1
- package/dist/geo/leaflet-map.js.map +1 -1
- package/dist/geo/projection.cjs.map +1 -1
- package/dist/geo/projection.js.map +1 -1
- package/dist/geo/routing.cjs.map +1 -1
- package/dist/geo/routing.js.map +1 -1
- package/dist/geo/types.cjs.map +1 -1
- package/dist/geo/types.js.map +1 -1
- package/dist/geo/use-position-tracker.cjs.map +1 -1
- package/dist/geo/use-position-tracker.js.map +1 -1
- package/dist/hooks/pwa-env.cjs.map +1 -1
- package/dist/hooks/pwa-env.js.map +1 -1
- package/dist/hooks/tab-sequence.cjs.map +1 -1
- package/dist/hooks/tab-sequence.js.map +1 -1
- package/dist/hooks/use-announce.cjs +1 -1
- package/dist/hooks/use-announce.cjs.map +1 -1
- package/dist/hooks/use-announce.js +2 -2
- package/dist/hooks/use-announce.js.map +1 -1
- package/dist/hooks/use-async.cjs.map +1 -1
- package/dist/hooks/use-async.js.map +1 -1
- package/dist/hooks/use-before-install-prompt.cjs.map +1 -1
- package/dist/hooks/use-before-install-prompt.js.map +1 -1
- package/dist/hooks/use-breakpoint.cjs.map +1 -1
- package/dist/hooks/use-breakpoint.js.map +1 -1
- package/dist/hooks/use-click-outside.cjs.map +1 -1
- package/dist/hooks/use-click-outside.js.map +1 -1
- package/dist/hooks/use-client-filter.cjs.map +1 -1
- package/dist/hooks/use-client-filter.js.map +1 -1
- package/dist/hooks/use-clipboard.cjs.map +1 -1
- package/dist/hooks/use-clipboard.js.map +1 -1
- package/dist/hooks/use-countdown.cjs.map +1 -1
- package/dist/hooks/use-countdown.js.map +1 -1
- package/dist/hooks/use-counter.cjs.map +1 -1
- package/dist/hooks/use-counter.js.map +1 -1
- package/dist/hooks/use-debounce.cjs.map +1 -1
- package/dist/hooks/use-debounce.js.map +1 -1
- package/dist/hooks/use-deep-memo.cjs.map +1 -1
- package/dist/hooks/use-deep-memo.js.map +1 -1
- package/dist/hooks/use-disclosure.cjs.map +1 -1
- package/dist/hooks/use-disclosure.js.map +1 -1
- package/dist/hooks/use-document-title.cjs.map +1 -1
- package/dist/hooks/use-document-title.js.map +1 -1
- package/dist/hooks/use-document-visibility.cjs.map +1 -1
- package/dist/hooks/use-document-visibility.js.map +1 -1
- package/dist/hooks/use-draft-filters.cjs.map +1 -1
- package/dist/hooks/use-draft-filters.js.map +1 -1
- package/dist/hooks/use-event-listener.cjs.map +1 -1
- package/dist/hooks/use-event-listener.js.map +1 -1
- package/dist/hooks/use-favicon.cjs.map +1 -1
- package/dist/hooks/use-favicon.js.map +1 -1
- package/dist/hooks/use-focus-trap.cjs.map +1 -1
- package/dist/hooks/use-focus-trap.js.map +1 -1
- package/dist/hooks/use-fullscreen-element.cjs.map +1 -1
- package/dist/hooks/use-fullscreen-element.js.map +1 -1
- package/dist/hooks/use-fullscreen.cjs +1 -1
- package/dist/hooks/use-fullscreen.cjs.map +1 -1
- package/dist/hooks/use-fullscreen.js +7 -23
- package/dist/hooks/use-fullscreen.js.map +1 -1
- package/dist/hooks/use-geolocation.cjs.map +1 -1
- package/dist/hooks/use-geolocation.js.map +1 -1
- package/dist/hooks/use-hover.cjs.map +1 -1
- package/dist/hooks/use-hover.js.map +1 -1
- package/dist/hooks/use-idle.cjs.map +1 -1
- package/dist/hooks/use-idle.js.map +1 -1
- package/dist/hooks/use-install-prompt.cjs +1 -1
- package/dist/hooks/use-install-prompt.cjs.map +1 -1
- package/dist/hooks/use-install-prompt.js +1 -1
- package/dist/hooks/use-install-prompt.js.map +1 -1
- package/dist/hooks/use-intersection-observer.cjs.map +1 -1
- package/dist/hooks/use-intersection-observer.js.map +1 -1
- package/dist/hooks/use-interval.cjs.map +1 -1
- package/dist/hooks/use-interval.js.map +1 -1
- package/dist/hooks/use-is-first-render.cjs.map +1 -1
- package/dist/hooks/use-is-first-render.js.map +1 -1
- package/dist/hooks/use-keyboard-shortcut.cjs.map +1 -1
- package/dist/hooks/use-keyboard-shortcut.js.map +1 -1
- package/dist/hooks/use-latest-ref.cjs.map +1 -1
- package/dist/hooks/use-latest-ref.js.map +1 -1
- package/dist/hooks/use-list-state.cjs.map +1 -1
- package/dist/hooks/use-list-state.js.map +1 -1
- package/dist/hooks/use-local-storage.cjs +1 -1
- package/dist/hooks/use-local-storage.cjs.map +1 -1
- package/dist/hooks/use-local-storage.js +2 -5
- package/dist/hooks/use-local-storage.js.map +1 -1
- package/dist/hooks/use-long-press-handlers.cjs.map +1 -1
- package/dist/hooks/use-long-press-handlers.js.map +1 -1
- package/dist/hooks/use-long-press.cjs.map +1 -1
- package/dist/hooks/use-long-press.js.map +1 -1
- package/dist/hooks/use-map.cjs.map +1 -1
- package/dist/hooks/use-map.js.map +1 -1
- package/dist/hooks/use-media-devices.cjs.map +1 -1
- package/dist/hooks/use-media-devices.js.map +1 -1
- package/dist/hooks/use-media-permission.cjs +1 -1
- package/dist/hooks/use-media-permission.cjs.map +1 -1
- package/dist/hooks/use-media-permission.js +2 -5
- package/dist/hooks/use-media-permission.js.map +1 -1
- package/dist/hooks/use-media-query.cjs.map +1 -1
- package/dist/hooks/use-media-query.js.map +1 -1
- package/dist/hooks/use-object-url.cjs.map +1 -1
- package/dist/hooks/use-object-url.js.map +1 -1
- package/dist/hooks/use-online.cjs.map +1 -1
- package/dist/hooks/use-online.js.map +1 -1
- package/dist/hooks/use-pagination.cjs.map +1 -1
- package/dist/hooks/use-pagination.js.map +1 -1
- package/dist/hooks/use-previous.cjs.map +1 -1
- package/dist/hooks/use-previous.js.map +1 -1
- package/dist/hooks/use-push-to-talk.cjs.map +1 -1
- package/dist/hooks/use-push-to-talk.js.map +1 -1
- package/dist/hooks/use-queue.cjs.map +1 -1
- package/dist/hooks/use-queue.js.map +1 -1
- package/dist/hooks/use-resize-observer.cjs.map +1 -1
- package/dist/hooks/use-resize-observer.js.map +1 -1
- package/dist/hooks/use-scroll-lock.cjs.map +1 -1
- package/dist/hooks/use-scroll-lock.js.map +1 -1
- package/dist/hooks/use-scroll-overflow.cjs.map +1 -1
- package/dist/hooks/use-scroll-overflow.js.map +1 -1
- package/dist/hooks/use-service-worker-update.cjs.map +1 -1
- package/dist/hooks/use-service-worker-update.js.map +1 -1
- package/dist/hooks/use-set.cjs.map +1 -1
- package/dist/hooks/use-set.js.map +1 -1
- package/dist/hooks/use-sortable.cjs.map +1 -1
- package/dist/hooks/use-sortable.js.map +1 -1
- package/dist/hooks/use-stable-callback.cjs.map +1 -1
- package/dist/hooks/use-stable-callback.js.map +1 -1
- package/dist/hooks/use-storage-estimate.cjs.map +1 -1
- package/dist/hooks/use-storage-estimate.js.map +1 -1
- package/dist/hooks/use-throttle.cjs.map +1 -1
- package/dist/hooks/use-throttle.js.map +1 -1
- package/dist/hooks/use-timeout.cjs.map +1 -1
- package/dist/hooks/use-timeout.js.map +1 -1
- package/dist/hooks/use-toggle.cjs.map +1 -1
- package/dist/hooks/use-toggle.js.map +1 -1
- package/dist/hooks/use-typewriter.cjs.map +1 -1
- package/dist/hooks/use-typewriter.js.map +1 -1
- package/dist/hooks/use-window-size.cjs.map +1 -1
- package/dist/hooks/use-window-size.js.map +1 -1
- package/dist/http/api-client.cjs.map +1 -1
- package/dist/http/api-client.js.map +1 -1
- package/dist/http/build-url.cjs.map +1 -1
- package/dist/http/build-url.js.map +1 -1
- package/dist/http/credential-scope.cjs.map +1 -1
- package/dist/http/credential-scope.js.map +1 -1
- package/dist/http/csrf.cjs.map +1 -1
- package/dist/http/csrf.js.map +1 -1
- package/dist/http/decode-response.cjs.map +1 -1
- package/dist/http/decode-response.js.map +1 -1
- package/dist/http/describe-api-error.cjs.map +1 -1
- package/dist/http/describe-api-error.js.map +1 -1
- package/dist/http/errors.cjs.map +1 -1
- package/dist/http/errors.js.map +1 -1
- package/dist/http/idempotency.cjs.map +1 -1
- package/dist/http/idempotency.js.map +1 -1
- package/dist/http/parse-response.cjs.map +1 -1
- package/dist/http/parse-response.js.map +1 -1
- package/dist/http/resumable-upload.cjs.map +1 -1
- package/dist/http/resumable-upload.js.map +1 -1
- package/dist/http/retry.cjs.map +1 -1
- package/dist/http/retry.js.map +1 -1
- package/dist/http/timeout.cjs.map +1 -1
- package/dist/http/timeout.js.map +1 -1
- package/dist/http/upload-with-progress.cjs +1 -1
- package/dist/http/upload-with-progress.cjs.map +1 -1
- package/dist/http/upload-with-progress.js +2 -7
- package/dist/http/upload-with-progress.js.map +1 -1
- package/dist/http/use-describe-api-error.cjs.map +1 -1
- package/dist/http/use-describe-api-error.js.map +1 -1
- package/dist/http/use-poll.cjs +1 -1
- package/dist/http/use-poll.cjs.map +1 -1
- package/dist/http/use-poll.js +2 -5
- package/dist/http/use-poll.js.map +1 -1
- package/dist/i18n/I18nProvider.cjs.map +1 -1
- package/dist/i18n/I18nProvider.js.map +1 -1
- package/dist/i18n/create-i18n.cjs.map +1 -1
- package/dist/i18n/create-i18n.js.map +1 -1
- package/dist/icons/Icon.cjs.map +1 -1
- package/dist/icons/Icon.js.map +1 -1
- package/dist/icons/IconPicker.cjs.map +1 -1
- package/dist/icons/IconPicker.js.map +1 -1
- package/dist/icons/IconPicker.module.cjs.map +1 -1
- package/dist/icons/IconPicker.module.js.map +1 -1
- package/dist/icons/IconProvider.cjs.map +1 -1
- package/dist/icons/IconProvider.js.map +1 -1
- package/dist/icons/alias.cjs.map +1 -1
- package/dist/icons/alias.js.map +1 -1
- package/dist/icons/generated/aliases.cjs.map +1 -1
- package/dist/icons/generated/aliases.js.map +1 -1
- package/dist/icons/generated/icon-names.cjs.map +1 -1
- package/dist/icons/generated/icon-names.js.map +1 -1
- package/dist/icons/generated/loaders.cjs.map +1 -1
- package/dist/icons/generated/loaders.js.map +1 -1
- package/dist/icons/generated/shard-00.cjs.map +1 -1
- package/dist/icons/generated/shard-00.js.map +1 -1
- package/dist/icons/generated/shard-01.cjs.map +1 -1
- package/dist/icons/generated/shard-01.js.map +1 -1
- package/dist/icons/generated/shard-02.cjs.map +1 -1
- package/dist/icons/generated/shard-02.js.map +1 -1
- package/dist/icons/generated/shard-03.cjs.map +1 -1
- package/dist/icons/generated/shard-03.js.map +1 -1
- package/dist/icons/generated/shard-04.cjs.map +1 -1
- package/dist/icons/generated/shard-04.js.map +1 -1
- package/dist/icons/generated/shard-05.cjs.map +1 -1
- package/dist/icons/generated/shard-05.js.map +1 -1
- package/dist/icons/generated/shard-06.cjs.map +1 -1
- package/dist/icons/generated/shard-06.js.map +1 -1
- package/dist/icons/generated/shard-07.cjs.map +1 -1
- package/dist/icons/generated/shard-07.js.map +1 -1
- package/dist/icons/generated/shard-08.cjs.map +1 -1
- package/dist/icons/generated/shard-08.js.map +1 -1
- package/dist/icons/generated/shard-09.cjs.map +1 -1
- package/dist/icons/generated/shard-09.js.map +1 -1
- package/dist/icons/generated/shard-10.cjs.map +1 -1
- package/dist/icons/generated/shard-10.js.map +1 -1
- package/dist/icons/generated/shard-11.cjs.map +1 -1
- package/dist/icons/generated/shard-11.js.map +1 -1
- package/dist/icons/generated/shard-12.cjs.map +1 -1
- package/dist/icons/generated/shard-12.js.map +1 -1
- package/dist/icons/generated/shard-13.cjs.map +1 -1
- package/dist/icons/generated/shard-13.js.map +1 -1
- package/dist/icons/generated/shard-14.cjs.map +1 -1
- package/dist/icons/generated/shard-14.js.map +1 -1
- package/dist/icons/generated/shard-15.cjs.map +1 -1
- package/dist/icons/generated/shard-15.js.map +1 -1
- package/dist/icons/generated/shard-16.cjs.map +1 -1
- package/dist/icons/generated/shard-16.js.map +1 -1
- package/dist/icons/generated/shard-17.cjs.map +1 -1
- package/dist/icons/generated/shard-17.js.map +1 -1
- package/dist/icons/generated/shard-18.cjs.map +1 -1
- package/dist/icons/generated/shard-18.js.map +1 -1
- package/dist/icons/generated/shard-19.cjs.map +1 -1
- package/dist/icons/generated/shard-19.js.map +1 -1
- package/dist/icons/generated/shard-20.cjs.map +1 -1
- package/dist/icons/generated/shard-20.js.map +1 -1
- package/dist/icons/generated/shard-21.cjs.map +1 -1
- package/dist/icons/generated/shard-21.js.map +1 -1
- package/dist/icons/generated/shard-22.cjs.map +1 -1
- package/dist/icons/generated/shard-22.js.map +1 -1
- package/dist/icons/generated/shard-23.cjs.map +1 -1
- package/dist/icons/generated/shard-23.js.map +1 -1
- package/dist/icons/generated/shard-24.cjs.map +1 -1
- package/dist/icons/generated/shard-24.js.map +1 -1
- package/dist/icons/generated/shard-25.cjs.map +1 -1
- package/dist/icons/generated/shard-25.js.map +1 -1
- package/dist/icons/generated/shard-26.cjs.map +1 -1
- package/dist/icons/generated/shard-26.js.map +1 -1
- package/dist/icons/generated/shard-27.cjs.map +1 -1
- package/dist/icons/generated/shard-27.js.map +1 -1
- package/dist/icons/generated/shard-28.cjs.map +1 -1
- package/dist/icons/generated/shard-28.js.map +1 -1
- package/dist/icons/generated/shard-29.cjs.map +1 -1
- package/dist/icons/generated/shard-29.js.map +1 -1
- package/dist/icons/generated/shard-30.cjs.map +1 -1
- package/dist/icons/generated/shard-30.js.map +1 -1
- package/dist/icons/generated/shard-31.cjs.map +1 -1
- package/dist/icons/generated/shard-31.js.map +1 -1
- package/dist/icons/generated/shard-32.cjs.map +1 -1
- package/dist/icons/generated/shard-32.js.map +1 -1
- package/dist/icons/generated/shard-33.cjs.map +1 -1
- package/dist/icons/generated/shard-33.js.map +1 -1
- package/dist/icons/generated/shard-34.cjs.map +1 -1
- package/dist/icons/generated/shard-34.js.map +1 -1
- package/dist/icons/generated/shard-35.cjs.map +1 -1
- package/dist/icons/generated/shard-35.js.map +1 -1
- package/dist/icons/generated/shard-36.cjs.map +1 -1
- package/dist/icons/generated/shard-36.js.map +1 -1
- package/dist/icons/generated/shard-37.cjs.map +1 -1
- package/dist/icons/generated/shard-37.js.map +1 -1
- package/dist/icons/generated/shard-38.cjs.map +1 -1
- package/dist/icons/generated/shard-38.js.map +1 -1
- package/dist/icons/generated/shard-39.cjs.map +1 -1
- package/dist/icons/generated/shard-39.js.map +1 -1
- package/dist/icons/generated/shard-40.cjs.map +1 -1
- package/dist/icons/generated/shard-40.js.map +1 -1
- package/dist/icons/generated/shard-41.cjs.map +1 -1
- package/dist/icons/generated/shard-41.js.map +1 -1
- package/dist/icons/generated/shard-42.cjs.map +1 -1
- package/dist/icons/generated/shard-42.js.map +1 -1
- package/dist/icons/generated/shard-43.cjs.map +1 -1
- package/dist/icons/generated/shard-43.js.map +1 -1
- package/dist/icons/generated/shard-44.cjs.map +1 -1
- package/dist/icons/generated/shard-44.js.map +1 -1
- package/dist/icons/generated/shard-45.cjs.map +1 -1
- package/dist/icons/generated/shard-45.js.map +1 -1
- package/dist/icons/icon-context.cjs.map +1 -1
- package/dist/icons/icon-context.js.map +1 -1
- package/dist/icons/is-icon-name.cjs.map +1 -1
- package/dist/icons/is-icon-name.js.map +1 -1
- package/dist/icons/material-symbols.cjs.map +1 -1
- package/dist/icons/material-symbols.js.map +1 -1
- package/dist/icons/normalize-icon-name.cjs.map +1 -1
- package/dist/icons/normalize-icon-name.js.map +1 -1
- package/dist/icons/shard-cache.cjs +1 -1
- package/dist/icons/shard-cache.cjs.map +1 -1
- package/dist/icons/shard-cache.js +2 -5
- package/dist/icons/shard-cache.js.map +1 -1
- package/dist/icons/use-icon.cjs.map +1 -1
- package/dist/icons/use-icon.js.map +1 -1
- package/dist/icons/validate-icon-name.cjs.map +1 -1
- package/dist/icons/validate-icon-name.js.map +1 -1
- package/dist/icons-virtual.cjs.map +1 -1
- package/dist/icons-virtual.js.map +1 -1
- package/dist/imaging/canvas.cjs.map +1 -1
- package/dist/imaging/canvas.js.map +1 -1
- package/dist/imaging/compress.cjs.map +1 -1
- package/dist/imaging/compress.js.map +1 -1
- package/dist/imaging/decode.cjs.map +1 -1
- package/dist/imaging/decode.js.map +1 -1
- package/dist/imaging/encode.cjs.map +1 -1
- package/dist/imaging/encode.js.map +1 -1
- package/dist/imaging/exceptions.cjs.map +1 -1
- package/dist/imaging/exceptions.js.map +1 -1
- package/dist/imaging/frame.cjs.map +1 -1
- package/dist/imaging/frame.js.map +1 -1
- package/dist/imaging/thumbnails.cjs.map +1 -1
- package/dist/imaging/thumbnails.js.map +1 -1
- package/dist/imaging/transform.cjs.map +1 -1
- package/dist/imaging/transform.js.map +1 -1
- package/dist/imaging/use-image-processing.cjs.map +1 -1
- package/dist/imaging/use-image-processing.js.map +1 -1
- package/dist/logger/logger.cjs.map +1 -1
- package/dist/logger/logger.js.map +1 -1
- package/dist/neural.cjs.map +1 -1
- package/dist/neural.js.map +1 -1
- package/dist/oauth/GoogleSignIn.cjs +1 -1
- package/dist/oauth/GoogleSignIn.cjs.map +1 -1
- package/dist/oauth/GoogleSignIn.js +6 -9
- package/dist/oauth/GoogleSignIn.js.map +1 -1
- package/dist/oauth/callback.cjs.map +1 -1
- package/dist/oauth/callback.js.map +1 -1
- package/dist/oauth/use-oauth-callback.cjs.map +1 -1
- package/dist/oauth/use-oauth-callback.js.map +1 -1
- package/dist/offline/conflict.cjs.map +1 -1
- package/dist/offline/conflict.js.map +1 -1
- package/dist/offline/create-offline-database.cjs.map +1 -1
- package/dist/offline/create-offline-database.js.map +1 -1
- package/dist/offline/create-offline-store.cjs +1 -1
- package/dist/offline/create-offline-store.cjs.map +1 -1
- package/dist/offline/create-offline-store.js +1 -5
- package/dist/offline/create-offline-store.js.map +1 -1
- package/dist/offline/create-offline-sync.cjs +1 -1
- package/dist/offline/create-offline-sync.cjs.map +1 -1
- package/dist/offline/create-offline-sync.js +9 -14
- package/dist/offline/create-offline-sync.js.map +1 -1
- package/dist/offline/use-offline-sync.cjs.map +1 -1
- package/dist/offline/use-offline-sync.js.map +1 -1
- package/dist/perf/cache-size.cjs.map +1 -1
- package/dist/perf/cache-size.js.map +1 -1
- package/dist/perf/device.cjs.map +1 -1
- package/dist/perf/device.js.map +1 -1
- package/dist/perf/format.cjs.map +1 -1
- package/dist/perf/format.js.map +1 -1
- package/dist/perf/profiler.cjs.map +1 -1
- package/dist/perf/profiler.js.map +1 -1
- package/dist/push/use-push-subscription.cjs.map +1 -1
- package/dist/push/use-push-subscription.js.map +1 -1
- package/dist/push/utils.cjs.map +1 -1
- package/dist/push/utils.js.map +1 -1
- package/dist/push/web-push-client.cjs.map +1 -1
- package/dist/push/web-push-client.js.map +1 -1
- package/dist/query/QueryProvider.cjs.map +1 -1
- package/dist/query/QueryProvider.js.map +1 -1
- package/dist/query/constants.cjs.map +1 -1
- package/dist/query/constants.js.map +1 -1
- package/dist/query/create-query-keys.cjs.map +1 -1
- package/dist/query/create-query-keys.js.map +1 -1
- package/dist/query/foreign-client-warning.cjs.map +1 -1
- package/dist/query/foreign-client-warning.js.map +1 -1
- package/dist/query/offline-persistence.cjs +1 -1
- package/dist/query/offline-persistence.cjs.map +1 -1
- package/dist/query/offline-persistence.js +2 -10
- package/dist/query/offline-persistence.js.map +1 -1
- package/dist/query/optimistic.cjs.map +1 -1
- package/dist/query/optimistic.js.map +1 -1
- package/dist/query/pagination.cjs.map +1 -1
- package/dist/query/pagination.js.map +1 -1
- package/dist/query/retry-policy.cjs.map +1 -1
- package/dist/query/retry-policy.js.map +1 -1
- package/dist/query/use-cursor-query.cjs.map +1 -1
- package/dist/query/use-cursor-query.js.map +1 -1
- package/dist/query/use-offline-mutation.cjs.map +1 -1
- package/dist/query/use-offline-mutation.js.map +1 -1
- package/dist/query/use-paginated-query.cjs.map +1 -1
- package/dist/query/use-paginated-query.js.map +1 -1
- package/dist/router/AppRouter.cjs.map +1 -1
- package/dist/router/AppRouter.js.map +1 -1
- package/dist/router/RouteGuard.cjs.map +1 -1
- package/dist/router/RouteGuard.js.map +1 -1
- package/dist/router/index.js +2 -2
- package/dist/share/share-or-download.cjs.map +1 -1
- package/dist/share/share-or-download.js.map +1 -1
- package/dist/share/share.cjs.map +1 -1
- package/dist/share/share.js.map +1 -1
- package/dist/sse/create-event-stream.cjs.map +1 -1
- package/dist/sse/create-event-stream.js.map +1 -1
- package/dist/sse/use-event-stream.cjs.map +1 -1
- package/dist/sse/use-event-stream.js.map +1 -1
- package/dist/store/create-selectors.cjs.map +1 -1
- package/dist/store/create-selectors.js.map +1 -1
- package/dist/store/create-store.cjs.map +1 -1
- package/dist/store/create-store.js.map +1 -1
- package/dist/sw/background-sync.cjs.map +1 -1
- package/dist/sw/background-sync.js.map +1 -1
- package/dist/sw/cache-inspect.cjs.map +1 -1
- package/dist/sw/cache-inspect.js.map +1 -1
- package/dist/sw/cache.cjs +1 -1
- package/dist/sw/cache.cjs.map +1 -1
- package/dist/sw/cache.js +2 -6
- package/dist/sw/cache.js.map +1 -1
- package/dist/sw/create-push-handler.cjs.map +1 -1
- package/dist/sw/create-push-handler.js.map +1 -1
- package/dist/sw/credential-headers.cjs.map +1 -1
- package/dist/sw/credential-headers.js.map +1 -1
- package/dist/sw/periodic-sync.cjs.map +1 -1
- package/dist/sw/periodic-sync.js.map +1 -1
- package/dist/sw/register-service-worker.cjs.map +1 -1
- package/dist/sw/register-service-worker.js.map +1 -1
- package/dist/sw/session-data.cjs.map +1 -1
- package/dist/sw/session-data.js.map +1 -1
- package/dist/tabular/assets.cjs.map +1 -1
- package/dist/tabular/assets.js.map +1 -1
- package/dist/tabular/cache.cjs.map +1 -1
- package/dist/tabular/cache.js.map +1 -1
- package/dist/tabular/compact.cjs.map +1 -1
- package/dist/tabular/compact.js.map +1 -1
- package/dist/tabular/exceptions.cjs.map +1 -1
- package/dist/tabular/exceptions.js.map +1 -1
- package/dist/tabular/manifest.cjs.map +1 -1
- package/dist/tabular/manifest.js.map +1 -1
- package/dist/tabular/predictor.cjs.map +1 -1
- package/dist/tabular/predictor.js.map +1 -1
- package/dist/tabular/use-tabular-predictor.cjs.map +1 -1
- package/dist/tabular/use-tabular-predictor.js.map +1 -1
- package/dist/telemetry/TelemetryProvider.cjs.map +1 -1
- package/dist/telemetry/TelemetryProvider.js.map +1 -1
- package/dist/telemetry/app-error-adapter.cjs.map +1 -1
- package/dist/telemetry/app-error-adapter.js.map +1 -1
- package/dist/telemetry/app-error-queue.cjs.map +1 -1
- package/dist/telemetry/app-error-queue.js.map +1 -1
- package/dist/telemetry/app-error-reporter.cjs.map +1 -1
- package/dist/telemetry/app-error-reporter.js.map +1 -1
- package/dist/telemetry/app-error-schema.cjs.map +1 -1
- package/dist/telemetry/app-error-schema.js.map +1 -1
- package/dist/telemetry/app-error-transport.cjs.map +1 -1
- package/dist/telemetry/app-error-transport.js.map +1 -1
- package/dist/telemetry/console-adapter.cjs.map +1 -1
- package/dist/telemetry/console-adapter.js.map +1 -1
- package/dist/telemetry/describe-app-error.cjs.map +1 -1
- package/dist/telemetry/describe-app-error.js.map +1 -1
- package/dist/telemetry/posthog-adapter.cjs +1 -1
- package/dist/telemetry/posthog-adapter.cjs.map +1 -1
- package/dist/telemetry/posthog-adapter.js +1 -5
- package/dist/telemetry/posthog-adapter.js.map +1 -1
- package/dist/telemetry/sentry-adapter.cjs.map +1 -1
- package/dist/telemetry/sentry-adapter.js.map +1 -1
- package/dist/tempest-react-sdk.cjs +1 -1
- package/dist/tempest-react-sdk.d.ts +234 -3
- package/dist/tempest-react-sdk.js +85 -85
- package/dist/testing/create-mock-handlers.cjs.map +1 -1
- package/dist/testing/create-mock-handlers.js.map +1 -1
- package/dist/testing.js +1 -2
- package/dist/theme/ThemeProvider.cjs.map +1 -1
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/apply-theme.cjs.map +1 -1
- package/dist/theme/apply-theme.js.map +1 -1
- package/dist/theme/color.cjs.map +1 -1
- package/dist/theme/color.js.map +1 -1
- package/dist/theme/create-theme.cjs.map +1 -1
- package/dist/theme/create-theme.js.map +1 -1
- package/dist/theme/data-viz-ramps.cjs.map +1 -1
- package/dist/theme/data-viz-ramps.js.map +1 -1
- package/dist/theme/initial-theme.cjs.map +1 -1
- package/dist/theme/initial-theme.js.map +1 -1
- package/dist/theme/inverse-render.cjs.map +1 -1
- package/dist/theme/inverse-render.js.map +1 -1
- package/dist/theme/inverse-restore.cjs.map +1 -1
- package/dist/theme/inverse-restore.js.map +1 -1
- package/dist/theme/inverse-surface.cjs.map +1 -1
- package/dist/theme/inverse-surface.js.map +1 -1
- package/dist/theme/status-tokens.cjs.map +1 -1
- package/dist/theme/status-tokens.js.map +1 -1
- package/dist/theme/theme-presets.cjs.map +1 -1
- package/dist/theme/theme-presets.js.map +1 -1
- package/dist/utils/absent.cjs.map +1 -1
- package/dist/utils/absent.js.map +1 -1
- package/dist/utils/arrays.cjs.map +1 -1
- package/dist/utils/arrays.js.map +1 -1
- package/dist/utils/base64.cjs.map +1 -1
- package/dist/utils/base64.js.map +1 -1
- package/dist/utils/cn.cjs.map +1 -1
- package/dist/utils/cn.js.map +1 -1
- package/dist/utils/compare-values.cjs.map +1 -1
- package/dist/utils/compare-values.js.map +1 -1
- package/dist/utils/compressed-storage.cjs.map +1 -1
- package/dist/utils/compressed-storage.js.map +1 -1
- package/dist/utils/csv.cjs.map +1 -1
- package/dist/utils/csv.js.map +1 -1
- package/dist/utils/dev-mode.cjs.map +1 -1
- package/dist/utils/dev-mode.js.map +1 -1
- package/dist/utils/duplicate-instance.cjs.map +1 -1
- package/dist/utils/duplicate-instance.js.map +1 -1
- package/dist/utils/format.cjs.map +1 -1
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/functions.cjs +1 -1
- package/dist/utils/functions.cjs.map +1 -1
- package/dist/utils/functions.js +1 -1
- package/dist/utils/functions.js.map +1 -1
- package/dist/utils/guards.cjs.map +1 -1
- package/dist/utils/guards.js.map +1 -1
- package/dist/utils/ids.cjs.map +1 -1
- package/dist/utils/ids.js.map +1 -1
- package/dist/utils/intl-cache.cjs.map +1 -1
- package/dist/utils/intl-cache.js.map +1 -1
- package/dist/utils/json-frame.cjs.map +1 -1
- package/dist/utils/json-frame.js.map +1 -1
- package/dist/utils/numbers.cjs.map +1 -1
- package/dist/utils/numbers.js.map +1 -1
- package/dist/utils/objects.cjs.map +1 -1
- package/dist/utils/objects.js.map +1 -1
- package/dist/utils/owner-fingerprint.cjs.map +1 -1
- package/dist/utils/owner-fingerprint.js.map +1 -1
- package/dist/utils/promises.cjs.map +1 -1
- package/dist/utils/promises.js.map +1 -1
- package/dist/utils/relative-time.cjs.map +1 -1
- package/dist/utils/relative-time.js.map +1 -1
- package/dist/utils/safe-url.cjs.map +1 -1
- package/dist/utils/safe-url.js.map +1 -1
- package/dist/utils/schema-like.cjs.map +1 -1
- package/dist/utils/schema-like.js.map +1 -1
- package/dist/utils/storage.cjs +1 -1
- package/dist/utils/storage.cjs.map +1 -1
- package/dist/utils/storage.js +2 -2
- package/dist/utils/storage.js.map +1 -1
- package/dist/utils/strings.cjs.map +1 -1
- package/dist/utils/strings.js.map +1 -1
- package/dist/utils/xlsx.cjs.map +1 -1
- package/dist/utils/xlsx.js.map +1 -1
- package/dist/vision/core/canvas.cjs.map +1 -1
- package/dist/vision/core/canvas.js.map +1 -1
- package/dist/vision/core/dtypes.cjs.map +1 -1
- package/dist/vision/core/dtypes.js.map +1 -1
- package/dist/vision/core/exceptions.cjs.map +1 -1
- package/dist/vision/core/exceptions.js.map +1 -1
- package/dist/vision/core/graph.cjs.map +1 -1
- package/dist/vision/core/graph.js.map +1 -1
- package/dist/vision/core/metadata.cjs +1 -1
- package/dist/vision/core/metadata.cjs.map +1 -1
- package/dist/vision/core/metadata.js +9 -26
- package/dist/vision/core/metadata.js.map +1 -1
- package/dist/vision/core/providers.cjs.map +1 -1
- package/dist/vision/core/providers.js.map +1 -1
- package/dist/vision/core/session.cjs.map +1 -1
- package/dist/vision/core/session.js.map +1 -1
- package/dist/vision/core/timing.cjs.map +1 -1
- package/dist/vision/core/timing.js.map +1 -1
- package/dist/vision/fusion.cjs.map +1 -1
- package/dist/vision/fusion.js.map +1 -1
- package/dist/vision/index.cjs.map +1 -1
- package/dist/vision/index.js.map +1 -1
- package/dist/vision/io/image.cjs.map +1 -1
- package/dist/vision/io/image.js.map +1 -1
- package/dist/vision/labels.cjs.map +1 -1
- package/dist/vision/labels.js.map +1 -1
- package/dist/vision/luminance.cjs.map +1 -1
- package/dist/vision/luminance.js.map +1 -1
- package/dist/vision/normalization.cjs.map +1 -1
- package/dist/vision/normalization.js.map +1 -1
- package/dist/vision/postprocess/classification.cjs.map +1 -1
- package/dist/vision/postprocess/classification.js.map +1 -1
- package/dist/vision/postprocess/detection.cjs.map +1 -1
- package/dist/vision/postprocess/detection.js.map +1 -1
- package/dist/vision/postprocess/segmentation.cjs.map +1 -1
- package/dist/vision/postprocess/segmentation.js.map +1 -1
- package/dist/vision/preprocess/image.cjs.map +1 -1
- package/dist/vision/preprocess/image.js.map +1 -1
- package/dist/vision/preprocess/pipeline.cjs.map +1 -1
- package/dist/vision/preprocess/pipeline.js.map +1 -1
- package/dist/vision/results.cjs.map +1 -1
- package/dist/vision/results.js.map +1 -1
- package/dist/vision/tasks/base.cjs.map +1 -1
- package/dist/vision/tasks/base.js.map +1 -1
- package/dist/vision/tasks/classifier.cjs.map +1 -1
- package/dist/vision/tasks/classifier.js.map +1 -1
- package/dist/vision/tasks/detectClassify.cjs.map +1 -1
- package/dist/vision/tasks/detectClassify.js.map +1 -1
- package/dist/vision/tasks/detector.cjs.map +1 -1
- package/dist/vision/tasks/detector.js.map +1 -1
- package/dist/vision/tasks/segmenter.cjs.map +1 -1
- package/dist/vision/tasks/segmenter.js.map +1 -1
- package/dist/vision/types.cjs.map +1 -1
- package/dist/vision/types.js.map +1 -1
- package/dist/vision/use-camera-stream.cjs +1 -1
- package/dist/vision/use-camera-stream.cjs.map +1 -1
- package/dist/vision/use-camera-stream.js +3 -9
- package/dist/vision/use-camera-stream.js.map +1 -1
- package/dist/vision/use-live-luminance.cjs +1 -1
- package/dist/vision/use-live-luminance.cjs.map +1 -1
- package/dist/vision/use-live-luminance.js +1 -5
- package/dist/vision/use-live-luminance.js.map +1 -1
- package/dist/vite/base-url.cjs.map +1 -1
- package/dist/vite/base-url.js.map +1 -1
- package/dist/vite/create-vite-config.cjs.map +1 -1
- package/dist/vite/create-vite-config.js.map +1 -1
- package/dist/vite/narrow-tokens.cjs.map +1 -1
- package/dist/vite/narrow-tokens.js.map +1 -1
- package/dist/vite/tempest-csp.cjs +1 -1
- package/dist/vite/tempest-csp.cjs.map +1 -1
- package/dist/vite/tempest-csp.js +2 -10
- package/dist/vite/tempest-csp.js.map +1 -1
- package/dist/vite/tempest-icons.cjs.map +1 -1
- package/dist/vite/tempest-icons.js.map +1 -1
- package/dist/vite/tempest-pwa-dev-sw.cjs +1 -1
- package/dist/vite/tempest-pwa-dev-sw.cjs.map +1 -1
- package/dist/vite/tempest-pwa-dev-sw.js +9 -16
- package/dist/vite/tempest-pwa-dev-sw.js.map +1 -1
- package/dist/vite/tempest-pwa-icons.cjs.map +1 -1
- package/dist/vite/tempest-pwa-icons.js.map +1 -1
- package/dist/vite/tempest-pwa-manifest.cjs.map +1 -1
- package/dist/vite/tempest-pwa-manifest.js.map +1 -1
- package/dist/vite/tempest-styles.cjs.map +1 -1
- package/dist/vite/tempest-styles.js.map +1 -1
- package/dist/vite/tempest-vitest.cjs.map +1 -1
- package/dist/vite/tempest-vitest.js.map +1 -1
- package/dist/webrtc/link-stats.cjs.map +1 -1
- package/dist/webrtc/link-stats.js.map +1 -1
- package/dist/webrtc/mesh-quality.cjs.map +1 -1
- package/dist/webrtc/mesh-quality.js.map +1 -1
- package/dist/webrtc/opus-sdp.cjs.map +1 -1
- package/dist/webrtc/opus-sdp.js.map +1 -1
- package/dist/webrtc/peer-link.cjs +1 -1
- package/dist/webrtc/peer-link.cjs.map +1 -1
- package/dist/webrtc/peer-link.js +2 -5
- package/dist/webrtc/peer-link.js.map +1 -1
- package/dist/webrtc/peer-mesh.cjs +1 -1
- package/dist/webrtc/peer-mesh.cjs.map +1 -1
- package/dist/webrtc/peer-mesh.js +8 -24
- package/dist/webrtc/peer-mesh.js.map +1 -1
- package/dist/webrtc/sender-bitrate.cjs.map +1 -1
- package/dist/webrtc/sender-bitrate.js.map +1 -1
- package/dist/webrtc/use-link-stats.cjs.map +1 -1
- package/dist/webrtc/use-link-stats.js.map +1 -1
- package/dist/ws/create-web-socket.cjs +1 -1
- package/dist/ws/create-web-socket.cjs.map +1 -1
- package/dist/ws/create-web-socket.js +4 -22
- package/dist/ws/create-web-socket.js.map +1 -1
- package/dist/ws/resilience.cjs.map +1 -1
- package/dist/ws/resilience.js.map +1 -1
- package/dist/ws/use-web-socket.cjs.map +1 -1
- package/dist/ws/use-web-socket.js.map +1 -1
- package/package.json +9 -6
- package/template/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-list-state.cjs","names":[],"sources":["../../src/hooks/use-list-state.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface ReorderPayload {\n from: number;\n to: number;\n}\n\nexport interface ListStateHandlers<T> {\n append: (...items: T[]) => void;\n prepend: (...items: T[]) => void;\n insert: (index: number, ...items: T[]) => void;\n remove: (...indices: number[]) => void;\n reorder: (payload: ReorderPayload) => void;\n setItem: (index: number, item: T) => void;\n setState: (items: T[]) => void;\n apply: (fn: (item: T, index: number) => T) => void;\n clear: () => void;\n}\n\n/**\n * Manage an array as state with a rich set of immutable handlers.\n *\n * @typeParam T - element type.\n * @param initial - initial list (default `[]`).\n * @returns Tuple `[list, handlers]`.\n */\nexport function useListState<T>(initial: T[] = []): [T[], ListStateHandlers<T>] {\n const [list, setList] = useState<T[]>(initial);\n\n const append = useCallback((...items: T[]): void => {\n setList((current) => [...current, ...items]);\n }, []);\n\n const prepend = useCallback((...items: T[]): void => {\n setList((current) => [...items, ...current]);\n }, []);\n\n const insert = useCallback((index: number, ...items: T[]): void => {\n setList((current) => [...current.slice(0, index), ...items, ...current.slice(index)]);\n }, []);\n\n const remove = useCallback((...indices: number[]): void => {\n const drop = new Set(indices);\n setList((current) => current.filter((_, index) => !drop.has(index)));\n }, []);\n\n const reorder = useCallback(({ from, to }: ReorderPayload): void => {\n setList((current) => {\n const next = [...current];\n const [moved] = next.splice(from, 1);\n next.splice(to, 0, moved);\n return next;\n });\n }, []);\n\n const setItem = useCallback((index: number, item: T): void => {\n setList((current) => current.map((value, i) => (i === index ? item : value)));\n }, []);\n\n const setState = useCallback((items: T[]): void => setList(items), []);\n\n const apply = useCallback((fn: (item: T, index: number) => T): void => {\n setList((current) => current.map(fn));\n }, []);\n\n const clear = useCallback((): void => setList([]), []);\n\n const handlers = useMemo<ListStateHandlers<T>>(\n () => ({\n append,\n prepend,\n insert,\n remove,\n reorder,\n setItem,\n setState,\n apply,\n clear,\n }),\n [append, prepend, insert, remove, reorder, setItem, setState, apply, clear],\n );\n\n return [list, handlers];\n}\n"],"mappings":"uBA0BA,
|
|
1
|
+
{"version":3,"file":"use-list-state.cjs","names":["useState","useCallback","useMemo","react","useListState","list","setList","initial","append","items","current","prepend","insert","index","remove","indices","drop","reorder","next","moved","from","to","setItem","i","item","value","setState","apply","fn","clear"],"sources":["../../src/hooks/use-list-state.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface ReorderPayload {\n from: number;\n to: number;\n}\n\nexport interface ListStateHandlers<T> {\n append: (...items: T[]) => void;\n prepend: (...items: T[]) => void;\n insert: (index: number, ...items: T[]) => void;\n remove: (...indices: number[]) => void;\n reorder: (payload: ReorderPayload) => void;\n setItem: (index: number, item: T) => void;\n setState: (items: T[]) => void;\n apply: (fn: (item: T, index: number) => T) => void;\n clear: () => void;\n}\n\n/**\n * Manage an array as state with a rich set of immutable handlers.\n *\n * @typeParam T - element type.\n * @param initial - initial list (default `[]`).\n * @returns Tuple `[list, handlers]`.\n */\nexport function useListState<T>(initial: T[] = []): [T[], ListStateHandlers<T>] {\n const [list, setList] = useState<T[]>(initial);\n\n const append = useCallback((...items: T[]): void => {\n setList((current) => [...current, ...items]);\n }, []);\n\n const prepend = useCallback((...items: T[]): void => {\n setList((current) => [...items, ...current]);\n }, []);\n\n const insert = useCallback((index: number, ...items: T[]): void => {\n setList((current) => [...current.slice(0, index), ...items, ...current.slice(index)]);\n }, []);\n\n const remove = useCallback((...indices: number[]): void => {\n const drop = new Set(indices);\n setList((current) => current.filter((_, index) => !drop.has(index)));\n }, []);\n\n const reorder = useCallback(({ from, to }: ReorderPayload): void => {\n setList((current) => {\n const next = [...current];\n const [moved] = next.splice(from, 1);\n next.splice(to, 0, moved);\n return next;\n });\n }, []);\n\n const setItem = useCallback((index: number, item: T): void => {\n setList((current) => current.map((value, i) => (i === index ? item : value)));\n }, []);\n\n const setState = useCallback((items: T[]): void => setList(items), []);\n\n const apply = useCallback((fn: (item: T, index: number) => T): void => {\n setList((current) => current.map(fn));\n }, []);\n\n const clear = useCallback((): void => setList([]), []);\n\n const handlers = useMemo<ListStateHandlers<T>>(\n () => ({\n append,\n prepend,\n insert,\n remove,\n reorder,\n setItem,\n setState,\n apply,\n clear,\n }),\n [append, prepend, insert, remove, reorder, setItem, setState, apply, clear],\n );\n\n return [list, handlers];\n}\n"],"mappings":"A,uBA0BA,SAAgBI,EAAgB,EAAe,CAAC,EAAgC,CAC5E,GAAM,CAACC,EAAMC,IAAA,EAAWN,EAAAA,SAAAA,CAAcO,CAAO,EAEvCC,GAAA,EAASP,EAAAA,YAAAA,EAAa,GAAGQ,IAAqB,CAChDH,EAAS,GAAY,CAAC,GAAGI,EAAS,GAAGD,CAAK,CAAC,CAC/C,EAAG,CAAC,CAAC,EAECE,GAAA,EAAUV,EAAAA,YAAAA,EAAa,GAAGQ,IAAqB,CACjDH,EAAS,GAAY,CAAC,GAAGG,EAAO,GAAGC,CAAO,CAAC,CAC/C,EAAG,CAAC,CAAC,EAECE,GAAA,EAASX,EAAAA,YAAAA,EAAa,EAAe,GAAGQ,IAAqB,CAC/DH,EAAS,GAAY,CAAC,GAAGI,EAAQ,MAAM,EAAGG,CAAK,EAAG,GAAGJ,EAAO,GAAGC,EAAQ,MAAMG,CAAK,CAAC,CAAC,CACxF,EAAG,CAAC,CAAC,EAECC,GAAA,EAASb,EAAAA,YAAAA,EAAa,GAAGc,IAA4B,CACvD,IAAMC,EAAO,IAAI,IAAID,CAAO,EAC5BT,EAAS,GAAYI,EAAQ,QAAQ,EAAG,IAAU,CAACM,EAAK,IAAIH,CAAK,CAAC,CAAC,CACvE,EAAG,CAAC,CAAC,EAECI,GAAA,EAAUhB,EAAAA,YAAAA,EAAa,CAAE,OAAM,QAA+B,CAChEK,EAAS,GAAY,CACjB,IAAMY,EAAO,CAAC,GAAGR,CAAO,EAClB,CAACS,GAASD,EAAK,OAAOE,EAAM,CAAC,EAEnC,OADAF,EAAK,OAAOG,EAAI,EAAGF,CAAK,EACjBD,CACX,CAAC,CACL,EAAG,CAAC,CAAC,EAECI,GAAA,EAAUrB,EAAAA,YAAAA,EAAa,EAAe,IAAkB,CAC1DK,EAAS,GAAYI,EAAQ,KAAK,EAAO,IAAOa,IAAMV,EAAQW,EAAOC,CAAM,CAAC,CAChF,EAAG,CAAC,CAAC,EAECC,GAAA,EAAWzB,EAAAA,YAAAA,CAAa,GAAqBK,EAAQG,CAAK,EAAG,CAAC,CAAC,EAE/DkB,GAAA,EAAQ1B,EAAAA,YAAAA,CAAa,GAA4C,CACnEK,EAAS,GAAYI,EAAQ,IAAIkB,CAAE,CAAC,CACxC,EAAG,CAAC,CAAC,EAECC,GAAA,EAAQ5B,EAAAA,YAAAA,KAAwBK,EAAQ,CAAC,CAAC,EAAG,CAAC,CAAC,EAiBrD,MAAO,CAACD,GAAA,EAfSH,EAAAA,QAAAA,MACN,CACH,SACA,UACA,SACA,SACA,UACA,UACA,WACA,QACA,OACJ,GACA,CAACM,EAAQG,EAASC,EAAQE,EAAQG,EAASK,EAASI,EAAUC,EAAOE,CAAK,CAGhE,CAAQ,CAC1B,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-list-state.js","names":[],"sources":["../../src/hooks/use-list-state.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface ReorderPayload {\n from: number;\n to: number;\n}\n\nexport interface ListStateHandlers<T> {\n append: (...items: T[]) => void;\n prepend: (...items: T[]) => void;\n insert: (index: number, ...items: T[]) => void;\n remove: (...indices: number[]) => void;\n reorder: (payload: ReorderPayload) => void;\n setItem: (index: number, item: T) => void;\n setState: (items: T[]) => void;\n apply: (fn: (item: T, index: number) => T) => void;\n clear: () => void;\n}\n\n/**\n * Manage an array as state with a rich set of immutable handlers.\n *\n * @typeParam T - element type.\n * @param initial - initial list (default `[]`).\n * @returns Tuple `[list, handlers]`.\n */\nexport function useListState<T>(initial: T[] = []): [T[], ListStateHandlers<T>] {\n const [list, setList] = useState<T[]>(initial);\n\n const append = useCallback((...items: T[]): void => {\n setList((current) => [...current, ...items]);\n }, []);\n\n const prepend = useCallback((...items: T[]): void => {\n setList((current) => [...items, ...current]);\n }, []);\n\n const insert = useCallback((index: number, ...items: T[]): void => {\n setList((current) => [...current.slice(0, index), ...items, ...current.slice(index)]);\n }, []);\n\n const remove = useCallback((...indices: number[]): void => {\n const drop = new Set(indices);\n setList((current) => current.filter((_, index) => !drop.has(index)));\n }, []);\n\n const reorder = useCallback(({ from, to }: ReorderPayload): void => {\n setList((current) => {\n const next = [...current];\n const [moved] = next.splice(from, 1);\n next.splice(to, 0, moved);\n return next;\n });\n }, []);\n\n const setItem = useCallback((index: number, item: T): void => {\n setList((current) => current.map((value, i) => (i === index ? item : value)));\n }, []);\n\n const setState = useCallback((items: T[]): void => setList(items), []);\n\n const apply = useCallback((fn: (item: T, index: number) => T): void => {\n setList((current) => current.map(fn));\n }, []);\n\n const clear = useCallback((): void => setList([]), []);\n\n const handlers = useMemo<ListStateHandlers<T>>(\n () => ({\n append,\n prepend,\n insert,\n remove,\n reorder,\n setItem,\n setState,\n apply,\n clear,\n }),\n [append, prepend, insert, remove, reorder, setItem, setState, apply, clear],\n );\n\n return [list, handlers];\n}\n"],"mappings":";;AA0BA,
|
|
1
|
+
{"version":3,"file":"use-list-state.js","names":["useListState","list","setList","useState","initial","append","useCallback","items","current","prepend","insert","index","remove","indices","drop","reorder","next","moved","from","to","setItem","i","item","value","setState","apply","fn","clear","useMemo"],"sources":["../../src/hooks/use-list-state.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface ReorderPayload {\n from: number;\n to: number;\n}\n\nexport interface ListStateHandlers<T> {\n append: (...items: T[]) => void;\n prepend: (...items: T[]) => void;\n insert: (index: number, ...items: T[]) => void;\n remove: (...indices: number[]) => void;\n reorder: (payload: ReorderPayload) => void;\n setItem: (index: number, item: T) => void;\n setState: (items: T[]) => void;\n apply: (fn: (item: T, index: number) => T) => void;\n clear: () => void;\n}\n\n/**\n * Manage an array as state with a rich set of immutable handlers.\n *\n * @typeParam T - element type.\n * @param initial - initial list (default `[]`).\n * @returns Tuple `[list, handlers]`.\n */\nexport function useListState<T>(initial: T[] = []): [T[], ListStateHandlers<T>] {\n const [list, setList] = useState<T[]>(initial);\n\n const append = useCallback((...items: T[]): void => {\n setList((current) => [...current, ...items]);\n }, []);\n\n const prepend = useCallback((...items: T[]): void => {\n setList((current) => [...items, ...current]);\n }, []);\n\n const insert = useCallback((index: number, ...items: T[]): void => {\n setList((current) => [...current.slice(0, index), ...items, ...current.slice(index)]);\n }, []);\n\n const remove = useCallback((...indices: number[]): void => {\n const drop = new Set(indices);\n setList((current) => current.filter((_, index) => !drop.has(index)));\n }, []);\n\n const reorder = useCallback(({ from, to }: ReorderPayload): void => {\n setList((current) => {\n const next = [...current];\n const [moved] = next.splice(from, 1);\n next.splice(to, 0, moved);\n return next;\n });\n }, []);\n\n const setItem = useCallback((index: number, item: T): void => {\n setList((current) => current.map((value, i) => (i === index ? item : value)));\n }, []);\n\n const setState = useCallback((items: T[]): void => setList(items), []);\n\n const apply = useCallback((fn: (item: T, index: number) => T): void => {\n setList((current) => current.map(fn));\n }, []);\n\n const clear = useCallback((): void => setList([]), []);\n\n const handlers = useMemo<ListStateHandlers<T>>(\n () => ({\n append,\n prepend,\n insert,\n remove,\n reorder,\n setItem,\n setState,\n apply,\n clear,\n }),\n [append, prepend, insert, remove, reorder, setItem, setState, apply, clear],\n );\n\n return [list, handlers];\n}\n"],"mappings":";;AA0BA,SAAgBA,EAAgB,IAAe,CAAC,GAAgC;CAC5E,IAAM,CAACC,GAAMC,KAAWC,EAAcC,CAAO,GAEvCC,IAASC,GAAa,GAAGC,MAAqB;EAChD,GAAS,MAAY,CAAC,GAAGC,GAAS,GAAGD,CAAK,CAAC;CAC/C,GAAG,CAAC,CAAC,GAECE,IAAUH,GAAa,GAAGC,MAAqB;EACjD,GAAS,MAAY,CAAC,GAAGA,GAAO,GAAGC,CAAO,CAAC;CAC/C,GAAG,CAAC,CAAC,GAECE,IAASJ,GAAa,GAAe,GAAGC,MAAqB;EAC/D,GAAS,MAAY;GAAC,GAAGC,EAAQ,MAAM,GAAGG,CAAK;GAAG,GAAGJ;GAAO,GAAGC,EAAQ,MAAMG,CAAK;EAAC,CAAC;CACxF,GAAG,CAAC,CAAC,GAECC,IAASN,GAAa,GAAGO,MAA4B;EACvD,IAAMC,IAAO,IAAI,IAAID,CAAO;EAC5B,GAAS,MAAYL,EAAQ,QAAQ,GAAG,MAAU,CAACM,EAAK,IAAIH,CAAK,CAAC,CAAC;CACvE,GAAG,CAAC,CAAC,GAECI,IAAUT,GAAa,EAAE,SAAM,YAA+B;EAChE,GAAS,MAAY;GACjB,IAAMU,IAAO,CAAC,GAAGR,CAAO,GAClB,CAACS,KAASD,EAAK,OAAOE,GAAM,CAAC;GAEnC,OADAF,EAAK,OAAOG,GAAI,GAAGF,CAAK,GACjBD;EACX,CAAC;CACL,GAAG,CAAC,CAAC,GAECI,IAAUd,GAAa,GAAe,MAAkB;EAC1D,GAAS,MAAYE,EAAQ,KAAK,GAAO,MAAOa,MAAMV,IAAQW,IAAOC,CAAM,CAAC;CAChF,GAAG,CAAC,CAAC,GAECC,IAAWlB,GAAa,MAAqBJ,EAAQK,CAAK,GAAG,CAAC,CAAC,GAE/DkB,IAAQnB,GAAa,MAA4C;EACnE,GAAS,MAAYE,EAAQ,IAAIkB,CAAE,CAAC;CACxC,GAAG,CAAC,CAAC,GAECC,IAAQrB,QAAwBJ,EAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;CAiBrD,OAAO,CAACD,GAfS2B,SACN;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACJ,IACA;EAACvB;EAAQI;EAASC;EAAQE;EAAQG;EAASK;EAASI;EAAUC;EAAOE;CAAK,CAGhE,CAAQ;AAC1B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
let e=require("react");var t=JSON.stringify,n=e=>JSON.parse(e);function r(r,i,a={}){let o=a.serialize??t,s=a.deserialize??n,c=(0,e.useCallback)(()=>{if(typeof window>`u`)return i;try{let e=window.localStorage.getItem(r);return e===null?i:s(e)}catch{return i}},[r,i,s]),[l,u]=(0,e.useState)(c);(0,e.useEffect)(()=>{u(c())},[c]);let d=(0,e.useCallback)(e=>{u(t=>{let n=typeof e==`function`?e(t):e;try{typeof window<`u`&&window.localStorage.setItem(r,o(n))}catch{}return n})},[r,o]),f=(0,e.useCallback)(()=>{try{typeof window<`u`&&window.localStorage.removeItem(r)}catch{}u(i)},[r,i]);return(0,e.useEffect)(()=>{if(typeof window>`u`)return;let e=e=>{if(e.key===r){if(e.newValue===null)
|
|
1
|
+
let e=require("react");var t=JSON.stringify,n=e=>JSON.parse(e);function r(r,i,a={}){let o=a.serialize??t,s=a.deserialize??n,c=(0,e.useCallback)(()=>{if(typeof window>`u`)return i;try{let e=window.localStorage.getItem(r);return e===null?i:s(e)}catch{return i}},[r,i,s]),[l,u]=(0,e.useState)(c);(0,e.useEffect)(()=>{u(c())},[c]);let d=(0,e.useCallback)(e=>{u(t=>{let n=typeof e==`function`?e(t):e;try{typeof window<`u`&&window.localStorage.setItem(r,o(n))}catch{}return n})},[r,o]),f=(0,e.useCallback)(()=>{try{typeof window<`u`&&window.localStorage.removeItem(r)}catch{}u(i)},[r,i]);return(0,e.useEffect)(()=>{if(typeof window>`u`)return;let e=e=>{if(e.key===r){if(e.newValue===null)u(i);else try{u(s(e.newValue))}catch{}}};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[r,i,s]),[l,d,f]}exports.useLocalStorage=r;
|
|
2
2
|
//# sourceMappingURL=use-local-storage.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-local-storage.cjs","names":[],"sources":["../../src/hooks/use-local-storage.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\nexport type LocalStorageOptions<T> = {\n serialize?: (value: T) => string;\n deserialize?: (raw: string) => T;\n};\n\nconst defaultSerialize = JSON.stringify;\nconst defaultDeserialize = <T>(raw: string): T => JSON.parse(raw) as T;\n\n/**\n * State synced with `localStorage`. SSR-safe — initial render returns the\n * provided default; the stored value is hydrated after mount. Updates to the\n * same key in other tabs are picked up via the `storage` event.\n *\n * @tempest-limits empty-catch — the three swallows here are the hook's contract.\n * A write that hits the quota (or Safari private mode) still updates React state,\n * so the session keeps working and only persistence is lost; a `storage` event\n * carrying a value this tab cannot deserialize is another tab's bug, and the\n * useful response is to keep the value already rendered rather than tear the\n * component down over a foreign write.\n *\n * @param key - localStorage key.\n * @param defaultValue - value used when nothing is stored or in SSR.\n * @param options - custom `serialize` / `deserialize` (default JSON).\n * @returns Tuple `[value, setValue, remove]`.\n */\nexport function useLocalStorage<T>(\n key: string,\n defaultValue: T,\n options: LocalStorageOptions<T> = {},\n): [T, (value: T | ((prev: T) => T)) => void, () => void] {\n const serialize = options.serialize ?? defaultSerialize;\n const deserialize = options.deserialize ?? defaultDeserialize;\n\n const read = useCallback((): T => {\n if (typeof window === \"undefined\") return defaultValue;\n try {\n const raw = window.localStorage.getItem(key);\n if (raw === null) return defaultValue;\n return deserialize(raw);\n } catch {\n return defaultValue;\n }\n }, [key, defaultValue, deserialize]);\n\n const [value, setStored] = useState<T>(read);\n\n useEffect(() => {\n setStored(read());\n }, [read]);\n\n const setValue = useCallback(\n (next: T | ((prev: T) => T)): void => {\n setStored((current) => {\n const resolved =\n typeof next === \"function\" ? (next as (prev: T) => T)(current) : next;\n try {\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(key, serialize(resolved));\n }\n } catch {\n /* empty */\n }\n return resolved;\n });\n },\n [key, serialize],\n );\n\n const remove = useCallback((): void => {\n try {\n if (typeof window !== \"undefined\") {\n window.localStorage.removeItem(key);\n }\n } catch {\n /* empty */\n }\n setStored(defaultValue);\n }, [key, defaultValue]);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const onStorage = (event: StorageEvent): void => {\n if (event.key !== key) return;\n if (event.newValue === null) {\n setStored(defaultValue);\n return;\n }\n try {\n setStored(deserialize(event.newValue));\n } catch {\n /* empty */\n }\n };\n window.addEventListener(\"storage\", onStorage);\n return () => window.removeEventListener(\"storage\", onStorage);\n }, [key, defaultValue, deserialize]);\n\n return [value, setValue, remove];\n}\n"],"mappings":"uBAOA,
|
|
1
|
+
{"version":3,"file":"use-local-storage.cjs","names":["useCallback","useState","react","defaultSerialize","defaultDeserialize","raw","useLocalStorage","serialize","options","deserialize","read","defaultValue","key","value","setStored","setValue","resolved","next","current","remove","onStorage","event"],"sources":["../../src/hooks/use-local-storage.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\nexport type LocalStorageOptions<T> = {\n serialize?: (value: T) => string;\n deserialize?: (raw: string) => T;\n};\n\nconst defaultSerialize = JSON.stringify;\nconst defaultDeserialize = <T>(raw: string): T => JSON.parse(raw) as T;\n\n/**\n * State synced with `localStorage`. SSR-safe — initial render returns the\n * provided default; the stored value is hydrated after mount. Updates to the\n * same key in other tabs are picked up via the `storage` event.\n *\n * @tempest-limits empty-catch — the three swallows here are the hook's contract.\n * A write that hits the quota (or Safari private mode) still updates React state,\n * so the session keeps working and only persistence is lost; a `storage` event\n * carrying a value this tab cannot deserialize is another tab's bug, and the\n * useful response is to keep the value already rendered rather than tear the\n * component down over a foreign write.\n *\n * @param key - localStorage key.\n * @param defaultValue - value used when nothing is stored or in SSR.\n * @param options - custom `serialize` / `deserialize` (default JSON).\n * @returns Tuple `[value, setValue, remove]`.\n */\nexport function useLocalStorage<T>(\n key: string,\n defaultValue: T,\n options: LocalStorageOptions<T> = {},\n): [T, (value: T | ((prev: T) => T)) => void, () => void] {\n const serialize = options.serialize ?? defaultSerialize;\n const deserialize = options.deserialize ?? defaultDeserialize;\n\n const read = useCallback((): T => {\n if (typeof window === \"undefined\") return defaultValue;\n try {\n const raw = window.localStorage.getItem(key);\n if (raw === null) return defaultValue;\n return deserialize(raw);\n } catch {\n return defaultValue;\n }\n }, [key, defaultValue, deserialize]);\n\n const [value, setStored] = useState<T>(read);\n\n useEffect(() => {\n setStored(read());\n }, [read]);\n\n const setValue = useCallback(\n (next: T | ((prev: T) => T)): void => {\n setStored((current) => {\n const resolved =\n typeof next === \"function\" ? (next as (prev: T) => T)(current) : next;\n try {\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(key, serialize(resolved));\n }\n } catch {\n /* empty */\n }\n return resolved;\n });\n },\n [key, serialize],\n );\n\n const remove = useCallback((): void => {\n try {\n if (typeof window !== \"undefined\") {\n window.localStorage.removeItem(key);\n }\n } catch {\n /* empty */\n }\n setStored(defaultValue);\n }, [key, defaultValue]);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const onStorage = (event: StorageEvent): void => {\n if (event.key !== key) return;\n if (event.newValue === null) {\n setStored(defaultValue);\n return;\n }\n try {\n setStored(deserialize(event.newValue));\n } catch {\n /* empty */\n }\n };\n window.addEventListener(\"storage\", onStorage);\n return () => window.removeEventListener(\"storage\", onStorage);\n }, [key, defaultValue, deserialize]);\n\n return [value, setValue, remove];\n}\n"],"mappings":"A,uBAOA,IAAMG,EAAmB,KAAK,UACxBC,EAAyB,GAAmB,KAAK,MAAMC,CAAG,EAmBhE,SAAgBC,EACZ,EACA,EACA,EAAkC,CAAC,EACmB,CACtD,IAAMC,EAAYC,EAAQ,WAAaL,EACjCM,EAAcD,EAAQ,aAAeJ,EAErCM,GAAA,EAAOV,EAAAA,YAAAA,KAAqB,CAC9B,GAAI,OAAO,OAAW,IAAa,OAAOW,EAC1C,GAAI,CACA,IAAMN,EAAM,OAAO,aAAa,QAAQO,CAAG,EAE3C,OADIP,IAAQ,KAAaM,EAClBF,EAAYJ,CAAG,CAC1B,MAAQ,CACJ,OAAOM,CACX,CACJ,EAAG,CAACC,EAAKD,EAAcF,CAAW,CAAC,EAE7B,CAACI,EAAOC,IAAA,EAAab,EAAAA,SAAAA,CAAYS,CAAI,GAE3C,EAAAR,EAAA,UAAA,KAAgB,CACZY,EAAUJ,EAAK,CAAC,CACpB,EAAG,CAACA,CAAI,CAAC,EAET,IAAMK,GAAA,EAAWf,EAAAA,YAAAA,CACZ,GAAqC,CAClCc,EAAW,GAAY,CACnB,IAAME,EACF,OAAOC,GAAS,WAAcA,EAAwBC,CAAO,EAAID,EACrE,GAAI,CACI,OAAO,OAAW,KAClB,OAAO,aAAa,QAAQL,EAAKL,EAAUS,CAAQ,CAAC,CAE5D,MAAQ,CAER,CACA,OAAOA,CACX,CAAC,CACL,EACA,CAACJ,EAAKL,CAAS,CACnB,EAEMY,GAAA,EAASnB,EAAAA,YAAAA,KAAwB,CACnC,GAAI,CACI,OAAO,OAAW,KAClB,OAAO,aAAa,WAAWY,CAAG,CAE1C,MAAQ,CAER,CACAE,EAAUH,CAAY,CAC1B,EAAG,CAACC,EAAKD,CAAY,CAAC,EAoBtB,OAlBA,EAAAT,EAAA,UAAA,KAAgB,CACZ,GAAI,OAAO,OAAW,IAAa,OACnC,IAAMkB,EAAa,GAA8B,CAC7C,GAAIC,EAAM,MAAQT,EAClB,IAAIS,EAAM,WAAa,KACnBP,EAAUH,CAAY,OAG1B,GAAI,CACAG,EAAUL,EAAYY,EAAM,QAAQ,CAAC,CACzC,MAAQ,CAER,CALA,CAMJ,EAEA,OADA,OAAO,iBAAiB,UAAWD,CAAS,MAC/B,OAAO,oBAAoB,UAAWA,CAAS,CAChE,EAAG,CAACR,EAAKD,EAAcF,CAAW,CAAC,EAE5B,CAACI,EAAOE,EAAUI,CAAM,CACnC,C"}
|
|
@@ -36,11 +36,8 @@ function a(a, o, s = {}) {
|
|
|
36
36
|
if (typeof window > "u") return;
|
|
37
37
|
let e = (e) => {
|
|
38
38
|
if (e.key === a) {
|
|
39
|
-
if (e.newValue === null)
|
|
40
|
-
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
try {
|
|
39
|
+
if (e.newValue === null) f(o);
|
|
40
|
+
else try {
|
|
44
41
|
f(l(e.newValue));
|
|
45
42
|
} catch {}
|
|
46
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-local-storage.js","names":[],"sources":["../../src/hooks/use-local-storage.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\nexport type LocalStorageOptions<T> = {\n serialize?: (value: T) => string;\n deserialize?: (raw: string) => T;\n};\n\nconst defaultSerialize = JSON.stringify;\nconst defaultDeserialize = <T>(raw: string): T => JSON.parse(raw) as T;\n\n/**\n * State synced with `localStorage`. SSR-safe — initial render returns the\n * provided default; the stored value is hydrated after mount. Updates to the\n * same key in other tabs are picked up via the `storage` event.\n *\n * @tempest-limits empty-catch — the three swallows here are the hook's contract.\n * A write that hits the quota (or Safari private mode) still updates React state,\n * so the session keeps working and only persistence is lost; a `storage` event\n * carrying a value this tab cannot deserialize is another tab's bug, and the\n * useful response is to keep the value already rendered rather than tear the\n * component down over a foreign write.\n *\n * @param key - localStorage key.\n * @param defaultValue - value used when nothing is stored or in SSR.\n * @param options - custom `serialize` / `deserialize` (default JSON).\n * @returns Tuple `[value, setValue, remove]`.\n */\nexport function useLocalStorage<T>(\n key: string,\n defaultValue: T,\n options: LocalStorageOptions<T> = {},\n): [T, (value: T | ((prev: T) => T)) => void, () => void] {\n const serialize = options.serialize ?? defaultSerialize;\n const deserialize = options.deserialize ?? defaultDeserialize;\n\n const read = useCallback((): T => {\n if (typeof window === \"undefined\") return defaultValue;\n try {\n const raw = window.localStorage.getItem(key);\n if (raw === null) return defaultValue;\n return deserialize(raw);\n } catch {\n return defaultValue;\n }\n }, [key, defaultValue, deserialize]);\n\n const [value, setStored] = useState<T>(read);\n\n useEffect(() => {\n setStored(read());\n }, [read]);\n\n const setValue = useCallback(\n (next: T | ((prev: T) => T)): void => {\n setStored((current) => {\n const resolved =\n typeof next === \"function\" ? (next as (prev: T) => T)(current) : next;\n try {\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(key, serialize(resolved));\n }\n } catch {\n /* empty */\n }\n return resolved;\n });\n },\n [key, serialize],\n );\n\n const remove = useCallback((): void => {\n try {\n if (typeof window !== \"undefined\") {\n window.localStorage.removeItem(key);\n }\n } catch {\n /* empty */\n }\n setStored(defaultValue);\n }, [key, defaultValue]);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const onStorage = (event: StorageEvent): void => {\n if (event.key !== key) return;\n if (event.newValue === null) {\n setStored(defaultValue);\n return;\n }\n try {\n setStored(deserialize(event.newValue));\n } catch {\n /* empty */\n }\n };\n window.addEventListener(\"storage\", onStorage);\n return () => window.removeEventListener(\"storage\", onStorage);\n }, [key, defaultValue, deserialize]);\n\n return [value, setValue, remove];\n}\n"],"mappings":";;AAOA,
|
|
1
|
+
{"version":3,"file":"use-local-storage.js","names":["defaultSerialize","defaultDeserialize","raw","useLocalStorage","serialize","options","deserialize","read","useCallback","defaultValue","key","value","setStored","useState","setValue","resolved","next","current","remove","useEffect","onStorage","event"],"sources":["../../src/hooks/use-local-storage.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\nexport type LocalStorageOptions<T> = {\n serialize?: (value: T) => string;\n deserialize?: (raw: string) => T;\n};\n\nconst defaultSerialize = JSON.stringify;\nconst defaultDeserialize = <T>(raw: string): T => JSON.parse(raw) as T;\n\n/**\n * State synced with `localStorage`. SSR-safe — initial render returns the\n * provided default; the stored value is hydrated after mount. Updates to the\n * same key in other tabs are picked up via the `storage` event.\n *\n * @tempest-limits empty-catch — the three swallows here are the hook's contract.\n * A write that hits the quota (or Safari private mode) still updates React state,\n * so the session keeps working and only persistence is lost; a `storage` event\n * carrying a value this tab cannot deserialize is another tab's bug, and the\n * useful response is to keep the value already rendered rather than tear the\n * component down over a foreign write.\n *\n * @param key - localStorage key.\n * @param defaultValue - value used when nothing is stored or in SSR.\n * @param options - custom `serialize` / `deserialize` (default JSON).\n * @returns Tuple `[value, setValue, remove]`.\n */\nexport function useLocalStorage<T>(\n key: string,\n defaultValue: T,\n options: LocalStorageOptions<T> = {},\n): [T, (value: T | ((prev: T) => T)) => void, () => void] {\n const serialize = options.serialize ?? defaultSerialize;\n const deserialize = options.deserialize ?? defaultDeserialize;\n\n const read = useCallback((): T => {\n if (typeof window === \"undefined\") return defaultValue;\n try {\n const raw = window.localStorage.getItem(key);\n if (raw === null) return defaultValue;\n return deserialize(raw);\n } catch {\n return defaultValue;\n }\n }, [key, defaultValue, deserialize]);\n\n const [value, setStored] = useState<T>(read);\n\n useEffect(() => {\n setStored(read());\n }, [read]);\n\n const setValue = useCallback(\n (next: T | ((prev: T) => T)): void => {\n setStored((current) => {\n const resolved =\n typeof next === \"function\" ? (next as (prev: T) => T)(current) : next;\n try {\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(key, serialize(resolved));\n }\n } catch {\n /* empty */\n }\n return resolved;\n });\n },\n [key, serialize],\n );\n\n const remove = useCallback((): void => {\n try {\n if (typeof window !== \"undefined\") {\n window.localStorage.removeItem(key);\n }\n } catch {\n /* empty */\n }\n setStored(defaultValue);\n }, [key, defaultValue]);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const onStorage = (event: StorageEvent): void => {\n if (event.key !== key) return;\n if (event.newValue === null) {\n setStored(defaultValue);\n return;\n }\n try {\n setStored(deserialize(event.newValue));\n } catch {\n /* empty */\n }\n };\n window.addEventListener(\"storage\", onStorage);\n return () => window.removeEventListener(\"storage\", onStorage);\n }, [key, defaultValue, deserialize]);\n\n return [value, setValue, remove];\n}\n"],"mappings":";;AAOA,IAAMA,IAAmB,KAAK,WACxBC,KAAyB,MAAmB,KAAK,MAAMC,CAAG;AAmBhE,SAAgBC,EACZ,GACA,GACA,IAAkC,CAAC,GACmB;CACtD,IAAMC,IAAYC,EAAQ,aAAaL,GACjCM,IAAcD,EAAQ,eAAeJ,GAErCM,IAAOC,QAAqB;EAC9B,IAAI,OAAO,SAAW,KAAa,OAAOC;EAC1C,IAAI;GACA,IAAMP,IAAM,OAAO,aAAa,QAAQQ,CAAG;GAE3C,OADIR,MAAQ,OAAaO,IAClBH,EAAYJ,CAAG;EAC1B,QAAQ;GACJ,OAAOO;EACX;CACJ,GAAG;EAACC;EAAKD;EAAcH;CAAW,CAAC,GAE7B,CAACK,GAAOC,KAAaC,EAAYN,CAAI;CAE3C,QAAgB;EACZ,EAAUA,EAAK,CAAC;CACpB,GAAG,CAACA,CAAI,CAAC;CAET,IAAMO,IAAWN,GACZ,MAAqC;EAClC,GAAW,MAAY;GACnB,IAAMO,IACF,OAAOC,KAAS,aAAcA,EAAwBC,CAAO,IAAID;GACrE,IAAI;IACA,AAAI,OAAO,SAAW,OAClB,OAAO,aAAa,QAAQN,GAAKN,EAAUW,CAAQ,CAAC;GAE5D,QAAQ,CAER;GACA,OAAOA;EACX,CAAC;CACL,GACA,CAACL,GAAKN,CAAS,CACnB,GAEMc,IAASV,QAAwB;EACnC,IAAI;GACA,AAAI,OAAO,SAAW,OAClB,OAAO,aAAa,WAAWE,CAAG;EAE1C,QAAQ,CAER;EACA,EAAUD,CAAY;CAC1B,GAAG,CAACC,GAAKD,CAAY,CAAC;CAoBtB,OAlBAU,QAAgB;EACZ,IAAI,OAAO,SAAW,KAAa;EACnC,IAAMC,KAAa,MAA8B;GAC7C,IAAIC,EAAM,QAAQX,GAClB;QAAIW,EAAM,aAAa,MACnB,EAAUZ,CAAY;SAG1B,IAAI;KACA,EAAUH,EAAYe,EAAM,QAAQ,CAAC;IACzC,QAAQ,CAER;GALA;EAMJ;EAEA,OADA,OAAO,iBAAiB,WAAWD,CAAS,SAC/B,OAAO,oBAAoB,WAAWA,CAAS;CAChE,GAAG;EAACV;EAAKD;EAAcH;CAAW,CAAC,GAE5B;EAACK;EAAOG;EAAUI;CAAM;AACnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-long-press-handlers.cjs","names":[],"sources":["../../src/hooks/use-long-press-handlers.ts"],"sourcesContent":["import { useCallback, useRef } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\nimport type { MouseEvent as ReactMouseEvent, TouchEvent as ReactTouchEvent } from \"react\";\n\n/**\n * DOM event handlers produced by {@link useLongPressHandlers}, ready to spread\n * onto a JSX element (`<div {...handlers}>`).\n */\nexport interface LongPressHandlers {\n /** Starts the hold timer on mouse press. */\n onMouseDown: (event: ReactMouseEvent) => void;\n /** Cancels the pending hold when the mouse is released. */\n onMouseUp: () => void;\n /** Cancels the pending hold when the pointer leaves the element. */\n onMouseLeave: () => void;\n /** Starts the hold timer on touch start. */\n onTouchStart: (event: ReactTouchEvent) => void;\n /** Cancels the pending hold when the touch ends. */\n onTouchEnd: () => void;\n /** Cancels the pending hold when the finger moves. */\n onTouchMove: () => void;\n /** Fires the long-press immediately (desktop right-click parity). */\n onContextMenu: (event: ReactMouseEvent) => void;\n}\n\n/** Options accepted by {@link useLongPressHandlers}. */\nexport interface UseLongPressHandlersOptions {\n /** Hold duration in ms before `onLongPress` fires. Defaults to `500`. */\n delayMs?: number;\n /** When `true`, the hook is inert and every handler is a no-op. */\n disabled?: boolean;\n}\n\n/** Return shape of {@link useLongPressHandlers}. */\nexport type UseLongPressHandlersResult = LongPressHandlers & {\n /**\n * Reads whether the most recent interaction fired a long-press. Use it in\n * the element's `onClick` to suppress the click that follows a long-press.\n */\n wasLongPress: () => boolean;\n};\n\n/**\n * Returns DOM event handlers that detect a long press (touch or mouse hold)\n * and invoke `onLongPress` once after `delayMs`.\n *\n * Cancels on touch movement or pointer release. Also wires `contextmenu` to\n * fire `onLongPress` immediately so a right-click on desktop opens selection\n * mode the same way an Android long-press does on mobile.\n *\n * The hook does not `preventDefault` on the underlying click — the consumer\n * decides whether the subsequent click should still fire. Track that with the\n * returned `wasLongPress()` guard to tell \"long-press fired\" apart from a\n * \"regular click\".\n *\n * Unlike {@link useLongPress}, which attaches pointer listeners to a `ref`,\n * this variant returns handler props you spread directly onto an element and\n * exposes a `wasLongPress()` guard.\n *\n * @param onLongPress - Callback invoked once the hold threshold is reached.\n * @param options - Optional `delayMs` and `disabled` flags.\n * @returns The spreadable handlers plus a `wasLongPress()` guard.\n *\n * @example\n * const longPress = useLongPressHandlers(() => enterSelectionMode(), { delayMs: 600 });\n * <button {...longPress} onClick={() => { if (!longPress.wasLongPress()) navigate(); }}>\n * Item\n * </button>\n */\nexport function useLongPressHandlers(\n onLongPress: () => void,\n options: UseLongPressHandlersOptions = {},\n): UseLongPressHandlersResult {\n const { delayMs = 500, disabled = false } = options;\n const timerRef = useRef<number | null>(null);\n const firedRef = useRef<boolean>(false);\n const callbackRef = useLatestRef(onLongPress);\n\n const clear = useCallback((): void => {\n if (timerRef.current !== null) {\n window.clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n }, []);\n\n const start = useCallback((): void => {\n if (disabled) return;\n firedRef.current = false;\n clear();\n timerRef.current = window.setTimeout(() => {\n firedRef.current = true;\n callbackRef.current();\n }, delayMs);\n }, [disabled, clear, delayMs, callbackRef]);\n\n const onContextMenu = useCallback(\n (event: ReactMouseEvent): void => {\n if (disabled) return;\n event.preventDefault();\n firedRef.current = true;\n callbackRef.current();\n },\n [disabled, callbackRef],\n );\n\n return {\n onMouseDown: start,\n onMouseUp: clear,\n onMouseLeave: clear,\n onTouchStart: start,\n onTouchEnd: clear,\n onTouchMove: clear,\n onContextMenu,\n wasLongPress: () => firedRef.current,\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-long-press-handlers.cjs","names":["useRef","useLatestRef","useCallback","require_use_latest_ref","react","useLongPressHandlers","options","timerRef","firedRef","callbackRef","onLongPress","clear","start","disabled","delayMs","event"],"sources":["../../src/hooks/use-long-press-handlers.ts"],"sourcesContent":["import { useCallback, useRef } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\nimport type { MouseEvent as ReactMouseEvent, TouchEvent as ReactTouchEvent } from \"react\";\n\n/**\n * DOM event handlers produced by {@link useLongPressHandlers}, ready to spread\n * onto a JSX element (`<div {...handlers}>`).\n */\nexport interface LongPressHandlers {\n /** Starts the hold timer on mouse press. */\n onMouseDown: (event: ReactMouseEvent) => void;\n /** Cancels the pending hold when the mouse is released. */\n onMouseUp: () => void;\n /** Cancels the pending hold when the pointer leaves the element. */\n onMouseLeave: () => void;\n /** Starts the hold timer on touch start. */\n onTouchStart: (event: ReactTouchEvent) => void;\n /** Cancels the pending hold when the touch ends. */\n onTouchEnd: () => void;\n /** Cancels the pending hold when the finger moves. */\n onTouchMove: () => void;\n /** Fires the long-press immediately (desktop right-click parity). */\n onContextMenu: (event: ReactMouseEvent) => void;\n}\n\n/** Options accepted by {@link useLongPressHandlers}. */\nexport interface UseLongPressHandlersOptions {\n /** Hold duration in ms before `onLongPress` fires. Defaults to `500`. */\n delayMs?: number;\n /** When `true`, the hook is inert and every handler is a no-op. */\n disabled?: boolean;\n}\n\n/** Return shape of {@link useLongPressHandlers}. */\nexport type UseLongPressHandlersResult = LongPressHandlers & {\n /**\n * Reads whether the most recent interaction fired a long-press. Use it in\n * the element's `onClick` to suppress the click that follows a long-press.\n */\n wasLongPress: () => boolean;\n};\n\n/**\n * Returns DOM event handlers that detect a long press (touch or mouse hold)\n * and invoke `onLongPress` once after `delayMs`.\n *\n * Cancels on touch movement or pointer release. Also wires `contextmenu` to\n * fire `onLongPress` immediately so a right-click on desktop opens selection\n * mode the same way an Android long-press does on mobile.\n *\n * The hook does not `preventDefault` on the underlying click — the consumer\n * decides whether the subsequent click should still fire. Track that with the\n * returned `wasLongPress()` guard to tell \"long-press fired\" apart from a\n * \"regular click\".\n *\n * Unlike {@link useLongPress}, which attaches pointer listeners to a `ref`,\n * this variant returns handler props you spread directly onto an element and\n * exposes a `wasLongPress()` guard.\n *\n * @param onLongPress - Callback invoked once the hold threshold is reached.\n * @param options - Optional `delayMs` and `disabled` flags.\n * @returns The spreadable handlers plus a `wasLongPress()` guard.\n *\n * @example\n * const longPress = useLongPressHandlers(() => enterSelectionMode(), { delayMs: 600 });\n * <button {...longPress} onClick={() => { if (!longPress.wasLongPress()) navigate(); }}>\n * Item\n * </button>\n */\nexport function useLongPressHandlers(\n onLongPress: () => void,\n options: UseLongPressHandlersOptions = {},\n): UseLongPressHandlersResult {\n const { delayMs = 500, disabled = false } = options;\n const timerRef = useRef<number | null>(null);\n const firedRef = useRef<boolean>(false);\n const callbackRef = useLatestRef(onLongPress);\n\n const clear = useCallback((): void => {\n if (timerRef.current !== null) {\n window.clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n }, []);\n\n const start = useCallback((): void => {\n if (disabled) return;\n firedRef.current = false;\n clear();\n timerRef.current = window.setTimeout(() => {\n firedRef.current = true;\n callbackRef.current();\n }, delayMs);\n }, [disabled, clear, delayMs, callbackRef]);\n\n const onContextMenu = useCallback(\n (event: ReactMouseEvent): void => {\n if (disabled) return;\n event.preventDefault();\n firedRef.current = true;\n callbackRef.current();\n },\n [disabled, callbackRef],\n );\n\n return {\n onMouseDown: start,\n onMouseUp: clear,\n onMouseLeave: clear,\n onTouchStart: start,\n onTouchEnd: clear,\n onTouchMove: clear,\n onContextMenu,\n wasLongPress: () => firedRef.current,\n };\n}\n"],"mappings":"A,+DAqEA,SAAgBK,EACZ,EACA,EAAuC,CAAC,EACd,CAC1B,GAAM,CAAE,UAAU,IAAK,WAAW,IAAUC,EACtCC,GAAA,EAAWP,EAAAA,OAAAA,CAAsB,IAAI,EACrCQ,GAAA,EAAWR,EAAAA,OAAAA,CAAgB,EAAK,EAChCS,EAAcR,EAAAA,aAAaS,CAAW,EAEtCC,GAAA,EAAQT,EAAAA,YAAAA,KAAwB,CAC9BK,EAAS,UAAY,OACrB,OAAO,aAAaA,EAAS,OAAO,EACpC,EAAS,QAAU,KAE3B,EAAG,CAAC,CAAC,EAECK,GAAA,EAAQV,EAAAA,YAAAA,KAAwB,CAC9BW,IACJ,EAAS,QAAU,GACnBF,EAAM,EACN,EAAS,QAAU,OAAO,eAAiB,CACvC,EAAS,QAAU,GACnBF,EAAY,QAAQ,CACxB,EAAGK,CAAO,EACd,EAAG,CAACD,EAAUF,EAAOG,EAASL,CAAW,CAAC,EAY1C,MAAO,CACH,YAAaG,EACb,UAAWD,EACX,aAAcA,EACd,aAAcC,EACd,WAAYD,EACZ,YAAaA,EACb,eAAA,EAjBkBT,EAAAA,YAAAA,CACjB,GAAiC,CAC1BW,IACJE,EAAM,eAAe,EACrB,EAAS,QAAU,GACnBN,EAAY,QAAQ,EACxB,EACA,CAACI,EAAUJ,CAAW,CAUtB,EACA,iBAAoBD,EAAS,OACjC,CACJ,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-long-press-handlers.js","names":[],"sources":["../../src/hooks/use-long-press-handlers.ts"],"sourcesContent":["import { useCallback, useRef } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\nimport type { MouseEvent as ReactMouseEvent, TouchEvent as ReactTouchEvent } from \"react\";\n\n/**\n * DOM event handlers produced by {@link useLongPressHandlers}, ready to spread\n * onto a JSX element (`<div {...handlers}>`).\n */\nexport interface LongPressHandlers {\n /** Starts the hold timer on mouse press. */\n onMouseDown: (event: ReactMouseEvent) => void;\n /** Cancels the pending hold when the mouse is released. */\n onMouseUp: () => void;\n /** Cancels the pending hold when the pointer leaves the element. */\n onMouseLeave: () => void;\n /** Starts the hold timer on touch start. */\n onTouchStart: (event: ReactTouchEvent) => void;\n /** Cancels the pending hold when the touch ends. */\n onTouchEnd: () => void;\n /** Cancels the pending hold when the finger moves. */\n onTouchMove: () => void;\n /** Fires the long-press immediately (desktop right-click parity). */\n onContextMenu: (event: ReactMouseEvent) => void;\n}\n\n/** Options accepted by {@link useLongPressHandlers}. */\nexport interface UseLongPressHandlersOptions {\n /** Hold duration in ms before `onLongPress` fires. Defaults to `500`. */\n delayMs?: number;\n /** When `true`, the hook is inert and every handler is a no-op. */\n disabled?: boolean;\n}\n\n/** Return shape of {@link useLongPressHandlers}. */\nexport type UseLongPressHandlersResult = LongPressHandlers & {\n /**\n * Reads whether the most recent interaction fired a long-press. Use it in\n * the element's `onClick` to suppress the click that follows a long-press.\n */\n wasLongPress: () => boolean;\n};\n\n/**\n * Returns DOM event handlers that detect a long press (touch or mouse hold)\n * and invoke `onLongPress` once after `delayMs`.\n *\n * Cancels on touch movement or pointer release. Also wires `contextmenu` to\n * fire `onLongPress` immediately so a right-click on desktop opens selection\n * mode the same way an Android long-press does on mobile.\n *\n * The hook does not `preventDefault` on the underlying click — the consumer\n * decides whether the subsequent click should still fire. Track that with the\n * returned `wasLongPress()` guard to tell \"long-press fired\" apart from a\n * \"regular click\".\n *\n * Unlike {@link useLongPress}, which attaches pointer listeners to a `ref`,\n * this variant returns handler props you spread directly onto an element and\n * exposes a `wasLongPress()` guard.\n *\n * @param onLongPress - Callback invoked once the hold threshold is reached.\n * @param options - Optional `delayMs` and `disabled` flags.\n * @returns The spreadable handlers plus a `wasLongPress()` guard.\n *\n * @example\n * const longPress = useLongPressHandlers(() => enterSelectionMode(), { delayMs: 600 });\n * <button {...longPress} onClick={() => { if (!longPress.wasLongPress()) navigate(); }}>\n * Item\n * </button>\n */\nexport function useLongPressHandlers(\n onLongPress: () => void,\n options: UseLongPressHandlersOptions = {},\n): UseLongPressHandlersResult {\n const { delayMs = 500, disabled = false } = options;\n const timerRef = useRef<number | null>(null);\n const firedRef = useRef<boolean>(false);\n const callbackRef = useLatestRef(onLongPress);\n\n const clear = useCallback((): void => {\n if (timerRef.current !== null) {\n window.clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n }, []);\n\n const start = useCallback((): void => {\n if (disabled) return;\n firedRef.current = false;\n clear();\n timerRef.current = window.setTimeout(() => {\n firedRef.current = true;\n callbackRef.current();\n }, delayMs);\n }, [disabled, clear, delayMs, callbackRef]);\n\n const onContextMenu = useCallback(\n (event: ReactMouseEvent): void => {\n if (disabled) return;\n event.preventDefault();\n firedRef.current = true;\n callbackRef.current();\n },\n [disabled, callbackRef],\n );\n\n return {\n onMouseDown: start,\n onMouseUp: clear,\n onMouseLeave: clear,\n onTouchStart: start,\n onTouchEnd: clear,\n onTouchMove: clear,\n onContextMenu,\n wasLongPress: () => firedRef.current,\n };\n}\n"],"mappings":";;;AAqEA,
|
|
1
|
+
{"version":3,"file":"use-long-press-handlers.js","names":["useLongPressHandlers","options","timerRef","useRef","firedRef","callbackRef","useLatestRef","onLongPress","clear","useCallback","start","disabled","delayMs","event"],"sources":["../../src/hooks/use-long-press-handlers.ts"],"sourcesContent":["import { useCallback, useRef } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\nimport type { MouseEvent as ReactMouseEvent, TouchEvent as ReactTouchEvent } from \"react\";\n\n/**\n * DOM event handlers produced by {@link useLongPressHandlers}, ready to spread\n * onto a JSX element (`<div {...handlers}>`).\n */\nexport interface LongPressHandlers {\n /** Starts the hold timer on mouse press. */\n onMouseDown: (event: ReactMouseEvent) => void;\n /** Cancels the pending hold when the mouse is released. */\n onMouseUp: () => void;\n /** Cancels the pending hold when the pointer leaves the element. */\n onMouseLeave: () => void;\n /** Starts the hold timer on touch start. */\n onTouchStart: (event: ReactTouchEvent) => void;\n /** Cancels the pending hold when the touch ends. */\n onTouchEnd: () => void;\n /** Cancels the pending hold when the finger moves. */\n onTouchMove: () => void;\n /** Fires the long-press immediately (desktop right-click parity). */\n onContextMenu: (event: ReactMouseEvent) => void;\n}\n\n/** Options accepted by {@link useLongPressHandlers}. */\nexport interface UseLongPressHandlersOptions {\n /** Hold duration in ms before `onLongPress` fires. Defaults to `500`. */\n delayMs?: number;\n /** When `true`, the hook is inert and every handler is a no-op. */\n disabled?: boolean;\n}\n\n/** Return shape of {@link useLongPressHandlers}. */\nexport type UseLongPressHandlersResult = LongPressHandlers & {\n /**\n * Reads whether the most recent interaction fired a long-press. Use it in\n * the element's `onClick` to suppress the click that follows a long-press.\n */\n wasLongPress: () => boolean;\n};\n\n/**\n * Returns DOM event handlers that detect a long press (touch or mouse hold)\n * and invoke `onLongPress` once after `delayMs`.\n *\n * Cancels on touch movement or pointer release. Also wires `contextmenu` to\n * fire `onLongPress` immediately so a right-click on desktop opens selection\n * mode the same way an Android long-press does on mobile.\n *\n * The hook does not `preventDefault` on the underlying click — the consumer\n * decides whether the subsequent click should still fire. Track that with the\n * returned `wasLongPress()` guard to tell \"long-press fired\" apart from a\n * \"regular click\".\n *\n * Unlike {@link useLongPress}, which attaches pointer listeners to a `ref`,\n * this variant returns handler props you spread directly onto an element and\n * exposes a `wasLongPress()` guard.\n *\n * @param onLongPress - Callback invoked once the hold threshold is reached.\n * @param options - Optional `delayMs` and `disabled` flags.\n * @returns The spreadable handlers plus a `wasLongPress()` guard.\n *\n * @example\n * const longPress = useLongPressHandlers(() => enterSelectionMode(), { delayMs: 600 });\n * <button {...longPress} onClick={() => { if (!longPress.wasLongPress()) navigate(); }}>\n * Item\n * </button>\n */\nexport function useLongPressHandlers(\n onLongPress: () => void,\n options: UseLongPressHandlersOptions = {},\n): UseLongPressHandlersResult {\n const { delayMs = 500, disabled = false } = options;\n const timerRef = useRef<number | null>(null);\n const firedRef = useRef<boolean>(false);\n const callbackRef = useLatestRef(onLongPress);\n\n const clear = useCallback((): void => {\n if (timerRef.current !== null) {\n window.clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n }, []);\n\n const start = useCallback((): void => {\n if (disabled) return;\n firedRef.current = false;\n clear();\n timerRef.current = window.setTimeout(() => {\n firedRef.current = true;\n callbackRef.current();\n }, delayMs);\n }, [disabled, clear, delayMs, callbackRef]);\n\n const onContextMenu = useCallback(\n (event: ReactMouseEvent): void => {\n if (disabled) return;\n event.preventDefault();\n firedRef.current = true;\n callbackRef.current();\n },\n [disabled, callbackRef],\n );\n\n return {\n onMouseDown: start,\n onMouseUp: clear,\n onMouseLeave: clear,\n onTouchStart: start,\n onTouchEnd: clear,\n onTouchMove: clear,\n onContextMenu,\n wasLongPress: () => firedRef.current,\n };\n}\n"],"mappings":";;;AAqEA,SAAgBA,EACZ,GACA,IAAuC,CAAC,GACd;CAC1B,IAAM,EAAE,aAAU,KAAK,cAAW,OAAUC,GACtCC,IAAWC,EAAsB,IAAI,GACrCC,IAAWD,EAAgB,EAAK,GAChCE,IAAcC,EAAaC,CAAW,GAEtCC,IAAQC,QAAwB;EAClC,AAAIP,EAAS,YAAY,SACrB,OAAO,aAAaA,EAAS,OAAO,GACpC,EAAS,UAAU;CAE3B,GAAG,CAAC,CAAC,GAECQ,IAAQD,QAAwB;EAClC,AAAIE,MACJ,EAAS,UAAU,IACnBH,EAAM,GACN,EAAS,UAAU,OAAO,iBAAiB;GAEvC,AADA,EAAS,UAAU,IACnBH,EAAY,QAAQ;EACxB,GAAGO,CAAO;CACd,GAAG;EAACD;EAAUH;EAAOI;EAASP;CAAW,CAAC;CAY1C,OAAO;EACH,aAAaK;EACb,WAAWF;EACX,cAAcA;EACd,cAAcE;EACd,YAAYF;EACZ,aAAaA;EACb,eAjBkBC,GACjB,MAAiC;GAC9B,AAAIE,MACJE,EAAM,eAAe,GACrB,EAAS,UAAU,IACnBR,EAAY,QAAQ;EACxB,GACA,CAACM,GAAUN,CAAW,CAUtB;EACA,oBAAoBD,EAAS;CACjC;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-long-press.cjs","names":[],"sources":["../../src/hooks/use-long-press.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\nimport type { RefObject } from \"react\";\n\nexport interface UseLongPressOptions {\n /** Press duration in ms. Default `500`. */\n delay?: number;\n /** Pixel threshold — finger/mouse movement beyond this cancels the press. Default `10`. */\n moveThreshold?: number;\n}\n\n/**\n * Detect long-press / long-tap gestures. Fires `fn` after `delay` ms\n * while the element is held. Cancels on move beyond `moveThreshold` or\n * pointer up before `delay`.\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * useLongPress(ref, () => openContextMenu(), { delay: 600 });\n */\nexport function useLongPress<T extends HTMLElement>(\n ref: RefObject<T | null>,\n fn: () => void,\n options: UseLongPressOptions = {},\n): void {\n const { delay = 500, moveThreshold = 10 } = options;\n const fnRef = useLatestRef(fn);\n\n useEffect(() => {\n const node = ref.current;\n if (!node) return;\n let timer: ReturnType<typeof setTimeout> | null = null;\n let startX = 0;\n let startY = 0;\n\n const cancel = (): void => {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n\n const onDown = (event: PointerEvent): void => {\n startX = event.clientX;\n startY = event.clientY;\n cancel();\n timer = setTimeout(() => {\n timer = null;\n fnRef.current();\n }, delay);\n };\n\n const onMove = (event: PointerEvent): void => {\n if (timer === null) return;\n const dx = event.clientX - startX;\n const dy = event.clientY - startY;\n if (Math.hypot(dx, dy) > moveThreshold) cancel();\n };\n\n node.addEventListener(\"pointerdown\", onDown);\n node.addEventListener(\"pointermove\", onMove);\n node.addEventListener(\"pointerup\", cancel);\n node.addEventListener(\"pointercancel\", cancel);\n node.addEventListener(\"pointerleave\", cancel);\n return () => {\n cancel();\n node.removeEventListener(\"pointerdown\", onDown);\n node.removeEventListener(\"pointermove\", onMove);\n node.removeEventListener(\"pointerup\", cancel);\n node.removeEventListener(\"pointercancel\", cancel);\n node.removeEventListener(\"pointerleave\", cancel);\n };\n }, [ref, delay, moveThreshold, fnRef]);\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-long-press.cjs","names":["useLatestRef","require_use_latest_ref","react","useLongPress","options","fnRef","fn","node","ref","timer","startX","startY","cancel","onDown","event","delay","onMove","dx","dy","moveThreshold"],"sources":["../../src/hooks/use-long-press.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\nimport type { RefObject } from \"react\";\n\nexport interface UseLongPressOptions {\n /** Press duration in ms. Default `500`. */\n delay?: number;\n /** Pixel threshold — finger/mouse movement beyond this cancels the press. Default `10`. */\n moveThreshold?: number;\n}\n\n/**\n * Detect long-press / long-tap gestures. Fires `fn` after `delay` ms\n * while the element is held. Cancels on move beyond `moveThreshold` or\n * pointer up before `delay`.\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * useLongPress(ref, () => openContextMenu(), { delay: 600 });\n */\nexport function useLongPress<T extends HTMLElement>(\n ref: RefObject<T | null>,\n fn: () => void,\n options: UseLongPressOptions = {},\n): void {\n const { delay = 500, moveThreshold = 10 } = options;\n const fnRef = useLatestRef(fn);\n\n useEffect(() => {\n const node = ref.current;\n if (!node) return;\n let timer: ReturnType<typeof setTimeout> | null = null;\n let startX = 0;\n let startY = 0;\n\n const cancel = (): void => {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n\n const onDown = (event: PointerEvent): void => {\n startX = event.clientX;\n startY = event.clientY;\n cancel();\n timer = setTimeout(() => {\n timer = null;\n fnRef.current();\n }, delay);\n };\n\n const onMove = (event: PointerEvent): void => {\n if (timer === null) return;\n const dx = event.clientX - startX;\n const dy = event.clientY - startY;\n if (Math.hypot(dx, dy) > moveThreshold) cancel();\n };\n\n node.addEventListener(\"pointerdown\", onDown);\n node.addEventListener(\"pointermove\", onMove);\n node.addEventListener(\"pointerup\", cancel);\n node.addEventListener(\"pointercancel\", cancel);\n node.addEventListener(\"pointerleave\", cancel);\n return () => {\n cancel();\n node.removeEventListener(\"pointerdown\", onDown);\n node.removeEventListener(\"pointermove\", onMove);\n node.removeEventListener(\"pointerup\", cancel);\n node.removeEventListener(\"pointercancel\", cancel);\n node.removeEventListener(\"pointerleave\", cancel);\n };\n }, [ref, delay, moveThreshold, fnRef]);\n}\n"],"mappings":"A,+DAoBA,SAAgBG,EACZ,EACA,EACA,EAA+B,CAAC,EAC5B,CACJ,GAAM,CAAE,QAAQ,IAAK,gBAAgB,IAAOC,EACtCC,EAAQL,EAAAA,aAAaM,CAAE,GAE7B,EAAAJ,EAAA,UAAA,KAAgB,CACZ,IAAMK,EAAOC,EAAI,QACjB,GAAI,CAACD,EAAM,OACX,IAAIE,EAA8C,KAC9CC,EAAS,EACTC,EAAS,EAEPC,MAAqB,CACvB,AAEIH,KADA,aAAaA,CAAK,EACV,KAEhB,EAEMI,EAAU,GAA8B,CAC1C,EAASC,EAAM,QACf,EAASA,EAAM,QACfF,EAAO,EACP,EAAQ,eAAiB,CACrB,EAAQ,KACRP,EAAM,QAAQ,CAClB,EAAGU,CAAK,CACZ,EAEMC,EAAU,GAA8B,CAC1C,GAAIP,IAAU,KAAM,OACpB,IAAMQ,EAAKH,EAAM,QAAUJ,EACrBQ,EAAKJ,EAAM,QAAUH,EACvB,KAAK,MAAMM,EAAIC,CAAE,EAAIC,GAAeP,EAAO,CACnD,EAOA,OALAL,EAAK,iBAAiB,cAAeM,CAAM,EAC3CN,EAAK,iBAAiB,cAAeS,CAAM,EAC3CT,EAAK,iBAAiB,YAAaK,CAAM,EACzCL,EAAK,iBAAiB,gBAAiBK,CAAM,EAC7CL,EAAK,iBAAiB,eAAgBK,CAAM,MAC/B,CACTA,EAAO,EACPL,EAAK,oBAAoB,cAAeM,CAAM,EAC9CN,EAAK,oBAAoB,cAAeS,CAAM,EAC9CT,EAAK,oBAAoB,YAAaK,CAAM,EAC5CL,EAAK,oBAAoB,gBAAiBK,CAAM,EAChDL,EAAK,oBAAoB,eAAgBK,CAAM,CACnD,CACJ,EAAG,CAACJ,EAAKO,EAAOI,EAAed,CAAK,CAAC,CACzC,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-long-press.js","names":[],"sources":["../../src/hooks/use-long-press.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\nimport type { RefObject } from \"react\";\n\nexport interface UseLongPressOptions {\n /** Press duration in ms. Default `500`. */\n delay?: number;\n /** Pixel threshold — finger/mouse movement beyond this cancels the press. Default `10`. */\n moveThreshold?: number;\n}\n\n/**\n * Detect long-press / long-tap gestures. Fires `fn` after `delay` ms\n * while the element is held. Cancels on move beyond `moveThreshold` or\n * pointer up before `delay`.\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * useLongPress(ref, () => openContextMenu(), { delay: 600 });\n */\nexport function useLongPress<T extends HTMLElement>(\n ref: RefObject<T | null>,\n fn: () => void,\n options: UseLongPressOptions = {},\n): void {\n const { delay = 500, moveThreshold = 10 } = options;\n const fnRef = useLatestRef(fn);\n\n useEffect(() => {\n const node = ref.current;\n if (!node) return;\n let timer: ReturnType<typeof setTimeout> | null = null;\n let startX = 0;\n let startY = 0;\n\n const cancel = (): void => {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n\n const onDown = (event: PointerEvent): void => {\n startX = event.clientX;\n startY = event.clientY;\n cancel();\n timer = setTimeout(() => {\n timer = null;\n fnRef.current();\n }, delay);\n };\n\n const onMove = (event: PointerEvent): void => {\n if (timer === null) return;\n const dx = event.clientX - startX;\n const dy = event.clientY - startY;\n if (Math.hypot(dx, dy) > moveThreshold) cancel();\n };\n\n node.addEventListener(\"pointerdown\", onDown);\n node.addEventListener(\"pointermove\", onMove);\n node.addEventListener(\"pointerup\", cancel);\n node.addEventListener(\"pointercancel\", cancel);\n node.addEventListener(\"pointerleave\", cancel);\n return () => {\n cancel();\n node.removeEventListener(\"pointerdown\", onDown);\n node.removeEventListener(\"pointermove\", onMove);\n node.removeEventListener(\"pointerup\", cancel);\n node.removeEventListener(\"pointercancel\", cancel);\n node.removeEventListener(\"pointerleave\", cancel);\n };\n }, [ref, delay, moveThreshold, fnRef]);\n}\n"],"mappings":";;;AAoBA,
|
|
1
|
+
{"version":3,"file":"use-long-press.js","names":["useLongPress","options","fnRef","useLatestRef","fn","node","ref","timer","startX","startY","cancel","onDown","event","delay","onMove","dx","dy","moveThreshold"],"sources":["../../src/hooks/use-long-press.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\nimport type { RefObject } from \"react\";\n\nexport interface UseLongPressOptions {\n /** Press duration in ms. Default `500`. */\n delay?: number;\n /** Pixel threshold — finger/mouse movement beyond this cancels the press. Default `10`. */\n moveThreshold?: number;\n}\n\n/**\n * Detect long-press / long-tap gestures. Fires `fn` after `delay` ms\n * while the element is held. Cancels on move beyond `moveThreshold` or\n * pointer up before `delay`.\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * useLongPress(ref, () => openContextMenu(), { delay: 600 });\n */\nexport function useLongPress<T extends HTMLElement>(\n ref: RefObject<T | null>,\n fn: () => void,\n options: UseLongPressOptions = {},\n): void {\n const { delay = 500, moveThreshold = 10 } = options;\n const fnRef = useLatestRef(fn);\n\n useEffect(() => {\n const node = ref.current;\n if (!node) return;\n let timer: ReturnType<typeof setTimeout> | null = null;\n let startX = 0;\n let startY = 0;\n\n const cancel = (): void => {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n\n const onDown = (event: PointerEvent): void => {\n startX = event.clientX;\n startY = event.clientY;\n cancel();\n timer = setTimeout(() => {\n timer = null;\n fnRef.current();\n }, delay);\n };\n\n const onMove = (event: PointerEvent): void => {\n if (timer === null) return;\n const dx = event.clientX - startX;\n const dy = event.clientY - startY;\n if (Math.hypot(dx, dy) > moveThreshold) cancel();\n };\n\n node.addEventListener(\"pointerdown\", onDown);\n node.addEventListener(\"pointermove\", onMove);\n node.addEventListener(\"pointerup\", cancel);\n node.addEventListener(\"pointercancel\", cancel);\n node.addEventListener(\"pointerleave\", cancel);\n return () => {\n cancel();\n node.removeEventListener(\"pointerdown\", onDown);\n node.removeEventListener(\"pointermove\", onMove);\n node.removeEventListener(\"pointerup\", cancel);\n node.removeEventListener(\"pointercancel\", cancel);\n node.removeEventListener(\"pointerleave\", cancel);\n };\n }, [ref, delay, moveThreshold, fnRef]);\n}\n"],"mappings":";;;AAoBA,SAAgBA,EACZ,GACA,GACA,IAA+B,CAAC,GAC5B;CACJ,IAAM,EAAE,WAAQ,KAAK,mBAAgB,OAAOC,GACtCC,IAAQC,EAAaC,CAAE;CAE7B,QAAgB;EACZ,IAAMC,IAAOC,EAAI;EACjB,IAAI,CAACD,GAAM;EACX,IAAIE,IAA8C,MAC9CC,IAAS,GACTC,IAAS,GAEPC,UAAqB;GACvB,AAEIH,OADA,aAAaA,CAAK,GACV;EAEhB,GAEMI,KAAU,MAA8B;GAI1C,AAHA,IAASC,EAAM,SACf,IAASA,EAAM,SACfF,EAAO,GACP,IAAQ,iBAAiB;IAErB,AADA,IAAQ,MACRR,EAAM,QAAQ;GAClB,GAAGW,CAAK;EACZ,GAEMC,KAAU,MAA8B;GAC1C,IAAIP,MAAU,MAAM;GACpB,IAAMQ,IAAKH,EAAM,UAAUJ,GACrBQ,IAAKJ,EAAM,UAAUH;GAC3B,AAAI,KAAK,MAAMM,GAAIC,CAAE,IAAIC,KAAeP,EAAO;EACnD;EAOA,OALAL,EAAK,iBAAiB,eAAeM,CAAM,GAC3CN,EAAK,iBAAiB,eAAeS,CAAM,GAC3CT,EAAK,iBAAiB,aAAaK,CAAM,GACzCL,EAAK,iBAAiB,iBAAiBK,CAAM,GAC7CL,EAAK,iBAAiB,gBAAgBK,CAAM,SAC/B;GAMT,AALAA,EAAO,GACPL,EAAK,oBAAoB,eAAeM,CAAM,GAC9CN,EAAK,oBAAoB,eAAeS,CAAM,GAC9CT,EAAK,oBAAoB,aAAaK,CAAM,GAC5CL,EAAK,oBAAoB,iBAAiBK,CAAM,GAChDL,EAAK,oBAAoB,gBAAgBK,CAAM;EACnD;CACJ,GAAG;EAACJ;EAAKO;EAAOI;EAAef;CAAK,CAAC;AACzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-map.cjs","names":[],"sources":["../../src/hooks/use-map.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseMapResult<K, V> {\n map: ReadonlyMap<K, V>;\n set: (key: K, value: V) => void;\n delete: (key: K) => void;\n clear: () => void;\n get: (key: K) => V | undefined;\n has: (key: K) => boolean;\n size: number;\n}\n\n/**\n * Reactive `Map` wrapper. Mutating via `set` / `delete` / `clear` triggers a\n * re-render and yields a fresh `map` reference each time.\n *\n * @typeParam K - key type.\n * @typeParam V - value type.\n * @param initial - initial entries.\n * @returns `{ map, set, delete, clear, get, has, size }`.\n */\nexport function useMap<K, V>(initial?: Iterable<readonly [K, V]>): UseMapResult<K, V> {\n const [map, setMap] = useState<Map<K, V>>(() => new Map(initial));\n\n const set = useCallback((key: K, value: V): void => {\n setMap((current) => {\n const next = new Map(current);\n next.set(key, value);\n return next;\n });\n }, []);\n\n const remove = useCallback((key: K): void => {\n setMap((current) => {\n if (!current.has(key)) return current;\n const next = new Map(current);\n next.delete(key);\n return next;\n });\n }, []);\n\n const clear = useCallback((): void => {\n setMap((current) => (current.size === 0 ? current : new Map<K, V>()));\n }, []);\n\n const get = useCallback((key: K): V | undefined => map.get(key), [map]);\n const has = useCallback((key: K): boolean => map.has(key), [map]);\n\n return useMemo<UseMapResult<K, V>>(\n () => ({\n map,\n set,\n delete: remove,\n clear,\n get,\n has,\n size: map.size,\n }),\n [map, set, remove, clear, get, has],\n );\n}\n"],"mappings":"uBAqBA,
|
|
1
|
+
{"version":3,"file":"use-map.cjs","names":["useState","useCallback","useMemo","react","useMap","map","setMap","initial","set","next","current","key","value","remove","clear","get","has"],"sources":["../../src/hooks/use-map.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseMapResult<K, V> {\n map: ReadonlyMap<K, V>;\n set: (key: K, value: V) => void;\n delete: (key: K) => void;\n clear: () => void;\n get: (key: K) => V | undefined;\n has: (key: K) => boolean;\n size: number;\n}\n\n/**\n * Reactive `Map` wrapper. Mutating via `set` / `delete` / `clear` triggers a\n * re-render and yields a fresh `map` reference each time.\n *\n * @typeParam K - key type.\n * @typeParam V - value type.\n * @param initial - initial entries.\n * @returns `{ map, set, delete, clear, get, has, size }`.\n */\nexport function useMap<K, V>(initial?: Iterable<readonly [K, V]>): UseMapResult<K, V> {\n const [map, setMap] = useState<Map<K, V>>(() => new Map(initial));\n\n const set = useCallback((key: K, value: V): void => {\n setMap((current) => {\n const next = new Map(current);\n next.set(key, value);\n return next;\n });\n }, []);\n\n const remove = useCallback((key: K): void => {\n setMap((current) => {\n if (!current.has(key)) return current;\n const next = new Map(current);\n next.delete(key);\n return next;\n });\n }, []);\n\n const clear = useCallback((): void => {\n setMap((current) => (current.size === 0 ? current : new Map<K, V>()));\n }, []);\n\n const get = useCallback((key: K): V | undefined => map.get(key), [map]);\n const has = useCallback((key: K): boolean => map.has(key), [map]);\n\n return useMemo<UseMapResult<K, V>>(\n () => ({\n map,\n set,\n delete: remove,\n clear,\n get,\n has,\n size: map.size,\n }),\n [map, set, remove, clear, get, has],\n );\n}\n"],"mappings":"A,uBAqBA,SAAgBI,EAAa,EAAyD,CAClF,GAAM,CAACC,EAAKC,IAAA,EAAUN,EAAAA,SAAAA,KAA0B,IAAI,IAAIO,CAAO,CAAC,EAE1DC,GAAA,EAAMP,EAAAA,YAAAA,EAAa,EAAQ,IAAmB,CAChDK,EAAQ,GAAY,CAChB,IAAMG,EAAO,IAAI,IAAIC,CAAO,EAE5B,OADAD,EAAK,IAAIE,EAAKC,CAAK,EACZH,CACX,CAAC,CACL,EAAG,CAAC,CAAC,EAECI,GAAA,EAASZ,EAAAA,YAAAA,CAAa,GAAiB,CACzCK,EAAQ,GAAY,CAChB,GAAI,CAACI,EAAQ,IAAIC,CAAG,EAAG,OAAOD,EAC9B,IAAMD,EAAO,IAAI,IAAIC,CAAO,EAE5B,OADAD,EAAK,OAAOE,CAAG,EACRF,CACX,CAAC,CACL,EAAG,CAAC,CAAC,EAECK,GAAA,EAAQb,EAAAA,YAAAA,KAAwB,CAClCK,EAAQ,GAAaI,EAAQ,OAAS,EAAIA,EAAU,IAAI,GAAY,CACxE,EAAG,CAAC,CAAC,EAECK,GAAA,EAAMd,EAAAA,YAAAA,CAAa,GAA0BI,EAAI,IAAIM,CAAG,EAAG,CAACN,CAAG,CAAC,EAChEW,GAAA,EAAMf,EAAAA,YAAAA,CAAa,GAAoBI,EAAI,IAAIM,CAAG,EAAG,CAACN,CAAG,CAAC,EAEhE,OAAA,EAAOH,EAAAA,QAAAA,MACI,CACH,MACA,MACA,OAAQW,EACR,QACA,MACA,MACA,KAAMR,EAAI,IACd,GACA,CAACA,EAAKG,EAAKK,EAAQC,EAAOC,EAAKC,CAAG,CACtC,CACJ,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-map.js","names":[],"sources":["../../src/hooks/use-map.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseMapResult<K, V> {\n map: ReadonlyMap<K, V>;\n set: (key: K, value: V) => void;\n delete: (key: K) => void;\n clear: () => void;\n get: (key: K) => V | undefined;\n has: (key: K) => boolean;\n size: number;\n}\n\n/**\n * Reactive `Map` wrapper. Mutating via `set` / `delete` / `clear` triggers a\n * re-render and yields a fresh `map` reference each time.\n *\n * @typeParam K - key type.\n * @typeParam V - value type.\n * @param initial - initial entries.\n * @returns `{ map, set, delete, clear, get, has, size }`.\n */\nexport function useMap<K, V>(initial?: Iterable<readonly [K, V]>): UseMapResult<K, V> {\n const [map, setMap] = useState<Map<K, V>>(() => new Map(initial));\n\n const set = useCallback((key: K, value: V): void => {\n setMap((current) => {\n const next = new Map(current);\n next.set(key, value);\n return next;\n });\n }, []);\n\n const remove = useCallback((key: K): void => {\n setMap((current) => {\n if (!current.has(key)) return current;\n const next = new Map(current);\n next.delete(key);\n return next;\n });\n }, []);\n\n const clear = useCallback((): void => {\n setMap((current) => (current.size === 0 ? current : new Map<K, V>()));\n }, []);\n\n const get = useCallback((key: K): V | undefined => map.get(key), [map]);\n const has = useCallback((key: K): boolean => map.has(key), [map]);\n\n return useMemo<UseMapResult<K, V>>(\n () => ({\n map,\n set,\n delete: remove,\n clear,\n get,\n has,\n size: map.size,\n }),\n [map, set, remove, clear, get, has],\n );\n}\n"],"mappings":";;AAqBA,
|
|
1
|
+
{"version":3,"file":"use-map.js","names":["useMap","map","setMap","useState","initial","set","useCallback","next","current","key","value","remove","clear","get","has","useMemo"],"sources":["../../src/hooks/use-map.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseMapResult<K, V> {\n map: ReadonlyMap<K, V>;\n set: (key: K, value: V) => void;\n delete: (key: K) => void;\n clear: () => void;\n get: (key: K) => V | undefined;\n has: (key: K) => boolean;\n size: number;\n}\n\n/**\n * Reactive `Map` wrapper. Mutating via `set` / `delete` / `clear` triggers a\n * re-render and yields a fresh `map` reference each time.\n *\n * @typeParam K - key type.\n * @typeParam V - value type.\n * @param initial - initial entries.\n * @returns `{ map, set, delete, clear, get, has, size }`.\n */\nexport function useMap<K, V>(initial?: Iterable<readonly [K, V]>): UseMapResult<K, V> {\n const [map, setMap] = useState<Map<K, V>>(() => new Map(initial));\n\n const set = useCallback((key: K, value: V): void => {\n setMap((current) => {\n const next = new Map(current);\n next.set(key, value);\n return next;\n });\n }, []);\n\n const remove = useCallback((key: K): void => {\n setMap((current) => {\n if (!current.has(key)) return current;\n const next = new Map(current);\n next.delete(key);\n return next;\n });\n }, []);\n\n const clear = useCallback((): void => {\n setMap((current) => (current.size === 0 ? current : new Map<K, V>()));\n }, []);\n\n const get = useCallback((key: K): V | undefined => map.get(key), [map]);\n const has = useCallback((key: K): boolean => map.has(key), [map]);\n\n return useMemo<UseMapResult<K, V>>(\n () => ({\n map,\n set,\n delete: remove,\n clear,\n get,\n has,\n size: map.size,\n }),\n [map, set, remove, clear, get, has],\n );\n}\n"],"mappings":";;AAqBA,SAAgBA,EAAa,GAAyD;CAClF,IAAM,CAACC,GAAKC,KAAUC,QAA0B,IAAI,IAAIC,CAAO,CAAC,GAE1DC,IAAMC,GAAa,GAAQ,MAAmB;EAChD,GAAQ,MAAY;GAChB,IAAMC,IAAO,IAAI,IAAIC,CAAO;GAE5B,OADAD,EAAK,IAAIE,GAAKC,CAAK,GACZH;EACX,CAAC;CACL,GAAG,CAAC,CAAC,GAECI,IAASL,GAAa,MAAiB;EACzC,GAAQ,MAAY;GAChB,IAAI,CAACE,EAAQ,IAAIC,CAAG,GAAG,OAAOD;GAC9B,IAAMD,IAAO,IAAI,IAAIC,CAAO;GAE5B,OADAD,EAAK,OAAOE,CAAG,GACRF;EACX,CAAC;CACL,GAAG,CAAC,CAAC,GAECK,IAAQN,QAAwB;EAClC,GAAQ,MAAaE,EAAQ,SAAS,IAAIA,oBAAU,IAAI,IAAU,CAAE;CACxE,GAAG,CAAC,CAAC,GAECK,IAAMP,GAAa,MAA0BL,EAAI,IAAIQ,CAAG,GAAG,CAACR,CAAG,CAAC,GAChEa,IAAMR,GAAa,MAAoBL,EAAI,IAAIQ,CAAG,GAAG,CAACR,CAAG,CAAC;CAEhE,OAAOc,SACI;EACH;EACA;EACA,QAAQJ;EACR;EACA;EACA;EACA,MAAMV,EAAI;CACd,IACA;EAACA;EAAKI;EAAKM;EAAQC;EAAOC;EAAKC;CAAG,CACtC;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-media-devices.cjs","names":[],"sources":["../../src/hooks/use-media-devices.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\n/** One device the browser is willing to tell us about. */\nexport interface MediaDeviceOption {\n deviceId: string;\n /**\n * Human label, or `\"\"` until permission has been granted.\n *\n * See {@link UseMediaDevicesResult.labelsAvailable} — an empty label is not a\n * bug, it is the browser refusing to fingerprint the machine.\n */\n label: string;\n kind: MediaDeviceKind;\n groupId: string;\n}\n\n/** Value returned by {@link useMediaDevices}. */\nexport interface UseMediaDevicesResult {\n /** Every device, in the order the browser listed them. */\n devices: MediaDeviceOption[];\n /** Microphones and other audio sources. */\n audioInputs: MediaDeviceOption[];\n /** Speakers and headsets. Empty on browsers with no output routing (Safari, Firefox). */\n audioOutputs: MediaDeviceOption[];\n /** Cameras. */\n videoInputs: MediaDeviceOption[];\n /**\n * Whether labels are filled in.\n *\n * `false` means the list is real but anonymous — render a picker only after a\n * capture permission has been granted, or the user sees \"\" repeated N times.\n */\n labelsAvailable: boolean;\n /** `enumerateDevices` is unavailable in this browser. */\n supported: boolean;\n /** Re-enumerate. The hook already does this on `devicechange`. */\n refresh: () => void;\n}\n\nconst EMPTY: MediaDeviceOption[] = [];\n\n/**\n * List capture and playback devices, and keep the list fresh.\n *\n * Two things about `enumerateDevices` that decide how a picker must be built:\n *\n * 1. **Labels are gated behind permission.** Before the user grants a capture\n * permission, every `label` is `\"\"` — the list length and ids are real, the names\n * are not. A device picker rendered at that point is a column of blanks, so\n * `labelsAvailable` is exposed to gate it. Ask for the microphone first, then\n * show the picker.\n * 2. **The list changes while the page is open.** Plugging in a headset mid-recording\n * is the normal case, not an edge case, so the hook subscribes to `devicechange`\n * instead of enumerating once on mount.\n *\n * `audioOutputs` is empty on browsers with no output routing at all (Safari and\n * Firefox do not implement `setSinkId`); an empty array there means \"you cannot\n * offer this choice\", not \"no speakers\".\n *\n * @returns The device lists, whether labels are filled in, and a `refresh()`.\n *\n * @example\n * const { audioInputs, labelsAvailable } = useMediaDevices();\n * // ...after the mic permission is granted:\n * {labelsAvailable && <Select options={audioInputs.map((d) => ({ value: d.deviceId, label: d.label }))} />}\n */\nexport function useMediaDevices(): UseMediaDevicesResult {\n const [devices, setDevices] = useState<MediaDeviceOption[]>(EMPTY);\n const [supported, setSupported] = useState(false);\n const [token, setToken] = useState(0);\n\n const refresh = useCallback(() => setToken((value) => value + 1), []);\n\n useEffect(() => {\n let cancelled = false;\n\n if (\n typeof navigator === \"undefined\" ||\n !navigator.mediaDevices ||\n typeof navigator.mediaDevices.enumerateDevices !== \"function\"\n ) {\n setSupported(false);\n setDevices(EMPTY);\n return;\n }\n setSupported(true);\n const media = navigator.mediaDevices;\n\n async function read(): Promise<void> {\n try {\n const list = await media.enumerateDevices();\n if (cancelled) return;\n setDevices(\n list.map((device) => ({\n deviceId: device.deviceId,\n label: device.label,\n kind: device.kind,\n groupId: device.groupId,\n })),\n );\n } catch {\n if (!cancelled) setDevices(EMPTY);\n }\n }\n\n void read();\n const onChange = (): void => void read();\n media.addEventListener?.(\"devicechange\", onChange);\n\n return () => {\n cancelled = true;\n media.removeEventListener?.(\"devicechange\", onChange);\n };\n }, [token]);\n\n return {\n devices,\n audioInputs: devices.filter((device) => device.kind === \"audioinput\"),\n audioOutputs: devices.filter((device) => device.kind === \"audiooutput\"),\n videoInputs: devices.filter((device) => device.kind === \"videoinput\"),\n labelsAvailable: devices.length > 0 && devices.some((device) => device.label !== \"\"),\n supported,\n refresh,\n };\n}\n"],"mappings":"uBAuCA,
|
|
1
|
+
{"version":3,"file":"use-media-devices.cjs","names":["useState","useCallback","react","EMPTY","useMediaDevices","devices","setDevices","supported","setSupported","token","setToken","refresh","value","cancelled","media","read","list","device","onChange"],"sources":["../../src/hooks/use-media-devices.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\n/** One device the browser is willing to tell us about. */\nexport interface MediaDeviceOption {\n deviceId: string;\n /**\n * Human label, or `\"\"` until permission has been granted.\n *\n * See {@link UseMediaDevicesResult.labelsAvailable} — an empty label is not a\n * bug, it is the browser refusing to fingerprint the machine.\n */\n label: string;\n kind: MediaDeviceKind;\n groupId: string;\n}\n\n/** Value returned by {@link useMediaDevices}. */\nexport interface UseMediaDevicesResult {\n /** Every device, in the order the browser listed them. */\n devices: MediaDeviceOption[];\n /** Microphones and other audio sources. */\n audioInputs: MediaDeviceOption[];\n /** Speakers and headsets. Empty on browsers with no output routing (Safari, Firefox). */\n audioOutputs: MediaDeviceOption[];\n /** Cameras. */\n videoInputs: MediaDeviceOption[];\n /**\n * Whether labels are filled in.\n *\n * `false` means the list is real but anonymous — render a picker only after a\n * capture permission has been granted, or the user sees \"\" repeated N times.\n */\n labelsAvailable: boolean;\n /** `enumerateDevices` is unavailable in this browser. */\n supported: boolean;\n /** Re-enumerate. The hook already does this on `devicechange`. */\n refresh: () => void;\n}\n\nconst EMPTY: MediaDeviceOption[] = [];\n\n/**\n * List capture and playback devices, and keep the list fresh.\n *\n * Two things about `enumerateDevices` that decide how a picker must be built:\n *\n * 1. **Labels are gated behind permission.** Before the user grants a capture\n * permission, every `label` is `\"\"` — the list length and ids are real, the names\n * are not. A device picker rendered at that point is a column of blanks, so\n * `labelsAvailable` is exposed to gate it. Ask for the microphone first, then\n * show the picker.\n * 2. **The list changes while the page is open.** Plugging in a headset mid-recording\n * is the normal case, not an edge case, so the hook subscribes to `devicechange`\n * instead of enumerating once on mount.\n *\n * `audioOutputs` is empty on browsers with no output routing at all (Safari and\n * Firefox do not implement `setSinkId`); an empty array there means \"you cannot\n * offer this choice\", not \"no speakers\".\n *\n * @returns The device lists, whether labels are filled in, and a `refresh()`.\n *\n * @example\n * const { audioInputs, labelsAvailable } = useMediaDevices();\n * // ...after the mic permission is granted:\n * {labelsAvailable && <Select options={audioInputs.map((d) => ({ value: d.deviceId, label: d.label }))} />}\n */\nexport function useMediaDevices(): UseMediaDevicesResult {\n const [devices, setDevices] = useState<MediaDeviceOption[]>(EMPTY);\n const [supported, setSupported] = useState(false);\n const [token, setToken] = useState(0);\n\n const refresh = useCallback(() => setToken((value) => value + 1), []);\n\n useEffect(() => {\n let cancelled = false;\n\n if (\n typeof navigator === \"undefined\" ||\n !navigator.mediaDevices ||\n typeof navigator.mediaDevices.enumerateDevices !== \"function\"\n ) {\n setSupported(false);\n setDevices(EMPTY);\n return;\n }\n setSupported(true);\n const media = navigator.mediaDevices;\n\n async function read(): Promise<void> {\n try {\n const list = await media.enumerateDevices();\n if (cancelled) return;\n setDevices(\n list.map((device) => ({\n deviceId: device.deviceId,\n label: device.label,\n kind: device.kind,\n groupId: device.groupId,\n })),\n );\n } catch {\n if (!cancelled) setDevices(EMPTY);\n }\n }\n\n void read();\n const onChange = (): void => void read();\n media.addEventListener?.(\"devicechange\", onChange);\n\n return () => {\n cancelled = true;\n media.removeEventListener?.(\"devicechange\", onChange);\n };\n }, [token]);\n\n return {\n devices,\n audioInputs: devices.filter((device) => device.kind === \"audioinput\"),\n audioOutputs: devices.filter((device) => device.kind === \"audiooutput\"),\n videoInputs: devices.filter((device) => device.kind === \"videoinput\"),\n labelsAvailable: devices.length > 0 && devices.some((device) => device.label !== \"\"),\n supported,\n refresh,\n };\n}\n"],"mappings":"A,uBAuCA,IAAMG,EAA6B,CAAC,EA2BpC,SAAgBC,GAAyC,CACrD,GAAM,CAACC,EAASC,IAAA,EAAcN,EAAAA,SAAAA,CAA8BG,CAAK,EAC3D,CAACI,EAAWC,IAAA,EAAgBR,EAAAA,SAAAA,CAAS,EAAK,EAC1C,CAACS,EAAOC,IAAA,EAAYV,EAAAA,SAAAA,CAAS,CAAC,EAE9BW,GAAA,EAAUV,EAAAA,YAAAA,KAAkBS,EAAU,GAAUE,EAAQ,CAAC,EAAG,CAAC,CAAC,EA4CpE,OA1CA,EAAAV,EAAA,UAAA,KAAgB,CACZ,IAAIW,EAAY,GAEhB,GACI,OAAO,UAAc,KACrB,CAAC,UAAU,cACX,OAAO,UAAU,aAAa,kBAAqB,WACrD,CACEL,EAAa,EAAK,EAClBF,EAAWH,CAAK,EAChB,MACJ,CACAK,EAAa,EAAI,EACjB,IAAMM,EAAQ,UAAU,aAExB,eAAeC,GAAsB,CACjC,GAAI,CACA,IAAMC,EAAO,MAAMF,EAAM,iBAAiB,EAC1C,GAAID,EAAW,OACfP,EACIU,EAAK,IAAK,IAAY,CAClB,SAAUC,EAAO,SACjB,MAAOA,EAAO,MACd,KAAMA,EAAO,KACb,QAASA,EAAO,OACpB,EAAE,CACN,CACJ,MAAQ,CACCJ,GAAWP,EAAWH,CAAK,CACpC,CACJ,CAEAY,EAAU,EACV,IAAMG,MAAuB,KAAKH,EAAK,EAGvC,OAFAD,EAAM,mBAAmB,eAAgBI,CAAQ,MAEpC,CACT,EAAY,GACZJ,EAAM,sBAAsB,eAAgBI,CAAQ,CACxD,CACJ,EAAG,CAACT,CAAK,CAAC,EAEH,CACH,UACA,YAAaJ,EAAQ,OAAQ,GAAWY,EAAO,OAAS,YAAY,EACpE,aAAcZ,EAAQ,OAAQ,GAAWY,EAAO,OAAS,aAAa,EACtE,YAAaZ,EAAQ,OAAQ,GAAWY,EAAO,OAAS,YAAY,EACpE,gBAAiBZ,EAAQ,OAAS,GAAKA,EAAQ,KAAM,GAAWY,EAAO,QAAU,EAAE,EACnF,YACA,SACJ,CACJ,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-media-devices.js","names":[],"sources":["../../src/hooks/use-media-devices.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\n/** One device the browser is willing to tell us about. */\nexport interface MediaDeviceOption {\n deviceId: string;\n /**\n * Human label, or `\"\"` until permission has been granted.\n *\n * See {@link UseMediaDevicesResult.labelsAvailable} — an empty label is not a\n * bug, it is the browser refusing to fingerprint the machine.\n */\n label: string;\n kind: MediaDeviceKind;\n groupId: string;\n}\n\n/** Value returned by {@link useMediaDevices}. */\nexport interface UseMediaDevicesResult {\n /** Every device, in the order the browser listed them. */\n devices: MediaDeviceOption[];\n /** Microphones and other audio sources. */\n audioInputs: MediaDeviceOption[];\n /** Speakers and headsets. Empty on browsers with no output routing (Safari, Firefox). */\n audioOutputs: MediaDeviceOption[];\n /** Cameras. */\n videoInputs: MediaDeviceOption[];\n /**\n * Whether labels are filled in.\n *\n * `false` means the list is real but anonymous — render a picker only after a\n * capture permission has been granted, or the user sees \"\" repeated N times.\n */\n labelsAvailable: boolean;\n /** `enumerateDevices` is unavailable in this browser. */\n supported: boolean;\n /** Re-enumerate. The hook already does this on `devicechange`. */\n refresh: () => void;\n}\n\nconst EMPTY: MediaDeviceOption[] = [];\n\n/**\n * List capture and playback devices, and keep the list fresh.\n *\n * Two things about `enumerateDevices` that decide how a picker must be built:\n *\n * 1. **Labels are gated behind permission.** Before the user grants a capture\n * permission, every `label` is `\"\"` — the list length and ids are real, the names\n * are not. A device picker rendered at that point is a column of blanks, so\n * `labelsAvailable` is exposed to gate it. Ask for the microphone first, then\n * show the picker.\n * 2. **The list changes while the page is open.** Plugging in a headset mid-recording\n * is the normal case, not an edge case, so the hook subscribes to `devicechange`\n * instead of enumerating once on mount.\n *\n * `audioOutputs` is empty on browsers with no output routing at all (Safari and\n * Firefox do not implement `setSinkId`); an empty array there means \"you cannot\n * offer this choice\", not \"no speakers\".\n *\n * @returns The device lists, whether labels are filled in, and a `refresh()`.\n *\n * @example\n * const { audioInputs, labelsAvailable } = useMediaDevices();\n * // ...after the mic permission is granted:\n * {labelsAvailable && <Select options={audioInputs.map((d) => ({ value: d.deviceId, label: d.label }))} />}\n */\nexport function useMediaDevices(): UseMediaDevicesResult {\n const [devices, setDevices] = useState<MediaDeviceOption[]>(EMPTY);\n const [supported, setSupported] = useState(false);\n const [token, setToken] = useState(0);\n\n const refresh = useCallback(() => setToken((value) => value + 1), []);\n\n useEffect(() => {\n let cancelled = false;\n\n if (\n typeof navigator === \"undefined\" ||\n !navigator.mediaDevices ||\n typeof navigator.mediaDevices.enumerateDevices !== \"function\"\n ) {\n setSupported(false);\n setDevices(EMPTY);\n return;\n }\n setSupported(true);\n const media = navigator.mediaDevices;\n\n async function read(): Promise<void> {\n try {\n const list = await media.enumerateDevices();\n if (cancelled) return;\n setDevices(\n list.map((device) => ({\n deviceId: device.deviceId,\n label: device.label,\n kind: device.kind,\n groupId: device.groupId,\n })),\n );\n } catch {\n if (!cancelled) setDevices(EMPTY);\n }\n }\n\n void read();\n const onChange = (): void => void read();\n media.addEventListener?.(\"devicechange\", onChange);\n\n return () => {\n cancelled = true;\n media.removeEventListener?.(\"devicechange\", onChange);\n };\n }, [token]);\n\n return {\n devices,\n audioInputs: devices.filter((device) => device.kind === \"audioinput\"),\n audioOutputs: devices.filter((device) => device.kind === \"audiooutput\"),\n videoInputs: devices.filter((device) => device.kind === \"videoinput\"),\n labelsAvailable: devices.length > 0 && devices.some((device) => device.label !== \"\"),\n supported,\n refresh,\n };\n}\n"],"mappings":";;AAuCA,
|
|
1
|
+
{"version":3,"file":"use-media-devices.js","names":["EMPTY","useMediaDevices","devices","setDevices","useState","supported","setSupported","token","setToken","refresh","useCallback","value","useEffect","cancelled","media","read","list","device","onChange"],"sources":["../../src/hooks/use-media-devices.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\n/** One device the browser is willing to tell us about. */\nexport interface MediaDeviceOption {\n deviceId: string;\n /**\n * Human label, or `\"\"` until permission has been granted.\n *\n * See {@link UseMediaDevicesResult.labelsAvailable} — an empty label is not a\n * bug, it is the browser refusing to fingerprint the machine.\n */\n label: string;\n kind: MediaDeviceKind;\n groupId: string;\n}\n\n/** Value returned by {@link useMediaDevices}. */\nexport interface UseMediaDevicesResult {\n /** Every device, in the order the browser listed them. */\n devices: MediaDeviceOption[];\n /** Microphones and other audio sources. */\n audioInputs: MediaDeviceOption[];\n /** Speakers and headsets. Empty on browsers with no output routing (Safari, Firefox). */\n audioOutputs: MediaDeviceOption[];\n /** Cameras. */\n videoInputs: MediaDeviceOption[];\n /**\n * Whether labels are filled in.\n *\n * `false` means the list is real but anonymous — render a picker only after a\n * capture permission has been granted, or the user sees \"\" repeated N times.\n */\n labelsAvailable: boolean;\n /** `enumerateDevices` is unavailable in this browser. */\n supported: boolean;\n /** Re-enumerate. The hook already does this on `devicechange`. */\n refresh: () => void;\n}\n\nconst EMPTY: MediaDeviceOption[] = [];\n\n/**\n * List capture and playback devices, and keep the list fresh.\n *\n * Two things about `enumerateDevices` that decide how a picker must be built:\n *\n * 1. **Labels are gated behind permission.** Before the user grants a capture\n * permission, every `label` is `\"\"` — the list length and ids are real, the names\n * are not. A device picker rendered at that point is a column of blanks, so\n * `labelsAvailable` is exposed to gate it. Ask for the microphone first, then\n * show the picker.\n * 2. **The list changes while the page is open.** Plugging in a headset mid-recording\n * is the normal case, not an edge case, so the hook subscribes to `devicechange`\n * instead of enumerating once on mount.\n *\n * `audioOutputs` is empty on browsers with no output routing at all (Safari and\n * Firefox do not implement `setSinkId`); an empty array there means \"you cannot\n * offer this choice\", not \"no speakers\".\n *\n * @returns The device lists, whether labels are filled in, and a `refresh()`.\n *\n * @example\n * const { audioInputs, labelsAvailable } = useMediaDevices();\n * // ...after the mic permission is granted:\n * {labelsAvailable && <Select options={audioInputs.map((d) => ({ value: d.deviceId, label: d.label }))} />}\n */\nexport function useMediaDevices(): UseMediaDevicesResult {\n const [devices, setDevices] = useState<MediaDeviceOption[]>(EMPTY);\n const [supported, setSupported] = useState(false);\n const [token, setToken] = useState(0);\n\n const refresh = useCallback(() => setToken((value) => value + 1), []);\n\n useEffect(() => {\n let cancelled = false;\n\n if (\n typeof navigator === \"undefined\" ||\n !navigator.mediaDevices ||\n typeof navigator.mediaDevices.enumerateDevices !== \"function\"\n ) {\n setSupported(false);\n setDevices(EMPTY);\n return;\n }\n setSupported(true);\n const media = navigator.mediaDevices;\n\n async function read(): Promise<void> {\n try {\n const list = await media.enumerateDevices();\n if (cancelled) return;\n setDevices(\n list.map((device) => ({\n deviceId: device.deviceId,\n label: device.label,\n kind: device.kind,\n groupId: device.groupId,\n })),\n );\n } catch {\n if (!cancelled) setDevices(EMPTY);\n }\n }\n\n void read();\n const onChange = (): void => void read();\n media.addEventListener?.(\"devicechange\", onChange);\n\n return () => {\n cancelled = true;\n media.removeEventListener?.(\"devicechange\", onChange);\n };\n }, [token]);\n\n return {\n devices,\n audioInputs: devices.filter((device) => device.kind === \"audioinput\"),\n audioOutputs: devices.filter((device) => device.kind === \"audiooutput\"),\n videoInputs: devices.filter((device) => device.kind === \"videoinput\"),\n labelsAvailable: devices.length > 0 && devices.some((device) => device.label !== \"\"),\n supported,\n refresh,\n };\n}\n"],"mappings":";;AAuCA,IAAMA,IAA6B,CAAC;AA2BpC,SAAgBC,IAAyC;CACrD,IAAM,CAACC,GAASC,KAAcC,EAA8BJ,CAAK,GAC3D,CAACK,GAAWC,KAAgBF,EAAS,EAAK,GAC1C,CAACG,GAAOC,KAAYJ,EAAS,CAAC,GAE9BK,IAAUC,QAAkBF,GAAU,MAAUG,IAAQ,CAAC,GAAG,CAAC,CAAC;CA4CpE,OA1CAC,QAAgB;EACZ,IAAIC,IAAY;EAEhB,IACI,OAAO,YAAc,OACrB,CAAC,UAAU,gBACX,OAAO,UAAU,aAAa,oBAAqB,YACrD;GAEE,AADAP,EAAa,EAAK,GAClBH,EAAWH,CAAK;GAChB;EACJ;EACA,EAAa,EAAI;EACjB,IAAMc,IAAQ,UAAU;EAExB,eAAeC,IAAsB;GACjC,IAAI;IACA,IAAMC,IAAO,MAAMF,EAAM,iBAAiB;IAC1C,IAAID,GAAW;IACf,EACIG,EAAK,KAAK,OAAY;KAClB,UAAUC,EAAO;KACjB,OAAOA,EAAO;KACd,MAAMA,EAAO;KACb,SAASA,EAAO;IACpB,EAAE,CACN;GACJ,QAAQ;IACJ,AAAKJ,KAAWV,EAAWH,CAAK;GACpC;EACJ;EAEA,EAAU;EACV,IAAMkB,UAAuB,KAAKH,EAAK;EAGvC,OAFAD,EAAM,mBAAmB,gBAAgBI,CAAQ,SAEpC;GAET,AADA,IAAY,IACZJ,EAAM,sBAAsB,gBAAgBI,CAAQ;EACxD;CACJ,GAAG,CAACX,CAAK,CAAC,GAEH;EACH;EACA,aAAaL,EAAQ,QAAQ,MAAWe,EAAO,SAAS,YAAY;EACpE,cAAcf,EAAQ,QAAQ,MAAWe,EAAO,SAAS,aAAa;EACtE,aAAaf,EAAQ,QAAQ,MAAWe,EAAO,SAAS,YAAY;EACpE,iBAAiBf,EAAQ,SAAS,KAAKA,EAAQ,MAAM,MAAWe,EAAO,UAAU,EAAE;EACnF;EACA;CACJ;AACJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
let e=require("react");function t(t){let[n,r]=(0,e.useState)(`unknown`),[i,a]=(0,e.useState)(!1),[o,s]=(0,e.useState)(0),c=(0,e.useCallback)(()=>s(e=>e+1),[]);return(0,e.useEffect)(()=>{let e=!1,n=null,i=()=>{!e&&n&&r(n.state)};async function o(){if(typeof navigator>`u`||!navigator.permissions?.query)
|
|
1
|
+
let e=require("react");function t(t){let[n,r]=(0,e.useState)(`unknown`),[i,a]=(0,e.useState)(!1),[o,s]=(0,e.useState)(0),c=(0,e.useCallback)(()=>s(e=>e+1),[]);return(0,e.useEffect)(()=>{let e=!1,n=null,i=()=>{!e&&n&&r(n.state)};async function o(){if(typeof navigator>`u`||!navigator.permissions?.query)e||(a(!1),r(`unknown`));else try{if(n=await navigator.permissions.query({name:t}),e)return;a(!0),r(n.state),n.addEventListener(`change`,i)}catch{e||(a(!1),r(`unknown`))}}return o(),()=>{e=!0,n?.removeEventListener(`change`,i)}},[t,o]),{state:n,supported:i,refresh:c}}exports.useMediaPermission=t;
|
|
2
2
|
//# sourceMappingURL=use-media-permission.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-media-permission.cjs","names":[],"sources":["../../src/hooks/use-media-permission.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\n/** Which capture permission to observe. */\nexport type MediaPermissionName = \"microphone\" | \"camera\";\n\n/**\n * Permission state, including the two cases the browser prompt cannot tell you\n * apart on its own.\n *\n * - `\"unknown\"` — the Permissions API is unavailable (Safari does not report\n * `microphone`), so the only way to learn the answer is to ask for the device.\n * - `\"prompt\"` — never asked. Asking now shows the browser prompt.\n * - `\"granted\"` / `\"denied\"` — settled. `\"denied\"` is **sticky**: calling\n * `getUserMedia` again does not re-prompt, it rejects immediately.\n */\nexport type MediaPermissionState = \"unknown\" | \"prompt\" | \"granted\" | \"denied\";\n\n/** Value returned by {@link useMediaPermission}. */\nexport interface UseMediaPermissionResult {\n /** Current state. Updates live when the user changes it in browser settings. */\n state: MediaPermissionState;\n /** Whether the Permissions API could answer at all. */\n supported: boolean;\n /** Re-read the permission. Rarely needed — the hook subscribes to changes. */\n refresh: () => void;\n}\n\n/**\n * Read a capture permission **without triggering the prompt**.\n *\n * This is the piece that makes a good permission flow possible. `getUserMedia` is\n * the only way to *get* a device, but calling it is also the only way to *ask*, and\n * a prompt fired on page load — before the user has pressed anything — is the\n * single most reliable way to earn a permanent \"Block\". Reading the state first\n * lets a page explain why it needs the microphone, and only then ask.\n *\n * It also separates \"never asked\" from \"denied\", which matters because they need\n * opposite UI: `\"prompt\"` gets a button, `\"denied\"` gets instructions for the\n * browser's site settings, since no amount of clicking will re-prompt.\n *\n * Safari does not expose `microphone` to the Permissions API and throws on the\n * query, which surfaces as `state: \"unknown\"` and `supported: false` — treat that\n * as \"you will have to ask to find out\", not as an error.\n *\n * @param name - Which permission to observe.\n * @returns The live state, whether it could be read, and a manual `refresh()`.\n *\n * @example\n * const { state } = useMediaPermission(\"microphone\");\n * if (state === \"denied\") return <p>Libere o microfone nas configurações do site.</p>;\n * return <button onClick={start}>Gravar</button>;\n */\nexport function useMediaPermission(name: MediaPermissionName): UseMediaPermissionResult {\n const [state, setState] = useState<MediaPermissionState>(\"unknown\");\n const [supported, setSupported] = useState(false);\n const [token, setToken] = useState(0);\n\n const refresh = useCallback(() => setToken((value) => value + 1), []);\n\n useEffect(() => {\n let cancelled = false;\n let status: PermissionStatus | null = null;\n const onChange = (): void => {\n if (!cancelled && status) setState(status.state as MediaPermissionState);\n };\n\n async function read(): Promise<void> {\n if (typeof navigator === \"undefined\" || !navigator.permissions?.query) {\n if (!cancelled) {\n setSupported(false);\n setState(\"unknown\");\n }\n return;\n }\n try {\n status = await navigator.permissions.query({\n name: name as PermissionName,\n });\n if (cancelled) return;\n setSupported(true);\n setState(status.state as MediaPermissionState);\n status.addEventListener(\"change\", onChange);\n } catch {\n if (!cancelled) {\n setSupported(false);\n setState(\"unknown\");\n }\n }\n }\n\n void read();\n\n return () => {\n cancelled = true;\n status?.removeEventListener(\"change\", onChange);\n };\n }, [name, token]);\n\n return { state, supported, refresh };\n}\n"],"mappings":"uBAoDA,
|
|
1
|
+
{"version":3,"file":"use-media-permission.cjs","names":["useState","useCallback","react","useMediaPermission","state","setState","supported","setSupported","token","setToken","refresh","value","cancelled","status","onChange","read","name"],"sources":["../../src/hooks/use-media-permission.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\n/** Which capture permission to observe. */\nexport type MediaPermissionName = \"microphone\" | \"camera\";\n\n/**\n * Permission state, including the two cases the browser prompt cannot tell you\n * apart on its own.\n *\n * - `\"unknown\"` — the Permissions API is unavailable (Safari does not report\n * `microphone`), so the only way to learn the answer is to ask for the device.\n * - `\"prompt\"` — never asked. Asking now shows the browser prompt.\n * - `\"granted\"` / `\"denied\"` — settled. `\"denied\"` is **sticky**: calling\n * `getUserMedia` again does not re-prompt, it rejects immediately.\n */\nexport type MediaPermissionState = \"unknown\" | \"prompt\" | \"granted\" | \"denied\";\n\n/** Value returned by {@link useMediaPermission}. */\nexport interface UseMediaPermissionResult {\n /** Current state. Updates live when the user changes it in browser settings. */\n state: MediaPermissionState;\n /** Whether the Permissions API could answer at all. */\n supported: boolean;\n /** Re-read the permission. Rarely needed — the hook subscribes to changes. */\n refresh: () => void;\n}\n\n/**\n * Read a capture permission **without triggering the prompt**.\n *\n * This is the piece that makes a good permission flow possible. `getUserMedia` is\n * the only way to *get* a device, but calling it is also the only way to *ask*, and\n * a prompt fired on page load — before the user has pressed anything — is the\n * single most reliable way to earn a permanent \"Block\". Reading the state first\n * lets a page explain why it needs the microphone, and only then ask.\n *\n * It also separates \"never asked\" from \"denied\", which matters because they need\n * opposite UI: `\"prompt\"` gets a button, `\"denied\"` gets instructions for the\n * browser's site settings, since no amount of clicking will re-prompt.\n *\n * Safari does not expose `microphone` to the Permissions API and throws on the\n * query, which surfaces as `state: \"unknown\"` and `supported: false` — treat that\n * as \"you will have to ask to find out\", not as an error.\n *\n * @param name - Which permission to observe.\n * @returns The live state, whether it could be read, and a manual `refresh()`.\n *\n * @example\n * const { state } = useMediaPermission(\"microphone\");\n * if (state === \"denied\") return <p>Libere o microfone nas configurações do site.</p>;\n * return <button onClick={start}>Gravar</button>;\n */\nexport function useMediaPermission(name: MediaPermissionName): UseMediaPermissionResult {\n const [state, setState] = useState<MediaPermissionState>(\"unknown\");\n const [supported, setSupported] = useState(false);\n const [token, setToken] = useState(0);\n\n const refresh = useCallback(() => setToken((value) => value + 1), []);\n\n useEffect(() => {\n let cancelled = false;\n let status: PermissionStatus | null = null;\n const onChange = (): void => {\n if (!cancelled && status) setState(status.state as MediaPermissionState);\n };\n\n async function read(): Promise<void> {\n if (typeof navigator === \"undefined\" || !navigator.permissions?.query) {\n if (!cancelled) {\n setSupported(false);\n setState(\"unknown\");\n }\n return;\n }\n try {\n status = await navigator.permissions.query({\n name: name as PermissionName,\n });\n if (cancelled) return;\n setSupported(true);\n setState(status.state as MediaPermissionState);\n status.addEventListener(\"change\", onChange);\n } catch {\n if (!cancelled) {\n setSupported(false);\n setState(\"unknown\");\n }\n }\n }\n\n void read();\n\n return () => {\n cancelled = true;\n status?.removeEventListener(\"change\", onChange);\n };\n }, [name, token]);\n\n return { state, supported, refresh };\n}\n"],"mappings":"A,uBAoDA,SAAgBG,EAAmB,EAAqD,CACpF,GAAM,CAACC,EAAOC,IAAA,EAAYL,EAAAA,SAAAA,CAA+B,SAAS,EAC5D,CAACM,EAAWC,IAAA,EAAgBP,EAAAA,SAAAA,CAAS,EAAK,EAC1C,CAACQ,EAAOC,IAAA,EAAYT,EAAAA,SAAAA,CAAS,CAAC,EAE9BU,GAAA,EAAUT,EAAAA,YAAAA,KAAkBQ,EAAU,GAAUE,EAAQ,CAAC,EAAG,CAAC,CAAC,EAyCpE,OAvCA,EAAAT,EAAA,UAAA,KAAgB,CACZ,IAAIU,EAAY,GACZC,EAAkC,KAChCC,MAAuB,CACrB,CAACF,GAAaC,GAAQR,EAASQ,EAAO,KAA6B,CAC3E,EAEA,eAAeE,GAAsB,CACjC,GAAI,OAAO,UAAc,KAAe,CAAC,UAAU,aAAa,MACvDH,IACDL,EAAa,EAAK,EAClBF,EAAS,SAAS,QAI1B,GAAI,CAIA,GAHA,EAAS,MAAM,UAAU,YAAY,MAAM,CACjC,MACV,CAAC,EACGO,EAAW,OACfL,EAAa,EAAI,EACjBF,EAASQ,EAAO,KAA6B,EAC7CA,EAAO,iBAAiB,SAAUC,CAAQ,CAC9C,MAAQ,CACCF,IACDL,EAAa,EAAK,EAClBF,EAAS,SAAS,EAE1B,CACJ,CAIA,OAFAU,EAAU,MAEG,CACT,EAAY,GACZF,GAAQ,oBAAoB,SAAUC,CAAQ,CAClD,CACJ,EAAG,CAACE,EAAMR,CAAK,CAAC,EAET,CAAE,QAAO,YAAW,SAAQ,CACvC,C"}
|
|
@@ -7,11 +7,8 @@ function r(r) {
|
|
|
7
7
|
!e && t && a(t.state);
|
|
8
8
|
};
|
|
9
9
|
async function i() {
|
|
10
|
-
if (typeof navigator > "u" || !navigator.permissions?.query)
|
|
11
|
-
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
try {
|
|
10
|
+
if (typeof navigator > "u" || !navigator.permissions?.query) e || (s(!1), a("unknown"));
|
|
11
|
+
else try {
|
|
15
12
|
if (t = await navigator.permissions.query({ name: r }), e) return;
|
|
16
13
|
s(!0), a(t.state), t.addEventListener("change", n);
|
|
17
14
|
} catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-media-permission.js","names":[],"sources":["../../src/hooks/use-media-permission.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\n/** Which capture permission to observe. */\nexport type MediaPermissionName = \"microphone\" | \"camera\";\n\n/**\n * Permission state, including the two cases the browser prompt cannot tell you\n * apart on its own.\n *\n * - `\"unknown\"` — the Permissions API is unavailable (Safari does not report\n * `microphone`), so the only way to learn the answer is to ask for the device.\n * - `\"prompt\"` — never asked. Asking now shows the browser prompt.\n * - `\"granted\"` / `\"denied\"` — settled. `\"denied\"` is **sticky**: calling\n * `getUserMedia` again does not re-prompt, it rejects immediately.\n */\nexport type MediaPermissionState = \"unknown\" | \"prompt\" | \"granted\" | \"denied\";\n\n/** Value returned by {@link useMediaPermission}. */\nexport interface UseMediaPermissionResult {\n /** Current state. Updates live when the user changes it in browser settings. */\n state: MediaPermissionState;\n /** Whether the Permissions API could answer at all. */\n supported: boolean;\n /** Re-read the permission. Rarely needed — the hook subscribes to changes. */\n refresh: () => void;\n}\n\n/**\n * Read a capture permission **without triggering the prompt**.\n *\n * This is the piece that makes a good permission flow possible. `getUserMedia` is\n * the only way to *get* a device, but calling it is also the only way to *ask*, and\n * a prompt fired on page load — before the user has pressed anything — is the\n * single most reliable way to earn a permanent \"Block\". Reading the state first\n * lets a page explain why it needs the microphone, and only then ask.\n *\n * It also separates \"never asked\" from \"denied\", which matters because they need\n * opposite UI: `\"prompt\"` gets a button, `\"denied\"` gets instructions for the\n * browser's site settings, since no amount of clicking will re-prompt.\n *\n * Safari does not expose `microphone` to the Permissions API and throws on the\n * query, which surfaces as `state: \"unknown\"` and `supported: false` — treat that\n * as \"you will have to ask to find out\", not as an error.\n *\n * @param name - Which permission to observe.\n * @returns The live state, whether it could be read, and a manual `refresh()`.\n *\n * @example\n * const { state } = useMediaPermission(\"microphone\");\n * if (state === \"denied\") return <p>Libere o microfone nas configurações do site.</p>;\n * return <button onClick={start}>Gravar</button>;\n */\nexport function useMediaPermission(name: MediaPermissionName): UseMediaPermissionResult {\n const [state, setState] = useState<MediaPermissionState>(\"unknown\");\n const [supported, setSupported] = useState(false);\n const [token, setToken] = useState(0);\n\n const refresh = useCallback(() => setToken((value) => value + 1), []);\n\n useEffect(() => {\n let cancelled = false;\n let status: PermissionStatus | null = null;\n const onChange = (): void => {\n if (!cancelled && status) setState(status.state as MediaPermissionState);\n };\n\n async function read(): Promise<void> {\n if (typeof navigator === \"undefined\" || !navigator.permissions?.query) {\n if (!cancelled) {\n setSupported(false);\n setState(\"unknown\");\n }\n return;\n }\n try {\n status = await navigator.permissions.query({\n name: name as PermissionName,\n });\n if (cancelled) return;\n setSupported(true);\n setState(status.state as MediaPermissionState);\n status.addEventListener(\"change\", onChange);\n } catch {\n if (!cancelled) {\n setSupported(false);\n setState(\"unknown\");\n }\n }\n }\n\n void read();\n\n return () => {\n cancelled = true;\n status?.removeEventListener(\"change\", onChange);\n };\n }, [name, token]);\n\n return { state, supported, refresh };\n}\n"],"mappings":";;AAoDA,
|
|
1
|
+
{"version":3,"file":"use-media-permission.js","names":["useMediaPermission","state","setState","useState","supported","setSupported","token","setToken","refresh","useCallback","value","useEffect","cancelled","status","onChange","read","name"],"sources":["../../src/hooks/use-media-permission.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\n/** Which capture permission to observe. */\nexport type MediaPermissionName = \"microphone\" | \"camera\";\n\n/**\n * Permission state, including the two cases the browser prompt cannot tell you\n * apart on its own.\n *\n * - `\"unknown\"` — the Permissions API is unavailable (Safari does not report\n * `microphone`), so the only way to learn the answer is to ask for the device.\n * - `\"prompt\"` — never asked. Asking now shows the browser prompt.\n * - `\"granted\"` / `\"denied\"` — settled. `\"denied\"` is **sticky**: calling\n * `getUserMedia` again does not re-prompt, it rejects immediately.\n */\nexport type MediaPermissionState = \"unknown\" | \"prompt\" | \"granted\" | \"denied\";\n\n/** Value returned by {@link useMediaPermission}. */\nexport interface UseMediaPermissionResult {\n /** Current state. Updates live when the user changes it in browser settings. */\n state: MediaPermissionState;\n /** Whether the Permissions API could answer at all. */\n supported: boolean;\n /** Re-read the permission. Rarely needed — the hook subscribes to changes. */\n refresh: () => void;\n}\n\n/**\n * Read a capture permission **without triggering the prompt**.\n *\n * This is the piece that makes a good permission flow possible. `getUserMedia` is\n * the only way to *get* a device, but calling it is also the only way to *ask*, and\n * a prompt fired on page load — before the user has pressed anything — is the\n * single most reliable way to earn a permanent \"Block\". Reading the state first\n * lets a page explain why it needs the microphone, and only then ask.\n *\n * It also separates \"never asked\" from \"denied\", which matters because they need\n * opposite UI: `\"prompt\"` gets a button, `\"denied\"` gets instructions for the\n * browser's site settings, since no amount of clicking will re-prompt.\n *\n * Safari does not expose `microphone` to the Permissions API and throws on the\n * query, which surfaces as `state: \"unknown\"` and `supported: false` — treat that\n * as \"you will have to ask to find out\", not as an error.\n *\n * @param name - Which permission to observe.\n * @returns The live state, whether it could be read, and a manual `refresh()`.\n *\n * @example\n * const { state } = useMediaPermission(\"microphone\");\n * if (state === \"denied\") return <p>Libere o microfone nas configurações do site.</p>;\n * return <button onClick={start}>Gravar</button>;\n */\nexport function useMediaPermission(name: MediaPermissionName): UseMediaPermissionResult {\n const [state, setState] = useState<MediaPermissionState>(\"unknown\");\n const [supported, setSupported] = useState(false);\n const [token, setToken] = useState(0);\n\n const refresh = useCallback(() => setToken((value) => value + 1), []);\n\n useEffect(() => {\n let cancelled = false;\n let status: PermissionStatus | null = null;\n const onChange = (): void => {\n if (!cancelled && status) setState(status.state as MediaPermissionState);\n };\n\n async function read(): Promise<void> {\n if (typeof navigator === \"undefined\" || !navigator.permissions?.query) {\n if (!cancelled) {\n setSupported(false);\n setState(\"unknown\");\n }\n return;\n }\n try {\n status = await navigator.permissions.query({\n name: name as PermissionName,\n });\n if (cancelled) return;\n setSupported(true);\n setState(status.state as MediaPermissionState);\n status.addEventListener(\"change\", onChange);\n } catch {\n if (!cancelled) {\n setSupported(false);\n setState(\"unknown\");\n }\n }\n }\n\n void read();\n\n return () => {\n cancelled = true;\n status?.removeEventListener(\"change\", onChange);\n };\n }, [name, token]);\n\n return { state, supported, refresh };\n}\n"],"mappings":";;AAoDA,SAAgBA,EAAmB,GAAqD;CACpF,IAAM,CAACC,GAAOC,KAAYC,EAA+B,SAAS,GAC5D,CAACC,GAAWC,KAAgBF,EAAS,EAAK,GAC1C,CAACG,GAAOC,KAAYJ,EAAS,CAAC,GAE9BK,IAAUC,QAAkBF,GAAU,MAAUG,IAAQ,CAAC,GAAG,CAAC,CAAC;CAyCpE,OAvCAC,QAAgB;EACZ,IAAIC,IAAY,IACZC,IAAkC,MAChCC,UAAuB;GACzB,AAAI,CAACF,KAAaC,KAAQX,EAASW,EAAO,KAA6B;EAC3E;EAEA,eAAeE,IAAsB;GACjC,IAAI,OAAO,YAAc,OAAe,CAAC,UAAU,aAAa,OAC5D,AAAKH,MACDP,EAAa,EAAK,GAClBH,EAAS,SAAS;QAI1B,IAAI;IAIA,IAHA,IAAS,MAAM,UAAU,YAAY,MAAM,EACjC,QACV,CAAC,GACGU,GAAW;IAGf,AAFAP,EAAa,EAAI,GACjBH,EAASW,EAAO,KAA6B,GAC7CA,EAAO,iBAAiB,UAAUC,CAAQ;GAC9C,QAAQ;IACJ,AAAKF,MACDP,EAAa,EAAK,GAClBH,EAAS,SAAS;GAE1B;EACJ;EAIA,OAFAa,EAAU,SAEG;GAET,AADA,IAAY,IACZF,GAAQ,oBAAoB,UAAUC,CAAQ;EAClD;CACJ,GAAG,CAACE,GAAMV,CAAK,CAAC,GAET;EAAE;EAAO;EAAW;CAAQ;AACvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-media-query.cjs","names":[],"sources":["../../src/hooks/use-media-query.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Subscribe to a CSS media query and re-render on match changes.\n *\n * @param query - A standard CSS media query string, e.g. \"(max-width: 768px)\".\n * @returns True when the query matches.\n */\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = useState<boolean>(() => {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(query).matches;\n });\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const list = window.matchMedia(query);\n const handler = (event: MediaQueryListEvent): void => setMatches(event.matches);\n setMatches(list.matches);\n list.addEventListener(\"change\", handler);\n return () => list.removeEventListener(\"change\", handler);\n }, [query]);\n\n return matches;\n}\n"],"mappings":"uBAQA,
|
|
1
|
+
{"version":3,"file":"use-media-query.cjs","names":["useState","react","useMediaQuery","matches","setMatches","query","list","handler","event"],"sources":["../../src/hooks/use-media-query.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Subscribe to a CSS media query and re-render on match changes.\n *\n * @param query - A standard CSS media query string, e.g. \"(max-width: 768px)\".\n * @returns True when the query matches.\n */\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = useState<boolean>(() => {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(query).matches;\n });\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const list = window.matchMedia(query);\n const handler = (event: MediaQueryListEvent): void => setMatches(event.matches);\n setMatches(list.matches);\n list.addEventListener(\"change\", handler);\n return () => list.removeEventListener(\"change\", handler);\n }, [query]);\n\n return matches;\n}\n"],"mappings":"A,uBAQA,SAAgBE,EAAc,EAAwB,CAClD,GAAM,CAACC,EAASC,IAAA,EAAcJ,EAAAA,SAAAA,KACtB,OAAO,OAAW,IAAoB,GACnC,OAAO,WAAWK,CAAK,CAAC,CAAC,OACnC,EAWD,OATA,EAAAJ,EAAA,UAAA,KAAgB,CACZ,GAAI,OAAO,OAAW,IAAa,OACnC,IAAMK,EAAO,OAAO,WAAWD,CAAK,EAC9BE,EAAW,GAAqCH,EAAWI,EAAM,OAAO,EAG9E,OAFAJ,EAAWE,EAAK,OAAO,EACvBA,EAAK,iBAAiB,SAAUC,CAAO,MAC1BD,EAAK,oBAAoB,SAAUC,CAAO,CAC3D,EAAG,CAACF,CAAK,CAAC,EAEHF,CACX,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-media-query.js","names":[],"sources":["../../src/hooks/use-media-query.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Subscribe to a CSS media query and re-render on match changes.\n *\n * @param query - A standard CSS media query string, e.g. \"(max-width: 768px)\".\n * @returns True when the query matches.\n */\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = useState<boolean>(() => {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(query).matches;\n });\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const list = window.matchMedia(query);\n const handler = (event: MediaQueryListEvent): void => setMatches(event.matches);\n setMatches(list.matches);\n list.addEventListener(\"change\", handler);\n return () => list.removeEventListener(\"change\", handler);\n }, [query]);\n\n return matches;\n}\n"],"mappings":";;AAQA,
|
|
1
|
+
{"version":3,"file":"use-media-query.js","names":["useMediaQuery","matches","setMatches","useState","query","useEffect","list","handler","event"],"sources":["../../src/hooks/use-media-query.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Subscribe to a CSS media query and re-render on match changes.\n *\n * @param query - A standard CSS media query string, e.g. \"(max-width: 768px)\".\n * @returns True when the query matches.\n */\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = useState<boolean>(() => {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(query).matches;\n });\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const list = window.matchMedia(query);\n const handler = (event: MediaQueryListEvent): void => setMatches(event.matches);\n setMatches(list.matches);\n list.addEventListener(\"change\", handler);\n return () => list.removeEventListener(\"change\", handler);\n }, [query]);\n\n return matches;\n}\n"],"mappings":";;AAQA,SAAgBA,EAAc,GAAwB;CAClD,IAAM,CAACC,GAASC,KAAcC,QACtB,OAAO,SAAW,MAAoB,KACnC,OAAO,WAAWC,CAAK,CAAC,CAAC,OACnC;CAWD,OATAC,QAAgB;EACZ,IAAI,OAAO,SAAW,KAAa;EACnC,IAAMC,IAAO,OAAO,WAAWF,CAAK,GAC9BG,KAAW,MAAqCL,EAAWM,EAAM,OAAO;EAG9E,OAFAN,EAAWI,EAAK,OAAO,GACvBA,EAAK,iBAAiB,UAAUC,CAAO,SAC1BD,EAAK,oBAAoB,UAAUC,CAAO;CAC3D,GAAG,CAACH,CAAK,CAAC,GAEHH;AACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-object-url.cjs","names":[],"sources":["../../src/hooks/use-object-url.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Create an object URL for a `Blob` (or `File`) and revoke it automatically on\n * unmount or whenever the blob changes. Returns `null` for nullish input.\n *\n * @param blob - the blob to expose as an object URL, or `null`/`undefined`.\n * @returns The object URL string, or `null` when there is no blob.\n */\nexport function useObjectUrl(blob: Blob | null | undefined): string | null {\n const [url, setUrl] = useState<string | null>(null);\n\n useEffect(() => {\n if (!blob) {\n setUrl(null);\n return;\n }\n const next = URL.createObjectURL(blob);\n setUrl(next);\n return () => URL.revokeObjectURL(next);\n }, [blob]);\n\n return url;\n}\n"],"mappings":"uBASA,
|
|
1
|
+
{"version":3,"file":"use-object-url.cjs","names":["useState","react","useObjectUrl","url","setUrl","blob","next"],"sources":["../../src/hooks/use-object-url.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Create an object URL for a `Blob` (or `File`) and revoke it automatically on\n * unmount or whenever the blob changes. Returns `null` for nullish input.\n *\n * @param blob - the blob to expose as an object URL, or `null`/`undefined`.\n * @returns The object URL string, or `null` when there is no blob.\n */\nexport function useObjectUrl(blob: Blob | null | undefined): string | null {\n const [url, setUrl] = useState<string | null>(null);\n\n useEffect(() => {\n if (!blob) {\n setUrl(null);\n return;\n }\n const next = URL.createObjectURL(blob);\n setUrl(next);\n return () => URL.revokeObjectURL(next);\n }, [blob]);\n\n return url;\n}\n"],"mappings":"A,uBASA,SAAgBE,EAAa,EAA8C,CACvE,GAAM,CAACC,EAAKC,IAAA,EAAUJ,EAAAA,SAAAA,CAAwB,IAAI,EAYlD,OAVA,EAAAC,EAAA,UAAA,KAAgB,CACZ,GAAI,CAACI,EAAM,CACPD,EAAO,IAAI,EACX,MACJ,CACA,IAAME,EAAO,IAAI,gBAAgBD,CAAI,EAErC,OADAD,EAAOE,CAAI,MACE,IAAI,gBAAgBA,CAAI,CACzC,EAAG,CAACD,CAAI,CAAC,EAEFF,CACX,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-object-url.js","names":[],"sources":["../../src/hooks/use-object-url.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Create an object URL for a `Blob` (or `File`) and revoke it automatically on\n * unmount or whenever the blob changes. Returns `null` for nullish input.\n *\n * @param blob - the blob to expose as an object URL, or `null`/`undefined`.\n * @returns The object URL string, or `null` when there is no blob.\n */\nexport function useObjectUrl(blob: Blob | null | undefined): string | null {\n const [url, setUrl] = useState<string | null>(null);\n\n useEffect(() => {\n if (!blob) {\n setUrl(null);\n return;\n }\n const next = URL.createObjectURL(blob);\n setUrl(next);\n return () => URL.revokeObjectURL(next);\n }, [blob]);\n\n return url;\n}\n"],"mappings":";;AASA,
|
|
1
|
+
{"version":3,"file":"use-object-url.js","names":["useObjectUrl","url","setUrl","useState","useEffect","blob","next"],"sources":["../../src/hooks/use-object-url.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Create an object URL for a `Blob` (or `File`) and revoke it automatically on\n * unmount or whenever the blob changes. Returns `null` for nullish input.\n *\n * @param blob - the blob to expose as an object URL, or `null`/`undefined`.\n * @returns The object URL string, or `null` when there is no blob.\n */\nexport function useObjectUrl(blob: Blob | null | undefined): string | null {\n const [url, setUrl] = useState<string | null>(null);\n\n useEffect(() => {\n if (!blob) {\n setUrl(null);\n return;\n }\n const next = URL.createObjectURL(blob);\n setUrl(next);\n return () => URL.revokeObjectURL(next);\n }, [blob]);\n\n return url;\n}\n"],"mappings":";;AASA,SAAgBA,EAAa,GAA8C;CACvE,IAAM,CAACC,GAAKC,KAAUC,EAAwB,IAAI;CAYlD,OAVAC,QAAgB;EACZ,IAAI,CAACC,GAAM;GACP,EAAO,IAAI;GACX;EACJ;EACA,IAAMC,IAAO,IAAI,gBAAgBD,CAAI;EAErC,OADAH,EAAOI,CAAI,SACE,IAAI,gBAAgBA,CAAI;CACzC,GAAG,CAACD,CAAI,CAAC,GAEFJ;AACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-online.cjs","names":[],"sources":["../../src/hooks/use-online.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\n/**\n * Options for {@link useOnline}. Omit them for the cheap `navigator.onLine`\n * behaviour; pass `pingUrl` to add a real-reachability probe on top.\n */\nexport interface UseOnlineOptions {\n /**\n * URL to probe for real connectivity. `navigator.onLine` reports `true`\n * behind a captive portal or when the machine has a link but no internet;\n * a periodic `HEAD` to this URL catches those cases. When set, the result\n * is `navigator.onLine && lastProbeSucceeded`.\n */\n pingUrl?: string;\n /** How often to probe, in ms. Default `30000`. */\n intervalMs?: number;\n /** Abort a probe after this many ms and treat it as offline. Default `5000`. */\n timeoutMs?: number;\n}\n\n/**\n * Track connectivity and re-render on changes.\n *\n * With no options it mirrors `navigator.onLine` (assuming online during SSR and\n * before the first event). Pass `pingUrl` to additionally probe real\n * reachability — the browser's `onLine` flag lies behind captive portals and\n * dead links, so the probe downgrades the result to `false` when the network is\n * unusable even though `navigator.onLine` is `true`.\n *\n * @param options - Optional reachability-probe configuration.\n * @returns `true` when the device is online (and reachable, when probing).\n *\n * @example\n * const online = useOnline(); // navigator.onLine only\n * const reallyOnline = useOnline({ pingUrl: \"/health\", intervalMs: 15_000 });\n */\nexport function useOnline(options: UseOnlineOptions = {}): boolean {\n const { pingUrl, intervalMs = 30_000, timeoutMs = 5_000 } = options;\n\n const [navOnline, setNavOnline] = useState<boolean>(() =>\n typeof navigator === \"undefined\" ? true : navigator.onLine,\n );\n const [reachable, setReachable] = useState<boolean>(true);\n\n const optionsRef = useLatestRef({ pingUrl, timeoutMs });\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const handleOnline = (): void => setNavOnline(true);\n const handleOffline = (): void => setNavOnline(false);\n window.addEventListener(\"online\", handleOnline);\n window.addEventListener(\"offline\", handleOffline);\n return () => {\n window.removeEventListener(\"online\", handleOnline);\n window.removeEventListener(\"offline\", handleOffline);\n };\n }, []);\n\n useEffect(() => {\n if (!pingUrl || typeof window === \"undefined\") return;\n\n let cancelled = false;\n const probe = async (): Promise<void> => {\n if (typeof navigator !== \"undefined\" && !navigator.onLine) {\n if (!cancelled) setReachable(false);\n return;\n }\n const controller = new AbortController();\n const timer = window.setTimeout(() => controller.abort(), optionsRef.current.timeoutMs);\n try {\n await fetch(optionsRef.current.pingUrl!, {\n method: \"HEAD\",\n cache: \"no-store\",\n signal: controller.signal,\n });\n if (!cancelled) setReachable(true);\n } catch {\n if (!cancelled) setReachable(false);\n } finally {\n window.clearTimeout(timer);\n }\n };\n\n void probe();\n const id = window.setInterval(() => void probe(), intervalMs);\n const onWake = (): void => void probe();\n window.addEventListener(\"online\", onWake);\n document.addEventListener(\"visibilitychange\", onWake);\n return () => {\n cancelled = true;\n window.clearInterval(id);\n window.removeEventListener(\"online\", onWake);\n document.removeEventListener(\"visibilitychange\", onWake);\n };\n }, [pingUrl, intervalMs, optionsRef]);\n\n return pingUrl ? navOnline && reachable : navOnline;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-online.cjs","names":["useState","useLatestRef","require_use_latest_ref","react","useOnline","options","navOnline","setNavOnline","reachable","setReachable","optionsRef","handleOnline","handleOffline","pingUrl","cancelled","probe","controller","timer","id","intervalMs","onWake"],"sources":["../../src/hooks/use-online.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\n/**\n * Options for {@link useOnline}. Omit them for the cheap `navigator.onLine`\n * behaviour; pass `pingUrl` to add a real-reachability probe on top.\n */\nexport interface UseOnlineOptions {\n /**\n * URL to probe for real connectivity. `navigator.onLine` reports `true`\n * behind a captive portal or when the machine has a link but no internet;\n * a periodic `HEAD` to this URL catches those cases. When set, the result\n * is `navigator.onLine && lastProbeSucceeded`.\n */\n pingUrl?: string;\n /** How often to probe, in ms. Default `30000`. */\n intervalMs?: number;\n /** Abort a probe after this many ms and treat it as offline. Default `5000`. */\n timeoutMs?: number;\n}\n\n/**\n * Track connectivity and re-render on changes.\n *\n * With no options it mirrors `navigator.onLine` (assuming online during SSR and\n * before the first event). Pass `pingUrl` to additionally probe real\n * reachability — the browser's `onLine` flag lies behind captive portals and\n * dead links, so the probe downgrades the result to `false` when the network is\n * unusable even though `navigator.onLine` is `true`.\n *\n * @param options - Optional reachability-probe configuration.\n * @returns `true` when the device is online (and reachable, when probing).\n *\n * @example\n * const online = useOnline(); // navigator.onLine only\n * const reallyOnline = useOnline({ pingUrl: \"/health\", intervalMs: 15_000 });\n */\nexport function useOnline(options: UseOnlineOptions = {}): boolean {\n const { pingUrl, intervalMs = 30_000, timeoutMs = 5_000 } = options;\n\n const [navOnline, setNavOnline] = useState<boolean>(() =>\n typeof navigator === \"undefined\" ? true : navigator.onLine,\n );\n const [reachable, setReachable] = useState<boolean>(true);\n\n const optionsRef = useLatestRef({ pingUrl, timeoutMs });\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const handleOnline = (): void => setNavOnline(true);\n const handleOffline = (): void => setNavOnline(false);\n window.addEventListener(\"online\", handleOnline);\n window.addEventListener(\"offline\", handleOffline);\n return () => {\n window.removeEventListener(\"online\", handleOnline);\n window.removeEventListener(\"offline\", handleOffline);\n };\n }, []);\n\n useEffect(() => {\n if (!pingUrl || typeof window === \"undefined\") return;\n\n let cancelled = false;\n const probe = async (): Promise<void> => {\n if (typeof navigator !== \"undefined\" && !navigator.onLine) {\n if (!cancelled) setReachable(false);\n return;\n }\n const controller = new AbortController();\n const timer = window.setTimeout(() => controller.abort(), optionsRef.current.timeoutMs);\n try {\n await fetch(optionsRef.current.pingUrl!, {\n method: \"HEAD\",\n cache: \"no-store\",\n signal: controller.signal,\n });\n if (!cancelled) setReachable(true);\n } catch {\n if (!cancelled) setReachable(false);\n } finally {\n window.clearTimeout(timer);\n }\n };\n\n void probe();\n const id = window.setInterval(() => void probe(), intervalMs);\n const onWake = (): void => void probe();\n window.addEventListener(\"online\", onWake);\n document.addEventListener(\"visibilitychange\", onWake);\n return () => {\n cancelled = true;\n window.clearInterval(id);\n window.removeEventListener(\"online\", onWake);\n document.removeEventListener(\"visibilitychange\", onWake);\n };\n }, [pingUrl, intervalMs, optionsRef]);\n\n return pingUrl ? navOnline && reachable : navOnline;\n}\n"],"mappings":"A,+DAqCA,SAAgBI,EAAU,EAA4B,CAAC,EAAY,CAC/D,GAAM,CAAE,UAAS,aAAa,IAAQ,YAAY,KAAUC,EAEtD,CAACC,EAAWC,IAAA,EAAgBP,EAAAA,SAAAA,KAC9B,OAAO,UAAc,KAAqB,UAAU,MACxD,EACM,CAACQ,EAAWC,IAAA,EAAgBT,EAAAA,SAAAA,CAAkB,EAAI,EAElDU,EAAaT,EAAAA,aAAa,CAAE,UAAS,WAAU,CAAC,EAoDtD,OAlDA,EAAAE,EAAA,UAAA,KAAgB,CACZ,GAAI,OAAO,OAAW,IAAa,OACnC,IAAMQ,MAA2BJ,EAAa,EAAI,EAC5CK,MAA4BL,EAAa,EAAK,EAGpD,OAFA,OAAO,iBAAiB,SAAUI,CAAY,EAC9C,OAAO,iBAAiB,UAAWC,CAAa,MACnC,CACT,OAAO,oBAAoB,SAAUD,CAAY,EACjD,OAAO,oBAAoB,UAAWC,CAAa,CACvD,CACJ,EAAG,CAAC,CAAC,GAEL,EAAAT,EAAA,UAAA,KAAgB,CACZ,GAAI,CAACU,GAAW,OAAO,OAAW,IAAa,OAE/C,IAAIC,EAAY,GACVC,EAAQ,SAA2B,CACrC,GAAI,OAAO,UAAc,KAAe,CAAC,UAAU,OAAQ,CAClDD,GAAWL,EAAa,EAAK,EAClC,MACJ,CACA,IAAMO,EAAa,IAAI,gBACjBC,EAAQ,OAAO,eAAiBD,EAAW,MAAM,EAAGN,EAAW,QAAQ,SAAS,EACtF,GAAI,CACA,MAAM,MAAMA,EAAW,QAAQ,QAAU,CACrC,OAAQ,OACR,MAAO,WACP,OAAQM,EAAW,MACvB,CAAC,EACIF,GAAWL,EAAa,EAAI,CACrC,MAAQ,CACCK,GAAWL,EAAa,EAAK,CACtC,QAAU,CACN,OAAO,aAAaQ,CAAK,CAC7B,CACJ,EAEAF,EAAW,EACX,IAAMG,EAAK,OAAO,gBAAkB,KAAKH,EAAM,EAAGI,CAAU,EACtDC,MAAqB,KAAKL,EAAM,EAGtC,OAFA,OAAO,iBAAiB,SAAUK,CAAM,EACxC,SAAS,iBAAiB,mBAAoBA,CAAM,MACvC,CACT,EAAY,GACZ,OAAO,cAAcF,CAAE,EACvB,OAAO,oBAAoB,SAAUE,CAAM,EAC3C,SAAS,oBAAoB,mBAAoBA,CAAM,CAC3D,CACJ,EAAG,CAACP,EAASM,EAAYT,CAAU,CAAC,EAE7BG,EAAUP,GAAaE,EAAYF,CAC9C,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-online.js","names":[],"sources":["../../src/hooks/use-online.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\n/**\n * Options for {@link useOnline}. Omit them for the cheap `navigator.onLine`\n * behaviour; pass `pingUrl` to add a real-reachability probe on top.\n */\nexport interface UseOnlineOptions {\n /**\n * URL to probe for real connectivity. `navigator.onLine` reports `true`\n * behind a captive portal or when the machine has a link but no internet;\n * a periodic `HEAD` to this URL catches those cases. When set, the result\n * is `navigator.onLine && lastProbeSucceeded`.\n */\n pingUrl?: string;\n /** How often to probe, in ms. Default `30000`. */\n intervalMs?: number;\n /** Abort a probe after this many ms and treat it as offline. Default `5000`. */\n timeoutMs?: number;\n}\n\n/**\n * Track connectivity and re-render on changes.\n *\n * With no options it mirrors `navigator.onLine` (assuming online during SSR and\n * before the first event). Pass `pingUrl` to additionally probe real\n * reachability — the browser's `onLine` flag lies behind captive portals and\n * dead links, so the probe downgrades the result to `false` when the network is\n * unusable even though `navigator.onLine` is `true`.\n *\n * @param options - Optional reachability-probe configuration.\n * @returns `true` when the device is online (and reachable, when probing).\n *\n * @example\n * const online = useOnline(); // navigator.onLine only\n * const reallyOnline = useOnline({ pingUrl: \"/health\", intervalMs: 15_000 });\n */\nexport function useOnline(options: UseOnlineOptions = {}): boolean {\n const { pingUrl, intervalMs = 30_000, timeoutMs = 5_000 } = options;\n\n const [navOnline, setNavOnline] = useState<boolean>(() =>\n typeof navigator === \"undefined\" ? true : navigator.onLine,\n );\n const [reachable, setReachable] = useState<boolean>(true);\n\n const optionsRef = useLatestRef({ pingUrl, timeoutMs });\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const handleOnline = (): void => setNavOnline(true);\n const handleOffline = (): void => setNavOnline(false);\n window.addEventListener(\"online\", handleOnline);\n window.addEventListener(\"offline\", handleOffline);\n return () => {\n window.removeEventListener(\"online\", handleOnline);\n window.removeEventListener(\"offline\", handleOffline);\n };\n }, []);\n\n useEffect(() => {\n if (!pingUrl || typeof window === \"undefined\") return;\n\n let cancelled = false;\n const probe = async (): Promise<void> => {\n if (typeof navigator !== \"undefined\" && !navigator.onLine) {\n if (!cancelled) setReachable(false);\n return;\n }\n const controller = new AbortController();\n const timer = window.setTimeout(() => controller.abort(), optionsRef.current.timeoutMs);\n try {\n await fetch(optionsRef.current.pingUrl!, {\n method: \"HEAD\",\n cache: \"no-store\",\n signal: controller.signal,\n });\n if (!cancelled) setReachable(true);\n } catch {\n if (!cancelled) setReachable(false);\n } finally {\n window.clearTimeout(timer);\n }\n };\n\n void probe();\n const id = window.setInterval(() => void probe(), intervalMs);\n const onWake = (): void => void probe();\n window.addEventListener(\"online\", onWake);\n document.addEventListener(\"visibilitychange\", onWake);\n return () => {\n cancelled = true;\n window.clearInterval(id);\n window.removeEventListener(\"online\", onWake);\n document.removeEventListener(\"visibilitychange\", onWake);\n };\n }, [pingUrl, intervalMs, optionsRef]);\n\n return pingUrl ? navOnline && reachable : navOnline;\n}\n"],"mappings":";;;AAqCA,
|
|
1
|
+
{"version":3,"file":"use-online.js","names":["useOnline","options","navOnline","setNavOnline","useState","reachable","setReachable","optionsRef","useLatestRef","useEffect","handleOnline","handleOffline","pingUrl","cancelled","probe","controller","timer","id","intervalMs","onWake"],"sources":["../../src/hooks/use-online.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\n/**\n * Options for {@link useOnline}. Omit them for the cheap `navigator.onLine`\n * behaviour; pass `pingUrl` to add a real-reachability probe on top.\n */\nexport interface UseOnlineOptions {\n /**\n * URL to probe for real connectivity. `navigator.onLine` reports `true`\n * behind a captive portal or when the machine has a link but no internet;\n * a periodic `HEAD` to this URL catches those cases. When set, the result\n * is `navigator.onLine && lastProbeSucceeded`.\n */\n pingUrl?: string;\n /** How often to probe, in ms. Default `30000`. */\n intervalMs?: number;\n /** Abort a probe after this many ms and treat it as offline. Default `5000`. */\n timeoutMs?: number;\n}\n\n/**\n * Track connectivity and re-render on changes.\n *\n * With no options it mirrors `navigator.onLine` (assuming online during SSR and\n * before the first event). Pass `pingUrl` to additionally probe real\n * reachability — the browser's `onLine` flag lies behind captive portals and\n * dead links, so the probe downgrades the result to `false` when the network is\n * unusable even though `navigator.onLine` is `true`.\n *\n * @param options - Optional reachability-probe configuration.\n * @returns `true` when the device is online (and reachable, when probing).\n *\n * @example\n * const online = useOnline(); // navigator.onLine only\n * const reallyOnline = useOnline({ pingUrl: \"/health\", intervalMs: 15_000 });\n */\nexport function useOnline(options: UseOnlineOptions = {}): boolean {\n const { pingUrl, intervalMs = 30_000, timeoutMs = 5_000 } = options;\n\n const [navOnline, setNavOnline] = useState<boolean>(() =>\n typeof navigator === \"undefined\" ? true : navigator.onLine,\n );\n const [reachable, setReachable] = useState<boolean>(true);\n\n const optionsRef = useLatestRef({ pingUrl, timeoutMs });\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const handleOnline = (): void => setNavOnline(true);\n const handleOffline = (): void => setNavOnline(false);\n window.addEventListener(\"online\", handleOnline);\n window.addEventListener(\"offline\", handleOffline);\n return () => {\n window.removeEventListener(\"online\", handleOnline);\n window.removeEventListener(\"offline\", handleOffline);\n };\n }, []);\n\n useEffect(() => {\n if (!pingUrl || typeof window === \"undefined\") return;\n\n let cancelled = false;\n const probe = async (): Promise<void> => {\n if (typeof navigator !== \"undefined\" && !navigator.onLine) {\n if (!cancelled) setReachable(false);\n return;\n }\n const controller = new AbortController();\n const timer = window.setTimeout(() => controller.abort(), optionsRef.current.timeoutMs);\n try {\n await fetch(optionsRef.current.pingUrl!, {\n method: \"HEAD\",\n cache: \"no-store\",\n signal: controller.signal,\n });\n if (!cancelled) setReachable(true);\n } catch {\n if (!cancelled) setReachable(false);\n } finally {\n window.clearTimeout(timer);\n }\n };\n\n void probe();\n const id = window.setInterval(() => void probe(), intervalMs);\n const onWake = (): void => void probe();\n window.addEventListener(\"online\", onWake);\n document.addEventListener(\"visibilitychange\", onWake);\n return () => {\n cancelled = true;\n window.clearInterval(id);\n window.removeEventListener(\"online\", onWake);\n document.removeEventListener(\"visibilitychange\", onWake);\n };\n }, [pingUrl, intervalMs, optionsRef]);\n\n return pingUrl ? navOnline && reachable : navOnline;\n}\n"],"mappings":";;;AAqCA,SAAgBA,EAAU,IAA4B,CAAC,GAAY;CAC/D,IAAM,EAAE,YAAS,gBAAa,KAAQ,eAAY,QAAUC,GAEtD,CAACC,GAAWC,KAAgBC,QAC9B,OAAO,YAAc,OAAqB,UAAU,MACxD,GACM,CAACC,GAAWC,KAAgBF,EAAkB,EAAI,GAElDG,IAAaC,EAAa;EAAE;EAAS;CAAU,CAAC;CAoDtD,OAlDAC,QAAgB;EACZ,IAAI,OAAO,SAAW,KAAa;EACnC,IAAMC,UAA2BP,EAAa,EAAI,GAC5CQ,UAA4BR,EAAa,EAAK;EAGpD,OAFA,OAAO,iBAAiB,UAAUO,CAAY,GAC9C,OAAO,iBAAiB,WAAWC,CAAa,SACnC;GAET,AADA,OAAO,oBAAoB,UAAUD,CAAY,GACjD,OAAO,oBAAoB,WAAWC,CAAa;EACvD;CACJ,GAAG,CAAC,CAAC,GAELF,QAAgB;EACZ,IAAI,CAACG,KAAW,OAAO,SAAW,KAAa;EAE/C,IAAIC,IAAY,IACVC,IAAQ,YAA2B;GACrC,IAAI,OAAO,YAAc,OAAe,CAAC,UAAU,QAAQ;IACvD,AAAKD,KAAWP,EAAa,EAAK;IAClC;GACJ;GACA,IAAMS,IAAa,IAAI,gBAAgB,GACjCC,IAAQ,OAAO,iBAAiBD,EAAW,MAAM,GAAGR,EAAW,QAAQ,SAAS;GACtF,IAAI;IAMA,AALA,MAAM,MAAMA,EAAW,QAAQ,SAAU;KACrC,QAAQ;KACR,OAAO;KACP,QAAQQ,EAAW;IACvB,CAAC,GACIF,KAAWP,EAAa,EAAI;GACrC,QAAQ;IACJ,AAAKO,KAAWP,EAAa,EAAK;GACtC,UAAU;IACN,OAAO,aAAaU,CAAK;GAC7B;EACJ;EAEA,EAAW;EACX,IAAMC,IAAK,OAAO,kBAAkB,KAAKH,EAAM,GAAGI,CAAU,GACtDC,UAAqB,KAAKL,EAAM;EAGtC,OAFA,OAAO,iBAAiB,UAAUK,CAAM,GACxC,SAAS,iBAAiB,oBAAoBA,CAAM,SACvC;GAIT,AAHA,IAAY,IACZ,OAAO,cAAcF,CAAE,GACvB,OAAO,oBAAoB,UAAUE,CAAM,GAC3C,SAAS,oBAAoB,oBAAoBA,CAAM;EAC3D;CACJ,GAAG;EAACP;EAASM;EAAYX;CAAU,CAAC,GAE7BK,IAAUV,KAAaG,IAAYH;AAC9C"}
|