package com.out.rn_video import com.facebook.react.common.MapBuilder import com.facebook.react.uimanager.SimpleViewManager import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.annotations.ReactProp class VideoPlayerManager : SimpleViewManager() { override fun getName(): String { return "VideoView" } override fun createViewInstance(reactContext: ThemedReactContext): RNVideoPlayerView { return RNVideoPlayerView(reactContext) } override fun getExportedCustomDirectEventTypeConstants(): Map? { return MapBuilder.builder() .put( "onBack", MapBuilder.of("registrationName", "onBack") ) .put( "onFullScreen", MapBuilder.of("registrationName", "onFullScreen") ) .build() } @ReactProp(name = "uri") fun setVideoUri(videoView: RNVideoPlayerView, urlPath: String) { videoView.prepareMedia(urlPath) } @ReactProp(name = "play", defaultBoolean = PLAY_DEFAULT) fun setPlay(videoView: RNVideoPlayerView, playWhenReady: Boolean) { videoView.player.playWhenReady = playWhenReady } @ReactProp(name = "canGoBack", defaultBoolean = true) fun setCanGoBack(videoView: RNVideoPlayerView, canGoBack: Boolean) { videoView.canGoBack = canGoBack } @ReactProp(name = "showBuffering", defaultBoolean = BUFFERING_DEFAULT) fun setBuffering(videoView: RNVideoPlayerView, buffering: Boolean) { videoView.showBuffering = buffering } @ReactProp(name = "resizeMode", defaultInt = 1) fun setResizeMode(videoView: RNVideoPlayerView, resizeMode: Int) { videoView.playerView.setResizeMode(resizeMode) } @ReactProp(name = "controls", defaultBoolean = CONTROLS_DEFAULT) fun setControlsVisible(videoView: RNVideoPlayerView, controls: Boolean) { videoView.controls = controls } @ReactProp(name = "controlsTimeout", defaultInt = CONTROLS_TIMEOUT_MS) fun setControlsTimeout(videoView: RNVideoPlayerView, timeout: Int) { videoView.controlsTimeout = timeout } @ReactProp(name = "repeatMode", defaultInt = 5) fun setRepeatMode(videoView: RNVideoPlayerView, repeatMode: Int) { videoView.player.repeatMode = repeatMode } @ReactProp(name = "volume") fun setVolume(videoView: RNVideoPlayerView, volume: Float) { videoView.player.volume = volume } }