react-native-firework-sdk 2.12.1 → 2.13.0

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.
Files changed (36) hide show
  1. package/android/build.gradle +3 -2
  2. package/android/gradle.properties +4 -3
  3. package/android/src/main/AndroidManifest.xml +14 -0
  4. package/android/src/main/java/com/fireworksdk/bridge/FWInitializationProvider.kt +4 -0
  5. package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFragment.kt +1 -2
  6. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModel.kt +1 -0
  7. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModelDeserializer.kt +3 -0
  8. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModelSerializer.kt +2 -0
  9. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWNavigatorInterface.kt +2 -0
  10. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWNavigatorModule.kt +26 -0
  11. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +2 -2
  12. package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +21 -2
  13. package/android/src/main/java/com/fireworksdk/bridge/utils/FWModelUtils.kt +9 -9
  14. package/ios/Components/StoryBlock.swift +5 -8
  15. package/ios/Components/VideoFeed.swift +1 -5
  16. package/lib/commonjs/components/VideoFeed.js +15 -6
  17. package/lib/commonjs/components/VideoFeed.js.map +1 -1
  18. package/lib/commonjs/index.js.map +1 -1
  19. package/lib/commonjs/models/VideoPlayerLivestreamCountdownTimerTheme.js +2 -0
  20. package/lib/commonjs/models/VideoPlayerLivestreamCountdownTimerTheme.js.map +1 -0
  21. package/lib/module/components/VideoFeed.js +15 -5
  22. package/lib/module/components/VideoFeed.js.map +1 -1
  23. package/lib/module/index.js.map +1 -1
  24. package/lib/module/models/VideoPlayerLivestreamCountdownTimerTheme.js +2 -0
  25. package/lib/module/models/VideoPlayerLivestreamCountdownTimerTheme.js.map +1 -0
  26. package/lib/typescript/index.d.ts +2 -1
  27. package/lib/typescript/models/ReplayBadgeConfiguration.d.ts +1 -1
  28. package/lib/typescript/models/StoryBlockConfiguration.d.ts +0 -2
  29. package/lib/typescript/models/VideoPlayerLivestreamCountdownTimerTheme.d.ts +1 -0
  30. package/package.json +1 -1
  31. package/react-native-firework-sdk.podspec +1 -1
  32. package/src/components/VideoFeed.tsx +13 -6
  33. package/src/index.ts +2 -0
  34. package/src/models/ReplayBadgeConfiguration.ts +1 -1
  35. package/src/models/StoryBlockConfiguration.ts +0 -2
  36. package/src/models/VideoPlayerLivestreamCountdownTimerTheme.ts +1 -0
