@granite-js/video 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @granite-js/video
2
2
 
3
+ ## 1.0.9
4
+
5
+ ## 1.0.8
6
+
7
+ ### Patch Changes
8
+
9
+ - 503118a: feat(js): add react-native-video v6 compat
10
+ - e059176: feat(android): add react-native-video v6 compat
11
+
3
12
  ## 1.0.7
4
13
 
5
14
  ## 1.0.6
@@ -66,16 +66,34 @@ class GraniteVideoView @JvmOverloads constructor(
66
66
  }
67
67
 
68
68
  // Source
69
+ @Suppress("UNCHECKED_CAST")
69
70
  fun setSource(source: Map<String, Any>?) {
70
71
  source ?: return
71
72
 
73
+ val headers = source["headers"] as? Map<String, String>
74
+
72
75
  val videoSource = GraniteVideoSource(
73
76
  uri = source["uri"] as? String,
74
77
  type = source["type"] as? String,
75
78
  startPosition = (source["startPosition"] as? Number)?.toDouble() ?: 0.0,
76
79
  cropStart = (source["cropStart"] as? Number)?.toDouble() ?: 0.0,
77
80
  cropEnd = (source["cropEnd"] as? Number)?.toDouble() ?: 0.0,
78
- headers = @Suppress("UNCHECKED_CAST") (source["headers"] as? Map<String, String>)
81
+ headers = headers,
82
+ drm = parseDrm(source["drm"] as? Map<String, Any>),
83
+ isNetwork = source["isNetwork"] as? Boolean,
84
+ isAsset = source["isAsset"] as? Boolean ?: false,
85
+ isLocalAssetFile = source["isLocalAssetFile"] as? Boolean ?: false,
86
+ shouldCache = source["shouldCache"] as? Boolean ?: true,
87
+ mainVer = (source["mainVer"] as? Number)?.toInt() ?: 0,
88
+ patchVer = (source["patchVer"] as? Number)?.toInt() ?: 0,
89
+ contentStartTime = (source["contentStartTime"] as? Number)?.toDouble() ?: -1.0,
90
+ minLoadRetryCount = (source["minLoadRetryCount"] as? Number)?.toInt() ?: 3,
91
+ textTracksAllowChunklessPreparation = source["textTracksAllowChunklessPreparation"] as? Boolean ?: true,
92
+ metadata = parseMetadata(source["metadata"] as? Map<String, Any>),
93
+ cmcd = parseCmcd(source["cmcd"] as? Map<String, Any>),
94
+ textTracks = parseTextTracks(source["textTracks"] as? List<Map<String, Any>>),
95
+ ad = parseAdsConfig(source["ad"] as? Map<String, Any>),
96
+ bufferConfig = parseBufferConfig(source["bufferConfig"] as? Map<String, Any>)
79
97
  )
80
98
 
81
99
  provider?.loadSource(videoSource)
@@ -85,6 +103,99 @@ class GraniteVideoView @JvmOverloads constructor(
85
103
  }
86
104
  }
87
105
 
106
+ // Source parsing helper methods
107
+
108
+ private fun parseDrm(map: Map<String, Any>?): GraniteVideoDrmConfig? {
109
+ map ?: return null
110
+ val typeStr = map["type"] as? String
111
+ val drmType = when (typeStr) {
112
+ "widevine" -> GraniteVideoDrmType.WIDEVINE
113
+ "playready" -> GraniteVideoDrmType.PLAYREADY
114
+ "clearkey" -> GraniteVideoDrmType.CLEARKEY
115
+ else -> GraniteVideoDrmType.NONE
116
+ }
117
+ val headers = map["headers"] as? Map<String, String>
118
+ return GraniteVideoDrmConfig(
119
+ type = drmType,
120
+ licenseServer = map["licenseServer"] as? String,
121
+ headers = headers,
122
+ contentId = map["contentId"] as? String
123
+ )
124
+ }
125
+
126
+ private fun parseMetadata(map: Map<String, Any>?): GraniteVideoMetadata? {
127
+ map ?: return null
128
+ return GraniteVideoMetadata(
129
+ title = map["title"] as? String,
130
+ subtitle = map["subtitle"] as? String,
131
+ description = map["description"] as? String,
132
+ artist = map["artist"] as? String,
133
+ imageUri = map["imageUri"] as? String
134
+ )
135
+ }
136
+
137
+ private fun parseCmcd(map: Map<String, Any>?): GraniteVideoCmcdConfig? {
138
+ map ?: return null
139
+ return GraniteVideoCmcdConfig(
140
+ mode = (map["mode"] as? Number)?.toInt() ?: 1,
141
+ request = map["request"] as? Map<String, String>,
142
+ session = map["session"] as? Map<String, String>,
143
+ obj = map["object"] as? Map<String, String>,
144
+ status = map["status"] as? Map<String, String>
145
+ )
146
+ }
147
+
148
+ private fun parseTextTracks(list: List<Map<String, Any>>?): List<GraniteVideoTextTrack>? {
149
+ list ?: return null
150
+ return list.map { item ->
151
+ GraniteVideoTextTrack(
152
+ title = item["title"] as? String ?: "",
153
+ language = item["language"] as? String ?: "",
154
+ type = item["type"] as? String ?: "",
155
+ uri = item["uri"] as? String ?: ""
156
+ )
157
+ }.ifEmpty { null }
158
+ }
159
+
160
+ private fun parseAdsConfig(map: Map<String, Any>?): GraniteVideoAdsConfig? {
161
+ map ?: return null
162
+ return GraniteVideoAdsConfig(
163
+ type = map["type"] as? String,
164
+ streamType = map["streamType"] as? String,
165
+ adTagUrl = map["adTagUrl"] as? String,
166
+ adLanguage = map["adLanguage"] as? String,
167
+ contentSourceId = map["contentSourceId"] as? String,
168
+ videoId = map["videoId"] as? String,
169
+ assetKey = map["assetKey"] as? String,
170
+ format = map["format"] as? String,
171
+ fallbackUri = map["fallbackUri"] as? String,
172
+ adTagParameters = map["adTagParameters"] as? Map<String, String>
173
+ )
174
+ }
175
+
176
+ @Suppress("UNCHECKED_CAST")
177
+ private fun parseBufferConfig(map: Map<String, Any>?): GraniteVideoBufferConfig? {
178
+ map ?: return null
179
+ val liveMap = map["live"] as? Map<String, Any>
180
+ return GraniteVideoBufferConfig(
181
+ minBufferMs = (map["minBufferMs"] as? Number)?.toInt() ?: 15000,
182
+ maxBufferMs = (map["maxBufferMs"] as? Number)?.toInt() ?: 50000,
183
+ bufferForPlaybackMs = (map["bufferForPlaybackMs"] as? Number)?.toInt() ?: 2500,
184
+ bufferForPlaybackAfterRebufferMs = (map["bufferForPlaybackAfterRebufferMs"] as? Number)?.toInt() ?: 5000,
185
+ backBufferDurationMs = (map["backBufferDurationMs"] as? Number)?.toInt() ?: 0,
186
+ cacheSizeMB = (map["cacheSizeMB"] as? Number)?.toInt() ?: 0,
187
+ live = liveMap?.let {
188
+ GraniteVideoBufferConfigLive(
189
+ maxPlaybackSpeed = (it["maxPlaybackSpeed"] as? Number)?.toFloat() ?: -1f,
190
+ minPlaybackSpeed = (it["minPlaybackSpeed"] as? Number)?.toFloat() ?: -1f,
191
+ maxOffsetMs = (it["maxOffsetMs"] as? Number)?.toInt() ?: -1,
192
+ minOffsetMs = (it["minOffsetMs"] as? Number)?.toInt() ?: -1,
193
+ targetOffsetMs = (it["targetOffsetMs"] as? Number)?.toInt() ?: -1
194
+ )
195
+ }
196
+ )
197
+ }
198
+
88
199
  // Playback Control
