package dev.onejs.one import com.facebook.react.BaseReactPackage import com.facebook.react.bridge.NativeModule import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.module.model.ReactModuleInfo import com.facebook.react.module.model.ReactModuleInfoProvider import com.facebook.react.uimanager.ViewManager import com.margelo.nitro.one.OneOnLoad import dev.onejs.onenative.OneNativePortalViewManager import dev.onejs.onenative.OneNativePortalHostViewManager import dev.onejs.onenative.OneNativeBlurManager import dev.onejs.onenative.OneNativeCameraManager import dev.onejs.onenative.OneNativeComposeNodeManager import dev.onejs.onenative.OneNativeEdgeFadeManager import dev.onejs.onenative.OneNativePagerManager import dev.onejs.onenative.OneNativeMaskManager import dev.onejs.onenative.OneNativeMenuPopupModule import dev.onejs.onenative.OneNativeMenuTriggerManager import dev.onejs.onenative.OneNativePictureInPictureManager import dev.onejs.onenative.OneNativeSafeAreaModule import dev.onejs.onenative.OneNativeReservedRegionsProviderManager import dev.onejs.onenative.OneNativeSafeAreaProviderManager import dev.onejs.onenative.OneNativeSyncModule import dev.onejs.onenative.OneNativeUiMapManager import dev.onejs.one.source.OneNativeSourceEvents class OnePackage : BaseReactPackage() { override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? { return when (name) { OneModule.NAME -> OneModule(reactContext) OneNativeSafeAreaModule.NAME -> OneNativeSafeAreaModule(reactContext) OneNativeSyncModule.NAME -> OneNativeSyncModule(reactContext) OneNativeMenuPopupModule.NAME -> OneNativeMenuPopupModule(reactContext) OneNativeSourceEvents.NAME -> OneNativeSourceEvents(reactContext) else -> null } } override fun getReactModuleInfoProvider() = ReactModuleInfoProvider { mapOf( OneModule.NAME to ReactModuleInfo( name = OneModule.NAME, className = OneModule.NAME, canOverrideExistingModule = false, needsEagerInit = false, isCxxModule = false, isTurboModule = false ), OneNativeSafeAreaModule.NAME to ReactModuleInfo( name = OneNativeSafeAreaModule.NAME, className = OneNativeSafeAreaModule.NAME, canOverrideExistingModule = false, needsEagerInit = false, isCxxModule = false, isTurboModule = false ), OneNativeSyncModule.NAME to ReactModuleInfo( name = OneNativeSyncModule.NAME, className = OneNativeSyncModule.NAME, canOverrideExistingModule = false, needsEagerInit = false, isCxxModule = false, isTurboModule = false ), OneNativeMenuPopupModule.NAME to ReactModuleInfo( name = OneNativeMenuPopupModule.NAME, className = OneNativeMenuPopupModule.NAME, canOverrideExistingModule = false, needsEagerInit = false, isCxxModule = false, isTurboModule = false ), OneNativeSourceEvents.NAME to ReactModuleInfo( name = OneNativeSourceEvents.NAME, className = OneNativeSourceEvents.NAME, canOverrideExistingModule = false, needsEagerInit = false, isCxxModule = false, isTurboModule = false ) ) } override fun createViewManagers( reactContext: ReactApplicationContext, ): List> = listOf( OneNativeComposeNodeManager(), OneNativeCameraManager(), OneNativeMenuTriggerManager(), OneNativeSafeAreaProviderManager(), OneNativeReservedRegionsProviderManager(), OneNativeEdgeFadeManager(), OneNativeBlurManager(), OneNativePortalViewManager(), OneNativePortalHostViewManager(), OneNativeMaskManager(), OneNativePagerManager(), OneNativeUiMapManager(), OneNativePictureInPictureManager(), OneKotlinHostManager(), ) companion object { init { // registers every Nitro hybrid object (OneHaptics, OneClipboard, ...) // before JS can ask NitroModules for one. OneOnLoad.initializeNative() } } }