@@ -5,7 +5,6 @@ buildscript {
5
5
  repositories {
6
6
  google()
7
7
  mavenCentral()
8
- mavenLocal()
9
8
  }
10
9
 
11
10
  dependencies {
@@ -35,6 +34,7 @@ android {
35
34
  defaultConfig {
36
35
  minSdkVersion getExtOrIntegerDefault('minSdkVersion')
37
36
  targetSdkVersion getExtOrIntegerDefault('targetSdkVersion')
37
+ manifestPlaceholders["fw_player_launch_mode"] = getExtOrDefault('fwPlayerLaunchMode')
38
38
  }
39
39
 
40
40
  // LOG_LEVEL: VERBOSE(2), DEBUG(3), INFO(4), WARN(5), ERROR(6), ASSERT(7)
@@ -61,9 +61,9 @@ android {
61
61
  }
62
62
 
63
63
  repositories {
64
+ mavenLocal()
64
65
  mavenCentral()
65
66
  google()
66
- mavenLocal()
67
67
 
68
68
  maven {
69
69
  setUrl("https://s01.oss.sonatype.org/content/repositories/snapshots/")
@@ -144,5 +144,6 @@ dependencies {
144
144
  def fireworkSdkVersion = getExtOrDefault('fwNativeVersion')
145
145
  implementation "com.firework:sdk:$fireworkSdkVersion"
146
146
  implementation "com.firework.feature:uiKit:$fireworkSdkVersion"
147
+ implementation "com.firework.feature.player:pager:$fireworkSdkVersion"
147
148
  }
148
149
 
@@ -1,8 +1,9 @@
1
- android.useAndroidX=true
2
1
  android.enableJetifier=true
2
+ android.useAndroidX=true
3
3
  org.gradle.jvmargs=-Xmx1536M
4
- FireworkSDK_kotlinVersion=1.6.10
4
+ FireworkSDK_kotlinVersion=1.8.22
5
5
  FireworkSDK_minSdkVersion=21
6
6
  FireworkSDK_compileSdkVersion=33
7
7
  FireworkSDK_targetSdkVersion=33
8
- FireworkSDK_fwNativeVersion=6.9.3
8
+ FireworkSDK_fwPlayerLaunchMode=singleTask
9
+ FireworkSDK_fwNativeVersion=6.10.2
@@ -1,4 +1,5 @@
1
1
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
+ xmlns:tools="http://schemas.android.com/tools"
2
3
  package="com.fireworksdk.bridge">
3
4
 
4
5
  <uses-permission android:name="android.permission.INTERNET" />
@@ -23,6 +24,19 @@
23
24
  android:name="Firework:RecyclerViewRequestLayoutEnable"
24
25
  android:value="true" />
25
26
 
27
+ <activity
28
+ android:name="com.firework.player.pager.PlayerActivity"
29
+ android:autoRemoveFromRecents="true"
30
+ android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
31
+ android:exported="true"
32
+ android:launchMode="${fw_player_launch_mode}"
33
+ android:screenOrientation="portrait"
34
+ android:supportsPictureInPicture="true"
35
+ android:theme="@style/FwPlayerPagerPlayerActivity"
36
+ android:windowSoftInputMode="adjustPan"
37
+ tools:replace="android:launchMode"
38
+ tools:targetApi="n" />
39
+
26
40
  </application>
27
41
 
28
42
  </manifest>
@@ -14,6 +14,7 @@ class FWInitializationProvider: ContentProvider() {
14
14
 
15
15
  var application: Application? = null
16
16
  var resumedActivity by weakProperty<Activity?>()
17
+ var mainActivity by weakProperty<Activity?>()
17
18
 
18
19
  override fun onCreate(): Boolean {
19
20
  sInstance = this
@@ -36,6 +37,9 @@ class FWInitializationProvider: ContentProvider() {
36
37
 
37
38
  override fun onActivityResumed(activity: Activity) {
38
39
  resumedActivity = activity
40
+ if (mainActivity == null) { // only set once
41
+ mainActivity = activity
42
+ }
39
43
  }
40
44
 
41
45
  override fun onActivityPaused(activity: Activity) {
@@ -119,8 +119,7 @@ class StoryBlockFragment : FWBaseFragment() {
119
119
  childFragmentManager,
120
120
  viewLifecycleOwner,
121
121
  viewOptionsBuilder.build(),
122
- FWGlobalDataUtil.pauseWhenNotVisible,
123
- videoFeedPropsModel?.videoPlayerConfiguration?.countdownTimerConfiguration?.isHidden == false
122
+ FWGlobalDataUtil.pauseWhenNotVisible
124
123
  )
125
124
  isStoryBlockInitializer = true
126
125
 
@@ -5,4 +5,5 @@ import com.fireworksdk.bridge.models.enums.FWVideoPlayerLogoOption
5
5
  data class FWVideoPlayerLogoConfigurationModel(
6
6
  val option: FWVideoPlayerLogoOption?,
7
7
  val encodedId: String?,
8
+ val isClickable: Boolean?
8
9
  )
@@ -7,16 +7,19 @@ object FWVideoPlayerLogoConfigurationModelDeserializer {
7
7
 
8
8
  private const val OPTION_KEY = "option"
9
9
  private const val ENCODED_ID_KEY = "encodedId"
10
+ private const val IS_CLICKABLE = "isClickable"
10
11
 
11
12
  fun deserialize(responseJson: JSONObject?): FWVideoPlayerLogoConfigurationModel? {
12
13
  responseJson ?: return null
13
14
 
14
15
  val option = if (responseJson.has(OPTION_KEY)) responseJson.optString(OPTION_KEY) else null
15
16
  val encodedId = if (responseJson.has(ENCODED_ID_KEY)) responseJson.optString(ENCODED_ID_KEY) else null
17
+ val isClickable = if (responseJson.has(IS_CLICKABLE)) responseJson.optBoolean(IS_CLICKABLE) else null
16
18
 
17
19
  return FWVideoPlayerLogoConfigurationModel(
18
20
  option = if (!option.isNullOrBlank()) FWVideoPlayerLogoOption.deserialize(option) else null,
19
21
  encodedId = encodedId,
22
+ isClickable = isClickable
20
23
  )
21
24
  }
22
25
 
@@ -7,12 +7,14 @@ object FWVideoPlayerLogoConfigurationModelSerializer {
7
7
 
8
8
  private const val OPTION_KEY = "option"
9
9
  private const val ENCODED_ID_KEY = "encodedId"
10
+ private const val IS_CLICKABLE = "isClickable"
10
11
 
11
12
  fun serialize(model: FWVideoPlayerLogoConfigurationModel?): JSONObject? {
12
13
  model ?: return null
13
14
  val jsonObject = JSONObject()
14
15
  jsonObject.put(OPTION_KEY, FWVideoPlayerLogoOption.serialize(model.option))
15
16
  jsonObject.put(ENCODED_ID_KEY, model.encodedId)
17
+ jsonObject.put(IS_CLICKABLE, model.isClickable)
16
18
  return jsonObject
17
19
  }
18
20
  }
@@ -11,4 +11,6 @@ interface FWNavigatorInterface {
11
11
  fun canPopNativeContainer(promise: Promise)
12
12
  fun startFloatingPlayer(promise: Promise)
13
13
  fun stopFloatingPlayer(promise: Promise)
14
+ fun bringRNContainerToTop(promise: Promise)
15
+ fun bringRNContainerToBottom(promise: Promise)
14
16
  }
@@ -1,7 +1,9 @@
1
1
  package com.fireworksdk.bridge.reactnative.module
2
2
 
3
3
  import android.app.Activity
4
+ import android.content.Intent
4
5
  import com.facebook.react.bridge.*
6
+ import com.firework.player.pager.PlayerActivity
5
7
  import com.firework.sdk.FireworkSdk
6
8
  import com.fireworksdk.bridge.FWInitializationProvider
7
9
  import com.fireworksdk.bridge.reactnative.models.FWNavigatorInterface
@@ -85,6 +87,30 @@ class FWNavigatorModule(
85
87
  promise.resolve(true)
86
88
  }
87
89
 
90
+ @ReactMethod
91
+ override fun bringRNContainerToTop(promise: Promise) {
92
+ // reorder MainActivity to front
93
+ val mainActivity = FWInitializationProvider.INSTANCE.mainActivity
94
+ mainActivity?.let { mActivity ->
95
+ val resumedActivity = FWInitializationProvider.INSTANCE.resumedActivity
96
+ resumedActivity?.let { rActivity ->
97
+ rActivity.startActivity(
98
+ Intent(rActivity, mActivity::class.java)
99
+ .addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
100
+ )
101
+ }
102
+ }
103
+ }
104
+
105
+ @ReactMethod
106
+ override fun bringRNContainerToBottom(promise: Promise) {
107
+ // reorder PlayerActivity to front
108
+ val mainActivity = FWInitializationProvider.INSTANCE.mainActivity
109
+ mainActivity?.let {
110
+ it.startActivity(PlayerActivity.getIntentForReorderToFront(it))
111
+ }
112
+ }
113
+
88
114
  @ReactMethod
89
115
  fun addListener(eventName: String?, promise: Promise) {
90
116
  // Set up any upstream listeners or background tasks as necessary
@@ -186,7 +186,7 @@ class FireworkSDKModule(
186
186
  val videoPlaybackDetails = FWModelUtils.convertPlayerEvent2PlaybackDetails(event)
187
187
  when (event) {
188
188
  is PlayerLifecycleAnalyticsEvent.OnStarted -> {
189
- if (event.videoInfo.isAd) {
189
+ if (event.videoInfo?.isAd == true) {
190
190
  FWEventUtils.sendVideoPlaybackEvent(reactApplicationContext, FWVideoPlaybackSubEventName.AdStart.rawValue, videoPlaybackDetails)
191
191
  } else {
192
192
  FWEventUtils.sendVideoPlaybackEvent(reactApplicationContext, FWVideoPlaybackSubEventName.Start.rawValue, videoPlaybackDetails)
@@ -199,7 +199,7 @@ class FireworkSDKModule(
199
199
  is PlayerLifecycleAnalyticsEvent.OnIdle -> {}
200
200
  is PlayerLifecycleAnalyticsEvent.OnRepeat -> {}
201
201
  is PlayerLifecycleAnalyticsEvent.OnEnded -> {
202
- if (event.videoInfo.isAd) {
202
+ if (event.videoInfo?.isAd == true) {
203
203
  FWEventUtils.sendVideoPlaybackEvent(reactApplicationContext, FWVideoPlaybackSubEventName.AdEnd.rawValue, videoPlaybackDetails)
204
204
  } else {
205
205
  FWEventUtils.sendVideoPlaybackEvent(reactApplicationContext, FWVideoPlaybackSubEventName.Complete.rawValue, videoPlaybackDetails)
@@ -5,6 +5,7 @@ import android.content.Context
5
5
  import android.graphics.Typeface
6
6
  import android.graphics.drawable.GradientDrawable
7
7
  import com.firework.common.PlayerMode
8
+ import com.firework.common.Theme
8
9
  import com.firework.common.ad.AdBadgeOption
9
10
  import com.firework.common.ad.AdBadgeTextType
10
11
  import com.firework.common.ad.AdOption
@@ -14,6 +15,7 @@ import com.firework.common.feed.FeedLayout
14
15
  import com.firework.common.feed.FeedResource
15
16
  import com.firework.common.feed.FeedTitlePosition
16
17
  import com.firework.common.player.CloseButtonOption
18
+ import com.firework.common.player.LivestreamCountDownOption
17
19
  import com.firework.common.player.MuteButtonOption
18
20
  import com.firework.common.player.PlaybackButtonOption
19
21
  import com.firework.common.player.PlayerUiOption
@@ -22,6 +24,7 @@ import com.firework.common.widget.WidgetImage
22
24
  import com.firework.viewoptions.*
23
25
  import com.fireworksdk.bridge.FWInitializationProvider
24
26
  import com.fireworksdk.bridge.models.*
27
+ import com.fireworksdk.bridge.models.enums.FWAppearanceMode
25
28
  import com.fireworksdk.bridge.models.enums.FWBadgeTextType
26
29
  import com.fireworksdk.bridge.models.enums.FWCtaDelayType
27
30
  import com.fireworksdk.bridge.models.enums.FWGradientDrawableOrientation
@@ -52,6 +55,7 @@ object FWConfigUtil {
52
55
  val adBadgeOptionBuilder = getDefaultAdBadgeOptionBuilder()
53
56
  val ctaOptionBuilder = getDefaultCtaOptionBuilder()
54
57
  val adOptionBuilder = getDefaultAdOptionBuilder()
58
+ val countDownOptionBuilder = getDefaultPlayerCountdownTimerOptionBuilder()
55
59
 
56
60
  when (videoFeedPropsModel.source) {
57
61
  FWVideoFeedSource.Discover -> {
@@ -397,16 +401,27 @@ object FWConfigUtil {
397
401
 
398
402
  val logoConfigOption = videoFeedPropsModel.videoPlayerConfiguration?.videoPlayerLogoConfiguration?.option
399
403
  val logoConfigChannelId = videoFeedPropsModel.videoPlayerConfiguration?.videoPlayerLogoConfiguration?.encodedId
404
+ val isLogoClickable = videoFeedPropsModel.videoPlayerConfiguration?.videoPlayerLogoConfiguration?.isClickable ?: true
400
405
  when {
401
406
  logoConfigOption == FWVideoPlayerLogoOption.Creator && !logoConfigChannelId.isNullOrBlank() -> {
402
- playerOptionBuilder.logoConfig(LogoConfig.Logo.CreatorLogo(logoConfigChannelId))
407
+ playerOptionBuilder.logoConfig(LogoConfig.Logo.CreatorLogo(logoConfigChannelId, isLogoClickable))
403
408
  }
404
409
  logoConfigOption == FWVideoPlayerLogoOption.ChannelAggregator && !logoConfigChannelId.isNullOrBlank() -> {
405
- playerOptionBuilder.logoConfig(LogoConfig.Logo.AggregatorLogo(logoConfigChannelId))
410
+ playerOptionBuilder.logoConfig(LogoConfig.Logo.AggregatorLogo(logoConfigChannelId, isLogoClickable))
406
411
  }
407
412
  else -> {}
408
413
  }
409
414
 
415
+ val countdownTimerAppearance = videoFeedPropsModel.videoPlayerConfiguration?.countdownTimerConfiguration?.appearance
416
+ val isCountdownTimerHidden = videoFeedPropsModel.videoPlayerConfiguration?.countdownTimerConfiguration?.isHidden ?: true
417
+ countDownOptionBuilder.isHidden(isCountdownTimerHidden)
418
+ when (countdownTimerAppearance) {
419
+ FWAppearanceMode.Light -> countDownOptionBuilder.theme(Theme.LIGHT)
420
+ FWAppearanceMode.Dark -> countDownOptionBuilder.theme(Theme.DARK)
421
+ else -> {}
422
+ }
423
+ playerOptionBuilder.livestreamCountDownOption(countDownOptionBuilder.build())
424
+
410
425
  return ViewOptions.Builder()
411
426
  .layoutOption(layoutOptionBuilder.build())
412
427
  .titleOption(titleOptionBuilder.build())
@@ -437,6 +452,10 @@ object FWConfigUtil {
437
452
  return PlayerUiOption.Builder()
438
453
  }
439
454
 
455
+ private fun getDefaultPlayerCountdownTimerOptionBuilder(): LivestreamCountDownOption.Builder {
456
+ return LivestreamCountDownOption.Builder()
457
+ }
458
+
440
459
  private fun getDefaultVideoDetailsOptionBuilder(): VideoDetailsOption.Builder {
441
460
  return VideoDetailsOption.Builder()
442
461
  }
@@ -36,15 +36,15 @@ object FWModelUtils {
36
36
 
37
37
  fun convertPlayerEvent2PlaybackDetails(event: PlayerLifecycleAnalyticsEvent): FWVideoPlaybackDetails {
38
38
  return FWVideoPlaybackDetails(
39
- badge = event.videoInfo.badge,
40
- caption = event.videoInfo.caption,
41
- duration = event.videoInfo.duration,
42
- hasCta = event.videoInfo.hasCta,
43
- playerHeight = event.videoInfo.playerHeight,
44
- playerWidth = event.videoInfo.playerWidth,
45
- id = event.videoInfo.id,
39
+ badge = event.videoInfo?.badge,
40
+ caption = event.videoInfo?.caption,
41
+ duration = event.videoInfo?.duration,
42
+ hasCta = event.videoInfo?.hasCta,
43
+ playerHeight = event.videoInfo?.playerHeight,
44
+ playerWidth = event.videoInfo?.playerWidth,
45
+ id = event.videoInfo?.id,
46
46
  progress = event.progress,
47
- feedId = event.videoInfo.feedId,
47
+ feedId = event.videoInfo?.feedId,
48
48
  )
49
49
  }
50
50
 
@@ -61,4 +61,4 @@ object FWModelUtils {
61
61
  )
62
62
  }
63
63
 
64
- }
64
+ }
@@ -123,7 +123,7 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate, PictureInPict
123
123
  self.storyBlockVC = storyBlockVC
124
124
  updateStoryBlockVCConfiguration()
125
125
 
126
- storyBlockVC.isPictureInPictureEnabled = storyBlockConfiguration?.enablePictureInPicture ?? true
126
+ storyBlockVC.isPictureInPictureEnabled = storyBlockConfiguration?.enablePictureInPicture ?? false
127
127
  storyBlockVC.pictureInPictureDelegate = self
128
128
  storyBlockVC.delegate = self
129
129
 
@@ -243,10 +243,10 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate, PictureInPict
243
243
  }
244
244
  }
245
245
 
246
- // if let showPlaybackButton = config.showPlaybackButton {
247
- // resultConfig.fullScreenPlayerView.playbackButton.isHidden = !showPlaybackButton
248
- // }
249
- //
246
+ if let showPlaybackButton = config.showPlaybackButton {
247
+ resultConfig.fullScreenPlayerView.playbackButton.isHidden = !showPlaybackButton
248
+ }
249
+
250
250
  // if let showMuteButton = config.showMuteButton {
251
251
  // resultConfig.fullScreenPlayerView.muteButton.isHidden = !showMuteButton
252
252
  // }
@@ -356,9 +356,6 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate, PictureInPict
356
356
  if let replayBadgeConfiguration = config.replayBadgeConfiguration {
357
357
  resultConfig.replayBadge.isHidden = replayBadgeConfiguration.isHidden
358
358
  resultConfig.fullScreenPlayerView.replayBadge.isHidden = replayBadgeConfiguration.isHidden
359
- } else {
360
- resultConfig.replayBadge.isHidden = false
361
- resultConfig.fullScreenPlayerView.replayBadge.isHidden = false
362
359
  }
363
360
 
364
361
  if let countdownTimerConfiguration = config.countdownTimerConfiguration {
@@ -208,7 +208,7 @@ public class VideoFeed: UIView, VideoFeedViewControllerDelegate, PictureInPictur
208
208
  feedVC.viewConfiguration = viewConfiguration
209
209
  }
210
210
 
211
- feedVC.isPictureInPictureEnabled = playerViewConfig?.enablePictureInPicture ?? true
211
+ feedVC.isPictureInPictureEnabled = playerViewConfig?.enablePictureInPicture ?? false
212
212
 
213
213
  feedVC.delegate = self
214
214
  feedVC.pictureInPictureDelegate = self
@@ -537,8 +537,6 @@ extension VideoFeed {
537
537
 
538
538
  if let replayBadgeConfiguration = config.replayBadgeConfiguration {
539
539
  vpcConfig.replayBadge.isHidden = replayBadgeConfiguration.isHidden
540
- } else {
541
- vpcConfig.replayBadge.isHidden = false
542
540
  }
543
541
 
544
542
  if let countdownTimerConfiguration = config.countdownTimerConfiguration {
@@ -570,8 +568,6 @@ extension VideoFeed {
570
568
 
571
569
  if let replayBadge = feedViewConfig?.replayBadge {
572
570
  videoConfig.replayBadge.isHidden = replayBadge.isHidden
573
- } else {
574
- videoConfig.replayBadge.isHidden = false
575
571
  }
576
572
 
577
573
  return videoConfig
@@ -62,7 +62,7 @@ class VideoFeed extends _react.default.Component {
62
62
 
63
63
  let reactTag = (0, _reactNative.findNodeHandle)(nativeNodeHandle);
64
64
 
65
- _FWLoggerUtil.default.log(`StoryBlock refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`);
65
+ _FWLoggerUtil.default.log(`VideoFeed refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`);
66
66
 
67
67
  if (!nativeNodeHandle || !reactTag) {
68
68
  return;
@@ -72,8 +72,6 @@ class VideoFeed extends _react.default.Component {
72
72
  });
73
73
 
74
74
  _defineProperty(this, "_onVideoFeedLoadFinished", event => {
75
- _FWLoggerUtil.default.log(`VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`);
76
-
77
75
  const {
78
76
  onVideoFeedLoadFinished,
79
77
  onVideoFeedEmpty
@@ -94,19 +92,30 @@ class VideoFeed extends _react.default.Component {
94
92
  error.reason = reason;
95
93
  }
96
94
 
97
- onVideoFeedLoadFinished(error);
98
-
99
95
  if (_reactNative.Platform.OS === 'android') {
96
+ if (!this._loaded) {
97
+ onVideoFeedLoadFinished(error);
98
+ }
99
+
100
100
  if (action === _FWNativeErrorAction.FWNativeErrorAction.loadingFirstPage || !this._loaded) {
101
101
  onVideoFeedEmpty === null || onVideoFeedEmpty === void 0 ? void 0 : onVideoFeedEmpty(error);
102
102
  }
103
103
  } else {
104
+ onVideoFeedLoadFinished(error);
105
+
104
106
  if (!this._loaded) {
105
107
  onVideoFeedEmpty === null || onVideoFeedEmpty === void 0 ? void 0 : onVideoFeedEmpty(error);
106
108
  }
107
109
  }
108
110
  } else {
109
- onVideoFeedLoadFinished();
111
+ if (_reactNative.Platform.OS === 'android') {
112
+ if (!this._loaded) {
113
+ onVideoFeedLoadFinished();
114
+ }
115
+ } else {
116
+ onVideoFeedLoadFinished();
117
+ }
118
+
110
119
  this._loaded = true;
111
120
  }
112
121
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["VideoFeed.tsx"],"names":["NativeComponentName","VideoFeed","React","Component","constructor","props","createRef","FWLoggerUtil","log","JSON","stringify","nativeNodeHandle","_nativeComponentRef","current","commandId","UIManager","getViewManagerConfig","Commands","refresh","Platform","OS","toString","reactTag","dispatchViewManagerCommand","event","nativeEvent","onVideoFeedLoadFinished","onVideoFeedEmpty","name","reason","action","error","FWNativeErrorAction","loadingFirstPage","_loaded","onVideoFeedDidStartPictureInPicture","onVideoFeedDidStopPictureInPicture","onVideoFeedGetFeedId","feedId","state","sdkInitCalled","FWGlobalState","getInstance","componentDidMount","sdkInitCalledPromise","then","setState","subscriptionOfShareBaseURLUpdated","FireworkSDKModuleEventEmitter","addListener","FWEventName","ShareBaseURLUpdated","_subscriptions","push","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","componentWillUnmount","forEach","value","remove","render","gShareBaseURL","FireworkSDK","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","playlistGroup","hashtagFilterExpression","productIds","contentId","mode","enablePictureInPicture","adConfiguration","dynamicContentParametersString","_generateDynamicContentParametersString","videoFeedConfiguration","_getVideoFeedConfiguration","cornerRadius","toFixed","titleHidden","title","hidden","titleTextColor","titleFontSize","fontSize","titleAndroidFontInfo","titleGradientDrawable","gradientDrawable","titlePosition","playIconHidden","playIcon","playIconWidth","iconWidth","showAdBadge","enableAutoplay","gridColumns","itemSpacing","videoPlayerConfiguration","_getVideoPlayerConfiguration","playerStyle","videoCompleteAction","showShareButton","showPlaybackButton","showMuteButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","buttonConfiguration","videoPlayerLogoConfigurationJsonKey","videoPlayerLogoConfiguration","countdownTimerConfigurationJsonKey","countdownTimerConfiguration","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","_generateVastAttributesString","replayBadgeVideoFeedConfigurationJsonKey","replayBadge","replayBadgeVideoPlayerConfigurationJsonKey","replayBadgeConfiguration","shadowVideoFeedConfigurationJsonKey","shadow","key","join","orientation","colors","_generateButtonInfoString","videoDetailButton","closeButton","muteButton","unmuteButton","playButton","pauseButton","console","undefined","_onVideoFeedLoadFinished","_onVideoFeedEmpty","_onVideoFeedDidStartPictureInPicture","_onVideoFeedDidStopPictureInPicture","_onVideoFeedGetFeedId","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","valueString","length","vastAttributes","attribute","buttonInfo","imageName","systemImageName","tintColor","resultVideoFeedConfiguration","Math","floor","numberOfLines","resultVideoPlayerConfiguration"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n EmitterSubscription,\n findNodeHandle,\n NativeSyntheticEvent,\n Platform,\n StyleProp,\n UIManager,\n ViewStyle,\n} from 'react-native';\n\nimport FireworkSDK from '../FireworkSDK';\nimport type AdConfiguration from '../models/AdConfiguration';\nimport type ButtonInfo from '../models/ButtonInfo';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport { FWNativeErrorAction } from '../models/FWNativeErrorAction';\nimport type VideoFeedConfiguration from '../models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from '../models/VideoFeedSource';\nimport type VideoPlayerConfiguration from '../models/VideoPlayerConfiguration';\nimport type VideoPlayerNativeConfiguration from '../models/VideoPlayerNativeConfiguration';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport gennerateJsonKey from '../utils/FWJsonUtil';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWVideoFeed from './FWVideoFeed';\n\nexport type VideoFeedMode = 'row' | 'column' | 'grid';\n\n/**\n * The props of VideoFeed component.\n */\nexport interface IVideoFeedProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of five available video feed sources.The playlistGroup is only supported on iOS.\n * Defaults to discover.\n */\n source: VideoFeedSource;\n /**\n * Channel id of the feed. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the feed. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * PlaylistGroup id of the feed. Required when the source is set as playlistGroup. Only supported on iOS.\n */\n playlistGroup?: string;\n /**\n * The dynamic content parameters of the feed. Required when the source is set as dynamicContent.\n */\n dynamicContentParameters?: { [key: string]: string[] };\n /**\n * Hashtag filter expression is an s-expression used to provide feeds filtered by hashtags with specified criteria.\n * Queries are specified with boolean predicates on what hashtags are there on the video.\n * For instance, (and sport food) (or sport food) (and sport (or food comedy)) sport are all valid expressions.\n * Non-UTF-8 characters are not allowed. If using boolean predicates, the expression needs to be wrapped with parenthesis.\n * Required when the source is set as hashtagPlaylist.\n */\n hashtagFilterExpression?: string;\n /**\n * Product ids used to generate the sku feed\n */\n productIds?: string[];\n /**\n * The video or live stream id. Only supported on iOS.\n */\n contentId?: string;\n /**\n * One of three available display modes. Defaults to row.\n */\n mode?: VideoFeedMode;\n /**\n * Specifies if Picture in Picture is enabled.\n */\n enablePictureInPicture?: boolean;\n /**\n * Configuration of the feed.\n */\n videoFeedConfiguration?: VideoFeedConfiguration;\n /**\n * Configuration of the player.\n */\n videoPlayerConfiguration?: VideoPlayerConfiguration;\n /**\n * Ad configuration of the feed.\n */\n adConfiguration?: AdConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onVideoFeedLoadFinished?: (error?: FWError) => void;\n /**\n * The callback is triggered when there are no items in the story block.\n * The callback is triggered in the following cases:\n * 1. Loading successfully but the back end returns an empty list.\n * 2. The load failed and list is empty.\n * onVideoFeedLoadFinished will also be triggered when onVideoFeedEmpty is triggered.\n */\n onVideoFeedEmpty?: (error?: FWError) => void;\n /**\n * Start Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStartPictureInPicture?: (error?: FWError) => void;\n /**\n * Stop Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStopPictureInPicture?: (error?: FWError) => void;\n /**\n *\n * The host app could use this callback to get feed id.\n * The feed id can be used for conversion tracking.\n */\n onVideoFeedGetFeedId?: (feedId: string) => void;\n}\n\ninterface IVideoFeedState {\n sdkInitCalled: boolean;\n}\n\nconst NativeComponentName = 'FWVideoFeed';\n\n/**\n * VideoFeed component.\n */\nclass VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {\n /**\n * @ignore\n */\n static defaultProps = {\n mode: 'row',\n };\n\n private _nativeComponentRef = React.createRef<any>();\n\n private _subscriptions: EmitterSubscription[] = [];\n\n private _loaded: boolean = false;\n\n constructor(props: IVideoFeedProps) {\n super(props);\n this.state = {\n sdkInitCalled: FWGlobalState.getInstance().sdkInitCalled,\n };\n }\n\n public refresh = () => {\n FWLoggerUtil.log(`VideoFeed refresh ${JSON.stringify(this.props)}`);\n\n const nativeNodeHandle = findNodeHandle(this._nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands.refresh;\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n let reactTag: number | null = findNodeHandle(nativeNodeHandle);\n FWLoggerUtil.log(\n `StoryBlock refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`\n );\n if (!nativeNodeHandle || !reactTag) {\n return;\n }\n UIManager.dispatchViewManagerCommand(reactTag, commandId, []);\n };\n\n private _onVideoFeedLoadFinished = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedLoadFinished, onVideoFeedEmpty } = this.props;\n\n const { name, reason, action } = event.nativeEvent;\n\n if (onVideoFeedLoadFinished) {\n if (name) {\n let error: FWError = { name };\n if (reason) {\n error.reason = reason;\n }\n onVideoFeedLoadFinished(error);\n if (Platform.OS === 'android') {\n if (\n action === FWNativeErrorAction.loadingFirstPage ||\n !this._loaded\n ) {\n onVideoFeedEmpty?.(error);\n }\n } else {\n if (!this._loaded) {\n onVideoFeedEmpty?.(error);\n }\n }\n } else {\n onVideoFeedLoadFinished();\n this._loaded = true;\n }\n }\n };\n\n private _onVideoFeedEmpty = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedEmpty } = this.props;\n\n if (onVideoFeedEmpty) {\n onVideoFeedEmpty();\n }\n };\n\n private _onVideoFeedDidStartPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStartPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStartPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStartPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStartPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStartPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStartPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedDidStopPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStopPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStopPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStopPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStopPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStopPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStopPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedGetFeedId = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed onVideoFeedGetFeedId ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedGetFeedId } = this.props;\n\n const { feedId } = event.nativeEvent;\n\n if (onVideoFeedGetFeedId) {\n onVideoFeedGetFeedId(feedId ?? '');\n }\n };\n\n /**\n * @ignore\n */\n componentDidMount() {\n FWLoggerUtil.log(\n `VideoFeed componentDidMount ${JSON.stringify(this.props)}`\n );\n\n if (!this.state.sdkInitCalled) {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n this.setState({ sdkInitCalled: true });\n });\n }\n\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfShareBaseURLUpdated);\n\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAdBadgeConfigurationUpdated);\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfVideoLaunchBehaviorUpdated);\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAppLanguageUpdated);\n }\n\n /**\n * @ignore\n */\n componentWillUnmount() {\n FWLoggerUtil.log(\n `VideoFeed componentWillUnmount ${JSON.stringify(this.props)}`\n );\n\n this._subscriptions.forEach((value) => {\n value.remove();\n });\n\n this._subscriptions = [];\n }\n\n /**\n * @ignore\n */\n render() {\n if (!this.state.sdkInitCalled) {\n return null;\n }\n\n const gShareBaseURL = FireworkSDK.getInstance().shareBaseURL;\n const appLanguage = FireworkSDK.getInstance().appLanguage;\n const videoLaunchBehavior = FireworkSDK.getInstance().videoLaunchBehavior;\n const adBadgeConfiguration = FireworkSDK.getInstance().adBadgeConfiguration;\n const adBadgeTextType = adBadgeConfiguration?.badgeTextType;\n const backgroundColorOfAdBadge = adBadgeConfiguration?.backgroundColor;\n const textColorOfAdBadge = adBadgeConfiguration?.textColor;\n const androidFontIsCustomOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.isCustom?.toString();\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n playlistGroup,\n hashtagFilterExpression,\n productIds,\n contentId,\n mode,\n enablePictureInPicture,\n adConfiguration,\n } = this.props;\n const dynamicContentParametersString =\n this._generateDynamicContentParametersString();\n\n const videoFeedConfiguration = this._getVideoFeedConfiguration();\n const cornerRadius = videoFeedConfiguration?.cornerRadius?.toFixed(5);\n\n const titleHidden = videoFeedConfiguration?.title?.hidden?.toString();\n const titleTextColor = videoFeedConfiguration?.title?.textColor;\n const titleFontSize = videoFeedConfiguration?.title?.fontSize?.toFixed(5);\n const titleAndroidFontInfo = videoFeedConfiguration?.title?.androidFontInfo;\n const titleGradientDrawable =\n videoFeedConfiguration?.title?.gradientDrawable;\n const titlePosition = videoFeedConfiguration?.titlePosition;\n const playIconHidden = videoFeedConfiguration?.playIcon?.hidden;\n const playIconWidth =\n videoFeedConfiguration?.playIcon?.iconWidth?.toFixed(5);\n const showAdBadge = videoFeedConfiguration?.showAdBadge?.toString();\n const enableAutoplay = videoFeedConfiguration?.enableAutoplay;\n const gridColumns = videoFeedConfiguration?.gridColumns?.toFixed(5);\n const itemSpacing = videoFeedConfiguration?.itemSpacing?.toFixed(5);\n\n const videoPlayerConfiguration = this._getVideoPlayerConfiguration();\n const playerStyle = videoPlayerConfiguration?.playerStyle;\n const videoCompleteAction = videoPlayerConfiguration?.videoCompleteAction;\n const showShareButton = videoPlayerConfiguration?.showShareButton;\n const showPlaybackButton = videoPlayerConfiguration?.showPlaybackButton;\n const showMuteButton = videoPlayerConfiguration?.showMuteButton;\n const showBranding = videoPlayerConfiguration?.showBranding;\n const ctaDelayType = videoPlayerConfiguration?.ctaDelay?.type;\n const ctaDelayValue = videoPlayerConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n videoPlayerConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n videoPlayerConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = videoPlayerConfiguration?.shareBaseURL;\n const ctaWidth = videoPlayerConfiguration?.ctaWidth;\n const buttonConfiguration = videoPlayerConfiguration?.buttonConfiguration;\n const videoPlayerLogoConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.videoPlayerLogoConfiguration\n );\n const countdownTimerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.countdownTimerConfiguration\n );\n const showVideoDetailTitle = videoPlayerConfiguration?.showVideoDetailTitle;\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = this._generateVastAttributesString();\n const replayBadgeVideoFeedConfigurationJsonKey = gennerateJsonKey(\n videoFeedConfiguration?.replayBadge\n );\n const replayBadgeVideoPlayerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.replayBadgeConfiguration\n );\n const shadowVideoFeedConfigurationJsonKey = gennerateJsonKey(\n videoFeedConfiguration?.shadow\n );\n let key = `gShareBaseURL:${gShareBaseURL}`;\n if (Platform.OS === 'ios') {\n key += `_appLanguage:${appLanguage}`;\n }\n key += `_videoLaunchBehavior:${videoLaunchBehavior}`;\n key += `_adBadgeTextType:${adBadgeTextType}`;\n key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;\n key += `_textColorOfAdBadge:${textColorOfAdBadge}`;\n if (Platform.OS === 'android') {\n key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;\n key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;\n }\n\n key += `_source:${source}`;\n key += `_channel:${channel}`;\n key += `_playlist:${playlist}`;\n key += `_playlistGroup:${playlistGroup}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `_productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_mode:${mode}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n\n key += `_titleHidden:${titleHidden}`;\n if (Platform.OS === 'android') {\n key += `_cornerRadius:${cornerRadius}`;\n key += `_titleTextColor:${titleTextColor}`;\n key += `_titleFontSize:${titleFontSize}`;\n key += `_titleAndroidFontInfo.isCustom:${titleAndroidFontInfo?.isCustom}`;\n key += `_titleAndroidFontInfo.typefaceName:${titleAndroidFontInfo?.typefaceName}`;\n key += `_titleGradientDrawable.orientation:${titleGradientDrawable?.orientation}`;\n key += `_titleGradientDrawable.colors:${titleGradientDrawable?.colors?.join(\n ','\n )}`;\n key += `_playIconHidden:${playIconHidden}`;\n key += `_playIconWidth:${playIconWidth}`;\n key += `_showAdBadge:${showAdBadge}`;\n }\n\n key += `_titlePosition:${titlePosition}`;\n if (Platform.OS === 'android') {\n key += `_enableAutoplay:${enableAutoplay}`;\n }\n key += `_gridColumns:${gridColumns}`;\n key += `_itemSpacing:${itemSpacing}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n if (Platform.OS === 'android') {\n key += `_playerStyle:${playerStyle}`;\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showMuteButton:${showMuteButton}`;\n key += `_showBranding:${showBranding}`;\n key += `_ctaDelayType:${ctaDelayType}`;\n key += `_ctaDelayValue:${ctaDelayValue}`;\n key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;\n key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;\n key += `_ctaWidth:${ctaWidth}`;\n key += `_buttonConfiguration.videoDetailButton:${this._generateButtonInfoString(\n buttonConfiguration?.videoDetailButton\n )}`;\n key += `_buttonConfiguration.closeButton:${this._generateButtonInfoString(\n buttonConfiguration?.closeButton\n )}`;\n key += `_buttonConfiguration.muteButton:${this._generateButtonInfoString(\n buttonConfiguration?.muteButton\n )}`;\n key += `_buttonConfiguration.unmuteButton:${this._generateButtonInfoString(\n buttonConfiguration?.unmuteButton\n )}`;\n key += `_buttonConfiguration.playButton:${this._generateButtonInfoString(\n buttonConfiguration?.playButton\n )}`;\n key += `_buttonConfiguration.pauseButton:${this._generateButtonInfoString(\n buttonConfiguration?.pauseButton\n )}`;\n key += `_videoPlayerLogoConfiguration:${videoPlayerLogoConfigurationJsonKey}`;\n key += `_countdownTimerConfiguration:${countdownTimerConfigurationJsonKey}`;\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n }\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n key += `_replayBadgeVideoFeedConfiguration:${replayBadgeVideoFeedConfigurationJsonKey}`;\n key += `_replayBadgeVideoPlayerConfiguration:${replayBadgeVideoPlayerConfigurationJsonKey}`;\n key += `_shadowVideoFeedConfiguration:${shadowVideoFeedConfigurationJsonKey}`;\n console.log('video feed key', key);\n\n return (\n <FWVideoFeed\n key={key}\n {...this.props}\n enablePictureInPicture={undefined}\n videoFeedConfiguration={videoFeedConfiguration}\n videoPlayerConfiguration={videoPlayerConfiguration}\n ref={this._nativeComponentRef}\n onVideoFeedLoadFinished={this._onVideoFeedLoadFinished}\n onVideoFeedEmpty={this._onVideoFeedEmpty}\n onVideoFeedDidStartPictureInPicture={\n this._onVideoFeedDidStartPictureInPicture\n }\n onVideoFeedDidStopPictureInPicture={\n this._onVideoFeedDidStopPictureInPicture\n }\n onVideoFeedGetFeedId={this._onVideoFeedGetFeedId}\n mode={mode ?? 'row'}\n />\n );\n }\n\n private _generateDynamicContentParametersString(): string {\n const { dynamicContentParameters } = this.props;\n if (!dynamicContentParameters) {\n return '';\n }\n\n let resultString = '';\n const sortedKeyList = Object.keys(dynamicContentParameters).sort();\n for (const key of sortedKeyList) {\n const value = dynamicContentParameters[key];\n const valueString = value.join(',');\n if (resultString.length > 0) {\n resultString += '_';\n }\n\n resultString += `${key}:${valueString}`;\n }\n\n return resultString;\n }\n\n private _generateVastAttributesString(): string | undefined {\n const { adConfiguration } = this.props;\n const vastAttributes = adConfiguration?.vastAttributes;\n if (!vastAttributes) {\n return '';\n }\n\n let resultString = '';\n for (const attribute of vastAttributes) {\n if (resultString.length > 0) {\n resultString += '_';\n }\n resultString += `${attribute.name}:${attribute.value}`;\n }\n\n return resultString;\n }\n\n private _generateButtonInfoString(buttonInfo?: ButtonInfo): string {\n return `imageName:${buttonInfo?.imageName}_systemImageName:${buttonInfo?.systemImageName}_tintColor:${buttonInfo?.tintColor}`;\n }\n\n private _getVideoFeedConfiguration(): VideoFeedConfiguration | undefined {\n const { videoFeedConfiguration } = this.props;\n if (!videoFeedConfiguration) {\n return videoFeedConfiguration;\n }\n\n let resultVideoFeedConfiguration = videoFeedConfiguration;\n\n if (\n resultVideoFeedConfiguration.gridColumns &&\n Math.floor(resultVideoFeedConfiguration.gridColumns) !==\n resultVideoFeedConfiguration.gridColumns\n ) {\n const gridColumns = Math.floor(resultVideoFeedConfiguration.gridColumns);\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n gridColumns,\n };\n }\n\n if (\n resultVideoFeedConfiguration.title &&\n resultVideoFeedConfiguration.title.numberOfLines &&\n Math.floor(resultVideoFeedConfiguration.title.numberOfLines) !==\n resultVideoFeedConfiguration.title.numberOfLines\n ) {\n const numberOfLines = Math.floor(\n resultVideoFeedConfiguration.title.numberOfLines\n );\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n title: {\n ...resultVideoFeedConfiguration.title,\n numberOfLines,\n },\n };\n }\n\n return resultVideoFeedConfiguration;\n }\n\n private _getVideoPlayerConfiguration():\n | VideoPlayerNativeConfiguration\n | undefined {\n const { videoPlayerConfiguration, enablePictureInPicture } = this.props;\n\n let resultVideoPlayerConfiguration:\n | VideoPlayerNativeConfiguration\n | undefined = videoPlayerConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultVideoPlayerConfiguration) {\n resultVideoPlayerConfiguration = {};\n }\n resultVideoPlayerConfiguration = {\n ...resultVideoPlayerConfiguration,\n enablePictureInPicture,\n };\n }\n\n return resultVideoPlayerConfiguration;\n }\n}\n\nexport default VideoFeed;\n"]}
1
+ {"version":3,"sources":["VideoFeed.tsx"],"names":["NativeComponentName","VideoFeed","React","Component","constructor","props","createRef","FWLoggerUtil","log","JSON","stringify","nativeNodeHandle","_nativeComponentRef","current","commandId","UIManager","getViewManagerConfig","Commands","refresh","Platform","OS","toString","reactTag","dispatchViewManagerCommand","event","onVideoFeedLoadFinished","onVideoFeedEmpty","name","reason","action","nativeEvent","error","_loaded","FWNativeErrorAction","loadingFirstPage","onVideoFeedDidStartPictureInPicture","onVideoFeedDidStopPictureInPicture","onVideoFeedGetFeedId","feedId","state","sdkInitCalled","FWGlobalState","getInstance","componentDidMount","sdkInitCalledPromise","then","setState","subscriptionOfShareBaseURLUpdated","FireworkSDKModuleEventEmitter","addListener","FWEventName","ShareBaseURLUpdated","_subscriptions","push","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","componentWillUnmount","forEach","value","remove","render","gShareBaseURL","FireworkSDK","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","playlistGroup","hashtagFilterExpression","productIds","contentId","mode","enablePictureInPicture","adConfiguration","dynamicContentParametersString","_generateDynamicContentParametersString","videoFeedConfiguration","_getVideoFeedConfiguration","cornerRadius","toFixed","titleHidden","title","hidden","titleTextColor","titleFontSize","fontSize","titleAndroidFontInfo","titleGradientDrawable","gradientDrawable","titlePosition","playIconHidden","playIcon","playIconWidth","iconWidth","showAdBadge","enableAutoplay","gridColumns","itemSpacing","videoPlayerConfiguration","_getVideoPlayerConfiguration","playerStyle","videoCompleteAction","showShareButton","showPlaybackButton","showMuteButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","buttonConfiguration","videoPlayerLogoConfigurationJsonKey","videoPlayerLogoConfiguration","countdownTimerConfigurationJsonKey","countdownTimerConfiguration","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","_generateVastAttributesString","replayBadgeVideoFeedConfigurationJsonKey","replayBadge","replayBadgeVideoPlayerConfigurationJsonKey","replayBadgeConfiguration","shadowVideoFeedConfigurationJsonKey","shadow","key","join","orientation","colors","_generateButtonInfoString","videoDetailButton","closeButton","muteButton","unmuteButton","playButton","pauseButton","console","undefined","_onVideoFeedLoadFinished","_onVideoFeedEmpty","_onVideoFeedDidStartPictureInPicture","_onVideoFeedDidStopPictureInPicture","_onVideoFeedGetFeedId","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","valueString","length","vastAttributes","attribute","buttonInfo","imageName","systemImageName","tintColor","resultVideoFeedConfiguration","Math","floor","numberOfLines","resultVideoPlayerConfiguration"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n EmitterSubscription,\n findNodeHandle,\n NativeSyntheticEvent,\n Platform,\n StyleProp,\n UIManager,\n ViewStyle,\n} from 'react-native';\n\nimport FireworkSDK from '../FireworkSDK';\nimport type AdConfiguration from '../models/AdConfiguration';\nimport type ButtonInfo from '../models/ButtonInfo';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport { FWNativeErrorAction } from '../models/FWNativeErrorAction';\nimport type VideoFeedConfiguration from '../models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from '../models/VideoFeedSource';\nimport type VideoPlayerConfiguration from '../models/VideoPlayerConfiguration';\nimport type VideoPlayerNativeConfiguration from '../models/VideoPlayerNativeConfiguration';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport gennerateJsonKey from '../utils/FWJsonUtil';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWVideoFeed from './FWVideoFeed';\n\nexport type VideoFeedMode = 'row' | 'column' | 'grid';\n\n/**\n * The props of VideoFeed component.\n */\nexport interface IVideoFeedProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of five available video feed sources.The playlistGroup is only supported on iOS.\n * Defaults to discover.\n */\n source: VideoFeedSource;\n /**\n * Channel id of the feed. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the feed. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * PlaylistGroup id of the feed. Required when the source is set as playlistGroup. Only supported on iOS.\n */\n playlistGroup?: string;\n /**\n * The dynamic content parameters of the feed. Required when the source is set as dynamicContent.\n */\n dynamicContentParameters?: { [key: string]: string[] };\n /**\n * Hashtag filter expression is an s-expression used to provide feeds filtered by hashtags with specified criteria.\n * Queries are specified with boolean predicates on what hashtags are there on the video.\n * For instance, (and sport food) (or sport food) (and sport (or food comedy)) sport are all valid expressions.\n * Non-UTF-8 characters are not allowed. If using boolean predicates, the expression needs to be wrapped with parenthesis.\n * Required when the source is set as hashtagPlaylist.\n */\n hashtagFilterExpression?: string;\n /**\n * Product ids used to generate the sku feed\n */\n productIds?: string[];\n /**\n * The video or live stream id. Only supported on iOS.\n */\n contentId?: string;\n /**\n * One of three available display modes. Defaults to row.\n */\n mode?: VideoFeedMode;\n /**\n * Specifies if Picture in Picture is enabled.\n */\n enablePictureInPicture?: boolean;\n /**\n * Configuration of the feed.\n */\n videoFeedConfiguration?: VideoFeedConfiguration;\n /**\n * Configuration of the player.\n */\n videoPlayerConfiguration?: VideoPlayerConfiguration;\n /**\n * Ad configuration of the feed.\n */\n adConfiguration?: AdConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onVideoFeedLoadFinished?: (error?: FWError) => void;\n /**\n * The callback is triggered when there are no items in the story block.\n * The callback is triggered in the following cases:\n * 1. Loading successfully but the back end returns an empty list.\n * 2. The load failed and list is empty.\n * onVideoFeedLoadFinished will also be triggered when onVideoFeedEmpty is triggered.\n */\n onVideoFeedEmpty?: (error?: FWError) => void;\n /**\n * Start Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStartPictureInPicture?: (error?: FWError) => void;\n /**\n * Stop Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStopPictureInPicture?: (error?: FWError) => void;\n /**\n *\n * The host app could use this callback to get feed id.\n * The feed id can be used for conversion tracking.\n */\n onVideoFeedGetFeedId?: (feedId: string) => void;\n}\n\ninterface IVideoFeedState {\n sdkInitCalled: boolean;\n}\n\nconst NativeComponentName = 'FWVideoFeed';\n\n/**\n * VideoFeed component.\n */\nclass VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {\n /**\n * @ignore\n */\n static defaultProps = {\n mode: 'row',\n };\n\n private _nativeComponentRef = React.createRef<any>();\n\n private _subscriptions: EmitterSubscription[] = [];\n\n private _loaded: boolean = false;\n\n constructor(props: IVideoFeedProps) {\n super(props);\n this.state = {\n sdkInitCalled: FWGlobalState.getInstance().sdkInitCalled,\n };\n }\n\n public refresh = () => {\n FWLoggerUtil.log(`VideoFeed refresh ${JSON.stringify(this.props)}`);\n\n const nativeNodeHandle = findNodeHandle(this._nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands.refresh;\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n let reactTag: number | null = findNodeHandle(nativeNodeHandle);\n FWLoggerUtil.log(\n `VideoFeed refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`\n );\n if (!nativeNodeHandle || !reactTag) {\n return;\n }\n UIManager.dispatchViewManagerCommand(reactTag, commandId, []);\n };\n\n private _onVideoFeedLoadFinished = (event: NativeSyntheticEvent<any>) => {\n const { onVideoFeedLoadFinished, onVideoFeedEmpty } = this.props;\n\n const { name, reason, action } = event.nativeEvent;\n\n if (onVideoFeedLoadFinished) {\n if (name) {\n let error: FWError = { name };\n if (reason) {\n error.reason = reason;\n }\n\n if (Platform.OS === 'android') {\n if (!this._loaded) {\n onVideoFeedLoadFinished(error);\n }\n if (\n action === FWNativeErrorAction.loadingFirstPage ||\n !this._loaded\n ) {\n onVideoFeedEmpty?.(error);\n }\n } else {\n onVideoFeedLoadFinished(error);\n if (!this._loaded) {\n onVideoFeedEmpty?.(error);\n }\n }\n } else {\n if (Platform.OS === 'android') {\n if (!this._loaded) {\n onVideoFeedLoadFinished();\n }\n } else {\n onVideoFeedLoadFinished();\n }\n this._loaded = true;\n }\n }\n };\n\n private _onVideoFeedEmpty = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedEmpty } = this.props;\n\n if (onVideoFeedEmpty) {\n onVideoFeedEmpty();\n }\n };\n\n private _onVideoFeedDidStartPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStartPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStartPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStartPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStartPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStartPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStartPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedDidStopPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStopPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStopPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStopPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStopPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStopPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStopPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedGetFeedId = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed onVideoFeedGetFeedId ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedGetFeedId } = this.props;\n\n const { feedId } = event.nativeEvent;\n\n if (onVideoFeedGetFeedId) {\n onVideoFeedGetFeedId(feedId ?? '');\n }\n };\n\n /**\n * @ignore\n */\n componentDidMount() {\n FWLoggerUtil.log(\n `VideoFeed componentDidMount ${JSON.stringify(this.props)}`\n );\n\n if (!this.state.sdkInitCalled) {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n this.setState({ sdkInitCalled: true });\n });\n }\n\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfShareBaseURLUpdated);\n\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAdBadgeConfigurationUpdated);\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfVideoLaunchBehaviorUpdated);\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAppLanguageUpdated);\n }\n\n /**\n * @ignore\n */\n componentWillUnmount() {\n FWLoggerUtil.log(\n `VideoFeed componentWillUnmount ${JSON.stringify(this.props)}`\n );\n\n this._subscriptions.forEach((value) => {\n value.remove();\n });\n\n this._subscriptions = [];\n }\n\n /**\n * @ignore\n */\n render() {\n if (!this.state.sdkInitCalled) {\n return null;\n }\n\n const gShareBaseURL = FireworkSDK.getInstance().shareBaseURL;\n const appLanguage = FireworkSDK.getInstance().appLanguage;\n const videoLaunchBehavior = FireworkSDK.getInstance().videoLaunchBehavior;\n const adBadgeConfiguration = FireworkSDK.getInstance().adBadgeConfiguration;\n const adBadgeTextType = adBadgeConfiguration?.badgeTextType;\n const backgroundColorOfAdBadge = adBadgeConfiguration?.backgroundColor;\n const textColorOfAdBadge = adBadgeConfiguration?.textColor;\n const androidFontIsCustomOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.isCustom?.toString();\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n playlistGroup,\n hashtagFilterExpression,\n productIds,\n contentId,\n mode,\n enablePictureInPicture,\n adConfiguration,\n } = this.props;\n const dynamicContentParametersString =\n this._generateDynamicContentParametersString();\n\n const videoFeedConfiguration = this._getVideoFeedConfiguration();\n const cornerRadius = videoFeedConfiguration?.cornerRadius?.toFixed(5);\n\n const titleHidden = videoFeedConfiguration?.title?.hidden?.toString();\n const titleTextColor = videoFeedConfiguration?.title?.textColor;\n const titleFontSize = videoFeedConfiguration?.title?.fontSize?.toFixed(5);\n const titleAndroidFontInfo = videoFeedConfiguration?.title?.androidFontInfo;\n const titleGradientDrawable =\n videoFeedConfiguration?.title?.gradientDrawable;\n const titlePosition = videoFeedConfiguration?.titlePosition;\n const playIconHidden = videoFeedConfiguration?.playIcon?.hidden;\n const playIconWidth =\n videoFeedConfiguration?.playIcon?.iconWidth?.toFixed(5);\n const showAdBadge = videoFeedConfiguration?.showAdBadge?.toString();\n const enableAutoplay = videoFeedConfiguration?.enableAutoplay;\n const gridColumns = videoFeedConfiguration?.gridColumns?.toFixed(5);\n const itemSpacing = videoFeedConfiguration?.itemSpacing?.toFixed(5);\n\n const videoPlayerConfiguration = this._getVideoPlayerConfiguration();\n const playerStyle = videoPlayerConfiguration?.playerStyle;\n const videoCompleteAction = videoPlayerConfiguration?.videoCompleteAction;\n const showShareButton = videoPlayerConfiguration?.showShareButton;\n const showPlaybackButton = videoPlayerConfiguration?.showPlaybackButton;\n const showMuteButton = videoPlayerConfiguration?.showMuteButton;\n const showBranding = videoPlayerConfiguration?.showBranding;\n const ctaDelayType = videoPlayerConfiguration?.ctaDelay?.type;\n const ctaDelayValue = videoPlayerConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n videoPlayerConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n videoPlayerConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = videoPlayerConfiguration?.shareBaseURL;\n const ctaWidth = videoPlayerConfiguration?.ctaWidth;\n const buttonConfiguration = videoPlayerConfiguration?.buttonConfiguration;\n const videoPlayerLogoConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.videoPlayerLogoConfiguration\n );\n const countdownTimerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.countdownTimerConfiguration\n );\n const showVideoDetailTitle = videoPlayerConfiguration?.showVideoDetailTitle;\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = this._generateVastAttributesString();\n const replayBadgeVideoFeedConfigurationJsonKey = gennerateJsonKey(\n videoFeedConfiguration?.replayBadge\n );\n const replayBadgeVideoPlayerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.replayBadgeConfiguration\n );\n const shadowVideoFeedConfigurationJsonKey = gennerateJsonKey(\n videoFeedConfiguration?.shadow\n );\n let key = `gShareBaseURL:${gShareBaseURL}`;\n if (Platform.OS === 'ios') {\n key += `_appLanguage:${appLanguage}`;\n }\n key += `_videoLaunchBehavior:${videoLaunchBehavior}`;\n key += `_adBadgeTextType:${adBadgeTextType}`;\n key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;\n key += `_textColorOfAdBadge:${textColorOfAdBadge}`;\n if (Platform.OS === 'android') {\n key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;\n key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;\n }\n\n key += `_source:${source}`;\n key += `_channel:${channel}`;\n key += `_playlist:${playlist}`;\n key += `_playlistGroup:${playlistGroup}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `_productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_mode:${mode}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n\n key += `_titleHidden:${titleHidden}`;\n if (Platform.OS === 'android') {\n key += `_cornerRadius:${cornerRadius}`;\n key += `_titleTextColor:${titleTextColor}`;\n key += `_titleFontSize:${titleFontSize}`;\n key += `_titleAndroidFontInfo.isCustom:${titleAndroidFontInfo?.isCustom}`;\n key += `_titleAndroidFontInfo.typefaceName:${titleAndroidFontInfo?.typefaceName}`;\n key += `_titleGradientDrawable.orientation:${titleGradientDrawable?.orientation}`;\n key += `_titleGradientDrawable.colors:${titleGradientDrawable?.colors?.join(\n ','\n )}`;\n key += `_playIconHidden:${playIconHidden}`;\n key += `_playIconWidth:${playIconWidth}`;\n key += `_showAdBadge:${showAdBadge}`;\n }\n\n key += `_titlePosition:${titlePosition}`;\n if (Platform.OS === 'android') {\n key += `_enableAutoplay:${enableAutoplay}`;\n }\n key += `_gridColumns:${gridColumns}`;\n key += `_itemSpacing:${itemSpacing}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n if (Platform.OS === 'android') {\n key += `_playerStyle:${playerStyle}`;\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showMuteButton:${showMuteButton}`;\n key += `_showBranding:${showBranding}`;\n key += `_ctaDelayType:${ctaDelayType}`;\n key += `_ctaDelayValue:${ctaDelayValue}`;\n key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;\n key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;\n key += `_ctaWidth:${ctaWidth}`;\n key += `_buttonConfiguration.videoDetailButton:${this._generateButtonInfoString(\n buttonConfiguration?.videoDetailButton\n )}`;\n key += `_buttonConfiguration.closeButton:${this._generateButtonInfoString(\n buttonConfiguration?.closeButton\n )}`;\n key += `_buttonConfiguration.muteButton:${this._generateButtonInfoString(\n buttonConfiguration?.muteButton\n )}`;\n key += `_buttonConfiguration.unmuteButton:${this._generateButtonInfoString(\n buttonConfiguration?.unmuteButton\n )}`;\n key += `_buttonConfiguration.playButton:${this._generateButtonInfoString(\n buttonConfiguration?.playButton\n )}`;\n key += `_buttonConfiguration.pauseButton:${this._generateButtonInfoString(\n buttonConfiguration?.pauseButton\n )}`;\n key += `_videoPlayerLogoConfiguration:${videoPlayerLogoConfigurationJsonKey}`;\n key += `_countdownTimerConfiguration:${countdownTimerConfigurationJsonKey}`;\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n }\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n key += `_replayBadgeVideoFeedConfiguration:${replayBadgeVideoFeedConfigurationJsonKey}`;\n key += `_replayBadgeVideoPlayerConfiguration:${replayBadgeVideoPlayerConfigurationJsonKey}`;\n key += `_shadowVideoFeedConfiguration:${shadowVideoFeedConfigurationJsonKey}`;\n console.log('video feed key', key);\n\n return (\n <FWVideoFeed\n key={key}\n {...this.props}\n enablePictureInPicture={undefined}\n videoFeedConfiguration={videoFeedConfiguration}\n videoPlayerConfiguration={videoPlayerConfiguration}\n ref={this._nativeComponentRef}\n onVideoFeedLoadFinished={this._onVideoFeedLoadFinished}\n onVideoFeedEmpty={this._onVideoFeedEmpty}\n onVideoFeedDidStartPictureInPicture={\n this._onVideoFeedDidStartPictureInPicture\n }\n onVideoFeedDidStopPictureInPicture={\n this._onVideoFeedDidStopPictureInPicture\n }\n onVideoFeedGetFeedId={this._onVideoFeedGetFeedId}\n mode={mode ?? 'row'}\n />\n );\n }\n\n private _generateDynamicContentParametersString(): string {\n const { dynamicContentParameters } = this.props;\n if (!dynamicContentParameters) {\n return '';\n }\n\n let resultString = '';\n const sortedKeyList = Object.keys(dynamicContentParameters).sort();\n for (const key of sortedKeyList) {\n const value = dynamicContentParameters[key];\n const valueString = value.join(',');\n if (resultString.length > 0) {\n resultString += '_';\n }\n\n resultString += `${key}:${valueString}`;\n }\n\n return resultString;\n }\n\n private _generateVastAttributesString(): string | undefined {\n const { adConfiguration } = this.props;\n const vastAttributes = adConfiguration?.vastAttributes;\n if (!vastAttributes) {\n return '';\n }\n\n let resultString = '';\n for (const attribute of vastAttributes) {\n if (resultString.length > 0) {\n resultString += '_';\n }\n resultString += `${attribute.name}:${attribute.value}`;\n }\n\n return resultString;\n }\n\n private _generateButtonInfoString(buttonInfo?: ButtonInfo): string {\n return `imageName:${buttonInfo?.imageName}_systemImageName:${buttonInfo?.systemImageName}_tintColor:${buttonInfo?.tintColor}`;\n }\n\n private _getVideoFeedConfiguration(): VideoFeedConfiguration | undefined {\n const { videoFeedConfiguration } = this.props;\n if (!videoFeedConfiguration) {\n return videoFeedConfiguration;\n }\n\n let resultVideoFeedConfiguration = videoFeedConfiguration;\n\n if (\n resultVideoFeedConfiguration.gridColumns &&\n Math.floor(resultVideoFeedConfiguration.gridColumns) !==\n resultVideoFeedConfiguration.gridColumns\n ) {\n const gridColumns = Math.floor(resultVideoFeedConfiguration.gridColumns);\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n gridColumns,\n };\n }\n\n if (\n resultVideoFeedConfiguration.title &&\n resultVideoFeedConfiguration.title.numberOfLines &&\n Math.floor(resultVideoFeedConfiguration.title.numberOfLines) !==\n resultVideoFeedConfiguration.title.numberOfLines\n ) {\n const numberOfLines = Math.floor(\n resultVideoFeedConfiguration.title.numberOfLines\n );\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n title: {\n ...resultVideoFeedConfiguration.title,\n numberOfLines,\n },\n };\n }\n\n return resultVideoFeedConfiguration;\n }\n\n private _getVideoPlayerConfiguration():\n | VideoPlayerNativeConfiguration\n | undefined {\n const { videoPlayerConfiguration, enablePictureInPicture } = this.props;\n\n let resultVideoPlayerConfiguration:\n | VideoPlayerNativeConfiguration\n | undefined = videoPlayerConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultVideoPlayerConfiguration) {\n resultVideoPlayerConfiguration = {};\n }\n resultVideoPlayerConfiguration = {\n ...resultVideoPlayerConfiguration,\n enablePictureInPicture,\n };\n }\n\n return resultVideoPlayerConfiguration;\n }\n}\n\nexport default VideoFeed;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["FireworkSDK"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAOA;;AAKA;;AAQA;;AAKA;;AAEA;;AAgCA;;AAEA;;AAsCA;;AAeA;;;;eAEeA,oB","sourcesContent":["import FWNavigator from './FWNavigator';\nimport type {\n CustomCTAClickCallback,\n SDKInitCallback,\n VideoFeedClickCallback,\n VideoPlaybackCallback,\n} from './FireworkSDK';\nimport FireworkSDK from './FireworkSDK';\nimport type {\n onLiveStreamChatEventCallback,\n onLiveStreamEventCallback,\n} from './LiveStream';\nimport LiveStream from './LiveStream';\nimport type {\n CustomClickCartIconCallback,\n CustomClickLinkButtonCallback,\n CustomTapProductCardCallback,\n ShoppingCTACallback,\n UpdateProductDetailsCallback,\n} from './VideoShopping';\nimport VideoShopping from './VideoShopping';\nimport type {\n IStoryBlockMethods,\n IStoryBlockProps,\n} from './components/StoryBlock';\nimport StoryBlock from './components/StoryBlock';\nimport type { IVideoFeedProps, VideoFeedMode } from './components/VideoFeed';\nimport VideoFeed from './components/VideoFeed';\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport type { AdBadgeTextType } from './models/AdBadgeConfiguration';\nimport type AdConfiguration from './models/AdConfiguration';\nimport type { VastAttribute } from './models/AdConfiguration';\nimport type AndroidFontInfo from './models/AndroidFontInfo';\nimport type ButtonInfo from './models/ButtonInfo';\nimport type CountdownTimerConfiguration from './models/CountdownTimerConfiguration';\nimport type { CountdownTimerAppearanceMode } from './models/CountdownTimerConfiguration';\nimport type FWError from './models/FWError';\nimport type {\n CustomCTAClickEvent,\n CustomClickCartIconEvent,\n CustomClickLinkButtonEvent,\n CustomTapProductCardEvent,\n LiveStreamChatEvent,\n LiveStreamEvent,\n PlayerHandler,\n SDKInitEvent,\n ShoppingCTAEvent,\n UpdateProductDetailsEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type FeedItemDetails from './models/FeedItemDetails';\nimport type GradientDrawable from './models/GradientDrawable';\nimport type { GradientDrawableOrientation } from './models/GradientDrawable';\nimport type IOSFontInfo from './models/IOSFontInfo';\nimport type {\n IOSSystemFontStyle,\n IOSSystemFontWeight,\n} from './models/IOSFontInfo';\nimport LiveStreamChatEventName from './models/LiveStreamChatEventName';\nimport type LiveStreamEventDetails from './models/LiveStreamEventDetails';\nimport LiveStreamEventName from './models/LiveStreamEventName';\nimport type LiveStreamMessageDetails from './models/LiveStreamMessageDetails';\nimport type OpenVideoPlayerConfiguration from './models/OpenVideoPlayerConfiguration';\nimport type Product from './models/Product';\nimport type ProductInfoViewConfiguration from './models/ProductInfoViewConfiguration';\nimport type {\n LinkButtonConfiguration,\n ProductCardCTAButtonStyle,\n ProductCardCTAButtonText,\n ProductCardConfiguration,\n ProductCardIconConfiguration,\n ProductCardLabelConfiguration,\n ProductCardPriceConfiguration,\n ProductCardPriceLabelAxis,\n ProductCardTheme,\n ShoppingCTAButtonConfiguration,\n ShoppingCTAButtonText,\n} from './models/ProductInfoViewConfiguration';\nimport type ProductUnit from './models/ProductUnit';\nimport type { ProductPrice, ProductUnitOption } from './models/ProductUnit';\nimport type PushRNContainerParams from './models/PushRNContainerParams';\nimport type { RNAppProps } from './models/PushRNContainerParams';\nimport type SDKInitOptions from './models/SDKInitOptions';\nimport type { VideoLaunchBehavior } from './models/SDKInitOptions';\nimport type ShoppingCTAResult from './models/ShoppingCTAResult';\nimport type { StoryBlockConfiguration } from './models/StoryBlockConfiguration';\nimport type { StoryBlockSource } from './models/StoryBlockSource';\nimport type TrackPurchaseParameters from './models/TrackPurchaseParameters';\nimport type VideoFeedConfiguration from './models/VideoFeedConfiguration';\nimport type {\n VideoFeedPadding,\n VideoFeedPlayIconConfiguration,\n VideoFeedTitleConfiguration,\n VideoFeedTitlePosition,\n} from './models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from './models/VideoFeedSource';\nimport type VideoPlaybackDetails from './models/VideoPlaybackDetails';\nimport type { VideoPlayerSize } from './models/VideoPlaybackDetails';\nimport VideoPlaybackEventName from './models/VideoPlaybackEventName';\nimport type VideoPlayerButtonConfiguration from './models/VideoPlayerButtonConfiguration';\nimport type {\n VideoPlayerCTADelay,\n VideoPlayerCTADelayType,\n} from './models/VideoPlayerCTADelay';\nimport type { VideoPlayerCTAStyle } from './models/VideoPlayerCTAStyle';\nimport type { VideoPlayerCTAWidth } from './models/VideoPlayerCTAWidth';\nimport type { VideoPlayerCompleteAction } from './models/VideoPlayerCompleteAction';\nimport type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';\nimport type {\n VideoPlayerLogoConfiguration,\n VideoPlayerLogoOption,\n} from './models/VideoPlayerLogoConfiguration';\nimport type { VideoPlayerStyle } from './models/VideoPlayerStyle';\nimport VideoFeedUtil from './utils/VideoFeedUtil';\n\nexport default FireworkSDK;\n\nexport {\n AdBadgeConfiguration,\n AdBadgeTextType,\n AdConfiguration,\n AndroidFontInfo,\n ButtonInfo,\n CountdownTimerAppearanceMode,\n CountdownTimerConfiguration,\n CustomCTAClickCallback,\n CustomCTAClickEvent,\n CustomClickCartIconCallback,\n CustomClickCartIconEvent,\n CustomClickLinkButtonCallback,\n CustomClickLinkButtonEvent,\n CustomTapProductCardCallback,\n CustomTapProductCardEvent,\n FWError,\n FWNavigator,\n FeedItemDetails,\n FireworkSDK,\n GradientDrawable,\n GradientDrawableOrientation,\n IOSFontInfo,\n IOSSystemFontStyle,\n IOSSystemFontWeight,\n IStoryBlockMethods,\n IStoryBlockProps,\n IVideoFeedProps,\n LinkButtonConfiguration,\n LiveStream,\n LiveStreamChatEvent,\n LiveStreamChatEventName,\n LiveStreamEvent,\n LiveStreamEventDetails,\n LiveStreamEventName,\n LiveStreamMessageDetails,\n OpenVideoPlayerConfiguration,\n PlayerHandler,\n Product,\n ProductCardCTAButtonStyle,\n ProductCardCTAButtonText,\n ProductCardConfiguration,\n ProductCardIconConfiguration,\n ProductCardLabelConfiguration,\n ProductCardPriceConfiguration,\n ProductCardPriceLabelAxis,\n ProductCardTheme,\n ProductInfoViewConfiguration,\n ProductPrice,\n ProductUnit,\n ProductUnitOption,\n PushRNContainerParams,\n RNAppProps,\n SDKInitCallback,\n SDKInitEvent,\n SDKInitOptions,\n ShoppingCTAButtonConfiguration,\n ShoppingCTAButtonText,\n ShoppingCTACallback,\n ShoppingCTAEvent,\n ShoppingCTAResult,\n StoryBlock,\n StoryBlockConfiguration,\n StoryBlockSource,\n TrackPurchaseParameters,\n UpdateProductDetailsCallback,\n UpdateProductDetailsEvent,\n VastAttribute,\n VideoFeed,\n VideoFeedClickCallback,\n VideoFeedClickEvent,\n VideoFeedConfiguration,\n VideoFeedMode,\n VideoFeedPadding,\n VideoFeedPlayIconConfiguration,\n VideoFeedSource,\n VideoFeedTitleConfiguration,\n VideoFeedTitlePosition,\n VideoFeedUtil,\n VideoLaunchBehavior,\n VideoPlaybackCallback,\n VideoPlaybackDetails,\n VideoPlaybackEvent,\n VideoPlaybackEventName,\n VideoPlayerButtonConfiguration,\n VideoPlayerCTADelay,\n VideoPlayerCTADelayType,\n VideoPlayerCTAStyle,\n VideoPlayerCTAWidth,\n VideoPlayerCompleteAction,\n VideoPlayerConfiguration,\n VideoPlayerLogoConfiguration,\n VideoPlayerLogoOption,\n VideoPlayerSize,\n VideoPlayerStyle,\n VideoShopping,\n onLiveStreamChatEventCallback,\n onLiveStreamEventCallback,\n};\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":["FireworkSDK"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAOA;;AAKA;;AAQA;;AAKA;;AAEA;;AAgCA;;AAEA;;AAsCA;;AAgBA;;;;eAEeA,oB","sourcesContent":["import FWNavigator from './FWNavigator';\nimport type {\n CustomCTAClickCallback,\n SDKInitCallback,\n VideoFeedClickCallback,\n VideoPlaybackCallback,\n} from './FireworkSDK';\nimport FireworkSDK from './FireworkSDK';\nimport type {\n onLiveStreamChatEventCallback,\n onLiveStreamEventCallback,\n} from './LiveStream';\nimport LiveStream from './LiveStream';\nimport type {\n CustomClickCartIconCallback,\n CustomClickLinkButtonCallback,\n CustomTapProductCardCallback,\n ShoppingCTACallback,\n UpdateProductDetailsCallback,\n} from './VideoShopping';\nimport VideoShopping from './VideoShopping';\nimport type {\n IStoryBlockMethods,\n IStoryBlockProps,\n} from './components/StoryBlock';\nimport StoryBlock from './components/StoryBlock';\nimport type { IVideoFeedProps, VideoFeedMode } from './components/VideoFeed';\nimport VideoFeed from './components/VideoFeed';\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport type { AdBadgeTextType } from './models/AdBadgeConfiguration';\nimport type AdConfiguration from './models/AdConfiguration';\nimport type { VastAttribute } from './models/AdConfiguration';\nimport type AndroidFontInfo from './models/AndroidFontInfo';\nimport type ButtonInfo from './models/ButtonInfo';\nimport type CountdownTimerConfiguration from './models/CountdownTimerConfiguration';\nimport type { CountdownTimerAppearanceMode } from './models/CountdownTimerConfiguration';\nimport type FWError from './models/FWError';\nimport type {\n CustomCTAClickEvent,\n CustomClickCartIconEvent,\n CustomClickLinkButtonEvent,\n CustomTapProductCardEvent,\n LiveStreamChatEvent,\n LiveStreamEvent,\n PlayerHandler,\n SDKInitEvent,\n ShoppingCTAEvent,\n UpdateProductDetailsEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type FeedItemDetails from './models/FeedItemDetails';\nimport type GradientDrawable from './models/GradientDrawable';\nimport type { GradientDrawableOrientation } from './models/GradientDrawable';\nimport type IOSFontInfo from './models/IOSFontInfo';\nimport type {\n IOSSystemFontStyle,\n IOSSystemFontWeight,\n} from './models/IOSFontInfo';\nimport LiveStreamChatEventName from './models/LiveStreamChatEventName';\nimport type LiveStreamEventDetails from './models/LiveStreamEventDetails';\nimport LiveStreamEventName from './models/LiveStreamEventName';\nimport type LiveStreamMessageDetails from './models/LiveStreamMessageDetails';\nimport type OpenVideoPlayerConfiguration from './models/OpenVideoPlayerConfiguration';\nimport type Product from './models/Product';\nimport type ProductInfoViewConfiguration from './models/ProductInfoViewConfiguration';\nimport type {\n LinkButtonConfiguration,\n ProductCardCTAButtonStyle,\n ProductCardCTAButtonText,\n ProductCardConfiguration,\n ProductCardIconConfiguration,\n ProductCardLabelConfiguration,\n ProductCardPriceConfiguration,\n ProductCardPriceLabelAxis,\n ProductCardTheme,\n ShoppingCTAButtonConfiguration,\n ShoppingCTAButtonText,\n} from './models/ProductInfoViewConfiguration';\nimport type ProductUnit from './models/ProductUnit';\nimport type { ProductPrice, ProductUnitOption } from './models/ProductUnit';\nimport type PushRNContainerParams from './models/PushRNContainerParams';\nimport type { RNAppProps } from './models/PushRNContainerParams';\nimport type SDKInitOptions from './models/SDKInitOptions';\nimport type { VideoLaunchBehavior } from './models/SDKInitOptions';\nimport type ShoppingCTAResult from './models/ShoppingCTAResult';\nimport type { StoryBlockConfiguration } from './models/StoryBlockConfiguration';\nimport type { StoryBlockSource } from './models/StoryBlockSource';\nimport type TrackPurchaseParameters from './models/TrackPurchaseParameters';\nimport type VideoFeedConfiguration from './models/VideoFeedConfiguration';\nimport type {\n VideoFeedPadding,\n VideoFeedPlayIconConfiguration,\n VideoFeedTitleConfiguration,\n VideoFeedTitlePosition,\n} from './models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from './models/VideoFeedSource';\nimport type VideoPlaybackDetails from './models/VideoPlaybackDetails';\nimport type { VideoPlayerSize } from './models/VideoPlaybackDetails';\nimport VideoPlaybackEventName from './models/VideoPlaybackEventName';\nimport type VideoPlayerButtonConfiguration from './models/VideoPlayerButtonConfiguration';\nimport type {\n VideoPlayerCTADelay,\n VideoPlayerCTADelayType,\n} from './models/VideoPlayerCTADelay';\nimport type { VideoPlayerCTAStyle } from './models/VideoPlayerCTAStyle';\nimport type { VideoPlayerCTAWidth } from './models/VideoPlayerCTAWidth';\nimport type { VideoPlayerCompleteAction } from './models/VideoPlayerCompleteAction';\nimport type { VideoPlayerLivestreamCountdownTimerTheme } from './models/VideoPlayerLivestreamCountdownTimerTheme';\nimport type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';\nimport type {\n VideoPlayerLogoConfiguration,\n VideoPlayerLogoOption,\n} from './models/VideoPlayerLogoConfiguration';\nimport type { VideoPlayerStyle } from './models/VideoPlayerStyle';\nimport VideoFeedUtil from './utils/VideoFeedUtil';\n\nexport default FireworkSDK;\n\nexport {\n AdBadgeConfiguration,\n AdBadgeTextType,\n AdConfiguration,\n AndroidFontInfo,\n ButtonInfo,\n CountdownTimerAppearanceMode,\n CountdownTimerConfiguration,\n CustomCTAClickCallback,\n CustomCTAClickEvent,\n CustomClickCartIconCallback,\n CustomClickCartIconEvent,\n CustomClickLinkButtonCallback,\n CustomClickLinkButtonEvent,\n CustomTapProductCardCallback,\n CustomTapProductCardEvent,\n FWError,\n FWNavigator,\n FeedItemDetails,\n FireworkSDK,\n GradientDrawable,\n GradientDrawableOrientation,\n IOSFontInfo,\n IOSSystemFontStyle,\n IOSSystemFontWeight,\n IStoryBlockMethods,\n IStoryBlockProps,\n IVideoFeedProps,\n LinkButtonConfiguration,\n LiveStream,\n LiveStreamChatEvent,\n LiveStreamChatEventName,\n LiveStreamEvent,\n LiveStreamEventDetails,\n LiveStreamEventName,\n LiveStreamMessageDetails,\n OpenVideoPlayerConfiguration,\n PlayerHandler,\n Product,\n ProductCardCTAButtonStyle,\n ProductCardCTAButtonText,\n ProductCardConfiguration,\n ProductCardIconConfiguration,\n ProductCardLabelConfiguration,\n ProductCardPriceConfiguration,\n ProductCardPriceLabelAxis,\n ProductCardTheme,\n ProductInfoViewConfiguration,\n ProductPrice,\n ProductUnit,\n ProductUnitOption,\n PushRNContainerParams,\n RNAppProps,\n SDKInitCallback,\n SDKInitEvent,\n SDKInitOptions,\n ShoppingCTAButtonConfiguration,\n ShoppingCTAButtonText,\n ShoppingCTACallback,\n ShoppingCTAEvent,\n ShoppingCTAResult,\n StoryBlock,\n StoryBlockConfiguration,\n StoryBlockSource,\n TrackPurchaseParameters,\n UpdateProductDetailsCallback,\n UpdateProductDetailsEvent,\n VastAttribute,\n VideoFeed,\n VideoFeedClickCallback,\n VideoFeedClickEvent,\n VideoFeedConfiguration,\n VideoFeedMode,\n VideoFeedPadding,\n VideoFeedPlayIconConfiguration,\n VideoFeedSource,\n VideoFeedTitleConfiguration,\n VideoFeedTitlePosition,\n VideoFeedUtil,\n VideoLaunchBehavior,\n VideoPlaybackCallback,\n VideoPlaybackDetails,\n VideoPlaybackEvent,\n VideoPlaybackEventName,\n VideoPlayerButtonConfiguration,\n VideoPlayerCTADelay,\n VideoPlayerCTADelayType,\n VideoPlayerCTAStyle,\n VideoPlayerCTAWidth,\n VideoPlayerCompleteAction,\n VideoPlayerLivestreamCountdownTimerTheme,\n VideoPlayerConfiguration,\n VideoPlayerLogoConfiguration,\n VideoPlayerLogoOption,\n VideoPlayerSize,\n VideoPlayerStyle,\n VideoShopping,\n onLiveStreamChatEventCallback,\n onLiveStreamEventCallback,\n};\n"]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=VideoPlayerLivestreamCountdownTimerTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -40,7 +40,7 @@ class VideoFeed extends React.Component {
40
40
  }
41
41
 
42
42
  let reactTag = findNodeHandle(nativeNodeHandle);
43
- FWLoggerUtil.log(`StoryBlock refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`);
43
+ FWLoggerUtil.log(`VideoFeed refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`);
44
44
 
45
45
  if (!nativeNodeHandle || !reactTag) {
46
46
  return;
@@ -50,7 +50,6 @@ class VideoFeed extends React.Component {
50
50
  });
51
51
 
52
52
  _defineProperty(this, "_onVideoFeedLoadFinished", event => {
53
- FWLoggerUtil.log(`VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`);
54
53
  const {
55
54
  onVideoFeedLoadFinished,
56
55
  onVideoFeedEmpty
@@ -71,19 +70,30 @@ class VideoFeed extends React.Component {
71
70
  error.reason = reason;
72
71
  }
73
72
 
74
- onVideoFeedLoadFinished(error);
75
-
76
73
  if (Platform.OS === 'android') {
74
+ if (!this._loaded) {
75
+ onVideoFeedLoadFinished(error);
76
+ }
77
+
77
78
  if (action === FWNativeErrorAction.loadingFirstPage || !this._loaded) {
78
79
  onVideoFeedEmpty === null || onVideoFeedEmpty === void 0 ? void 0 : onVideoFeedEmpty(error);
79
80
  }
80
81
  } else {
82
+ onVideoFeedLoadFinished(error);
83
+
81
84
  if (!this._loaded) {
82
85
  onVideoFeedEmpty === null || onVideoFeedEmpty === void 0 ? void 0 : onVideoFeedEmpty(error);
83
86
  }
84
87
  }
85
88
  } else {
86
- onVideoFeedLoadFinished();
89
+ if (Platform.OS === 'android') {
90
+ if (!this._loaded) {
91
+ onVideoFeedLoadFinished();
92
+ }
93
+ } else {
94
+ onVideoFeedLoadFinished();
95
+ }
96
+
87
97
  this._loaded = true;
88
98
  }
89
99
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["VideoFeed.tsx"],"names":["React","findNodeHandle","Platform","UIManager","FireworkSDK","FWEventName","FWNativeErrorAction","FireworkSDKModuleEventEmitter","FWGlobalState","gennerateJsonKey","FWLoggerUtil","FWVideoFeed","NativeComponentName","VideoFeed","Component","constructor","props","createRef","log","JSON","stringify","nativeNodeHandle","_nativeComponentRef","current","commandId","getViewManagerConfig","Commands","refresh","OS","toString","reactTag","dispatchViewManagerCommand","event","nativeEvent","onVideoFeedLoadFinished","onVideoFeedEmpty","name","reason","action","error","loadingFirstPage","_loaded","onVideoFeedDidStartPictureInPicture","onVideoFeedDidStopPictureInPicture","onVideoFeedGetFeedId","feedId","state","sdkInitCalled","getInstance","componentDidMount","sdkInitCalledPromise","then","setState","subscriptionOfShareBaseURLUpdated","addListener","ShareBaseURLUpdated","_subscriptions","push","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","componentWillUnmount","forEach","value","remove","render","gShareBaseURL","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","playlistGroup","hashtagFilterExpression","productIds","contentId","mode","enablePictureInPicture","adConfiguration","dynamicContentParametersString","_generateDynamicContentParametersString","videoFeedConfiguration","_getVideoFeedConfiguration","cornerRadius","toFixed","titleHidden","title","hidden","titleTextColor","titleFontSize","fontSize","titleAndroidFontInfo","titleGradientDrawable","gradientDrawable","titlePosition","playIconHidden","playIcon","playIconWidth","iconWidth","showAdBadge","enableAutoplay","gridColumns","itemSpacing","videoPlayerConfiguration","_getVideoPlayerConfiguration","playerStyle","videoCompleteAction","showShareButton","showPlaybackButton","showMuteButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","buttonConfiguration","videoPlayerLogoConfigurationJsonKey","videoPlayerLogoConfiguration","countdownTimerConfigurationJsonKey","countdownTimerConfiguration","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","_generateVastAttributesString","replayBadgeVideoFeedConfigurationJsonKey","replayBadge","replayBadgeVideoPlayerConfigurationJsonKey","replayBadgeConfiguration","shadowVideoFeedConfigurationJsonKey","shadow","key","join","orientation","colors","_generateButtonInfoString","videoDetailButton","closeButton","muteButton","unmuteButton","playButton","pauseButton","console","undefined","_onVideoFeedLoadFinished","_onVideoFeedEmpty","_onVideoFeedDidStartPictureInPicture","_onVideoFeedDidStopPictureInPicture","_onVideoFeedGetFeedId","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","valueString","length","vastAttributes","attribute","buttonInfo","imageName","systemImageName","tintColor","resultVideoFeedConfiguration","Math","floor","numberOfLines","resultVideoPlayerConfiguration"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n EmitterSubscription,\n findNodeHandle,\n NativeSyntheticEvent,\n Platform,\n StyleProp,\n UIManager,\n ViewStyle,\n} from 'react-native';\n\nimport FireworkSDK from '../FireworkSDK';\nimport type AdConfiguration from '../models/AdConfiguration';\nimport type ButtonInfo from '../models/ButtonInfo';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport { FWNativeErrorAction } from '../models/FWNativeErrorAction';\nimport type VideoFeedConfiguration from '../models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from '../models/VideoFeedSource';\nimport type VideoPlayerConfiguration from '../models/VideoPlayerConfiguration';\nimport type VideoPlayerNativeConfiguration from '../models/VideoPlayerNativeConfiguration';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport gennerateJsonKey from '../utils/FWJsonUtil';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWVideoFeed from './FWVideoFeed';\n\nexport type VideoFeedMode = 'row' | 'column' | 'grid';\n\n/**\n * The props of VideoFeed component.\n */\nexport interface IVideoFeedProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of five available video feed sources.The playlistGroup is only supported on iOS.\n * Defaults to discover.\n */\n source: VideoFeedSource;\n /**\n * Channel id of the feed. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the feed. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * PlaylistGroup id of the feed. Required when the source is set as playlistGroup. Only supported on iOS.\n */\n playlistGroup?: string;\n /**\n * The dynamic content parameters of the feed. Required when the source is set as dynamicContent.\n */\n dynamicContentParameters?: { [key: string]: string[] };\n /**\n * Hashtag filter expression is an s-expression used to provide feeds filtered by hashtags with specified criteria.\n * Queries are specified with boolean predicates on what hashtags are there on the video.\n * For instance, (and sport food) (or sport food) (and sport (or food comedy)) sport are all valid expressions.\n * Non-UTF-8 characters are not allowed. If using boolean predicates, the expression needs to be wrapped with parenthesis.\n * Required when the source is set as hashtagPlaylist.\n */\n hashtagFilterExpression?: string;\n /**\n * Product ids used to generate the sku feed\n */\n productIds?: string[];\n /**\n * The video or live stream id. Only supported on iOS.\n */\n contentId?: string;\n /**\n * One of three available display modes. Defaults to row.\n */\n mode?: VideoFeedMode;\n /**\n * Specifies if Picture in Picture is enabled.\n */\n enablePictureInPicture?: boolean;\n /**\n * Configuration of the feed.\n */\n videoFeedConfiguration?: VideoFeedConfiguration;\n /**\n * Configuration of the player.\n */\n videoPlayerConfiguration?: VideoPlayerConfiguration;\n /**\n * Ad configuration of the feed.\n */\n adConfiguration?: AdConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onVideoFeedLoadFinished?: (error?: FWError) => void;\n /**\n * The callback is triggered when there are no items in the story block.\n * The callback is triggered in the following cases:\n * 1. Loading successfully but the back end returns an empty list.\n * 2. The load failed and list is empty.\n * onVideoFeedLoadFinished will also be triggered when onVideoFeedEmpty is triggered.\n */\n onVideoFeedEmpty?: (error?: FWError) => void;\n /**\n * Start Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStartPictureInPicture?: (error?: FWError) => void;\n /**\n * Stop Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStopPictureInPicture?: (error?: FWError) => void;\n /**\n *\n * The host app could use this callback to get feed id.\n * The feed id can be used for conversion tracking.\n */\n onVideoFeedGetFeedId?: (feedId: string) => void;\n}\n\ninterface IVideoFeedState {\n sdkInitCalled: boolean;\n}\n\nconst NativeComponentName = 'FWVideoFeed';\n\n/**\n * VideoFeed component.\n */\nclass VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {\n /**\n * @ignore\n */\n static defaultProps = {\n mode: 'row',\n };\n\n private _nativeComponentRef = React.createRef<any>();\n\n private _subscriptions: EmitterSubscription[] = [];\n\n private _loaded: boolean = false;\n\n constructor(props: IVideoFeedProps) {\n super(props);\n this.state = {\n sdkInitCalled: FWGlobalState.getInstance().sdkInitCalled,\n };\n }\n\n public refresh = () => {\n FWLoggerUtil.log(`VideoFeed refresh ${JSON.stringify(this.props)}`);\n\n const nativeNodeHandle = findNodeHandle(this._nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands.refresh;\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n let reactTag: number | null = findNodeHandle(nativeNodeHandle);\n FWLoggerUtil.log(\n `StoryBlock refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`\n );\n if (!nativeNodeHandle || !reactTag) {\n return;\n }\n UIManager.dispatchViewManagerCommand(reactTag, commandId, []);\n };\n\n private _onVideoFeedLoadFinished = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedLoadFinished, onVideoFeedEmpty } = this.props;\n\n const { name, reason, action } = event.nativeEvent;\n\n if (onVideoFeedLoadFinished) {\n if (name) {\n let error: FWError = { name };\n if (reason) {\n error.reason = reason;\n }\n onVideoFeedLoadFinished(error);\n if (Platform.OS === 'android') {\n if (\n action === FWNativeErrorAction.loadingFirstPage ||\n !this._loaded\n ) {\n onVideoFeedEmpty?.(error);\n }\n } else {\n if (!this._loaded) {\n onVideoFeedEmpty?.(error);\n }\n }\n } else {\n onVideoFeedLoadFinished();\n this._loaded = true;\n }\n }\n };\n\n private _onVideoFeedEmpty = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedEmpty } = this.props;\n\n if (onVideoFeedEmpty) {\n onVideoFeedEmpty();\n }\n };\n\n private _onVideoFeedDidStartPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStartPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStartPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStartPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStartPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStartPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStartPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedDidStopPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStopPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStopPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStopPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStopPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStopPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStopPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedGetFeedId = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed onVideoFeedGetFeedId ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedGetFeedId } = this.props;\n\n const { feedId } = event.nativeEvent;\n\n if (onVideoFeedGetFeedId) {\n onVideoFeedGetFeedId(feedId ?? '');\n }\n };\n\n /**\n * @ignore\n */\n componentDidMount() {\n FWLoggerUtil.log(\n `VideoFeed componentDidMount ${JSON.stringify(this.props)}`\n );\n\n if (!this.state.sdkInitCalled) {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n this.setState({ sdkInitCalled: true });\n });\n }\n\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfShareBaseURLUpdated);\n\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAdBadgeConfigurationUpdated);\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfVideoLaunchBehaviorUpdated);\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAppLanguageUpdated);\n }\n\n /**\n * @ignore\n */\n componentWillUnmount() {\n FWLoggerUtil.log(\n `VideoFeed componentWillUnmount ${JSON.stringify(this.props)}`\n );\n\n this._subscriptions.forEach((value) => {\n value.remove();\n });\n\n this._subscriptions = [];\n }\n\n /**\n * @ignore\n */\n render() {\n if (!this.state.sdkInitCalled) {\n return null;\n }\n\n const gShareBaseURL = FireworkSDK.getInstance().shareBaseURL;\n const appLanguage = FireworkSDK.getInstance().appLanguage;\n const videoLaunchBehavior = FireworkSDK.getInstance().videoLaunchBehavior;\n const adBadgeConfiguration = FireworkSDK.getInstance().adBadgeConfiguration;\n const adBadgeTextType = adBadgeConfiguration?.badgeTextType;\n const backgroundColorOfAdBadge = adBadgeConfiguration?.backgroundColor;\n const textColorOfAdBadge = adBadgeConfiguration?.textColor;\n const androidFontIsCustomOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.isCustom?.toString();\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n playlistGroup,\n hashtagFilterExpression,\n productIds,\n contentId,\n mode,\n enablePictureInPicture,\n adConfiguration,\n } = this.props;\n const dynamicContentParametersString =\n this._generateDynamicContentParametersString();\n\n const videoFeedConfiguration = this._getVideoFeedConfiguration();\n const cornerRadius = videoFeedConfiguration?.cornerRadius?.toFixed(5);\n\n const titleHidden = videoFeedConfiguration?.title?.hidden?.toString();\n const titleTextColor = videoFeedConfiguration?.title?.textColor;\n const titleFontSize = videoFeedConfiguration?.title?.fontSize?.toFixed(5);\n const titleAndroidFontInfo = videoFeedConfiguration?.title?.androidFontInfo;\n const titleGradientDrawable =\n videoFeedConfiguration?.title?.gradientDrawable;\n const titlePosition = videoFeedConfiguration?.titlePosition;\n const playIconHidden = videoFeedConfiguration?.playIcon?.hidden;\n const playIconWidth =\n videoFeedConfiguration?.playIcon?.iconWidth?.toFixed(5);\n const showAdBadge = videoFeedConfiguration?.showAdBadge?.toString();\n const enableAutoplay = videoFeedConfiguration?.enableAutoplay;\n const gridColumns = videoFeedConfiguration?.gridColumns?.toFixed(5);\n const itemSpacing = videoFeedConfiguration?.itemSpacing?.toFixed(5);\n\n const videoPlayerConfiguration = this._getVideoPlayerConfiguration();\n const playerStyle = videoPlayerConfiguration?.playerStyle;\n const videoCompleteAction = videoPlayerConfiguration?.videoCompleteAction;\n const showShareButton = videoPlayerConfiguration?.showShareButton;\n const showPlaybackButton = videoPlayerConfiguration?.showPlaybackButton;\n const showMuteButton = videoPlayerConfiguration?.showMuteButton;\n const showBranding = videoPlayerConfiguration?.showBranding;\n const ctaDelayType = videoPlayerConfiguration?.ctaDelay?.type;\n const ctaDelayValue = videoPlayerConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n videoPlayerConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n videoPlayerConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = videoPlayerConfiguration?.shareBaseURL;\n const ctaWidth = videoPlayerConfiguration?.ctaWidth;\n const buttonConfiguration = videoPlayerConfiguration?.buttonConfiguration;\n const videoPlayerLogoConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.videoPlayerLogoConfiguration\n );\n const countdownTimerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.countdownTimerConfiguration\n );\n const showVideoDetailTitle = videoPlayerConfiguration?.showVideoDetailTitle;\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = this._generateVastAttributesString();\n const replayBadgeVideoFeedConfigurationJsonKey = gennerateJsonKey(\n videoFeedConfiguration?.replayBadge\n );\n const replayBadgeVideoPlayerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.replayBadgeConfiguration\n );\n const shadowVideoFeedConfigurationJsonKey = gennerateJsonKey(\n videoFeedConfiguration?.shadow\n );\n let key = `gShareBaseURL:${gShareBaseURL}`;\n if (Platform.OS === 'ios') {\n key += `_appLanguage:${appLanguage}`;\n }\n key += `_videoLaunchBehavior:${videoLaunchBehavior}`;\n key += `_adBadgeTextType:${adBadgeTextType}`;\n key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;\n key += `_textColorOfAdBadge:${textColorOfAdBadge}`;\n if (Platform.OS === 'android') {\n key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;\n key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;\n }\n\n key += `_source:${source}`;\n key += `_channel:${channel}`;\n key += `_playlist:${playlist}`;\n key += `_playlistGroup:${playlistGroup}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `_productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_mode:${mode}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n\n key += `_titleHidden:${titleHidden}`;\n if (Platform.OS === 'android') {\n key += `_cornerRadius:${cornerRadius}`;\n key += `_titleTextColor:${titleTextColor}`;\n key += `_titleFontSize:${titleFontSize}`;\n key += `_titleAndroidFontInfo.isCustom:${titleAndroidFontInfo?.isCustom}`;\n key += `_titleAndroidFontInfo.typefaceName:${titleAndroidFontInfo?.typefaceName}`;\n key += `_titleGradientDrawable.orientation:${titleGradientDrawable?.orientation}`;\n key += `_titleGradientDrawable.colors:${titleGradientDrawable?.colors?.join(\n ','\n )}`;\n key += `_playIconHidden:${playIconHidden}`;\n key += `_playIconWidth:${playIconWidth}`;\n key += `_showAdBadge:${showAdBadge}`;\n }\n\n key += `_titlePosition:${titlePosition}`;\n if (Platform.OS === 'android') {\n key += `_enableAutoplay:${enableAutoplay}`;\n }\n key += `_gridColumns:${gridColumns}`;\n key += `_itemSpacing:${itemSpacing}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n if (Platform.OS === 'android') {\n key += `_playerStyle:${playerStyle}`;\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showMuteButton:${showMuteButton}`;\n key += `_showBranding:${showBranding}`;\n key += `_ctaDelayType:${ctaDelayType}`;\n key += `_ctaDelayValue:${ctaDelayValue}`;\n key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;\n key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;\n key += `_ctaWidth:${ctaWidth}`;\n key += `_buttonConfiguration.videoDetailButton:${this._generateButtonInfoString(\n buttonConfiguration?.videoDetailButton\n )}`;\n key += `_buttonConfiguration.closeButton:${this._generateButtonInfoString(\n buttonConfiguration?.closeButton\n )}`;\n key += `_buttonConfiguration.muteButton:${this._generateButtonInfoString(\n buttonConfiguration?.muteButton\n )}`;\n key += `_buttonConfiguration.unmuteButton:${this._generateButtonInfoString(\n buttonConfiguration?.unmuteButton\n )}`;\n key += `_buttonConfiguration.playButton:${this._generateButtonInfoString(\n buttonConfiguration?.playButton\n )}`;\n key += `_buttonConfiguration.pauseButton:${this._generateButtonInfoString(\n buttonConfiguration?.pauseButton\n )}`;\n key += `_videoPlayerLogoConfiguration:${videoPlayerLogoConfigurationJsonKey}`;\n key += `_countdownTimerConfiguration:${countdownTimerConfigurationJsonKey}`;\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n }\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n key += `_replayBadgeVideoFeedConfiguration:${replayBadgeVideoFeedConfigurationJsonKey}`;\n key += `_replayBadgeVideoPlayerConfiguration:${replayBadgeVideoPlayerConfigurationJsonKey}`;\n key += `_shadowVideoFeedConfiguration:${shadowVideoFeedConfigurationJsonKey}`;\n console.log('video feed key', key);\n\n return (\n <FWVideoFeed\n key={key}\n {...this.props}\n enablePictureInPicture={undefined}\n videoFeedConfiguration={videoFeedConfiguration}\n videoPlayerConfiguration={videoPlayerConfiguration}\n ref={this._nativeComponentRef}\n onVideoFeedLoadFinished={this._onVideoFeedLoadFinished}\n onVideoFeedEmpty={this._onVideoFeedEmpty}\n onVideoFeedDidStartPictureInPicture={\n this._onVideoFeedDidStartPictureInPicture\n }\n onVideoFeedDidStopPictureInPicture={\n this._onVideoFeedDidStopPictureInPicture\n }\n onVideoFeedGetFeedId={this._onVideoFeedGetFeedId}\n mode={mode ?? 'row'}\n />\n );\n }\n\n private _generateDynamicContentParametersString(): string {\n const { dynamicContentParameters } = this.props;\n if (!dynamicContentParameters) {\n return '';\n }\n\n let resultString = '';\n const sortedKeyList = Object.keys(dynamicContentParameters).sort();\n for (const key of sortedKeyList) {\n const value = dynamicContentParameters[key];\n const valueString = value.join(',');\n if (resultString.length > 0) {\n resultString += '_';\n }\n\n resultString += `${key}:${valueString}`;\n }\n\n return resultString;\n }\n\n private _generateVastAttributesString(): string | undefined {\n const { adConfiguration } = this.props;\n const vastAttributes = adConfiguration?.vastAttributes;\n if (!vastAttributes) {\n return '';\n }\n\n let resultString = '';\n for (const attribute of vastAttributes) {\n if (resultString.length > 0) {\n resultString += '_';\n }\n resultString += `${attribute.name}:${attribute.value}`;\n }\n\n return resultString;\n }\n\n private _generateButtonInfoString(buttonInfo?: ButtonInfo): string {\n return `imageName:${buttonInfo?.imageName}_systemImageName:${buttonInfo?.systemImageName}_tintColor:${buttonInfo?.tintColor}`;\n }\n\n private _getVideoFeedConfiguration(): VideoFeedConfiguration | undefined {\n const { videoFeedConfiguration } = this.props;\n if (!videoFeedConfiguration) {\n return videoFeedConfiguration;\n }\n\n let resultVideoFeedConfiguration = videoFeedConfiguration;\n\n if (\n resultVideoFeedConfiguration.gridColumns &&\n Math.floor(resultVideoFeedConfiguration.gridColumns) !==\n resultVideoFeedConfiguration.gridColumns\n ) {\n const gridColumns = Math.floor(resultVideoFeedConfiguration.gridColumns);\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n gridColumns,\n };\n }\n\n if (\n resultVideoFeedConfiguration.title &&\n resultVideoFeedConfiguration.title.numberOfLines &&\n Math.floor(resultVideoFeedConfiguration.title.numberOfLines) !==\n resultVideoFeedConfiguration.title.numberOfLines\n ) {\n const numberOfLines = Math.floor(\n resultVideoFeedConfiguration.title.numberOfLines\n );\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n title: {\n ...resultVideoFeedConfiguration.title,\n numberOfLines,\n },\n };\n }\n\n return resultVideoFeedConfiguration;\n }\n\n private _getVideoPlayerConfiguration():\n | VideoPlayerNativeConfiguration\n | undefined {\n const { videoPlayerConfiguration, enablePictureInPicture } = this.props;\n\n let resultVideoPlayerConfiguration:\n | VideoPlayerNativeConfiguration\n | undefined = videoPlayerConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultVideoPlayerConfiguration) {\n resultVideoPlayerConfiguration = {};\n }\n resultVideoPlayerConfiguration = {\n ...resultVideoPlayerConfiguration,\n enablePictureInPicture,\n };\n }\n\n return resultVideoPlayerConfiguration;\n }\n}\n\nexport default VideoFeed;\n"]}
1
+ {"version":3,"sources":["VideoFeed.tsx"],"names":["React","findNodeHandle","Platform","UIManager","FireworkSDK","FWEventName","FWNativeErrorAction","FireworkSDKModuleEventEmitter","FWGlobalState","gennerateJsonKey","FWLoggerUtil","FWVideoFeed","NativeComponentName","VideoFeed","Component","constructor","props","createRef","log","JSON","stringify","nativeNodeHandle","_nativeComponentRef","current","commandId","getViewManagerConfig","Commands","refresh","OS","toString","reactTag","dispatchViewManagerCommand","event","onVideoFeedLoadFinished","onVideoFeedEmpty","name","reason","action","nativeEvent","error","_loaded","loadingFirstPage","onVideoFeedDidStartPictureInPicture","onVideoFeedDidStopPictureInPicture","onVideoFeedGetFeedId","feedId","state","sdkInitCalled","getInstance","componentDidMount","sdkInitCalledPromise","then","setState","subscriptionOfShareBaseURLUpdated","addListener","ShareBaseURLUpdated","_subscriptions","push","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","componentWillUnmount","forEach","value","remove","render","gShareBaseURL","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","playlistGroup","hashtagFilterExpression","productIds","contentId","mode","enablePictureInPicture","adConfiguration","dynamicContentParametersString","_generateDynamicContentParametersString","videoFeedConfiguration","_getVideoFeedConfiguration","cornerRadius","toFixed","titleHidden","title","hidden","titleTextColor","titleFontSize","fontSize","titleAndroidFontInfo","titleGradientDrawable","gradientDrawable","titlePosition","playIconHidden","playIcon","playIconWidth","iconWidth","showAdBadge","enableAutoplay","gridColumns","itemSpacing","videoPlayerConfiguration","_getVideoPlayerConfiguration","playerStyle","videoCompleteAction","showShareButton","showPlaybackButton","showMuteButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","buttonConfiguration","videoPlayerLogoConfigurationJsonKey","videoPlayerLogoConfiguration","countdownTimerConfigurationJsonKey","countdownTimerConfiguration","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","_generateVastAttributesString","replayBadgeVideoFeedConfigurationJsonKey","replayBadge","replayBadgeVideoPlayerConfigurationJsonKey","replayBadgeConfiguration","shadowVideoFeedConfigurationJsonKey","shadow","key","join","orientation","colors","_generateButtonInfoString","videoDetailButton","closeButton","muteButton","unmuteButton","playButton","pauseButton","console","undefined","_onVideoFeedLoadFinished","_onVideoFeedEmpty","_onVideoFeedDidStartPictureInPicture","_onVideoFeedDidStopPictureInPicture","_onVideoFeedGetFeedId","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","valueString","length","vastAttributes","attribute","buttonInfo","imageName","systemImageName","tintColor","resultVideoFeedConfiguration","Math","floor","numberOfLines","resultVideoPlayerConfiguration"],"mappings":";;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAEEC,cAFF,EAIEC,QAJF,EAMEC,SANF,QAQO,cARP;AAUA,OAAOC,WAAP,MAAwB,gBAAxB;AAIA,SAASC,WAAT,QAA4B,uBAA5B;AACA,SAASC,mBAAT,QAAoC,+BAApC;AAKA,SAASC,6BAAT,QAA8C,8BAA9C;AACA,OAAOC,aAAP,MAA0B,wBAA1B;AACA,OAAOC,gBAAP,MAA6B,qBAA7B;AACA,OAAOC,YAAP,MAAyB,uBAAzB;AACA,OAAOC,WAAP,MAAwB,eAAxB;AAqGA,MAAMC,mBAAmB,GAAG,aAA5B;AAEA;AACA;AACA;;AACA,MAAMC,SAAN,SAAwBb,KAAK,CAACc,SAA9B,CAA0E;AACxE;AACF;AACA;AAWEC,EAAAA,WAAW,CAACC,KAAD,EAAyB;AAClC,UAAMA,KAAN;;AADkC,8DANNhB,KAAK,CAACiB,SAAN,EAMM;;AAAA,4CAJY,EAIZ;;AAAA,qCAFT,KAES;;AAAA,qCAOnB,MAAM;AACrBP,MAAAA,YAAY,CAACQ,GAAb,CAAkB,qBAAoBC,IAAI,CAACC,SAAL,CAAe,KAAKJ,KAApB,CAA2B,EAAjE;AAEA,YAAMK,gBAAgB,GAAGpB,cAAc,CAAC,KAAKqB,mBAAL,CAAyBC,OAA1B,CAAvC;AAEA,UAAIC,SAA0B,GAC5BrB,SAAS,CAACsB,oBAAV,CAA+Bb,mBAA/B,EAAoDc,QAApD,CAA6DC,OAD/D;;AAEA,UAAIzB,QAAQ,CAAC0B,EAAT,KAAgB,SAApB,EAA+B;AAC7BJ,QAAAA,SAAS,GAAGA,SAAS,CAACK,QAAV,EAAZ;AACD;;AACD,UAAIC,QAAuB,GAAG7B,cAAc,CAACoB,gBAAD,CAA5C;AACAX,MAAAA,YAAY,CAACQ,GAAb,CACG,gCAA+BM,SAAU,sBAAqBH,gBAAiB,cAAaS,QAAS,EADxG;;AAGA,UAAI,CAACT,gBAAD,IAAqB,CAACS,QAA1B,EAAoC;AAClC;AACD;;AACD3B,MAAAA,SAAS,CAAC4B,0BAAV,CAAqCD,QAArC,EAA+CN,SAA/C,EAA0D,EAA1D;AACD,KAzBmC;;AAAA,sDA2BAQ,KAAD,IAAsC;AACvE,YAAM;AAAEC,QAAAA,uBAAF;AAA2BC,QAAAA;AAA3B,UAAgD,KAAKlB,KAA3D;AAEA,YAAM;AAAEmB,QAAAA,IAAF;AAAQC,QAAAA,MAAR;AAAgBC,QAAAA;AAAhB,UAA2BL,KAAK,CAACM,WAAvC;;AAEA,UAAIL,uBAAJ,EAA6B;AAC3B,YAAIE,IAAJ,EAAU;AACR,cAAII,KAAc,GAAG;AAAEJ,YAAAA;AAAF,WAArB;;AACA,cAAIC,MAAJ,EAAY;AACVG,YAAAA,KAAK,CAACH,MAAN,GAAeA,MAAf;AACD;;AAED,cAAIlC,QAAQ,CAAC0B,EAAT,KAAgB,SAApB,EAA+B;AAC7B,gBAAI,CAAC,KAAKY,OAAV,EAAmB;AACjBP,cAAAA,uBAAuB,CAACM,KAAD,CAAvB;AACD;;AACD,gBACEF,MAAM,KAAK/B,mBAAmB,CAACmC,gBAA/B,IACA,CAAC,KAAKD,OAFR,EAGE;AACAN,cAAAA,gBAAgB,SAAhB,IAAAA,gBAAgB,WAAhB,YAAAA,gBAAgB,CAAGK,KAAH,CAAhB;AACD;AACF,WAVD,MAUO;AACLN,YAAAA,uBAAuB,CAACM,KAAD,CAAvB;;AACA,gBAAI,CAAC,KAAKC,OAAV,EAAmB;AACjBN,cAAAA,gBAAgB,SAAhB,IAAAA,gBAAgB,WAAhB,YAAAA,gBAAgB,CAAGK,KAAH,CAAhB;AACD;AACF;AACF,SAtBD,MAsBO;AACL,cAAIrC,QAAQ,CAAC0B,EAAT,KAAgB,SAApB,EAA+B;AAC7B,gBAAI,CAAC,KAAKY,OAAV,EAAmB;AACjBP,cAAAA,uBAAuB;AACxB;AACF,WAJD,MAIO;AACLA,YAAAA,uBAAuB;AACxB;;AACD,eAAKO,OAAL,GAAe,IAAf;AACD;AACF;AACF,KAlEmC;;AAAA,+CAoEPR,KAAD,IAAsC;AAChEtB,MAAAA,YAAY,CAACQ,GAAb,CACG,sCAAqCC,IAAI,CAACC,SAAL,CAAeY,KAAK,CAACM,WAArB,CAAkC,EAD1E;AAGA,YAAM;AAAEJ,QAAAA;AAAF,UAAuB,KAAKlB,KAAlC;;AAEA,UAAIkB,gBAAJ,EAAsB;AACpBA,QAAAA,gBAAgB;AACjB;AACF,KA7EmC;;AAAA,kEAgFlCF,KAD6C,IAE1C;AACHtB,MAAAA,YAAY,CAACQ,GAAb,CACG,kDAAiDC,IAAI,CAACC,SAAL,CAChDY,KAAK,CAACM,WAD0C,CAEhD,EAHJ;AAKA,YAAM;AAAEI,QAAAA;AAAF,UAA0C,KAAK1B,KAArD;AAEA,YAAM;AAAEmB,QAAAA,IAAF;AAAQC,QAAAA;AAAR,UAAmBJ,KAAK,CAACM,WAA/B;;AAEA,UAAII,mCAAJ,EAAyC;AACvC,YAAIP,IAAJ,EAAU;AACR,cAAIC,MAAJ,EAAY;AACVM,YAAAA,mCAAmC,CAAC;AAAEP,cAAAA,IAAF;AAAQC,cAAAA;AAAR,aAAD,CAAnC;AACD,WAFD,MAEO;AACLM,YAAAA,mCAAmC,CAAC;AAAEP,cAAAA;AAAF,aAAD,CAAnC;AACD;AACF,SAND,MAMO;AACLO,UAAAA,mCAAmC;AACpC;AACF;AACF,KAtGmC;;AAAA,iEAyGlCV,KAD4C,IAEzC;AACHtB,MAAAA,YAAY,CAACQ,GAAb,CACG,iDAAgDC,IAAI,CAACC,SAAL,CAC/CY,KAAK,CAACM,WADyC,CAE/C,EAHJ;AAKA,YAAM;AAAEK,QAAAA;AAAF,UAAyC,KAAK3B,KAApD;AAEA,YAAM;AAAEmB,QAAAA,IAAF;AAAQC,QAAAA;AAAR,UAAmBJ,KAAK,CAACM,WAA/B;;AAEA,UAAIK,kCAAJ,EAAwC;AACtC,YAAIR,IAAJ,EAAU;AACR,cAAIC,MAAJ,EAAY;AACVO,YAAAA,kCAAkC,CAAC;AAAER,cAAAA,IAAF;AAAQC,cAAAA;AAAR,aAAD,CAAlC;AACD,WAFD,MAEO;AACLO,YAAAA,kCAAkC,CAAC;AAAER,cAAAA;AAAF,aAAD,CAAlC;AACD;AACF,SAND,MAMO;AACLQ,UAAAA,kCAAkC;AACnC;AACF;AACF,KA/HmC;;AAAA,mDAiIHX,KAAD,IAAsC;AACpEtB,MAAAA,YAAY,CAACQ,GAAb,CACG,kCAAiCC,IAAI,CAACC,SAAL,CAAeY,KAAK,CAACM,WAArB,CAAkC,EADtE;AAGA,YAAM;AAAEM,QAAAA;AAAF,UAA2B,KAAK5B,KAAtC;AAEA,YAAM;AAAE6B,QAAAA;AAAF,UAAab,KAAK,CAACM,WAAzB;;AAEA,UAAIM,oBAAJ,EAA0B;AACxBA,QAAAA,oBAAoB,CAACC,MAAD,aAACA,MAAD,cAACA,MAAD,GAAW,EAAX,CAApB;AACD;AACF,KA5ImC;;AAElC,SAAKC,KAAL,GAAa;AACXC,MAAAA,aAAa,EAAEvC,aAAa,CAACwC,WAAd,GAA4BD;AADhC,KAAb;AAGD;;AAyID;AACF;AACA;AACEE,EAAAA,iBAAiB,GAAG;AAClBvC,IAAAA,YAAY,CAACQ,GAAb,CACG,+BAA8BC,IAAI,CAACC,SAAL,CAAe,KAAKJ,KAApB,CAA2B,EAD5D;;AAIA,QAAI,CAAC,KAAK8B,KAAL,CAAWC,aAAhB,EAA+B;AAC7BvC,MAAAA,aAAa,CAACwC,WAAd,GAA4BE,oBAA5B,CAAiDC,IAAjD,CAAsD,MAAM;AAC1D,aAAKC,QAAL,CAAc;AAAEL,UAAAA,aAAa,EAAE;AAAjB,SAAd;AACD,OAFD;AAGD;;AAED,UAAMM,iCAAiC,GACrC9C,6BAA6B,CAAC+C,WAA9B,CACEjD,WAAW,CAACkD,mBADd,EAEE,MAAM;AACJ7C,MAAAA,YAAY,CAACQ,GAAb,CAAiB,yCAAjB;AACA,WAAKkC,QAAL,CAAc,EAAd;AACD,KALH,CADF;;AAQA,SAAKI,cAAL,CAAoBC,IAApB,CAAyBJ,iCAAzB;;AAEA,UAAMK,yCAAyC,GAC7CnD,6BAA6B,CAAC+C,WAA9B,CACEjD,WAAW,CAACsD,2BADd,EAEE,MAAM;AACJjD,MAAAA,YAAY,CAACQ,GAAb,CAAiB,iDAAjB;AACA,WAAKkC,QAAL,CAAc,EAAd;AACD,KALH,CADF;;AAQA,SAAKI,cAAL,CAAoBC,IAApB,CAAyBC,yCAAzB;;AAEA,UAAME,wCAAwC,GAC5CrD,6BAA6B,CAAC+C,WAA9B,CACEjD,WAAW,CAACwD,0BADd,EAEE,MAAM;AACJnD,MAAAA,YAAY,CAACQ,GAAb,CAAiB,gDAAjB;AACA,WAAKkC,QAAL,CAAc,EAAd;AACD,KALH,CADF;;AAQA,SAAKI,cAAL,CAAoBC,IAApB,CAAyBG,wCAAzB;;AAEA,UAAME,gCAAgC,GACpCvD,6BAA6B,CAAC+C,WAA9B,CACEjD,WAAW,CAAC0D,kBADd,EAEE,MAAM;AACJrD,MAAAA,YAAY,CAACQ,GAAb,CAAiB,wCAAjB;AACA,WAAKkC,QAAL,CAAc,EAAd;AACD,KALH,CADF;;AAQA,SAAKI,cAAL,CAAoBC,IAApB,CAAyBK,gCAAzB;AACD;AAED;AACF;AACA;;;AACEE,EAAAA,oBAAoB,GAAG;AACrBtD,IAAAA,YAAY,CAACQ,GAAb,CACG,kCAAiCC,IAAI,CAACC,SAAL,CAAe,KAAKJ,KAApB,CAA2B,EAD/D;;AAIA,SAAKwC,cAAL,CAAoBS,OAApB,CAA6BC,KAAD,IAAW;AACrCA,MAAAA,KAAK,CAACC,MAAN;AACD,KAFD;;AAIA,SAAKX,cAAL,GAAsB,EAAtB;AACD;AAED;AACF;AACA;;;AACEY,EAAAA,MAAM,GAAG;AAAA;;AACP,QAAI,CAAC,KAAKtB,KAAL,CAAWC,aAAhB,EAA+B;AAC7B,aAAO,IAAP;AACD;;AAED,UAAMsB,aAAa,GAAGjE,WAAW,CAAC4C,WAAZ,GAA0BsB,YAAhD;AACA,UAAMC,WAAW,GAAGnE,WAAW,CAAC4C,WAAZ,GAA0BuB,WAA9C;AACA,UAAMC,mBAAmB,GAAGpE,WAAW,CAAC4C,WAAZ,GAA0BwB,mBAAtD;AACA,UAAMC,oBAAoB,GAAGrE,WAAW,CAAC4C,WAAZ,GAA0ByB,oBAAvD;AACA,UAAMC,eAAe,GAAGD,oBAAH,aAAGA,oBAAH,uBAAGA,oBAAoB,CAAEE,aAA9C;AACA,UAAMC,wBAAwB,GAAGH,oBAAH,aAAGA,oBAAH,uBAAGA,oBAAoB,CAAEI,eAAvD;AACA,UAAMC,kBAAkB,GAAGL,oBAAH,aAAGA,oBAAH,uBAAGA,oBAAoB,CAAEM,SAAjD;AACA,UAAMC,4BAA4B,GAChCP,oBADgC,aAChCA,oBADgC,gDAChCA,oBAAoB,CAAEQ,eADU,oFAChC,sBAAuCC,QADP,2DAChC,uBAAiDrD,QAAjD,EADF;AAEA,UAAMsD,gCAAgC,GACpCV,oBADoC,aACpCA,oBADoC,iDACpCA,oBAAoB,CAAEQ,eADc,2DACpC,uBAAuCG,YADzC;AAGA,UAAM;AACJC,MAAAA,MADI;AAEJC,MAAAA,OAFI;AAGJC,MAAAA,QAHI;AAIJC,MAAAA,aAJI;AAKJC,MAAAA,uBALI;AAMJC,MAAAA,UANI;AAOJC,MAAAA,SAPI;AAQJC,MAAAA,IARI;AASJC,MAAAA,sBATI;AAUJC,MAAAA;AAVI,QAWF,KAAK9E,KAXT;;AAYA,UAAM+E,8BAA8B,GAClC,KAAKC,uCAAL,EADF;;AAGA,UAAMC,sBAAsB,GAAG,KAAKC,0BAAL,EAA/B;;AACA,UAAMC,YAAY,GAAGF,sBAAH,aAAGA,sBAAH,gDAAGA,sBAAsB,CAAEE,YAA3B,0DAAG,sBAAsCC,OAAtC,CAA8C,CAA9C,CAArB;AAEA,UAAMC,WAAW,GAAGJ,sBAAH,aAAGA,sBAAH,iDAAGA,sBAAsB,CAAEK,KAA3B,qFAAG,uBAA+BC,MAAlC,2DAAG,uBAAuC1E,QAAvC,EAApB;AACA,UAAM2E,cAAc,GAAGP,sBAAH,aAAGA,sBAAH,iDAAGA,sBAAsB,CAAEK,KAA3B,2DAAG,uBAA+BvB,SAAtD;AACA,UAAM0B,aAAa,GAAGR,sBAAH,aAAGA,sBAAH,iDAAGA,sBAAsB,CAAEK,KAA3B,qFAAG,uBAA+BI,QAAlC,2DAAG,uBAAyCN,OAAzC,CAAiD,CAAjD,CAAtB;AACA,UAAMO,oBAAoB,GAAGV,sBAAH,aAAGA,sBAAH,iDAAGA,sBAAsB,CAAEK,KAA3B,2DAAG,uBAA+BrB,eAA5D;AACA,UAAM2B,qBAAqB,GACzBX,sBADyB,aACzBA,sBADyB,iDACzBA,sBAAsB,CAAEK,KADC,2DACzB,uBAA+BO,gBADjC;AAEA,UAAMC,aAAa,GAAGb,sBAAH,aAAGA,sBAAH,uBAAGA,sBAAsB,CAAEa,aAA9C;AACA,UAAMC,cAAc,GAAGd,sBAAH,aAAGA,sBAAH,iDAAGA,sBAAsB,CAAEe,QAA3B,2DAAG,uBAAkCT,MAAzD;AACA,UAAMU,aAAa,GACjBhB,sBADiB,aACjBA,sBADiB,kDACjBA,sBAAsB,CAAEe,QADP,uFACjB,wBAAkCE,SADjB,4DACjB,wBAA6Cd,OAA7C,CAAqD,CAArD,CADF;AAEA,UAAMe,WAAW,GAAGlB,sBAAH,aAAGA,sBAAH,kDAAGA,sBAAsB,CAAEkB,WAA3B,4DAAG,wBAAqCtF,QAArC,EAApB;AACA,UAAMuF,cAAc,GAAGnB,sBAAH,aAAGA,sBAAH,uBAAGA,sBAAsB,CAAEmB,cAA/C;AACA,UAAMC,WAAW,GAAGpB,sBAAH,aAAGA,sBAAH,kDAAGA,sBAAsB,CAAEoB,WAA3B,4DAAG,wBAAqCjB,OAArC,CAA6C,CAA7C,CAApB;AACA,UAAMkB,WAAW,GAAGrB,sBAAH,aAAGA,sBAAH,kDAAGA,sBAAsB,CAAEqB,WAA3B,4DAAG,wBAAqClB,OAArC,CAA6C,CAA7C,CAApB;;AAEA,UAAMmB,wBAAwB,GAAG,KAAKC,4BAAL,EAAjC;;AACA,UAAMC,WAAW,GAAGF,wBAAH,aAAGA,wBAAH,uBAAGA,wBAAwB,CAAEE,WAA9C;AACA,UAAMC,mBAAmB,GAAGH,wBAAH,aAAGA,wBAAH,uBAAGA,wBAAwB,CAAEG,mBAAtD;AACA,UAAMC,eAAe,GAAGJ,wBAAH,aAAGA,wBAAH,uBAAGA,wBAAwB,CAAEI,eAAlD;AACA,UAAMC,kBAAkB,GAAGL,wBAAH,aAAGA,wBAAH,uBAAGA,wBAAwB,CAAEK,kBAArD;AACA,UAAMC,cAAc,GAAGN,wBAAH,aAAGA,wBAAH,uBAAGA,wBAAwB,CAAEM,cAAjD;AACA,UAAMC,YAAY,GAAGP,wBAAH,aAAGA,wBAAH,uBAAGA,wBAAwB,CAAEO,YAA/C;AACA,UAAMC,YAAY,GAAGR,wBAAH,aAAGA,wBAAH,gDAAGA,wBAAwB,CAAES,QAA7B,0DAAG,sBAAoCC,IAAzD;AACA,UAAMC,aAAa,GAAGX,wBAAH,aAAGA,wBAAH,iDAAGA,wBAAwB,CAAES,QAA7B,qFAAG,uBAAoC9D,KAAvC,2DAAG,uBAA2CkC,OAA3C,CAAmD,CAAnD,CAAtB;AACA,UAAM+B,qBAAqB,GACzBZ,wBADyB,aACzBA,wBADyB,iDACzBA,wBAAwB,CAAEa,iBADD,2DACzB,uBAA6CH,IAD/C;AAEA,UAAMI,sBAAsB,GAC1Bd,wBAD0B,aAC1BA,wBAD0B,iDAC1BA,wBAAwB,CAAEa,iBADA,qFAC1B,uBAA6ClE,KADnB,2DAC1B,uBAAoDkC,OAApD,CAA4D,CAA5D,CADF;AAEA,UAAM9B,YAAY,GAAGiD,wBAAH,aAAGA,wBAAH,uBAAGA,wBAAwB,CAAEjD,YAA/C;AACA,UAAMgE,QAAQ,GAAGf,wBAAH,aAAGA,wBAAH,uBAAGA,wBAAwB,CAAEe,QAA3C;AACA,UAAMC,mBAAmB,GAAGhB,wBAAH,aAAGA,wBAAH,uBAAGA,wBAAwB,CAAEgB,mBAAtD;AACA,UAAMC,mCAAmC,GAAG/H,gBAAgB,CAC1D8G,wBAD0D,aAC1DA,wBAD0D,uBAC1DA,wBAAwB,CAAEkB,4BADgC,CAA5D;AAGA,UAAMC,kCAAkC,GAAGjI,gBAAgB,CACzD8G,wBADyD,aACzDA,wBADyD,uBACzDA,wBAAwB,CAAEoB,2BAD+B,CAA3D;AAGA,UAAMC,oBAAoB,GAAGrB,wBAAH,aAAGA,wBAAH,uBAAGA,wBAAwB,CAAEqB,oBAAvD;AACA,UAAMC,WAAW,GAAG/C,eAAH,aAAGA,eAAH,uBAAGA,eAAe,CAAE+C,WAArC;AACA,UAAMC,eAAe,GAAGhD,eAAH,aAAGA,eAAH,uBAAGA,eAAe,CAAEgD,eAAzC;;AACA,UAAMC,oBAAoB,GAAG,KAAKC,6BAAL,EAA7B;;AACA,UAAMC,wCAAwC,GAAGxI,gBAAgB,CAC/DwF,sBAD+D,aAC/DA,sBAD+D,uBAC/DA,sBAAsB,CAAEiD,WADuC,CAAjE;AAGA,UAAMC,0CAA0C,GAAG1I,gBAAgB,CACjE8G,wBADiE,aACjEA,wBADiE,uBACjEA,wBAAwB,CAAE6B,wBADuC,CAAnE;AAGA,UAAMC,mCAAmC,GAAG5I,gBAAgB,CAC1DwF,sBAD0D,aAC1DA,sBAD0D,uBAC1DA,sBAAsB,CAAEqD,MADkC,CAA5D;AAGA,QAAIC,GAAG,GAAI,iBAAgBlF,aAAc,EAAzC;;AACA,QAAInE,QAAQ,CAAC0B,EAAT,KAAgB,KAApB,EAA2B;AACzB2H,MAAAA,GAAG,IAAK,gBAAehF,WAAY,EAAnC;AACD;;AACDgF,IAAAA,GAAG,IAAK,wBAAuB/E,mBAAoB,EAAnD;AACA+E,IAAAA,GAAG,IAAK,oBAAmB7E,eAAgB,EAA3C;AACA6E,IAAAA,GAAG,IAAK,6BAA4B3E,wBAAyB,EAA7D;AACA2E,IAAAA,GAAG,IAAK,uBAAsBzE,kBAAmB,EAAjD;;AACA,QAAI5E,QAAQ,CAAC0B,EAAT,KAAgB,SAApB,EAA+B;AAC7B2H,MAAAA,GAAG,IAAK,gCAA+BvE,4BAA6B,EAApE;AACAuE,MAAAA,GAAG,IAAK,oCAAmCpE,gCAAiC,EAA5E;AACD;;AAEDoE,IAAAA,GAAG,IAAK,WAAUlE,MAAO,EAAzB;AACAkE,IAAAA,GAAG,IAAK,YAAWjE,OAAQ,EAA3B;AACAiE,IAAAA,GAAG,IAAK,aAAYhE,QAAS,EAA7B;AACAgE,IAAAA,GAAG,IAAK,kBAAiB/D,aAAc,EAAvC;AACA+D,IAAAA,GAAG,IAAK,6BAA4BxD,8BAA+B,EAAnE;AACAwD,IAAAA,GAAG,IAAK,4BAA2B9D,uBAAwB,EAA3D;AACA8D,IAAAA,GAAG,IAAK,eAAc7D,UAAf,aAAeA,UAAf,uBAAeA,UAAU,CAAE8D,IAAZ,CAAiB,GAAjB,CAAsB,EAA5C;AACAD,IAAAA,GAAG,IAAK,cAAa5D,SAAU,EAA/B;AACA4D,IAAAA,GAAG,IAAK,SAAQ3D,IAAK,EAArB;AACA2D,IAAAA,GAAG,IAAK,2BAA0B1D,sBAAuB,EAAzD;AAEA0D,IAAAA,GAAG,IAAK,gBAAelD,WAAY,EAAnC;;AACA,QAAInG,QAAQ,CAAC0B,EAAT,KAAgB,SAApB,EAA+B;AAAA;;AAC7B2H,MAAAA,GAAG,IAAK,iBAAgBpD,YAAa,EAArC;AACAoD,MAAAA,GAAG,IAAK,mBAAkB/C,cAAe,EAAzC;AACA+C,MAAAA,GAAG,IAAK,kBAAiB9C,aAAc,EAAvC;AACA8C,MAAAA,GAAG,IAAK,kCAAiC5C,oBAAlC,aAAkCA,oBAAlC,uBAAkCA,oBAAoB,CAAEzB,QAAS,EAAxE;AACAqE,MAAAA,GAAG,IAAK,sCAAqC5C,oBAAtC,aAAsCA,oBAAtC,uBAAsCA,oBAAoB,CAAEvB,YAAa,EAAhF;AACAmE,MAAAA,GAAG,IAAK,sCAAqC3C,qBAAtC,aAAsCA,qBAAtC,uBAAsCA,qBAAqB,CAAE6C,WAAY,EAAhF;AACAF,MAAAA,GAAG,IAAK,iCAAgC3C,qBAAjC,aAAiCA,qBAAjC,gDAAiCA,qBAAqB,CAAE8C,MAAxD,0DAAiC,sBAA+BF,IAA/B,CACtC,GADsC,CAEtC,EAFF;AAGAD,MAAAA,GAAG,IAAK,mBAAkBxC,cAAe,EAAzC;AACAwC,MAAAA,GAAG,IAAK,kBAAiBtC,aAAc,EAAvC;AACAsC,MAAAA,GAAG,IAAK,gBAAepC,WAAY,EAAnC;AACD;;AAEDoC,IAAAA,GAAG,IAAK,kBAAiBzC,aAAc,EAAvC;;AACA,QAAI5G,QAAQ,CAAC0B,EAAT,KAAgB,SAApB,EAA+B;AAC7B2H,MAAAA,GAAG,IAAK,mBAAkBnC,cAAe,EAAzC;AACD;;AACDmC,IAAAA,GAAG,IAAK,gBAAelC,WAAY,EAAnC;AACAkC,IAAAA,GAAG,IAAK,gBAAejC,WAAY,EAAnC;AAEAiC,IAAAA,GAAG,IAAK,iBAAgBjF,YAAa,EAArC;;AACA,QAAIpE,QAAQ,CAAC0B,EAAT,KAAgB,SAApB,EAA+B;AAC7B2H,MAAAA,GAAG,IAAK,gBAAe9B,WAAY,EAAnC;AACA8B,MAAAA,GAAG,IAAK,wBAAuB7B,mBAAoB,EAAnD;AACA6B,MAAAA,GAAG,IAAK,oBAAmB5B,eAAgB,EAA3C;AACA4B,MAAAA,GAAG,IAAK,uBAAsB3B,kBAAmB,EAAjD;AACA2B,MAAAA,GAAG,IAAK,mBAAkB1B,cAAe,EAAzC;AACA0B,MAAAA,GAAG,IAAK,iBAAgBzB,YAAa,EAArC;AACAyB,MAAAA,GAAG,IAAK,iBAAgBxB,YAAa,EAArC;AACAwB,MAAAA,GAAG,IAAK,kBAAiBrB,aAAc,EAAvC;AACAqB,MAAAA,GAAG,IAAK,0BAAyBpB,qBAAsB,EAAvD;AACAoB,MAAAA,GAAG,IAAK,2BAA0BlB,sBAAuB,EAAzD;AACAkB,MAAAA,GAAG,IAAK,aAAYjB,QAAS,EAA7B;AACAiB,MAAAA,GAAG,IAAK,0CAAyC,KAAKI,yBAAL,CAC/CpB,mBAD+C,aAC/CA,mBAD+C,uBAC/CA,mBAAmB,CAAEqB,iBAD0B,CAE/C,EAFF;AAGAL,MAAAA,GAAG,IAAK,oCAAmC,KAAKI,yBAAL,CACzCpB,mBADyC,aACzCA,mBADyC,uBACzCA,mBAAmB,CAAEsB,WADoB,CAEzC,EAFF;AAGAN,MAAAA,GAAG,IAAK,mCAAkC,KAAKI,yBAAL,CACxCpB,mBADwC,aACxCA,mBADwC,uBACxCA,mBAAmB,CAAEuB,UADmB,CAExC,EAFF;AAGAP,MAAAA,GAAG,IAAK,qCAAoC,KAAKI,yBAAL,CAC1CpB,mBAD0C,aAC1CA,mBAD0C,uBAC1CA,mBAAmB,CAAEwB,YADqB,CAE1C,EAFF;AAGAR,MAAAA,GAAG,IAAK,mCAAkC,KAAKI,yBAAL,CACxCpB,mBADwC,aACxCA,mBADwC,uBACxCA,mBAAmB,CAAEyB,UADmB,CAExC,EAFF;AAGAT,MAAAA,GAAG,IAAK,oCAAmC,KAAKI,yBAAL,CACzCpB,mBADyC,aACzCA,mBADyC,uBACzCA,mBAAmB,CAAE0B,WADoB,CAEzC,EAFF;AAGAV,MAAAA,GAAG,IAAK,iCAAgCf,mCAAoC,EAA5E;AACAe,MAAAA,GAAG,IAAK,gCAA+Bb,kCAAmC,EAA1E;AACAa,MAAAA,GAAG,IAAK,yBAAwBX,oBAAqB,EAArD;AACD;;AAEDW,IAAAA,GAAG,IAAK,gBAAeV,WAAY,EAAnC;AACAU,IAAAA,GAAG,IAAK,oBAAmBT,eAAgB,EAA3C;AACAS,IAAAA,GAAG,IAAK,mBAAkBR,oBAAqB,EAA/C;AACAQ,IAAAA,GAAG,IAAK,sCAAqCN,wCAAyC,EAAtF;AACAM,IAAAA,GAAG,IAAK,wCAAuCJ,0CAA2C,EAA1F;AACAI,IAAAA,GAAG,IAAK,iCAAgCF,mCAAoC,EAA5E;AACAa,IAAAA,OAAO,CAAChJ,GAAR,CAAY,gBAAZ,EAA8BqI,GAA9B;AAEA,wBACE,oBAAC,WAAD;AACE,MAAA,GAAG,EAAEA;AADP,OAEM,KAAKvI,KAFX;AAGE,MAAA,sBAAsB,EAAEmJ,SAH1B;AAIE,MAAA,sBAAsB,EAAElE,sBAJ1B;AAKE,MAAA,wBAAwB,EAAEsB,wBAL5B;AAME,MAAA,GAAG,EAAE,KAAKjG,mBANZ;AAOE,MAAA,uBAAuB,EAAE,KAAK8I,wBAPhC;AAQE,MAAA,gBAAgB,EAAE,KAAKC,iBARzB;AASE,MAAA,mCAAmC,EACjC,KAAKC,oCAVT;AAYE,MAAA,kCAAkC,EAChC,KAAKC,mCAbT;AAeE,MAAA,oBAAoB,EAAE,KAAKC,qBAf7B;AAgBE,MAAA,IAAI,EAAE5E,IAAF,aAAEA,IAAF,cAAEA,IAAF,GAAU;AAhBhB,OADF;AAoBD;;AAEOI,EAAAA,uCAAuC,GAAW;AACxD,UAAM;AAAEyE,MAAAA;AAAF,QAA+B,KAAKzJ,KAA1C;;AACA,QAAI,CAACyJ,wBAAL,EAA+B;AAC7B,aAAO,EAAP;AACD;;AAED,QAAIC,YAAY,GAAG,EAAnB;AACA,UAAMC,aAAa,GAAGC,MAAM,CAACC,IAAP,CAAYJ,wBAAZ,EAAsCK,IAAtC,EAAtB;;AACA,SAAK,MAAMvB,GAAX,IAAkBoB,aAAlB,EAAiC;AAC/B,YAAMzG,KAAK,GAAGuG,wBAAwB,CAAClB,GAAD,CAAtC;AACA,YAAMwB,WAAW,GAAG7G,KAAK,CAACsF,IAAN,CAAW,GAAX,CAApB;;AACA,UAAIkB,YAAY,CAACM,MAAb,GAAsB,CAA1B,EAA6B;AAC3BN,QAAAA,YAAY,IAAI,GAAhB;AACD;;AAEDA,MAAAA,YAAY,IAAK,GAAEnB,GAAI,IAAGwB,WAAY,EAAtC;AACD;;AAED,WAAOL,YAAP;AACD;;AAEO1B,EAAAA,6BAA6B,GAAuB;AAC1D,UAAM;AAAElD,MAAAA;AAAF,QAAsB,KAAK9E,KAAjC;AACA,UAAMiK,cAAc,GAAGnF,eAAH,aAAGA,eAAH,uBAAGA,eAAe,CAAEmF,cAAxC;;AACA,QAAI,CAACA,cAAL,EAAqB;AACnB,aAAO,EAAP;AACD;;AAED,QAAIP,YAAY,GAAG,EAAnB;;AACA,SAAK,MAAMQ,SAAX,IAAwBD,cAAxB,EAAwC;AACtC,UAAIP,YAAY,CAACM,MAAb,GAAsB,CAA1B,EAA6B;AAC3BN,QAAAA,YAAY,IAAI,GAAhB;AACD;;AACDA,MAAAA,YAAY,IAAK,GAAEQ,SAAS,CAAC/I,IAAK,IAAG+I,SAAS,CAAChH,KAAM,EAArD;AACD;;AAED,WAAOwG,YAAP;AACD;;AAEOf,EAAAA,yBAAyB,CAACwB,UAAD,EAAkC;AACjE,WAAQ,aAAYA,UAAb,aAAaA,UAAb,uBAAaA,UAAU,CAAEC,SAAU,oBAAmBD,UAAtD,aAAsDA,UAAtD,uBAAsDA,UAAU,CAAEE,eAAgB,cAAaF,UAA/F,aAA+FA,UAA/F,uBAA+FA,UAAU,CAAEG,SAAU,EAA5H;AACD;;AAEOpF,EAAAA,0BAA0B,GAAuC;AACvE,UAAM;AAAED,MAAAA;AAAF,QAA6B,KAAKjF,KAAxC;;AACA,QAAI,CAACiF,sBAAL,EAA6B;AAC3B,aAAOA,sBAAP;AACD;;AAED,QAAIsF,4BAA4B,GAAGtF,sBAAnC;;AAEA,QACEsF,4BAA4B,CAAClE,WAA7B,IACAmE,IAAI,CAACC,KAAL,CAAWF,4BAA4B,CAAClE,WAAxC,MACEkE,4BAA4B,CAAClE,WAHjC,EAIE;AACA,YAAMA,WAAW,GAAGmE,IAAI,CAACC,KAAL,CAAWF,4BAA4B,CAAClE,WAAxC,CAApB;AACAkE,MAAAA,4BAA4B,GAAG,EAC7B,GAAGA,4BAD0B;AAE7BlE,QAAAA;AAF6B,OAA/B;AAID;;AAED,QACEkE,4BAA4B,CAACjF,KAA7B,IACAiF,4BAA4B,CAACjF,KAA7B,CAAmCoF,aADnC,IAEAF,IAAI,CAACC,KAAL,CAAWF,4BAA4B,CAACjF,KAA7B,CAAmCoF,aAA9C,MACEH,4BAA4B,CAACjF,KAA7B,CAAmCoF,aAJvC,EAKE;AACA,YAAMA,aAAa,GAAGF,IAAI,CAACC,KAAL,CACpBF,4BAA4B,CAACjF,KAA7B,CAAmCoF,aADf,CAAtB;AAGAH,MAAAA,4BAA4B,GAAG,EAC7B,GAAGA,4BAD0B;AAE7BjF,QAAAA,KAAK,EAAE,EACL,GAAGiF,4BAA4B,CAACjF,KAD3B;AAELoF,UAAAA;AAFK;AAFsB,OAA/B;AAOD;;AAED,WAAOH,4BAAP;AACD;;AAEO/D,EAAAA,4BAA4B,GAEtB;AACZ,UAAM;AAAED,MAAAA,wBAAF;AAA4B1B,MAAAA;AAA5B,QAAuD,KAAK7E,KAAlE;AAEA,QAAI2K,8BAES,GAAGpE,wBAFhB;;AAGA,QAAI,OAAO1B,sBAAP,KAAkC,SAAtC,EAAiD;AAC/C,UAAI,CAAC8F,8BAAL,EAAqC;AACnCA,QAAAA,8BAA8B,GAAG,EAAjC;AACD;;AACDA,MAAAA,8BAA8B,GAAG,EAC/B,GAAGA,8BAD4B;AAE/B9F,QAAAA;AAF+B,OAAjC;AAID;;AAED,WAAO8F,8BAAP;AACD;;AAlhBuE;;gBAApE9K,S,kBAIkB;AACpB+E,EAAAA,IAAI,EAAE;AADc,C;;AAihBxB,eAAe/E,SAAf","sourcesContent":["import React from 'react';\n\nimport {\n EmitterSubscription,\n findNodeHandle,\n NativeSyntheticEvent,\n Platform,\n StyleProp,\n UIManager,\n ViewStyle,\n} from 'react-native';\n\nimport FireworkSDK from '../FireworkSDK';\nimport type AdConfiguration from '../models/AdConfiguration';\nimport type ButtonInfo from '../models/ButtonInfo';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport { FWNativeErrorAction } from '../models/FWNativeErrorAction';\nimport type VideoFeedConfiguration from '../models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from '../models/VideoFeedSource';\nimport type VideoPlayerConfiguration from '../models/VideoPlayerConfiguration';\nimport type VideoPlayerNativeConfiguration from '../models/VideoPlayerNativeConfiguration';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport gennerateJsonKey from '../utils/FWJsonUtil';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWVideoFeed from './FWVideoFeed';\n\nexport type VideoFeedMode = 'row' | 'column' | 'grid';\n\n/**\n * The props of VideoFeed component.\n */\nexport interface IVideoFeedProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of five available video feed sources.The playlistGroup is only supported on iOS.\n * Defaults to discover.\n */\n source: VideoFeedSource;\n /**\n * Channel id of the feed. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the feed. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * PlaylistGroup id of the feed. Required when the source is set as playlistGroup. Only supported on iOS.\n */\n playlistGroup?: string;\n /**\n * The dynamic content parameters of the feed. Required when the source is set as dynamicContent.\n */\n dynamicContentParameters?: { [key: string]: string[] };\n /**\n * Hashtag filter expression is an s-expression used to provide feeds filtered by hashtags with specified criteria.\n * Queries are specified with boolean predicates on what hashtags are there on the video.\n * For instance, (and sport food) (or sport food) (and sport (or food comedy)) sport are all valid expressions.\n * Non-UTF-8 characters are not allowed. If using boolean predicates, the expression needs to be wrapped with parenthesis.\n * Required when the source is set as hashtagPlaylist.\n */\n hashtagFilterExpression?: string;\n /**\n * Product ids used to generate the sku feed\n */\n productIds?: string[];\n /**\n * The video or live stream id. Only supported on iOS.\n */\n contentId?: string;\n /**\n * One of three available display modes. Defaults to row.\n */\n mode?: VideoFeedMode;\n /**\n * Specifies if Picture in Picture is enabled.\n */\n enablePictureInPicture?: boolean;\n /**\n * Configuration of the feed.\n */\n videoFeedConfiguration?: VideoFeedConfiguration;\n /**\n * Configuration of the player.\n */\n videoPlayerConfiguration?: VideoPlayerConfiguration;\n /**\n * Ad configuration of the feed.\n */\n adConfiguration?: AdConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onVideoFeedLoadFinished?: (error?: FWError) => void;\n /**\n * The callback is triggered when there are no items in the story block.\n * The callback is triggered in the following cases:\n * 1. Loading successfully but the back end returns an empty list.\n * 2. The load failed and list is empty.\n * onVideoFeedLoadFinished will also be triggered when onVideoFeedEmpty is triggered.\n */\n onVideoFeedEmpty?: (error?: FWError) => void;\n /**\n * Start Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStartPictureInPicture?: (error?: FWError) => void;\n /**\n * Stop Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStopPictureInPicture?: (error?: FWError) => void;\n /**\n *\n * The host app could use this callback to get feed id.\n * The feed id can be used for conversion tracking.\n */\n onVideoFeedGetFeedId?: (feedId: string) => void;\n}\n\ninterface IVideoFeedState {\n sdkInitCalled: boolean;\n}\n\nconst NativeComponentName = 'FWVideoFeed';\n\n/**\n * VideoFeed component.\n */\nclass VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {\n /**\n * @ignore\n */\n static defaultProps = {\n mode: 'row',\n };\n\n private _nativeComponentRef = React.createRef<any>();\n\n private _subscriptions: EmitterSubscription[] = [];\n\n private _loaded: boolean = false;\n\n constructor(props: IVideoFeedProps) {\n super(props);\n this.state = {\n sdkInitCalled: FWGlobalState.getInstance().sdkInitCalled,\n };\n }\n\n public refresh = () => {\n FWLoggerUtil.log(`VideoFeed refresh ${JSON.stringify(this.props)}`);\n\n const nativeNodeHandle = findNodeHandle(this._nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands.refresh;\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n let reactTag: number | null = findNodeHandle(nativeNodeHandle);\n FWLoggerUtil.log(\n `VideoFeed refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`\n );\n if (!nativeNodeHandle || !reactTag) {\n return;\n }\n UIManager.dispatchViewManagerCommand(reactTag, commandId, []);\n };\n\n private _onVideoFeedLoadFinished = (event: NativeSyntheticEvent<any>) => {\n const { onVideoFeedLoadFinished, onVideoFeedEmpty } = this.props;\n\n const { name, reason, action } = event.nativeEvent;\n\n if (onVideoFeedLoadFinished) {\n if (name) {\n let error: FWError = { name };\n if (reason) {\n error.reason = reason;\n }\n\n if (Platform.OS === 'android') {\n if (!this._loaded) {\n onVideoFeedLoadFinished(error);\n }\n if (\n action === FWNativeErrorAction.loadingFirstPage ||\n !this._loaded\n ) {\n onVideoFeedEmpty?.(error);\n }\n } else {\n onVideoFeedLoadFinished(error);\n if (!this._loaded) {\n onVideoFeedEmpty?.(error);\n }\n }\n } else {\n if (Platform.OS === 'android') {\n if (!this._loaded) {\n onVideoFeedLoadFinished();\n }\n } else {\n onVideoFeedLoadFinished();\n }\n this._loaded = true;\n }\n }\n };\n\n private _onVideoFeedEmpty = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedEmpty } = this.props;\n\n if (onVideoFeedEmpty) {\n onVideoFeedEmpty();\n }\n };\n\n private _onVideoFeedDidStartPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStartPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStartPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStartPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStartPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStartPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStartPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedDidStopPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStopPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStopPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStopPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStopPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStopPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStopPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedGetFeedId = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed onVideoFeedGetFeedId ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedGetFeedId } = this.props;\n\n const { feedId } = event.nativeEvent;\n\n if (onVideoFeedGetFeedId) {\n onVideoFeedGetFeedId(feedId ?? '');\n }\n };\n\n /**\n * @ignore\n */\n componentDidMount() {\n FWLoggerUtil.log(\n `VideoFeed componentDidMount ${JSON.stringify(this.props)}`\n );\n\n if (!this.state.sdkInitCalled) {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n this.setState({ sdkInitCalled: true });\n });\n }\n\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfShareBaseURLUpdated);\n\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAdBadgeConfigurationUpdated);\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfVideoLaunchBehaviorUpdated);\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAppLanguageUpdated);\n }\n\n /**\n * @ignore\n */\n componentWillUnmount() {\n FWLoggerUtil.log(\n `VideoFeed componentWillUnmount ${JSON.stringify(this.props)}`\n );\n\n this._subscriptions.forEach((value) => {\n value.remove();\n });\n\n this._subscriptions = [];\n }\n\n /**\n * @ignore\n */\n render() {\n if (!this.state.sdkInitCalled) {\n return null;\n }\n\n const gShareBaseURL = FireworkSDK.getInstance().shareBaseURL;\n const appLanguage = FireworkSDK.getInstance().appLanguage;\n const videoLaunchBehavior = FireworkSDK.getInstance().videoLaunchBehavior;\n const adBadgeConfiguration = FireworkSDK.getInstance().adBadgeConfiguration;\n const adBadgeTextType = adBadgeConfiguration?.badgeTextType;\n const backgroundColorOfAdBadge = adBadgeConfiguration?.backgroundColor;\n const textColorOfAdBadge = adBadgeConfiguration?.textColor;\n const androidFontIsCustomOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.isCustom?.toString();\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n playlistGroup,\n hashtagFilterExpression,\n productIds,\n contentId,\n mode,\n enablePictureInPicture,\n adConfiguration,\n } = this.props;\n const dynamicContentParametersString =\n this._generateDynamicContentParametersString();\n\n const videoFeedConfiguration = this._getVideoFeedConfiguration();\n const cornerRadius = videoFeedConfiguration?.cornerRadius?.toFixed(5);\n\n const titleHidden = videoFeedConfiguration?.title?.hidden?.toString();\n const titleTextColor = videoFeedConfiguration?.title?.textColor;\n const titleFontSize = videoFeedConfiguration?.title?.fontSize?.toFixed(5);\n const titleAndroidFontInfo = videoFeedConfiguration?.title?.androidFontInfo;\n const titleGradientDrawable =\n videoFeedConfiguration?.title?.gradientDrawable;\n const titlePosition = videoFeedConfiguration?.titlePosition;\n const playIconHidden = videoFeedConfiguration?.playIcon?.hidden;\n const playIconWidth =\n videoFeedConfiguration?.playIcon?.iconWidth?.toFixed(5);\n const showAdBadge = videoFeedConfiguration?.showAdBadge?.toString();\n const enableAutoplay = videoFeedConfiguration?.enableAutoplay;\n const gridColumns = videoFeedConfiguration?.gridColumns?.toFixed(5);\n const itemSpacing = videoFeedConfiguration?.itemSpacing?.toFixed(5);\n\n const videoPlayerConfiguration = this._getVideoPlayerConfiguration();\n const playerStyle = videoPlayerConfiguration?.playerStyle;\n const videoCompleteAction = videoPlayerConfiguration?.videoCompleteAction;\n const showShareButton = videoPlayerConfiguration?.showShareButton;\n const showPlaybackButton = videoPlayerConfiguration?.showPlaybackButton;\n const showMuteButton = videoPlayerConfiguration?.showMuteButton;\n const showBranding = videoPlayerConfiguration?.showBranding;\n const ctaDelayType = videoPlayerConfiguration?.ctaDelay?.type;\n const ctaDelayValue = videoPlayerConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n videoPlayerConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n videoPlayerConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = videoPlayerConfiguration?.shareBaseURL;\n const ctaWidth = videoPlayerConfiguration?.ctaWidth;\n const buttonConfiguration = videoPlayerConfiguration?.buttonConfiguration;\n const videoPlayerLogoConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.videoPlayerLogoConfiguration\n );\n const countdownTimerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.countdownTimerConfiguration\n );\n const showVideoDetailTitle = videoPlayerConfiguration?.showVideoDetailTitle;\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = this._generateVastAttributesString();\n const replayBadgeVideoFeedConfigurationJsonKey = gennerateJsonKey(\n videoFeedConfiguration?.replayBadge\n );\n const replayBadgeVideoPlayerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.replayBadgeConfiguration\n );\n const shadowVideoFeedConfigurationJsonKey = gennerateJsonKey(\n videoFeedConfiguration?.shadow\n );\n let key = `gShareBaseURL:${gShareBaseURL}`;\n if (Platform.OS === 'ios') {\n key += `_appLanguage:${appLanguage}`;\n }\n key += `_videoLaunchBehavior:${videoLaunchBehavior}`;\n key += `_adBadgeTextType:${adBadgeTextType}`;\n key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;\n key += `_textColorOfAdBadge:${textColorOfAdBadge}`;\n if (Platform.OS === 'android') {\n key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;\n key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;\n }\n\n key += `_source:${source}`;\n key += `_channel:${channel}`;\n key += `_playlist:${playlist}`;\n key += `_playlistGroup:${playlistGroup}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `_productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_mode:${mode}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n\n key += `_titleHidden:${titleHidden}`;\n if (Platform.OS === 'android') {\n key += `_cornerRadius:${cornerRadius}`;\n key += `_titleTextColor:${titleTextColor}`;\n key += `_titleFontSize:${titleFontSize}`;\n key += `_titleAndroidFontInfo.isCustom:${titleAndroidFontInfo?.isCustom}`;\n key += `_titleAndroidFontInfo.typefaceName:${titleAndroidFontInfo?.typefaceName}`;\n key += `_titleGradientDrawable.orientation:${titleGradientDrawable?.orientation}`;\n key += `_titleGradientDrawable.colors:${titleGradientDrawable?.colors?.join(\n ','\n )}`;\n key += `_playIconHidden:${playIconHidden}`;\n key += `_playIconWidth:${playIconWidth}`;\n key += `_showAdBadge:${showAdBadge}`;\n }\n\n key += `_titlePosition:${titlePosition}`;\n if (Platform.OS === 'android') {\n key += `_enableAutoplay:${enableAutoplay}`;\n }\n key += `_gridColumns:${gridColumns}`;\n key += `_itemSpacing:${itemSpacing}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n if (Platform.OS === 'android') {\n key += `_playerStyle:${playerStyle}`;\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showMuteButton:${showMuteButton}`;\n key += `_showBranding:${showBranding}`;\n key += `_ctaDelayType:${ctaDelayType}`;\n key += `_ctaDelayValue:${ctaDelayValue}`;\n key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;\n key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;\n key += `_ctaWidth:${ctaWidth}`;\n key += `_buttonConfiguration.videoDetailButton:${this._generateButtonInfoString(\n buttonConfiguration?.videoDetailButton\n )}`;\n key += `_buttonConfiguration.closeButton:${this._generateButtonInfoString(\n buttonConfiguration?.closeButton\n )}`;\n key += `_buttonConfiguration.muteButton:${this._generateButtonInfoString(\n buttonConfiguration?.muteButton\n )}`;\n key += `_buttonConfiguration.unmuteButton:${this._generateButtonInfoString(\n buttonConfiguration?.unmuteButton\n )}`;\n key += `_buttonConfiguration.playButton:${this._generateButtonInfoString(\n buttonConfiguration?.playButton\n )}`;\n key += `_buttonConfiguration.pauseButton:${this._generateButtonInfoString(\n buttonConfiguration?.pauseButton\n )}`;\n key += `_videoPlayerLogoConfiguration:${videoPlayerLogoConfigurationJsonKey}`;\n key += `_countdownTimerConfiguration:${countdownTimerConfigurationJsonKey}`;\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n }\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n key += `_replayBadgeVideoFeedConfiguration:${replayBadgeVideoFeedConfigurationJsonKey}`;\n key += `_replayBadgeVideoPlayerConfiguration:${replayBadgeVideoPlayerConfigurationJsonKey}`;\n key += `_shadowVideoFeedConfiguration:${shadowVideoFeedConfigurationJsonKey}`;\n console.log('video feed key', key);\n\n return (\n <FWVideoFeed\n key={key}\n {...this.props}\n enablePictureInPicture={undefined}\n videoFeedConfiguration={videoFeedConfiguration}\n videoPlayerConfiguration={videoPlayerConfiguration}\n ref={this._nativeComponentRef}\n onVideoFeedLoadFinished={this._onVideoFeedLoadFinished}\n onVideoFeedEmpty={this._onVideoFeedEmpty}\n onVideoFeedDidStartPictureInPicture={\n this._onVideoFeedDidStartPictureInPicture\n }\n onVideoFeedDidStopPictureInPicture={\n this._onVideoFeedDidStopPictureInPicture\n }\n onVideoFeedGetFeedId={this._onVideoFeedGetFeedId}\n mode={mode ?? 'row'}\n />\n );\n }\n\n private _generateDynamicContentParametersString(): string {\n const { dynamicContentParameters } = this.props;\n if (!dynamicContentParameters) {\n return '';\n }\n\n let resultString = '';\n const sortedKeyList = Object.keys(dynamicContentParameters).sort();\n for (const key of sortedKeyList) {\n const value = dynamicContentParameters[key];\n const valueString = value.join(',');\n if (resultString.length > 0) {\n resultString += '_';\n }\n\n resultString += `${key}:${valueString}`;\n }\n\n return resultString;\n }\n\n private _generateVastAttributesString(): string | undefined {\n const { adConfiguration } = this.props;\n const vastAttributes = adConfiguration?.vastAttributes;\n if (!vastAttributes) {\n return '';\n }\n\n let resultString = '';\n for (const attribute of vastAttributes) {\n if (resultString.length > 0) {\n resultString += '_';\n }\n resultString += `${attribute.name}:${attribute.value}`;\n }\n\n return resultString;\n }\n\n private _generateButtonInfoString(buttonInfo?: ButtonInfo): string {\n return `imageName:${buttonInfo?.imageName}_systemImageName:${buttonInfo?.systemImageName}_tintColor:${buttonInfo?.tintColor}`;\n }\n\n private _getVideoFeedConfiguration(): VideoFeedConfiguration | undefined {\n const { videoFeedConfiguration } = this.props;\n if (!videoFeedConfiguration) {\n return videoFeedConfiguration;\n }\n\n let resultVideoFeedConfiguration = videoFeedConfiguration;\n\n if (\n resultVideoFeedConfiguration.gridColumns &&\n Math.floor(resultVideoFeedConfiguration.gridColumns) !==\n resultVideoFeedConfiguration.gridColumns\n ) {\n const gridColumns = Math.floor(resultVideoFeedConfiguration.gridColumns);\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n gridColumns,\n };\n }\n\n if (\n resultVideoFeedConfiguration.title &&\n resultVideoFeedConfiguration.title.numberOfLines &&\n Math.floor(resultVideoFeedConfiguration.title.numberOfLines) !==\n resultVideoFeedConfiguration.title.numberOfLines\n ) {\n const numberOfLines = Math.floor(\n resultVideoFeedConfiguration.title.numberOfLines\n );\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n title: {\n ...resultVideoFeedConfiguration.title,\n numberOfLines,\n },\n };\n }\n\n return resultVideoFeedConfiguration;\n }\n\n private _getVideoPlayerConfiguration():\n | VideoPlayerNativeConfiguration\n | undefined {\n const { videoPlayerConfiguration, enablePictureInPicture } = this.props;\n\n let resultVideoPlayerConfiguration:\n | VideoPlayerNativeConfiguration\n | undefined = videoPlayerConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultVideoPlayerConfiguration) {\n resultVideoPlayerConfiguration = {};\n }\n resultVideoPlayerConfiguration = {\n ...resultVideoPlayerConfiguration,\n enablePictureInPicture,\n };\n }\n\n return resultVideoPlayerConfiguration;\n }\n}\n\nexport default VideoFeed;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["FWNavigator","FireworkSDK","LiveStream","VideoShopping","StoryBlock","VideoFeed","LiveStreamChatEventName","LiveStreamEventName","VideoPlaybackEventName","VideoFeedUtil"],"mappings":"AAAA,OAAOA,WAAP,MAAwB,eAAxB;AAOA,OAAOC,WAAP,MAAwB,eAAxB;AAKA,OAAOC,UAAP,MAAuB,cAAvB;AAQA,OAAOC,aAAP,MAA0B,iBAA1B;AAKA,OAAOC,UAAP,MAAuB,yBAAvB;AAEA,OAAOC,SAAP,MAAsB,wBAAtB;AAgCA,OAAOC,uBAAP,MAAoC,kCAApC;AAEA,OAAOC,mBAAP,MAAgC,8BAAhC;AAsCA,OAAOC,sBAAP,MAAmC,iCAAnC;AAeA,OAAOC,aAAP,MAA0B,uBAA1B;AAEA,eAAeR,WAAf;AAEA,SAiBED,WAjBF,EAmBEC,WAnBF,EA6BEC,UA7BF,EA+BEI,uBA/BF,EAkCEC,mBAlCF,EA6DEH,UA7DF,EAoEEC,SApEF,EA8EEI,aA9EF,EAmFED,sBAnFF,EA+FEL,aA/FF","sourcesContent":["import FWNavigator from './FWNavigator';\nimport type {\n CustomCTAClickCallback,\n SDKInitCallback,\n VideoFeedClickCallback,\n VideoPlaybackCallback,\n} from './FireworkSDK';\nimport FireworkSDK from './FireworkSDK';\nimport type {\n onLiveStreamChatEventCallback,\n onLiveStreamEventCallback,\n} from './LiveStream';\nimport LiveStream from './LiveStream';\nimport type {\n CustomClickCartIconCallback,\n CustomClickLinkButtonCallback,\n CustomTapProductCardCallback,\n ShoppingCTACallback,\n UpdateProductDetailsCallback,\n} from './VideoShopping';\nimport VideoShopping from './VideoShopping';\nimport type {\n IStoryBlockMethods,\n IStoryBlockProps,\n} from './components/StoryBlock';\nimport StoryBlock from './components/StoryBlock';\nimport type { IVideoFeedProps, VideoFeedMode } from './components/VideoFeed';\nimport VideoFeed from './components/VideoFeed';\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport type { AdBadgeTextType } from './models/AdBadgeConfiguration';\nimport type AdConfiguration from './models/AdConfiguration';\nimport type { VastAttribute } from './models/AdConfiguration';\nimport type AndroidFontInfo from './models/AndroidFontInfo';\nimport type ButtonInfo from './models/ButtonInfo';\nimport type CountdownTimerConfiguration from './models/CountdownTimerConfiguration';\nimport type { CountdownTimerAppearanceMode } from './models/CountdownTimerConfiguration';\nimport type FWError from './models/FWError';\nimport type {\n CustomCTAClickEvent,\n CustomClickCartIconEvent,\n CustomClickLinkButtonEvent,\n CustomTapProductCardEvent,\n LiveStreamChatEvent,\n LiveStreamEvent,\n PlayerHandler,\n SDKInitEvent,\n ShoppingCTAEvent,\n UpdateProductDetailsEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type FeedItemDetails from './models/FeedItemDetails';\nimport type GradientDrawable from './models/GradientDrawable';\nimport type { GradientDrawableOrientation } from './models/GradientDrawable';\nimport type IOSFontInfo from './models/IOSFontInfo';\nimport type {\n IOSSystemFontStyle,\n IOSSystemFontWeight,\n} from './models/IOSFontInfo';\nimport LiveStreamChatEventName from './models/LiveStreamChatEventName';\nimport type LiveStreamEventDetails from './models/LiveStreamEventDetails';\nimport LiveStreamEventName from './models/LiveStreamEventName';\nimport type LiveStreamMessageDetails from './models/LiveStreamMessageDetails';\nimport type OpenVideoPlayerConfiguration from './models/OpenVideoPlayerConfiguration';\nimport type Product from './models/Product';\nimport type ProductInfoViewConfiguration from './models/ProductInfoViewConfiguration';\nimport type {\n LinkButtonConfiguration,\n ProductCardCTAButtonStyle,\n ProductCardCTAButtonText,\n ProductCardConfiguration,\n ProductCardIconConfiguration,\n ProductCardLabelConfiguration,\n ProductCardPriceConfiguration,\n ProductCardPriceLabelAxis,\n ProductCardTheme,\n ShoppingCTAButtonConfiguration,\n ShoppingCTAButtonText,\n} from './models/ProductInfoViewConfiguration';\nimport type ProductUnit from './models/ProductUnit';\nimport type { ProductPrice, ProductUnitOption } from './models/ProductUnit';\nimport type PushRNContainerParams from './models/PushRNContainerParams';\nimport type { RNAppProps } from './models/PushRNContainerParams';\nimport type SDKInitOptions from './models/SDKInitOptions';\nimport type { VideoLaunchBehavior } from './models/SDKInitOptions';\nimport type ShoppingCTAResult from './models/ShoppingCTAResult';\nimport type { StoryBlockConfiguration } from './models/StoryBlockConfiguration';\nimport type { StoryBlockSource } from './models/StoryBlockSource';\nimport type TrackPurchaseParameters from './models/TrackPurchaseParameters';\nimport type VideoFeedConfiguration from './models/VideoFeedConfiguration';\nimport type {\n VideoFeedPadding,\n VideoFeedPlayIconConfiguration,\n VideoFeedTitleConfiguration,\n VideoFeedTitlePosition,\n} from './models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from './models/VideoFeedSource';\nimport type VideoPlaybackDetails from './models/VideoPlaybackDetails';\nimport type { VideoPlayerSize } from './models/VideoPlaybackDetails';\nimport VideoPlaybackEventName from './models/VideoPlaybackEventName';\nimport type VideoPlayerButtonConfiguration from './models/VideoPlayerButtonConfiguration';\nimport type {\n VideoPlayerCTADelay,\n VideoPlayerCTADelayType,\n} from './models/VideoPlayerCTADelay';\nimport type { VideoPlayerCTAStyle } from './models/VideoPlayerCTAStyle';\nimport type { VideoPlayerCTAWidth } from './models/VideoPlayerCTAWidth';\nimport type { VideoPlayerCompleteAction } from './models/VideoPlayerCompleteAction';\nimport type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';\nimport type {\n VideoPlayerLogoConfiguration,\n VideoPlayerLogoOption,\n} from './models/VideoPlayerLogoConfiguration';\nimport type { VideoPlayerStyle } from './models/VideoPlayerStyle';\nimport VideoFeedUtil from './utils/VideoFeedUtil';\n\nexport default FireworkSDK;\n\nexport {\n AdBadgeConfiguration,\n AdBadgeTextType,\n AdConfiguration,\n AndroidFontInfo,\n ButtonInfo,\n CountdownTimerAppearanceMode,\n CountdownTimerConfiguration,\n CustomCTAClickCallback,\n CustomCTAClickEvent,\n CustomClickCartIconCallback,\n CustomClickCartIconEvent,\n CustomClickLinkButtonCallback,\n CustomClickLinkButtonEvent,\n CustomTapProductCardCallback,\n CustomTapProductCardEvent,\n FWError,\n FWNavigator,\n FeedItemDetails,\n FireworkSDK,\n GradientDrawable,\n GradientDrawableOrientation,\n IOSFontInfo,\n IOSSystemFontStyle,\n IOSSystemFontWeight,\n IStoryBlockMethods,\n IStoryBlockProps,\n IVideoFeedProps,\n LinkButtonConfiguration,\n LiveStream,\n LiveStreamChatEvent,\n LiveStreamChatEventName,\n LiveStreamEvent,\n LiveStreamEventDetails,\n LiveStreamEventName,\n LiveStreamMessageDetails,\n OpenVideoPlayerConfiguration,\n PlayerHandler,\n Product,\n ProductCardCTAButtonStyle,\n ProductCardCTAButtonText,\n ProductCardConfiguration,\n ProductCardIconConfiguration,\n ProductCardLabelConfiguration,\n ProductCardPriceConfiguration,\n ProductCardPriceLabelAxis,\n ProductCardTheme,\n ProductInfoViewConfiguration,\n ProductPrice,\n ProductUnit,\n ProductUnitOption,\n PushRNContainerParams,\n RNAppProps,\n SDKInitCallback,\n SDKInitEvent,\n SDKInitOptions,\n ShoppingCTAButtonConfiguration,\n ShoppingCTAButtonText,\n ShoppingCTACallback,\n ShoppingCTAEvent,\n ShoppingCTAResult,\n StoryBlock,\n StoryBlockConfiguration,\n StoryBlockSource,\n TrackPurchaseParameters,\n UpdateProductDetailsCallback,\n UpdateProductDetailsEvent,\n VastAttribute,\n VideoFeed,\n VideoFeedClickCallback,\n VideoFeedClickEvent,\n VideoFeedConfiguration,\n VideoFeedMode,\n VideoFeedPadding,\n VideoFeedPlayIconConfiguration,\n VideoFeedSource,\n VideoFeedTitleConfiguration,\n VideoFeedTitlePosition,\n VideoFeedUtil,\n VideoLaunchBehavior,\n VideoPlaybackCallback,\n VideoPlaybackDetails,\n VideoPlaybackEvent,\n VideoPlaybackEventName,\n VideoPlayerButtonConfiguration,\n VideoPlayerCTADelay,\n VideoPlayerCTADelayType,\n VideoPlayerCTAStyle,\n VideoPlayerCTAWidth,\n VideoPlayerCompleteAction,\n VideoPlayerConfiguration,\n VideoPlayerLogoConfiguration,\n VideoPlayerLogoOption,\n VideoPlayerSize,\n VideoPlayerStyle,\n VideoShopping,\n onLiveStreamChatEventCallback,\n onLiveStreamEventCallback,\n};\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":["FWNavigator","FireworkSDK","LiveStream","VideoShopping","StoryBlock","VideoFeed","LiveStreamChatEventName","LiveStreamEventName","VideoPlaybackEventName","VideoFeedUtil"],"mappings":"AAAA,OAAOA,WAAP,MAAwB,eAAxB;AAOA,OAAOC,WAAP,MAAwB,eAAxB;AAKA,OAAOC,UAAP,MAAuB,cAAvB;AAQA,OAAOC,aAAP,MAA0B,iBAA1B;AAKA,OAAOC,UAAP,MAAuB,yBAAvB;AAEA,OAAOC,SAAP,MAAsB,wBAAtB;AAgCA,OAAOC,uBAAP,MAAoC,kCAApC;AAEA,OAAOC,mBAAP,MAAgC,8BAAhC;AAsCA,OAAOC,sBAAP,MAAmC,iCAAnC;AAgBA,OAAOC,aAAP,MAA0B,uBAA1B;AAEA,eAAeR,WAAf;AAEA,SAiBED,WAjBF,EAmBEC,WAnBF,EA6BEC,UA7BF,EA+BEI,uBA/BF,EAkCEC,mBAlCF,EA6DEH,UA7DF,EAoEEC,SApEF,EA8EEI,aA9EF,EAmFED,sBAnFF,EAgGEL,aAhGF","sourcesContent":["import FWNavigator from './FWNavigator';\nimport type {\n CustomCTAClickCallback,\n SDKInitCallback,\n VideoFeedClickCallback,\n VideoPlaybackCallback,\n} from './FireworkSDK';\nimport FireworkSDK from './FireworkSDK';\nimport type {\n onLiveStreamChatEventCallback,\n onLiveStreamEventCallback,\n} from './LiveStream';\nimport LiveStream from './LiveStream';\nimport type {\n CustomClickCartIconCallback,\n CustomClickLinkButtonCallback,\n CustomTapProductCardCallback,\n ShoppingCTACallback,\n UpdateProductDetailsCallback,\n} from './VideoShopping';\nimport VideoShopping from './VideoShopping';\nimport type {\n IStoryBlockMethods,\n IStoryBlockProps,\n} from './components/StoryBlock';\nimport StoryBlock from './components/StoryBlock';\nimport type { IVideoFeedProps, VideoFeedMode } from './components/VideoFeed';\nimport VideoFeed from './components/VideoFeed';\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport type { AdBadgeTextType } from './models/AdBadgeConfiguration';\nimport type AdConfiguration from './models/AdConfiguration';\nimport type { VastAttribute } from './models/AdConfiguration';\nimport type AndroidFontInfo from './models/AndroidFontInfo';\nimport type ButtonInfo from './models/ButtonInfo';\nimport type CountdownTimerConfiguration from './models/CountdownTimerConfiguration';\nimport type { CountdownTimerAppearanceMode } from './models/CountdownTimerConfiguration';\nimport type FWError from './models/FWError';\nimport type {\n CustomCTAClickEvent,\n CustomClickCartIconEvent,\n CustomClickLinkButtonEvent,\n CustomTapProductCardEvent,\n LiveStreamChatEvent,\n LiveStreamEvent,\n PlayerHandler,\n SDKInitEvent,\n ShoppingCTAEvent,\n UpdateProductDetailsEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type FeedItemDetails from './models/FeedItemDetails';\nimport type GradientDrawable from './models/GradientDrawable';\nimport type { GradientDrawableOrientation } from './models/GradientDrawable';\nimport type IOSFontInfo from './models/IOSFontInfo';\nimport type {\n IOSSystemFontStyle,\n IOSSystemFontWeight,\n} from './models/IOSFontInfo';\nimport LiveStreamChatEventName from './models/LiveStreamChatEventName';\nimport type LiveStreamEventDetails from './models/LiveStreamEventDetails';\nimport LiveStreamEventName from './models/LiveStreamEventName';\nimport type LiveStreamMessageDetails from './models/LiveStreamMessageDetails';\nimport type OpenVideoPlayerConfiguration from './models/OpenVideoPlayerConfiguration';\nimport type Product from './models/Product';\nimport type ProductInfoViewConfiguration from './models/ProductInfoViewConfiguration';\nimport type {\n LinkButtonConfiguration,\n ProductCardCTAButtonStyle,\n ProductCardCTAButtonText,\n ProductCardConfiguration,\n ProductCardIconConfiguration,\n ProductCardLabelConfiguration,\n ProductCardPriceConfiguration,\n ProductCardPriceLabelAxis,\n ProductCardTheme,\n ShoppingCTAButtonConfiguration,\n ShoppingCTAButtonText,\n} from './models/ProductInfoViewConfiguration';\nimport type ProductUnit from './models/ProductUnit';\nimport type { ProductPrice, ProductUnitOption } from './models/ProductUnit';\nimport type PushRNContainerParams from './models/PushRNContainerParams';\nimport type { RNAppProps } from './models/PushRNContainerParams';\nimport type SDKInitOptions from './models/SDKInitOptions';\nimport type { VideoLaunchBehavior } from './models/SDKInitOptions';\nimport type ShoppingCTAResult from './models/ShoppingCTAResult';\nimport type { StoryBlockConfiguration } from './models/StoryBlockConfiguration';\nimport type { StoryBlockSource } from './models/StoryBlockSource';\nimport type TrackPurchaseParameters from './models/TrackPurchaseParameters';\nimport type VideoFeedConfiguration from './models/VideoFeedConfiguration';\nimport type {\n VideoFeedPadding,\n VideoFeedPlayIconConfiguration,\n VideoFeedTitleConfiguration,\n VideoFeedTitlePosition,\n} from './models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from './models/VideoFeedSource';\nimport type VideoPlaybackDetails from './models/VideoPlaybackDetails';\nimport type { VideoPlayerSize } from './models/VideoPlaybackDetails';\nimport VideoPlaybackEventName from './models/VideoPlaybackEventName';\nimport type VideoPlayerButtonConfiguration from './models/VideoPlayerButtonConfiguration';\nimport type {\n VideoPlayerCTADelay,\n VideoPlayerCTADelayType,\n} from './models/VideoPlayerCTADelay';\nimport type { VideoPlayerCTAStyle } from './models/VideoPlayerCTAStyle';\nimport type { VideoPlayerCTAWidth } from './models/VideoPlayerCTAWidth';\nimport type { VideoPlayerCompleteAction } from './models/VideoPlayerCompleteAction';\nimport type { VideoPlayerLivestreamCountdownTimerTheme } from './models/VideoPlayerLivestreamCountdownTimerTheme';\nimport type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';\nimport type {\n VideoPlayerLogoConfiguration,\n VideoPlayerLogoOption,\n} from './models/VideoPlayerLogoConfiguration';\nimport type { VideoPlayerStyle } from './models/VideoPlayerStyle';\nimport VideoFeedUtil from './utils/VideoFeedUtil';\n\nexport default FireworkSDK;\n\nexport {\n AdBadgeConfiguration,\n AdBadgeTextType,\n AdConfiguration,\n AndroidFontInfo,\n ButtonInfo,\n CountdownTimerAppearanceMode,\n CountdownTimerConfiguration,\n CustomCTAClickCallback,\n CustomCTAClickEvent,\n CustomClickCartIconCallback,\n CustomClickCartIconEvent,\n CustomClickLinkButtonCallback,\n CustomClickLinkButtonEvent,\n CustomTapProductCardCallback,\n CustomTapProductCardEvent,\n FWError,\n FWNavigator,\n FeedItemDetails,\n FireworkSDK,\n GradientDrawable,\n GradientDrawableOrientation,\n IOSFontInfo,\n IOSSystemFontStyle,\n IOSSystemFontWeight,\n IStoryBlockMethods,\n IStoryBlockProps,\n IVideoFeedProps,\n LinkButtonConfiguration,\n LiveStream,\n LiveStreamChatEvent,\n LiveStreamChatEventName,\n LiveStreamEvent,\n LiveStreamEventDetails,\n LiveStreamEventName,\n LiveStreamMessageDetails,\n OpenVideoPlayerConfiguration,\n PlayerHandler,\n Product,\n ProductCardCTAButtonStyle,\n ProductCardCTAButtonText,\n ProductCardConfiguration,\n ProductCardIconConfiguration,\n ProductCardLabelConfiguration,\n ProductCardPriceConfiguration,\n ProductCardPriceLabelAxis,\n ProductCardTheme,\n ProductInfoViewConfiguration,\n ProductPrice,\n ProductUnit,\n ProductUnitOption,\n PushRNContainerParams,\n RNAppProps,\n SDKInitCallback,\n SDKInitEvent,\n SDKInitOptions,\n ShoppingCTAButtonConfiguration,\n ShoppingCTAButtonText,\n ShoppingCTACallback,\n ShoppingCTAEvent,\n ShoppingCTAResult,\n StoryBlock,\n StoryBlockConfiguration,\n StoryBlockSource,\n TrackPurchaseParameters,\n UpdateProductDetailsCallback,\n UpdateProductDetailsEvent,\n VastAttribute,\n VideoFeed,\n VideoFeedClickCallback,\n VideoFeedClickEvent,\n VideoFeedConfiguration,\n VideoFeedMode,\n VideoFeedPadding,\n VideoFeedPlayIconConfiguration,\n VideoFeedSource,\n VideoFeedTitleConfiguration,\n VideoFeedTitlePosition,\n VideoFeedUtil,\n VideoLaunchBehavior,\n VideoPlaybackCallback,\n VideoPlaybackDetails,\n VideoPlaybackEvent,\n VideoPlaybackEventName,\n VideoPlayerButtonConfiguration,\n VideoPlayerCTADelay,\n VideoPlayerCTADelayType,\n VideoPlayerCTAStyle,\n VideoPlayerCTAWidth,\n VideoPlayerCompleteAction,\n VideoPlayerLivestreamCountdownTimerTheme,\n VideoPlayerConfiguration,\n VideoPlayerLogoConfiguration,\n VideoPlayerLogoOption,\n VideoPlayerSize,\n VideoPlayerStyle,\n VideoShopping,\n onLiveStreamChatEventCallback,\n onLiveStreamEventCallback,\n};\n"]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=VideoPlayerLivestreamCountdownTimerTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -53,9 +53,10 @@ import type { VideoPlayerCTADelay, VideoPlayerCTADelayType } from './models/Vide
53
53
  import type { VideoPlayerCTAStyle } from './models/VideoPlayerCTAStyle';
54
54
  import type { VideoPlayerCTAWidth } from './models/VideoPlayerCTAWidth';
55
55
  import type { VideoPlayerCompleteAction } from './models/VideoPlayerCompleteAction';
56
+ import type { VideoPlayerLivestreamCountdownTimerTheme } from './models/VideoPlayerLivestreamCountdownTimerTheme';
56
57
  import type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';
57
58
  import type { VideoPlayerLogoConfiguration, VideoPlayerLogoOption } from './models/VideoPlayerLogoConfiguration';
58
59
  import type { VideoPlayerStyle } from './models/VideoPlayerStyle';
59
60
  import VideoFeedUtil from './utils/VideoFeedUtil';
60
61
  export default FireworkSDK;
61
- export { AdBadgeConfiguration, AdBadgeTextType, AdConfiguration, AndroidFontInfo, ButtonInfo, CountdownTimerAppearanceMode, CountdownTimerConfiguration, CustomCTAClickCallback, CustomCTAClickEvent, CustomClickCartIconCallback, CustomClickCartIconEvent, CustomClickLinkButtonCallback, CustomClickLinkButtonEvent, CustomTapProductCardCallback, CustomTapProductCardEvent, FWError, FWNavigator, FeedItemDetails, FireworkSDK, GradientDrawable, GradientDrawableOrientation, IOSFontInfo, IOSSystemFontStyle, IOSSystemFontWeight, IStoryBlockMethods, IStoryBlockProps, IVideoFeedProps, LinkButtonConfiguration, LiveStream, LiveStreamChatEvent, LiveStreamChatEventName, LiveStreamEvent, LiveStreamEventDetails, LiveStreamEventName, LiveStreamMessageDetails, OpenVideoPlayerConfiguration, PlayerHandler, Product, ProductCardCTAButtonStyle, ProductCardCTAButtonText, ProductCardConfiguration, ProductCardIconConfiguration, ProductCardLabelConfiguration, ProductCardPriceConfiguration, ProductCardPriceLabelAxis, ProductCardTheme, ProductInfoViewConfiguration, ProductPrice, ProductUnit, ProductUnitOption, PushRNContainerParams, RNAppProps, SDKInitCallback, SDKInitEvent, SDKInitOptions, ShoppingCTAButtonConfiguration, ShoppingCTAButtonText, ShoppingCTACallback, ShoppingCTAEvent, ShoppingCTAResult, StoryBlock, StoryBlockConfiguration, StoryBlockSource, TrackPurchaseParameters, UpdateProductDetailsCallback, UpdateProductDetailsEvent, VastAttribute, VideoFeed, VideoFeedClickCallback, VideoFeedClickEvent, VideoFeedConfiguration, VideoFeedMode, VideoFeedPadding, VideoFeedPlayIconConfiguration, VideoFeedSource, VideoFeedTitleConfiguration, VideoFeedTitlePosition, VideoFeedUtil, VideoLaunchBehavior, VideoPlaybackCallback, VideoPlaybackDetails, VideoPlaybackEvent, VideoPlaybackEventName, VideoPlayerButtonConfiguration, VideoPlayerCTADelay, VideoPlayerCTADelayType, VideoPlayerCTAStyle, VideoPlayerCTAWidth, VideoPlayerCompleteAction, VideoPlayerConfiguration, VideoPlayerLogoConfiguration, VideoPlayerLogoOption, VideoPlayerSize, VideoPlayerStyle, VideoShopping, onLiveStreamChatEventCallback, onLiveStreamEventCallback, };
62
+ export { AdBadgeConfiguration, AdBadgeTextType, AdConfiguration, AndroidFontInfo, ButtonInfo, CountdownTimerAppearanceMode, CountdownTimerConfiguration, CustomCTAClickCallback, CustomCTAClickEvent, CustomClickCartIconCallback, CustomClickCartIconEvent, CustomClickLinkButtonCallback, CustomClickLinkButtonEvent, CustomTapProductCardCallback, CustomTapProductCardEvent, FWError, FWNavigator, FeedItemDetails, FireworkSDK, GradientDrawable, GradientDrawableOrientation, IOSFontInfo, IOSSystemFontStyle, IOSSystemFontWeight, IStoryBlockMethods, IStoryBlockProps, IVideoFeedProps, LinkButtonConfiguration, LiveStream, LiveStreamChatEvent, LiveStreamChatEventName, LiveStreamEvent, LiveStreamEventDetails, LiveStreamEventName, LiveStreamMessageDetails, OpenVideoPlayerConfiguration, PlayerHandler, Product, ProductCardCTAButtonStyle, ProductCardCTAButtonText, ProductCardConfiguration, ProductCardIconConfiguration, ProductCardLabelConfiguration, ProductCardPriceConfiguration, ProductCardPriceLabelAxis, ProductCardTheme, ProductInfoViewConfiguration, ProductPrice, ProductUnit, ProductUnitOption, PushRNContainerParams, RNAppProps, SDKInitCallback, SDKInitEvent, SDKInitOptions, ShoppingCTAButtonConfiguration, ShoppingCTAButtonText, ShoppingCTACallback, ShoppingCTAEvent, ShoppingCTAResult, StoryBlock, StoryBlockConfiguration, StoryBlockSource, TrackPurchaseParameters, UpdateProductDetailsCallback, UpdateProductDetailsEvent, VastAttribute, VideoFeed, VideoFeedClickCallback, VideoFeedClickEvent, VideoFeedConfiguration, VideoFeedMode, VideoFeedPadding, VideoFeedPlayIconConfiguration, VideoFeedSource, VideoFeedTitleConfiguration, VideoFeedTitlePosition, VideoFeedUtil, VideoLaunchBehavior, VideoPlaybackCallback, VideoPlaybackDetails, VideoPlaybackEvent, VideoPlaybackEventName, VideoPlayerButtonConfiguration, VideoPlayerCTADelay, VideoPlayerCTADelayType, VideoPlayerCTAStyle, VideoPlayerCTAWidth, VideoPlayerCompleteAction, VideoPlayerLivestreamCountdownTimerTheme, VideoPlayerConfiguration, VideoPlayerLogoConfiguration, VideoPlayerLogoOption, VideoPlayerSize, VideoPlayerStyle, VideoShopping, onLiveStreamChatEventCallback, onLiveStreamEventCallback, };
@@ -1,7 +1,7 @@
1
1
  export interface ReplayBadgeConfiguration {
2
2
  /**
3
3
  * Indicates if the replay badge is hidden.
4
- * Defaults to false.
4
+ * Defaults to true.
5
5
  */
6
6
  isHidden?: boolean;
7
7
  }
@@ -32,8 +32,6 @@ export interface StoryBlockConfiguration {
32
32
  ctaButtonStyle?: VideoPlayerCTAStyle;
33
33
  /**
34
34
  * Indicates if the video player shows playback button.
35
- * The property only applies to full-screen story block but not to compact story block.
36
- * Only supported on Android.
37
35
  */
38
36
  showPlaybackButton?: boolean;
39
37
  /**
@@ -0,0 +1 @@
1
+ export type VideoPlayerLivestreamCountdownTimerTheme = 'dark' | 'light';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-firework-sdk",
3
- "version": "2.12.1",
3
+ "version": "2.13.0",
4
4
  "description": "Firework React Native SDK",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -33,5 +33,5 @@ fi
33
33
  s.static_framework = true
34
34
  s.dependency 'React-Core'
35
35
  s.dependency 'FireworkVideoUI', '0.1.0'
36
- s.dependency 'FireworkVideo', '1.19.0'
36
+ s.dependency 'FireworkVideo', '1.20.2'
37
37
  end
@@ -163,7 +163,7 @@ class VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {
163
163
  }
164
164
  let reactTag: number | null = findNodeHandle(nativeNodeHandle);
165
165
  FWLoggerUtil.log(
166
- `StoryBlock refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`
166
+ `VideoFeed refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`
167
167
  );
168
168
  if (!nativeNodeHandle || !reactTag) {
169
169
  return;
@@ -172,9 +172,6 @@ class VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {
172
172
  };
173
173
 
174
174
  private _onVideoFeedLoadFinished = (event: NativeSyntheticEvent<any>) => {
175
- FWLoggerUtil.log(
176
- `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`
177
- );
178
175
  const { onVideoFeedLoadFinished, onVideoFeedEmpty } = this.props;
179
176
 
180
177
  const { name, reason, action } = event.nativeEvent;
@@ -185,8 +182,11 @@ class VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {
185
182
  if (reason) {
186
183
  error.reason = reason;
187
184
  }
188
- onVideoFeedLoadFinished(error);
185
+
189
186
  if (Platform.OS === 'android') {
187
+ if (!this._loaded) {
188
+ onVideoFeedLoadFinished(error);
189
+ }
190
190
  if (
191
191
  action === FWNativeErrorAction.loadingFirstPage ||
192
192
  !this._loaded
@@ -194,12 +194,19 @@ class VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {
194
194
  onVideoFeedEmpty?.(error);
195
195
  }
196
196
  } else {
197
+ onVideoFeedLoadFinished(error);
197
198
  if (!this._loaded) {
198
199
  onVideoFeedEmpty?.(error);
199
200
  }
200
201
  }
201
202
  } else {
202
- onVideoFeedLoadFinished();
203
+ if (Platform.OS === 'android') {
204
+ if (!this._loaded) {
205
+ onVideoFeedLoadFinished();
206
+ }
207
+ } else {
208
+ onVideoFeedLoadFinished();
209
+ }
203
210
  this._loaded = true;
204
211
  }
205
212
  }
package/src/index.ts CHANGED
@@ -106,6 +106,7 @@ import type {
106
106
  import type { VideoPlayerCTAStyle } from './models/VideoPlayerCTAStyle';
107
107
  import type { VideoPlayerCTAWidth } from './models/VideoPlayerCTAWidth';
108
108
  import type { VideoPlayerCompleteAction } from './models/VideoPlayerCompleteAction';
109
+ import type { VideoPlayerLivestreamCountdownTimerTheme } from './models/VideoPlayerLivestreamCountdownTimerTheme';
109
110
  import type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';
110
111
  import type {
111
112
  VideoPlayerLogoConfiguration,
@@ -206,6 +207,7 @@ export {
206
207
  VideoPlayerCTAStyle,
207
208
  VideoPlayerCTAWidth,
208
209
  VideoPlayerCompleteAction,
210
+ VideoPlayerLivestreamCountdownTimerTheme,
209
211
  VideoPlayerConfiguration,
210
212
  VideoPlayerLogoConfiguration,
211
213
  VideoPlayerLogoOption,
@@ -1,7 +1,7 @@
1
1
  export interface ReplayBadgeConfiguration {
2
2
  /**
3
3
  * Indicates if the replay badge is hidden.
4
- * Defaults to false.
4
+ * Defaults to true.
5
5
  */
6
6
  isHidden?: boolean;
7
7
  }
@@ -33,8 +33,6 @@ export interface StoryBlockConfiguration {
33
33
  ctaButtonStyle?: VideoPlayerCTAStyle;
34
34
  /**
35
35
  * Indicates if the video player shows playback button.
36
- * The property only applies to full-screen story block but not to compact story block.
37
- * Only supported on Android.
38
36
  */
39
37
  showPlaybackButton?: boolean;
40
38
  /**
@@ -0,0 +1 @@
1
+ export type VideoPlayerLivestreamCountdownTimerTheme = 'dark' | 'light';