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":"use-resource.js","names":[],"sources":["../../src/data/use-resource.ts"],"sourcesContent":["import { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport type {\n UseMutationOptions,\n UseMutationResult,\n UseQueryOptions,\n UseQueryResult,\n} from \"@tanstack/react-query\";\n\nimport type { OffsetPage } from \"@/query/pagination\";\n\nimport type { GetListParams } from \"./create-data-provider\";\nimport { useDataProvider } from \"./data-provider-context\";\n\n/** Extra TanStack Query options for {@link useList} (key + fn are provided). */\nexport type UseListOptions<T> = Omit<\n UseQueryOptions<OffsetPage<T>, Error, OffsetPage<T>>,\n \"queryKey\" | \"queryFn\"\n>;\n\n/** Extra TanStack Query options for {@link useOne} (key + fn + enabled are provided). */\nexport type UseOneOptions<T> = Omit<\n UseQueryOptions<T, Error, T>,\n \"queryKey\" | \"queryFn\" | \"enabled\"\n> & { enabled?: boolean };\n\n/**\n * Build the cache key for a resource list query.\n *\n * @param resource - The resource name.\n * @param params - The list params (page/sort/filters).\n * @returns A stable TanStack Query key.\n */\nexport function listQueryKey(resource: string, params?: GetListParams): unknown[] {\n return [\"data\", resource, \"list\", params];\n}\n\n/**\n * Build the cache key for a single-record query.\n *\n * @param resource - The resource name.\n * @param id - The record id.\n * @returns A stable TanStack Query key.\n */\nexport function oneQueryKey(resource: string, id: string | number | null | undefined): unknown[] {\n return [\"data\", resource, \"one\", id];\n}\n\n/**\n * Query a paginated list of a resource through the active {@link useDataProvider}.\n *\n * @param resource - The resource name.\n * @param params - Pagination, sort and filter parameters.\n * @param options - Extra TanStack Query options.\n * @returns The TanStack Query result for the offset page.\n */\nexport function useList<T>(\n resource: string,\n params?: GetListParams,\n options?: UseListOptions<T>,\n): UseQueryResult<OffsetPage<T>, Error> {\n const provider = useDataProvider();\n return useQuery<OffsetPage<T>, Error>({\n queryKey: listQueryKey(resource, params),\n queryFn: () => provider.getList<T>(resource, params),\n ...options,\n });\n}\n\n/**\n * Query a single record by id through the active {@link useDataProvider}.\n *\n * The query is disabled while `id` is `null`/`undefined`.\n *\n * @param resource - The resource name.\n * @param id - The record id.\n * @param options - Extra TanStack Query options.\n * @returns The TanStack Query result for the record.\n */\nexport function useOne<T>(\n resource: string,\n id: string | number | null | undefined,\n options?: UseOneOptions<T>,\n): UseQueryResult<T, Error> {\n const provider = useDataProvider();\n const { enabled, ...rest } = options ?? {};\n return useQuery<T, Error>({\n queryKey: oneQueryKey(resource, id),\n queryFn: () => provider.getOne<T>(resource, id as string | number),\n enabled: id != null && (enabled ?? true),\n ...rest,\n });\n}\n\n/** Options for the create mutation (mutationFn + onSuccess are provided). */\nexport type UseCreateOptions<T> = Omit<UseMutationOptions<T, Error, unknown>, \"mutationFn\">;\n\n/**\n * Create a record and invalidate the resource list cache on success.\n *\n * @param resource - The resource name.\n * @param options - Extra TanStack Mutation options.\n * @returns The mutation; `mutate(data)` creates the record.\n */\nexport function useCreate<T>(\n resource: string,\n options?: UseCreateOptions<T>,\n): UseMutationResult<T, Error, unknown> {\n const provider = useDataProvider();\n const queryClient = useQueryClient();\n return useMutation<T, Error, unknown>({\n mutationFn: (data: unknown) => provider.create<T>(resource, data),\n onSuccess: (...args) => {\n void queryClient.invalidateQueries({ queryKey: [\"data\", resource, \"list\"] });\n options?.onSuccess?.(...args);\n },\n ...options,\n });\n}\n\n/** Variables accepted by the update mutation. */\nexport interface UpdateVariables {\n /** The record id to update. */\n id: string | number;\n /** The update payload. */\n data: unknown;\n}\n\n/** Options for the update mutation (mutationFn + onSuccess are provided). */\nexport type UseUpdateOptions<T> = Omit<UseMutationOptions<T, Error, UpdateVariables>, \"mutationFn\">;\n\n/**\n * Update a record and invalidate both the list and the single-record caches.\n *\n * @param resource - The resource name.\n * @param options - Extra TanStack Mutation options.\n * @returns The mutation; `mutate({ id, data })` updates the record.\n */\nexport function useUpdate<T>(\n resource: string,\n options?: UseUpdateOptions<T>,\n): UseMutationResult<T, Error, UpdateVariables> {\n const provider = useDataProvider();\n const queryClient = useQueryClient();\n return useMutation<T, Error, UpdateVariables>({\n mutationFn: ({ id, data }: UpdateVariables) => provider.update<T>(resource, id, data),\n onSuccess: (...args) => {\n const [, variables] = args;\n void queryClient.invalidateQueries({ queryKey: [\"data\", resource, \"list\"] });\n void queryClient.invalidateQueries({ queryKey: oneQueryKey(resource, variables.id) });\n options?.onSuccess?.(...args);\n },\n ...options,\n });\n}\n\n/** Options for the delete mutation (mutationFn + onSuccess are provided). */\nexport type UseDeleteOptions<T> = Omit<UseMutationOptions<T, Error, string | number>, \"mutationFn\">;\n\n/**\n * Delete a record by id and invalidate the resource list cache on success.\n *\n * @param resource - The resource name.\n * @param options - Extra TanStack Mutation options.\n * @returns The mutation; `mutate(id)` deletes the record.\n */\nexport function useDelete<T>(\n resource: string,\n options?: UseDeleteOptions<T>,\n): UseMutationResult<T, Error, string | number> {\n const provider = useDataProvider();\n const queryClient = useQueryClient();\n return useMutation<T, Error, string | number>({\n mutationFn: (id: string | number) => provider.deleteOne<T>(resource, id),\n onSuccess: (...args) => {\n void queryClient.invalidateQueries({ queryKey: [\"data\", resource, \"list\"] });\n options?.onSuccess?.(...args);\n },\n ...options,\n });\n}\n"],"mappings":";;;AAgCA,
|
|
1
|
+
{"version":3,"file":"use-resource.js","names":["listQueryKey","resource","params","oneQueryKey","id","useList","provider","useDataProvider","useQuery","options","useOne","rest","enabled","useCreate","queryClient","useQueryClient","useMutation","data","args","useUpdate","variables","useDelete"],"sources":["../../src/data/use-resource.ts"],"sourcesContent":["import { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport type {\n UseMutationOptions,\n UseMutationResult,\n UseQueryOptions,\n UseQueryResult,\n} from \"@tanstack/react-query\";\n\nimport type { OffsetPage } from \"@/query/pagination\";\n\nimport type { GetListParams } from \"./create-data-provider\";\nimport { useDataProvider } from \"./data-provider-context\";\n\n/** Extra TanStack Query options for {@link useList} (key + fn are provided). */\nexport type UseListOptions<T> = Omit<\n UseQueryOptions<OffsetPage<T>, Error, OffsetPage<T>>,\n \"queryKey\" | \"queryFn\"\n>;\n\n/** Extra TanStack Query options for {@link useOne} (key + fn + enabled are provided). */\nexport type UseOneOptions<T> = Omit<\n UseQueryOptions<T, Error, T>,\n \"queryKey\" | \"queryFn\" | \"enabled\"\n> & { enabled?: boolean };\n\n/**\n * Build the cache key for a resource list query.\n *\n * @param resource - The resource name.\n * @param params - The list params (page/sort/filters).\n * @returns A stable TanStack Query key.\n */\nexport function listQueryKey(resource: string, params?: GetListParams): unknown[] {\n return [\"data\", resource, \"list\", params];\n}\n\n/**\n * Build the cache key for a single-record query.\n *\n * @param resource - The resource name.\n * @param id - The record id.\n * @returns A stable TanStack Query key.\n */\nexport function oneQueryKey(resource: string, id: string | number | null | undefined): unknown[] {\n return [\"data\", resource, \"one\", id];\n}\n\n/**\n * Query a paginated list of a resource through the active {@link useDataProvider}.\n *\n * @param resource - The resource name.\n * @param params - Pagination, sort and filter parameters.\n * @param options - Extra TanStack Query options.\n * @returns The TanStack Query result for the offset page.\n */\nexport function useList<T>(\n resource: string,\n params?: GetListParams,\n options?: UseListOptions<T>,\n): UseQueryResult<OffsetPage<T>, Error> {\n const provider = useDataProvider();\n return useQuery<OffsetPage<T>, Error>({\n queryKey: listQueryKey(resource, params),\n queryFn: () => provider.getList<T>(resource, params),\n ...options,\n });\n}\n\n/**\n * Query a single record by id through the active {@link useDataProvider}.\n *\n * The query is disabled while `id` is `null`/`undefined`.\n *\n * @param resource - The resource name.\n * @param id - The record id.\n * @param options - Extra TanStack Query options.\n * @returns The TanStack Query result for the record.\n */\nexport function useOne<T>(\n resource: string,\n id: string | number | null | undefined,\n options?: UseOneOptions<T>,\n): UseQueryResult<T, Error> {\n const provider = useDataProvider();\n const { enabled, ...rest } = options ?? {};\n return useQuery<T, Error>({\n queryKey: oneQueryKey(resource, id),\n queryFn: () => provider.getOne<T>(resource, id as string | number),\n enabled: id != null && (enabled ?? true),\n ...rest,\n });\n}\n\n/** Options for the create mutation (mutationFn + onSuccess are provided). */\nexport type UseCreateOptions<T> = Omit<UseMutationOptions<T, Error, unknown>, \"mutationFn\">;\n\n/**\n * Create a record and invalidate the resource list cache on success.\n *\n * @param resource - The resource name.\n * @param options - Extra TanStack Mutation options.\n * @returns The mutation; `mutate(data)` creates the record.\n */\nexport function useCreate<T>(\n resource: string,\n options?: UseCreateOptions<T>,\n): UseMutationResult<T, Error, unknown> {\n const provider = useDataProvider();\n const queryClient = useQueryClient();\n return useMutation<T, Error, unknown>({\n mutationFn: (data: unknown) => provider.create<T>(resource, data),\n onSuccess: (...args) => {\n void queryClient.invalidateQueries({ queryKey: [\"data\", resource, \"list\"] });\n options?.onSuccess?.(...args);\n },\n ...options,\n });\n}\n\n/** Variables accepted by the update mutation. */\nexport interface UpdateVariables {\n /** The record id to update. */\n id: string | number;\n /** The update payload. */\n data: unknown;\n}\n\n/** Options for the update mutation (mutationFn + onSuccess are provided). */\nexport type UseUpdateOptions<T> = Omit<UseMutationOptions<T, Error, UpdateVariables>, \"mutationFn\">;\n\n/**\n * Update a record and invalidate both the list and the single-record caches.\n *\n * @param resource - The resource name.\n * @param options - Extra TanStack Mutation options.\n * @returns The mutation; `mutate({ id, data })` updates the record.\n */\nexport function useUpdate<T>(\n resource: string,\n options?: UseUpdateOptions<T>,\n): UseMutationResult<T, Error, UpdateVariables> {\n const provider = useDataProvider();\n const queryClient = useQueryClient();\n return useMutation<T, Error, UpdateVariables>({\n mutationFn: ({ id, data }: UpdateVariables) => provider.update<T>(resource, id, data),\n onSuccess: (...args) => {\n const [, variables] = args;\n void queryClient.invalidateQueries({ queryKey: [\"data\", resource, \"list\"] });\n void queryClient.invalidateQueries({ queryKey: oneQueryKey(resource, variables.id) });\n options?.onSuccess?.(...args);\n },\n ...options,\n });\n}\n\n/** Options for the delete mutation (mutationFn + onSuccess are provided). */\nexport type UseDeleteOptions<T> = Omit<UseMutationOptions<T, Error, string | number>, \"mutationFn\">;\n\n/**\n * Delete a record by id and invalidate the resource list cache on success.\n *\n * @param resource - The resource name.\n * @param options - Extra TanStack Mutation options.\n * @returns The mutation; `mutate(id)` deletes the record.\n */\nexport function useDelete<T>(\n resource: string,\n options?: UseDeleteOptions<T>,\n): UseMutationResult<T, Error, string | number> {\n const provider = useDataProvider();\n const queryClient = useQueryClient();\n return useMutation<T, Error, string | number>({\n mutationFn: (id: string | number) => provider.deleteOne<T>(resource, id),\n onSuccess: (...args) => {\n void queryClient.invalidateQueries({ queryKey: [\"data\", resource, \"list\"] });\n options?.onSuccess?.(...args);\n },\n ...options,\n });\n}\n"],"mappings":";;;AAgCA,SAAgBA,EAAa,GAAkB,GAAmC;CAC9E,OAAO;EAAC;EAAQC;EAAU;EAAQC;CAAM;AAC5C;AASA,SAAgBC,EAAY,GAAkB,GAAmD;CAC7F,OAAO;EAAC;EAAQF;EAAU;EAAOG;CAAE;AACvC;AAUA,SAAgBC,EACZ,GACA,GACA,GACoC;CACpC,IAAMC,IAAWC,EAAgB;CACjC,OAAOC,EAA+B;EAClC,UAAUR,EAAaC,GAAUC,CAAM;EACvC,eAAeI,EAAS,QAAWL,GAAUC,CAAM;EACnD,GAAGO;CACP,CAAC;AACL;AAYA,SAAgBC,EACZ,GACA,GACA,GACwB;CACxB,IAAMJ,IAAWC,EAAgB,GAC3B,EAAE,YAAS,GAAGI,MAASF,KAAW,CAAC;CACzC,OAAOD,EAAmB;EACtB,UAAUL,EAAYF,GAAUG,CAAE;EAClC,eAAeE,EAAS,OAAUL,GAAUG,CAAqB;EACjE,SAASA,KAAM,SAASQ,KAAW;EACnC,GAAGD;CACP,CAAC;AACL;AAYA,SAAgBE,EACZ,GACA,GACoC;CACpC,IAAMP,IAAWC,EAAgB,GAC3BO,IAAcC,EAAe;CACnC,OAAOC,EAA+B;EAClC,aAAa,MAAkBV,EAAS,OAAUL,GAAUgB,CAAI;EAChE,YAAY,GAAGC,MAAS;GAEpB,AADAJ,EAAiB,kBAAkB,EAAE,UAAU;IAAC;IAAQb;IAAU;GAAM,EAAE,CAAC,GAC3EQ,GAAS,YAAY,GAAGS,CAAI;EAChC;EACA,GAAGT;CACP,CAAC;AACL;AAoBA,SAAgBU,EACZ,GACA,GAC4C;CAC5C,IAAMb,IAAWC,EAAgB,GAC3BO,IAAcC,EAAe;CACnC,OAAOC,EAAuC;EAC1C,aAAa,EAAE,OAAI,cAA4BV,EAAS,OAAUL,GAAUG,GAAIa,CAAI;EACpF,YAAY,GAAGC,MAAS;GACpB,IAAM,GAAGE,KAAaF;GAGtB,AAFAJ,EAAiB,kBAAkB,EAAE,UAAU;IAAC;IAAQb;IAAU;GAAM,EAAE,CAAC,GAC3Ea,EAAiB,kBAAkB,EAAE,UAAUX,EAAYF,GAAUmB,EAAU,EAAE,EAAE,CAAC,GACpFX,GAAS,YAAY,GAAGS,CAAI;EAChC;EACA,GAAGT;CACP,CAAC;AACL;AAYA,SAAgBY,EACZ,GACA,GAC4C;CAC5C,IAAMf,IAAWC,EAAgB,GAC3BO,IAAcC,EAAe;CACnC,OAAOC,EAAuC;EAC1C,aAAa,MAAwBV,EAAS,UAAaL,GAAUG,CAAE;EACvE,YAAY,GAAGc,MAAS;GAEpB,AADAJ,EAAiB,kBAAkB,EAAE,UAAU;IAAC;IAAQb;IAAU;GAAM,EAAE,CAAC,GAC3EQ,GAAS,YAAY,GAAGS,CAAI;EAChC;EACA,GAAGT;CACP,CAAC;AACL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextEditor.cjs","names":[],"sources":["../../src/editor/RichTextEditor.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, function-lines — the body builds the tiptap editor,\n * its toolbar state and the change plumbing: every toolbar button reads\n * `editor.isActive`, so the toolbar cannot be lifted out without passing the editor\n * instance back down.\n */\nimport { useEffect } from \"react\";\nimport { EditorContent, useEditor, useEditorState } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport {\n Bold,\n Code,\n Heading1,\n Heading2,\n Italic,\n List,\n ListOrdered,\n Quote,\n Redo2,\n Strikethrough,\n Undo2,\n} from \"lucide-react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./RichTextEditor.module.css\";\n\nexport interface RichTextEditorProps {\n /** Current editor content as an HTML string (controlled). */\n value: string;\n /** Called with the updated HTML whenever the document changes. */\n onChange: (html: string) => void;\n /** Placeholder text shown when the editor is empty. */\n placeholder?: string;\n /** Whether the content is editable. Defaults to `true`. */\n editable?: boolean;\n /** Whether to render the formatting toolbar. Defaults to `true`. */\n toolbar?: boolean;\n /** Extra class names applied to the wrapper element. */\n className?: string;\n}\n\n/**\n * RichTextEditor — a controlled WYSIWYG editor built on tiptap v3.\n *\n * Renders an optional formatting toolbar (bold, italic, strike, code, headings,\n * lists, blockquote, undo/redo) above a ProseMirror-backed editable area. The\n * document is controlled via the `value` (HTML) / `onChange` pair: external\n * changes to `value` are synced into the editor without re-emitting updates.\n *\n * The toolbar's pressed states and the undo/redo `disabled` flags come from\n * `useEditorState`, which subscribes to exactly those values. `useEditor` does\n * not re-render on transactions (the tiptap v3 default), so reading `isActive`\n * and `can()` directly in the render body left every button stale — toggling\n * bold with a collapsed cursor arms the mark without changing the document, so no\n * update event ever brought React back to recompute the state. Subscribing\n * re-renders only when one of the tracked values actually flips, which is also\n * cheaper than re-rendering on every keystroke.\n *\n * Two effects keep the instance aligned with the props: one pushes an external\n * `value` change into the document with `emitUpdate: false` (so syncing never\n * re-emits `onChange`), the other mirrors the `editable` flag.\n */\nexport function RichTextEditor({\n value,\n onChange,\n placeholder,\n editable = true,\n toolbar = true,\n className,\n}: RichTextEditorProps) {\n const editor = useEditor({\n extensions: [StarterKit],\n content: value,\n editable,\n onUpdate: ({ editor: instance }) => onChange(instance.getHTML()),\n });\n\n useEffect(() => {\n if (!editor) return;\n if (value !== editor.getHTML()) {\n editor.commands.setContent(value, { emitUpdate: false });\n }\n }, [editor, value]);\n\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(editable);\n }, [editor, editable]);\n\n const toolbarState = useEditorState({\n editor,\n selector: ({ editor: instance }) => ({\n bold: instance.isActive(\"bold\"),\n italic: instance.isActive(\"italic\"),\n strike: instance.isActive(\"strike\"),\n code: instance.isActive(\"code\"),\n heading1: instance.isActive(\"heading\", { level: 1 }),\n heading2: instance.isActive(\"heading\", { level: 2 }),\n bulletList: instance.isActive(\"bulletList\"),\n orderedList: instance.isActive(\"orderedList\"),\n blockquote: instance.isActive(\"blockquote\"),\n canUndo: instance.can().chain().focus().undo().run(),\n canRedo: instance.can().chain().focus().redo().run(),\n }),\n });\n\n if (!editor || !toolbarState) return null;\n\n const canUndo = toolbarState.canUndo;\n const canRedo = toolbarState.canRedo;\n\n return (\n <div className={cn(styles.wrapper, className)}>\n {toolbar && (\n <div className={styles.toolbar} role=\"toolbar\" aria-label=\"Formatação de texto\">\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.bold && styles.active)}\n aria-label=\"Negrito\"\n aria-pressed={toolbarState.bold}\n onClick={() => editor.chain().focus().toggleBold().run()}\n >\n <Bold size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.italic && styles.active)}\n aria-label=\"Itálico\"\n aria-pressed={toolbarState.italic}\n onClick={() => editor.chain().focus().toggleItalic().run()}\n >\n <Italic size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.strike && styles.active)}\n aria-label=\"Tachado\"\n aria-pressed={toolbarState.strike}\n onClick={() => editor.chain().focus().toggleStrike().run()}\n >\n <Strikethrough size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.code && styles.active)}\n aria-label=\"Código\"\n aria-pressed={toolbarState.code}\n onClick={() => editor.chain().focus().toggleCode().run()}\n >\n <Code size={16} aria-hidden />\n </button>\n <span className={styles.separator} aria-hidden />\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.heading1 && styles.active)}\n aria-label=\"Título 1\"\n aria-pressed={toolbarState.heading1}\n onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()}\n >\n <Heading1 size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.heading2 && styles.active)}\n aria-label=\"Título 2\"\n aria-pressed={toolbarState.heading2}\n onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}\n >\n <Heading2 size={16} aria-hidden />\n </button>\n <span className={styles.separator} aria-hidden />\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.bulletList && styles.active)}\n aria-label=\"Lista com marcadores\"\n aria-pressed={toolbarState.bulletList}\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n >\n <List size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.orderedList && styles.active)}\n aria-label=\"Lista numerada\"\n aria-pressed={toolbarState.orderedList}\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n >\n <ListOrdered size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.blockquote && styles.active)}\n aria-label=\"Citação\"\n aria-pressed={toolbarState.blockquote}\n onClick={() => editor.chain().focus().toggleBlockquote().run()}\n >\n <Quote size={16} aria-hidden />\n </button>\n <span className={styles.separator} aria-hidden />\n <button\n type=\"button\"\n className={styles.button}\n aria-label=\"Desfazer\"\n disabled={!canUndo}\n onClick={() => editor.chain().focus().undo().run()}\n >\n <Undo2 size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={styles.button}\n aria-label=\"Refazer\"\n disabled={!canRedo}\n onClick={() => editor.chain().focus().redo().run()}\n >\n <Redo2 size={16} aria-hidden />\n </button>\n </div>\n )}\n <EditorContent\n editor={editor}\n className={styles.content}\n data-placeholder={placeholder}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RichTextEditor.cjs","names":["useEditor","StarterKit","useEditorState","cn","styles","Bold","Italic","Strikethrough","Code","Heading1","Heading2","List","ListOrdered","Quote","Undo2","Redo2","EditorContent","require_runtime","require_cn","require_RichTextEditor_module","react","react_jsx_runtime","lucide_react","_tiptap_react","_tiptap_starter_kit","RichTextEditor","editor","value","instance","onChange","editable","toolbarState","canUndo","canRedo","className","toolbar","placeholder"],"sources":["../../src/editor/RichTextEditor.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, function-lines — the body builds the tiptap editor,\n * its toolbar state and the change plumbing: every toolbar button reads\n * `editor.isActive`, so the toolbar cannot be lifted out without passing the editor\n * instance back down.\n */\nimport { useEffect } from \"react\";\nimport { EditorContent, useEditor, useEditorState } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport {\n Bold,\n Code,\n Heading1,\n Heading2,\n Italic,\n List,\n ListOrdered,\n Quote,\n Redo2,\n Strikethrough,\n Undo2,\n} from \"lucide-react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./RichTextEditor.module.css\";\n\nexport interface RichTextEditorProps {\n /** Current editor content as an HTML string (controlled). */\n value: string;\n /** Called with the updated HTML whenever the document changes. */\n onChange: (html: string) => void;\n /** Placeholder text shown when the editor is empty. */\n placeholder?: string;\n /** Whether the content is editable. Defaults to `true`. */\n editable?: boolean;\n /** Whether to render the formatting toolbar. Defaults to `true`. */\n toolbar?: boolean;\n /** Extra class names applied to the wrapper element. */\n className?: string;\n}\n\n/**\n * RichTextEditor — a controlled WYSIWYG editor built on tiptap v3.\n *\n * Renders an optional formatting toolbar (bold, italic, strike, code, headings,\n * lists, blockquote, undo/redo) above a ProseMirror-backed editable area. The\n * document is controlled via the `value` (HTML) / `onChange` pair: external\n * changes to `value` are synced into the editor without re-emitting updates.\n *\n * The toolbar's pressed states and the undo/redo `disabled` flags come from\n * `useEditorState`, which subscribes to exactly those values. `useEditor` does\n * not re-render on transactions (the tiptap v3 default), so reading `isActive`\n * and `can()` directly in the render body left every button stale — toggling\n * bold with a collapsed cursor arms the mark without changing the document, so no\n * update event ever brought React back to recompute the state. Subscribing\n * re-renders only when one of the tracked values actually flips, which is also\n * cheaper than re-rendering on every keystroke.\n *\n * Two effects keep the instance aligned with the props: one pushes an external\n * `value` change into the document with `emitUpdate: false` (so syncing never\n * re-emits `onChange`), the other mirrors the `editable` flag.\n */\nexport function RichTextEditor({\n value,\n onChange,\n placeholder,\n editable = true,\n toolbar = true,\n className,\n}: RichTextEditorProps) {\n const editor = useEditor({\n extensions: [StarterKit],\n content: value,\n editable,\n onUpdate: ({ editor: instance }) => onChange(instance.getHTML()),\n });\n\n useEffect(() => {\n if (!editor) return;\n if (value !== editor.getHTML()) {\n editor.commands.setContent(value, { emitUpdate: false });\n }\n }, [editor, value]);\n\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(editable);\n }, [editor, editable]);\n\n const toolbarState = useEditorState({\n editor,\n selector: ({ editor: instance }) => ({\n bold: instance.isActive(\"bold\"),\n italic: instance.isActive(\"italic\"),\n strike: instance.isActive(\"strike\"),\n code: instance.isActive(\"code\"),\n heading1: instance.isActive(\"heading\", { level: 1 }),\n heading2: instance.isActive(\"heading\", { level: 2 }),\n bulletList: instance.isActive(\"bulletList\"),\n orderedList: instance.isActive(\"orderedList\"),\n blockquote: instance.isActive(\"blockquote\"),\n canUndo: instance.can().chain().focus().undo().run(),\n canRedo: instance.can().chain().focus().redo().run(),\n }),\n });\n\n if (!editor || !toolbarState) return null;\n\n const canUndo = toolbarState.canUndo;\n const canRedo = toolbarState.canRedo;\n\n return (\n <div className={cn(styles.wrapper, className)}>\n {toolbar && (\n <div className={styles.toolbar} role=\"toolbar\" aria-label=\"Formatação de texto\">\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.bold && styles.active)}\n aria-label=\"Negrito\"\n aria-pressed={toolbarState.bold}\n onClick={() => editor.chain().focus().toggleBold().run()}\n >\n <Bold size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.italic && styles.active)}\n aria-label=\"Itálico\"\n aria-pressed={toolbarState.italic}\n onClick={() => editor.chain().focus().toggleItalic().run()}\n >\n <Italic size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.strike && styles.active)}\n aria-label=\"Tachado\"\n aria-pressed={toolbarState.strike}\n onClick={() => editor.chain().focus().toggleStrike().run()}\n >\n <Strikethrough size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.code && styles.active)}\n aria-label=\"Código\"\n aria-pressed={toolbarState.code}\n onClick={() => editor.chain().focus().toggleCode().run()}\n >\n <Code size={16} aria-hidden />\n </button>\n <span className={styles.separator} aria-hidden />\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.heading1 && styles.active)}\n aria-label=\"Título 1\"\n aria-pressed={toolbarState.heading1}\n onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()}\n >\n <Heading1 size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.heading2 && styles.active)}\n aria-label=\"Título 2\"\n aria-pressed={toolbarState.heading2}\n onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}\n >\n <Heading2 size={16} aria-hidden />\n </button>\n <span className={styles.separator} aria-hidden />\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.bulletList && styles.active)}\n aria-label=\"Lista com marcadores\"\n aria-pressed={toolbarState.bulletList}\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n >\n <List size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.orderedList && styles.active)}\n aria-label=\"Lista numerada\"\n aria-pressed={toolbarState.orderedList}\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n >\n <ListOrdered size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.blockquote && styles.active)}\n aria-label=\"Citação\"\n aria-pressed={toolbarState.blockquote}\n onClick={() => editor.chain().focus().toggleBlockquote().run()}\n >\n <Quote size={16} aria-hidden />\n </button>\n <span className={styles.separator} aria-hidden />\n <button\n type=\"button\"\n className={styles.button}\n aria-label=\"Desfazer\"\n disabled={!canUndo}\n onClick={() => editor.chain().focus().undo().run()}\n >\n <Undo2 size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={styles.button}\n aria-label=\"Refazer\"\n disabled={!canRedo}\n onClick={() => editor.chain().focus().redo().run()}\n >\n <Redo2 size={16} aria-hidden />\n </button>\n </div>\n )}\n <EditorContent\n editor={editor}\n className={styles.content}\n data-placeholder={placeholder}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextEditor.js","names":[],"sources":["../../src/editor/RichTextEditor.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, function-lines — the body builds the tiptap editor,\n * its toolbar state and the change plumbing: every toolbar button reads\n * `editor.isActive`, so the toolbar cannot be lifted out without passing the editor\n * instance back down.\n */\nimport { useEffect } from \"react\";\nimport { EditorContent, useEditor, useEditorState } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport {\n Bold,\n Code,\n Heading1,\n Heading2,\n Italic,\n List,\n ListOrdered,\n Quote,\n Redo2,\n Strikethrough,\n Undo2,\n} from \"lucide-react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./RichTextEditor.module.css\";\n\nexport interface RichTextEditorProps {\n /** Current editor content as an HTML string (controlled). */\n value: string;\n /** Called with the updated HTML whenever the document changes. */\n onChange: (html: string) => void;\n /** Placeholder text shown when the editor is empty. */\n placeholder?: string;\n /** Whether the content is editable. Defaults to `true`. */\n editable?: boolean;\n /** Whether to render the formatting toolbar. Defaults to `true`. */\n toolbar?: boolean;\n /** Extra class names applied to the wrapper element. */\n className?: string;\n}\n\n/**\n * RichTextEditor — a controlled WYSIWYG editor built on tiptap v3.\n *\n * Renders an optional formatting toolbar (bold, italic, strike, code, headings,\n * lists, blockquote, undo/redo) above a ProseMirror-backed editable area. The\n * document is controlled via the `value` (HTML) / `onChange` pair: external\n * changes to `value` are synced into the editor without re-emitting updates.\n *\n * The toolbar's pressed states and the undo/redo `disabled` flags come from\n * `useEditorState`, which subscribes to exactly those values. `useEditor` does\n * not re-render on transactions (the tiptap v3 default), so reading `isActive`\n * and `can()` directly in the render body left every button stale — toggling\n * bold with a collapsed cursor arms the mark without changing the document, so no\n * update event ever brought React back to recompute the state. Subscribing\n * re-renders only when one of the tracked values actually flips, which is also\n * cheaper than re-rendering on every keystroke.\n *\n * Two effects keep the instance aligned with the props: one pushes an external\n * `value` change into the document with `emitUpdate: false` (so syncing never\n * re-emits `onChange`), the other mirrors the `editable` flag.\n */\nexport function RichTextEditor({\n value,\n onChange,\n placeholder,\n editable = true,\n toolbar = true,\n className,\n}: RichTextEditorProps) {\n const editor = useEditor({\n extensions: [StarterKit],\n content: value,\n editable,\n onUpdate: ({ editor: instance }) => onChange(instance.getHTML()),\n });\n\n useEffect(() => {\n if (!editor) return;\n if (value !== editor.getHTML()) {\n editor.commands.setContent(value, { emitUpdate: false });\n }\n }, [editor, value]);\n\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(editable);\n }, [editor, editable]);\n\n const toolbarState = useEditorState({\n editor,\n selector: ({ editor: instance }) => ({\n bold: instance.isActive(\"bold\"),\n italic: instance.isActive(\"italic\"),\n strike: instance.isActive(\"strike\"),\n code: instance.isActive(\"code\"),\n heading1: instance.isActive(\"heading\", { level: 1 }),\n heading2: instance.isActive(\"heading\", { level: 2 }),\n bulletList: instance.isActive(\"bulletList\"),\n orderedList: instance.isActive(\"orderedList\"),\n blockquote: instance.isActive(\"blockquote\"),\n canUndo: instance.can().chain().focus().undo().run(),\n canRedo: instance.can().chain().focus().redo().run(),\n }),\n });\n\n if (!editor || !toolbarState) return null;\n\n const canUndo = toolbarState.canUndo;\n const canRedo = toolbarState.canRedo;\n\n return (\n <div className={cn(styles.wrapper, className)}>\n {toolbar && (\n <div className={styles.toolbar} role=\"toolbar\" aria-label=\"Formatação de texto\">\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.bold && styles.active)}\n aria-label=\"Negrito\"\n aria-pressed={toolbarState.bold}\n onClick={() => editor.chain().focus().toggleBold().run()}\n >\n <Bold size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.italic && styles.active)}\n aria-label=\"Itálico\"\n aria-pressed={toolbarState.italic}\n onClick={() => editor.chain().focus().toggleItalic().run()}\n >\n <Italic size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.strike && styles.active)}\n aria-label=\"Tachado\"\n aria-pressed={toolbarState.strike}\n onClick={() => editor.chain().focus().toggleStrike().run()}\n >\n <Strikethrough size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.code && styles.active)}\n aria-label=\"Código\"\n aria-pressed={toolbarState.code}\n onClick={() => editor.chain().focus().toggleCode().run()}\n >\n <Code size={16} aria-hidden />\n </button>\n <span className={styles.separator} aria-hidden />\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.heading1 && styles.active)}\n aria-label=\"Título 1\"\n aria-pressed={toolbarState.heading1}\n onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()}\n >\n <Heading1 size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.heading2 && styles.active)}\n aria-label=\"Título 2\"\n aria-pressed={toolbarState.heading2}\n onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}\n >\n <Heading2 size={16} aria-hidden />\n </button>\n <span className={styles.separator} aria-hidden />\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.bulletList && styles.active)}\n aria-label=\"Lista com marcadores\"\n aria-pressed={toolbarState.bulletList}\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n >\n <List size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.orderedList && styles.active)}\n aria-label=\"Lista numerada\"\n aria-pressed={toolbarState.orderedList}\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n >\n <ListOrdered size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.blockquote && styles.active)}\n aria-label=\"Citação\"\n aria-pressed={toolbarState.blockquote}\n onClick={() => editor.chain().focus().toggleBlockquote().run()}\n >\n <Quote size={16} aria-hidden />\n </button>\n <span className={styles.separator} aria-hidden />\n <button\n type=\"button\"\n className={styles.button}\n aria-label=\"Desfazer\"\n disabled={!canUndo}\n onClick={() => editor.chain().focus().undo().run()}\n >\n <Undo2 size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={styles.button}\n aria-label=\"Refazer\"\n disabled={!canRedo}\n onClick={() => editor.chain().focus().redo().run()}\n >\n <Redo2 size={16} aria-hidden />\n </button>\n </div>\n )}\n <EditorContent\n editor={editor}\n className={styles.content}\n data-placeholder={placeholder}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RichTextEditor.js","names":["styles","RichTextEditor_module_default","StarterKit","RichTextEditor","editor","useEditor","value","instance","onChange","useEffect","editable","toolbarState","useEditorState","canUndo","canRedo","cn","className","toolbar","Bold","Italic","Strikethrough","Code","Heading1","Heading2","List","ListOrdered","Quote","Undo2","Redo2","EditorContent","placeholder"],"sources":["../../src/editor/RichTextEditor.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, function-lines — the body builds the tiptap editor,\n * its toolbar state and the change plumbing: every toolbar button reads\n * `editor.isActive`, so the toolbar cannot be lifted out without passing the editor\n * instance back down.\n */\nimport { useEffect } from \"react\";\nimport { EditorContent, useEditor, useEditorState } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport {\n Bold,\n Code,\n Heading1,\n Heading2,\n Italic,\n List,\n ListOrdered,\n Quote,\n Redo2,\n Strikethrough,\n Undo2,\n} from \"lucide-react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./RichTextEditor.module.css\";\n\nexport interface RichTextEditorProps {\n /** Current editor content as an HTML string (controlled). */\n value: string;\n /** Called with the updated HTML whenever the document changes. */\n onChange: (html: string) => void;\n /** Placeholder text shown when the editor is empty. */\n placeholder?: string;\n /** Whether the content is editable. Defaults to `true`. */\n editable?: boolean;\n /** Whether to render the formatting toolbar. Defaults to `true`. */\n toolbar?: boolean;\n /** Extra class names applied to the wrapper element. */\n className?: string;\n}\n\n/**\n * RichTextEditor — a controlled WYSIWYG editor built on tiptap v3.\n *\n * Renders an optional formatting toolbar (bold, italic, strike, code, headings,\n * lists, blockquote, undo/redo) above a ProseMirror-backed editable area. The\n * document is controlled via the `value` (HTML) / `onChange` pair: external\n * changes to `value` are synced into the editor without re-emitting updates.\n *\n * The toolbar's pressed states and the undo/redo `disabled` flags come from\n * `useEditorState`, which subscribes to exactly those values. `useEditor` does\n * not re-render on transactions (the tiptap v3 default), so reading `isActive`\n * and `can()` directly in the render body left every button stale — toggling\n * bold with a collapsed cursor arms the mark without changing the document, so no\n * update event ever brought React back to recompute the state. Subscribing\n * re-renders only when one of the tracked values actually flips, which is also\n * cheaper than re-rendering on every keystroke.\n *\n * Two effects keep the instance aligned with the props: one pushes an external\n * `value` change into the document with `emitUpdate: false` (so syncing never\n * re-emits `onChange`), the other mirrors the `editable` flag.\n */\nexport function RichTextEditor({\n value,\n onChange,\n placeholder,\n editable = true,\n toolbar = true,\n className,\n}: RichTextEditorProps) {\n const editor = useEditor({\n extensions: [StarterKit],\n content: value,\n editable,\n onUpdate: ({ editor: instance }) => onChange(instance.getHTML()),\n });\n\n useEffect(() => {\n if (!editor) return;\n if (value !== editor.getHTML()) {\n editor.commands.setContent(value, { emitUpdate: false });\n }\n }, [editor, value]);\n\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(editable);\n }, [editor, editable]);\n\n const toolbarState = useEditorState({\n editor,\n selector: ({ editor: instance }) => ({\n bold: instance.isActive(\"bold\"),\n italic: instance.isActive(\"italic\"),\n strike: instance.isActive(\"strike\"),\n code: instance.isActive(\"code\"),\n heading1: instance.isActive(\"heading\", { level: 1 }),\n heading2: instance.isActive(\"heading\", { level: 2 }),\n bulletList: instance.isActive(\"bulletList\"),\n orderedList: instance.isActive(\"orderedList\"),\n blockquote: instance.isActive(\"blockquote\"),\n canUndo: instance.can().chain().focus().undo().run(),\n canRedo: instance.can().chain().focus().redo().run(),\n }),\n });\n\n if (!editor || !toolbarState) return null;\n\n const canUndo = toolbarState.canUndo;\n const canRedo = toolbarState.canRedo;\n\n return (\n <div className={cn(styles.wrapper, className)}>\n {toolbar && (\n <div className={styles.toolbar} role=\"toolbar\" aria-label=\"Formatação de texto\">\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.bold && styles.active)}\n aria-label=\"Negrito\"\n aria-pressed={toolbarState.bold}\n onClick={() => editor.chain().focus().toggleBold().run()}\n >\n <Bold size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.italic && styles.active)}\n aria-label=\"Itálico\"\n aria-pressed={toolbarState.italic}\n onClick={() => editor.chain().focus().toggleItalic().run()}\n >\n <Italic size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.strike && styles.active)}\n aria-label=\"Tachado\"\n aria-pressed={toolbarState.strike}\n onClick={() => editor.chain().focus().toggleStrike().run()}\n >\n <Strikethrough size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.code && styles.active)}\n aria-label=\"Código\"\n aria-pressed={toolbarState.code}\n onClick={() => editor.chain().focus().toggleCode().run()}\n >\n <Code size={16} aria-hidden />\n </button>\n <span className={styles.separator} aria-hidden />\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.heading1 && styles.active)}\n aria-label=\"Título 1\"\n aria-pressed={toolbarState.heading1}\n onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()}\n >\n <Heading1 size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.heading2 && styles.active)}\n aria-label=\"Título 2\"\n aria-pressed={toolbarState.heading2}\n onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}\n >\n <Heading2 size={16} aria-hidden />\n </button>\n <span className={styles.separator} aria-hidden />\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.bulletList && styles.active)}\n aria-label=\"Lista com marcadores\"\n aria-pressed={toolbarState.bulletList}\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n >\n <List size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.orderedList && styles.active)}\n aria-label=\"Lista numerada\"\n aria-pressed={toolbarState.orderedList}\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n >\n <ListOrdered size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={cn(styles.button, toolbarState.blockquote && styles.active)}\n aria-label=\"Citação\"\n aria-pressed={toolbarState.blockquote}\n onClick={() => editor.chain().focus().toggleBlockquote().run()}\n >\n <Quote size={16} aria-hidden />\n </button>\n <span className={styles.separator} aria-hidden />\n <button\n type=\"button\"\n className={styles.button}\n aria-label=\"Desfazer\"\n disabled={!canUndo}\n onClick={() => editor.chain().focus().undo().run()}\n >\n <Undo2 size={16} aria-hidden />\n </button>\n <button\n type=\"button\"\n className={styles.button}\n aria-label=\"Refazer\"\n disabled={!canRedo}\n onClick={() => editor.chain().focus().redo().run()}\n >\n <Redo2 size={16} aria-hidden />\n </button>\n </div>\n )}\n <EditorContent\n editor={editor}\n className={styles.content}\n data-placeholder={placeholder}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextEditor.module.cjs","names":[],"sources":["../../src/editor/RichTextEditor.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n font-family: var(--tempest-font-sans);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-control-radius);\n background-color: var(--tempest-bg);\n overflow: hidden;\n}\n\n.toolbar {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--tempest-space-1);\n padding: var(--tempest-space-2);\n border-bottom: 1px solid var(--tempest-border);\n background-color: var(--tempest-surface);\n}\n\n.button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-sm);\n background-color: transparent;\n color: var(--tempest-text-muted);\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .button:hover:not(:disabled) {\n background-color: var(--tempest-bg);\n color: var(--tempest-text);\n }\n}\n\n.button:focus-visible {\n outline: none;\n border-color: var(--tempest-primary);\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.button:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n.button.active {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-active);\n border-color: var(--tempest-primary-soft);\n}\n\n.separator {\n width: 1px;\n align-self: stretch;\n margin: 0 var(--tempest-space-1);\n background-color: var(--tempest-border);\n}\n\n.content {\n display: flex;\n flex-direction: column;\n}\n\n.content :global(.ProseMirror) {\n min-height: 160px;\n padding: var(--tempest-space-3);\n color: var(--tempest-text);\n font-size: var(--tempest-text-base);\n line-height: var(--tempest-leading-normal);\n outline: none;\n}\n\n.content :global(.ProseMirror:focus) {\n box-shadow: inset 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.content :global(.ProseMirror p) {\n margin: 0 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror h1) {\n font-size: var(--tempest-text-2xl);\n font-weight: var(--tempest-weight-bold);\n margin: var(--tempest-space-3) 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror h2) {\n font-size: var(--tempest-text-xl);\n font-weight: var(--tempest-weight-semibold);\n margin: var(--tempest-space-3) 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror ul),\n.content :global(.ProseMirror ol) {\n padding-left: var(--tempest-space-5);\n margin: 0 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror blockquote) {\n border-left: 3px solid var(--tempest-border);\n padding-left: var(--tempest-space-3);\n color: var(--tempest-text-muted);\n margin: 0 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror code) {\n font-family: var(--tempest-font-mono);\n font-size: var(--tempest-text-sm);\n background-color: var(--tempest-surface);\n padding: 0 var(--tempest-space-1);\n border-radius: var(--tempest-radius-sm);\n}\n\n.content :global(.ProseMirror p.is-editor-empty:first-child::before) {\n content: attr(data-placeholder);\n color: var(--tempest-text-subtle);\n float: left;\n height: 0;\n pointer-events: none;\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"RichTextEditor.module.cjs","names":["wrapper","toolbar","button","active","separator","content","RichTextEditor_module_default"],"sources":["../../src/editor/RichTextEditor.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n font-family: var(--tempest-font-sans);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-control-radius);\n background-color: var(--tempest-bg);\n overflow: hidden;\n}\n\n.toolbar {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--tempest-space-1);\n padding: var(--tempest-space-2);\n border-bottom: 1px solid var(--tempest-border);\n background-color: var(--tempest-surface);\n}\n\n.button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-sm);\n background-color: transparent;\n color: var(--tempest-text-muted);\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .button:hover:not(:disabled) {\n background-color: var(--tempest-bg);\n color: var(--tempest-text);\n }\n}\n\n.button:focus-visible {\n outline: none;\n border-color: var(--tempest-primary);\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.button:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n.button.active {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-active);\n border-color: var(--tempest-primary-soft);\n}\n\n.separator {\n width: 1px;\n align-self: stretch;\n margin: 0 var(--tempest-space-1);\n background-color: var(--tempest-border);\n}\n\n.content {\n display: flex;\n flex-direction: column;\n}\n\n.content :global(.ProseMirror) {\n min-height: 160px;\n padding: var(--tempest-space-3);\n color: var(--tempest-text);\n font-size: var(--tempest-text-base);\n line-height: var(--tempest-leading-normal);\n outline: none;\n}\n\n.content :global(.ProseMirror:focus) {\n box-shadow: inset 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.content :global(.ProseMirror p) {\n margin: 0 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror h1) {\n font-size: var(--tempest-text-2xl);\n font-weight: var(--tempest-weight-bold);\n margin: var(--tempest-space-3) 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror h2) {\n font-size: var(--tempest-text-xl);\n font-weight: var(--tempest-weight-semibold);\n margin: var(--tempest-space-3) 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror ul),\n.content :global(.ProseMirror ol) {\n padding-left: var(--tempest-space-5);\n margin: 0 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror blockquote) {\n border-left: 3px solid var(--tempest-border);\n padding-left: var(--tempest-space-3);\n color: var(--tempest-text-muted);\n margin: 0 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror code) {\n font-family: var(--tempest-font-mono);\n font-size: var(--tempest-text-sm);\n background-color: var(--tempest-surface);\n padding: 0 var(--tempest-space-1);\n border-radius: var(--tempest-radius-sm);\n}\n\n.content :global(.ProseMirror p.is-editor-empty:first-child::before) {\n content: attr(data-placeholder);\n color: var(--tempest-text-subtle);\n float: left;\n height: 0;\n pointer-events: none;\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextEditor.module.js","names":[],"sources":["../../src/editor/RichTextEditor.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n font-family: var(--tempest-font-sans);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-control-radius);\n background-color: var(--tempest-bg);\n overflow: hidden;\n}\n\n.toolbar {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--tempest-space-1);\n padding: var(--tempest-space-2);\n border-bottom: 1px solid var(--tempest-border);\n background-color: var(--tempest-surface);\n}\n\n.button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-sm);\n background-color: transparent;\n color: var(--tempest-text-muted);\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .button:hover:not(:disabled) {\n background-color: var(--tempest-bg);\n color: var(--tempest-text);\n }\n}\n\n.button:focus-visible {\n outline: none;\n border-color: var(--tempest-primary);\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.button:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n.button.active {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-active);\n border-color: var(--tempest-primary-soft);\n}\n\n.separator {\n width: 1px;\n align-self: stretch;\n margin: 0 var(--tempest-space-1);\n background-color: var(--tempest-border);\n}\n\n.content {\n display: flex;\n flex-direction: column;\n}\n\n.content :global(.ProseMirror) {\n min-height: 160px;\n padding: var(--tempest-space-3);\n color: var(--tempest-text);\n font-size: var(--tempest-text-base);\n line-height: var(--tempest-leading-normal);\n outline: none;\n}\n\n.content :global(.ProseMirror:focus) {\n box-shadow: inset 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.content :global(.ProseMirror p) {\n margin: 0 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror h1) {\n font-size: var(--tempest-text-2xl);\n font-weight: var(--tempest-weight-bold);\n margin: var(--tempest-space-3) 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror h2) {\n font-size: var(--tempest-text-xl);\n font-weight: var(--tempest-weight-semibold);\n margin: var(--tempest-space-3) 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror ul),\n.content :global(.ProseMirror ol) {\n padding-left: var(--tempest-space-5);\n margin: 0 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror blockquote) {\n border-left: 3px solid var(--tempest-border);\n padding-left: var(--tempest-space-3);\n color: var(--tempest-text-muted);\n margin: 0 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror code) {\n font-family: var(--tempest-font-mono);\n font-size: var(--tempest-text-sm);\n background-color: var(--tempest-surface);\n padding: 0 var(--tempest-space-1);\n border-radius: var(--tempest-radius-sm);\n}\n\n.content :global(.ProseMirror p.is-editor-empty:first-child::before) {\n content: attr(data-placeholder);\n color: var(--tempest-text-subtle);\n float: left;\n height: 0;\n pointer-events: none;\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"RichTextEditor.module.js","names":["wrapper","toolbar","button","active","separator","content","RichTextEditor_module_default"],"sources":["../../src/editor/RichTextEditor.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n font-family: var(--tempest-font-sans);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-control-radius);\n background-color: var(--tempest-bg);\n overflow: hidden;\n}\n\n.toolbar {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--tempest-space-1);\n padding: var(--tempest-space-2);\n border-bottom: 1px solid var(--tempest-border);\n background-color: var(--tempest-surface);\n}\n\n.button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-sm);\n background-color: transparent;\n color: var(--tempest-text-muted);\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .button:hover:not(:disabled) {\n background-color: var(--tempest-bg);\n color: var(--tempest-text);\n }\n}\n\n.button:focus-visible {\n outline: none;\n border-color: var(--tempest-primary);\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.button:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n.button.active {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-active);\n border-color: var(--tempest-primary-soft);\n}\n\n.separator {\n width: 1px;\n align-self: stretch;\n margin: 0 var(--tempest-space-1);\n background-color: var(--tempest-border);\n}\n\n.content {\n display: flex;\n flex-direction: column;\n}\n\n.content :global(.ProseMirror) {\n min-height: 160px;\n padding: var(--tempest-space-3);\n color: var(--tempest-text);\n font-size: var(--tempest-text-base);\n line-height: var(--tempest-leading-normal);\n outline: none;\n}\n\n.content :global(.ProseMirror:focus) {\n box-shadow: inset 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.content :global(.ProseMirror p) {\n margin: 0 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror h1) {\n font-size: var(--tempest-text-2xl);\n font-weight: var(--tempest-weight-bold);\n margin: var(--tempest-space-3) 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror h2) {\n font-size: var(--tempest-text-xl);\n font-weight: var(--tempest-weight-semibold);\n margin: var(--tempest-space-3) 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror ul),\n.content :global(.ProseMirror ol) {\n padding-left: var(--tempest-space-5);\n margin: 0 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror blockquote) {\n border-left: 3px solid var(--tempest-border);\n padding-left: var(--tempest-space-3);\n color: var(--tempest-text-muted);\n margin: 0 0 var(--tempest-space-2);\n}\n\n.content :global(.ProseMirror code) {\n font-family: var(--tempest-font-mono);\n font-size: var(--tempest-text-sm);\n background-color: var(--tempest-surface);\n padding: 0 var(--tempest-space-1);\n border-radius: var(--tempest-radius-sm);\n}\n\n.content :global(.ProseMirror p.is-editor-empty:first-child::before) {\n content: attr(data-placeholder);\n color: var(--tempest-text-subtle);\n float: left;\n height: 0;\n pointer-events: none;\n}\n"],"mappings":";"}
|
package/dist/editor.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { e as RichTextEditor };
|
|
1
|
+
export { RichTextEditor } from "./editor/RichTextEditor.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorBoundary.cjs","names":[],"sources":["../../src/error-boundary/ErrorBoundary.tsx"],"sourcesContent":["import { Component } from \"react\";\nimport type { ErrorInfo, ReactNode } from \"react\";\n\nexport interface ErrorBoundaryRenderProps {\n error: Error;\n reset: () => void;\n}\n\nexport interface ErrorBoundaryProps {\n children: ReactNode;\n /**\n * Element shown when a descendant throws. Receives the captured error and\n * a `reset` callback that clears the boundary state.\n */\n fallback: ReactNode | ((props: ErrorBoundaryRenderProps) => ReactNode);\n /** Forwarded to your error tracker (Sentry, Datadog, console, etc.). */\n onError?: (error: Error, info: ErrorInfo) => void;\n /**\n * When any value in this array changes, the boundary automatically resets.\n * Useful for clearing the error after a navigation.\n */\n resetKeys?: readonly unknown[];\n}\n\ninterface ErrorBoundaryState {\n error: Error | null;\n}\n\nfunction keysChanged(a: readonly unknown[] = [], b: readonly unknown[] = []): boolean {\n if (a.length !== b.length) return true;\n for (let i = 0; i < a.length; i++) {\n if (!Object.is(a[i], b[i])) return true;\n }\n return false;\n}\n\n/**\n * Class-based React error boundary with a render-prop or static fallback.\n * Auto-resets when any value in `resetKeys` changes.\n *\n * @example\n * <ErrorBoundary\n * resetKeys={[location.pathname]}\n * onError={(err) => reportError(err)}\n * fallback={({ error, reset }) => (\n * <ErrorState description={error.message} onRetry={reset} />\n * )}\n * >\n * <App />\n * </ErrorBoundary>\n */\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n override state: ErrorBoundaryState = { error: null };\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error };\n }\n\n override componentDidCatch(error: Error, info: ErrorInfo): void {\n this.props.onError?.(error, info);\n }\n\n override componentDidUpdate(previousProps: ErrorBoundaryProps): void {\n if (this.state.error && keysChanged(previousProps.resetKeys, this.props.resetKeys)) {\n this.reset();\n }\n }\n\n reset = (): void => {\n this.setState({ error: null });\n };\n\n override render(): ReactNode {\n const { error } = this.state;\n if (!error) return this.props.children;\n\n const { fallback } = this.props;\n if (typeof fallback === \"function\") {\n return fallback({ error, reset: this.reset });\n }\n return fallback;\n }\n}\n"],"mappings":"uBA4BA,
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.cjs","names":["Component","react","keysChanged","a","b","i","ErrorBoundary","error","info","previousProps","fallback"],"sources":["../../src/error-boundary/ErrorBoundary.tsx"],"sourcesContent":["import { Component } from \"react\";\nimport type { ErrorInfo, ReactNode } from \"react\";\n\nexport interface ErrorBoundaryRenderProps {\n error: Error;\n reset: () => void;\n}\n\nexport interface ErrorBoundaryProps {\n children: ReactNode;\n /**\n * Element shown when a descendant throws. Receives the captured error and\n * a `reset` callback that clears the boundary state.\n */\n fallback: ReactNode | ((props: ErrorBoundaryRenderProps) => ReactNode);\n /** Forwarded to your error tracker (Sentry, Datadog, console, etc.). */\n onError?: (error: Error, info: ErrorInfo) => void;\n /**\n * When any value in this array changes, the boundary automatically resets.\n * Useful for clearing the error after a navigation.\n */\n resetKeys?: readonly unknown[];\n}\n\ninterface ErrorBoundaryState {\n error: Error | null;\n}\n\nfunction keysChanged(a: readonly unknown[] = [], b: readonly unknown[] = []): boolean {\n if (a.length !== b.length) return true;\n for (let i = 0; i < a.length; i++) {\n if (!Object.is(a[i], b[i])) return true;\n }\n return false;\n}\n\n/**\n * Class-based React error boundary with a render-prop or static fallback.\n * Auto-resets when any value in `resetKeys` changes.\n *\n * @example\n * <ErrorBoundary\n * resetKeys={[location.pathname]}\n * onError={(err) => reportError(err)}\n * fallback={({ error, reset }) => (\n * <ErrorState description={error.message} onRetry={reset} />\n * )}\n * >\n * <App />\n * </ErrorBoundary>\n */\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n override state: ErrorBoundaryState = { error: null };\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error };\n }\n\n override componentDidCatch(error: Error, info: ErrorInfo): void {\n this.props.onError?.(error, info);\n }\n\n override componentDidUpdate(previousProps: ErrorBoundaryProps): void {\n if (this.state.error && keysChanged(previousProps.resetKeys, this.props.resetKeys)) {\n this.reset();\n }\n }\n\n reset = (): void => {\n this.setState({ error: null });\n };\n\n override render(): ReactNode {\n const { error } = this.state;\n if (!error) return this.props.children;\n\n const { fallback } = this.props;\n if (typeof fallback === \"function\") {\n return fallback({ error, reset: this.reset });\n }\n return fallback;\n }\n}\n"],"mappings":"A,uBA4BA,SAASE,EAAY,EAAwB,CAAC,EAAG,EAAwB,CAAC,EAAY,CAClF,GAAIC,EAAE,SAAWC,EAAE,OAAQ,MAAO,GAClC,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAE,OAAQ,IAC1B,GAAI,CAAC,OAAO,GAAGA,EAAEE,GAAID,EAAEC,EAAE,EAAG,MAAO,GAEvC,MAAO,EACX,CAiBA,IAAaC,EAAb,cAAmCN,EAAAA,SAAkD,CACjF,MAAqC,CAAE,MAAO,IAAK,EAEnD,OAAO,yBAAyB,EAAkC,CAC9D,MAAO,CAAE,OAAM,CACnB,CAEA,kBAA2B,EAAc,EAAuB,CAC5D,KAAK,MAAM,UAAUO,EAAOC,CAAI,CACpC,CAEA,mBAA4B,EAAyC,CAC7D,KAAK,MAAM,OAASN,EAAYO,EAAc,UAAW,KAAK,MAAM,SAAS,GAC7E,KAAK,MAAM,CAEnB,CAEA,UAAoB,CAChB,KAAK,SAAS,CAAE,MAAO,IAAK,CAAC,CACjC,EAEA,QAA6B,CACzB,GAAM,CAAE,SAAU,KAAK,MACvB,GAAI,CAACF,EAAO,OAAO,KAAK,MAAM,SAE9B,GAAM,CAAE,YAAa,KAAK,MAI1B,OAHI,OAAOG,GAAa,WACbA,EAAS,CAAE,QAAO,MAAO,KAAK,KAAM,CAAC,EAEzCA,CACX,CACJ,E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorBoundary.js","names":[],"sources":["../../src/error-boundary/ErrorBoundary.tsx"],"sourcesContent":["import { Component } from \"react\";\nimport type { ErrorInfo, ReactNode } from \"react\";\n\nexport interface ErrorBoundaryRenderProps {\n error: Error;\n reset: () => void;\n}\n\nexport interface ErrorBoundaryProps {\n children: ReactNode;\n /**\n * Element shown when a descendant throws. Receives the captured error and\n * a `reset` callback that clears the boundary state.\n */\n fallback: ReactNode | ((props: ErrorBoundaryRenderProps) => ReactNode);\n /** Forwarded to your error tracker (Sentry, Datadog, console, etc.). */\n onError?: (error: Error, info: ErrorInfo) => void;\n /**\n * When any value in this array changes, the boundary automatically resets.\n * Useful for clearing the error after a navigation.\n */\n resetKeys?: readonly unknown[];\n}\n\ninterface ErrorBoundaryState {\n error: Error | null;\n}\n\nfunction keysChanged(a: readonly unknown[] = [], b: readonly unknown[] = []): boolean {\n if (a.length !== b.length) return true;\n for (let i = 0; i < a.length; i++) {\n if (!Object.is(a[i], b[i])) return true;\n }\n return false;\n}\n\n/**\n * Class-based React error boundary with a render-prop or static fallback.\n * Auto-resets when any value in `resetKeys` changes.\n *\n * @example\n * <ErrorBoundary\n * resetKeys={[location.pathname]}\n * onError={(err) => reportError(err)}\n * fallback={({ error, reset }) => (\n * <ErrorState description={error.message} onRetry={reset} />\n * )}\n * >\n * <App />\n * </ErrorBoundary>\n */\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n override state: ErrorBoundaryState = { error: null };\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error };\n }\n\n override componentDidCatch(error: Error, info: ErrorInfo): void {\n this.props.onError?.(error, info);\n }\n\n override componentDidUpdate(previousProps: ErrorBoundaryProps): void {\n if (this.state.error && keysChanged(previousProps.resetKeys, this.props.resetKeys)) {\n this.reset();\n }\n }\n\n reset = (): void => {\n this.setState({ error: null });\n };\n\n override render(): ReactNode {\n const { error } = this.state;\n if (!error) return this.props.children;\n\n const { fallback } = this.props;\n if (typeof fallback === \"function\") {\n return fallback({ error, reset: this.reset });\n }\n return fallback;\n }\n}\n"],"mappings":";;AA4BA,
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.js","names":["keysChanged","a","b","i","ErrorBoundary","Component","error","info","previousProps","fallback"],"sources":["../../src/error-boundary/ErrorBoundary.tsx"],"sourcesContent":["import { Component } from \"react\";\nimport type { ErrorInfo, ReactNode } from \"react\";\n\nexport interface ErrorBoundaryRenderProps {\n error: Error;\n reset: () => void;\n}\n\nexport interface ErrorBoundaryProps {\n children: ReactNode;\n /**\n * Element shown when a descendant throws. Receives the captured error and\n * a `reset` callback that clears the boundary state.\n */\n fallback: ReactNode | ((props: ErrorBoundaryRenderProps) => ReactNode);\n /** Forwarded to your error tracker (Sentry, Datadog, console, etc.). */\n onError?: (error: Error, info: ErrorInfo) => void;\n /**\n * When any value in this array changes, the boundary automatically resets.\n * Useful for clearing the error after a navigation.\n */\n resetKeys?: readonly unknown[];\n}\n\ninterface ErrorBoundaryState {\n error: Error | null;\n}\n\nfunction keysChanged(a: readonly unknown[] = [], b: readonly unknown[] = []): boolean {\n if (a.length !== b.length) return true;\n for (let i = 0; i < a.length; i++) {\n if (!Object.is(a[i], b[i])) return true;\n }\n return false;\n}\n\n/**\n * Class-based React error boundary with a render-prop or static fallback.\n * Auto-resets when any value in `resetKeys` changes.\n *\n * @example\n * <ErrorBoundary\n * resetKeys={[location.pathname]}\n * onError={(err) => reportError(err)}\n * fallback={({ error, reset }) => (\n * <ErrorState description={error.message} onRetry={reset} />\n * )}\n * >\n * <App />\n * </ErrorBoundary>\n */\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n override state: ErrorBoundaryState = { error: null };\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error };\n }\n\n override componentDidCatch(error: Error, info: ErrorInfo): void {\n this.props.onError?.(error, info);\n }\n\n override componentDidUpdate(previousProps: ErrorBoundaryProps): void {\n if (this.state.error && keysChanged(previousProps.resetKeys, this.props.resetKeys)) {\n this.reset();\n }\n }\n\n reset = (): void => {\n this.setState({ error: null });\n };\n\n override render(): ReactNode {\n const { error } = this.state;\n if (!error) return this.props.children;\n\n const { fallback } = this.props;\n if (typeof fallback === \"function\") {\n return fallback({ error, reset: this.reset });\n }\n return fallback;\n }\n}\n"],"mappings":";;AA4BA,SAASA,EAAY,IAAwB,CAAC,GAAG,IAAwB,CAAC,GAAY;CAClF,IAAIC,EAAE,WAAWC,EAAE,QAAQ,OAAO;CAClC,KAAK,IAAIC,IAAI,GAAGA,IAAIF,EAAE,QAAQ,KAC1B,IAAI,CAAC,OAAO,GAAGA,EAAEE,IAAID,EAAEC,EAAE,GAAG,OAAO;CAEvC,OAAO;AACX;AAiBA,IAAaC,IAAb,cAAmCC,EAAkD;CACjF,QAAqC,EAAE,OAAO,KAAK;CAEnD,OAAO,yBAAyB,GAAkC;EAC9D,OAAO,EAAE,SAAM;CACnB;CAEA,kBAA2B,GAAc,GAAuB;EAC5D,KAAK,MAAM,UAAUC,GAAOC,CAAI;CACpC;CAEA,mBAA4B,GAAyC;EACjE,AAAI,KAAK,MAAM,SAASP,EAAYQ,EAAc,WAAW,KAAK,MAAM,SAAS,KAC7E,KAAK,MAAM;CAEnB;CAEA,cAAoB;EAChB,KAAK,SAAS,EAAE,OAAO,KAAK,CAAC;CACjC;CAEA,SAA6B;EACzB,IAAM,EAAE,aAAU,KAAK;EACvB,IAAI,CAACF,GAAO,OAAO,KAAK,MAAM;EAE9B,IAAM,EAAE,gBAAa,KAAK;EAI1B,OAHI,OAAOG,KAAa,aACbA,EAAS;GAAE;GAAO,OAAO,KAAK;EAAM,CAAC,IAEzCA;CACX;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-error-handler.cjs","names":[],"sources":["../../src/error-boundary/use-error-handler.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\n/**\n * Hook that propagates errors to the nearest {@link ErrorBoundary}.\n *\n * React error boundaries only catch errors thrown during render. Async errors\n * (failed mutations, websocket failures, etc.) need to be re-thrown in a\n * render pass — that is what `throwError` does.\n *\n * @example\n * const throwError = useErrorHandler();\n * useEffect(() => {\n * stream.on(\"error\", throwError);\n * }, []);\n */\nexport function useErrorHandler(): (error: unknown) => void {\n const [, setState] = useState<Error | null>(null);\n return useCallback((error: unknown) => {\n setState(() => {\n throw error instanceof Error ? error : new Error(String(error));\n });\n }, []);\n}\n"],"mappings":"uBAeA,
|
|
1
|
+
{"version":3,"file":"use-error-handler.cjs","names":["useState","useCallback","react","useErrorHandler","setState","error"],"sources":["../../src/error-boundary/use-error-handler.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\n/**\n * Hook that propagates errors to the nearest {@link ErrorBoundary}.\n *\n * React error boundaries only catch errors thrown during render. Async errors\n * (failed mutations, websocket failures, etc.) need to be re-thrown in a\n * render pass — that is what `throwError` does.\n *\n * @example\n * const throwError = useErrorHandler();\n * useEffect(() => {\n * stream.on(\"error\", throwError);\n * }, []);\n */\nexport function useErrorHandler(): (error: unknown) => void {\n const [, setState] = useState<Error | null>(null);\n return useCallback((error: unknown) => {\n setState(() => {\n throw error instanceof Error ? error : new Error(String(error));\n });\n }, []);\n}\n"],"mappings":"A,uBAeA,SAAgBG,GAA4C,CACxD,GAAM,EAAGC,IAAA,EAAYJ,EAAAA,SAAAA,CAAuB,IAAI,EAChD,OAAA,EAAOC,EAAAA,YAAAA,CAAa,GAAmB,CACnCG,MAAe,CACX,MAAMC,aAAiB,MAAQA,EAAY,MAAM,OAAOA,CAAK,CAAC,CAClE,CAAC,CACL,EAAG,CAAC,CAAC,CACT,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-error-handler.js","names":[],"sources":["../../src/error-boundary/use-error-handler.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\n/**\n * Hook that propagates errors to the nearest {@link ErrorBoundary}.\n *\n * React error boundaries only catch errors thrown during render. Async errors\n * (failed mutations, websocket failures, etc.) need to be re-thrown in a\n * render pass — that is what `throwError` does.\n *\n * @example\n * const throwError = useErrorHandler();\n * useEffect(() => {\n * stream.on(\"error\", throwError);\n * }, []);\n */\nexport function useErrorHandler(): (error: unknown) => void {\n const [, setState] = useState<Error | null>(null);\n return useCallback((error: unknown) => {\n setState(() => {\n throw error instanceof Error ? error : new Error(String(error));\n });\n }, []);\n}\n"],"mappings":";;AAeA,
|
|
1
|
+
{"version":3,"file":"use-error-handler.js","names":["useErrorHandler","setState","useState","useCallback","error"],"sources":["../../src/error-boundary/use-error-handler.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\n/**\n * Hook that propagates errors to the nearest {@link ErrorBoundary}.\n *\n * React error boundaries only catch errors thrown during render. Async errors\n * (failed mutations, websocket failures, etc.) need to be re-thrown in a\n * render pass — that is what `throwError` does.\n *\n * @example\n * const throwError = useErrorHandler();\n * useEffect(() => {\n * stream.on(\"error\", throwError);\n * }, []);\n */\nexport function useErrorHandler(): (error: unknown) => void {\n const [, setState] = useState<Error | null>(null);\n return useCallback((error: unknown) => {\n setState(() => {\n throw error instanceof Error ? error : new Error(String(error));\n });\n }, []);\n}\n"],"mappings":";;AAeA,SAAgBA,IAA4C;CACxD,IAAM,GAAGC,KAAYC,EAAuB,IAAI;CAChD,OAAOC,GAAa,MAAmB;EACnC,QAAe;GACX,MAAMC,aAAiB,QAAQA,IAAY,MAAM,OAAOA,CAAK,CAAC;EAClE,CAAC;CACL,GAAG,CAAC,CAAC;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureFlagsProvider.cjs","names":[],"sources":["../../src/feature-flags/FeatureFlagsProvider.tsx"],"sourcesContent":["import { createContext, useContext, useEffect, useMemo, useSyncExternalStore } from \"react\";\nimport type { ReactNode } from \"react\";\nimport type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\nconst FeatureFlagsContext = createContext<FeatureFlagsAdapter | null>(null);\n\nexport interface FeatureFlagsProviderProps {\n adapter: FeatureFlagsAdapter;\n children: ReactNode;\n}\n\n/** Inject a feature flags adapter into the tree. */\nexport function FeatureFlagsProvider({ adapter, children }: FeatureFlagsProviderProps) {\n const value = useMemo(() => adapter, [adapter]);\n useEffect(() => undefined, [value]);\n return <FeatureFlagsContext.Provider value={value}>{children}</FeatureFlagsContext.Provider>;\n}\n\nfunction useAdapter(): FeatureFlagsAdapter {\n const ctx = useContext(FeatureFlagsContext);\n if (!ctx) throw new Error(\"useFeatureFlag requires <FeatureFlagsProvider>\");\n return ctx;\n}\n\n/**\n * Read a boolean flag and re-render when the adapter fires `onChange`.\n *\n * @example\n * const showNewFeed = useFeatureFlag(\"new-feed\", false);\n */\nexport function useFeatureFlag(key: string, defaultValue = false): boolean {\n const adapter = useAdapter();\n const subscribe = (listener: () => void): (() => void) =>\n adapter.onChange ? adapter.onChange(listener) : () => undefined;\n const get = (): boolean => adapter.isEnabled(key, defaultValue);\n return useSyncExternalStore(subscribe, get, get);\n}\n\n/**\n * Read a typed flag value (string / number / boolean / null) and re-render\n * on change.\n */\nexport function useFlagValue<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n const adapter = useAdapter();\n const subscribe = (listener: () => void): (() => void) =>\n adapter.onChange ? adapter.onChange(listener) : () => undefined;\n const get = (): T => adapter.get<T>(key, defaultValue);\n return useSyncExternalStore(subscribe, get, get);\n}\n"],"mappings":"sDAIA,
|
|
1
|
+
{"version":3,"file":"FeatureFlagsProvider.cjs","names":["createContext","useMemo","useContext","useSyncExternalStore","react","react_jsx_runtime","FeatureFlagsContext","FeatureFlagsProvider","value","adapter","useAdapter","ctx","useFeatureFlag","subscribe","listener","get","key","defaultValue","useFlagValue"],"sources":["../../src/feature-flags/FeatureFlagsProvider.tsx"],"sourcesContent":["import { createContext, useContext, useEffect, useMemo, useSyncExternalStore } from \"react\";\nimport type { ReactNode } from \"react\";\nimport type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\nconst FeatureFlagsContext = createContext<FeatureFlagsAdapter | null>(null);\n\nexport interface FeatureFlagsProviderProps {\n adapter: FeatureFlagsAdapter;\n children: ReactNode;\n}\n\n/** Inject a feature flags adapter into the tree. */\nexport function FeatureFlagsProvider({ adapter, children }: FeatureFlagsProviderProps) {\n const value = useMemo(() => adapter, [adapter]);\n useEffect(() => undefined, [value]);\n return <FeatureFlagsContext.Provider value={value}>{children}</FeatureFlagsContext.Provider>;\n}\n\nfunction useAdapter(): FeatureFlagsAdapter {\n const ctx = useContext(FeatureFlagsContext);\n if (!ctx) throw new Error(\"useFeatureFlag requires <FeatureFlagsProvider>\");\n return ctx;\n}\n\n/**\n * Read a boolean flag and re-render when the adapter fires `onChange`.\n *\n * @example\n * const showNewFeed = useFeatureFlag(\"new-feed\", false);\n */\nexport function useFeatureFlag(key: string, defaultValue = false): boolean {\n const adapter = useAdapter();\n const subscribe = (listener: () => void): (() => void) =>\n adapter.onChange ? adapter.onChange(listener) : () => undefined;\n const get = (): boolean => adapter.isEnabled(key, defaultValue);\n return useSyncExternalStore(subscribe, get, get);\n}\n\n/**\n * Read a typed flag value (string / number / boolean / null) and re-render\n * on change.\n */\nexport function useFlagValue<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n const adapter = useAdapter();\n const subscribe = (listener: () => void): (() => void) =>\n adapter.onChange ? adapter.onChange(listener) : () => undefined;\n const get = (): T => adapter.get<T>(key, defaultValue);\n return useSyncExternalStore(subscribe, get, get);\n}\n"],"mappings":"A,sDAIA,IAAMM,GAAA,EAAsBN,EAAAA,cAAAA,CAA0C,IAAI,EAQ1E,SAAgBO,EAAqB,CAAE,UAAS,YAAuC,CACnF,IAAMC,GAAA,EAAQP,EAAAA,QAAAA,KAAcQ,EAAS,CAACA,CAAO,CAAC,EAE9C,OADA,EAAAL,EAAA,UAAA,KAAgB,IAAA,GAAW,CAACI,CAAK,CAAC,GAC3B,EAAAH,EAAA,IAAA,CAACC,EAAoB,SAArB,CAAqC,QAAQ,UAAuC,CAAA,CAC/F,CAEA,SAASI,GAAkC,CACvC,IAAMC,GAAA,EAAMT,EAAAA,WAAAA,CAAWI,CAAmB,EAC1C,GAAI,CAACK,EAAK,MAAU,MAAM,gDAAgD,EAC1E,OAAOA,CACX,CAQA,SAAgBC,EAAe,EAAa,EAAe,GAAgB,CACvE,IAAMH,EAAUC,EAAW,EACrBG,EAAa,GACfJ,EAAQ,SAAWA,EAAQ,SAASK,CAAQ,MAAU,IAAA,GACpDC,MAAqBN,EAAQ,UAAUO,EAAKC,CAAY,EAC9D,OAAA,EAAOd,EAAAA,qBAAAA,CAAqBU,EAAWE,EAAKA,CAAG,CACnD,CAMA,SAAgBG,EAA8C,EAAa,EAAqB,CAC5F,IAAMT,EAAUC,EAAW,EACrBG,EAAa,GACfJ,EAAQ,SAAWA,EAAQ,SAASK,CAAQ,MAAU,IAAA,GACpDC,MAAeN,EAAQ,IAAOO,EAAKC,CAAY,EACrD,OAAA,EAAOd,EAAAA,qBAAAA,CAAqBU,EAAWE,EAAKA,CAAG,CACnD,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureFlagsProvider.js","names":[],"sources":["../../src/feature-flags/FeatureFlagsProvider.tsx"],"sourcesContent":["import { createContext, useContext, useEffect, useMemo, useSyncExternalStore } from \"react\";\nimport type { ReactNode } from \"react\";\nimport type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\nconst FeatureFlagsContext = createContext<FeatureFlagsAdapter | null>(null);\n\nexport interface FeatureFlagsProviderProps {\n adapter: FeatureFlagsAdapter;\n children: ReactNode;\n}\n\n/** Inject a feature flags adapter into the tree. */\nexport function FeatureFlagsProvider({ adapter, children }: FeatureFlagsProviderProps) {\n const value = useMemo(() => adapter, [adapter]);\n useEffect(() => undefined, [value]);\n return <FeatureFlagsContext.Provider value={value}>{children}</FeatureFlagsContext.Provider>;\n}\n\nfunction useAdapter(): FeatureFlagsAdapter {\n const ctx = useContext(FeatureFlagsContext);\n if (!ctx) throw new Error(\"useFeatureFlag requires <FeatureFlagsProvider>\");\n return ctx;\n}\n\n/**\n * Read a boolean flag and re-render when the adapter fires `onChange`.\n *\n * @example\n * const showNewFeed = useFeatureFlag(\"new-feed\", false);\n */\nexport function useFeatureFlag(key: string, defaultValue = false): boolean {\n const adapter = useAdapter();\n const subscribe = (listener: () => void): (() => void) =>\n adapter.onChange ? adapter.onChange(listener) : () => undefined;\n const get = (): boolean => adapter.isEnabled(key, defaultValue);\n return useSyncExternalStore(subscribe, get, get);\n}\n\n/**\n * Read a typed flag value (string / number / boolean / null) and re-render\n * on change.\n */\nexport function useFlagValue<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n const adapter = useAdapter();\n const subscribe = (listener: () => void): (() => void) =>\n adapter.onChange ? adapter.onChange(listener) : () => undefined;\n const get = (): T => adapter.get<T>(key, defaultValue);\n return useSyncExternalStore(subscribe, get, get);\n}\n"],"mappings":";;;AAIA,
|
|
1
|
+
{"version":3,"file":"FeatureFlagsProvider.js","names":["FeatureFlagsContext","createContext","FeatureFlagsProvider","value","useMemo","adapter","useEffect","useAdapter","ctx","useContext","useFeatureFlag","subscribe","listener","get","key","defaultValue","useSyncExternalStore","useFlagValue"],"sources":["../../src/feature-flags/FeatureFlagsProvider.tsx"],"sourcesContent":["import { createContext, useContext, useEffect, useMemo, useSyncExternalStore } from \"react\";\nimport type { ReactNode } from \"react\";\nimport type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\nconst FeatureFlagsContext = createContext<FeatureFlagsAdapter | null>(null);\n\nexport interface FeatureFlagsProviderProps {\n adapter: FeatureFlagsAdapter;\n children: ReactNode;\n}\n\n/** Inject a feature flags adapter into the tree. */\nexport function FeatureFlagsProvider({ adapter, children }: FeatureFlagsProviderProps) {\n const value = useMemo(() => adapter, [adapter]);\n useEffect(() => undefined, [value]);\n return <FeatureFlagsContext.Provider value={value}>{children}</FeatureFlagsContext.Provider>;\n}\n\nfunction useAdapter(): FeatureFlagsAdapter {\n const ctx = useContext(FeatureFlagsContext);\n if (!ctx) throw new Error(\"useFeatureFlag requires <FeatureFlagsProvider>\");\n return ctx;\n}\n\n/**\n * Read a boolean flag and re-render when the adapter fires `onChange`.\n *\n * @example\n * const showNewFeed = useFeatureFlag(\"new-feed\", false);\n */\nexport function useFeatureFlag(key: string, defaultValue = false): boolean {\n const adapter = useAdapter();\n const subscribe = (listener: () => void): (() => void) =>\n adapter.onChange ? adapter.onChange(listener) : () => undefined;\n const get = (): boolean => adapter.isEnabled(key, defaultValue);\n return useSyncExternalStore(subscribe, get, get);\n}\n\n/**\n * Read a typed flag value (string / number / boolean / null) and re-render\n * on change.\n */\nexport function useFlagValue<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n const adapter = useAdapter();\n const subscribe = (listener: () => void): (() => void) =>\n adapter.onChange ? adapter.onChange(listener) : () => undefined;\n const get = (): T => adapter.get<T>(key, defaultValue);\n return useSyncExternalStore(subscribe, get, get);\n}\n"],"mappings":";;;AAIA,IAAMA,IAAsBC,EAA0C,IAAI;AAQ1E,SAAgBC,EAAqB,EAAE,YAAS,eAAuC;CACnF,IAAMC,IAAQC,QAAcC,GAAS,CAACA,CAAO,CAAC;CAE9C,OADAC,QAAgB,KAAA,GAAW,CAACH,CAAK,CAAC,GAC3B,kBAACH,EAAoB,UAArB;EAAqC;EAAQ;CAAuC,CAAA;AAC/F;AAEA,SAASO,IAAkC;CACvC,IAAMC,IAAMC,EAAWT,CAAmB;CAC1C,IAAI,CAACQ,GAAK,MAAU,MAAM,gDAAgD;CAC1E,OAAOA;AACX;AAQA,SAAgBE,EAAe,GAAa,IAAe,IAAgB;CACvE,IAAML,IAAUE,EAAW,GACrBI,KAAa,MACfN,EAAQ,WAAWA,EAAQ,SAASO,CAAQ,UAAU,KAAA,GACpDC,UAAqBR,EAAQ,UAAUS,GAAKC,CAAY;CAC9D,OAAOC,EAAqBL,GAAWE,GAAKA,CAAG;AACnD;AAMA,SAAgBI,EAA8C,GAAa,GAAqB;CAC5F,IAAMZ,IAAUE,EAAW,GACrBI,KAAa,MACfN,EAAQ,WAAWA,EAAQ,SAASO,CAAQ,UAAU,KAAA,GACpDC,UAAeR,EAAQ,IAAOS,GAAKC,CAAY;CACrD,OAAOC,EAAqBL,GAAWE,GAAKA,CAAG;AACnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"growthbook-adapter.cjs","names":[],"sources":["../../src/feature-flags/growthbook-adapter.ts"],"sourcesContent":["import type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\n/**\n * Minimal subset of [`@growthbook/growthbook`](https://docs.growthbook.io/lib/js)\n * used by the adapter. Pass a `GrowthBook` instance directly.\n */\nexport interface GrowthBookLike {\n isOn: (key: string) => boolean;\n getFeatureValue: <T>(key: string, defaultValue: T) => T;\n /** Registers a renderer fired whenever GrowthBook re-evaluates features. */\n setRenderer?: (renderer: () => void) => void;\n}\n\nexport interface CreateGrowthBookFeatureFlagsAdapterOptions {\n /** The GrowthBook instance. Required. */\n growthbook: GrowthBookLike;\n}\n\n/**\n * Build a [[FeatureFlagsAdapter]] backed by a GrowthBook instance. Apps\n * initialise GrowthBook themselves (so they can load features over the\n * network, set attributes, etc.) — the adapter just routes lookups.\n *\n * Mapping:\n * - `isEnabled(key, default)` → `growthbook.isOn(key)` (falls back to `default` if no value)\n * - `get(key, default)` → `growthbook.getFeatureValue(key, default)`\n * - `onChange(listener)` → `growthbook.setRenderer(listener)` (single-renderer SDK constraint)\n *\n * @example\n * import { GrowthBook } from \"@growthbook/growthbook\";\n * import { FeatureFlagsProvider, createGrowthBookFeatureFlagsAdapter } from \"tempest-react-sdk\";\n *\n * const gb = new GrowthBook({ apiHost: \"...\", clientKey: \"...\" });\n * await gb.loadFeatures();\n * const adapter = createGrowthBookFeatureFlagsAdapter({ growthbook: gb });\n *\n * <FeatureFlagsProvider adapter={adapter}><App /></FeatureFlagsProvider>;\n */\nexport function createGrowthBookFeatureFlagsAdapter(\n options: CreateGrowthBookFeatureFlagsAdapterOptions,\n): FeatureFlagsAdapter {\n const { growthbook } = options;\n const listeners = new Set<() => void>();\n let rendererInstalled = false;\n\n function ensureRenderer(): void {\n if (rendererInstalled || !growthbook.setRenderer) return;\n rendererInstalled = true;\n growthbook.setRenderer(() => {\n for (const listener of listeners) listener();\n });\n }\n\n return {\n isEnabled(key: string, defaultValue = false) {\n const value = growthbook.isOn(key);\n if (typeof value === \"boolean\") return value;\n return defaultValue;\n },\n get<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n return growthbook.getFeatureValue(key, defaultValue as T);\n },\n onChange(listener) {\n ensureRenderer();\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n"],"mappings":"AAsCA,
|
|
1
|
+
{"version":3,"file":"growthbook-adapter.cjs","names":["createGrowthBookFeatureFlagsAdapter","options","listeners","rendererInstalled","ensureRenderer","growthbook","listener","value","key","defaultValue"],"sources":["../../src/feature-flags/growthbook-adapter.ts"],"sourcesContent":["import type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\n/**\n * Minimal subset of [`@growthbook/growthbook`](https://docs.growthbook.io/lib/js)\n * used by the adapter. Pass a `GrowthBook` instance directly.\n */\nexport interface GrowthBookLike {\n isOn: (key: string) => boolean;\n getFeatureValue: <T>(key: string, defaultValue: T) => T;\n /** Registers a renderer fired whenever GrowthBook re-evaluates features. */\n setRenderer?: (renderer: () => void) => void;\n}\n\nexport interface CreateGrowthBookFeatureFlagsAdapterOptions {\n /** The GrowthBook instance. Required. */\n growthbook: GrowthBookLike;\n}\n\n/**\n * Build a [[FeatureFlagsAdapter]] backed by a GrowthBook instance. Apps\n * initialise GrowthBook themselves (so they can load features over the\n * network, set attributes, etc.) — the adapter just routes lookups.\n *\n * Mapping:\n * - `isEnabled(key, default)` → `growthbook.isOn(key)` (falls back to `default` if no value)\n * - `get(key, default)` → `growthbook.getFeatureValue(key, default)`\n * - `onChange(listener)` → `growthbook.setRenderer(listener)` (single-renderer SDK constraint)\n *\n * @example\n * import { GrowthBook } from \"@growthbook/growthbook\";\n * import { FeatureFlagsProvider, createGrowthBookFeatureFlagsAdapter } from \"tempest-react-sdk\";\n *\n * const gb = new GrowthBook({ apiHost: \"...\", clientKey: \"...\" });\n * await gb.loadFeatures();\n * const adapter = createGrowthBookFeatureFlagsAdapter({ growthbook: gb });\n *\n * <FeatureFlagsProvider adapter={adapter}><App /></FeatureFlagsProvider>;\n */\nexport function createGrowthBookFeatureFlagsAdapter(\n options: CreateGrowthBookFeatureFlagsAdapterOptions,\n): FeatureFlagsAdapter {\n const { growthbook } = options;\n const listeners = new Set<() => void>();\n let rendererInstalled = false;\n\n function ensureRenderer(): void {\n if (rendererInstalled || !growthbook.setRenderer) return;\n rendererInstalled = true;\n growthbook.setRenderer(() => {\n for (const listener of listeners) listener();\n });\n }\n\n return {\n isEnabled(key: string, defaultValue = false) {\n const value = growthbook.isOn(key);\n if (typeof value === \"boolean\") return value;\n return defaultValue;\n },\n get<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n return growthbook.getFeatureValue(key, defaultValue as T);\n },\n onChange(listener) {\n ensureRenderer();\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n"],"mappings":"AAsCA,SAAgBA,EACZ,EACmB,CACnB,GAAM,CAAE,cAAeC,EACjBC,EAAY,IAAI,IAClBC,EAAoB,GAExB,SAASC,GAAuB,CACxB,IAAsBC,EAAW,cACrC,EAAoB,GACpBA,EAAW,gBAAkB,CACzB,IAAK,IAAMC,KAAYJ,EAAWI,EAAS,CAC/C,CAAC,EACL,CAEA,MAAO,CACH,UAAU,EAAa,EAAe,GAAO,CACzC,IAAMC,EAAQF,EAAW,KAAKG,CAAG,EAEjC,OADI,OAAOD,GAAU,UAAkBA,EAChCE,CACX,EACA,IAAqC,EAAa,EAAqB,CACnE,OAAOJ,EAAW,gBAAgBG,EAAKC,CAAiB,CAC5D,EACA,SAAS,EAAU,CAGf,OAFAL,EAAe,EACfF,EAAU,IAAII,CAAQ,MACT,CACTJ,EAAU,OAAOI,CAAQ,CAC7B,CACJ,CACJ,CACJ,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"growthbook-adapter.js","names":[],"sources":["../../src/feature-flags/growthbook-adapter.ts"],"sourcesContent":["import type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\n/**\n * Minimal subset of [`@growthbook/growthbook`](https://docs.growthbook.io/lib/js)\n * used by the adapter. Pass a `GrowthBook` instance directly.\n */\nexport interface GrowthBookLike {\n isOn: (key: string) => boolean;\n getFeatureValue: <T>(key: string, defaultValue: T) => T;\n /** Registers a renderer fired whenever GrowthBook re-evaluates features. */\n setRenderer?: (renderer: () => void) => void;\n}\n\nexport interface CreateGrowthBookFeatureFlagsAdapterOptions {\n /** The GrowthBook instance. Required. */\n growthbook: GrowthBookLike;\n}\n\n/**\n * Build a [[FeatureFlagsAdapter]] backed by a GrowthBook instance. Apps\n * initialise GrowthBook themselves (so they can load features over the\n * network, set attributes, etc.) — the adapter just routes lookups.\n *\n * Mapping:\n * - `isEnabled(key, default)` → `growthbook.isOn(key)` (falls back to `default` if no value)\n * - `get(key, default)` → `growthbook.getFeatureValue(key, default)`\n * - `onChange(listener)` → `growthbook.setRenderer(listener)` (single-renderer SDK constraint)\n *\n * @example\n * import { GrowthBook } from \"@growthbook/growthbook\";\n * import { FeatureFlagsProvider, createGrowthBookFeatureFlagsAdapter } from \"tempest-react-sdk\";\n *\n * const gb = new GrowthBook({ apiHost: \"...\", clientKey: \"...\" });\n * await gb.loadFeatures();\n * const adapter = createGrowthBookFeatureFlagsAdapter({ growthbook: gb });\n *\n * <FeatureFlagsProvider adapter={adapter}><App /></FeatureFlagsProvider>;\n */\nexport function createGrowthBookFeatureFlagsAdapter(\n options: CreateGrowthBookFeatureFlagsAdapterOptions,\n): FeatureFlagsAdapter {\n const { growthbook } = options;\n const listeners = new Set<() => void>();\n let rendererInstalled = false;\n\n function ensureRenderer(): void {\n if (rendererInstalled || !growthbook.setRenderer) return;\n rendererInstalled = true;\n growthbook.setRenderer(() => {\n for (const listener of listeners) listener();\n });\n }\n\n return {\n isEnabled(key: string, defaultValue = false) {\n const value = growthbook.isOn(key);\n if (typeof value === \"boolean\") return value;\n return defaultValue;\n },\n get<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n return growthbook.getFeatureValue(key, defaultValue as T);\n },\n onChange(listener) {\n ensureRenderer();\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n"],"mappings":";AAsCA,
|
|
1
|
+
{"version":3,"file":"growthbook-adapter.js","names":["createGrowthBookFeatureFlagsAdapter","options","listeners","rendererInstalled","ensureRenderer","growthbook","listener","value","key","defaultValue"],"sources":["../../src/feature-flags/growthbook-adapter.ts"],"sourcesContent":["import type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\n/**\n * Minimal subset of [`@growthbook/growthbook`](https://docs.growthbook.io/lib/js)\n * used by the adapter. Pass a `GrowthBook` instance directly.\n */\nexport interface GrowthBookLike {\n isOn: (key: string) => boolean;\n getFeatureValue: <T>(key: string, defaultValue: T) => T;\n /** Registers a renderer fired whenever GrowthBook re-evaluates features. */\n setRenderer?: (renderer: () => void) => void;\n}\n\nexport interface CreateGrowthBookFeatureFlagsAdapterOptions {\n /** The GrowthBook instance. Required. */\n growthbook: GrowthBookLike;\n}\n\n/**\n * Build a [[FeatureFlagsAdapter]] backed by a GrowthBook instance. Apps\n * initialise GrowthBook themselves (so they can load features over the\n * network, set attributes, etc.) — the adapter just routes lookups.\n *\n * Mapping:\n * - `isEnabled(key, default)` → `growthbook.isOn(key)` (falls back to `default` if no value)\n * - `get(key, default)` → `growthbook.getFeatureValue(key, default)`\n * - `onChange(listener)` → `growthbook.setRenderer(listener)` (single-renderer SDK constraint)\n *\n * @example\n * import { GrowthBook } from \"@growthbook/growthbook\";\n * import { FeatureFlagsProvider, createGrowthBookFeatureFlagsAdapter } from \"tempest-react-sdk\";\n *\n * const gb = new GrowthBook({ apiHost: \"...\", clientKey: \"...\" });\n * await gb.loadFeatures();\n * const adapter = createGrowthBookFeatureFlagsAdapter({ growthbook: gb });\n *\n * <FeatureFlagsProvider adapter={adapter}><App /></FeatureFlagsProvider>;\n */\nexport function createGrowthBookFeatureFlagsAdapter(\n options: CreateGrowthBookFeatureFlagsAdapterOptions,\n): FeatureFlagsAdapter {\n const { growthbook } = options;\n const listeners = new Set<() => void>();\n let rendererInstalled = false;\n\n function ensureRenderer(): void {\n if (rendererInstalled || !growthbook.setRenderer) return;\n rendererInstalled = true;\n growthbook.setRenderer(() => {\n for (const listener of listeners) listener();\n });\n }\n\n return {\n isEnabled(key: string, defaultValue = false) {\n const value = growthbook.isOn(key);\n if (typeof value === \"boolean\") return value;\n return defaultValue;\n },\n get<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n return growthbook.getFeatureValue(key, defaultValue as T);\n },\n onChange(listener) {\n ensureRenderer();\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n"],"mappings":";AAsCA,SAAgBA,EACZ,GACmB;CACnB,IAAM,EAAE,kBAAeC,GACjBC,oBAAY,IAAI,IAAgB,GAClCC,IAAoB;CAExB,SAASC,IAAuB;EAC5B,AAAI,MAAsBC,EAAW,gBACrC,IAAoB,IACpBA,EAAW,kBAAkB;GACzB,KAAK,IAAMC,KAAYJ,GAAW,EAAS;EAC/C,CAAC;CACL;CAEA,OAAO;EACH,UAAU,GAAa,IAAe,IAAO;GACzC,IAAMK,IAAQF,EAAW,KAAKG,CAAG;GAEjC,OADI,OAAOD,KAAU,YAAkBA,IAChCE;EACX;EACA,IAAqC,GAAa,GAAqB;GACnE,OAAOJ,EAAW,gBAAgBG,GAAKC,CAAiB;EAC5D;EACA,SAAS,GAAU;GAGf,OAFAL,EAAe,GACfF,EAAU,IAAII,CAAQ,SACT;IACT,EAAU,OAAOA,CAAQ;GAC7B;EACJ;CACJ;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-adapter.cjs","names":[],"sources":["../../src/feature-flags/in-memory-adapter.ts"],"sourcesContent":["import type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\nexport interface InMemoryFlagsOptions {\n initial?: Record<string, FlagValue>;\n}\n\n/**\n * Trivial in-memory adapter. Suitable for tests, local development, or as a\n * fallback wrapping the real provider while it loads.\n */\nexport function createInMemoryFlags(options: InMemoryFlagsOptions = {}): FeatureFlagsAdapter & {\n set: (key: string, value: FlagValue) => void;\n} {\n const flags: Record<string, FlagValue> = { ...(options.initial ?? {}) };\n const listeners = new Set<() => void>();\n\n function notify(): void {\n for (const listener of listeners) listener();\n }\n\n return {\n isEnabled(key, defaultValue = false) {\n return key in flags ? Boolean(flags[key]) : defaultValue;\n },\n get<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n return (key in flags ? (flags[key] as T) : (defaultValue as T)) as T;\n },\n onChange(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n set(key, value) {\n flags[key] = value;\n notify();\n },\n };\n}\n"],"mappings":"AAUA,
|
|
1
|
+
{"version":3,"file":"in-memory-adapter.cjs","names":["createInMemoryFlags","flags","options","listeners","notify","listener","key","defaultValue","value"],"sources":["../../src/feature-flags/in-memory-adapter.ts"],"sourcesContent":["import type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\nexport interface InMemoryFlagsOptions {\n initial?: Record<string, FlagValue>;\n}\n\n/**\n * Trivial in-memory adapter. Suitable for tests, local development, or as a\n * fallback wrapping the real provider while it loads.\n */\nexport function createInMemoryFlags(options: InMemoryFlagsOptions = {}): FeatureFlagsAdapter & {\n set: (key: string, value: FlagValue) => void;\n} {\n const flags: Record<string, FlagValue> = { ...(options.initial ?? {}) };\n const listeners = new Set<() => void>();\n\n function notify(): void {\n for (const listener of listeners) listener();\n }\n\n return {\n isEnabled(key, defaultValue = false) {\n return key in flags ? Boolean(flags[key]) : defaultValue;\n },\n get<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n return (key in flags ? (flags[key] as T) : (defaultValue as T)) as T;\n },\n onChange(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n set(key, value) {\n flags[key] = value;\n notify();\n },\n };\n}\n"],"mappings":"AAUA,SAAgBA,EAAoB,EAAgC,CAAC,EAEnE,CACE,IAAMC,EAAmC,CAAE,GAAIC,EAAQ,SAAW,CAAC,CAAG,EAChEC,EAAY,IAAI,IAEtB,SAASC,GAAe,CACpB,IAAK,IAAMC,KAAYF,EAAWE,EAAS,CAC/C,CAEA,MAAO,CACH,UAAU,EAAK,EAAe,GAAO,CACjC,OAAOC,KAAOL,EAAQ,EAAQA,EAAMK,GAAQC,CAChD,EACA,IAAqC,EAAa,EAAqB,CACnE,OAAQD,KAAOL,EAASA,EAAMK,GAAcC,CAChD,EACA,SAAS,EAAU,CAEf,OADAJ,EAAU,IAAIE,CAAQ,MACTF,EAAU,OAAOE,CAAQ,CAC1C,EACA,IAAI,EAAK,EAAO,CACZ,EAAMC,GAAOE,EACbJ,EAAO,CACX,CACJ,CACJ,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-adapter.js","names":[],"sources":["../../src/feature-flags/in-memory-adapter.ts"],"sourcesContent":["import type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\nexport interface InMemoryFlagsOptions {\n initial?: Record<string, FlagValue>;\n}\n\n/**\n * Trivial in-memory adapter. Suitable for tests, local development, or as a\n * fallback wrapping the real provider while it loads.\n */\nexport function createInMemoryFlags(options: InMemoryFlagsOptions = {}): FeatureFlagsAdapter & {\n set: (key: string, value: FlagValue) => void;\n} {\n const flags: Record<string, FlagValue> = { ...(options.initial ?? {}) };\n const listeners = new Set<() => void>();\n\n function notify(): void {\n for (const listener of listeners) listener();\n }\n\n return {\n isEnabled(key, defaultValue = false) {\n return key in flags ? Boolean(flags[key]) : defaultValue;\n },\n get<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n return (key in flags ? (flags[key] as T) : (defaultValue as T)) as T;\n },\n onChange(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n set(key, value) {\n flags[key] = value;\n notify();\n },\n };\n}\n"],"mappings":";AAUA,
|
|
1
|
+
{"version":3,"file":"in-memory-adapter.js","names":["createInMemoryFlags","flags","options","listeners","notify","listener","key","defaultValue","value"],"sources":["../../src/feature-flags/in-memory-adapter.ts"],"sourcesContent":["import type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\nexport interface InMemoryFlagsOptions {\n initial?: Record<string, FlagValue>;\n}\n\n/**\n * Trivial in-memory adapter. Suitable for tests, local development, or as a\n * fallback wrapping the real provider while it loads.\n */\nexport function createInMemoryFlags(options: InMemoryFlagsOptions = {}): FeatureFlagsAdapter & {\n set: (key: string, value: FlagValue) => void;\n} {\n const flags: Record<string, FlagValue> = { ...(options.initial ?? {}) };\n const listeners = new Set<() => void>();\n\n function notify(): void {\n for (const listener of listeners) listener();\n }\n\n return {\n isEnabled(key, defaultValue = false) {\n return key in flags ? Boolean(flags[key]) : defaultValue;\n },\n get<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n return (key in flags ? (flags[key] as T) : (defaultValue as T)) as T;\n },\n onChange(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n set(key, value) {\n flags[key] = value;\n notify();\n },\n };\n}\n"],"mappings":";AAUA,SAAgBA,EAAoB,IAAgC,CAAC,GAEnE;CACE,IAAMC,IAAmC,EAAE,GAAIC,EAAQ,WAAW,CAAC,EAAG,GAChEC,oBAAY,IAAI,IAAgB;CAEtC,SAASC,IAAe;EACpB,KAAK,IAAMC,KAAYF,GAAW,EAAS;CAC/C;CAEA,OAAO;EACH,UAAU,GAAK,IAAe,IAAO;GACjC,OAAOG,KAAOL,IAAQ,EAAQA,EAAMK,KAAQC;EAChD;EACA,IAAqC,GAAa,GAAqB;GACnE,OAAQD,KAAOL,IAASA,EAAMK,KAAcC;EAChD;EACA,SAAS,GAAU;GAEf,OADAJ,EAAU,IAAIE,CAAQ,SACTF,EAAU,OAAOE,CAAQ;EAC1C;EACA,IAAI,GAAK,GAAO;GAEZ,AADA,EAAMC,KAAOE,GACbJ,EAAO;EACX;CACJ;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launchdarkly-adapter.cjs","names":[],"sources":["../../src/feature-flags/launchdarkly-adapter.ts"],"sourcesContent":["import type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\n/**\n * Minimal subset of [`launchdarkly-js-client-sdk`](https://docs.launchdarkly.com/sdk/client-side/javascript)\n * used by the adapter. Pass an existing `LDClient`.\n */\nexport interface LDClientLike {\n variation: <T = unknown>(key: string, defaultValue: T) => T;\n on?: (event: string, handler: () => void) => void;\n off?: (event: string, handler: () => void) => void;\n}\n\nexport interface CreateLaunchDarklyFeatureFlagsAdapterOptions {\n /** The LaunchDarkly JS client. Required. */\n client: LDClientLike;\n}\n\n/**\n * Build a [[FeatureFlagsAdapter]] backed by a LaunchDarkly JS client. Apps\n * initialise the client themselves (`LDClient.initialize(envKey, ctx)`) and\n * pass it in.\n *\n * Mapping:\n * - `isEnabled(key, default)` → `client.variation(key, default) === true`\n * - `get(key, default)` → `client.variation(key, default)`\n * - `onChange(listener)` → `client.on(\"change\", listener)` / `client.off(\"change\", listener)`\n *\n * @example\n * import * as LDClient from \"launchdarkly-js-client-sdk\";\n * import { FeatureFlagsProvider, createLaunchDarklyFeatureFlagsAdapter } from \"tempest-react-sdk\";\n *\n * const client = LDClient.initialize(import.meta.env.VITE_LD_CLIENT_ID, { kind: \"user\", key: userId });\n * await client.waitUntilReady();\n * const adapter = createLaunchDarklyFeatureFlagsAdapter({ client });\n *\n * <FeatureFlagsProvider adapter={adapter}><App /></FeatureFlagsProvider>;\n */\nexport function createLaunchDarklyFeatureFlagsAdapter(\n options: CreateLaunchDarklyFeatureFlagsAdapterOptions,\n): FeatureFlagsAdapter {\n const { client } = options;\n\n return {\n isEnabled(key: string, defaultValue = false) {\n return client.variation<boolean>(key, defaultValue) === true;\n },\n get<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n return client.variation<T>(key, defaultValue as T);\n },\n onChange(listener) {\n if (!client.on || !client.off) {\n return () => {};\n }\n client.on(\"change\", listener);\n return () => {\n client.off!(\"change\", listener);\n };\n },\n };\n}\n"],"mappings":"AAqCA,
|
|
1
|
+
{"version":3,"file":"launchdarkly-adapter.cjs","names":["createLaunchDarklyFeatureFlagsAdapter","options","client","key","defaultValue","listener"],"sources":["../../src/feature-flags/launchdarkly-adapter.ts"],"sourcesContent":["import type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\n/**\n * Minimal subset of [`launchdarkly-js-client-sdk`](https://docs.launchdarkly.com/sdk/client-side/javascript)\n * used by the adapter. Pass an existing `LDClient`.\n */\nexport interface LDClientLike {\n variation: <T = unknown>(key: string, defaultValue: T) => T;\n on?: (event: string, handler: () => void) => void;\n off?: (event: string, handler: () => void) => void;\n}\n\nexport interface CreateLaunchDarklyFeatureFlagsAdapterOptions {\n /** The LaunchDarkly JS client. Required. */\n client: LDClientLike;\n}\n\n/**\n * Build a [[FeatureFlagsAdapter]] backed by a LaunchDarkly JS client. Apps\n * initialise the client themselves (`LDClient.initialize(envKey, ctx)`) and\n * pass it in.\n *\n * Mapping:\n * - `isEnabled(key, default)` → `client.variation(key, default) === true`\n * - `get(key, default)` → `client.variation(key, default)`\n * - `onChange(listener)` → `client.on(\"change\", listener)` / `client.off(\"change\", listener)`\n *\n * @example\n * import * as LDClient from \"launchdarkly-js-client-sdk\";\n * import { FeatureFlagsProvider, createLaunchDarklyFeatureFlagsAdapter } from \"tempest-react-sdk\";\n *\n * const client = LDClient.initialize(import.meta.env.VITE_LD_CLIENT_ID, { kind: \"user\", key: userId });\n * await client.waitUntilReady();\n * const adapter = createLaunchDarklyFeatureFlagsAdapter({ client });\n *\n * <FeatureFlagsProvider adapter={adapter}><App /></FeatureFlagsProvider>;\n */\nexport function createLaunchDarklyFeatureFlagsAdapter(\n options: CreateLaunchDarklyFeatureFlagsAdapterOptions,\n): FeatureFlagsAdapter {\n const { client } = options;\n\n return {\n isEnabled(key: string, defaultValue = false) {\n return client.variation<boolean>(key, defaultValue) === true;\n },\n get<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n return client.variation<T>(key, defaultValue as T);\n },\n onChange(listener) {\n if (!client.on || !client.off) {\n return () => {};\n }\n client.on(\"change\", listener);\n return () => {\n client.off!(\"change\", listener);\n };\n },\n };\n}\n"],"mappings":"AAqCA,SAAgBA,EACZ,EACmB,CACnB,GAAM,CAAE,UAAWC,EAEnB,MAAO,CACH,UAAU,EAAa,EAAe,GAAO,CACzC,OAAOC,EAAO,UAAmBC,EAAKC,CAAY,IAAM,EAC5D,EACA,IAAqC,EAAa,EAAqB,CACnE,OAAOF,EAAO,UAAaC,EAAKC,CAAiB,CACrD,EACA,SAAS,EAAU,CAKf,MAJI,CAACF,EAAO,IAAM,CAACA,EAAO,QACT,CAAC,GAElBA,EAAO,GAAG,SAAUG,CAAQ,MACf,CACTH,EAAO,IAAK,SAAUG,CAAQ,CAClC,EACJ,CACJ,CACJ,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launchdarkly-adapter.js","names":[],"sources":["../../src/feature-flags/launchdarkly-adapter.ts"],"sourcesContent":["import type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\n/**\n * Minimal subset of [`launchdarkly-js-client-sdk`](https://docs.launchdarkly.com/sdk/client-side/javascript)\n * used by the adapter. Pass an existing `LDClient`.\n */\nexport interface LDClientLike {\n variation: <T = unknown>(key: string, defaultValue: T) => T;\n on?: (event: string, handler: () => void) => void;\n off?: (event: string, handler: () => void) => void;\n}\n\nexport interface CreateLaunchDarklyFeatureFlagsAdapterOptions {\n /** The LaunchDarkly JS client. Required. */\n client: LDClientLike;\n}\n\n/**\n * Build a [[FeatureFlagsAdapter]] backed by a LaunchDarkly JS client. Apps\n * initialise the client themselves (`LDClient.initialize(envKey, ctx)`) and\n * pass it in.\n *\n * Mapping:\n * - `isEnabled(key, default)` → `client.variation(key, default) === true`\n * - `get(key, default)` → `client.variation(key, default)`\n * - `onChange(listener)` → `client.on(\"change\", listener)` / `client.off(\"change\", listener)`\n *\n * @example\n * import * as LDClient from \"launchdarkly-js-client-sdk\";\n * import { FeatureFlagsProvider, createLaunchDarklyFeatureFlagsAdapter } from \"tempest-react-sdk\";\n *\n * const client = LDClient.initialize(import.meta.env.VITE_LD_CLIENT_ID, { kind: \"user\", key: userId });\n * await client.waitUntilReady();\n * const adapter = createLaunchDarklyFeatureFlagsAdapter({ client });\n *\n * <FeatureFlagsProvider adapter={adapter}><App /></FeatureFlagsProvider>;\n */\nexport function createLaunchDarklyFeatureFlagsAdapter(\n options: CreateLaunchDarklyFeatureFlagsAdapterOptions,\n): FeatureFlagsAdapter {\n const { client } = options;\n\n return {\n isEnabled(key: string, defaultValue = false) {\n return client.variation<boolean>(key, defaultValue) === true;\n },\n get<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n return client.variation<T>(key, defaultValue as T);\n },\n onChange(listener) {\n if (!client.on || !client.off) {\n return () => {};\n }\n client.on(\"change\", listener);\n return () => {\n client.off!(\"change\", listener);\n };\n },\n };\n}\n"],"mappings":";AAqCA,
|
|
1
|
+
{"version":3,"file":"launchdarkly-adapter.js","names":["createLaunchDarklyFeatureFlagsAdapter","options","client","key","defaultValue","listener"],"sources":["../../src/feature-flags/launchdarkly-adapter.ts"],"sourcesContent":["import type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\n/**\n * Minimal subset of [`launchdarkly-js-client-sdk`](https://docs.launchdarkly.com/sdk/client-side/javascript)\n * used by the adapter. Pass an existing `LDClient`.\n */\nexport interface LDClientLike {\n variation: <T = unknown>(key: string, defaultValue: T) => T;\n on?: (event: string, handler: () => void) => void;\n off?: (event: string, handler: () => void) => void;\n}\n\nexport interface CreateLaunchDarklyFeatureFlagsAdapterOptions {\n /** The LaunchDarkly JS client. Required. */\n client: LDClientLike;\n}\n\n/**\n * Build a [[FeatureFlagsAdapter]] backed by a LaunchDarkly JS client. Apps\n * initialise the client themselves (`LDClient.initialize(envKey, ctx)`) and\n * pass it in.\n *\n * Mapping:\n * - `isEnabled(key, default)` → `client.variation(key, default) === true`\n * - `get(key, default)` → `client.variation(key, default)`\n * - `onChange(listener)` → `client.on(\"change\", listener)` / `client.off(\"change\", listener)`\n *\n * @example\n * import * as LDClient from \"launchdarkly-js-client-sdk\";\n * import { FeatureFlagsProvider, createLaunchDarklyFeatureFlagsAdapter } from \"tempest-react-sdk\";\n *\n * const client = LDClient.initialize(import.meta.env.VITE_LD_CLIENT_ID, { kind: \"user\", key: userId });\n * await client.waitUntilReady();\n * const adapter = createLaunchDarklyFeatureFlagsAdapter({ client });\n *\n * <FeatureFlagsProvider adapter={adapter}><App /></FeatureFlagsProvider>;\n */\nexport function createLaunchDarklyFeatureFlagsAdapter(\n options: CreateLaunchDarklyFeatureFlagsAdapterOptions,\n): FeatureFlagsAdapter {\n const { client } = options;\n\n return {\n isEnabled(key: string, defaultValue = false) {\n return client.variation<boolean>(key, defaultValue) === true;\n },\n get<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n return client.variation<T>(key, defaultValue as T);\n },\n onChange(listener) {\n if (!client.on || !client.off) {\n return () => {};\n }\n client.on(\"change\", listener);\n return () => {\n client.off!(\"change\", listener);\n };\n },\n };\n}\n"],"mappings":";AAqCA,SAAgBA,EACZ,GACmB;CACnB,IAAM,EAAE,cAAWC;CAEnB,OAAO;EACH,UAAU,GAAa,IAAe,IAAO;GACzC,OAAOC,EAAO,UAAmBC,GAAKC,CAAY,MAAM;EAC5D;EACA,IAAqC,GAAa,GAAqB;GACnE,OAAOF,EAAO,UAAaC,GAAKC,CAAiB;EACrD;EACA,SAAS,GAAU;GAKf,OAJI,CAACF,EAAO,MAAM,CAACA,EAAO,YACT,CAAC,KAElBA,EAAO,GAAG,UAAUG,CAAQ,SACf;IACT,EAAO,IAAK,UAAUA,CAAQ;GAClC;EACJ;CACJ;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormField.cjs","names":[],"sources":["../../src/forms/FormField.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — FormFieldChildProps is not a component's props — it\n * is the contract handed to whatever control the field wraps, and it is exactly what\n * react-hook-form's register returns (name, value, onChange, onBlur, ref) plus what\n * the field adds around it (error, label, helperText, required, id). Trimming it\n * breaks the wiring it exists to describe.\n */\nimport { cloneElement, isValidElement } from \"react\";\nimport type { ReactElement, ReactNode } from \"react\";\nimport {\n Controller,\n useFormContext,\n type Control,\n type ControllerRenderProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { DUPLICATE_COPY_REMEDY } from \"../utils/duplicate-instance\";\n\nexport interface FormFieldChildProps {\n name: string;\n value: unknown;\n onChange: (...args: unknown[]) => void;\n onBlur: () => void;\n ref: ControllerRenderProps[\"ref\"];\n error?: string;\n \"aria-invalid\"?: boolean;\n \"aria-describedby\"?: string;\n label?: ReactNode;\n helperText?: ReactNode;\n required?: boolean;\n id?: string;\n}\n\nexport interface FormFieldProps<\n TValues extends FieldValues = FieldValues,\n TName extends FieldPath<TValues> = FieldPath<TValues>,\n> {\n /** Field name (dot path supported, e.g. `\"address.city\"`). */\n name: TName;\n /** Field label rendered by the wrapped control. */\n label?: ReactNode;\n /** Helper text rendered by the wrapped control when there is no error. */\n helperText?: ReactNode;\n /** When `true`, marks the control as required (visual hint + native attribute). */\n required?: boolean;\n /**\n * Explicit `control` from `useForm()` / `useZodForm()`. Optional when a\n * `FormProvider` is in the tree.\n */\n control?: Control<TValues>;\n /**\n * The control to render. Receives `{ value, onChange, onBlur, ref, error, ... }`\n * via `cloneElement`. Pass `<Input />`, `<Select />`, masked inputs, etc.\n */\n children: ReactElement;\n}\n\n/**\n * Glue between `react-hook-form` `Controller` and the SDK's controlled\n * components. Wraps any control that accepts `{ value, onChange, label,\n * error }` and routes RHF state into it — eliminating the per-field\n * `<Controller render={...} />` boilerplate.\n *\n * @example\n * const form = useZodForm(schema);\n * <FormProvider {...form}>\n * <Form>\n * <FormField name=\"email\" label=\"Email\" required>\n * <Input type=\"email\" />\n * </FormField>\n * <FormField name=\"cep\" label=\"CEP\">\n * <CEPInput />\n * </FormField>\n * </Form>\n * </FormProvider>;\n */\n/**\n * What is thrown when no `control` can be resolved.\n *\n * It names **two** causes, because the throw cannot tell them apart and the\n * second one is the expensive one. The obvious reading — no provider, no prop —\n * is usually right. But the identical throw happens with a `<FormProvider>`\n * mounted directly above, when the app and the SDK resolve two different copies\n * of `react-hook-form`: the provider publishes on the app copy's context and\n * `useFormContext` here reads the SDK copy's, which is empty. Someone looking at\n * a provider they can see, being told it is missing, does not go looking at\n * `node_modules` — so the message has to send them there.\n */\nconst NO_CONTROL_MESSAGE =\n \"FormField found no form to bind to. Either pass a `control` prop, or mount a \" +\n \"<FormProvider> above it. If a <FormProvider> IS mounted above it, the app and the \" +\n \"SDK are resolving two copies of react-hook-form: the provider publishes on one \" +\n \"copy's context and this field reads the other's. \" +\n DUPLICATE_COPY_REMEDY;\n\nexport function FormField<\n TValues extends FieldValues = FieldValues,\n TName extends FieldPath<TValues> = FieldPath<TValues>,\n>({ name, label, helperText, required, control, children }: FormFieldProps<TValues, TName>) {\n const context = useFormContext<TValues>();\n const resolvedControl = control ?? context?.control;\n if (!resolvedControl) {\n throw new Error(NO_CONTROL_MESSAGE);\n }\n\n return (\n <Controller\n name={name}\n control={resolvedControl}\n render={({ field, fieldState }) => {\n if (!isValidElement(children)) return children;\n const errorMessage = fieldState.error?.message;\n return cloneElement(children as ReactElement<FormFieldChildProps>, {\n name: field.name,\n value: field.value,\n onChange: field.onChange,\n onBlur: field.onBlur,\n ref: field.ref,\n label,\n helperText: errorMessage ? undefined : helperText,\n error: errorMessage,\n required,\n \"aria-invalid\": !!errorMessage,\n });\n }}\n />\n );\n}\n"],"mappings":"sIA0FA,
|
|
1
|
+
{"version":3,"file":"FormField.cjs","names":["DUPLICATE_COPY_REMEDY","useFormContext","Controller","isValidElement","cloneElement","require_duplicate_instance","react","react_jsx_runtime","react_hook_form","NO_CONTROL_MESSAGE","FormField","context","resolvedControl","control","children","errorMessage","fieldState","field","helperText"],"sources":["../../src/forms/FormField.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — FormFieldChildProps is not a component's props — it\n * is the contract handed to whatever control the field wraps, and it is exactly what\n * react-hook-form's register returns (name, value, onChange, onBlur, ref) plus what\n * the field adds around it (error, label, helperText, required, id). Trimming it\n * breaks the wiring it exists to describe.\n */\nimport { cloneElement, isValidElement } from \"react\";\nimport type { ReactElement, ReactNode } from \"react\";\nimport {\n Controller,\n useFormContext,\n type Control,\n type ControllerRenderProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { DUPLICATE_COPY_REMEDY } from \"../utils/duplicate-instance\";\n\nexport interface FormFieldChildProps {\n name: string;\n value: unknown;\n onChange: (...args: unknown[]) => void;\n onBlur: () => void;\n ref: ControllerRenderProps[\"ref\"];\n error?: string;\n \"aria-invalid\"?: boolean;\n \"aria-describedby\"?: string;\n label?: ReactNode;\n helperText?: ReactNode;\n required?: boolean;\n id?: string;\n}\n\nexport interface FormFieldProps<\n TValues extends FieldValues = FieldValues,\n TName extends FieldPath<TValues> = FieldPath<TValues>,\n> {\n /** Field name (dot path supported, e.g. `\"address.city\"`). */\n name: TName;\n /** Field label rendered by the wrapped control. */\n label?: ReactNode;\n /** Helper text rendered by the wrapped control when there is no error. */\n helperText?: ReactNode;\n /** When `true`, marks the control as required (visual hint + native attribute). */\n required?: boolean;\n /**\n * Explicit `control` from `useForm()` / `useZodForm()`. Optional when a\n * `FormProvider` is in the tree.\n */\n control?: Control<TValues>;\n /**\n * The control to render. Receives `{ value, onChange, onBlur, ref, error, ... }`\n * via `cloneElement`. Pass `<Input />`, `<Select />`, masked inputs, etc.\n */\n children: ReactElement;\n}\n\n/**\n * Glue between `react-hook-form` `Controller` and the SDK's controlled\n * components. Wraps any control that accepts `{ value, onChange, label,\n * error }` and routes RHF state into it — eliminating the per-field\n * `<Controller render={...} />` boilerplate.\n *\n * @example\n * const form = useZodForm(schema);\n * <FormProvider {...form}>\n * <Form>\n * <FormField name=\"email\" label=\"Email\" required>\n * <Input type=\"email\" />\n * </FormField>\n * <FormField name=\"cep\" label=\"CEP\">\n * <CEPInput />\n * </FormField>\n * </Form>\n * </FormProvider>;\n */\n/**\n * What is thrown when no `control` can be resolved.\n *\n * It names **two** causes, because the throw cannot tell them apart and the\n * second one is the expensive one. The obvious reading — no provider, no prop —\n * is usually right. But the identical throw happens with a `<FormProvider>`\n * mounted directly above, when the app and the SDK resolve two different copies\n * of `react-hook-form`: the provider publishes on the app copy's context and\n * `useFormContext` here reads the SDK copy's, which is empty. Someone looking at\n * a provider they can see, being told it is missing, does not go looking at\n * `node_modules` — so the message has to send them there.\n */\nconst NO_CONTROL_MESSAGE =\n \"FormField found no form to bind to. Either pass a `control` prop, or mount a \" +\n \"<FormProvider> above it. If a <FormProvider> IS mounted above it, the app and the \" +\n \"SDK are resolving two copies of react-hook-form: the provider publishes on one \" +\n \"copy's context and this field reads the other's. \" +\n DUPLICATE_COPY_REMEDY;\n\nexport function FormField<\n TValues extends FieldValues = FieldValues,\n TName extends FieldPath<TValues> = FieldPath<TValues>,\n>({ name, label, helperText, required, control, children }: FormFieldProps<TValues, TName>) {\n const context = useFormContext<TValues>();\n const resolvedControl = control ?? context?.control;\n if (!resolvedControl) {\n throw new Error(NO_CONTROL_MESSAGE);\n }\n\n return (\n <Controller\n name={name}\n control={resolvedControl}\n render={({ field, fieldState }) => {\n if (!isValidElement(children)) return children;\n const errorMessage = fieldState.error?.message;\n return cloneElement(children as ReactElement<FormFieldChildProps>, {\n name: field.name,\n value: field.value,\n onChange: field.onChange,\n onBlur: field.onBlur,\n ref: field.ref,\n label,\n helperText: errorMessage ? undefined : helperText,\n error: errorMessage,\n required,\n \"aria-invalid\": !!errorMessage,\n });\n }}\n />\n );\n}\n"],"mappings":"A,sIA0FA,IAAMS,EACF,kSAIAT,EAAAA,sBAEJ,SAAgBU,EAGd,CAAE,OAAM,QAAO,aAAY,WAAU,UAAS,YAA4C,CACxF,IAAMC,GAAA,EAAUV,EAAAA,eAAAA,CAAwB,EAClCW,EAAkBC,GAAWF,GAAS,QAC5C,GAAI,CAACC,EACD,MAAU,MAAMH,CAAkB,EAGtC,OACI,EAAAF,EAAA,IAAA,CAACL,EAAAA,WAAD,CACU,OACN,QAASU,EACT,QAAS,CAAE,QAAO,gBAAiB,CAC/B,GAAI,EAAA,EAACT,EAAAA,eAAAA,CAAeW,CAAQ,EAAG,OAAOA,EACtC,IAAMC,EAAeC,EAAW,OAAO,QACvC,OAAA,EAAOZ,EAAAA,aAAAA,CAAaU,EAA+C,CAC/D,KAAMG,EAAM,KACZ,MAAOA,EAAM,MACb,SAAUA,EAAM,SAChB,OAAQA,EAAM,OACd,IAAKA,EAAM,IACX,QACA,WAAYF,EAAe,IAAA,GAAYG,EACvC,MAAOH,EACP,WACA,eAAgB,CAAC,CAACA,CACtB,CAAC,CACL,CACH,CAAA,CAET,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormField.js","names":[],"sources":["../../src/forms/FormField.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — FormFieldChildProps is not a component's props — it\n * is the contract handed to whatever control the field wraps, and it is exactly what\n * react-hook-form's register returns (name, value, onChange, onBlur, ref) plus what\n * the field adds around it (error, label, helperText, required, id). Trimming it\n * breaks the wiring it exists to describe.\n */\nimport { cloneElement, isValidElement } from \"react\";\nimport type { ReactElement, ReactNode } from \"react\";\nimport {\n Controller,\n useFormContext,\n type Control,\n type ControllerRenderProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { DUPLICATE_COPY_REMEDY } from \"../utils/duplicate-instance\";\n\nexport interface FormFieldChildProps {\n name: string;\n value: unknown;\n onChange: (...args: unknown[]) => void;\n onBlur: () => void;\n ref: ControllerRenderProps[\"ref\"];\n error?: string;\n \"aria-invalid\"?: boolean;\n \"aria-describedby\"?: string;\n label?: ReactNode;\n helperText?: ReactNode;\n required?: boolean;\n id?: string;\n}\n\nexport interface FormFieldProps<\n TValues extends FieldValues = FieldValues,\n TName extends FieldPath<TValues> = FieldPath<TValues>,\n> {\n /** Field name (dot path supported, e.g. `\"address.city\"`). */\n name: TName;\n /** Field label rendered by the wrapped control. */\n label?: ReactNode;\n /** Helper text rendered by the wrapped control when there is no error. */\n helperText?: ReactNode;\n /** When `true`, marks the control as required (visual hint + native attribute). */\n required?: boolean;\n /**\n * Explicit `control` from `useForm()` / `useZodForm()`. Optional when a\n * `FormProvider` is in the tree.\n */\n control?: Control<TValues>;\n /**\n * The control to render. Receives `{ value, onChange, onBlur, ref, error, ... }`\n * via `cloneElement`. Pass `<Input />`, `<Select />`, masked inputs, etc.\n */\n children: ReactElement;\n}\n\n/**\n * Glue between `react-hook-form` `Controller` and the SDK's controlled\n * components. Wraps any control that accepts `{ value, onChange, label,\n * error }` and routes RHF state into it — eliminating the per-field\n * `<Controller render={...} />` boilerplate.\n *\n * @example\n * const form = useZodForm(schema);\n * <FormProvider {...form}>\n * <Form>\n * <FormField name=\"email\" label=\"Email\" required>\n * <Input type=\"email\" />\n * </FormField>\n * <FormField name=\"cep\" label=\"CEP\">\n * <CEPInput />\n * </FormField>\n * </Form>\n * </FormProvider>;\n */\n/**\n * What is thrown when no `control` can be resolved.\n *\n * It names **two** causes, because the throw cannot tell them apart and the\n * second one is the expensive one. The obvious reading — no provider, no prop —\n * is usually right. But the identical throw happens with a `<FormProvider>`\n * mounted directly above, when the app and the SDK resolve two different copies\n * of `react-hook-form`: the provider publishes on the app copy's context and\n * `useFormContext` here reads the SDK copy's, which is empty. Someone looking at\n * a provider they can see, being told it is missing, does not go looking at\n * `node_modules` — so the message has to send them there.\n */\nconst NO_CONTROL_MESSAGE =\n \"FormField found no form to bind to. Either pass a `control` prop, or mount a \" +\n \"<FormProvider> above it. If a <FormProvider> IS mounted above it, the app and the \" +\n \"SDK are resolving two copies of react-hook-form: the provider publishes on one \" +\n \"copy's context and this field reads the other's. \" +\n DUPLICATE_COPY_REMEDY;\n\nexport function FormField<\n TValues extends FieldValues = FieldValues,\n TName extends FieldPath<TValues> = FieldPath<TValues>,\n>({ name, label, helperText, required, control, children }: FormFieldProps<TValues, TName>) {\n const context = useFormContext<TValues>();\n const resolvedControl = control ?? context?.control;\n if (!resolvedControl) {\n throw new Error(NO_CONTROL_MESSAGE);\n }\n\n return (\n <Controller\n name={name}\n control={resolvedControl}\n render={({ field, fieldState }) => {\n if (!isValidElement(children)) return children;\n const errorMessage = fieldState.error?.message;\n return cloneElement(children as ReactElement<FormFieldChildProps>, {\n name: field.name,\n value: field.value,\n onChange: field.onChange,\n onBlur: field.onBlur,\n ref: field.ref,\n label,\n helperText: errorMessage ? undefined : helperText,\n error: errorMessage,\n required,\n \"aria-invalid\": !!errorMessage,\n });\n }}\n />\n );\n}\n"],"mappings":";;;;;AA0FA,
|
|
1
|
+
{"version":3,"file":"FormField.js","names":["NO_CONTROL_MESSAGE","DUPLICATE_COPY_REMEDY","FormField","context","useFormContext","resolvedControl","control","Controller","isValidElement","children","errorMessage","fieldState","cloneElement","field","helperText"],"sources":["../../src/forms/FormField.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — FormFieldChildProps is not a component's props — it\n * is the contract handed to whatever control the field wraps, and it is exactly what\n * react-hook-form's register returns (name, value, onChange, onBlur, ref) plus what\n * the field adds around it (error, label, helperText, required, id). Trimming it\n * breaks the wiring it exists to describe.\n */\nimport { cloneElement, isValidElement } from \"react\";\nimport type { ReactElement, ReactNode } from \"react\";\nimport {\n Controller,\n useFormContext,\n type Control,\n type ControllerRenderProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { DUPLICATE_COPY_REMEDY } from \"../utils/duplicate-instance\";\n\nexport interface FormFieldChildProps {\n name: string;\n value: unknown;\n onChange: (...args: unknown[]) => void;\n onBlur: () => void;\n ref: ControllerRenderProps[\"ref\"];\n error?: string;\n \"aria-invalid\"?: boolean;\n \"aria-describedby\"?: string;\n label?: ReactNode;\n helperText?: ReactNode;\n required?: boolean;\n id?: string;\n}\n\nexport interface FormFieldProps<\n TValues extends FieldValues = FieldValues,\n TName extends FieldPath<TValues> = FieldPath<TValues>,\n> {\n /** Field name (dot path supported, e.g. `\"address.city\"`). */\n name: TName;\n /** Field label rendered by the wrapped control. */\n label?: ReactNode;\n /** Helper text rendered by the wrapped control when there is no error. */\n helperText?: ReactNode;\n /** When `true`, marks the control as required (visual hint + native attribute). */\n required?: boolean;\n /**\n * Explicit `control` from `useForm()` / `useZodForm()`. Optional when a\n * `FormProvider` is in the tree.\n */\n control?: Control<TValues>;\n /**\n * The control to render. Receives `{ value, onChange, onBlur, ref, error, ... }`\n * via `cloneElement`. Pass `<Input />`, `<Select />`, masked inputs, etc.\n */\n children: ReactElement;\n}\n\n/**\n * Glue between `react-hook-form` `Controller` and the SDK's controlled\n * components. Wraps any control that accepts `{ value, onChange, label,\n * error }` and routes RHF state into it — eliminating the per-field\n * `<Controller render={...} />` boilerplate.\n *\n * @example\n * const form = useZodForm(schema);\n * <FormProvider {...form}>\n * <Form>\n * <FormField name=\"email\" label=\"Email\" required>\n * <Input type=\"email\" />\n * </FormField>\n * <FormField name=\"cep\" label=\"CEP\">\n * <CEPInput />\n * </FormField>\n * </Form>\n * </FormProvider>;\n */\n/**\n * What is thrown when no `control` can be resolved.\n *\n * It names **two** causes, because the throw cannot tell them apart and the\n * second one is the expensive one. The obvious reading — no provider, no prop —\n * is usually right. But the identical throw happens with a `<FormProvider>`\n * mounted directly above, when the app and the SDK resolve two different copies\n * of `react-hook-form`: the provider publishes on the app copy's context and\n * `useFormContext` here reads the SDK copy's, which is empty. Someone looking at\n * a provider they can see, being told it is missing, does not go looking at\n * `node_modules` — so the message has to send them there.\n */\nconst NO_CONTROL_MESSAGE =\n \"FormField found no form to bind to. Either pass a `control` prop, or mount a \" +\n \"<FormProvider> above it. If a <FormProvider> IS mounted above it, the app and the \" +\n \"SDK are resolving two copies of react-hook-form: the provider publishes on one \" +\n \"copy's context and this field reads the other's. \" +\n DUPLICATE_COPY_REMEDY;\n\nexport function FormField<\n TValues extends FieldValues = FieldValues,\n TName extends FieldPath<TValues> = FieldPath<TValues>,\n>({ name, label, helperText, required, control, children }: FormFieldProps<TValues, TName>) {\n const context = useFormContext<TValues>();\n const resolvedControl = control ?? context?.control;\n if (!resolvedControl) {\n throw new Error(NO_CONTROL_MESSAGE);\n }\n\n return (\n <Controller\n name={name}\n control={resolvedControl}\n render={({ field, fieldState }) => {\n if (!isValidElement(children)) return children;\n const errorMessage = fieldState.error?.message;\n return cloneElement(children as ReactElement<FormFieldChildProps>, {\n name: field.name,\n value: field.value,\n onChange: field.onChange,\n onBlur: field.onBlur,\n ref: field.ref,\n label,\n helperText: errorMessage ? undefined : helperText,\n error: errorMessage,\n required,\n \"aria-invalid\": !!errorMessage,\n });\n }}\n />\n );\n}\n"],"mappings":";;;;;AA0FA,IAAMA,IACF,oSAIAC;AAEJ,SAAgBC,EAGd,EAAE,SAAM,UAAO,eAAY,aAAU,YAAS,eAA4C;CACxF,IAAMC,IAAUC,EAAwB,GAClCC,IAAkBC,KAAWH,GAAS;CAC5C,IAAI,CAACE,GACD,MAAU,MAAML,CAAkB;CAGtC,OACI,kBAACO,GAAD;EACU;EACN,SAASF;EACT,SAAS,EAAE,UAAO,oBAAiB;GAC/B,IAAI,CAACG,EAAeC,CAAQ,GAAG,OAAOA;GACtC,IAAMC,IAAeC,EAAW,OAAO;GACvC,OAAOC,EAAaH,GAA+C;IAC/D,MAAMI,EAAM;IACZ,OAAOA,EAAM;IACb,UAAUA,EAAM;IAChB,QAAQA,EAAM;IACd,KAAKA,EAAM;IACX;IACA,YAAYH,IAAe,KAAA,IAAYI;IACvC,OAAOJ;IACP;IACA,gBAAgB,CAAC,CAACA;GACtB,CAAC;EACL;CACH,CAAA;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"br-validators.cjs","names":[],"sources":["../../src/forms/br-validators.ts"],"sourcesContent":["function digitsOnly(value: string): string {\n return value.replace(/\\D/g, \"\");\n}\n\n/**\n * Validate a Brazilian CPF using the standard check-digit algorithm.\n * Accepts masked or raw input; rejects all-equal digits (\"111.111.111-11\").\n */\nexport function validateCPF(value: string): boolean {\n const digits = digitsOnly(value);\n if (digits.length !== 11) return false;\n if (/^(\\d)\\1+$/.test(digits)) return false;\n\n const numbers = digits.split(\"\").map(Number);\n\n let sum = 0;\n for (let i = 0; i < 9; i++) sum += numbers[i]! * (10 - i);\n let check = (sum * 10) % 11;\n if (check === 10) check = 0;\n if (check !== numbers[9]) return false;\n\n sum = 0;\n for (let i = 0; i < 10; i++) sum += numbers[i]! * (11 - i);\n check = (sum * 10) % 11;\n if (check === 10) check = 0;\n return check === numbers[10];\n}\n\n/**\n * Validate a Brazilian CNPJ using the standard check-digit algorithm.\n * Accepts masked or raw input; rejects all-equal digits.\n */\nexport function validateCNPJ(value: string): boolean {\n const digits = digitsOnly(value);\n if (digits.length !== 14) return false;\n if (/^(\\d)\\1+$/.test(digits)) return false;\n\n const numbers = digits.split(\"\").map(Number);\n\n const weights1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n const weights2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n let sum = 0;\n for (let i = 0; i < 12; i++) sum += numbers[i]! * weights1[i]!;\n let check = sum % 11;\n check = check < 2 ? 0 : 11 - check;\n if (check !== numbers[12]) return false;\n\n sum = 0;\n for (let i = 0; i < 13; i++) sum += numbers[i]! * weights2[i]!;\n check = sum % 11;\n check = check < 2 ? 0 : 11 - check;\n return check === numbers[13];\n}\n\n/** Format an 11-digit Brazilian CEP-like value as `00000-000`. */\nexport function formatCEP(value: string): string {\n return digitsOnly(value)\n .slice(0, 8)\n .replace(/(\\d{5})(\\d)/, \"$1-$2\");\n}\n\n/** Format an unmasked CNPJ-shaped value as `00.000.000/0000-00`. */\nexport function formatCNPJ(value: string): string {\n return digitsOnly(value)\n .slice(0, 14)\n .replace(/(\\d{2})(\\d)/, \"$1.$2\")\n .replace(/(\\d{3})(\\d)/, \"$1.$2\")\n .replace(/(\\d{3})(\\d)/, \"$1/$2\")\n .replace(/(\\d{4})(\\d)/, \"$1-$2\");\n}\n\n/** Strip any masking and return only digits. */\nexport function unmask(value: string): string {\n return digitsOnly(value);\n}\n"],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"br-validators.cjs","names":["digitsOnly","value","validateCPF","digits","numbers","sum","i","check","validateCNPJ","weights1","weights2","formatCEP","formatCNPJ","unmask"],"sources":["../../src/forms/br-validators.ts"],"sourcesContent":["function digitsOnly(value: string): string {\n return value.replace(/\\D/g, \"\");\n}\n\n/**\n * Validate a Brazilian CPF using the standard check-digit algorithm.\n * Accepts masked or raw input; rejects all-equal digits (\"111.111.111-11\").\n */\nexport function validateCPF(value: string): boolean {\n const digits = digitsOnly(value);\n if (digits.length !== 11) return false;\n if (/^(\\d)\\1+$/.test(digits)) return false;\n\n const numbers = digits.split(\"\").map(Number);\n\n let sum = 0;\n for (let i = 0; i < 9; i++) sum += numbers[i]! * (10 - i);\n let check = (sum * 10) % 11;\n if (check === 10) check = 0;\n if (check !== numbers[9]) return false;\n\n sum = 0;\n for (let i = 0; i < 10; i++) sum += numbers[i]! * (11 - i);\n check = (sum * 10) % 11;\n if (check === 10) check = 0;\n return check === numbers[10];\n}\n\n/**\n * Validate a Brazilian CNPJ using the standard check-digit algorithm.\n * Accepts masked or raw input; rejects all-equal digits.\n */\nexport function validateCNPJ(value: string): boolean {\n const digits = digitsOnly(value);\n if (digits.length !== 14) return false;\n if (/^(\\d)\\1+$/.test(digits)) return false;\n\n const numbers = digits.split(\"\").map(Number);\n\n const weights1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n const weights2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n let sum = 0;\n for (let i = 0; i < 12; i++) sum += numbers[i]! * weights1[i]!;\n let check = sum % 11;\n check = check < 2 ? 0 : 11 - check;\n if (check !== numbers[12]) return false;\n\n sum = 0;\n for (let i = 0; i < 13; i++) sum += numbers[i]! * weights2[i]!;\n check = sum % 11;\n check = check < 2 ? 0 : 11 - check;\n return check === numbers[13];\n}\n\n/** Format an 11-digit Brazilian CEP-like value as `00000-000`. */\nexport function formatCEP(value: string): string {\n return digitsOnly(value)\n .slice(0, 8)\n .replace(/(\\d{5})(\\d)/, \"$1-$2\");\n}\n\n/** Format an unmasked CNPJ-shaped value as `00.000.000/0000-00`. */\nexport function formatCNPJ(value: string): string {\n return digitsOnly(value)\n .slice(0, 14)\n .replace(/(\\d{2})(\\d)/, \"$1.$2\")\n .replace(/(\\d{3})(\\d)/, \"$1.$2\")\n .replace(/(\\d{3})(\\d)/, \"$1/$2\")\n .replace(/(\\d{4})(\\d)/, \"$1-$2\");\n}\n\n/** Strip any masking and return only digits. */\nexport function unmask(value: string): string {\n return digitsOnly(value);\n}\n"],"mappings":"AAAA,SAASA,EAAW,EAAuB,CACvC,OAAOC,EAAM,QAAQ,MAAO,EAAE,CAClC,CAMA,SAAgBC,EAAY,EAAwB,CAChD,IAAMC,EAASH,EAAWC,CAAK,EAE/B,GADIE,EAAO,SAAW,IAClB,YAAY,KAAKA,CAAM,EAAG,MAAO,GAErC,IAAMC,EAAUD,EAAO,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,EAEvCE,EAAM,EACV,IAAK,IAAIC,EAAI,EAAGA,EAAI,EAAG,IAAK,GAAOF,EAAQE,IAAO,GAAKA,GACvD,IAAIC,EAASF,EAAM,GAAM,GAEzB,GADIE,IAAU,KAAI,EAAQ,GACtBA,IAAUH,EAAQ,GAAI,MAAO,GAEjC,EAAM,EACN,IAAK,IAAIE,EAAI,EAAGA,EAAI,GAAI,IAAK,GAAOF,EAAQE,IAAO,GAAKA,GAGxD,MAFA,GAASD,EAAM,GAAM,GACjBE,IAAU,KAAI,EAAQ,GACnBA,IAAUH,EAAQ,GAC7B,CAMA,SAAgBI,EAAa,EAAwB,CACjD,IAAML,EAASH,EAAWC,CAAK,EAE/B,GADIE,EAAO,SAAW,IAClB,YAAY,KAAKA,CAAM,EAAG,MAAO,GAErC,IAAMC,EAAUD,EAAO,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,EAErCM,EAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC9CC,EAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAEnDL,EAAM,EACV,IAAK,IAAIC,EAAI,EAAGA,EAAI,GAAI,IAAK,GAAOF,EAAQE,GAAMG,EAASH,GAC3D,IAAIC,EAAQF,EAAM,GAElB,GADA,EAAQE,EAAQ,EAAI,EAAI,GAAKA,EACzBA,IAAUH,EAAQ,IAAK,MAAO,GAElC,EAAM,EACN,IAAK,IAAIE,EAAI,EAAGA,EAAI,GAAI,IAAK,GAAOF,EAAQE,GAAMI,EAASJ,GAG3D,MAFA,GAAQD,EAAM,GACd,EAAQE,EAAQ,EAAI,EAAI,GAAKA,EACtBA,IAAUH,EAAQ,GAC7B,CAGA,SAAgBO,EAAU,EAAuB,CAC7C,OAAOX,EAAWC,CAAK,CAAC,CACnB,MAAM,EAAG,CAAC,CAAC,CACX,QAAQ,cAAe,OAAO,CACvC,CAGA,SAAgBW,EAAW,EAAuB,CAC9C,OAAOZ,EAAWC,CAAK,CAAC,CACnB,MAAM,EAAG,EAAE,CAAC,CACZ,QAAQ,cAAe,OAAO,CAAC,CAC/B,QAAQ,cAAe,OAAO,CAAC,CAC/B,QAAQ,cAAe,OAAO,CAAC,CAC/B,QAAQ,cAAe,OAAO,CACvC,CAGA,SAAgBY,EAAO,EAAuB,CAC1C,OAAOb,EAAWC,CAAK,CAC3B,C"}
|