tempest-react-sdk 0.77.0 → 0.79.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/bin/lib/alias/collect.mjs +20 -3
- package/bin/lib/alias/index.mjs +12 -1
- package/bin/lib/alias/index.test.mjs +24 -0
- package/bin/lib/css/analyze.test.mjs +21 -1
- package/bin/lib/css/collect.mjs +14 -0
- package/bin/lib/css/extract.mjs +63 -5
- package/bin/lib/css/extract.test.mjs +110 -1
- package/bin/lib/css/fix.e2e.test.mjs +50 -0
- package/bin/lib/css/index.mjs +6 -1
- package/bin/lib/fs/contain.mjs +50 -0
- package/bin/lib/icons/generate.mjs +28 -3
- package/bin/lib/icons/generate.test.mjs +57 -1
- package/bin/lib/openapi/escape.mjs +20 -6
- package/bin/lib/openapi/generate.encode.test.mjs +120 -0
- package/bin/lib/openapi/generate.hostile.test.mjs +38 -9
- package/bin/lib/openapi/generate.mjs +203 -64
- package/bin/lib/openapi/generate.pagination.test.mjs +3 -2
- package/bin/lib/openapi/generate.test.mjs +270 -3
- package/bin/lib/openapi/schema-to-zod.mjs +5 -3
- package/bin/tempest-gen.test.mjs +188 -0
- package/bin/tempest.mjs +120 -44
- 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 +185 -114
- 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 -71
- 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 +16 -5
- 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 +1 -1
- package/dist/components/CodeBlock/CodeBlock.cjs.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.js +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 +1 -1
- package/dist/components/CodeBlock/tokenize.cjs.map +1 -1
- package/dist/components/CodeBlock/tokenize.js +54 -25
- 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 +6 -6
- package/dist/components/Markdown/markdown-parse.cjs.map +1 -1
- package/dist/components/Markdown/markdown-parse.js +94 -96
- 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 +1 -1
- package/dist/http/resumable-upload.cjs.map +1 -1
- package/dist/http/resumable-upload.js +141 -105
- package/dist/http/resumable-upload.js.map +1 -1
- package/dist/http/retry.cjs +1 -1
- package/dist/http/retry.cjs.map +1 -1
- package/dist/http/retry.js +5 -6
- 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 +1 -1
- package/dist/sw/background-sync.cjs.map +1 -1
- package/dist/sw/background-sync.js +32 -31
- 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/sw.d.ts +46 -8
- 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 +1 -1
- package/dist/telemetry/app-error-reporter.cjs.map +1 -1
- package/dist/telemetry/app-error-reporter.js +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 +448 -15
- package/dist/tempest-react-sdk.js +119 -119
- 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 +3 -3
- package/dist/utils/csv.cjs.map +1 -1
- package/dist/utils/csv.js +11 -10
- 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/{telemetry/app-error-owner.cjs → utils/owner-fingerprint.cjs} +2 -2
- package/dist/utils/owner-fingerprint.cjs.map +1 -0
- package/dist/{telemetry/app-error-owner.js → utils/owner-fingerprint.js} +3 -3
- package/dist/utils/owner-fingerprint.js.map +1 -0
- 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 +2 -2
- package/dist/vite/tempest-csp.cjs.map +1 -1
- package/dist/vite/tempest-csp.js +69 -66
- 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/vite.d.ts +5 -3
- 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
- package/dist/telemetry/app-error-owner.cjs.map +0 -1
- package/dist/telemetry/app-error-owner.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escape-layer.cjs","names":[],"sources":["../../../src/components/Portal/escape-layer.ts"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\n\n/** One open layer that `Escape` can dismiss. */\ninterface EscapeLayer {\n /** Latest dismiss callback; `null` makes the layer swallow the key without closing. */\n current: (() => void) | null;\n /** Position in the stack: higher is more recently opened, or deeper in the tree. */\n order: number;\n}\n\nconst stack: EscapeLayer[] = [];\n\nlet sequence = 0;\n\n/**\n * The single `keydown` listener behind every layer.\n *\n * Dismisses only the top of the stack. Every overlay used to listen on `window`\n * and close on any `Escape`, so one key press closed everything open at once —\n * measured in Chrome, a `Modal` holding a `DropdownMenu`, `Combobox`,\n * `MultiSelect`, `Popover`, `ContextMenu`, editable `DataTable` cell or a second\n * `Modal` closed together with the inner layer in all seven cases, and a\n * `Drawer` closed with the `Popover` inside it.\n *\n * Two kinds of inner layer exist, and this covers both:\n *\n * - Layers that listen on `window` themselves can never see each other's\n * events, so they register here and only the most recently opened one reacts.\n * - Layers that handle the key on their own element (a menu, a combobox input,\n * an inline cell editor) run first — React's delegated listener sits below\n * `window` — and call `preventDefault()`. A consumed key is left alone.\n *\n * A key pressed while an IME is composing belongs to the composition (it cancels\n * the candidate), so it is ignored too.\n *\n * @param event - The native keyboard event.\n * @returns Nothing.\n */\nfunction handleKeyDown(event: KeyboardEvent): void {\n if (event.key !== \"Escape\" || event.defaultPrevented || event.isComposing) return;\n const top = stack.at(-1);\n if (!top) return;\n event.preventDefault();\n top.current?.();\n}\n\n/**\n * Register an overlay as an `Escape`-dismissable layer while it is open.\n *\n * Layers stack in the order they open, so the one opened last is dismissed\n * first, and a second `Escape` reaches the next one down. The callback is read\n * through a ref, so a new closure on every render does not move the layer in\n * the stack.\n *\n * Pass `null` as `onEscape` for a modal layer whose dismissal is turned off\n * (`closeOnEsc={false}`): it stays on the stack and swallows the key, instead of\n * letting it fall through and close the modal underneath.\n *\n * The position is taken when the layer **renders** open, not when its effect\n * runs. Effects run child-first, so a `Modal` that mounts already holding an open\n * inner `Modal` would register the inner one first and put the outer one on top —\n * `Escape` would close the wrong layer, or a locked inner modal would let the key\n * through to the outer one. Parents render before their children, so render\n * order is tree order within a commit and opening order across commits. A\n * discarded or doubled render (Strict Mode, concurrent rendering) only skips\n * numbers; the relative order stays.\n *\n * @param active - Whether the layer is currently open.\n * @param onEscape - What `Escape` does to this layer, or `null` to block only.\n * @returns Nothing.\n */\nexport function useEscapeLayer(active: boolean, onEscape: (() => void) | null): void {\n const order = useMemo(() => (active ? ++sequence : 0), [active]);\n const layer = useRef<EscapeLayer>({ current: onEscape, order });\n\n useEffect(() => {\n layer.current.current = onEscape;\n }, [onEscape]);\n\n useEffect(() => {\n if (!active) return;\n const entry = layer.current;\n entry.order = order;\n if (stack.length === 0) window.addEventListener(\"keydown\", handleKeyDown);\n const index = stack.findIndex((other) => other.order > order);\n stack.splice(index === -1 ? stack.length : index, 0, entry);\n return () => {\n const index = stack.lastIndexOf(entry);\n if (index !== -1) stack.splice(index, 1);\n if (stack.length === 0) window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [active, order]);\n}\n"],"mappings":"uBAUA,
|
|
1
|
+
{"version":3,"file":"escape-layer.cjs","names":["useMemo","useRef","react","stack","sequence","handleKeyDown","event","top","useEscapeLayer","order","active","layer","onEscape","entry","index","other"],"sources":["../../../src/components/Portal/escape-layer.ts"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\n\n/** One open layer that `Escape` can dismiss. */\ninterface EscapeLayer {\n /** Latest dismiss callback; `null` makes the layer swallow the key without closing. */\n current: (() => void) | null;\n /** Position in the stack: higher is more recently opened, or deeper in the tree. */\n order: number;\n}\n\nconst stack: EscapeLayer[] = [];\n\nlet sequence = 0;\n\n/**\n * The single `keydown` listener behind every layer.\n *\n * Dismisses only the top of the stack. Every overlay used to listen on `window`\n * and close on any `Escape`, so one key press closed everything open at once —\n * measured in Chrome, a `Modal` holding a `DropdownMenu`, `Combobox`,\n * `MultiSelect`, `Popover`, `ContextMenu`, editable `DataTable` cell or a second\n * `Modal` closed together with the inner layer in all seven cases, and a\n * `Drawer` closed with the `Popover` inside it.\n *\n * Two kinds of inner layer exist, and this covers both:\n *\n * - Layers that listen on `window` themselves can never see each other's\n * events, so they register here and only the most recently opened one reacts.\n * - Layers that handle the key on their own element (a menu, a combobox input,\n * an inline cell editor) run first — React's delegated listener sits below\n * `window` — and call `preventDefault()`. A consumed key is left alone.\n *\n * A key pressed while an IME is composing belongs to the composition (it cancels\n * the candidate), so it is ignored too.\n *\n * @param event - The native keyboard event.\n * @returns Nothing.\n */\nfunction handleKeyDown(event: KeyboardEvent): void {\n if (event.key !== \"Escape\" || event.defaultPrevented || event.isComposing) return;\n const top = stack.at(-1);\n if (!top) return;\n event.preventDefault();\n top.current?.();\n}\n\n/**\n * Register an overlay as an `Escape`-dismissable layer while it is open.\n *\n * Layers stack in the order they open, so the one opened last is dismissed\n * first, and a second `Escape` reaches the next one down. The callback is read\n * through a ref, so a new closure on every render does not move the layer in\n * the stack.\n *\n * Pass `null` as `onEscape` for a modal layer whose dismissal is turned off\n * (`closeOnEsc={false}`): it stays on the stack and swallows the key, instead of\n * letting it fall through and close the modal underneath.\n *\n * The position is taken when the layer **renders** open, not when its effect\n * runs. Effects run child-first, so a `Modal` that mounts already holding an open\n * inner `Modal` would register the inner one first and put the outer one on top —\n * `Escape` would close the wrong layer, or a locked inner modal would let the key\n * through to the outer one. Parents render before their children, so render\n * order is tree order within a commit and opening order across commits. A\n * discarded or doubled render (Strict Mode, concurrent rendering) only skips\n * numbers; the relative order stays.\n *\n * @param active - Whether the layer is currently open.\n * @param onEscape - What `Escape` does to this layer, or `null` to block only.\n * @returns Nothing.\n */\nexport function useEscapeLayer(active: boolean, onEscape: (() => void) | null): void {\n const order = useMemo(() => (active ? ++sequence : 0), [active]);\n const layer = useRef<EscapeLayer>({ current: onEscape, order });\n\n useEffect(() => {\n layer.current.current = onEscape;\n }, [onEscape]);\n\n useEffect(() => {\n if (!active) return;\n const entry = layer.current;\n entry.order = order;\n if (stack.length === 0) window.addEventListener(\"keydown\", handleKeyDown);\n const index = stack.findIndex((other) => other.order > order);\n stack.splice(index === -1 ? stack.length : index, 0, entry);\n return () => {\n const index = stack.lastIndexOf(entry);\n if (index !== -1) stack.splice(index, 1);\n if (stack.length === 0) window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [active, order]);\n}\n"],"mappings":"A,uBAUA,IAAMG,EAAuB,CAAC,EAE1BC,EAAW,EA0Bf,SAASC,EAAc,EAA4B,CAC/C,GAAIC,EAAM,MAAQ,UAAYA,EAAM,kBAAoBA,EAAM,YAAa,OAC3E,IAAMC,EAAMJ,EAAM,GAAG,EAAE,EAClBI,IACLD,EAAM,eAAe,EACrBC,EAAI,UAAU,EAClB,CA2BA,SAAgBC,EAAe,EAAiB,EAAqC,CACjF,IAAMC,GAAA,EAAQT,EAAAA,QAAAA,KAAeU,EAAS,EAAEN,EAAW,EAAI,CAACM,CAAM,CAAC,EACzDC,GAAA,EAAQV,EAAAA,OAAAA,CAAoB,CAAE,QAASW,EAAU,OAAM,CAAC,GAE9D,EAAAV,EAAA,UAAA,KAAgB,CACZ,EAAM,QAAQ,QAAUU,CAC5B,EAAG,CAACA,CAAQ,CAAC,GAEb,EAAAV,EAAA,UAAA,KAAgB,CACZ,GAAI,CAACQ,EAAQ,OACb,IAAMG,EAAQF,EAAM,QACpB,EAAM,MAAQF,EACVN,EAAM,SAAW,GAAG,OAAO,iBAAiB,UAAWE,CAAa,EACxE,IAAMS,EAAQX,EAAM,UAAW,GAAUY,EAAM,MAAQN,CAAK,EAE5D,OADAN,EAAM,OAAOW,IAAU,GAAKX,EAAM,OAASW,EAAO,EAAGD,CAAK,MAC7C,CACT,IAAMC,EAAQX,EAAM,YAAYU,CAAK,EACjCC,IAAU,IAAIX,EAAM,OAAOW,EAAO,CAAC,EACnCX,EAAM,SAAW,GAAG,OAAO,oBAAoB,UAAWE,CAAa,CAC/E,CACJ,EAAG,CAACK,EAAQD,CAAK,CAAC,CACtB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escape-layer.js","names":[],"sources":["../../../src/components/Portal/escape-layer.ts"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\n\n/** One open layer that `Escape` can dismiss. */\ninterface EscapeLayer {\n /** Latest dismiss callback; `null` makes the layer swallow the key without closing. */\n current: (() => void) | null;\n /** Position in the stack: higher is more recently opened, or deeper in the tree. */\n order: number;\n}\n\nconst stack: EscapeLayer[] = [];\n\nlet sequence = 0;\n\n/**\n * The single `keydown` listener behind every layer.\n *\n * Dismisses only the top of the stack. Every overlay used to listen on `window`\n * and close on any `Escape`, so one key press closed everything open at once —\n * measured in Chrome, a `Modal` holding a `DropdownMenu`, `Combobox`,\n * `MultiSelect`, `Popover`, `ContextMenu`, editable `DataTable` cell or a second\n * `Modal` closed together with the inner layer in all seven cases, and a\n * `Drawer` closed with the `Popover` inside it.\n *\n * Two kinds of inner layer exist, and this covers both:\n *\n * - Layers that listen on `window` themselves can never see each other's\n * events, so they register here and only the most recently opened one reacts.\n * - Layers that handle the key on their own element (a menu, a combobox input,\n * an inline cell editor) run first — React's delegated listener sits below\n * `window` — and call `preventDefault()`. A consumed key is left alone.\n *\n * A key pressed while an IME is composing belongs to the composition (it cancels\n * the candidate), so it is ignored too.\n *\n * @param event - The native keyboard event.\n * @returns Nothing.\n */\nfunction handleKeyDown(event: KeyboardEvent): void {\n if (event.key !== \"Escape\" || event.defaultPrevented || event.isComposing) return;\n const top = stack.at(-1);\n if (!top) return;\n event.preventDefault();\n top.current?.();\n}\n\n/**\n * Register an overlay as an `Escape`-dismissable layer while it is open.\n *\n * Layers stack in the order they open, so the one opened last is dismissed\n * first, and a second `Escape` reaches the next one down. The callback is read\n * through a ref, so a new closure on every render does not move the layer in\n * the stack.\n *\n * Pass `null` as `onEscape` for a modal layer whose dismissal is turned off\n * (`closeOnEsc={false}`): it stays on the stack and swallows the key, instead of\n * letting it fall through and close the modal underneath.\n *\n * The position is taken when the layer **renders** open, not when its effect\n * runs. Effects run child-first, so a `Modal` that mounts already holding an open\n * inner `Modal` would register the inner one first and put the outer one on top —\n * `Escape` would close the wrong layer, or a locked inner modal would let the key\n * through to the outer one. Parents render before their children, so render\n * order is tree order within a commit and opening order across commits. A\n * discarded or doubled render (Strict Mode, concurrent rendering) only skips\n * numbers; the relative order stays.\n *\n * @param active - Whether the layer is currently open.\n * @param onEscape - What `Escape` does to this layer, or `null` to block only.\n * @returns Nothing.\n */\nexport function useEscapeLayer(active: boolean, onEscape: (() => void) | null): void {\n const order = useMemo(() => (active ? ++sequence : 0), [active]);\n const layer = useRef<EscapeLayer>({ current: onEscape, order });\n\n useEffect(() => {\n layer.current.current = onEscape;\n }, [onEscape]);\n\n useEffect(() => {\n if (!active) return;\n const entry = layer.current;\n entry.order = order;\n if (stack.length === 0) window.addEventListener(\"keydown\", handleKeyDown);\n const index = stack.findIndex((other) => other.order > order);\n stack.splice(index === -1 ? stack.length : index, 0, entry);\n return () => {\n const index = stack.lastIndexOf(entry);\n if (index !== -1) stack.splice(index, 1);\n if (stack.length === 0) window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [active, order]);\n}\n"],"mappings":";;AAUA,
|
|
1
|
+
{"version":3,"file":"escape-layer.js","names":["stack","sequence","handleKeyDown","event","top","useEscapeLayer","order","useMemo","active","layer","useRef","onEscape","useEffect","entry","index","other"],"sources":["../../../src/components/Portal/escape-layer.ts"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\n\n/** One open layer that `Escape` can dismiss. */\ninterface EscapeLayer {\n /** Latest dismiss callback; `null` makes the layer swallow the key without closing. */\n current: (() => void) | null;\n /** Position in the stack: higher is more recently opened, or deeper in the tree. */\n order: number;\n}\n\nconst stack: EscapeLayer[] = [];\n\nlet sequence = 0;\n\n/**\n * The single `keydown` listener behind every layer.\n *\n * Dismisses only the top of the stack. Every overlay used to listen on `window`\n * and close on any `Escape`, so one key press closed everything open at once —\n * measured in Chrome, a `Modal` holding a `DropdownMenu`, `Combobox`,\n * `MultiSelect`, `Popover`, `ContextMenu`, editable `DataTable` cell or a second\n * `Modal` closed together with the inner layer in all seven cases, and a\n * `Drawer` closed with the `Popover` inside it.\n *\n * Two kinds of inner layer exist, and this covers both:\n *\n * - Layers that listen on `window` themselves can never see each other's\n * events, so they register here and only the most recently opened one reacts.\n * - Layers that handle the key on their own element (a menu, a combobox input,\n * an inline cell editor) run first — React's delegated listener sits below\n * `window` — and call `preventDefault()`. A consumed key is left alone.\n *\n * A key pressed while an IME is composing belongs to the composition (it cancels\n * the candidate), so it is ignored too.\n *\n * @param event - The native keyboard event.\n * @returns Nothing.\n */\nfunction handleKeyDown(event: KeyboardEvent): void {\n if (event.key !== \"Escape\" || event.defaultPrevented || event.isComposing) return;\n const top = stack.at(-1);\n if (!top) return;\n event.preventDefault();\n top.current?.();\n}\n\n/**\n * Register an overlay as an `Escape`-dismissable layer while it is open.\n *\n * Layers stack in the order they open, so the one opened last is dismissed\n * first, and a second `Escape` reaches the next one down. The callback is read\n * through a ref, so a new closure on every render does not move the layer in\n * the stack.\n *\n * Pass `null` as `onEscape` for a modal layer whose dismissal is turned off\n * (`closeOnEsc={false}`): it stays on the stack and swallows the key, instead of\n * letting it fall through and close the modal underneath.\n *\n * The position is taken when the layer **renders** open, not when its effect\n * runs. Effects run child-first, so a `Modal` that mounts already holding an open\n * inner `Modal` would register the inner one first and put the outer one on top —\n * `Escape` would close the wrong layer, or a locked inner modal would let the key\n * through to the outer one. Parents render before their children, so render\n * order is tree order within a commit and opening order across commits. A\n * discarded or doubled render (Strict Mode, concurrent rendering) only skips\n * numbers; the relative order stays.\n *\n * @param active - Whether the layer is currently open.\n * @param onEscape - What `Escape` does to this layer, or `null` to block only.\n * @returns Nothing.\n */\nexport function useEscapeLayer(active: boolean, onEscape: (() => void) | null): void {\n const order = useMemo(() => (active ? ++sequence : 0), [active]);\n const layer = useRef<EscapeLayer>({ current: onEscape, order });\n\n useEffect(() => {\n layer.current.current = onEscape;\n }, [onEscape]);\n\n useEffect(() => {\n if (!active) return;\n const entry = layer.current;\n entry.order = order;\n if (stack.length === 0) window.addEventListener(\"keydown\", handleKeyDown);\n const index = stack.findIndex((other) => other.order > order);\n stack.splice(index === -1 ? stack.length : index, 0, entry);\n return () => {\n const index = stack.lastIndexOf(entry);\n if (index !== -1) stack.splice(index, 1);\n if (stack.length === 0) window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [active, order]);\n}\n"],"mappings":";;AAUA,IAAMA,IAAuB,CAAC,GAE1BC,IAAW;AA0Bf,SAASC,EAAc,GAA4B;CAC/C,IAAIC,EAAM,QAAQ,YAAYA,EAAM,oBAAoBA,EAAM,aAAa;CAC3E,IAAMC,IAAMJ,EAAM,GAAG,EAAE;CACvB,AAAKI,MACLD,EAAM,eAAe,GACrBC,EAAI,UAAU;AAClB;AA2BA,SAAgBC,EAAe,GAAiB,GAAqC;CACjF,IAAMC,IAAQC,QAAeC,IAAS,EAAEP,IAAW,GAAI,CAACO,CAAM,CAAC,GACzDC,IAAQC,EAAoB;EAAE,SAASC;EAAU;CAAM,CAAC;CAM9D,AAJAC,QAAgB;EACZ,EAAM,QAAQ,UAAUD;CAC5B,GAAG,CAACA,CAAQ,CAAC,GAEbC,QAAgB;EACZ,IAAI,CAACJ,GAAQ;EACb,IAAMK,IAAQJ,EAAM;EAEpB,AADA,EAAM,QAAQH,GACVN,EAAM,WAAW,KAAG,OAAO,iBAAiB,WAAWE,CAAa;EACxE,IAAMY,IAAQd,EAAM,WAAW,MAAUe,EAAM,QAAQT,CAAK;EAE5D,OADAN,EAAM,OAAOc,MAAU,KAAKd,EAAM,SAASc,GAAO,GAAGD,CAAK,SAC7C;GACT,IAAMC,IAAQd,EAAM,YAAYa,CAAK;GAErC,AADIC,MAAU,MAAId,EAAM,OAAOc,GAAO,CAAC,GACnCd,EAAM,WAAW,KAAG,OAAO,oBAAoB,WAAWE,CAAa;EAC/E;CACJ,GAAG,CAACM,GAAQF,CAAK,CAAC;AACtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal-host.cjs","names":[],"sources":["../../../src/components/Portal/portal-host.ts"],"sourcesContent":["import { useState } from \"react\";\nimport { useFullscreenElement } from \"@/hooks/use-fullscreen-element\";\n\n/**\n * The element a portal should render into.\n *\n * `document.body` is the obvious answer and the wrong one while the page is in\n * fullscreen: the browser paints only the subtree of the fullscreen element, and\n * `body` is outside it. An overlay portalled there exists in the DOM, has a\n * measured box, and is neither visible nor clickable — `elementFromPoint` at its\n * centre returns whatever sits behind it. Nothing throws and nothing logs, so the\n * app is left holding a dialog nobody can see.\n *\n * The fullscreen element can appear and disappear while a portal is mounted, so\n * the host is state rather than a one-time read. That subscription — the two\n * events, standard and WebKit-prefixed — lives in `useFullscreenElement`, because\n * `useFullscreen` needs the identical fact to answer a different question; this\n * module only asks it where to mount.\n */\n\n/**\n * Resolve where a portal should mount, following fullscreen changes.\n *\n * The first value is resolved during render rather than in an effect, so an\n * overlay that opens still mounts in the same commit it used to — the\n * subscription only follows changes from there.\n *\n * @returns The fullscreen element while one is presented, otherwise\n * `document.body`; `null` in any environment without a `document`.\n */\nexport function usePortalHost(): Element | null {\n const fullscreen = useFullscreenElement();\n const [body] = useState<HTMLElement | null>(() =>\n typeof document === \"undefined\" ? null : document.body,\n );\n\n return fullscreen ?? body;\n}\n"],"mappings":"iFA8BA,
|
|
1
|
+
{"version":3,"file":"portal-host.cjs","names":["useFullscreenElement","useState","require_use_fullscreen_element","react","usePortalHost","fullscreen","body"],"sources":["../../../src/components/Portal/portal-host.ts"],"sourcesContent":["import { useState } from \"react\";\nimport { useFullscreenElement } from \"@/hooks/use-fullscreen-element\";\n\n/**\n * The element a portal should render into.\n *\n * `document.body` is the obvious answer and the wrong one while the page is in\n * fullscreen: the browser paints only the subtree of the fullscreen element, and\n * `body` is outside it. An overlay portalled there exists in the DOM, has a\n * measured box, and is neither visible nor clickable — `elementFromPoint` at its\n * centre returns whatever sits behind it. Nothing throws and nothing logs, so the\n * app is left holding a dialog nobody can see.\n *\n * The fullscreen element can appear and disappear while a portal is mounted, so\n * the host is state rather than a one-time read. That subscription — the two\n * events, standard and WebKit-prefixed — lives in `useFullscreenElement`, because\n * `useFullscreen` needs the identical fact to answer a different question; this\n * module only asks it where to mount.\n */\n\n/**\n * Resolve where a portal should mount, following fullscreen changes.\n *\n * The first value is resolved during render rather than in an effect, so an\n * overlay that opens still mounts in the same commit it used to — the\n * subscription only follows changes from there.\n *\n * @returns The fullscreen element while one is presented, otherwise\n * `document.body`; `null` in any environment without a `document`.\n */\nexport function usePortalHost(): Element | null {\n const fullscreen = useFullscreenElement();\n const [body] = useState<HTMLElement | null>(() =>\n typeof document === \"undefined\" ? null : document.body,\n );\n\n return fullscreen ?? body;\n}\n"],"mappings":"A,iFA8BA,SAAgBI,GAAgC,CAC5C,IAAMC,EAAaL,EAAAA,qBAAqB,EAClC,CAACM,IAAA,EAAQL,EAAAA,SAAAA,KACX,OAAO,SAAa,IAAc,KAAO,SAAS,IACtD,EAEA,OAAOI,GAAcC,CACzB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal-host.js","names":[],"sources":["../../../src/components/Portal/portal-host.ts"],"sourcesContent":["import { useState } from \"react\";\nimport { useFullscreenElement } from \"@/hooks/use-fullscreen-element\";\n\n/**\n * The element a portal should render into.\n *\n * `document.body` is the obvious answer and the wrong one while the page is in\n * fullscreen: the browser paints only the subtree of the fullscreen element, and\n * `body` is outside it. An overlay portalled there exists in the DOM, has a\n * measured box, and is neither visible nor clickable — `elementFromPoint` at its\n * centre returns whatever sits behind it. Nothing throws and nothing logs, so the\n * app is left holding a dialog nobody can see.\n *\n * The fullscreen element can appear and disappear while a portal is mounted, so\n * the host is state rather than a one-time read. That subscription — the two\n * events, standard and WebKit-prefixed — lives in `useFullscreenElement`, because\n * `useFullscreen` needs the identical fact to answer a different question; this\n * module only asks it where to mount.\n */\n\n/**\n * Resolve where a portal should mount, following fullscreen changes.\n *\n * The first value is resolved during render rather than in an effect, so an\n * overlay that opens still mounts in the same commit it used to — the\n * subscription only follows changes from there.\n *\n * @returns The fullscreen element while one is presented, otherwise\n * `document.body`; `null` in any environment without a `document`.\n */\nexport function usePortalHost(): Element | null {\n const fullscreen = useFullscreenElement();\n const [body] = useState<HTMLElement | null>(() =>\n typeof document === \"undefined\" ? null : document.body,\n );\n\n return fullscreen ?? body;\n}\n"],"mappings":";;;AA8BA,
|
|
1
|
+
{"version":3,"file":"portal-host.js","names":["usePortalHost","fullscreen","useFullscreenElement","body","useState"],"sources":["../../../src/components/Portal/portal-host.ts"],"sourcesContent":["import { useState } from \"react\";\nimport { useFullscreenElement } from \"@/hooks/use-fullscreen-element\";\n\n/**\n * The element a portal should render into.\n *\n * `document.body` is the obvious answer and the wrong one while the page is in\n * fullscreen: the browser paints only the subtree of the fullscreen element, and\n * `body` is outside it. An overlay portalled there exists in the DOM, has a\n * measured box, and is neither visible nor clickable — `elementFromPoint` at its\n * centre returns whatever sits behind it. Nothing throws and nothing logs, so the\n * app is left holding a dialog nobody can see.\n *\n * The fullscreen element can appear and disappear while a portal is mounted, so\n * the host is state rather than a one-time read. That subscription — the two\n * events, standard and WebKit-prefixed — lives in `useFullscreenElement`, because\n * `useFullscreen` needs the identical fact to answer a different question; this\n * module only asks it where to mount.\n */\n\n/**\n * Resolve where a portal should mount, following fullscreen changes.\n *\n * The first value is resolved during render rather than in an effect, so an\n * overlay that opens still mounts in the same commit it used to — the\n * subscription only follows changes from there.\n *\n * @returns The fullscreen element while one is presented, otherwise\n * `document.body`; `null` in any environment without a `document`.\n */\nexport function usePortalHost(): Element | null {\n const fullscreen = useFullscreenElement();\n const [body] = useState<HTMLElement | null>(() =>\n typeof document === \"undefined\" ? null : document.body,\n );\n\n return fullscreen ?? body;\n}\n"],"mappings":";;;AA8BA,SAAgBA,IAAgC;CAC5C,IAAMC,IAAaC,EAAqB,GAClC,CAACC,KAAQC,QACX,OAAO,WAAa,MAAc,OAAO,SAAS,IACtD;CAEA,OAAOH,KAAcE;AACzB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../../hooks/tab-sequence.cjs");let t=require("react");function n({enabled:n,anchor:r,panel:i}){(0,t.useEffect)(()=>{if(!n||!r||!i)return;let t=(e,t)=>{t&&(e.preventDefault(),t.focus())},a=n=>{if(n.key!==`Tab`||n.defaultPrevented)return;let a=e.tabbables(i);if(a.length===0)return;let o=document.activeElement;if(!o)return;let s=e.tabbables(document).filter(e=>!i.contains(e)),c=s.filter(e=>r.contains(e)).at(-1),l=c?s[s.indexOf(c)+1]:void 0;
|
|
1
|
+
const e=require("../../hooks/tab-sequence.cjs");let t=require("react");function n({enabled:n,anchor:r,panel:i}){(0,t.useEffect)(()=>{if(!n||!r||!i)return;let t=(e,t)=>{t&&(e.preventDefault(),t.focus())},a=n=>{if(n.key!==`Tab`||n.defaultPrevented)return;let a=e.tabbables(i);if(a.length===0)return;let o=document.activeElement;if(!o)return;let s=e.tabbables(document).filter(e=>!i.contains(e)),c=s.filter(e=>r.contains(e)).at(-1),l=c?s[s.indexOf(c)+1]:void 0;i.contains(o)?(!n.shiftKey&&o===a.at(-1)&&t(n,l),n.shiftKey&&o===a[0]&&t(n,c)):(!n.shiftKey&&o===c&&t(n,a[0]),n.shiftKey&&l&&o===l&&t(n,a.at(-1)))},o=e.registerPortalLayer({anchor:r,panel:i});return document.addEventListener(`keydown`,a,!0),()=>{o(),document.removeEventListener(`keydown`,a,!0)}},[n,r,i])}exports.usePortalTabOrder=n;
|
|
2
2
|
//# sourceMappingURL=tab-bridge.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-bridge.cjs","names":[],"sources":["../../../src/components/Portal/tab-bridge.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { registerPortalLayer, tabbables } from \"@/hooks/tab-sequence\";\n\n/** Options of {@link usePortalTabOrder}. */\nexport interface PortalTabOrderOptions {\n /** Whether the panel is open and portalled. */\n enabled: boolean;\n /** Wrapper of the trigger — the spot in the page the panel belongs to. */\n anchor: HTMLElement | null;\n /** The portalled panel. */\n panel: HTMLElement | null;\n}\n\n/**\n * Put a portalled panel back in the tab order, right after its trigger.\n *\n * A portal moves the panel to the end of `body`, so the browser's own order goes\n * from the trigger straight to whatever follows it in the page and reaches the\n * panel last, if ever. Measured in Chrome on a `Popover` holding two inputs:\n * in flow, `Tab` from the open trigger landed on the first input; in a portal it\n * skipped the panel and went to the next button of the page.\n *\n * While the panel is open, this restores the in-flow order:\n *\n * - `Tab` on the last stop of the anchor enters the panel's first stop.\n * - `Tab` on the panel's last stop leaves to the first stop after the anchor.\n * - `Shift+Tab` on the panel's first stop returns to the anchor.\n * - `Shift+Tab` on the first stop after the anchor enters the panel's last stop.\n *\n * Listened on `document` in the capture phase and marked consumed, so it runs\n * before an enclosing `Modal`'s focus trap, which skips a consumed `Tab`. The\n * panel is also registered as a layer of its anchor, which is how that trap\n * knows the panel belongs inside it although the portal put it outside.\n *\n * @param options - Whether it is active, the anchor and the panel.\n * @returns Nothing.\n */\nexport function usePortalTabOrder({ enabled, anchor, panel }: PortalTabOrderOptions): void {\n useEffect(() => {\n if (!enabled || !anchor || !panel) return;\n\n const move = (event: KeyboardEvent, target: HTMLElement | undefined): void => {\n if (!target) return;\n event.preventDefault();\n target.focus();\n };\n\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== \"Tab\" || event.defaultPrevented) return;\n const inPanel = tabbables(panel);\n if (inPanel.length === 0) return;\n const active = document.activeElement as HTMLElement | null;\n if (!active) return;\n const page = tabbables(document).filter((el) => !panel.contains(el));\n const inAnchor = page.filter((el) => anchor.contains(el));\n const lastOfAnchor = inAnchor.at(-1);\n const afterAnchor = lastOfAnchor ? page[page.indexOf(lastOfAnchor) + 1] : undefined;\n\n if (panel.contains(active)) {\n if (!event.shiftKey && active === inPanel.at(-1)) move(event, afterAnchor);\n if (event.shiftKey && active === inPanel[0]) move(event, lastOfAnchor);\n return;\n }\n if (!event.shiftKey && active === lastOfAnchor) move(event, inPanel[0]);\n if (event.shiftKey && afterAnchor && active === afterAnchor) {\n move(event, inPanel.at(-1));\n }\n };\n\n const unregister = registerPortalLayer({ anchor, panel });\n document.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n unregister();\n document.removeEventListener(\"keydown\", onKeyDown, true);\n };\n }, [enabled, anchor, panel]);\n}\n"],"mappings":"uEAqCA,
|
|
1
|
+
{"version":3,"file":"tab-bridge.cjs","names":["tabbables","registerPortalLayer","require_tab_sequence","react","usePortalTabOrder","enabled","anchor","panel","move","target","event","onKeyDown","inPanel","active","page","el","lastOfAnchor","afterAnchor","unregister"],"sources":["../../../src/components/Portal/tab-bridge.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { registerPortalLayer, tabbables } from \"@/hooks/tab-sequence\";\n\n/** Options of {@link usePortalTabOrder}. */\nexport interface PortalTabOrderOptions {\n /** Whether the panel is open and portalled. */\n enabled: boolean;\n /** Wrapper of the trigger — the spot in the page the panel belongs to. */\n anchor: HTMLElement | null;\n /** The portalled panel. */\n panel: HTMLElement | null;\n}\n\n/**\n * Put a portalled panel back in the tab order, right after its trigger.\n *\n * A portal moves the panel to the end of `body`, so the browser's own order goes\n * from the trigger straight to whatever follows it in the page and reaches the\n * panel last, if ever. Measured in Chrome on a `Popover` holding two inputs:\n * in flow, `Tab` from the open trigger landed on the first input; in a portal it\n * skipped the panel and went to the next button of the page.\n *\n * While the panel is open, this restores the in-flow order:\n *\n * - `Tab` on the last stop of the anchor enters the panel's first stop.\n * - `Tab` on the panel's last stop leaves to the first stop after the anchor.\n * - `Shift+Tab` on the panel's first stop returns to the anchor.\n * - `Shift+Tab` on the first stop after the anchor enters the panel's last stop.\n *\n * Listened on `document` in the capture phase and marked consumed, so it runs\n * before an enclosing `Modal`'s focus trap, which skips a consumed `Tab`. The\n * panel is also registered as a layer of its anchor, which is how that trap\n * knows the panel belongs inside it although the portal put it outside.\n *\n * @param options - Whether it is active, the anchor and the panel.\n * @returns Nothing.\n */\nexport function usePortalTabOrder({ enabled, anchor, panel }: PortalTabOrderOptions): void {\n useEffect(() => {\n if (!enabled || !anchor || !panel) return;\n\n const move = (event: KeyboardEvent, target: HTMLElement | undefined): void => {\n if (!target) return;\n event.preventDefault();\n target.focus();\n };\n\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== \"Tab\" || event.defaultPrevented) return;\n const inPanel = tabbables(panel);\n if (inPanel.length === 0) return;\n const active = document.activeElement as HTMLElement | null;\n if (!active) return;\n const page = tabbables(document).filter((el) => !panel.contains(el));\n const inAnchor = page.filter((el) => anchor.contains(el));\n const lastOfAnchor = inAnchor.at(-1);\n const afterAnchor = lastOfAnchor ? page[page.indexOf(lastOfAnchor) + 1] : undefined;\n\n if (panel.contains(active)) {\n if (!event.shiftKey && active === inPanel.at(-1)) move(event, afterAnchor);\n if (event.shiftKey && active === inPanel[0]) move(event, lastOfAnchor);\n return;\n }\n if (!event.shiftKey && active === lastOfAnchor) move(event, inPanel[0]);\n if (event.shiftKey && afterAnchor && active === afterAnchor) {\n move(event, inPanel.at(-1));\n }\n };\n\n const unregister = registerPortalLayer({ anchor, panel });\n document.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n unregister();\n document.removeEventListener(\"keydown\", onKeyDown, true);\n };\n }, [enabled, anchor, panel]);\n}\n"],"mappings":"A,uEAqCA,SAAgBI,EAAkB,CAAE,UAAS,SAAQ,SAAsC,EACvF,EAAAD,EAAA,UAAA,KAAgB,CACZ,GAAI,CAACE,GAAW,CAACC,GAAU,CAACC,EAAO,OAEnC,IAAMC,GAAQ,EAAsB,IAA0C,CACrEC,IACLC,EAAM,eAAe,EACrBD,EAAO,MAAM,EACjB,EAEME,EAAa,GAA+B,CAC9C,GAAID,EAAM,MAAQ,OAASA,EAAM,iBAAkB,OACnD,IAAME,EAAUZ,EAAAA,UAAUO,CAAK,EAC/B,GAAIK,EAAQ,SAAW,EAAG,OAC1B,IAAMC,EAAS,SAAS,cACxB,GAAI,CAACA,EAAQ,OACb,IAAMC,EAAOd,EAAAA,UAAU,QAAQ,CAAC,CAAC,OAAQ,GAAO,CAACO,EAAM,SAASQ,CAAE,CAAC,EAE7DC,EADWF,EAAK,OAAQ,GAAOR,EAAO,SAASS,CAAE,CAClC,CAAA,CAAS,GAAG,EAAE,EAC7BE,EAAcD,EAAeF,EAAKA,EAAK,QAAQE,CAAY,EAAI,GAAK,IAAA,GAEtET,EAAM,SAASM,CAAM,GACjB,CAACH,EAAM,UAAYG,IAAWD,EAAQ,GAAG,EAAE,GAAGJ,EAAKE,EAAOO,CAAW,EACrEP,EAAM,UAAYG,IAAWD,EAAQ,IAAIJ,EAAKE,EAAOM,CAAY,IAGrE,CAACN,EAAM,UAAYG,IAAWG,GAAcR,EAAKE,EAAOE,EAAQ,EAAE,EAClEF,EAAM,UAAYO,GAAeJ,IAAWI,GAC5CT,EAAKE,EAAOE,EAAQ,GAAG,EAAE,CAAC,EAElC,EAEMM,EAAajB,EAAAA,oBAAoB,CAAE,SAAQ,OAAM,CAAC,EAExD,OADA,SAAS,iBAAiB,UAAWU,EAAW,EAAI,MACvC,CACTO,EAAW,EACX,SAAS,oBAAoB,UAAWP,EAAW,EAAI,CAC3D,CACJ,EAAG,CAACN,EAASC,EAAQC,CAAK,CAAC,CAC/B,C"}
|
|
@@ -13,11 +13,7 @@ function r({ enabled: r, anchor: i, panel: a }) {
|
|
|
13
13
|
let o = document.activeElement;
|
|
14
14
|
if (!o) return;
|
|
15
15
|
let s = t(document).filter((e) => !a.contains(e)), c = s.filter((e) => i.contains(e)).at(-1), l = c ? s[s.indexOf(c) + 1] : void 0;
|
|
16
|
-
|
|
17
|
-
!e.shiftKey && o === r.at(-1) && n(e, l), e.shiftKey && o === r[0] && n(e, c);
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
!e.shiftKey && o === c && n(e, r[0]), e.shiftKey && l && o === l && n(e, r.at(-1));
|
|
16
|
+
a.contains(o) ? (!e.shiftKey && o === r.at(-1) && n(e, l), e.shiftKey && o === r[0] && n(e, c)) : (!e.shiftKey && o === c && n(e, r[0]), e.shiftKey && l && o === l && n(e, r.at(-1)));
|
|
21
17
|
}, s = e({
|
|
22
18
|
anchor: i,
|
|
23
19
|
panel: a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-bridge.js","names":[],"sources":["../../../src/components/Portal/tab-bridge.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { registerPortalLayer, tabbables } from \"@/hooks/tab-sequence\";\n\n/** Options of {@link usePortalTabOrder}. */\nexport interface PortalTabOrderOptions {\n /** Whether the panel is open and portalled. */\n enabled: boolean;\n /** Wrapper of the trigger — the spot in the page the panel belongs to. */\n anchor: HTMLElement | null;\n /** The portalled panel. */\n panel: HTMLElement | null;\n}\n\n/**\n * Put a portalled panel back in the tab order, right after its trigger.\n *\n * A portal moves the panel to the end of `body`, so the browser's own order goes\n * from the trigger straight to whatever follows it in the page and reaches the\n * panel last, if ever. Measured in Chrome on a `Popover` holding two inputs:\n * in flow, `Tab` from the open trigger landed on the first input; in a portal it\n * skipped the panel and went to the next button of the page.\n *\n * While the panel is open, this restores the in-flow order:\n *\n * - `Tab` on the last stop of the anchor enters the panel's first stop.\n * - `Tab` on the panel's last stop leaves to the first stop after the anchor.\n * - `Shift+Tab` on the panel's first stop returns to the anchor.\n * - `Shift+Tab` on the first stop after the anchor enters the panel's last stop.\n *\n * Listened on `document` in the capture phase and marked consumed, so it runs\n * before an enclosing `Modal`'s focus trap, which skips a consumed `Tab`. The\n * panel is also registered as a layer of its anchor, which is how that trap\n * knows the panel belongs inside it although the portal put it outside.\n *\n * @param options - Whether it is active, the anchor and the panel.\n * @returns Nothing.\n */\nexport function usePortalTabOrder({ enabled, anchor, panel }: PortalTabOrderOptions): void {\n useEffect(() => {\n if (!enabled || !anchor || !panel) return;\n\n const move = (event: KeyboardEvent, target: HTMLElement | undefined): void => {\n if (!target) return;\n event.preventDefault();\n target.focus();\n };\n\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== \"Tab\" || event.defaultPrevented) return;\n const inPanel = tabbables(panel);\n if (inPanel.length === 0) return;\n const active = document.activeElement as HTMLElement | null;\n if (!active) return;\n const page = tabbables(document).filter((el) => !panel.contains(el));\n const inAnchor = page.filter((el) => anchor.contains(el));\n const lastOfAnchor = inAnchor.at(-1);\n const afterAnchor = lastOfAnchor ? page[page.indexOf(lastOfAnchor) + 1] : undefined;\n\n if (panel.contains(active)) {\n if (!event.shiftKey && active === inPanel.at(-1)) move(event, afterAnchor);\n if (event.shiftKey && active === inPanel[0]) move(event, lastOfAnchor);\n return;\n }\n if (!event.shiftKey && active === lastOfAnchor) move(event, inPanel[0]);\n if (event.shiftKey && afterAnchor && active === afterAnchor) {\n move(event, inPanel.at(-1));\n }\n };\n\n const unregister = registerPortalLayer({ anchor, panel });\n document.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n unregister();\n document.removeEventListener(\"keydown\", onKeyDown, true);\n };\n }, [enabled, anchor, panel]);\n}\n"],"mappings":";;;AAqCA,
|
|
1
|
+
{"version":3,"file":"tab-bridge.js","names":["usePortalTabOrder","enabled","anchor","panel","move","target","event","onKeyDown","inPanel","tabbables","active","page","el","lastOfAnchor","afterAnchor","unregister","registerPortalLayer"],"sources":["../../../src/components/Portal/tab-bridge.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { registerPortalLayer, tabbables } from \"@/hooks/tab-sequence\";\n\n/** Options of {@link usePortalTabOrder}. */\nexport interface PortalTabOrderOptions {\n /** Whether the panel is open and portalled. */\n enabled: boolean;\n /** Wrapper of the trigger — the spot in the page the panel belongs to. */\n anchor: HTMLElement | null;\n /** The portalled panel. */\n panel: HTMLElement | null;\n}\n\n/**\n * Put a portalled panel back in the tab order, right after its trigger.\n *\n * A portal moves the panel to the end of `body`, so the browser's own order goes\n * from the trigger straight to whatever follows it in the page and reaches the\n * panel last, if ever. Measured in Chrome on a `Popover` holding two inputs:\n * in flow, `Tab` from the open trigger landed on the first input; in a portal it\n * skipped the panel and went to the next button of the page.\n *\n * While the panel is open, this restores the in-flow order:\n *\n * - `Tab` on the last stop of the anchor enters the panel's first stop.\n * - `Tab` on the panel's last stop leaves to the first stop after the anchor.\n * - `Shift+Tab` on the panel's first stop returns to the anchor.\n * - `Shift+Tab` on the first stop after the anchor enters the panel's last stop.\n *\n * Listened on `document` in the capture phase and marked consumed, so it runs\n * before an enclosing `Modal`'s focus trap, which skips a consumed `Tab`. The\n * panel is also registered as a layer of its anchor, which is how that trap\n * knows the panel belongs inside it although the portal put it outside.\n *\n * @param options - Whether it is active, the anchor and the panel.\n * @returns Nothing.\n */\nexport function usePortalTabOrder({ enabled, anchor, panel }: PortalTabOrderOptions): void {\n useEffect(() => {\n if (!enabled || !anchor || !panel) return;\n\n const move = (event: KeyboardEvent, target: HTMLElement | undefined): void => {\n if (!target) return;\n event.preventDefault();\n target.focus();\n };\n\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== \"Tab\" || event.defaultPrevented) return;\n const inPanel = tabbables(panel);\n if (inPanel.length === 0) return;\n const active = document.activeElement as HTMLElement | null;\n if (!active) return;\n const page = tabbables(document).filter((el) => !panel.contains(el));\n const inAnchor = page.filter((el) => anchor.contains(el));\n const lastOfAnchor = inAnchor.at(-1);\n const afterAnchor = lastOfAnchor ? page[page.indexOf(lastOfAnchor) + 1] : undefined;\n\n if (panel.contains(active)) {\n if (!event.shiftKey && active === inPanel.at(-1)) move(event, afterAnchor);\n if (event.shiftKey && active === inPanel[0]) move(event, lastOfAnchor);\n return;\n }\n if (!event.shiftKey && active === lastOfAnchor) move(event, inPanel[0]);\n if (event.shiftKey && afterAnchor && active === afterAnchor) {\n move(event, inPanel.at(-1));\n }\n };\n\n const unregister = registerPortalLayer({ anchor, panel });\n document.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n unregister();\n document.removeEventListener(\"keydown\", onKeyDown, true);\n };\n }, [enabled, anchor, panel]);\n}\n"],"mappings":";;;AAqCA,SAAgBA,EAAkB,EAAE,YAAS,WAAQ,YAAsC;CACvF,QAAgB;EACZ,IAAI,CAACC,KAAW,CAACC,KAAU,CAACC,GAAO;EAEnC,IAAMC,KAAQ,GAAsB,MAA0C;GAC1E,AAAKC,MACLC,EAAM,eAAe,GACrBD,EAAO,MAAM;EACjB,GAEME,KAAa,MAA+B;GAC9C,IAAID,EAAM,QAAQ,SAASA,EAAM,kBAAkB;GACnD,IAAME,IAAUC,EAAUN,CAAK;GAC/B,IAAIK,EAAQ,WAAW,GAAG;GAC1B,IAAME,IAAS,SAAS;GACxB,IAAI,CAACA,GAAQ;GACb,IAAMC,IAAOF,EAAU,QAAQ,CAAC,CAAC,QAAQ,MAAO,CAACN,EAAM,SAASS,CAAE,CAAC,GAE7DC,IADWF,EAAK,QAAQ,MAAOT,EAAO,SAASU,CAAE,CAClC,CAAA,CAAS,GAAG,EAAE,GAC7BE,IAAcD,IAAeF,EAAKA,EAAK,QAAQE,CAAY,IAAI,KAAK,KAAA;GAE1E,AAAIV,EAAM,SAASO,CAAM,KACjB,CAACJ,EAAM,YAAYI,MAAWF,EAAQ,GAAG,EAAE,KAAGJ,EAAKE,GAAOQ,CAAW,GACrER,EAAM,YAAYI,MAAWF,EAAQ,MAAIJ,EAAKE,GAAOO,CAAY,MAGrE,CAACP,EAAM,YAAYI,MAAWG,KAAcT,EAAKE,GAAOE,EAAQ,EAAE,GAClEF,EAAM,YAAYQ,KAAeJ,MAAWI,KAC5CV,EAAKE,GAAOE,EAAQ,GAAG,EAAE,CAAC;EAElC,GAEMO,IAAaC,EAAoB;GAAE;GAAQ;EAAM,CAAC;EAExD,OADA,SAAS,iBAAiB,WAAWT,GAAW,EAAI,SACvC;GAET,AADAQ,EAAW,GACX,SAAS,oBAAoB,WAAWR,GAAW,EAAI;EAC3D;CACJ,GAAG;EAACN;EAASC;EAAQC;CAAK,CAAC;AAC/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Progress.cjs","names":[],"sources":["../../../src/components/Progress/Progress.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — value, max, indeterminate, size, tone, label,\n * showValue and className: a progress bar is one element with eight independent\n * presentation choices, and the destructuring counts them all because none has a\n * sensible sub-object.\n */\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Progress.module.css\";\n\nexport type ProgressVariant = \"primary\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface ProgressProps {\n /** Value between 0 and `max` (or 0-100 by default). Ignored when `indeterminate`. */\n value?: number;\n max?: number;\n variant?: ProgressVariant;\n /** Show an animated indeterminate bar. Default: false. */\n indeterminate?: boolean;\n /** Render a numeric label \"x% / max\" above the bar. Default: false. */\n showLabel?: boolean;\n /** Optional left-aligned descriptor (e.g. \"Enviando arquivo…\"). */\n label?: string;\n /**\n * Accessible name for the bar. Defaults to `label` when that is set —\n * provide it explicitly whenever the bar renders without a visible label,\n * otherwise screen readers announce an unnamed progressbar.\n */\n \"aria-label\"?: string;\n /** Id of an existing element that names the bar (alternative to `aria-label`). */\n \"aria-labelledby\"?: string;\n className?: string;\n}\n\n/**\n * Linear progress bar with determinate / indeterminate modes.\n *\n * The `progressbar` role requires an accessible name: it comes from\n * `aria-labelledby`, then explicit `aria-label`, then the visible `label`.\n */\nexport function Progress({\n value = 0,\n max = 100,\n variant = \"primary\",\n indeterminate = false,\n showLabel = false,\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n className,\n}: ProgressProps) {\n const pct = indeterminate ? 0 : Math.max(0, Math.min(100, (value / max) * 100));\n\n return (\n <div className={cn(styles.wrapper, className)}>\n {(showLabel || label) && (\n <div className={styles.label}>\n {label && <span>{label}</span>}\n {showLabel && !indeterminate && <span>{Math.round(pct)}%</span>}\n </div>\n )}\n <div\n role=\"progressbar\"\n aria-label={ariaLabelledBy ? undefined : (ariaLabel ?? label)}\n aria-labelledby={ariaLabelledBy}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate ? undefined : value}\n className={cn(styles.bar, indeterminate && styles.indeterminate)}\n >\n <div\n className={cn(styles.fill, variant !== \"primary\" && styles[variant])}\n style={{ width: indeterminate ? undefined : `${pct}%` }}\n />\n </div>\n </div>\n );\n}\n"],"mappings":"4GAuCA,
|
|
1
|
+
{"version":3,"file":"Progress.cjs","names":["cn","styles","require_cn","require_Progress_module","react_jsx_runtime","Progress","ariaLabel","ariaLabelledBy","pct","indeterminate","value","max","className","showLabel","label","variant"],"sources":["../../../src/components/Progress/Progress.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — value, max, indeterminate, size, tone, label,\n * showValue and className: a progress bar is one element with eight independent\n * presentation choices, and the destructuring counts them all because none has a\n * sensible sub-object.\n */\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Progress.module.css\";\n\nexport type ProgressVariant = \"primary\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface ProgressProps {\n /** Value between 0 and `max` (or 0-100 by default). Ignored when `indeterminate`. */\n value?: number;\n max?: number;\n variant?: ProgressVariant;\n /** Show an animated indeterminate bar. Default: false. */\n indeterminate?: boolean;\n /** Render a numeric label \"x% / max\" above the bar. Default: false. */\n showLabel?: boolean;\n /** Optional left-aligned descriptor (e.g. \"Enviando arquivo…\"). */\n label?: string;\n /**\n * Accessible name for the bar. Defaults to `label` when that is set —\n * provide it explicitly whenever the bar renders without a visible label,\n * otherwise screen readers announce an unnamed progressbar.\n */\n \"aria-label\"?: string;\n /** Id of an existing element that names the bar (alternative to `aria-label`). */\n \"aria-labelledby\"?: string;\n className?: string;\n}\n\n/**\n * Linear progress bar with determinate / indeterminate modes.\n *\n * The `progressbar` role requires an accessible name: it comes from\n * `aria-labelledby`, then explicit `aria-label`, then the visible `label`.\n */\nexport function Progress({\n value = 0,\n max = 100,\n variant = \"primary\",\n indeterminate = false,\n showLabel = false,\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n className,\n}: ProgressProps) {\n const pct = indeterminate ? 0 : Math.max(0, Math.min(100, (value / max) * 100));\n\n return (\n <div className={cn(styles.wrapper, className)}>\n {(showLabel || label) && (\n <div className={styles.label}>\n {label && <span>{label}</span>}\n {showLabel && !indeterminate && <span>{Math.round(pct)}%</span>}\n </div>\n )}\n <div\n role=\"progressbar\"\n aria-label={ariaLabelledBy ? undefined : (ariaLabel ?? label)}\n aria-labelledby={ariaLabelledBy}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate ? undefined : value}\n className={cn(styles.bar, indeterminate && styles.indeterminate)}\n >\n <div\n className={cn(styles.fill, variant !== \"primary\" && styles[variant])}\n style={{ width: indeterminate ? undefined : `${pct}%` }}\n />\n </div>\n </div>\n );\n}\n"],"mappings":"A,4GAuCA,SAAgBK,EAAS,CACrB,QAAQ,EACR,MAAM,IACN,UAAU,UACV,gBAAgB,GAChB,YAAY,GACZ,QACA,aAAcC,EACd,kBAAmBC,EACnB,aACc,CACd,IAAMC,EAAMC,EAAgB,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,IAAMC,EAAQC,EAAO,GAAG,CAAC,EAE9E,OACI,EAAAP,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWJ,EAAAA,GAAGC,EAAAA,QAAO,QAASW,CAAS,EAA5C,SAAA,EACMC,GAAaC,KACX,EAAAV,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWH,EAAAA,QAAO,MAAvB,SAAA,CACKa,IAAS,EAAAV,EAAA,IAAA,CAAC,OAAD,CAAA,SAAOU,CAAY,CAAA,EAC5BD,GAAa,CAACJ,IAAiB,EAAAL,EAAA,KAAA,CAAC,OAAD,CAAA,SAAA,CAAO,KAAK,MAAMI,CAAG,EAAE,GAAO,CAAA,CAAA,CAC7D,CAET,CAAA,GAAA,EAAAJ,EAAA,IAAA,CAAC,MAAD,CACI,KAAK,cACL,aAAYG,EAAiB,IAAA,GAAaD,GAAaQ,EACvD,kBAAiBP,EACjB,gBAAe,EACf,gBAAeI,EACf,gBAAeF,EAAgB,IAAA,GAAYC,EAC3C,UAAWV,EAAAA,GAAGC,EAAAA,QAAO,IAAKQ,GAAiBR,EAAAA,QAAO,aAAa,EAE/D,UAAA,EAAAG,EAAA,IAAA,CAAC,MAAD,CACI,UAAWJ,EAAAA,GAAGC,EAAAA,QAAO,KAAMc,IAAY,WAAad,EAAAA,QAAOc,EAAQ,EACnE,MAAO,CAAE,MAAON,EAAgB,IAAA,GAAY,GAAGD,EAAI,EAAG,CACzD,CAAA,CACA,CAAA,CACJ,C,EAEb,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Progress.js","names":[],"sources":["../../../src/components/Progress/Progress.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — value, max, indeterminate, size, tone, label,\n * showValue and className: a progress bar is one element with eight independent\n * presentation choices, and the destructuring counts them all because none has a\n * sensible sub-object.\n */\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Progress.module.css\";\n\nexport type ProgressVariant = \"primary\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface ProgressProps {\n /** Value between 0 and `max` (or 0-100 by default). Ignored when `indeterminate`. */\n value?: number;\n max?: number;\n variant?: ProgressVariant;\n /** Show an animated indeterminate bar. Default: false. */\n indeterminate?: boolean;\n /** Render a numeric label \"x% / max\" above the bar. Default: false. */\n showLabel?: boolean;\n /** Optional left-aligned descriptor (e.g. \"Enviando arquivo…\"). */\n label?: string;\n /**\n * Accessible name for the bar. Defaults to `label` when that is set —\n * provide it explicitly whenever the bar renders without a visible label,\n * otherwise screen readers announce an unnamed progressbar.\n */\n \"aria-label\"?: string;\n /** Id of an existing element that names the bar (alternative to `aria-label`). */\n \"aria-labelledby\"?: string;\n className?: string;\n}\n\n/**\n * Linear progress bar with determinate / indeterminate modes.\n *\n * The `progressbar` role requires an accessible name: it comes from\n * `aria-labelledby`, then explicit `aria-label`, then the visible `label`.\n */\nexport function Progress({\n value = 0,\n max = 100,\n variant = \"primary\",\n indeterminate = false,\n showLabel = false,\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n className,\n}: ProgressProps) {\n const pct = indeterminate ? 0 : Math.max(0, Math.min(100, (value / max) * 100));\n\n return (\n <div className={cn(styles.wrapper, className)}>\n {(showLabel || label) && (\n <div className={styles.label}>\n {label && <span>{label}</span>}\n {showLabel && !indeterminate && <span>{Math.round(pct)}%</span>}\n </div>\n )}\n <div\n role=\"progressbar\"\n aria-label={ariaLabelledBy ? undefined : (ariaLabel ?? label)}\n aria-labelledby={ariaLabelledBy}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate ? undefined : value}\n className={cn(styles.bar, indeterminate && styles.indeterminate)}\n >\n <div\n className={cn(styles.fill, variant !== \"primary\" && styles[variant])}\n style={{ width: indeterminate ? undefined : `${pct}%` }}\n />\n </div>\n </div>\n );\n}\n"],"mappings":";;;;AAuCA,
|
|
1
|
+
{"version":3,"file":"Progress.js","names":["styles","Progress_module_default","Progress","ariaLabel","ariaLabelledBy","pct","indeterminate","value","max","cn","className","showLabel","label","variant"],"sources":["../../../src/components/Progress/Progress.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — value, max, indeterminate, size, tone, label,\n * showValue and className: a progress bar is one element with eight independent\n * presentation choices, and the destructuring counts them all because none has a\n * sensible sub-object.\n */\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Progress.module.css\";\n\nexport type ProgressVariant = \"primary\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface ProgressProps {\n /** Value between 0 and `max` (or 0-100 by default). Ignored when `indeterminate`. */\n value?: number;\n max?: number;\n variant?: ProgressVariant;\n /** Show an animated indeterminate bar. Default: false. */\n indeterminate?: boolean;\n /** Render a numeric label \"x% / max\" above the bar. Default: false. */\n showLabel?: boolean;\n /** Optional left-aligned descriptor (e.g. \"Enviando arquivo…\"). */\n label?: string;\n /**\n * Accessible name for the bar. Defaults to `label` when that is set —\n * provide it explicitly whenever the bar renders without a visible label,\n * otherwise screen readers announce an unnamed progressbar.\n */\n \"aria-label\"?: string;\n /** Id of an existing element that names the bar (alternative to `aria-label`). */\n \"aria-labelledby\"?: string;\n className?: string;\n}\n\n/**\n * Linear progress bar with determinate / indeterminate modes.\n *\n * The `progressbar` role requires an accessible name: it comes from\n * `aria-labelledby`, then explicit `aria-label`, then the visible `label`.\n */\nexport function Progress({\n value = 0,\n max = 100,\n variant = \"primary\",\n indeterminate = false,\n showLabel = false,\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n className,\n}: ProgressProps) {\n const pct = indeterminate ? 0 : Math.max(0, Math.min(100, (value / max) * 100));\n\n return (\n <div className={cn(styles.wrapper, className)}>\n {(showLabel || label) && (\n <div className={styles.label}>\n {label && <span>{label}</span>}\n {showLabel && !indeterminate && <span>{Math.round(pct)}%</span>}\n </div>\n )}\n <div\n role=\"progressbar\"\n aria-label={ariaLabelledBy ? undefined : (ariaLabel ?? label)}\n aria-labelledby={ariaLabelledBy}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate ? undefined : value}\n className={cn(styles.bar, indeterminate && styles.indeterminate)}\n >\n <div\n className={cn(styles.fill, variant !== \"primary\" && styles[variant])}\n style={{ width: indeterminate ? undefined : `${pct}%` }}\n />\n </div>\n </div>\n );\n}\n"],"mappings":";;;;AAuCA,SAAgBE,EAAS,EACrB,WAAQ,GACR,SAAM,KACN,aAAU,WACV,mBAAgB,IAChB,eAAY,IACZ,UACA,cAAcC,GACd,mBAAmBC,GACnB,gBACc;CACd,IAAMC,IAAMC,IAAgB,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAMC,IAAQC,IAAO,GAAG,CAAC;CAE9E,OACI,kBAAC,OAAD;EAAK,WAAWC,EAAGT,EAAO,SAASU,CAAS;EAA5C,UAAA,EACMC,KAAaC,MACX,kBAAC,OAAD;GAAK,WAAWZ,EAAO;GAAvB,UAAA,CACKY,KAAS,kBAAC,QAAD,EAAA,UAAOA,EAAY,CAAA,GAC5BD,KAAa,CAACL,KAAiB,kBAAC,QAAD,EAAA,UAAA,CAAO,KAAK,MAAMD,CAAG,GAAE,GAAO,EAAA,CAAA,CAC7D;EAET,CAAA,GAAA,kBAAC,OAAD;GACI,MAAK;GACL,cAAYD,IAAiB,KAAA,IAAaD,KAAaS;GACvD,mBAAiBR;GACjB,iBAAe;GACf,iBAAeI;GACf,iBAAeF,IAAgB,KAAA,IAAYC;GAC3C,WAAWE,EAAGT,EAAO,KAAKM,KAAiBN,EAAO,aAAa;GAE/D,UAAA,kBAAC,OAAD;IACI,WAAWS,EAAGT,EAAO,MAAMa,MAAY,aAAab,EAAOa,EAAQ;IACnE,OAAO,EAAE,OAAOP,IAAgB,KAAA,IAAY,GAAGD,EAAI,GAAG;GACzD,CAAA;EACA,CAAA,CACJ;;AAEb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Progress.module.cjs","names":[],"sources":["../../../src/components/Progress/Progress.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n width: 100%;\n font-family: var(--tempest-font-sans);\n}\n\n.bar {\n width: 100%;\n height: 8px;\n background-color: var(--tempest-surface-2);\n border-radius: var(--tempest-radius-full);\n overflow: hidden;\n box-shadow: var(--tempest-shadow-inner);\n}\n\n.fill {\n height: 100%;\n background-color: var(--tempest-primary);\n border-radius: inherit;\n transition: width var(--tempest-duration-base) var(--tempest-ease-out);\n}\n\n.fill.success {\n background-color: var(--tempest-success-solid);\n}\n.fill.warning {\n background-color: var(--tempest-warning-solid);\n}\n.fill.danger {\n background-color: var(--tempest-danger-solid);\n}\n\n.indeterminate .fill {\n width: 30% !important;\n animation: tempest-progress-loop 1.4s var(--tempest-ease-in-out) infinite;\n}\n\n.label {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n display: flex;\n justify-content: space-between;\n}\n\n@keyframes tempest-progress-loop {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(360%);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .indeterminate .fill {\n animation: none;\n width: 100% !important;\n opacity: 0.5;\n }\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"Progress.module.cjs","names":["wrapper","bar","fill","success","warning","danger","indeterminate","tempestProgressLoop","label","Progress_module_default"],"sources":["../../../src/components/Progress/Progress.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n width: 100%;\n font-family: var(--tempest-font-sans);\n}\n\n.bar {\n width: 100%;\n height: 8px;\n background-color: var(--tempest-surface-2);\n border-radius: var(--tempest-radius-full);\n overflow: hidden;\n box-shadow: var(--tempest-shadow-inner);\n}\n\n.fill {\n height: 100%;\n background-color: var(--tempest-primary);\n border-radius: inherit;\n transition: width var(--tempest-duration-base) var(--tempest-ease-out);\n}\n\n.fill.success {\n background-color: var(--tempest-success-solid);\n}\n.fill.warning {\n background-color: var(--tempest-warning-solid);\n}\n.fill.danger {\n background-color: var(--tempest-danger-solid);\n}\n\n.indeterminate .fill {\n width: 30% !important;\n animation: tempest-progress-loop 1.4s var(--tempest-ease-in-out) infinite;\n}\n\n.label {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n display: flex;\n justify-content: space-between;\n}\n\n@keyframes tempest-progress-loop {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(360%);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .indeterminate .fill {\n animation: none;\n width: 100% !important;\n opacity: 0.5;\n }\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Progress.module.js","names":[],"sources":["../../../src/components/Progress/Progress.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n width: 100%;\n font-family: var(--tempest-font-sans);\n}\n\n.bar {\n width: 100%;\n height: 8px;\n background-color: var(--tempest-surface-2);\n border-radius: var(--tempest-radius-full);\n overflow: hidden;\n box-shadow: var(--tempest-shadow-inner);\n}\n\n.fill {\n height: 100%;\n background-color: var(--tempest-primary);\n border-radius: inherit;\n transition: width var(--tempest-duration-base) var(--tempest-ease-out);\n}\n\n.fill.success {\n background-color: var(--tempest-success-solid);\n}\n.fill.warning {\n background-color: var(--tempest-warning-solid);\n}\n.fill.danger {\n background-color: var(--tempest-danger-solid);\n}\n\n.indeterminate .fill {\n width: 30% !important;\n animation: tempest-progress-loop 1.4s var(--tempest-ease-in-out) infinite;\n}\n\n.label {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n display: flex;\n justify-content: space-between;\n}\n\n@keyframes tempest-progress-loop {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(360%);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .indeterminate .fill {\n animation: none;\n width: 100% !important;\n opacity: 0.5;\n }\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"Progress.module.js","names":["wrapper","bar","fill","success","warning","danger","indeterminate","tempestProgressLoop","label","Progress_module_default"],"sources":["../../../src/components/Progress/Progress.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n width: 100%;\n font-family: var(--tempest-font-sans);\n}\n\n.bar {\n width: 100%;\n height: 8px;\n background-color: var(--tempest-surface-2);\n border-radius: var(--tempest-radius-full);\n overflow: hidden;\n box-shadow: var(--tempest-shadow-inner);\n}\n\n.fill {\n height: 100%;\n background-color: var(--tempest-primary);\n border-radius: inherit;\n transition: width var(--tempest-duration-base) var(--tempest-ease-out);\n}\n\n.fill.success {\n background-color: var(--tempest-success-solid);\n}\n.fill.warning {\n background-color: var(--tempest-warning-solid);\n}\n.fill.danger {\n background-color: var(--tempest-danger-solid);\n}\n\n.indeterminate .fill {\n width: 30% !important;\n animation: tempest-progress-loop 1.4s var(--tempest-ease-in-out) infinite;\n}\n\n.label {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n display: flex;\n justify-content: space-between;\n}\n\n@keyframes tempest-progress-loop {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(360%);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .indeterminate .fill {\n animation: none;\n width: 100% !important;\n opacity: 0.5;\n }\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QRCode.cjs","names":[],"sources":["../../../src/components/QRCode/QRCode.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport type { HTMLAttributes } from \"react\";\n\nimport { cn } from \"@/utils/cn\";\n\nimport { encodeQR, matrixToPath } from \"./qr-encode\";\nimport type { QRErrorCorrection } from \"./qr-encode\";\nimport styles from \"./QRCode.module.css\";\n\nexport interface QRCodeProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** The payload. Encoded as UTF-8 when it is not plain digits or upper-case text. */\n value: string;\n /** Rendered side in px, quiet zone included. Default `160`. */\n size?: number;\n /** Error correction level. Default `\"M\"`. */\n level?: QRErrorCorrection;\n /** Quiet zone in modules. The standard asks for 4; below that, scanners start to miss. */\n margin?: number;\n /** Module colour. Defaults to black — see the note on dark mode below. */\n color?: string;\n /** Background colour. Defaults to white. */\n background?: string;\n /**\n * Accessible name. Defaults to naming the payload, because a screen reader\n * user cannot scan the symbol: the content has to reach them as text.\n */\n label?: string;\n}\n\n/**\n * A QR symbol, encoded in the browser and drawn as SVG.\n *\n * No dependency and no network round trip: an image service would leak the\n * payload — a payment link, a session token, an invite — to a third party, and\n * the encoder is a few kilobytes.\n *\n * SVG rather than canvas so the symbol stays sharp at any size and prints at\n * the printer's resolution instead of the screen's. Everything is one path\n * (horizontal runs merged), because a version-10 symbol is 3 481 modules and\n * that many elements costs real paint time.\n *\n * The colours are **black on white in both themes, on purpose** — they are the\n * one part of the SDK that ignores the theme tokens. Scanners expect\n * dark-on-light, and the ones that cope with an inverted symbol do it slowly and\n * unreliably; a QR that looks integrated with a dark page and scans on the third\n * try is worse than one that looks pasted on. Wiring the modules to\n * `--tempest-text` would flip them light in dark mode and leave a light symbol\n * on the white background, which scans as nothing at all. Override\n * `color`/`background` only with a scanner in hand.\n *\n * @throws {QRCapacityError} When the payload is too long for a version-40\n * symbol at the chosen level. That is a programming error rather than a state\n * to render, so it surfaces instead of silently drawing nothing — wrap it in\n * `ErrorBoundary` if the payload comes from user input.\n *\n * @example\n * <QRCode value=\"https://tempest.dev\" />\n * <QRCode value={pixPayload} level=\"H\" size={220} label=\"QR do Pix\" />\n */\nexport function QRCode({\n value,\n size = 160,\n level = \"M\",\n margin = 4,\n color = \"#000000\",\n background = \"#ffffff\",\n label,\n className,\n style,\n ...rest\n}: QRCodeProps) {\n const { path, side } = useMemo(() => {\n const matrix = encodeQR(value, { level });\n return {\n path: matrixToPath(matrix, margin),\n side: matrix.size + margin * 2,\n };\n }, [value, level, margin]);\n\n return (\n <div\n className={cn(styles.wrapper, className)}\n style={{ width: size, height: size, ...style }}\n {...rest}\n >\n <svg\n className={styles.svg}\n viewBox={`0 0 ${side} ${side}`}\n width={size}\n height={size}\n role=\"img\"\n aria-label={label ?? `QR code: ${value}`}\n shapeRendering=\"crispEdges\"\n >\n <rect width={side} height={side} fill={background} />\n <path d={path} fill={color} />\n </svg>\n </div>\n );\n}\n"],"mappings":"0JA2DA,
|
|
1
|
+
{"version":3,"file":"QRCode.cjs","names":["useMemo","encodeQR","matrixToPath","cn","styles","require_cn","require_qr_encode","require_QRCode_module","react","react_jsx_runtime","QRCode","rest","matrix","value","margin","level","className","size","style","side","label","background","path","color"],"sources":["../../../src/components/QRCode/QRCode.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport type { HTMLAttributes } from \"react\";\n\nimport { cn } from \"@/utils/cn\";\n\nimport { encodeQR, matrixToPath } from \"./qr-encode\";\nimport type { QRErrorCorrection } from \"./qr-encode\";\nimport styles from \"./QRCode.module.css\";\n\nexport interface QRCodeProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** The payload. Encoded as UTF-8 when it is not plain digits or upper-case text. */\n value: string;\n /** Rendered side in px, quiet zone included. Default `160`. */\n size?: number;\n /** Error correction level. Default `\"M\"`. */\n level?: QRErrorCorrection;\n /** Quiet zone in modules. The standard asks for 4; below that, scanners start to miss. */\n margin?: number;\n /** Module colour. Defaults to black — see the note on dark mode below. */\n color?: string;\n /** Background colour. Defaults to white. */\n background?: string;\n /**\n * Accessible name. Defaults to naming the payload, because a screen reader\n * user cannot scan the symbol: the content has to reach them as text.\n */\n label?: string;\n}\n\n/**\n * A QR symbol, encoded in the browser and drawn as SVG.\n *\n * No dependency and no network round trip: an image service would leak the\n * payload — a payment link, a session token, an invite — to a third party, and\n * the encoder is a few kilobytes.\n *\n * SVG rather than canvas so the symbol stays sharp at any size and prints at\n * the printer's resolution instead of the screen's. Everything is one path\n * (horizontal runs merged), because a version-10 symbol is 3 481 modules and\n * that many elements costs real paint time.\n *\n * The colours are **black on white in both themes, on purpose** — they are the\n * one part of the SDK that ignores the theme tokens. Scanners expect\n * dark-on-light, and the ones that cope with an inverted symbol do it slowly and\n * unreliably; a QR that looks integrated with a dark page and scans on the third\n * try is worse than one that looks pasted on. Wiring the modules to\n * `--tempest-text` would flip them light in dark mode and leave a light symbol\n * on the white background, which scans as nothing at all. Override\n * `color`/`background` only with a scanner in hand.\n *\n * @throws {QRCapacityError} When the payload is too long for a version-40\n * symbol at the chosen level. That is a programming error rather than a state\n * to render, so it surfaces instead of silently drawing nothing — wrap it in\n * `ErrorBoundary` if the payload comes from user input.\n *\n * @example\n * <QRCode value=\"https://tempest.dev\" />\n * <QRCode value={pixPayload} level=\"H\" size={220} label=\"QR do Pix\" />\n */\nexport function QRCode({\n value,\n size = 160,\n level = \"M\",\n margin = 4,\n color = \"#000000\",\n background = \"#ffffff\",\n label,\n className,\n style,\n ...rest\n}: QRCodeProps) {\n const { path, side } = useMemo(() => {\n const matrix = encodeQR(value, { level });\n return {\n path: matrixToPath(matrix, margin),\n side: matrix.size + margin * 2,\n };\n }, [value, level, margin]);\n\n return (\n <div\n className={cn(styles.wrapper, className)}\n style={{ width: size, height: size, ...style }}\n {...rest}\n >\n <svg\n className={styles.svg}\n viewBox={`0 0 ${side} ${side}`}\n width={size}\n height={size}\n role=\"img\"\n aria-label={label ?? `QR code: ${value}`}\n shapeRendering=\"crispEdges\"\n >\n <rect width={side} height={side} fill={background} />\n <path d={path} fill={color} />\n </svg>\n </div>\n );\n}\n"],"mappings":"A,0JA2DA,SAAgBU,EAAO,CACnB,QACA,OAAO,IACP,QAAQ,IACR,SAAS,EACT,QAAQ,UACR,aAAa,UACb,QACA,YACA,QACA,GAAGC,GACS,CACZ,GAAM,CAAE,OAAM,SAAA,EAASX,EAAAA,QAAAA,KAAc,CACjC,IAAMY,EAASX,EAAAA,SAASY,EAAO,CAAE,OAAM,CAAC,EACxC,MAAO,CACH,KAAMX,EAAAA,aAAaU,EAAQE,CAAM,EACjC,KAAMF,EAAO,KAAOE,EAAS,CACjC,CACJ,EAAG,CAACD,EAAOE,EAAOD,CAAM,CAAC,EAEzB,OACI,EAAAL,EAAA,IAAA,CAAC,MAAD,CACI,UAAWN,EAAAA,GAAGC,EAAAA,QAAO,QAASY,CAAS,EACvC,MAAO,CAAE,MAAOC,EAAM,OAAQA,EAAM,GAAGC,CAAM,EAC7C,GAAIP,EAEJ,UAAA,EAAAF,EAAA,KAAA,CAAC,MAAD,CACI,UAAWL,EAAAA,QAAO,IAClB,QAAS,OAAOe,EAAK,GAAGA,IACxB,MAAOF,EACP,OAAQA,EACR,KAAK,MACL,aAAYG,GAAS,YAAYP,IACjC,eAAe,aAPnB,SAAA,EASI,EAAAJ,EAAA,IAAA,CAAC,OAAD,CAAM,MAAOU,EAAM,OAAQA,EAAM,KAAME,CAAa,CAAA,GACpD,EAAAZ,EAAA,IAAA,CAAC,OAAD,CAAM,EAAGa,EAAM,KAAMC,CAAQ,CAAA,CAC5B,C,EACJ,CAAA,CAEb,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QRCode.js","names":[],"sources":["../../../src/components/QRCode/QRCode.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport type { HTMLAttributes } from \"react\";\n\nimport { cn } from \"@/utils/cn\";\n\nimport { encodeQR, matrixToPath } from \"./qr-encode\";\nimport type { QRErrorCorrection } from \"./qr-encode\";\nimport styles from \"./QRCode.module.css\";\n\nexport interface QRCodeProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** The payload. Encoded as UTF-8 when it is not plain digits or upper-case text. */\n value: string;\n /** Rendered side in px, quiet zone included. Default `160`. */\n size?: number;\n /** Error correction level. Default `\"M\"`. */\n level?: QRErrorCorrection;\n /** Quiet zone in modules. The standard asks for 4; below that, scanners start to miss. */\n margin?: number;\n /** Module colour. Defaults to black — see the note on dark mode below. */\n color?: string;\n /** Background colour. Defaults to white. */\n background?: string;\n /**\n * Accessible name. Defaults to naming the payload, because a screen reader\n * user cannot scan the symbol: the content has to reach them as text.\n */\n label?: string;\n}\n\n/**\n * A QR symbol, encoded in the browser and drawn as SVG.\n *\n * No dependency and no network round trip: an image service would leak the\n * payload — a payment link, a session token, an invite — to a third party, and\n * the encoder is a few kilobytes.\n *\n * SVG rather than canvas so the symbol stays sharp at any size and prints at\n * the printer's resolution instead of the screen's. Everything is one path\n * (horizontal runs merged), because a version-10 symbol is 3 481 modules and\n * that many elements costs real paint time.\n *\n * The colours are **black on white in both themes, on purpose** — they are the\n * one part of the SDK that ignores the theme tokens. Scanners expect\n * dark-on-light, and the ones that cope with an inverted symbol do it slowly and\n * unreliably; a QR that looks integrated with a dark page and scans on the third\n * try is worse than one that looks pasted on. Wiring the modules to\n * `--tempest-text` would flip them light in dark mode and leave a light symbol\n * on the white background, which scans as nothing at all. Override\n * `color`/`background` only with a scanner in hand.\n *\n * @throws {QRCapacityError} When the payload is too long for a version-40\n * symbol at the chosen level. That is a programming error rather than a state\n * to render, so it surfaces instead of silently drawing nothing — wrap it in\n * `ErrorBoundary` if the payload comes from user input.\n *\n * @example\n * <QRCode value=\"https://tempest.dev\" />\n * <QRCode value={pixPayload} level=\"H\" size={220} label=\"QR do Pix\" />\n */\nexport function QRCode({\n value,\n size = 160,\n level = \"M\",\n margin = 4,\n color = \"#000000\",\n background = \"#ffffff\",\n label,\n className,\n style,\n ...rest\n}: QRCodeProps) {\n const { path, side } = useMemo(() => {\n const matrix = encodeQR(value, { level });\n return {\n path: matrixToPath(matrix, margin),\n side: matrix.size + margin * 2,\n };\n }, [value, level, margin]);\n\n return (\n <div\n className={cn(styles.wrapper, className)}\n style={{ width: size, height: size, ...style }}\n {...rest}\n >\n <svg\n className={styles.svg}\n viewBox={`0 0 ${side} ${side}`}\n width={size}\n height={size}\n role=\"img\"\n aria-label={label ?? `QR code: ${value}`}\n shapeRendering=\"crispEdges\"\n >\n <rect width={side} height={side} fill={background} />\n <path d={path} fill={color} />\n </svg>\n </div>\n );\n}\n"],"mappings":";;;;;;AA2DA,
|
|
1
|
+
{"version":3,"file":"QRCode.js","names":["styles","QRCode_module_default","QRCode","rest","useMemo","matrix","encodeQR","value","matrixToPath","margin","level","cn","className","size","style","side","label","background","path","color"],"sources":["../../../src/components/QRCode/QRCode.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport type { HTMLAttributes } from \"react\";\n\nimport { cn } from \"@/utils/cn\";\n\nimport { encodeQR, matrixToPath } from \"./qr-encode\";\nimport type { QRErrorCorrection } from \"./qr-encode\";\nimport styles from \"./QRCode.module.css\";\n\nexport interface QRCodeProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** The payload. Encoded as UTF-8 when it is not plain digits or upper-case text. */\n value: string;\n /** Rendered side in px, quiet zone included. Default `160`. */\n size?: number;\n /** Error correction level. Default `\"M\"`. */\n level?: QRErrorCorrection;\n /** Quiet zone in modules. The standard asks for 4; below that, scanners start to miss. */\n margin?: number;\n /** Module colour. Defaults to black — see the note on dark mode below. */\n color?: string;\n /** Background colour. Defaults to white. */\n background?: string;\n /**\n * Accessible name. Defaults to naming the payload, because a screen reader\n * user cannot scan the symbol: the content has to reach them as text.\n */\n label?: string;\n}\n\n/**\n * A QR symbol, encoded in the browser and drawn as SVG.\n *\n * No dependency and no network round trip: an image service would leak the\n * payload — a payment link, a session token, an invite — to a third party, and\n * the encoder is a few kilobytes.\n *\n * SVG rather than canvas so the symbol stays sharp at any size and prints at\n * the printer's resolution instead of the screen's. Everything is one path\n * (horizontal runs merged), because a version-10 symbol is 3 481 modules and\n * that many elements costs real paint time.\n *\n * The colours are **black on white in both themes, on purpose** — they are the\n * one part of the SDK that ignores the theme tokens. Scanners expect\n * dark-on-light, and the ones that cope with an inverted symbol do it slowly and\n * unreliably; a QR that looks integrated with a dark page and scans on the third\n * try is worse than one that looks pasted on. Wiring the modules to\n * `--tempest-text` would flip them light in dark mode and leave a light symbol\n * on the white background, which scans as nothing at all. Override\n * `color`/`background` only with a scanner in hand.\n *\n * @throws {QRCapacityError} When the payload is too long for a version-40\n * symbol at the chosen level. That is a programming error rather than a state\n * to render, so it surfaces instead of silently drawing nothing — wrap it in\n * `ErrorBoundary` if the payload comes from user input.\n *\n * @example\n * <QRCode value=\"https://tempest.dev\" />\n * <QRCode value={pixPayload} level=\"H\" size={220} label=\"QR do Pix\" />\n */\nexport function QRCode({\n value,\n size = 160,\n level = \"M\",\n margin = 4,\n color = \"#000000\",\n background = \"#ffffff\",\n label,\n className,\n style,\n ...rest\n}: QRCodeProps) {\n const { path, side } = useMemo(() => {\n const matrix = encodeQR(value, { level });\n return {\n path: matrixToPath(matrix, margin),\n side: matrix.size + margin * 2,\n };\n }, [value, level, margin]);\n\n return (\n <div\n className={cn(styles.wrapper, className)}\n style={{ width: size, height: size, ...style }}\n {...rest}\n >\n <svg\n className={styles.svg}\n viewBox={`0 0 ${side} ${side}`}\n width={size}\n height={size}\n role=\"img\"\n aria-label={label ?? `QR code: ${value}`}\n shapeRendering=\"crispEdges\"\n >\n <rect width={side} height={side} fill={background} />\n <path d={path} fill={color} />\n </svg>\n </div>\n );\n}\n"],"mappings":";;;;;;AA2DA,SAAgBE,EAAO,EACnB,UACA,UAAO,KACP,WAAQ,KACR,YAAS,GACT,WAAQ,WACR,gBAAa,WACb,UACA,cACA,UACA,GAAGC,KACS;CACZ,IAAM,EAAE,SAAM,YAASC,QAAc;EACjC,IAAMC,IAASC,EAASC,GAAO,EAAE,SAAM,CAAC;EACxC,OAAO;GACH,MAAMC,EAAaH,GAAQI,CAAM;GACjC,MAAMJ,EAAO,OAAOI,IAAS;EACjC;CACJ,GAAG;EAACF;EAAOG;EAAOD;CAAM,CAAC;CAEzB,OACI,kBAAC,OAAD;EACI,WAAWE,EAAGX,EAAO,SAASY,CAAS;EACvC,OAAO;GAAE,OAAOC;GAAM,QAAQA;GAAM,GAAGC;EAAM;EAC7C,GAAIX;EAEJ,UAAA,kBAAC,OAAD;GACI,WAAWH,EAAO;GAClB,SAAS,OAAOe,EAAK,GAAGA;GACxB,OAAOF;GACP,QAAQA;GACR,MAAK;GACL,cAAYG,KAAS,YAAYT;GACjC,gBAAe;GAPnB,UAAA,CASI,kBAAC,QAAD;IAAM,OAAOQ;IAAM,QAAQA;IAAM,MAAME;GAAa,CAAA,GACpD,kBAAC,QAAD;IAAM,GAAGC;IAAM,MAAMC;GAAQ,CAAA,CAC5B;;CACJ,CAAA;AAEb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QRCode.module.cjs","names":[],"sources":["../../../src/components/QRCode/QRCode.module.css"],"sourcesContent":[".wrapper {\n display: inline-block;\n line-height: 0;\n border-radius: var(--tempest-radius-md);\n overflow: hidden;\n}\n\n.svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"QRCode.module.cjs","names":["wrapper","svg","QRCode_module_default"],"sources":["../../../src/components/QRCode/QRCode.module.css"],"sourcesContent":[".wrapper {\n display: inline-block;\n line-height: 0;\n border-radius: var(--tempest-radius-md);\n overflow: hidden;\n}\n\n.svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QRCode.module.js","names":[],"sources":["../../../src/components/QRCode/QRCode.module.css"],"sourcesContent":[".wrapper {\n display: inline-block;\n line-height: 0;\n border-radius: var(--tempest-radius-md);\n overflow: hidden;\n}\n\n.svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"QRCode.module.js","names":["wrapper","svg","QRCode_module_default"],"sources":["../../../src/components/QRCode/QRCode.module.css"],"sourcesContent":[".wrapper {\n display: inline-block;\n line-height: 0;\n border-radius: var(--tempest-radius-md);\n overflow: hidden;\n}\n\n.svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n"],"mappings":";"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./qr-tables.cjs");var t=class extends Error{length;level;constructor(e,t){super(`Payload of ${e} bytes does not fit in a version-40 QR symbol at level ${t}. Shorten the data, or drop to a lower correction level.`),this.length=e,this.level=t,this.name=`QRCapacityError`}},n={numeric:1,alphanumeric:2,byte:4},r=/^[0-9]*$/,i=/^[0-9A-Z $%*+\-./:]*$/;function a(e){return r.test(e)?`numeric`:i.test(e)?`alphanumeric`:`byte`}function o(e,t){let n=t<=9?0:t<=26?1:2;return e===`numeric`?[10,12,14][n]:e===`alphanumeric`?[9,11,13][n]:[8,16,16][n]}var s=class{bits=[];append(e,t){for(let n=t-1;n>=0;n--)this.bits.push(e>>>n&1)}get length(){return this.bits.length}};function c(e){return Array.from(new TextEncoder().encode(e))}function l(e,t){if(t===`numeric`){let t=Math.floor(e.length/3),n=e.length%3;return t*10+(n===0?0:n===1?4:7)}return t===`alphanumeric`?Math.floor(e.length/2)*11+e.length%2*6:c(e).length*8}function u(t,n,r){if(r===`numeric`)
|
|
1
|
+
const e=require("./qr-tables.cjs");var t=class extends Error{length;level;constructor(e,t){super(`Payload of ${e} bytes does not fit in a version-40 QR symbol at level ${t}. Shorten the data, or drop to a lower correction level.`),this.length=e,this.level=t,this.name=`QRCapacityError`}},n={numeric:1,alphanumeric:2,byte:4},r=/^[0-9]*$/,i=/^[0-9A-Z $%*+\-./:]*$/;function a(e){return r.test(e)?`numeric`:i.test(e)?`alphanumeric`:`byte`}function o(e,t){let n=t<=9?0:t<=26?1:2;return e===`numeric`?[10,12,14][n]:e===`alphanumeric`?[9,11,13][n]:[8,16,16][n]}var s=class{bits=[];append(e,t){for(let n=t-1;n>=0;n--)this.bits.push(e>>>n&1)}get length(){return this.bits.length}};function c(e){return Array.from(new TextEncoder().encode(e))}function l(e,t){if(t===`numeric`){let t=Math.floor(e.length/3),n=e.length%3;return t*10+(n===0?0:n===1?4:7)}return t===`alphanumeric`?Math.floor(e.length/2)*11+e.length%2*6:c(e).length*8}function u(t,n,r){if(r===`numeric`)for(let e=0;e<n.length;e+=3){let r=n.slice(e,e+3);t.append(Number(r),r.length*3+1)}else if(r===`alphanumeric`)for(let r=0;r<n.length;r+=2){let i=e.ALPHANUMERIC_CHARS.indexOf(n[r]);r+1===n.length?t.append(i,6):t.append(i*45+e.ALPHANUMERIC_CHARS.indexOf(n[r+1]),11)}else for(let e of c(n))t.append(e,8)}function d(e,t){return t===`byte`?c(e).length:e.length}function f(n,r,i,a){let s=l(n,r);for(let t=Math.max(1,a);t<=40;t++){let n=e.dataCodewords(t,i)*8;if(4+o(r,t)+s<=n)return t}throw new t(d(n,r),i)}var p=new Uint8Array(512),m=new Uint8Array(256);{let e=1;for(let t=0;t<255;t++)p[t]=e,m[e]=t,e=e<<1^(e&128?285:0);for(let e=255;e<512;e++)p[e]=p[e-255]}function h(e,t){return e===0||t===0?0:p[m[e]+m[t]]}function g(e){let t=[1];for(let n=0;n<e;n++){let e=Array(t.length+1).fill(0);for(let r=0;r<t.length;r++)e[r]^=t[r],e[r+1]^=h(t[r],p[n]);t=e}return t}function _(e,t){let n=g(t),r=Array(t).fill(0);for(let i of e){let e=i^r[0];r.shift(),r.push(0);for(let i=0;i<t;i++)r[i]^=h(n[i+1],e)}return r}function v(t,n,r){let i=e.ECC_BLOCK_COUNT[r][n-1],a=e.ECC_CODEWORDS_PER_BLOCK[r][n-1],o=Math.floor(e.rawDataModules(n)/8),s=Math.floor(o/i)-a,c=o%i,l=[],u=[],d=0;for(let e=0;e<i;e++){let n=s+ +(e>=i-c),r=t.slice(d,d+n);d+=n,l.push(r),u.push(_(r,a))}let f=[];for(let e=0;e<s+1;e++)for(let t of l)e<t.length&&f.push(t[e]);for(let e=0;e<a;e++)for(let t of u)f.push(t[e]);return f}function y(e){let t=e*4+17;return{size:t,modules:Array.from({length:t},()=>Array(t).fill(!1)),reserved:Array.from({length:t},()=>Array(t).fill(!1))}}function b(e,t,n,r,i=!0){t<0||n<0||t>=e.size||n>=e.size||(e.modules[n][t]=r,i&&(e.reserved[n][t]=!0))}function x(e,t,n){for(let r=-1;r<=7;r++)for(let i=-1;i<=7;i++){let a=Math.max(Math.abs(i-3),Math.abs(r-3));b(e,t+i,n+r,a!==2&&a<=3)}}function S(e,t,n){for(let r=-2;r<=2;r++)for(let i=-2;i<=2;i++)b(e,t+i,n+r,Math.max(Math.abs(i),Math.abs(r))!==1)}function C(t,n){x(t,0,0),x(t,t.size-7,0),x(t,0,t.size-7);for(let e=8;e<t.size-8;e++){let n=e%2==0;b(t,e,6,n),b(t,6,e,n)}let r=e.alignmentPatternPositions(n);for(let e of r)for(let n of r)n===6&&e===6||n===6&&e===t.size-7||n===t.size-7&&e===6||S(t,n,e);for(let e=0;e<9;e++)b(t,e,8,!1),b(t,8,e,!1);for(let e=0;e<8;e++)b(t,t.size-1-e,8,!1),b(t,8,t.size-1-e,!1);if(b(t,8,t.size-8,!0),n>=7){let e=w(n);for(let n=0;n<18;n++){let r=(e>>>n&1)==1,i=t.size-11+n%3,a=Math.floor(n/3);b(t,i,a,r),b(t,a,i,r)}}}function w(e){let t=e;for(let e=0;e<12;e++)t=t<<1^(t>>>11)*7973;return e<<12|t}function T(t,n){let r=e.ECC_FORMAT_BITS[t]<<3|n,i=r;for(let e=0;e<10;e++)i=i<<1^(i>>>9)*1335;return(r<<10|i)^21522}function E(e,t,n){let r=T(t,n);for(let t=0;t<=5;t++)b(e,8,t,(r>>>t&1)==1);b(e,8,7,(r>>>6&1)==1),b(e,8,8,(r>>>7&1)==1),b(e,7,8,(r>>>8&1)==1);for(let t=9;t<15;t++)b(e,14-t,8,(r>>>t&1)==1);for(let t=0;t<8;t++)b(e,e.size-1-t,8,(r>>>t&1)==1);for(let t=8;t<15;t++)b(e,8,e.size-15+t,(r>>>t&1)==1);b(e,8,e.size-8,!0)}function D(e,t){let n=0,r=!0;for(let i=e.size-1;i>=1;i-=2){i===6&&(i=5);for(let a=0;a<e.size;a++){let o=r?e.size-1-a:a;for(let r=0;r<2;r++){let a=i-r;if(e.reserved[o][a])continue;let s=t[n>>>3];e.modules[o][a]=s!==void 0&&(s>>>7-(n&7)&1)==1,n++}}r=!r}}var O=[(e,t)=>(e+t)%2==0,(e,t)=>t%2==0,e=>e%3==0,(e,t)=>(e+t)%3==0,(e,t)=>(Math.floor(t/2)+Math.floor(e/3))%2==0,(e,t)=>e*t%2+e*t%3==0,(e,t)=>(e*t%2+e*t%3)%2==0,(e,t)=>((e+t)%2+e*t%3)%2==0];function k(e,t){let n=O[t];for(let t=0;t<e.size;t++)for(let r=0;r<e.size;r++)!e.reserved[t][r]&&n(r,t)&&(e.modules[t][r]=!e.modules[t][r])}function A(e){let{size:t,modules:n}=e,r=0,i=e=>e>=5?3+(e-5):0;for(let e=0;e<t;e++){let a=1;for(let o=1;o<t;o++)n[e][o]===n[e][o-1]?a++:(r+=i(a),a=1);r+=i(a)}for(let e=0;e<t;e++){let a=1;for(let o=1;o<t;o++)n[o][e]===n[o-1][e]?a++:(r+=i(a),a=1);r+=i(a)}for(let e=0;e<t-1;e++)for(let i=0;i<t-1;i++){let t=n[e][i];t===n[e][i+1]&&t===n[e+1][i]&&t===n[e+1][i+1]&&(r+=3)}let a=[!0,!1,!0,!0,!0,!1,!0],o=(e,t)=>{for(let n=0;n<a.length;n++)if(e[t+n]!==a[n])return!1;let n=e.slice(Math.max(0,t-4),t),r=e.slice(t+7,t+11),i=e=>e.length===4&&e.every(e=>!e);return i(n)||i(r)};for(let e=0;e<t;e++){let i=n[e],a=n.map(t=>t[e]);for(let e=0;e+7<=t;e++)o(i,e)&&(r+=40),o(a,e)&&(r+=40)}let s=0;for(let e of n)for(let t of e)t&&s++;let c=s*100/(t*t);return r+=Math.floor(Math.abs(c-50)/5)*10,r}function j(e){return{size:e.size,modules:e.modules.map(e=>[...e]),reserved:e.reserved.map(e=>[...e])}}function M(t,r={}){let{level:i=`M`,minVersion:c=1}=r,l=a(t),p=f(t,l,i,c),m=new s;m.append(n[l],4),m.append(d(t,l),o(l,p)),u(m,t,l);let h=e.dataCodewords(p,i)*8;m.append(0,Math.min(4,h-m.length)),m.append(0,(8-m.length%8)%8);let g=[];for(let e=0;e<m.length;e+=8){let t=0;for(let n=0;n<8;n++)t=t<<1|m.bits[e+n];g.push(t)}for(let e=236;g.length<h/8;e^=253)g.push(e);let _=v(g,p,i),b=y(p);C(b,p),D(b,_);let x=null,S=0,w=1/0;for(let e=0;e<8;e++){let t=j(b);k(t,e),E(t,i,e);let n=A(t);n<w&&(w=n,S=e,x=t)}let T=x;return{size:T.size,modules:T.modules,version:p,level:i,mode:l,mask:S}}function N(e,t=4){let n=[];for(let r=0;r<e.size;r++){let i=-1;for(let a=0;a<=e.size;a++){let o=a<e.size&&e.modules[r][a];o&&i===-1&&(i=a),!o&&i!==-1&&(n.push(`M${i+t} ${r+t}h${a-i}v1h-${a-i}z`),i=-1)}}return n.join(``)}exports.QRCapacityError=t,exports.encodeQR=M,exports.matrixToPath=N,exports.reedSolomon=_,exports.selectMode=a;
|
|
2
2
|
//# sourceMappingURL=qr-encode.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qr-encode.cjs","names":[],"sources":["../../../src/components/QRCode/qr-encode.ts"],"sourcesContent":["/**\n * @tempest-limits file-lines — ISO/IEC 18004 end to end with no dependency: mode\n * selection, the version and error-correction tables, Reed-Solomon over GF(256),\n * interleaving, the module placement with its function patterns, all eight masks and\n * the penalty scoring that picks between them. These are stages of one pipeline\n * defined by the standard; a file boundary between them would only move where the\n * reader has to look up a table.\n */\nimport {\n ALPHANUMERIC_CHARS,\n alignmentPatternPositions,\n dataCodewords,\n ECC_BLOCK_COUNT,\n ECC_CODEWORDS_PER_BLOCK,\n ECC_FORMAT_BITS,\n MAX_VERSION,\n MIN_VERSION,\n rawDataModules,\n type QRErrorCorrection,\n} from \"./qr-tables\";\n\nexport type { QRErrorCorrection };\n\n/** How the payload is packed into bits. */\nexport type QRMode = \"numeric\" | \"alphanumeric\" | \"byte\";\n\nexport interface QRMatrix {\n /** Side length in modules, including no quiet zone. */\n size: number;\n /** Row-major modules; `true` is dark. */\n modules: boolean[][];\n /** Symbol version, 1 to 40. */\n version: number;\n /** Level the symbol was encoded at. */\n level: QRErrorCorrection;\n /** The mode chosen for the payload. */\n mode: QRMode;\n /** Which of the eight masks scored best. */\n mask: number;\n}\n\nexport interface QREncodeOptions {\n /** Error correction level. Default `\"M\"`. */\n level?: QRErrorCorrection;\n /**\n * Force a minimum version. The encoder still grows past it when the payload\n * does not fit — a version is a floor, never a cap that silently truncates.\n */\n minVersion?: number;\n}\n\n/** Raised when a payload cannot be encoded at the requested level. */\nexport class QRCapacityError extends Error {\n constructor(\n readonly length: number,\n readonly level: QRErrorCorrection,\n ) {\n super(\n `Payload of ${length} bytes does not fit in a version-${MAX_VERSION} QR symbol at level ${level}. ` +\n \"Shorten the data, or drop to a lower correction level.\",\n );\n this.name = \"QRCapacityError\";\n }\n}\n\nconst MODE_INDICATOR: Record<QRMode, number> = { numeric: 1, alphanumeric: 2, byte: 4 };\n\nconst NUMERIC_RE = /^[0-9]*$/;\nconst ALPHANUMERIC_RE = /^[0-9A-Z $%*+\\-./:]*$/;\n\n/**\n * Pick the densest mode the payload qualifies for.\n *\n * Numeric packs 3 digits into 10 bits and alphanumeric 2 characters into 11, so\n * a phone number or an upper-case code encodes far smaller than the same string\n * as bytes — often a whole version smaller, which is a visibly coarser symbol\n * and therefore easier to scan.\n *\n * @param text - The payload.\n * @returns The narrowest mode that can represent it.\n */\nexport function selectMode(text: string): QRMode {\n if (NUMERIC_RE.test(text)) return \"numeric\";\n if (ALPHANUMERIC_RE.test(text)) return \"alphanumeric\";\n return \"byte\";\n}\n\n/** Bits the character-count field takes, which widens with the version. */\nfunction charCountBits(mode: QRMode, version: number): number {\n const tier = version <= 9 ? 0 : version <= 26 ? 1 : 2;\n if (mode === \"numeric\") return [10, 12, 14][tier];\n if (mode === \"alphanumeric\") return [9, 11, 13][tier];\n return [8, 16, 16][tier];\n}\n\n/** A bit sink that appends most-significant-bit first. */\nclass BitBuffer {\n readonly bits: number[] = [];\n\n append(value: number, length: number) {\n for (let i = length - 1; i >= 0; i--) this.bits.push((value >>> i) & 1);\n }\n\n get length(): number {\n return this.bits.length;\n }\n}\n\n/** UTF-8 bytes for the byte mode, so accents and emoji survive the round trip. */\nfunction utf8Bytes(text: string): number[] {\n return Array.from(new TextEncoder().encode(text));\n}\n\n/** Bits the payload itself occupies in a given mode, excluding the headers. */\nfunction payloadBits(text: string, mode: QRMode): number {\n if (mode === \"numeric\") {\n const groups = Math.floor(text.length / 3);\n const rest = text.length % 3;\n return groups * 10 + (rest === 0 ? 0 : rest === 1 ? 4 : 7);\n }\n if (mode === \"alphanumeric\") {\n return Math.floor(text.length / 2) * 11 + (text.length % 2) * 6;\n }\n return utf8Bytes(text).length * 8;\n}\n\n/** Write the payload into the buffer in the chosen mode. */\nfunction writePayload(buffer: BitBuffer, text: string, mode: QRMode) {\n if (mode === \"numeric\") {\n for (let i = 0; i < text.length; i += 3) {\n const chunk = text.slice(i, i + 3);\n buffer.append(Number(chunk), chunk.length * 3 + 1);\n }\n return;\n }\n if (mode === \"alphanumeric\") {\n for (let i = 0; i < text.length; i += 2) {\n const first = ALPHANUMERIC_CHARS.indexOf(text[i]);\n if (i + 1 === text.length) {\n buffer.append(first, 6);\n } else {\n buffer.append(first * 45 + ALPHANUMERIC_CHARS.indexOf(text[i + 1]), 11);\n }\n }\n return;\n }\n for (const byte of utf8Bytes(text)) buffer.append(byte, 8);\n}\n\n/** Character count for the header, which is bytes — not characters — in byte mode. */\nfunction headerCount(text: string, mode: QRMode): number {\n return mode === \"byte\" ? utf8Bytes(text).length : text.length;\n}\n\n/**\n * The smallest version that fits the payload at this level.\n *\n * @throws {QRCapacityError} When even version 40 is too small.\n */\nfunction selectVersion(\n text: string,\n mode: QRMode,\n level: QRErrorCorrection,\n minVersion: number,\n): number {\n const bits = payloadBits(text, mode);\n for (let version = Math.max(MIN_VERSION, minVersion); version <= MAX_VERSION; version++) {\n const capacity = dataCodewords(version, level) * 8;\n if (4 + charCountBits(mode, version) + bits <= capacity) return version;\n }\n throw new QRCapacityError(headerCount(text, mode), level);\n}\n\n// ── Reed-Solomon over GF(256), primitive polynomial 0x11D ───────────────────\n\nconst GF_EXP = new Uint8Array(512);\nconst GF_LOG = new Uint8Array(256);\n\n{\n let x = 1;\n for (let i = 0; i < 255; i++) {\n GF_EXP[i] = x;\n GF_LOG[x] = i;\n x = (x << 1) ^ (x & 0x80 ? 0x11d : 0);\n }\n for (let i = 255; i < 512; i++) GF_EXP[i] = GF_EXP[i - 255];\n}\n\nfunction gfMul(a: number, b: number): number {\n if (a === 0 || b === 0) return 0;\n return GF_EXP[GF_LOG[a] + GF_LOG[b]];\n}\n\n/** The generator polynomial for `degree` error-correction codewords. */\nfunction rsGenerator(degree: number): number[] {\n let poly = [1];\n for (let i = 0; i < degree; i++) {\n const next = new Array<number>(poly.length + 1).fill(0);\n for (let j = 0; j < poly.length; j++) {\n next[j] ^= poly[j];\n next[j + 1] ^= gfMul(poly[j], GF_EXP[i]);\n }\n poly = next;\n }\n return poly;\n}\n\n/**\n * The error-correction codewords for one block.\n *\n * @param data - The block's data codewords.\n * @param degree - How many correction codewords to produce.\n * @returns The remainder of the polynomial division, which is the ECC block.\n */\nexport function reedSolomon(data: readonly number[], degree: number): number[] {\n const generator = rsGenerator(degree);\n const remainder = new Array<number>(degree).fill(0);\n for (const byte of data) {\n const factor = byte ^ remainder[0];\n remainder.shift();\n remainder.push(0);\n for (let i = 0; i < degree; i++) {\n remainder[i] ^= gfMul(generator[i + 1], factor);\n }\n }\n return remainder;\n}\n\n/**\n * Split into blocks, add correction, and interleave into the final codeword\n * stream.\n *\n * Interleaving is what makes the correction useful against a real-world smudge:\n * a contiguous scratch on the printed symbol then damages a few codewords of\n * every block instead of destroying one block completely.\n */\nfunction buildCodewords(\n data: readonly number[],\n version: number,\n level: QRErrorCorrection,\n): number[] {\n const blockCount = ECC_BLOCK_COUNT[level][version - 1];\n const eccPerBlock = ECC_CODEWORDS_PER_BLOCK[level][version - 1];\n const totalCodewords = Math.floor(rawDataModules(version) / 8);\n const shortBlockLength = Math.floor(totalCodewords / blockCount) - eccPerBlock;\n const longBlockCount = totalCodewords % blockCount;\n\n const dataBlocks: number[][] = [];\n const eccBlocks: number[][] = [];\n let offset = 0;\n for (let i = 0; i < blockCount; i++) {\n const length = shortBlockLength + (i >= blockCount - longBlockCount ? 1 : 0);\n const block = data.slice(offset, offset + length);\n offset += length;\n dataBlocks.push(block);\n eccBlocks.push(reedSolomon(block, eccPerBlock));\n }\n\n const result: number[] = [];\n for (let i = 0; i < shortBlockLength + 1; i++) {\n for (const block of dataBlocks) {\n if (i < block.length) result.push(block[i]);\n }\n }\n for (let i = 0; i < eccPerBlock; i++) {\n for (const block of eccBlocks) result.push(block[i]);\n }\n return result;\n}\n\n// ── Matrix construction ─────────────────────────────────────────────────────\n\n/** A grid under construction: modules plus which cells are function patterns. */\ninterface Canvas {\n size: number;\n modules: boolean[][];\n reserved: boolean[][];\n}\n\nfunction createCanvas(version: number): Canvas {\n const size = version * 4 + 17;\n return {\n size,\n modules: Array.from({ length: size }, () => new Array<boolean>(size).fill(false)),\n reserved: Array.from({ length: size }, () => new Array<boolean>(size).fill(false)),\n };\n}\n\nfunction setModule(canvas: Canvas, x: number, y: number, dark: boolean, reserve = true) {\n if (x < 0 || y < 0 || x >= canvas.size || y >= canvas.size) return;\n canvas.modules[y][x] = dark;\n if (reserve) canvas.reserved[y][x] = true;\n}\n\n/** A finder pattern with its separator, anchored at a corner. */\nfunction drawFinder(canvas: Canvas, left: number, top: number) {\n for (let dy = -1; dy <= 7; dy++) {\n for (let dx = -1; dx <= 7; dx++) {\n const distance = Math.max(Math.abs(dx - 3), Math.abs(dy - 3));\n setModule(canvas, left + dx, top + dy, distance !== 2 && distance <= 3);\n }\n }\n}\n\nfunction drawAlignment(canvas: Canvas, cx: number, cy: number) {\n for (let dy = -2; dy <= 2; dy++) {\n for (let dx = -2; dx <= 2; dx++) {\n setModule(canvas, cx + dx, cy + dy, Math.max(Math.abs(dx), Math.abs(dy)) !== 1);\n }\n }\n}\n\nfunction drawFunctionPatterns(canvas: Canvas, version: number) {\n drawFinder(canvas, 0, 0);\n drawFinder(canvas, canvas.size - 7, 0);\n drawFinder(canvas, 0, canvas.size - 7);\n\n for (let i = 8; i < canvas.size - 8; i++) {\n const dark = i % 2 === 0;\n setModule(canvas, i, 6, dark);\n setModule(canvas, 6, i, dark);\n }\n\n const positions = alignmentPatternPositions(version);\n for (const cy of positions) {\n for (const cx of positions) {\n // The three corners already hold finder patterns.\n const atFinder =\n (cx === 6 && cy === 6) ||\n (cx === 6 && cy === canvas.size - 7) ||\n (cx === canvas.size - 7 && cy === 6);\n if (!atFinder) drawAlignment(canvas, cx, cy);\n }\n }\n\n // Reserve the format information, and light the always-dark module.\n for (let i = 0; i < 9; i++) {\n setModule(canvas, i, 8, false);\n setModule(canvas, 8, i, false);\n }\n for (let i = 0; i < 8; i++) {\n setModule(canvas, canvas.size - 1 - i, 8, false);\n setModule(canvas, 8, canvas.size - 1 - i, false);\n }\n setModule(canvas, 8, canvas.size - 8, true);\n\n if (version >= 7) {\n const value = versionInformation(version);\n for (let i = 0; i < 18; i++) {\n const bit = ((value >>> i) & 1) === 1;\n const a = canvas.size - 11 + (i % 3);\n const b = Math.floor(i / 3);\n setModule(canvas, a, b, bit);\n setModule(canvas, b, a, bit);\n }\n }\n}\n\n/** The 18-bit version information block, BCH(18,6) with generator 0x1F25. */\nfunction versionInformation(version: number): number {\n let remainder = version;\n for (let i = 0; i < 12; i++) {\n remainder = (remainder << 1) ^ ((remainder >>> 11) * 0x1f25);\n }\n return (version << 12) | remainder;\n}\n\n/** The 15-bit format information, BCH(15,5) masked with 0x5412. */\nfunction formatInformation(level: QRErrorCorrection, mask: number): number {\n const data = (ECC_FORMAT_BITS[level] << 3) | mask;\n let remainder = data;\n for (let i = 0; i < 10; i++) {\n remainder = (remainder << 1) ^ ((remainder >>> 9) * 0x537);\n }\n return ((data << 10) | remainder) ^ 0x5412;\n}\n\nfunction drawFormatInformation(canvas: Canvas, level: QRErrorCorrection, mask: number) {\n const bits = formatInformation(level, mask);\n\n for (let i = 0; i <= 5; i++) setModule(canvas, 8, i, ((bits >>> i) & 1) === 1);\n setModule(canvas, 8, 7, ((bits >>> 6) & 1) === 1);\n setModule(canvas, 8, 8, ((bits >>> 7) & 1) === 1);\n setModule(canvas, 7, 8, ((bits >>> 8) & 1) === 1);\n for (let i = 9; i < 15; i++) setModule(canvas, 14 - i, 8, ((bits >>> i) & 1) === 1);\n\n for (let i = 0; i < 8; i++) {\n setModule(canvas, canvas.size - 1 - i, 8, ((bits >>> i) & 1) === 1);\n }\n for (let i = 8; i < 15; i++) {\n setModule(canvas, 8, canvas.size - 15 + i, ((bits >>> i) & 1) === 1);\n }\n setModule(canvas, 8, canvas.size - 8, true);\n}\n\n/**\n * Lay the codeword stream into the free modules.\n *\n * The path is a boustrophedon over two-module columns from the bottom-right\n * corner, skipping the vertical timing pattern in column 6 entirely — that\n * column would otherwise shift every subsequent column by one.\n */\nfunction drawCodewords(canvas: Canvas, codewords: readonly number[]) {\n let bitIndex = 0;\n let upward = true;\n\n for (let right = canvas.size - 1; right >= 1; right -= 2) {\n if (right === 6) right = 5;\n for (let step = 0; step < canvas.size; step++) {\n const y = upward ? canvas.size - 1 - step : step;\n for (let column = 0; column < 2; column++) {\n const x = right - column;\n if (canvas.reserved[y][x]) continue;\n const byte = codewords[bitIndex >>> 3];\n // Remainder bits past the stream are light, per the standard.\n canvas.modules[y][x] =\n byte !== undefined && ((byte >>> (7 - (bitIndex & 7))) & 1) === 1;\n bitIndex++;\n }\n }\n upward = !upward;\n }\n}\n\nconst MASK_FUNCTIONS: readonly ((x: number, y: number) => boolean)[] = [\n (x, y) => (x + y) % 2 === 0,\n (_x, y) => y % 2 === 0,\n (x) => x % 3 === 0,\n (x, y) => (x + y) % 3 === 0,\n (x, y) => (Math.floor(y / 2) + Math.floor(x / 3)) % 2 === 0,\n (x, y) => ((x * y) % 2) + ((x * y) % 3) === 0,\n (x, y) => (((x * y) % 2) + ((x * y) % 3)) % 2 === 0,\n (x, y) => (((x + y) % 2) + ((x * y) % 3)) % 2 === 0,\n];\n\nfunction applyMask(canvas: Canvas, mask: number) {\n const fn = MASK_FUNCTIONS[mask];\n for (let y = 0; y < canvas.size; y++) {\n for (let x = 0; x < canvas.size; x++) {\n if (!canvas.reserved[y][x] && fn(x, y)) canvas.modules[y][x] = !canvas.modules[y][x];\n }\n }\n}\n\n/**\n * Score a masked symbol; lower is better.\n *\n * The four penalties push away from patterns a scanner confuses with the finder\n * marks, and from large flat areas where it cannot lock on.\n */\nfunction penalty(canvas: Canvas): number {\n const { size, modules } = canvas;\n let score = 0;\n\n const runPenalty = (run: number) => (run >= 5 ? 3 + (run - 5) : 0);\n\n for (let y = 0; y < size; y++) {\n let run = 1;\n for (let x = 1; x < size; x++) {\n if (modules[y][x] === modules[y][x - 1]) run++;\n else {\n score += runPenalty(run);\n run = 1;\n }\n }\n score += runPenalty(run);\n }\n for (let x = 0; x < size; x++) {\n let run = 1;\n for (let y = 1; y < size; y++) {\n if (modules[y][x] === modules[y - 1][x]) run++;\n else {\n score += runPenalty(run);\n run = 1;\n }\n }\n score += runPenalty(run);\n }\n\n for (let y = 0; y < size - 1; y++) {\n for (let x = 0; x < size - 1; x++) {\n const cell = modules[y][x];\n if (\n cell === modules[y][x + 1] &&\n cell === modules[y + 1][x] &&\n cell === modules[y + 1][x + 1]\n ) {\n score += 3;\n }\n }\n }\n\n // 1:1:3:1:1 with four light modules on either side — the finder's signature.\n const FINDER = [true, false, true, true, true, false, true];\n const matchesAt = (line: readonly boolean[], at: number): boolean => {\n for (let i = 0; i < FINDER.length; i++) {\n if (line[at + i] !== FINDER[i]) return false;\n }\n const before = line.slice(Math.max(0, at - 4), at);\n const after = line.slice(at + 7, at + 11);\n const clear = (part: readonly boolean[]) => part.length === 4 && part.every((m) => !m);\n return clear(before) || clear(after);\n };\n\n for (let i = 0; i < size; i++) {\n const row = modules[i];\n const column = modules.map((line) => line[i]);\n for (let at = 0; at + 7 <= size; at++) {\n if (matchesAt(row, at)) score += 40;\n if (matchesAt(column, at)) score += 40;\n }\n }\n\n let dark = 0;\n for (const row of modules) for (const cell of row) if (cell) dark++;\n const percent = (dark * 100) / (size * size);\n score += Math.floor(Math.abs(percent - 50) / 5) * 10;\n\n return score;\n}\n\nfunction cloneCanvas(canvas: Canvas): Canvas {\n return {\n size: canvas.size,\n modules: canvas.modules.map((row) => [...row]),\n reserved: canvas.reserved.map((row) => [...row]),\n };\n}\n\n/**\n * Encode text into a QR matrix.\n *\n * The whole pipeline of ISO/IEC 18004: pick the densest mode the payload\n * qualifies for, pick the smallest version that fits, build the bit stream, add\n * Reed-Solomon correction, interleave the blocks, lay the modules out, then try\n * all eight masks and keep the one the standard's penalty function likes best.\n *\n * @param text - The payload. Byte mode encodes it as UTF-8.\n * @param options - Level and an optional version floor.\n * @returns The finished matrix, without a quiet zone.\n * @throws {QRCapacityError} When the payload does not fit at that level.\n *\n * @example\n * const qr = encodeQR(\"https://tempest.dev\", { level: \"Q\" });\n * qr.modules[0][0]; // true — top-left of the finder pattern\n */\nexport function encodeQR(text: string, options: QREncodeOptions = {}): QRMatrix {\n const { level = \"M\", minVersion = MIN_VERSION } = options;\n const mode = selectMode(text);\n const version = selectVersion(text, mode, level, minVersion);\n\n const buffer = new BitBuffer();\n buffer.append(MODE_INDICATOR[mode], 4);\n buffer.append(headerCount(text, mode), charCountBits(mode, version));\n writePayload(buffer, text, mode);\n\n const capacity = dataCodewords(version, level) * 8;\n buffer.append(0, Math.min(4, capacity - buffer.length));\n buffer.append(0, (8 - (buffer.length % 8)) % 8);\n\n const data: number[] = [];\n for (let i = 0; i < buffer.length; i += 8) {\n let byte = 0;\n for (let j = 0; j < 8; j++) byte = (byte << 1) | buffer.bits[i + j];\n data.push(byte);\n }\n // The two alternating pad bytes are prescribed, not arbitrary filler.\n for (let pad = 0xec; data.length < capacity / 8; pad ^= 0xec ^ 0x11) data.push(pad);\n\n const codewords = buildCodewords(data, version, level);\n\n const base = createCanvas(version);\n drawFunctionPatterns(base, version);\n drawCodewords(base, codewords);\n\n let best: Canvas | null = null;\n let bestMask = 0;\n let bestScore = Number.POSITIVE_INFINITY;\n for (let mask = 0; mask < 8; mask++) {\n const candidate = cloneCanvas(base);\n applyMask(candidate, mask);\n drawFormatInformation(candidate, level, mask);\n const score = penalty(candidate);\n if (score < bestScore) {\n bestScore = score;\n bestMask = mask;\n best = candidate;\n }\n }\n\n const chosen = best as Canvas;\n return {\n size: chosen.size,\n modules: chosen.modules,\n version,\n level,\n mode,\n mask: bestMask,\n };\n}\n\n/**\n * The matrix as an SVG path, one `M…h…v…h…z` rectangle per dark module.\n *\n * A path beats one `<rect>` per module: a version-10 symbol is 3 481 modules,\n * and that many elements is a real cost to parse and to paint. Coordinates are\n * whole numbers in module space, so the shape stays crisp at any size.\n *\n * @param matrix - An encoded matrix.\n * @param margin - Quiet zone in modules. The standard asks for 4.\n * @returns The `d` attribute, empty when there is nothing dark.\n */\nexport function matrixToPath(matrix: QRMatrix, margin = 4): string {\n const parts: string[] = [];\n for (let y = 0; y < matrix.size; y++) {\n let runStart = -1;\n for (let x = 0; x <= matrix.size; x++) {\n const dark = x < matrix.size && matrix.modules[y][x];\n if (dark && runStart === -1) runStart = x;\n if (!dark && runStart !== -1) {\n // Merge each horizontal run into one rectangle.\n parts.push(\n `M${runStart + margin} ${y + margin}h${x - runStart}v1h-${x - runStart}z`,\n );\n runStart = -1;\n }\n }\n }\n return parts.join(\"\");\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"qr-encode.cjs","names":["ALPHANUMERIC_CHARS","dataCodewords","ECC_BLOCK_COUNT","ECC_CODEWORDS_PER_BLOCK","rawDataModules","alignmentPatternPositions","ECC_FORMAT_BITS","require_qr_tables","QRCapacityError","length","level","MODE_INDICATOR","NUMERIC_RE","ALPHANUMERIC_RE","selectMode","text","charCountBits","tier","version","mode","BitBuffer","i","value","utf8Bytes","payloadBits","groups","rest","writePayload","chunk","buffer","first","byte","headerCount","selectVersion","bits","minVersion","capacity","GF_EXP","GF_LOG","x","gfMul","a","b","rsGenerator","poly","degree","next","j","reedSolomon","generator","remainder","data","factor","buildCodewords","blockCount","eccPerBlock","totalCodewords","shortBlockLength","longBlockCount","dataBlocks","eccBlocks","offset","block","result","createCanvas","size","setModule","y","canvas","dark","reserve","drawFinder","dy","dx","distance","left","top","drawAlignment","cx","cy","drawFunctionPatterns","positions","versionInformation","bit","formatInformation","mask","drawFormatInformation","drawCodewords","bitIndex","upward","right","step","column","codewords","MASK_FUNCTIONS","applyMask","fn","penalty","score","runPenalty","run","modules","cell","FINDER","matchesAt","line","at","before","after","clear","part","m","row","percent","cloneCanvas","encodeQR","options","pad","base","best","bestMask","bestScore","candidate","chosen","matrixToPath","parts","matrix","runStart","margin"],"sources":["../../../src/components/QRCode/qr-encode.ts"],"sourcesContent":["/**\n * @tempest-limits file-lines — ISO/IEC 18004 end to end with no dependency: mode\n * selection, the version and error-correction tables, Reed-Solomon over GF(256),\n * interleaving, the module placement with its function patterns, all eight masks and\n * the penalty scoring that picks between them. These are stages of one pipeline\n * defined by the standard; a file boundary between them would only move where the\n * reader has to look up a table.\n */\nimport {\n ALPHANUMERIC_CHARS,\n alignmentPatternPositions,\n dataCodewords,\n ECC_BLOCK_COUNT,\n ECC_CODEWORDS_PER_BLOCK,\n ECC_FORMAT_BITS,\n MAX_VERSION,\n MIN_VERSION,\n rawDataModules,\n type QRErrorCorrection,\n} from \"./qr-tables\";\n\nexport type { QRErrorCorrection };\n\n/** How the payload is packed into bits. */\nexport type QRMode = \"numeric\" | \"alphanumeric\" | \"byte\";\n\nexport interface QRMatrix {\n /** Side length in modules, including no quiet zone. */\n size: number;\n /** Row-major modules; `true` is dark. */\n modules: boolean[][];\n /** Symbol version, 1 to 40. */\n version: number;\n /** Level the symbol was encoded at. */\n level: QRErrorCorrection;\n /** The mode chosen for the payload. */\n mode: QRMode;\n /** Which of the eight masks scored best. */\n mask: number;\n}\n\nexport interface QREncodeOptions {\n /** Error correction level. Default `\"M\"`. */\n level?: QRErrorCorrection;\n /**\n * Force a minimum version. The encoder still grows past it when the payload\n * does not fit — a version is a floor, never a cap that silently truncates.\n */\n minVersion?: number;\n}\n\n/** Raised when a payload cannot be encoded at the requested level. */\nexport class QRCapacityError extends Error {\n constructor(\n readonly length: number,\n readonly level: QRErrorCorrection,\n ) {\n super(\n `Payload of ${length} bytes does not fit in a version-${MAX_VERSION} QR symbol at level ${level}. ` +\n \"Shorten the data, or drop to a lower correction level.\",\n );\n this.name = \"QRCapacityError\";\n }\n}\n\nconst MODE_INDICATOR: Record<QRMode, number> = { numeric: 1, alphanumeric: 2, byte: 4 };\n\nconst NUMERIC_RE = /^[0-9]*$/;\nconst ALPHANUMERIC_RE = /^[0-9A-Z $%*+\\-./:]*$/;\n\n/**\n * Pick the densest mode the payload qualifies for.\n *\n * Numeric packs 3 digits into 10 bits and alphanumeric 2 characters into 11, so\n * a phone number or an upper-case code encodes far smaller than the same string\n * as bytes — often a whole version smaller, which is a visibly coarser symbol\n * and therefore easier to scan.\n *\n * @param text - The payload.\n * @returns The narrowest mode that can represent it.\n */\nexport function selectMode(text: string): QRMode {\n if (NUMERIC_RE.test(text)) return \"numeric\";\n if (ALPHANUMERIC_RE.test(text)) return \"alphanumeric\";\n return \"byte\";\n}\n\n/** Bits the character-count field takes, which widens with the version. */\nfunction charCountBits(mode: QRMode, version: number): number {\n const tier = version <= 9 ? 0 : version <= 26 ? 1 : 2;\n if (mode === \"numeric\") return [10, 12, 14][tier];\n if (mode === \"alphanumeric\") return [9, 11, 13][tier];\n return [8, 16, 16][tier];\n}\n\n/** A bit sink that appends most-significant-bit first. */\nclass BitBuffer {\n readonly bits: number[] = [];\n\n append(value: number, length: number) {\n for (let i = length - 1; i >= 0; i--) this.bits.push((value >>> i) & 1);\n }\n\n get length(): number {\n return this.bits.length;\n }\n}\n\n/** UTF-8 bytes for the byte mode, so accents and emoji survive the round trip. */\nfunction utf8Bytes(text: string): number[] {\n return Array.from(new TextEncoder().encode(text));\n}\n\n/** Bits the payload itself occupies in a given mode, excluding the headers. */\nfunction payloadBits(text: string, mode: QRMode): number {\n if (mode === \"numeric\") {\n const groups = Math.floor(text.length / 3);\n const rest = text.length % 3;\n return groups * 10 + (rest === 0 ? 0 : rest === 1 ? 4 : 7);\n }\n if (mode === \"alphanumeric\") {\n return Math.floor(text.length / 2) * 11 + (text.length % 2) * 6;\n }\n return utf8Bytes(text).length * 8;\n}\n\n/** Write the payload into the buffer in the chosen mode. */\nfunction writePayload(buffer: BitBuffer, text: string, mode: QRMode) {\n if (mode === \"numeric\") {\n for (let i = 0; i < text.length; i += 3) {\n const chunk = text.slice(i, i + 3);\n buffer.append(Number(chunk), chunk.length * 3 + 1);\n }\n return;\n }\n if (mode === \"alphanumeric\") {\n for (let i = 0; i < text.length; i += 2) {\n const first = ALPHANUMERIC_CHARS.indexOf(text[i]);\n if (i + 1 === text.length) {\n buffer.append(first, 6);\n } else {\n buffer.append(first * 45 + ALPHANUMERIC_CHARS.indexOf(text[i + 1]), 11);\n }\n }\n return;\n }\n for (const byte of utf8Bytes(text)) buffer.append(byte, 8);\n}\n\n/** Character count for the header, which is bytes — not characters — in byte mode. */\nfunction headerCount(text: string, mode: QRMode): number {\n return mode === \"byte\" ? utf8Bytes(text).length : text.length;\n}\n\n/**\n * The smallest version that fits the payload at this level.\n *\n * @throws {QRCapacityError} When even version 40 is too small.\n */\nfunction selectVersion(\n text: string,\n mode: QRMode,\n level: QRErrorCorrection,\n minVersion: number,\n): number {\n const bits = payloadBits(text, mode);\n for (let version = Math.max(MIN_VERSION, minVersion); version <= MAX_VERSION; version++) {\n const capacity = dataCodewords(version, level) * 8;\n if (4 + charCountBits(mode, version) + bits <= capacity) return version;\n }\n throw new QRCapacityError(headerCount(text, mode), level);\n}\n\n// ── Reed-Solomon over GF(256), primitive polynomial 0x11D ───────────────────\n\nconst GF_EXP = new Uint8Array(512);\nconst GF_LOG = new Uint8Array(256);\n\n{\n let x = 1;\n for (let i = 0; i < 255; i++) {\n GF_EXP[i] = x;\n GF_LOG[x] = i;\n x = (x << 1) ^ (x & 0x80 ? 0x11d : 0);\n }\n for (let i = 255; i < 512; i++) GF_EXP[i] = GF_EXP[i - 255];\n}\n\nfunction gfMul(a: number, b: number): number {\n if (a === 0 || b === 0) return 0;\n return GF_EXP[GF_LOG[a] + GF_LOG[b]];\n}\n\n/** The generator polynomial for `degree` error-correction codewords. */\nfunction rsGenerator(degree: number): number[] {\n let poly = [1];\n for (let i = 0; i < degree; i++) {\n const next = new Array<number>(poly.length + 1).fill(0);\n for (let j = 0; j < poly.length; j++) {\n next[j] ^= poly[j];\n next[j + 1] ^= gfMul(poly[j], GF_EXP[i]);\n }\n poly = next;\n }\n return poly;\n}\n\n/**\n * The error-correction codewords for one block.\n *\n * @param data - The block's data codewords.\n * @param degree - How many correction codewords to produce.\n * @returns The remainder of the polynomial division, which is the ECC block.\n */\nexport function reedSolomon(data: readonly number[], degree: number): number[] {\n const generator = rsGenerator(degree);\n const remainder = new Array<number>(degree).fill(0);\n for (const byte of data) {\n const factor = byte ^ remainder[0];\n remainder.shift();\n remainder.push(0);\n for (let i = 0; i < degree; i++) {\n remainder[i] ^= gfMul(generator[i + 1], factor);\n }\n }\n return remainder;\n}\n\n/**\n * Split into blocks, add correction, and interleave into the final codeword\n * stream.\n *\n * Interleaving is what makes the correction useful against a real-world smudge:\n * a contiguous scratch on the printed symbol then damages a few codewords of\n * every block instead of destroying one block completely.\n */\nfunction buildCodewords(\n data: readonly number[],\n version: number,\n level: QRErrorCorrection,\n): number[] {\n const blockCount = ECC_BLOCK_COUNT[level][version - 1];\n const eccPerBlock = ECC_CODEWORDS_PER_BLOCK[level][version - 1];\n const totalCodewords = Math.floor(rawDataModules(version) / 8);\n const shortBlockLength = Math.floor(totalCodewords / blockCount) - eccPerBlock;\n const longBlockCount = totalCodewords % blockCount;\n\n const dataBlocks: number[][] = [];\n const eccBlocks: number[][] = [];\n let offset = 0;\n for (let i = 0; i < blockCount; i++) {\n const length = shortBlockLength + (i >= blockCount - longBlockCount ? 1 : 0);\n const block = data.slice(offset, offset + length);\n offset += length;\n dataBlocks.push(block);\n eccBlocks.push(reedSolomon(block, eccPerBlock));\n }\n\n const result: number[] = [];\n for (let i = 0; i < shortBlockLength + 1; i++) {\n for (const block of dataBlocks) {\n if (i < block.length) result.push(block[i]);\n }\n }\n for (let i = 0; i < eccPerBlock; i++) {\n for (const block of eccBlocks) result.push(block[i]);\n }\n return result;\n}\n\n// ── Matrix construction ─────────────────────────────────────────────────────\n\n/** A grid under construction: modules plus which cells are function patterns. */\ninterface Canvas {\n size: number;\n modules: boolean[][];\n reserved: boolean[][];\n}\n\nfunction createCanvas(version: number): Canvas {\n const size = version * 4 + 17;\n return {\n size,\n modules: Array.from({ length: size }, () => new Array<boolean>(size).fill(false)),\n reserved: Array.from({ length: size }, () => new Array<boolean>(size).fill(false)),\n };\n}\n\nfunction setModule(canvas: Canvas, x: number, y: number, dark: boolean, reserve = true) {\n if (x < 0 || y < 0 || x >= canvas.size || y >= canvas.size) return;\n canvas.modules[y][x] = dark;\n if (reserve) canvas.reserved[y][x] = true;\n}\n\n/** A finder pattern with its separator, anchored at a corner. */\nfunction drawFinder(canvas: Canvas, left: number, top: number) {\n for (let dy = -1; dy <= 7; dy++) {\n for (let dx = -1; dx <= 7; dx++) {\n const distance = Math.max(Math.abs(dx - 3), Math.abs(dy - 3));\n setModule(canvas, left + dx, top + dy, distance !== 2 && distance <= 3);\n }\n }\n}\n\nfunction drawAlignment(canvas: Canvas, cx: number, cy: number) {\n for (let dy = -2; dy <= 2; dy++) {\n for (let dx = -2; dx <= 2; dx++) {\n setModule(canvas, cx + dx, cy + dy, Math.max(Math.abs(dx), Math.abs(dy)) !== 1);\n }\n }\n}\n\nfunction drawFunctionPatterns(canvas: Canvas, version: number) {\n drawFinder(canvas, 0, 0);\n drawFinder(canvas, canvas.size - 7, 0);\n drawFinder(canvas, 0, canvas.size - 7);\n\n for (let i = 8; i < canvas.size - 8; i++) {\n const dark = i % 2 === 0;\n setModule(canvas, i, 6, dark);\n setModule(canvas, 6, i, dark);\n }\n\n const positions = alignmentPatternPositions(version);\n for (const cy of positions) {\n for (const cx of positions) {\n // The three corners already hold finder patterns.\n const atFinder =\n (cx === 6 && cy === 6) ||\n (cx === 6 && cy === canvas.size - 7) ||\n (cx === canvas.size - 7 && cy === 6);\n if (!atFinder) drawAlignment(canvas, cx, cy);\n }\n }\n\n // Reserve the format information, and light the always-dark module.\n for (let i = 0; i < 9; i++) {\n setModule(canvas, i, 8, false);\n setModule(canvas, 8, i, false);\n }\n for (let i = 0; i < 8; i++) {\n setModule(canvas, canvas.size - 1 - i, 8, false);\n setModule(canvas, 8, canvas.size - 1 - i, false);\n }\n setModule(canvas, 8, canvas.size - 8, true);\n\n if (version >= 7) {\n const value = versionInformation(version);\n for (let i = 0; i < 18; i++) {\n const bit = ((value >>> i) & 1) === 1;\n const a = canvas.size - 11 + (i % 3);\n const b = Math.floor(i / 3);\n setModule(canvas, a, b, bit);\n setModule(canvas, b, a, bit);\n }\n }\n}\n\n/** The 18-bit version information block, BCH(18,6) with generator 0x1F25. */\nfunction versionInformation(version: number): number {\n let remainder = version;\n for (let i = 0; i < 12; i++) {\n remainder = (remainder << 1) ^ ((remainder >>> 11) * 0x1f25);\n }\n return (version << 12) | remainder;\n}\n\n/** The 15-bit format information, BCH(15,5) masked with 0x5412. */\nfunction formatInformation(level: QRErrorCorrection, mask: number): number {\n const data = (ECC_FORMAT_BITS[level] << 3) | mask;\n let remainder = data;\n for (let i = 0; i < 10; i++) {\n remainder = (remainder << 1) ^ ((remainder >>> 9) * 0x537);\n }\n return ((data << 10) | remainder) ^ 0x5412;\n}\n\nfunction drawFormatInformation(canvas: Canvas, level: QRErrorCorrection, mask: number) {\n const bits = formatInformation(level, mask);\n\n for (let i = 0; i <= 5; i++) setModule(canvas, 8, i, ((bits >>> i) & 1) === 1);\n setModule(canvas, 8, 7, ((bits >>> 6) & 1) === 1);\n setModule(canvas, 8, 8, ((bits >>> 7) & 1) === 1);\n setModule(canvas, 7, 8, ((bits >>> 8) & 1) === 1);\n for (let i = 9; i < 15; i++) setModule(canvas, 14 - i, 8, ((bits >>> i) & 1) === 1);\n\n for (let i = 0; i < 8; i++) {\n setModule(canvas, canvas.size - 1 - i, 8, ((bits >>> i) & 1) === 1);\n }\n for (let i = 8; i < 15; i++) {\n setModule(canvas, 8, canvas.size - 15 + i, ((bits >>> i) & 1) === 1);\n }\n setModule(canvas, 8, canvas.size - 8, true);\n}\n\n/**\n * Lay the codeword stream into the free modules.\n *\n * The path is a boustrophedon over two-module columns from the bottom-right\n * corner, skipping the vertical timing pattern in column 6 entirely — that\n * column would otherwise shift every subsequent column by one.\n */\nfunction drawCodewords(canvas: Canvas, codewords: readonly number[]) {\n let bitIndex = 0;\n let upward = true;\n\n for (let right = canvas.size - 1; right >= 1; right -= 2) {\n if (right === 6) right = 5;\n for (let step = 0; step < canvas.size; step++) {\n const y = upward ? canvas.size - 1 - step : step;\n for (let column = 0; column < 2; column++) {\n const x = right - column;\n if (canvas.reserved[y][x]) continue;\n const byte = codewords[bitIndex >>> 3];\n // Remainder bits past the stream are light, per the standard.\n canvas.modules[y][x] =\n byte !== undefined && ((byte >>> (7 - (bitIndex & 7))) & 1) === 1;\n bitIndex++;\n }\n }\n upward = !upward;\n }\n}\n\nconst MASK_FUNCTIONS: readonly ((x: number, y: number) => boolean)[] = [\n (x, y) => (x + y) % 2 === 0,\n (_x, y) => y % 2 === 0,\n (x) => x % 3 === 0,\n (x, y) => (x + y) % 3 === 0,\n (x, y) => (Math.floor(y / 2) + Math.floor(x / 3)) % 2 === 0,\n (x, y) => ((x * y) % 2) + ((x * y) % 3) === 0,\n (x, y) => (((x * y) % 2) + ((x * y) % 3)) % 2 === 0,\n (x, y) => (((x + y) % 2) + ((x * y) % 3)) % 2 === 0,\n];\n\nfunction applyMask(canvas: Canvas, mask: number) {\n const fn = MASK_FUNCTIONS[mask];\n for (let y = 0; y < canvas.size; y++) {\n for (let x = 0; x < canvas.size; x++) {\n if (!canvas.reserved[y][x] && fn(x, y)) canvas.modules[y][x] = !canvas.modules[y][x];\n }\n }\n}\n\n/**\n * Score a masked symbol; lower is better.\n *\n * The four penalties push away from patterns a scanner confuses with the finder\n * marks, and from large flat areas where it cannot lock on.\n */\nfunction penalty(canvas: Canvas): number {\n const { size, modules } = canvas;\n let score = 0;\n\n const runPenalty = (run: number) => (run >= 5 ? 3 + (run - 5) : 0);\n\n for (let y = 0; y < size; y++) {\n let run = 1;\n for (let x = 1; x < size; x++) {\n if (modules[y][x] === modules[y][x - 1]) run++;\n else {\n score += runPenalty(run);\n run = 1;\n }\n }\n score += runPenalty(run);\n }\n for (let x = 0; x < size; x++) {\n let run = 1;\n for (let y = 1; y < size; y++) {\n if (modules[y][x] === modules[y - 1][x]) run++;\n else {\n score += runPenalty(run);\n run = 1;\n }\n }\n score += runPenalty(run);\n }\n\n for (let y = 0; y < size - 1; y++) {\n for (let x = 0; x < size - 1; x++) {\n const cell = modules[y][x];\n if (\n cell === modules[y][x + 1] &&\n cell === modules[y + 1][x] &&\n cell === modules[y + 1][x + 1]\n ) {\n score += 3;\n }\n }\n }\n\n // 1:1:3:1:1 with four light modules on either side — the finder's signature.\n const FINDER = [true, false, true, true, true, false, true];\n const matchesAt = (line: readonly boolean[], at: number): boolean => {\n for (let i = 0; i < FINDER.length; i++) {\n if (line[at + i] !== FINDER[i]) return false;\n }\n const before = line.slice(Math.max(0, at - 4), at);\n const after = line.slice(at + 7, at + 11);\n const clear = (part: readonly boolean[]) => part.length === 4 && part.every((m) => !m);\n return clear(before) || clear(after);\n };\n\n for (let i = 0; i < size; i++) {\n const row = modules[i];\n const column = modules.map((line) => line[i]);\n for (let at = 0; at + 7 <= size; at++) {\n if (matchesAt(row, at)) score += 40;\n if (matchesAt(column, at)) score += 40;\n }\n }\n\n let dark = 0;\n for (const row of modules) for (const cell of row) if (cell) dark++;\n const percent = (dark * 100) / (size * size);\n score += Math.floor(Math.abs(percent - 50) / 5) * 10;\n\n return score;\n}\n\nfunction cloneCanvas(canvas: Canvas): Canvas {\n return {\n size: canvas.size,\n modules: canvas.modules.map((row) => [...row]),\n reserved: canvas.reserved.map((row) => [...row]),\n };\n}\n\n/**\n * Encode text into a QR matrix.\n *\n * The whole pipeline of ISO/IEC 18004: pick the densest mode the payload\n * qualifies for, pick the smallest version that fits, build the bit stream, add\n * Reed-Solomon correction, interleave the blocks, lay the modules out, then try\n * all eight masks and keep the one the standard's penalty function likes best.\n *\n * @param text - The payload. Byte mode encodes it as UTF-8.\n * @param options - Level and an optional version floor.\n * @returns The finished matrix, without a quiet zone.\n * @throws {QRCapacityError} When the payload does not fit at that level.\n *\n * @example\n * const qr = encodeQR(\"https://tempest.dev\", { level: \"Q\" });\n * qr.modules[0][0]; // true — top-left of the finder pattern\n */\nexport function encodeQR(text: string, options: QREncodeOptions = {}): QRMatrix {\n const { level = \"M\", minVersion = MIN_VERSION } = options;\n const mode = selectMode(text);\n const version = selectVersion(text, mode, level, minVersion);\n\n const buffer = new BitBuffer();\n buffer.append(MODE_INDICATOR[mode], 4);\n buffer.append(headerCount(text, mode), charCountBits(mode, version));\n writePayload(buffer, text, mode);\n\n const capacity = dataCodewords(version, level) * 8;\n buffer.append(0, Math.min(4, capacity - buffer.length));\n buffer.append(0, (8 - (buffer.length % 8)) % 8);\n\n const data: number[] = [];\n for (let i = 0; i < buffer.length; i += 8) {\n let byte = 0;\n for (let j = 0; j < 8; j++) byte = (byte << 1) | buffer.bits[i + j];\n data.push(byte);\n }\n // The two alternating pad bytes are prescribed, not arbitrary filler.\n for (let pad = 0xec; data.length < capacity / 8; pad ^= 0xec ^ 0x11) data.push(pad);\n\n const codewords = buildCodewords(data, version, level);\n\n const base = createCanvas(version);\n drawFunctionPatterns(base, version);\n drawCodewords(base, codewords);\n\n let best: Canvas | null = null;\n let bestMask = 0;\n let bestScore = Number.POSITIVE_INFINITY;\n for (let mask = 0; mask < 8; mask++) {\n const candidate = cloneCanvas(base);\n applyMask(candidate, mask);\n drawFormatInformation(candidate, level, mask);\n const score = penalty(candidate);\n if (score < bestScore) {\n bestScore = score;\n bestMask = mask;\n best = candidate;\n }\n }\n\n const chosen = best as Canvas;\n return {\n size: chosen.size,\n modules: chosen.modules,\n version,\n level,\n mode,\n mask: bestMask,\n };\n}\n\n/**\n * The matrix as an SVG path, one `M…h…v…h…z` rectangle per dark module.\n *\n * A path beats one `<rect>` per module: a version-10 symbol is 3 481 modules,\n * and that many elements is a real cost to parse and to paint. Coordinates are\n * whole numbers in module space, so the shape stays crisp at any size.\n *\n * @param matrix - An encoded matrix.\n * @param margin - Quiet zone in modules. The standard asks for 4.\n * @returns The `d` attribute, empty when there is nothing dark.\n */\nexport function matrixToPath(matrix: QRMatrix, margin = 4): string {\n const parts: string[] = [];\n for (let y = 0; y < matrix.size; y++) {\n let runStart = -1;\n for (let x = 0; x <= matrix.size; x++) {\n const dark = x < matrix.size && matrix.modules[y][x];\n if (dark && runStart === -1) runStart = x;\n if (!dark && runStart !== -1) {\n // Merge each horizontal run into one rectangle.\n parts.push(\n `M${runStart + margin} ${y + margin}h${x - runStart}v1h-${x - runStart}z`,\n );\n runStart = -1;\n }\n }\n }\n return parts.join(\"\");\n}\n"],"mappings":"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"}
|
|
@@ -50,21 +50,15 @@ function h(e, t) {
|
|
|
50
50
|
return t === "alphanumeric" ? Math.floor(e.length / 2) * 11 + e.length % 2 * 6 : m(e).length * 8;
|
|
51
51
|
}
|
|
52
52
|
function g(t, n, r) {
|
|
53
|
-
if (r === "numeric") {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
t.append(Number(r), r.length * 3 + 1);
|
|
57
|
-
}
|
|
58
|
-
return;
|
|
53
|
+
if (r === "numeric") for (let e = 0; e < n.length; e += 3) {
|
|
54
|
+
let r = n.slice(e, e + 3);
|
|
55
|
+
t.append(Number(r), r.length * 3 + 1);
|
|
59
56
|
}
|
|
60
|
-
if (r === "alphanumeric") {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
r + 1 === n.length ? t.append(i, 6) : t.append(i * 45 + e.indexOf(n[r + 1]), 11);
|
|
64
|
-
}
|
|
65
|
-
return;
|
|
57
|
+
else if (r === "alphanumeric") for (let r = 0; r < n.length; r += 2) {
|
|
58
|
+
let i = e.indexOf(n[r]);
|
|
59
|
+
r + 1 === n.length ? t.append(i, 6) : t.append(i * 45 + e.indexOf(n[r + 1]), 11);
|
|
66
60
|
}
|
|
67
|
-
for (let e of m(n)) t.append(e, 8);
|
|
61
|
+
else for (let e of m(n)) t.append(e, 8);
|
|
68
62
|
}
|
|
69
63
|
function _(e, t) {
|
|
70
64
|
return t === "byte" ? m(e).length : e.length;
|