UNPKG

react-native-haptic-feedback

Version:
55 lines (54 loc) 1.69 kB
"use strict"; import { useMemo } from "react"; import RNHapticFeedback from "../hapticFeedback"; import { playHaptic as playHapticUtil } from "../utils/playHaptic"; /** * React hook that provides haptic feedback methods with optional default options. * Returns a stable object — methods only change when the option values change. * * @example * const haptics = useHaptics({ enableVibrateFallback: true }); * haptics.trigger('impactMedium'); */ export function useHaptics(defaultOptions) { const enableVibrateFallback = defaultOptions?.enableVibrateFallback; const ignoreAndroidSystemSettings = defaultOptions?.ignoreAndroidSystemSettings; return useMemo(() => ({ trigger(type, opts) { RNHapticFeedback.trigger(type, { ...defaultOptions, ...opts }); }, triggerPattern(events, opts) { RNHapticFeedback.triggerPattern(events, { ...defaultOptions, ...opts }); }, stop() { RNHapticFeedback.stop(); }, isSupported() { return RNHapticFeedback.isSupported(); }, playHaptic(ahapFile, fallback, opts) { return playHapticUtil(ahapFile, fallback, { ...defaultOptions, ...opts }); }, impact(type, intensity, opts) { RNHapticFeedback.impact(type, intensity, { ...defaultOptions, ...opts }); }, setEnabled: RNHapticFeedback.setEnabled, isEnabled: RNHapticFeedback.isEnabled, getSystemHapticStatus: RNHapticFeedback.getSystemHapticStatus, /** @platform ios */ playAHAP: RNHapticFeedback.playAHAP }), [enableVibrateFallback, ignoreAndroidSystemSettings]); } //# sourceMappingURL=useHaptics.js.map