@sentry/react-native 8.6.0 → 8.7.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/android/build.gradle +2 -2
- package/android/expo-handler/build.gradle +1 -1
- package/android/libs/replay-stubs.jar +0 -0
- package/android/replay-stubs/build.gradle +1 -1
- package/android/src/main/java/io/sentry/react/RNSentryFrameDelayCollector.java +128 -0
- package/android/src/main/java/io/sentry/react/RNSentryModuleImpl.java +48 -0
- package/android/src/main/java/io/sentry/react/RNSentryVersion.java +1 -1
- package/android/src/newarch/java/io/sentry/react/RNSentryModule.java +6 -0
- package/android/src/oldarch/java/io/sentry/react/RNSentryModule.java +6 -0
- package/dist/js/NativeLogListener.d.ts.map +1 -1
- package/dist/js/NativeLogListener.js.map +1 -1
- package/dist/js/NativeRNSentry.d.ts +1 -0
- package/dist/js/NativeRNSentry.d.ts.map +1 -1
- package/dist/js/NativeRNSentry.js.map +1 -1
- package/dist/js/RNSentryReplayMaskNativeComponent.d.ts.map +1 -1
- package/dist/js/RNSentryReplayMaskNativeComponent.js +1 -2
- package/dist/js/RNSentryReplayMaskNativeComponent.js.map +1 -1
- package/dist/js/RNSentryReplayUnmaskNativeComponent.d.ts.map +1 -1
- package/dist/js/RNSentryReplayUnmaskNativeComponent.js +1 -2
- package/dist/js/RNSentryReplayUnmaskNativeComponent.js.map +1 -1
- package/dist/js/breadcrumb.d.ts.map +1 -1
- package/dist/js/breadcrumb.js.map +1 -1
- package/dist/js/client.d.ts.map +1 -1
- package/dist/js/client.js +1 -1
- package/dist/js/client.js.map +1 -1
- package/dist/js/feedback/FeedbackButton.d.ts +2 -1
- package/dist/js/feedback/FeedbackButton.d.ts.map +1 -1
- package/dist/js/feedback/FeedbackButton.js +5 -4
- package/dist/js/feedback/FeedbackButton.js.map +1 -1
- package/dist/js/feedback/{FeedbackWidget.d.ts → FeedbackForm.d.ts} +5 -5
- package/dist/js/feedback/FeedbackForm.d.ts.map +1 -0
- package/dist/js/feedback/{FeedbackWidget.js → FeedbackForm.js} +26 -24
- package/dist/js/feedback/FeedbackForm.js.map +1 -0
- package/dist/js/feedback/FeedbackForm.styles.d.ts +11 -0
- package/dist/js/feedback/FeedbackForm.styles.d.ts.map +1 -0
- package/dist/js/feedback/{FeedbackWidget.styles.js → FeedbackForm.styles.js} +1 -1
- package/dist/js/feedback/FeedbackForm.styles.js.map +1 -0
- package/dist/js/feedback/{FeedbackWidget.theme.d.ts → FeedbackForm.theme.d.ts} +7 -5
- package/dist/js/feedback/FeedbackForm.theme.d.ts.map +1 -0
- package/dist/js/feedback/{FeedbackWidget.theme.js → FeedbackForm.theme.js} +1 -1
- package/dist/js/feedback/FeedbackForm.theme.js.map +1 -0
- package/{ts3.8/dist/js/feedback/FeedbackWidget.types.d.ts → dist/js/feedback/FeedbackForm.types.d.ts} +305 -299
- package/dist/js/feedback/FeedbackForm.types.d.ts.map +1 -0
- package/dist/js/feedback/FeedbackForm.types.js +2 -0
- package/dist/js/feedback/FeedbackForm.types.js.map +1 -0
- package/dist/js/feedback/{FeedbackWidgetManager.d.ts → FeedbackFormManager.d.ts} +12 -4
- package/dist/js/feedback/FeedbackFormManager.d.ts.map +1 -0
- package/dist/js/feedback/{FeedbackWidgetManager.js → FeedbackFormManager.js} +22 -13
- package/dist/js/feedback/FeedbackFormManager.js.map +1 -0
- package/dist/js/feedback/{FeedbackWidgetProvider.d.ts → FeedbackFormProvider.d.ts} +10 -10
- package/dist/js/feedback/FeedbackFormProvider.d.ts.map +1 -0
- package/dist/js/feedback/{FeedbackWidgetProvider.js → FeedbackFormProvider.js} +18 -15
- package/dist/js/feedback/FeedbackFormProvider.js.map +1 -0
- package/dist/js/feedback/ScreenshotButton.d.ts +1 -1
- package/dist/js/feedback/ScreenshotButton.d.ts.map +1 -1
- package/dist/js/feedback/ScreenshotButton.js +6 -5
- package/dist/js/feedback/ScreenshotButton.js.map +1 -1
- package/dist/js/feedback/ShakeToReportBug.d.ts.map +1 -1
- package/dist/js/feedback/ShakeToReportBug.js.map +1 -1
- package/dist/js/feedback/defaults.d.ts +2 -2
- package/dist/js/feedback/defaults.d.ts.map +1 -1
- package/dist/js/feedback/defaults.js.map +1 -1
- package/dist/js/feedback/integration.d.ts +11 -11
- package/dist/js/feedback/integration.d.ts.map +1 -1
- package/dist/js/feedback/integration.js.map +1 -1
- package/dist/js/feedback/lazy.d.ts +5 -0
- package/dist/js/feedback/lazy.d.ts.map +1 -1
- package/dist/js/feedback/lazy.js +12 -0
- package/dist/js/feedback/lazy.js.map +1 -1
- package/dist/js/feedback/utils.d.ts.map +1 -1
- package/dist/js/feedback/utils.js +1 -0
- package/dist/js/feedback/utils.js.map +1 -1
- package/dist/js/index.d.ts +12 -3
- package/dist/js/index.d.ts.map +1 -1
- package/dist/js/index.js +12 -3
- package/dist/js/index.js.map +1 -1
- package/dist/js/integrations/appRegistry.d.ts.map +1 -1
- package/dist/js/integrations/appRegistry.js.map +1 -1
- package/dist/js/integrations/breadcrumbs.d.ts.map +1 -1
- package/dist/js/integrations/breadcrumbs.js +1 -1
- package/dist/js/integrations/breadcrumbs.js.map +1 -1
- package/dist/js/integrations/debugsymbolicator.d.ts.map +1 -1
- package/dist/js/integrations/debugsymbolicator.js +1 -2
- package/dist/js/integrations/debugsymbolicator.js.map +1 -1
- package/dist/js/integrations/debugsymbolicatorutils.d.ts.map +1 -1
- package/dist/js/integrations/debugsymbolicatorutils.js.map +1 -1
- package/dist/js/integrations/default.d.ts.map +1 -1
- package/dist/js/integrations/default.js +0 -1
- package/dist/js/integrations/default.js.map +1 -1
- package/dist/js/integrations/devicecontext.d.ts.map +1 -1
- package/dist/js/integrations/devicecontext.js.map +1 -1
- package/dist/js/integrations/expoconstants.d.ts.map +1 -1
- package/dist/js/integrations/expoconstants.js.map +1 -1
- package/dist/js/integrations/expocontext.d.ts.map +1 -1
- package/dist/js/integrations/expocontext.js.map +1 -1
- package/dist/js/integrations/expoupdateslistener.d.ts.map +1 -1
- package/dist/js/integrations/expoupdateslistener.js +0 -1
- package/dist/js/integrations/expoupdateslistener.js.map +1 -1
- package/dist/js/integrations/graphql.d.ts.map +1 -1
- package/dist/js/integrations/graphql.js.map +1 -1
- package/dist/js/integrations/logEnricherIntegration.d.ts.map +1 -1
- package/dist/js/integrations/logEnricherIntegration.js.map +1 -1
- package/dist/js/integrations/modulesloader.d.ts.map +1 -1
- package/dist/js/integrations/modulesloader.js.map +1 -1
- package/dist/js/integrations/nativelinkederrors.d.ts.map +1 -1
- package/dist/js/integrations/nativelinkederrors.js +1 -1
- package/dist/js/integrations/nativelinkederrors.js.map +1 -1
- package/dist/js/integrations/primitiveTagIntegration.d.ts.map +1 -1
- package/dist/js/integrations/primitiveTagIntegration.js.map +1 -1
- package/dist/js/integrations/reactnativeerrorhandlers.d.ts.map +1 -1
- package/dist/js/integrations/reactnativeerrorhandlers.js +2 -1
- package/dist/js/integrations/reactnativeerrorhandlers.js.map +1 -1
- package/dist/js/integrations/reactnativeerrorhandlersutils.d.ts.map +1 -1
- package/dist/js/integrations/reactnativeerrorhandlersutils.js +0 -5
- package/dist/js/integrations/reactnativeerrorhandlersutils.js.map +1 -1
- package/dist/js/integrations/reactnativeinfo.d.ts.map +1 -1
- package/dist/js/integrations/reactnativeinfo.js.map +1 -1
- package/dist/js/integrations/release.d.ts.map +1 -1
- package/dist/js/integrations/release.js.map +1 -1
- package/dist/js/integrations/rewriteframes.d.ts.map +1 -1
- package/dist/js/integrations/rewriteframes.js.map +1 -1
- package/dist/js/integrations/screenshot.d.ts.map +1 -1
- package/dist/js/integrations/screenshot.js.map +1 -1
- package/dist/js/integrations/sdkinfo.d.ts.map +1 -1
- package/dist/js/integrations/sdkinfo.js.map +1 -1
- package/dist/js/integrations/spotlight.d.ts.map +1 -1
- package/dist/js/integrations/spotlight.js.map +1 -1
- package/dist/js/integrations/supabase.d.ts.map +1 -1
- package/dist/js/integrations/supabase.js.map +1 -1
- package/dist/js/integrations/viewhierarchy.d.ts.map +1 -1
- package/dist/js/integrations/viewhierarchy.js.map +1 -1
- package/dist/js/options.d.ts.map +1 -1
- package/dist/js/options.js.map +1 -1
- package/dist/js/playground/examples.d.ts.map +1 -1
- package/dist/js/playground/examples.js.map +1 -1
- package/dist/js/playground/modal.d.ts.map +1 -1
- package/dist/js/playground/modal.js +4 -102
- package/dist/js/playground/modal.js.map +1 -1
- package/dist/js/playground/modal.styles.d.ts +100 -0
- package/dist/js/playground/modal.styles.d.ts.map +1 -0
- package/dist/js/playground/modal.styles.js +98 -0
- package/dist/js/playground/modal.styles.js.map +1 -0
- package/dist/js/profiling/cache.js +2 -2
- package/dist/js/profiling/cache.js.map +1 -1
- package/dist/js/profiling/convertHermesProfile.d.ts.map +1 -1
- package/dist/js/profiling/convertHermesProfile.js.map +1 -1
- package/dist/js/profiling/debugid.d.ts.map +1 -1
- package/dist/js/profiling/debugid.js.map +1 -1
- package/dist/js/profiling/hermes.d.ts.map +1 -1
- package/dist/js/profiling/hermes.js.map +1 -1
- package/dist/js/profiling/integration.d.ts.map +1 -1
- package/dist/js/profiling/integration.js.map +1 -1
- package/dist/js/profiling/types.d.ts.map +1 -1
- package/dist/js/profiling/types.js.map +1 -1
- package/dist/js/profiling/utils.d.ts.map +1 -1
- package/dist/js/profiling/utils.js +1 -1
- package/dist/js/profiling/utils.js.map +1 -1
- package/dist/js/replay/CustomMask.d.ts +1 -1
- package/dist/js/replay/CustomMask.d.ts.map +1 -1
- package/dist/js/replay/CustomMask.js +1 -1
- package/dist/js/replay/CustomMask.js.map +1 -1
- package/dist/js/replay/CustomMask.web.d.ts +1 -1
- package/dist/js/replay/CustomMask.web.d.ts.map +1 -1
- package/dist/js/replay/CustomMask.web.js +2 -2
- package/dist/js/replay/CustomMask.web.js.map +1 -1
- package/dist/js/replay/browserReplay.d.ts.map +1 -1
- package/dist/js/replay/browserReplay.js +0 -2
- package/dist/js/replay/browserReplay.js.map +1 -1
- package/dist/js/replay/mobilereplay.d.ts.map +1 -1
- package/dist/js/replay/mobilereplay.js.map +1 -1
- package/dist/js/replay/xhrUtils.d.ts.map +1 -1
- package/dist/js/replay/xhrUtils.js.map +1 -1
- package/dist/js/scopeSync.d.ts.map +1 -1
- package/dist/js/scopeSync.js +1 -1
- package/dist/js/scopeSync.js.map +1 -1
- package/dist/js/sdk.d.ts +21 -0
- package/dist/js/sdk.d.ts.map +1 -1
- package/dist/js/sdk.js +38 -16
- package/dist/js/sdk.js.map +1 -1
- package/dist/js/tools/ModulesCollector.js +1 -1
- package/dist/js/tools/ModulesCollector.js.map +1 -1
- package/dist/js/tools/collectModules.js +0 -1
- package/dist/js/tools/collectModules.js.map +1 -1
- package/dist/js/tools/easBuildHooks.d.ts.map +1 -1
- package/dist/js/tools/easBuildHooks.js.map +1 -1
- package/dist/js/tools/metroMiddleware.d.ts.map +1 -1
- package/dist/js/tools/metroMiddleware.js.map +1 -1
- package/dist/js/tools/metroconfig.d.ts.map +1 -1
- package/dist/js/tools/metroconfig.js +4 -5
- package/dist/js/tools/metroconfig.js.map +1 -1
- package/dist/js/tools/sentryBabelTransformerUtils.d.ts.map +1 -1
- package/dist/js/tools/sentryBabelTransformerUtils.js +2 -3
- package/dist/js/tools/sentryBabelTransformerUtils.js.map +1 -1
- package/dist/js/tools/sentryMetroSerializer.d.ts.map +1 -1
- package/dist/js/tools/sentryMetroSerializer.js +4 -5
- package/dist/js/tools/sentryMetroSerializer.js.map +1 -1
- package/dist/js/tools/sentryOptionsSerializer.d.ts.map +1 -1
- package/dist/js/tools/sentryOptionsSerializer.js +2 -3
- package/dist/js/tools/sentryOptionsSerializer.js.map +1 -1
- package/dist/js/tools/sentryReleaseInjector.d.ts.map +1 -1
- package/dist/js/tools/sentryReleaseInjector.js.map +1 -1
- package/dist/js/tools/utils.d.ts.map +1 -1
- package/dist/js/tools/utils.js +0 -3
- package/dist/js/tools/utils.js.map +1 -1
- package/dist/js/tools/vendor/metro/utils.d.ts.map +1 -1
- package/dist/js/tools/vendor/metro/utils.js +5 -5
- package/dist/js/tools/vendor/metro/utils.js.map +1 -1
- package/dist/js/touchevents.d.ts.map +1 -1
- package/dist/js/touchevents.js +19 -21
- package/dist/js/touchevents.js.map +1 -1
- package/dist/js/tracing/expoImage.d.ts.map +1 -1
- package/dist/js/tracing/expoImage.js +1 -1
- package/dist/js/tracing/expoImage.js.map +1 -1
- package/dist/js/tracing/expoRouter.d.ts.map +1 -1
- package/dist/js/tracing/expoRouter.js.map +1 -1
- package/dist/js/tracing/gesturetracing.d.ts.map +1 -1
- package/dist/js/tracing/gesturetracing.js.map +1 -1
- package/dist/js/tracing/integrations/appStart.d.ts +18 -0
- package/dist/js/tracing/integrations/appStart.d.ts.map +1 -1
- package/dist/js/tracing/integrations/appStart.js +141 -6
- package/dist/js/tracing/integrations/appStart.js.map +1 -1
- package/dist/js/tracing/integrations/nativeFrames.d.ts.map +1 -1
- package/dist/js/tracing/integrations/nativeFrames.js +43 -0
- package/dist/js/tracing/integrations/nativeFrames.js.map +1 -1
- package/dist/js/tracing/integrations/stalltracking.d.ts.map +1 -1
- package/dist/js/tracing/integrations/stalltracking.js +0 -1
- package/dist/js/tracing/integrations/stalltracking.js.map +1 -1
- package/dist/js/tracing/integrations/timeToDisplayIntegration.d.ts.map +1 -1
- package/dist/js/tracing/integrations/timeToDisplayIntegration.js +1 -1
- package/dist/js/tracing/integrations/timeToDisplayIntegration.js.map +1 -1
- package/dist/js/tracing/integrations/userInteraction.d.ts.map +1 -1
- package/dist/js/tracing/integrations/userInteraction.js.map +1 -1
- package/dist/js/tracing/onSpanEndUtils.d.ts.map +1 -1
- package/dist/js/tracing/onSpanEndUtils.js +23 -1
- package/dist/js/tracing/onSpanEndUtils.js.map +1 -1
- package/dist/js/tracing/reactnativenavigation.d.ts.map +1 -1
- package/dist/js/tracing/reactnativenavigation.js.map +1 -1
- package/dist/js/tracing/reactnativeprofiler.d.ts.map +1 -1
- package/dist/js/tracing/reactnativeprofiler.js +2 -2
- package/dist/js/tracing/reactnativeprofiler.js.map +1 -1
- package/dist/js/tracing/reactnativetracing.d.ts.map +1 -1
- package/dist/js/tracing/reactnativetracing.js +0 -1
- package/dist/js/tracing/reactnativetracing.js.map +1 -1
- package/dist/js/tracing/reactnavigation.d.ts.map +1 -1
- package/dist/js/tracing/reactnavigation.js +2 -2
- package/dist/js/tracing/reactnavigation.js.map +1 -1
- package/dist/js/tracing/span.d.ts.map +1 -1
- package/dist/js/tracing/span.js +1 -1
- package/dist/js/tracing/span.js.map +1 -1
- package/dist/js/tracing/timetodisplay.d.ts.map +1 -1
- package/dist/js/tracing/timetodisplay.js +42 -19
- package/dist/js/tracing/timetodisplay.js.map +1 -1
- package/dist/js/tracing/timetodisplaynative.d.ts +1 -1
- package/dist/js/tracing/timetodisplaynative.d.ts.map +1 -1
- package/dist/js/tracing/timetodisplaynative.js +5 -4
- package/dist/js/tracing/timetodisplaynative.js.map +1 -1
- package/dist/js/tracing/types.js.map +1 -1
- package/dist/js/tracing/utils.d.ts.map +1 -1
- package/dist/js/tracing/utils.js.map +1 -1
- package/dist/js/transports/native.d.ts.map +1 -1
- package/dist/js/transports/native.js.map +1 -1
- package/dist/js/utils/envelope.d.ts.map +1 -1
- package/dist/js/utils/envelope.js.map +1 -1
- package/dist/js/utils/environment.d.ts.map +1 -1
- package/dist/js/utils/environment.js.map +1 -1
- package/dist/js/utils/expomodules.d.ts.map +1 -1
- package/dist/js/utils/expomodules.js.map +1 -1
- package/dist/js/utils/fill.js +1 -1
- package/dist/js/utils/fill.js.map +1 -1
- package/dist/js/utils/normalize.js +2 -2
- package/dist/js/utils/normalize.js.map +1 -1
- package/dist/js/utils/rnlibraries.d.ts.map +1 -1
- package/dist/js/utils/rnlibraries.js +1 -7
- package/dist/js/utils/rnlibraries.js.map +1 -1
- package/dist/js/utils/safe.d.ts.map +1 -1
- package/dist/js/utils/safe.js.map +1 -1
- package/dist/js/utils/span.d.ts.map +1 -1
- package/dist/js/utils/span.js.map +1 -1
- package/dist/js/utils/worldwide.d.ts.map +1 -1
- package/dist/js/utils/worldwide.js.map +1 -1
- package/dist/js/vendor/base64-js/fromByteArray.js +1 -1
- package/dist/js/vendor/base64-js/fromByteArray.js.map +1 -1
- package/dist/js/vendor/buffer/utf8ToBytes.js +1 -1
- package/dist/js/vendor/buffer/utf8ToBytes.js.map +1 -1
- package/dist/js/vendor/react-native/index.d.ts.map +1 -1
- package/dist/js/vendor/react-native/index.js.map +1 -1
- package/dist/js/version.d.ts +1 -1
- package/dist/js/version.js +1 -1
- package/dist/js/version.js.map +1 -1
- package/dist/js/wrapper.d.ts +1 -0
- package/dist/js/wrapper.d.ts.map +1 -1
- package/dist/js/wrapper.js +16 -4
- package/dist/js/wrapper.js.map +1 -1
- package/ios/RNSentry.mm +18 -1
- package/ios/RNSentryReplay.mm +1 -1
- package/ios/RNSentrySDK.m +1 -1
- package/ios/RNSentryTimeToDisplay.m +48 -32
- package/ios/RNSentryVersion.m +1 -1
- package/ios/SentryScreenFramesWrapper.h +2 -0
- package/ios/SentryScreenFramesWrapper.m +35 -0
- package/package.json +17 -21
- package/plugin/build/logger.js +1 -1
- package/plugin/build/utils.js +2 -0
- package/plugin/build/withSentry.js +1 -2
- package/plugin/build/withSentryAndroid.js +2 -0
- package/plugin/build/withSentryAndroidGradlePlugin.d.ts +1 -1
- package/plugin/build/withSentryAndroidGradlePlugin.js +1 -1
- package/plugin/build/withSentryIOS.js +1 -3
- package/scripts/eas-build-hook.js +0 -2
- package/scripts/expo-upload-sourcemaps.js +0 -1
- package/src/js/NativeRNSentry.ts +3 -0
- package/src/js/RNSentryReplayMaskNativeComponent.ts +2 -3
- package/src/js/RNSentryReplayUnmaskNativeComponent.ts +2 -3
- package/ts3.8/dist/js/NativeRNSentry.d.ts +1 -0
- package/ts3.8/dist/js/feedback/FeedbackButton.d.ts +2 -1
- package/ts3.8/dist/js/feedback/{FeedbackWidget.d.ts → FeedbackForm.d.ts} +5 -5
- package/ts3.8/dist/js/feedback/FeedbackForm.styles.d.ts +11 -0
- package/ts3.8/dist/js/feedback/{FeedbackWidget.theme.d.ts → FeedbackForm.theme.d.ts} +7 -5
- package/{dist/js/feedback/FeedbackWidget.types.d.ts → ts3.8/dist/js/feedback/FeedbackForm.types.d.ts} +305 -299
- package/ts3.8/dist/js/feedback/{FeedbackWidgetManager.d.ts → FeedbackFormManager.d.ts} +12 -4
- package/ts3.8/dist/js/feedback/{FeedbackWidgetProvider.d.ts → FeedbackFormProvider.d.ts} +10 -10
- package/ts3.8/dist/js/feedback/ScreenshotButton.d.ts +1 -1
- package/ts3.8/dist/js/feedback/defaults.d.ts +2 -2
- package/ts3.8/dist/js/feedback/integration.d.ts +11 -11
- package/ts3.8/dist/js/feedback/lazy.d.ts +5 -0
- package/ts3.8/dist/js/index.d.ts +12 -3
- package/ts3.8/dist/js/playground/modal.styles.d.ts +100 -0
- package/ts3.8/dist/js/replay/CustomMask.d.ts +1 -1
- package/ts3.8/dist/js/replay/CustomMask.web.d.ts +1 -1
- package/ts3.8/dist/js/sdk.d.ts +21 -0
- package/ts3.8/dist/js/tracing/integrations/appStart.d.ts +18 -0
- package/ts3.8/dist/js/tracing/timetodisplaynative.d.ts +1 -1
- package/ts3.8/dist/js/version.d.ts +1 -1
- package/ts3.8/dist/js/wrapper.d.ts +1 -0
- package/dist/js/feedback/FeedbackWidget.d.ts.map +0 -1
- package/dist/js/feedback/FeedbackWidget.js.map +0 -1
- package/dist/js/feedback/FeedbackWidget.styles.d.ts +0 -11
- package/dist/js/feedback/FeedbackWidget.styles.d.ts.map +0 -1
- package/dist/js/feedback/FeedbackWidget.styles.js.map +0 -1
- package/dist/js/feedback/FeedbackWidget.theme.d.ts.map +0 -1
- package/dist/js/feedback/FeedbackWidget.theme.js.map +0 -1
- package/dist/js/feedback/FeedbackWidget.types.d.ts.map +0 -1
- package/dist/js/feedback/FeedbackWidget.types.js +0 -2
- package/dist/js/feedback/FeedbackWidget.types.js.map +0 -1
- package/dist/js/feedback/FeedbackWidgetManager.d.ts.map +0 -1
- package/dist/js/feedback/FeedbackWidgetManager.js.map +0 -1
- package/dist/js/feedback/FeedbackWidgetProvider.d.ts.map +0 -1
- package/dist/js/feedback/FeedbackWidgetProvider.js.map +0 -1
- package/ts3.8/dist/js/feedback/FeedbackWidget.styles.d.ts +0 -11
|
@@ -15,14 +15,16 @@ declare abstract class FeedbackManager {
|
|
|
15
15
|
static isFormVisible(): boolean;
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
|
-
* Provides functionality to show and hide the feedback
|
|
18
|
+
* Provides functionality to show and hide the feedback form.
|
|
19
19
|
*/
|
|
20
|
-
export declare class
|
|
20
|
+
export declare class FeedbackFormManager extends FeedbackManager {
|
|
21
21
|
/**
|
|
22
22
|
* Returns the name of the feedback component.
|
|
23
23
|
*/
|
|
24
24
|
protected static get _feedbackComponentName(): string;
|
|
25
25
|
}
|
|
26
|
+
/** @deprecated Use `FeedbackFormManager` instead. */
|
|
27
|
+
export declare const FeedbackWidgetManager: typeof FeedbackFormManager;
|
|
26
28
|
/**
|
|
27
29
|
* Provides functionality to show and hide the feedback button.
|
|
28
30
|
*/
|
|
@@ -41,9 +43,15 @@ export declare class ScreenshotButtonManager extends FeedbackManager {
|
|
|
41
43
|
*/
|
|
42
44
|
protected static get _feedbackComponentName(): string;
|
|
43
45
|
}
|
|
46
|
+
declare const showFeedbackForm: () => void;
|
|
47
|
+
declare const resetFeedbackFormManager: () => void;
|
|
48
|
+
/** @deprecated Use `showFeedbackForm` instead. */
|
|
44
49
|
declare const showFeedbackWidget: () => void;
|
|
50
|
+
/** @deprecated Use `resetFeedbackFormManager` instead. */
|
|
45
51
|
declare const resetFeedbackWidgetManager: () => void;
|
|
52
|
+
/** @deprecated `showFeedbackButton` will be removed in a future major version. */
|
|
46
53
|
declare const showFeedbackButton: () => void;
|
|
54
|
+
/** @deprecated `hideFeedbackButton` will be removed in a future major version. */
|
|
47
55
|
declare const hideFeedbackButton: () => void;
|
|
48
56
|
declare const resetFeedbackButtonManager: () => void;
|
|
49
57
|
declare const showScreenshotButton: () => void;
|
|
@@ -51,5 +59,5 @@ declare const hideScreenshotButton: () => void;
|
|
|
51
59
|
declare const resetScreenshotButtonManager: () => void;
|
|
52
60
|
declare const enableFeedbackOnShake: () => void;
|
|
53
61
|
declare const disableFeedbackOnShake: () => void;
|
|
54
|
-
export { showFeedbackButton, hideFeedbackButton, showFeedbackWidget, enableFeedbackOnShake, disableFeedbackOnShake, showScreenshotButton, hideScreenshotButton, resetFeedbackButtonManager, resetFeedbackWidgetManager, resetScreenshotButtonManager };
|
|
55
|
-
//# sourceMappingURL=
|
|
62
|
+
export { showFeedbackButton, hideFeedbackButton, showFeedbackForm, showFeedbackWidget, enableFeedbackOnShake, disableFeedbackOnShake, showScreenshotButton, hideScreenshotButton, resetFeedbackButtonManager, resetFeedbackFormManager, resetFeedbackWidgetManager, resetScreenshotButtonManager, };
|
|
63
|
+
//# sourceMappingURL=FeedbackFormManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedbackFormManager.d.ts","sourceRoot":"","sources":["../../../src/js/feedback/FeedbackFormManager.tsx"],"names":[],"mappings":"AAWA,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAMjD,uBAAe,eAAe;IAC5B,SAAS,CAAC,MAAM,CAAC,UAAU,UAAS;IACpC,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAE5D,SAAS,CAAC,MAAM,KAAK,sBAAsB,IAAI,MAAM,CAEpD;WAEa,UAAU,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAIzE;;OAEG;WACW,KAAK,IAAI,IAAI;WAKb,IAAI,IAAI,IAAI;WAaZ,IAAI,IAAI,IAAI;WAaZ,aAAa,IAAI,OAAO;CAGvC;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,eAAe;IACtD;;OAEG;IACH,SAAS,CAAC,MAAM,KAAK,sBAAsB,IAAI,MAAM,CAEpD;CACF;AAED,qDAAqD;AACrD,eAAO,MAAM,qBAAqB,4BAAsB,CAAC;AAEzD;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,eAAe;IACxD;;OAEG;IACH,SAAS,CAAC,MAAM,KAAK,sBAAsB,IAAI,MAAM,CAEpD;CACF;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,eAAe;IAC1D;;OAEG;IACH,SAAS,CAAC,MAAM,KAAK,sBAAsB,IAAI,MAAM,CAEpD;CACF;AAED,QAAA,MAAM,gBAAgB,QAAO,IAG5B,CAAC;AAEF,QAAA,MAAM,wBAAwB,QAAO,IAEpC,CAAC;AAEF,kDAAkD;AAClD,QAAA,MAAM,kBAAkB,QAVK,IAUc,CAAC;AAE5C,0DAA0D;AAC1D,QAAA,MAAM,0BAA0B,QARK,IAQsB,CAAC;AAE5D,kFAAkF;AAClF,QAAA,MAAM,kBAAkB,QAAO,IAG9B,CAAC;AAEF,kFAAkF;AAClF,QAAA,MAAM,kBAAkB,QAAO,IAE9B,CAAC;AAEF,QAAA,MAAM,0BAA0B,QAAO,IAEtC,CAAC;AAEF,QAAA,MAAM,oBAAoB,QAAO,IAOhC,CAAC;AAEF,QAAA,MAAM,oBAAoB,QAAO,IAEhC,CAAC;AAEF,QAAA,MAAM,4BAA4B,QAAO,IAExC,CAAC;AAIF,QAAA,MAAM,qBAAqB,QAAO,IAMjC,CAAC;AAEF,QAAA,MAAM,sBAAsB,QAAO,IAKlC,CAAC;AAEF,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,GAC7B,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { debug } from '@sentry/core';
|
|
2
2
|
import { isWeb } from '../utils/environment';
|
|
3
|
-
import { lazyLoadAutoInjectFeedbackButtonIntegration, lazyLoadAutoInjectFeedbackIntegration, lazyLoadAutoInjectScreenshotButtonIntegration } from './lazy';
|
|
3
|
+
import { lazyLoadAutoInjectFeedbackButtonIntegration, lazyLoadAutoInjectFeedbackIntegration, lazyLoadAutoInjectScreenshotButtonIntegration, lazyLoadShakeToReportIntegration, } from './lazy';
|
|
4
4
|
import { startShakeListener, stopShakeListener } from './ShakeToReportBug';
|
|
5
5
|
export const PULL_DOWN_CLOSE_THRESHOLD = 200;
|
|
6
6
|
export const SLIDE_ANIMATION_DURATION = 200;
|
|
@@ -29,7 +29,7 @@ class FeedbackManager {
|
|
|
29
29
|
}
|
|
30
30
|
else {
|
|
31
31
|
// This message should be always shown otherwise it's not possible to use the widget.
|
|
32
|
-
//
|
|
32
|
+
// oxlint-disable-next-line eslint(no-console)
|
|
33
33
|
console.warn(`[Sentry] ${this._feedbackComponentName} requires 'Sentry.wrap(RootComponent)' to be called before 'show${this._feedbackComponentName}()'.`);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -40,7 +40,7 @@ class FeedbackManager {
|
|
|
40
40
|
}
|
|
41
41
|
else {
|
|
42
42
|
// This message should be always shown otherwise it's not possible to use the widget.
|
|
43
|
-
//
|
|
43
|
+
// oxlint-disable-next-line eslint(no-console)
|
|
44
44
|
console.warn(`[Sentry] ${this._feedbackComponentName} requires 'Sentry.wrap(RootComponent)' before interacting with the widget.`);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
@@ -50,16 +50,18 @@ class FeedbackManager {
|
|
|
50
50
|
}
|
|
51
51
|
FeedbackManager._isVisible = false;
|
|
52
52
|
/**
|
|
53
|
-
* Provides functionality to show and hide the feedback
|
|
53
|
+
* Provides functionality to show and hide the feedback form.
|
|
54
54
|
*/
|
|
55
|
-
export class
|
|
55
|
+
export class FeedbackFormManager extends FeedbackManager {
|
|
56
56
|
/**
|
|
57
57
|
* Returns the name of the feedback component.
|
|
58
58
|
*/
|
|
59
59
|
static get _feedbackComponentName() {
|
|
60
|
-
return '
|
|
60
|
+
return 'FeedbackForm';
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
+
/** @deprecated Use `FeedbackFormManager` instead. */
|
|
64
|
+
export const FeedbackWidgetManager = FeedbackFormManager;
|
|
63
65
|
/**
|
|
64
66
|
* Provides functionality to show and hide the feedback button.
|
|
65
67
|
*/
|
|
@@ -82,17 +84,23 @@ export class ScreenshotButtonManager extends FeedbackManager {
|
|
|
82
84
|
return 'ScreenshotButton';
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
|
-
const
|
|
87
|
+
const showFeedbackForm = () => {
|
|
86
88
|
lazyLoadAutoInjectFeedbackIntegration();
|
|
87
|
-
|
|
89
|
+
FeedbackFormManager.show();
|
|
88
90
|
};
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
+
const resetFeedbackFormManager = () => {
|
|
92
|
+
FeedbackFormManager.reset();
|
|
91
93
|
};
|
|
94
|
+
/** @deprecated Use `showFeedbackForm` instead. */
|
|
95
|
+
const showFeedbackWidget = showFeedbackForm;
|
|
96
|
+
/** @deprecated Use `resetFeedbackFormManager` instead. */
|
|
97
|
+
const resetFeedbackWidgetManager = resetFeedbackFormManager;
|
|
98
|
+
/** @deprecated `showFeedbackButton` will be removed in a future major version. */
|
|
92
99
|
const showFeedbackButton = () => {
|
|
93
100
|
lazyLoadAutoInjectFeedbackButtonIntegration();
|
|
94
101
|
FeedbackButtonManager.show();
|
|
95
102
|
};
|
|
103
|
+
/** @deprecated `hideFeedbackButton` will be removed in a future major version. */
|
|
96
104
|
const hideFeedbackButton = () => {
|
|
97
105
|
FeedbackButtonManager.hide();
|
|
98
106
|
};
|
|
@@ -116,8 +124,9 @@ const resetScreenshotButtonManager = () => {
|
|
|
116
124
|
let _imperativeShakeListenerStarted = false;
|
|
117
125
|
const enableFeedbackOnShake = () => {
|
|
118
126
|
lazyLoadAutoInjectFeedbackIntegration();
|
|
127
|
+
lazyLoadShakeToReportIntegration();
|
|
119
128
|
if (!_imperativeShakeListenerStarted) {
|
|
120
|
-
_imperativeShakeListenerStarted = startShakeListener(
|
|
129
|
+
_imperativeShakeListenerStarted = startShakeListener(showFeedbackForm);
|
|
121
130
|
}
|
|
122
131
|
};
|
|
123
132
|
const disableFeedbackOnShake = () => {
|
|
@@ -126,5 +135,5 @@ const disableFeedbackOnShake = () => {
|
|
|
126
135
|
_imperativeShakeListenerStarted = false;
|
|
127
136
|
}
|
|
128
137
|
};
|
|
129
|
-
export { showFeedbackButton, hideFeedbackButton, showFeedbackWidget, enableFeedbackOnShake, disableFeedbackOnShake, showScreenshotButton, hideScreenshotButton, resetFeedbackButtonManager, resetFeedbackWidgetManager, resetScreenshotButtonManager };
|
|
130
|
-
//# sourceMappingURL=
|
|
138
|
+
export { showFeedbackButton, hideFeedbackButton, showFeedbackForm, showFeedbackWidget, enableFeedbackOnShake, disableFeedbackOnShake, showScreenshotButton, hideScreenshotButton, resetFeedbackButtonManager, resetFeedbackFormManager, resetFeedbackWidgetManager, resetScreenshotButtonManager, };
|
|
139
|
+
//# sourceMappingURL=FeedbackFormManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedbackFormManager.js","sourceRoot":"","sources":["../../../src/js/feedback/FeedbackFormManager.tsx"],"names":[],"mappings":"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","sourcesContent":["import { debug } from '@sentry/core';\n\nimport { isWeb } from '../utils/environment';\nimport {\n lazyLoadAutoInjectFeedbackButtonIntegration,\n lazyLoadAutoInjectFeedbackIntegration,\n lazyLoadAutoInjectScreenshotButtonIntegration,\n lazyLoadShakeToReportIntegration,\n} from './lazy';\nimport { startShakeListener, stopShakeListener } from './ShakeToReportBug';\n\nexport const PULL_DOWN_CLOSE_THRESHOLD = 200;\nexport const SLIDE_ANIMATION_DURATION = 200;\nexport const BACKGROUND_ANIMATION_DURATION = 200;\n\nconst NOOP_SET_VISIBILITY = (): void => {\n // No-op\n};\n\nabstract class FeedbackManager {\n protected static _isVisible = false;\n protected static _setVisibility: (visible: boolean) => void;\n\n protected static get _feedbackComponentName(): string {\n throw new Error('Subclasses must override feedbackComponentName');\n }\n\n public static initialize(setVisibility: (visible: boolean) => void): void {\n this._setVisibility = setVisibility;\n }\n\n /**\n * For testing purposes only.\n */\n public static reset(): void {\n this._isVisible = false;\n this._setVisibility = NOOP_SET_VISIBILITY;\n }\n\n public static show(): void {\n if (this._setVisibility !== NOOP_SET_VISIBILITY) {\n this._isVisible = true;\n this._setVisibility(true);\n } else {\n // This message should be always shown otherwise it's not possible to use the widget.\n // oxlint-disable-next-line eslint(no-console)\n console.warn(\n `[Sentry] ${this._feedbackComponentName} requires 'Sentry.wrap(RootComponent)' to be called before 'show${this._feedbackComponentName}()'.`,\n );\n }\n }\n\n public static hide(): void {\n if (this._setVisibility !== NOOP_SET_VISIBILITY) {\n this._isVisible = false;\n this._setVisibility(false);\n } else {\n // This message should be always shown otherwise it's not possible to use the widget.\n // oxlint-disable-next-line eslint(no-console)\n console.warn(\n `[Sentry] ${this._feedbackComponentName} requires 'Sentry.wrap(RootComponent)' before interacting with the widget.`,\n );\n }\n }\n\n public static isFormVisible(): boolean {\n return this._isVisible;\n }\n}\n\n/**\n * Provides functionality to show and hide the feedback form.\n */\nexport class FeedbackFormManager extends FeedbackManager {\n /**\n * Returns the name of the feedback component.\n */\n protected static get _feedbackComponentName(): string {\n return 'FeedbackForm';\n }\n}\n\n/** @deprecated Use `FeedbackFormManager` instead. */\nexport const FeedbackWidgetManager = FeedbackFormManager;\n\n/**\n * Provides functionality to show and hide the feedback button.\n */\nexport class FeedbackButtonManager extends FeedbackManager {\n /**\n * Returns the name of the feedback component.\n */\n protected static get _feedbackComponentName(): string {\n return 'FeedbackButton';\n }\n}\n\n/**\n * Provides functionality to show and hide the screenshot button.\n */\nexport class ScreenshotButtonManager extends FeedbackManager {\n /**\n * Returns the name of the feedback component.\n */\n protected static get _feedbackComponentName(): string {\n return 'ScreenshotButton';\n }\n}\n\nconst showFeedbackForm = (): void => {\n lazyLoadAutoInjectFeedbackIntegration();\n FeedbackFormManager.show();\n};\n\nconst resetFeedbackFormManager = (): void => {\n FeedbackFormManager.reset();\n};\n\n/** @deprecated Use `showFeedbackForm` instead. */\nconst showFeedbackWidget = showFeedbackForm;\n\n/** @deprecated Use `resetFeedbackFormManager` instead. */\nconst resetFeedbackWidgetManager = resetFeedbackFormManager;\n\n/** @deprecated `showFeedbackButton` will be removed in a future major version. */\nconst showFeedbackButton = (): void => {\n lazyLoadAutoInjectFeedbackButtonIntegration();\n FeedbackButtonManager.show();\n};\n\n/** @deprecated `hideFeedbackButton` will be removed in a future major version. */\nconst hideFeedbackButton = (): void => {\n FeedbackButtonManager.hide();\n};\n\nconst resetFeedbackButtonManager = (): void => {\n FeedbackButtonManager.reset();\n};\n\nconst showScreenshotButton = (): void => {\n if (isWeb()) {\n debug.warn('ScreenshotButton is not supported on Web.');\n return;\n }\n lazyLoadAutoInjectScreenshotButtonIntegration();\n ScreenshotButtonManager.show();\n};\n\nconst hideScreenshotButton = (): void => {\n ScreenshotButtonManager.hide();\n};\n\nconst resetScreenshotButtonManager = (): void => {\n ScreenshotButtonManager.reset();\n};\n\nlet _imperativeShakeListenerStarted = false;\n\nconst enableFeedbackOnShake = (): void => {\n lazyLoadAutoInjectFeedbackIntegration();\n lazyLoadShakeToReportIntegration();\n if (!_imperativeShakeListenerStarted) {\n _imperativeShakeListenerStarted = startShakeListener(showFeedbackForm);\n }\n};\n\nconst disableFeedbackOnShake = (): void => {\n if (_imperativeShakeListenerStarted) {\n stopShakeListener();\n _imperativeShakeListenerStarted = false;\n }\n};\n\nexport {\n showFeedbackButton,\n hideFeedbackButton,\n showFeedbackForm,\n showFeedbackWidget,\n enableFeedbackOnShake,\n disableFeedbackOnShake,\n showScreenshotButton,\n hideScreenshotButton,\n resetFeedbackButtonManager,\n resetFeedbackFormManager,\n resetFeedbackWidgetManager,\n resetScreenshotButtonManager,\n};\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { Animated } from 'react-native';
|
|
3
|
-
import type {
|
|
4
|
-
export interface
|
|
3
|
+
import type { FeedbackFormStyles } from './FeedbackForm.types';
|
|
4
|
+
export interface FeedbackFormProviderProps {
|
|
5
5
|
children: React.ReactNode;
|
|
6
|
-
styles?:
|
|
6
|
+
styles?: FeedbackFormStyles;
|
|
7
7
|
}
|
|
8
|
-
export interface
|
|
8
|
+
export interface FeedbackFormProviderState {
|
|
9
9
|
isButtonVisible: boolean;
|
|
10
10
|
isScreenshotButtonVisible: boolean;
|
|
11
11
|
isVisible: boolean;
|
|
@@ -14,16 +14,16 @@ export interface FeedbackWidgetProviderState {
|
|
|
14
14
|
isScrollAtTop: boolean;
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* FeedbackFormProvider is a component that wraps the feedback widget and provides
|
|
18
18
|
* functionality to show and hide the widget. It also manages the visibility of the
|
|
19
19
|
* feedback button and screenshot button.
|
|
20
20
|
*/
|
|
21
|
-
export declare class
|
|
22
|
-
state:
|
|
21
|
+
export declare class FeedbackFormProvider extends React.Component<FeedbackFormProviderProps> {
|
|
22
|
+
state: FeedbackFormProviderState;
|
|
23
23
|
private _themeListener;
|
|
24
24
|
private _startedShakeListener;
|
|
25
25
|
private _panResponder;
|
|
26
|
-
constructor(props:
|
|
26
|
+
constructor(props: FeedbackFormProviderProps);
|
|
27
27
|
/**
|
|
28
28
|
* Add a listener to the theme change event and start shake detection if configured.
|
|
29
29
|
*/
|
|
@@ -35,7 +35,7 @@ export declare class FeedbackWidgetProvider extends React.Component<FeedbackWidg
|
|
|
35
35
|
/**
|
|
36
36
|
* Animates the background opacity when the modal is shown.
|
|
37
37
|
*/
|
|
38
|
-
componentDidUpdate(_prevProps: any, prevState:
|
|
38
|
+
componentDidUpdate(_prevProps: any, prevState: FeedbackFormProviderState): void;
|
|
39
39
|
/**
|
|
40
40
|
* Renders the feedback form modal.
|
|
41
41
|
*/
|
|
@@ -46,4 +46,4 @@ export declare class FeedbackWidgetProvider extends React.Component<FeedbackWidg
|
|
|
46
46
|
private _setScreenshotButtonVisibilityFunction;
|
|
47
47
|
private _handleClose;
|
|
48
48
|
}
|
|
49
|
-
//# sourceMappingURL=
|
|
49
|
+
//# sourceMappingURL=FeedbackFormProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedbackFormProvider.d.ts","sourceRoot":"","sources":["../../../src/js/feedback/FeedbackFormProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,QAAQ,EAYT,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AA6B/D,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,eAAe,EAAE,OAAO,CAAC;IACzB,yBAAyB,EAAE,OAAO,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC;IAClC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,KAAK,CAAC,SAAS,CAAC,yBAAyB,CAAC;IAC3E,KAAK,EAAE,yBAAyB,CAOrC;IAEF,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,qBAAqB,CAAkB;IAE/C,OAAO,CAAC,aAAa,CA8BlB;gBAEgB,KAAK,EAAE,yBAAyB;IAOnD;;OAEG;IACI,iBAAiB,IAAI,IAAI;IAWhC;;OAEG;IACI,oBAAoB,IAAI,IAAI;IAUnC;;OAEG;IAEI,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,yBAAyB,GAAG,IAAI;IAuBtF;;OAEG;IACI,MAAM,IAAI,KAAK,CAAC,SAAS;IAwDhC,OAAO,CAAC,aAAa,CAEnB;IAEF,OAAO,CAAC,sBAAsB,CA0B5B;IAEF,OAAO,CAAC,4BAA4B,CAElC;IAEF,OAAO,CAAC,sCAAsC,CAE5C;IAEF,OAAO,CAAC,YAAY,CAElB;CACH"}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { debug } from '@sentry/core';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { Animated, Appearance, Dimensions, Easing, Modal, PanResponder, Platform, ScrollView, View } from 'react-native';
|
|
3
|
+
import { Animated, Appearance, Dimensions, Easing, Modal, PanResponder, Platform, ScrollView, View, } from 'react-native';
|
|
4
4
|
import { notWeb } from '../utils/environment';
|
|
5
5
|
import { FeedbackButton } from './FeedbackButton';
|
|
6
|
-
import {
|
|
7
|
-
import { modalSheetContainer, modalWrapper, topSpacer } from './
|
|
8
|
-
import { getTheme } from './
|
|
9
|
-
import { BACKGROUND_ANIMATION_DURATION, FeedbackButtonManager,
|
|
10
|
-
import { getFeedbackButtonOptions, getFeedbackOptions, getScreenshotButtonOptions, isShakeToReportEnabled } from './integration';
|
|
6
|
+
import { FeedbackForm } from './FeedbackForm';
|
|
7
|
+
import { modalSheetContainer, modalWrapper, topSpacer } from './FeedbackForm.styles';
|
|
8
|
+
import { getTheme } from './FeedbackForm.theme';
|
|
9
|
+
import { BACKGROUND_ANIMATION_DURATION, FeedbackButtonManager, FeedbackFormManager, PULL_DOWN_CLOSE_THRESHOLD, ScreenshotButtonManager, showFeedbackForm, SLIDE_ANIMATION_DURATION, } from './FeedbackFormManager';
|
|
10
|
+
import { getFeedbackButtonOptions, getFeedbackOptions, getScreenshotButtonOptions, isShakeToReportEnabled, } from './integration';
|
|
11
|
+
import { lazyLoadShakeToReportIntegration } from './lazy';
|
|
11
12
|
import { ScreenshotButton } from './ScreenshotButton';
|
|
12
13
|
import { startShakeListener, stopShakeListener } from './ShakeToReportBug';
|
|
13
14
|
import { isModalSupported, isNativeDriverSupportedForColorAnimations } from './utils';
|
|
14
15
|
const useNativeDriverForColorAnimations = isNativeDriverSupportedForColorAnimations();
|
|
15
16
|
/**
|
|
16
|
-
*
|
|
17
|
+
* FeedbackFormProvider is a component that wraps the feedback widget and provides
|
|
17
18
|
* functionality to show and hide the widget. It also manages the visibility of the
|
|
18
19
|
* feedback button and screenshot button.
|
|
19
20
|
*/
|
|
20
|
-
export class
|
|
21
|
+
export class FeedbackFormProvider extends React.Component {
|
|
21
22
|
constructor(props) {
|
|
22
23
|
super(props);
|
|
23
24
|
this.state = {
|
|
@@ -99,11 +100,11 @@ export class FeedbackWidgetProvider extends React.Component {
|
|
|
99
100
|
this.setState({ isScreenshotButtonVisible: visible });
|
|
100
101
|
};
|
|
101
102
|
this._handleClose = () => {
|
|
102
|
-
|
|
103
|
+
FeedbackFormManager.hide();
|
|
103
104
|
};
|
|
104
105
|
FeedbackButtonManager.initialize(this._setButtonVisibilityFunction);
|
|
105
106
|
ScreenshotButtonManager.initialize(this._setScreenshotButtonVisibilityFunction);
|
|
106
|
-
|
|
107
|
+
FeedbackFormManager.initialize(this._setVisibilityFunction);
|
|
107
108
|
}
|
|
108
109
|
/**
|
|
109
110
|
* Add a listener to the theme change event and start shake detection if configured.
|
|
@@ -113,7 +114,8 @@ export class FeedbackWidgetProvider extends React.Component {
|
|
|
113
114
|
this.forceUpdate();
|
|
114
115
|
});
|
|
115
116
|
if (isShakeToReportEnabled()) {
|
|
116
|
-
|
|
117
|
+
lazyLoadShakeToReportIntegration();
|
|
118
|
+
this._startedShakeListener = startShakeListener(showFeedbackForm);
|
|
117
119
|
}
|
|
118
120
|
}
|
|
119
121
|
/**
|
|
@@ -130,6 +132,7 @@ export class FeedbackWidgetProvider extends React.Component {
|
|
|
130
132
|
/**
|
|
131
133
|
* Animates the background opacity when the modal is shown.
|
|
132
134
|
*/
|
|
135
|
+
// oxlint-disable-next-line typescript-eslint(no-explicit-any)
|
|
133
136
|
componentDidUpdate(_prevProps, prevState) {
|
|
134
137
|
if (!prevState.isVisible && this.state.isVisible) {
|
|
135
138
|
Animated.parallel([
|
|
@@ -146,7 +149,7 @@ export class FeedbackWidgetProvider extends React.Component {
|
|
|
146
149
|
easing: Easing.in(Easing.quad),
|
|
147
150
|
}),
|
|
148
151
|
]).start(() => {
|
|
149
|
-
debug.log('
|
|
152
|
+
debug.log('FeedbackFormProvider componentDidUpdate');
|
|
150
153
|
});
|
|
151
154
|
}
|
|
152
155
|
else if (prevState.isVisible && !this.state.isVisible) {
|
|
@@ -158,7 +161,7 @@ export class FeedbackWidgetProvider extends React.Component {
|
|
|
158
161
|
*/
|
|
159
162
|
render() {
|
|
160
163
|
if (!isModalSupported()) {
|
|
161
|
-
debug.error('
|
|
164
|
+
debug.error('FeedbackForm Modal is not supported in React Native < 0.71 with Fabric renderer.');
|
|
162
165
|
return React.createElement(React.Fragment, null, this.props.children);
|
|
163
166
|
}
|
|
164
167
|
const theme = getTheme();
|
|
@@ -178,7 +181,7 @@ export class FeedbackWidgetProvider extends React.Component {
|
|
|
178
181
|
React.createElement(View, { style: topSpacer }),
|
|
179
182
|
React.createElement(Animated.View, Object.assign({ style: [modalSheetContainer(theme), { transform: [{ translateY: this.state.panY }] }] }, this._panResponder.panHandlers),
|
|
180
183
|
React.createElement(ScrollView, { bounces: false, keyboardShouldPersistTaps: "handled", automaticallyAdjustKeyboardInsets: Platform.OS === 'ios', onScroll: this._handleScroll },
|
|
181
|
-
React.createElement(
|
|
184
|
+
React.createElement(FeedbackForm, Object.assign({}, getFeedbackOptions(), { onFormClose: this._handleClose, onFormSubmitted: this._handleClose })))))))));
|
|
182
185
|
}
|
|
183
186
|
}
|
|
184
|
-
//# sourceMappingURL=
|
|
187
|
+
//# sourceMappingURL=FeedbackFormProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedbackFormProvider.js","sourceRoot":"","sources":["../../../src/js/feedback/FeedbackFormProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import { debug } from '@sentry/core';\nimport * as React from 'react';\nimport {\n Animated,\n Appearance,\n Dimensions,\n Easing,\n Modal,\n type NativeEventSubscription,\n type NativeScrollEvent,\n type NativeSyntheticEvent,\n PanResponder,\n Platform,\n ScrollView,\n View,\n} from 'react-native';\n\nimport type { FeedbackFormStyles } from './FeedbackForm.types';\n\nimport { notWeb } from '../utils/environment';\nimport { FeedbackButton } from './FeedbackButton';\nimport { FeedbackForm } from './FeedbackForm';\nimport { modalSheetContainer, modalWrapper, topSpacer } from './FeedbackForm.styles';\nimport { getTheme } from './FeedbackForm.theme';\nimport {\n BACKGROUND_ANIMATION_DURATION,\n FeedbackButtonManager,\n FeedbackFormManager,\n PULL_DOWN_CLOSE_THRESHOLD,\n ScreenshotButtonManager,\n showFeedbackForm,\n SLIDE_ANIMATION_DURATION,\n} from './FeedbackFormManager';\nimport {\n getFeedbackButtonOptions,\n getFeedbackOptions,\n getScreenshotButtonOptions,\n isShakeToReportEnabled,\n} from './integration';\nimport { lazyLoadShakeToReportIntegration } from './lazy';\nimport { ScreenshotButton } from './ScreenshotButton';\nimport { startShakeListener, stopShakeListener } from './ShakeToReportBug';\nimport { isModalSupported, isNativeDriverSupportedForColorAnimations } from './utils';\n\nconst useNativeDriverForColorAnimations = isNativeDriverSupportedForColorAnimations();\n\nexport interface FeedbackFormProviderProps {\n children: React.ReactNode;\n styles?: FeedbackFormStyles;\n}\n\nexport interface FeedbackFormProviderState {\n isButtonVisible: boolean;\n isScreenshotButtonVisible: boolean;\n isVisible: boolean;\n backgroundOpacity: Animated.Value;\n panY: Animated.Value;\n isScrollAtTop: boolean;\n}\n\n/**\n * FeedbackFormProvider is a component that wraps the feedback widget and provides\n * functionality to show and hide the widget. It also manages the visibility of the\n * feedback button and screenshot button.\n */\nexport class FeedbackFormProvider extends React.Component<FeedbackFormProviderProps> {\n public state: FeedbackFormProviderState = {\n isButtonVisible: false,\n isScreenshotButtonVisible: false,\n isVisible: false,\n backgroundOpacity: new Animated.Value(0),\n panY: new Animated.Value(Dimensions.get('screen').height),\n isScrollAtTop: true,\n };\n\n private _themeListener: NativeEventSubscription | undefined;\n private _startedShakeListener: boolean = false;\n\n private _panResponder = PanResponder.create({\n onStartShouldSetPanResponder: (_, gestureState) => {\n return notWeb() && this.state.isScrollAtTop && gestureState.dy > 0;\n },\n onMoveShouldSetPanResponder: (_, gestureState) => {\n return notWeb() && this.state.isScrollAtTop && gestureState.dy > 0;\n },\n onPanResponderMove: (_, gestureState) => {\n if (gestureState.dy > 0) {\n this.state.panY.setValue(gestureState.dy);\n }\n },\n onPanResponderRelease: (_, gestureState) => {\n if (gestureState.dy > PULL_DOWN_CLOSE_THRESHOLD) {\n // Close on swipe below a certain threshold\n Animated.timing(this.state.panY, {\n toValue: Dimensions.get('screen').height,\n duration: SLIDE_ANIMATION_DURATION,\n useNativeDriver: true,\n }).start(() => {\n this._handleClose();\n });\n } else {\n // Animate it back to the original position\n Animated.spring(this.state.panY, {\n toValue: 0,\n useNativeDriver: true,\n }).start();\n }\n },\n });\n\n public constructor(props: FeedbackFormProviderProps) {\n super(props);\n FeedbackButtonManager.initialize(this._setButtonVisibilityFunction);\n ScreenshotButtonManager.initialize(this._setScreenshotButtonVisibilityFunction);\n FeedbackFormManager.initialize(this._setVisibilityFunction);\n }\n\n /**\n * Add a listener to the theme change event and start shake detection if configured.\n */\n public componentDidMount(): void {\n this._themeListener = Appearance.addChangeListener(() => {\n this.forceUpdate();\n });\n\n if (isShakeToReportEnabled()) {\n lazyLoadShakeToReportIntegration();\n this._startedShakeListener = startShakeListener(showFeedbackForm);\n }\n }\n\n /**\n * Clean up the theme listener and stop shake detection.\n */\n public componentWillUnmount(): void {\n if (this._themeListener) {\n this._themeListener.remove();\n }\n\n if (this._startedShakeListener) {\n stopShakeListener();\n }\n }\n\n /**\n * Animates the background opacity when the modal is shown.\n */\n // oxlint-disable-next-line typescript-eslint(no-explicit-any)\n public componentDidUpdate(_prevProps: any, prevState: FeedbackFormProviderState): void {\n if (!prevState.isVisible && this.state.isVisible) {\n Animated.parallel([\n Animated.timing(this.state.backgroundOpacity, {\n toValue: 1,\n duration: BACKGROUND_ANIMATION_DURATION,\n useNativeDriver: useNativeDriverForColorAnimations,\n easing: Easing.in(Easing.quad),\n }),\n Animated.timing(this.state.panY, {\n toValue: 0,\n duration: SLIDE_ANIMATION_DURATION,\n useNativeDriver: true,\n easing: Easing.in(Easing.quad),\n }),\n ]).start(() => {\n debug.log('FeedbackFormProvider componentDidUpdate');\n });\n } else if (prevState.isVisible && !this.state.isVisible) {\n this.state.backgroundOpacity.setValue(0);\n }\n }\n\n /**\n * Renders the feedback form modal.\n */\n public render(): React.ReactNode {\n if (!isModalSupported()) {\n debug.error('FeedbackForm Modal is not supported in React Native < 0.71 with Fabric renderer.');\n return <>{this.props.children}</>;\n }\n\n const theme = getTheme();\n\n const { isButtonVisible, isScreenshotButtonVisible, isVisible, backgroundOpacity } = this.state;\n\n const backgroundColor = backgroundOpacity.interpolate({\n inputRange: [0, 1],\n outputRange: ['rgba(0, 0, 0, 0)', 'rgba(0, 0, 0, 0.9)'],\n });\n\n // Wrapping the `Modal` component in a `View` component is necessary to avoid\n // issues like https://github.com/software-mansion/react-native-reanimated/issues/6035\n return (\n <>\n {this.props.children}\n {isButtonVisible && <FeedbackButton {...getFeedbackButtonOptions()} />}\n {isScreenshotButtonVisible && <ScreenshotButton {...getScreenshotButtonOptions()} />}\n {isVisible && (\n <Animated.View style={[modalWrapper, { backgroundColor }]}>\n <Modal\n visible={isVisible}\n transparent\n animationType=\"none\"\n onRequestClose={this._handleClose}\n testID=\"feedback-form-modal\"\n >\n <View style={topSpacer} />\n <Animated.View\n style={[modalSheetContainer(theme), { transform: [{ translateY: this.state.panY }] }]}\n {...this._panResponder.panHandlers}\n >\n <ScrollView\n bounces={false}\n keyboardShouldPersistTaps=\"handled\"\n automaticallyAdjustKeyboardInsets={Platform.OS === 'ios'}\n onScroll={this._handleScroll}\n >\n <FeedbackForm\n {...getFeedbackOptions()}\n onFormClose={this._handleClose}\n onFormSubmitted={this._handleClose}\n />\n </ScrollView>\n </Animated.View>\n </Modal>\n </Animated.View>\n )}\n </>\n );\n }\n\n private _handleScroll = (event: NativeSyntheticEvent<NativeScrollEvent>): void => {\n this.setState({ isScrollAtTop: event.nativeEvent.contentOffset.y <= 0 });\n };\n\n private _setVisibilityFunction = (visible: boolean): void => {\n const updateState = (): void => {\n this.setState({ isVisible: visible });\n };\n if (!visible) {\n Animated.parallel([\n Animated.timing(this.state.panY, {\n toValue: Dimensions.get('screen').height,\n duration: SLIDE_ANIMATION_DURATION,\n useNativeDriver: true,\n easing: Easing.out(Easing.quad),\n }),\n Animated.timing(this.state.backgroundOpacity, {\n toValue: 0,\n duration: BACKGROUND_ANIMATION_DURATION,\n useNativeDriver: useNativeDriverForColorAnimations,\n easing: Easing.out(Easing.quad),\n }),\n ]).start(() => {\n // Change of the state unmount the component\n // which would cancel the animation\n updateState();\n });\n } else {\n updateState();\n }\n };\n\n private _setButtonVisibilityFunction = (visible: boolean): void => {\n this.setState({ isButtonVisible: visible });\n };\n\n private _setScreenshotButtonVisibilityFunction = (visible: boolean): void => {\n this.setState({ isScreenshotButtonVisible: visible });\n };\n\n private _handleClose = (): void => {\n FeedbackFormManager.hide();\n };\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import type { Screenshot } from '../wrapper';
|
|
3
|
-
import type { ScreenshotButtonProps } from './
|
|
3
|
+
import type { ScreenshotButtonProps } from './FeedbackForm.types';
|
|
4
4
|
export declare const getCapturedScreenshot: () => Screenshot | "ErrorCapturingScreenshot" | undefined;
|
|
5
5
|
/**
|
|
6
6
|
* @beta
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScreenshotButton.d.ts","sourceRoot":"","sources":["../../../src/js/feedback/ScreenshotButton.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScreenshotButton.d.ts","sourceRoot":"","sources":["../../../src/js/feedback/ScreenshotButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,qBAAqB,EAGtB,MAAM,sBAAsB,CAAC;AA0B9B,eAAO,MAAM,qBAAqB,QAAO,UAAU,GAAG,0BAA0B,GAAG,SAIlF,CAAC;AAEF;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC,qBAAqB,CAAC;IAC1E,OAAO,CAAC,cAAc,CAAsC;gBAEzC,KAAK,EAAE,qBAAqB;IAK/C;;OAEG;IACI,iBAAiB,IAAI,IAAI;IAMhC;;OAEG;IACI,oBAAoB,IAAI,IAAI;IAMnC;;OAEG;IACI,MAAM,IAAI,KAAK,CAAC,SAAS;CAsBjC"}
|
|
@@ -11,15 +11,16 @@ import * as React from 'react';
|
|
|
11
11
|
import { Appearance, Image, Text, TouchableOpacity } from 'react-native';
|
|
12
12
|
import { NATIVE } from '../wrapper';
|
|
13
13
|
import { defaultScreenshotButtonConfiguration } from './defaults';
|
|
14
|
-
import { defaultScreenshotButtonStyles } from './
|
|
15
|
-
import { getTheme } from './
|
|
16
|
-
import { hideScreenshotButton,
|
|
14
|
+
import { defaultScreenshotButtonStyles } from './FeedbackForm.styles';
|
|
15
|
+
import { getTheme } from './FeedbackForm.theme';
|
|
16
|
+
import { hideScreenshotButton, showFeedbackForm } from './FeedbackFormManager';
|
|
17
17
|
import { screenshotIcon } from './icons';
|
|
18
18
|
import { lazyLoadFeedbackIntegration } from './lazy';
|
|
19
19
|
let capturedScreenshot;
|
|
20
20
|
const takeScreenshot = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
21
|
hideScreenshotButton();
|
|
22
22
|
setTimeout(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
|
+
// Delay capture to allow the button to hide
|
|
23
24
|
const screenshots = yield NATIVE.captureScreenshot();
|
|
24
25
|
if (screenshots && screenshots.length > 0) {
|
|
25
26
|
capturedScreenshot = screenshots[0];
|
|
@@ -27,7 +28,7 @@ const takeScreenshot = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
27
28
|
else {
|
|
28
29
|
capturedScreenshot = 'ErrorCapturingScreenshot';
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
+
showFeedbackForm();
|
|
31
32
|
}), 100);
|
|
32
33
|
});
|
|
33
34
|
export const getCapturedScreenshot = () => {
|
|
@@ -74,7 +75,7 @@ export class ScreenshotButton extends React.Component {
|
|
|
74
75
|
};
|
|
75
76
|
return (React.createElement(TouchableOpacity, { style: styles.triggerButton, onPress: takeScreenshot, accessibilityLabel: text.triggerAriaLabel },
|
|
76
77
|
React.createElement(Image, { source: { uri: screenshotIcon }, style: styles.triggerIcon }),
|
|
77
|
-
React.createElement(Text, { style: styles.triggerText, testID:
|
|
78
|
+
React.createElement(Text, { style: styles.triggerText, testID: "sentry-feedback-screenshot-button" }, text.triggerLabel)));
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
81
|
//# sourceMappingURL=ScreenshotButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScreenshotButton.js","sourceRoot":"","sources":["../../../src/js/feedback/ScreenshotButton.tsx"],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ScreenshotButton.js","sourceRoot":"","sources":["../../../src/js/feedback/ScreenshotButton.tsx"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AASzE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAErD,IAAI,kBAAuE,CAAC;AAE5E,MAAM,cAAc,GAAG,GAAwB,EAAE;IAC/C,oBAAoB,EAAE,CAAC;IACvB,UAAU,CAAC,GAAS,EAAE;QACpB,4CAA4C;QAC5C,MAAM,WAAW,GAAwB,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC1E,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,kBAAkB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,kBAAkB,GAAG,0BAA0B,CAAC;QAClD,CAAC;QACD,gBAAgB,EAAE,CAAC;IACrB,CAAC,CAAA,EAAE,GAAG,CAAC,CAAC;AACV,CAAC,CAAA,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAwD,EAAE;IAC7F,MAAM,UAAU,GAAG,kBAAkB,CAAC;IACtC,kBAAkB,GAAG,SAAS,CAAC;IAC/B,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK,CAAC,SAAgC;IAG1E,YAAmB,KAA4B;QAC7C,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,2BAA2B,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,iBAAiB;QACtB,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,iBAAiB,CAAC,GAAG,EAAE;YACtD,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,oBAAoB;QACzB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACI,MAAM;;QACX,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,mCAA2C,oCAAoC,GAAK,IAAI,CAAC,KAAK,CAAE,CAAC;QAC3G,MAAM,MAAM,GAA2B;YACrC,aAAa,kCAAO,6BAA6B,CAAC,KAAK,CAAC,CAAC,aAAa,GAAK,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CAAE,aAAa,CAAE;YAC7G,WAAW,kCAAO,6BAA6B,CAAC,KAAK,CAAC,CAAC,WAAW,GAAK,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CAAE,WAAW,CAAE;YACvG,WAAW,kCAAO,6BAA6B,CAAC,KAAK,CAAC,CAAC,WAAW,GAAK,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CAAE,WAAW,CAAE;SACxG,CAAC;QAEF,OAAO,CACL,oBAAC,gBAAgB,IACf,KAAK,EAAE,MAAM,CAAC,aAAa,EAC3B,OAAO,EAAE,cAAc,EACvB,kBAAkB,EAAE,IAAI,CAAC,gBAAgB;YAEzC,oBAAC,KAAK,IAAC,MAAM,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,GAAI;YACrE,oBAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAC,mCAAmC,IACxE,IAAI,CAAC,YAAY,CACb,CACU,CACpB,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { NativeEventSubscription } from 'react-native';\n\nimport * as React from 'react';\nimport { Appearance, Image, Text, TouchableOpacity } from 'react-native';\n\nimport type { Screenshot } from '../wrapper';\nimport type {\n ScreenshotButtonProps,\n ScreenshotButtonStyles,\n ScreenshotButtonTextConfiguration,\n} from './FeedbackForm.types';\n\nimport { NATIVE } from '../wrapper';\nimport { defaultScreenshotButtonConfiguration } from './defaults';\nimport { defaultScreenshotButtonStyles } from './FeedbackForm.styles';\nimport { getTheme } from './FeedbackForm.theme';\nimport { hideScreenshotButton, showFeedbackForm } from './FeedbackFormManager';\nimport { screenshotIcon } from './icons';\nimport { lazyLoadFeedbackIntegration } from './lazy';\n\nlet capturedScreenshot: Screenshot | 'ErrorCapturingScreenshot' | undefined;\n\nconst takeScreenshot = async (): Promise<void> => {\n hideScreenshotButton();\n setTimeout(async () => {\n // Delay capture to allow the button to hide\n const screenshots: Screenshot[] | null = await NATIVE.captureScreenshot();\n if (screenshots && screenshots.length > 0) {\n capturedScreenshot = screenshots[0];\n } else {\n capturedScreenshot = 'ErrorCapturingScreenshot';\n }\n showFeedbackForm();\n }, 100);\n};\n\nexport const getCapturedScreenshot = (): Screenshot | 'ErrorCapturingScreenshot' | undefined => {\n const screenshot = capturedScreenshot;\n capturedScreenshot = undefined;\n return screenshot;\n};\n\n/**\n * @beta\n * Implements a screenshot button that takes a screenshot.\n */\nexport class ScreenshotButton extends React.Component<ScreenshotButtonProps> {\n private _themeListener: NativeEventSubscription | undefined;\n\n public constructor(props: ScreenshotButtonProps) {\n super(props);\n lazyLoadFeedbackIntegration();\n }\n\n /**\n * Adds a listener for theme changes.\n */\n public componentDidMount(): void {\n this._themeListener = Appearance.addChangeListener(() => {\n this.forceUpdate();\n });\n }\n\n /**\n * Removes the theme listener.\n */\n public componentWillUnmount(): void {\n if (this._themeListener) {\n this._themeListener.remove();\n }\n }\n\n /**\n * Renders the screenshot button.\n */\n public render(): React.ReactNode {\n const theme = getTheme();\n const text: ScreenshotButtonTextConfiguration = { ...defaultScreenshotButtonConfiguration, ...this.props };\n const styles: ScreenshotButtonStyles = {\n triggerButton: { ...defaultScreenshotButtonStyles(theme).triggerButton, ...this.props.styles?.triggerButton },\n triggerText: { ...defaultScreenshotButtonStyles(theme).triggerText, ...this.props.styles?.triggerText },\n triggerIcon: { ...defaultScreenshotButtonStyles(theme).triggerIcon, ...this.props.styles?.triggerIcon },\n };\n\n return (\n <TouchableOpacity\n style={styles.triggerButton}\n onPress={takeScreenshot}\n accessibilityLabel={text.triggerAriaLabel}\n >\n <Image source={{ uri: screenshotIcon }} style={styles.triggerIcon} />\n <Text style={styles.triggerText} testID=\"sentry-feedback-screenshot-button\">\n {text.triggerLabel}\n </Text>\n </TouchableOpacity>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShakeToReportBug.d.ts","sourceRoot":"","sources":["../../../src/js/feedback/ShakeToReportBug.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ShakeToReportBug.d.ts","sourceRoot":"","sources":["../../../src/js/feedback/ShakeToReportBug.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,YAAY,EAAE,MAAM,cAAc,CAAC;AAGtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKlD,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AAIrD;;;GAGG;AACH,KAAK,cAAc,GAAG,CAAC,YAAY,EAAE,YAAY,KAAK,kBAAkB,CAAC;AAIzE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,IAAI,EACnB,aAAa,GAAE,cAAsC,GACpD,OAAO,CAwCT;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAgBxC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShakeToReportBug.js","sourceRoot":"","sources":["../../../src/js/feedback/ShakeToReportBug.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ShakeToReportBug.js","sourceRoot":"","sources":["../../../src/js/feedback/ShakeToReportBug.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAErD,IAAI,kBAAkB,GAA+B,IAAI,CAAC;AAQ1D,MAAM,qBAAqB,GAAmB,YAAY,CAAC,EAAE,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAEnG;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAmB,EACnB,gBAAgC,qBAAqB;IAErD,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,EAAE,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAG,iBAAiB,EAA8B,CAAC;IACrE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC7E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QAC5C,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC9D,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,yFAAyF;QACzF,kFAAkF;QAClF,sEAAsE;QACtE,MAAM,MAAM,GAAG,YAAqD,CAAC;QACrE,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAChC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;QACjD,IAAI,kBAAkB,EAAE,CAAC;YACvB,kBAAkB,CAAC,MAAM,EAAE,CAAC;YAC5B,kBAAkB,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;;IAC/B,IAAI,kBAAkB,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,sCAAsC,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,kBAAkB,GAAG,IAAI,CAAC;QAE1B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,iBAAiB,EAAwD,CAAC;YAC/F,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,qBAAqB,4DAAI,CAAC;QAC1C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,2CAA2C,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,kBAAkB,KAAK,IAAI,CAAC;AACrC,CAAC","sourcesContent":["import type { EmitterSubscription, NativeModule } from 'react-native';\n\nimport { debug } from '@sentry/core';\nimport { NativeEventEmitter } from 'react-native';\n\nimport { isWeb } from '../utils/environment';\nimport { getRNSentryModule } from '../wrapper';\n\nexport const OnShakeEventName = 'rn_sentry_on_shake';\n\nlet _shakeSubscription: EmitterSubscription | null = null;\n\n/**\n * Creates a NativeEventEmitter for the given module.\n * Can be overridden in tests via the `createEmitter` parameter.\n */\ntype EmitterFactory = (nativeModule: NativeModule) => NativeEventEmitter;\n\nconst defaultEmitterFactory: EmitterFactory = nativeModule => new NativeEventEmitter(nativeModule);\n\n/**\n * Starts listening for device shake events and invokes the provided callback when a shake is detected.\n *\n * This starts native shake detection:\n * - iOS: Uses UIKit's motion event detection (no permissions required)\n * - Android: Uses the accelerometer sensor (no permissions required)\n */\nexport function startShakeListener(\n onShake: () => void,\n createEmitter: EmitterFactory = defaultEmitterFactory,\n): boolean {\n if (_shakeSubscription) {\n return false;\n }\n\n if (isWeb()) {\n debug.warn('Shake detection is not supported on Web.');\n return false;\n }\n\n const nativeModule = getRNSentryModule() as NativeModule | undefined;\n if (!nativeModule) {\n debug.warn('Native module is not available. Shake detection will not work.');\n return false;\n }\n\n try {\n const emitter = createEmitter(nativeModule);\n _shakeSubscription = emitter.addListener(OnShakeEventName, () => {\n onShake();\n });\n\n // Explicitly enable native shake detection. On iOS with New Architecture (TurboModules),\n // NativeEventEmitter.addListener does not dispatch to native addListener:, so the\n // native shake listener would never start without this explicit call.\n const module = nativeModule as { enableShakeDetection?: () => void };\n if (module.enableShakeDetection) {\n module.enableShakeDetection();\n } else {\n debug.warn('enableShakeDetection is not available on the native module.');\n }\n return true;\n } catch (e) {\n debug.warn('Failed to start shake listener:', e);\n if (_shakeSubscription) {\n _shakeSubscription.remove();\n _shakeSubscription = null;\n }\n return false;\n }\n}\n\n/**\n * Stops listening for device shake events.\n */\nexport function stopShakeListener(): void {\n if (_shakeSubscription) {\n try {\n _shakeSubscription.remove();\n } catch (e) {\n debug.warn('Failed to remove shake subscription:', e);\n }\n _shakeSubscription = null;\n\n try {\n const nativeModule = getRNSentryModule() as { disableShakeDetection?: () => void } | undefined;\n nativeModule?.disableShakeDetection?.();\n } catch (e) {\n debug.warn('Failed to disable native shake detection:', e);\n }\n }\n}\n\n/**\n * Returns whether the shake listener is currently active.\n * Exported for testing purposes.\n */\nexport function isShakeListenerActive(): boolean {\n return _shakeSubscription !== null;\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { FeedbackButtonProps,
|
|
2
|
-
export declare const defaultConfiguration:
|
|
1
|
+
import type { FeedbackButtonProps, FeedbackFormProps, ScreenshotButtonProps } from './FeedbackForm.types';
|
|
2
|
+
export declare const defaultConfiguration: FeedbackFormProps;
|
|
3
3
|
export declare const defaultButtonConfiguration: Partial<FeedbackButtonProps>;
|
|
4
4
|
export declare const defaultScreenshotButtonConfiguration: Partial<ScreenshotButtonProps>;
|
|
5
5
|
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/js/feedback/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/js/feedback/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AA0B1G,eAAO,MAAM,oBAAoB,EAAE,iBA+DlC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,OAAO,CAAC,mBAAmB,CAGnE,CAAC;AAEF,eAAO,MAAM,oCAAoC,EAAE,OAAO,CAAC,qBAAqB,CAG/E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/js/feedback/defaults.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/js/feedback/defaults.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FeedbackButtonProps, FeedbackFormProps, ScreenshotButtonProps } from './FeedbackForm.types';\n\nimport { feedbackAlertDialog } from './utils';\n\nconst FORM_TITLE = 'Report a Bug';\nconst NAME_PLACEHOLDER = 'Your Name';\nconst NAME_LABEL = 'Name';\nconst EMAIL_PLACEHOLDER = 'your.email@example.org';\nconst EMAIL_LABEL = 'Email';\nconst MESSAGE_PLACEHOLDER = \"What's the bug? What did you expect?\";\nconst MESSAGE_LABEL = 'Description';\nconst IS_REQUIRED_LABEL = '(required)';\nconst SUBMIT_BUTTON_LABEL = 'Send Bug Report';\nconst CANCEL_BUTTON_LABEL = 'Cancel';\nconst TRIGGER_LABEL = 'Report a Bug';\nconst TRIGGER_SCREENSHOT_LABEL = 'Take Screenshot';\nconst ERROR_TITLE = 'Error';\nconst FORM_ERROR = 'Please fill out all required fields.';\nconst EMAIL_ERROR = 'Please enter a valid email address.';\nconst CAPTURE_SCREENSHOT_ERROR = 'Error capturing screenshot. Please try again.';\nconst SUCCESS_MESSAGE_TEXT = 'Thank you for your report!';\nconst ADD_SCREENSHOT_LABEL = 'Add a screenshot';\nconst CAPTURE_SCREENSHOT_LABEL = 'Take a screenshot';\nconst REMOVE_SCREENSHOT_LABEL = 'Remove screenshot';\nconst GENERIC_ERROR_TEXT = 'Unable to send feedback due to an unexpected error.';\n\nexport const defaultConfiguration: FeedbackFormProps = {\n // FeedbackCallbacks\n onFormOpen: () => {\n // Does nothing by default\n },\n onFormClose: () => {\n if (__DEV__) {\n feedbackAlertDialog(\n 'Development note',\n 'onFormClose callback is not implemented. By default the form is just unmounted.',\n );\n }\n },\n onAddScreenshot: (_: (uri: string) => void) => {\n if (__DEV__) {\n feedbackAlertDialog('Development note', 'onAddScreenshot callback is not implemented.');\n }\n },\n onSubmitSuccess: () => {\n // Does nothing by default\n },\n onSubmitError: () => {\n // Does nothing by default\n },\n onFormSubmitted: () => {\n if (__DEV__) {\n feedbackAlertDialog(\n 'Development note',\n 'onFormSubmitted callback is not implemented. By default the form is just unmounted.',\n );\n }\n },\n\n // FeedbackGeneralConfiguration\n showBranding: true,\n isEmailRequired: false,\n shouldValidateEmail: true,\n isNameRequired: false,\n showEmail: true,\n showName: true,\n enableScreenshot: false,\n enableTakeScreenshot: false,\n\n // FeedbackTextConfiguration\n cancelButtonLabel: CANCEL_BUTTON_LABEL,\n emailLabel: EMAIL_LABEL,\n emailPlaceholder: EMAIL_PLACEHOLDER,\n formTitle: FORM_TITLE,\n isRequiredLabel: IS_REQUIRED_LABEL,\n messageLabel: MESSAGE_LABEL,\n messagePlaceholder: MESSAGE_PLACEHOLDER,\n nameLabel: NAME_LABEL,\n namePlaceholder: NAME_PLACEHOLDER,\n submitButtonLabel: SUBMIT_BUTTON_LABEL,\n errorTitle: ERROR_TITLE,\n formError: FORM_ERROR,\n emailError: EMAIL_ERROR,\n captureScreenshotError: CAPTURE_SCREENSHOT_ERROR,\n successMessageText: SUCCESS_MESSAGE_TEXT,\n addScreenshotButtonLabel: ADD_SCREENSHOT_LABEL,\n removeScreenshotButtonLabel: REMOVE_SCREENSHOT_LABEL,\n captureScreenshotButtonLabel: CAPTURE_SCREENSHOT_LABEL,\n genericError: GENERIC_ERROR_TEXT,\n};\n\nexport const defaultButtonConfiguration: Partial<FeedbackButtonProps> = {\n triggerLabel: TRIGGER_LABEL,\n triggerAriaLabel: '',\n};\n\nexport const defaultScreenshotButtonConfiguration: Partial<ScreenshotButtonProps> = {\n triggerLabel: TRIGGER_SCREENSHOT_LABEL,\n triggerAriaLabel: '',\n};\n"]}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { type Integration } from '@sentry/core';
|
|
2
|
-
import type {
|
|
3
|
-
import type { FeedbackButtonProps,
|
|
2
|
+
import type { FeedbackFormTheme } from './FeedbackForm.theme';
|
|
3
|
+
import type { FeedbackButtonProps, FeedbackFormProps, ScreenshotButtonProps } from './FeedbackForm.types';
|
|
4
4
|
export declare const MOBILE_FEEDBACK_INTEGRATION_NAME = "MobileFeedback";
|
|
5
5
|
type FeedbackIntegration = Integration & {
|
|
6
|
-
options: Partial<
|
|
6
|
+
options: Partial<FeedbackFormProps>;
|
|
7
7
|
buttonOptions: Partial<FeedbackButtonProps>;
|
|
8
8
|
screenshotButtonOptions: Partial<ScreenshotButtonProps>;
|
|
9
9
|
colorScheme?: 'system' | 'light' | 'dark';
|
|
10
|
-
themeLight: Partial<
|
|
11
|
-
themeDark: Partial<
|
|
10
|
+
themeLight: Partial<FeedbackFormTheme>;
|
|
11
|
+
themeDark: Partial<FeedbackFormTheme>;
|
|
12
12
|
enableShakeToReport: boolean;
|
|
13
13
|
};
|
|
14
|
-
export declare const feedbackIntegration: (initOptions?: Partial<
|
|
14
|
+
export declare const feedbackIntegration: (initOptions?: Partial<FeedbackFormProps> & {
|
|
15
15
|
buttonOptions?: FeedbackButtonProps;
|
|
16
16
|
screenshotButtonOptions?: ScreenshotButtonProps;
|
|
17
17
|
colorScheme?: "system" | "light" | "dark";
|
|
18
|
-
themeLight?: Partial<
|
|
19
|
-
themeDark?: Partial<
|
|
18
|
+
themeLight?: Partial<FeedbackFormTheme>;
|
|
19
|
+
themeDark?: Partial<FeedbackFormTheme>;
|
|
20
20
|
/**
|
|
21
21
|
* Enable showing the feedback widget when the user shakes the device.
|
|
22
22
|
*
|
|
@@ -27,12 +27,12 @@ export declare const feedbackIntegration: (initOptions?: Partial<FeedbackWidgetP
|
|
|
27
27
|
*/
|
|
28
28
|
enableShakeToReport?: boolean;
|
|
29
29
|
}) => FeedbackIntegration;
|
|
30
|
-
export declare const getFeedbackOptions: () => Partial<
|
|
30
|
+
export declare const getFeedbackOptions: () => Partial<FeedbackFormProps>;
|
|
31
31
|
export declare const getFeedbackButtonOptions: () => Partial<FeedbackButtonProps>;
|
|
32
32
|
export declare const getScreenshotButtonOptions: () => Partial<ScreenshotButtonProps>;
|
|
33
33
|
export declare const getColorScheme: () => "system" | "light" | "dark";
|
|
34
|
-
export declare const getFeedbackLightTheme: () => Partial<
|
|
35
|
-
export declare const getFeedbackDarkTheme: () => Partial<
|
|
34
|
+
export declare const getFeedbackLightTheme: () => Partial<FeedbackFormTheme>;
|
|
35
|
+
export declare const getFeedbackDarkTheme: () => Partial<FeedbackFormTheme>;
|
|
36
36
|
export declare const isShakeToReportEnabled: () => boolean;
|
|
37
37
|
export {};
|
|
38
38
|
//# sourceMappingURL=integration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../../src/js/feedback/integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../../src/js/feedback/integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE1G,eAAO,MAAM,gCAAgC,mBAAmB,CAAC;AAEjE,KAAK,mBAAmB,GAAG,WAAW,GAAG;IACvC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpC,aAAa,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC5C,uBAAuB,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxD,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC1C,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvC,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACtC,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,cAAa,OAAO,CAAC,iBAAiB,CAAC,GAAG;IACxC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,uBAAuB,CAAC,EAAE,qBAAqB,CAAC;IAChD,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvC;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC1B,KACL,mBAqBF,CAAC;AAMF,eAAO,MAAM,kBAAkB,QAAO,OAAO,CAAC,iBAAiB,CAO9D,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAAO,OAAO,CAAC,mBAAmB,CAOtE,CAAC;AAEF,eAAO,MAAM,0BAA0B,QAAO,OAAO,CAAC,qBAAqB,CAO1E,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,QAAQ,GAAG,OAAO,GAAG,MAOtD,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAO,OAAO,CAAC,iBAAiB,CAOjE,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAO,OAAO,CAAC,iBAAiB,CAOhE,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAAO,OAGzC,CAAC"}
|