react-native-haptic-feedback
Version:
Basic haptic feedback for iOS and android
55 lines (54 loc) • 1.69 kB
JavaScript
;
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