89
200
  fun setPaused(paused: Boolean) {
90
201
  this.paused = paused
@@ -148,16 +259,27 @@ class GraniteVideoView @JvmOverloads constructor(
148
259
  }
149
260
 
150
261
  // Buffer
262
+ @Suppress("UNCHECKED_CAST")
151
263
  fun setBufferConfig(config: Map<String, Any>?) {
152
264
  config ?: return
153
265
 
266
+ val liveMap = config["live"] as? Map<String, Any>
154
267
  val bufferConfig = GraniteVideoBufferConfig(
155
268
  minBufferMs = (config["minBufferMs"] as? Number)?.toInt() ?: 15000,
156
269
  maxBufferMs = (config["maxBufferMs"] as? Number)?.toInt() ?: 50000,
157
270
  bufferForPlaybackMs = (config["bufferForPlaybackMs"] as? Number)?.toInt() ?: 2500,
158
271
  bufferForPlaybackAfterRebufferMs = (config["bufferForPlaybackAfterRebufferMs"] as? Number)?.toInt() ?: 5000,
159
272
  backBufferDurationMs = (config["backBufferDurationMs"] as? Number)?.toInt() ?: 0,
160
- cacheSizeMB = (config["cacheSizeMB"] as? Number)?.toInt() ?: 0
273
+ cacheSizeMB = (config["cacheSizeMB"] as? Number)?.toInt() ?: 0,
274
+ live = liveMap?.let {
275
+ GraniteVideoBufferConfigLive(
276
+ maxPlaybackSpeed = (it["maxPlaybackSpeed"] as? Number)?.toFloat() ?: -1f,
277
+ minPlaybackSpeed = (it["minPlaybackSpeed"] as? Number)?.toFloat() ?: -1f,
278
+ maxOffsetMs = (it["maxOffsetMs"] as? Number)?.toInt() ?: -1,
279
+ minOffsetMs = (it["minOffsetMs"] as? Number)?.toInt() ?: -1,
280
+ targetOffsetMs = (it["targetOffsetMs"] as? Number)?.toInt() ?: -1
281
+ )
282
+ }
161
283
  )
162
284
  provider?.setBufferConfig(bufferConfig)
163
285
  }
@@ -170,6 +292,11 @@ class GraniteVideoView @JvmOverloads constructor(
170
292
  provider?.setMinLoadRetryCount(count)
171
293
  }
172
294
 
295
+ // Content Start Time
296
+ fun setContentStartTime(time: Double) {
297
+ provider?.setContentStartTime(time)
298
+ }
299
+
173
300
  // Track Selection
174
301
  fun setSelectedAudioTrack(track: Map<String, Any>?) {
175
302
  track ?: return
@@ -230,7 +230,9 @@ class GraniteVideoViewManager(
230
230
  override fun setFullscreenOrientation(view: GraniteVideoView?, value: String?) {}
231
231
 
232
232
  @ReactProp(name = "contentStartTime")
233
- override fun setContentStartTime(view: GraniteVideoView?, value: Double) {}
233
+ override fun setContentStartTime(view: GraniteVideoView?, value: Double) {
234
+ view?.setContentStartTime(value)
235
+ }
234
236
 
235
237
  @ReactProp(name = "allowsExternalPlayback")
236
238
  override fun setAllowsExternalPlayback(view: GraniteVideoView?, value: Boolean) {}
@@ -37,7 +37,21 @@ data class GraniteVideoSource(
37
37
  val cropStart: Double = 0.0,
38
38
  val cropEnd: Double = 0.0,
39
39
  val headers: Map<String, String>? = null,
40
- val drm: GraniteVideoDrmConfig? = null
40
+ val drm: GraniteVideoDrmConfig? = null,
41
+ val isNetwork: Boolean? = null,
42
+ val isAsset: Boolean = false,
43
+ val isLocalAssetFile: Boolean = false,
44
+ val shouldCache: Boolean = true,
45
+ val mainVer: Int = 0,
46
+ val patchVer: Int = 0,
47
+ val contentStartTime: Double = -1.0,
48
+ val minLoadRetryCount: Int = 3,
49
+ val textTracksAllowChunklessPreparation: Boolean = true,
50
+ val metadata: GraniteVideoMetadata? = null,
51
+ val cmcd: GraniteVideoCmcdConfig? = null,
52
+ val textTracks: List<GraniteVideoTextTrack>? = null,
53
+ val ad: GraniteVideoAdsConfig? = null,
54
+ val bufferConfig: GraniteVideoBufferConfig? = null
41
55
  )
42
56
 
43
57
  data class GraniteVideoDrmConfig(
@@ -53,7 +67,16 @@ data class GraniteVideoBufferConfig(
53
67
  val bufferForPlaybackMs: Int = 2500,
54
68
  val bufferForPlaybackAfterRebufferMs: Int = 5000,
55
69
  val backBufferDurationMs: Int = 0,
56
- val cacheSizeMB: Int = 0
70
+ val cacheSizeMB: Int = 0,
71
+ val live: GraniteVideoBufferConfigLive? = null
72
+ )
73
+
74
+ data class GraniteVideoBufferConfigLive(
75
+ val maxPlaybackSpeed: Float = -1f,
76
+ val minPlaybackSpeed: Float = -1f,
77
+ val maxOffsetMs: Int = -1,
78
+ val minOffsetMs: Int = -1,
79
+ val targetOffsetMs: Int = -1
57
80
  )
58
81
 
59
82
  data class GraniteVideoSelectedTrack(
@@ -61,6 +84,42 @@ data class GraniteVideoSelectedTrack(
61
84
  val value: String? = null
62
85
  )
63
86
 
87
+ data class GraniteVideoMetadata(
88
+ val title: String? = null,
89
+ val subtitle: String? = null,
90
+ val description: String? = null,
91
+ val artist: String? = null,
92
+ val imageUri: String? = null
93
+ )
94
+
95
+ data class GraniteVideoCmcdConfig(
96
+ val mode: Int = 1, // 0=HEADER, 1=QUERY_PARAM (default)
97
+ val request: Map<String, String>? = null,
98
+ val session: Map<String, String>? = null,
99
+ val obj: Map<String, String>? = null, // 'object' is a Kotlin reserved keyword
100
+ val status: Map<String, String>? = null
101
+ )
102
+
103
+ data class GraniteVideoTextTrack(
104
+ val title: String = "",
105
+ val language: String = "",
106
+ val type: String = "",
107
+ val uri: String = ""
108
+ )
109
+
110
+ data class GraniteVideoAdsConfig(
111
+ val type: String? = null, // "csai" | "ssai"
112
+ val streamType: String? = null, // "vod" | "live"
113
+ val adTagUrl: String? = null,
114
+ val adLanguage: String? = null,
115
+ val contentSourceId: String? = null,
116
+ val videoId: String? = null,
117
+ val assetKey: String? = null,
118
+ val format: String? = null, // "hls" | "dash"
119
+ val fallbackUri: String? = null,
120
+ val adTagParameters: Map<String, String>? = null
121
+ )
122
+
64
123
  // ============================================================
65
124
  // Event Data Classes
66
125
  // ============================================================
@@ -206,6 +265,9 @@ interface GraniteVideoProvider {
206
265
  fun isHEVCSupported(): Boolean = false
207
266
  fun getWidevineLevel(): Int = 0
208
267
 
268
+ // Optional - Content Start Time (SSAI)
269
+ fun setContentStartTime(time: Double) {}
270
+
209
271
  // Lifecycle - Release resources
210
272
  fun release() {}
211
273
  }
@@ -11,17 +11,37 @@ const {
11
11
  // For Fabric (New Architecture), the component is always available through codegenNativeComponent
12
12
  // We don't need to check UIManager.getViewManagerConfig which is Old Architecture only
13
13
 
14
+ // Convert CMCD config to native format.
15
+ function normalizeCmcd(cmcd) {
16
+ if (cmcd === undefined || cmcd === null) {
17
+ return undefined;
18
+ }
19
+ if (typeof cmcd === 'boolean') {
20
+ if (!cmcd) {
21
+ return undefined;
22
+ }
23
+ // When true, use MODE_QUERY_PARAMETER as default
24
+ return {
25
+ mode: 1
26
+ };
27
+ }
28
+ return {
29
+ mode: cmcd.mode ?? 1,
30
+ request: cmcd.request,
31
+ // passes as Record through ReadableMap
32
+ session: cmcd.session,
33
+ object: cmcd.object,
34
+ status: cmcd.status
35
+ };
36
+ }
14
37
  function normalizeSource(source) {
15
38
  if (typeof source === 'number') {
16
39
  // require() - not yet supported in native
17
40
  return undefined;
18
41
  }
19
42
  return {
20
- uri: source.uri,
21
- type: source.type,
22
- startPosition: source.startPosition,
23
- cropStart: source.cropStart,
24
- cropEnd: source.cropEnd
43
+ ...source,
44
+ cmcd: normalizeCmcd(source.cmcd)
25
45
  };
26
46
  }
27
47
  function normalizeSelectedTrack(track) {
@@ -54,6 +74,9 @@ function normalizeDrm(drm) {
54
74
  base64Certificate: drm.base64Certificate
55
75
  };
56
76
  }
77
+
78
+ // Note: `live` is only available via source-embedded bufferConfig (NativeSourceBufferConfig),
79
+ // not via the top-level bufferConfig prop (NativeBufferConfig).
57
80
  function normalizeBufferConfig(config) {
58
81
  if (!config) {
59
82
  return undefined;
@@ -340,7 +363,10 @@ const VideoBase = /*#__PURE__*/forwardRef((props, ref) => {
340
363
  testID: testID,
341
364
  children: /*#__PURE__*/_jsx(NativeGraniteVideoView, {
342
365
  ref: nativeRef,
343
- style: styles.video,
366
+ style: styles.video
367
+ // Cast needed: normalizeSource includes fields (drm.headers, cmcd.request/session/object/status,
368
+ // ad.adTagParameters) that bypass Codegen typing and pass through ReadableMap directly.
369
+ ,
344
370
  source: normalizeSource(source),
345
371
  poster: getPosterUri(poster),
346
372
  posterResizeMode: posterResizeMode,
@@ -1 +1 @@
1
- {"version":3,"names":["React","forwardRef","useRef","useImperativeHandle","useCallback","Platform","StyleSheet","View","Image","findNodeHandle","NativeModules","NativeGraniteVideoView","Commands","jsx","_jsx","GraniteVideoModule","normalizeSource","source","undefined","uri","type","startPosition","cropStart","cropEnd","normalizeSelectedTrack","track","value","toString","normalizeSelectedVideoTrack","normalizeDrm","drm","licenseServer","contentId","certificateUrl","base64Certificate","normalizeBufferConfig","config","minBufferMs","maxBufferMs","bufferForPlaybackMs","bufferForPlaybackAfterRebufferMs","backBufferDurationMs","cacheSizeMB","getPosterUri","poster","resolved","resolveAssetSource","VideoBase","props","ref","testID","style","posterResizeMode","paused","muted","volume","rate","repeat","playInBackground","playWhenInactive","automaticallyWaitsToMinimizeStalling","shutterColor","resizeMode","viewType","useTextureView","useSecureView","bufferConfig","minLoadRetryCount","maxBitRate","preferredForwardBufferDuration","selectedAudioTrack","selectedTextTrack","selectedVideoTrack","localSourceEncryptionKeyScheme","adTagUrl","adLanguage","controls","showNotificationControls","disableFocus","disableDisconnectError","focusable","hideShutterView","preventsDisplaySleepDuringVideoPlayback","fullscreen","fullscreenAutorotate","fullscreenOrientation","pictureInPicture","contentStartTime","allowsExternalPlayback","audioOutput","ignoreSilentSwitch","mixWithOthers","debug","onLoadStart","onLoad","onError","onProgress","onSeek","onEnd","onBuffer","onBandwidthUpdate","onPlaybackStateChanged","onPlaybackRateChange","onVolumeChange","onIdle","onReadyForDisplay","onAudioFocusChanged","onAudioBecomingNoisy","onFullscreenPlayerWillPresent","onFullscreenPlayerDidPresent","onFullscreenPlayerWillDismiss","onFullscreenPlayerDidDismiss","onPictureInPictureStatusChanged","onRestoreUserInterfaceForPictureInPictureStop","onControlsVisibilityChange","onExternalPlaybackChange","onAspectRatio","onTransferEnd","nativeRef","seek","time","tolerance","current","pause","resume","setVolume","vol","adjustVolume","setFullScreen","fs","presentFullscreenPlayer","dismissFullscreenPlayer","enterPictureInPicture","exitPictureInPicture","setSource","newSource","loadSource","getCurrentPosition","handle","save","options","restoreUserInterfaceForPictureInPictureStopCompleted","handleLoadStart","event","nativeEvent","handleLoad","loadData","naturalSize","orientation","audioTracks","textTracks","videoTracks","handleError","handleProgress","handleSeek","handleEnd","handleBuffer","handleBandwidthUpdate","handlePlaybackStateChanged","handlePlaybackRateChange","handleVolumeChange","handleIdle","handleReadyForDisplay","handleAudioFocusChanged","handleAudioBecomingNoisy","handleFullscreenPlayerWillPresent","handleFullscreenPlayerDidPresent","handleFullscreenPlayerWillDismiss","handleFullscreenPlayerDidDismiss","handlePictureInPictureStatusChanged","handleRestoreUserInterfaceForPictureInPictureStop","handleControlsVisibilityChange","handleExternalPlaybackChange","handleAspectRatio","handleTransferEnd","containerStyle","styles","container","children","video","enableDebug","enable","enableDebugThread","thread","onVideoLoadStart","onVideoLoad","onVideoError","onVideoProgress","onVideoSeek","onVideoEnd","onVideoBuffer","onVideoBandwidthUpdate","onVideoPlaybackStateChanged","onVideoPlaybackRateChange","onVideoVolumeChange","onVideoIdle","onVideoReadyForDisplay","onVideoAudioFocusChanged","onVideoAudioBecomingNoisy","onVideoFullscreenPlayerWillPresent","onVideoFullscreenPlayerDidPresent","onVideoFullscreenPlayerWillDismiss","onVideoFullscreenPlayerDidDismiss","onVideoPictureInPictureStatusChanged","onVideoRestoreUserInterfaceForPictureInPictureStop","onVideoControlsVisibilityChange","onVideoExternalPlaybackChange","onVideoAspectRatio","displayName","isAvailable","Video","create","overflow","absoluteFillObject","clearCache","getWidevineLevel","OS","isCodecSupported","mimeType","width","height","isHEVCSupported"],"sourceRoot":"../../src","sources":["GraniteVideo.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","forwardRef","useRef","useImperativeHandle","useCallback","Platform","StyleSheet","View","Image","findNodeHandle","NativeModules","NativeGraniteVideoView","Commands","jsx","_jsx","GraniteVideoModule","normalizeCmcd","cmcd","undefined","mode","request","session","object","status","normalizeSource","source","normalizeSelectedTrack","track","type","value","toString","normalizeSelectedVideoTrack","normalizeDrm","drm","licenseServer","contentId","certificateUrl","base64Certificate","normalizeBufferConfig","config","minBufferMs","maxBufferMs","bufferForPlaybackMs","bufferForPlaybackAfterRebufferMs","backBufferDurationMs","cacheSizeMB","getPosterUri","poster","uri","resolved","resolveAssetSource","VideoBase","props","ref","testID","style","posterResizeMode","paused","muted","volume","rate","repeat","playInBackground","playWhenInactive","automaticallyWaitsToMinimizeStalling","shutterColor","resizeMode","viewType","useTextureView","useSecureView","bufferConfig","minLoadRetryCount","maxBitRate","preferredForwardBufferDuration","selectedAudioTrack","selectedTextTrack","selectedVideoTrack","localSourceEncryptionKeyScheme","adTagUrl","adLanguage","controls","showNotificationControls","disableFocus","disableDisconnectError","focusable","hideShutterView","preventsDisplaySleepDuringVideoPlayback","fullscreen","fullscreenAutorotate","fullscreenOrientation","pictureInPicture","contentStartTime","allowsExternalPlayback","audioOutput","ignoreSilentSwitch","mixWithOthers","debug","onLoadStart","onLoad","onError","onProgress","onSeek","onEnd","onBuffer","onBandwidthUpdate","onPlaybackStateChanged","onPlaybackRateChange","onVolumeChange","onIdle","onReadyForDisplay","onAudioFocusChanged","onAudioBecomingNoisy","onFullscreenPlayerWillPresent","onFullscreenPlayerDidPresent","onFullscreenPlayerWillDismiss","onFullscreenPlayerDidDismiss","onPictureInPictureStatusChanged","onRestoreUserInterfaceForPictureInPictureStop","onControlsVisibilityChange","onExternalPlaybackChange","onAspectRatio","onTransferEnd","nativeRef","seek","time","tolerance","current","pause","resume","setVolume","vol","adjustVolume","setFullScreen","fs","presentFullscreenPlayer","dismissFullscreenPlayer","enterPictureInPicture","exitPictureInPicture","setSource","newSource","loadSource","getCurrentPosition","handle","save","options","restoreUserInterfaceForPictureInPictureStopCompleted","handleLoadStart","event","nativeEvent","handleLoad","loadData","naturalSize","orientation","audioTracks","textTracks","videoTracks","handleError","handleProgress","handleSeek","handleEnd","handleBuffer","handleBandwidthUpdate","handlePlaybackStateChanged","handlePlaybackRateChange","handleVolumeChange","handleIdle","handleReadyForDisplay","handleAudioFocusChanged","handleAudioBecomingNoisy","handleFullscreenPlayerWillPresent","handleFullscreenPlayerDidPresent","handleFullscreenPlayerWillDismiss","handleFullscreenPlayerDidDismiss","handlePictureInPictureStatusChanged","handleRestoreUserInterfaceForPictureInPictureStop","handleControlsVisibilityChange","handleExternalPlaybackChange","handleAspectRatio","handleTransferEnd","containerStyle","styles","container","children","video","enableDebug","enable","enableDebugThread","thread","onVideoLoadStart","onVideoLoad","onVideoError","onVideoProgress","onVideoSeek","onVideoEnd","onVideoBuffer","onVideoBandwidthUpdate","onVideoPlaybackStateChanged","onVideoPlaybackRateChange","onVideoVolumeChange","onVideoIdle","onVideoReadyForDisplay","onVideoAudioFocusChanged","onVideoAudioBecomingNoisy","onVideoFullscreenPlayerWillPresent","onVideoFullscreenPlayerDidPresent","onVideoFullscreenPlayerWillDismiss","onVideoFullscreenPlayerDidDismiss","onVideoPictureInPictureStatusChanged","onVideoRestoreUserInterfaceForPictureInPictureStop","onVideoControlsVisibilityChange","onVideoExternalPlaybackChange","onVideoAspectRatio","displayName","isAvailable","Video","create","overflow","absoluteFillObject","clearCache","getWidevineLevel","OS","isCodecSupported","mimeType","width","height","isHEVCSupported"],"sourceRoot":"../../src","sources":["GraniteVideo.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,MAAM,EAAEC,mBAAmB,EAAEC,WAAW,QAAQ,OAAO;AACnF,SACEC,QAAQ,EACRC,UAAU,EACVC,IAAI,EACJC,KAAK,EACLC,cAAc,EACdC,aAAa,QAIR,cAAc;AACrB,OAAOC,sBAAsB,IAC3BC,QAAQ,QAkBH,+BAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGvC,MAAM;EAAEC;AAAmB,CAAC,GAAGL,aAAa;;AAE5C;AACA;;AAEA;AACA,SAASM,aAAaA,CAACC,IAAyB,EAAE;EAChD,IAAIA,IAAI,KAAKC,SAAS,IAAID,IAAI,KAAK,IAAI,EAAE;IACvC,OAAOC,SAAS;EAClB;EACA,IAAI,OAAOD,IAAI,KAAK,SAAS,EAAE;IAC7B,IAAI,CAACA,IAAI,EAAE;MACT,OAAOC,SAAS;IAClB;IACA;IACA,OAAO;MAAEC,IAAI,EAAE;IAAE,CAAC;EACpB;EACA,OAAO;IACLA,IAAI,EAAEF,IAAI,CAACE,IAAI,IAAI,CAAC;IACpBC,OAAO,EAAEH,IAAI,CAACG,OAAO;IAAI;IACzBC,OAAO,EAAEJ,IAAI,CAACI,OAAO;IACrBC,MAAM,EAAEL,IAAI,CAACK,MAAM;IACnBC,MAAM,EAAEN,IAAI,CAACM;EACf,CAAC;AACH;AAEA,SAASC,eAAeA,CAACC,MAA4B,EAAqC;EACxF,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;IAC9B;IACA,OAAOP,SAAS;EAClB;EAEA,OAAO;IACL,GAAGO,MAAM;IACTR,IAAI,EAAED,aAAa,CAACS,MAAM,CAACR,IAAI;EACjC,CAAC;AACH;AAEA,SAASS,sBAAsBA,CAC7BC,KAAwC,EACO;EAC/C,IAAI,CAACA,KAAK,EAAE;IACV,OAAOT,SAAS;EAClB;EACA,OAAO;IACLU,IAAI,EAAED,KAAK,CAACC,IAAI;IAChBC,KAAK,EAAEF,KAAK,CAACE,KAAK,EAAEC,QAAQ,CAAC;EAC/B,CAAC;AACH;AAEA,SAASC,2BAA2BA,CAClCJ,KAAwC,EACO;EAC/C,IAAI,CAACA,KAAK,EAAE;IACV,OAAOT,SAAS;EAClB;EACA,OAAO;IACLU,IAAI,EAAED,KAAK,CAACC,IAAI;IAChBC,KAAK,EAAEF,KAAK,CAACE;EACf,CAAC;AACH;AAEA,SAASG,YAAYA,CAACC,GAAuB,EAAkC;EAC7E,IAAI,CAACA,GAAG,EAAE;IACR,OAAOf,SAAS;EAClB;EACA,OAAO;IACLU,IAAI,EAAEK,GAAG,CAACL,IAAI;IACdM,aAAa,EAAED,GAAG,CAACC,aAAa;IAChCC,SAAS,EAAEF,GAAG,CAACE,SAAS;IACxBC,cAAc,EAAEH,GAAG,CAACG,cAAc;IAClCC,iBAAiB,EAAEJ,GAAG,CAACI;EACzB,CAAC;AACH;;AAEA;AACA;AACA,SAASC,qBAAqBA,CAACC,MAAmC,EAA2C;EAC3G,IAAI,CAACA,MAAM,EAAE;IACX,OAAOrB,SAAS;EAClB;EACA,OAAO;IACLsB,WAAW,EAAED,MAAM,CAACC,WAAW;IAC/BC,WAAW,EAAEF,MAAM,CAACE,WAAW;IAC/BC,mBAAmB,EAAEH,MAAM,CAACG,mBAAmB;IAC/CC,gCAAgC,EAAEJ,MAAM,CAACI,gCAAgC;IACzEC,oBAAoB,EAAEL,MAAM,CAACK,oBAAoB;IACjDC,WAAW,EAAEN,MAAM,CAACM;EACtB,CAAC;AACH;AAEA,SAASC,YAAYA,CAACC,MAA6B,EAAsB;EACvE,IAAI,CAACA,MAAM,EAAE;IACX,OAAO7B,SAAS;EAClB;EACA,IAAI,OAAO6B,MAAM,KAAK,QAAQ,EAAE;IAC9B,OAAOA,MAAM;EACf;EACA,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAI,KAAK,IAAIA,MAAM,IAAIA,MAAM,CAACC,GAAG,EAAE;IAC/D,OAAOD,MAAM,CAACC,GAAG;EACnB;EACA,MAAMC,QAAQ,GAAGzC,KAAK,CAAC0C,kBAAkB,CAACH,MAAa,CAAC;EACxD,OAAOE,QAAQ,EAAED,GAAG;AACtB;AAEA,MAAMG,SAAS,gBAAGlD,UAAU,CAAuB,CAACmD,KAAK,EAAEC,GAAG,KAAK;EACjE,MAAM;IACJ;IACAC,MAAM;IACN;IACAC,KAAK;IACL;IACA9B,MAAM;IACN;IACAsB,MAAM;IACNS,gBAAgB,GAAG,SAAS;IAC5B;IACAC,MAAM,GAAG,KAAK;IACdC,KAAK,GAAG,KAAK;IACbC,MAAM,GAAG,GAAG;IACZC,IAAI,GAAG,GAAG;IACVC,MAAM,GAAG,KAAK;IACdC,gBAAgB,GAAG,KAAK;IACxBC,gBAAgB,GAAG,KAAK;IACxBC,oCAAoC,GAAG,IAAI;IAC3CC,YAAY;IACZ;IACAC,UAAU,GAAG,SAAS;IACtBC,QAAQ,GAAG,SAAS;IACpBC,cAAc,GAAG,KAAK;IACtBC,aAAa,GAAG,KAAK;IACrB;IACAC,YAAY;IACZC,iBAAiB,GAAG,CAAC;IACrBC,UAAU;IACVC,8BAA8B;IAC9B;IACAC,kBAAkB;IAClBC,iBAAiB;IACjBC,kBAAkB;IAClB;IACA3C,GAAG;IACH4C,8BAA8B;IAC9B;IACAC,QAAQ;IACRC,UAAU;IACV;IACAC,QAAQ,GAAG,KAAK;IAChBC,wBAAwB,GAAG,KAAK;IAChCC,YAAY,GAAG,KAAK;IACpBC,sBAAsB,GAAG,KAAK;IAC9BC,SAAS,GAAG,IAAI;IAChBC,eAAe,GAAG,KAAK;IACvBC,uCAAuC,GAAG,IAAI;IAC9C;IACAC,UAAU,GAAG,KAAK;IAClBC,oBAAoB,GAAG,IAAI;IAC3BC,qBAAqB,GAAG,KAAK;IAC7B;IACAC,gBAAgB,GAAG,KAAK;IACxB;IACAC,gBAAgB;IAChBC,sBAAsB,GAAG,IAAI;IAC7BC,WAAW,GAAG,SAAS;IACvBC,kBAAkB,GAAG,SAAS;IAC9BC,aAAa,GAAG,SAAS;IACzB;IACAC,KAAK;IACL;IACAC,WAAW;IACXC,MAAM;IACNC,OAAO;IACPC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,QAAQ;IACRC,iBAAiB;IACjBC,sBAAsB;IACtBC,oBAAoB;IACpBC,cAAc;IACdC,MAAM;IACNC,iBAAiB;IACjBC,mBAAmB;IACnBC,oBAAoB;IACpBC,6BAA6B;IAC7BC,4BAA4B;IAC5BC,6BAA6B;IAC7BC,4BAA4B;IAC5BC,+BAA+B;IAC/BC,6CAA6C;IAC7CC,0BAA0B;IAC1BC,wBAAwB;IACxBC,aAAa;IACbC;EACF,CAAC,GAAGrE,KAAK;EAET,MAAMsE,SAAS,GAAGxH,MAAM,CAAkD,IAAI,CAAC;;EAE/E;EACAC,mBAAmB,CAACkD,GAAG,EAAE,OAAO;IAC9BsE,IAAI,EAAEA,CAACC,IAAY,EAAEC,SAAkB,KAAK;MAC1C,IAAIH,SAAS,CAACI,OAAO,EAAE;QACrBlH,QAAQ,CAAC+G,IAAI,CAACD,SAAS,CAACI,OAAO,EAAEF,IAAI,EAAEC,SAAS,IAAI,CAAC,CAAC;MACxD;IACF,CAAC;IACDE,KAAK,EAAEA,CAAA,KAAM;MACX,IAAIL,SAAS,CAACI,OAAO,EAAE;QACrBlH,QAAQ,CAACmH,KAAK,CAACL,SAAS,CAACI,OAAO,CAAC;MACnC;IACF,CAAC;IACDE,MAAM,EAAEA,CAAA,KAAM;MACZ,IAAIN,SAAS,CAACI,OAAO,EAAE;QACrBlH,QAAQ,CAACoH,MAAM,CAACN,SAAS,CAACI,OAAO,CAAC;MACpC;IACF,CAAC;IACDG,SAAS,EAAGC,GAAW,IAAK;MAC1B,IAAIR,SAAS,CAACI,OAAO,EAAE;QACrBlH,QAAQ,CAACuH,YAAY,CAACT,SAAS,CAACI,OAAO,EAAEI,GAAG,CAAC;MAC/C;IACF,CAAC;IACDE,aAAa,EAAGC,EAAW,IAAK;MAC9B,IAAIX,SAAS,CAACI,OAAO,EAAE;QACrBlH,QAAQ,CAACwH,aAAa,CAACV,SAAS,CAACI,OAAO,EAAEO,EAAE,CAAC;MAC/C;IACF,CAAC;IACDC,uBAAuB,EAAEA,CAAA,KAAM;MAC7B,IAAIZ,SAAS,CAACI,OAAO,EAAE;QACrBlH,QAAQ,CAACwH,aAAa,CAACV,SAAS,CAACI,OAAO,EAAE,IAAI,CAAC;MACjD;IACF,CAAC;IACDS,uBAAuB,EAAEA,CAAA,KAAM;MAC7B,IAAIb,SAAS,CAACI,OAAO,EAAE;QACrBlH,QAAQ,CAACwH,aAAa,CAACV,SAAS,CAACI,OAAO,EAAE,KAAK,CAAC;MAClD;IACF,CAAC;IACDU,qBAAqB,EAAEA,CAAA,KAAM;MAC3B,IAAId,SAAS,CAACI,OAAO,EAAE;QACrBlH,QAAQ,CAAC4H,qBAAqB,CAACd,SAAS,CAACI,OAAO,CAAC;MACnD;IACF,CAAC;IACDW,oBAAoB,EAAEA,CAAA,KAAM;MAC1B,IAAIf,SAAS,CAACI,OAAO,EAAE;QACrBlH,QAAQ,CAAC6H,oBAAoB,CAACf,SAAS,CAACI,OAAO,CAAC;MAClD;IACF,CAAC;IACDY,SAAS,EAAGC,SAAsB,IAAK;MACrC,IAAIjB,SAAS,CAACI,OAAO,IAAIa,SAAS,CAAC3F,GAAG,EAAE;QACtCpC,QAAQ,CAACgI,UAAU,CAAClB,SAAS,CAACI,OAAO,EAAEa,SAAS,CAAC3F,GAAG,CAAC;MACvD;IACF,CAAC;IACD6F,kBAAkB,EAAE,MAAAA,CAAA,KAAY;MAC9B,MAAMC,MAAM,GAAGrI,cAAc,CAACiH,SAAS,CAACI,OAAO,CAAC;MAChD,IAAIgB,MAAM,IAAI/H,kBAAkB,EAAE8H,kBAAkB,EAAE;QACpD,OAAO9H,kBAAkB,CAAC8H,kBAAkB,CAACC,MAAM,CAAC;MACtD;MACA,OAAO,CAAC;IACV,CAAC;IACDC,IAAI,EAAE,MAAOC,OAA2B,IAAK;MAC3C,MAAMF,MAAM,GAAGrI,cAAc,CAACiH,SAAS,CAACI,OAAO,CAAC;MAChD,IAAIgB,MAAM,IAAI/H,kBAAkB,EAAEgI,IAAI,EAAE;QACtC,OAAOhI,kBAAkB,CAACgI,IAAI,CAACD,MAAM,EAAEE,OAAO,IAAI,CAAC,CAAC,CAAC;MACvD;MACA,OAAO;QAAEhG,GAAG,EAAE;MAAG,CAAC;IACpB,CAAC;IACDiG,oDAAoD,EAAEA,CAAA,KAAM;MAC1D;IAAA;EAEJ,CAAC,CAAC,CAAC;;EAEH;EACA,MAAMC,eAAe,GAAG9I,WAAW,CAChC+I,KAAkD,IAAK;IACtDlD,WAAW,GAAGkD,KAAK,CAACC,WAAW,CAAC;EAClC,CAAC,EACD,CAACnD,WAAW,CACd,CAAC;EAED,MAAMoD,UAAU,GAAGjJ,WAAW,CAC3B+I,KAA6C,IAAK;IACjD,MAAMC,WAAW,GAAGD,KAAK,CAACC,WAAW;IACrC,MAAME,QAAoB,GAAG;MAC3B,GAAGF,WAAW;MACdG,WAAW,EAAE;QACX,GAAGH,WAAW,CAACG,WAAW;QAC1BC,WAAW,EAAEJ,WAAW,CAACG,WAAW,CAACC;MACvC,CAAC;MACDC,WAAW,EAAE,EAAE;MACfC,UAAU,EAAE,EAAE;MACdC,WAAW,EAAE;IACf,CAAC;IACDzD,MAAM,GAAGoD,QAAQ,CAAC;EACpB,CAAC,EACD,CAACpD,MAAM,CACT,CAAC;EAED,MAAM0D,WAAW,GAAGxJ,WAAW,CAC5B+I,KAA8C,IAAK;IAClDhD,OAAO,GAAGgD,KAAK,CAACC,WAAW,CAAC;EAC9B,CAAC,EACD,CAACjD,OAAO,CACV,CAAC;EAED,MAAM0D,cAAc,GAAGzJ,WAAW,CAC/B+I,KAAiD,IAAK;IACrD/C,UAAU,GAAG+C,KAAK,CAACC,WAAW,CAAC;EACjC,CAAC,EACD,CAAChD,UAAU,CACb,CAAC;EAED,MAAM0D,UAAU,GAAG1J,WAAW,CAC3B+I,KAA6C,IAAK;IACjD9C,MAAM,GAAG8C,KAAK,CAACC,WAAW,CAAC;EAC7B,CAAC,EACD,CAAC/C,MAAM,CACT,CAAC;EAED,MAAM0D,SAAS,GAAG3J,WAAW,CAAC,MAAM;IAClCkG,KAAK,GAAG,CAAC;EACX,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEX,MAAM0D,YAAY,GAAG5J,WAAW,CAC7B+I,KAA+C,IAAK;IACnD5C,QAAQ,GAAG4C,KAAK,CAACC,WAAW,CAAC;EAC/B,CAAC,EACD,CAAC7C,QAAQ,CACX,CAAC;EAED,MAAM0D,qBAAqB,GAAG7J,WAAW,CACtC+I,KAAwD,IAAK;IAC5D3C,iBAAiB,GAAG2C,KAAK,CAACC,WAAW,CAAC;EACxC,CAAC,EACD,CAAC5C,iBAAiB,CACpB,CAAC;EAED,MAAM0D,0BAA0B,GAAG9J,WAAW,CAC3C+I,KAA6D,IAAK;IACjE1C,sBAAsB,GAAG0C,KAAK,CAACC,WAAW,CAAC;EAC7C,CAAC,EACD,CAAC3C,sBAAsB,CACzB,CAAC;EAED,MAAM0D,wBAAwB,GAAG/J,WAAW,CACzC+I,KAA2D,IAAK;IAC/DzC,oBAAoB,GAAGyC,KAAK,CAACC,WAAW,CAAC;EAC3C,CAAC,EACD,CAAC1C,oBAAoB,CACvB,CAAC;EAED,MAAM0D,kBAAkB,GAAGhK,WAAW,CACnC+I,KAAqD,IAAK;IACzDxC,cAAc,GAAGwC,KAAK,CAACC,WAAW,CAAC;EACrC,CAAC,EACD,CAACzC,cAAc,CACjB,CAAC;EAED,MAAM0D,UAAU,GAAGjK,WAAW,CAAC,MAAM;IACnCwG,MAAM,GAAG,CAAC;EACZ,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EAEZ,MAAM0D,qBAAqB,GAAGlK,WAAW,CAAC,MAAM;IAC9CyG,iBAAiB,GAAG,CAAC;EACvB,CAAC,EAAE,CAACA,iBAAiB,CAAC,CAAC;EAEvB,MAAM0D,uBAAuB,GAAGnK,WAAW,CACxC+I,KAA0D,IAAK;IAC9DrC,mBAAmB,GAAGqC,KAAK,CAACC,WAAW,CAAC;EAC1C,CAAC,EACD,CAACtC,mBAAmB,CACtB,CAAC;EAED,MAAM0D,wBAAwB,GAAGpK,WAAW,CAAC,MAAM;IACjD2G,oBAAoB,GAAG,CAAC;EAC1B,CAAC,EAAE,CAACA,oBAAoB,CAAC,CAAC;EAE1B,MAAM0D,iCAAiC,GAAGrK,WAAW,CAAC,MAAM;IAC1D4G,6BAA6B,GAAG,CAAC;EACnC,CAAC,EAAE,CAACA,6BAA6B,CAAC,CAAC;EAEnC,MAAM0D,gCAAgC,GAAGtK,WAAW,CAAC,MAAM;IACzD6G,4BAA4B,GAAG,CAAC;EAClC,CAAC,EAAE,CAACA,4BAA4B,CAAC,CAAC;EAElC,MAAM0D,iCAAiC,GAAGvK,WAAW,CAAC,MAAM;IAC1D8G,6BAA6B,GAAG,CAAC;EACnC,CAAC,EAAE,CAACA,6BAA6B,CAAC,CAAC;EAEnC,MAAM0D,gCAAgC,GAAGxK,WAAW,CAAC,MAAM;IACzD+G,4BAA4B,GAAG,CAAC;EAClC,CAAC,EAAE,CAACA,4BAA4B,CAAC,CAAC;EAElC,MAAM0D,mCAAmC,GAAGzK,WAAW,CACpD+I,KAAsE,IAAK;IAC1E/B,+BAA+B,GAAG+B,KAAK,CAACC,WAAW,CAAC;EACtD,CAAC,EACD,CAAChC,+BAA+B,CAClC,CAAC;EAED,MAAM0D,iDAAiD,GAAG1K,WAAW,CAAC,MAAM;IAC1EiH,6CAA6C,GAAG,CAAC;EACnD,CAAC,EAAE,CAACA,6CAA6C,CAAC,CAAC;EAEnD,MAAM0D,8BAA8B,GAAG3K,WAAW,CAC/C+I,KAAiE,IAAK;IACrE7B,0BAA0B,GAAG6B,KAAK,CAACC,WAAW,CAAC;EACjD,CAAC,EACD,CAAC9B,0BAA0B,CAC7B,CAAC;EAED,MAAM0D,4BAA4B,GAAG5K,WAAW,CAC7C+I,KAA+D,IAAK;IACnE5B,wBAAwB,GAAG4B,KAAK,CAACC,WAAW,CAAC;EAC/C,CAAC,EACD,CAAC7B,wBAAwB,CAC3B,CAAC;EAED,MAAM0D,iBAAiB,GAAG7K,WAAW,CAClC+I,KAAoD,IAAK;IACxD3B,aAAa,GAAG2B,KAAK,CAACC,WAAW,CAAC;EACpC,CAAC,EACD,CAAC5B,aAAa,CAChB,CAAC;EAED,MAAM0D,iBAAiB,GAAG9K,WAAW,CAClC+I,KAA6C,IAAK;IACjD1B,aAAa,GAAG0B,KAAK,CAACC,WAAW,CAAC;EACpC,CAAC,EACD,CAAC3B,aAAa,CAChB,CAAC;;EAED;EACA,MAAM0D,cAAoC,GAAG,CAACC,MAAM,CAACC,SAAS,EAAE9H,KAAK,CAAC;EAEtE,oBACEzC,IAAA,CAACP,IAAI;IAACgD,KAAK,EAAE4H,cAAe;IAAC7H,MAAM,EAAEA,MAAO;IAAAgI,QAAA,eAC1CxK,IAAA,CAACH,sBAAsB;MACrB0C,GAAG,EAAEqE,SAAU;MACfnE,KAAK,EAAE6H,MAAM,CAACG;MACd;MACA;MAAA;MACA9J,MAAM,EAAED,eAAe,CAACC,MAAM,CAAE;MAChCsB,MAAM,EAAED,YAAY,CAACC,MAAM,CAAE;MAC7BS,gBAAgB,EAAEA,gBAAiB;MACnCC,MAAM,EAAEA,MAAO;MACfC,KAAK,EAAEA,KAAM;MACbC,MAAM,EAAEA,MAAO;MACfC,IAAI,EAAEA,IAAK;MACXC,MAAM,EAAEA,MAAO;MACfC,gBAAgB,EAAEA,gBAAiB;MACnCC,gBAAgB,EAAEA,gBAAiB;MACnCC,oCAAoC,EAAEA,oCAAqC;MAC3EC,YAAY,EAAEA,YAAa;MAC3BC,UAAU,EAAEA,UAAW;MACvBC,QAAQ,EAAEA,QAAS;MACnBC,cAAc,EAAEA,cAAe;MAC/BC,aAAa,EAAEA,aAAc;MAC7BC,YAAY,EAAEhC,qBAAqB,CAACgC,YAAY,CAAE;MAClDC,iBAAiB,EAAEA,iBAAkB;MACrCC,UAAU,EAAEA,UAAW;MACvBC,8BAA8B,EAAEA,8BAA+B;MAC/DC,kBAAkB,EAAEhD,sBAAsB,CAACgD,kBAAkB,CAAE;MAC/DC,iBAAiB,EAAEjD,sBAAsB,CAACiD,iBAAiB,CAAE;MAC7DC,kBAAkB,EAAE7C,2BAA2B,CAAC6C,kBAAkB,CAAE;MACpE3C,GAAG,EAAED,YAAY,CAACC,GAAG,CAAE;MACvB4C,8BAA8B,EAAEA,8BAA+B;MAC/DC,QAAQ,EAAEA,QAAS;MACnBC,UAAU,EAAEA,UAAW;MACvBC,QAAQ,EAAEA,QAAS;MACnBC,wBAAwB,EAAEA,wBAAyB;MACnDC,YAAY,EAAEA,YAAa;MAC3BC,sBAAsB,EAAEA,sBAAuB;MAC/CC,SAAS,EAAEA,SAAU;MACrBC,eAAe,EAAEA,eAAgB;MACjCC,uCAAuC,EAAEA,uCAAwC;MACjFC,UAAU,EAAEA,UAAW;MACvBC,oBAAoB,EAAEA,oBAAqB;MAC3CC,qBAAqB,EAAEA,qBAAsB;MAC7CC,gBAAgB,EAAEA,gBAAiB;MACnCC,gBAAgB,EAAEA,gBAAiB;MACnCC,sBAAsB,EAAEA,sBAAuB;MAC/CC,WAAW,EAAEA,WAAY;MACzBC,kBAAkB,EAAEA,kBAAmB;MACvCC,aAAa,EAAEA,aAAc;MAC7ByF,WAAW,EAAExF,KAAK,EAAEyF,MAAO;MAC3BC,iBAAiB,EAAE1F,KAAK,EAAE2F,MAAO;MACjCC,gBAAgB,EAAE1C,eAAgB;MAClC2C,WAAW,EAAExC,UAAW;MACxByC,YAAY,EAAElC,WAAY;MAC1BmC,eAAe,EAAElC,cAAe;MAChCmC,WAAW,EAAElC,UAAW;MACxBmC,UAAU,EAAElC,SAAU;MACtBmC,aAAa,EAAElC,YAAa;MAC5BmC,sBAAsB,EAAElC,qBAAsB;MAC9CmC,2BAA2B,EAAElC,0BAA2B;MACxDmC,yBAAyB,EAAElC,wBAAyB;MACpDmC,mBAAmB,EAAElC,kBAAmB;MACxCmC,WAAW,EAAElC,UAAW;MACxBmC,sBAAsB,EAAElC,qBAAsB;MAC9CmC,wBAAwB,EAAElC,uBAAwB;MAClDmC,yBAAyB,EAAElC,wBAAyB;MACpDmC,kCAAkC,EAAElC,iCAAkC;MACtEmC,iCAAiC,EAAElC,gCAAiC;MACpEmC,kCAAkC,EAAElC,iCAAkC;MACtEmC,iCAAiC,EAAElC,gCAAiC;MACpEmC,oCAAoC,EAAElC,mCAAoC;MAC1EmC,kDAAkD,EAAElC,iDAAkD;MACtGmC,+BAA+B,EAAElC,8BAA+B;MAChEmC,6BAA6B,EAAElC,4BAA6B;MAC5DmC,kBAAkB,EAAElC,iBAAkB;MACtCxD,aAAa,EAAEyD;IAAkB,CAClC;EAAC,CACE,CAAC;AAEX,CAAC,CAAC;AAEF/H,SAAS,CAACiK,WAAW,GAAG,OAAO;;AAE/B;;AAKA;AACA;AACCjK,SAAS,CAAoBkK,WAAW,GAAG,IAAI;AAEhD,OAAO,MAAMC,KAAK,GAAGnK,SAA2B;AAEhD,MAAMiI,MAAM,GAAG9K,UAAU,CAACiN,MAAM,CAAC;EAC/BlC,SAAS,EAAE;IACTmC,QAAQ,EAAE;EACZ,CAAC;EACDjC,KAAK,EAAE;IACL,GAAGjL,UAAU,CAACmN;EAChB;AACF,CAAC,CAAC;;AAEF;AACA,OAAO,eAAeC,UAAUA,CAAA,EAAkB;EAChD,IAAI3M,kBAAkB,EAAE2M,UAAU,EAAE;IAClC,OAAO3M,kBAAkB,CAAC2M,UAAU,CAAC,CAAC;EACxC;AACF;AAEA,OAAO,eAAeC,gBAAgBA,CAAA,EAAoB;EACxD,IAAItN,QAAQ,CAACuN,EAAE,KAAK,SAAS,IAAI7M,kBAAkB,EAAE4M,gBAAgB,EAAE;IACrE,OAAO5M,kBAAkB,CAAC4M,gBAAgB,CAAC,CAAC;EAC9C;EACA,OAAO,CAAC;AACV;AAEA,OAAO,eAAeE,gBAAgBA,CAACC,QAAgB,EAAEC,KAAa,EAAEC,MAAc,EAAoB;EACxG,IAAIjN,kBAAkB,EAAE8M,gBAAgB,EAAE;IACxC,OAAO9M,kBAAkB,CAAC8M,gBAAgB,CAACC,QAAQ,EAAEC,KAAK,EAAEC,MAAM,CAAC;EACrE;EACA,OAAO,KAAK;AACd;AAEA,OAAO,eAAeC,eAAeA,CAAA,EAAqB;EACxD,IAAIlN,kBAAkB,EAAEkN,eAAe,EAAE;IACvC,OAAOlN,kBAAkB,CAACkN,eAAe,CAAC,CAAC;EAC7C;EACA,OAAO,KAAK;AACd","ignoreList":[]}
@@ -11,12 +11,93 @@ import {
11
11
  // Native Props Interface
12
12
  // ============================================================
13
13
 
14
+ // Native video metadata
15
+ interface NativeVideoMetadata {
16
+ title?: string;
17
+ subtitle?: string;
18
+ description?: string;
19
+ artist?: string;
20
+ imageUri?: string;
21
+ }
22
+
23
+ // Native DRM config (source-embedded DRM)
24
+ interface NativeSourceDrmConfig {
25
+ type?: string;
26
+ licenseServer?: string;
27
+ contentId?: string;
28
+ certificateUrl?: string;
29
+ base64Certificate?: boolean;
30
+ multiDrm?: boolean;
31
+ localSourceEncryptionKeyScheme?: string; // iOS-Only offline DRM key scheme
32
+ }
33
+
34
+ // Native CMCD config
35
+ interface NativeCmcdConfiguration {
36
+ mode?: Int32;
37
+ }
38
+
39
+ // Native text track
40
+ interface NativeTextTrack {
41
+ title: string;
42
+ language: string;
43
+ type: string;
44
+ uri: string;
45
+ }
46
+
47
+ // Native ad config
48
+ interface NativeAdsConfig {
49
+ type?: string;
50
+ streamType?: string;
51
+ adTagUrl?: string;
52
+ adLanguage?: string;
53
+ contentSourceId?: string;
54
+ videoId?: string;
55
+ assetKey?: string;
56
+ format?: string;
57
+ fallbackUri?: string;
58
+ }
59
+
60
+ // Native live buffer config
61
+ interface NativeBufferConfigLive {
62
+ maxPlaybackSpeed?: Float;
63
+ minPlaybackSpeed?: Float;
64
+ maxOffsetMs?: Int32;
65
+ minOffsetMs?: Int32;
66
+ targetOffsetMs?: Int32;
67
+ }
68
+
69
+ // Native source-embedded buffer config
70
+ interface NativeSourceBufferConfig {
71
+ minBufferMs?: Int32;
72
+ maxBufferMs?: Int32;
73
+ bufferForPlaybackMs?: Int32;
74
+ bufferForPlaybackAfterRebufferMs?: Int32;
75
+ backBufferDurationMs?: Int32;
76
+ cacheSizeMB?: Int32;
77
+ live?: NativeBufferConfigLive;
78
+ }
79
+
14
80
  interface NativeVideoSource {
15
81
  uri?: string;
16
82
  type?: string;
17
83
  startPosition?: Double;
18
84
  cropStart?: Double;
19
85
  cropEnd?: Double;
86
+ isNetwork?: boolean;
87
+ isAsset?: boolean;
88
+ isLocalAssetFile?: boolean;
89
+ shouldCache?: boolean;
90
+ mainVer?: Int32;
91
+ patchVer?: Int32;
92
+ contentStartTime?: Double;
93
+ metadata?: NativeVideoMetadata;
94
+ drm?: NativeSourceDrmConfig;
95
+ cmcd?: NativeCmcdConfiguration;
96
+ textTracksAllowChunklessPreparation?: boolean;
97
+ textTracks?: ReadonlyArray<Readonly<NativeTextTrack>>;
98
+ ad?: NativeAdsConfig;
99
+ minLoadRetryCount?: Int32;
100
+ bufferConfig?: NativeSourceBufferConfig;
20
101
  }
21
102
 
22
103
  interface NativeBufferConfig {
@@ -1,4 +1,47 @@
1
1
  "use strict";
2
2
 
3
- export {};
3
+ // ============================================================
4
+ // Source Types
5
+ // ============================================================
6
+
7
+ // CMCD (Common Media Client Data) - Android Only
8
+ export let CmcdMode = /*#__PURE__*/function (CmcdMode) {
9
+ CmcdMode[CmcdMode["MODE_REQUEST_HEADER"] = 0] = "MODE_REQUEST_HEADER";
10
+ CmcdMode[CmcdMode["MODE_QUERY_PARAMETER"] = 1] = "MODE_QUERY_PARAMETER";
11
+ return CmcdMode;
12
+ }({});
13
+
14
+ // Ad configuration
15
+
16
+ // ============================================================
17
+ // Track Selection Types
18
+ // ============================================================
19
+
20
+ // ============================================================
21
+ // Resize Mode
22
+ // ============================================================
23
+
24
+ // ============================================================
25
+ // View Type (Android)
26
+ // ============================================================
27
+
28
+ // ============================================================
29
+ // Poster Source
30
+ // ============================================================
31
+
32
+ // ============================================================
33
+ // Event Data Types
34
+ // ============================================================
35
+
36
+ // ============================================================
37
+ // Ref Methods
38
+ // ============================================================
39
+
40
+ // ============================================================
41
+ // Component Props
42
+ // ============================================================
43
+
44
+ // ============================================================
45
+ // Static Methods
46
+ // ============================================================
4
47
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":["CmcdMode"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAmBA;AACA;AACA;;AAwCA;AACA,WAAYA,QAAQ,0BAARA,QAAQ;EAARA,QAAQ,CAARA,QAAQ;EAARA,QAAQ,CAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;;AAiBpB;;AAqDA;AACA;AACA;;AAeA;AACA;AACA;;AAIA;AACA;AACA;;AAIA;AACA;AACA;;AAQA;AACA;AACA;;AA6EA;AACA;AACA;;AAkBA;AACA;AACA;;AAsOA;AACA;AACA","ignoreList":[]}
@@ -1,11 +1,78 @@
1
1
  import { type ViewProps, type HostComponent } from 'react-native';
2
2
  import { type Int32, type Float, type Double, type DirectEventHandler, type WithDefault } from 'react-native/Libraries/Types/CodegenTypes';
3
+ interface NativeVideoMetadata {
4
+ title?: string;
5
+ subtitle?: string;
6
+ description?: string;
7
+ artist?: string;
8
+ imageUri?: string;
9
+ }
10
+ interface NativeSourceDrmConfig {
11
+ type?: string;
12
+ licenseServer?: string;
13
+ contentId?: string;
14
+ certificateUrl?: string;
15
+ base64Certificate?: boolean;
16
+ multiDrm?: boolean;
17
+ localSourceEncryptionKeyScheme?: string;
18
+ }
19
+ interface NativeCmcdConfiguration {
20
+ mode?: Int32;
21
+ }
22
+ interface NativeTextTrack {
23
+ title: string;
24
+ language: string;
25
+ type: string;
26
+ uri: string;
27
+ }
28
+ interface NativeAdsConfig {
29
+ type?: string;
30
+ streamType?: string;
31
+ adTagUrl?: string;
32
+ adLanguage?: string;
33
+ contentSourceId?: string;
34
+ videoId?: string;
35
+ assetKey?: string;
36
+ format?: string;
37
+ fallbackUri?: string;
38
+ }
39
+ interface NativeBufferConfigLive {
40
+ maxPlaybackSpeed?: Float;
41
+ minPlaybackSpeed?: Float;
42
+ maxOffsetMs?: Int32;
43
+ minOffsetMs?: Int32;
44
+ targetOffsetMs?: Int32;
45
+ }
46
+ interface NativeSourceBufferConfig {
47
+ minBufferMs?: Int32;
48
+ maxBufferMs?: Int32;
49
+ bufferForPlaybackMs?: Int32;
50
+ bufferForPlaybackAfterRebufferMs?: Int32;
51
+ backBufferDurationMs?: Int32;
52
+ cacheSizeMB?: Int32;
53
+ live?: NativeBufferConfigLive;
54
+ }
3
55
  interface NativeVideoSource {
4
56
  uri?: string;
5
57
  type?: string;
6
58
  startPosition?: Double;
7
59
  cropStart?: Double;
8
60
  cropEnd?: Double;
61
+ isNetwork?: boolean;
62
+ isAsset?: boolean;
63
+ isLocalAssetFile?: boolean;
64
+ shouldCache?: boolean;
65
+ mainVer?: Int32;
66
+ patchVer?: Int32;
67
+ contentStartTime?: Double;
68
+ metadata?: NativeVideoMetadata;
69
+ drm?: NativeSourceDrmConfig;
70
+ cmcd?: NativeCmcdConfiguration;
71
+ textTracksAllowChunklessPreparation?: boolean;
72
+ textTracks?: ReadonlyArray<Readonly<NativeTextTrack>>;
73
+ ad?: NativeAdsConfig;
74
+ minLoadRetryCount?: Int32;
75
+ bufferConfig?: NativeSourceBufferConfig;
9
76
  }
10
77
  interface NativeBufferConfig {
11
78
  minBufferMs?: Int32;
@@ -11,6 +11,7 @@ export interface DrmConfig {
11
11
  certificateUrl?: string;
12
12
  base64Certificate?: boolean;
13
13
  multiDrm?: boolean;
14
+ localSourceEncryptionKeyScheme?: string;
14
15
  }
15
16
  export interface TextTrack {
16
17
  title: string;
@@ -33,6 +34,36 @@ export interface BufferConfig {
33
34
  targetOffsetMs?: number;
34
35
  };
35
36
  }
37
+ export declare enum CmcdMode {
38
+ MODE_REQUEST_HEADER = 0,
39
+ MODE_QUERY_PARAMETER = 1
40
+ }
41
+ export type CmcdData = Record<string, string>;
42
+ export type CmcdConfiguration = Readonly<{
43
+ mode?: CmcdMode;
44
+ request?: CmcdData;
45
+ session?: CmcdData;
46
+ object?: CmcdData;
47
+ status?: CmcdData;
48
+ }>;
49
+ export type Cmcd = boolean | CmcdConfiguration;
50
+ export type AdConfigCSAI = Readonly<{
51
+ type: 'csai';
52
+ adTagUrl: string;
53
+ adLanguage?: string;
54
+ }>;
55
+ export type AdConfigDAI = Readonly<{
56
+ type: 'ssai';
57
+ streamType: 'vod' | 'live';
58
+ contentSourceId?: string;
59
+ videoId?: string;
60
+ assetKey?: string;
61
+ format?: 'hls' | 'dash';
62
+ adTagParameters?: Record<string, string>;
63
+ fallbackUri?: string;
64
+ adLanguage?: string;
65
+ }>;
66
+ export type AdConfig = AdConfigCSAI | AdConfigDAI;
36
67
  export interface VideoSource {
37
68
  uri?: string;
38
69
  type?: string;
@@ -45,6 +76,16 @@ export interface VideoSource {
45
76
  drm?: DrmConfig;
46
77
  textTracks?: TextTrack[];
47
78
  metadata?: VideoMetadata;
79
+ shouldCache?: boolean;
80
+ isNetwork?: boolean;
81
+ isAsset?: boolean;
82
+ isLocalAssetFile?: boolean;
83
+ contentStartTime?: number;
84
+ minLoadRetryCount?: number;
85
+ textTracksAllowChunklessPreparation?: boolean;
86
+ cmcd?: Cmcd;
87
+ ad?: AdConfig;
88
+ bufferConfig?: BufferConfig;
48
89
  }
49
90
  export interface VideoMetadata {
50
91
  title?: string;
@@ -260,8 +301,6 @@ export interface VideoProps {
260
301
  * Callback when video is ready for display
261
302
  */
262
303
  onReadyForDisplay?: () => void;
263
- onPlaybackResume?: () => void;
264
- onPlaybackStalled?: () => void;
265
304
  onAudioTracks?: (data: OnAudioTracksData) => void;
266
305
  onTextTracks?: (data: OnTextTracksData) => void;
267
306
  onTextTrackDataChanged?: (data: OnTextTrackDataChangedData) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@granite-js/video",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "Pluggable video component for React Native with provider selection",
5
5
  "type": "module",
6
6
  "main": "./dist/module/index.js",
@@ -37,6 +37,27 @@ const { GraniteVideoModule } = NativeModules;
37
37
  // For Fabric (New Architecture), the component is always available through codegenNativeComponent
38
38
  // We don't need to check UIManager.getViewManagerConfig which is Old Architecture only
39
39
 
40
+ // Convert CMCD config to native format.
41
+ function normalizeCmcd(cmcd: VideoSource['cmcd']) {
42
+ if (cmcd === undefined || cmcd === null) {
43
+ return undefined;
44
+ }
45
+ if (typeof cmcd === 'boolean') {
46
+ if (!cmcd) {
47
+ return undefined;
48
+ }
49
+ // When true, use MODE_QUERY_PARAMETER as default
50
+ return { mode: 1 };
51
+ }
52
+ return {
53
+ mode: cmcd.mode ?? 1,
54
+ request: cmcd.request, // passes as Record through ReadableMap
55
+ session: cmcd.session,
56
+ object: cmcd.object,
57
+ status: cmcd.status,
58
+ };
59
+ }
60
+
40
61
  function normalizeSource(source: VideoSource | number): NativeProps['source'] | undefined {
41
62
  if (typeof source === 'number') {
42
63
  // require() - not yet supported in native
@@ -44,11 +65,8 @@ function normalizeSource(source: VideoSource | number): NativeProps['source'] |
44
65
  }
45
66
 
46
67
  return {
47
- uri: source.uri,
48
- type: source.type,
49
- startPosition: source.startPosition,
50
- cropStart: source.cropStart,
51
- cropEnd: source.cropEnd,
68
+ ...source,
69
+ cmcd: normalizeCmcd(source.cmcd),
52
70
  };
53
71
  }
54
72
 
@@ -89,6 +107,8 @@ function normalizeDrm(drm?: VideoProps['drm']): NativeProps['drm'] | undefined {
89
107
  };
90
108
  }
91
109
 
110
+ // Note: `live` is only available via source-embedded bufferConfig (NativeSourceBufferConfig),
111
+ // not via the top-level bufferConfig prop (NativeBufferConfig).
92
112
  function normalizeBufferConfig(config?: VideoProps['bufferConfig']): NativeProps['bufferConfig'] | undefined {
93
113
  if (!config) {
94
114
  return undefined;
@@ -449,6 +469,8 @@ const VideoBase = forwardRef<VideoRef, VideoProps>((props, ref) => {
449
469
  <NativeGraniteVideoView
450
470
  ref={nativeRef}
451
471
  style={styles.video}
472
+ // Cast needed: normalizeSource includes fields (drm.headers, cmcd.request/session/object/status,
473
+ // ad.adTagParameters) that bypass Codegen typing and pass through ReadableMap directly.
452
474
  source={normalizeSource(source)}
453
475
  poster={getPosterUri(poster)}
454
476
  posterResizeMode={posterResizeMode}
@@ -11,12 +11,93 @@ import {
11
11
  // Native Props Interface
12
12
  // ============================================================
13
13
 
14
+ // Native video metadata
15
+ interface NativeVideoMetadata {
16
+ title?: string;
17
+ subtitle?: string;
18
+ description?: string;
19
+ artist?: string;
20
+ imageUri?: string;
21
+ }
22
+
23
+ // Native DRM config (source-embedded DRM)
24
+ interface NativeSourceDrmConfig {
25
+ type?: string;
26
+ licenseServer?: string;
27
+ contentId?: string;
28
+ certificateUrl?: string;
29
+ base64Certificate?: boolean;
30
+ multiDrm?: boolean;
31
+ localSourceEncryptionKeyScheme?: string; // iOS-Only offline DRM key scheme
32
+ }
33
+
34
+ // Native CMCD config
35
+ interface NativeCmcdConfiguration {
36
+ mode?: Int32;
37
+ }
38
+
39
+ // Native text track
40
+ interface NativeTextTrack {
41
+ title: string;
42
+ language: string;
43
+ type: string;
44
+ uri: string;
45
+ }
46
+
47
+ // Native ad config
48
+ interface NativeAdsConfig {
49
+ type?: string;
50
+ streamType?: string;
51
+ adTagUrl?: string;
52
+ adLanguage?: string;
53
+ contentSourceId?: string;
54
+ videoId?: string;
55
+ assetKey?: string;
56
+ format?: string;
57
+ fallbackUri?: string;
58
+ }
59
+
60
+ // Native live buffer config
61
+ interface NativeBufferConfigLive {
62
+ maxPlaybackSpeed?: Float;
63
+ minPlaybackSpeed?: Float;
64
+ maxOffsetMs?: Int32;
65
+ minOffsetMs?: Int32;
66
+ targetOffsetMs?: Int32;
67
+ }
68
+
69
+ // Native source-embedded buffer config
70
+ interface NativeSourceBufferConfig {
71
+ minBufferMs?: Int32;
72
+ maxBufferMs?: Int32;
73
+ bufferForPlaybackMs?: Int32;
74
+ bufferForPlaybackAfterRebufferMs?: Int32;
75
+ backBufferDurationMs?: Int32;
76
+ cacheSizeMB?: Int32;
77
+ live?: NativeBufferConfigLive;
78
+ }
79
+
14
80
  interface NativeVideoSource {
15
81
  uri?: string;
16
82
  type?: string;
17
83
  startPosition?: Double;
18
84
  cropStart?: Double;
19
85
  cropEnd?: Double;
86
+ isNetwork?: boolean;
87
+ isAsset?: boolean;
88
+ isLocalAssetFile?: boolean;
89
+ shouldCache?: boolean;
90
+ mainVer?: Int32;
91
+ patchVer?: Int32;
92
+ contentStartTime?: Double;
93
+ metadata?: NativeVideoMetadata;
94
+ drm?: NativeSourceDrmConfig;
95
+ cmcd?: NativeCmcdConfiguration;
96
+ textTracksAllowChunklessPreparation?: boolean;
97
+ textTracks?: ReadonlyArray<Readonly<NativeTextTrack>>;
98
+ ad?: NativeAdsConfig;
99
+ minLoadRetryCount?: Int32;
100
+ bufferConfig?: NativeSourceBufferConfig;
20
101
  }
21
102
 
22
103
  interface NativeBufferConfig {
package/src/types.ts CHANGED
@@ -33,6 +33,7 @@ export interface DrmConfig {
33
33
  certificateUrl?: string;
34
34
  base64Certificate?: boolean;
35
35
  multiDrm?: boolean;
36
+ localSourceEncryptionKeyScheme?: string; // iOS Only: offline DRM key scheme
36
37
  }
37
38
 
38
39
  export interface TextTrack {
@@ -58,6 +59,45 @@ export interface BufferConfig {
58
59
  };
59
60
  }
60
61
 
62
+ // CMCD (Common Media Client Data) - Android Only
63
+ export enum CmcdMode {
64
+ MODE_REQUEST_HEADER = 0,
65
+ MODE_QUERY_PARAMETER = 1,
66
+ }
67
+
68
+ export type CmcdData = Record<string, string>;
69
+
70
+ export type CmcdConfiguration = Readonly<{
71
+ mode?: CmcdMode;
72
+ request?: CmcdData;
73
+ session?: CmcdData;
74
+ object?: CmcdData;
75
+ status?: CmcdData;
76
+ }>;
77
+
78
+ export type Cmcd = boolean | CmcdConfiguration;
79
+
80
+ // Ad configuration
81
+ export type AdConfigCSAI = Readonly<{
82
+ type: 'csai';
83
+ adTagUrl: string;
84
+ adLanguage?: string;
85
+ }>;
86
+
87
+ export type AdConfigDAI = Readonly<{
88
+ type: 'ssai';
89
+ streamType: 'vod' | 'live';
90
+ contentSourceId?: string;
91
+ videoId?: string;
92
+ assetKey?: string;
93
+ format?: 'hls' | 'dash';
94
+ adTagParameters?: Record<string, string>;
95
+ fallbackUri?: string;
96
+ adLanguage?: string;
97
+ }>;
98
+
99
+ export type AdConfig = AdConfigCSAI | AdConfigDAI;
100
+
61
101
  export interface VideoSource {
62
102
  uri?: string;
63
103
  type?: string;
@@ -70,6 +110,16 @@ export interface VideoSource {
70
110
  drm?: DrmConfig;
71
111
  textTracks?: TextTrack[];
72
112
  metadata?: VideoMetadata;
113
+ shouldCache?: boolean;
114
+ isNetwork?: boolean;
115
+ isAsset?: boolean;
116
+ isLocalAssetFile?: boolean;
117
+ contentStartTime?: number;
118
+ minLoadRetryCount?: number;
119
+ textTracksAllowChunklessPreparation?: boolean;
120
+ cmcd?: Cmcd;
121
+ ad?: AdConfig;
122
+ bufferConfig?: BufferConfig;
73
123
  }
74
124
 
75
125
  export interface VideoMetadata {
@@ -376,8 +426,6 @@ export interface VideoProps {
376
426
  * Callback when video is ready for display
377
427
  */
378
428
  onReadyForDisplay?: () => void;
379
- onPlaybackResume?: () => void;
380
- onPlaybackStalled?: () => void;
381
429
 
382
430
  // Track Events
383
431
  onAudioTracks?: (data: OnAudioTracksData) => void;