package com.blurview import com.facebook.react.module.annotations.ReactModule import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.ViewGroupManager import com.facebook.react.uimanager.ViewManagerDelegate import com.facebook.react.uimanager.annotations.ReactProp import com.facebook.react.viewmanagers.BlurViewManagerInterface import com.facebook.react.viewmanagers.BlurViewManagerDelegate @ReactModule(name = BlurViewManager.NAME) class BlurViewManager : ViewGroupManager(), BlurViewManagerInterface { private val mDelegate: ViewManagerDelegate = BlurViewManagerDelegate(this) override fun getDelegate(): ViewManagerDelegate { return mDelegate } override fun getName(): String { return NAME } public override fun createViewInstance(context: ThemedReactContext): BlurView { return BlurView(context) } companion object { const val NAME = "BlurView" } @Override @ReactProp(name = "overlayColor") override fun setOverlayColor(view: BlurView?, overlarColor: String?) { view?.setOverlayColor(overlarColor ?: "light") } @Override @ReactProp(name = "androidColor", customType = "Color") override fun setAndroidColor(view: BlurView?, androidColor: Int?) { view?.setAndroidColor(androidColor ?: null) } @Override @ReactProp(name = "radius", defaultFloat = 10f) override fun setRadius(view: BlurView?, radius: Float) { view?.setRadius(radius) } @Override @ReactProp(name = "downscaleFactor", defaultFloat = 6f) override fun setDownscaleFactor(view: BlurView?, downscaleFactor: Float) { view?.setDownscaleFactor(downscaleFactor) } @Override @ReactProp(name = "reducedTransparencyFallbackColor", customType = "Color") override fun setReducedTransparencyFallbackColor(view: BlurView?, reducedTransparencyFallbackColor: Int?) { /** No-op: Android does not have a direct equivalent to iOS's reduced transparency fallback. */ } @Override @ReactProp(name = "targetId") override fun setTargetId(view: BlurView, targetId: Int) { view.setTargetId(targetId) } /** * Indicates that React Native's Yoga layout should handle child positioning. * Returns false to let React Native manage the layout of children. */ override fun needsCustomLayoutForChildren(): Boolean { return false } }