react-native-turbo-haptics
Version:
Fast, worklet-compatible haptic feedback for React Native
48 lines (45 loc) • 1.51 kB
JavaScript
import { NativeModules } from 'react-native';
import TurboHapticsModule from './NativeTurboHaptics';
const noop = () => {
'worklet';
return;
};
export const initTurboHaptics = () => {
// Check if already initialized
if (global.createHapticFeedback == null) {
try {
let success = false;
const module = NativeModules.TurboHaptics;
// [Pre-0.74] Check for JSI environment and install bindings
if (global.nativeCallSyncHook != null && module !== null && module !== void 0 && module.install) {
success = module.install();
}
// [RN 0.74+] Check for JSI environment and install bindings
else if (global.__turboModuleProxy != null && TurboHapticsModule !== null) {
try {
success = TurboHapticsModule.install();
} catch (e) {
console.warn('TurboHaptics: TurboModule not available:', e);
}
}
if (!success) {
console.warn('TurboHaptics: Failed to initialize');
return null;
}
if (global.createHapticFeedback == null) {
console.warn('TurboHaptics: Failed to create haptic feedback');
return null;
}
} catch (e) {
console.warn('TurboHaptics: Initialization failed:', e);
return null;
}
}
return global.createHapticFeedback ? global.createHapticFeedback() : null;
};
// Initialize module
const haptics = initTurboHaptics() || {
trigger: noop
};
export const internalTrigger = haptics.trigger;
//# sourceMappingURL=initModule.js.map